<?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>203285</bug_id>
          
          <creation_ts>2019-10-22 22:17:43 -0700</creation_ts>
          <short_desc>[JSC] Figure out missing prepareCallOperation</short_desc>
          <delta_ts>2019-10-23 18:01:16 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>202392</dependson>
          <blocked>203290</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1582740</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-22 22:17:43 -0700</bug_when>
    <thetext>prepareCallOperation is not necessary for ARM64 / X86_64 JIT environments. This means that we could miss some of them.
I&apos;ll introduce a mechanism to figure out missing ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582741</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-22 22:18:03 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #0)
&gt; prepareCallOperation is not necessary for ARM64 / X86_64 JIT environments.
&gt; This means that we could miss some of them.
&gt; I&apos;ll introduce a mechanism to figure out missing ones.

Note that this prepareCallOperation is only related to JIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582749</commentid>
    <comment_count>2</comment_count>
      <attachid>381661</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-22 23:35:17 -0700</bug_when>
    <thetext>Created attachment 381661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582750</commentid>
    <comment_count>3</comment_count>
      <attachid>381661</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-22 23:36:41 -0700</bug_when>
    <thetext>Comment on attachment 381661
Patch

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

&gt; Source/WTF/wtf/Platform.h:1007
&gt;  #if COMPILER(GCC_COMPATIBLE) &amp;&amp; (CPU(ARM64) || CPU(X86_64)) &amp;&amp; (OS(LINUX) || OS(DARWIN))

I now believe that we do not need to have `(OS(LINUX) || OS(DARWIN))`. And it makes everything simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582751</commentid>
    <comment_count>4</comment_count>
      <attachid>381661</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-22 23:37:54 -0700</bug_when>
    <thetext>Comment on attachment 381661
Patch

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

&gt;&gt; Source/WTF/wtf/Platform.h:1007
&gt;&gt;  #if COMPILER(GCC_COMPATIBLE) &amp;&amp; (CPU(ARM64) || CPU(X86_64)) &amp;&amp; (OS(LINUX) || OS(DARWIN))
&gt; 
&gt; I now believe that we do not need to have `(OS(LINUX) || OS(DARWIN))`. And it makes everything simple.

If we are using clang/gcc on ARM64/X86_64, __builtin_frame_address should work well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582752</commentid>
    <comment_count>5</comment_count>
      <attachid>381662</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-22 23:40:37 -0700</bug_when>
    <thetext>Created attachment 381662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582765</commentid>
    <comment_count>6</comment_count>
      <attachid>381665</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 00:56:49 -0700</bug_when>
    <thetext>Created attachment 381665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582957</commentid>
    <comment_count>7</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-10-23 12:41:25 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; Created attachment 381665 [details]
&gt; Patch

The patch does fix 32-bit ARMv7, as suggested in bug #202392.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583096</commentid>
    <comment_count>8</comment_count>
      <attachid>381741</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 15:36:16 -0700</bug_when>
    <thetext>Created attachment 381741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583118</commentid>
    <comment_count>9</comment_count>
      <attachid>381748</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 15:54:16 -0700</bug_when>
    <thetext>Created attachment 381748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583120</commentid>
    <comment_count>10</comment_count>
      <attachid>381748</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 15:55:52 -0700</bug_when>
    <thetext>Comment on attachment 381748
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        We also found that FTL&apos;s custom getter calling is putting wrong value to vm.topCallFrame. This patch fixes it too.

In addition, I started renaming all operation functions like, `operationXXX`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583123</commentid>
    <comment_count>11</comment_count>
      <attachid>381748</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 16:00:10 -0700</bug_when>
    <thetext>Comment on attachment 381748
Patch

I need to update it slightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583126</commentid>
    <comment_count>12</comment_count>
      <attachid>381749</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 16:02:28 -0700</bug_when>
    <thetext>Created attachment 381749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583160</commentid>
    <comment_count>13</comment_count>
      <attachid>381749</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-10-23 17:07:07 -0700</bug_when>
    <thetext>Comment on attachment 381749
Patch

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

r=me

&gt; Source/JavaScriptCore/interpreter/FrameTracers.h:120
&gt; +        // When debugging mode, USE(BUILTIN_FRAME_ADDRESS) environment also puts frame pointer to vm.topCallFrame.
&gt; +        // And we can ensure it is working by comparing with the result of __builtin_frame_adress.

I suggest rephrasing this as:

If !ASSERT_DISABLED and USE(BUILTIN_FRAME_ADDRESS), prepareCallOperation() will put the frame pointer into vm.topCallFrame. We can ensure here that a call to prepareCallOperation() (or its equivalent) is not missing by comparing vm.topCallFrame to the result of __builtin_frame_address which is passed in as callFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583166</commentid>
    <comment_count>14</comment_count>
      <attachid>381749</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 17:24:06 -0700</bug_when>
    <thetext>Comment on attachment 381749
Patch

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

&gt;&gt; Source/JavaScriptCore/interpreter/FrameTracers.h:120
&gt;&gt; +        // And we can ensure it is working by comparing with the result of __builtin_frame_adress.
&gt; 
&gt; I suggest rephrasing this as:
&gt; 
&gt; If !ASSERT_DISABLED and USE(BUILTIN_FRAME_ADDRESS), prepareCallOperation() will put the frame pointer into vm.topCallFrame. We can ensure here that a call to prepareCallOperation() (or its equivalent) is not missing by comparing vm.topCallFrame to the result of __builtin_frame_address which is passed in as callFrame.

Sounds nice.
I ensured that mac-debug-wk1 is not showing new regression. And I ensured that this passes JSC tests locally. I&apos;ll land it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583176</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-23 18:00:13 -0700</bug_when>
    <thetext>Committed r251518: &lt;https://trac.webkit.org/changeset/251518&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1583178</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-23 18:01:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/56563125&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381661</attachid>
            <date>2019-10-22 23:35:17 -0700</date>
            <delta_ts>2019-10-22 23:40:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203285-20191022233516.patch</filename>
            <type>text/plain</type>
            <size>24424</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NGRlNDY1NTY3ZmE4N2NkMmNiOWEyMTEzMjJjZTllY2E1OGNlOWZkLi5iZWY2ZDg2NTY4NzJiYzJl
MjEzNGNmMTEzZjg3MDJkNmI0M2M0ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxOS0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJlQ2FsbE9wZXJhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjg1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcv
REZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6ZW1pdFJlc3RvcmVB
cmd1bWVudHMpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmhhbmRsZUV4aXRDb3VudHMpOgorICAgICAgICAoSlNDOjpERkc6
Om9zcldyaXRlQmFycmllcik6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3Mp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwp
OgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvRnJhbWVUcmFjZXJzLmg6CisgICAgICAgIChKU0M6OlNsb3dQYXRoTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyOjpTbG93UGF0aE5hdGl2ZUNhbGxGcmFtZVRyYWNlcik6CisgICAgICAgIChKU0M6Ok5h
dGl2ZUNhbGxGcmFtZVRyYWNlcldpdGhvdXRDbGVhcmluZzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
V2l0aG91dENsZWFyaW5nKToKKyAgICAgICAgKEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyOjpO
YXRpdmVDYWxsRnJhbWVUcmFjZXIpOgorICAgICAgICAoSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFj
ZXI6On5OYXRpdmVDYWxsRnJhbWVUcmFjZXIpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhbGxFeGNlcHRpb25GdXp6
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpkZWJ1Z0NhbGwpOgorICAgICAgICAq
IGppdC9DQ2FsbEhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVuc3Vy
ZVNoYWRvd0NoaWNrZW5QYWNrZXQpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6Ym91bmRU
aGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6
CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5kbGVIb3N0Q2FsbCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisK
IDIwMTktMTAtMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYWtlIGBKU0dsb2JhbE9iamVjdCpgIHRocmVhZGluZyBjaGFuZ2UgbW9yZSBzdGFiaWxpemVk
IGJ5IGFkZGluZyB0ZXN0cyBhbmQgYXNzZXJ0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBhZmE0NmFiNjdmOTgxZmJmMjlj
MjZkNzBjYmE2M2I0NzhhODU5NzY0Li40OGI4OWE5NjM4YmY5ZWM2OTNlMWQwNmY5Yjk3MGE0ZDYz
MzgwN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTEwLTIyICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gRmlndXJlIG91dCBtaXNzaW5nIHBy
ZXBhcmVDYWxsT3BlcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDMyODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE5LTEwLTIyICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBgSlNHbG9iYWxPYmplY3QqYCB0
aHJlYWRpbmcgY2hhbmdlIG1vcmUgc3RhYmlsaXplZCBieSBhZGRpbmcgdGVzdHMgYW5kIGFzc2Vy
dGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IGQwZTBh
NWZjZGY0NTE0MWZiOGZjMzViOTY0NjgyMjdjOTNiMmJlMzMuLjVjYjNkNzdmZmUwYWJhMDJlMzM5
OTFlOGY5YTEwMDM3MjUzYmU2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcApAQCAtMTAwOCw2ICsxMDA4LDcgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFy
Z3VtZW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmUKICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9uQ3JlYXRl
RGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCksIGRlY2x0eXBlKG9wZXJhdGlvbkNyZWF0ZUNsb25l
ZEFyZ3VtZW50c0R1cmluZ0V4aXQpPjo6dmFsdWUsICJXZSBhc3N1bWUgdGhlc2UgZnVuY3Rpb25z
IGhhdmUgdGhlIHNhbWUgc2lnbmF0dXJlIGJlbG93LiIpOwogICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCk+
KAogICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZqaXQudm0oKSks
IEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUpLCBHUFJJbmZv
OjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRp
b24oaml0LnZtKCkpOwogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAg
ICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgogICAgICAgICAg
ICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4
aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggNTQ4NzdiOTFkMGJm
ZDRmMTg0OTEwNDE2OWY3NWMxOWYzMzM0NTQ1Ni4uZDEyYjc2YTY5YmM4ZDllMDYzMjFjOWUzYmIw
YTc3YTgyZTM1MWQwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTA0LDYgKzEwNCw3IEBAIHZvaWQgaGFu
ZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQp
CiAgICAgcmVvcHRpbWl6ZU5vdy5saW5rKCZqaXQpOwogICAgIAogICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZSh0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpPihHUFJJbmZvOjpyZWdUMCwg
R1BSSW5mbzo6cmVnVDMsIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigmZXhpdCkpOwor
ICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAg
ICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIEFz
c2VtYmx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0aW5nID0gaml0Lmp1bXAoKTsKQEAgLTMzOSw2
ICszNDAsNyBAQCBzdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIoVk0mIHZtLCBDQ2FsbEhlbHBl
cnMmIGppdCwgR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYQogICAgIEFzc2VtYmx5SGVscGVyczo6
SnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0gaml0LmJhcnJpZXJCcmFuY2hXaXRob3V0
RmVuY2Uob3duZXIpOwogCiAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlv
bk9TUldyaXRlQmFycmllcik+KCZ2bSwgb3duZXIpOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJh
dGlvbih2bSk7CiAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodGFn
Q0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKSks
IHNjcmF0Y2gpOwogICAgIGppdC5jYWxsKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAppbmRleCA5ZDA5ZmU3MTU0MWMwMjY1
YjFjMTk5ZWMwZGI3ZDM5ZWRkMTE5MWEyLi4yMWNjNTcwMzVkY2Y4YmNiODMwNTZlNGI2YWNmMmM4
MTY3NTFiZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCkBAIC03
Nyw2ICs3Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhp
dEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAKICAgICAvLyBTZXQgdXAgb25lIGFy
Z3VtZW50LgogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25Q
dHJUYWcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggOGEwMGQ5NjYzZmUzZDYxNmEwZjFlZWU4YWRlNjRmOTNiMWZkMTNmOS4uM2NmNzM5
NDk3YWEyNjJjZjgyZThkNjFlNTdkNGM3YTM0YjFiNTJmNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtODg0NSw2ICs4ODQ1LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IGRvbnRUaHJvdyA9IGppdC5qdW1wKCk7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLmxp
bmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CisgICAgICAgICAgICAg
ICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRp
b25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKSk7CiAgICAgICAgICAgICAgICAgICAgIGpp
dC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRocm93KTsKICAg
ICAgICAgICAgICAgICAgICAgCkBAIC05MTExLDYgKzkxMTIsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZSA9IGppdC5q
dW1wKCk7CiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5wcmVwYXJl
Q2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZs
b3dGb3JWYXJhcmdzKSk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24o
REZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5vdFRocm93KTsKICAgICAgICAgICAgICAgICAgICAg
CkBAIC05MTE4LDYgKzkxMjAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKG9yaWdpbmFsU3RhY2tIZWlnaHQgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
KSwgc2NyYXRjaEdQUjEpOwogICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyk+KGppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIGFyZ3VtZW50c0dQUiwgc2Ny
YXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQu
dm0oKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lz
ZV9jYXN0PHZvaWQqPihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKSk7CiAKICAgICAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHNjcmF0Y2hHUFIx
KTsKQEAgLTkxMjYsNiArOTEyOSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUoaml0LCBzY3JhdGNoR1BSMSwgZmFsc2UsIHNj
cmF0Y2hHUFIyLCBzY3JhdGNoR1BSMik7CiAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1pbmltdW1KU0NhbGxBcmVhU2l6ZSksIHNjcmF0
Y2hHUFIyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgICAg
ICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblNldHVwVmFyYXJn
c0ZyYW1lKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSwgc2NyYXRjaEdQUjIsIGFyZ3VtZW50c0dQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpLCBzY3JhdGNoR1BSMSk7CisgICAgICAgICAg
ICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihqaXQudm0oKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2soYml0d2lzZV9jYXN0PHZvaWQqPihvcGVy
YXRpb25TZXR1cFZhcmFyZ3NGcmFtZSkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC05Mjc3LDYgKzkyODEsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAg
ICAgICAgICAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHJlcXVpcmVk
Qnl0ZXMpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgICAg
ICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihnbG9i
YWxPYmplY3QsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24oaml0LnZtKCkpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVy
YXRpb25DYWxsRXZhbCkpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjApOwog
ICAgICAgICAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50
R1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICAgICAgICAgICAgICBleGNlcHRpb25zLT5hcHBl
bmQoaml0LmVtaXRFeGNlcHRpb25DaGVjayhzdGF0ZS0+dm0oKSwgQXNzZW1ibHlIZWxwZXJzOjpO
b3JtYWxFeGNlcHRpb25DaGVjaywgQXNzZW1ibHlIZWxwZXJzOjpGYXJKdW1wV2lkdGgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAppbmRl
eCBmNmIzYTc0Y2EzZTg2NDVlMTEyZGNhZDVlYjM2NGU5YWE0YTY3NjdjLi5kMjM4ZTdkOTZmYmE2
Zjc0NDc2M2YxNzA2MjU0ZmYwNmM0MjM5NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBAIC0zMzUsNiArMzM1LDcgQEAgc3RhdGlj
IHZvaWQgY29tcGlsZVN0dWIoCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG1hdGVyaWFsaXphdGlvbi0+b3JpZ2lu
KCkpKSwKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0ZXJp
YWxpemF0aW9uKSwKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
bWF0ZXJpYWxpemF0aW9uQXJndW1lbnRzKSk7CisgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24oaml0LnZtKCkpOwogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk1h
dGVyaWFsaXplT2JqZWN0SW5PU1IpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAg
ICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgICAg
ICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBtYXRlcmlhbGl6YXRp
b25Ub1BvaW50ZXIuZ2V0KG1hdGVyaWFsaXphdGlvbikpOwpAQCAtMzY0LDYgKzM2NSw3IEBAIHN0
YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKG1hdGVyaWFsaXphdGlvbiksCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobWF0ZXJpYWxpemF0aW9uVG9Qb2ludGVyLmdldChtYXRlcmlhbGl6YXRpb24pKSwK
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb25B
cmd1bWVudHMpKTsKKyAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsK
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAs
IE9wZXJhdGlvblB0clRhZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVu
a3MuY3BwCmluZGV4IGZhOWJmYzcwYjZjZThlOWUzMmUzNTZkYTE1MjFkZTc5YWYwMDcyNWUuLjQx
NmJkZTBlZDJmOGQxZDM0NjYwN2ZjMWNlY2UzNjJlZTVkZTg0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVy
YXRvcigKICAgICBqaXQucGVlaygKICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIxLAogICAg
ICAgICAoc3RhY2tNaXNhbGlnbm1lbnQgLSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVP
ZmZzZXQoKSkgLyBzaXplb2Yodm9pZCopKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9w
ZXJhdGlvblB0clRhZyk7CiAKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHdhbnQgdG8gbWFrZSBh
IHRhaWwgY2FsbCB0byB3aGF0IHdhcyByZXR1cm5lZCB0byB1cyBpbiB0aGUKQEAgLTIwMSw2ICsy
MDIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2Fs
bFRodW5rR2VuZXJhdG9yKGNvbnN0IFNsb3dQYXRoQwogICAgIAogICAgIGppdC5wcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgaml0LnN0b3Jl
UHRyKEdQUkluZm86Om5vbkFyZ0dQUjAsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhNYWNyb0Fz
c2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGtleS5vZmZzZXQoKSkpOworICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgCiAgICAgcmVnaXN0ZXJDbG9iYmVyQ2hlY2so
aml0LCBrZXkuYXJndW1lbnRSZWdpc3RlcnMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaAppbmRleCAxMWY3YjhhMmEzMDU5OGJhMzVh
N2I0ZmU1MDk4NDI4NTRhZGNhMjRhLi40MjVkOTZiMzJiZGU5Yzc3MjZhMjI5N2ZmYjRiZGQ0Njcy
MWZkYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvRnJh
bWVUcmFjZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ZyYW1l
VHJhY2Vycy5oCkBAIC04MSwxNSArODEsNTEgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBh
c3NlcnRTdGFja1BvaW50ZXJJc0FsaWduZWQoKQogI2VuZGlmCiB9CiAKK2NsYXNzIFNsb3dQYXRo
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHsKK3B1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIFNsb3dQ
YXRoTmF0aXZlQ2FsbEZyYW1lVHJhY2VyKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCisg
ICAgeworICAgICAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICAgICAgQVNTRVJUKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGNhbGxGcmFtZSkgPCByZWludGVycHJldF9jYXN0PHZvaWQqPih2bS50
b3BFbnRyeUZyYW1lKSk7CisgICAgICAgIGFzc2VydFN0YWNrUG9pbnRlcklzQWxpZ25lZCgpOwor
ICAgICAgICB2bS50b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7CisgICAgfQorfTsKKworY2xhc3Mg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyV2l0aG91dENsZWFyaW5nIHsKK3B1YmxpYzoKKyAgICBBTFdB
WVNfSU5MSU5FIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcldpdGhvdXRDbGVhcmluZyhWTSYgdm0sIENh
bGxGcmFtZSogY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7Cisg
ICAgICAgIEFTU0VSVChyZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsRnJhbWUpIDwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4odm0udG9wRW50cnlGcmFtZSkpOworICAgICAgICBhc3NlcnRTdGFj
a1BvaW50ZXJJc0FsaWduZWQoKTsKKyAgICAgICAgdm0udG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1l
OworICAgIH0KK307CisKIGNsYXNzIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB7CiBwdWJsaWM6CiAg
ICAgQUxXQVlTX0lOTElORSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIoVk0mIHZtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKKy8vICNpZm5kZWYgTkRFQlVHCisgICAgICAgIDogbV92bSh2bSkKKy8vICNl
bmRpZgogICAgIHsKICAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7CiAgICAgICAgIEFTU0VSVChy
ZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsRnJhbWUpIDwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4odm0udG9wRW50cnlGcmFtZSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS50b3BDYWxs
RnJhbWUgIT0gYml0d2lzZV9jYXN0PENhbGxGcmFtZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MHgwYmFkYmVlZjBiYWRiZWVmVUxMKSkpOwogICAgICAgICBhc3NlcnRTdGFja1BvaW50ZXJJc0Fs
aWduZWQoKTsKICAgICAgICAgdm0udG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwogICAgIH0KKwor
Ly8gI2lmbmRlZiBOREVCVUcKKyAgICB+TmF0aXZlQ2FsbEZyYW1lVHJhY2VyKCkKKyAgICB7Cisg
ICAgICAgIC8vIEZpbGwgdm0udG9wQ2FsbEZyYW1lIHdpdGggaW52YWxpZCB2YWx1ZSB3aGVuIGxl
YXZpbmcgZnJvbSBDKysgb3BlcmF0aW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgbV92bS50b3BDYWxs
RnJhbWUgPSBiaXR3aXNlX2Nhc3Q8Q2FsbEZyYW1lKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pigw
eDBiYWRiZWVmMGJhZGJlZWZVTEwpKTsKKyAgICB9CisKKyAgICBWTSYgbV92bTsKKy8vICNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggM2NlMjliZDRmYzc3MGI5NzU2MzEwNWYyNmM4NmU4
YmJiOTBhNjkwOS4uMWNhYzFjNDIxZGE4YjdjNjRiOTIyMGZhOWJmMzJjYzRmZGE2MDU2YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMjUy
LDYgKzI1Miw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhjZXB0aW9uRnV6eihWTSYg
dm0pCiAgICAgLy8gU2V0IHVwIG9uZSBhcmd1bWVudC4KICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25FeGNlcHRpb25G
dXp6KSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CisgICAgcHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOwogICAgIGNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJu
R1BSLCBPcGVyYXRpb25QdHJUYWcpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKQEAgLTkzMSw2ICs5MzIsNyBAQCB2b2lk
IEFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKFZNJiB2bSwgVl9EZWJ1Z09wZXJhdGlvbl9FUFAg
ZnVuY3Rpb24sIHZvaWQqIGFyZwogI2Vsc2UKICNlcnJvciAiSklUIG5vdCBzdXBwb3J0ZWQgb24g
dGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYKKyAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGZ1
bmN0aW9uKSksIHNjcmF0Y2gpOwogICAgIGNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCmluZGV4IGI0YjQ2
OTczYjkxNDNkNDI0ZDRlNDMxYWU0MmJhNGU0M2MzYzMyNjMuLjg0ODVhOWZiZDY4M2RiZWY2NThm
NjcwODgxM2Y3NThkNWRkYjk4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5jcHAKQEAgLTYxLDYgKzYxLDcgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmVuc3VyZVNo
YWRvd0NoaWNrZW5QYWNrZXQoVk0mIHZtLCBHUFJSZWcgc2hhZG93UGFja2V0LCBHUFJSZWcKICAg
ICBsb2FkUHRyKEFkZHJlc3Moc2NyYXRjaDFOb25BcmdHUFIpLCBzaGFkb3dQYWNrZXQpOwogICAg
IEp1bXAgb2sgPSBicmFuY2hQdHIoQmVsb3csIHNoYWRvd1BhY2tldCwgVHJ1c3RlZEltbVB0cihz
aGFkb3dDaGlja2VuLT5sb2dFbmQoKSkpOwogICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKT4oVHJ1c3RlZEltbVB0cigmdm0pKTsKKyAg
ICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHRhZ0NG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2Vu
TG9nKSksIHNjcmF0Y2gxTm9uQXJnR1BSKTsKICAgICBjYWxsKHNjcmF0Y2gxTm9uQXJnR1BSLCBP
cGVyYXRpb25QdHJUYWcpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzaGFkb3dDaGlja2VuLT5h
ZGRyZXNzT2ZMb2dDdXJzb3IoKSksIHNjcmF0Y2gxTm9uQXJnR1BSKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDM4MDk0NjFhYmU1Mjc3NTU3YWUx
YTcyZmUxNjdhY2FjYzFhYjM5ZmIuLjdhNWE3NWZiMDc5OTgyNThjNmIxODczMjExOWU2MzBhY2I0
ZDYxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApA
QCAtMTAyNSw3ICsxMDI1LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0
Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUKICAgICAgICAgQVNT
RVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpKUyk7CiAgICAgCiAgICAgICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZTo6SG9zdCkgewotICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbGVlRnJhbWUpOworICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyV2l0aG91dENsZWFyaW5nIHRyYWNlcih2bSwgY2FsbGVlRnJhbWUpOwogICAgICAgICAgICAg
Y2FsbGVlRnJhbWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgICAgIHZt
Lmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSktPmdsb2JhbE9iamVjdCh2bSksIGNhbGxlZUZyYW1lKSk7
CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CkBAIC0xMDU0
LDcgKzEwNTQsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZQogICAgIEFTU0VSVChjb25zdHJ1
Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6OkpTKTsKICAgICAKICAgICBpZiAoY29uc3RydWN0VHlw
ZSA9PSBDb25zdHJ1Y3RUeXBlOjpIb3N0KSB7Ci0gICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKKyAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
V2l0aG91dENsZWFyaW5nIHRyYWNlcih2bSwgY2FsbGVlRnJhbWUpOwogICAgICAgICBjYWxsZWVG
cmFtZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICB2bS5ob3N0Q2FsbFJl
dHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9u
KGFzT2JqZWN0KGNhbGxlZSktPmdsb2JhbE9iamVjdCh2bSksIGNhbGxlZUZyYW1lKSk7CiAgICAg
ICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKQEAgLTExNTQsNyArMTE1NCw3
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBj
YWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyV2l0
aG91dENsZWFyaW5nIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTVmFsdWUgY2FsbGVl
QXNWYWx1ZSA9IGNhbGxlZUZyYW1lLT5ndWFyYW50ZWVkSlNWYWx1ZUNhbGxlZSgpOwogICAgIGNh
bGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA2YmJjNjY5
NzFlZTMyZTcyZWM1ZGVlYjk1NmY1ZTg0NjRmMmVmYzc2Li4zOTY5ZGM2NmE2MmQ1Mjk1MjhmNmNl
NzEzZWUwMjhiYjVkMDQ4NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCkBAIC0xMTc0LDYgKzExNzQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcihW
TSYgdgogICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cih2bS50b3BFbnRyeUZyYW1lKTsKICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3Qo
KSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUodGhy
b3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspPihHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4odGhyb3dTdGFja092
ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFn
KTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXgg
NjBiNDlmOTExNjNmNTNjNGQ0Nzg1YmQxMTQzZGE1ZDljZTA0NmFmNy4uYWZlZjIwOTZjMDhiOWVj
OThiNWJmYmFlYmQ4MWFiNTQzMjY5MGY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1l
LT5jb2RlQmxvY2soKTsgXAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpOyBcCiAgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOyBc
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAorICAg
IFNsb3dQYXRoTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pCiAKICNpZm5kZWYg
TkRFQlVHCkBAIC01MzYsMTAgKzUzNiwxMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFja19j
aGVjaykKICAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAvLyBJdCdzIG9rIHRvIGNyZWF0ZSB0
aGUgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIGhlcmUgYmVmb3JlIHdlCisgICAgLy8gSXQncyBvayB0
byBjcmVhdGUgdGhlIFNsb3dQYXRoTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIGhlcmUgYmVmb3JlIHdl
CiAgICAgLy8gY29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKCkgYmVjYXVzZSB0aGlzIGZ1bmN0
aW9uIGlzIGFsd2F5cyBjYWxsZWQKICAgICAvLyBhZnRlciB0aGUgZnJhbWUgaGFzIGJlZW4gcHJv
cHVsYXRlZCB3aXRoIGEgcHJvcGVyIENvZGVCbG9jayBhbmQgY2FsbGVlLgotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgU2xvd1BhdGhOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgTExJTlRfU0VUX1BD
X0ZPUl9TVFVCUygpOwogCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1
cm5UeXBlIGhhbmRsZUhvc3RDYWxsKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTVmFsdWUgY2Fs
bGVlLAogICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6OkpTKTsKICAgICAKICAg
ICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpIb3N0KSB7Ci0gICAgICAgICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CisgICAgICAgICAgICBT
bG93UGF0aE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKICAg
ICAgICAgICAgIGNhbGxlZUZyYW1lLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAg
ICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChjYWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBjYWxs
ZWVGcmFtZSkpOwogICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZ2xvYmFsT2JqZWN0LCBj
YWxsZWVGcmFtZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENG
dW5jdGlvblB0clRhZyk7CkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1
cm5UeXBlIGhhbmRsZUhvc3RDYWxsKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTVmFsdWUgY2Fs
bGVlLAogICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6OkpTKTsKICAg
ICAKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpIb3N0KSB7Ci0gICAg
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKKyAgICAg
ICAgU2xvd1BhdGhOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7
CiAgICAgICAgIGNhbGxlZUZyYW1lLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAg
ICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2Fs
bGVlRnJhbWUpKTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZ2xvYmFsT2JqZWN0LCBjYWxs
ZWVGcmFtZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5j
dGlvblB0clRhZyk7CkBAIC0xNzczLDcgKzE3NzMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZGVidWcpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFuZGxlX2V4
Y2VwdGlvbikKIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgU2xvd1Bh
dGhOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGdlbmVy
aWNVbndpbmQodm0sIGNhbGxGcmFtZSk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4
IDkwYzNkZTdhMzQzMGJjNzE4OWI5NmYwMzg5MDczZjU4YWQwYzFlNzguLmVlMjUzNDkzZDI3Mzk4
MGVkOGQ2OTliNzc0MGE2Mjk1MjEzNjRiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCk7IFwKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKTsgXAogICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0oKTsgXAotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7IFwKKyAgICBTbG93UGF0aE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7IFwKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsgXAogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKQogCkBAIC0xNzUsNyArMTc1LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NhbGxfYXJpdHlDaGVjaykKICAgICBpZiAoVU5MSUtFTFkoc2xvdHNUb0FkZCA8IDApKSB7CiAg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gQ29tbW9uU2xvd1BhdGhzOjpjb2RlQmxvY2tG
cm9tQ2FsbEZyYW1lQ2FsbGVlKGNhbGxGcmFtZSwgQ29kZUZvckNhbGwpOwogICAgICAgICBjYWxs
RnJhbWUtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSh2bSwgY29kZUJsb2NrKTsKLSAgICAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICAgICAg
U2xvd1BhdGhOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
ICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwogICAgICAgICB0aHJvd0FyaXR5Q2hlY2tTdGFja092ZXJmbG93RXJyb3Io
Z2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiAgICAgaWYgKFVOTElLRUxZKHNs
b3RzVG9BZGQgPCAwKSkgewogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IENvbW1vblNs
b3dQYXRoczo6Y29kZUJsb2NrRnJvbUNhbGxGcmFtZUNhbGxlZShjYWxsRnJhbWUsIENvZGVGb3JD
b25zdHJ1Y3QpOwogICAgICAgICBjYWxsRnJhbWUtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFt
ZSh2bSwgY29kZUJsb2NrKTsKLSAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICAgICAgU2xvd1BhdGhOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29w
ZSh2bSk7CiAgICAgICAgIHRocm93QXJpdHlDaGVja1N0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxP
YmplY3QsIHRocm93U2NvcGUpOwogICAgICAgICBSRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGNhbGxGcmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRl
eCAxMmM1YTY0MDRkZTZkNjdkNDUyYTI2ZjkwNjlkMTRmZjBmNjIyYTE3Li41NjkxYmEzMzU1ZWY3
ZWZiODFmMzM5MmViNzc4NDVmYjkzOWNhYTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTc5NSw2ICs3OTUs
OCBAQAogI2VuZGlmCiAjZW5kaWYKIAorI3VuZGVmIEVOQUJMRV9GVExfSklUCisjZGVmaW5lIEVO
QUJMRV9GVExfSklUIDAKIC8qIFRoZSBGVEwgKmRvZXMgbm90KiB3b3JrIG9uIDMyLWJpdCBwbGF0
Zm9ybXMuIERpc2FibGUgaXQgZXZlbiBpZiBzb21lb25lIGFza2VkIHVzIHRvIGVuYWJsZSBpdC4g
Ki8KICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogI3VuZGVmIEVOQUJMRV9GVExfSklUCkBAIC0xMDAx
LDkgKzEwMDMsMTcgQEAKICNlbmRpZgogCiAvKiBVc2UgX19idWlsdGluX2ZyYW1lX2FkZHJlc3Mo
MSkgdG8gZ2V0IENhbGxGcmFtZSogKi8KKyNpZiAwCiAjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElC
TEUpICYmIChDUFUoQVJNNjQpIHx8IENQVShYODZfNjQpKSAmJiAoT1MoTElOVVgpIHx8IE9TKERB
UldJTikpCiAjZGVmaW5lIFVTRV9CVUlMVElOX0ZSQU1FX0FERFJFU1MgMQogI2VuZGlmCisjZW5k
aWYKKworI2lmIEVOQUJMRShGVExfSklUKQorI2lmICFVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNT
KQorI2Vycm9yICJGVEwgSklUIHJlcXVpcmVzIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzIgorI2Vu
ZGlmCisjZW5kaWYKIAogLyogUmVndWxhciBFeHByZXNzaW9uIFRyYWNpbmcgLSBTZXQgdG8gMSB0
byB0cmFjZSBSZWdFeHAncyBpbiBqc2MuICBSZXN1bHRzIGR1bXBlZCBhdCBleGl0ICovCiAjZGVm
aW5lIEVOQUJMRV9SRUdFWFBfVFJBQ0lORyAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381662</attachid>
            <date>2019-10-22 23:40:37 -0700</date>
            <delta_ts>2019-10-23 00:56:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203285-20191022234036.patch</filename>
            <type>text/plain</type>
            <size>26194</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NGRlNDY1NTY3ZmE4N2NkMmNiOWEyMTEzMjJjZTllY2E1OGNlOWZkLi5jN2FmOGM5NGQ2MDEzYTU2
YzRkMWVkNzFlMmI1YmE4YzY2MmMyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxOS0xMC0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJlQ2FsbE9wZXJhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjg1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcv
REZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6ZW1pdFJlc3RvcmVB
cmd1bWVudHMpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmhhbmRsZUV4aXRDb3VudHMpOgorICAgICAgICAoSlNDOjpERkc6
Om9zcldyaXRlQmFycmllcik6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3Mp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbEV2YWwp
OgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpzbG93UGF0aENhbGxUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvRnJhbWVUcmFjZXJzLmg6CisgICAgICAgIChKU0M6OlNsb3dQYXRoTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyOjpTbG93UGF0aE5hdGl2ZUNhbGxGcmFtZVRyYWNlcik6CisgICAgICAgIChKU0M6Ok5h
dGl2ZUNhbGxGcmFtZVRyYWNlcldpdGhvdXRDbGVhcmluZzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
V2l0aG91dENsZWFyaW5nKToKKyAgICAgICAgKEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyOjpO
YXRpdmVDYWxsRnJhbWVUcmFjZXIpOgorICAgICAgICAoSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFj
ZXI6On5OYXRpdmVDYWxsRnJhbWVUcmFjZXIpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhbGxFeGNlcHRpb25GdXp6
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpkZWJ1Z0NhbGwpOgorICAgICAgICAq
IGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpw
cmVwYXJlQ2FsbE9wZXJhdGlvbik6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5jcHA6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldCk6Cisg
ICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6
OnByZXBhcmVDYWxsT3BlcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChK
U0M6OmJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19Q
QVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRI
X0RFQ0wpOgorCiAyMDE5LTEwLTIyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFrZSBgSlNHbG9iYWxPYmplY3QqYCB0aHJlYWRpbmcgY2hhbmdlIG1vcmUg
c3RhYmlsaXplZCBieSBhZGRpbmcgdGVzdHMgYW5kIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYWZhNDZhYjY3
Zjk4MWZiZjI5YzI2ZDcwY2JhNjNiNDc4YTg1OTc2NC4uNDhiODlhOTYzOGJmOWVjNjkzZTFkMDZm
OWI5NzBhNGQ2MzM4MDdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMC0yMiAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQg
bWlzc2luZyBwcmVwYXJlQ2FsbE9wZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxOS0xMC0yMiAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgYEpTR2xvYmFs
T2JqZWN0KmAgdGhyZWFkaW5nIGNoYW5nZSBtb3JlIHN0YWJpbGl6ZWQgYnkgYWRkaW5nIHRlc3Rz
IGFuZCBhc3NlcnRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcApp
bmRleCBkMGUwYTVmY2RmNDUxNDFmYjhmYzM1Yjk2NDY4MjI3YzkzYjJiZTMzLi41Y2IzZDc3ZmZl
MGFiYTAyZTMzOTkxZThmOWExMDAzNzI1M2JlNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKQEAgLTEwMDgsNiArMTAwOCw3IEBAIHZvaWQgT1NSRXhpdDo6ZW1p
dFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVl
UmVjb3ZlCiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJh
dGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQpLCBkZWNsdHlwZShvcGVyYXRpb25D
cmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KT46OnZhbHVlLCAiV2UgYXNzdW1lIHRoZXNl
IGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIHNpZ25hdHVyZSBiZWxvdy4iKTsKICAgICAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1
cmluZ0V4aXQpPigKICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigm
aml0LnZtKCkpLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1l
KSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlx
dWUoKSkgewogICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoK
ICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdD
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVu
dHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IDU0
ODc3YjkxZDBiZmQ0ZjE4NDkxMDQxNjlmNzVjMTlmMzMzNDU0NTYuLmQxMmI3NmE2OWJjOGQ5ZTA2
MzIxYzllM2JiMGE3N2E4MmUzNTFkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKQEAgLTEwNCw2ICsxMDQsNyBA
QCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRC
YXNlJiBleGl0KQogICAgIHJlb3B0aW1pemVOb3cubGluaygmaml0KTsKICAgICAKICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUodHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KT4oR1BSSW5m
bzo6cmVnVDAsIEdQUkluZm86OnJlZ1QzLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
JmV4aXQpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24oaml0LnZtKCkpOwogICAgIGpp
dC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPih0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFn
KTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZG9uZUFkanVzdGluZyA9IGppdC5qdW1wKCk7
CkBAIC0zMzksNiArMzQwLDcgQEAgc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKFZNJiB2bSwg
Q0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmEKICAgICBBc3NlbWJs
eUhlbHBlcnM6Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJh
bmNoV2l0aG91dEZlbmNlKG93bmVyKTsKIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpPigmdm0sIG93bmVyKTsKKyAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRl
QmFycmllcikpLCBzY3JhdGNoKTsKICAgICBqaXQuY2FsbChzY3JhdGNoLCBPcGVyYXRpb25QdHJU
YWcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKaW5kZXggOWQwOWZl
NzE1NDFjMDI2NWIxYzE5OWVjMGRiN2QzOWVkZDExOTFhMi4uMjFjYzU3MDM1ZGNmOGJjYjgzMDU2
ZTRiNmFjZjJjODE2NzUxYmRhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtz
LmNwcApAQCAtNzcsNiArNzcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgLy8gU2V0
IHVwIG9uZSBhcmd1bWVudC4KICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gaml0LmNhbGwo
T3BlcmF0aW9uUHRyVGFnKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCmluZGV4IDhhMDBkOTY2M2ZlM2Q2MTZhMGYxZWVlOGFkZTY0ZjkzYjFmZDEz
ZjkuLjNjZjczOTQ5N2FhMjYyY2Y4MmU4ZDYxZTU3ZDRjN2EzNGIxYjUyZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTg4NDUsNiArODg0
NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBkb250VGhyb3cgPSBqaXQuanVtcCgpOwogICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk+KGppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOworICAg
ICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24oaml0LnZtKCkpOwogICAg
ICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2b2lk
Kj4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncykpOwogICAgICAgICAgICAg
ICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RU
aHJvdyk7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtOTExMSw2ICs5MTEyLDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRv
bmUgPSBqaXQuanVtcCgpOwogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZS5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0
aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncyk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOworICAgICAgICAgICAgICAgICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24oaml0LnZtKCkpOwogICAgICAgICAgICAgICAgICAgICBj
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uVGhyb3dT
dGFja092ZXJmbG93Rm9yVmFyYXJncykpOwogICAgICAgICAgICAgICAgICAgICBqaXQuYWJvcnRX
aXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2luZ1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAg
ICAgICAgICAgIApAQCAtOTExOCw2ICs5MTIwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihvcmlnaW5hbFN0YWNrSGVpZ2h0IC8gc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSksIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpPihqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBhcmd1bWVu
dHNHUFIsIHNjcmF0Y2hHUFIxLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihkYXRhLT5maXJz
dFZhckFyZ09mZnNldCkpOworICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24oaml0LnZtKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncykpOwog
CiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBz
Y3JhdGNoR1BSMSk7CkBAIC05MTI2LDYgKzkxMjksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgICAgICBlbWl0U2V0VmFyYXJnc0ZyYW1lKGppdCwgc2NyYXRjaEdQUjEs
IGZhbHNlLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjIpOwogICAgICAgICAgICAgICAgICAgICBq
aXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1taW5pbXVtSlNDYWxsQXJlYVNp
emUpLCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAg
ICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25T
ZXR1cFZhcmFyZ3NGcmFtZSk+KGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksIHNjcmF0Y2hHUFIyLCBhcmd1bWVudHNHUFIsIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KSwgc2NyYXRjaEdQUjEpOwor
ICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24oaml0LnZtKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGJpdHdpc2VfY2FzdDx2
b2lkKj4ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUpKTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtOTI3Nyw2ICs5MjgxLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICByZXF1aXJlZEJ5dGVzID0gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVxdWlyZWRCeXRl
cyk7CiAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihyZXF1aXJlZEJ5dGVzKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAg
ICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxF
dmFsKT4oZ2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICAgICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uQ2FsbEV2YWwpKSwgR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1l
bnRHUFIwKTsKICAgICAgICAgICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWRO
b25Bcmd1bWVudEdQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgICAgICAgICAgICAgZXhjZXB0
aW9ucy0+YXBwZW5kKGppdC5lbWl0RXhjZXB0aW9uQ2hlY2soc3RhdGUtPnZtKCksIEFzc2VtYmx5
SGVscGVyczo6Tm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5SGVscGVyczo6RmFySnVtcFdp
ZHRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxl
ci5jcHAKaW5kZXggZjZiM2E3NGNhM2U4NjQ1ZTExMmRjYWQ1ZWIzNjRlOWFhNGE2NzY3Yy4uZDIz
OGU3ZDk2ZmJhNmY3NDQ3NjNmMTcwNjI1NGZmMDZjNDIzOTRkNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMzM1LDYgKzMzNSw3
IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihtYXRlcmlhbGl6YXRp
b24tPm9yaWdpbigpKSksCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG1hdGVyaWFsaXphdGlvbiksCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKG1hdGVyaWFsaXphdGlvbkFyZ3VtZW50cykpOworICAgICAgICAgICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwog
ICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFn
KTsKICAgICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgbWF0
ZXJpYWxpemF0aW9uVG9Qb2ludGVyLmdldChtYXRlcmlhbGl6YXRpb24pKTsKQEAgLTM2NCw2ICsz
NjUsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb24pLAogICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGVyaWFsaXphdGlvblRvUG9pbnRlci5nZXQobWF0ZXJpYWxp
emF0aW9uKSksCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0ZXJp
YWxpemF0aW9uQXJndW1lbnRzKSk7CisgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbihq
aXQudm0oKSk7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0
YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdElu
T1NSKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpu
b25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMVGh1bmtzLmNwcAppbmRleCBmYTliZmM3MGI2Y2U4ZTllMzJlMzU2ZGExNTIxZGU3OWFm
MDA3MjVlLi40MTZiZGUwZWQyZjhkMWQzNDY2MDdmYzFjZWNlMzYyZWU1ZGU4NDVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCkBAIC04Niw2ICs4Niw3IEBAIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyaWNHZW5lcmF0aW9u
VGh1bmtHZW5lcmF0b3IoCiAgICAgaml0LnBlZWsoCiAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50
R1BSMSwKICAgICAgICAgKHN0YWNrTWlzYWxpZ25tZW50IC0gTWFjcm9Bc3NlbWJsZXI6OnB1c2hU
b1NhdmVCeXRlT2Zmc2V0KCkpIC8gc2l6ZW9mKHZvaWQqKSk7CisgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSB3YW50
IHRvIG1ha2UgYSB0YWlsIGNhbGwgdG8gd2hhdCB3YXMgcmV0dXJuZWQgdG8gdXMgaW4gdGhlCkBA
IC0yMDEsNiArMjAyLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBz
bG93UGF0aENhbGxUaHVua0dlbmVyYXRvcihjb25zdCBTbG93UGF0aEMKICAgICAKICAgICBqaXQu
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAg
IGppdC5zdG9yZVB0cihHUFJJbmZvOjpub25BcmdHUFIwLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJl
c3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsK
KyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIAogICAgIHJlZ2lzdGVyQ2xv
YmJlckNoZWNrKGppdCwga2V5LmFyZ3VtZW50UmVnaXN0ZXJzKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmgKaW5kZXggMTFmN2I4YTJh
MzA1OThiYTM1YTdiNGZlNTA5ODQyODU0YWRjYTI0YS4uNDI1ZDk2YjMyYmRlOWM3NzI2YTIyOTdm
ZmI0YmRkNDY3MjFmZGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ZyYW1lVHJhY2Vycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9GcmFtZVRyYWNlcnMuaApAQCAtODEsMTUgKzgxLDUxIEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIHZvaWQgYXNzZXJ0U3RhY2tQb2ludGVySXNBbGlnbmVkKCkKICNlbmRpZgogfQogCitjbGFz
cyBTbG93UGF0aE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB7CitwdWJsaWM6CisgICAgQUxXQVlTX0lO
TElORSBTbG93UGF0aE5hdGl2ZUNhbGxGcmFtZVRyYWNlcihWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7CisgICAgICAgIEFTU0VS
VChyZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsRnJhbWUpIDwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4odm0udG9wRW50cnlGcmFtZSkpOworICAgICAgICBhc3NlcnRTdGFja1BvaW50ZXJJc0Fs
aWduZWQoKTsKKyAgICAgICAgdm0udG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOworICAgIH0KK307
CisKK2NsYXNzIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcldpdGhvdXRDbGVhcmluZyB7CitwdWJsaWM6
CisgICAgQUxXQVlTX0lOTElORSBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRob3V0Q2xlYXJpbmco
Vk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChjYWxs
RnJhbWUpOworICAgICAgICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbEZyYW1l
KSA8IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZtLnRvcEVudHJ5RnJhbWUpKTsKKyAgICAgICAg
YXNzZXJ0U3RhY2tQb2ludGVySXNBbGlnbmVkKCk7CisgICAgICAgIHZtLnRvcENhbGxGcmFtZSA9
IGNhbGxGcmFtZTsKKyAgICB9Cit9OworCiBjbGFzcyBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgewog
cHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyKFZNJiB2bSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCisvLyAjaWZuZGVmIE5ERUJVRworICAgICAgICA6IG1fdm0o
dm0pCisvLyAjZW5kaWYKICAgICB7CiAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOwogICAgICAg
ICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbEZyYW1lKSA8IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHZtLnRvcEVudHJ5RnJhbWUpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
dm0udG9wQ2FsbEZyYW1lICE9IGJpdHdpc2VfY2FzdDxDYWxsRnJhbWUqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDB4MGJhZGJlZWYwYmFkYmVlZlVMTCkpKTsKICAgICAgICAgYXNzZXJ0U3RhY2tQ
b2ludGVySXNBbGlnbmVkKCk7CiAgICAgICAgIHZtLnRvcENhbGxGcmFtZSA9IGNhbGxGcmFtZTsK
ICAgICB9CisKKy8vICNpZm5kZWYgTkRFQlVHCisgICAgfk5hdGl2ZUNhbGxGcmFtZVRyYWNlcigp
CisgICAgeworICAgICAgICAvLyBGaWxsIHZtLnRvcENhbGxGcmFtZSB3aXRoIGludmFsaWQgdmFs
dWUgd2hlbiBsZWF2aW5nIGZyb20gQysrIG9wZXJhdGlvbiBmdW5jdGlvbnMuCisgICAgICAgIG1f
dm0udG9wQ2FsbEZyYW1lID0gYml0d2lzZV9jYXN0PENhbGxGcmFtZSo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMHgwYmFkYmVlZjBiYWRiZWVmVUxMKSk7CisgICAgfQorCisgICAgVk0mIG1fdm07
CisvLyAjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDNjZTI5YmQ0ZmM3NzBiOTc1NjMx
MDVmMjZjODZlOGJiYjkwYTY5MDkuLjFjYWMxYzQyMWRhOGI3YzY0YjkyMjBmYTliZjMyY2M0ZmRh
NjA1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5j
cHAKQEAgLTI1Miw2ICsyNTIsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2FsbEV4Y2VwdGlv
bkZ1enooVk0mIHZtKQogICAgIC8vIFNldCB1cCBvbmUgYXJndW1lbnQuCiAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
RXhjZXB0aW9uRnV6eikpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOworICAg
IHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBjYWxsKEdQUkluZm86Om5vblByZXNlcnZl
ZE5vblJldHVybkdQUiwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CkBAIC05MzEsNiArOTMy
LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmRlYnVnQ2FsbChWTSYgdm0sIFZfRGVidWdPcGVy
YXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBhcmcKICNlbHNlCiAjZXJyb3IgIkpJVCBub3Qgc3Vw
cG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCisgICAgcHJlcGFyZUNhbGxPcGVyYXRp
b24odm0pOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihmdW5jdGlvbikpLCBzY3JhdGNoKTsKICAgICBjYWxsKHNjcmF0Y2gsIE9wZXJhdGlv
blB0clRhZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CmluZGV4IDI3NjBlZDZjNzJlMmVkMWYzMTUwYzNmZjk5ZDE1NDAwNTU5MDIxNDYuLjVmZjM3NDg5
ZTI0YmVmYmVjNWJiM2YyNmZkNmIwMTUyMDY0M2I0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNjUsNiArNjUsMTUgQEAgY2xhc3MgQXNzZW1i
bHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICBWTSYgdm0oKSB7IHJldHVy
biBtX2NvZGVCbG9jay0+dm0oKTsgfQogICAgIEFzc2VtYmxlclR5cGVfVCYgYXNzZW1ibGVyKCkg
eyByZXR1cm4gbV9hc3NlbWJsZXI7IH0KIAorICAgIHZvaWQgcHJlcGFyZUNhbGxPcGVyYXRpb24o
Vk0mIHZtKQorICAgIHsKKyNpZiBVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKQorICAgICAgICBV
TlVTRURfUEFSQU0odm0pOworI2Vsc2UKKyAgICAgICAgc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOworI2VuZGlmCisgICAgfQorCiAgICAgdm9p
ZCBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpCiAgICAgewogICAgICAgICAvLyBUaGlzIGNo
ZWNrIGlzIGJvdGggdW5uZWVkZWQgYW5kIGhhcmRlciB0byB3cml0ZSBjb3JyZWN0bHkgZm9yIEFS
TTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKaW5kZXggYjRi
NDY5NzNiOTE0M2Q0MjRkNGU0MzFhZTQyYmE0ZTQzYzNjMzI2My4uODQ4NWE5ZmJkNjgzZGJlZjY1
OGY2NzA4ODEzZjc1OGQ1ZGRiOThkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmNwcApAQCAtNjEsNiArNjEsNyBAQCB2b2lkIENDYWxsSGVscGVyczo6ZW5zdXJl
U2hhZG93Q2hpY2tlblBhY2tldChWTSYgdm0sIEdQUlJlZyBzaGFkb3dQYWNrZXQsIEdQUlJlZwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoMU5vbkFyZ0dQUiksIHNoYWRvd1BhY2tldCk7CiAg
ICAgSnVtcCBvayA9IGJyYW5jaFB0cihCZWxvdywgc2hhZG93UGFja2V0LCBUcnVzdGVkSW1tUHRy
KHNoYWRvd0NoaWNrZW4tPmxvZ0VuZCgpKSk7CiAgICAgc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uUHJvY2Vzc1NoYWRvd0NoaWNrZW5Mb2cpPihUcnVzdGVkSW1tUHRyKCZ2bSkpOwor
ICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIodGFn
Q0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHJvY2Vzc1NoYWRvd0NoaWNr
ZW5Mb2cpKSwgc2NyYXRjaDFOb25BcmdHUFIpOwogICAgIGNhbGwoc2NyYXRjaDFOb25BcmdHUFIs
IE9wZXJhdGlvblB0clRhZyk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNoYWRvd0NoaWNrZW4t
PmFkZHJlc3NPZkxvZ0N1cnNvcigpKSwgc2NyYXRjaDFOb25BcmdHUFIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggZDgxMGQyMzQ3ODdlNTg5ZmNhNjZlYmNi
NGE0OGIyNGY5M2RjZGVkMS4uMDE1ZjAzYjc1YjY3YzlmNzU3Y2JlNzQwNGQ0ZTFhNTY5MzRhMjgx
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC04NCwxNSAr
ODQsNiBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAg
ICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwLCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIGFy
Z3VtZW50SW5kZXggLSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKICAgICB9
CiAKLSAgICB2b2lkIHByZXBhcmVDYWxsT3BlcmF0aW9uKFZNJiB2bSkKLSAgICB7Ci0jaWYgVVNF
KEJVSUxUSU5fRlJBTUVfQUREUkVTUykKLSAgICAgICAgVU5VU0VEX1BBUkFNKHZtKTsKLSNlbHNl
Ci0gICAgICAgIHN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2Fs
bEZyYW1lKTsKLSNlbmRpZgotICAgIH0KLQogcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlPHVuc2ln
bmVkIE51bWJlck9mUmVnaXN0ZXJzLCB0eXBlbmFtZSBSZWdUeXBlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMzgwOTQ2MWFiZTUyNzc1NTdhZTFh
NzJmZTE2N2FjYWNjMWFiMzlmYi4uN2E1YTc1ZmIwNzk5ODI1OGM2YjE4NzMyMTE5ZTYzMGFjYjRk
NjE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC0xMDI1LDcgKzEwMjUsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RD
YWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZQogICAgICAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6OkpTKTsKICAgICAKICAgICAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlOjpIb3N0KSB7Ci0gICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CisgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXJXaXRob3V0Q2xlYXJpbmcgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CiAgICAgICAgICAgICBj
YWxsZWVGcmFtZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAgdm0u
aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVu
Y3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2FsbGVlRnJhbWUpKTsK
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKQEAgLTEwNTQs
NyArMTA1NCw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lCiAgICAgQVNTRVJUKGNvbnN0cnVj
dFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6SlMpOwogICAgIAogICAgIGlmIChjb25zdHJ1Y3RUeXBl
ID09IENvbnN0cnVjdFR5cGU6Okhvc3QpIHsKLSAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbGVlRnJhbWUpOworICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJX
aXRob3V0Q2xlYXJpbmcgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CiAgICAgICAgIGNhbGxlZUZy
YW1lLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLmhvc3RDYWxsUmV0
dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24o
YXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2FsbGVlRnJhbWUpKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewpAQCAtMTE1NCw3ICsxMTU0LDcg
QEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCA9IGNh
bGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRo
b3V0Q2xlYXJpbmcgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSBjYWxsZWVB
c1ZhbHVlID0gY2FsbGVlRnJhbWUtPmd1YXJhbnRlZWRKU1ZhbHVlQ2FsbGVlKCk7CiAgICAgY2Fs
bGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDZiYmM2Njk3
MWVlMzJlNzJlYzVkZWViOTU2ZjVlODQ2NGYyZWZjNzYuLjM5NjlkYzY2YTYyZDUyOTUyOGY2Y2U3
MTNlZTAyOGJiNWQwNDg2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAKQEAgLTExNzQsNiArMTE3NCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZN
JiB2CiAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KHZtLnRvcEVudHJ5RnJhbWUpOwogICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMywgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
KSwgR1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayk+KEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQu
cHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPih0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvckZyb21UaHVuaykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBlbWl0UG9p
bnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcp
OwogICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2
MGI0OWY5MTE2M2Y1M2M0ZDQ3ODViZDExNDNkYTVkOWNlMDQ2YWY3Li5hZmVmMjA5NmMwOGI5ZWM5
OGI1YmZiYWViZDgxYWI1NDMyNjkwZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBMTEludCB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOyBcCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCk7IFwKICAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7IFwK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCisgICAg
U2xvd1BhdGhOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSkKIAogI2lmbmRlZiBO
REVCVUcKQEAgLTUzNiwxMCArNTM2LDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2No
ZWNrKQogICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIC8vIEl0J3Mgb2sgdG8gY3JlYXRlIHRo
ZSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgaGVyZSBiZWZvcmUgd2UKKyAgICAvLyBJdCdzIG9rIHRv
IGNyZWF0ZSB0aGUgU2xvd1BhdGhOYXRpdmVDYWxsRnJhbWVUcmFjZXIgaGVyZSBiZWZvcmUgd2UK
ICAgICAvLyBjb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUoKSBiZWNhdXNlIHRoaXMgZnVuY3Rp
b24gaXMgYWx3YXlzIGNhbGxlZAogICAgIC8vIGFmdGVyIHRoZSBmcmFtZSBoYXMgYmVlbiBwcm9w
dWxhdGVkIHdpdGggYSBwcm9wZXIgQ29kZUJsb2NrIGFuZCBjYWxsZWUuCi0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBTbG93UGF0aE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBMTElOVF9TRVRfUENf
Rk9SX1NUVUJTKCk7CiAKQEAgLTE0MzYsNyArMTQzNiw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVy
blR5cGUgaGFuZGxlSG9zdENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNWYWx1ZSBjYWxs
ZWUsCiAgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SlMpOwogICAgIAogICAg
ICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpIHsKLSAgICAgICAgICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKKyAgICAgICAgICAgIFNs
b3dQYXRoTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVlRnJhbWUpOwogICAg
ICAgICAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAg
ICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSktPmdsb2JhbE9iamVjdCh2bSksIGNhbGxl
ZUZyYW1lKSk7CiAgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3QsIGNh
bGxlZUZyYW1lLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1
bmN0aW9uUHRyVGFnKTsKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVy
blR5cGUgaGFuZGxlSG9zdENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNWYWx1ZSBjYWxs
ZWUsCiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6SlMpOwogICAg
IAogICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Okhvc3QpIHsKLSAgICAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVlRnJhbWUpOworICAgICAg
ICBTbG93UGF0aE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsK
ICAgICAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAg
ICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRh
Lm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChjYWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBjYWxs
ZWVGcmFtZSkpOwogICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3QsIGNhbGxl
ZUZyYW1lLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0
aW9uUHRyVGFnKTsKQEAgLTE3NzMsNyArMTc3Myw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9kZWJ1ZykKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfZXhj
ZXB0aW9uKQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZNKCk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBTbG93UGF0
aE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgZ2VuZXJp
Y1Vud2luZCh2bSwgY2FsbEZyYW1lKTsKICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXgg
OTBjM2RlN2EzNDMwYmM3MTg5Yjk2ZjAzODkwNzNmNThhZDBjMWU3OC4uZWUyNTM0OTNkMjczOTgw
ZWQ4ZDY5OWI3NzQwYTYyOTUyMTM2NGI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KTsgXAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOyBcCiAgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOyBcCi0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAorICAgIFNsb3dQYXRoTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyBcCiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpCiAKQEAgLTE3NSw3ICsxNzUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y2FsbF9hcml0eUNoZWNrKQogICAgIGlmIChVTkxJS0VMWShzbG90c1RvQWRkIDwgMCkpIHsKICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBDb21tb25TbG93UGF0aHM6OmNvZGVCbG9ja0Zy
b21DYWxsRnJhbWVDYWxsZWUoY2FsbEZyYW1lLCBDb2RlRm9yQ2FsbCk7CiAgICAgICAgIGNhbGxG
cmFtZS0+Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKHZtLCBjb2RlQmxvY2spOwotICAgICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgICAgICBT
bG93UGF0aE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
ICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKICAgICAgICAgdGhyb3dTY29w
ZS5yZWxlYXNlKCk7CiAgICAgICAgIHRocm93QXJpdHlDaGVja1N0YWNrT3ZlcmZsb3dFcnJvcihn
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKICAgICBpZiAoVU5MSUtFTFkoc2xv
dHNUb0FkZCA8IDApKSB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gQ29tbW9uU2xv
d1BhdGhzOjpjb2RlQmxvY2tGcm9tQ2FsbEZyYW1lQ2FsbGVlKGNhbGxGcmFtZSwgQ29kZUZvckNv
bnN0cnVjdCk7CiAgICAgICAgIGNhbGxGcmFtZS0+Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1l
KHZtLCBjb2RlQmxvY2spOwotICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgICAgICBTbG93UGF0aE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3Bl
KHZtKTsKICAgICAgICAgdGhyb3dBcml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7CiAgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4
IDEyYzVhNjQwNGRlNmQ2N2Q0NTJhMjZmOTA2OWQxNGZmMGY2MjJhMTcuLmZlNGI5YzJlZTRhNDY3
YWY4NGIxODVlZGU1MzBiNmJhMjc4NDUwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtNzk1LDYgKzc5NSw4
IEBACiAjZW5kaWYKICNlbmRpZgogCisjdW5kZWYgRU5BQkxFX0ZUTF9KSVQKKyNkZWZpbmUgRU5B
QkxFX0ZUTF9KSVQgMAogLyogVGhlIEZUTCAqZG9lcyBub3QqIHdvcmsgb24gMzItYml0IHBsYXRm
b3Jtcy4gRGlzYWJsZSBpdCBldmVuIGlmIHNvbWVvbmUgYXNrZWQgdXMgdG8gZW5hYmxlIGl0LiAq
LwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAjdW5kZWYgRU5BQkxFX0ZUTF9KSVQKQEAgLTEwMDEs
OSArMTAwMywxNyBAQAogI2VuZGlmCiAKIC8qIFVzZSBfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcygx
KSB0byBnZXQgQ2FsbEZyYW1lKiAqLwotI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAo
Q1BVKEFSTTY0KSB8fCBDUFUoWDg2XzY0KSkgJiYgKE9TKExJTlVYKSB8fCBPUyhEQVJXSU4pKQor
I2lmIDAKKyNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShBUk02NCkgfHwgQ1BV
KFg4Nl82NCkpCiAjZGVmaW5lIFVTRV9CVUlMVElOX0ZSQU1FX0FERFJFU1MgMQogI2VuZGlmCisj
ZW5kaWYKKworI2lmIEVOQUJMRShGVExfSklUKQorI2lmICFVU0UoQlVJTFRJTl9GUkFNRV9BRERS
RVNTKQorI2Vycm9yICJGVEwgSklUIHJlcXVpcmVzIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzIgor
I2VuZGlmCisjZW5kaWYKIAogLyogUmVndWxhciBFeHByZXNzaW9uIFRyYWNpbmcgLSBTZXQgdG8g
MSB0byB0cmFjZSBSZWdFeHAncyBpbiBqc2MuICBSZXN1bHRzIGR1bXBlZCBhdCBleGl0ICovCiAj
ZGVmaW5lIEVOQUJMRV9SRUdFWFBfVFJBQ0lORyAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381665</attachid>
            <date>2019-10-23 00:56:49 -0700</date>
            <delta_ts>2019-10-23 15:36:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203285-20191023005648.patch</filename>
            <type>text/plain</type>
            <size>179024</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NGRlNDY1NTY3ZmE4N2NkMmNiOWEyMTEzMjJjZTllY2E1OGNlOWZkLi5mZWFkMTk1NDg4YTFlYmIy
ZDdiZDFkYjY5MDhjN2U0ODgwYWRjMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJlQ2FsbE9wZXJhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjg1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcv
REZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6ZW1pdFJlc3RvcmVB
cmd1bWVudHMpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmhhbmRsZUV4aXRDb3VudHMpOgorICAgICAgICAoSlNDOjpERkc6
Om9zcldyaXRlQmFycmllcik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckV4aXRUaHVu
a0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRXhpdEdlbmVyYXRpb25UaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6Om9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpGVEw6
Om9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IpOgorICAgICAgICAqIGludGVycHJldGVy
L0ZyYW1lVHJhY2Vycy5oOgorICAgICAgICAoSlNDOjpTbG93UGF0aEZyYW1lVHJhY2VyOjpTbG93
UGF0aEZyYW1lVHJhY2VyKToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uRnJhbWVUcmFjZXI6
OkpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyKToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uRnJh
bWVUcmFjZXI6On5KSVRPcGVyYXRpb25GcmFtZVRyYWNlcik6CisgICAgICAgICogaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FsbEV4Y2Vw
dGlvbkZ1enopOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmRlYnVnQ2FsbCk6Cisg
ICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnByZXBhcmVDYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjplbnN1cmVTaGFkb3dDaGlja2VuUGFj
a2V0KToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6cHJlcGFyZUNhbGxPcGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElO
VF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5kbGVIb3N0Q2FsbCk6
CisgICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6b3Bl
cmF0aW9uQXRvbWljc0FkZCk6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbkF0b21pY3NBbmQpOgor
ICAgICAgICAoSlNDOjpvcGVyYXRpb25BdG9taWNzQ29tcGFyZUV4Y2hhbmdlKToKKyAgICAgICAg
KEpTQzo6b3BlcmF0aW9uQXRvbWljc0V4Y2hhbmdlKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9u
QXRvbWljc0lzTG9ja0ZyZWUpOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25BdG9taWNzTG9hZCk6
CisgICAgICAgIChKU0M6Om9wZXJhdGlvbkF0b21pY3NPcik6CisgICAgICAgIChKU0M6Om9wZXJh
dGlvbkF0b21pY3NTdG9yZSk6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbkF0b21pY3NTdWIpOgor
ICAgICAgICAoSlNDOjpvcGVyYXRpb25BdG9taWNzWG9yKToKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9wZXJhdGlv
blN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0cik6CisgICAgICAgIChKU0M6Om9w
ZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBTdHJpbmcpOgorICAgICAgICAoSlND
OjpvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2VuZXJpYyk6CisgICAgICAgICogdG9v
bHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChJR05PUkVfV0FSTklOR1NfQkVHSU4pOgorICAg
ICAgICAqIHdhc20vV2FzbU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpvcGVy
YXRpb25UaHJvd0JhZEk2NCk6CisKIDIwMTktMTAtMjIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGBKU0dsb2JhbE9iamVjdCpgIHRocmVhZGluZyBj
aGFuZ2UgbW9yZSBzdGFiaWxpemVkIGJ5IGFkZGluZyB0ZXN0cyBhbmQgYXNzZXJ0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCBhZmE0NmFiNjdmOTgxZmJmMjljMjZkNzBjYmE2M2I0NzhhODU5NzY0Li45YWY4ZTJlODEzZDk3
M2Q2OWQyZTM2NDY1NzNlMzkxYzk3MDE4YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTEw
LTIzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10g
RmlndXJlIG91dCBtaXNzaW5nIHByZXBhcmVDYWxsT3BlcmF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMyODUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE5
LTEwLTIyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFr
ZSBgSlNHbG9iYWxPYmplY3QqYCB0aHJlYWRpbmcgY2hhbmdlIG1vcmUgc3RhYmlsaXplZCBieSBh
ZGRpbmcgdGVzdHMgYW5kIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNDI0NjhkZmExZmNlMGJk
YjExMjU0MTU5MjI0MTQxYTM0ZDg1ZWQ2Li40MWZiNzJmMWM2NTBjMTc0YTA0YzU0ZjkzNDUyODEx
YWFmNjFkYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTktMTAtMjMgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBGaWd1cmUgb3V0
IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzI4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZU9w
ZXJhdGlvbkRlZmluaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBl
RnVuY3Rpb25HZXRBdHRyaWJ1dGVXaXRob3V0VHlwZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbVdpdGhvdXRUeXBlQ2hlY2spOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVX
aXRob3V0VHlwZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRXaXRob3V0VHlwZUNoZWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWVXaXRob3V0
VHlwZUNoZWNrKToKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVscGVycy5oOgorICAgICAgICAo
V2ViQ29yZTo6RE9NSklUOjp0b1dyYXBwZXJTbG93KToKKwogMjAxOS0xMC0yMiAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICB3cHQvY3NzL2Nzcy1pbWFn
ZXMvZ3JhZGllbnQvY29sb3Itc3RvcHMtcGFyc2luZy5odG1sIGZhaWxzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCBkMGUwYTVmY2RmNDUxNDFmYjhmYzM1Yjk2
NDY4MjI3YzkzYjJiZTMzLi41Y2IzZDc3ZmZlMGFiYTAyZTMzOTkxZThmOWExMDAzNzI1M2JlNjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTEwMDgsNiAr
MTAwOCw3IEBAIHZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3ZlCiAgICAgICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmlu
Z0V4aXQpLCBkZWNsdHlwZShvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0
KT46OnZhbHVlLCAiV2UgYXNzdW1lIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIHNpZ25h
dHVyZSBiZWxvdy4iKTsKICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQpPigKICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigmaml0LnZtKCkpLCBBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QxKTsKKyAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAg
ICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIERpcmVjdEFy
Z3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFy
Z0dQUjApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IDU0ODc3YjkxZDBiZmQ0ZjE4NDkxMDQxNjlmNzVjMTlm
MzMzNDU0NTYuLmQxMmI3NmE2OWJjOGQ5ZTA2MzIxYzllM2JiMGE3N2E4MmUzNTFkMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHAKQEAgLTEwNCw2ICsxMDQsNyBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgIHJlb3B0aW1pemVOb3cu
bGluaygmaml0KTsKICAgICAKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUodHJpZ2dl
clJlb3B0aW1pemF0aW9uTm93KT4oR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QzLCBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmV4aXQpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24oaml0LnZtKCkpOwogICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPih0cmlnZ2VyUmVvcHRpbWl6
YXRpb25Ob3cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAg
ZG9uZUFkanVzdGluZyA9IGppdC5qdW1wKCk7CkBAIC0zMzksNiArMzQwLDcgQEAgc3RhdGljIHZv
aWQgb3NyV3JpdGVCYXJyaWVyKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25l
ciwgR1BSUmVnIHNjcmEKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb3duZXJJc1JlbWVtYmVy
ZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0aG91dEZlbmNlKG93bmVyKTsKIAogICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpPigm
dm0sIG93bmVyKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRlQmFycmllcikpLCBzY3JhdGNoKTsKICAgICBqaXQu
Y2FsbChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2YWVlNTU0MjczNTcyNmI2MDQxYTQ3NjgwYTM1
ZTM1NWU2MzQ5YmY4Li5hNTIzYjcwNjVlNTg3YmY0MDEzMmQ4ODhlNTgxNDE3Y2RlOWQzOWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTI5Myw3
ICsyOTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRv
VGhpcyhnbG9iYWxPYmplY3QsIE5vdFN0cmljdE1vZGUpKTsKIH0KQEAgLTMwMiw3ICszMDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpc1N0cmljdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9i
YWxPYmplY3QsIFN0cmljdE1vZGUpKTsKIH0KQEAgLTMxMSw3ICszMTEsNyBAQCBKU0FycmF5KiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT2JqZWN0KS50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtMzI0LDcgKzMy
NCw3IEBAIEpTQXJyYXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBy
ZXR1cm4gb3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVN
b2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKTsKIH0KIApAQCAt
MzMyLDcgKzMzMiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RDcmVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1Zh
bHVlIHByb3RvdHlwZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG90eXBlKTsKQEAgLTM1
MSw3ICszNTEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRl
T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUp
OwogfQogCkBAIC0zNTksNyArMzU5LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZVRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBpZiAoY29uc3RydWN0b3ItPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSAmJiBqc0Nhc3Q8
SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+Y2FuVXNlQWxsb2NhdGlvblByb2ZpbGUoKSkgewog
ICAgICAgICBhdXRvIHJhcmVEYXRhID0ganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rvcikt
PmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2ZpbGUoZ2xvYmFsT2JqZWN0LCBpbmxpbmVD
YXBhY2l0eSk7CkBAIC0zODgsNyArMzg4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZVByb21pc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmoKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3Ry
dWN0b3IoKSwgY29uc3RydWN0b3IsIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVjdHVyZSgpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKQEAgLTM5OSw3ICszOTks
NyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPmludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKCksIGNvbnN0cnVj
dG9yLCBnbG9iYWxPYmplY3QtPmludGVybmFsUHJvbWlzZVN0cnVjdHVyZSgpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKQEAgLTQxMCw3ICs0MTAsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBudWxs
cHRyLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JTdHJ1Y3R1cmUoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CkBAIC00MjEsNyArNDIxLDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2VuZXJhdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVj
dCwgbnVsbHB0ciwgY29uc3RydWN0b3IsIGdsb2JhbE9iamVjdC0+YXN5bmNHZW5lcmF0b3JTdHJ1
Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CkBAIC00
MzIsNyArNDMyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxPYmplY3RD
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVGFyZ2V0KTsK
ICAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRUYXJnZXQpOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNb2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gYmlnSW50T3AgPSBbXSAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiBy
aWdodCkgLT4gSlNCaWdJbnQqIHsKICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpyZW1haW5kZXIo
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CkBAIC00ODMsNyArNDgzLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdE5vdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSk7CkBAIC01MDEsNyArNTAxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpT
QmlnSW50KiB7CiAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZUFuZChnbG9iYWxPYmpl
Y3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTUxOCw3ICs1MTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0T3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQp
IC0+IEpTQmlnSW50KiB7CiAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZU9yKGdsb2Jh
bE9iamVjdCwgbGVmdCwgcmlnaHQpOwpAQCAtNTM1LDcgKzUzNSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRYb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBiaWdJbnRPcCA9IFtdIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJbnQqIHJp
Z2h0KSAtPiBKU0JpZ0ludCogewogICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmJpdHdpc2VYb3Io
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CkBAIC01NTIsNyArNTUyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdExTaGlmdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBiaWdJbnRPcCA9
IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJ
bnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewogICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmxlZnRT
aGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTU2OSw3ICs1NjksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIGJpZ0lu
dE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBK
U0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7CiAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6
c2lnbmVkUmlnaHRTaGlmdChnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTU4Niw3ICs1
ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0VVJT
aGlmdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBvcDEg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CkBAIC02MDMsNyArNjAzLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpTVmFsdWUg
b3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogICAgIEpTVmFsdWUgb3AyID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwpAQCAtNjE1LDcgKzYxNSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVEaXYoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gYmlnSW50T3AgPSBb
XSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50
KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpkaXZpZGUo
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CkBAIC02MzIsNyArNjMyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVBvdyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBiaWdJbnRPcCA9
IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNCaWdJ
bnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewogICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmV4cG9u
ZW50aWF0ZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTY0OSw3ICs2NDksNyBAQCBk
b3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aEFicyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSk7CkBAIC02NjIsNyArNjYyLDcgQEAgdWludDMyX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Bcml0aENsejMyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWQKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDEpOwpAQCAtNjc1LDcgKzY3NSw3IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkFyaXRoRlJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKQEAgLTY4
OSw3ICs2ODksNyBAQCBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aCMjY2FwaXRh
bGl6ZWROYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogeyBcCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOyBcCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOyBcCi0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsgXAorICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsgXAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsgXAog
ICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOyBcCiAgICAgZG91
YmxlIHJlc3VsdCA9IG9wMS50b051bWJlcihnbG9iYWxPYmplY3QpOyBcCkBAIC03MDMsNyArNzAz
LDcgQEAgZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhTcXJ0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1YKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgb3AxID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwpAQCAtNzE2LDcgKzcxNiw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhSb3VuZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
bkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CkBAIC03MjksNyArNzI5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aEZsb29yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTc0Miw3ICs3NDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQ2VpbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQXJndW1lbnQpOwpAQCAtNzU1LDcgKzc1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhUcnVuYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRBcmd1bWVudCk7CkBAIC03ODIsNyArNzgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKTsKQEAgLTgyNCw3ICs4MjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5VmFsQ2VsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkp
OwpAQCAtODcwLDcgKzg3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0QnlWYWxPYmplY3RJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIHJldHVybiBnZXRCeVZhbENlbGxJbnQoZ2xvYmFsT2JqZWN0LCB2bSwg
YmFzZSwgaW5kZXgpOwogfQpAQCAtODc5LDcgKzg3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBnZXRCeVZhbENlbGxJbnQoZ2xv
YmFsT2JqZWN0LCB2bSwgYmFzZSwgaW5kZXgpOwogfQpAQCAtODg4LDcgKzg4OCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtOTAyLDcgKzkwMiw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTeW1ib2woSlNHbG9i
YWxPYmplY3QqIGdsb2JhCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
bkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gYXNTeW1ib2woc3ltYm9sKS0+cHJpdmF0ZU5hbWUoKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGdldEJ5VmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgdm0sIGFzT2JqZWN0KGJhc2Up
LCBwcm9wZXJ0eU5hbWUpKTsKQEAgLTkxMiw3ICs5MTIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcHV0QnlWYWxJbnRlcm5hbDx0cnVl
LCBmYWxzZT4oZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZEJhc2UsIGVuY29kZWRQcm9wZXJ0eSwg
ZW5jb2RlZFZhbHVlKTsKIH0KQEAgLTkyMSw3ICs5MjEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcHV0QnlWYWxJbnRlcm5hbDxmYWxz
ZSwgZmFsc2U+KGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRCYXNlLCBlbmNvZGVkUHJvcGVydHks
IGVuY29kZWRWYWx1ZSk7CiB9CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHB1dEJ5VmFsSW50ZXJuYWw8dHJ1
ZSwgZmFsc2U+KGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmVuY29kZShjZWxsKSwgZW5jb2Rl
ZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwogfQpAQCAtOTM5LDcgKzkzOSw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHB1dEJ5VmFsSW50
ZXJuYWw8ZmFsc2UsIGZhbHNlPihnbG9iYWxPYmplY3QsIHZtLCBKU1ZhbHVlOjplbmNvZGUoY2Vs
bCksIGVuY29kZWRQcm9wZXJ0eSwgZW5jb2RlZFZhbHVlKTsKIH0KQEAgLTk0OCw3ICs5NDgsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBwdXRC
eVZhbENlbGxTdHJpbmdJbnRlcm5hbDx0cnVlLCBmYWxzZT4oZ2xvYmFsT2JqZWN0LCB2bSwgY2Vs
bCwgYXNTdHJpbmcoc3RyaW5nKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQpA
QCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENl
bGxTdHJpbmdOb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFsPGZhbHNlLCBmYWxzZT4oZ2xv
YmFsT2JqZWN0LCB2bSwgY2VsbCwgYXNTdHJpbmcoc3RyaW5nKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSkpOwogfQpAQCAtOTY2LDcgKzk2Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTeW1i
b2woc3ltYm9sKS0+cHJpdmF0ZU5hbWUoKTsKICAgICBwdXRCeVZhbENlbGxJbnRlcm5hbDx0cnVl
LCBmYWxzZT4oZ2xvYmFsT2JqZWN0LCB2bSwgY2VsbCwgcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKSk7CkBAIC05NzYsNyArOTc2LDcgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBh
c1N5bWJvbChzeW1ib2wpLT5wcml2YXRlTmFtZSgpOwogICAgIHB1dEJ5VmFsQ2VsbEludGVybmFs
PGZhbHNlLCBmYWxzZT4oZ2xvYmFsT2JqZWN0LCB2bSwgY2VsbCwgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CkBAIC05ODYsNyArOTg2LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIGlmIChpbmRleCA+
PSAwKSB7CiAgICAgICAgIG9iamVjdC0+cHV0QnlJbmRleElubGluZShnbG9iYWxPYmplY3QsIGlu
ZGV4LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgdHJ1ZSk7CkBAIC0xMDAyLDcgKzEw
MDIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJv
dW5kc05vblN0cmljdChKU0dsb2JhbE9iamVjdCogZwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
CiAgICAgaWYgKGluZGV4ID49IDApIHsKICAgICAgICAgb2JqZWN0LT5wdXRCeUluZGV4SW5saW5l
KGdsb2JhbE9iamVjdCwgaW5kZXgsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBmYWxz
ZSk7CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdChKU0dsb2JhbE9iamVjdAogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gSlNWYWx1ZShKU1ZhbHVl
OjpFbmNvZGVBc0RvdWJsZSwgdmFsdWUpOwogICAgIApAQCAtMTAzNiw3ICsxMDM2LDcgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNO
b25TdHJpY3QoSlNHbG9iYWxPYmoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpTVmFs
dWUganNWYWx1ZSA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIHZhbHVlKTsKICAg
ICAKQEAgLTEwNTQsNyArMTA1NCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRE
b3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KEpTR2xvYmFsCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5j
b2RlQXNEb3VibGUsIHZhbHVlKTsKIApAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25T
dHJpY3QoSlNHbG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0g
SlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdmFsdWUpOwogCkBAIC0xMDg4LDcgKzEw
ODgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
CiAgICAgcHV0QnlWYWxJbnRlcm5hbDx0cnVlLCB0cnVlPihnbG9iYWxPYmplY3QsIHZtLCBlbmNv
ZGVkQmFzZSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwogfQpAQCAtMTA5Nyw3ICsx
MDk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3Ry
aWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IAogICAgIHB1dEJ5VmFsSW50ZXJuYWw8ZmFsc2UsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIGVu
Y29kZWRCYXNlLCBlbmNvZGVkUHJvcGVydHksIGVuY29kZWRWYWx1ZSk7CiB9CkBAIC0xMTA2LDcg
KzExMDYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxs
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgCiAgICAgcHV0QnlWYWxJbnRlcm5hbDx0cnVlLCB0cnVlPihnbG9iYWxPYmplY3QsIHZtLCBK
U1ZhbHVlOjplbmNvZGUoY2VsbCksIGVuY29kZWRQcm9wZXJ0eSwgZW5jb2RlZFZhbHVlKTsKIH0K
QEAgLTExMTUsNyArMTExNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdENlbGxOb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZhbEludGVybmFsPGZhbHNlLCB0cnVlPihnbG9iYWxP
YmplY3QsIHZtLCBKU1ZhbHVlOjplbmNvZGUoY2VsbCksIGVuY29kZWRQcm9wZXJ0eSwgZW5jb2Rl
ZFZhbHVlKTsKIH0KQEAgLTExMjQsNyArMTEyNCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpbmdTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFsPHRy
dWUsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIGNlbGwsIGFzU3RyaW5nKHN0cmluZyksIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KQEAgLTExMzMsNyArMTEzMyw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpbmdOb25TdHJpY3Qo
SlNHbG9iYWxPYmplY3QqIGdsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHB1dEJ5VmFsQ2Vs
bFN0cmluZ0ludGVybmFsPGZhbHNlLCB0cnVlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBhc1N0
cmluZyhzdHJpbmcpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CkBAIC0xMTQy
LDcgKzExNDIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RD
ZWxsU3ltYm9sU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGFzU3ltYm9sKHN5bWJvbCktPnByaXZhdGVOYW1l
KCk7CiAgICAgcHV0QnlWYWxDZWxsSW50ZXJuYWw8dHJ1ZSwgdHJ1ZT4oZ2xvYmFsT2JqZWN0LCB2
bSwgY2VsbCwgcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CkBA
IC0xMTUyLDcgKzExNTIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RDZWxsU3ltYm9sTm9uU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbAogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGFzU3ltYm9sKHN5bWJvbCktPnByaXZh
dGVOYW1lKCk7CiAgICAgcHV0QnlWYWxDZWxsSW50ZXJuYWw8ZmFsc2UsIHRydWU+KGdsb2JhbE9i
amVjdCwgdm0sIGNlbGwsIHByb3BlcnR5TmFtZSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkpOwpAQCAtMTE2Miw3ICsxMTYyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QoSlNHbG9iYWxPYmplY3QKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIGlmIChpbmRleCA+PSAwKSB7CiAgICAgICAgIG9iamVjdC0+cHV0
RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSksIDAsIFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cpOwogICAgICAgICByZXR1cm47CkBA
IC0xMTc2LDcgKzExNzYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChKU0dsb2JhbE9iagogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICBpZiAoaW5kZXggPj0gMCkgewogICAgICAgICBvYmplY3QtPnB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
KTsKQEAgLTExOTEsNyArMTE5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQXJyYXlQdXNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICAKICAgICBhcnJheS0+cHVzaElubGluZShnbG9iYWxPYmplY3QsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGFycmF5LT5sZW5ndGgoKSkpOwpAQCAtMTIwMSw3ICsxMjAxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2hEb3VibGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIGFycmF5LT5w
dXNoSW5saW5lKGdsb2JhbE9iamVjdCwgSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwg
dmFsdWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGFycmF5LT5sZW5n
dGgoKSkpOwpAQCAtMTIxMSw3ICsxMjExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIC8vIFdlIGFzc3VtZSB0aGF0IG11bHRpcGxlIEpTQXJyYXk6OnB1c2ggY2FsbHMg
d2l0aCBBcnJheVdpdGhJbnQzMi9BcnJheVdpdGhDb250aWd1b3VzIGRvIG5vdCBjYXVzZSBKUyB0
cmFwcy4KQEAgLTEyMzYsNyArMTIzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlTXVsdGlwbGUoSlNHbG9iYWxPYmplY3QqIGdsCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAvLyBXZSBhc3N1bWUgdGhhdCBtdWx0aXBsZSBKU0FycmF5OjpwdXNoIGNhbGxzIHdp
dGggQXJyYXlXaXRoRG91YmxlIGRvIG5vdCBjYXVzZSBKUyB0cmFwcy4KQEAgLTEyNTcsNyArMTI1
Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNBCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFycmF5LT5wb3AoZ2xvYmFsT2JqZWN0KSk7CiB9
CkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aChKU0dsb2JhbE9iamVjdCogZwogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgCiAgICAgYXJyYXktPmJ1dHRlcmZseSgpLT5zZXRQdWJsaWNMZW5ndGgo
YXJyYXktPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSArIDEpOwogICAgIApAQCAtMTI3OSw3
ICsxMjc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBF
eGVjU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICAKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwT2JqZWN0LT5leGVjSW5s
aW5lKGdsb2JhbE9iamVjdCwgYXJndW1lbnQpKTsKIH0KQEAgLTEyOTAsNyArMTI5MCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlYyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCiAgICAgSlNWYWx1ZSBhcmd1bWVu
dCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQXJndW1lbnQpOwpAQCAtMTMwOCw3ICsxMzA4LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC0xMzMxLDcgKzEzMzEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNOb25HbG9iYWxPclN0
aWNreShKU0dsb2JhbE9iamVjdAogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMTM1NSw3ICsxMzU1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBNYXRjaEZhc3RTdHJpbmcoSlNH
bG9iYWxPYmplY3QqIGdsb2IKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBpZiAoIXJlZ0V4cE9i
amVjdC0+cmVnRXhwKCktPmdsb2JhbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlZ0V4cE9iamVjdC0+ZXhlY0lubGluZShnbG9iYWxPYmplY3QsIGFyZ3VtZW50KSk7CkBAIC0x
MzY4LDcgKzEzNjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJl
Z0V4cE1hdGNoRmFzdEdsb2JhbFN0cmluZyhKU0dsb2JhbE9iamVjdAogCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMTM5
Nyw3ICsxMzk3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QYXJz
ZUludE5vUmFkaXhHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG8KIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCiAgICAgcmV0dXJuIHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSksIFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CiAgICAgICAgIC8vIFRoaXMgdmVyc2lv
biBpcyBhcyBpZiByYWRpeCB3YXMgdW5kZWZpbmVkLiBIZW5jZSwgdW5kZWZpbmVkLnRvTnVtYmVy
KCkgPT09IDAuCkBAIC0xNDA5LDcgKzE0MDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblBhcnNlSW50U3RyaW5nTm9SYWRpeChKU0dsb2JhbE9iamVjdCogZ2xvYgog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IHN0cmluZy0+dmlld1dpdGhVbmRlcmx5
aW5nU3RyaW5nKGdsb2JhbE9iamVjdCk7CkBAIC0xNDIzLDcgKzE0MjMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBhcnNlSW50U3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgYXV0byB2aWV3V2l0aFN0cmluZyA9IHN0cmluZy0+
dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGdsb2JhbE9iamVjdCk7CkBAIC0xNDM2LDcgKzE0MzYs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBhcnNlSW50R2VuZXJp
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBy
ZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwg
WyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKICAgICAgICAgcmV0dXJuIHBhcnNlSW50UmVzdWx0KHBh
cnNlSW50KHZpZXcsIHJhZGl4KSk7CkBAIC0xNDQ5LDcgKzE0NDksNyBAQCBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZwogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gcmVnRXhwT2Jq
ZWN0LT50ZXN0SW5saW5lKGdsb2JhbE9iamVjdCwgaW5wdXQpOwogfQpAQCAtMTQ2MCw3ICsxNDYw
LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWdFeHBPYmoKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQXJndW1lbnQpOwog
CkBAIC0xNDc2LDcgKzE0NzYsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdF
eHBUZXN0R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogICAgIAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTE0
OTksNyArMTQ5OSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdWJCaWdJbnQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICAKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihv
cDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIp
OwpAQCAtMTUxMSw3ICsxNTExLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dE5vdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCiAgICAgSlNCaWdJbnQqIG9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihv
cDEpOwogCkBAIC0xNTIyLDcgKzE1MjIsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTXVsQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNC
aWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJ
bnQqPihvcDIpOwpAQCAtMTUzNCw3ICsxNTM0LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk1vZEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8K
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpz
Q2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2Fz
dDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNTQ2LDcgKzE1NDYsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGl2QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVy
YW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5k
ID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKQEAgLTE1NTgsNyArMTU1OCw3IEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3dCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKiBvCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
bkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBKU0JpZ0ludCog
bGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdo
dE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwpAQCAtMTU3MCw3ICsxNTcwLDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdEFuZEJpZ0ludChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNCaWdJ
bnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCog
cmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKQEAgLTE1ODIsNyArMTU4Miw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRMU2hpZnRCaWdJbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpT
QmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJ
bnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNTk0LDcgKzE1
OTQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWRkQmlnSW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
CiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAg
ICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKQEAgLTE2
MDYsNyArMTYwNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRSU2hpZnRC
aWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICAKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihv
cDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIp
OwpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJp
dE9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0Jp
Z0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0lu
dCo+KG9wMik7CkBAIC0xNjMwLDcgKzE2MzAsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQml0WG9yQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8
SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNC
aWdJbnQqPihvcDIpOwpAQCAtMTY0Miw3ICsxNjQyLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVx
dWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCBvcDEsIG9wMik7CiB9CkBAIC0xNjUxLDcg
KzE2NTEsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TYW1lVmFsdWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVgogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICByZXR1cm4gc2FtZVZhbHVlKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGFyZzEp
LCBKU1ZhbHVlOjpkZWNvZGUoYXJnMikpOwogfQpAQCAtMTY2MCw3ICsxNjYwLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1ByaW1pdGl2ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvUHJpbWl0aXZlKGdsb2JhbE9i
amVjdCkpOwogfQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Ub051bWJlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpKTsKIH0KQEAg
LTE2NzgsNyArMTY3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlWYWxXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC0xNzE4
LDcgKzE3MTgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlz
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIHB1dFdpdGhUaGlzPHRydWU+KGdsb2JhbE9iamVjdCwgZW5jb2RlZEJhc2UsIGVuY29k
ZWRUaGlzLCBlbmNvZGVkVmFsdWUsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIGltcGwpKTsKIH0K
QEAgLTE3MjcsNyArMTcyNyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
V2l0aFRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIHB1dFdpdGhUaGlzPGZhbHNlPihnbG9iYWxPYmplY3QsIGVuY29kZWRC
YXNlLCBlbmNvZGVkVGhpcywgZW5jb2RlZFZhbHVlLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBp
bXBsKSk7CiB9CkBAIC0xNzM2LDcgKzE3MzYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0xNzQ5LDcgKzE3NDks
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRlbnRpZmllciBwcm9w
ZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KS50b1Byb3BlcnR5S2V5KGds
b2JhbE9iamVjdCk7CkBAIC0xNzcyLDcgKzE3NzIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
TwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFByb3BlcnR5KS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0xNzg1LDcg
KzE3ODUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CkBA
IC0xNzk4LDcgKzE3OTgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0
YVByb3BlcnR5U3RyaW5nSWRlbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgZGVmaW5lRGF0YVByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0sIGJhc2UsIElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSksIGF0dHJpYnV0ZXMpOwogfQogCkBAIC0xODA2LDcgKzE4MDYsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgZGVmaW5lRGF0YVByb3BlcnR5
KGdsb2JhbE9iamVjdCwgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHktPnBy
aXZhdGVOYW1lKCkpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7
CiB9CiAKQEAgLTE4MjQsNyArMTgyNCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWZpbmVBY2Nlc3NvclByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
UHJvcGVydHkpLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTE4MzYsNyArMTgzNiw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKQEAgLTE4NDgs
NyArMTg0OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclBy
b3BlcnR5U3RyaW5nSWRlbnQoSlNHbG9iYWxPYmplY3QqIGdsCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0sIGJhc2UsIElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5KSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMp
OwogfQogCkBAIC0xODU2LDcgKzE4NTYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgZGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShnbG9iYWxPYmplY3Qs
IHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKHByb3BlcnR5LT5wcml2YXRlTmFtZSgpKSwg
Z2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOwogfQogCkBAIC0xODY0LDcgKzE4NjQsNyBAQCBj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogYQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oY29uc3RydWN0QXJyYXkoZ2xvYmFsT2JqZWN0LCBhcnJh
eVN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KGJ1ZmZlciksIHNpemUpKTsKIH0KQEAg
LTE4NzMsNyArMTg3Myw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RW1wdHlB
cnJheShWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0CiB7CiAgICAgVk0mIHZt
ID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgCiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oSlNBcnJheTo6Y3JlYXRlKHZtLCBh
cnJheVN0cnVjdHVyZSkpOwogfQpAQCAtMTg4Miw3ICsxODgyLDcgQEAgY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWShzaXplIDwgMCkpCkBAIC0xOTAwLDcg
KzE5MDAsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVB
bmRIaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKFVOTElL
RUxZKHNpemUgPCAwKSkKQEAgLTE5MjAsNyArMTkyMCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcihWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIGFycmF5
U3RyCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgQVNTRVJUKCFhcnJheVN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSk7CiAgICAgYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5ID0ganNDYXN0PEpTSW1tdXRh
YmxlQnV0dGVyZmx5Kj4oaW1tdXRhYmxlQnV0dGVyZmx5Q2VsbCk7CiAgICAgQVNTRVJUKGFycmF5
U3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSA9PSBpbW11dGFibGVCdXR0ZXJmbHktPmluZGV4aW5n
TW9kZSgpIHx8IGhhc0FueUFycmF5U3RvcmFnZShhcnJheVN0cnVjdHVyZS0+aW5kZXhpbmdNb2Rl
KCkpKTsKQEAgLTE5MzUsNyArMTkzNSw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3SW50OEFycmF5V2l0aFNpemUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gbmV3
VHlwZWRBcnJheVdpdGhTaXplPEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1
cmUsIGxlbmd0aCwgdmVjdG9yKTsKIH0KIApAQCAtMTk0NCw3ICsxOTQ0LDcgQEAgY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4oZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CiB9CiAKQEAg
LTE5NTMsNyArMTk1Myw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50MTZB
cnJheVdpdGhTaXplKAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIG5ld1R5cGVkQXJy
YXlXaXRoU2l6ZTxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVjdHVyZSwgbGVu
Z3RoLCB2ZWN0b3IpOwogfQogCkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOwogfQogCkBAIC0xOTcx
LDcgKzE5NzEsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludDMyQXJyYXlX
aXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdUeXBlZEFycmF5V2l0
aFNpemU8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwg
dmVjdG9yKTsKIH0KIApAQCAtMTk4MCw3ICsxOTgwLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKIH0KIApAQCAtMTk4OSw3ICsx
OTg5LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNp
emUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gbmV3VHlwZWRBcnJheVdpdGhTaXpl
PEpTVWludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rv
cik7CiB9CiAKQEAgLTE5OTgsNyArMTk5OCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CiB9CiAKQEAgLTIwMDcsNyArMjAwNyw3
IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRo
U2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdUeXBlZEFycmF5V2l0aFNp
emU8SlNVaW50OENsYW1wZWRBcnJheT4oZ2xvYmFsT2JqZWN0LCB2bSwgc3RydWN0dXJlLCBsZW5n
dGgsIHZlY3Rvcik7CiB9CiAKQEAgLTIwMTYsNyArMjAxNiw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsK
IH0KIApAQCAtMjAyNSw3ICsyMDI1LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdVaW50MTZBcnJheVdpdGhTaXplKAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIG5l
d1R5cGVkQXJyYXlXaXRoU2l6ZTxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHZtLCBzdHJ1
Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKIH0KIApAQCAtMjAzNCw3ICsyMDM0LDcgQEAgY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+KGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOwog
fQogCkBAIC0yMDQzLDcgKzIwNDMsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d1VpbnQzMkFycmF5V2l0aFNpemUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gbmV3
VHlwZWRBcnJheVdpdGhTaXplPEpTVWludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVj
dHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBAIC0yMDUyLDcgKzIwNTIsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KAogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50MzJBcnJheT4oZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CiB9
CiAKQEAgLTIwNjEsNyArMjA2MSw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gbmV3
VHlwZWRBcnJheVdpdGhTaXplPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHZtLCBzdHJ1
Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKIH0KIApAQCAtMjA3MCw3ICsyMDcwLDcgQEAgY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQoCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0MzJBcnJheT4o
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7
CiB9CiAKQEAgLTIwNzksNyArMjA3OSw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3RmxvYXQ2NEFycmF5V2l0aFNpemUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4g
bmV3VHlwZWRBcnJheVdpdGhTaXplPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHZtLCBz
dHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKIH0KIApAQCAtMjA4OCw3ICsyMDg4LDcgQEAgY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQo
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJh
eT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0
KSk7CiB9CiAKQEAgLTIwOTYsNyArMjA5Niw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSoKIHsK
ICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShpbml0
aWFsVmFsdWVFbmNvZGVkKTsKICAgICBBU1NFUlQoaW5pdGlhbFZhbHVlID09IGpzVW5kZWZpbmVk
KCkgfHwgaW5pdGlhbFZhbHVlID09IGpzVERaVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTTGV4aWNh
bEVudmlyb25tZW50OjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgc2NvcGUsIHRhYmxlLCBpbml0aWFs
VmFsdWUpOwpAQCAtMjEwNiw3ICsyMTA2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cyhWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHMKIHsK
ICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBEaXJlY3RBcmd1bWVudHMqIHJlc3VsdCA9IERpcmVjdEFyZ3VtZW50czo6
Y3JlYXRlKAogICAgICAgICB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHN0ZDo6bWF4KGxlbmd0aCwg
bWluQ2FwYWNpdHkpKTsKICAgICAvLyBUaGUgY2FsbGVyIHdpbGwgc3RvcmUgdG8gdGhpcyBvYmpl
Y3Qgd2l0aG91dCBiYXJyaWVycy4gTW9zdCBsaWtlbHksIGF0IHRoaXMgcG9pbnQsIHRoaXMgaXMK
QEAgLTIxMjAsNyArMjEyMCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVh
dGVTY29wZWRBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICAvLyBXZSBjb3VsZCBwYXNzIHRoZSBTY29wZWRBcmd1bWVudHNU
YWJsZSogYXMgYW4gYXJndW1lbnQuIFdlIGN1cnJlbnRseSBkb24ndCBiZWNhdXNlIEkKICAgICAv
LyBkaWRuJ3QgZmVlbCBsaWtlIGNoYW5naW5nIHRoZSBtYXggbnVtYmVyIG9mIGFyZ3VtZW50cyBm
b3IgYSBzbG93IHBhdGggY2FsbCBmcm9tIDYgdG8gNy4KQEAgLTIxMzQsNyArMjEzNCw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gQ2xv
bmVkQXJndW1lbnRzOjpjcmVhdGVCeUNvcHlpbmdGcm9tKAogICAgICAgICBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgYXJndW1lbnRTdGFydCwgbGVuZ3RoLCBjYWxsZWUpOwogfQpAQCAtMjE0Myw3
ICsyMTQzLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFy
Z3VtZW50c0R1cmluZ0V4aXQoVk0qIHZtUG9pbnRlciwgSW4KIHsKICAgICBWTSYgdm0gPSAqdm1Q
b2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAg
ICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgCkBAIC0yMTczLDcgKzIx
NzMsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1l
bnRzRHVyaW5nRXhpdChWTSogdm1Qb2ludGVyLCBJbgogewogICAgIFZNJiB2bSA9ICp2bVBvaW50
ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIERl
ZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKQEAgLTIyMDIsNyArMjIwMiw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVSZXN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVyU3RydWN0dXJl
KCk7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoUmVnaXN0ZXIpID09IHNpemVvZihKU1ZhbHVl
KSwgIlRoaXMgaXMgYSBzdHJvbmcgYXNzdW1wdGlvbiBoZXJlLiIpOwpAQCAtMjIxNCw3ICsyMjE0
LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0SXNPYmplY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAg
QVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgb2JqZWN0KSk7CiAgICAgCkBAIC0y
MjI5LDcgKzIyMjksNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RJc0Z1
bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBvYmplY3QpKTsK
ICAgICAKQEAgLTIyNDQsNyArMjI0NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25UeXBlT2ZPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0s
IG9iamVjdCkpOwogICAgIApAQCAtMjI1OSw3ICsyMjU5LDcgQEAgaW50MzJfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblR5cGVPZk9iamVjdEFzVHlwZW9mVHlwZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNP
YmplY3QqPih2bSwgb2JqZWN0KSk7CiAgICAgCkBAIC0yMjc0LDcgKzIyNzQsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRlU2ltcGxlUHJvcGVydHlTdG9yYWdlV2l0aElu
aXRpYWxDYXBhY2l0eShWTQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KAogICAgICAgICBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIDAs
IDAsIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSwgZmFsc2UsIDApKTsKQEAgLTIyODQsNyArMjI4
NCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWxsb2NhdGVTaW1wbGVQcm9wZXJ0
eVN0b3JhZ2UoVk0qIHZtUG9pbnRlciwgc2l6ZV90CiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRl
cjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oCiAgICAgICAgIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0
aWFsaXplZCh2bSwgMCwgMCwgbmV3U2l6ZSwgZmFsc2UsIDApKTsKQEAgLTIyOTQsNyArMjI5NCw3
IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWxsb2NhdGVDb21wbGV4UHJvcGVydHlT
dG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eShWCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQoIW9i
amVjdC0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KApAQCAtMjMwNSw3ICsyMzA1LDcgQEAgY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZUNvbXBsZXhQcm9wZXJ0eVN0b3JhZ2UoVk0qIHZtUG9p
bnRlciwgSlNPYmoKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPigKICAgICAgICAgb2JqZWN0LT5hbGxvY2F0ZU1vcmVPdXRPZkxpbmVTdG9yYWdlKHZtLCBv
YmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1NpemUpKTsKQEAg
LTIzMTUsNyArMjMxNSw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRW5zdXJlSW50
MzIoVk0qIHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50
ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIGlm
ICghY2VsbC0+aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzI5LDcgKzIzMjks
NyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkVuc3VyZURvdWJsZShWTSogdm1Qb2lu
dGVyLCBKU0NlbGwqIGNlbGwpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgaWYgKCFjZWxsLT5pc09i
amVjdCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIzNDMsNyArMjM0Myw3IEBAIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRW5zdXJlQ29udGlndW91cyhWTSogdm1Qb2ludGVyLCBKU0Nl
bGwqIGNlbGwpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgaWYgKCFjZWxsLT5pc09iamVjdCgpKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTIzNTcsNyArMjM1Nyw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKFZNKiB2bVBvaW50ZXIsIEpTQ2VsbCogY2Vs
bCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMjM3MSw3ICsyMzcxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8K
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlVmFsdWUpOwpAQCAtMjM5MSw3ICsyMzkxLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBiYXNlQ2VsbC0+dG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoc3Vic2NyaXB0IDwgMCkpIHsK
ICAgICAgICAgLy8gR28gdGhlIHNsb3dlc3Qgd2F5IHBvc3NpYmxlIGJlY2F1c2UgbmVnYXRpdmUg
aW5kaWNlcyBkb24ndCB1c2UgaW5kZXhlZCBzdG9yYWdlLgpAQCAtMjQwNCw3ICsyNDA0LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC0yNDIxLDcgKzI0MjEsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2VsbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNPYmplY3QqIGJhc2UgPSBjZWxsLT50b09iamVj
dChnbG9iYWxPYmplY3QpOwpAQCAtMjQzNCw3ICsyNDM0LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRvSW5kZXhTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
aW50MzIKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBqc1N0cmluZyh2bSwgSWRlbnRp
Zmllcjo6ZnJvbSh2bSwgaW5kZXgpLnN0cmluZygpKTsKIH0KIApAQCAtMjQ0Miw3ICsyNDQyLDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cFdpdGhMYXN0SW5kZXgo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgUmVn
RXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOwogICAgIEFTU0VS
VChyZWdleHAtPmlzVmFsaWQoKSk7CkBAIC0yNDUzLDcgKzI0NTMsNyBAQCBTdHJpbmdJbXBsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmVSb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTUwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gc3RyaW5nLT52YWx1
ZShnbG9iYWxPYmplY3QpLmltcGwoKTsKIH0KQEAgLTI0NjIsNyArMjQ2Miw3IEBAIEpTU3RyaW5n
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
bkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CkBAIC0yNDgxLDcgKzI0ODEsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nU3Vic3RyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4ganNTdWJzdHJp
bmcodm0sIGdsb2JhbE9iamVjdCwganNDYXN0PEpTU3RyaW5nKj4oY2VsbCksIGZyb20sIHNwYW4p
OwogfQpAQCAtMjQ5MCw3ICsyNDkwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blN0cmluZ1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGNlbGwpOwog
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEpTU3RyaW5nOjpNYXhMZW5n
dGgpIDw9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSksICIiKTsKQEAgLTI1MDEsNyArMjUwMSw3IEBAIEpTU3RyaW5nKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRvTG93ZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
U3RyCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIApAQCAtMjUyMCw3ICsyNTIwLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbnQzMlRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDMy
X3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCkBAIC0yNTM2LDcgKzI1MzYsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkludDUyVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50NjRf
dAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKQEAgLTI1NTIsNyArMjU1Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRG91YmxlVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91Ymxl
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIApAQCAtMjU2OCw3ICsyNTY4LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25JbnQzMlRvU3RyaW5nV2l0aFZhbGlkUmFkaXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8K
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGludDMyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRpeCkpOwogfQpAQCAtMjU3Nyw3ICsyNTc3LDcg
QEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25JbnQ1MlRvU3RyaW5nV2l0aFZhbGlkUmFk
aXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGludDUyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRp
eCkpOwogfQpAQCAtMjU4Niw3ICsyNTg2LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25Eb3VibGVUb1N0cmluZ1dpdGhWYWxpZFJhZGl4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG51
bWJlclRvU3RyaW5nKHZtLCB2YWx1ZSwgcmFkaXgpKTsKIH0KQEAgLTI1OTUsNyArMjU5NSw3IEBA
IEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZyhW
TSogdm1Qb2ludGVyLCBpbnQzMl90IGNoCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcmV0dXJuIGpz
U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKHZtLCBzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKSk7
CiB9CkBAIC0yNjA0LDcgKzI2MDQsNyBAQCBTeW1ib2wqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3U3ltYm9sKFZNKiB2bVBvaW50ZXIpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gU3ltYm9s
OjpjcmVhdGUodm0pOwogfQpAQCAtMjYxMyw3ICsyNjEzLDcgQEAgU3ltYm9sKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhEZXNjcmlwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIFN0cmluZyBzdHJpbmcgPSBkZXNjcmlwdGlvbi0+dmFsdWUoZ2xv
YmFsT2JqZWN0KTsKQEAgLTI2MjYsNyArMjYyNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdTdHJpbmdPYmplY3QoVk0qIHZtUG9pbnRlciwgSlNTdHJpbmcqIHN0cmluZywK
IHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUodm0sIHN0
cnVjdHVyZSwgc3RyaW5nKTsKIH0KQEAgLTI2MzUsNyArMjYzNSw3IEBAIEpTU3RyaW5nKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRvU3RyaW5nT25DZWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZShj
ZWxsKS50b1N0cmluZyhnbG9iYWxPYmplY3QpOwogfQpAQCAtMjY0NCw3ICsyNjQ0LDcgQEAgSlNT
dHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZSh2YWx1ZSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTI2NTMs
NyArMjY1Myw3IEBAIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxTdHJpbmdD
b25zdHJ1Y3Rvck9uQ2VsbChKU0dsb2JhbE9iamVjdCogZ2xvCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIHJldHVybiBzdHJpbmdDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIGNlbGwpOwogfQpA
QCAtMjY2Miw3ICsyNjYyLDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2Fs
bFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCiAgICAgcmV0dXJuIHN0cmluZ0NvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgSlNW
YWx1ZTo6ZGVjb2RlKHZhbHVlKSk7CiB9CkBAIC0yNjcxLDcgKzI2NzEsNyBAQCBKU1N0cmluZyog
SklUX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNTdHJpbgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4ganNTdHJpbmco
Z2xvYmFsT2JqZWN0LCBsZWZ0LCByaWdodCk7CiB9CkBAIC0yNjgwLDcgKzI2ODAsNyBAQCBKU1N0
cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNTdHJpbgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4ganNT
dHJpbmcoZ2xvYmFsT2JqZWN0LCBhLCBiLCBjKTsKIH0KQEAgLTI2ODksNyArMjY4OSw3IEBAIEpT
U3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0ckNhdDIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoIUpTVmFsdWU6OmRlY29k
ZShhKS5pc1N5bWJvbCgpKTsKQEAgLTI3MDYsNyArMjcwNiw3IEBAIEpTU3RyaW5nKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblN0ckNhdDMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoIUpTVmFsdWU6OmRlY29kZShhKS5pc1N5bWJvbCgp
KTsKQEAgLTI3MjYsNyArMjcyNiw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRmlu
ZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZShWTSogdm1Qb2ludGVyLCBFbmNvZGVkCiB7CiAgICAg
Vk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwog
ICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0
YWJsZUluZGV4KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CkBAIC0yNzQyLDcgKzI3NDIsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blN3aXRjaFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXplX3QgdAogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICBTdHJpbmdJbXBsKiBzdHJJbXBsID0gc3RyaW5nLT52YWx1ZShnbG9iYWxP
YmplY3QpLmltcGwoKTsKQEAgLTI3NTYsNyArMjc1Niw3IEBAIGludDMyX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Td2l0Y2hTdHJpbmdBbmRHZXRCcmFuY2hPZmZzZXQoSlNHbG9iYWxPYmplY3Qq
IGdsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIFN0cmluZ0ltcGwqIHN0ckltcGwgPSBzdHJpbmctPnZhbHVl
KGdsb2JhbE9iamVjdCkuaW1wbCgpOwpAQCAtMjc5MCw3ICsyNzkwLDcgQEAgdWludHB0cl90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0xlc3MoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGNvZGVQb2ludENv
bXBhcmVMZXNzVGhhbihhc1N0cmluZyhhKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSwgYXNTdHJpbmco
YiktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwogfQpAQCAtMjc5OSw3ICsyNzk5LDcgQEAgdWludHB0
cl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0xlc3NFcShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuICFjb2Rl
UG9pbnRDb21wYXJlTGVzc1RoYW4oYXNTdHJpbmcoYiktPnZhbHVlKGdsb2JhbE9iamVjdCksIGFz
U3RyaW5nKGEpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKIH0KQEAgLTI4MDgsNyArMjgwOCw3IEBA
IHVpbnRwdHJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdHcmVhdGVyKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVy
biBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oYXNTdHJpbmcoYiktPnZhbHVlKGdsb2JhbE9iamVj
dCksIGFzU3RyaW5nKGEpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKIH0KQEAgLTI4MTcsNyArMjgx
Nyw3IEBAIHVpbnRwdHJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdHcmVh
dGVyRXEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAg
IHJldHVybiAhY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGFzU3RyaW5nKGEpLT52YWx1ZShnbG9i
YWxPYmplY3QpLCBhc1N0cmluZyhiKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CiB9CkBAIC0yODI2
LDcgKzI4MjYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTm90aWZ5V3JpdGUoVk0q
IHZtUG9pbnRlciwgV2F0Y2hwb2ludFNldCogc2V0KQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50
ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgc2V0LT50
b3VjaCh2bSwgIkV4ZWN1dGVkIE5vdGlmeVdyaXRlIik7CiB9CkBAIC0yODM1LDcgKzI4MzUsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJn
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIHRocm93U3RhY2tPdmVyZmxvd0Vy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogfQpAQCAtMjg0NCw3ICsyODQ0LDcgQEAgaW50MzJf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVPZlZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYXJndW1l
bnRzID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudHMpOwogICAgIAogICAgIHJldHVy
biBzaXplT2ZWYXJhcmdzKGdsb2JhbE9iamVjdCwgYXJndW1lbnRzLCBmaXJzdFZhckFyZ09mZnNl
dCk7CkBAIC0yODU0LDcgKzI4NTQsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
SGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYgogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSk7CkBAIC0yODc1
LDcgKzI4NzUsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTnVtYmVySXNJbnRl
Z2VyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgcmV0dXJuIE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKEpTVmFsdWU6OmRl
Y29kZSh2YWx1ZSkpOwogfQogCkBAIC0yODgzLDcgKzI4ODMsNyBAQCBpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJyYXlJbmRleE9mU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBpbnQzMl90IGxlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGljTGVu
Z3RoKCk7CkBAIC0yOTA4LDcgKzI5MDgsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJyYXlJbmRleE9mVmFsdWVJbnQzMk9yQ29udGlndW91cyhKU0dsb2JhbE9iamVjdAogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgSlNWYWx1ZSBzZWFyY2hFbGVtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CkBAIC0yOTMxLDcgKzI5MzEsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJyYXlJbmRleE9mVmFsdWVEb3VibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIHNlYXJjaEVsZW1lbnQgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKIApAQCAtMjk1Myw3ICsyOTUzLDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkxvYWRWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGludDMyX3QgZmkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYXJndW1lbnRzID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudHMpOwogICAgIAogICAgIGxvYWRWYXJhcmdz
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIoZmlyc3RFbGVtZW50RGVz
dCksIGFyZ3VtZW50cywgb2Zmc2V0LCBsZW5ndGgpOwpAQCAtMjk3OCw3ICsyOTc4LDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTQzo6
c3RyaW5nRnJvbUNoYXJDb2RlKGdsb2JhbE9iamVjdCwgb3AxKTsKIH0KIApAQCAtMjk4Niw3ICsy
OTg2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdGcm9t
Q2hhckNvZGVVbnR5cGVkKEpTR2xvYmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
SlNWYWx1ZSBjaGFyVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBp
bnQzMl90IGNoSW50ID0gY2hhclZhbHVlLnRvVUludDMyKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0M6OnN0cmluZ0Zyb21DaGFyQ29kZShnbG9iYWxPYmplY3Qs
IGNoSW50KSk7CkBAIC0zMDA5LDcgKzMwMDksNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld1Jhd09iamVjdChWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaQog
ewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCiAgICAgaWYgKCFidXR0ZXJmbHkKICAgICAgICAgJiYgKHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKSkpIHsKQEAgLTMwMzEsNyArMzAzMSw3IEBAIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5KFZNKiB2bVBvaW50ZXIsIFN0cnVj
dHVyZSoKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBpZiAoIWJ1dHRlcmZseSkgewogICAgICAgICBi
dXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKQEAgLTMwNDYsNyArMzA0Niw3IEBAIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4
aW5nSGVhZGVyQW5kVmVjdG9yCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBJbmRleGluZ0hlYWRlciBoZWFk
ZXI7CiAgICAgaGVhZGVyLnNldFZlY3Rvckxlbmd0aChsZW5ndGgpOwpAQCAtMzA2OCw3ICszMDY4
LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNwcmVhZFNs
b3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEVuY29kZWRKU1ZhbHVl
KiB2YWx1ZXMgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KGJ1ZmZlcik7CkBAIC0zMTI2
LDcgKzMxMjYsNyBAQCBKU0NlbGwqIG9wZXJhdGlvbkNyZWF0ZUZpeGVkQXJyYXkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKEpT
Rml4ZWRBcnJheSogcmVzdWx0ID0gSlNGaXhlZEFycmF5Ojp0cnlDcmVhdGUodm0sIHZtLmZpeGVk
QXJyYXlTdHJ1Y3R1cmUuZ2V0KCksIGxlbmd0aCkpCkBAIC0zMTQwLDcgKzMxNDAsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ByZWFkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMzE3NSw3ICszMTc1LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNwcmVhZEZhc3RBcnJheShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgQVNTRVJU
KGlzSlNBcnJheShjZWxsKSk7CiAgICAgSlNBcnJheSogYXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+
KGNlbGwpOwpAQCAtMzE4OCw3ICszMTg4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blByb2Nlc3NUeXBlUHJvZmlsZXJMb2dERkcoVk0qIHZtUG9pbnRlcikKIHsKICAgICBWTSYgdm0g
PSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAog
ICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgIkxvZyBGdWxs
LCBjYWxsZWQgZnJvbSBpbnNpZGUgREZHLiJfcyk7CiB9CkBAIC0zMTk3LDcgKzMxOTcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0
aW5nRnVuY0RlY2xJbkV2YWwoSlNHbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgICAgIAogICAg
IEpTVmFsdWUgcmVzb2x2ZWRTY29wZSA9IEpTU2NvcGU6OnJlc29sdmVTY29wZUZvckhvaXN0aW5n
RnVuY0RlY2xJbkV2YWwoZ2xvYmFsT2JqZWN0LCBzY29wZSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgaW1wbCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzb2x2ZWRTY29wZSk7CkBA
IC0zMjA3LDcgKzMyMDcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2
ZVNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcAogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICBKU09iamVjdCogcmVzb2x2ZWRTY29wZSA9IEpTU2NvcGU6OnJlc29sdmUo
Z2xvYmFsT2JqZWN0LCBzY29wZSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaW1wbCkpOwogICAg
IHJldHVybiByZXNvbHZlZFNjb3BlOwpAQCAtMzIxNyw3ICszMjE3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXREeW5hbWljVmFyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZp
ZXI6OmZyb21VaWQodm0sIGltcGwpOwpAQCAtMzI3Nyw3ICszMjc3LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGNvbnN0ZXhwciBib29sIGlzU3Ry
aWN0TW9kZSA9IHRydWU7CiAgICAgcmV0dXJuIHB1dER5bmFtaWNWYXIoZ2xvYmFsT2JqZWN0LCB2
bSwgc2NvcGUsIHZhbHVlLCBpbXBsLCBnZXRQdXRJbmZvQml0cywgaXNTdHJpY3RNb2RlKTsKIH0K
QEAgLTMyODYsNyArMzI4Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREeW5h
bWljVmFyTm9uU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBjb25zdGV4cHIgYm9vbCBpc1N0cmljdE1vZGUgPSBmYWxzZTsKICAgICBy
ZXR1cm4gcHV0RHluYW1pY1ZhcihnbG9iYWxPYmplY3QsIHZtLCBzY29wZSwgdmFsdWUsIGltcGws
IGdldFB1dEluZm9CaXRzLCBpc1N0cmljdE1vZGUpOwogfQpAQCAtMzI5NSw3ICszMjk1LDcgQEAg
aW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hcEhhc2goSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmEKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJu
IGpzTWFwSGFzaChnbG9iYWxPYmplY3QsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoaW5wdXQpKTsKIH0K
QEAgLTMzMDQsNyArMzMwNCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25KU01h
cEZpbmRCdWNrZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBKU01hcDo6QnVja2V0VHlwZSoqIGJ1Y2tldCA9IGpzQ2FzdDxKU01hcCo+
KG1hcCktPmZpbmRCdWNrZXQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSwgaGFz
aCk7CiAgICAgaWYgKCFidWNrZXQpCiAgICAgICAgIHJldHVybiB2bS5zZW50aW5lbE1hcEJ1Y2tl
dCgpOwpAQCAtMzMxNSw3ICszMzE1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkpTU2V0RmluZEJ1Y2tldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIEpTU2V0OjpCdWNrZXRUeXBlKiogYnVja2V0ID0ganNDYXN0PEpT
U2V0Kj4obWFwKS0+ZmluZEJ1Y2tldChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShrZXkp
LCBoYXNoKTsKICAgICBpZiAoIWJ1Y2tldCkKICAgICAgICAgcmV0dXJuIHZtLnNlbnRpbmVsU2V0
QnVja2V0KCk7CkBAIC0zMzI2LDcgKzMzMjYsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU2V0QWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogc2V0LAog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byogYnVja2V0ID0ganNDYXN0PEpTU2V0Kj4oc2V0
KS0+YWRkTm9ybWFsaXplZChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShrZXkpLCBKU1Zh
bHVlKCksIGhhc2gpOwogICAgIGlmICghYnVja2V0KQogICAgICAgICByZXR1cm4gdm0uc2VudGlu
ZWxTZXRCdWNrZXQoKTsKQEAgLTMzMzcsNyArMzMzNyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25NYXBTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBt
YXAsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNNYXAq
PihtYXApLT5hZGROb3JtYWxpemVkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGtleSks
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSksIGhhc2gpOwogICAgIGlmICghYnVja2V0KQogICAgICAg
ICByZXR1cm4gdm0uc2VudGluZWxNYXBCdWNrZXQoKTsKQEAgLTMzNDgsNyArMzM0OCw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25XZWFrU2V0QWRkKFZNKiB2bVBvaW50ZXIsIEpTQ2Vs
bCogc2V0LCBKU0NlbGwqIGtleSwKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBqc0Nhc3Q8SlNXZWFrU2V0Kj4o
c2V0KS0+YWRkKHZtLCBhc09iamVjdChrZXkpLCBKU1ZhbHVlKCksIGhhc2gpOwogfQogCkBAIC0z
MzU2LDcgKzMzNTYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uV2Vha01hcFNldChW
TSogdm1Qb2ludGVyLCBKU0NlbGwqIG1hcCwgSlNDZWxsKiBrZXksCiB7CiAgICAgVk0mIHZtID0g
KnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
anNDYXN0PEpTV2Vha01hcCo+KG1hcCktPmFkZCh2bSwgYXNPYmplY3Qoa2V5KSwgSlNWYWx1ZTo6
ZGVjb2RlKHZhbHVlKSwgaGFzaCk7CiB9CiAKQEAgLTMzNjQsNyArMzM2NCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBlT2ZPYmplY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
bkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRoaXNPYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
QEAgLTMzNzIsNyArMzM3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIFN0cmljdE1vZGUpOwpAQCAtMzM5NSw3ICszMzk1LDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93REZHKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBzY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZVRvVGhyb3cpKTsKIH0KQEAgLTM0MDQsNyArMzQw
NCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgU3RyaW5nIGVycm9yTWVz
c2FnZSA9IG1lc3NhZ2UtPnZhbHVlKGdsb2JhbE9iamVjdCk7CiAgICAgc2NvcGUudGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0
PEVycm9yVHlwZT4oZXJyb3JUeXBlKSwgZXJyb3JNZXNzYWdlKSk7CkBAIC0zNDE1LDcgKzM0MTUs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0RpcmVjdENhbGwoQ2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8sIEpTRnVuY3RpbwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQgPSBjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpOwpA
QCAtMzU5NSw3ICszNTk1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3co
Vk0qIHZtUG9pbnRlcikKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Mo
dm0uaGVhcCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpOwogICAgIApAQCAtMzg1NCw3ICszODU0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdn
ZXJUaWVyVXBOb3dJbkxvb3AoVk0qIHZtUG9pbnRlciwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleEIK
IHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXg6OmZyb21CaXRzKGJ5dGVjb2Rl
SW5kZXhCaXRzKTsKQEAgLTM4OTAsNyArMzg5MCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gdHJp
Z2dlck9TUkVudHJ5Tm93KFZNKiB2bVBvaW50ZXIsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXhCaXRz
CiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4Ojpmcm9tQml0cyhieXRlY29k
ZUluZGV4Qml0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKaW5kZXgg
OWQwOWZlNzE1NDFjMDI2NWIxYzE5OWVjMGRiN2QzOWVkZDExOTFhMi4uNDI5ZTg0MjU3N2JhYmE4
Yzc3NmRlMTQ1YmY4M2VkMzIyOTI4ZjAyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGh1bmtzLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdFRodW5r
R2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBNYWNyb0Fzc2VtYmxlciBqaXQ7CisgICAgQ0NhbGxI
ZWxwZXJzIGppdChudWxscHRyKTsKICAgICBqaXQucHJvYmUoT1NSRXhpdDo6ZXhlY3V0ZU9TUkV4
aXQsICZ2bSk7CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiREZHIE9TUiBleGl0IHRodW5rIik7CkBAIC01MCw3ICs1MCw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdFRodW5rR2VuZXJhdG9yKFZNJiB2bSkKIAog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFeGl0R2VuZXJhdGlvblRo
dW5rR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBNYWNyb0Fzc2VtYmxlciBqaXQ7CisgICAgQ0Nh
bGxIZWxwZXJzIGppdChudWxscHRyKTsKIAogICAgIC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGJl
Zm9yZSB3ZSB1c2UgdGhlIHNjcmF0Y2ggYnVmZmVyIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBhbHNv
IHVzZXMgdGhlIHNjcmF0Y2ggYnVmZmVyLgogICAgIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4
aXRDb21waWxlclRodW5rPERGRzo6SklUQ29kZT4oaml0LCB2bSwgSklUVHlwZTo6REZHSklUKTsK
QEAgLTc3LDYgKzc3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBv
c3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNJiB2bSkKIAogICAgIC8vIFNldCB1cCBv
bmUgYXJndW1lbnQuCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
IAogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJh
dGlvblB0clRhZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMu
Y3BwCmluZGV4IDI4Yzk1YjE2OWQ2ZTc4NDg5MzI2M2VlMDQyMjVmMWEyZjE1NjE5ZGUuLmVmNmNm
ZGZmMDZhOWE4ZjE1N2Y0MGJjYmQwNzViNGE2MGIxNGIyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAtNTUsNyArNTUsNyBAQCBleHRlcm4gIkMi
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYQogICAgIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKIApA
QCAtMTQ0LDcgKzE0NCw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoSlNHbG9iYWxPYmplY3QqCiAgICAgdXNpbmcgbmFt
ZXNwYWNlIERGRzsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgLy8gV2UgY2Fubm90IEdDLiBXZSd2
ZSBnb3QgcG9pbnRlcnMgaW4gZXZpbCBwbGFjZXMuCiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZl
ckdDKHZtLmhlYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ZyYW1lVHJhY2Vycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Zy
YW1lVHJhY2Vycy5oCmluZGV4IDExZjdiOGEyYTMwNTk4YmEzNWE3YjRmZTUwOTg0Mjg1NGFkY2Ey
NGEuLmMzZGJjZDQ4ODkyOWQ4YTY1NTdjOGMxNTg0ZDk4OWRlN2ViNTZjNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmgKQEAgLTgxLDYg
KzgxLDE3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgYXNzZXJ0U3RhY2tQb2ludGVySXNB
bGlnbmVkKCkKICNlbmRpZgogfQogCitjbGFzcyBTbG93UGF0aEZyYW1lVHJhY2VyIHsKK3B1Ymxp
YzoKKyAgICBBTFdBWVNfSU5MSU5FIFNsb3dQYXRoRnJhbWVUcmFjZXIoVk0mIHZtLCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgICAg
ICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbEZyYW1lKSA8IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHZtLnRvcEVudHJ5RnJhbWUpKTsKKyAgICAgICAgYXNzZXJ0U3RhY2tQb2lu
dGVySXNBbGlnbmVkKCk7CisgICAgICAgIHZtLnRvcENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKKyAg
ICB9Cit9OworCiBjbGFzcyBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgewogcHVibGljOgogICAgIEFM
V0FZU19JTkxJTkUgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCkBAIC05Miw0ICsxMDMsMzIgQEAgY2xhc3MgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHsK
ICAgICB9CiB9OwogCitjbGFzcyBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB7CitwdWJsaWM6Cisg
ICAgQUxXQVlTX0lOTElORSBKSVRPcGVyYXRpb25GcmFtZVRyYWNlcihWTSYgdm0sIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQorLy8gI2lmbmRlZiBOREVCVUcKKyAgICAgICAgOiBtX3ZtKHZtKQorLy8g
I2VuZGlmCisgICAgeworICAgICAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICAgICAgQVNTRVJU
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxGcmFtZSkgPCByZWludGVycHJldF9jYXN0PHZv
aWQqPih2bS50b3BFbnRyeUZyYW1lKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLnRvcENh
bGxGcmFtZSAhPSBiaXR3aXNlX2Nhc3Q8Q2FsbEZyYW1lKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90
PigweDBiYWRiZWVmMGJhZGJlZWZVTEwpKSk7CisgICAgICAgIGFzc2VydFN0YWNrUG9pbnRlcklz
QWxpZ25lZCgpOworI2lmIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHZtLnRvcENhbGxGcmFtZSA9PSBjYWxsRnJhbWUpOworICAgICAgICB2bS50b3BD
YWxsRnJhbWUgPSBjYWxsRnJhbWU7CisjZW5kaWYKKyAgICB9CisKKy8vICNpZm5kZWYgTkRFQlVH
CisgICAgfkpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyKCkKKyAgICB7CisgICAgICAgIC8vIEZpbGwg
dm0udG9wQ2FsbEZyYW1lIHdpdGggaW52YWxpZCB2YWx1ZSB3aGVuIGxlYXZpbmcgZnJvbSBDKysg
b3BlcmF0aW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgbV92bS50b3BDYWxsRnJhbWUgPSBiaXR3aXNl
X2Nhc3Q8Q2FsbEZyYW1lKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigweDBiYWRiZWVmMGJhZGJl
ZWZVTEwpKTsKKyAgICB9CisKKyAgICBWTSYgbV92bTsKKy8vICNlbmRpZgorfTsKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAKaW5kZXggM2NlMjliZDRmYzc3MGI5NzU2MzEwNWYyNmM4NmU4YmJiOTBhNjkwOS4uMWNh
YzFjNDIxZGE4YjdjNjRiOTIyMGZhOWJmMzJjYzRmZGE2MDU2YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMjUyLDYgKzI1Miw3IEBAIHZv
aWQgQXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhjZXB0aW9uRnV6eihWTSYgdm0pCiAgICAgLy8gU2V0
IHVwIG9uZSBhcmd1bWVudC4KICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25FeGNlcHRpb25GdXp6KSksIEdQUkluZm86
Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CisgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogICAgIGNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSLCBPcGVyYXRpb25Q
dHJUYWcpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9m
UmVnaXN0ZXJzOyArK2kpIHsKQEAgLTkzMSw2ICs5MzIsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6ZGVidWdDYWxsKFZNJiB2bSwgVl9EZWJ1Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQq
IGFyZwogI2Vsc2UKICNlcnJvciAiSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4i
CiAjZW5kaWYKKyAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGZ1bmN0aW9uKSksIHNjcmF0
Y2gpOwogICAgIGNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggMjc2MGVkNmM3MmUyZWQxZjMx
NTBjM2ZmOTlkMTU0MDA1NTkwMjE0Ni4uZmNkNDY3MDI5MzZjMGQ0YjM0MjljMGVmNmI3YzU5ZmUw
YTg3MGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CkBAIC02NSw2ICs2NSwxNSBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9B
c3NlbWJsZXIgewogICAgIFZNJiB2bSgpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT52bSgpOyB9CiAg
ICAgQXNzZW1ibGVyVHlwZV9UJiBhc3NlbWJsZXIoKSB7IHJldHVybiBtX2Fzc2VtYmxlcjsgfQog
CisgICAgdm9pZCBwcmVwYXJlQ2FsbE9wZXJhdGlvbihWTSYgdm0pCisgICAgeworLy8gI2lmIFVT
RShCVUlMVElOX0ZSQU1FX0FERFJFU1MpICYmICFkZWZpbmVkKE5ERUJVRykKKy8vICAgICAgICAg
VU5VU0VEX1BBUkFNKHZtKTsKKy8vICNlbHNlCisgICAgICAgIHN0b3JlUHRyKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKKy8vICNlbmRpZgorICAgIH0KKwog
ICAgIHZvaWQgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKQogICAgIHsKICAgICAgICAgLy8g
VGhpcyBjaGVjayBpcyBib3RoIHVubmVlZGVkIGFuZCBoYXJkZXIgdG8gd3JpdGUgY29ycmVjdGx5
IGZvciBBUk02NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCmlu
ZGV4IGI0YjQ2OTczYjkxNDNkNDI0ZDRlNDMxYWU0MmJhNGU0M2MzYzMyNjMuLjg0ODVhOWZiZDY4
M2RiZWY2NThmNjcwODgxM2Y3NThkNWRkYjk4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTYxLDYgKzYxLDcgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6
OmVuc3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQoVk0mIHZtLCBHUFJSZWcgc2hhZG93UGFja2V0LCBH
UFJSZWcKICAgICBsb2FkUHRyKEFkZHJlc3Moc2NyYXRjaDFOb25BcmdHUFIpLCBzaGFkb3dQYWNr
ZXQpOwogICAgIEp1bXAgb2sgPSBicmFuY2hQdHIoQmVsb3csIHNoYWRvd1BhY2tldCwgVHJ1c3Rl
ZEltbVB0cihzaGFkb3dDaGlja2VuLT5sb2dFbmQoKSkpOwogICAgIHNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKT4oVHJ1c3RlZEltbVB0cigm
dm0pKTsKKyAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblByb2Nlc3NTaGFk
b3dDaGlja2VuTG9nKSksIHNjcmF0Y2gxTm9uQXJnR1BSKTsKICAgICBjYWxsKHNjcmF0Y2gxTm9u
QXJnR1BSLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzaGFkb3dD
aGlja2VuLT5hZGRyZXNzT2ZMb2dDdXJzb3IoKSksIHNjcmF0Y2gxTm9uQXJnR1BSKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IGQ4MTBkMjM0Nzg3ZTU4OWZj
YTY2ZWJjYjRhNDhiMjRmOTNkY2RlZDEuLjAxNWYwM2I3NWI2N2M5Zjc1N2NiZTc0MDRkNGUxYTU2
OTM0YTI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAt
ODQsMTUgKzg0LDYgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVy
cyB7CiAgICAgICAgIHBva2UoR1BSSW5mbzo6bm9uQXJnR1BSMCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQgKyBhcmd1bWVudEluZGV4IC0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyk7
CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJlQ2FsbE9wZXJhdGlvbihWTSYgdm0pCi0gICAgewot
I2lmIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpCi0gICAgICAgIFVOVVNFRF9QQVJBTSh2bSk7
Ci0jZWxzZQotICAgICAgICBzdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZt
LnRvcENhbGxGcmFtZSk7Ci0jZW5kaWYKLSAgICB9Ci0KIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBOdW1iZXJPZlJlZ2lzdGVycywgdHlwZW5hbWUgUmVnVHlwZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDM4MDk0NjFhYmU1Mjc3
NTU3YWUxYTcyZmUxNjdhY2FjYzFhYjM5ZmIuLmZhZWE1M2Q4YTM4OTE5NmRjY2IxYmI4ZDM1NzE2
YWY2ZDQ1ZDExYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAvLyBXZSBwYXNz
IGluIG91ciBvd24gY29kZSBibG9jaywgYmVjYXVzZSB0aGUgY2FsbGZyYW1lIGhhc24ndCBiZWVu
IHBvcHVsYXRlZC4KICAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBjYWxsRnJhbWUtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSh2
bSwgY29kZUJsb2NrKTsKICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLCBzY29wZSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlKTsKICAgICBnZW5lcmljVW53aW5kKHZtLCBjYWxsRnJhbWUpOwpAQCAtMTI4LDcgKzEy
OCw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaW50MzJfdCBtaXNzaW5nQXJn
Q291bnQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3Iodm0sIGNhbGxGcmFtZSwgQ29k
ZUZvckNhbGwpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJp
dHlDaGVja0Zvcih2bSwgY2FsbEZyYW1lLCBDb2RlRm9yQ29uc3RydWN0KTsKQEAgLTE2Miw3ICsx
NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
SWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgc3R1
YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCB1aWQpOwogCkBAIC0yMTMsNyArMjEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKTsKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKQEAgLTIzMSw3ICsy
MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWREaXJl
Y3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCkBAIC0yNDgsNyArMjQ4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIApAQCAtMjcxLDcgKzI3MSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBzdHViSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAKQEAgLTI5MSw3ICsyOTEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplYwogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNs
b3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKQEAg
LTMwOSw3ICszMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIAogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVp
ZCk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKQEAg
LTMzMSw3ICszMzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5SWRXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsK
IAogICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwpAQCAtMzQ5LDcgKzM0OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzR2Vu
ZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIElkZW50aWZp
ZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCiAgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0zNjUsNyArMzY1LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCogZ2wKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIElkZW50aWZp
ZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCiAgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0zODgsNyArMzg4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWMKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7CkBAIC00MTUsNyArNDE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbkJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBA
IC00NDAsNyArNDQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25J
bkJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBAIC00NjksNyAr
NDY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5VmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2UKICAgICAKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpv
cEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSkpKTsKIH0K
QEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0
cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cgogICAgIAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAg
CkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRO
b25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWMKICAgICAKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIAogICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAg
IApAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0CiAgICAgCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICAKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAg
ICAKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdE5vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAg
ICAgCkBAIC01NTIsNyArNTUyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBA
IC01ODMsNyArNTgzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25T
dHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICAKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwpAQCAtNjE0
LDcgKzYxNCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCiAgICAg
SWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBAIC02NDQs
NyArNjQ0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25T
dHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKICAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKQEAgLTg1OSw3
ICs4NTksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CkBAIC05NDgsNyAr
OTQ4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwpAQCAtOTcyLDcgKzk3
Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAK
ICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVl
KTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2Ny
aXB0KTsKQEAgLTk4Niw3ICs5ODYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGly
ZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkU3Vic2NyaXB0KTsKQEAgLTEyMTUsNyArMTIxNSw3IEBAIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVMZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1cm4ganNMZXNz
PHRydWU+KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUxlc3NFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGpzTGVzc0Vx
PHRydWU+KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQpAQCAtMTIzMyw3ICsxMjMzLDcgQEAgc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGpzTGVzczxm
YWxzZT4oZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AxKSk7CiB9CkBAIC0xMjQyLDcgKzEyNDIsNyBAQCBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4ganNMZXNzRXE8
ZmFsc2U+KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSkpOwogfQpAQCAtMTI1MSw3ICsxMjUxLDcgQEAgc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUVxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1YKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVxdWFsU2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CkBAIC0xMjY0LDcgKzEyNjQs
NyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBi
b29sIHJlc3VsdCA9IGFzU3RyaW5nKGxlZnQpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5n
KHJpZ2h0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTEyNzgsNyArMTI3OCw3IEBAIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTVmFsdWUgc3Jj
MSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1ZhbHVlIHNyYzIgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CkBAIC0xMjkwLDcgKzEyOTAsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZChnbG9iYWxPYmplY3QsIHByb2ZpbGUs
IHZhbHVlcywgc2l6ZSkpOwogfQogCkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEpTR2xv
YmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBzaXplVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoc2l6ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3RBcnJheVdpdGhTaXplUXVpcmsoZ2xvYmFsT2JqZWN0LCBwcm9maWxlLCBzaXplVmFsdWUpKTsK
IH0KQEAgLTEzMjAsNyArMTMyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb24oVk0qIHZtUG9pbnRlciwgSlNTY29wZSogc2NvcGUsCiB7CiAgICAg
Vk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KHZtLCBzY29wZSwg
ZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAKQEAgLTEzMjgsNyArMTMyOCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIG5ld0Z1bmN0aW9u
Q29tbW9uPEpTRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsK
IH0KIApAQCAtMTMzNiw3ICsxMzM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihWTSogdm1Qb2ludGVyLCBKU1Njb3AKIHsKICAg
ICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICByZXR1cm4gbmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4o
dm0sIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKIH0KIApAQCAtMTM0NCw3ICsx
MzQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0
b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2MKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2lu
dGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4g
bmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0sIHNjb3BlLCBmdW5jdGlv
bkV4ZWN1dGFibGUsIHRydWUpOwogfQogCkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24oVk0qIHZtUG9pbnRl
ciwgSlNTY29wZSogcwogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdGdW5jdGlvbkNvbW1vbjxK
U0FzeW5jRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7CiB9
CiAKQEAgLTEzNjAsNyArMTM2MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXN5bmNGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvCiB7CiAgICAg
Vk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlvbj4odm0sIHNj
b3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCkBAIC0xMzY4LDcgKzEzNjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb24oVk0qIHZtUG9pbnRlciwgSgogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdGdW5j
dGlvbkNvbW1vbjxKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rpb25F
eGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAgICAgCkBAIC0xMzc2LDcgKzEzNzYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25X
aXRoSW52YWxpZGF0ZWRSZQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdGdW5jdGlvbkNvbW1v
bjxKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCB0cnVlKTsKIH0KICAgICAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGZ1bmNDZWxsKTsKICAgICBKU1ZhbHVlIG5hbWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE5hbWUpOwpAQCAtMTM5NSw3ICsxMzk1LDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwg
c3RydWN0dXJlKTsKIH0KQEAgLTE0MDQsNyArMTQwNCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdQcm9taXNlKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1
cmUpOwogfQpAQCAtMTQxMyw3ICsxNDEzLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0ludGVybmFsUHJvbWlzZShWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnUKIHsK
ICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIHJldHVybiBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUpOwogfQpAQCAtMTQyMiw3ICsxNDIyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0dlbmVyYXRvcihWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1
cmUpOwogfQpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FzeW5jR2VuZXJhdG9yKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogc3RydWMKIHsK
ICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIHJldHVybiBKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVj
dHVyZSk7CiB9CkBAIC0xNDQxLDcgKzE0NDEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3UmVnZXhwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogcgog
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCiAgICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdl
eHBQdHIpOwogICAgIEFTU0VSVChyZWdleHAtPmlzVmFsaWQoKSk7CkBAIC0xNDU2LDcgKzE0NTYs
NyBAQCBVbnVzZWRQdHIgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYW5kbGVUcmFwcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgQVNTRVJUKHZt
Lm5lZWRUcmFwSGFuZGxpbmcoKSk7CiAgICAgdm0uaGFuZGxlVHJhcHMoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKFZNKiB2bVBvaW50ZXIsIGludDMyX3QgZGVi
dWdIb29rVHlwZSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHZtLmludGVycHJldGVyLT5kZWJ1ZyhjYWxs
RnJhbWUsIHN0YXRpY19jYXN0PERlYnVnSG9va1R5cGU+KGRlYnVnSG9va1R5cGUpKTsKIH0KQEAg
LTE0ODIsNyArMTQ4Miw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiB7CiAgICAgVk0mIHZt
ID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleDo6ZnJvbUJpdHMo
Ynl0ZWNvZGVJbmRleEJpdHMpOwogCiAgICAgLy8gRGVmZXIgR0MgZm9yIGEgd2hpbGUgc28gdGhh
dCBpdCBkb2Vzbid0IHJ1biBiZXR3ZWVuIHdoZW4gd2UgZW50ZXIgaW50byB0aGlzCkBAIC0xNzI5
LDcgKzE3MjksNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRD
YXRjaChWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlY29kZQogewogICAgIFZNJiB2bSA9ICp2
bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXg6OmZyb21CaXRzKGJ5dGVj
b2RlSW5kZXhCaXRzKTsKIAogICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgpOwpAQCAtMTc1Miw3ICsxNzUyLDcg
QEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1
ZVByb2ZpbGUoVk0qIHZtUG9pbnRlciwgdWkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4Ojpmcm9tQml0cyhieXRlY29kZUluZGV4Qml0
cyk7CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
CkBAIC0xNzg2LDcgKzE3ODYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
bmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIGFycmF5VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEFycmF5VmFsdWUpOwogICAgIEFTU0VSVChpc0pTQXJyYXkoYXJyYXlWYWx1ZSkpOwpAQCAt
MTgxNiw3ICsxODE2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5
SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKICAgICBBU1NFUlQob2JqZWN0ICYmIG9iamVjdC0+aXNPYmplY3QoKSk7CiAgICAgSlNP
YmplY3QqIGJhc2VPYmogPSBvYmplY3QtPmdldE9iamVjdCgpOwpAQCAtMTgyOSw3ICsxODI5LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFNldHRlckJ5SWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBU1NF
UlQob2JqZWN0ICYmIG9iamVjdC0+aXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmog
PSBvYmplY3QtPmdldE9iamVjdCgpOwpAQCAtMTg0Miw3ICsxODQyLDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0QWNjZXNzb3JCeVZhbChn
bG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNj
cmlwdCksIGF0dHJpYnV0ZSwgYXNPYmplY3QoZ2V0dGVyKSwgQWNjZXNzb3JUeXBlOjpHZXR0ZXIp
OwogfQpAQCAtMTg1MSw3ICsxODUxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dFNldHRlckJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCiAgICAgcHV0QWNjZXNzb3JCeVZhbChnbG9iYWxPYmplY3QsIGFzT2Jq
ZWN0KGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCksIGF0dHJpYnV0ZSwg
YXNPYmplY3Qoc2V0dGVyKSwgQWNjZXNzb3JUeXBlOjpTZXR0ZXIpOwogfQpAQCAtMTg2MSw3ICsx
ODYxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlclNldHRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgQVNTRVJUKG9iamVjdCAmJiBvYmplY3QtPmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gYXNPYmplY3Qob2JqZWN0KTsKQEAgLTE4NzgsNyArMTg3OCw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVChvYmpl
Y3QgJiYgb2JqZWN0LT5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFz
T2JqZWN0KG9iamVjdCk7CkBAIC0xODk1LDcgKzE4OTUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUG9wU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJfdCBz
Y29wZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihzY29wZVJlZykuUmVnaXN0ZXI6OnNjb3BlKCk7CiAgICAgY2FsbEZyYW1l
LT51bmNoZWNrZWRSKHNjb3BlUmVnKSA9IHNjb3BlLT5uZXh0KCk7CkBAIC0xOTA1LDcgKzE5MDUs
NyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBoYXNJbnN0YW5jZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRIYXNJbnN0YW5jZSk7
CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRT
dWJzY3JpcHQpOwogCkBAIC0yMDgwLDcgKzIwODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpOwpAQCAtMjEwMSw3ICsyMTAxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xvYmFsT2JqZWN0Kgogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRTdWJzY3JpcHQpOwogICAgIApAQCAtMjE0OSw3ICsyMTQ5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xv
YmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIApAQCAtMjE3MCw3ICsyMTcwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFN0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CkBAIC0yMjIwLDcgKzIyMjAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCkpKTsKIH0KIApAQCAtMjIy
OCw3ICsyMjI4LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlMKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKTsKIH0KIApAQCAtMjI2MCw3ICsyMjYwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbEpTUmVz
dWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRLZXkpKSkpOwogfQogCkBAIC0yMjY4LDcgKzIyNjgsNyBAQCBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKTsKIH0KIApAQCAtMjI3Niw3ICsyMjc2LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBK
U1ZhbHVlOjpkZWNvZGUob2JqZWN0VmFsdWUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0y
MjkxLDcgKzIyOTEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhT
Y29wZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgSlNTY29wZSogY3VycmVudFNjb3BlID0ganNDYXN0PEpTU2NvcGUqPihjdXJyZW50
U2NvcGVDZWxsKTsKICAgICByZXR1cm4gSlNXaXRoU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBjdXJyZW50U2NvcGUsIG9iamVjdCk7CiB9CkBAIC0yMzAwLDcgKzIzMDAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2YoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvKTsKICAgICAKQEAgLTIzMTIsNyArMjMxMiw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZkdlbmVyaWMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBwcm90
byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwogICAgIApAQCAtMjMyNiw3ICsyMzI2
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbnN0YW5jZU9mT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwpAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgaW50MzJfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoSlNHbG9i
YWxPYmplY3QqIGdsb2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBzaXplRnJhbWVG
b3JGb3J3YXJkQXJndW1lbnRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgbnVtVXNlZFN0
YWNrU2xvdHMpOwogfQogCkBAIC0yMzUzLDcgKzIzNTMsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7CiAgICAgcmV0dXJuIHNpemVGcmFtZUZvclZhcmFy
Z3MoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBhcmd1bWVudHMsIG51bVVzZWRTdGFja1Ns
b3RzLCBmaXJzdFZhckFyZ09mZnNldCk7CiB9CkBAIC0yMzYyLDcgKzIzNjIsNyBAQCBDYWxsRnJh
bWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoSlNH
bG9iYWxPYmplY3QqIGdsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgc2V0dXBGb3J3YXJkQXJn
dW1lbnRzRnJhbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIG5ld0NhbGxGcmFtZSwgbGVuZ3Ro
KTsKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQpAQCAtMjM3MSw3ICsyMzcxLDcgQEAgQ2Fs
bEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYXJn
dW1lbnRzID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudHMpOwogICAgIHNldHVwVmFy
YXJnc0ZyYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGFyZ3VtZW50
cywgZmlyc3RWYXJBcmdPZmZzZXQsIGxlbmd0aCk7CiAgICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsK
QEAgLTIzODEsNyArMjM4MSw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNo
Q2hhcldpdGhVbmtub3duS2V5VHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIEpTVmFsdWUga2V5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpOwpAQCAtMjQw
Nyw3ICsyNDA3LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hJbW1XaXRo
VW5rbm93bktleVR5cGUoVk0qIHZtUG9pbnRlciwgRW5jb2RlZEoKIHsKICAgICBWTSYgdm0gPSAq
dm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBK
U1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAKQEAgLTI0MjcsNyArMjQyNyw3
IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3RyaW5nV2l0aFVua25vd25L
ZXlUeXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1Zh
bHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNDUyLDcgKzI0NTIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEZyb21TY29wZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25G
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0yNDk0LDcgKzI0OTQsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBJbnN0cgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0yNTQ4LDcgKzI1NDgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVGhyb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkRXhjZXB0aW9uVmFsdWUpOwpAQCAtMjU2Miw3ICsyNTYyLDcgQEAgY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9IYXZlUHJvcGVydHlT
dG9yYWdlV2l0aEluaXRpYWwKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVCghb2JqZWN0LT5zdHJ1
Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9
IG9iamVjdC0+YWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgMCwgaW5pdGlhbE91dE9m
TGluZUNhcGFjaXR5KTsKQEAgLTI1NzQsNyArMjU3NCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZShWTSogdm1Q
b2luCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IG9iamVjdC0+YWxsb2Nh
dGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxp
bmVDYXBhY2l0eSgpLCBuZXdTaXplKTsKICAgICBvYmplY3QtPm51a2VTdHJ1Y3R1cmVBbmRTZXRC
dXR0ZXJmbHkodm0sIG9iamVjdC0+c3RydWN0dXJlSUQoKSwgcmVzdWx0KTsKQEAgLTI1ODUsNyAr
MjU4NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIoVk0q
IHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHZtLmhlYXAud3JpdGVC
YXJyaWVyKGNlbGwpOwogfQogCkBAIC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgoVk0qIHZtUG9pbnRlciwgSlNDZWxsKiBj
ZWxsKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyU2xvd1BhdGgoY2VsbCk7
CiB9CiAKQEAgLTI2MDEsNyArMjYwMSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25M
b29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKiB2bVBvaW50ZXIpCiB7CiAgICAgVk0mIHZtID0gKnZt
UG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgZ2Vu
ZXJpY1Vud2luZCh2bSwgY2FsbEZyYW1lKTsKICAgICBBU1NFUlQodm0udGFyZ2V0TWFjaGluZVBD
Rm9yVGhyb3cpOwogfQpAQCAtMjYxMCw3ICsyNjEwLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qIHZtUG9pbnRl
cikKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBBU1NFUlQoY2FsbEZyYW1lLT5pc1N0YWNrT3ZlcmZsb3dGcmFt
ZSgpKTsKICAgICBBU1NFUlQoanNDYXN0PEVycm9ySW5zdGFuY2UqPih2bS5leGNlcHRpb25Gb3JJ
bnNwZWN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpLT5pc1N0YWNrT3ZlcmZsb3dFcnJvcigpKTsK
ICAgICBnZW5lcmljVW53aW5kKHZtLCBjYWxsRnJhbWUpOwpAQCAtMjYyMSw3ICsyNjIxLDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0aW9uKFZNKiB2bVBvaW50
ZXIpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgY2FsbEZyYW1lKTsKIH0KIApA
QCAtMjYzNCw3ICsyNjM0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkV4Y2VwdGlv
bkZ1enooSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFS
QU0oc2NvcGUpOwogI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQpAQCAtMjY1NSw3ICsyNjU1
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNBZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCkBAIC0yNjY0
LDcgKzI2NjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
QWRkUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9m
aWxlZEFkZChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDIpLCAqYXJpdGhQcm9maWxlKSk7CiB9CiAKQEAgLTI2NzIsNyAr
MjY3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQ
cm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBK
U1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKQEAgLTI2OTcsNyArMjY5
Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9m
aWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAg
IEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJvZmlsZSgpOwogICAg
IEFTU0VSVChhcml0aFByb2ZpbGUpOwpAQCAtMjcwOCw3ICsyNzA4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMik7CkBAIC0yNzI5LDcgKzI3MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMik7CkBAIC0yNzY3LDcgKzI3NjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
YwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gdW5wcm9maWxlZE11bChnbG9iYWxP
YmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIpOwogfQpAQCAtMjc3Niw3ICsyNzc2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJu
IHVucHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsKIH0K
QEAgLTI3ODUsNyArMjc4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVN
dWxOb09wdGltaXplOwogICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElD
LT5hcml0aFByb2ZpbGUoKSkKQEAgLTI4MDMsNyArMjgwMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwog
ICAgIHJldHVybiBwcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRP
cDIsICphcml0aFByb2ZpbGUpOwpAQCAtMjgxMyw3ICsyODEzLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGcKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7
CkBAIC0yODMyLDcgKzI4MzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0
aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKQEAgLTI4NDQsNyArMjg0NCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7CiAKQEAgLTI4NjYsNyArMjg2Niw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwogICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhv
cGVyYW5kKTsKQEAgLTI4OTMsNyArMjg5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgCiAgICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVy
YW5kKTsKIApAQCAtMjkyNyw3ICsyOTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7
CiAKQEAgLTI5NzgsNyArMjk3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICByZXR1cm4gdW5wcm9maWxlZFN1YihnbG9iYWxPYmplY3QsIGVuY29k
ZWRPcDEsIGVuY29kZWRPcDIpOwogfQogCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBwcm9maWxlZFN1
Yih2bSwgZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxl
KTsKIH0KQEAgLTI5OTcsNyArMjk5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9u
VmFsdWVTdWJOb09wdGltaXplOwogICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9
IHN1YklDLT5hcml0aFByb2ZpbGUoKSkKQEAgLTMwMTUsNyArMzAxNSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiB1bnByb2ZpbGVk
U3ViKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7CiB9CkBAIC0zMDI0LDcg
KzMwMjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3Vi
UHJvZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZwogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsK
ICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKQEAgLTMwNDMsNyArMzA0Myw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
bkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUpOwpAQCAtMzA1NCw3ICszMDU0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blByb2Nlc3NUeXBlUHJvZmlsZXJMb2coVk0qIHZtUG9pbnRlcikKIHsKICAgICBWTSYgdm0gPSAq
dm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICB2
bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJMb2cgRnVsbCwgY2Fs
bGVkIGZyb20gaW5zaWRlIGJhc2VsaW5lIEpJVCJfcyk7CiB9CiAKQEAgLTMwNjIsNyArMzA2Miw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxvZyhW
TSogdm1Qb2ludGVyKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLnNoYWRvd0No
aWNrZW4oKSk7CiAgICAgdm0uc2hhZG93Q2hpY2tlbigpLT51cGRhdGUodm0sIGNhbGxGcmFtZSk7
CiB9CkBAIC0zMDcxLDcgKzMwNzEsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q2hlY2tJZkV4Y2VwdGlvbklzVW5jYXRjaGFibGVBbmROb3RpZnlQcm9maWxlcihWTQogewogICAg
IFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBSRUxF
QVNFX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDZiYmM2Njk3MWVlMzJlNzJlYzVkZWVi
OTU2ZjVlODQ2NGYyZWZjNzYuLjM5NjlkYzY2YTYyZDUyOTUyOGY2Y2U3MTNlZTAyOGJiNWQwNDg2
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAK
QEAgLTExNzQsNiArMTE3NCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2CiAgICAgaml0LmNv
cHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJh
bWUpOwogICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MywgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6cmVn
VDMpOwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvckZyb21UaHVuayk+KEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdD
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21U
aHVuaykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24o
aml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIGppdC5jYWxs
KEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2MGI0OWY5MTE2M2Y1M2M0
ZDQ3ODViZDExNDNkYTVkOWNlMDQ2YWY3Li41Nzk4ZDMwYjhiNTg2YjczNGI4ZmQ4NjA0ODg4NGZk
ZGU3NmIwOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTElu
dCB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOyBc
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCk7IFwKICAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7IFwKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCisgICAgU2xvd1BhdGhGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7IFwKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKQogCiAjaWZuZGVmIE5ERUJVRwpAQCAtNTM2LDEwICs1MzYsMTAg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiAgICAgVk0mIHZtID0gY29kZUJs
b2NrLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgLy8gSXQncyBvayB0byBjcmVhdGUgdGhlIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciBo
ZXJlIGJlZm9yZSB3ZQorICAgIC8vIEl0J3Mgb2sgdG8gY3JlYXRlIHRoZSBTbG93UGF0aEZyYW1l
VHJhY2VyIGhlcmUgYmVmb3JlIHdlCiAgICAgLy8gY29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1l
KCkgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxsZWQKICAgICAvLyBhZnRlciB0
aGUgZnJhbWUgaGFzIGJlZW4gcHJvcHVsYXRlZCB3aXRoIGEgcHJvcGVyIENvZGVCbG9jayBhbmQg
Y2FsbGVlLgotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBM
TElOVF9TRVRfUENfRk9SX1NUVUJTKCk7CiAKQEAgLTE0MzYsNyArMTQzNiw3IEBAIHN0YXRpYyBT
bG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwg
SlNWYWx1ZSBjYWxsZWUsCiAgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SlMp
OwogICAgIAogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpIHsKLSAgICAg
ICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKKyAg
ICAgICAgICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CiAg
ICAgICAgICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAg
ICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0
YS5uYXRpdmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2Fs
bGVlRnJhbWUpKTsKICAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGdsb2JhbE9iamVjdCwg
Y2FsbGVlRnJhbWUsIExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBD
RnVuY3Rpb25QdHJUYWcpOwpAQCAtMTQ1Niw3ICsxNDU2LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0
dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU1ZhbHVlIGNh
bGxlZSwKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpKUyk7CiAg
ICAgCiAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCkgewotICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CisgICAg
ICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CiAgICAgICAg
IGNhbGxlZUZyYW1lLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLmhv
c3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUu
ZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2FsbGVlRnJhbWUp
KTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwg
TExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0clRh
Zyk7CkBAIC0xNzczLDcgKzE3NzMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZGVidWcpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFuZGxlX2V4Y2VwdGlvbikK
IHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgU2xvd1BhdGhGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgY2FsbEZy
YW1lKTsKICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAppbmRleCA2OWRlYjY2OGNmMWU3NTY4MzBmNzc2
MTQxZTIxYTJiZmUzZGY5Y2VkLi5jMjFiZDBlYmJjNDgyYTg5ZTc3MjY2NWE1MGJjMTg4MGM5N2Nm
NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0
LmNwcApAQCAtNDcxLDcgKzQ3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQXRvbWljc0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUoYmFzZSks
IEpTVmFsdWU6OmRlY29kZShpbmRleCksIEpTVmFsdWU6OmRlY29kZShvcGVyYW5kKX07CiAgICAg
cmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKHZtLCBnbG9iYWxPYmplY3QsIGFyZ3MsIEFk
ZEZ1bmMoKSk7CiB9CkBAIC00ODAsNyArNDgwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25BdG9taWNzQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29k
ZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKG9wZXJhbmQp
fTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Modm0sIGdsb2JhbE9iamVjdCwg
YXJncywgQW5kRnVuYygpKTsKIH0KQEAgLTQ4OSw3ICs0ODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3NDb21wYXJlRXhjaGFuZ2UoSlNHbG9iYWxPYmpl
Y3QqIGdsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1
ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUo
ZXhwZWN0ZWQpLCBKU1ZhbHVlOjpkZWNvZGUobmV3VmFsdWUpfTsKICAgICByZXR1cm4gYXRvbWlj
T3BlcmF0aW9uV2l0aEFyZ3Modm0sIGdsb2JhbE9iamVjdCwgYXJncywgQ29tcGFyZUV4Y2hhbmdl
RnVuYygpKTsKIH0KQEAgLTQ5OCw3ICs0OTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkF0b21pY3NFeGNoYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2Rl
KGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUob3BlcmFuZCl9
OwogICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyh2bSwgZ2xvYmFsT2JqZWN0LCBh
cmdzLCBFeGNoYW5nZUZ1bmMoKSk7CiB9CkBAIC01MDcsNyArNTA3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BdG9taWNzSXNMb2NrRnJlZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBpc0xvY2tGcmVlKGds
b2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHNpemUpKTsKIH0KIApAQCAtNTE1LDcgKzUxNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc0xvYWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFs
dWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGluZGV4
KX07CiAgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKHZtLCBnbG9iYWxPYmplY3Qs
IGFyZ3MsIExvYWRGdW5jKCkpOwogfQpAQCAtNTI0LDcgKzUyNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc09yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1Zh
bHVlOjpkZWNvZGUoYmFzZSksIEpTVmFsdWU6OmRlY29kZShpbmRleCksIEpTVmFsdWU6OmRlY29k
ZShvcGVyYW5kKX07CiAgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKHZtLCBnbG9i
YWxPYmplY3QsIGFyZ3MsIE9yRnVuYygpKTsKIH0KQEAgLTUzMyw3ICs1MzMsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3NTdG9yZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmdzW10g
PSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoaW5kZXgpLCBKU1ZhbHVl
OjpkZWNvZGUob3BlcmFuZCl9OwogICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyh2
bSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBTdG9yZUZ1bmMoKSk7CiB9CkBAIC01NDIsNyArNTQyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BdG9taWNzU3ViKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFs
dWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGluZGV4
KSwgSlNWYWx1ZTo6ZGVjb2RlKG9wZXJhbmQpfTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9u
V2l0aEFyZ3Modm0sIGdsb2JhbE9iamVjdCwgYXJncywgU3ViRnVuYygpKTsKIH0KQEAgLTU1MSw3
ICs1NTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3NY
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNv
ZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUob3BlcmFuZCl9OwogICAgIHJldHVybiBhdG9taWNP
cGVyYXRpb25XaXRoQXJncyh2bSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBYb3JGdW5jKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
aW5kZXggOTBjM2RlN2EzNDMwYmM3MTg5Yjk2ZjAzODkwNzNmNThhZDBjMWU3OC4uODY2ZDJhOWMy
ZTM1MGRmNmFjMDhmODViYzkyZDNlMTJhYzdlMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsgXAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpOyBcCiAgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOyBcCi0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAorICAgIFNsb3dQ
YXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7IFwKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSkKIApAQCAtMTc1LDcgKzE3NSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxs
X2FyaXR5Q2hlY2spCiAgICAgaWYgKFVOTElLRUxZKHNsb3RzVG9BZGQgPCAwKSkgewogICAgICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IENvbW1vblNsb3dQYXRoczo6Y29kZUJsb2NrRnJvbUNh
bGxGcmFtZUNhbGxlZShjYWxsRnJhbWUsIENvZGVGb3JDYWxsKTsKICAgICAgICAgY2FsbEZyYW1l
LT5jb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUodm0sIGNvZGVCbG9jayk7Ci0gICAgICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgICAgIFNsb3dQ
YXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICBFcnJvckhhbmRs
aW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwog
ICAgICAgICB0aHJvd0FyaXR5Q2hlY2tTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y29uc3RydWN0X2FyaXR5Q2hlY2spCiAgICAgaWYgKFVOTElLRUxZKHNsb3RzVG9BZGQgPCAwKSkg
ewogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IENvbW1vblNsb3dQYXRoczo6Y29kZUJs
b2NrRnJvbUNhbGxGcmFtZUNhbGxlZShjYWxsRnJhbWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogICAg
ICAgICBjYWxsRnJhbWUtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSh2bSwgY29kZUJsb2Nr
KTsKLSAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICAgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
ICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKICAgICAgICAgdGhyb3dBcml0
eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CiAgICAg
ICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKSwgY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGE4ZTk3YzAzMWQ3NmE1OGZlZjdlNWE4MDQ5MzdhNmJi
YTEwYTAyNjguLjFjMjkzMTc3ZmI5MTUwNjAwNDVlYTdlMzY1YzJhMjk1OTAxOWQ0MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApA
QCAtNzI0LDcgKzcyNCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdQ
cm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIoSlNHbG9iYWxPYmplCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBS
ZWdFeHAqIHJlZ0V4cCA9IHNlYXJjaFZhbHVlLT5yZWdFeHAoKTsKQEAgLTc0Nyw3ICs3NDcsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJl
Z0V4cFN0cmluZyhKU0dsb2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7
CkBAIC05MjUsNyArOTI1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmlu
Z1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG8KIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIAogICAgIHJldHVybiByZXBsYWNlKAogICAgICAgICB2bSwgZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjpkZWNv
ZGUoc2VhcmNoVmFsdWUpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwCmluZGV4IDE5Yzg4OTk3OTQ4OTJiMGI1Y2RiZmQ5OTBmNWY5ZjkwNmQ4ZGJkMWIuLjJmZTI2
N2M5OTVhNTg2MDk1NWRjNjRmNDE1YTM2MzY1N2M2ODg5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTc1Nyw3ICs3NTcsNyBAQCBjbGFzcyBET01K
SVRHZXR0ZXIgOiBwdWJsaWMgRE9NSklUTm9kZSB7CiAgICAgICAgICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICAgICAgICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
c3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyKj4ocG9pbnRlciktPnZhbHVlKCkpKTsKICAgICAgICAg
fQogCkBAIC04NTEsNyArODUxLDcgQEAgY2xhc3MgRE9NSklUR2V0dGVyQ29tcGxleCA6IHB1Ymxp
YyBET01KSVROb2RlIHsKICAgICAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7CiAgICAgICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgICAg
ICAgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
ICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICAg
ICAgYXV0byogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8RE9NSklUTm9kZSo+KHBvaW50ZXIpOwogICAg
ICAgICAgICAgYXV0byogZG9taml0R2V0dGVyQ29tcGxleCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklU
R2V0dGVyQ29tcGxleCo+KHZtLCBvYmplY3QpOwpAQCAtOTU4LDcgKzk1OCw2IEBAIGNsYXNzIERP
TUpJVEZ1bmN0aW9uT2JqZWN0IDogcHVibGljIERPTUpJVE5vZGUgewogICAgIHsKICAgICAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwotICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAgICAgRE9NSklUTm9kZSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklU
Tm9kZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKQEAgLTk3Miw3ICs5NzEsNyBAQCBj
bGFzcyBET01KSVRGdW5jdGlvbk9iamVjdCA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihub2RlLT52
YWx1ZSgpKSk7CiAgICAgfQogCkBAIC0xMDUxLDcgKzEwNTAsNyBAQCBjbGFzcyBET01KSVRDaGVj
a1N1YkNsYXNzT2JqZWN0IDogcHVibGljIERPTUpJVE5vZGUgewogICAgICAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICAgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG5vZGUtPnZhbHVlKCkpKTsK
ICAgICB9CiAKQEAgLTExMTQsNyArMTExMyw3IEBAIGNsYXNzIERPTUpJVEdldHRlckJhc2VKU09i
amVjdCA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICAgICAgICAgIERvbGxhclZNQXNzZXJ0U2Nv
cGUgYXNzZXJ0U2NvcGU7CiAgICAgICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgICAgICAgICAgSklUT3BlcmF0aW9uRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IHN0YXRpY19jYXN0PEpTT2Jq
ZWN0Kj4ocG9pbnRlcik7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVj
dC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAppbmRleCA1YmM1MmZlYjFlMTAzMTg5YWI5
OGYzODMzYjhhZTMyZmY1MDUzNzRhLi40MDQ4ZDI3NTFkOTE4OTE3ZDZiYmU3YjY0N2FmMTFjOWNl
ZWM0ODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMu
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd0Jh
ZEk2NChKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQogewogICAgIFZNJiB2bSA9IGlu
c3RhbmNlLT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvbkZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAog
ICAgIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAppbmRleCAxMmM1YTY0MDRkZTZkNjdkNDUyYTI2ZjkwNjlkMTRmZjBmNjIyYTE3
Li44YjA2MmVlNTMwOWQ2Y2U0NjM1YmQzYmY5ZTc4NTA2MDI5NGQxZGQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
QEAgLTc5NSw2ICs3OTUsOCBAQAogI2VuZGlmCiAjZW5kaWYKIAorI3VuZGVmIEVOQUJMRV9GVExf
SklUCisjZGVmaW5lIEVOQUJMRV9GVExfSklUIDAKIC8qIFRoZSBGVEwgKmRvZXMgbm90KiB3b3Jr
IG9uIDMyLWJpdCBwbGF0Zm9ybXMuIERpc2FibGUgaXQgZXZlbiBpZiBzb21lb25lIGFza2VkIHVz
IHRvIGVuYWJsZSBpdC4gKi8KICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogI3VuZGVmIEVOQUJMRV9G
VExfSklUCkBAIC0xMDAwLDExICsxMDAyLDE5IEBACiAjZGVmaW5lIFVTRV9MTElOVF9FTUJFRERF
RF9PUENPREVfSUQgMQogI2VuZGlmCiAKKyN1bmRlZiBFTkFCTEVfRlRMX0pJVAorCiAvKiBVc2Ug
X19idWlsdGluX2ZyYW1lX2FkZHJlc3MoMSkgdG8gZ2V0IENhbGxGcmFtZSogKi8KLSNpZiBDT01Q
SUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShBUk02NCkgfHwgQ1BVKFg4Nl82NCkpICYmIChP
UyhMSU5VWCkgfHwgT1MoREFSV0lOKSkKKyNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYg
KENQVShBUk02NCkgfHwgQ1BVKFg4Nl82NCkpCiAjZGVmaW5lIFVTRV9CVUlMVElOX0ZSQU1FX0FE
RFJFU1MgMQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyNpZiAhVVNFKEJVSUxUSU5f
RlJBTUVfQUREUkVTUykKKyNlcnJvciAiRlRMIEpJVCByZXF1aXJlcyBfX2J1aWx0aW5fZnJhbWVf
YWRkcmVzcyIKKyNlbmRpZgorI2VuZGlmCisKIC8qIFJlZ3VsYXIgRXhwcmVzc2lvbiBUcmFjaW5n
IC0gU2V0IHRvIDEgdG8gdHJhY2UgUmVnRXhwJ3MgaW4ganNjLiAgUmVzdWx0cyBkdW1wZWQgYXQg
ZXhpdCAqLwogI2RlZmluZSBFTkFCTEVfUkVHRVhQX1RSQUNJTkcgMAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGRmMWI4
MWNmYjg2M2I5ZTlmZTc5OTAyYThhZTBjMzljNmQ0MmVhNmQuLjE1Nzk0YmE1NzUwZGEzOGNhMTc4
NDhiMmNmZjAyMzRiYWI1OGM5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC01MzY4LDcgKzUzNjgsNyBAQCBzdWIgR2Vu
ZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBJR05PUkVfV0FSTklOR1NfQkVHSU4oXCJmcmFtZS1hZGRyZXNzXCIpXG4iKTsKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSUdO
T1JFX1dBUk5JTkdTX0VORFxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBK
U0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7XG4iKTsKKyAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEpTQzo6SklUT3BlcmF0aW9uRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
O1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4IGVhODMzYTFmMTc2
MDIwM2RiY2NiYzM2OWRhNzk3N2QyODYwN2M0MzcuLmI1MGZhMDVhOWMxNmZjYzM4YTAyNjcxYTkw
NjliZDk3ZmViMzIyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC0xMTQxLDcgKzExNDEsNyBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25HZXRBdHRyaWJ1dGVXaXRobwogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUt
YWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25GcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMTc3LDcgKzExNzcsNyBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25JdGVtV2l0aG91dFR5cGVDaAogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUt
YWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25GcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMjA5LDcgKzEyMDksNyBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25IYXNBdHRyaWJ1dGVXaXRobwogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUt
YWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25GcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25HZXRFbGVtZW50QnlJZFdpdAogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUt
YWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25GcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMjc1LDcgKzEyNzUsNyBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25HZXRFbGVtZW50c0J5TmFtZQogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUt
YWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25GcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJ
VEhlbHBlcnMuaAppbmRleCBlNmJlYTVkMmQ4ZmNhYzNkZTBhMWJiYzFkMGVhNzAwNTMyZmRlOTMw
Li5iNzk2ZjU5ZTlhMmE2YTc0NjY5N2ZlYzY4NDkzMmI4MzFkYjE0NzlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRIZWxwZXJzLmgKQEAgLTYxLDcgKzYxLDcgQEAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIHRvV3JhcHBlclNsb3coSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWMKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OlZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25GcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZ2xv
YmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCks
ICpzdGF0aWNfY2FzdDxXcmFwcGVkTm9kZSo+KHJlc3VsdCkpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381741</attachid>
            <date>2019-10-23 15:36:16 -0700</date>
            <delta_ts>2019-10-23 15:54:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203285-20191023153615.patch</filename>
            <type>text/plain</type>
            <size>225032</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjRlODVmYTFkYThkODczMjhiNjliMWJkNTQzZDBkZmJjZmZiYThkLi4wMDBlY2JiODc5N2RmZmJl
NGU5MzhlMzcxM2Y0M2Y1N2RjOTIyMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzI4
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0
YXJ0IHVzaW5nIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzIHRvIGdldCBDYWxsRnJhbWUqIGluIEpJ
VCBvcGVyYXRpb25zLiBGb3IgdGhlIHBsYXRmb3JtIHdoaWNoIGlzIG5vdCBzdXBwb3J0aW5nIHRo
aXMgQVBJIChNU1ZDKSwKKyAgICAgICAgd2UgcHV0IGZyYW1lLXBvaW50ZXIgdG8gdm0udG9wQ2Fs
bEZyYW1lIGluIHRoZSBjYWxsZXIgc2lkZS4gVGhlIHByb2JsZW0gaXMgdGhhdCBhbGwgQXBwbGUg
cGxhdGZvcm0gaXMgbm93IHVzaW5nIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzLAorICAgICAgICBh
bmQgd2UgYXJlIG5vdCB0ZXN0aW5nIHZtLnRvcENhbGxGcmFtZSB2ZXJzaW9uIGF0IGFsbC4KKwor
ICAgICAgICBUbyBmaW5kIG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24gY2FsbCwgd2UgaW50
cm9kdWNlIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyLiBXaGVuIFVTRShCVUlM
VElOX0ZSQU1FX0FERFJFU1MpIGlzIGVuYWJsZWQgYW5kCisgICAgICAgIGlmIGl0IGlzIGRlYnVn
IGJ1aWxkLCB3ZSBhbnl3YXkgcHV0IGZyYW1lLXBvaW50ZXIgdG8gdm0udG9wQ2FsbEZyYW1lLiBB
bmQgYWZ0ZXIgdGhhdCwgd2UgZW5zdXJlIHRoYXQgdm0udG9wQ2FsbEZyYW1lIGlzIHRoZSBzYW1l
IHRvIHRoZQorICAgICAgICBDYWxsRnJhbWUqIGdhaW5lZCBieSBfX2J1aWx0aW5fZnJhbWVfYWRk
cmVzcy4gQnkgZG9pbmcgdGhpcywgd2UgY2FuIGZpbmQgcGxhY2VzIG1pc3NpbmcgdGhpcyBjYWxs
IGluIGRlYnVnIGJ1aWxkIG9mIEFwcGxlIHBvcnRzLgorCisgICAgICAgIFdlIGFsc28gZm91bmQg
dGhhdCBGVEwncyBjdXN0b20gZ2V0dGVyIGNhbGxpbmcgaXMgcHV0dGluZyB3cm9uZyB2YWx1ZSB0
byB2bS50b3BDYWxsRnJhbWUuIFRoaXMgcGF0Y2ggZml4ZXMgaXQgdG9vLgorCisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0
b3JlQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpvcGVyYXRpb25Db21waWxlT1NSRXhp
dCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAo
SlNDOjpERkc6Om9wZXJhdGlvbkRlYnVnUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6REZHOjpPU1JFeGl0OjpkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmhhbmRsZUV4
aXRDb3VudHMpOgorICAgICAgICAoSlNDOjpERkc6Om9zcldyaXRlQmFycmllcik6CisgICAgICAg
ICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6b3NyRXhpdFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpvc3JF
eGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNh
bGxPckNvbnN0cnVjdFZhcmFyZ3NTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FsbFByZWZsaWdodCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhbGxDaGVjayk6CisgICAgICAgICogZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgor
ICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbkNvbXBpbGVGVExPU1JFeGl0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpjb21waWxlRlRMT1NSRXhpdCk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAg
KEpTQzo6RlRMOjpvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpvcGVyYXRpb25Db21waWxlRlRMTGF6eVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlRlRMTGF6eVNsb3dQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRM
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBm
dGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlvblRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpvc3JFeGl0R2VuZXJhdGlvblRodW5r
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpsYXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBmdGwvRlRMVGh1bmtzLmg6CisgICAgICAgIChKU0M6OkZUTDo6Z2Vu
ZXJhdGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OkZUTDo6VGh1bmtzOjpnZXRTbG93UGF0
aENhbGxUaHVuayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg6CisgICAg
ICAgIChKU0M6OlNsb3dQYXRoRnJhbWVUcmFjZXI6OlNsb3dQYXRoRnJhbWVUcmFjZXIpOgorICAg
ICAgICAoSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlcjo6SklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIpOgorICAgICAgICAoSlNDOjpKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlcjo6fkpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhjZXB0aW9uRnV6eik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6cHJlcGFyZUNhbGxPcGVyYXRpb24pOgor
ICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OmVuc3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBl
cnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwcmVwYXJlQ2FsbE9wZXJhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjpmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5l
cmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omhh
bmRsZUhvc3RDYWxsKToKKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpvcGVyYXRpb25BdG9taWNzQWRkKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9u
QXRvbWljc0FuZCk6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbkF0b21pY3NDb21wYXJlRXhjaGFu
Z2UpOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25BdG9taWNzRXhjaGFuZ2UpOgorICAgICAgICAo
SlNDOjpvcGVyYXRpb25BdG9taWNzSXNMb2NrRnJlZSk6CisgICAgICAgIChKU0M6Om9wZXJhdGlv
bkF0b21pY3NMb2FkKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uQXRvbWljc09yKToKKyAgICAg
ICAgKEpTQzo6b3BlcmF0aW9uQXRvbWljc1N0b3JlKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9u
QXRvbWljc1N1Yik6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbkF0b21pY3NYb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRI
X0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyKToKKyAg
ICAgICAgKEpTQzo6b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZyk6
CisgICAgICAgIChKU0M6Om9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljKToK
KyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKElHTk9SRV9XQVJOSU5H
U19CRUdJTik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdExvb3BUaWVyVXBDaGVjayk6CisgICAg
ICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OmVtaXRMb29wVGllclVwQ2hlY2spOgorICAgICAgICAqIHdhc20vV2FzbU9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25XYXNtVGhyb3dCYWRJ
NjQpOgorICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25XYXNtVHJpZ2dlck9TUkVudHJ5Tm93
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6b3BlcmF0aW9uV2FzbVRyaWdnZXJUaWVyVXBOb3cpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25UaHJvd0JhZEk2NCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Oldhc206OnRyaWdnZXJPU1JFbnRyeU5vdyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Oldhc206OnRyaWdnZXJUaWVyVXBOb3cpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2Fz
bU9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiB3YXNtL1dhc21UaHVua3MuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjp0cmlnZ2VyT01HRW50cnlUaWVyVXBUaHVua0dlbmVyYXRvcik6CisgICAgICAg
ICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmhhbmRsZUJhZEk2
NFVzZSk6CisKIDIwMTktMTAtMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgogCiAgICAgICAgIFN0cmluZy5wcm90b3R5cGUubWF0Y2hBbGwgc2hvdWxkIHRocm93IG9u
IG5vbi1nbG9iYWwgcmVnZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYWZhNDZhYjY3Zjk4MWZiZjI5YzI2ZDcwY2JhNjNiNDc4
YTg1OTc2NC4uZGI1MTI1NTU5YTc5OTI3YjU1Y2E1MTI3MGQ5Yjg4YjQ2MjNiOWFmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJlQ2FsbE9wZXJh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAz
Mjg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5h
YmxlIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIHJlZ2FyZGxlc3Mgb2YgcGxhdGZvcm0gaXMg
dGhlIGNvbXBpbGVycyBhbmQgYXJjaGl0ZWN0dXJlcyBtYXRjaC4KKworICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybS5oOgorCiAyMDE5LTEwLTIyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFrZSBgSlNHbG9iYWxPYmplY3QqYCB0aHJlYWRpbmcgY2hhbmdlIG1v
cmUgc3RhYmlsaXplZCBieSBhZGRpbmcgdGVzdHMgYW5kIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA5M2ExNjU0NGFlZDQ2MDU4NDU0ODZlYTc5MTYzMjQ5N2I1N2Y1NGUyLi4xODEyM2NjNTI2MDQ0
YmYyNmQ5MDcxZjM5NTk0YWY5YjRmMmVkODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzI4NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciBpbnN0ZWFkIG9mIE5hdGl2ZUNhbGxGcmFtZVRyYWNlci4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERP
TUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlV2l0aG91dFR5cGVDaGVjayk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1XaXRob3V0VHlw
ZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
SGFzQXR0cmlidXRlV2l0aG91dFR5cGVDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RE
T01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkV2l0aG91dFR5cGVDaGVjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRz
QnlOYW1lV2l0aG91dFR5cGVDaGVjayk6CisgICAgICAgICogZG9taml0L0RPTUpJVEhlbHBlcnMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6dG9XcmFwcGVyU2xvdyk6CisKIDIwMTktMTAt
MjMgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBCZSBzdHJpY3Qgb24g
cmVxdWVzdCdzIENvbnRlbnQtVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5jcHAKaW5kZXggZDBlMGE1ZmNkZjQ1MTQxZmI4ZmMzNWI5NjQ2ODIyN2M5M2IyYmUzMy4uNTEw
YTdhYjMxNTBiOWM2NzNhOTFhYmY4NzYzOWM0OTdmNmZkOWQxNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC05NTYsNyArOTU2LDcgQEAgQ29kZUxvY2F0aW9u
SnVtcDxKU0ludGVybmFsUHRyVGFnPiBPU1JFeGl0Ojpjb2RlTG9jYXRpb25Gb3JSZXBhdGNoKCkg
Y29uc3QKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihtX3Bh
dGNoYWJsZUp1bXBMb2NhdGlvbik7CiB9CiAKLXZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1
bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+JiBv
cGVyYW5kcykKK3ZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJz
JiBqaXQsIFZNJiB2bSwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9wZXJhbmRzKQog
ewogICAgIEhhc2hNYXA8TWluaWZpZWRJRCwgaW50PiBhbHJlYWR5QWxsb2NhdGVkQXJndW1lbnRz
OyAvLyBNYXBzIHBoYW50b20gYXJndW1lbnRzIG5vZGUgSUQgdG8gb3BlcmFuZC4KICAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2luZGV4KSB7CkBA
IC0xMDA3LDcgKzEwMDcsOCBAQCB2b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZQogCiAgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFy
Z3VtZW50c0R1cmluZ0V4aXQpLCBkZWNsdHlwZShvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVu
dHNEdXJpbmdFeGl0KT46OnZhbHVlLCAiV2UgYXNzdW1lIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRo
ZSBzYW1lIHNpZ25hdHVyZSBiZWxvdy4iKTsKICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQpPigKLSAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigmaml0LnZtKCkpLCBBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgR1BSSW5mbzo6cmVnVDAs
IEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cigmdm0pLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1l
KSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgaml0LnByZXBhcmVD
YWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkg
ewogICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZDoKICAgICAg
ICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJp
bmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwpAQCAtMTAyNiw3ICsxMDI3LDcgQEAgdm9p
ZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
T3BlcmFuZHM8VmFsdWVSZWNvdmUKICAgICB9CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBPU1JF
eGl0Ojpjb21waWxlT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db21waWxlT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEwODcsNyArMTA4OCw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAg
ICAgICAgICAgIGppdC5hZGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgQ0NhbGxI
ZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MocHJvZmlsZXJFeGl0LT5jb3VudGVyQWRkcmVzcygpKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBjb21waWxlRXhpdChqaXQsIHZtLCBleGl0LCBvcGVyYW5k
cywgcmVjb3ZlcnkpOworICAgICAgICBPU1JFeGl0Ojpjb21waWxlRXhpdChqaXQsIHZtLCBleGl0
LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwogCiAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBjb2RlQmxvY2spOwogICAgICAgICBleGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYo
CkBAIC0xMTE1LDcgKzExMTYsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVs
cGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgIGRl
YnVnSW5mby0+a2luZCA9IGV4aXQubV9raW5kOwogICAgICAgICBkZWJ1Z0luZm8tPmJ5dGVjb2Rl
SW5kZXggPSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CiAKLSAgICAgICAgaml0
LmRlYnVnQ2FsbCh2bSwgZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFpbHVyZSwgZGVi
dWdJbmZvKTsKKyAgICAgICAgaml0LmRlYnVnQ2FsbCh2bSwgb3BlcmF0aW9uRGVidWdQcmludFNw
ZWN1bGF0aW9uRmFpbHVyZSwgZGVidWdJbmZvKTsKICAgICB9CiAKICAgICAvLyBQZXJmb3JtIHNw
ZWN1bGF0aW9uIHJlY292ZXJ5LiBUaGlzIG9ubHkgY29tZXMgaW50byBwbGF5IHdoZW4gYW4gb3Bl
cmF0aW9uCkBAIC0xNjEzLDcgKzE2MTQsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KEND
YWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAg
Ly8gTm90ZSB0aGF0IHdlIGFsc28gcm91Z2hseSBhc3N1bWUgdGhhdCB0aGUgYXJndW1lbnRzIG1p
Z2h0IHN0aWxsIGJlIG1hdGVyaWFsaXplZCBvdXRzaWRlIG9mIGl0cwogICAgIC8vIGlubGluZSBj
YWxsIGZyYW1lIHNjb3BlIC0gYnV0IGZvciBub3cgdGhlIERGRyB3b3VsZG4ndCBkbyB0aGF0Lgog
Ci0gICAgZW1pdFJlc3RvcmVBcmd1bWVudHMoaml0LCBvcGVyYW5kcyk7CisgICAgZW1pdFJlc3Rv
cmVBcmd1bWVudHMoaml0LCB2bSwgb3BlcmFuZHMpOwogCiAgICAgLy8gQWRqdXN0IHRoZSBvbGQg
SklUJ3MgZXhlY3V0ZSBjb3VudGVyLiBTaW5jZSB3ZSBhcmUgZXhpdGluZyBPU1IsIHdlIGtub3cK
ICAgICAvLyB0aGF0IGFsbCBuZXcgY2FsbHMgaW50byB0aGlzIGNvZGUgd2lsbCBnbyB0byB0aGUg
bmV3IEpJVCwgc28gdGhlIGV4ZWN1dGUKQEAgLTE2NTEsNyArMTY1Miw3IEBAIHZvaWQgT1NSRXhp
dDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYg
ZXhpdCwgY29uc3QKICAgICAvLyBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBzZXQgdGhlIGNv
dW50ZXIgdG8KICAgICAvLyBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkuCiAK
LSAgICBoYW5kbGVFeGl0Q291bnRzKGppdCwgZXhpdCk7CisgICAgaGFuZGxlRXhpdENvdW50cyh2
bSwgaml0LCBleGl0KTsKIAogICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCiAKQEAg
LTE2NjEsNyArMTY2Miw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJz
JiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICBhZGp1c3RBbmRK
dW1wVG9UYXJnZXQodm0sIGppdCwgZXhpdCk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiBPU1JF
eGl0OjpkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCB2b2lkKiBkZWJ1Z0luZm9SYXcsIHZvaWQqIHNjcmF0Y2gpCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgdm9pZCogZGVidWdJbmZvUmF3LCB2b2lkKiBzY3JhdGNoKQogewogICAgIFZNJiB2
bSA9IGNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZNKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
LmgKaW5kZXggZDFmYzVmMWY2YjQwMDBiZDdkY2VmMzM3MjdkNmM5NjdlMWI1MTViYy4uYTdlNTg3
OGMwNzE3MDhhMWRhNzZjMGIwZWI1NGQ1NGYxYTA0ZWI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmgKQEAgLTEzOCw2ICsxMzgsOSBAQCBzdHJ1Y3QgT1NSRXhpdFN0YXRl
IDogUmVmQ291bnRlZDxPU1JFeGl0U3RhdGU+IHsKICAgICBQcm9maWxlcjo6T1NSRXhpdCogcHJv
ZmlsZXJFeGl0IHsgbnVsbHB0ciB9OwogfTsKIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbXBpbGVPU1JFeGl0KENhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWJ1Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxGcmFtZSosIHZv
aWQqLCB2b2lkKikgV1RGX0lOVEVSTkFMOworCiAvLyA9PT0gT1NSRXhpdCA9PT0KIC8vCiAvLyBU
aGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgaG93IHRvIGV4aXQgdGhlIHNwZWN1bGF0aXZlIHBhdGgg
YnkKQEAgLTE0NSw3ICsxNDgsOCBAQCBzdHJ1Y3QgT1NSRXhpdFN0YXRlIDogUmVmQ291bnRlZDxP
U1JFeGl0U3RhdGU+IHsKIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRCYXNlIHsKICAg
ICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRpbmdBVmFsdWVQ
cm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1bnNpZ25lZCBy
ZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgpOwogCi0gICAgc3RhdGljIHZvaWQgSklUX09QRVJBVElP
TiBjb21waWxlT1NSRXhpdChDYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CisgICAgZnJpZW5kIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXhpdChDYWxsRnJhbWUqKTsKKwog
ICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVPU1JFeGl0KFByb2JlOjpDb250ZXh0Jik7CiAKICAgICBD
b2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX3BhdGNoYWJsZUp1bXBMb2NhdGlv
bjsKQEAgLTE2OCw4ICsxNzIsOCBAQCBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBPU1JFeGl0QmFz
ZSB7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJz
JiwgVk0mLCBjb25zdCBPU1JFeGl0JiwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mLCBT
cGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgc3RhdGljIHZvaWQgZW1pdFJlc3RvcmVBcmd1bWVu
dHMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mKTsKLSAgICBz
dGF0aWMgdm9pZCBKSVRfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZh
aWx1cmUoQ2FsbEZyYW1lKiwgdm9pZCosIHZvaWQqKSBXVEZfSU5URVJOQUw7CisgICAgc3RhdGlj
IHZvaWQgZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiwgVk0mLCBjb25zdCBPcGVy
YW5kczxWYWx1ZVJlY292ZXJ5PiYpOworICAgIGZyaWVuZCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxsRnJhbWUqLCB2b2lkKiwgdm9p
ZCopOwogfTsKIAogc3RydWN0IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAKaW5kZXggNTQ4NzdiOTFkMGJmZDRmMTg0OTEwNDE2OWY3NWMxOWYzMzM0NTQ1Ni4uMDFlZTFi
N2M4MDNmZThkNGE2ZWU5MjNjZmUyYzQ1MmRmYTIwMWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMzks
NyArMzksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXZvaWQgaGFu
ZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQp
Cit2b2lkIGhhbmRsZUV4aXRDb3VudHMoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
T1NSRXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgaWYgKCFleGl0S2luZE1heUpldHRpc29uKGV4aXQu
bV9raW5kKSkgewogICAgICAgICAvLyBGSVhNRTogV2UgbWF5IHdhbnQgdG8gbm90aWNlIHRoYXQg
d2UncmUgZnJlcXVlbnRseSBleGl0aW5nCkBAIC0xMDMsOCArMTAzLDkgQEAgdm9pZCBoYW5kbGVF
eGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAg
ICAKICAgICByZW9wdGltaXplTm93LmxpbmsoJmppdCk7CiAgICAgCi0gICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyk+KEdQUkluZm86OnJlZ1Qw
LCBHUFJJbmZvOjpyZWdUMywgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZleGl0KSk7
Ci0gICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdykpLCBHUFJJbmZv
Ojpub25BcmdHUFIwKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9u
VHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KT4oR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1Qz
LCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmV4aXQpKTsKKyAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25UcmlnZ2Vy
UmVvcHRpbWl6YXRpb25Ob3cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgaml0LmNhbGwo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBBc3NlbWJseUhlbHBl
cnM6Okp1bXAgZG9uZUFkanVzdGluZyA9IGppdC5qdW1wKCk7CiAgICAgCkBAIC0zMzksNiArMzQw
LDcgQEAgc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBq
aXQsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmEKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAg
b3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0aG91dEZlbmNl
KG93bmVyKTsKIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25PU1JX
cml0ZUJhcnJpZXIpPigmdm0sIG93bmVyKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24o
dm0pOwogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRlQmFycmllcikpLCBzY3Jh
dGNoKTsKICAgICBqaXQuY2FsbChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaApp
bmRleCA0ZmM5OTZmMDBkMGNiMjg4YThmNDQ5ZmFjNTI1ZWM5ZmM1YzkzMmQyLi5jODUwOTRjMzhh
Y2MzOWVmOTg3NGVjMTA5ZjhmYWMyMDczYTczYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKQEAgLTM2LDcgKzM2LDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIGhhbmRsZUV4aXRD
b3VudHMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKK3ZvaWQgaGFuZGxlRXhp
dENvdW50cyhWTSYsIENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7CiB2b2lkIHJl
aWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsK
IHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NS
RXhpdEJhc2UmKTsKIHZvaWQqIGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2Rl
QmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNh
bGxGcmFtZTo6S2luZCBjYWxsZXJLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDZhZWU1NTQyNzM1NzI2
YjYwNDFhNDc2ODBhMzVlMzU1ZTYzNDliZjguLjcwZWZkNmJlOTYwOTNhNGY1ZWRhODZlYzlmNzRm
MjFhYzdhODZjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVG9UaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90U3RyaWN0TW9k
ZSkpOwogfQpAQCAtMzAyLDcgKzMwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9k
ZSkpOwogfQpAQCAtMzExLDcgKzMxMSw3IEBAIEpTQXJyYXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uT2JqZWN0S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPYmplY3QpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0zMjQsNyArMzI0LDcgQEAg
SlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5
TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpOwogfQog
CkBAIC0zMzIsNyArMzMyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVj
dENyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQ
cm90b3R5cGUpOwpAQCAtMzUxLDcgKzM1MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25PYmplY3RDcmVhdGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9i
amVjdChnbG9iYWxPYmplY3QsIHByb3RvdHlwZSk7CiB9CiAKQEAgLTM1OSw3ICszNTksNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChjb25zdHJ1
Y3Rvci0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29u
c3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAgIGF1dG8gcmFy
ZURhdGEgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJlUmFyZURhdGFB
bmRBbGxvY2F0aW9uUHJvZmlsZShnbG9iYWxPYmplY3QsIGlubGluZUNhcGFjaXR5KTsKQEAgLTM4
OCw3ICszODgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUHJvbWlz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iagogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VDb25zdHJ1Y3Rv
cigpLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtMzk5LDcgKzM5OSw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVJbnRlcm5hbFByb21pc2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IoKSwg
Y29uc3RydWN0b3IsIGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlU3RydWN0dXJlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtNDEwLDcgKzQxMCw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShnbG9iYWxPYmplY3QsIG51bGxwdHIsIGNvbnN0cnVjdG9yLCBnbG9iYWxPYmplY3QtPmdlbmVy
YXRvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3Jl
YXRlQXN5bmNHZW5lcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBjb25zdHJ1Y3Rvciwg
Z2xvYmFsT2JqZWN0LT5hc3luY0dlbmVyYXRvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKQEAgLTQzMiw3ICs0MzIsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRUYXJnZXQpOwogICAgIEFTU0VSVCgh
dmFsdWUuaXNPYmplY3QoKSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1YKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFRhcmdldCk7CkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU1vZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBiaWdJ
bnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwg
SlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewogICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTQ4Myw3ICs0ODMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0Tm90KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVl
IG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKQEAgLTUwMSw3ICs1MDEsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAog
ICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNC
aWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKICAgICAgICAgcmV0
dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwpAQCAt
NTE4LDcgKzUxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJ
bnQqIHsKICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFsT2JqZWN0LCBs
ZWZ0LCByaWdodCk7CkBAIC01MzUsNyArNTM1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIGJpZ0ludE9wID0gW10g
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCog
cmlnaHQpIC0+IEpTQmlnSW50KiB7CiAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Yml0d2lzZVhv
cihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTU1Miw3ICs1NTIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBh
dXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50
KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7CiAgICAgICAgIHJldHVybiBK
U0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwpAQCAtNTY5LDcg
KzU2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRS
U2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsK
ICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2JhbE9iamVjdCwg
bGVmdCwgcmlnaHQpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKTsKQEAgLTYwMyw3ICs2MDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1ZSBvcDEgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMik7CkBAIC02MTUsNyArNjE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZURpdihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBiaWdJbnRP
cCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogbGVmdCwgSlNC
aWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewogICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmRp
dmlkZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTYzMiw3ICs2MzIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAg
ICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmln
SW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7CiAgICAgICAgIHJldHVy
biBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwpAQCAt
NjQ5LDcgKzY0OSw3IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQWJzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKQEAgLTY2
Miw3ICs2NjIsNyBAQCB1aW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoQ2x6MzIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZAogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CkBAIC02NzUs
NyArNjc1LDcgQEAgZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhGUm91bmQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEoKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwpAQCAtNjg5LDcg
KzY4OSw3IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoIyNjYXBpdGFsaXpl
ZE5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7IFwKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7IFwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7IFwKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOyBcCisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOyBcCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOyBcCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7IFwK
ICAgICBkb3VibGUgcmVzdWx0ID0gb3AxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7IFwKQEAgLTcw
Myw3ICs3MDMsNyBAQCBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aFNxcnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVgogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CkBAIC03MTYs
NyArNzE2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aFJv
dW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsK
QEAgLTcyOSw3ICs3MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkFyaXRoRmxvb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQXJn
dW1lbnQpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJpdGhDZWlsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRBcmd1bWVudCk7CkBAIC03NTUsNyArNzU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Bcml0aFRydW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTc4Miw3ICs3ODIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwpAQCAtODI0LDcgKzgyNCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxDZWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHByb3BlcnR5
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CkBAIC04NzAsNyArODcwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CiAgICAgcmV0dXJuIGdldEJ5VmFsQ2VsbEludChnbG9iYWxPYmplY3QsIHZtLCBiYXNlLCBpbmRl
eCk7CiB9CkBAIC04NzksNyArODc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGdldEJ5VmFsQ2VsbEludChn
bG9iYWxPYmplY3QsIHZtLCBiYXNlLCBpbmRleCk7CiB9CkBAIC04ODgsNyArODg4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmEKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC05MDIsNyArOTAy
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVj
dFN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N5bWJvbChzeW1ib2wpLT5wcml2YXRl
TmFtZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0QnlWYWxPYmplY3QoZ2xvYmFs
T2JqZWN0LCB2bSwgYXNPYmplY3QoYmFzZSksIHByb3BlcnR5TmFtZSkpOwpAQCAtOTEyLDcgKzkx
Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmljdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICAKICAgICBwdXRCeVZhbEludGVybmFsPHRydWUsIGZhbHNlPihnbG9iYWxPYmpl
Y3QsIHZtLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwogfQpA
QCAtOTIxLDcgKzkyMSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE5v
blN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZhbEludGVybmFsPGZhbHNlLCBmYWxz
ZT4oZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZEJhc2UsIGVuY29kZWRQcm9wZXJ0eSwgZW5jb2Rl
ZFZhbHVlKTsKIH0KQEAgLTkzMCw3ICs5MzAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcHV0QnlWYWxJbnRlcm5h
bDx0cnVlLCBmYWxzZT4oZ2xvYmFsT2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZW5jb2RlKGNlbGwpLCBl
bmNvZGVkUHJvcGVydHksIGVuY29kZWRWYWx1ZSk7CiB9CkBAIC05MzksNyArOTM5LDcgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
CiAgICAgcHV0QnlWYWxJbnRlcm5hbDxmYWxzZSwgZmFsc2U+KGdsb2JhbE9iamVjdCwgdm0sIEpT
VmFsdWU6OmVuY29kZShjZWxsKSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwogfQpA
QCAtOTQ4LDcgKzk0OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENl
bGxTdHJpbmdTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVybmFsPHRydWUs
IGZhbHNlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBhc1N0cmluZyhzdHJpbmcpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CkBAIC05NTcsNyArOTU3LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0
QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWw8ZmFsc2UsIGZhbHNlPihnbG9iYWxPYmplY3QsIHZtLCBj
ZWxsLCBhc1N0cmluZyhzdHJpbmcpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9
CkBAIC05NjYsNyArOTY2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
Q2VsbFN5bWJvbFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N5bWJvbChz
eW1ib2wpLT5wcml2YXRlTmFtZSgpOwogICAgIHB1dEJ5VmFsQ2VsbEludGVybmFsPHRydWUsIGZh
bHNlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpKTsKQEAgLTk3Niw3ICs5NzYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IGFzU3ltYm9sKHN5bWJvbCktPnByaXZhdGVOYW1lKCk7CiAgICAgcHV0QnlWYWxDZWxs
SW50ZXJuYWw8ZmFsc2UsIGZhbHNlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKQEAgLTk4Niw3ICs5ODYsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmlj
dChKU0dsb2JhbE9iamVjdCogZ2xvYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgCiAgICAgaWYgKGluZGV4ID49IDApIHsKICAgICAgICAgb2JqZWN0LT5wdXRCeUluZGV4SW5s
aW5lKGdsb2JhbE9iamVjdCwgaW5kZXgsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCB0
cnVlKTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBpZiAoaW5kZXggPj0gMCkgewog
ICAgICAgICBvYmplY3QtPnB1dEJ5SW5kZXhJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpbmRleCwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGZhbHNlKTsKQEAgLTEwMTgsNyArMTAxOCw3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91
bmRzU3RyaWN0KEpTR2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91
YmxlLCB2YWx1ZSk7CiAgICAgCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChKU0ds
b2JhbE9iagogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1
ZSBqc1ZhbHVlID0gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdmFsdWUpOwogICAg
IApAQCAtMTA1NCw3ICsxMDU0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERv
dWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QoSlNHbG9iYWwKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gSlNWYWx1ZShK
U1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdmFsdWUpOwogCkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJh
eUJvdW5kc05vblN0cmljdChKU0dsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCB2
YWx1ZSk7CiAKQEAgLTEwODgsNyArMTA4OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZhbEludGVybmFs
PHRydWUsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRCYXNlLCBlbmNvZGVkUHJvcGVy
dHksIGVuY29kZWRWYWx1ZSk7CiB9CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcHV0
QnlWYWxJbnRlcm5hbDxmYWxzZSwgdHJ1ZT4oZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZEJhc2Us
IGVuY29kZWRQcm9wZXJ0eSwgZW5jb2RlZFZhbHVlKTsKIH0KQEAgLTExMDYsNyArMTEwNiw3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICAKICAgICBwdXRCeVZhbEludGVybmFsPHRydWUsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0s
IEpTVmFsdWU6OmVuY29kZShjZWxsKSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwog
fQpAQCAtMTExNSw3ICsxMTE1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0Q2VsbE5vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHB1dEJ5VmFsSW50ZXJuYWw8ZmFsc2Us
IHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmVuY29kZShjZWxsKSwgZW5jb2RlZFBy
b3BlcnR5LCBlbmNvZGVkVmFsdWUpOwogfQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ1N0cmljdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmEKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0
QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWw8dHJ1ZSwgdHJ1ZT4oZ2xvYmFsT2JqZWN0LCB2bSwgY2Vs
bCwgYXNTdHJpbmcoc3RyaW5nKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogfQpA
QCAtMTEzMyw3ICsxMTMzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0Q2VsbFN0cmluZ05vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2wKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWw8ZmFs
c2UsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIGNlbGwsIGFzU3RyaW5nKHN0cmluZyksIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KQEAgLTExNDIsNyArMTE0Miw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xTdHJpY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gYXNTeW1ib2woc3ltYm9sKS0+cHJpdmF0ZU5hbWUoKTsKICAg
ICBwdXRCeVZhbENlbGxJbnRlcm5hbDx0cnVlLCB0cnVlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxs
LCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKQEAgLTExNTIs
NyArMTE1Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENl
bGxTeW1ib2xOb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTeW1ib2woc3ltYm9sKS0+
cHJpdmF0ZU5hbWUoKTsKICAgICBwdXRCeVZhbENlbGxJbnRlcm5hbDxmYWxzZSwgdHJ1ZT4oZ2xv
YmFsT2JqZWN0LCB2bSwgY2VsbCwgcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7CkBAIC0xMTYyLDcgKzExNjIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdChKU0dsb2JhbE9iamVjdAog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgaWYgKGluZGV4ID49IDApIHsKICAg
ICAgICAgb2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgMCwgUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTExNzYsNyArMTE3Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KEpTR2xvYmFs
T2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGlmIChpbmRleCA+PSAw
KSB7CiAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwpAQCAtMTE5MSw3ICsxMTkxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2goSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW4KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IAogICAgIGFycmF5LT5wdXNoSW5saW5lKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXkt
Pmxlbmd0aCgpKSk7CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgYXJyYXktPnB1c2hJ
bmxpbmUoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCB2YWx1
ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXktPmxlbmd0aCgp
KSk7CkBAIC0xMjExLDcgKzEyMTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgLy8gV2UgYXNzdW1lIHRoYXQgbXVsdGlwbGUgSlNBcnJheTo6cHVz
aCBjYWxscyB3aXRoIEFycmF5V2l0aEludDMyL0FycmF5V2l0aENvbnRpZ3VvdXMgZG8gbm90IGNh
dXNlIEpTIHRyYXBzLgpAQCAtMTIzNiw3ICsxMjM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2hEb3VibGVNdWx0aXBsZShKU0dsb2JhbE9iamVjdCog
Z2wKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIFdlIGFzc3VtZSB0aGF0IG11bHRpcGxlIEpT
QXJyYXk6OnB1c2ggY2FsbHMgd2l0aCBBcnJheVdpdGhEb3VibGUgZG8gbm90IGNhdXNlIEpTIHRy
YXBzLgpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25BcnJheVBvcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0EKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXJyYXktPnBvcChnbG9iYWxPYmplY3QpKTsKIH0KQEAgLTEyNjYsNyArMTI2Niw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3BBbmRSZWNvdmVyTGVu
Z3RoKEpTR2xvYmFsT2JqZWN0KiBnCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICAKICAgICBhcnJheS0+YnV0dGVyZmx5KCktPnNldFB1YmxpY0xlbmd0aChhcnJheS0+YnV0dGVy
Zmx5KCktPnB1YmxpY0xlbmd0aCgpICsgMSk7CiAgICAgCkBAIC0xMjc5LDcgKzEyNzksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBPYmplY3QtPmV4ZWNJbmxp
bmUoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCkpOwogfQpAQCAtMTI5MCw3ICsxMjkwLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFIKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKICAgICBKU1Zh
bHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CkBAIC0xMzA4
LDcgKzEzMDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4
cEV4ZWNHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIAogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAg
LTEzMzEsNyArMTMzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UmVnRXhwRXhlY05vbkdsb2JhbE9yU3RpY2t5KEpTR2xvYmFsT2JqZWN0CiAKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblJlZ0V4cE1hdGNoRmFzdFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYgogCiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGlmICghcmVnRXhwT2JqZWN0LT5yZWdF
eHAoKS0+Z2xvYmFsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwT2Jq
ZWN0LT5leGVjSW5saW5lKGdsb2JhbE9iamVjdCwgYXJndW1lbnQpKTsKQEAgLTEzNjgsNyArMTM2
OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwTWF0Y2hG
YXN0R2xvYmFsU3RyaW5nKEpTR2xvYmFsT2JqZWN0CiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0x
Mzk3LDcgKzEzOTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBh
cnNlSW50Tm9SYWRpeEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsbwogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwg
SlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKICAgICAgICAg
Ly8gVGhpcyB2ZXJzaW9uIGlzIGFzIGlmIHJhZGl4IHdhcyB1bmRlZmluZWQuIEhlbmNlLCB1bmRl
ZmluZWQudG9OdW1iZXIoKSA9PT0gMC4KQEAgLTE0MDksNyArMTQwOSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1JhZGl4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBhdXRvIHZpZXdXaXRoU3RyaW5n
ID0gc3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKQEAgLTE0
MjMsNyArMTQyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGFy
c2VJbnRTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gc3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKQEAgLTE0MzYsNyArMTQzNiw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGFyc2VJbnRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiB0
b1N0cmluZ1ZpZXcoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBbJl0gKFN0
cmluZ1ZpZXcgdmlldykgewogICAgICAgICByZXR1cm4gcGFyc2VJbnRSZXN1bHQocGFyc2VJbnQo
dmlldywgcmFkaXgpKTsKQEAgLTE0NDksNyArMTQ0OSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVnCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiByZWdF
eHBPYmplY3QtPnRlc3RJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpbnB1dCk7CiB9CkBAIC0xNDYwLDcg
KzE0NjAsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iagogICAgIAogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRBcmd1bWVudCk7CiAKQEAgLTE0NzYsNyArMTQ3Niw3IEBAIHNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGJhc2UgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpOwpAQCAtMTQ5OSw3ICsxNDk5LDcgQEAgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpT
QmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJ
bnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNTExLDcgKzE1
MTEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90QmlnSW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICBKU0JpZ0ludCogb3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7
CiAKQEAgLTE1MjIsNyArMTUyMiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25N
dWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpz
Q2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2Fz
dDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNTM0LDcgKzE1MzQsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Q2VsbCogbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNCaWdJ
bnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCog
cmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKQEAgLTE1NDYsNyArMTU0Niw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICAKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihv
cDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIp
OwpAQCAtMTU1OCw3ICsxNTU4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBv
d0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8KIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9
IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpz
Q2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU0JpZ0lu
dCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiBy
aWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwpAQCAtMTU4Miw3ICsxNTgyLDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0ludChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsK
ICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKQEAg
LTE1OTQsNyArMTU5NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25BZGRCaWdJ
bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nh
c3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8
SlNCaWdJbnQqPihvcDIpOwpAQCAtMTYwNiw3ICsxNjA2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpTQmlnSW50
KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJp
Z2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNjE4LDcgKzE2MTgsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3Ax
KTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsK
QEAgLTE2MzAsNyArMTYzMCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRY
b3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2Fz
dDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxK
U0JpZ0ludCo+KG9wMik7CkBAIC0xNjQyLDcgKzE2NDIsNyBAQCBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1cm4gSlNW
YWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIG9wMSwgb3AyKTsK
IH0KQEAgLTE2NTEsNyArMTY1MSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNh
bWVWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBzYW1lVmFsdWUoZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlOjpkZWNvZGUoYXJnMSksIEpTVmFsdWU6OmRlY29kZShhcmcyKSk7CiB9CkBA
IC0xNjYwLDcgKzE2NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWU6OmRlY29kZSh2YWx1ZSkudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KSk7CiB9CkBAIC0xNjY5
LDcgKzE2NjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvTnVt
YmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKEpTVmFs
dWU6OmRlY29kZSh2YWx1ZSkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSkpOwogfQpAQCAtMTY3OCw3
ICsxNjc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZh
bFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAg
LTE3MTgsNyArMTcxOCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0
aFRoaXNTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0V2l0aFRoaXM8dHJ1ZT4oZ2xvYmFsT2JqZWN0LCBl
bmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgaW1wbCkpOwogfQpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0V2l0aFRoaXM8
ZmFsc2U+KGdsb2JhbE9iamVjdCwgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlzLCBlbmNvZGVkVmFs
dWUsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIGltcGwpKTsKIH0KQEAgLTE3MzYsNyArMTczNiw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVu
dGlmaWVyIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpLnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTE3NDksNyArMTc0OSw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIHByb3BlcnR5
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpLnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKQEAgLTE3NzIsNyArMTc3Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWZpbmVEYXRhUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkUHJvcGVydHkpLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAg
LTE3ODUsNyArMTc4NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRh
UHJvcGVydHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZp
ZXIoZ2xvYmFsT2JqZWN0KTsKQEAgLTE3OTgsNyArMTc5OCw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBkZWZpbmVEYXRhUHJv
cGVydHkoZ2xvYmFsT2JqZWN0LCB2bSwgYmFzZSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJv
cGVydHkpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7CiB9CiAK
QEAgLTE4MDYsNyArMTgwNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVE
YXRhUHJvcGVydHlTeW1ib2woSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBkZWZpbmVEYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0
LCB2bSwgYmFzZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChwcm9wZXJ0eS0+cHJpdmF0ZU5hbWUoKSks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKIH0KIApAQCAtMTgy
NCw3ICsxODI0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29y
UHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQ
cm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMTgzNiw3ICsxODM2LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJp
bmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIElkZW50
aWZpZXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRpZmllcihnbG9iYWxPYmplY3Qp
OwpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmlu
ZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudChKU0dsb2JhbE9iamVjdCogZ2wKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZ2xvYmFs
T2JqZWN0LCB2bSwgYmFzZSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHkpLCBnZXR0
ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7CiB9CiAKQEAgLTE4NTYsNyArMTg1Niw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBk
ZWZpbmVBY2Nlc3NvclByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0sIGJhc2UsIElkZW50aWZpZXI6
OmZyb21VaWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmli
dXRlcyk7CiB9CiAKQEAgLTE4NjQsNyArMTg2NCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXJyYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBh
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PGNoYXIqPihjb25zdHJ1Y3RBcnJheShnbG9iYWxPYmplY3QsIGFycmF5U3RydWN0dXJl
LCBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4oYnVmZmVyKSwgc2l6ZSkpOwogfQpAQCAtMTg3Myw3ICsx
ODczLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdFbXB0eUFycmF5KFZNKiB2
bVBvaW50ZXIsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3QKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2lu
dGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICAKICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihKU0FycmF5OjpjcmVhdGUodm0s
IGFycmF5U3RydWN0dXJlKSk7CiB9CkBAIC0xODgyLDcgKzE4ODIsNyBAQCBjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZKHNpemUgPCAw
KSkKQEAgLTE5MDAsNyArMTkwMCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
QXJyYXlXaXRoU2l6ZUFuZEhpbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkoc2l6ZSA8IDApKQpAQCAtMTkyMCw3ICsxOTIw
LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyKFZNKiB2
bVBvaW50ZXIsIFN0cnVjdHVyZSogYXJyYXlTdHIKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVy
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICBBU1NFUlQoIWFycmF5U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICBhdXRv
KiBpbW11dGFibGVCdXR0ZXJmbHkgPSBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihpbW11
dGFibGVCdXR0ZXJmbHlDZWxsKTsKICAgICBBU1NFUlQoYXJyYXlTdHJ1Y3R1cmUtPmluZGV4aW5n
TW9kZSgpID09IGltbXV0YWJsZUJ1dHRlcmZseS0+aW5kZXhpbmdNb2RlKCkgfHwgaGFzQW55QXJy
YXlTdG9yYWdlKGFycmF5U3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpOwpAQCAtMTkzNSw3ICsx
OTM1LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoU2l6
ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdUeXBlZEFy
cmF5V2l0aFNpemU8SlNJbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVjdHVyZSwgbGVu
Z3RoLCB2ZWN0b3IpOwogfQogCkBAIC0xOTQ0LDcgKzE5NDQsNyBAQCBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKIH0K
IApAQCAtMTk1Myw3ICsxOTUzLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJ
bnQxNkFycmF5V2l0aFNpemUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBy
ZXR1cm4gbmV3VHlwZWRBcnJheVdpdGhTaXplPEpTSW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCB2
bSwgc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CiB9CiAKQEAgLTE5NjIsNyArMTk2Miw3IEBA
IGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVu
dCgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTSW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwg
V1RGOjpudWxsb3B0KSk7CiB9CiAKQEAgLTE5NzEsNyArMTk3MSw3IEBAIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplKAogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZTxKU0ludDMyQXJy
YXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBA
IC0xOTgwLDcgKzE5ODAsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludDMy
QXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOwogfQogCkBAIC0xOTg5LDcgKzE5ODks
NyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSgK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdUeXBlZEFycmF5
V2l0aFNpemU8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1cmUsIGxlbmd0
aCwgdmVjdG9yKTsKIH0KIApAQCAtMTk5OCw3ICsxOTk4LDcgQEAgY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKIH0K
IApAQCAtMjAwNyw3ICsyMDA3LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdV
aW50OENsYW1wZWRBcnJheVdpdGhTaXplKAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgcmV0dXJuIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZTxKU1VpbnQ4Q2xhbXBlZEFycmF5Pihn
bG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKIH0KIApAQCAtMjAx
Niw3ICsyMDE2LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50OENsYW1w
ZWRBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOwogfQogCkBAIC0yMDI1
LDcgKzIwMjUsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5
V2l0aFNpemUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gbmV3
VHlwZWRBcnJheVdpdGhTaXplPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVj
dHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBAIC0yMDM0LDcgKzIwMzQsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50KAogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50
MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpu
dWxsb3B0KSk7CiB9CiAKQEAgLTIwNDMsNyArMjA0Myw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIHJldHVybiBuZXdUeXBlZEFycmF5V2l0aFNpemU8SlNVaW50MzJBcnJheT4o
Z2xvYmFsT2JqZWN0LCB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CiB9CiAKQEAgLTIw
NTIsNyArMjA1Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3VWludDMyQXJy
YXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKIH0KIApAQCAtMjA2MSw3ICsyMDYxLDcg
QEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSgK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdUeXBlZEFycmF5
V2l0aFNpemU8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVjdHVyZSwgbGVu
Z3RoLCB2ZWN0b3IpOwogfQogCkBAIC0yMDcwLDcgKzIwNzAsNyBAQCBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQp
KTsKIH0KIApAQCAtMjA3OSw3ICsyMDc5LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIHJldHVybiBuZXdUeXBlZEFycmF5V2l0aFNpemU8SlNGbG9hdDY0QXJyYXk+KGdsb2Jh
bE9iamVjdCwgdm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBAIC0yMDg4LDcg
KzIwODgsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdp
dGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKIH0KIApAQCAtMjA5Niw3ICsyMDk2LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoVk0q
IHZtUG9pbnRlciwgU3RydWN0dXJlKgogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFs
dWUgaW5pdGlhbFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGluaXRpYWxWYWx1ZUVuY29kZWQpOwog
ICAgIEFTU0VSVChpbml0aWFsVmFsdWUgPT0ganNVbmRlZmluZWQoKSB8fCBpbml0aWFsVmFsdWUg
PT0ganNURFpWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0
ZSh2bSwgc3RydWN0dXJlLCBzY29wZSwgdGFibGUsIGluaXRpYWxWYWx1ZSk7CkBAIC0yMTA2LDcg
KzIxMDYsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJn
dW1lbnRzKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogcwogewogICAgIFZNJiB2bSA9ICp2bVBv
aW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIERpcmVjdEFyZ3VtZW50cyogcmVzdWx0ID0gRGlyZWN0QXJndW1lbnRzOjpjcmVhdGUo
CiAgICAgICAgIHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc3RkOjptYXgobGVuZ3RoLCBtaW5DYXBh
Y2l0eSkpOwogICAgIC8vIFRoZSBjYWxsZXIgd2lsbCBzdG9yZSB0byB0aGlzIG9iamVjdCB3aXRo
b3V0IGJhcnJpZXJzLiBNb3N0IGxpa2VseSwgYXQgdGhpcyBwb2ludCwgdGhpcyBpcwpAQCAtMjEy
MCw3ICsyMTIwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVNjb3Bl
ZEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIAogICAgIC8vIFdlIGNvdWxkIHBhc3MgdGhlIFNjb3BlZEFyZ3Vt
ZW50c1RhYmxlKiBhcyBhbiBhcmd1bWVudC4gV2UgY3VycmVudGx5IGRvbid0IGJlY2F1c2UgSQog
ICAgIC8vIGRpZG4ndCBmZWVsIGxpa2UgY2hhbmdpbmcgdGhlIG1heCBudW1iZXIgb2YgYXJndW1l
bnRzIGZvciBhIHNsb3cgcGF0aCBjYWxsIGZyb20gNiB0byA3LgpAQCAtMjEzNCw3ICsyMTM0LDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIHJldHVybiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUJ5Q29weWluZ0Zyb20oCiAgICAg
ICAgIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhcmd1bWVudFN0YXJ0LCBsZW5ndGgsIGNhbGxl
ZSk7CiB9CkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChWTSogdm1Qb2ludGVyLCBJbgogewog
ICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2
bS5oZWFwKTsKICAgICAKQEAgLTIxNzMsNyArMjE3Myw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KFZNKiB2bVBvaW50ZXIs
IEluCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBk
ZWZlckdDKHZtLmhlYXApOwogICAgIApAQCAtMjIwMiw3ICsyMjAyLDcgQEAgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVnaXN0ZXIKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnJlc3RQYXJhbWV0ZXJTdHJ1Y3R1cmUoKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZWdpc3RlcikgPT0gc2l6ZW9mKEpTVmFsdWUpLCAi
VGhpcyBpcyBhIHN0cm9uZyBhc3N1bXB0aW9uIGhlcmUuIik7CkBAIC0yMjE0LDcgKzIyMTQsNyBA
QCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RJc09iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBvYmplY3QpKTsKICAg
ICAKQEAgLTIyMjksNyArMjIyOSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9i
amVjdElzRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTT2Jq
ZWN0Kj4odm0sIG9iamVjdCkpOwogICAgIApAQCAtMjI0NCw3ICsyMjQ0LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblR5cGVPZk9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgQVNT
RVJUKGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgb2JqZWN0KSk7CiAgICAgCkBAIC0yMjU5
LDcgKzIyNTksNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9mT2JqZWN0
QXNUeXBlb2ZUeXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBv
YmplY3QpKTsKICAgICAKQEAgLTIyNzQsNyArMjI3NCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQWxsb2NhdGVTaW1wbGVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5
KFZNCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oCiAgICAgICAgIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0aWFsaXplZCh2bSwgMCwg
MCwgaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5LCBmYWxzZSwgMCkpOwpAQCAtMjI4NCw3ICsyMjg0
LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVNpbXBsZVByb3BlcnR5
U3RvcmFnZShWTSogdm1Qb2ludGVyLCBzaXplX3QKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVy
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPigKICAgICAgICAgQnV0dGVyZmx5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKHZtLCAwLCAwLCBuZXdTaXplLCBmYWxzZSwgMCkpOwpAQCAtMjI5
NCw3ICsyMjk0LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZUNvbXBs
ZXhQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5KFYKIHsKICAgICBWTSYgdm0gPSAq
dm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIEFTU0VSVCghb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oCkBAIC0yMzA1LDcg
KzIzMDUsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRlQ29tcGxleFBy
b3BlcnR5U3RvcmFnZShWTSogdm1Qb2ludGVyLCBKU09iagogewogICAgIFZNJiB2bSA9ICp2bVBv
aW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KAogICAgICAgICBvYmplY3Qt
PmFsbG9jYXRlTW9yZU91dE9mTGluZVN0b3JhZ2Uodm0sIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U2l6ZSkpOwpAQCAtMjMxNSw3ICsyMzE1LDcgQEAgY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25FbnN1cmVJbnQzMihWTSogdm1Qb2ludGVyLCBKU0Nl
bGwqIGNlbGwpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgaWYgKCFjZWxsLT5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIzMjksNyArMjMyOSw3IEBAIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRW5zdXJlRG91YmxlKFZNKiB2bVBvaW50ZXIsIEpTQ2Vs
bCogY2VsbCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBpZiAoIWNlbGwtPmlz
T2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjM0Myw3ICsyMzQzLDcgQEAgY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzKFZNKiB2bVBvaW50ZXIsIEpT
Q2VsbCogY2VsbCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBpZiAoIWNlbGwt
PmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjM1Nyw3ICsyMzU3LDcgQEAgY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25FbnN1cmVBcnJheVN0b3JhZ2UoVk0qIHZtUG9pbnRl
ciwgSlNDZWxsKiBjZWxsKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIGlmICgh
Y2VsbC0+aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzcxLDcgKzIzNzEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CkBAIC0yMzkx
LDcgKzIzOTEsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJv
cGVydHlCeUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGJhc2VDZWxsLT50b09iamVjdChn
bG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWShzdWJzY3JpcHQgPCAwKSkgewogICAgICAg
ICAvLyBHbyB0aGUgc2xvd2VzdCB3YXkgcG9zc2libGUgYmVjYXVzZSBuZWdhdGl2ZSBpbmRpY2Vz
IGRvbid0IHVzZSBpbmRleGVkIHN0b3JhZ2UuCkBAIC0yNDA0LDcgKzI0MDQsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTI0MjEsNyArMjQyMSw3IEBAIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogYmFz
ZSA9IGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0yNDM0LDcgKzI0MzQsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9JbmRleFN0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBpbnQzMgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRleCkuc3RyaW5n
KCkpOwogfQogCkBAIC0yNDQyLDcgKzI0NDIsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3UmVnZXhwV2l0aExhc3RJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBSZWdFeHAqIHJlZ2V4cCA9IHN0
YXRpY19jYXN0PFJlZ0V4cCo+KHJlZ2V4cFB0cik7CiAgICAgQVNTRVJUKHJlZ2V4cC0+aXNWYWxp
ZCgpKTsKQEAgLTI0NTMsNyArMjQ1Myw3IEBAIFN0cmluZ0ltcGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUmVzb2x2ZVJvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBzdHJpbmctPnZhbHVlKGds
b2JhbE9iamVjdCkuaW1wbCgpOwogfQpAQCAtMjQ2Miw3ICsyNDYyLDcgQEAgSlNTdHJpbmcqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nVmFsdWVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTI0ODEsNyArMjQ4MSw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdTdWJzdHIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAog
ICAgIHJldHVybiBqc1N1YnN0cmluZyh2bSwgZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8SlNTdHJpbmcq
PihjZWxsKSwgZnJvbSwgc3Bhbik7CiB9CkBAIC0yNDkwLDcgKzI0OTAsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nU2xpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZWxsKgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1N0
cmluZyogc3RyaW5nID0gYXNTdHJpbmcoY2VsbCk7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oSlNTdHJpbmc6Ok1heExlbmd0aCkgPD0gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSwgIiIpOwpAQCAtMjUwMSw3
ICsyNTAxLDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9Mb3dlckNhc2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHIKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CkBAIC0yNTIwLDcgKzI1MjAsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkludDMy
VG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJfdAogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKQEAgLTI1MzYsNyArMjUzNiw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW50NTJUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQ2NF90
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjU1Miw3ICsyNTUyLDcgQEAgY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Eb3VibGVUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3VibGUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yNTY4LDcgKzI1NjgsNyBAQCBj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkludDMyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaW50MzJUb1N0cmluZyh2bSwgdmFs
dWUsIHJhZGl4KSk7CiB9CkBAIC0yNTc3LDcgKzI1NzcsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oaW50NTJUb1N0cmluZyh2bSwgdmFsdWUsIHJhZGl4KSk7CiB9CkBA
IC0yNTg2LDcgKzI1ODYsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRvdWJsZVRv
U3RyaW5nV2l0aFZhbGlkUmFkaXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bnVtYmVyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRpeCkpOwogfQpAQCAtMjU5NSw3ICsyNTk1LDcg
QEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KFZNKiB2bVBvaW50ZXIsIGludDMyX3QgY2gKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAK
ICAgICByZXR1cm4ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0sIHN0YXRpY19jYXN0PFVDaGFy
PihjaGFyYWN0ZXIpKTsKIH0KQEAgLTI2MDQsNyArMjYwNCw3IEBAIFN5bWJvbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdTeW1ib2woVk0qIHZtUG9pbnRlcikKIHsKICAgICBWTSYgdm0gPSAq
dm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZSh2bSk7CiB9CkBAIC0yNjEzLDcgKzI2
MTMsNyBAQCBTeW1ib2wqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3U3ltYm9sV2l0aERlc2Ny
aXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
U3RyaW5nIHN0cmluZyA9IGRlc2NyaXB0aW9uLT52YWx1ZShnbG9iYWxPYmplY3QpOwpAQCAtMjYy
Niw3ICsyNjI2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1N0cmluZ09i
amVjdChWTSogdm1Qb2ludGVyLCBKU1N0cmluZyogc3RyaW5nLAogewogICAgIFZNJiB2bSA9ICp2
bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIAogICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZSh2bSwgc3RydWN0dXJl
LCBzdHJpbmcpOwogfQpAQCAtMjYzNSw3ICsyNjM1LDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVG9TdHJpbmdPbkNlbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHJldHVybiBKU1Zh
bHVlKGNlbGwpLnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7CiB9CkBAIC0yNjQ0LDcgKzI2NDQsNyBA
QCBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1N0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1N0cmluZyhnbG9iYWxPYmpl
Y3QpOwogfQpAQCAtMjY1Myw3ICsyNjUzLDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsKEpTR2xvYmFsT2JqZWN0KiBnbG8KIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHN0cmluZ0NvbnN0cnVj
dG9yKGdsb2JhbE9iamVjdCwgY2VsbCk7CiB9CkBAIC0yNjYyLDcgKzI2NjIsNyBAQCBKU1N0cmlu
ZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iagogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBy
ZXR1cm4gc3RyaW5nQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUodmFs
dWUpKTsKIH0KQEAgLTI2NzEsNyArMjY3MSw3IEBAIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk1ha2VSb3BlMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBqc1N0cmluZyhnbG9i
YWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKIH0KQEAgLTI2ODAsNyArMjY4MCw3IEBAIEpTU3RyaW5n
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1N0cmluCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJl
dHVybiBqc1N0cmluZyhnbG9iYWxPYmplY3QsIGEsIGIsIGMpOwogfQpAQCAtMjY4OSw3ICsyNjg5
LDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyQ2F0MihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEFT
U0VSVCghSlNWYWx1ZTo6ZGVjb2RlKGEpLmlzU3ltYm9sKCkpOwpAQCAtMjcwNiw3ICsyNzA2LDcg
QEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyQ2F0MyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEFTU0VS
VCghSlNWYWx1ZTo6ZGVjb2RlKGEpLmlzU3ltYm9sKCkpOwpAQCAtMjcyNiw3ICsyNzI2LDcgQEAg
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0Rm9yRG91Ymxl
KFZNKiB2bVBvaW50ZXIsIEVuY29kZWQKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgU2ltcGxlSnVt
cFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTI3
NDIsNyArMjc0Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCB0CiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIFN0cmluZ0ltcGwqIHN0ckltcGwgPSBzdHJpbmctPnZhbHVlKGdsb2JhbE9i
amVjdCkuaW1wbCgpOwpAQCAtMjc1Niw3ICsyNzU2LDcgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblN3aXRjaFN0cmluZ0FuZEdldEJyYW5jaE9mZnNldChKU0dsb2JhbE9iamVjdCog
Z2wKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgU3RyaW5nSW1wbCogc3RySW1wbCA9IHN0
cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KS5pbXBsKCk7CkBAIC0yNzkwLDcgKzI3OTAsNyBAQCB1
aW50cHRyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nTGVzcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGFzU3RyaW5nKGEpLT52YWx1ZShn
bG9iYWxPYmplY3QpLCBhc1N0cmluZyhiKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7CiB9CkBAIC0y
Nzk5LDcgKzI3OTksNyBAQCB1aW50cHRyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJl
U3RyaW5nTGVzc0VxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gIWNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihh
c1N0cmluZyhiKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSwgYXNTdHJpbmcoYSktPnZhbHVlKGdsb2Jh
bE9iamVjdCkpOwogfQpAQCAtMjgwOCw3ICsyODA4LDcgQEAgdWludHB0cl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0dyZWF0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGNvZGVQb2lu
dENvbXBhcmVMZXNzVGhhbihhc1N0cmluZyhiKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSwgYXNTdHJp
bmcoYSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwogfQpAQCAtMjgxNyw3ICsyODE3LDcgQEAgdWlu
dHB0cl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0dyZWF0ZXJFcShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgcmV0dXJuICFjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oYXNTdHJpbmcoYSktPnZhbHVlKGds
b2JhbE9iamVjdCksIGFzU3RyaW5nKGIpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsKIH0KQEAgLTI4
MjYsNyArMjgyNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ob3RpZnlXcml0ZShW
TSogdm1Qb2ludGVyLCBXYXRjaHBvaW50U2V0KiBzZXQpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9p
bnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKICAgICBzZXQtPnRvdWNoKHZtLCAiRXhlY3V0ZWQgTm90aWZ5V3JpdGUiKTsKIH0KQEAgLTI4
MzUsNyArMjgzNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3Zl
cmZsb3dGb3JWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiB9CkBA
IC0yODQ0LDcgKzI4NDQsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZU9m
VmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEFyZ3VtZW50cyk7CiAgICAgCiAgICAgcmV0dXJuIHNpemVPZlZhcmFyZ3MoZ2xv
YmFsT2JqZWN0LCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKQEAgLTI4NTQsNyArMjg1
NCw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNPd25Qcm9wZXJ0eShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBK
U1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKQEAgLTI4NzUsNyArMjg3
NSw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25OdW1iZXJJc0ludGVnZXIoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICByZXR1cm4gTnVtYmVyQ29uc3RydWN0b3I6OmlzSW50ZWdlckltcGwoSlNWYWx1
ZTo6ZGVjb2RlKHZhbHVlKSk7CiB9CiAKQEAgLTI4ODMsNyArMjg4Myw3IEBAIGludDMyX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGludDMyX3QgbGVuZ3RoID0gYnV0
dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKQEAgLTI5MDgsNyArMjkwOCw3IEBAIGludDMyX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZUludDMyT3JDb250aWd1b3VzKEpT
R2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHNlYXJjaEVsZW1l
bnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTI5MzEsNyArMjkzMSw3IEBA
IGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZURvdWJsZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogCkBAIC0yOTUzLDcgKzI5NTMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TG9hZFZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJfdCBmaQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7CiAgICAgCiAgICAgbG9hZFZhcmFyZ3MoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcihmaXJzdEVsZW1lbnREZXN0KSwg
YXJndW1lbnRzLCBvZmZzZXQsIGxlbmd0aCk7CkBAIC0yOTc4LDcgKzI5NzgsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1
cm4gSlNDOjpzdHJpbmdGcm9tQ2hhckNvZGUoZ2xvYmFsT2JqZWN0LCBvcDEpOwogfQogCkBAIC0y
OTg2LDcgKzI5ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0
cmluZ0Zyb21DaGFyQ29kZVVudHlwZWQoSlNHbG9iYWxPYmplY3QqCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIGNoYXJWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIGludDMyX3QgY2hJbnQgPSBjaGFyVmFsdWUudG9VSW50MzIoZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQzo6c3RyaW5nRnJvbUNo
YXJDb2RlKGdsb2JhbE9iamVjdCwgY2hJbnQpKTsKQEAgLTMwMDksNyArMzAwOSw3IEBAIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0KFZNKiB2bVBvaW50ZXIsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBpZiAoIWJ1
dHRlcmZseQogICAgICAgICAmJiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IGhh
c0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSkgewpAQCAtMzAz
MSw3ICszMDMxLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdp
dGhCdXR0ZXJmbHkoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKgogewogICAgIFZNJiB2bSA9ICp2
bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIAogICAgIGlmICghYnV0dGVyZmx5KSB7CiAgICAgICAgIGJ1dHRlcmZseSA9IEJ1
dHRlcmZseTo6Y3JlYXRlKApAQCAtMzA0Niw3ICszMDQ2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRW
ZWN0b3IKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEluZGV4aW5nSGVhZGVyIGhlYWRl
cjsKICAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7CkBAIC0zMDY4LDcgKzMwNjgs
NyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU3ByZWFkU2xv
dyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgRW5j
b2RlZEpTVmFsdWUqIHZhbHVlcyA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oYnVmZmVy
KTsKQEAgLTMxMjYsNyArMzEyNiw3IEBAIEpTQ2VsbCogb3BlcmF0aW9uQ3JlYXRlRml4ZWRBcnJh
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBpZiAoSlNGaXhlZEFycmF5KiByZXN1bHQgPSBKU0ZpeGVkQXJyYXk6
OnRyeUNyZWF0ZSh2bSwgdm0uZml4ZWRBcnJheVN0cnVjdHVyZS5nZXQoKSwgbGVuZ3RoKSkKQEAg
LTMxNDAsNyArMzE0MCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TcHJlYWRH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCkBAIC0zMTc1LDcgKzMxNzUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
QwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQoaXNKU0FycmF5
KGNlbGwpKTsKICAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7CkBA
IC0zMTg4LDcgKzMxODgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5
cGVQcm9maWxlckxvZ0RGRyhWTSogdm1Qb2ludGVyKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50
ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CiAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAiTG9nIEZ1
bGwsIGNhbGxlZCBmcm9tIGluc2lkZSBERkcuIl9zKTsKIH0KQEAgLTMxOTcsNyArMzE5Nyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9ySG9p
c3RpbmdGdW5jRGVjbEluRXZhbChKU0dsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICAgICAgCiAgICAgSlNWYWx1ZSByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZVNj
b3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChnbG9iYWxPYmplY3QsIHNjb3BlLCBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCBpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXNv
bHZlZFNjb3BlKTsKQEAgLTMyMDcsNyArMzIwNyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25SZXNvbHZlU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29w
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTT2JqZWN0KiByZXNvbHZl
ZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNjb3BlLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKHZtLCBpbXBsKSk7CiAgICAgcmV0dXJuIHJlc29sdmVkU2NvcGU7CkBAIC0zMjE3
LDcgKzMyMTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldER5
bmFtaWNWYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaW1w
bCk7CkBAIC0zMjc3LDcgKzMyNzcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
RHluYW1pY1ZhclN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgY29uc3RleHByIGJvb2wgaXNTdHJpY3RNb2Rl
ID0gdHJ1ZTsKICAgICByZXR1cm4gcHV0RHluYW1pY1ZhcihnbG9iYWxPYmplY3QsIHZtLCBzY29w
ZSwgdmFsdWUsIGltcGwsIGdldFB1dEluZm9CaXRzLCBpc1N0cmljdE1vZGUpOwogfQpAQCAtMzI4
Niw3ICszMjg2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5bmFtaWNWYXJO
b25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIGNvbnN0ZXhwciBib29sIGlzU3RyaWN0TW9kZSA9IGZhbHNlOwog
ICAgIHJldHVybiBwdXREeW5hbWljVmFyKGdsb2JhbE9iamVjdCwgdm0sIHNjb3BlLCB2YWx1ZSwg
aW1wbCwgZ2V0UHV0SW5mb0JpdHMsIGlzU3RyaWN0TW9kZSk7CiB9CkBAIC0zMjk1LDcgKzMyOTUs
NyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWFwSGFzaChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKICAgICByZXR1cm4ganNNYXBIYXNoKGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmRl
Y29kZShpbnB1dCkpOwogfQpAQCAtMzMwNCw3ICszMzA0LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTTWFwOjpCdWNrZXRU
eXBlKiogYnVja2V0ID0ganNDYXN0PEpTTWFwKj4obWFwKS0+ZmluZEJ1Y2tldChnbG9iYWxPYmpl
Y3QsIEpTVmFsdWU6OmRlY29kZShrZXkpLCBoYXNoKTsKICAgICBpZiAoIWJ1Y2tldCkKICAgICAg
ICAgcmV0dXJuIHZtLnNlbnRpbmVsTWFwQnVja2V0KCk7CkBAIC0zMzE1LDcgKzMzMTUsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgSlNTZXQ6OkJ1Y2tldFR5cGUqKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQqPihtYXApLT5maW5k
QnVja2V0KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGtleSksIGhhc2gpOwogICAgIGlm
ICghYnVja2V0KQogICAgICAgICByZXR1cm4gdm0uc2VudGluZWxTZXRCdWNrZXQoKTsKQEAgLTMz
MjYsNyArMzMyNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRBZGQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBzZXQsCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQqPihzZXQpLT5h
ZGROb3JtYWxpemVkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGtleSksIEpTVmFsdWUo
KSwgaGFzaCk7CiAgICAgaWYgKCFidWNrZXQpCiAgICAgICAgIHJldHVybiB2bS5zZW50aW5lbFNl
dEJ1Y2tldCgpOwpAQCAtMzMzNyw3ICszMzM3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk1hcFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG1hcCwK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8qIGJ1Y2tldCA9IGpzQ2Fz
dDxKU01hcCo+KG1hcCktPmFkZE5vcm1hbGl6ZWQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNv
ZGUoa2V5KSwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgaGFzaCk7CiAgICAgaWYgKCFidWNrZXQp
CiAgICAgICAgIHJldHVybiB2bS5zZW50aW5lbE1hcEJ1Y2tldCgpOwpAQCAtMzM0OCw3ICszMzQ4
LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldlYWtTZXRBZGQoVk0qIHZtUG9pbnRl
ciwgSlNDZWxsKiBzZXQsIEpTQ2VsbCoga2V5LAogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IGpzQ2FzdDxKU1dlYWtTZXQqPihzZXQpLT5hZGQodm0sIGFzT2JqZWN0KGtleSksIEpTVmFsdWUo
KSwgaGFzaCk7CiB9CiAKQEAgLTMzNTYsNyArMzM1Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25XZWFrTWFwU2V0KFZNKiB2bVBvaW50ZXIsIEpTQ2VsbCogbWFwLCBKU0NlbGwqIGtl
eSwKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBqc0Nhc3Q8SlNXZWFrTWFwKj4obWFwKS0+
YWRkKHZtLCBhc09iamVjdChrZXkpLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBoYXNoKTsKIH0K
IApAQCAtMzM2NCw3ICszMzY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRQcm90b3R5cGVPZk9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0KIApAQCAtMzM3Miw3ICsz
MzcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90b3R5
cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkudG9UaGlz
KGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CkBAIC0zMzk1LDcgKzMzOTUsNyBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dERkcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIHNjb3BlLnRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlVG9UaHJvdykpOwogfQpAQCAt
MzQwNCw3ICszNDA0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhdGlj
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHIKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWVzc2FnZS0+dmFsdWUoZ2xvYmFsT2JqZWN0
KTsKICAgICBzY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGNyZWF0ZUVycm9yKGds
b2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8RXJyb3JUeXBlPihlcnJvclR5cGUpLCBlcnJvck1lc3Nh
Z2UpKTsKQEAgLTM0MTUsNyArMzQxNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25M
aW5rRGlyZWN0Q2FsbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywgSlNGdW5jdGlvCiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2JqZWN0KCk7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCA9IGNh
bGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCk7CkBAIC0zNDYyLDcgKzM0NjIsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0RpcmVjdENhbGwoQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8sIEpTRnVuY3RpbwogICAgIGxpbmtEaXJlY3RGb3IoY2FsbEZyYW1lLCAqY2Fs
bExpbmtJbmZvLCBjb2RlQmxvY2ssIGNvZGVQdHIpOwogfQogCi1leHRlcm4gIkMiIHZvaWQgSklU
X09QRVJBVElPTiB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IENvZGVCbG9jayogb3B0aW1pemVkQ29kZUJsb2NrLCBPU1JFeGl0QmFzZSogZXhpdCkKK3ZvaWQg
dHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sq
IG9wdGltaXplZENvZGVCbG9jaywgT1NSRXhpdEJhc2UqIGV4aXQpCiB7CiAgICAgLy8gSXQncyBz
b3J0IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24ndCBHQyB3aGlsZSBpbiBoZXJlLiBBbnl3YXlz
LCBkb2luZyBzbyB3b3VsZG4ndAogICAgIC8vIHJlYWxseSBiZSBwcm9maXRhYmxlLgpAQCAtMzUx
OCw2ICszNTE4LDExIEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJSZW9w
dGltaXphdGlvbk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kCiAgICAgb3B0aW1pemVkQ29k
ZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb09TUkV4aXQsIENvdW50UmVv
cHRpbWl6YXRpb24pOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJpZ2dlclJl
b3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIG9wdGltaXpl
ZENvZGVCbG9jaywgT1NSRXhpdEJhc2UqIGV4aXQpCit7CisgICAgdHJpZ2dlclJlb3B0aW1pemF0
aW9uTm93KGNvZGVCbG9jaywgb3B0aW1pemVkQ29kZUJsb2NrLCBleGl0KTsKK30KKwogI2lmIEVO
QUJMRShGVExfSklUKQogc3RhdGljIGJvb2wgc2hvdWxkVHJpZ2dlckZUTENvbXBpbGUoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEpJVENvZGUqIGppdENvZGUpCiB7CkBAIC0zNTkxLDExICszNTk2LDEx
IEBAIHN0YXRpYyB2b2lkIHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUoVk0mIHZtLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUQ29kZSoKICAgICAgICAgY29kZUJsb2NrLCBDb21waWxhdGlv
bkRlZmVycmVkKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3coVk0q
IHZtUG9pbnRlcikKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcmlnZ2VyVGllclVwTm93
KFZNKiB2bVBvaW50ZXIpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgRGVmZXJHQ0ZvckFX
aGlsZSBkZWZlckdDKHZtLmhlYXApOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKICAgICAKQEAgLTM4NTAsMTEgKzM4NTUsMTEgQEAgc3RhdGljIGNo
YXIqIHRpZXJVcENvbW1vbihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBCeXRlY29kZUlu
ZGV4IG9yaWdpbkJ5dGUKICAgICByZXR1cm4gcmV0YWdDb2RlUHRyPGNoYXIqPihhZGRyZXNzLCBK
U0VudHJ5UHRyVGFnLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihjYWxsRnJhbWUpKTsKIH0KIAotdm9p
ZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxvb3AoVk0qIHZtUG9pbnRlciwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleEJpdHMpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJp
Z2dlclRpZXJVcE5vd0luTG9vcChWTSogdm1Qb2ludGVyLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
Qml0cykKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVy
R0Modm0uaGVhcCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXg6
OmZyb21CaXRzKGJ5dGVjb2RlSW5kZXhCaXRzKTsKQEAgLTM4ODYsMTEgKzM4OTEsMTEgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxvb3AoVk0qIHZtUG9pbnRlciwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleEIKICAgICB9CiB9CiAKLWNoYXIqIEpJVF9PUEVSQVRJT04gdHJp
Z2dlck9TUkVudHJ5Tm93KFZNKiB2bVBvaW50ZXIsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXhCaXRz
KQorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcmlnZ2VyT1NSRW50cnlOb3coVk0qIHZt
UG9pbnRlciwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleEJpdHMpCiB7CiAgICAgVk0mIHZtID0gKnZt
UG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4Ojpmcm9tQml0cyhieXRlY29kZUluZGV4Qml0
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDk0ZjRj
ODIyYjU4NTA0NzhiMjJmYjczYmJmYjE4NmFmY2YzYzNiODguLjI1NjRkOWZjOGRmOTg3NjcxNThm
ZDI0MTY2N2IzYWI2ZWJiNjBiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCkBAIC0yOTYsMTYgKzI5NiwxNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTGlua0RpcmVjdENhbGwoQ2FsbExpbmtJbmZvKiwgSlNGdW5jdGlvbiopIFdURl9JTlRFUgog
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhW
TSopIFdURl9JTlRFUk5BTDsKIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJSZW9wdGltaXph
dGlvbk5vdyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBDb2RlQmxvY2sqIG9wdGlpbXpl
ZENvZGVCbG9jaywgT1NSRXhpdEJhc2UqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogYmFzZWxpbmVD
b2RlQmxvY2ssIENvZGVCbG9jayogb3B0aWltemVkQ29kZUJsb2NrLCBPU1JFeGl0QmFzZSopIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2ssIENvZGVCbG9jayogb3B0aWltemVkQ29kZUJsb2NrLCBPU1JFeGl0QmFz
ZSopOyAvLyBUaGlzIGlzIG5vdCBKSVRfT1BFUkFUSU9OLgogCiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJhbmRvbShKU0dsb2JhbE9iamVjdCop
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKLXZvaWQgSklUX09QRVJBVElPTiB0cmln
Z2VyVGllclVwTm93KFZNKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdn
ZXJUaWVyVXBOb3dJbkxvb3AoVk0qLCB1bnNpZ25lZCBieXRlY29kZUluZGV4Qml0cykgV1RGX0lO
VEVSTkFMOwotY2hhciogSklUX09QRVJBVElPTiB0cmlnZ2VyT1NSRW50cnlOb3coVk0qLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4Qml0cykgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRyaWdnZXJUaWVyVXBOb3coVk0qKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVHJpZ2dlclRpZXJVcE5vd0luTG9vcChWTSosIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXhCaXRzKSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRyaWdnZXJPU1JFbnRyeU5vdyhWTSosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXhCaXRzKSBX
VEZfSU5URVJOQUw7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAKIH0gLy8gZXh0ZXJuICJD
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKaW5kZXggZjc1NzlmYzliODI1NGEwOGJhODIzMWNlNjg0MjQ2NGE4YzQ4OGM3Ny4uMTQyYzdl
MDY4OWMyNmExZmFmZGNkNTAwM2YxZjM0YmViMjUzODAyYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MDg1LDcgKzUwODUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBjYWxsVGllclVwLmxpbmsoJm1faml0KTsKIAogICAgICAgICAgICAgc2lsZW50U3BpbGwoc2F2
ZVBsYW5zKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24odHJpZ2dlclRpZXJVcE5vd0luTG9v
cCwgJnZtKCksIFRydXN0ZWRJbW0zMihieXRlY29kZUluZGV4LmFzQml0cygpKSk7CisgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRyaWdnZXJUaWVyVXBOb3dJbkxvb3AsICZ2bSgp
LCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSkpOwogICAgICAgICAgICAgc2ls
ZW50RmlsbChzYXZlUGxhbnMpOwogCiAgICAgICAgICAgICBtX2ppdC5qdW1wKCkubGlua1RvKHRv
TmV4dE9wZXJhdGlvbiwgJm1faml0KTsKQEAgLTUxMDAsNyArNTEwMCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBYnNvbHV0ZUFkZHJlc3MoJm1faml0LmppdENvZGUoKS0+dGllclVwQ291bnRlci5tX2NvdW50
ZXIpKTsKICAgICAgICAgCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKEludmFsaWRH
UFJSZWcpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHRyaWdnZXJUaWVyVXBOb3csICZ2bSgpKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcmlnZ2VyVGllclVwTm93LCAmdm0oKSk7
CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgCiAgICAgICAgIGRv
bmUubGluaygmbV9qaXQpOwpAQCAtNTEzOCw3ICs1MTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgb3ZlcmZsb3dlZENvdW50ZXIubGlu
aygmbV9qaXQpOwogCiAgICAgICAgICAgICBzaWxlbnRTcGlsbChzYXZlUGxhbnMpOwotICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbih0cmlnZ2VyT1NSRW50cnlOb3csIHRlbXBHUFIsICZ2bSgpLCBU
cnVzdGVkSW1tMzIoYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSkpOworICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25UcmlnZ2VyT1NSRW50cnlOb3csIHRlbXBHUFIsICZ2bSgpLCBUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSkpOwogCiAgICAgICAgICAgICBpZiAoc2F2
ZVBsYW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSKS5saW5rVG8odG9OZXh0T3BlcmF0aW9uLCAmbV9q
aXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCmluZGV4IDlkMDlmZTcx
NTQxYzAyNjViMWMxOTllYzBkYjdkMzllZGQxMTkxYTIuLjZhY2FmYmYzYmY1MzVjOTY5NmJlNjQ4
YTIwNzBiNmVlNmY0ZjhiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRUaHVua0dlbmVyYXRv
cihWTSYgdm0pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXIgaml0OworICAgIENDYWxsSGVscGVycyBq
aXQobnVsbHB0cik7CiAgICAgaml0LnByb2JlKE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0LCAmdm0p
OwogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkRGRyBP
U1IgZXhpdCB0aHVuayIpOwpAQCAtNTAsNyArNTAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IG9zckV4aXRUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVy
YXRvcihWTSYgdm0pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXIgaml0OworICAgIENDYWxsSGVscGVy
cyBqaXQobnVsbHB0cik7CiAKICAgICAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgd2Ug
dXNlIHRoZSBzY3JhdGNoIGJ1ZmZlciBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gYWxzbyB1c2VzIHRo
ZSBzY3JhdGNoIGJ1ZmZlci4KICAgICBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGls
ZXJUaHVuazxERkc6OkpJVENvZGU+KGppdCwgdm0sIEpJVFR5cGU6OkRGR0pJVCk7CkBAIC03Nyw2
ICs3Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdl
bmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAKICAgICAvLyBTZXQgdXAgb25lIGFyZ3Vt
ZW50LgogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJU
YWcpOwogCkBAIC05OSw3ICsxMDAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgCi0gICAgcGF0
Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
T1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGZ1bmN0aW9u
Q2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Db21waWxlT1NSRXhp
dCkpOwogCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiREZHIE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsiKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4YTAwZDk2NjNmZTNkNjE2
YTBmMWVlZThhZGU2NGY5M2IxZmQxM2Y5Li5lMzNmYjg3YmEyYTM2NTk1MGUyYjJiNjQzZmRhNjYz
YjFkNzg0MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCkBAIC04ODQ1LDYgKzg4NDUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9udFRocm93ID0gaml0Lmp1bXAoKTsK
ICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKICAgICAgICAgICAgICAg
ICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVy
Zmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3Bl
cmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25D
aGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZh
cmFyZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJh
cmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTkx
MTEsNiArOTExMiw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKICAgICAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2UubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihq
aXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsK
KyAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8
dm9pZCo+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpKTsKICAgICAgICAg
ICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlk
Tm90VGhyb3cpOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTkxMTgsNiArOTEyMCw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3JpZ2luYWxTdGFj
a0hlaWdodCAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMSk7CiAgICAgICAg
ICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25TaXplRnJh
bWVGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwgYXJndW1lbnRzR1BSLCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblNp
emVGcmFtZUZvclZhcmFyZ3MpKTsKIAogICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEpOwpAQCAtOTEyNiw2ICs5MTI5LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdFNldFZhcmFyZ3NG
cmFtZShqaXQsIHNjcmF0Y2hHUFIxLCBmYWxzZSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIyKTsK
ICAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MigtbWluaW11bUpTQ2FsbEFyZWFTaXplKSwgc2NyYXRjaEdQUjIsIENDYWxsSGVscGVyczo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUpPihqaXQuY29kZUJsb2NrKCkt
Pmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBzY3JhdGNoR1BSMiwgYXJn
dW1lbnRzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihkYXRhLT5maXJzdFZhckFyZ09m
ZnNldCksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRp
b25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKSk7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
QEAgLTkyNzcsNiArOTI4MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAg
ICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5zdWJQdHIoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVscGVyczo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KGdsb2JhbE9iamVjdCwgR1BSSW5mbzo6cmVnVDEp
OworICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUkluZm86Om5vblBy
ZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5m
bzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgICAg
ICAgICAgICAgIGV4Y2VwdGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKHN0YXRl
LT52bSgpLCBBc3NlbWJseUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBBc3NlbWJseUhl
bHBlcnM6OkZhckp1bXBXaWR0aCkpOwpAQCAtMTI5ODUsNyArMTI5OTAsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgSlNHbG9iYWxPYmplY3Qu
CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAzMjA0CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAg
bV9vdXQuc3RvcmVQdHIod2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQuYWJzb2x1dGUo
JnZtKCkudG9wQ2FsbEZyYW1lKSk7CisgICAgICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxG
cmFtZSwgbV9vdXQuYWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CiAgICAgICAgICAgICBz
ZXRKU1ZhbHVlKAogICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgYml0d2lzZV9jYXN0PEN1
c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tR2V0dGVyPihtX25vZGUtPmNhbGxET01HZXR0ZXJEYXRh
KCktPmN1c3RvbUFjY2Vzc29yR2V0dGVyLnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8Q0Z1bmN0
aW9uUHRyVGFnPigpKSwKICAgICAgICAgICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFw
aC5pZGVudGlmaWVycygpW21fbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRlbnRpZmllck51
bWJlcl0pKSk7CkBAIC0xNzI2Myw2ICsxNzI2OCw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIG1fb3V0LnN0b3JlMzIoCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKGNhbGxT
aXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50KSk7CisjaWYgIVVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIHx8IEFTU0VSVF9E
SVNBQkxFRAorICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgbV9vdXQuYWJzb2x1
dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGNhbGxQ
cmVmbGlnaHQoKQpAQCAtMTcyOTEsOCArMTcyOTksMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICB2b2lkIGNhbGxDaGVjaygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwotICAgICAgICBpZiAoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKQorICAgICAgICBp
ZiAoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKSB7CisjaWYgIVVTRShCVUlMVElOX0ZSQU1F
X0FERFJFU1MpIHx8IEFTU0VSVF9ESVNBQkxFRAorICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9jYWxsRnJhbWUsIG1fb3V0LmFic29sdXRlKCZ2bSgpLnRvcENhbGxGcmFtZSkpOworI2VuZGlm
CiAgICAgICAgICAgICBtX291dC5jYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25F
eGNlcHRpb25GdXp6KSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIExWYWx1ZSBleGNlcHRpb24gPSBtX291dC5sb2FkNjQobV9vdXQuYWJz
b2x1dGUodm0oKS5hZGRyZXNzT2ZFeGNlcHRpb24oKSkpOwogICAgICAgICBMVmFsdWUgaGFkRXhj
ZXB0aW9uID0gbV9vdXQubm90WmVybzY0KGV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggZjZiM2E3NGNhM2U4NjQ1
ZTExMmRjYWQ1ZWIzNjRlOWFhNGE2NzY3Yy4uNjY0ZDNiOTg4YWY3ZWE4M2Y2ZmI4MmJjYjNhOGMw
YTg4MTc2ZWU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVSZWNv
dmVyeSgKICAgICAgICAgdmFsdWUuZGF0YUZvcm1hdCgpLCBqaXQsIEdQUkluZm86OnJlZ1QwLCBH
UFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogfQogCi1zdGF0aWMgdm9pZCBjb21waWxl
U3R1YigKLSAgICB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9TUkV4aXQmIGV4
aXQsIFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCitzdGF0aWMgdm9pZCBjb21waWxlU3R1
YihWTSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NSRXhpdCYgZXhp
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgLy8gVGhpcyBjb2RlIHJlcXVpcmVzIGZy
YW1lUG9pbnRlclJlZ2lzdGVyIGlzIHRoZSBzYW1lIGFzIGNhbGxGcmFtZVJlZ2lzdGVyCiAgICAg
c3RhdGljX2Fzc2VydChNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIgPT0gR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICJNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVn
aXN0ZXIgYW5kIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyIG11c3QgYmUgdGhlIHNhbWUiKTsK
QEAgLTE0Nyw5ICsxNDYsOSBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKIAogICAgIC8vIFRo
ZSBmaXJzdCB0aGluZyB3ZSBuZWVkIHRvIGRvIGlzIHJlc3RhYmxpc2ggb3VyIGZyYW1lIGluIHRo
ZSBjYXNlIG9mIGFuIGV4Y2VwdGlvbi4KICAgICBpZiAoZXhpdC5pc0dlbmVyaWNVbndpbmRIYW5k
bGVyKCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0tPmNhbGxGcmFtZUZvckNhdGNoKTsg
Ly8gVGhlIGZpcnN0IHRpbWUgd2UgaGl0IHRoaXMgZXhpdCwgbGlrZSBhdCBhbGwgb3RoZXIgdGlt
ZXMsIHRoaXMgZmllbGQgc2hvdWxkIGJlIG5vbi1udWxsLgotICAgICAgICBqaXQucmVzdG9yZUNh
bGxlZVNhdmVzRnJvbUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS0+dG9wRW50cnlGcmFt
ZSk7Ci0gICAgICAgIGppdC5sb2FkUHRyKHZtLT5hZGRyZXNzT2ZDYWxsRnJhbWVGb3JDYXRjaCgp
LCBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVCh2bS5jYWxsRnJhbWVGb3JDYXRjaCk7IC8vIFRoZSBmaXJzdCB0aW1lIHdlIGhpdCB0
aGlzIGV4aXQsIGxpa2UgYXQgYWxsIG90aGVyIHRpbWVzLCB0aGlzIGZpZWxkIHNob3VsZCBiZSBu
b24tbnVsbC4KKyAgICAgICAgaml0LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2Fs
bGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7CisgICAgICAgIGppdC5sb2FkUHRyKHZt
LmFkZHJlc3NPZkNhbGxGcmFtZUZvckNhdGNoKCksIE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50
ZXJSZWdpc3Rlcik7CiAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLAog
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDQ2FsbEhl
bHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIApAQCAtMTc1LDcgKzE3NCw3IEBAIHN0YXRp
YyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICAgICAgbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0
aWVzKCkuc2l6ZSgpKTsKICAgICB9CiAgICAgCi0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1
ZmZlciA9IHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZSgKKyAgICBTY3JhdGNoQnVmZmVyKiBzY3Jh
dGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoCiAgICAgICAgIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgKiAoCiAgICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMu
c2l6ZSgpICsgbnVtTWF0ZXJpYWxpemF0aW9ucyArIG1heE1hdGVyaWFsaXphdGlvbk51bUFyZ3Vt
ZW50cykgKwogICAgICAgICByZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpICsKQEAg
LTIxNSwxNSArMjE0LDE1IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICAvLyB0
byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVGVExPU1JFeGl0KCkgaXMgb25seSBjYWxsZWQg
b24gdGhlIGZpcnN0IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9tIHRoaXMgc2l0ZSwgYnV0
IGFsbCBzdWJzZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBpbGVkCiAgICAgICAgIC8v
IHJhbXAgd2l0aG91dCBjYWxsaW5nIGNvbXBpbGVGVExPU1JFeGl0KCkgZmlyc3QuCi0gICAgICAg
IGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZtLT5oZWFwLmFk
ZHJlc3NPZkV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMih0cnVlKSwgdm0uaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7CiAg
ICAgfQogCiAgICAgLy8gQnJpbmcgdGhlIHN0YWNrIGJhY2sgaW50byBhIHNhbmUgZm9ybSBhbmQg
YXNzZXJ0IHRoYXQgaXQncyBzYW5lLgogICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BSSW5mbzo6cmVn
VDApOwogICAgIGppdC5jaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwogICAgIAotICAgIGlm
IChVTkxJS0VMWSh2bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIGppdENvZGUtPmRmZ0NvbW1v
bigpLT5jb21waWxhdGlvbikpIHsKLSAgICAgICAgUHJvZmlsZXI6OkRhdGFiYXNlJiBkYXRhYmFz
ZSA9ICp2bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyOworICAgIGlmIChVTkxJS0VMWSh2bS5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXIgJiYgaml0Q29kZS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSkg
eworICAgICAgICBQcm9maWxlcjo6RGF0YWJhc2UmIGRhdGFiYXNlID0gKnZtLm1fcGVyQnl0ZWNv
ZGVQcm9maWxlcjsKICAgICAgICAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbiA9
IGppdENvZGUtPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbi5nZXQoKTsKICAgICAgICAgCiAgICAg
ICAgIFByb2ZpbGVyOjpPU1JFeGl0KiBwcm9maWxlckV4aXQgPSBjb21waWxhdGlvbi0+YWRkT1NS
RXhpdCgKQEAgLTMzNSw2ICszMzQsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJsb2NrLT5nbG9iYWxP
YmplY3RGb3IobWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKSkpLAogICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb24pLAogICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb25Bcmd1bWVudHMp
KTsKKyAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUikpLCBHUFJJbmZv
Ojpub25BcmdHUFIwKTsKICAgICAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAs
IE9wZXJhdGlvblB0clRhZyk7CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIG1hdGVyaWFsaXphdGlvblRvUG9pbnRlci5nZXQobWF0ZXJpYWxpemF0aW9u
KSk7CkBAIC0zNjQsNiArMzY0LDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0ZXJpYWxpemF0aW9uKSwKICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb25Ub1BvaW50
ZXIuZ2V0KG1hdGVyaWFsaXphdGlvbikpLAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKG1hdGVyaWFsaXphdGlvbkFyZ3VtZW50cykpOworICAgICAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOwogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUG9wdWxh
dGVPYmplY3RJbk9TUikpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgaml0LmNhbGwo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICB9CkBAIC00MTAsNyAr
NDExLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgUmVnaXN0ZXJBdE9mZnNldExp
c3QqIHZtQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0ZXJPZmZz
ZXRzKCk7CiAgICAgUmVnaXN0ZXJTZXQgdm1DYWxsZWVTYXZlc1RvU2tpcCA9IFJlZ2lzdGVyU2V0
OjpzdGFja1JlZ2lzdGVycygpOwogICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7
Ci0gICAgICAgIGppdC5sb2FkUHRyKCZ2bS0+dG9wRW50cnlGcmFtZSwgR1BSSW5mbzo6cmVnVDEp
OworICAgICAgICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlGcmFtZSwgR1BSSW5mbzo6cmVnVDEp
OwogICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEVudHJ5RnJh
bWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QxKTsK
ICAgICB9CiAKQEAgLTQ4NSw5ICs0ODYsOSBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAg
ICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0ZvcihyZWcpKTsKICAgICB9CiAgICAgCi0gICAgaGFuZGxlRXhpdENvdW50cyhqaXQsIGV4aXQp
OworICAgIGhhbmRsZUV4aXRDb3VudHModm0sIGppdCwgZXhpdCk7CiAgICAgcmVpZnlJbmxpbmVk
Q2FsbEZyYW1lcyhqaXQsIGV4aXQpOwotICAgIGFkanVzdEFuZEp1bXBUb1RhcmdldCgqdm0sIGpp
dCwgZXhpdCk7CisgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KHZtLCBqaXQsIGV4aXQpOwogICAg
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBjb2RlQmxvY2spOwogICAgIGV4aXQu
bV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKQEAgLTUwMCw3ICs1MDEsNyBAQCBzdGF0aWMgdm9p
ZCBjb21waWxlU3R1YigKICAgICAgICAgKTsKIH0KIAotZXh0ZXJuICJDIiB2b2lkKiBjb21waWxl
RlRMT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgZXhpdElEKQorZXh0ZXJu
ICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQqIG9wZXJhdGlvbkNvbXBpbGVGVExPU1JFeGl0KENhbGxG
cmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBleGl0SUQpCiB7CiAgICAgaWYgKHNob3VsZER1bXBE
aXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRpb25zOjp2ZXJib3Nl
RlRMT1NSRXhpdCgpKQogICAgICAgICBkYXRhTG9nKCJDb21waWxpbmcgT1NSIGV4aXQgd2l0aCBl
eGl0SUQgPSAiLCBleGl0SUQsICJcbiIpOwpAQCAtNTQ1LDcgKzU0Niw3IEBAIGV4dGVybiAiQyIg
dm9pZCogY29tcGlsZUZUTE9TUkV4aXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIGV4
aXRJRCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbXBpbGVTdHViKGV4aXRJRCwgaml0Q29k
ZSwgZXhpdCwgJnZtLCBjb2RlQmxvY2spOworICAgIGNvbXBpbGVTdHViKHZtLCBleGl0SUQsIGpp
dENvZGUsIGV4aXQsIGNvZGVCbG9jayk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1
bXAoCiAgICAgICAgIGV4aXQuY29kZUxvY2F0aW9uRm9yUmVwYXRjaChjb2RlQmxvY2spLCBDb2Rl
TG9jYXRpb25MYWJlbDxPU1JFeGl0UHRyVGFnPihleGl0Lm1fY29kZS5jb2RlKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5oCmluZGV4IDkxNGFh
MTkzODMxYjcyZDI4NGQ3MzUyMjRhMDY2ZjU4YzczNDI1ZTQuLmJlNzJmNDUzOTk1NTljNDZjM2Ey
YWJhMDkwNWE4MWZlMjgzZTQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CiAvLyBUYWtlcyB0aGUgY2FsbCBmcmFtZSBhbmQgdGhlIGluZGV4IG9mIHRo
ZSBleGl0LCBhbmQgcmV0dXJucyB0aGUgYWRkcmVzcyB0bwogLy8ganVtcCB0by4KIGV4dGVybiAi
QyIgewotdm9pZCogSklUX09QRVJBVElPTiBjb21waWxlRlRMT1NSRXhpdChDYWxsRnJhbWUqLCB1
bnNpZ25lZCBleGl0SUQpIFdURl9JTlRFUk5BTDsKK3ZvaWQqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ29tcGlsZUZUTE9TUkV4aXQoQ2FsbEZyYW1lKiwgdW5zaWduZWQgZXhpdElEKSBXVEZfSU5U
RVJOQUw7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCmluZGV4IDI4Yzk1YjE2OWQ2ZTc4NDg5MzI2M2Vl
MDQyMjVmMWEyZjE1NjE5ZGUuLjgyOWQyYmFiMTAyNjE4MjkxOGZjZjMyZWQwNGUyM2U2N2JlOTRj
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAt
NTUsNyArNTUsNyBAQCBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3B1
bGF0ZU9iamVjdEluT1NSKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIHVzaW5nIG5hbWVzcGFj
ZSBERkc7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKIApAQCAtMTQ0LDcgKzE0NCw3IEBAIGV4
dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0
SW5PU1IoSlNHbG9iYWxPYmplY3QqCiAgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgLy8gV2UgY2Fubm90IEdDLiBXZSd2ZSBnb3QgcG9p
bnRlcnMgaW4gZXZpbCBwbGFjZXMuCiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhl
YXApOwpAQCAtNjA3LDcgKzYwNyw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoSlNHbG9iYWxPYmplY3QqCiAgICAgfQog
fQogCi1leHRlcm4gIkMiIHZvaWQqIEpJVF9PUEVSQVRJT04gY29tcGlsZUZUTExhenlTbG93UGF0
aChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgaW5kZXgpCitleHRlcm4gIkMiIHZvaWQq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGlsZUZUTExhenlTbG93UGF0aChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT5k
ZXByZWNhdGVkVk0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMu
aAppbmRleCAwNGQwMjgzOWQ5MTA0NWRjNzgwYmIwNDQxZDY4YjY2ZTZlYjg1NDk3Li4wNWQ5OGNm
N2EzNDNiNjY3MWI1YTI0Y2UzMTY5MDhkMjFmNDhkY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9wZXJhdGlvbnMuaApAQCAtNDAsNyArNDAsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUihKU0dsb2JhbE9iamVjdCosIEV4
aXRUaW1lTwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9T
UihKU0dsb2JhbE9iamVjdCosIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uKiwgRW5jb2Rl
ZEpTVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZSopIFdURl9JTlRFUk5BTDsKIAotdm9pZCogSklUX09Q
RVJBVElPTiBjb21waWxlRlRMTGF6eVNsb3dQYXRoKENhbGxGcmFtZSosIHVuc2lnbmVkKSBXVEZf
SU5URVJOQUw7Cit2b2lkKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVGVExMYXp5U2xv
d1BhdGgoQ2FsbEZyYW1lKiwgdW5zaWduZWQpIFdURl9JTlRFUk5BTDsKIAogfSAvLyBleHRlcm4g
IkMiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhD
YWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcApp
bmRleCA0Y2M2ZWRlMzU4ZmNiZjRkMjk0OTRhNGU2Zjg2NGU1ODU4YTIyZDQ1Li4wYzcwYzEwYzI4
YWExZWI2NzMxYWUxM2M0MDAzYWRkNzc3NDEyYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgU2xvd1BhdGhD
YWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPgogICAgIG1faml0LmFkZExpbmtUYXNrKAogICAgICAgICBbcmVzdWx0LCAm
dm1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRodW5rID0KLSAgICAgICAgICAgICAgICB2bS5mdGxU
aHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5rKHJlc3VsdC5rZXkoKSk7CisgICAgICAgICAgICAg
ICAgdm0uZnRsVGh1bmtzLT5nZXRTbG93UGF0aENhbGxUaHVuayh2bSwgcmVzdWx0LmtleSgpKTsK
IAogICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlc3VsdC5jYWxsKCksIENvZGVMb2NhdGlv
bkxhYmVsPE9wZXJhdGlvblB0clRhZz4odGh1bmsucmV0YWdnZWRDb2RlPE9wZXJhdGlvblB0clRh
Zz4oKSkpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNw
cAppbmRleCBmYTliZmM3MGI2Y2U4ZTllMzJlMzU2ZGExNTIxZGU3OWFmMDA3MjVlLi5lNDI5NDUz
NzM4MWNmNjkxYmVjNjJmMGUxYWZiYWU5YmRkZGU0ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExUaHVua3MuY3BwCkBAIC04Niw2ICs4Niw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3Io
CiAgICAgaml0LnBlZWsoCiAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwKICAgICAgICAg
KHN0YWNrTWlzYWxpZ25tZW50IC0gTWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVCeXRlT2Zmc2V0
KCkpIC8gc2l6ZW9mKHZvaWQqKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRp
b25QdHJUYWcpOwogCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSB3YW50IHRvIG1ha2UgYSB0YWls
IGNhbGwgdG8gd2hhdCB3YXMgcmV0dXJuZWQgdG8gdXMgaW4gdGhlCkBAIC0xMzIsMTQgKzEzMywx
NCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRHZW5lcmF0
aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIHVuc2lnbmVkIGV4dHJhUG9wc1RvUmVz
dG9yZSA9IDA7CiAgICAgcmV0dXJuIGdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoCi0g
ICAgICAgIHZtLCBjb21waWxlRlRMT1NSRXhpdCwgT1NSRXhpdFB0clRhZywgIkZUTCBPU1IgZXhp
dCBnZW5lcmF0aW9uIHRodW5rIiwgZXh0cmFQb3BzVG9SZXN0b3JlLCBGcmFtZUFuZFN0YWNrQWRq
dXN0bWVudFJlcXVpcmVtZW50OjpOZWVkZWQpOworICAgICAgICB2bSwgb3BlcmF0aW9uQ29tcGls
ZUZUTE9TUkV4aXQsIE9TUkV4aXRQdHJUYWcsICJGVEwgT1NSIGV4aXQgZ2VuZXJhdGlvbiB0aHVu
ayIsIGV4dHJhUG9wc1RvUmVzdG9yZSwgRnJhbWVBbmRTdGFja0FkanVzdG1lbnRSZXF1aXJlbWVu
dDo6TmVlZGVkKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBs
YXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIHVuc2ln
bmVkIGV4dHJhUG9wc1RvUmVzdG9yZSA9IDE7CiAgICAgcmV0dXJuIGdlbmVyaWNHZW5lcmF0aW9u
VGh1bmtHZW5lcmF0b3IoCi0gICAgICAgIHZtLCBjb21waWxlRlRMTGF6eVNsb3dQYXRoLCBKSVRT
dHViUm91dGluZVB0clRhZywgIkZUTCBsYXp5IHNsb3cgcGF0aCBnZW5lcmF0aW9uIHRodW5rIiwg
ZXh0cmFQb3BzVG9SZXN0b3JlLCBGcmFtZUFuZFN0YWNrQWRqdXN0bWVudFJlcXVpcmVtZW50OjpO
b3ROZWVkZWQpOworICAgICAgICB2bSwgb3BlcmF0aW9uQ29tcGlsZUZUTExhenlTbG93UGF0aCwg
SklUU3R1YlJvdXRpbmVQdHJUYWcsICJGVEwgbGF6eSBzbG93IHBhdGggZ2VuZXJhdGlvbiB0aHVu
ayIsIGV4dHJhUG9wc1RvUmVzdG9yZSwgRnJhbWVBbmRTdGFja0FkanVzdG1lbnRSZXF1aXJlbWVu
dDo6Tm90TmVlZGVkKTsKIH0KIAogc3RhdGljIHZvaWQgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soQXNz
ZW1ibHlIZWxwZXJzJiBqaXQsIFJlZ2lzdGVyU2V0IGRvbnRDbG9iYmVyKQpAQCAtMTcwLDcgKzE3
MSw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKEFzc2VtYmx5SGVscGVycyYg
aml0LCBSZWdpc3RlclNldCBkb250Q2xvYmJlcikKICAgICB9CiB9CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoY29uc3Qg
U2xvd1BhdGhDYWxsS2V5JiBrZXkpCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgU2xvd1BhdGhDYWxs
S2V5JiBrZXkpCiB7CiAgICAgQXNzZW1ibHlIZWxwZXJzIGppdChudWxscHRyKTsKICAgICBqaXQu
dGFnUmV0dXJuQWRkcmVzcygpOwpAQCAtMjAxLDYgKzIwMiw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoY29uc3QgU2xv
d1BhdGhDCiAgICAgCiAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJ
bmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9uQXJnR1BSMCwg
QXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdp
c3Rlciwga2V5Lm9mZnNldCgpKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
ICAgICAKICAgICByZWdpc3RlckNsb2JiZXJDaGVjayhqaXQsIGtleS5hcmd1bWVudFJlZ2lzdGVy
cygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmgKaW5kZXggNzE4NGRhMTg5
NTQ2MGM5OGJhNjU2YTUyOTE5YjhiM2RlNDVkNzJkYy4uNGYwYjEyOTA5Y2FjZDQyMjQ1ZDkzNzRm
ZDE0Mzg0ZThhYzA0NzE1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5oCkBA
IC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBGVEwgewogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mKTsKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbGF6eVNsb3dQYXRoR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKFZNJik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKGNvbnN0IFNsb3dQYXRoQ2FsbEtleSYpOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dl
bmVyYXRvcihWTSYsIGNvbnN0IFNsb3dQYXRoQ2FsbEtleSYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlUeXBlQXJndW1lbnQ+CiBzdHJ1Y3QgVGh1bmtNYXAgewpAQCAtNTQsMTMgKzU0LDEzIEBA
IHN0cnVjdCBUaHVua01hcCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1hcFR5cGUsIHR5cGVuYW1l
IEdlbmVyYXRvclR5cGU+CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdl
bmVyYXRlSWZOZWNlc3NhcnkoCi0gICAgTWFwVHlwZSYgbWFwLCBjb25zdCB0eXBlbmFtZSBNYXBU
eXBlOjpLZXlUeXBlJiBrZXksIEdlbmVyYXRvclR5cGUgZ2VuZXJhdG9yKQorICAgIFZNJiB2bSwg
TWFwVHlwZSYgbWFwLCBjb25zdCB0eXBlbmFtZSBNYXBUeXBlOjpLZXlUeXBlJiBrZXksIEdlbmVy
YXRvclR5cGUgZ2VuZXJhdG9yKQogewogICAgIHR5cGVuYW1lIE1hcFR5cGU6OlRvVGh1bmtNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBtYXAubV90b1RodW5rLmZpbmQoa2V5KTsKICAgICBpZiAoaXRlciAh
PSBtYXAubV90b1RodW5rLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiAKLSAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJlc3VsdCA9IGdlbmVyYXRv
cihrZXkpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmVzdWx0
ID0gZ2VuZXJhdG9yKHZtLCBrZXkpOwogICAgIG1hcC5tX3RvVGh1bmsuYWRkKGtleSwgcmVzdWx0
KTsKICAgICBtYXAubV9mcm9tVGh1bmsuYWRkKHJlc3VsdC5jb2RlKCksIGtleSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTc5LDEwICs3OSw5IEBAIGNsYXNzIFRodW5rcyB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVGh1bmtzKTsKIHB1YmxpYzoKICAgICBUaHVua3MoKSA9IGRlZmF1bHQ7
Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZXRTbG93UGF0aENh
bGxUaHVuayhjb25zdCBTbG93UGF0aENhbGxLZXkmIGtleSkKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdldFNsb3dQYXRoQ2FsbFRodW5rKFZNJiB2bSwgY29uc3Qg
U2xvd1BhdGhDYWxsS2V5JiBrZXkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2VuZXJhdGVJZk5l
Y2Vzc2FyeSgKLSAgICAgICAgICAgIG1fc2xvd1BhdGhDYWxsVGh1bmtzLCBrZXksIHNsb3dQYXRo
Q2FsbFRodW5rR2VuZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRlSWZOZWNlc3Nhcnko
dm0sIG1fc2xvd1BhdGhDYWxsVGh1bmtzLCBrZXksIHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9y
KTsKICAgICB9CiAKICAgICBTbG93UGF0aENhbGxLZXkga2V5Rm9yU2xvd1BhdGhDYWxsVGh1bmso
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFRodW5rUHRyVGFnPiBwdHIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmgKaW5kZXggMTFmN2I4YTJh
MzA1OThiYTM1YTdiNGZlNTA5ODQyODU0YWRjYTI0YS4uZTZhMmVjNDJkOGVjNWUxMmZmMGVlNDQ1
YWE2ZDZjNzlkM2JkZjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ZyYW1lVHJhY2Vycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9GcmFtZVRyYWNlcnMuaApAQCAtODEsNiArODEsMTcgQEAgQUxXQVlTX0lOTElORSBzdGF0
aWMgdm9pZCBhc3NlcnRTdGFja1BvaW50ZXJJc0FsaWduZWQoKQogI2VuZGlmCiB9CiAKK2NsYXNz
IFNsb3dQYXRoRnJhbWVUcmFjZXIgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgU2xvd1Bh
dGhGcmFtZVRyYWNlcihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGNhbGxGcmFtZSk7CisgICAgICAgIEFTU0VSVChyZWludGVycHJldF9jYXN0PHZv
aWQqPihjYWxsRnJhbWUpIDwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odm0udG9wRW50cnlGcmFt
ZSkpOworICAgICAgICBhc3NlcnRTdGFja1BvaW50ZXJJc0FsaWduZWQoKTsKKyAgICAgICAgdm0u
dG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOworICAgIH0KK307CisKIGNsYXNzIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB7CiBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTkyLDQgKzEwMywzNSBAQCBj
bGFzcyBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgewogICAgIH0KIH07CiAKK2NsYXNzIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHsKK3B1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5F
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyKFZNJiB2bSwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICA6IG1fdm0odm0pCisjZW5k
aWYKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOworICAgICAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICAgICAgQVNTRVJU
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxGcmFtZSkgPCByZWludGVycHJldF9jYXN0PHZv
aWQqPih2bS50b3BFbnRyeUZyYW1lKSk7CisgICAgICAgIGFzc2VydFN0YWNrUG9pbnRlcklzQWxp
Z25lZCgpOworI2lmIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpCisgICAgICAgIC8vIFdoZW4g
ZGVidWdnaW5nIG1vZGUsIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIGVudmlyb25tZW50IGFs
c28gcHV0cyBmcmFtZSBwb2ludGVyIHRvIHZtLnRvcENhbGxGcmFtZS4KKyAgICAgICAgLy8gQW5k
IHdlIGNhbiBlbnN1cmUgaXQgaXMgd29ya2luZyBieSBjb21wYXJpbmcgd2l0aCB0aGUgcmVzdWx0
IG9mIF9fYnVpbHRpbl9mcmFtZV9hZHJlc3MuCisgICAgICAgIEFTU0VSVCh2bS50b3BDYWxsRnJh
bWUgPT0gY2FsbEZyYW1lKTsKKyAgICAgICAgdm0udG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOwor
I2VuZGlmCisgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIH5KSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlcigpCisgICAgeworICAgICAgICAvLyBGaWxsIHZtLnRvcENh
bGxGcmFtZSB3aXRoIGludmFsaWQgdmFsdWUgd2hlbiBsZWF2aW5nIGZyb20gSklUIG9wZXJhdGlv
biBmdW5jdGlvbnMuCisgICAgICAgIG1fdm0udG9wQ2FsbEZyYW1lID0gYml0d2lzZV9jYXN0PENh
bGxGcmFtZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHgwYmFkYmVlZjBiYWRiZWVmVUxMKSk7
CisgICAgfQorCisgICAgVk0mIG1fdm07CisjZW5kaWYKK307CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4
IDNjZTI5YmQ0ZmM3NzBiOTc1NjMxMDVmMjZjODZlOGJiYjkwYTY5MDkuLjFjYWMxYzQyMWRhOGI3
YzY0YjkyMjBmYTliZjMyY2M0ZmRhNjA1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTI1Miw2ICsyNTIsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6Y2FsbEV4Y2VwdGlvbkZ1enooVk0mIHZtKQogICAgIC8vIFNldCB1cCBvbmUgYXJn
dW1lbnQuCiAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eikpLCBHUFJJbmZvOjpub25QcmVzZXJ2
ZWROb25SZXR1cm5HUFIpOworICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICBjYWxs
KEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUiwgT3BlcmF0aW9uUHRyVGFnKTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsg
KytpKSB7CkBAIC05MzEsNiArOTMyLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmRlYnVnQ2Fs
bChWTSYgdm0sIFZfRGVidWdPcGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBhcmcKICNlbHNl
CiAjZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCisg
ICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cih0YWdD
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihmdW5jdGlvbikpLCBzY3JhdGNoKTsKICAgICBj
YWxsKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDI3NjBlZDZjNzJlMmVkMWYzMTUwYzNmZjk5ZDE1
NDAwNTU5MDIxNDYuLmY4OWQ3MDIxNWM3OWQ4NDQ3NThhY2VkZTAyMGFlZDc3NzFkMTNmMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNjUsNiAr
NjUsMTQgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICBWTSYgdm0oKSB7IHJldHVybiBtX2NvZGVCbG9jay0+dm0oKTsgfQogICAgIEFzc2VtYmxl
clR5cGVfVCYgYXNzZW1ibGVyKCkgeyByZXR1cm4gbV9hc3NlbWJsZXI7IH0KIAorICAgIHZvaWQg
cHJlcGFyZUNhbGxPcGVyYXRpb24oVk0mIHZtKQorICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFN
KHZtKTsKKyNpZiAhVVNFKEJVSUxUSU5fRlJBTUVfQUREUkVTUykgfHwgQVNTRVJUX0RJU0FCTEVE
CisgICAgICAgIHN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2Fs
bEZyYW1lKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgY2hlY2tTdGFja1BvaW50ZXJBbGln
bm1lbnQoKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBjaGVjayBpcyBib3RoIHVubmVlZGVkIGFu
ZCBoYXJkZXIgdG8gd3JpdGUgY29ycmVjdGx5IGZvciBBUk02NApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCmluZGV4IGI0YjQ2OTczYjkxNDNkNDI0ZDRlNDMxYWU0
MmJhNGU0M2MzYzMyNjMuLjg0ODVhOWZiZDY4M2RiZWY2NThmNjcwODgxM2Y3NThkNWRkYjk4ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTYxLDYg
KzYxLDcgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmVuc3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQoVk0m
IHZtLCBHUFJSZWcgc2hhZG93UGFja2V0LCBHUFJSZWcKICAgICBsb2FkUHRyKEFkZHJlc3Moc2Ny
YXRjaDFOb25BcmdHUFIpLCBzaGFkb3dQYWNrZXQpOwogICAgIEp1bXAgb2sgPSBicmFuY2hQdHIo
QmVsb3csIHNoYWRvd1BhY2tldCwgVHJ1c3RlZEltbVB0cihzaGFkb3dDaGlja2VuLT5sb2dFbmQo
KSkpOwogICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblByb2Nlc3NTaGFkb3dD
aGlja2VuTG9nKT4oVHJ1c3RlZEltbVB0cigmdm0pKTsKKyAgICBwcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKSksIHNjcmF0Y2gxTm9uQXJn
R1BSKTsKICAgICBjYWxsKHNjcmF0Y2gxTm9uQXJnR1BSLCBPcGVyYXRpb25QdHJUYWcpOwogICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihzaGFkb3dDaGlja2VuLT5hZGRyZXNzT2ZMb2dDdXJzb3IoKSks
IHNjcmF0Y2gxTm9uQXJnR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVy
cy5oCmluZGV4IGQ4MTBkMjM0Nzg3ZTU4OWZjYTY2ZWJjYjRhNDhiMjRmOTNkY2RlZDEuLjAxNWYw
M2I3NWI2N2M5Zjc1N2NiZTc0MDRkNGUxYTU2OTM0YTI4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtODQsMTUgKzg0LDYgQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHBva2UoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyBhcmd1bWVudEluZGV4IC0gR1BSSW5mbzo6
bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyk7CiAgICAgfQogCi0gICAgdm9pZCBwcmVwYXJlQ2Fs
bE9wZXJhdGlvbihWTSYgdm0pCi0gICAgewotI2lmIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1Mp
Ci0gICAgICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0jZWxzZQotICAgICAgICBzdG9yZVB0cihHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFtZSk7Ci0jZW5kaWYKLSAgICB9
Ci0KIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBOdW1iZXJPZlJlZ2lzdGVycywg
dHlwZW5hbWUgUmVnVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCmluZGV4IDM4MDk0NjFhYmU1Mjc3NTU3YWUxYTcyZmUxNjdhY2FjYzFhYjM5ZmIuLjlj
Njc2ZjE1MDQ2NTliZjQwMThkYTM4MjRmMjZjOWUyOTBjNTgyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTA3LDE3ICsxMDcsMTcgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKENvZGVCbG9j
ayogY29kZUJsb2NrKQogICAgIC8vIFdlIHBhc3MgaW4gb3VyIG93biBjb2RlIGJsb2NrLCBiZWNh
dXNlIHRoZSBjYWxsZnJhbWUgaGFzbid0IGJlZW4gcG9wdWxhdGVkLgogICAgIFZNJiB2bSA9IGNv
ZGVCbG9jay0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGNhbGxGcmFtZS0+Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKHZtLCBjb2RlQmxvY2spOwog
ICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHNj
b3BlKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJv
bVRodW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICBnZW5lcmljVW53aW5kKHZtLCBjYWxsRnJh
bWUpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
YWxsQXJpdHlDaGVjayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgaW50MzJfdCBtaXNzaW5nQXJnQ291bnQgPSBDb21tb25TbG93UGF0aHM6OmFy
aXR5Q2hlY2tGb3Iodm0sIGNhbGxGcmFtZSwgQ29kZUZvckNhbGwpOwpAQCAtMTQ1LDcgKzE0NSw3
IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpbnQz
Ml90IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcih2bSwg
Y2FsbEZyYW1lLCBDb2RlRm9yQ29uc3RydWN0KTsKQEAgLTE2Miw3ICsxNjIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgc3R1Yklu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAKICAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIElkZW50aWZpZXIg
aWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCkBAIC0yMTMsNyArMjEzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBJZGVudGlm
aWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICBzdHViSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlm
aWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCkBAIC0yNDgsNyArMjQ4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIApAQCAtMjcxLDcgKzI3MSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAK
ICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAKQEAgLTI5MSw3ICsyOTEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFz
ZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0KTsKQEAgLTMwOSw3ICszMDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZQogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAKICAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKQEAgLTMzMSw3ICszMzEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZQogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIAogICAgIHN0
dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwpAQCAtMzQ5LDcgKzM0OSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvCiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIElkZW50
aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCiAgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0zNjUsNyArMzY1LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2wKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwog
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0zODgs
NyArMzg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWMKIAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CkBAIC00MTUsNyArNDE1LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWRHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBAIC00NDAsNyArNDQwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBAIC00NjksNyArNDY5LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5VmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2UKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1Bh
dGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSkp
KTsKIH0KQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cgogICAgIAog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93
UGF0aCA9IHRydWU7CiAgICAgCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWMKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHN0dWJJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgIApAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICAKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAKQEAgLTUzNCw3ICs1
MzQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmlj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAg
CkBAIC01NTIsNyArNTUyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0s
IHVpZCk7CkBAIC01ODMsNyArNTgzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICAK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKHZtLCB1aWQpOwpAQCAtNjE0LDcgKzYxNCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmEKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlk
ZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKQEAgLTg1OSw3ICs4NTksNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CkBAIC05NDgsNyAr
OTQ4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwpA
QCAtOTcyLDcgKzk3Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEdl
bmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKQEAgLTk4Niw3ICs5ODYsNyBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsK
ICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0
KTsKQEAgLTEyMTUsNyArMTIxNSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVMZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1cm4ganNMZXNzPHRydWU+KGds
b2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMikpOwogfQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ29tcGFyZUxlc3NFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGpzTGVz
c0VxPHRydWU+KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQpAQCAtMTIzMyw3ICsxMjMzLDcgQEAgc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAg
cmV0dXJuIGpzTGVzczxmYWxzZT4oZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMiksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSk7CiB9CkBAIC0xMjQyLDcgKzEyNDIs
NyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKICAgICByZXR1cm4ganNMZXNzRXE8ZmFsc2U+KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDIpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSkpOwogfQpAQCAt
MTI1MSw3ICsxMjUxLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUVx
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1YKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxp
bmUoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSk7CiB9CkBAIC0xMjY0LDcgKzEyNjQsNyBAQCBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBib29sIHJl
c3VsdCA9IGFzU3RyaW5nKGxlZnQpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFzU3RyaW5nKHJpZ2h0
KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTEyNzgsNyArMTI3OCw3IEBAIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTVmFs
dWUgc3JjMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1ZhbHVlIHNyYzIg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CkBAIC0xMjkwLDcgKzEyOTAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZChnbG9i
YWxPYmplY3QsIHByb2ZpbGUsIHZhbHVlcywgc2l6ZSkpOwogfQogCkBAIC0xMjk4LDcgKzEyOTgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNp
emVBbmRQcm9maWxlKEpTR2xvYmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgSlNWYWx1ZSBzaXplVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoc2l6ZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZ2xvYmFs
T2JqZWN0LCBwcm9maWxlLCBzaXplVmFsdWUpKTsKIH0KQEAgLTEzMjAsNyArMTMyMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oVk0qIHZtUG9p
bnRlciwgSlNTY29wZSogc2NvcGUsCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJu
IG5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRh
YmxlLCBmYWxzZSk7CiB9CiAKQEAgLTEzMjgsNyArMTMyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uQ29t
bW9uPEpTRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0K
IApAQCAtMTMzNiw3ICsxMzM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihWTSogdm1Qb2ludGVyLCBKU1Njb3AKIHsKICAgICBW
TSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gbmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JG
dW5jdGlvbj4odm0sIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKIH0KIApAQCAt
MTM0NCw3ICsxMzQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2MKIHsKICAgICBWTSYgdm0g
PSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICByZXR1cm4gbmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlv
bj4odm0sIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCkBAIC0xMzUyLDcg
KzEzNTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5j
RnVuY3Rpb24oVk0qIHZtUG9pbnRlciwgSlNTY29wZSogcwogewogICAgIFZNJiB2bSA9ICp2bVBv
aW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIHJldHVybiBuZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KHZtLCBzY29w
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAKQEAgLTEzNjAsNyArMTM2MCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbldp
dGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0
dXJuIG5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlvbj4odm0sIHNjb3BlLCBmdW5jdGlv
bkV4ZWN1dGFibGUsIHRydWUpOwogfQogCkBAIC0xMzY4LDcgKzEzNjgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24oVk0q
IHZtUG9pbnRlciwgSgogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdGdW5j
dGlvbkNvbW1vbjxKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rpb25F
eGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAgICAgCkBAIC0xMzc2LDcgKzEzNzYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25X
aXRoSW52YWxpZGF0ZWRSZQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdG
dW5jdGlvbkNvbW1vbjxKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rp
b25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KICAgICAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAg
IEpTRnVuY3Rpb24qIGZ1bmMgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmNDZWxsKTsKICAgICBK
U1ZhbHVlIG5hbWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE5hbWUpOwpAQCAtMTM5NSw3ICsx
Mzk1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChWTSogdm1Q
b2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVy
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAog
ICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgc3RydWN0dXJlKTsKIH0KQEAgLTE0
MDQsNyArMTQwNCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdQcm9taXNl
KFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFZNJiB2bSA9ICp2
bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogfQpA
QCAtMTQxMyw3ICsxNDEzLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0lu
dGVybmFsUHJvbWlzZShWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnUKIHsKICAgICBWTSYg
dm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBz
dHJ1Y3R1cmUpOwogfQpAQCAtMTQyMiw3ICsxNDIyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0dlbmVyYXRvcihWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU0dlbmVyYXRvcjo6Y3Jl
YXRlKHZtLCBzdHJ1Y3R1cmUpOwogfQpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yKFZNKiB2bVBvaW50ZXIsIFN0cnVj
dHVyZSogc3RydWMKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU0FzeW5j
R2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiB9CkBAIC0xNDQxLDcgKzE0NDEsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogcgogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgUmVn
RXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOwogICAgIEFTU0VS
VChyZWdleHAtPmlzVmFsaWQoKSk7CkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBVbnVzZWRQdHIgSklU
X09QRVJBVElPTiBvcGVyYXRpb25IYW5kbGVUcmFwcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgQVNTRVJUKHZtLm5lZWRU
cmFwSGFuZGxpbmcoKSk7CiAgICAgdm0uaGFuZGxlVHJhcHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKFZNKiB2bVBvaW50ZXIsIGludDMyX3QgZGVidWdIb29r
VHlwZSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHZtLmludGVycHJldGVyLT5kZWJ1
ZyhjYWxsRnJhbWUsIHN0YXRpY19jYXN0PERlYnVnSG9va1R5cGU+KGRlYnVnSG9va1R5cGUpKTsK
IH0KQEAgLTE0ODIsNyArMTQ4Miw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiB7CiAgICAg
Vk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gQnl0ZWNv
ZGVJbmRleDo6ZnJvbUJpdHMoYnl0ZWNvZGVJbmRleEJpdHMpOwogCiAgICAgLy8gRGVmZXIgR0Mg
Zm9yIGEgd2hpbGUgc28gdGhhdCBpdCBkb2Vzbid0IHJ1biBiZXR3ZWVuIHdoZW4gd2UgZW50ZXIg
aW50byB0aGlzCkBAIC0xNzI5LDcgKzE3MjksNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaChWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlY29kZQog
ewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9
IEJ5dGVjb2RlSW5kZXg6OmZyb21CaXRzKGJ5dGVjb2RlSW5kZXhCaXRzKTsKIAogICAgIENvZGVC
bG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5yZXBs
YWNlbWVudCgpOwpAQCAtMTc1Miw3ICsxNzUyLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVByb2ZpbGUoVk0qIHZtUG9pbnRlciwgdWkK
IHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgg
PSBCeXRlY29kZUluZGV4Ojpmcm9tQml0cyhieXRlY29kZUluZGV4Qml0cyk7CiAKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0xNzg2LDcgKzE3
ODYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICBKU1ZhbHVlIGFycmF5VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEFycmF5VmFsdWUpOwogICAgIEFTU0VSVChpc0pTQXJyYXkoYXJyYXlWYWx1ZSkpOwpAQCAtMTgx
Niw3ICsxODE2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQob2JqZWN0ICYmIG9iamVjdC0+aXNPYmplY3QoKSk7
CiAgICAgSlNPYmplY3QqIGJhc2VPYmogPSBvYmplY3QtPmdldE9iamVjdCgpOwpAQCAtMTgyOSw3
ICsxODI5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFNldHRlckJ5SWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKICAgICBBU1NFUlQob2JqZWN0ICYmIG9iamVjdC0+aXNPYmplY3QoKSk7CiAg
ICAgSlNPYmplY3QqIGJhc2VPYmogPSBvYmplY3QtPmdldE9iamVjdCgpOwpAQCAtMTg0Miw3ICsx
ODQyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCiAgICAgcHV0QWNjZXNzb3JCeVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJh
c2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCksIGF0dHJpYnV0ZSwgYXNPYmpl
Y3QoZ2V0dGVyKSwgQWNjZXNzb3JUeXBlOjpHZXR0ZXIpOwogfQpAQCAtMTg1MSw3ICsxODUxLDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFNldHRlckJ5VmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCiAgICAgcHV0QWNjZXNzb3JCeVZhbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGJhc2UpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCksIGF0dHJpYnV0ZSwgYXNPYmplY3Qoc2V0
dGVyKSwgQWNjZXNzb3JUeXBlOjpTZXR0ZXIpOwogfQpAQCAtMTg2MSw3ICsxODYxLDcgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlclNldHRlcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0NlbGwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgQVNTRVJUKG9iamVjdCAmJiBvYmplY3QtPmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gYXNPYmplY3Qob2JqZWN0KTsKQEAgLTE4NzgsNyArMTg3OCw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAg
IEFTU0VSVChvYmplY3QgJiYgb2JqZWN0LT5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KG9iamVjdCk7CkBAIC0xODk1LDcgKzE4OTUsNyBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgaW50MzJfdCBzY29wZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBK
U1Njb3BlKiBzY29wZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihzY29wZVJlZykuUmVnaXN0ZXI6
OnNjb3BlKCk7CiAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKHNjb3BlUmVnKSA9IHNjb3BlLT5u
ZXh0KCk7CkBAIC0xOTA1LDcgKzE5MDUsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW5zdGFuY2VPZkN1c3RvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRIYXNJbnN0YW5jZSk7CkBAIC0yMDY4LDcgKzIwNjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwog
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQp
OwogCkBAIC0yMDgwLDcgKzIwODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpOwpAQCAtMjEwMSw3ICsyMTAxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xvYmFsT2JqZWN0Kgog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIApAQCAtMjE0OSw3ICsyMTQ5LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVy
dHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwog
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQp
OwogICAgIApAQCAtMjE3MCw3ICsyMTcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeVZhbFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFN1YnNjcmlwdCk7CkBAIC0yMjIwLDcgKzIyMjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0s
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCkpKTsKIH0KIApAQCAtMjIyOCw3ICsy
MjI4LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2
bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKTsKIH0KIApAQCAtMjI2MCw3ICsy
MjYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZh
bEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5VmFs
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKSkpOwogfQogCkBAIC0yMjY4LDcgKzIyNjgs
NyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkp
KTsKIH0KIApAQCAtMjI3Niw3ICsyMjc2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWwKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU1ZhbHVlOjpkZWNvZGUo
b2JqZWN0VmFsdWUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0yMjkxLDcgKzIyOTEsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgSlNTY29wZSogY3VycmVudFNjb3BlID0ganNDYXN0PEpTU2NvcGUqPihjdXJyZW50U2Nv
cGVDZWxsKTsKICAgICByZXR1cm4gSlNXaXRoU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBjdXJyZW50U2NvcGUsIG9iamVjdCk7CiB9CkBAIC0yMzAwLDcgKzIzMDAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUg
cHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvKTsKICAgICAKQEAgLTIzMTIsNyAr
MjMxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VP
ZkdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8pOwog
ICAgIApAQCAtMjMyNiw3ICsyMzI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvdG8p
OwpAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNp
emVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsb2IKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBzaXplRnJhbWVGb3JGb3J3YXJkQXJn
dW1lbnRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgbnVtVXNlZFN0YWNrU2xvdHMpOwog
fQogCkBAIC0yMzUzLDcgKzIzNTMsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7CiAgICAgcmV0dXJuIHNpemVGcmFtZUZvclZhcmFy
Z3MoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBhcmd1bWVudHMsIG51bVVzZWRTdGFja1Ns
b3RzLCBmaXJzdFZhckFyZ09mZnNldCk7CiB9CkBAIC0yMzYyLDcgKzIzNjIsNyBAQCBDYWxsRnJh
bWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoSlNH
bG9iYWxPYmplY3QqIGdsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgc2V0
dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIG5ld0NhbGxG
cmFtZSwgbGVuZ3RoKTsKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQpAQCAtMjM3MSw3ICsy
MzcxLDcgQEAgQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldHVwVmFyYXJnc0Zy
YW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRB
cmd1bWVudHMpOwogICAgIHNldHVwVmFyYXJnc0ZyYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCBuZXdDYWxsRnJhbWUsIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQsIGxlbmd0aCk7CiAg
ICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKQEAgLTIzODEsNyArMjM4MSw3IEBAIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUga2V5ID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpOwpAQCAtMjQwNyw3ICsyNDA3LDcgQEAgY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktleVR5cGUoVk0qIHZt
UG9pbnRlciwgRW5jb2RlZEoKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIGtl
eSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAKQEAgLTI0MjcsNyArMjQyNyw3IEBAIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3RyaW5nV2l0aFVua25vd25LZXlUeXBlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBK
U1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNDUyLDcgKzI0NTIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEZyb21TY29wZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0yNDk0LDcgKzI0OTQsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBJbnN0cgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0yNTQ4LDcg
KzI1NDgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRXhjZXB0
aW9uVmFsdWUpOwpAQCAtMjU2Miw3ICsyNTYyLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9IYXZlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWwK
IHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVCghb2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IG9iamVj
dC0+YWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgMCwgaW5pdGlhbE91dE9mTGluZUNh
cGFjaXR5KTsKQEAgLTI1NzQsNyArMjU3NCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZShWTSogdm1Qb2luCiB7
CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IG9iamVjdC0+
YWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5v
dXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTaXplKTsKICAgICBvYmplY3QtPm51a2VTdHJ1Y3R1cmVB
bmRTZXRCdXR0ZXJmbHkodm0sIG9iamVjdC0+c3RydWN0dXJlSUQoKSwgcmVzdWx0KTsKQEAgLTI1
ODUsNyArMjU4NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25PU1JXcml0ZUJhcnJp
ZXIoVk0qIHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50
ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNlbGwpOwogfQogCkBAIC0yNTkzLDcgKzI1OTMsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgoVk0qIHZt
UG9pbnRlciwgSlNDZWxsKiBjZWxsKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHZtLmhl
YXAud3JpdGVCYXJyaWVyU2xvd1BhdGgoY2VsbCk7CiB9CiAKQEAgLTI2MDEsNyArMjYwMSw3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKiB2
bVBvaW50ZXIpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwg
Y2FsbEZyYW1lKTsKICAgICBBU1NFUlQodm0udGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cpOwogfQpA
QCAtMjYxMCw3ICsyNjEwLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4
Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qIHZtUG9pbnRlcikKIHsKICAgICBWTSYg
dm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBBU1NFUlQoY2FsbEZyYW1lLT5pc1N0YWNrT3ZlcmZsb3dGcmFtZSgp
KTsKICAgICBBU1NFUlQoanNDYXN0PEVycm9ySW5zdGFuY2UqPih2bS5leGNlcHRpb25Gb3JJbnNw
ZWN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpLT5pc1N0YWNrT3ZlcmZsb3dFcnJvcigpKTsKICAg
ICBnZW5lcmljVW53aW5kKHZtLCBjYWxsRnJhbWUpOwpAQCAtMjYyMSw3ICsyNjIxLDcgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0aW9uKFZNKiB2bVBvaW50ZXIp
CiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgY2FsbEZyYW1l
KTsKIH0KIApAQCAtMjYzNCw3ICsyNjM0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkV4Y2VwdGlvbkZ1enooSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBVTlVTRURfUEFSQU0oc2NvcGUpOwogI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJ
QkxFKQpAQCAtMjY1NSw3ICsyNjU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNB
ZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSkpOwogfQogCkBAIC0yNjY0LDcgKzI2NjQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9maWxlZEFkZChnbG9i
YWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpLCAqYXJpdGhQcm9maWxlKSk7CiB9CiAKQEAgLTI2NzIsNyArMjY3Miw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9maWxlZE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBK
U1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKQEAgLTI2OTcsNyArMjY5
Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQcm9m
aWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRkSUMtPmFyaXRoUHJv
ZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwpAQCAtMjcwOCw3ICsyNzA4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNW
YWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CkBAIC0yNzI5LDcgKzI3Mjks
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkTm9PcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7
CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CkBAIC0yNzY3
LDcgKzI3NjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVl
TXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gdW5wcm9maWxlZE11bChnbG9iYWxPYmplY3QsIGVu
Y29kZWRPcDEsIGVuY29kZWRPcDIpOwogfQpAQCAtMjc3Niw3ICsyNzc2LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0
dXJuIHVucHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsK
IH0KQEAgLTI3ODUsNyArMjc4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0g
b3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwogICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKQEAgLTI4MDMsNyArMjgwMyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAog
ICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxlZE11bChnbG9iYWxP
YmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUpOwpAQCAtMjgxMyw3
ICsyODEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11
bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGcKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCiAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJp
dGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CkBAIC0yODMyLDcgKzI4MzIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJvZmls
ZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2Zp
bGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKQEAgLTI4NDQsNyArMjg0NCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTVmFsdWUgb3BlcmFu
ZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7CiAKQEAgLTI4NjYsNyArMjg2Niw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9m
aWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVl
IG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwogICAgIGFyaXRoUHJv
ZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKQEAgLTI4OTMsNyArMjg5Myw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1ZSBvcGVyYW5k
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIApAQCAtMjkyNyw3ICsyOTI3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aE5lZ2F0ZU9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTVmFsdWUg
b3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7CiAKQEAgLTI5NzgsNyAr
Mjk3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICByZXR1cm4gdW5wcm9maWxlZFN1YihnbG9iYWxPYmplY3QsIGVuY29kZWRP
cDEsIGVuY29kZWRPcDIpOwogfQogCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iagogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBw
cm9maWxlZFN1Yih2bSwgZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJp
dGhQcm9maWxlKTsKIH0KQEAgLTI5OTcsNyArMjk5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0aW1p
emVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplOwogICAgIGlmIChBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkKQEAgLTMwMTUsNyAr
MzAxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJO
b09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIHJldHVybiB1bnByb2ZpbGVkU3ViKGdsb2JhbE9iamVjdCwgZW5jb2Rl
ZE9wMSwgZW5jb2RlZE9wMik7CiB9CkBAIC0zMDI0LDcgKzMwMjQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQo
YXJpdGhQcm9maWxlKTsKQEAgLTMwNDMsNyArMzA0Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFyaXRoUHJvZmlsZSog
YXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFBy
b2ZpbGUpOwpAQCAtMzA1NCw3ICszMDU0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blByb2Nlc3NUeXBlUHJvZmlsZXJMb2coVk0qIHZtUG9pbnRlcikKIHsKICAgICBWTSYgdm0gPSAq
dm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJM
b2cgRnVsbCwgY2FsbGVkIGZyb20gaW5zaWRlIGJhc2VsaW5lIEpJVCJfcyk7CiB9CiAKQEAgLTMw
NjIsNyArMzA2Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzU2hhZG93
Q2hpY2tlbkxvZyhWTSogdm1Qb2ludGVyKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHZtLnNoYWRvd0NoaWNrZW4oKSk7CiAgICAgdm0uc2hhZG93Q2hpY2tlbigp
LT51cGRhdGUodm0sIGNhbGxGcmFtZSk7CiB9CkBAIC0zMDcxLDcgKzMwNzEsNyBAQCBpbnQzMl90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5jYXRjaGFibGVBbmRO
b3RpZnlQcm9maWxlcihWTQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApp
bmRleCAwYWRkYmZmMmU0OGVlZmU2NGI1ZDAyMTVmZDZiMTM2MGY3ODcwMGI3Li4zN2U4MzYxNWQ0
N2ZhNmQ1MDRkODc4NjBkYTQ3Y2VlODY4MjVhNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHVzaW5nIERfSklUT3BlcmF0
aW9uX0QgPSBkb3VibGUoSklUX09QRVJBVElPTiAqKShkb3VibGUpOwogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoVk0qKSBXVEZfSU5URVJOQUw7CiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxs
ZXJGcmFtZShWTSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25W
TUhhbmRsZUV4Y2VwdGlvbihWTSopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJv
ckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKENvZGVCbG9jayopIFdURl9J
TlRFUk5BTDsKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhK
U0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCmluZGV4IGI1ZWM5N2M5NDQzOGIyOGY2M2IwYjljOTZiMWNkMjFmZjQwNGM1YjEuLjdk
YzQ2YjUxMDI1OTM1ZmQyMDAxYWRmNDRjMWJlMDU4YTYxNjhmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVy
bmFsUAogICAgICAgICBhdXRvIHNsb3dQYXRoVGh1bmsgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SklUVGh1bmtQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3ModGFyZ2V0LnJldGFn
Z2VkRXhlY3V0YWJsZUFkZHJlc3M8SklUVGh1bmtQdHJUYWc+KCkpOwogICAgICAgICBGVEw6OlNs
b3dQYXRoQ2FsbEtleSBrZXkgPSB0aHVua3Mua2V5Rm9yU2xvd1BhdGhDYWxsVGh1bmsoc2xvd1Bh
dGhUaHVuayk7CiAgICAgICAgIGtleSA9IGtleS53aXRoQ2FsbFRhcmdldChuZXdDYWxsZWVGdW5j
dGlvbik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KHRodW5rcy5nZXRTbG93UGF0aENhbGxUaHVuayhrZXkpLnJl
dGFnZ2VkQ29kZTxPcGVyYXRpb25QdHJUYWc+KCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hDYWxsKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4odGh1bmtzLmdl
dFNsb3dQYXRoQ2FsbFRodW5rKHZtLCBrZXkpLnJldGFnZ2VkQ29kZTxPcGVyYXRpb25QdHJUYWc+
KCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDZi
YmM2Njk3MWVlMzJlNzJlYzVkZWViOTU2ZjVlODQ2NGYyZWZjNzYuLjQ2ODYxNTBkYTM5MDg2MThh
YjJlYmE2NTk3ZjkwNjMxNzIxZWQ3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTExNzMsOCArMTE3Myw5IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2VuZXJh
dG9yKFZNJiB2CiAgICAgLy8gVGhyb3cgU3RhY2sgT3ZlcmZsb3cgZXhjZXB0aW9uCiAgICAgaml0
LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5
RnJhbWUpOwogICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpy
ZWdUMywgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6
cmVnVDMpOwotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvckZyb21UaHVuayk+KEdQUkluZm86OnJlZ1QzKTsKLSAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4odGhy
b3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Cisg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxv
d0Vycm9yRnJvbVRodW5rKT4oR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRh
Z0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxv
d0Vycm9yRnJvbVRodW5rKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQb2ludGVy
VmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAg
ICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBq
aXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2MGI0OWY5MTE2M2Y1M2M0ZDQ3ODViZDEx
NDNkYTVkOWNlMDQ2YWY3Li41Nzk4ZDMwYjhiNTg2YjczNGI4ZmQ4NjA0ODg4NGZkZGU3NmIwOTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
QEAgLTc5LDcgKzc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOyBcCiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7IFwK
ICAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7IFwKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCisgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7IFwKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKQogCiAjaWZuZGVmIE5ERUJVRwpAQCAtNTM2LDEwICs1MzYsMTAgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiAgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
Ly8gSXQncyBvayB0byBjcmVhdGUgdGhlIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciBoZXJlIGJlZm9y
ZSB3ZQorICAgIC8vIEl0J3Mgb2sgdG8gY3JlYXRlIHRoZSBTbG93UGF0aEZyYW1lVHJhY2VyIGhl
cmUgYmVmb3JlIHdlCiAgICAgLy8gY29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKCkgYmVjYXVz
ZSB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxsZWQKICAgICAvLyBhZnRlciB0aGUgZnJhbWUg
aGFzIGJlZW4gcHJvcHVsYXRlZCB3aXRoIGEgcHJvcGVyIENvZGVCbG9jayBhbmQgY2FsbGVlLgot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgU2xv
d1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBMTElOVF9TRVRf
UENfRk9SX1NUVUJTKCk7CiAKQEAgLTE0MzYsNyArMTQzNiw3IEBAIHN0YXRpYyBTbG93UGF0aFJl
dHVyblR5cGUgaGFuZGxlSG9zdENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNWYWx1ZSBj
YWxsZWUsCiAgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SlMpOwogICAgIAog
ICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpIHsKLSAgICAgICAgICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKKyAgICAgICAgICAg
IFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CiAgICAgICAgICAg
ICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICAgICAg
dm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2FsbGVlRnJhbWUp
KTsKICAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJh
bWUsIExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25Q
dHJUYWcpOwpAQCAtMTQ1Niw3ICsxNDU2LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBo
YW5kbGVIb3N0Q2FsbChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU1ZhbHVlIGNhbGxlZSwKICAg
ICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpKUyk7CiAgICAgCiAgICAg
aWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCkgewotICAgICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CisgICAgICAgIFNsb3dQ
YXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CiAgICAgICAgIGNhbGxlZUZy
YW1lLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZtLmhvc3RDYWxsUmV0
dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24o
YXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2FsbGVlRnJhbWUpKTsKICAgICAg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgTExJbnQ6Omdl
dENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0clRhZyk7CkBAIC0x
NzczLDcgKzE3NzMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVidWcpCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFuZGxlX2V4Y2VwdGlvbikKIHsKICAgICBW
TSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgY2FsbEZyYW1lKTsKICAg
ICBMTElOVF9FTkRfSU1QTCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BdG9taWNzT2JqZWN0LmNwcAppbmRleCA2OWRlYjY2OGNmMWU3NTY4MzBmNzc2MTQxZTIxYTJi
ZmUzZGY5Y2VkLi5iNjhiMmYzZDMyOTUzNTVmNzJiMWU5ODFkMWZhNmU0ZWQzNzVlNzQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcApAQCAt
NDcxLDcgKzQ3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRv
bWljc0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUoYmFz
ZSksIEpTVmFsdWU6OmRlY29kZShpbmRleCksIEpTVmFsdWU6OmRlY29kZShvcGVyYW5kKX07CiAg
ICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKHZtLCBnbG9iYWxPYmplY3QsIGFyZ3Ms
IEFkZEZ1bmMoKSk7CiB9CkBAIC00ODAsNyArNDgwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25BdG9taWNzQW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYXJnc1tdID0g
e0pTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGluZGV4KSwgSlNWYWx1ZTo6
ZGVjb2RlKG9wZXJhbmQpfTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Modm0s
IGdsb2JhbE9iamVjdCwgYXJncywgQW5kRnVuYygpKTsKIH0KQEAgLTQ4OSw3ICs0ODksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3NDb21wYXJlRXhjaGFu
Z2UoSlNHbG9iYWxPYmplY3QqIGdsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNv
ZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUoZXhwZWN0ZWQpLCBKU1ZhbHVlOjpkZWNvZGUobmV3
VmFsdWUpfTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Modm0sIGdsb2JhbE9i
amVjdCwgYXJncywgQ29tcGFyZUV4Y2hhbmdlRnVuYygpKTsKIH0KQEAgLTQ5OCw3ICs0OTgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3NFeGNoYW5nZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpk
ZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUob3BlcmFuZCl9OwogICAgIHJldHVybiBhdG9t
aWNPcGVyYXRpb25XaXRoQXJncyh2bSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBFeGNoYW5nZUZ1bmMo
KSk7CiB9CkBAIC01MDcsNyArNTA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25BdG9taWNzSXNMb2NrRnJlZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBpc0xvY2tGcmVlKGdsb2JhbE9i
amVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHNpemUpKTsKIH0KIApAQCAtNTE1LDcgKzUxNSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc0xvYWQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGluZGV4KX07CiAgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKHZtLCBnbG9iYWxP
YmplY3QsIGFyZ3MsIExvYWRGdW5jKCkpOwogfQpAQCAtNTI0LDcgKzUyNCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc09yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1Zh
bHVlIGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUoYmFzZSksIEpTVmFsdWU6OmRlY29kZShpbmRl
eCksIEpTVmFsdWU6OmRlY29kZShvcGVyYW5kKX07CiAgICAgcmV0dXJuIGF0b21pY09wZXJhdGlv
bldpdGhBcmdzKHZtLCBnbG9iYWxPYmplY3QsIGFyZ3MsIE9yRnVuYygpKTsKIH0KQEAgLTUzMyw3
ICs1MzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3NT
dG9yZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBK
U1ZhbHVlOjpkZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUob3BlcmFuZCl9OwogICAgIHJl
dHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyh2bSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBTdG9y
ZUZ1bmMoKSk7CiB9CkBAIC01NDIsNyArNTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25BdG9taWNzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYXJnc1tdID0ge0pT
VmFsdWU6OmRlY29kZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGluZGV4KSwgSlNWYWx1ZTo6ZGVj
b2RlKG9wZXJhbmQpfTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Modm0sIGds
b2JhbE9iamVjdCwgYXJncywgU3ViRnVuYygpKTsKIH0KQEAgLTU1MSw3ICs1NTEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3NYb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
SlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUo
aW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUob3BlcmFuZCl9OwogICAgIHJldHVybiBhdG9taWNPcGVy
YXRpb25XaXRoQXJncyh2bSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBYb3JGdW5jKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5k
ZXggOTBjM2RlN2EzNDMwYmM3MTg5Yjk2ZjAzODkwNzNmNThhZDBjMWU3OC4uODY2ZDJhOWMyZTM1
MGRmNmFjMDhmODViYzkyZDNlMTJhYzdlMDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKTsgXAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpOyBcCiAgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOyBcCi0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAorICAgIFNsb3dQYXRo
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7IFwKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSkKIApAQCAtMTc1LDcgKzE3NSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2Fy
aXR5Q2hlY2spCiAgICAgaWYgKFVOTElLRUxZKHNsb3RzVG9BZGQgPCAwKSkgewogICAgICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IENvbW1vblNsb3dQYXRoczo6Y29kZUJsb2NrRnJvbUNhbGxG
cmFtZUNhbGxlZShjYWxsRnJhbWUsIENvZGVGb3JDYWxsKTsKICAgICAgICAgY2FsbEZyYW1lLT5j
b252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUodm0sIGNvZGVCbG9jayk7Ci0gICAgICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgICAgIFNsb3dQYXRo
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICBFcnJvckhhbmRsaW5n
U2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAg
ICAgICB0aHJvd0FyaXR5Q2hlY2tTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29u
c3RydWN0X2FyaXR5Q2hlY2spCiAgICAgaWYgKFVOTElLRUxZKHNsb3RzVG9BZGQgPCAwKSkgewog
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IENvbW1vblNsb3dQYXRoczo6Y29kZUJsb2Nr
RnJvbUNhbGxGcmFtZUNhbGxlZShjYWxsRnJhbWUsIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgICAg
ICBjYWxsRnJhbWUtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSh2bSwgY29kZUJsb2NrKTsK
LSAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICAgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgICAg
IEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKICAgICAgICAgdGhyb3dBcml0eUNo
ZWNrU3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CiAgICAgICAg
IFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEp
KSwgY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCmluZGV4IGE4ZTk3YzAzMWQ3NmE1OGZlZjdlNWE4MDQ5MzdhNmJiYTEw
YTAyNjguLmY0YmE2MzIwMDYyZjZmOTFmYTRlZjlkNDBlZGFjNTJkNjVlZTI4NTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAt
NzI0LDcgKzcyNCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdQcm90
b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIoSlNHbG9iYWxPYmplCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBSZWdFeHAqIHJlZ0V4cCA9IHNlYXJjaFZhbHVlLT5yZWdFeHAoKTsKQEAgLTc0Nyw3
ICs3NDcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5j
UmVwbGFjZVJlZ0V4cFN0cmluZyhKU0dsb2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC05MjUsNyArOTI1LDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHJldHVy
biByZXBsYWNlKAogICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjpkZWNvZGUoc2VhcmNoVmFsdWUpLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDE5Yzg4OTk3OTQ4OTJi
MGI1Y2RiZmQ5OTBmNWY5ZjkwNmQ4ZGJkMWIuLjNiMTE4N2U5ZjU4NWRmZjkzMGM4ODk0MmZlOWY5
ZDk1MTQyZTJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5j
cHAKQEAgLTc1Nyw3ICs3NTcsNyBAQCBjbGFzcyBET01KSVRHZXR0ZXIgOiBwdWJsaWMgRE9NSklU
Tm9kZSB7CiAgICAgICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAg
ICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgICAgICAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8
RE9NSklUR2V0dGVyKj4ocG9pbnRlciktPnZhbHVlKCkpKTsKICAgICAgICAgfQogCkBAIC04NTEs
NyArODUxLDcgQEAgY2xhc3MgRE9NSklUR2V0dGVyQ29tcGxleCA6IHB1YmxpYyBET01KSVROb2Rl
IHsKICAgICAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgICAg
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgICAgICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgICAgICAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
ICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICAg
ICAgYXV0byogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8RE9NSklUTm9kZSo+KHBvaW50ZXIpOwogICAg
ICAgICAgICAgYXV0byogZG9taml0R2V0dGVyQ29tcGxleCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklU
R2V0dGVyQ29tcGxleCo+KHZtLCBvYmplY3QpOwpAQCAtOTU4LDcgKzk1OCw2IEBAIGNsYXNzIERP
TUpJVEZ1bmN0aW9uT2JqZWN0IDogcHVibGljIERPTUpJVE5vZGUgewogICAgIHsKICAgICAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwotICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAgICAgRE9NSklUTm9kZSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklU
Tm9kZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKQEAgLTk3Miw3ICs5NzEsNyBAQCBj
bGFzcyBET01KSVRGdW5jdGlvbk9iamVjdCA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihub2RlLT52YWx1ZSgpKSk7CiAgICAgfQogCkBAIC0xMDUxLDcgKzEwNTAsNyBAQCBjbGFz
cyBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0IDogcHVibGljIERPTUpJVE5vZGUgewogICAgICAg
ICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKG5vZGUtPnZhbHVlKCkpKTsKICAgICB9CiAKQEAgLTExMTQsNyArMTExMyw3IEBAIGNs
YXNzIERPTUpJVEdldHRlckJhc2VKU09iamVjdCA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICAg
ICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgICAgICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgICAgICAgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICAgICAg
SlNPYmplY3QqIG9iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4ocG9pbnRlcik7CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDdiOGM1ZDkwMDJjNjY0OGM1ZDk4ODYzNTE0YWEyZTg4
N2ViYTgxNmUuLmZiYzNhMTdiMzY1MGEyMTBkZmY2YzFmYTY1ZTJkMWM2MjA0NzljNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApA
QCAtMTc2OCw3ICsxNzY4LDcgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6ZW1pdExvb3BUaWVyVXBD
aGVjayh1aW50MzJfdCBsb29wSW5kZXgpCiAgICAgICAgICAgICBmb3JjZU9TUkVudHJ5Lmxpbmso
JmppdCk7CiAgICAgICAgICAgICB0aWVyVXAubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0
LnByb2JlKHRyaWdnZXJPU1JFbnRyeU5vdywgb3NyRW50cnlEYXRhUHRyKTsKKyAgICAgICAgICAg
IGppdC5wcm9iZShvcGVyYXRpb25XYXNtVHJpZ2dlck9TUkVudHJ5Tm93LCBvc3JFbnRyeURhdGFQ
dHIpOwogICAgICAgICAgICAgaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApLmxpbmtUbyh0aWVyVXBSZXN1bWUsICZqaXQpOwogICAgICAg
ICAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBXYXNtRW50cnlQdHJUYWcp
OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcAppbmRleCA0ZjAxNTcxZTc0N2E5ODQ2MzczZmVlYWU0ZGYzYmU0NzBmOWQx
ZGRiLi5kYzNhMjExMGQzNTQ3ZmYzNmVmMDRkMWYzMDNmZWE2OGQ5NTFlZDMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xMjcx
LDcgKzEyNzEsNyBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRMb29wVGllclVwQ2hlY2sodWlu
dDMyX3QgbG9vcEluZGV4KQogICAgICAgICAgICAgZm9yY2VPU1JFbnRyeS5saW5rKCZqaXQpOwog
ICAgICAgICAgICAgdGllclVwLmxpbmsoJmppdCk7CiAKLSAgICAgICAgICAgIGppdC5wcm9iZSh0
cmlnZ2VyT1NSRW50cnlOb3csIG9zckVudHJ5RGF0YVB0cik7CisgICAgICAgICAgICBqaXQucHJv
YmUob3BlcmF0aW9uV2FzbVRyaWdnZXJPU1JFbnRyeU5vdywgb3NyRW50cnlEYXRhUHRyKTsKICAg
ICAgICAgICAgIGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKS5saW5rVG8odGllclVwUmVzdW1lLCAmaml0KTsKICAgICAgICAgICAgIGpp
dC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgV2FzbUVudHJ5UHRyVGFnKTsKICAgICAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAK
aW5kZXggNWJjNTJmZWIxZTEwMzE4OWFiOThmMzgzM2I4YWUzMmZmNTA1Mzc0YS4uNTc0NjNlMjVl
M2FhMWI1ZjFlODQyZDYxYzAzY2EwMTJlZTBmYjgwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAtNTEsMTEgKzUxLDExIEBAIElHTk9SRV9X
QVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd0JhZEk2NChKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bldhc21UaHJvd0JhZEk2NChKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQogewogICAg
IFZNJiB2bSA9IGluc3RhbmNlLT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIHZvaWQg
ZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFuY2UsIFByb2JlOjpDb250ZXh0JiBjb250ZXh0LCBC
QlFDYWxsZWUmIGMKICAgICBjb250ZXh0LmdwcihHUFJJbmZvOjphcmd1bWVudEdQUjEpID0gYml0
d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcj4ob3NyRW50cnlDYWxsZWUuZW50cnlwb2ludCgpLmV4ZWN1
dGFibGVBZGRyZXNzPD4oKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyT1NSRW50
cnlOb3coUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uV2FzbVRyaWdnZXJPU1JFbnRyeU5vdyhQcm9iZTo6Q29udGV4dCYgY29udGV4dCkKIHsKICAg
ICBPU1JFbnRyeURhdGEmIG9zckVudHJ5RGF0YSA9ICpjb250ZXh0LmFyZzxPU1JFbnRyeURhdGEq
PigpOwogICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSBvc3JFbnRyeURhdGEuZnVuY3Rpb25J
bmRleCgpOwpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyT1NS
RW50cnlOb3coUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpCiAgICAgcmV0dXJuIHJldHVybldpdGhv
dXRPU1JFbnRyeSgpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclRpZXJVcE5vdyhJ
bnN0YW5jZSogaW5zdGFuY2UsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uV2FzbVRyaWdnZXJUaWVyVXBOb3coSW5zdGFuY2UqIGluc3RhbmNlLCB1
aW50MzJfdCBmdW5jdGlvbkluZGV4KQogewogICAgIFdhc206OkNvZGVCbG9jayYgY29kZUJsb2Nr
ID0gKmluc3RhbmNlLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoaW5zdGFuY2UtPm1lbW9yeSgp
LT5tb2RlKCkgPT0gY29kZUJsb2NrLm1vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9wZXJhdGlvbnMuaAppbmRleCBhZjA1NjkzYzEzMjhmN2I1MjExNDdlZDk4NjVhMmU4
YWRmZTdmODZjLi4zNWY5OWFlNWY0ZDM1NTFlMDg5NDQ5YmM3NTcxOTQ0ZWQ2YzNiYzBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmgKQEAgLTQwLDkgKzQw
LDkgQEAgbmFtZXNwYWNlIFdhc20gewogCiBjbGFzcyBJbnN0YW5jZTsKIAotdm9pZCBKSVRfT1BF
UkFUSU9OIHRyaWdnZXJPU1JFbnRyeU5vdyhQcm9iZTo6Q29udGV4dCYpIFdURl9JTlRFUk5BTDsK
LXZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGllclVwTm93KEluc3RhbmNlKiwgdWludDMyX3Qg
ZnVuY3Rpb25JbmRleCkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRocm93QmFkSTY0KEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25XYXNtVHJpZ2dlck9TUkVudHJ5Tm93KFByb2JlOjpDb250
ZXh0JikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldhc21Ucmln
Z2VyVGllclVwTm93KEluc3RhbmNlKiwgdWludDMyX3QgZnVuY3Rpb25JbmRleCkgV1RGX0lOVEVS
TkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldhc21UaHJvd0JhZEk2NChKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqKSBXVEZfSU5URVJOQUw7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpX
YXNtCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAKaW5kZXggYWU0
MjAyZWYxYjIyYTAwYmI2MDBmOGMzZjkzZDY0NWQxNGI2NzAyMy4uZjJiM2VlMTVmZDlhZjIwNTJl
NGYxYjNjYWE0YjdmNGNlMjgwMjdhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVRodW5rcy5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiB0cmlnZ2VyT01HRW50cnlUaWVyVXBUaHVua0dlbmVyYXRvcihjb25zdAogICAg
IHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiA9
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2Fs
bChqaXQsIHJlZ2lzdGVyc1RvU3BpbGwsIGV4dHJhUGFkZGluZ0J5dGVzKTsKIAogICAgIGppdC5s
b2FkV2FzbUNvbnRleHRJbnN0YW5jZShHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KHRyaWdnZXJUaWVyVXBOb3cpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAg
ICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25XYXNtVHJpZ2dlclRpZXJVcE5vdykpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjIpOwogICAgIGppdC5jYWxsKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgT3Bl
cmF0aW9uUHRyVGFnKTsKIAogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJl
Z2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaml0LCByZWdpc3RlcnNUb1NwaWxsLCBSZWdpc3RlclNl
dCgpLCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIGV4dHJh
UGFkZGluZ0J5dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNw
cAppbmRleCA5MGM2Mjc3NDM0NjdlZmM2OGNjNGQzNmY3ZTU3MzI1NjQ5ZWEzZmQyLi5hMTQzZjFk
Mzk2ZjRmNTdmZGJhYWViYTFiZDA3ODk0ZGE4MDQyYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBFeHBlY3Rl
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+
IGhhbmRsZUJhCiAgICAgaWYgKFVOTElLRUxZKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUo
KSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChCaW5kaW5nRmFpbHVyZTo6T3V0T2ZN
ZW1vcnkpOwogCi0gICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uVGhyb3dCYWRJNjQpKTsKKyAgICBsaW5rQnVmZmVyLmxpbmsoY2Fs
bCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25XYXNtVGhyb3dCYWRJNjQp
KTsKICAgICByZXR1cm4gRklOQUxJWkVfV0FTTV9DT0RFKGxpbmtCdWZmZXIsIFdhc21FbnRyeVB0
clRhZywgIldlYkFzc2VtYmx5LT5KYXZhU2NyaXB0IGludmFsaWQgaTY0IHVzZSBpbiBpbXBvcnRb
JWldIiwgaW1wb3J0SW5kZXgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCAxMmM1YTY0MDRkZTZkNjdk
NDUyYTI2ZjkwNjlkMTRmZjBmNjIyYTE3Li5iNWE1MjM5YjlhZTkwZWVhNDMzZmZlMWYwZGM0OGRm
MmQyOWMwZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEwMDEsNyArMTAwMSw3IEBACiAjZW5kaWYKIAog
LyogVXNlIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzKDEpIHRvIGdldCBDYWxsRnJhbWUqICovCi0j
aWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIChDUFUoQVJNNjQpIHx8IENQVShYODZfNjQp
KSAmJiAoT1MoTElOVVgpIHx8IE9TKERBUldJTikpCisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElC
TEUpICYmIChDUFUoQVJNNjQpIHx8IENQVShYODZfNjQpKQogI2RlZmluZSBVU0VfQlVJTFRJTl9G
UkFNRV9BRERSRVNTIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGRmMWI4MWNmYjg2M2I5ZTlmZTc5OTAy
YThhZTBjMzljNmQ0MmVhNmQuLjVkNTkwOGQ4ZDMyMGUyNGI2NmRjNWUxNTE4NjcyNmIyNDczNDU3
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC01MzY4LDcgKzUzNjgsNyBAQCBzdWIgR2VuZXJhdGVPcGVyYXRpb25EZWZp
bml0aW9uCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oXCJmcmFtZS1hZGRyZXNzXCIpXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTtcbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSUdOT1JFX1dBUk5JTkdTX0VORFxu
Iik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIEpTQzo6SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpO1xuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4IGVhODMzYTFmMTc2MDIwM2Ri
Y2NiYzM2OWRhNzk3N2QyODYwN2M0MzcuLjE5M2UyMjg1Yzg2OGY1YzZkYjk3YTI3MDc2ODEwMzBl
MTgyOGViYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC0xMTQxLDcgKzExNDEsNyBAQCBKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25H
ZXRBdHRyaWJ1dGVXaXRobwogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVz
cyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMTc3LDcgKzExNzcs
NyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90
eXBlRnVuY3Rpb25JdGVtV2l0aG91dFR5cGVDaAogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigi
ZnJhbWUtYWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0x
MjA5LDcgKzEyMDksNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVXaXRobwogICAgIElHTk9SRV9XQVJO
SU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6
Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZFdpdAogICAg
IElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19F
TkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMjc1LDcgKzEyNzUsNyBAQCBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50
c0J5TmFtZQogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIElHTk9S
RV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUSGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhl
bHBlcnMuaAppbmRleCBlNmJlYTVkMmQ4ZmNhYzNkZTBhMWJiYzFkMGVhNzAwNTMyZmRlOTMwLi42
ZDU2ODg2NTgxZGI0ZmU3NTU2NTRjODg2MzEyNGU1MjEyYmJkYzgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRIZWxwZXJzLmgKQEAgLTYxLDcgKzYxLDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIHRvV3JhcHBlclNsb3coSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWMKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OlZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2Rl
KHRvSlMoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCksICpzdGF0aWNfY2FzdDxXcmFwcGVkTm9kZSo+KHJlc3VsdCkpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381748</attachid>
            <date>2019-10-23 15:54:16 -0700</date>
            <delta_ts>2019-10-23 16:02:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203285-20191023155415.patch</filename>
            <type>text/plain</type>
            <size>230063</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjRlODVmYTFkYThkODczMjhiNjliMWJkNTQzZDBkZmJjZmZiYThkLi5lNGM3OTNhMDcwYWU2Mzg0
ZTgwYzY4OWEzZTFmNDdhNjY2ZjMzNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzI4
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0
YXJ0IHVzaW5nIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzIHRvIGdldCBDYWxsRnJhbWUqIGluIEpJ
VCBvcGVyYXRpb25zLiBGb3IgdGhlIHBsYXRmb3JtIHdoaWNoIGlzIG5vdCBzdXBwb3J0aW5nIHRo
aXMgQVBJIChNU1ZDKSwKKyAgICAgICAgd2UgcHV0IGZyYW1lLXBvaW50ZXIgdG8gdm0udG9wQ2Fs
bEZyYW1lIGluIHRoZSBjYWxsZXIgc2lkZS4gVGhlIHByb2JsZW0gaXMgdGhhdCBhbGwgQXBwbGUg
cGxhdGZvcm0gaXMgbm93IHVzaW5nIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzLAorICAgICAgICBh
bmQgd2UgYXJlIG5vdCB0ZXN0aW5nIHZtLnRvcENhbGxGcmFtZSB2ZXJzaW9uIGF0IGFsbC4KKwor
ICAgICAgICBUbyBmaW5kIG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24gY2FsbCwgd2UgaW50
cm9kdWNlIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyLiBXaGVuIFVTRShCVUlM
VElOX0ZSQU1FX0FERFJFU1MpIGlzIGVuYWJsZWQgYW5kCisgICAgICAgIGlmIGl0IGlzIGRlYnVn
IGJ1aWxkLCB3ZSBhbnl3YXkgcHV0IGZyYW1lLXBvaW50ZXIgdG8gdm0udG9wQ2FsbEZyYW1lLiBB
bmQgYWZ0ZXIgdGhhdCwgd2UgZW5zdXJlIHRoYXQgdm0udG9wQ2FsbEZyYW1lIGlzIHRoZSBzYW1l
IHRvIHRoZQorICAgICAgICBDYWxsRnJhbWUqIGdhaW5lZCBieSBfX2J1aWx0aW5fZnJhbWVfYWRk
cmVzcy4gQnkgZG9pbmcgdGhpcywgd2UgY2FuIGZpbmQgcGxhY2VzIG1pc3NpbmcgdGhpcyBjYWxs
IGluIGRlYnVnIGJ1aWxkIG9mIEFwcGxlIHBvcnRzLgorCisgICAgICAgIFdlIGFsc28gZm91bmQg
dGhhdCBGVEwncyBjdXN0b20gZ2V0dGVyIGNhbGxpbmcgaXMgcHV0dGluZyB3cm9uZyB2YWx1ZSB0
byB2bS50b3BDYWxsRnJhbWUuIFRoaXMgcGF0Y2ggZml4ZXMgaXQgdG9vLgorCisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0
b3JlQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpvcGVyYXRpb25Db21waWxlT1NSRXhp
dCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAo
SlNDOjpERkc6Om9wZXJhdGlvbkRlYnVnUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6REZHOjpPU1JFeGl0OjpkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmhhbmRsZUV4
aXRDb3VudHMpOgorICAgICAgICAoSlNDOjpERkc6Om9zcldyaXRlQmFycmllcik6CisgICAgICAg
ICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6b3NyRXhpdFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpvc3JF
eGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNh
bGxPckNvbnN0cnVjdFZhcmFyZ3NTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FsbFByZWZsaWdodCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhbGxDaGVjayk6CisgICAgICAgICogZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgor
ICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbkNvbXBpbGVGVExPU1JFeGl0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpjb21waWxlRlRMT1NSRXhpdCk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAg
KEpTQzo6RlRMOjpvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpvcGVyYXRpb25Db21waWxlRlRMTGF6eVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlRlRMTGF6eVNsb3dQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRM
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBm
dGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlvblRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpvc3JFeGl0R2VuZXJhdGlvblRodW5r
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpsYXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBmdGwvRlRMVGh1bmtzLmg6CisgICAgICAgIChKU0M6OkZUTDo6Z2Vu
ZXJhdGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OkZUTDo6VGh1bmtzOjpnZXRTbG93UGF0
aENhbGxUaHVuayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg6CisgICAg
ICAgIChKU0M6OlNsb3dQYXRoRnJhbWVUcmFjZXI6OlNsb3dQYXRoRnJhbWVUcmFjZXIpOgorICAg
ICAgICAoSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlcjo6SklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIpOgorICAgICAgICAoSlNDOjpKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlcjo6fkpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhjZXB0aW9uRnV6eik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6cHJlcGFyZUNhbGxPcGVyYXRpb24pOgor
ICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OmVuc3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBl
cnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwcmVwYXJlQ2FsbE9wZXJhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjpmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5l
cmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omhh
bmRsZUhvc3RDYWxsKToKKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpvcGVyYXRpb25BdG9taWNzQWRkKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9u
QXRvbWljc0FuZCk6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbkF0b21pY3NDb21wYXJlRXhjaGFu
Z2UpOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25BdG9taWNzRXhjaGFuZ2UpOgorICAgICAgICAo
SlNDOjpvcGVyYXRpb25BdG9taWNzSXNMb2NrRnJlZSk6CisgICAgICAgIChKU0M6Om9wZXJhdGlv
bkF0b21pY3NMb2FkKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uQXRvbWljc09yKToKKyAgICAg
ICAgKEpTQzo6b3BlcmF0aW9uQXRvbWljc1N0b3JlKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9u
QXRvbWljc1N1Yik6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbkF0b21pY3NYb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRI
X0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyKToKKyAg
ICAgICAgKEpTQzo6b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZyk6
CisgICAgICAgIChKU0M6Om9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljKToK
KyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKElHTk9SRV9XQVJOSU5H
U19CRUdJTik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdExvb3BUaWVyVXBDaGVjayk6CisgICAg
ICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OmVtaXRMb29wVGllclVwQ2hlY2spOgorICAgICAgICAqIHdhc20vV2FzbU9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25XYXNtVGhyb3dCYWRJ
NjQpOgorICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25XYXNtVHJpZ2dlck9TUkVudHJ5Tm93
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6b3BlcmF0aW9uV2FzbVRyaWdnZXJUaWVyVXBOb3cpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25UaHJvd0JhZEk2NCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Oldhc206OnRyaWdnZXJPU1JFbnRyeU5vdyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Oldhc206OnRyaWdnZXJUaWVyVXBOb3cpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2Fz
bU9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiB3YXNtL1dhc21UaHVua3MuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjp0cmlnZ2VyT01HRW50cnlUaWVyVXBUaHVua0dlbmVyYXRvcik6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6aW5zdGFudGlhdGUp
OgorICAgICAgICAqIHdhc20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpo
YW5kbGVCYWRJNjRVc2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25XYXNtVG9KU0V4
Y2VwdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OmVtaXRUaHJvd1dhc21Ub0pTRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pOiBEZWxldGVkLgorICAg
ICAgICAqIHdhc20vanMvV2FzbVRvSlMuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSk6CisKIDIwMTktMTAtMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNs
aW5nQHNvbnkuY29tPgogCiAgICAgICAgIFN0cmluZy5wcm90b3R5cGUubWF0Y2hBbGwgc2hvdWxk
IHRocm93IG9uIG5vbi1nbG9iYWwgcmVnZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYWZhNDZhYjY3Zjk4MWZiZjI5YzI2ZDcw
Y2JhNjNiNDc4YTg1OTc2NC4uZGI1MTI1NTU5YTc5OTI3YjU1Y2E1MTI3MGQ5Yjg4YjQ2MjNiOWFm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJl
Q2FsbE9wZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAzMjg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRW5hYmxlIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIHJlZ2FyZGxlc3Mgb2YgcGxh
dGZvcm0gaXMgdGhlIGNvbXBpbGVycyBhbmQgYXJjaGl0ZWN0dXJlcyBtYXRjaC4KKworICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE5LTEwLTIyICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBgSlNHbG9iYWxPYmplY3QqYCB0aHJlYWRpbmcg
Y2hhbmdlIG1vcmUgc3RhYmlsaXplZCBieSBhZGRpbmcgdGVzdHMgYW5kIGFzc2VydGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA5M2ExNjU0NGFlZDQ2MDU4NDU0ODZlYTc5MTYzMjQ5N2I1N2Y1NGUyLi4xODEy
M2NjNTI2MDQ0YmYyNmQ5MDcxZjM5NTk0YWY5YjRmMmVkODYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbSlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzI4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciBpbnN0ZWFkIG9mIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlci4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlV2l0aG91dFR5cGVDaGVj
ayk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1X
aXRob3V0VHlwZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlV2l0aG91dFR5cGVDaGVjayk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkV2l0aG91dFR5cGVD
aGVjayk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdl
dEVsZW1lbnRzQnlOYW1lV2l0aG91dFR5cGVDaGVjayk6CisgICAgICAgICogZG9taml0L0RPTUpJ
VEhlbHBlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6dG9XcmFwcGVyU2xvdyk6CisK
IDIwMTktMTAtMjMgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBCZSBz
dHJpY3Qgb24gcmVxdWVzdCdzIENvbnRlbnQtVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAKaW5kZXggZDBlMGE1ZmNkZjQ1MTQxZmI4ZmMzNWI5NjQ2ODIyN2M5M2Iy
YmUzMy4uNTEwYTdhYjMxNTBiOWM2NzNhOTFhYmY4NzYzOWM0OTdmNmZkOWQxNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC05NTYsNyArOTU2LDcgQEAgQ29k
ZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBPU1JFeGl0Ojpjb2RlTG9jYXRpb25Gb3JS
ZXBhdGNoKCkgY29uc3QKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPihtX3BhdGNoYWJsZUp1bXBMb2NhdGlvbik7CiB9CiAKLXZvaWQgT1NSRXhpdDo6ZW1pdFJl
c3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVj
b3Zlcnk+JiBvcGVyYW5kcykKK3ZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0Nh
bGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9w
ZXJhbmRzKQogewogICAgIEhhc2hNYXA8TWluaWZpZWRJRCwgaW50PiBhbHJlYWR5QWxsb2NhdGVk
QXJndW1lbnRzOyAvLyBNYXBzIHBoYW50b20gYXJndW1lbnRzIG5vZGUgSUQgdG8gb3BlcmFuZC4K
ICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2lu
ZGV4KSB7CkBAIC0xMDA3LDcgKzEwMDcsOCBAQCB2b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJn
dW1lbnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZQogCiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkNyZWF0
ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQpLCBkZWNsdHlwZShvcGVyYXRpb25DcmVhdGVDbG9u
ZWRBcmd1bWVudHNEdXJpbmdFeGl0KT46OnZhbHVlLCAiV2UgYXNzdW1lIHRoZXNlIGZ1bmN0aW9u
cyBoYXZlIHRoZSBzYW1lIHNpZ25hdHVyZSBiZWxvdy4iKTsKICAgICAgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQp
PigKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigmaml0LnZtKCkp
LCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgR1BSSW5m
bzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cigmdm0pLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5l
Q2FsbEZyYW1lKSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNo
bmlxdWUoKSkgewogICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRl
ZDoKICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0
YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1
bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwpAQCAtMTAyNiw3ICsxMDI3
LDcgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmUKICAgICB9CiB9CiAKLXZvaWQgSklUX09QRVJB
VElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEwODcsNyArMTA4OCw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICAgICAgICAgIGppdC5hZGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MocHJvZmlsZXJFeGl0LT5jb3VudGVyQWRk
cmVzcygpKSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb21waWxlRXhpdChqaXQsIHZtLCBleGl0
LCBvcGVyYW5kcywgcmVjb3ZlcnkpOworICAgICAgICBPU1JFeGl0Ojpjb21waWxlRXhpdChqaXQs
IHZtLCBleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwogCiAgICAgICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBjb2RlQmxvY2spOwogICAgICAgICBleGl0Lm1fY29kZSA9IEZJTkFMSVpF
X0NPREVfSUYoCkBAIC0xMTE1LDcgKzExMTYsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAg
ICAgICAgIGRlYnVnSW5mby0+a2luZCA9IGV4aXQubV9raW5kOwogICAgICAgICBkZWJ1Z0luZm8t
PmJ5dGVjb2RlSW5kZXggPSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CiAKLSAg
ICAgICAgaml0LmRlYnVnQ2FsbCh2bSwgZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFp
bHVyZSwgZGVidWdJbmZvKTsKKyAgICAgICAgaml0LmRlYnVnQ2FsbCh2bSwgb3BlcmF0aW9uRGVi
dWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZSwgZGVidWdJbmZvKTsKICAgICB9CiAKICAgICAvLyBQ
ZXJmb3JtIHNwZWN1bGF0aW9uIHJlY292ZXJ5LiBUaGlzIG9ubHkgY29tZXMgaW50byBwbGF5IHdo
ZW4gYW4gb3BlcmF0aW9uCkBAIC0xNjEzLDcgKzE2MTQsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBp
bGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNv
bnN0CiAgICAgLy8gTm90ZSB0aGF0IHdlIGFsc28gcm91Z2hseSBhc3N1bWUgdGhhdCB0aGUgYXJn
dW1lbnRzIG1pZ2h0IHN0aWxsIGJlIG1hdGVyaWFsaXplZCBvdXRzaWRlIG9mIGl0cwogICAgIC8v
IGlubGluZSBjYWxsIGZyYW1lIHNjb3BlIC0gYnV0IGZvciBub3cgdGhlIERGRyB3b3VsZG4ndCBk
byB0aGF0LgogCi0gICAgZW1pdFJlc3RvcmVBcmd1bWVudHMoaml0LCBvcGVyYW5kcyk7CisgICAg
ZW1pdFJlc3RvcmVBcmd1bWVudHMoaml0LCB2bSwgb3BlcmFuZHMpOwogCiAgICAgLy8gQWRqdXN0
IHRoZSBvbGQgSklUJ3MgZXhlY3V0ZSBjb3VudGVyLiBTaW5jZSB3ZSBhcmUgZXhpdGluZyBPU1Is
IHdlIGtub3cKICAgICAvLyB0aGF0IGFsbCBuZXcgY2FsbHMgaW50byB0aGlzIGNvZGUgd2lsbCBn
byB0byB0aGUgbmV3IEpJVCwgc28gdGhlIGV4ZWN1dGUKQEAgLTE2NTEsNyArMTY1Miw3IEBAIHZv
aWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3Qg
T1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAvLyBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBz
ZXQgdGhlIGNvdW50ZXIgdG8KICAgICAvLyBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwKCkuCiAKLSAgICBoYW5kbGVFeGl0Q291bnRzKGppdCwgZXhpdCk7CisgICAgaGFuZGxlRXhp
dENvdW50cyh2bSwgaml0LCBleGl0KTsKIAogICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFt
ZXMuCiAKQEAgLTE2NjEsNyArMTY2Miw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0Nh
bGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICBh
ZGp1c3RBbmRKdW1wVG9UYXJnZXQodm0sIGppdCwgZXhpdCk7CiB9CiAKLXZvaWQgSklUX09QRVJB
VElPTiBPU1JFeGl0OjpkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxG
cmFtZSogY2FsbEZyYW1lLCB2b2lkKiBkZWJ1Z0luZm9SYXcsIHZvaWQqIHNjcmF0Y2gpCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdm9pZCogZGVidWdJbmZvUmF3LCB2b2lkKiBzY3JhdGNoKQogewog
ICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZNKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmgKaW5kZXggZDFmYzVmMWY2YjQwMDBiZDdkY2VmMzM3MjdkNmM5NjdlMWI1MTVi
Yy4uYTdlNTg3OGMwNzE3MDhhMWRhNzZjMGIwZWI1NGQ1NGYxYTA0ZWI4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTEzOCw2ICsxMzgsOSBAQCBzdHJ1Y3QgT1NS
RXhpdFN0YXRlIDogUmVmQ291bnRlZDxPU1JFeGl0U3RhdGU+IHsKICAgICBQcm9maWxlcjo6T1NS
RXhpdCogcHJvZmlsZXJFeGl0IHsgbnVsbHB0ciB9OwogfTsKIAordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0KENhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxG
cmFtZSosIHZvaWQqLCB2b2lkKikgV1RGX0lOVEVSTkFMOworCiAvLyA9PT0gT1NSRXhpdCA9PT0K
IC8vCiAvLyBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgaG93IHRvIGV4aXQgdGhlIHNwZWN1bGF0
aXZlIHBhdGggYnkKQEAgLTE0NSw3ICsxNDgsOCBAQCBzdHJ1Y3QgT1NSRXhpdFN0YXRlIDogUmVm
Q291bnRlZDxPU1JFeGl0U3RhdGU+IHsKIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRC
YXNlIHsKICAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1
bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgpOwogCi0gICAgc3RhdGljIHZvaWQgSklU
X09QRVJBVElPTiBjb21waWxlT1NSRXhpdChDYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CisgICAg
ZnJpZW5kIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXhpdChDYWxsRnJh
bWUqKTsKKwogICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVPU1JFeGl0KFByb2JlOjpDb250ZXh0Jik7
CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX3BhdGNoYWJsZUp1
bXBMb2NhdGlvbjsKQEAgLTE2OCw4ICsxNzIsOCBAQCBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBP
U1JFeGl0QmFzZSB7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY29tcGlsZUV4aXQoQ0Nh
bGxIZWxwZXJzJiwgVk0mLCBjb25zdCBPU1JFeGl0JiwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNv
dmVyeT4mLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgc3RhdGljIHZvaWQgZW1pdFJlc3Rv
cmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4m
KTsKLSAgICBzdGF0aWMgdm9pZCBKSVRfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVj
dWxhdGlvbkZhaWx1cmUoQ2FsbEZyYW1lKiwgdm9pZCosIHZvaWQqKSBXVEZfSU5URVJOQUw7Cisg
ICAgc3RhdGljIHZvaWQgZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiwgVk0mLCBj
b25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYpOworICAgIGZyaWVuZCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxsRnJhbWUqLCB2
b2lkKiwgdm9pZCopOwogfTsKIAogc3RydWN0IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAKaW5kZXggNTQ4NzdiOTFkMGJmZDRmMTg0OTEwNDE2OWY3NWMxOWYzMzM0NTQ1
Ni4uMDFlZTFiN2M4MDNmZThkNGE2ZWU5MjNjZmUyYzQ1MmRmYTIwMWZhYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cApAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
LXZvaWQgaGFuZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJh
c2UmIGV4aXQpCit2b2lkIGhhbmRsZUV4aXRDb3VudHMoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgaWYgKCFleGl0S2luZE1heUpldHRp
c29uKGV4aXQubV9raW5kKSkgewogICAgICAgICAvLyBGSVhNRTogV2UgbWF5IHdhbnQgdG8gbm90
aWNlIHRoYXQgd2UncmUgZnJlcXVlbnRseSBleGl0aW5nCkBAIC0xMDMsOCArMTAzLDkgQEAgdm9p
ZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYg
ZXhpdCkKICAgICAKICAgICByZW9wdGltaXplTm93LmxpbmsoJmppdCk7CiAgICAgCi0gICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyk+KEdQUklu
Zm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMywgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KCZleGl0KSk7Ci0gICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRh
Z0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdykp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uVHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KT4oR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OnJlZ1QzLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmV4aXQpKTsKKyAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25UcmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAg
aml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBBc3Nl
bWJseUhlbHBlcnM6Okp1bXAgZG9uZUFkanVzdGluZyA9IGppdC5qdW1wKCk7CiAgICAgCkBAIC0z
MzksNiArMzQwLDcgQEAgc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKFZNJiB2bSwgQ0NhbGxI
ZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmEKICAgICBBc3NlbWJseUhlbHBl
cnM6Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0
aG91dEZlbmNlKG93bmVyKTsKIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25PU1JXcml0ZUJhcnJpZXIpPigmdm0sIG93bmVyKTsKKyAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRlQmFycmll
cikpLCBzY3JhdGNoKTsKICAgICBqaXQuY2FsbChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJD
b21tb24uaAppbmRleCA0ZmM5OTZmMDBkMGNiMjg4YThmNDQ5ZmFjNTI1ZWM5ZmM1YzkzMmQyLi5j
ODUwOTRjMzhhY2MzOWVmOTg3NGVjMTA5ZjhmYWMyMDczYTczYjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKQEAgLTM2
LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIGhh
bmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKK3ZvaWQg
aGFuZGxlRXhpdENvdW50cyhWTSYsIENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7
CiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhp
dEJhc2UmKTsKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxwZXJzJiwg
Y29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQqIGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgs
IElubGluZUNhbGxGcmFtZTo6S2luZCBjYWxsZXJLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDZhZWU1
NTQyNzM1NzI2YjYwNDFhNDc2ODBhMzVlMzU1ZTYzNDliZjguLjcwZWZkNmJlOTYwOTNhNGY1ZWRh
ODZlYzlmNzRmMjFhYzdhODZjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVG9UaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90
U3RyaWN0TW9kZSkpOwogfQpAQCAtMzAyLDcgKzMwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
U3RyaWN0TW9kZSkpOwogfQpAQCAtMzExLDcgKzMxMSw3IEBAIEpTQXJyYXkqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uT2JqZWN0S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPYmplY3QpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0zMjQsNyAr
MzI0LDcgQEAgSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3Qs
IFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1
ZGUpOwogfQogCkBAIC0zMzIsNyArMzMyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk9iamVjdENyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRQcm90b3R5cGUpOwpAQCAtMzUxLDcgKzM1MSw3IEBAIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBjb25zdHJ1
Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIHByb3RvdHlwZSk7CiB9CiAKQEAgLTM1OSw3ICsz
NTksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlm
IChjb25zdHJ1Y3Rvci0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY29uc3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAg
IGF1dG8gcmFyZURhdGEgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJl
UmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShnbG9iYWxPYmplY3QsIGlubGluZUNhcGFjaXR5
KTsKQEAgLTM4OCw3ICszODgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3Jl
YXRlUHJvbWlzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iagogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VD
b25zdHJ1Y3RvcigpLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtMzk5LDcg
KzM5OSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVJbnRlcm5hbFBy
b21pc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0
cnVjdHVyZShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IoKSwgY29uc3RydWN0b3IsIGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlU3RydWN0
dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtNDEw
LDcgKzQxMCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVHZW5lcmF0
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIG51bGxwdHIsIGNvbnN0cnVjdG9yLCBnbG9iYWxPYmpl
Y3QtPmdlbmVyYXRvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ3JlYXRlQXN5bmNHZW5lcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBjb25z
dHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5hc3luY0dlbmVyYXRvclN0cnVjdHVyZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKQEAgLTQzMiw3ICs0MzIsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRUYXJnZXQpOwogICAg
IEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1YKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRhcmdldCk7CkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU1vZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAg
YXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0lu
dCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewogICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTQ4Myw3
ICs0ODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0
Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKQEAgLTUwMSw3ICs1
MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5k
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKICAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdCwgcmln
aHQpOwpAQCAtNTE4LDcgKzUxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkg
LT4gSlNCaWdJbnQqIHsKICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFs
T2JqZWN0LCBsZWZ0LCByaWdodCk7CkBAIC01MzUsNyArNTM1LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIGJpZ0lu
dE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBK
U0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7CiAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6
Yml0d2lzZVhvcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTU1Miw3ICs1NTIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKICAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7CiAgICAgICAg
IHJldHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwpA
QCAtNTY5LDcgKzU2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNC
aWdJbnQqIHsKICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2Jh
bE9iamVjdCwgbGVmdCwgcmlnaHQpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AxKTsKQEAgLTYwMyw3ICs2MDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1
ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CkBAIC02MTUsNyArNjE1LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZURpdihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0
byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCog
bGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewogICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTYzMiw3ICs2MzIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKICAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7CiAgICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmln
aHQpOwpAQCAtNjQ5LDcgKzY0OSw3IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoQWJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KTsKQEAgLTY2Miw3ICs2NjIsNyBAQCB1aW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoQ2x6MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZAogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7
CkBAIC02NzUsNyArNjc1LDcgQEAgZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhG
Um91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEoKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwpA
QCAtNjg5LDcgKzY4OSw3IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoIyNj
YXBpdGFsaXplZE5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7IFwKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7IFwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7IFwKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOyBcCisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOyBcCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSk7IFwKICAgICBkb3VibGUgcmVzdWx0ID0gb3AxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7
IFwKQEAgLTcwMyw3ICs3MDMsNyBAQCBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aFNxcnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVgogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7
CkBAIC03MTYsNyArNzE2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aFJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFy
Z3VtZW50KTsKQEAgLTcyOSw3ICs3MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkFyaXRoRmxvb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQXJndW1lbnQpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhDZWlsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CkBAIC03NTUsNyArNzU1LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aFRydW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTc4Miw3ICs3ODIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwpAQCAtODI0LDcgKzgyNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxDZWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVl
IHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CkBAIC04NzAsNyAr
ODcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9i
amVjdEludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCiAgICAgcmV0dXJuIGdldEJ5VmFsQ2VsbEludChnbG9iYWxPYmplY3QsIHZtLCBi
YXNlLCBpbmRleCk7CiB9CkBAIC04NzksNyArODc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGdldEJ5VmFs
Q2VsbEludChnbG9iYWxPYmplY3QsIHZtLCBiYXNlLCBpbmRleCk7CiB9CkBAIC04ODgsNyArODg4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVj
dFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmEKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC05
MDIsNyArOTAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eVZhbE9iamVjdFN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N5bWJvbChzeW1ib2wp
LT5wcml2YXRlTmFtZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0QnlWYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCB2bSwgYXNPYmplY3QoYmFzZSksIHByb3BlcnR5TmFtZSkpOwpAQCAt
OTEyLDcgKzkxMiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmlj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZhbEludGVybmFsPHRydWUsIGZhbHNlPihn
bG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFs
dWUpOwogfQpAQCAtOTIxLDcgKzkyMSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbE5vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZhbEludGVybmFsPGZh
bHNlLCBmYWxzZT4oZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZEJhc2UsIGVuY29kZWRQcm9wZXJ0
eSwgZW5jb2RlZFZhbHVlKTsKIH0KQEAgLTkzMCw3ICs5MzAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcHV0QnlW
YWxJbnRlcm5hbDx0cnVlLCBmYWxzZT4oZ2xvYmFsT2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZW5jb2Rl
KGNlbGwpLCBlbmNvZGVkUHJvcGVydHksIGVuY29kZWRWYWx1ZSk7CiB9CkBAIC05MzksNyArOTM5
LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgCiAgICAgcHV0QnlWYWxJbnRlcm5hbDxmYWxzZSwgZmFsc2U+KGdsb2JhbE9iamVj
dCwgdm0sIEpTVmFsdWU6OmVuY29kZShjZWxsKSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFs
dWUpOwogfQpAQCAtOTQ4LDcgKzk0OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbENlbGxTdHJpbmdTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVy
bmFsPHRydWUsIGZhbHNlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBhc1N0cmluZyhzdHJpbmcp
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CkBAIC05NTcsNyArOTU3LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CiAgICAgcHV0QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWw8ZmFsc2UsIGZhbHNlPihnbG9iYWxPYmpl
Y3QsIHZtLCBjZWxsLCBhc1N0cmluZyhzdHJpbmcpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKSk7CiB9CkBAIC05NjYsNyArOTY2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBh
c1N5bWJvbChzeW1ib2wpLT5wcml2YXRlTmFtZSgpOwogICAgIHB1dEJ5VmFsQ2VsbEludGVybmFs
PHRydWUsIGZhbHNlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKQEAgLTk3Niw3ICs5NzYsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGFzU3ltYm9sKHN5bWJvbCktPnByaXZhdGVOYW1lKCk7CiAgICAgcHV0
QnlWYWxDZWxsSW50ZXJuYWw8ZmFsc2UsIGZhbHNlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKQEAgLTk4Niw3ICs5
ODYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJv
dW5kc1N0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgCiAgICAgaWYgKGluZGV4ID49IDApIHsKICAgICAgICAgb2JqZWN0LT5wdXRC
eUluZGV4SW5saW5lKGdsb2JhbE9iamVjdCwgaW5kZXgsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpLCB0cnVlKTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiBnCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBpZiAoaW5kZXgg
Pj0gMCkgewogICAgICAgICBvYmplY3QtPnB1dEJ5SW5kZXhJbmxpbmUoZ2xvYmFsT2JqZWN0LCBp
bmRleCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGZhbHNlKTsKQEAgLTEwMTgsNyAr
MTAxOCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9u
ZEFycmF5Qm91bmRzU3RyaWN0KEpTR2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBKU1ZhbHVlKEpTVmFsdWU6OkVu
Y29kZUFzRG91YmxlLCB2YWx1ZSk7CiAgICAgCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0
cmljdChKU0dsb2JhbE9iagogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAg
ICAgSlNWYWx1ZSBqc1ZhbHVlID0gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdmFs
dWUpOwogICAgIApAQCAtMTA1NCw3ICsxMDU0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QoSlNHbG9iYWwK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0g
SlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdmFsdWUpOwogCkBAIC0xMDcxLDcgKzEw
NzEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RC
ZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChKU0dsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFz
RG91YmxlLCB2YWx1ZSk7CiAKQEAgLTEwODgsNyArMTA4OCw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZh
bEludGVybmFsPHRydWUsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRCYXNlLCBlbmNv
ZGVkUHJvcGVydHksIGVuY29kZWRWYWx1ZSk7CiB9CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
CiAgICAgcHV0QnlWYWxJbnRlcm5hbDxmYWxzZSwgdHJ1ZT4oZ2xvYmFsT2JqZWN0LCB2bSwgZW5j
b2RlZEJhc2UsIGVuY29kZWRQcm9wZXJ0eSwgZW5jb2RlZFZhbHVlKTsKIH0KQEAgLTExMDYsNyAr
MTEwNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxT
dHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZhbEludGVybmFsPHRydWUsIHRydWU+KGdsb2JhbE9i
amVjdCwgdm0sIEpTVmFsdWU6OmVuY29kZShjZWxsKSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVk
VmFsdWUpOwogfQpAQCAtMTExNSw3ICsxMTE1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHB1dEJ5VmFsSW50ZXJu
YWw8ZmFsc2UsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmVuY29kZShjZWxsKSwg
ZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwogfQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ1N0cmlj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CiAgICAgcHV0QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWw8dHJ1ZSwgdHJ1ZT4oZ2xvYmFsT2JqZWN0
LCB2bSwgY2VsbCwgYXNTdHJpbmcoc3RyaW5nKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkpOwogfQpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ05vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2wKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0QnlWYWxDZWxsU3RyaW5nSW50
ZXJuYWw8ZmFsc2UsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIGNlbGwsIGFzU3RyaW5nKHN0cmlu
ZyksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KQEAgLTExNDIsNyArMTE0Miw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xT
dHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTeW1ib2woc3ltYm9sKS0+cHJpdmF0ZU5h
bWUoKTsKICAgICBwdXRCeVZhbENlbGxJbnRlcm5hbDx0cnVlLCB0cnVlPihnbG9iYWxPYmplY3Qs
IHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
QEAgLTExNTIsNyArMTE1Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdENlbGxTeW1ib2xOb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTeW1ib2wo
c3ltYm9sKS0+cHJpdmF0ZU5hbWUoKTsKICAgICBwdXRCeVZhbENlbGxJbnRlcm5hbDxmYWxzZSwg
dHJ1ZT4oZ2xvYmFsT2JqZWN0LCB2bSwgY2VsbCwgcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7CkBAIC0xMTYyLDcgKzExNjIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdChKU0dsb2Jh
bE9iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgaWYgKGluZGV4ID49
IDApIHsKICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgMCwgUHV0RGlyZWN0SW5kZXhTaG91bGRU
aHJvdyk7CiAgICAgICAgIHJldHVybjsKQEAgLTExNzYsNyArMTE3Niw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0
KEpTR2xvYmFsT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGlmIChp
bmRleCA+PSAwKSB7CiAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LCBpbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwpAQCAtMTE5MSw3ICsxMTkx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2goSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIAogICAgIGFycmF5LT5wdXNoSW5saW5lKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoYXJyYXktPmxlbmd0aCgpKSk7CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgYXJy
YXktPnB1c2hJbmxpbmUoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91
YmxlLCB2YWx1ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXkt
Pmxlbmd0aCgpKSk7CkBAIC0xMjExLDcgKzEyMTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gV2UgYXNzdW1lIHRoYXQgbXVsdGlwbGUgSlNB
cnJheTo6cHVzaCBjYWxscyB3aXRoIEFycmF5V2l0aEludDMyL0FycmF5V2l0aENvbnRpZ3VvdXMg
ZG8gbm90IGNhdXNlIEpTIHRyYXBzLgpAQCAtMTIzNiw3ICsxMjM2LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2hEb3VibGVNdWx0aXBsZShKU0dsb2Jh
bE9iamVjdCogZ2wKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIFdlIGFzc3VtZSB0aGF0IG11
bHRpcGxlIEpTQXJyYXk6OnB1c2ggY2FsbHMgd2l0aCBBcnJheVdpdGhEb3VibGUgZG8gbm90IGNh
dXNlIEpTIHRyYXBzLgpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25BcnJheVBvcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0EKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYXJyYXktPnBvcChnbG9iYWxPYmplY3QpKTsKIH0KQEAgLTEyNjYsNyArMTI2
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3BBbmRS
ZWNvdmVyTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICAKICAgICBhcnJheS0+YnV0dGVyZmx5KCktPnNldFB1YmxpY0xlbmd0aChhcnJh
eS0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpICsgMSk7CiAgICAgCkBAIC0xMjc5LDcgKzEy
NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNT
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBPYmplY3Qt
PmV4ZWNJbmxpbmUoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCkpOwogfQpAQCAtMTI5MCw3ICsxMjkw
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFIKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAK
ICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7
CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblJlZ0V4cEV4ZWNHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKTsKQEAgLTEzMzEsNyArMTMzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUmVnRXhwRXhlY05vbkdsb2JhbE9yU3RpY2t5KEpTR2xvYmFsT2JqZWN0CiAKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cE1hdGNoRmFzdFN0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYgogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGlmICghcmVnRXhwT2Jq
ZWN0LT5yZWdFeHAoKS0+Z2xvYmFsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVnRXhwT2JqZWN0LT5leGVjSW5saW5lKGdsb2JhbE9iamVjdCwgYXJndW1lbnQpKTsKQEAgLTEz
NjgsNyArMTM2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVn
RXhwTWF0Y2hGYXN0R2xvYmFsU3RyaW5nKEpTR2xvYmFsT2JqZWN0CiAKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCkBAIC0xMzk3LDcgKzEzOTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblBhcnNlSW50Tm9SYWRpeEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsbwogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsK
ICAgICAgICAgLy8gVGhpcyB2ZXJzaW9uIGlzIGFzIGlmIHJhZGl4IHdhcyB1bmRlZmluZWQuIEhl
bmNlLCB1bmRlZmluZWQudG9OdW1iZXIoKSA9PT0gMC4KQEAgLTE0MDksNyArMTQwOSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1JhZGl4
KEpTR2xvYmFsT2JqZWN0KiBnbG9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBhdXRvIHZpZXdX
aXRoU3RyaW5nID0gc3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZ2xvYmFsT2JqZWN0
KTsKQEAgLTE0MjMsNyArMTQyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUGFyc2VJbnRTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gc3RyaW5nLT52aWV3V2l0aFVu
ZGVybHlpbmdTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKQEAgLTE0MzYsNyArMTQzNiw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGFyc2VJbnRHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAg
IHJldHVybiB0b1N0cmluZ1ZpZXcoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUp
LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICByZXR1cm4gcGFyc2VJbnRSZXN1bHQo
cGFyc2VJbnQodmlldywgcmFkaXgpKTsKQEAgLTE0NDksNyArMTQ0OSw3IEBAIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVnCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJl
dHVybiByZWdFeHBPYmplY3QtPnRlc3RJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpbnB1dCk7CiB9CkBA
IC0xNDYwLDcgKzE0NjAsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iagogICAgIAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CiAKQEAgLTE0NzYsNyArMTQ3Niw3IEBAIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGJhc2Ug
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwpAQCAtMTQ5OSw3ICsxNDk5LDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAg
ICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0x
NTExLDcgKzE1MTEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90Qmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU0JpZ0ludCogb3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0lu
dCo+KG9wMSk7CiAKQEAgLTE1MjIsNyArMTUyMiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25NdWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTQmlnSW50KiBsZWZ0T3Bl
cmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFu
ZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNTM0LDcgKzE1MzQsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAg
ICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBK
U0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKQEAgLTE1NDYs
NyArMTU0Niw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICAKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNC
aWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJ
bnQqPihvcDIpOwpAQCAtMTU1OCw3ICsxNTU4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8K
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpTQmlnSW50KiBsZWZ0
T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3Bl
cmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAg
ICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpT
QmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwpAQCAtMTU4Miw3
ICsxNTgyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50
Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4o
b3AyKTsKQEAgLTE1OTQsNyArMTU5NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBKU0JpZ0ludCogbGVmdE9wZXJh
bmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQg
PSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwpAQCAtMTYwNiw3ICsxNjA2LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAg
IEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNC
aWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNjE4LDcg
KzE2MTgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmln
SW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50
Kj4ob3AyKTsKQEAgLTE2MzAsNyArMTYzMCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRYb3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFu
ZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9
IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNjQyLDcgKzE2NDIsNyBAQCBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIG9w
MSwgb3AyKTsKIH0KQEAgLTE2NTEsNyArMTY1MSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBzYW1lVmFsdWUo
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoYXJnMSksIEpTVmFsdWU6OmRlY29kZShhcmcy
KSk7CiB9CkBAIC0xNjYwLDcgKzE2NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KSk7CiB9
CkBAIC0xNjY5LDcgKzE2NjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSkpOwogfQpA
QCAtMTY3OCw3ICsxNjc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKTsKQEAgLTE3MTgsNyArMTcxOCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkV2l0aFRoaXNTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0V2l0aFRoaXM8dHJ1ZT4oZ2xvYmFs
T2JqZWN0LCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgaW1wbCkpOwogfQpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0
V2l0aFRoaXM8ZmFsc2U+KGdsb2JhbE9iamVjdCwgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlzLCBl
bmNvZGVkVmFsdWUsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIGltcGwpKTsKIH0KQEAgLTE3MzYs
NyArMTczNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3Jp
cHQpLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTE3NDksNyArMTc0OSw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVy
IHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpLnRvUHJvcGVydHlL
ZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTE3NzIsNyArMTc3Miw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2Jq
ZWN0KTsKQEAgLTE3ODUsNyArMTc4NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50
b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKQEAgLTE3OTgsNyArMTc5OCw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBkZWZp
bmVEYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCB2bSwgYmFzZSwgSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgcHJvcGVydHkpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRl
cyk7CiB9CiAKQEAgLTE4MDYsNyArMTgwNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2woSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBkZWZpbmVEYXRhUHJvcGVydHkoZ2xv
YmFsT2JqZWN0LCB2bSwgYmFzZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChwcm9wZXJ0eS0+cHJpdmF0
ZU5hbWUoKSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKIH0K
IApAQCAtMTgyNCw3ICsxODI0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmlu
ZUFjY2Vzc29yUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRQcm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMTgzNiw3
ICsxODM2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJv
cGVydHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRpZmllcihnbG9i
YWxPYmplY3QpOwpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudChKU0dsb2JhbE9iamVjdCogZ2wK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGRlZmluZUFjY2Vzc29yUHJvcGVy
dHkoZ2xvYmFsT2JqZWN0LCB2bSwgYmFzZSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVy
dHkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7CiB9CiAKQEAgLTE4NTYsNyArMTg1Niw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3lt
Ym9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0sIGJhc2UsIElk
ZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkpLCBnZXR0ZXIsIHNldHRl
ciwgYXR0cmlidXRlcyk7CiB9CiAKQEAgLTE4NjQsNyArMTg2NCw3IEBAIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBhCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PGNoYXIqPihjb25zdHJ1Y3RBcnJheShnbG9iYWxPYmplY3QsIGFycmF5
U3RydWN0dXJlLCBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4oYnVmZmVyKSwgc2l6ZSkpOwogfQpAQCAt
MTg3Myw3ICsxODczLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdFbXB0eUFy
cmF5KFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3QKIHsKICAgICBWTSYgdm0g
PSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihKU0FycmF5Ojpj
cmVhdGUodm0sIGFycmF5U3RydWN0dXJlKSk7CiB9CkBAIC0xODgyLDcgKzE4ODIsNyBAQCBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZ
KHNpemUgPCAwKSkKQEAgLTE5MDAsNyArMTkwMCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkoc2l6ZSA8IDApKQpAQCAtMTky
MCw3ICsxOTIwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVm
ZmVyKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogYXJyYXlTdHIKIHsKICAgICBWTSYgdm0gPSAq
dm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICBBU1NFUlQoIWFycmF5U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsK
ICAgICBhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJm
bHkqPihpbW11dGFibGVCdXR0ZXJmbHlDZWxsKTsKICAgICBBU1NFUlQoYXJyYXlTdHJ1Y3R1cmUt
PmluZGV4aW5nTW9kZSgpID09IGltbXV0YWJsZUJ1dHRlcmZseS0+aW5kZXhpbmdNb2RlKCkgfHwg
aGFzQW55QXJyYXlTdG9yYWdlKGFycmF5U3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpOwpAQCAt
MTkzNSw3ICsxOTM1LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnQ4QXJy
YXlXaXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBu
ZXdUeXBlZEFycmF5V2l0aFNpemU8SlNJbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVj
dHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBAIC0xOTQ0LDcgKzE5NDQsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxv
cHQpKTsKIH0KIApAQCAtMTk1Myw3ICsxOTUzLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICByZXR1cm4gbmV3VHlwZWRBcnJheVdpdGhTaXplPEpTSW50MTZBcnJheT4oZ2xvYmFs
T2JqZWN0LCB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CiB9CiAKQEAgLTE5NjIsNyAr
MTk2Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhP
bmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPEpTSW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRW
YWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CiB9CiAKQEAgLTE5NzEsNyArMTk3MSw3IEBAIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplKAogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZTxK
U0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3Ip
OwogfQogCkBAIC0xOTgwLDcgKzE5ODAsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOwogfQogCkBAIC0xOTg5
LDcgKzE5ODksNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlX
aXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdU
eXBlZEFycmF5V2l0aFNpemU8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1
cmUsIGxlbmd0aCwgdmVjdG9yKTsKIH0KIApAQCAtMTk5OCw3ICsxOTk4LDcgQEAgY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxv
cHQpKTsKIH0KIApAQCAtMjAwNyw3ICsyMDA3LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplKAogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgcmV0dXJuIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZTxKU1VpbnQ4Q2xhbXBl
ZEFycmF5PihnbG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKIH0K
IApAQCAtMjAxNiw3ICsyMDE2LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdV
aW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOwogfQog
CkBAIC0yMDI1LDcgKzIwMjUsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aFNpemUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBy
ZXR1cm4gbmV3VHlwZWRBcnJheVdpdGhTaXplPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwg
dm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBAIC0yMDM0LDcgKzIwMzQsNyBA
QCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3Vt
ZW50KAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHM8SlNVaW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgV1RGOjpudWxsb3B0KSk7CiB9CiAKQEAgLTIwNDMsNyArMjA0Myw3IEBAIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSgKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdUeXBlZEFycmF5V2l0aFNpemU8SlNVaW50
MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CiB9
CiAKQEAgLTIwNTIsNyArMjA1Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKIH0KIApAQCAtMjA2MSw3
ICsyMDYxLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlX
aXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdU
eXBlZEFycmF5V2l0aFNpemU8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVj
dHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBAIC0yMDcwLDcgKzIwNzAsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxv
YXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6
Om51bGxvcHQpKTsKIH0KIApAQCAtMjA3OSw3ICsyMDc5LDcgQEAgY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdUeXBlZEFycmF5V2l0aFNpemU8SlNGbG9hdDY0QXJy
YXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBA
IC0yMDg4LDcgKzIwODgsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0
NjRBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKIH0KIApAQCAtMjA5Niw3ICsy
MDk2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25E
aXJlY3QoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKgogewogICAgIFZNJiB2bSA9ICp2bVBvaW50
ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIEpTVmFsdWUgaW5pdGlhbFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGluaXRpYWxWYWx1ZUVu
Y29kZWQpOwogICAgIEFTU0VSVChpbml0aWFsVmFsdWUgPT0ganNVbmRlZmluZWQoKSB8fCBpbml0
aWFsVmFsdWUgPT0ganNURFpWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNMZXhpY2FsRW52aXJvbm1l
bnQ6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBzY29wZSwgdGFibGUsIGluaXRpYWxWYWx1ZSk7CkBA
IC0yMTA2LDcgKzIxMDYsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
RGlyZWN0QXJndW1lbnRzKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogcwogewogICAgIFZNJiB2
bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIERpcmVjdEFyZ3VtZW50cyogcmVzdWx0ID0gRGlyZWN0QXJndW1lbnRz
OjpjcmVhdGUoCiAgICAgICAgIHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc3RkOjptYXgobGVuZ3Ro
LCBtaW5DYXBhY2l0eSkpOwogICAgIC8vIFRoZSBjYWxsZXIgd2lsbCBzdG9yZSB0byB0aGlzIG9i
amVjdCB3aXRob3V0IGJhcnJpZXJzLiBNb3N0IGxpa2VseSwgYXQgdGhpcyBwb2ludCwgdGhpcyBp
cwpAQCAtMjEyMCw3ICsyMTIwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNy
ZWF0ZVNjb3BlZEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIC8vIFdlIGNvdWxkIHBhc3MgdGhlIFNj
b3BlZEFyZ3VtZW50c1RhYmxlKiBhcyBhbiBhcmd1bWVudC4gV2UgY3VycmVudGx5IGRvbid0IGJl
Y2F1c2UgSQogICAgIC8vIGRpZG4ndCBmZWVsIGxpa2UgY2hhbmdpbmcgdGhlIG1heCBudW1iZXIg
b2YgYXJndW1lbnRzIGZvciBhIHNsb3cgcGF0aCBjYWxsIGZyb20gNiB0byA3LgpAQCAtMjEzNCw3
ICsyMTM0LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFy
Z3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIHJldHVybiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUJ5Q29weWluZ0Zy
b20oCiAgICAgICAgIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhcmd1bWVudFN0YXJ0LCBsZW5n
dGgsIGNhbGxlZSk7CiB9CkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChWTSogdm1Qb2ludGVy
LCBJbgogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIERlZmVyR0NGb3JBV2hpbGUg
ZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKQEAgLTIxNzMsNyArMjE3Myw3IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KFZNKiB2
bVBvaW50ZXIsIEluCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgRGVmZXJHQ0Zv
ckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogICAgIApAQCAtMjIwMiw3ICsyMjAyLDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVnaXN0ZXIKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnJlc3RQYXJhbWV0ZXJTdHJ1
Y3R1cmUoKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZWdpc3RlcikgPT0gc2l6ZW9mKEpT
VmFsdWUpLCAiVGhpcyBpcyBhIHN0cm9uZyBhc3N1bXB0aW9uIGhlcmUuIik7CkBAIC0yMjE0LDcg
KzIyMTQsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RJc09iamVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbAogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBvYmpl
Y3QpKTsKICAgICAKQEAgLTIyMjksNyArMjIyOSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk9iamVjdElzRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVChqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIG9iamVjdCkpOwogICAgIApAQCAtMjI0NCw3ICsyMjQ0LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblR5cGVPZk9iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CiAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgb2JqZWN0KSk7CiAgICAg
CkBAIC0yMjU5LDcgKzIyNTksNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHlw
ZU9mT2JqZWN0QXNUeXBlb2ZUeXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KHZtLCBvYmplY3QpKTsKICAgICAKQEAgLTIyNzQsNyArMjI3NCw3IEBAIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQWxsb2NhdGVTaW1wbGVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlh
bENhcGFjaXR5KFZNCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oCiAgICAgICAgIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCh2bSwgMCwgMCwgaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5LCBmYWxzZSwgMCkpOwpAQCAtMjI4
NCw3ICsyMjg0LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVNpbXBs
ZVByb3BlcnR5U3RvcmFnZShWTSogdm1Qb2ludGVyLCBzaXplX3QKIHsKICAgICBWTSYgdm0gPSAq
dm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPigKICAgICAgICAgQnV0
dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxpemVkKHZtLCAwLCAwLCBuZXdTaXplLCBmYWxzZSwgMCkp
OwpAQCAtMjI5NCw3ICsyMjk0LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxv
Y2F0ZUNvbXBsZXhQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5KFYKIHsKICAgICBW
TSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVCghb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oCkBA
IC0yMzA1LDcgKzIzMDUsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRl
Q29tcGxleFByb3BlcnR5U3RvcmFnZShWTSogdm1Qb2ludGVyLCBKU09iagogewogICAgIFZNJiB2
bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KAogICAgICAg
ICBvYmplY3QtPmFsbG9jYXRlTW9yZU91dE9mTGluZVN0b3JhZ2Uodm0sIG9iamVjdC0+c3RydWN0
dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U2l6ZSkpOwpAQCAtMjMxNSw3ICsyMzE1
LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25FbnN1cmVJbnQzMihWTSogdm1Qb2lu
dGVyLCBKU0NlbGwqIGNlbGwpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgaWYg
KCFjZWxsLT5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIzMjksNyArMjMyOSw3
IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRW5zdXJlRG91YmxlKFZNKiB2bVBvaW50
ZXIsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBpZiAo
IWNlbGwtPmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjM0Myw3ICsyMzQzLDcg
QEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzKFZNKiB2bVBv
aW50ZXIsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBp
ZiAoIWNlbGwtPmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjM1Nyw3ICsyMzU3
LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25FbnN1cmVBcnJheVN0b3JhZ2UoVk0q
IHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAog
ICAgIGlmICghY2VsbC0+aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzcxLDcg
KzIzNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0dlbmVy
aWNQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7
CkBAIC0yMzkxLDcgKzIzOTEsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlCeUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGJhc2VDZWxsLT50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWShzdWJzY3JpcHQgPCAwKSkg
ewogICAgICAgICAvLyBHbyB0aGUgc2xvd2VzdCB3YXkgcG9zc2libGUgYmVjYXVzZSBuZWdhdGl2
ZSBpbmRpY2VzIGRvbid0IHVzZSBpbmRleGVkIHN0b3JhZ2UuCkBAIC0yNDA0LDcgKzI0MDQsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1
ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTI0MjEsNyArMjQyMSw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JD
ZWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09i
amVjdCogYmFzZSA9IGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0yNDM0LDcgKzI0
MzQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9JbmRleFN0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQzMgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRl
eCkuc3RyaW5nKCkpOwogfQogCkBAIC0yNDQyLDcgKzI0NDIsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwV2l0aExhc3RJbmRleChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBSZWdFeHAqIHJl
Z2V4cCA9IHN0YXRpY19jYXN0PFJlZ0V4cCo+KHJlZ2V4cFB0cik7CiAgICAgQVNTRVJUKHJlZ2V4
cC0+aXNWYWxpZCgpKTsKQEAgLTI0NTMsNyArMjQ1Myw3IEBAIFN0cmluZ0ltcGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVzb2x2ZVJvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNTCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBzdHJpbmct
PnZhbHVlKGdsb2JhbE9iamVjdCkuaW1wbCgpOwogfQpAQCAtMjQ2Miw3ICsyNDYyLDcgQEAgSlNT
dHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nVmFsdWVPZihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTI0ODEsNyArMjQ4
MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdTdWJzdHIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIHJldHVybiBqc1N1YnN0cmluZyh2bSwgZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8
SlNTdHJpbmcqPihjZWxsKSwgZnJvbSwgc3Bhbik7CiB9CkBAIC0yNDkwLDcgKzI0OTAsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nU2xpY2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoY2VsbCk7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDx1aW50NjRfdD4oSlNTdHJpbmc6Ok1heExlbmd0aCkgPD0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSwgIiIpOwpA
QCAtMjUwMSw3ICsyNTAxLDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9M
b3dlckNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHIKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCkBAIC0yNTIwLDcgKzI1MjAsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkludDMyVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJfdAog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTI1MzYsNyArMjUzNiw3IEBAIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW50NTJUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBpbnQ2NF90CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjU1Miw3ICsyNTUyLDcgQEAgY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Eb3VibGVUb1N0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yNTY4LDcgKzI1
NjgsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkludDMyVG9TdHJpbmdXaXRoVmFs
aWRSYWRpeChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaW50MzJUb1N0cmlu
Zyh2bSwgdmFsdWUsIHJhZGl4KSk7CiB9CkBAIC0yNTc3LDcgKzI1NzcsNyBAQCBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaW50NTJUb1N0cmluZyh2bSwgdmFsdWUsIHJhZGl4
KSk7CiB9CkBAIC0yNTg2LDcgKzI1ODYsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRvdWJsZVRvU3RyaW5nV2l0aFZhbGlkUmFkaXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obnVtYmVyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRpeCkpOwogfQpAQCAtMjU5NSw3
ICsyNTk1LDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKFZNKiB2bVBvaW50ZXIsIGludDMyX3QgY2gKIHsKICAgICBWTSYgdm0gPSAqdm1Q
b2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICAKICAgICByZXR1cm4ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0sIHN0YXRpY19j
YXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsKIH0KQEAgLTI2MDQsNyArMjYwNCw3IEBAIFN5bWJvbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdTeW1ib2woVk0qIHZtUG9pbnRlcikKIHsKICAgICBW
TSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZSh2bSk7CiB9CkBAIC0y
NjEzLDcgKzI2MTMsNyBAQCBTeW1ib2wqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3U3ltYm9s
V2l0aERlc2NyaXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgU3RyaW5nIHN0cmluZyA9IGRlc2NyaXB0aW9uLT52YWx1ZShnbG9iYWxPYmplY3Qp
OwpAQCAtMjYyNiw3ICsyNjI2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d1N0cmluZ09iamVjdChWTSogdm1Qb2ludGVyLCBKU1N0cmluZyogc3RyaW5nLAogewogICAgIFZN
JiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIAogICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZSh2bSwg
c3RydWN0dXJlLCBzdHJpbmcpOwogfQpAQCAtMjYzNSw3ICsyNjM1LDcgQEAgSlNTdHJpbmcqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVG9TdHJpbmdPbkNlbGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHJl
dHVybiBKU1ZhbHVlKGNlbGwpLnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7CiB9CkBAIC0yNjQ0LDcg
KzI2NDQsNyBAQCBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1N0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSgogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1N0cmluZyhn
bG9iYWxPYmplY3QpOwogfQpAQCAtMjY1Myw3ICsyNjUzLDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHN0cmlu
Z0NvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgY2VsbCk7CiB9CkBAIC0yNjYyLDcgKzI2NjIsNyBA
QCBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKICAgICByZXR1cm4gc3RyaW5nQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpk
ZWNvZGUodmFsdWUpKTsKIH0KQEAgLTI2NzEsNyArMjY3MSw3IEBAIEpTU3RyaW5nKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1N0cmluCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBqc1N0
cmluZyhnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKIH0KQEAgLTI2ODAsNyArMjY4MCw3IEBA
IEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIHJldHVybiBqc1N0cmluZyhnbG9iYWxPYmplY3QsIGEsIGIsIGMpOwogfQpAQCAtMjY4
OSw3ICsyNjg5LDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyQ2F0MihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlMKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIEFTU0VSVCghSlNWYWx1ZTo6ZGVjb2RlKGEpLmlzU3ltYm9sKCkpOwpAQCAtMjcwNiw3
ICsyNzA2LDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyQ2F0MyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlMKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIEFTU0VSVCghSlNWYWx1ZTo6ZGVjb2RlKGEpLmlzU3ltYm9sKCkpOwpAQCAtMjcyNiw3ICsy
NzI2LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0
Rm9yRG91YmxlKFZNKiB2bVBvaW50ZXIsIEVuY29kZWQKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2lu
dGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAg
U2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxl
SW5kZXgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKQEAgLTI3NDIsNyArMjc0Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dp
dGNoU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCB0CiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIFN0cmluZ0ltcGwqIHN0ckltcGwgPSBzdHJpbmctPnZhbHVl
KGdsb2JhbE9iamVjdCkuaW1wbCgpOwpAQCAtMjc1Niw3ICsyNzU2LDcgQEAgaW50MzJfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaFN0cmluZ0FuZEdldEJyYW5jaE9mZnNldChKU0dsb2Jh
bE9iamVjdCogZ2wKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgU3RyaW5nSW1wbCogc3Ry
SW1wbCA9IHN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KS5pbXBsKCk7CkBAIC0yNzkwLDcgKzI3
OTAsNyBAQCB1aW50cHRyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nTGVz
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGFzU3RyaW5nKGEp
LT52YWx1ZShnbG9iYWxPYmplY3QpLCBhc1N0cmluZyhiKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7
CiB9CkBAIC0yNzk5LDcgKzI3OTksNyBAQCB1aW50cHRyX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Db21wYXJlU3RyaW5nTGVzc0VxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gIWNvZGVQb2ludENvbXBhcmVM
ZXNzVGhhbihhc1N0cmluZyhiKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSwgYXNTdHJpbmcoYSktPnZh
bHVlKGdsb2JhbE9iamVjdCkpOwogfQpAQCAtMjgwOCw3ICsyODA4LDcgQEAgdWludHB0cl90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0dyZWF0ZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJu
IGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihhc1N0cmluZyhiKS0+dmFsdWUoZ2xvYmFsT2JqZWN0
KSwgYXNTdHJpbmcoYSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwogfQpAQCAtMjgxNyw3ICsyODE3
LDcgQEAgdWludHB0cl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0dyZWF0
ZXJFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgcmV0dXJuICFjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oYXNTdHJpbmcoYSkt
PnZhbHVlKGdsb2JhbE9iamVjdCksIGFzU3RyaW5nKGIpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsK
IH0KQEAgLTI4MjYsNyArMjgyNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ob3Rp
ZnlXcml0ZShWTSogdm1Qb2ludGVyLCBXYXRjaHBvaW50U2V0KiBzZXQpCiB7CiAgICAgVk0mIHZt
ID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKICAgICBzZXQtPnRvdWNoKHZtLCAiRXhlY3V0ZWQgTm90aWZ5V3JpdGUiKTsK
IH0KQEAgLTI4MzUsNyArMjgzNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJv
d1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSk7CiB9CkBAIC0yODQ0LDcgKzI4NDQsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2l6ZU9mVmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7CiAgICAgCiAgICAgcmV0dXJuIHNpemVPZlZh
cmFyZ3MoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKQEAgLTI4
NTQsNyArMjg1NCw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNPd25Qcm9w
ZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBKU1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKQEAgLTI4
NzUsNyArMjg3NSw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25OdW1iZXJJc0lu
dGVnZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gTnVtYmVyQ29uc3RydWN0b3I6OmlzSW50ZWdlcklt
cGwoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7CiB9CiAKQEAgLTI4ODMsNyArMjg4Myw3IEBAIGlu
dDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZTdHJpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGludDMyX3QgbGVu
Z3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKQEAgLTI5MDgsNyArMjkwOCw3IEBAIGlu
dDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZUludDMyT3JDb250
aWd1b3VzKEpTR2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHNl
YXJjaEVsZW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTI5MzEsNyAr
MjkzMSw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1
ZURvdWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogCkBAIC0yOTUzLDcgKzI5NTMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTG9hZFZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJf
dCBmaQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVu
dHMgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7CiAgICAgCiAgICAgbG9hZFZh
cmFyZ3MoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcihmaXJzdEVsZW1l
bnREZXN0KSwgYXJndW1lbnRzLCBvZmZzZXQsIGxlbmd0aCk7CkBAIC0yOTc4LDcgKzI5NzgsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICByZXR1cm4gSlNDOjpzdHJpbmdGcm9tQ2hhckNvZGUoZ2xvYmFsT2JqZWN0LCBvcDEpOwog
fQogCkBAIC0yOTg2LDcgKzI5ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZVVudHlwZWQoSlNHbG9iYWxPYmplY3QqCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIGNoYXJWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIGludDMyX3QgY2hJbnQgPSBjaGFyVmFsdWUudG9V
SW50MzIoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQzo6c3Ry
aW5nRnJvbUNoYXJDb2RlKGdsb2JhbE9iamVjdCwgY2hJbnQpKTsKQEAgLTMwMDksNyArMzAwOSw3
IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0KFZNKiB2bVBvaW50
ZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAg
ICBpZiAoIWJ1dHRlcmZseQogICAgICAgICAmJiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpIHx8IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSkg
ewpAQCAtMzAzMSw3ICszMDMxLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d09iamVjdFdpdGhCdXR0ZXJmbHkoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKgogewogICAgIFZN
JiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIAogICAgIGlmICghYnV0dGVyZmx5KSB7CiAgICAgICAgIGJ1dHRl
cmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKApAQCAtMzA0Niw3ICszMDQ2LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdI
ZWFkZXJBbmRWZWN0b3IKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEluZGV4aW5nSGVh
ZGVyIGhlYWRlcjsKICAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7CkBAIC0zMDY4
LDcgKzMwNjgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRo
U3ByZWFkU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgRW5jb2RlZEpTVmFsdWUqIHZhbHVlcyA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVl
Kj4oYnVmZmVyKTsKQEAgLTMxMjYsNyArMzEyNiw3IEBAIEpTQ2VsbCogb3BlcmF0aW9uQ3JlYXRl
Rml4ZWRBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoSlNGaXhlZEFycmF5KiByZXN1bHQgPSBKU0Zp
eGVkQXJyYXk6OnRyeUNyZWF0ZSh2bSwgdm0uZml4ZWRBcnJheVN0cnVjdHVyZS5nZXQoKSwgbGVu
Z3RoKSkKQEAgLTMxNDAsNyArMzE0MCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25TcHJlYWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0zMTc1LDcgKzMxNzUsNyBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQo
aXNKU0FycmF5KGNlbGwpKTsKICAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4o
Y2VsbCk7CkBAIC0zMTg4LDcgKzMxODgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhWTSogdm1Qb2ludGVyKQogewogICAgIFZNJiB2bSA9
ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCiAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZt
LCAiTG9nIEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lkZSBERkcuIl9zKTsKIH0KQEAgLTMxOTcsNyAr
MzE5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZVNj
b3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChKU0dsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAgICAgCiAgICAgSlNWYWx1ZSByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6
cmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChnbG9iYWxPYmplY3QsIHNjb3Bl
LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXNvbHZlZFNjb3BlKTsKQEAgLTMyMDcsNyArMzIwNyw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25SZXNvbHZlU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNTY29wCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTT2JqZWN0
KiByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNjb3BlLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpbXBsKSk7CiAgICAgcmV0dXJuIHJlc29sdmVkU2NvcGU7
CkBAIC0zMjE3LDcgKzMyMTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldER5bmFtaWNWYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgaW1wbCk7CkBAIC0zMjc3LDcgKzMyNzcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
UwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgY29uc3RleHByIGJvb2wgaXNT
dHJpY3RNb2RlID0gdHJ1ZTsKICAgICByZXR1cm4gcHV0RHluYW1pY1ZhcihnbG9iYWxPYmplY3Qs
IHZtLCBzY29wZSwgdmFsdWUsIGltcGwsIGdldFB1dEluZm9CaXRzLCBpc1N0cmljdE1vZGUpOwog
fQpAQCAtMzI4Niw3ICszMjg2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5
bmFtaWNWYXJOb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGNvbnN0ZXhwciBib29sIGlzU3RyaWN0TW9kZSA9
IGZhbHNlOwogICAgIHJldHVybiBwdXREeW5hbWljVmFyKGdsb2JhbE9iamVjdCwgdm0sIHNjb3Bl
LCB2YWx1ZSwgaW1wbCwgZ2V0UHV0SW5mb0JpdHMsIGlzU3RyaWN0TW9kZSk7CiB9CkBAIC0zMjk1
LDcgKzMyOTUsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWFwSGFzaChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4ganNNYXBIYXNoKGdsb2JhbE9iamVjdCwgdm0sIEpT
VmFsdWU6OmRlY29kZShpbnB1dCkpOwogfQpAQCAtMzMwNCw3ICszMzA0LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tldChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTTWFw
OjpCdWNrZXRUeXBlKiogYnVja2V0ID0ganNDYXN0PEpTTWFwKj4obWFwKS0+ZmluZEJ1Y2tldChn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShrZXkpLCBoYXNoKTsKICAgICBpZiAoIWJ1Y2tl
dCkKICAgICAgICAgcmV0dXJuIHZtLnNlbnRpbmVsTWFwQnVja2V0KCk7CkBAIC0zMzE1LDcgKzMz
MTUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgSlNTZXQ6OkJ1Y2tldFR5cGUqKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQqPiht
YXApLT5maW5kQnVja2V0KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGtleSksIGhhc2gp
OwogICAgIGlmICghYnVja2V0KQogICAgICAgICByZXR1cm4gdm0uc2VudGluZWxTZXRCdWNrZXQo
KTsKQEAgLTMzMjYsNyArMzMyNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25T
ZXRBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBzZXQsCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQq
PihzZXQpLT5hZGROb3JtYWxpemVkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGtleSks
IEpTVmFsdWUoKSwgaGFzaCk7CiAgICAgaWYgKCFidWNrZXQpCiAgICAgICAgIHJldHVybiB2bS5z
ZW50aW5lbFNldEJ1Y2tldCgpOwpAQCAtMzMzNyw3ICszMzM3LDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk1hcFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG1hcCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8qIGJ1Y2tl
dCA9IGpzQ2FzdDxKU01hcCo+KG1hcCktPmFkZE5vcm1hbGl6ZWQoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoa2V5KSwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgaGFzaCk7CiAgICAgaWYg
KCFidWNrZXQpCiAgICAgICAgIHJldHVybiB2bS5zZW50aW5lbE1hcEJ1Y2tldCgpOwpAQCAtMzM0
OCw3ICszMzQ4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldlYWtTZXRBZGQoVk0q
IHZtUG9pbnRlciwgSlNDZWxsKiBzZXQsIEpTQ2VsbCoga2V5LAogewogICAgIFZNJiB2bSA9ICp2
bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIGpzQ2FzdDxKU1dlYWtTZXQqPihzZXQpLT5hZGQodm0sIGFzT2JqZWN0KGtleSks
IEpTVmFsdWUoKSwgaGFzaCk7CiB9CiAKQEAgLTMzNTYsNyArMzM1Niw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25XZWFrTWFwU2V0KFZNKiB2bVBvaW50ZXIsIEpTQ2VsbCogbWFwLCBK
U0NlbGwqIGtleSwKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBqc0Nhc3Q8SlNXZWFrTWFw
Kj4obWFwKS0+YWRkKHZtLCBhc09iamVjdChrZXkpLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBo
YXNoKTsKIH0KIApAQCAtMzM2NCw3ICszMzY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRQcm90b3R5cGVPZk9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmEK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0KIApAQCAt
MzM3Miw3ICszMzcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CkBAIC0zMzk1LDcgKzMzOTUsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dERkcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIHNjb3BlLnRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlVG9UaHJvdykp
OwogfQpAQCAtMzQwNCw3ICszNDA0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRo
cm93U3RhdGljRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHIKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWVzc2FnZS0+dmFsdWUoZ2xv
YmFsT2JqZWN0KTsKICAgICBzY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGNyZWF0
ZUVycm9yKGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8RXJyb3JUeXBlPihlcnJvclR5cGUpLCBl
cnJvck1lc3NhZ2UpKTsKQEAgLTM0MTUsNyArMzQxNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25MaW5rRGlyZWN0Q2FsbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywgSlNGdW5j
dGlvCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2Jq
ZWN0KCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCA9IGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCk7CkBAIC0zNDYyLDcgKzM0
NjIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0RpcmVjdENhbGwoQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8sIEpTRnVuY3RpbwogICAgIGxpbmtEaXJlY3RGb3IoY2FsbEZy
YW1lLCAqY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ssIGNvZGVQdHIpOwogfQogCi1leHRlcm4gIkMi
IHZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVCbG9jayogb3B0aW1pemVkQ29kZUJsb2NrLCBPU1JFeGl0QmFzZSogZXhp
dCkKK3ZvaWQgdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlQmxvY2sqIG9wdGltaXplZENvZGVCbG9jaywgT1NSRXhpdEJhc2UqIGV4aXQpCiB7CiAgICAg
Ly8gSXQncyBzb3J0IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24ndCBHQyB3aGlsZSBpbiBoZXJl
LiBBbnl3YXlzLCBkb2luZyBzbyB3b3VsZG4ndAogICAgIC8vIHJlYWxseSBiZSBwcm9maXRhYmxl
LgpAQCAtMzUxOCw2ICszNTE4LDExIEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIHRy
aWdnZXJSZW9wdGltaXphdGlvbk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kCiAgICAgb3B0
aW1pemVkQ29kZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb09TUkV4aXQs
IENvdW50UmVvcHRpbWl6YXRpb24pOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sq
IG9wdGltaXplZENvZGVCbG9jaywgT1NSRXhpdEJhc2UqIGV4aXQpCit7CisgICAgdHJpZ2dlclJl
b3B0aW1pemF0aW9uTm93KGNvZGVCbG9jaywgb3B0aW1pemVkQ29kZUJsb2NrLCBleGl0KTsKK30K
KwogI2lmIEVOQUJMRShGVExfSklUKQogc3RhdGljIGJvb2wgc2hvdWxkVHJpZ2dlckZUTENvbXBp
bGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvZGUqIGppdENvZGUpCiB7CkBAIC0zNTkxLDEx
ICszNTk2LDExIEBAIHN0YXRpYyB2b2lkIHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUoVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29kZSoKICAgICAgICAgY29kZUJsb2NrLCBD
b21waWxhdGlvbkRlZmVycmVkKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVy
VXBOb3coVk0qIHZtUG9pbnRlcikKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcmlnZ2Vy
VGllclVwTm93KFZNKiB2bVBvaW50ZXIpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgRGVm
ZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAKQEAgLTM4NTAsMTEgKzM4NTUsMTEgQEAg
c3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBC
eXRlY29kZUluZGV4IG9yaWdpbkJ5dGUKICAgICByZXR1cm4gcmV0YWdDb2RlUHRyPGNoYXIqPihh
ZGRyZXNzLCBKU0VudHJ5UHRyVGFnLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihjYWxsRnJhbWUpKTsK
IH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxvb3AoVk0qIHZtUG9p
bnRlciwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleEJpdHMpCit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVHJpZ2dlclRpZXJVcE5vd0luTG9vcChWTSogdm1Qb2ludGVyLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4Qml0cykKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBEZWZlckdDRm9yQVdo
aWxlIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IEJ5dGVj
b2RlSW5kZXg6OmZyb21CaXRzKGJ5dGVjb2RlSW5kZXhCaXRzKTsKQEAgLTM4ODYsMTEgKzM4OTEs
MTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxvb3AoVk0qIHZtUG9p
bnRlciwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleEIKICAgICB9CiB9CiAKLWNoYXIqIEpJVF9PUEVS
QVRJT04gdHJpZ2dlck9TUkVudHJ5Tm93KFZNKiB2bVBvaW50ZXIsIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXhCaXRzKQorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcmlnZ2VyT1NSRW50cnlO
b3coVk0qIHZtUG9pbnRlciwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleEJpdHMpCiB7CiAgICAgVk0m
IHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4Ojpmcm9tQml0cyhieXRlY29k
ZUluZGV4Qml0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmlu
ZGV4IDk0ZjRjODIyYjU4NTA0NzhiMjJmYjczYmJmYjE4NmFmY2YzYzNiODguLjI1NjRkOWZjOGRm
OTg3NjcxNThmZDI0MTY2N2IzYWI2ZWJiNjBiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0yOTYsMTYgKzI5NiwxNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua0RpcmVjdENhbGwoQ2FsbExpbmtJbmZvKiwgSlNGdW5jdGlvbiopIFdU
Rl9JTlRFUgogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxl
ckxvZ0RGRyhWTSopIFdURl9JTlRFUk5BTDsKIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJS
ZW9wdGltaXphdGlvbk5vdyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBDb2RlQmxvY2sq
IG9wdGlpbXplZENvZGVCbG9jaywgT1NSRXhpdEJhc2UqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2ssIENvZGVCbG9jayogb3B0aWltemVkQ29kZUJsb2NrLCBPU1JFeGl0
QmFzZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2ssIENvZGVCbG9jayogb3B0aWltemVkQ29kZUJsb2NrLCBP
U1JFeGl0QmFzZSopOyAvLyBUaGlzIGlzIG5vdCBKSVRfT1BFUkFUSU9OLgogCiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJhbmRvbShKU0dsb2Jh
bE9iamVjdCopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKLXZvaWQgSklUX09QRVJB
VElPTiB0cmlnZ2VyVGllclVwTm93KFZNKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFU
SU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxvb3AoVk0qLCB1bnNpZ25lZCBieXRlY29kZUluZGV4Qml0
cykgV1RGX0lOVEVSTkFMOwotY2hhciogSklUX09QRVJBVElPTiB0cmlnZ2VyT1NSRW50cnlOb3co
Vk0qLCB1bnNpZ25lZCBieXRlY29kZUluZGV4Qml0cykgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRyaWdnZXJUaWVyVXBOb3coVk0qKSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJpZ2dlclRpZXJVcE5vd0luTG9vcChWTSosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXhCaXRzKSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyaWdnZXJPU1JFbnRyeU5vdyhWTSosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXhCaXRzKSBXVEZfSU5URVJOQUw7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAKIH0gLy8g
ZXh0ZXJuICJDIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggZjc1NzlmYzliODI1NGEwOGJhODIzMWNlNjg0MjQ2NGE4YzQ4OGM3
Ny4uMTQyYzdlMDY4OWMyNmExZmFmZGNkNTAwM2YxZjM0YmViMjUzODAyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MDg1
LDcgKzUwODUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBjYWxsVGllclVwLmxpbmsoJm1faml0KTsKIAogICAgICAgICAgICAgc2lsZW50
U3BpbGwoc2F2ZVBsYW5zKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24odHJpZ2dlclRpZXJV
cE5vd0luTG9vcCwgJnZtKCksIFRydXN0ZWRJbW0zMihieXRlY29kZUluZGV4LmFzQml0cygpKSk7
CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRyaWdnZXJUaWVyVXBOb3dJbkxv
b3AsICZ2bSgpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSkpOwogICAgICAg
ICAgICAgc2lsZW50RmlsbChzYXZlUGxhbnMpOwogCiAgICAgICAgICAgICBtX2ppdC5qdW1wKCku
bGlua1RvKHRvTmV4dE9wZXJhdGlvbiwgJm1faml0KTsKQEAgLTUxMDAsNyArNTEwMCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3MoJm1faml0LmppdENvZGUoKS0+dGllclVwQ291bnRl
ci5tX2NvdW50ZXIpKTsKICAgICAgICAgCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJz
KEludmFsaWRHUFJSZWcpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHRyaWdnZXJUaWVyVXBOb3cs
ICZ2bSgpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcmlnZ2VyVGllclVwTm93
LCAmdm0oKSk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgCiAg
ICAgICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtNTEzOCw3ICs1MTM4LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgb3ZlcmZsb3dlZENv
dW50ZXIubGluaygmbV9qaXQpOwogCiAgICAgICAgICAgICBzaWxlbnRTcGlsbChzYXZlUGxhbnMp
OwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbih0cmlnZ2VyT1NSRW50cnlOb3csIHRlbXBHUFIs
ICZ2bSgpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSkpOworICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcmlnZ2VyT1NSRW50cnlOb3csIHRlbXBHUFIsICZ2
bSgpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSkpOwogCiAgICAgICAgICAg
ICBpZiAoc2F2ZVBsYW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hU
ZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSKS5saW5rVG8odG9OZXh0T3BlcmF0
aW9uLCAmbV9qaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCmluZGV4
IDlkMDlmZTcxNTQxYzAyNjViMWMxOTllYzBkYjdkMzllZGQxMTkxYTIuLjZhY2FmYmYzYmY1MzVj
OTY5NmJlNjQ4YTIwNzBiNmVlNmY0ZjhiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRUaHVu
a0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXIgaml0OworICAgIENDYWxs
SGVscGVycyBqaXQobnVsbHB0cik7CiAgICAgaml0LnByb2JlKE9TUkV4aXQ6OmV4ZWN1dGVPU1JF
eGl0LCAmdm0pOwogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkRGRyBPU1IgZXhpdCB0aHVuayIpOwpAQCAtNTAsNyArNTAsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRpb25U
aHVua0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXIgaml0OworICAgIEND
YWxsSGVscGVycyBqaXQobnVsbHB0cik7CiAKICAgICAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBi
ZWZvcmUgd2UgdXNlIHRoZSBzY3JhdGNoIGJ1ZmZlciBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gYWxz
byB1c2VzIHRoZSBzY3JhdGNoIGJ1ZmZlci4KICAgICBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JF
eGl0Q29tcGlsZXJUaHVuazxERkc6OkpJVENvZGU+KGppdCwgdm0sIEpJVFR5cGU6OkRGR0pJVCk7
CkBAIC03Nyw2ICs3Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAKICAgICAvLyBTZXQgdXAg
b25lIGFyZ3VtZW50LgogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVy
YXRpb25QdHJUYWcpOwogCkBAIC05OSw3ICsxMDAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAg
Ci0gICAgcGF0Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4oT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGZ1bmN0aW9uQ2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Db21w
aWxlT1NSRXhpdCkpOwogCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiREZHIE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsiKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4YTAwZDk2
NjNmZTNkNjE2YTBmMWVlZThhZGU2NGY5M2IxZmQxM2Y5Li5lMzNmYjg3YmEyYTM2NTk1MGUyYjJi
NjQzZmRhNjYzYjFkNzg0MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC04ODQ1LDYgKzg4NDUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9udFRocm93ID0gaml0
Lmp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKICAgICAg
ICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93
U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhF
eGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblRocm93U3RhY2tPdmVy
Zmxvd0ZvclZhcmFyZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNv
bihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgICAgICAg
ICAKQEAgLTkxMTEsNiArOTExMiw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKICAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZh
cmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGpp
dC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3
aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpKTsK
ICAgICAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dp
bmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTkxMTgsNiArOTEy
MCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3Jp
Z2luYWxTdGFja0hlaWdodCAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMSk7
CiAgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25TaXplRnJhbWVGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwgYXJndW1lbnRzR1BSLCBzY3JhdGNoR1BSMSwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9w
ZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpKTsKIAogICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEpOwpAQCAtOTEyNiw2ICs5
MTI5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdFNl
dFZhcmFyZ3NGcmFtZShqaXQsIHNjcmF0Y2hHUFIxLCBmYWxzZSwgc2NyYXRjaEdQUjIsIHNjcmF0
Y2hHUFIyKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigtbWluaW11bUpTQ2FsbEFyZWFTaXplKSwgc2NyYXRjaEdQUjIsIENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgICAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUpPihqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBzY3JhdGNo
R1BSMiwgYXJndW1lbnRzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihkYXRhLT5maXJz
dFZhckFyZ09mZnNldCksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdp
dGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblNldHVwVmFyYXJn
c0ZyYW1lKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKQEAgLTkyNzcsNiArOTI4MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5z
dWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KGdsb2JhbE9iamVjdCwgR1BSSW5m
bzo6cmVnVDEpOworICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRh
Z0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUklu
Zm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNh
bGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcp
OwogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNo
ZWNrKHN0YXRlLT52bSgpLCBBc3NlbWJseUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBB
c3NlbWJseUhlbHBlcnM6OkZhckp1bXBXaWR0aCkpOwpAQCAtMTI5ODUsNyArMTI5OTAsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgSlNHbG9i
YWxPYmplY3QuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAzMjA0CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAg
ICAgICAgICAgbV9vdXQuc3RvcmVQdHIod2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQu
YWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CisgICAgICAgICAgICBtX291dC5zdG9yZVB0
cihtX2NhbGxGcmFtZSwgbV9vdXQuYWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CiAgICAg
ICAgICAgICBzZXRKU1ZhbHVlKAogICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgYml0d2lz
ZV9jYXN0PEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tR2V0dGVyPihtX25vZGUtPmNhbGxET01H
ZXR0ZXJEYXRhKCktPmN1c3RvbUFjY2Vzc29yR2V0dGVyLnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJl
c3M8Q0Z1bmN0aW9uUHRyVGFnPigpKSwKICAgICAgICAgICAgICAgICAgICAgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJbnRQ
dHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRl
bnRpZmllck51bWJlcl0pKSk7CkBAIC0xNzI2Myw2ICsxNzI2OCw5IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIG1fb3V0LnN0b3JlMzIoCiAgICAgICAgICAgICBtX291dC5jb25zdElu
dDMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSk7CisjaWYgIVVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIHx8
IEFTU0VSVF9ESVNBQkxFRAorICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgbV9v
dXQuYWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2
b2lkIGNhbGxQcmVmbGlnaHQoKQpAQCAtMTcyOTEsOCArMTcyOTksMTIgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICB2b2lkIGNhbGxDaGVjaygpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwotICAgICAgICBpZiAoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKQor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKSB7CisjaWYgIVVTRShCVUlM
VElOX0ZSQU1FX0FERFJFU1MpIHx8IEFTU0VSVF9ESVNBQkxFRAorICAgICAgICAgICAgbV9vdXQu
c3RvcmVQdHIobV9jYWxsRnJhbWUsIG1fb3V0LmFic29sdXRlKCZ2bSgpLnRvcENhbGxGcmFtZSkp
OworI2VuZGlmCiAgICAgICAgICAgICBtX291dC5jYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25FeGNlcHRpb25GdXp6KSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSk7CisgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBleGNlcHRpb24gPSBtX291dC5sb2FkNjQo
bV9vdXQuYWJzb2x1dGUodm0oKS5hZGRyZXNzT2ZFeGNlcHRpb24oKSkpOwogICAgICAgICBMVmFs
dWUgaGFkRXhjZXB0aW9uID0gbV9vdXQubm90WmVybzY0KGV4Y2VwdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggZjZiM2E3
NGNhM2U4NjQ1ZTExMmRjYWQ1ZWIzNjRlOWFhNGE2NzY3Yy4uNjY0ZDNiOTg4YWY3ZWE4M2Y2ZmI4
MmJjYjNhOGMwYTg4MTc2ZWU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIHN0YXRpYyB2b2lkIGNv
bXBpbGVSZWNvdmVyeSgKICAgICAgICAgdmFsdWUuZGF0YUZvcm1hdCgpLCBqaXQsIEdQUkluZm86
OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogfQogCi1zdGF0aWMgdm9p
ZCBjb21waWxlU3R1YigKLSAgICB1bnNpZ25lZCBleGl0SUQsIEpJVENvZGUqIGppdENvZGUsIE9T
UkV4aXQmIGV4aXQsIFZNKiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCitzdGF0aWMgdm9pZCBj
b21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkIGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwgT1NS
RXhpdCYgZXhpdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgLy8gVGhpcyBjb2RlIHJl
cXVpcmVzIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGlzIHRoZSBzYW1lIGFzIGNhbGxGcmFtZVJlZ2lz
dGVyCiAgICAgc3RhdGljX2Fzc2VydChNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIgPT0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICJNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQ
b2ludGVyUmVnaXN0ZXIgYW5kIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyIG11c3QgYmUgdGhl
IHNhbWUiKTsKQEAgLTE0Nyw5ICsxNDYsOSBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKIAog
ICAgIC8vIFRoZSBmaXJzdCB0aGluZyB3ZSBuZWVkIHRvIGRvIGlzIHJlc3RhYmxpc2ggb3VyIGZy
YW1lIGluIHRoZSBjYXNlIG9mIGFuIGV4Y2VwdGlvbi4KICAgICBpZiAoZXhpdC5pc0dlbmVyaWNV
bndpbmRIYW5kbGVyKCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0tPmNhbGxGcmFtZUZv
ckNhdGNoKTsgLy8gVGhlIGZpcnN0IHRpbWUgd2UgaGl0IHRoaXMgZXhpdCwgbGlrZSBhdCBhbGwg
b3RoZXIgdGltZXMsIHRoaXMgZmllbGQgc2hvdWxkIGJlIG5vbi1udWxsLgotICAgICAgICBqaXQu
cmVzdG9yZUNhbGxlZVNhdmVzRnJvbUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS0+dG9w
RW50cnlGcmFtZSk7Ci0gICAgICAgIGppdC5sb2FkUHRyKHZtLT5hZGRyZXNzT2ZDYWxsRnJhbWVG
b3JDYXRjaCgpLCBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh2bS5jYWxsRnJhbWVGb3JDYXRjaCk7IC8vIFRoZSBmaXJzdCB0aW1l
IHdlIGhpdCB0aGlzIGV4aXQsIGxpa2UgYXQgYWxsIG90aGVyIHRpbWVzLCB0aGlzIGZpZWxkIHNo
b3VsZCBiZSBub24tbnVsbC4KKyAgICAgICAgaml0LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRy
eUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7CisgICAgICAgIGppdC5s
b2FkUHRyKHZtLmFkZHJlc3NPZkNhbGxGcmFtZUZvckNhdGNoKCksIE1hY3JvQXNzZW1ibGVyOjpm
cmFtZVBvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdp
c3RlcikpLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVy
LCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIApAQCAtMTc1LDcgKzE3NCw3
IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICAgICAgbWF0ZXJpYWxpemF0aW9u
LT5wcm9wZXJ0aWVzKCkuc2l6ZSgpKTsKICAgICB9CiAgICAgCi0gICAgU2NyYXRjaEJ1ZmZlciog
c2NyYXRjaEJ1ZmZlciA9IHZtLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZSgKKyAgICBTY3JhdGNoQnVm
ZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0uc2NyYXRjaEJ1ZmZlckZvclNpemUoCiAgICAgICAgIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkgKiAoCiAgICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+
bV92YWx1ZXMuc2l6ZSgpICsgbnVtTWF0ZXJpYWxpemF0aW9ucyArIG1heE1hdGVyaWFsaXphdGlv
bk51bUFyZ3VtZW50cykgKwogICAgICAgICByZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRl
cygpICsKQEAgLTIxNSwxNSArMjE0LDE1IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAg
ICAgICAvLyB0byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVGVExPU1JFeGl0KCkgaXMgb25s
eSBjYWxsZWQgb24gdGhlIGZpcnN0IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9tIHRoaXMg
c2l0ZSwgYnV0IGFsbCBzdWJzZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBpbGVkCiAg
ICAgICAgIC8vIHJhbXAgd2l0aG91dCBjYWxsaW5nIGNvbXBpbGVGVExPU1JFeGl0KCkgZmlyc3Qu
Ci0gICAgICAgIGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZt
LT5oZWFwLmFkZHJlc3NPZkV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgaml0LnN0b3JlOChDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0cnVlKSwgdm0uaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2Vz
R0MoKSk7CiAgICAgfQogCiAgICAgLy8gQnJpbmcgdGhlIHN0YWNrIGJhY2sgaW50byBhIHNhbmUg
Zm9ybSBhbmQgYXNzZXJ0IHRoYXQgaXQncyBzYW5lLgogICAgIGppdC5wb3BUb1Jlc3RvcmUoR1BS
SW5mbzo6cmVnVDApOwogICAgIGppdC5jaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwogICAg
IAotICAgIGlmIChVTkxJS0VMWSh2bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIGppdENvZGUt
PmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbikpIHsKLSAgICAgICAgUHJvZmlsZXI6OkRhdGFiYXNl
JiBkYXRhYmFzZSA9ICp2bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyOworICAgIGlmIChVTkxJS0VM
WSh2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgaml0Q29kZS0+ZGZnQ29tbW9uKCktPmNvbXBp
bGF0aW9uKSkgeworICAgICAgICBQcm9maWxlcjo6RGF0YWJhc2UmIGRhdGFiYXNlID0gKnZtLm1f
cGVyQnl0ZWNvZGVQcm9maWxlcjsKICAgICAgICAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21w
aWxhdGlvbiA9IGppdENvZGUtPmRmZ0NvbW1vbigpLT5jb21waWxhdGlvbi5nZXQoKTsKICAgICAg
ICAgCiAgICAgICAgIFByb2ZpbGVyOjpPU1JFeGl0KiBwcm9maWxlckV4aXQgPSBjb21waWxhdGlv
bi0+YWRkT1NSRXhpdCgKQEAgLTMzNSw2ICszMzQsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1
YigKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3RGb3IobWF0ZXJpYWxpemF0aW9uLT5vcmlnaW4oKSkpLAogICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb24pLAogICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb25B
cmd1bWVudHMpKTsKKyAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAg
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUikp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5v
bkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIsIG1hdGVyaWFsaXphdGlvblRvUG9pbnRlci5nZXQobWF0ZXJp
YWxpemF0aW9uKSk7CkBAIC0zNjQsNiArMzY0LDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIo
CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0ZXJpYWxpemF0aW9u
KSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRp
b25Ub1BvaW50ZXIuZ2V0KG1hdGVyaWFsaXphdGlvbikpLAogICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGVyaWFsaXphdGlvbkFyZ3VtZW50cykpOworICAgICAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0
aW9uUG9wdWxhdGVPYmplY3RJbk9TUikpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAg
aml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICB9CkBA
IC00MTAsNyArNDExLDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgUmVnaXN0ZXJB
dE9mZnNldExpc3QqIHZtQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVn
aXN0ZXJPZmZzZXRzKCk7CiAgICAgUmVnaXN0ZXJTZXQgdm1DYWxsZWVTYXZlc1RvU2tpcCA9IFJl
Z2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpOwogICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFu
ZGxlcigpKSB7Ci0gICAgICAgIGppdC5sb2FkUHRyKCZ2bS0+dG9wRW50cnlGcmFtZSwgR1BSSW5m
bzo6cmVnVDEpOworICAgICAgICBqaXQubG9hZFB0cigmdm0udG9wRW50cnlGcmFtZSwgR1BSSW5m
bzo6cmVnVDEpOwogICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KEVudHJ5RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNCdWZmZXJPZmZzZXQoKSksIEdQUkluZm86
OnJlZ1QxKTsKICAgICB9CiAKQEAgLTQ4NSw5ICs0ODYsOSBAQCBzdGF0aWMgdm9pZCBjb21waWxl
U3R1YigKICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcihyZWcpKTsKICAgICB9CiAgICAgCi0gICAgaGFuZGxlRXhpdENvdW50cyhq
aXQsIGV4aXQpOworICAgIGhhbmRsZUV4aXRDb3VudHModm0sIGppdCwgZXhpdCk7CiAgICAgcmVp
ZnlJbmxpbmVkQ2FsbEZyYW1lcyhqaXQsIGV4aXQpOwotICAgIGFkanVzdEFuZEp1bXBUb1Rhcmdl
dCgqdm0sIGppdCwgZXhpdCk7CisgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KHZtLCBqaXQsIGV4
aXQpOwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBjb2RlQmxvY2spOwog
ICAgIGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKQEAgLTUwMCw3ICs1MDEsNyBAQCBz
dGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgKTsKIH0KIAotZXh0ZXJuICJDIiB2b2lk
KiBjb21waWxlRlRMT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgZXhpdElE
KQorZXh0ZXJuICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQqIG9wZXJhdGlvbkNvbXBpbGVGVExPU1JF
eGl0KENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBleGl0SUQpCiB7CiAgICAgaWYgKHNo
b3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRpb25z
Ojp2ZXJib3NlRlRMT1NSRXhpdCgpKQogICAgICAgICBkYXRhTG9nKCJDb21waWxpbmcgT1NSIGV4
aXQgd2l0aCBleGl0SUQgPSAiLCBleGl0SUQsICJcbiIpOwpAQCAtNTQ1LDcgKzU0Niw3IEBAIGV4
dGVybiAiQyIgdm9pZCogY29tcGlsZUZUTE9TUkV4aXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVu
c2lnbmVkIGV4aXRJRCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbXBpbGVTdHViKGV4aXRJ
RCwgaml0Q29kZSwgZXhpdCwgJnZtLCBjb2RlQmxvY2spOworICAgIGNvbXBpbGVTdHViKHZtLCBl
eGl0SUQsIGppdENvZGUsIGV4aXQsIGNvZGVCbG9jayk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaEp1bXAoCiAgICAgICAgIGV4aXQuY29kZUxvY2F0aW9uRm9yUmVwYXRjaChjb2RlQmxv
Y2spLCBDb2RlTG9jYXRpb25MYWJlbDxPU1JFeGl0UHRyVGFnPihleGl0Lm1fY29kZS5jb2RlKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5oCmlu
ZGV4IDkxNGFhMTkzODMxYjcyZDI4NGQ3MzUyMjRhMDY2ZjU4YzczNDI1ZTQuLmJlNzJmNDUzOTk1
NTljNDZjM2EyYWJhMDkwNWE4MWZlMjgzZTQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAvLyBUYWtlcyB0aGUgY2FsbCBmcmFtZSBhbmQgdGhlIGlu
ZGV4IG9mIHRoZSBleGl0LCBhbmQgcmV0dXJucyB0aGUgYWRkcmVzcyB0bwogLy8ganVtcCB0by4K
IGV4dGVybiAiQyIgewotdm9pZCogSklUX09QRVJBVElPTiBjb21waWxlRlRMT1NSRXhpdChDYWxs
RnJhbWUqLCB1bnNpZ25lZCBleGl0SUQpIFdURl9JTlRFUk5BTDsKK3ZvaWQqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ29tcGlsZUZUTE9TUkV4aXQoQ2FsbEZyYW1lKiwgdW5zaWduZWQgZXhpdElE
KSBXVEZfSU5URVJOQUw7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCmluZGV4IDI4Yzk1YjE2OWQ2ZTc4
NDg5MzI2M2VlMDQyMjVmMWEyZjE1NjE5ZGUuLjgyOWQyYmFiMTAyNjE4MjkxOGZjZjMyZWQwNGUy
M2U2N2JlOTRjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25z
LmNwcApAQCAtNTUsNyArNTUsNyBAQCBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIHVzaW5n
IG5hbWVzcGFjZSBERkc7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKIApAQCAtMTQ0LDcgKzE0
NCw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFs
aXplT2JqZWN0SW5PU1IoSlNHbG9iYWxPYmplY3QqCiAgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgLy8gV2UgY2Fubm90IEdDLiBXZSd2
ZSBnb3QgcG9pbnRlcnMgaW4gZXZpbCBwbGFjZXMuCiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZl
ckdDKHZtLmhlYXApOwpAQCAtNjA3LDcgKzYwNyw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoSlNHbG9iYWxPYmplY3Qq
CiAgICAgfQogfQogCi1leHRlcm4gIkMiIHZvaWQqIEpJVF9PUEVSQVRJT04gY29tcGlsZUZUTExh
enlTbG93UGF0aChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgaW5kZXgpCitleHRlcm4g
IkMiIHZvaWQqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGlsZUZUTExhenlTbG93UGF0aChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgVk0mIHZtID0gY2Fs
bEZyYW1lLT5kZXByZWNhdGVkVk0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuaAppbmRleCAwNGQwMjgzOWQ5MTA0NWRjNzgwYmIwNDQxZDY4YjY2ZTZlYjg1NDk3
Li4wNWQ5OGNmN2EzNDNiNjY3MWI1YTI0Y2UzMTY5MDhkMjFmNDhkY2I3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaApAQCAtNDAsNyArNDAsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUihKU0dsb2JhbE9i
amVjdCosIEV4aXRUaW1lTwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVP
YmplY3RJbk9TUihKU0dsb2JhbE9iamVjdCosIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9u
KiwgRW5jb2RlZEpTVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZSopIFdURl9JTlRFUk5BTDsKIAotdm9p
ZCogSklUX09QRVJBVElPTiBjb21waWxlRlRMTGF6eVNsb3dQYXRoKENhbGxGcmFtZSosIHVuc2ln
bmVkKSBXVEZfSU5URVJOQUw7Cit2b2lkKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVG
VExMYXp5U2xvd1BhdGgoQ2FsbEZyYW1lKiwgdW5zaWduZWQpIFdURl9JTlRFUk5BTDsKIAogfSAv
LyBleHRlcm4gIkMiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2xvd1BhdGhDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhD
YWxsLmNwcAppbmRleCA0Y2M2ZWRlMzU4ZmNiZjRkMjk0OTRhNGU2Zjg2NGU1ODU4YTIyZDQ1Li4w
YzcwYzEwYzI4YWExZWI2NzMxYWUxM2M0MDAzYWRkNzc3NDEyYzQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0aENhbGwuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAg
U2xvd1BhdGhDYWxsIFNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKFZNJiB2bSwgRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPgogICAgIG1faml0LmFkZExpbmtUYXNrKAogICAgICAgICBb
cmVzdWx0LCAmdm1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CiAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRodW5rID0KLSAgICAgICAgICAgICAg
ICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5rKHJlc3VsdC5rZXkoKSk7CisgICAg
ICAgICAgICAgICAgdm0uZnRsVGh1bmtzLT5nZXRTbG93UGF0aENhbGxUaHVuayh2bSwgcmVzdWx0
LmtleSgpKTsKIAogICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKHJlc3VsdC5jYWxsKCksIENv
ZGVMb2NhdGlvbkxhYmVsPE9wZXJhdGlvblB0clRhZz4odGh1bmsucmV0YWdnZWRDb2RlPE9wZXJh
dGlvblB0clRhZz4oKSkpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcAppbmRleCBmYTliZmM3MGI2Y2U4ZTllMzJlMzU2ZGExNTIxZGU3OWFmMDA3MjVl
Li5lNDI5NDUzNzM4MWNmNjkxYmVjNjJmMGUxYWZiYWU5YmRkZGU0ZGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCkBAIC04Niw2ICs4Niw3IEBAIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyaWNHZW5lcmF0aW9uVGh1bmtH
ZW5lcmF0b3IoCiAgICAgaml0LnBlZWsoCiAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwK
ICAgICAgICAgKHN0YWNrTWlzYWxpZ25tZW50IC0gTWFjcm9Bc3NlbWJsZXI6OnB1c2hUb1NhdmVC
eXRlT2Zmc2V0KCkpIC8gc2l6ZW9mKHZvaWQqKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2Fs
bChPcGVyYXRpb25QdHJUYWcpOwogCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSB3YW50IHRvIG1h
a2UgYSB0YWlsIGNhbGwgdG8gd2hhdCB3YXMgcmV0dXJuZWQgdG8gdXMgaW4gdGhlCkBAIC0xMzIs
MTQgKzEzMywxNCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4
aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewogICAgIHVuc2lnbmVkIGV4dHJh
UG9wc1RvUmVzdG9yZSA9IDA7CiAgICAgcmV0dXJuIGdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5l
cmF0b3IoCi0gICAgICAgIHZtLCBjb21waWxlRlRMT1NSRXhpdCwgT1NSRXhpdFB0clRhZywgIkZU
TCBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rIiwgZXh0cmFQb3BzVG9SZXN0b3JlLCBGcmFtZUFu
ZFN0YWNrQWRqdXN0bWVudFJlcXVpcmVtZW50OjpOZWVkZWQpOworICAgICAgICB2bSwgb3BlcmF0
aW9uQ29tcGlsZUZUTE9TUkV4aXQsIE9TUkV4aXRQdHJUYWcsICJGVEwgT1NSIGV4aXQgZ2VuZXJh
dGlvbiB0aHVuayIsIGV4dHJhUG9wc1RvUmVzdG9yZSwgRnJhbWVBbmRTdGFja0FkanVzdG1lbnRS
ZXF1aXJlbWVudDo6TmVlZGVkKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBsYXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewog
ICAgIHVuc2lnbmVkIGV4dHJhUG9wc1RvUmVzdG9yZSA9IDE7CiAgICAgcmV0dXJuIGdlbmVyaWNH
ZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoCi0gICAgICAgIHZtLCBjb21waWxlRlRMTGF6eVNsb3dQ
YXRoLCBKSVRTdHViUm91dGluZVB0clRhZywgIkZUTCBsYXp5IHNsb3cgcGF0aCBnZW5lcmF0aW9u
IHRodW5rIiwgZXh0cmFQb3BzVG9SZXN0b3JlLCBGcmFtZUFuZFN0YWNrQWRqdXN0bWVudFJlcXVp
cmVtZW50OjpOb3ROZWVkZWQpOworICAgICAgICB2bSwgb3BlcmF0aW9uQ29tcGlsZUZUTExhenlT
bG93UGF0aCwgSklUU3R1YlJvdXRpbmVQdHJUYWcsICJGVEwgbGF6eSBzbG93IHBhdGggZ2VuZXJh
dGlvbiB0aHVuayIsIGV4dHJhUG9wc1RvUmVzdG9yZSwgRnJhbWVBbmRTdGFja0FkanVzdG1lbnRS
ZXF1aXJlbWVudDo6Tm90TmVlZGVkKTsKIH0KIAogc3RhdGljIHZvaWQgcmVnaXN0ZXJDbG9iYmVy
Q2hlY2soQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFJlZ2lzdGVyU2V0IGRvbnRDbG9iYmVyKQpAQCAt
MTcwLDcgKzE3MSw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKEFzc2VtYmx5
SGVscGVycyYgaml0LCBSZWdpc3RlclNldCBkb250Q2xvYmJlcikKICAgICB9CiB9CiAKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0
b3IoY29uc3QgU2xvd1BhdGhDYWxsS2V5JiBrZXkpCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgU2xv
d1BhdGhDYWxsS2V5JiBrZXkpCiB7CiAgICAgQXNzZW1ibHlIZWxwZXJzIGppdChudWxscHRyKTsK
ICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwpAQCAtMjAxLDYgKzIwMiw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3Io
Y29uc3QgU2xvd1BhdGhDCiAgICAgCiAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9u
QXJnR1BSMCwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlciwga2V5Lm9mZnNldCgpKSk7CisgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKICAgICAKICAgICByZWdpc3RlckNsb2JiZXJDaGVjayhqaXQsIGtleS5hcmd1bWVu
dFJlZ2lzdGVycygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmgKaW5kZXgg
NzE4NGRhMTg5NTQ2MGM5OGJhNjU2YTUyOTE5YjhiM2RlNDVkNzJkYy4uNGYwYjEyOTA5Y2FjZDQy
MjQ1ZDkzNzRmZDE0Mzg0ZThhYzA0NzE1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRo
dW5rcy5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBGVEwgewogCiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3Io
Vk0mKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbGF6eVNsb3dQYXRo
R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNJik7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKGNvbnN0IFNsb3dQYXRoQ2Fs
bEtleSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENh
bGxUaHVua0dlbmVyYXRvcihWTSYsIGNvbnN0IFNsb3dQYXRoQ2FsbEtleSYpOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXlUeXBlQXJndW1lbnQ+CiBzdHJ1Y3QgVGh1bmtNYXAgewpAQCAtNTQsMTMg
KzU0LDEzIEBAIHN0cnVjdCBUaHVua01hcCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1hcFR5cGUs
IHR5cGVuYW1lIEdlbmVyYXRvclR5cGU+CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IGdlbmVyYXRlSWZOZWNlc3NhcnkoCi0gICAgTWFwVHlwZSYgbWFwLCBjb25zdCB0eXBl
bmFtZSBNYXBUeXBlOjpLZXlUeXBlJiBrZXksIEdlbmVyYXRvclR5cGUgZ2VuZXJhdG9yKQorICAg
IFZNJiB2bSwgTWFwVHlwZSYgbWFwLCBjb25zdCB0eXBlbmFtZSBNYXBUeXBlOjpLZXlUeXBlJiBr
ZXksIEdlbmVyYXRvclR5cGUgZ2VuZXJhdG9yKQogewogICAgIHR5cGVuYW1lIE1hcFR5cGU6OlRv
VGh1bmtNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtYXAubV90b1RodW5rLmZpbmQoa2V5KTsKICAgICBp
ZiAoaXRlciAhPSBtYXAubV90b1RodW5rLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+dmFs
dWU7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJlc3VsdCA9
IGdlbmVyYXRvcihrZXkpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gcmVzdWx0ID0gZ2VuZXJhdG9yKHZtLCBrZXkpOwogICAgIG1hcC5tX3RvVGh1bmsuYWRkKGtl
eSwgcmVzdWx0KTsKICAgICBtYXAubV9mcm9tVGh1bmsuYWRkKHJlc3VsdC5jb2RlKCksIGtleSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTc5LDEwICs3OSw5IEBAIGNsYXNzIFRodW5rcyB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGh1bmtzKTsKIHB1YmxpYzoKICAgICBUaHVua3MoKSA9
IGRlZmF1bHQ7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZXRT
bG93UGF0aENhbGxUaHVuayhjb25zdCBTbG93UGF0aENhbGxLZXkmIGtleSkKKyAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdldFNsb3dQYXRoQ2FsbFRodW5rKFZNJiB2
bSwgY29uc3QgU2xvd1BhdGhDYWxsS2V5JiBrZXkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2Vu
ZXJhdGVJZk5lY2Vzc2FyeSgKLSAgICAgICAgICAgIG1fc2xvd1BhdGhDYWxsVGh1bmtzLCBrZXks
IHNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRlSWZO
ZWNlc3Nhcnkodm0sIG1fc2xvd1BhdGhDYWxsVGh1bmtzLCBrZXksIHNsb3dQYXRoQ2FsbFRodW5r
R2VuZXJhdG9yKTsKICAgICB9CiAKICAgICBTbG93UGF0aENhbGxLZXkga2V5Rm9yU2xvd1BhdGhD
YWxsVGh1bmsoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFRodW5rUHRyVGFnPiBwdHIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmgKaW5kZXgg
MTFmN2I4YTJhMzA1OThiYTM1YTdiNGZlNTA5ODQyODU0YWRjYTI0YS4uZTZhMmVjNDJkOGVjNWUx
MmZmMGVlNDQ1YWE2ZDZjNzlkM2JkZjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaApAQCAtODEsNiArODEsMTcgQEAgQUxXQVlTX0lO
TElORSBzdGF0aWMgdm9pZCBhc3NlcnRTdGFja1BvaW50ZXJJc0FsaWduZWQoKQogI2VuZGlmCiB9
CiAKK2NsYXNzIFNsb3dQYXRoRnJhbWVUcmFjZXIgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJ
TkUgU2xvd1BhdGhGcmFtZVRyYWNlcihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGNhbGxGcmFtZSk7CisgICAgICAgIEFTU0VSVChyZWludGVycHJl
dF9jYXN0PHZvaWQqPihjYWxsRnJhbWUpIDwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odm0udG9w
RW50cnlGcmFtZSkpOworICAgICAgICBhc3NlcnRTdGFja1BvaW50ZXJJc0FsaWduZWQoKTsKKyAg
ICAgICAgdm0udG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOworICAgIH0KK307CisKIGNsYXNzIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB7CiBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTkyLDQgKzEw
MywzNSBAQCBjbGFzcyBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgewogICAgIH0KIH07CiAKK2NsYXNz
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHsKK3B1YmxpYzoKKyAgICBBTFdB
WVNfSU5MSU5FIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyKFZNJiB2bSwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICA6IG1fdm0o
dm0pCisjZW5kaWYKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgICAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICAg
ICAgQVNTRVJUKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxGcmFtZSkgPCByZWludGVycHJl
dF9jYXN0PHZvaWQqPih2bS50b3BFbnRyeUZyYW1lKSk7CisgICAgICAgIGFzc2VydFN0YWNrUG9p
bnRlcklzQWxpZ25lZCgpOworI2lmIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpCisgICAgICAg
IC8vIFdoZW4gZGVidWdnaW5nIG1vZGUsIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIGVudmly
b25tZW50IGFsc28gcHV0cyBmcmFtZSBwb2ludGVyIHRvIHZtLnRvcENhbGxGcmFtZS4KKyAgICAg
ICAgLy8gQW5kIHdlIGNhbiBlbnN1cmUgaXQgaXMgd29ya2luZyBieSBjb21wYXJpbmcgd2l0aCB0
aGUgcmVzdWx0IG9mIF9fYnVpbHRpbl9mcmFtZV9hZHJlc3MuCisgICAgICAgIEFTU0VSVCh2bS50
b3BDYWxsRnJhbWUgPT0gY2FsbEZyYW1lKTsKKyAgICAgICAgdm0udG9wQ2FsbEZyYW1lID0gY2Fs
bEZyYW1lOworI2VuZGlmCisgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIH5KSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlcigpCisgICAgeworICAgICAgICAvLyBGaWxs
IHZtLnRvcENhbGxGcmFtZSB3aXRoIGludmFsaWQgdmFsdWUgd2hlbiBsZWF2aW5nIGZyb20gSklU
IG9wZXJhdGlvbiBmdW5jdGlvbnMuCisgICAgICAgIG1fdm0udG9wQ2FsbEZyYW1lID0gYml0d2lz
ZV9jYXN0PENhbGxGcmFtZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHgwYmFkYmVlZjBiYWRi
ZWVmVUxMKSk7CisgICAgfQorCisgICAgVk0mIG1fdm07CisjZW5kaWYKK307CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCmluZGV4IDNjZTI5YmQ0ZmM3NzBiOTc1NjMxMDVmMjZjODZlOGJiYjkwYTY5MDkuLjFjYWMx
YzQyMWRhOGI3YzY0YjkyMjBmYTliZjMyY2M0ZmRhNjA1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTI1Miw2ICsyNTIsNyBAQCB2b2lk
IEFzc2VtYmx5SGVscGVyczo6Y2FsbEV4Y2VwdGlvbkZ1enooVk0mIHZtKQogICAgIC8vIFNldCB1
cCBvbmUgYXJndW1lbnQuCiAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eikpLCBHUFJJbmZvOjpu
b25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOworICAgIHByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
ICAgICBjYWxsKEdQUkluZm86Om5vblByZXNlcnZlZE5vblJldHVybkdQUiwgT3BlcmF0aW9uUHRy
VGFnKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVyczsgKytpKSB7CkBAIC05MzEsNiArOTMyLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmRlYnVnQ2FsbChWTSYgdm0sIFZfRGVidWdPcGVyYXRpb25fRVBQIGZ1bmN0aW9uLCB2b2lkKiBh
cmcKICNlbHNlCiAjZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgog
I2VuZGlmCisgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihmdW5jdGlvbikpLCBzY3JhdGNo
KTsKICAgICBjYWxsKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDI3NjBlZDZjNzJlMmVkMWYzMTUw
YzNmZjk5ZDE1NDAwNTU5MDIxNDYuLmJjNTk1MzU0MTBmYTUwYmJlOWU5MmY5Y2Q0MzZjODEyYjk0
ZTVmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApA
QCAtNjUsNiArNjUsMTQgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICBWTSYgdm0oKSB7IHJldHVybiBtX2NvZGVCbG9jay0+dm0oKTsgfQogICAg
IEFzc2VtYmxlclR5cGVfVCYgYXNzZW1ibGVyKCkgeyByZXR1cm4gbV9hc3NlbWJsZXI7IH0KIAor
ICAgIHZvaWQgcHJlcGFyZUNhbGxPcGVyYXRpb24oVk0mIHZtKQorICAgIHsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHZtKTsKKyNpZiAhVVNFKEJVSUxUSU5fRlJBTUVfQUREUkVTUykgfHwgIUFTU0VS
VF9ESVNBQkxFRAorICAgICAgICBzdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
JnZtLnRvcENhbGxGcmFtZSk7CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lkIGNoZWNrU3RhY2tQ
b2ludGVyQWxpZ25tZW50KCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgY2hlY2sgaXMgYm90aCB1
bm5lZWRlZCBhbmQgaGFyZGVyIHRvIHdyaXRlIGNvcnJlY3RseSBmb3IgQVJNNjQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRleCBiNGI0Njk3M2I5MTQzZDQy
NGQ0ZTQzMWFlNDJiYTRlNDNjM2MzMjYzLi44NDg1YTlmYmQ2ODNkYmVmNjU4ZjY3MDg4MTNmNzU4
ZDVkZGI5OGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3Bw
CkBAIC02MSw2ICs2MSw3IEBAIHZvaWQgQ0NhbGxIZWxwZXJzOjplbnN1cmVTaGFkb3dDaGlja2Vu
UGFja2V0KFZNJiB2bSwgR1BSUmVnIHNoYWRvd1BhY2tldCwgR1BSUmVnCiAgICAgbG9hZFB0cihB
ZGRyZXNzKHNjcmF0Y2gxTm9uQXJnR1BSKSwgc2hhZG93UGFja2V0KTsKICAgICBKdW1wIG9rID0g
YnJhbmNoUHRyKEJlbG93LCBzaGFkb3dQYWNrZXQsIFRydXN0ZWRJbW1QdHIoc2hhZG93Q2hpY2tl
bi0+bG9nRW5kKCkpKTsKICAgICBzZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Qcm9j
ZXNzU2hhZG93Q2hpY2tlbkxvZyk+KFRydXN0ZWRJbW1QdHIoJnZtKSk7CisgICAgcHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxvZykpLCBzY3Jh
dGNoMU5vbkFyZ0dQUik7CiAgICAgY2FsbChzY3JhdGNoMU5vbkFyZ0dQUiwgT3BlcmF0aW9uUHRy
VGFnKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2hhZG93Q2hpY2tlbi0+YWRkcmVzc09mTG9n
Q3Vyc29yKCkpLCBzY3JhdGNoMU5vbkFyZ0dQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuaAppbmRleCBkODEwZDIzNDc4N2U1ODlmY2E2NmViY2I0YTQ4YjI0ZjkzZGNk
ZWQxLi4wMTVmMDNiNzViNjdjOWY3NTdjYmU3NDA0ZDRlMWE1NjkzNGEyODFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTg0LDE1ICs4NCw2IEBAIGNsYXNz
IENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBwb2tlKEdQ
UkluZm86Om5vbkFyZ0dQUjAsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgYXJndW1lbnRJbmRleCAt
IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpOwogICAgIH0KIAotICAgIHZvaWQg
cHJlcGFyZUNhbGxPcGVyYXRpb24oVk0mIHZtKQotICAgIHsKLSNpZiBVU0UoQlVJTFRJTl9GUkFN
RV9BRERSRVNTKQotICAgICAgICBVTlVTRURfUEFSQU0odm0pOwotI2Vsc2UKLSAgICAgICAgc3Rv
cmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwotI2Vu
ZGlmCi0gICAgfQotCiBwcml2YXRlOgogCiAgICAgdGVtcGxhdGU8dW5zaWduZWQgTnVtYmVyT2ZS
ZWdpc3RlcnMsIHR5cGVuYW1lIFJlZ1R5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCAzODA5NDYxYWJlNTI3NzU1N2FlMWE3MmZlMTY3YWNhY2Mx
YWIzOWZiLi45YzY3NmYxNTA0NjU5YmY0MDE4ZGEzODI0ZjI2YzllMjkwYzU4MmM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwNywxNyArMTA3
LDE3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAvLyBXZSBwYXNzIGluIG91ciBvd24gY29kZSBi
bG9jaywgYmVjYXVzZSB0aGUgY2FsbGZyYW1lIGhhc24ndCBiZWVuIHBvcHVsYXRlZC4KICAgICBW
TSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBjYWxsRnJhbWUtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSh2bSwgY29k
ZUJsb2NrKTsKICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLCBzY29wZSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2
bSwgY2FsbEZyYW1lKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKHZtLCBjYWxsRnJhbWUsIENvZGVGb3JDYWxsKTsKQEAgLTE0
NSw3ICsxNDUsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJp
dHlDaGVjayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgaW50MzJfdCBtaXNzaW5nQXJnQ291bnQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3Iodm0sIGNhbGxGcmFtZSwgQ29kZUZvckNvbnN0cnVjdCk7CkBAIC0xNjIsNyArMTYyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwog
ICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCkBAIC0xNzgsNyArMTc4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0xOTIsNyAr
MTkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlk
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIApAQCAtMjEz
LDcgKzIxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJ
ZERpcmVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAg
c3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CkBAIC0yMzEsNyArMjMxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0R2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmEKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBJZGVudGlmaWVyIGlkZW50
ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIApAQCAtMjQ4LDcgKzI0OCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAKQEAgLTI3MSw3ICsyNzEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydQogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgCkBAIC0y
OTEsNyArMjkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICAKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CkBAIC0zMDksNyArMzA5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamUKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCiAgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0zMzEsNyArMzMx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkV2l0aFRo
aXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7
CiAKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKQEAgLTM0OSw3ICszNDksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc0dl
bmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsbwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIAog
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwpAQCAtMzY1LDcg
KzM2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdp
dGhUaGlzT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2Up
OwpAQCAtMzg4LDcgKzM4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW5CeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjCiAKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwpAQCAtNDE1LDcgKzQx
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlkR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIElk
ZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwpAQCAtNDQwLDcg
KzQ0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlkT3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwpAQCAtNDY5
LDcgKzQ2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlCiAgICAgCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENv
bW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZSwgSlNWYWx1ZTo6ZGVj
b2RlKGtleSkpKSk7CiB9CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXIKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHN0dWJJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgIApAQCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAK
ICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAKQEAgLTUxNiw3ICs1MTYs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdAogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgCkBA
IC01MzQsNyArNTM0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3ROb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0
cnVlOwogICAgIApAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCB1aWQpOwpAQCAtNTgzLDcgKzU4Myw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKQEAgLTYxNCw3ICs2MTQsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYgogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwpAQCAtNjQ0LDcgKzY0NCw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCiAgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBAIC04NTksNyAr
ODU5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwpA
QCAtOTQ4LDcgKzk0OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZVZhbHVlKTsKQEAgLTk3Miw3ICs5NzIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3Jp
cHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CkBAIC05ODYsNyArOTg2LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJh
c2VWYWx1ZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFN1YnNjcmlwdCk7CkBAIC0xMjE1LDcgKzEyMTUsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Db21wYXJlTGVzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcmV0dXJuIGpzTGVz
czx0cnVlPihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KQEAgLTEyMjQsNyArMTIyNCw3IEBAIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJl
dHVybiBqc0xlc3NFcTx0cnVlPihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KQEAgLTEyMzMsNyArMTIzMyw3
IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAogICAgIHJldHVybiBqc0xlc3M8ZmFsc2U+KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcDIpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSkpOwogfQpAQCAtMTI0
Miw3ICsxMjQyLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZWF0
ZXJFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGpzTGVzc0VxPGZhbHNlPihnbG9iYWxPYmplY3Qs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
KTsKIH0KQEAgLTEyNTEsNyArMTI1MSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbXBhcmVFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplcXVhbFNs
b3dDYXNlSW5saW5lKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQpAQCAtMTI2NCw3ICsxMjY0LDcgQEAgc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2UKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgYm9vbCByZXN1bHQgPSBhc1N0cmluZyhsZWZ0KS0+ZXF1YWwoZ2xvYmFsT2JqZWN0LCBhc1N0
cmluZyhyaWdodCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICBKU1ZhbHVlIHNyYzEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNW
YWx1ZSBzcmMyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwpAQCAtMTI5MCw3ICsxMjkw
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhQ
cm9maWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXlOZWdhdGl2ZUlu
ZGV4ZWQoZ2xvYmFsT2JqZWN0LCBwcm9maWxlLCB2YWx1ZXMsIHNpemUpKTsKIH0KIApAQCAtMTI5
OCw3ICsxMjk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdB
cnJheVdpdGhTaXplQW5kUHJvZmlsZShKU0dsb2JhbE9iamVjdCoKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgc2l6ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHNp
emUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1
aXJrKGdsb2JhbE9iamVjdCwgcHJvZmlsZSwgc2l6ZVZhbHVlKSk7CiB9CkBAIC0xMzIwLDcgKzEz
MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9u
KFZNKiB2bVBvaW50ZXIsIEpTU2NvcGUqIHNjb3BlLAogewogICAgIFZNJiB2bSA9ICp2bVBvaW50
ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIHJldHVybiBuZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPih2bSwgc2NvcGUsIGZ1bmN0
aW9uRXhlY3V0YWJsZSwgZmFsc2UpOwogfQogCkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0YwogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdG
dW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPih2bSwgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
dHJ1ZSk7CiB9CiAKQEAgLTEzMzYsNyArMTMzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oVk0qIHZtUG9pbnRlciwgSlNTY29w
CiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uQ29tbW9uPEpT
R2VuZXJhdG9yRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7
CiB9CiAKQEAgLTEzNDQsNyArMTM0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jCiB7CiAg
ICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJh
dG9yRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KIApA
QCAtMTM1Miw3ICsxMzUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdBc3luY0Z1bmN0aW9uKFZNKiB2bVBvaW50ZXIsIEpTU2NvcGUqIHMKIHsKICAgICBWTSYg
dm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICByZXR1cm4gbmV3RnVuY3Rpb25Db21tb248SlNBc3luY0Z1bmN0aW9u
Pih2bSwgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOwogfQogCkBAIC0xMzYwLDcg
KzEzNjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5j
RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpbwogewogICAgIFZNJiB2bSA9ICp2bVBv
aW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIHJldHVybiBuZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KHZtLCBzY29w
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KIApAQCAtMTM2OCw3ICsxMzY4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0dlbmVyYXRvckZ1
bmN0aW9uKFZNKiB2bVBvaW50ZXIsIEoKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1
cm4gbmV3RnVuY3Rpb25Db21tb248SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uPih2bSwgc2NvcGUs
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOwogfQogICAgIApAQCAtMTM3Niw3ICsxMzc2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmUKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBy
ZXR1cm4gbmV3RnVuY3Rpb25Db21tb248SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uPih2bSwgc2Nv
cGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAgICAgCkBAIC0xMzg0LDcgKzEzODQs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKICAgICBKU0Z1bmN0aW9uKiBmdW5jID0ganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jQ2Vs
bCk7CiAgICAgSlNWYWx1ZSBuYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWROYW1lKTsKQEAg
LTEzOTUsNyArMTM5NSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmpl
Y3QoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0mIHZtID0g
KnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIHN0cnVjdHVyZSk7
CiB9CkBAIC0xNDA0LDcgKzE0MDQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3UHJvbWlzZShWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBW
TSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU1Byb21pc2U6OmNyZWF0ZSh2bSwgc3RydWN0
dXJlKTsKIH0KQEAgLTE0MTMsNyArMTQxMyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdJbnRlcm5hbFByb21pc2UoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1CiB7
CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gSlNJbnRlcm5hbFByb21pc2U6OmNy
ZWF0ZSh2bSwgc3RydWN0dXJlKTsKIH0KQEAgLTE0MjIsNyArMTQyMiw3IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3IoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gSlNHZW5l
cmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKIH0KQEAgLTE0MzEsNyArMTQzMSw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0dlbmVyYXRvcihWTSogdm1Qb2lu
dGVyLCBTdHJ1Y3R1cmUqIHN0cnVjCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1
cm4gSlNBc3luY0dlbmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogfQpAQCAtMTQ0MSw3
ICsxNDQxLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIHIKICAgICBTdXBlclNhbXBsZXJTY29w
ZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIFJlZ0V4cCogcmVnZXhwID0gc3RhdGljX2Nhc3Q8UmVnRXhwKj4ocmVnZXhwUHRyKTsK
ICAgICBBU1NFUlQocmVnZXhwLT5pc1ZhbGlkKCkpOwpAQCAtMTQ1Niw3ICsxNDU2LDcgQEAgVW51
c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxlVHJhcHMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEFTU0VS
VCh2bS5uZWVkVHJhcEhhbmRsaW5nKCkpOwogICAgIHZtLmhhbmRsZVRyYXBzKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NjYsNyArMTQ2Niw3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhWTSogdm1Qb2ludGVyLCBpbnQzMl90
IGRlYnVnSG9va1R5cGUpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICB2bS5pbnRlcnBy
ZXRlci0+ZGVidWcoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tUeXBlPihkZWJ1Z0hv
b2tUeXBlKSk7CiB9CkBAIC0xNDgyLDcgKzE0ODIsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRl
YwogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRl
eCA9IEJ5dGVjb2RlSW5kZXg6OmZyb21CaXRzKGJ5dGVjb2RlSW5kZXhCaXRzKTsKIAogICAgIC8v
IERlZmVyIEdDIGZvciBhIHdoaWxlIHNvIHRoYXQgaXQgZG9lc24ndCBydW4gYmV0d2VlbiB3aGVu
IHdlIGVudGVyIGludG8gdGhpcwpAQCAtMTcyOSw3ICsxNzI5LDcgQEAgY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goVk0qIHZtUG9pbnRlciwgdWludDMyX3Qg
Ynl0ZWNvZGUKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBCeXRlY29kZUluZGV4IGJ5dGVj
b2RlSW5kZXggPSBCeXRlY29kZUluZGV4Ojpmcm9tQml0cyhieXRlY29kZUluZGV4Qml0cyk7CiAK
ICAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+cmVwbGFjZW1lbnQoKTsKQEAgLTE3NTIsNyArMTc1Miw3IEBAIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlKFZNKiB2bVBv
aW50ZXIsIHVpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRl
Y29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleDo6ZnJvbUJpdHMoYnl0ZWNvZGVJbmRleEJpdHMpOwog
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpAQCAt
MTc4Niw3ICsxNzg2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmEKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSBhcnJheVZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRBcnJheVZhbHVlKTsKICAgICBBU1NFUlQoaXNKU0FycmF5KGFycmF5VmFsdWUp
KTsKQEAgLTE4MTYsNyArMTgxNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRH
ZXR0ZXJCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgQVNTRVJUKG9iamVjdCAmJiBvYmplY3QtPmlz
T2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gb2JqZWN0LT5nZXRPYmplY3QoKTsK
QEAgLTE4MjksNyArMTgyOSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRTZXR0
ZXJCeUlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgQVNTRVJUKG9iamVjdCAmJiBvYmplY3QtPmlzT2Jq
ZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gb2JqZWN0LT5nZXRPYmplY3QoKTsKQEAg
LTE4NDIsNyArMTg0Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHB1dEFjY2Vzc29yQnlWYWwoZ2xvYmFsT2JqZWN0LCBh
c09iamVjdChiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpLCBhdHRyaWJ1
dGUsIGFzT2JqZWN0KGdldHRlciksIEFjY2Vzc29yVHlwZTo6R2V0dGVyKTsKIH0KQEAgLTE4NTEs
NyArMTg1MSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRTZXR0ZXJCeVZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKIAogICAgIHB1dEFjY2Vzc29yQnlWYWwoZ2xvYmFsT2JqZWN0LCBhc09iamVj
dChiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpLCBhdHRyaWJ1dGUsIGFz
T2JqZWN0KHNldHRlciksIEFjY2Vzc29yVHlwZTo6U2V0dGVyKTsKIH0KQEAgLTE4NjEsNyArMTg2
MSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIEFTU0VSVChvYmplY3QgJiYgb2JqZWN0LT5pc09iamVjdCgpKTsKICAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KG9iamVjdCk7CkBAIC0xODc4LDcgKzE4Nzgs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKICAgICBBU1NFUlQob2JqZWN0ICYmIG9iamVjdC0+aXNPYmplY3QoKSk7CiAgICAgSlNP
YmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChvYmplY3QpOwpAQCAtMTg5NSw3ICsxODk1LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGludDMyX3Qgc2NvcGUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCiAgICAgSlNTY29wZSogc2NvcGUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoc2NvcGVSZWcp
LlJlZ2lzdGVyOjpzY29wZSgpOwogICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihzY29wZVJlZykg
PSBzY29wZS0+bmV4dCgpOwpAQCAtMTkwNSw3ICsxOTA1LDcgQEAgaW50MzJfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW4KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgaGFzSW5zdGFu
Y2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkSGFzSW5zdGFuY2UpOwpAQCAtMjA2OCw3
ICsyMDY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZh
bEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KTsKIApAQCAtMjA4MCw3ICsyMDgwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTIxMDEsNyArMjEwMSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5RGVmYXVsdChKU0dsb2Jh
bE9iamVjdCoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKICAgICBKU1ZhbHVlIHN1YnNj
cmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICAKQEAgLTIxNDks
NyArMjE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5R2VuZXJpYyhKU0dsb2JhbE9iamVjdCoKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KTsKICAgICAKQEAgLTIxNzAsNyArMjE3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwpAQCAtMjIyMCw3ICsyMjIwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeUlkSlNSZXN1bHQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGRlbGV0ZUJ5SWQoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIHZtLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLCB1aWQpKSk7CiB9CiAKQEAg
LTIyMjgsNyArMjIyOCw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5
SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCk7CiB9CiAKQEAg
LTIyNjAsNyArMjI2MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVsZXRlQnlWYWxKU1Jlc3VsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihk
ZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KSkpKTsKIH0KIApAQCAtMjI2
OCw3ICsyMjY4LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEoKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBkZWxldGVCeVZhbChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkS2V5KSk7CiB9CiAKQEAgLTIyNzYsNyArMjI3Niw3IEBAIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQ2VsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gSlNWYWx1
ZTo6ZGVjb2RlKG9iamVjdFZhbHVlKS50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtMjI5MSw3
ICsyMjkxLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGVP
YmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIEpTU2NvcGUqIGN1cnJlbnRTY29wZSA9IGpzQ2FzdDxKU1Njb3BlKj4o
Y3VycmVudFNjb3BlQ2VsbCk7CiAgICAgcmV0dXJuIEpTV2l0aFNjb3BlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgY3VycmVudFNjb3BlLCBvYmplY3QpOwogfQpAQCAtMjMwMCw3ICsyMzAwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbnN0YW5jZU9mKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBKU1ZhbHVlIHByb3RvID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm90byk7CiAgICAgCkBA
IC0yMzEyLDcgKzIzMTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluc3RhbmNlT2ZHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFByb3RvKTsKICAgICAKQEAgLTIzMjYsNyArMjMyNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFByb3RvKTsKQEAgLTIzNDUsNyArMjM0NSw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25TaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gc2l6ZUZyYW1lRm9y
Rm9yd2FyZEFyZ3VtZW50cyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgdm0sIG51bVVzZWRTdGFj
a1Nsb3RzKTsKIH0KIApAQCAtMjM1Myw3ICsyMzUzLDcgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYXJndW1lbnRz
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudHMpOwogICAgIHJldHVybiBzaXplRnJh
bWVGb3JWYXJhcmdzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgYXJndW1lbnRzLCBudW1V
c2VkU3RhY2tTbG90cywgZmlyc3RWYXJBcmdPZmZzZXQpOwogfQpAQCAtMjM2Miw3ICsyMzYyLDcg
QEAgQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldHVwRm9yd2FyZEFyZ3VtZW50
c0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIHNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCBuZXdDYWxsRnJhbWUsIGxlbmd0aCk7CiAgICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKIH0KQEAg
LTIzNzEsNyArMjM3MSw3IEBAIENhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1
cFZhcmFyZ3NGcmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQXJndW1lbnRzKTsKICAgICBzZXR1cFZhcmFyZ3NGcmFtZShnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0LCBs
ZW5ndGgpOwogICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CkBAIC0yMzgxLDcgKzIzODEsNyBAQCBj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1Zh
bHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKQEAgLTI0MDcsNyArMjQwNyw3
IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlU
eXBlKFZNKiB2bVBvaW50ZXIsIEVuY29kZWRKCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
SlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSk7CiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogCkBAIC0yNDI3LDcgKzI0Mjcs
NyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaFN0cmluZ1dpdGhVbmtub3du
S2V5VHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSk7CiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjQ1Miw3ICsyNDUyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRGcm9tU2NvcGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpAQCAtMjQ5NCw3
ICsyNDk0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2NvcGUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSW5zdHIKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpA
QCAtMjU0OCw3ICsyNTQ4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGUKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEV4Y2VwdGlvblZhbHVlKTsKQEAgLTI1NjIsNyArMjU2Miw3IEBAIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvSGF2ZVByb3BlcnR5U3RvcmFnZVdp
dGhJbml0aWFsCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQoIW9iamVjdC0+
c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgQnV0dGVyZmx5KiByZXN1
bHQgPSBvYmplY3QtPmFsbG9jYXRlTW9yZU91dE9mTGluZVN0b3JhZ2Uodm0sIDAsIGluaXRpYWxP
dXRPZkxpbmVDYXBhY2l0eSk7CkBAIC0yNTc0LDcgKzI1NzQsNyBAQCBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2UoVk0q
IHZtUG9pbgogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgQnV0dGVyZmx5KiByZXN1bHQg
PSBvYmplY3QtPmFsbG9jYXRlTW9yZU91dE9mTGluZVN0b3JhZ2Uodm0sIG9iamVjdC0+c3RydWN0
dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U2l6ZSk7CiAgICAgb2JqZWN0LT5udWtl
U3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCBvYmplY3QtPnN0cnVjdHVyZUlEKCksIHJlc3Vs
dCk7CkBAIC0yNTg1LDcgKzI1ODUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT1NS
V3JpdGVCYXJyaWVyKFZNKiB2bVBvaW50ZXIsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBWTSYgdm0g
PSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjZWxsKTsKIH0KIApAQCAtMjU5Myw3
ICsyNTkzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQ
YXRoKFZNKiB2bVBvaW50ZXIsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2lu
dGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICB2bS5oZWFwLndyaXRlQmFycmllclNsb3dQYXRoKGNlbGwpOwogfQogCkBAIC0yNjAxLDcg
KzI2MDEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFu
ZGxlcihWTSogdm1Qb2ludGVyKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGdlbmVyaWNV
bndpbmQodm0sIGNhbGxGcmFtZSk7CiAgICAgQVNTRVJUKHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRo
cm93KTsKIH0KQEAgLTI2MTAsNyArMjYxMCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Mb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1lKFZNKiB2bVBvaW50ZXIpCiB7
CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgQVNTRVJUKGNhbGxGcmFtZS0+aXNTdGFja092ZXJm
bG93RnJhbWUoKSk7CiAgICAgQVNTRVJUKGpzQ2FzdDxFcnJvckluc3RhbmNlKj4odm0uZXhjZXB0
aW9uRm9ySW5zcGVjdGlvbigpLT52YWx1ZSgpLmFzQ2VsbCgpKS0+aXNTdGFja092ZXJmbG93RXJy
b3IoKSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgY2FsbEZyYW1lKTsKQEAgLTI2MjEsNyArMjYy
MSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25WTUhhbmRsZUV4Y2VwdGlvbihWTSog
dm1Qb2ludGVyKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGdlbmVyaWNVbndpbmQodm0s
IGNhbGxGcmFtZSk7CiB9CiAKQEAgLTI2MzQsNyArMjYzNCw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25FeGNlcHRpb25GdXp6KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHNjb3BlKTsKICNpZiBDT01QSUxFUihH
Q0NfQ09NUEFUSUJMRSkKQEAgLTI2NTUsNyArMjY1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQWRkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpKTsKIH0KIApAQCAtMjY2NCw3ICsyNjY0LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZFByb2ZpbGVkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvZmls
ZWRBZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSwgKmFyaXRoUHJvZmlsZSkpOwogfQogCkBAIC0yNjcyLDcgKzI2
NzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJv
ZmlsZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CkBAIC0y
Njk3LDcgKzI2OTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQWRkUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IGFkZElD
LT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKQEAgLTI3MDgsNyAr
MjcwOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
OwogICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwpAQCAtMjcy
OSw3ICsyNzI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZUFkZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDEpOwogICAgIEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIp
OwpAQCAtMjc2Nyw3ICsyNzY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZU11bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmMKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHVucHJvZmlsZWRNdWwoZ2xvYmFs
T2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsKIH0KQEAgLTI3NzYsNyArMjc3Niw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIHJldHVybiB1bnByb2ZpbGVkTXVsKGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5j
b2RlZE9wMik7CiB9CkBAIC0yNzg1LDcgKzI3ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIG5vbk9wdGltaXpl
VmFyaWFudCA9IG9wZXJhdGlvblZhbHVlTXVsTm9PcHRpbWl6ZTsKICAgICBpZiAoQXJpdGhQcm9m
aWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+YXJpdGhQcm9maWxlKCkpCkBAIC0yODAzLDcgKzI4
MDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlTXVsUHJv
ZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKICAgICByZXR1cm4gcHJvZmlsZWRN
dWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsK
QEAgLTI4MTMsNyArMjgxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVNdWxQcm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0g
bXVsSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwpAQCAtMjgz
Miw3ICsyODMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1
ZU11bFByb2ZpbGVkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCoKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCiAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtdWxJQy0+
YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CkBAIC0yODQ0LDcgKzI4
NDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1Zh
bHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwogCkBAIC0yODY2
LDcgKzI4NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
TmVnYXRlUHJvZmlsZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgSlNWYWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKICAg
ICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFMob3BlcmFuZCk7CkBAIC0yODkzLDcgKzI4OTMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoTmVnYXRlUHJvZmls
ZWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpTVmFs
dWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7CiAKQEAgLTI5Mjcs
NyArMjkyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhO
ZWdhdGVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAg
ICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwogCkBA
IC0yOTc4LDcgKzI5NzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIHVucHJvZmlsZWRTdWIoZ2xvYmFsT2JqZWN0
LCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsKIH0KIApAQCAtMjk4OCw3ICsyOTg4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAg
ICByZXR1cm4gcHJvZmlsZWRTdWIodm0sIGdsb2JhbE9iamVjdCwgZW5jb2RlZE9wMSwgZW5jb2Rl
ZE9wMiwgKmFyaXRoUHJvZmlsZSk7CiB9CkBAIC0yOTk3LDcgKzI5OTcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRv
IG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlU3ViTm9PcHRpbWl6ZTsKICAgICBp
ZiAoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCkpCkBA
IC0zMDE1LDcgKzMwMTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlU3ViTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gdW5wcm9maWxlZFN1YihnbG9iYWxPYmpl
Y3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIpOwogfQpAQCAtMzAyNCw3ICszMDI0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGcKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBzdWJJQy0+YXJpdGhQcm9maWxlKCk7CiAg
ICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CkBAIC0zMDQzLDcgKzMwNDMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplKEpT
R2xvYmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBcml0
aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NF
UlQoYXJpdGhQcm9maWxlKTsKQEAgLTMwNTQsNyArMzA1NCw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nKFZNKiB2bVBvaW50ZXIpCiB7CiAgICAg
Vk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRy
aWVzKHZtLCAiTG9nIEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lkZSBiYXNlbGluZSBKSVQiX3MpOwog
fQogCkBAIC0zMDYyLDcgKzMwNjIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJv
Y2Vzc1NoYWRvd0NoaWNrZW5Mb2coVk0qIHZtUG9pbnRlcikKIHsKICAgICBWTSYgdm0gPSAqdm1Q
b2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5zaGFkb3dDaGlja2VuKCkpOwogICAgIHZtLnNoYWRv
d0NoaWNrZW4oKS0+dXBkYXRlKHZtLCBjYWxsRnJhbWUpOwogfQpAQCAtMzA3MSw3ICszMDcxLDcg
QEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNoZWNrSWZFeGNlcHRpb25Jc1VuY2F0
Y2hhYmxlQW5kTm90aWZ5UHJvZmlsZXIoVk0KIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
ISFzY29wZS5leGNlcHRpb24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKaW5kZXggMGFkZGJmZjJlNDhlZWZlNjRiNWQwMjE1ZmQ2YjEzNjBmNzg3MDBiNy4u
MzdlODM2MTVkNDdmYTZkNTA0ZDg3ODYwZGE0N2NlZTg2ODI1YTRiZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE1Miw3ICsxNTIsNyBAQCB1c2luZyBE
X0pJVE9wZXJhdGlvbl9EID0gZG91YmxlKEpJVF9PUEVSQVRJT04gKikoZG91YmxlKTsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKFZNKikgV1RGX0lO
VEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRs
ZXJGcm9tQ2FsbGVyRnJhbWUoVk0qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVk1IYW5kbGVFeGNlcHRpb24oVk0qKSBXVEZfSU5URVJOQUw7Ci12b2lkIEpJVF9P
UEVSQVRJT04gdGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3Qq
KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092
ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7CiAKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihDb2RlQmxv
Y2sqKSBXVEZfSU5URVJOQUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFy
aXR5Q2hlY2soSlNHbG9iYWxPYmplY3QqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCBiNWVjOTdjOTQ0MzhiMjhmNjNiMGI5Yzk2YjFjZDIxZmY0
MDRjNWIxLi43ZGM0NmI1MTAyNTkzNWZkMjAwMWFkZjQ0YzFiZTA1OGE2MTY4ZmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBmdGxU
aHVua0F3YXJlUmVwYXRjaENhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVMb2NhdGlvbkNh
bGw8SlNJbnRlcm5hbFAKICAgICAgICAgYXV0byBzbG93UGF0aFRodW5rID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpJVFRodW5rUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHRh
cmdldC5yZXRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPEpJVFRodW5rUHRyVGFnPigpKTsKICAgICAg
ICAgRlRMOjpTbG93UGF0aENhbGxLZXkga2V5ID0gdGh1bmtzLmtleUZvclNsb3dQYXRoQ2FsbFRo
dW5rKHNsb3dQYXRoVGh1bmspOwogICAgICAgICBrZXkgPSBrZXkud2l0aENhbGxUYXJnZXQobmV3
Q2FsbGVlRnVuY3Rpb24pOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoY2Fs
bCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPih0aHVua3MuZ2V0U2xvd1BhdGhDYWxsVGh1
bmsoa2V5KS5yZXRhZ2dlZENvZGU8T3BlcmF0aW9uUHRyVGFnPigpKSk7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KHRodW5rcy5nZXRTbG93UGF0aENhbGxUaHVuayh2bSwga2V5KS5yZXRhZ2dlZENvZGU8T3BlcmF0
aW9uUHRyVGFnPigpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUo
RlRMX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cAppbmRleCA2YmJjNjY5NzFlZTMyZTcyZWM1ZGVlYjk1NmY1ZTg0NjRmMmVmYzc2Li40Njg2MTUw
ZGEzOTA4NjE4YWIyZWJhNjU5N2Y5MDYzMTcyMWVkN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0xMTczLDggKzExNzMsOSBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9u
Q2FsbEdlbmVyYXRvcihWTSYgdgogICAgIC8vIFRocm93IFN0YWNrIE92ZXJmbG93IGV4Y2VwdGlv
bgogICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2
bS50b3BFbnRyeUZyYW1lKTsKICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDMsIEpTQm91bmRGdW5jdGlvbjo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IEdQUkluZm86OnJlZ1QzKTsKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUodGhyb3dT
dGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspPihHUFJJbmZvOjpyZWdUMyk7Ci0gICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KHRocm93U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKSksIEdQUkluZm86Om5vbkFy
Z0dQUjApOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayk+KEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQucHJl
cGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuaykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBl
bWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25Q
dHJUYWcpOwogICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRh
Zyk7CiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNjBiNDlmOTExNjNmNTNj
NGQ0Nzg1YmQxMTQzZGE1ZDljZTA0NmFmNy4uNTc5OGQzMGI4YjU4NmI3MzRiOGZkODYwNDg4ODRm
ZGRlNzZiMDk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCkBAIC03OSw3ICs3OSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsg
XAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpOyBcCiAgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOyBcCi0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAorICAgIFNsb3dQYXRoRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSkKIAogI2lmbmRlZiBOREVCVUcKQEAgLTUzNiwxMCArNTM2LDEw
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogICAgIFZNJiB2bSA9IGNvZGVC
bG9jay0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIC8vIEl0J3Mgb2sgdG8gY3JlYXRlIHRoZSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
aGVyZSBiZWZvcmUgd2UKKyAgICAvLyBJdCdzIG9rIHRvIGNyZWF0ZSB0aGUgU2xvd1BhdGhGcmFt
ZVRyYWNlciBoZXJlIGJlZm9yZSB3ZQogICAgIC8vIGNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFt
ZSgpIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY2FsbGVkCiAgICAgLy8gYWZ0ZXIg
dGhlIGZyYW1lIGhhcyBiZWVuIHByb3B1bGF0ZWQgd2l0aCBhIHByb3BlciBDb2RlQmxvY2sgYW5k
IGNhbGxlZS4KLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAg
TExJTlRfU0VUX1BDX0ZPUl9TVFVCUygpOwogCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBzdGF0aWMg
U2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKENhbGxGcmFtZSogY2FsbGVlRnJhbWUs
IEpTVmFsdWUgY2FsbGVlLAogICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6OkpT
KTsKICAgICAKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpIb3N0KSB7Ci0gICAg
ICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7Cisg
ICAgICAgICAgICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVlRnJhbWUpOwog
ICAgICAgICAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAg
ICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERh
dGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSktPmdsb2JhbE9iamVjdCh2bSksIGNh
bGxlZUZyYW1lKSk7CiAgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3Qs
IGNhbGxlZUZyYW1lLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwg
Q0Z1bmN0aW9uUHRyVGFnKTsKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIHN0YXRpYyBTbG93UGF0aFJl
dHVyblR5cGUgaGFuZGxlSG9zdENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNWYWx1ZSBj
YWxsZWUsCiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6SlMpOwog
ICAgIAogICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Okhvc3QpIHsKLSAg
ICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVlRnJhbWUpOworICAg
ICAgICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVlRnJhbWUpOwogICAgICAg
ICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwogICAgICAgICB2bS5o
b3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSktPmdsb2JhbE9iamVjdCh2bSksIGNhbGxlZUZyYW1l
KSk7CiAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUs
IExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJU
YWcpOwpAQCAtMTc3Myw3ICsxNzczLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2RlYnVnKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2hhbmRsZV9leGNlcHRpb24p
CiB7CiAgICAgVk0mIHZtID0gY2FsbEZyYW1lLT5kZXByZWNhdGVkVk0oKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIFNsb3dQYXRoRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGdlbmVyaWNVbndpbmQodm0sIGNhbGxG
cmFtZSk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKaW5kZXggNjlkZWI2NjhjZjFlNzU2ODMwZjc3
NjE0MWUyMWEyYmZlM2RmOWNlZC4uYjY4YjJmM2QzMjk1MzU1ZjcyYjFlOTgxZDFmYTZlNGVkMzc1
ZTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVj
dC5jcHAKQEAgLTQ3MSw3ICs0NzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkF0b21pY3NBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6
ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUob3Bl
cmFuZCl9OwogICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyh2bSwgZ2xvYmFsT2Jq
ZWN0LCBhcmdzLCBBZGRGdW5jKCkpOwogfQpAQCAtNDgwLDcgKzQ4MCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc0FuZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVl
IGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUoYmFzZSksIEpTVmFsdWU6OmRlY29kZShpbmRleCks
IEpTVmFsdWU6OmRlY29kZShvcGVyYW5kKX07CiAgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldp
dGhBcmdzKHZtLCBnbG9iYWxPYmplY3QsIGFyZ3MsIEFuZEZ1bmMoKSk7CiB9CkBAIC00ODksNyAr
NDg5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BdG9taWNzQ29t
cGFyZUV4Y2hhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNW
YWx1ZTo6ZGVjb2RlKGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKGV4cGVjdGVkKSwgSlNWYWx1ZTo6
ZGVjb2RlKG5ld1ZhbHVlKX07CiAgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKHZt
LCBnbG9iYWxPYmplY3QsIGFyZ3MsIENvbXBhcmVFeGNoYW5nZUZ1bmMoKSk7CiB9CkBAIC00OTgs
NyArNDk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BdG9taWNz
RXhjaGFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShiYXNlKSwg
SlNWYWx1ZTo6ZGVjb2RlKGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKG9wZXJhbmQpfTsKICAgICBy
ZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Modm0sIGdsb2JhbE9iamVjdCwgYXJncywgRXhj
aGFuZ2VGdW5jKCkpOwogfQpAQCAtNTA3LDcgKzUwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc0lzTG9ja0ZyZWUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gaXNMb2NrRnJl
ZShnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShzaXplKSk7CiB9CiAKQEAgLTUxNSw3ICs1
MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3NMb2Fk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUoYmFzZSksIEpTVmFs
dWU6OmRlY29kZShpbmRleCl9OwogICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyh2
bSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBMb2FkRnVuYygpKTsKIH0KQEAgLTUyNCw3ICs1MjQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3NPcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1ZhbHVlOjpk
ZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUob3BlcmFuZCl9OwogICAgIHJldHVybiBhdG9t
aWNPcGVyYXRpb25XaXRoQXJncyh2bSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBPckZ1bmMoKSk7CiB9
CkBAIC01MzMsNyArNTMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25BdG9taWNzU3RvcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29k
ZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKG9wZXJhbmQp
fTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Modm0sIGdsb2JhbE9iamVjdCwg
YXJncywgU3RvcmVGdW5jKCkpOwogfQpAQCAtNTQyLDcgKzU0Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc1N1YihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIGFy
Z3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUoYmFzZSksIEpTVmFsdWU6OmRlY29kZShpbmRleCksIEpT
VmFsdWU6OmRlY29kZShvcGVyYW5kKX07CiAgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhB
cmdzKHZtLCBnbG9iYWxPYmplY3QsIGFyZ3MsIFN1YkZ1bmMoKSk7CiB9CkBAIC01NTEsNyArNTUx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BdG9taWNzWG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNWYWx1
ZTo6ZGVjb2RlKGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKG9wZXJhbmQpfTsKICAgICByZXR1cm4g
YXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Modm0sIGdsb2JhbE9iamVjdCwgYXJncywgWG9yRnVuYygp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCmluZGV4IDkwYzNkZTdhMzQzMGJjNzE4OWI5NmYwMzg5MDczZjU4YWQwYzFlNzguLjg2
NmQyYTljMmUzNTBkZjZhYzA4Zjg1YmM5MmQzZTEyYWM3ZTA2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNzcsNyArNzcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7IFwKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsgXAogICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0oKTsg
XAotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7IFwKKyAg
ICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyBcCiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpCiAKQEAgLTE3NSw3ICsxNzUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY2FsbF9hcml0eUNoZWNrKQogICAgIGlmIChVTkxJS0VMWShzbG90c1RvQWRkIDwgMCkpIHsK
ICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBDb21tb25TbG93UGF0aHM6OmNvZGVCbG9j
a0Zyb21DYWxsRnJhbWVDYWxsZWUoY2FsbEZyYW1lLCBDb2RlRm9yQ2FsbCk7CiAgICAgICAgIGNh
bGxGcmFtZS0+Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKHZtLCBjb2RlQmxvY2spOwotICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgICAg
ICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAgICAgRXJy
b3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0pOwogICAgICAgICB0aHJvd1Njb3BlLnJlbGVh
c2UoKTsKICAgICAgICAgdGhyb3dBcml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7CkBAIC0xOTEsNyArMTkxLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogICAgIGlmIChVTkxJS0VMWShzbG90c1RvQWRk
IDwgMCkpIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBDb21tb25TbG93UGF0aHM6
OmNvZGVCbG9ja0Zyb21DYWxsRnJhbWVDYWxsZWUoY2FsbEZyYW1lLCBDb2RlRm9yQ29uc3RydWN0
KTsKICAgICAgICAgY2FsbEZyYW1lLT5jb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUodm0sIGNv
ZGVCbG9jayk7Ci0gICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgICAgIHRo
cm93QXJpdHlDaGVja1N0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OwogICAgICAgICBSRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PigxKSksIGNhbGxGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCBhOGU5N2MwMzFkNzZhNThmZWY3ZTVhODA0
OTM3YTZiYmExMGEwMjY4Li5mNGJhNjMyMDA2MmY2ZjkxZmE0ZWY5ZDQwZWRhYzUyZDY1ZWUyODUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKQEAgLTcyNCw3ICs3MjQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyKEpTR2xvYmFsT2JqZQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgUmVnRXhwKiByZWdFeHAgPSBzZWFyY2hWYWx1ZS0+cmVnRXhwKCk7
CkBAIC03NDcsNyArNzQ3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmlu
Z1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBTdHJpbmcoSlNHbG9iYWxPYmplY3QKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAtOTI1LDcgKzkyNSw3IEBAIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2VuZXJpYyhK
U0dsb2JhbE9iamVjdCogZ2xvCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAK
ICAgICByZXR1cm4gcmVwbGFjZSgKICAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSwgSlNWYWx1ZTo6ZGVjb2RlKHNlYXJjaFZhbHVl
KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCAxOWM4
ODk5Nzk0ODkyYjBiNWNkYmZkOTkwZjVmOWY5MDZkOGRiZDFiLi4zYjExODdlOWY1ODVkZmY5MzBj
ODg5NDJmZTlmOWQ5NTE0MmUyYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCkBAIC03NTcsNyArNzU3LDcgQEAgY2xhc3MgRE9NSklUR2V0dGVyIDogcHVi
bGljIERPTUpJVE5vZGUgewogICAgICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRT
Y29wZTsKICAgICAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAg
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICAg
ICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
ICAgICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0
YXRpY19jYXN0PERPTUpJVEdldHRlcio+KHBvaW50ZXIpLT52YWx1ZSgpKSk7CiAgICAgICAgIH0K
IApAQCAtODUxLDcgKzg1MSw3IEBAIGNsYXNzIERPTUpJVEdldHRlckNvbXBsZXggOiBwdWJsaWMg
RE9NSklUTm9kZSB7CiAgICAgICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OwogICAgICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgICAgICAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICAgICAg
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IHN0YXRpY19jYXN0PERPTUpJVE5vZGUqPihwb2lu
dGVyKTsKICAgICAgICAgICAgIGF1dG8qIGRvbWppdEdldHRlckNvbXBsZXggPSBqc0R5bmFtaWND
YXN0PERPTUpJVEdldHRlckNvbXBsZXgqPih2bSwgb2JqZWN0KTsKQEAgLTk1OCw3ICs5NTgsNiBA
QCBjbGFzcyBET01KSVRGdW5jdGlvbk9iamVjdCA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICB7
CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgICAgIERPTUpJVE5vZGUqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWND
YXN0PERPTUpJVE5vZGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CkBAIC05NzIsNyAr
OTcxLDcgQEAgY2xhc3MgRE9NSklURnVuY3Rpb25PYmplY3QgOiBwdWJsaWMgRE9NSklUTm9kZSB7
CiAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIobm9kZS0+dmFsdWUoKSkpOwogICAgIH0KIApAQCAtMTA1MSw3ICsxMDUw
LDcgQEAgY2xhc3MgRE9NSklUQ2hlY2tTdWJDbGFzc09iamVjdCA6IHB1YmxpYyBET01KSVROb2Rl
IHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihub2RlLT52YWx1ZSgpKSk7CiAgICAgfQogCkBAIC0xMTE0LDcgKzEx
MTMsNyBAQCBjbGFzcyBET01KSVRHZXR0ZXJCYXNlSlNPYmplY3QgOiBwdWJsaWMgRE9NSklUTm9k
ZSB7CiAgICAgICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAg
ICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgICAgICAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHBvaW50
ZXIpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QtPmdldFByb3Rv
dHlwZURpcmVjdCh2bSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCA3YjhjNWQ5MDAyYzY2NDhjNWQ5ODg2
MzUxNGFhMmU4ODdlYmE4MTZlLi5mYmMzYTE3YjM2NTBhMjEwZGZmNmMxZmE2NWUyZDFjNjIwNDc5
YzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVy
YXRvci5jcHAKQEAgLTE3NjgsNyArMTc2OCw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OmVtaXRM
b29wVGllclVwQ2hlY2sodWludDMyX3QgbG9vcEluZGV4KQogICAgICAgICAgICAgZm9yY2VPU1JF
bnRyeS5saW5rKCZqaXQpOwogICAgICAgICAgICAgdGllclVwLmxpbmsoJmppdCk7CiAKLSAgICAg
ICAgICAgIGppdC5wcm9iZSh0cmlnZ2VyT1NSRW50cnlOb3csIG9zckVudHJ5RGF0YVB0cik7Cisg
ICAgICAgICAgICBqaXQucHJvYmUob3BlcmF0aW9uV2FzbVRyaWdnZXJPU1JFbnRyeU5vdywgb3Ny
RW50cnlEYXRhUHRyKTsKICAgICAgICAgICAgIGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVy
czo6WmVybywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKS5saW5rVG8odGllclVwUmVzdW1lLCAmaml0
KTsKICAgICAgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgV2FzbUVu
dHJ5UHRyVGFnKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggNGYwMTU3MWU3NDdhOTg0NjM3M2ZlZWFlNGRm
M2JlNDcwZjlkMWRkYi4uZGMzYTIxMTBkMzU0N2ZmMzZlZjA0ZDFmMzAzZmVhNjhkOTUxZWQzMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cApAQCAtMTI3MSw3ICsxMjcxLDcgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0TG9vcFRpZXJV
cENoZWNrKHVpbnQzMl90IGxvb3BJbmRleCkKICAgICAgICAgICAgIGZvcmNlT1NSRW50cnkubGlu
aygmaml0KTsKICAgICAgICAgICAgIHRpZXJVcC5saW5rKCZqaXQpOwogCi0gICAgICAgICAgICBq
aXQucHJvYmUodHJpZ2dlck9TUkVudHJ5Tm93LCBvc3JFbnRyeURhdGFQdHIpOworICAgICAgICAg
ICAgaml0LnByb2JlKG9wZXJhdGlvbldhc21UcmlnZ2VyT1NSRW50cnlOb3csIG9zckVudHJ5RGF0
YVB0cik7CiAgICAgICAgICAgICBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8s
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkubGlua1RvKHRpZXJVcFJlc3VtZSwgJmppdCk7CiAgICAg
ICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjphcmd1bWVudEdQUjEsIFdhc21FbnRyeVB0clRh
Zyk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJh
dGlvbnMuY3BwCmluZGV4IDViYzUyZmViMWUxMDMxODlhYjk4ZjM4MzNiOGFlMzJmZjUwNTM3NGEu
LjU3NDYzZTI1ZTNhYTFiNWYxZTg0MmQ2MWMwM2NhMDEyZWUwZmI4MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKQEAgLTUxLDExICs1MSwxMSBA
QCBJR05PUkVfV0FSTklOR1NfQkVHSU4oImZyYW1lLWFkZHJlc3MiKQogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIFdhc20gewogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dC
YWRJNjQoSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25XYXNtVGhyb3dCYWRJNjQoSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5j
ZSkKIHsKICAgICBWTSYgdm0gPSBpbnN0YW5jZS0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICB7CiAgICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHN0
YXRpYyB2b2lkIGRvT1NSRW50cnkoSW5zdGFuY2UqIGluc3RhbmNlLCBQcm9iZTo6Q29udGV4dCYg
Y29udGV4dCwgQkJRQ2FsbGVlJiBjCiAgICAgY29udGV4dC5ncHIoR1BSSW5mbzo6YXJndW1lbnRH
UFIxKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXI+KG9zckVudHJ5Q2FsbGVlLmVudHJ5cG9p
bnQoKS5leGVjdXRhYmxlQWRkcmVzczw+KCkpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gdHJp
Z2dlck9TUkVudHJ5Tm93KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KQordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbldhc21UcmlnZ2VyT1NSRW50cnlOb3coUHJvYmU6OkNvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgT1NSRW50cnlEYXRhJiBvc3JFbnRyeURhdGEgPSAqY29udGV4dC5hcmc8T1NS
RW50cnlEYXRhKj4oKTsKICAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4ID0gb3NyRW50cnlEYXRh
LmZ1bmN0aW9uSW5kZXgoKTsKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
dHJpZ2dlck9TUkVudHJ5Tm93KFByb2JlOjpDb250ZXh0JiBjb250ZXh0KQogICAgIHJldHVybiBy
ZXR1cm5XaXRob3V0T1NSRW50cnkoKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJU
aWVyVXBOb3coSW5zdGFuY2UqIGluc3RhbmNlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4KQordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldhc21UcmlnZ2VyVGllclVwTm93KEluc3RhbmNlKiBp
bnN0YW5jZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCkKIHsKICAgICBXYXNtOjpDb2RlQmxvY2sm
IGNvZGVCbG9jayA9ICppbnN0YW5jZS0+Y29kZUJsb2NrKCk7CiAgICAgQVNTRVJUKGluc3RhbmNl
LT5tZW1vcnkoKS0+bW9kZSgpID09IGNvZGVCbG9jay5tb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmgKaW5kZXggYWYwNTY5M2MxMzI4ZjdiNTIxMTQ3
ZWQ5ODY1YTJlOGFkZmU3Zjg2Yy4uMzVmOTlhZTVmNGQzNTUxZTA4OTQ0OWJjNzU3MTk0NGVkNmMz
YmMwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5oCkBA
IC00MCw5ICs0MCw5IEBAIG5hbWVzcGFjZSBXYXNtIHsKIAogY2xhc3MgSW5zdGFuY2U7CiAKLXZv
aWQgSklUX09QRVJBVElPTiB0cmlnZ2VyT1NSRW50cnlOb3coUHJvYmU6OkNvbnRleHQmKSBXVEZf
SU5URVJOQUw7Ci12b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclRpZXJVcE5vdyhJbnN0YW5jZSos
IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25UaHJvd0JhZEk2NChKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uV2FzbVRyaWdnZXJPU1JFbnRyeU5vdyhQ
cm9iZTo6Q29udGV4dCYpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25XYXNtVHJpZ2dlclRpZXJVcE5vdyhJbnN0YW5jZSosIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25XYXNtVGhyb3dCYWRJ
NjQoSlNXZWJBc3NlbWJseUluc3RhbmNlKikgV1RGX0lOVEVSTkFMOwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6V2FzbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3MuY3Bw
CmluZGV4IGFlNDIwMmVmMWIyMmEwMGJiNjAwZjhjM2Y5M2Q2NDVkMTRiNjcwMjMuLmYyYjNlZTE1
ZmQ5YWYyMDUyZTRmMWIzY2FhNGI3ZjRjZTI4MDI3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21UaHVua3MuY3BwCkBAIC05MCw3ICs5MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gdHJpZ2dlck9NR0VudHJ5VGllclVwVGh1bmtHZW5lcmF0b3Io
Y29uc3QKICAgICB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVz
ZXJ2YXRpb24gPSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9T
dGFja0ZvckNhbGwoaml0LCByZWdpc3RlcnNUb1NwaWxsLCBleHRyYVBhZGRpbmdCeXRlcyk7CiAK
ICAgICBqaXQubG9hZFdhc21Db250ZXh0SW5zdGFuY2UoR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPih0cmlnZ2VyVGllclVwTm93KSksIEdQUkluZm86OmFyZ3VtZW50
R1BSMik7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV2FzbVRyaWdnZXJUaWVyVXBOb3cp
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjphcmd1bWVu
dEdQUjIsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6
OnJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGppdCwgcmVnaXN0ZXJzVG9TcGlsbCwg
UmVnaXN0ZXJTZXQoKSwgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0
aW9uLCBleHRyYVBhZGRpbmdCeXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHkuY3BwCmluZGV4IDI5NWIyZDM1MDY2MTdhNmU1ZTljOTM4MDdkNmQw
OGViMjhmODQwYTQuLjY3OGI0MDk0NzJjODA0ODRmOTdiMzQzNGEyYmI5NGRkNWFmZmQxMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwCkBA
IC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIHZvaWQgaW5zdGFudGlhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2VEZWZlcnJlZCoKICAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CiAg
ICAgICAgICAgICByZXNvbHZlKHZtLCBnbG9iYWxPYmplY3QsIHByb21pc2UsIGluc3RhbmNlLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgY29kZUJsb2NrLnJlbGVhc2VOb25OdWxsKCksIHJlc29sdmVL
aW5kLCBjcmVhdGlvbk1vZGUpOwogICAgICAgICB9KTsKLSAgICB9KSwgJldhc206OmNyZWF0ZUpT
VG9XYXNtV3JhcHBlciwgJldhc206Ondhc21Ub0pTRXhjZXB0aW9uKTsKKyAgICB9KSwgJldhc206
OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwgJldhc206Om9wZXJhdGlvbldhc21Ub0pTRXhjZXB0aW9u
KTsKIH0KIAogc3RhdGljIHZvaWQgY29tcGlsZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UsIGNvbnN0
IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBidWZmZXIsIEpTT2JqZWN0KiBpbXBvcnRP
YmplY3QsIFJlc29sdmUgcmVzb2x2ZUtpbmQsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKaW5kZXggOTBj
NjI3NzQzNDY3ZWZjNjhjYzRkMzZmN2U1NzMyNTY0OWVhM2ZkMi4uODY3NDYyNzA2N2M4MzQxOTU3
MzAzNDE5ZDJiOWYzM2MwYmRkZjczZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2FzbVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dhc21Ub0pTLmNwcApAQCAtNjgsNiArNjgsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiBoYW5kbGVCYQog
ICAgIC8vIFN0b3JlIENhbGxlZS4KICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBJbnN0YW5jZTo6b2Zmc2V0T2ZPd25lcigpKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9m
Q2FsbGVlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIGppdC5wcmVwYXJlQ2FsbE9w
ZXJhdGlvbih2bSk7CiAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgSklU
OjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxs
ZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAKICAgICBhdXRvIGNh
bGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwpAQCAtNzcsNyArNzgsNyBAQCBzdGF0aWMg
RXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdG
YWlsdXJlPiBoYW5kbGVCYQogICAgIGlmIChVTkxJS0VMWShsaW5rQnVmZmVyLmRpZEZhaWxUb0Fs
bG9jYXRlKCkpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQmluZGluZ0ZhaWx1cmU6
Ok91dE9mTWVtb3J5KTsKIAotICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93QmFkSTY0KSk7CisgICAgbGlua0J1ZmZlci5s
aW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV2FzbVRocm93
QmFkSTY0KSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX1dBU01fQ09ERShsaW5rQnVmZmVyLCBXYXNt
RW50cnlQdHJUYWcsICJXZWJBc3NlbWJseS0+SmF2YVNjcmlwdCBpbnZhbGlkIGk2NCB1c2UgaW4g
aW1wb3J0WyVpXSIsIGltcG9ydEluZGV4KTsKIH0KIApAQCAtNTE2LDcgKzUxNyw3IEBAIEV4cGVj
dGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVy
ZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgcmV0dXJuIEZJTkFMSVpFX1dBU01fQ09ERShwYXRjaEJ1
ZmZlciwgV2FzbUVudHJ5UHRyVGFnLCAiV2ViQXNzZW1ibHktPkphdmFTY3JpcHQgaW1wb3J0WyVp
XSAlcyIsIGltcG9ydEluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CiB9CiAKLXZvaWQqIHdhc21Ub0pTRXhjZXB0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lLCBXYXNt
OjpFeGNlcHRpb25UeXBlIHR5cGUsIEluc3RhbmNlKiB3YXNtSW5zdGFuY2UpCit2b2lkKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbldhc21Ub0pTRXhjZXB0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUsIEluc3RhbmNlKiB3YXNtSW5zdGFuY2UpCiB7CiAg
ICAgd2FzbUluc3RhbmNlLT5zdG9yZVRvcENhbGxGcmFtZShjYWxsRnJhbWUpOwogICAgIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSB3YXNtSW5zdGFuY2UtPm93bmVyPEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZT4oKTsKQEAgLTU2NSw3ICs1NjYsNyBAQCB2b2lkIGVtaXRUaHJvd1dhc21U
b0pTRXhjZXB0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgd2FzbUluc3RhbmNlLCBXYXNt
OjpFeAogICAgIGppdC5icmVha3BvaW50KCk7IC8vIFdlIHNob3VsZCBub3QgcmVhY2ggdGhpcy4K
IAogICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKLSAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
V2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pKTsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGws
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oV2FzbTo6b3BlcmF0aW9uV2FzbVRvSlNFeGNl
cHRpb24pKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2FzbVRvSlMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21U
b0pTLmgKaW5kZXggNDgxNjBlNWM5MDFlZDY4YzkyMjQ5YWVmM2FhNzA0M2U5MWU5MGZlMy4uMmRl
ZTEwZmI2Zjg4MGUxNmE0NDk5OWU4NTRhNDk1OWI0MjcyZGIzMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XYXNtVG9KUy5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEluc3RhbmNl
OwogCiBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmlu
ZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5m
b3MsIFNpZ25hdHVyZUluZGV4LCB1bnNpZ25lZCBpbXBvcnRJbmRleCk7CiAKLXZvaWQqIHdhc21U
b0pTRXhjZXB0aW9uKENhbGxGcmFtZSosIFdhc206OkV4Y2VwdGlvblR5cGUsIEluc3RhbmNlKik7
Cit2b2lkKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldhc21Ub0pTRXhjZXB0aW9uKENhbGxGcmFt
ZSosIFdhc206OkV4Y2VwdGlvblR5cGUsIEluc3RhbmNlKikgV1RGX0lOVEVSTkFMOwogdm9pZCBl
bWl0VGhyb3dXYXNtVG9KU0V4Y2VwdGlvbihDQ2FsbEhlbHBlcnMmLCBHUFJSZWcgd2FzbUluc3Rh
bmNlLCBXYXNtOjpFeGNlcHRpb25UeXBlKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5z
dGFuY2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDZhMjQ1ZDE0YThlODFhOWVhOTM0
OGUxOWEyMmRlZTA4MGNkMjM3ZGIuLmU3NDA3ZTgwNTA1NDhkNDBjMzY2Nzg1NDA4MTA3NzNkOWRj
OTNiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcApAQCAtODAsNyArODAsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UoSlNHbG9iYWxPYmplYwogICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5z
dGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBK
U1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgbW9kdWxlLCBp
bXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1bGUt
Pm1vZHVsZSgpKSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVTeW5jKCZ2bS53YXNtQ29u
dGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgJldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBl
ciwgJldhc206Ondhc21Ub0pTRXhjZXB0aW9uKSwgaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlv
bk1vZGU6OkZyb21KUyk7CisgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGdsb2Jh
bE9iamVjdCwgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYygmdm0ud2FzbUNvbnRleHQsIGlu
c3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIsICZXYXNt
OjpvcGVyYXRpb25XYXNtVG9KU0V4Y2VwdGlvbiksIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRp
b25Nb2RlOjpGcm9tSlMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpbnN0YW5jZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCAx
MmM1YTY0MDRkZTZkNjdkNDUyYTI2ZjkwNjlkMTRmZjBmNjIyYTE3Li5iNWE1MjM5YjlhZTkwZWVh
NDMzZmZlMWYwZGM0OGRmMmQyOWMwZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEwMDEsNyArMTAwMSw3
IEBACiAjZW5kaWYKIAogLyogVXNlIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzKDEpIHRvIGdldCBD
YWxsRnJhbWUqICovCi0jaWYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpICYmIChDUFUoQVJNNjQp
IHx8IENQVShYODZfNjQpKSAmJiAoT1MoTElOVVgpIHx8IE9TKERBUldJTikpCisjaWYgQ09NUElM
RVIoR0NDX0NPTVBBVElCTEUpICYmIChDUFUoQVJNNjQpIHx8IENQVShYODZfNjQpKQogI2RlZmlu
ZSBVU0VfQlVJTFRJTl9GUkFNRV9BRERSRVNTIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGRmMWI4MWNm
Yjg2M2I5ZTlmZTc5OTAyYThhZTBjMzljNmQ0MmVhNmQuLjVkNTkwOGQ4ZDMyMGUyNGI2NmRjNWUx
NTE4NjcyNmIyNDczNDU3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC01MzY4LDcgKzUzNjgsNyBAQCBzdWIgR2VuZXJh
dGVPcGVyYXRpb25EZWZpbml0aW9uCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBJ
R05PUkVfV0FSTklOR1NfQkVHSU4oXCJmcmFtZS1hZGRyZXNzXCIpXG4iKTsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSUdOT1JF
X1dBUk5JTkdTX0VORFxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBKU0M6
Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEpTQzo6SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpO1xuIik7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpO1xuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4IGVh
ODMzYTFmMTc2MDIwM2RiY2NiYzM2OWRhNzk3N2QyODYwN2M0MzcuLjE5M2UyMjg1Yzg2OGY1YzZk
Yjk3YTI3MDc2ODEwMzBlMTgyOGViYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC0xMTQxLDcgKzEx
NDEsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVXaXRobwogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJ
TigiZnJhbWUtYWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBA
IC0xMTc3LDcgKzExNzcsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtV2l0aG91dFR5cGVDaAogICAgIElHTk9SRV9X
QVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBK
U0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlND
OjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CkBAIC0xMjA5LDcgKzEyMDksNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVXaXRobwog
ICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIElHTk9SRV9XQVJOSU5H
U19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBKU0M6OkVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVt
ZW50QnlJZFdpdAogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIElH
Tk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMjc1LDcgKzEyNzUsNyBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04ganNUZXN0RE9NSklUUHJvdG90eXBlRnVu
Y3Rpb25HZXRFbGVtZW50c0J5TmFtZQogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUt
YWRkcmVzcyIpCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwogICAgIElHTk9SRV9XQVJOSU5HU19FTkQKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9taml0L0RPTUpJVEhlbHBlcnMuaAppbmRleCBlNmJlYTVkMmQ4ZmNhYzNkZTBhMWJiYzFkMGVh
NzAwNTMyZmRlOTMwLi42ZDU2ODg2NTgxZGI0ZmU3NTU2NTRjODg2MzEyNGU1MjEyYmJkYzgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKQEAgLTYxLDcgKzYxLDcgQEAgSlND
OjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHRvV3JhcHBlclNsb3coSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6
OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0M6OkNhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTQzo6
SlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCksICpzdGF0aWNfY2FzdDxXcmFwcGVkTm9kZSo+KHJlc3Vs
dCkpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381749</attachid>
            <date>2019-10-23 16:02:28 -0700</date>
            <delta_ts>2019-10-23 17:07:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203285-20191023160227.patch</filename>
            <type>text/plain</type>
            <size>230065</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZjRlODVmYTFkYThkODczMjhiNjliMWJkNTQzZDBkZmJjZmZiYThkLi5lNGM3OTNhMDcwYWU2Mzg0
ZTgwYzY4OWEzZTFmNDdhNjY2ZjMzNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzI4
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0
YXJ0IHVzaW5nIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzIHRvIGdldCBDYWxsRnJhbWUqIGluIEpJ
VCBvcGVyYXRpb25zLiBGb3IgdGhlIHBsYXRmb3JtIHdoaWNoIGlzIG5vdCBzdXBwb3J0aW5nIHRo
aXMgQVBJIChNU1ZDKSwKKyAgICAgICAgd2UgcHV0IGZyYW1lLXBvaW50ZXIgdG8gdm0udG9wQ2Fs
bEZyYW1lIGluIHRoZSBjYWxsZXIgc2lkZS4gVGhlIHByb2JsZW0gaXMgdGhhdCBhbGwgQXBwbGUg
cGxhdGZvcm0gaXMgbm93IHVzaW5nIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzLAorICAgICAgICBh
bmQgd2UgYXJlIG5vdCB0ZXN0aW5nIHZtLnRvcENhbGxGcmFtZSB2ZXJzaW9uIGF0IGFsbC4KKwor
ICAgICAgICBUbyBmaW5kIG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24gY2FsbCwgd2UgaW50
cm9kdWNlIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyLiBXaGVuIFVTRShCVUlM
VElOX0ZSQU1FX0FERFJFU1MpIGlzIGVuYWJsZWQgYW5kCisgICAgICAgIGlmIGl0IGlzIGRlYnVn
IGJ1aWxkLCB3ZSBhbnl3YXkgcHV0IGZyYW1lLXBvaW50ZXIgdG8gdm0udG9wQ2FsbEZyYW1lLiBB
bmQgYWZ0ZXIgdGhhdCwgd2UgZW5zdXJlIHRoYXQgdm0udG9wQ2FsbEZyYW1lIGlzIHRoZSBzYW1l
IHRvIHRoZQorICAgICAgICBDYWxsRnJhbWUqIGdhaW5lZCBieSBfX2J1aWx0aW5fZnJhbWVfYWRk
cmVzcy4gQnkgZG9pbmcgdGhpcywgd2UgY2FuIGZpbmQgcGxhY2VzIG1pc3NpbmcgdGhpcyBjYWxs
IGluIGRlYnVnIGJ1aWxkIG9mIEFwcGxlIHBvcnRzLgorCisgICAgICAgIFdlIGFsc28gZm91bmQg
dGhhdCBGVEwncyBjdXN0b20gZ2V0dGVyIGNhbGxpbmcgaXMgcHV0dGluZyB3cm9uZyB2YWx1ZSB0
byB2bS50b3BDYWxsRnJhbWUuIFRoaXMgcGF0Y2ggZml4ZXMgaXQgdG9vLgorCisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0
b3JlQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpvcGVyYXRpb25Db21waWxlT1NSRXhp
dCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAo
SlNDOjpERkc6Om9wZXJhdGlvbkRlYnVnUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVPU1JFeGl0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6REZHOjpPU1JFeGl0OjpkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmhhbmRsZUV4
aXRDb3VudHMpOgorICAgICAgICAoSlNDOjpERkc6Om9zcldyaXRlQmFycmllcik6CisgICAgICAg
ICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6b3NyRXhpdFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpvc3JF
eGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNh
bGxPckNvbnN0cnVjdFZhcmFyZ3NTcHJlYWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJncyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZhbCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FsbFByZWZsaWdodCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhbGxDaGVjayk6CisgICAgICAgICogZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgor
ICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbkNvbXBpbGVGVExPU1JFeGl0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpjb21waWxlRlRMT1NSRXhpdCk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5oOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAg
KEpTQzo6RlRMOjpvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpvcGVyYXRpb25Db21waWxlRlRMTGF6eVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6
RlRMOjpjb21waWxlRlRMTGF6eVNsb3dQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRM
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGZ0bC9GVExTbG93UGF0aENhbGwuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OlNsb3dQYXRoQ2FsbENvbnRleHQ6Om1ha2VDYWxsKToKKyAgICAgICAgKiBm
dGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlvblRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpvc3JFeGl0R2VuZXJhdGlvblRodW5r
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpsYXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBmdGwvRlRMVGh1bmtzLmg6CisgICAgICAgIChKU0M6OkZUTDo6Z2Vu
ZXJhdGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OkZUTDo6VGh1bmtzOjpnZXRTbG93UGF0
aENhbGxUaHVuayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg6CisgICAg
ICAgIChKU0M6OlNsb3dQYXRoRnJhbWVUcmFjZXI6OlNsb3dQYXRoRnJhbWVUcmFjZXIpOgorICAg
ICAgICAoSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlcjo6SklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIpOgorICAgICAgICAoSlNDOjpKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlcjo6fkpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhjZXB0aW9uRnV6eik6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6cHJlcGFyZUNhbGxPcGVyYXRpb24pOgor
ICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OmVuc3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBl
cnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwcmVwYXJlQ2FsbE9wZXJhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjpmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5l
cmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omhh
bmRsZUhvc3RDYWxsKToKKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpvcGVyYXRpb25BdG9taWNzQWRkKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9u
QXRvbWljc0FuZCk6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbkF0b21pY3NDb21wYXJlRXhjaGFu
Z2UpOgorICAgICAgICAoSlNDOjpvcGVyYXRpb25BdG9taWNzRXhjaGFuZ2UpOgorICAgICAgICAo
SlNDOjpvcGVyYXRpb25BdG9taWNzSXNMb2NrRnJlZSk6CisgICAgICAgIChKU0M6Om9wZXJhdGlv
bkF0b21pY3NMb2FkKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9uQXRvbWljc09yKToKKyAgICAg
ICAgKEpTQzo6b3BlcmF0aW9uQXRvbWljc1N0b3JlKToKKyAgICAgICAgKEpTQzo6b3BlcmF0aW9u
QXRvbWljc1N1Yik6CisgICAgICAgIChKU0M6Om9wZXJhdGlvbkF0b21pY3NYb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRI
X0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyKToKKyAg
ICAgICAgKEpTQzo6b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZyk6
CisgICAgICAgIChKU0M6Om9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljKToK
KyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKElHTk9SRV9XQVJOSU5H
U19CRUdJTik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdExvb3BUaWVyVXBDaGVjayk6CisgICAg
ICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OmVtaXRMb29wVGllclVwQ2hlY2spOgorICAgICAgICAqIHdhc20vV2FzbU9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25XYXNtVGhyb3dCYWRJ
NjQpOgorICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25XYXNtVHJpZ2dlck9TUkVudHJ5Tm93
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6b3BlcmF0aW9uV2FzbVRyaWdnZXJUaWVyVXBOb3cpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25UaHJvd0JhZEk2NCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Oldhc206OnRyaWdnZXJPU1JFbnRyeU5vdyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Oldhc206OnRyaWdnZXJUaWVyVXBOb3cpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2Fz
bU9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiB3YXNtL1dhc21UaHVua3MuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjp0cmlnZ2VyT01HRW50cnlUaWVyVXBUaHVua0dlbmVyYXRvcik6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKEpTQzo6aW5zdGFudGlhdGUp
OgorICAgICAgICAqIHdhc20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpo
YW5kbGVCYWRJNjRVc2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpvcGVyYXRpb25XYXNtVG9KU0V4
Y2VwdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OmVtaXRUaHJvd1dhc21Ub0pTRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pOiBEZWxldGVkLgorICAg
ICAgICAqIHdhc20vanMvV2FzbVRvSlMuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSk6CisKIDIwMTktMTAtMjMgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNs
aW5nQHNvbnkuY29tPgogCiAgICAgICAgIFN0cmluZy5wcm90b3R5cGUubWF0Y2hBbGwgc2hvdWxk
IHRocm93IG9uIG5vbi1nbG9iYWwgcmVnZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYWZhNDZhYjY3Zjk4MWZiZjI5YzI2ZDcw
Y2JhNjNiNDc4YTg1OTc2NC4uZGI1MTI1NTU5YTc5OTI3YjU1Y2E1MTI3MGQ5Yjg4YjQ2MjNiOWFm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEZpZ3VyZSBvdXQgbWlzc2luZyBwcmVwYXJl
Q2FsbE9wZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAzMjg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRW5hYmxlIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIHJlZ2FyZGxlc3Mgb2YgcGxh
dGZvcm0gaXMgdGhlIGNvbXBpbGVycyBhbmQgYXJjaGl0ZWN0dXJlcyBtYXRjaC4KKworICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE5LTEwLTIyICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBgSlNHbG9iYWxPYmplY3QqYCB0aHJlYWRpbmcg
Y2hhbmdlIG1vcmUgc3RhYmlsaXplZCBieSBhZGRpbmcgdGVzdHMgYW5kIGFzc2VydGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA5M2ExNjU0NGFlZDQ2MDU4NDU0ODZlYTc5MTYzMjQ5N2I1N2Y1NGUyLi4xODEy
M2NjNTI2MDQ0YmYyNmQ5MDcxZjM5NTk0YWY5YjRmMmVkODYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTktMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbSlNDXSBGaWd1cmUgb3V0IG1pc3NpbmcgcHJlcGFyZUNhbGxPcGVyYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzI4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciBpbnN0ZWFkIG9mIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlci4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlV2l0aG91dFR5cGVDaGVj
ayk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1X
aXRob3V0VHlwZUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFByb3RvdHlw
ZUZ1bmN0aW9uSGFzQXR0cmlidXRlV2l0aG91dFR5cGVDaGVjayk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkV2l0aG91dFR5cGVD
aGVjayk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdl
dEVsZW1lbnRzQnlOYW1lV2l0aG91dFR5cGVDaGVjayk6CisgICAgICAgICogZG9taml0L0RPTUpJ
VEhlbHBlcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6dG9XcmFwcGVyU2xvdyk6CisK
IDIwMTktMTAtMjMgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBCZSBz
dHJpY3Qgb24gcmVxdWVzdCdzIENvbnRlbnQtVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAKaW5kZXggZDBlMGE1ZmNkZjQ1MTQxZmI4ZmMzNWI5NjQ2ODIyN2M5M2Iy
YmUzMy4uNTEwYTdhYjMxNTBiOWM2NzNhOTFhYmY4NzYzOWM0OTdmNmZkOWQxNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC05NTYsNyArOTU2LDcgQEAgQ29k
ZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBPU1JFeGl0Ojpjb2RlTG9jYXRpb25Gb3JS
ZXBhdGNoKCkgY29uc3QKICAgICByZXR1cm4gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRy
VGFnPihtX3BhdGNoYWJsZUp1bXBMb2NhdGlvbik7CiB9CiAKLXZvaWQgT1NSRXhpdDo6ZW1pdFJl
c3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9wZXJhbmRzPFZhbHVlUmVj
b3Zlcnk+JiBvcGVyYW5kcykKK3ZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0Nh
bGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4mIG9w
ZXJhbmRzKQogewogICAgIEhhc2hNYXA8TWluaWZpZWRJRCwgaW50PiBhbHJlYWR5QWxsb2NhdGVk
QXJndW1lbnRzOyAvLyBNYXBzIHBoYW50b20gYXJndW1lbnRzIG5vZGUgSUQgdG8gb3BlcmFuZC4K
ICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMuc2l6ZSgpOyArK2lu
ZGV4KSB7CkBAIC0xMDA3LDcgKzEwMDcsOCBAQCB2b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJn
dW1lbnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZQogCiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbkNyZWF0
ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQpLCBkZWNsdHlwZShvcGVyYXRpb25DcmVhdGVDbG9u
ZWRBcmd1bWVudHNEdXJpbmdFeGl0KT46OnZhbHVlLCAiV2UgYXNzdW1lIHRoZXNlIGZ1bmN0aW9u
cyBoYXZlIHRoZSBzYW1lIHNpZ25hdHVyZSBiZWxvdy4iKTsKICAgICAgICAgaml0LnNldHVwQXJn
dW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQp
PigKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigmaml0LnZtKCkp
LCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSwgR1BSSW5m
bzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cigmdm0pLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5saW5l
Q2FsbEZyYW1lKSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgaml0
LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNo
bmlxdWUoKSkgewogICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRl
ZDoKICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0
YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1
bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwpAQCAtMTAyNiw3ICsxMDI3
LDcgQEAgdm9pZCBPU1JFeGl0OjplbWl0UmVzdG9yZUFyZ3VtZW50cyhDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmUKICAgICB9CiB9CiAKLXZvaWQgSklUX09QRVJB
VElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEwODcsNyArMTA4OCw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBPU1JFeGl0Ojpjb21waWxlT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICAgICAgICAgIGppdC5hZGQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MocHJvZmlsZXJFeGl0LT5jb3VudGVyQWRk
cmVzcygpKSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb21waWxlRXhpdChqaXQsIHZtLCBleGl0
LCBvcGVyYW5kcywgcmVjb3ZlcnkpOworICAgICAgICBPU1JFeGl0Ojpjb21waWxlRXhpdChqaXQs
IHZtLCBleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwogCiAgICAgICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBjb2RlQmxvY2spOwogICAgICAgICBleGl0Lm1fY29kZSA9IEZJTkFMSVpF
X0NPREVfSUYoCkBAIC0xMTE1LDcgKzExMTYsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAg
ICAgICAgIGRlYnVnSW5mby0+a2luZCA9IGV4aXQubV9raW5kOwogICAgICAgICBkZWJ1Z0luZm8t
PmJ5dGVjb2RlSW5kZXggPSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CiAKLSAg
ICAgICAgaml0LmRlYnVnQ2FsbCh2bSwgZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFp
bHVyZSwgZGVidWdJbmZvKTsKKyAgICAgICAgaml0LmRlYnVnQ2FsbCh2bSwgb3BlcmF0aW9uRGVi
dWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZSwgZGVidWdJbmZvKTsKICAgICB9CiAKICAgICAvLyBQ
ZXJmb3JtIHNwZWN1bGF0aW9uIHJlY292ZXJ5LiBUaGlzIG9ubHkgY29tZXMgaW50byBwbGF5IHdo
ZW4gYW4gb3BlcmF0aW9uCkBAIC0xNjEzLDcgKzE2MTQsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBp
bGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNv
bnN0CiAgICAgLy8gTm90ZSB0aGF0IHdlIGFsc28gcm91Z2hseSBhc3N1bWUgdGhhdCB0aGUgYXJn
dW1lbnRzIG1pZ2h0IHN0aWxsIGJlIG1hdGVyaWFsaXplZCBvdXRzaWRlIG9mIGl0cwogICAgIC8v
IGlubGluZSBjYWxsIGZyYW1lIHNjb3BlIC0gYnV0IGZvciBub3cgdGhlIERGRyB3b3VsZG4ndCBk
byB0aGF0LgogCi0gICAgZW1pdFJlc3RvcmVBcmd1bWVudHMoaml0LCBvcGVyYW5kcyk7CisgICAg
ZW1pdFJlc3RvcmVBcmd1bWVudHMoaml0LCB2bSwgb3BlcmFuZHMpOwogCiAgICAgLy8gQWRqdXN0
IHRoZSBvbGQgSklUJ3MgZXhlY3V0ZSBjb3VudGVyLiBTaW5jZSB3ZSBhcmUgZXhpdGluZyBPU1Is
IHdlIGtub3cKICAgICAvLyB0aGF0IGFsbCBuZXcgY2FsbHMgaW50byB0aGlzIGNvZGUgd2lsbCBn
byB0byB0aGUgbmV3IEpJVCwgc28gdGhlIGV4ZWN1dGUKQEAgLTE2NTEsNyArMTY1Miw3IEBAIHZv
aWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3Qg
T1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAvLyBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBz
ZXQgdGhlIGNvdW50ZXIgdG8KICAgICAvLyBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwKCkuCiAKLSAgICBoYW5kbGVFeGl0Q291bnRzKGppdCwgZXhpdCk7CisgICAgaGFuZGxlRXhp
dENvdW50cyh2bSwgaml0LCBleGl0KTsKIAogICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFt
ZXMuCiAKQEAgLTE2NjEsNyArMTY2Miw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0Nh
bGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICBh
ZGp1c3RBbmRKdW1wVG9UYXJnZXQodm0sIGppdCwgZXhpdCk7CiB9CiAKLXZvaWQgSklUX09QRVJB
VElPTiBPU1JFeGl0OjpkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxG
cmFtZSogY2FsbEZyYW1lLCB2b2lkKiBkZWJ1Z0luZm9SYXcsIHZvaWQqIHNjcmF0Y2gpCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdm9pZCogZGVidWdJbmZvUmF3LCB2b2lkKiBzY3JhdGNoKQogewog
ICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+ZGVwcmVjYXRlZFZNKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmgKaW5kZXggZDFmYzVmMWY2YjQwMDBiZDdkY2VmMzM3MjdkNmM5NjdlMWI1MTVi
Yy4uYTdlNTg3OGMwNzE3MDhhMWRhNzZjMGIwZWI1NGQ1NGYxYTA0ZWI4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKQEAgLTEzOCw2ICsxMzgsOSBAQCBzdHJ1Y3QgT1NS
RXhpdFN0YXRlIDogUmVmQ291bnRlZDxPU1JFeGl0U3RhdGU+IHsKICAgICBQcm9maWxlcjo6T1NS
RXhpdCogcHJvZmlsZXJFeGl0IHsgbnVsbHB0ciB9OwogfTsKIAordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0KENhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlKENhbGxG
cmFtZSosIHZvaWQqLCB2b2lkKikgV1RGX0lOVEVSTkFMOworCiAvLyA9PT0gT1NSRXhpdCA9PT0K
IC8vCiAvLyBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgaG93IHRvIGV4aXQgdGhlIHNwZWN1bGF0
aXZlIHBhdGggYnkKQEAgLTE0NSw3ICsxNDgsOCBAQCBzdHJ1Y3QgT1NSRXhpdFN0YXRlIDogUmVm
Q291bnRlZDxPU1JFeGl0U3RhdGU+IHsKIHN0cnVjdCBPU1JFeGl0IDogcHVibGljIE9TUkV4aXRC
YXNlIHsKICAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBNZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCosIHVuc2lnbmVkIHN0cmVhbUluZGV4LCB1
bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gVUlOVF9NQVgpOwogCi0gICAgc3RhdGljIHZvaWQgSklU
X09QRVJBVElPTiBjb21waWxlT1NSRXhpdChDYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CisgICAg
ZnJpZW5kIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXhpdChDYWxsRnJh
bWUqKTsKKwogICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVPU1JFeGl0KFByb2JlOjpDb250ZXh0Jik7
CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBtX3BhdGNoYWJsZUp1
bXBMb2NhdGlvbjsKQEAgLTE2OCw4ICsxNzIsOCBAQCBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBP
U1JFeGl0QmFzZSB7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgY29tcGlsZUV4aXQoQ0Nh
bGxIZWxwZXJzJiwgVk0mLCBjb25zdCBPU1JFeGl0JiwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNv
dmVyeT4mLCBTcGVjdWxhdGlvblJlY292ZXJ5Kik7Ci0gICAgc3RhdGljIHZvaWQgZW1pdFJlc3Rv
cmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4m
KTsKLSAgICBzdGF0aWMgdm9pZCBKSVRfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVj
dWxhdGlvbkZhaWx1cmUoQ2FsbEZyYW1lKiwgdm9pZCosIHZvaWQqKSBXVEZfSU5URVJOQUw7Cisg
ICAgc3RhdGljIHZvaWQgZW1pdFJlc3RvcmVBcmd1bWVudHMoQ0NhbGxIZWxwZXJzJiwgVk0mLCBj
b25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYpOworICAgIGZyaWVuZCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVidWdQcmludFNwZWN1bGF0aW9uRmFpbHVyZShDYWxsRnJhbWUqLCB2
b2lkKiwgdm9pZCopOwogfTsKIAogc3RydWN0IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAKaW5kZXggNTQ4NzdiOTFkMGJmZDRmMTg0OTEwNDE2OWY3NWMxOWYzMzM0NTQ1
Ni4uMDFlZTFiN2M4MDNmZThkNGE2ZWU5MjNjZmUyYzQ1MmRmYTIwMWZhYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cApAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
LXZvaWQgaGFuZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJh
c2UmIGV4aXQpCit2b2lkIGhhbmRsZUV4aXRDb3VudHMoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7CiAgICAgaWYgKCFleGl0S2luZE1heUpldHRp
c29uKGV4aXQubV9raW5kKSkgewogICAgICAgICAvLyBGSVhNRTogV2UgbWF5IHdhbnQgdG8gbm90
aWNlIHRoYXQgd2UncmUgZnJlcXVlbnRseSBleGl0aW5nCkBAIC0xMDMsOCArMTAzLDkgQEAgdm9p
ZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYg
ZXhpdCkKICAgICAKICAgICByZW9wdGltaXplTm93LmxpbmsoJmppdCk7CiAgICAgCi0gICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyk+KEdQUklu
Zm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMywgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KCZleGl0KSk7Ci0gICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRh
Z0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdykp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uVHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KT4oR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OnJlZ1QzLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmV4aXQpKTsKKyAgICBq
aXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25UcmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAg
aml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBBc3Nl
bWJseUhlbHBlcnM6Okp1bXAgZG9uZUFkanVzdGluZyA9IGppdC5qdW1wKCk7CiAgICAgCkBAIC0z
MzksNiArMzQwLDcgQEAgc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKFZNJiB2bSwgQ0NhbGxI
ZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmEKICAgICBBc3NlbWJseUhlbHBl
cnM6Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IGppdC5iYXJyaWVyQnJhbmNoV2l0
aG91dEZlbmNlKG93bmVyKTsKIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVy
YXRpb25PU1JXcml0ZUJhcnJpZXIpPigmdm0sIG93bmVyKTsKKyAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk9TUldyaXRlQmFycmll
cikpLCBzY3JhdGNoKTsKICAgICBqaXQuY2FsbChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJD
b21tb24uaAppbmRleCA0ZmM5OTZmMDBkMGNiMjg4YThmNDQ5ZmFjNTI1ZWM5ZmM1YzkzMmQyLi5j
ODUwOTRjMzhhY2MzOWVmOTg3NGVjMTA5ZjhmYWMyMDczYTczYjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKQEAgLTM2
LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIGhh
bmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKK3ZvaWQg
aGFuZGxlRXhpdENvdW50cyhWTSYsIENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7
CiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhp
dEJhc2UmKTsKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxwZXJzJiwg
Y29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQqIGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgs
IElubGluZUNhbGxGcmFtZTo6S2luZCBjYWxsZXJLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDZhZWU1
NTQyNzM1NzI2YjYwNDFhNDc2ODBhMzVlMzU1ZTYzNDliZjguLjcwZWZkNmJlOTYwOTNhNGY1ZWRh
ODZlYzlmNzRmMjFhYzdhODZjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVG9UaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgTm90
U3RyaWN0TW9kZSkpOwogfQpAQCAtMzAyLDcgKzMwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
U3RyaWN0TW9kZSkpOwogfQpAQCAtMzExLDcgKzMxMSw3IEBAIEpTQXJyYXkqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uT2JqZWN0S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPYmplY3QpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0zMjQsNyAr
MzI0LDcgQEAgSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3Qs
IFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1
ZGUpOwogfQogCkBAIC0zMzIsNyArMzMyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk9iamVjdENyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGUKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRQcm90b3R5cGUpOwpAQCAtMzUxLDcgKzM1MSw3IEBAIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBjb25zdHJ1
Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIHByb3RvdHlwZSk7CiB9CiAKQEAgLTM1OSw3ICsz
NTksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlm
IChjb25zdHJ1Y3Rvci0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY29uc3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAg
IGF1dG8gcmFyZURhdGEgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJl
UmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShnbG9iYWxPYmplY3QsIGlubGluZUNhcGFjaXR5
KTsKQEAgLTM4OCw3ICszODgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3Jl
YXRlUHJvbWlzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iagogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21pc2VD
b25zdHJ1Y3RvcigpLCBjb25zdHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtMzk5LDcg
KzM5OSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVJbnRlcm5hbFBy
b21pc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0
cnVjdHVyZShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IoKSwgY29uc3RydWN0b3IsIGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlU3RydWN0
dXJlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtNDEw
LDcgKzQxMCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVHZW5lcmF0
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIG51bGxwdHIsIGNvbnN0cnVjdG9yLCBnbG9iYWxPYmpl
Y3QtPmdlbmVyYXRvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ3JlYXRlQXN5bmNHZW5lcmF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBjb25z
dHJ1Y3RvciwgZ2xvYmFsT2JqZWN0LT5hc3luY0dlbmVyYXRvclN0cnVjdHVyZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKQEAgLTQzMiw3ICs0MzIsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRUYXJnZXQpOwogICAg
IEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1YKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRhcmdldCk7CkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU1vZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAg
YXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0lu
dCogbGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewogICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OnJlbWFpbmRlcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTQ4Myw3
ICs0ODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0
Tm90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKQEAgLTUwMSw3ICs1
MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5k
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNCaWdJbnQqIHsKICAg
ICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlQW5kKGdsb2JhbE9iamVjdCwgbGVmdCwgcmln
aHQpOwpAQCAtNTE4LDcgKzUxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVmFsdWVCaXRPcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkg
LT4gSlNCaWdJbnQqIHsKICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpiaXR3aXNlT3IoZ2xvYmFs
T2JqZWN0LCBsZWZ0LCByaWdodCk7CkBAIC01MzUsNyArNTM1LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFhvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIGJpZ0lu
dE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQmlnSW50KiBsZWZ0LCBK
U0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7CiAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6
Yml0d2lzZVhvcihnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTU1Miw3ICs1NTIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKICAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7CiAgICAgICAg
IHJldHVybiBKU0JpZ0ludDo6bGVmdFNoaWZ0KGdsb2JhbE9iamVjdCwgbGVmdCwgcmlnaHQpOwpA
QCAtNTY5LDcgKzU2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXRSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gYmlnSW50T3AgPSBbXSAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNCaWdJbnQqIGxlZnQsIEpTQmlnSW50KiByaWdodCkgLT4gSlNC
aWdJbnQqIHsKICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpzaWduZWRSaWdodFNoaWZ0KGdsb2Jh
bE9iamVjdCwgbGVmdCwgcmlnaHQpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRVUlNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AxKTsKQEAgLTYwMyw3ICs2MDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1
ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CkBAIC02MTUsNyArNjE1LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZURpdihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0
byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCog
bGVmdCwgSlNCaWdJbnQqIHJpZ2h0KSAtPiBKU0JpZ0ludCogewogICAgICAgICByZXR1cm4gSlNC
aWdJbnQ6OmRpdmlkZShnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKQEAgLTYzMiw3ICs2MzIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlUG93KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKICAgICBhdXRvIGJpZ0ludE9wID0gW10gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQmlnSW50KiBsZWZ0LCBKU0JpZ0ludCogcmlnaHQpIC0+IEpTQmlnSW50KiB7CiAgICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlKGdsb2JhbE9iamVjdCwgbGVmdCwgcmln
aHQpOwpAQCAtNjQ5LDcgKzY0OSw3IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoQWJzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KTsKQEAgLTY2Miw3ICs2NjIsNyBAQCB1aW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFy
aXRoQ2x6MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZAogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7
CkBAIC02NzUsNyArNjc1LDcgQEAgZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhG
Um91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEoKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwpA
QCAtNjg5LDcgKzY4OSw3IEBAIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoIyNj
YXBpdGFsaXplZE5hbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7IFwKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7IFwKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7IFwKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOyBcCisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOyBcCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSk7IFwKICAgICBkb3VibGUgcmVzdWx0ID0gb3AxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7
IFwKQEAgLTcwMyw3ICs3MDMsNyBAQCBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aFNxcnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVgogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7
CkBAIC03MTYsNyArNzE2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Bcml0aFJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEUKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFy
Z3VtZW50KTsKQEAgLTcyOSw3ICs3MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkFyaXRoRmxvb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQXJndW1lbnQpOwpAQCAtNzQyLDcgKzc0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQXJpdGhDZWlsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CkBAIC03NTUsNyArNzU1LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aFRydW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTc4Miw3ICs3ODIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwpAQCAtODI0LDcgKzgyNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxDZWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVl
IHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CkBAIC04NzAsNyAr
ODcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9i
amVjdEludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCiAgICAgcmV0dXJuIGdldEJ5VmFsQ2VsbEludChnbG9iYWxPYmplY3QsIHZtLCBi
YXNlLCBpbmRleCk7CiB9CkBAIC04NzksNyArODc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIGdldEJ5VmFs
Q2VsbEludChnbG9iYWxPYmplY3QsIHZtLCBiYXNlLCBpbmRleCk7CiB9CkBAIC04ODgsNyArODg4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVj
dFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmEKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC05
MDIsNyArOTAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eVZhbE9iamVjdFN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N5bWJvbChzeW1ib2wp
LT5wcml2YXRlTmFtZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0QnlWYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCB2bSwgYXNPYmplY3QoYmFzZSksIHByb3BlcnR5TmFtZSkpOwpAQCAt
OTEyLDcgKzkxMiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmlj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZhbEludGVybmFsPHRydWUsIGZhbHNlPihn
bG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFs
dWUpOwogfQpAQCAtOTIxLDcgKzkyMSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbE5vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZhbEludGVybmFsPGZh
bHNlLCBmYWxzZT4oZ2xvYmFsT2JqZWN0LCB2bSwgZW5jb2RlZEJhc2UsIGVuY29kZWRQcm9wZXJ0
eSwgZW5jb2RlZFZhbHVlKTsKIH0KQEAgLTkzMCw3ICs5MzAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgcHV0QnlW
YWxJbnRlcm5hbDx0cnVlLCBmYWxzZT4oZ2xvYmFsT2JqZWN0LCB2bSwgSlNWYWx1ZTo6ZW5jb2Rl
KGNlbGwpLCBlbmNvZGVkUHJvcGVydHksIGVuY29kZWRWYWx1ZSk7CiB9CkBAIC05MzksNyArOTM5
LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbE5vblN0cmljdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgCiAgICAgcHV0QnlWYWxJbnRlcm5hbDxmYWxzZSwgZmFsc2U+KGdsb2JhbE9iamVj
dCwgdm0sIEpTVmFsdWU6OmVuY29kZShjZWxsKSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFs
dWUpOwogfQpAQCAtOTQ4LDcgKzk0OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbENlbGxTdHJpbmdTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHB1dEJ5VmFsQ2VsbFN0cmluZ0ludGVy
bmFsPHRydWUsIGZhbHNlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBhc1N0cmluZyhzdHJpbmcp
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CkBAIC05NTcsNyArOTU3LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CiAgICAgcHV0QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWw8ZmFsc2UsIGZhbHNlPihnbG9iYWxPYmpl
Y3QsIHZtLCBjZWxsLCBhc1N0cmluZyhzdHJpbmcpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKSk7CiB9CkBAIC05NjYsNyArOTY2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsQ2VsbFN5bWJvbFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBh
c1N5bWJvbChzeW1ib2wpLT5wcml2YXRlTmFtZSgpOwogICAgIHB1dEJ5VmFsQ2VsbEludGVybmFs
PHRydWUsIGZhbHNlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKQEAgLTk3Niw3ICs5NzYsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGFzU3ltYm9sKHN5bWJvbCktPnByaXZhdGVOYW1lKCk7CiAgICAgcHV0
QnlWYWxDZWxsSW50ZXJuYWw8ZmFsc2UsIGZhbHNlPihnbG9iYWxPYmplY3QsIHZtLCBjZWxsLCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKQEAgLTk4Niw3ICs5
ODYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJv
dW5kc1N0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgCiAgICAgaWYgKGluZGV4ID49IDApIHsKICAgICAgICAgb2JqZWN0LT5wdXRC
eUluZGV4SW5saW5lKGdsb2JhbE9iamVjdCwgaW5kZXgsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpLCB0cnVlKTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiBnCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBpZiAoaW5kZXgg
Pj0gMCkgewogICAgICAgICBvYmplY3QtPnB1dEJ5SW5kZXhJbmxpbmUoZ2xvYmFsT2JqZWN0LCBp
bmRleCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGZhbHNlKTsKQEAgLTEwMTgsNyAr
MTAxOCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9u
ZEFycmF5Qm91bmRzU3RyaWN0KEpTR2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBKU1ZhbHVlKEpTVmFsdWU6OkVu
Y29kZUFzRG91YmxlLCB2YWx1ZSk7CiAgICAgCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0
cmljdChKU0dsb2JhbE9iagogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAg
ICAgSlNWYWx1ZSBqc1ZhbHVlID0gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdmFs
dWUpOwogICAgIApAQCAtMTA1NCw3ICsxMDU0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QoSlNHbG9iYWwK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0g
SlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdmFsdWUpOwogCkBAIC0xMDcxLDcgKzEw
NzEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RC
ZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChKU0dsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFz
RG91YmxlLCB2YWx1ZSk7CiAKQEAgLTEwODgsNyArMTA4OCw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZh
bEludGVybmFsPHRydWUsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIGVuY29kZWRCYXNlLCBlbmNv
ZGVkUHJvcGVydHksIGVuY29kZWRWYWx1ZSk7CiB9CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
CiAgICAgcHV0QnlWYWxJbnRlcm5hbDxmYWxzZSwgdHJ1ZT4oZ2xvYmFsT2JqZWN0LCB2bSwgZW5j
b2RlZEJhc2UsIGVuY29kZWRQcm9wZXJ0eSwgZW5jb2RlZFZhbHVlKTsKIH0KQEAgLTExMDYsNyAr
MTEwNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxT
dHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICBwdXRCeVZhbEludGVybmFsPHRydWUsIHRydWU+KGdsb2JhbE9i
amVjdCwgdm0sIEpTVmFsdWU6OmVuY29kZShjZWxsKSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVk
VmFsdWUpOwogfQpAQCAtMTExNSw3ICsxMTE1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Q2VsbE5vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHB1dEJ5VmFsSW50ZXJu
YWw8ZmFsc2UsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIEpTVmFsdWU6OmVuY29kZShjZWxsKSwg
ZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwogfQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ1N0cmlj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CiAgICAgcHV0QnlWYWxDZWxsU3RyaW5nSW50ZXJuYWw8dHJ1ZSwgdHJ1ZT4oZ2xvYmFsT2JqZWN0
LCB2bSwgY2VsbCwgYXNTdHJpbmcoc3RyaW5nKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkpOwogfQpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ05vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2wKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0QnlWYWxDZWxsU3RyaW5nSW50
ZXJuYWw8ZmFsc2UsIHRydWU+KGdsb2JhbE9iamVjdCwgdm0sIGNlbGwsIGFzU3RyaW5nKHN0cmlu
ZyksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KQEAgLTExNDIsNyArMTE0Miw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xT
dHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTeW1ib2woc3ltYm9sKS0+cHJpdmF0ZU5h
bWUoKTsKICAgICBwdXRCeVZhbENlbGxJbnRlcm5hbDx0cnVlLCB0cnVlPihnbG9iYWxPYmplY3Qs
IHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
QEAgLTExNTIsNyArMTE1Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdENlbGxTeW1ib2xOb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTeW1ib2wo
c3ltYm9sKS0+cHJpdmF0ZU5hbWUoKTsKICAgICBwdXRCeVZhbENlbGxJbnRlcm5hbDxmYWxzZSwg
dHJ1ZT4oZ2xvYmFsT2JqZWN0LCB2bSwgY2VsbCwgcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7CkBAIC0xMTYyLDcgKzExNjIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdChKU0dsb2Jh
bE9iamVjdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgaWYgKGluZGV4ID49
IDApIHsKICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgMCwgUHV0RGlyZWN0SW5kZXhTaG91bGRU
aHJvdyk7CiAgICAgICAgIHJldHVybjsKQEAgLTExNzYsNyArMTE3Niw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0
KEpTR2xvYmFsT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGlmIChp
bmRleCA+PSAwKSB7CiAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LCBpbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwpAQCAtMTE5MSw3ICsxMTkx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2goSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW4KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIAogICAgIGFycmF5LT5wdXNoSW5saW5lKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoYXJyYXktPmxlbmd0aCgpKSk7CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgYXJy
YXktPnB1c2hJbmxpbmUoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91
YmxlLCB2YWx1ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXkt
Pmxlbmd0aCgpKSk7CkBAIC0xMjExLDcgKzEyMTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gV2UgYXNzdW1lIHRoYXQgbXVsdGlwbGUgSlNB
cnJheTo6cHVzaCBjYWxscyB3aXRoIEFycmF5V2l0aEludDMyL0FycmF5V2l0aENvbnRpZ3VvdXMg
ZG8gbm90IGNhdXNlIEpTIHRyYXBzLgpAQCAtMTIzNiw3ICsxMjM2LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2hEb3VibGVNdWx0aXBsZShKU0dsb2Jh
bE9iamVjdCogZ2wKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIFdlIGFzc3VtZSB0aGF0IG11
bHRpcGxlIEpTQXJyYXk6OnB1c2ggY2FsbHMgd2l0aCBBcnJheVdpdGhEb3VibGUgZG8gbm90IGNh
dXNlIEpTIHRyYXBzLgpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25BcnJheVBvcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0EKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYXJyYXktPnBvcChnbG9iYWxPYmplY3QpKTsKIH0KQEAgLTEyNjYsNyArMTI2
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3BBbmRS
ZWNvdmVyTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICAKICAgICBhcnJheS0+YnV0dGVyZmx5KCktPnNldFB1YmxpY0xlbmd0aChhcnJh
eS0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpICsgMSk7CiAgICAgCkBAIC0xMjc5LDcgKzEy
NzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNT
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBPYmplY3Qt
PmV4ZWNJbmxpbmUoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCkpOwogfQpAQCAtMTI5MCw3ICsxMjkw
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFIKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAK
ICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7
CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblJlZ0V4cEV4ZWNHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKTsKQEAgLTEzMzEsNyArMTMzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUmVnRXhwRXhlY05vbkdsb2JhbE9yU3RpY2t5KEpTR2xvYmFsT2JqZWN0CiAKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCkBAIC0xMzU1LDcgKzEzNTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cE1hdGNoRmFzdFN0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYgogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGlmICghcmVnRXhwT2Jq
ZWN0LT5yZWdFeHAoKS0+Z2xvYmFsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVnRXhwT2JqZWN0LT5leGVjSW5saW5lKGdsb2JhbE9iamVjdCwgYXJndW1lbnQpKTsKQEAgLTEz
NjgsNyArMTM2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVn
RXhwTWF0Y2hGYXN0R2xvYmFsU3RyaW5nKEpTR2xvYmFsT2JqZWN0CiAKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCkBAIC0xMzk3LDcgKzEzOTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblBhcnNlSW50Tm9SYWRpeEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsbwogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsK
ICAgICAgICAgLy8gVGhpcyB2ZXJzaW9uIGlzIGFzIGlmIHJhZGl4IHdhcyB1bmRlZmluZWQuIEhl
bmNlLCB1bmRlZmluZWQudG9OdW1iZXIoKSA9PT0gMC4KQEAgLTE0MDksNyArMTQwOSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1JhZGl4
KEpTR2xvYmFsT2JqZWN0KiBnbG9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBhdXRvIHZpZXdX
aXRoU3RyaW5nID0gc3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZ2xvYmFsT2JqZWN0
KTsKQEAgLTE0MjMsNyArMTQyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUGFyc2VJbnRTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gc3RyaW5nLT52aWV3V2l0aFVu
ZGVybHlpbmdTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKQEAgLTE0MzYsNyArMTQzNiw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGFyc2VJbnRHZW5lcmljKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAg
IHJldHVybiB0b1N0cmluZ1ZpZXcoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUp
LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICByZXR1cm4gcGFyc2VJbnRSZXN1bHQo
cGFyc2VJbnQodmlldywgcmFkaXgpKTsKQEAgLTE0NDksNyArMTQ0OSw3IEBAIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVnCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJl
dHVybiByZWdFeHBPYmplY3QtPnRlc3RJbmxpbmUoZ2xvYmFsT2JqZWN0LCBpbnB1dCk7CiB9CkBA
IC0xNDYwLDcgKzE0NjAsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iagogICAgIAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CiAKQEAgLTE0NzYsNyArMTQ3Niw3IEBAIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGJhc2Ug
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwpAQCAtMTQ5OSw3ICsxNDk5LDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN1YkJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAg
ICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0x
NTExLDcgKzE1MTEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0Tm90Qmln
SW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbAogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU0JpZ0ludCogb3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0lu
dCo+KG9wMSk7CiAKQEAgLTE1MjIsNyArMTUyMiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25NdWxCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTQmlnSW50KiBsZWZ0T3Bl
cmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFu
ZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNTM0LDcgKzE1MzQsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTW9kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAg
ICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AxKTsKICAgICBK
U0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4ob3AyKTsKQEAgLTE1NDYs
NyArMTU0Niw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXZCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICAKICAgICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNC
aWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJ
bnQqPihvcDIpOwpAQCAtMTU1OCw3ICsxNTU4LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblBvd0JpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG8K
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIEpTQmlnSW50KiBsZWZ0
T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3Bl
cmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAg
ICBKU0JpZ0ludCogbGVmdE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpT
QmlnSW50KiByaWdodE9wZXJhbmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwpAQCAtMTU4Miw3
ICsxNTgyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdExTaGlmdEJpZ0lu
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50
Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50Kj4o
b3AyKTsKQEAgLTE1OTQsNyArMTU5NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25BZGRCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBKU0JpZ0ludCogbGVmdE9wZXJh
bmQgPSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDEpOwogICAgIEpTQmlnSW50KiByaWdodE9wZXJhbmQg
PSBqc0Nhc3Q8SlNCaWdJbnQqPihvcDIpOwpAQCAtMTYwNiw3ICsxNjA2LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkJpdFJTaGlmdEJpZ0ludChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAg
IEpTQmlnSW50KiBsZWZ0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNC
aWdJbnQqIHJpZ2h0T3BlcmFuZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNjE4LDcg
KzE2MTgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0T3JCaWdJbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgCiAgICAgSlNCaWdJbnQqIGxlZnRPcGVyYW5kID0ganNDYXN0PEpTQmln
SW50Kj4ob3AxKTsKICAgICBKU0JpZ0ludCogcmlnaHRPcGVyYW5kID0ganNDYXN0PEpTQmlnSW50
Kj4ob3AyKTsKQEAgLTE2MzAsNyArMTYzMCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25CaXRYb3JCaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTQmlnSW50KiBsZWZ0T3BlcmFu
ZCA9IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMSk7CiAgICAgSlNCaWdJbnQqIHJpZ2h0T3BlcmFuZCA9
IGpzQ2FzdDxKU0JpZ0ludCo+KG9wMik7CkBAIC0xNjQyLDcgKzE2NDIsNyBAQCBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShnbG9iYWxPYmplY3QsIG9w
MSwgb3AyKTsKIH0KQEAgLTE2NTEsNyArMTY1MSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblNhbWVWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBzYW1lVmFsdWUo
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoYXJnMSksIEpTVmFsdWU6OmRlY29kZShhcmcy
KSk7CiB9CkBAIC0xNjYwLDcgKzE2NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KSk7CiB9
CkBAIC0xNjY5LDcgKzE2NjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KSkpOwogfQpA
QCAtMTY3OCw3ICsxNjc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlKTsKQEAgLTE3MTgsNyArMTcxOCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkV2l0aFRoaXNTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0V2l0aFRoaXM8dHJ1ZT4oZ2xvYmFs
T2JqZWN0LCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgaW1wbCkpOwogfQpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0
V2l0aFRoaXM8ZmFsc2U+KGdsb2JhbE9iamVjdCwgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlzLCBl
bmNvZGVkVmFsdWUsIElkZW50aWZpZXI6OmZyb21VaWQodm0sIGltcGwpKTsKIH0KQEAgLTE3MzYs
NyArMTczNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3Jp
cHQpLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTE3NDksNyArMTc0OSw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVy
IHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpLnRvUHJvcGVydHlL
ZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTE3NzIsNyArMTc3Miw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2Jq
ZWN0KTsKQEAgLTE3ODUsNyArMTc4NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50
b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKQEAgLTE3OTgsNyArMTc5OCw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBkZWZp
bmVEYXRhUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCB2bSwgYmFzZSwgSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgcHJvcGVydHkpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRl
cyk7CiB9CiAKQEAgLTE4MDYsNyArMTgwNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2woSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBkZWZpbmVEYXRhUHJvcGVydHkoZ2xv
YmFsT2JqZWN0LCB2bSwgYmFzZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChwcm9wZXJ0eS0+cHJpdmF0
ZU5hbWUoKSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKIH0K
IApAQCAtMTgyNCw3ICsxODI0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmlu
ZUFjY2Vzc29yUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRQcm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMTgzNiw3
ICsxODM2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJv
cGVydHlTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRpZmllcihnbG9i
YWxPYmplY3QpOwpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudChKU0dsb2JhbE9iamVjdCogZ2wK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGRlZmluZUFjY2Vzc29yUHJvcGVy
dHkoZ2xvYmFsT2JqZWN0LCB2bSwgYmFzZSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVy
dHkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7CiB9CiAKQEAgLTE4NTYsNyArMTg1Niw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3lt
Ym9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0sIGJhc2UsIElk
ZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkpLCBnZXR0ZXIsIHNldHRl
ciwgYXR0cmlidXRlcyk7CiB9CiAKQEAgLTE4NjQsNyArMTg2NCw3IEBAIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBhCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PGNoYXIqPihjb25zdHJ1Y3RBcnJheShnbG9iYWxPYmplY3QsIGFycmF5
U3RydWN0dXJlLCBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4oYnVmZmVyKSwgc2l6ZSkpOwogfQpAQCAt
MTg3Myw3ICsxODczLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdFbXB0eUFy
cmF5KFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3QKIHsKICAgICBWTSYgdm0g
PSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihKU0FycmF5Ojpj
cmVhdGUodm0sIGFycmF5U3RydWN0dXJlKSk7CiB9CkBAIC0xODgyLDcgKzE4ODIsNyBAQCBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZ
KHNpemUgPCAwKSkKQEAgLTE5MDAsNyArMTkwMCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkoc2l6ZSA8IDApKQpAQCAtMTky
MCw3ICsxOTIwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVm
ZmVyKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogYXJyYXlTdHIKIHsKICAgICBWTSYgdm0gPSAq
dm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICBBU1NFUlQoIWFycmF5U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsK
ICAgICBhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSBqc0Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJm
bHkqPihpbW11dGFibGVCdXR0ZXJmbHlDZWxsKTsKICAgICBBU1NFUlQoYXJyYXlTdHJ1Y3R1cmUt
PmluZGV4aW5nTW9kZSgpID09IGltbXV0YWJsZUJ1dHRlcmZseS0+aW5kZXhpbmdNb2RlKCkgfHwg
aGFzQW55QXJyYXlTdG9yYWdlKGFycmF5U3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpOwpAQCAt
MTkzNSw3ICsxOTM1LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnQ4QXJy
YXlXaXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBu
ZXdUeXBlZEFycmF5V2l0aFNpemU8SlNJbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVj
dHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBAIC0xOTQ0LDcgKzE5NDQsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxv
cHQpKTsKIH0KIApAQCAtMTk1Myw3ICsxOTUzLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICByZXR1cm4gbmV3VHlwZWRBcnJheVdpdGhTaXplPEpTSW50MTZBcnJheT4oZ2xvYmFs
T2JqZWN0LCB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CiB9CiAKQEAgLTE5NjIsNyAr
MTk2Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhP
bmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPEpTSW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRW
YWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CiB9CiAKQEAgLTE5NzEsNyArMTk3MSw3IEBAIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplKAogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZTxK
U0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3Ip
OwogfQogCkBAIC0xOTgwLDcgKzE5ODAsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOwogfQogCkBAIC0xOTg5
LDcgKzE5ODksNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlX
aXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdU
eXBlZEFycmF5V2l0aFNpemU8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1
cmUsIGxlbmd0aCwgdmVjdG9yKTsKIH0KIApAQCAtMTk5OCw3ICsxOTk4LDcgQEAgY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxv
cHQpKTsKIH0KIApAQCAtMjAwNyw3ICsyMDA3LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplKAogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgcmV0dXJuIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZTxKU1VpbnQ4Q2xhbXBl
ZEFycmF5PihnbG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgdmVjdG9yKTsKIH0K
IApAQCAtMjAxNiw3ICsyMDE2LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdV
aW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOwogfQog
CkBAIC0yMDI1LDcgKzIwMjUsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Vp
bnQxNkFycmF5V2l0aFNpemUoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBy
ZXR1cm4gbmV3VHlwZWRBcnJheVdpdGhTaXplPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwg
dm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBAIC0yMDM0LDcgKzIwMzQsNyBA
QCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3Vt
ZW50KAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHM8SlNVaW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgV1RGOjpudWxsb3B0KSk7CiB9CiAKQEAgLTIwNDMsNyArMjA0Myw3IEBAIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSgKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdUeXBlZEFycmF5V2l0aFNpemU8SlNVaW50
MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHZlY3Rvcik7CiB9
CiAKQEAgLTIwNTIsNyArMjA1Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKIH0KIApAQCAtMjA2MSw3
ICsyMDYxLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlX
aXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdU
eXBlZEFycmF5V2l0aFNpemU8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVj
dHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBAIC0yMDcwLDcgKzIwNzAsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxv
YXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6
Om51bGxvcHQpKTsKIH0KIApAQCAtMjA3OSw3ICsyMDc5LDcgQEAgY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSgKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdUeXBlZEFycmF5V2l0aFNpemU8SlNGbG9hdDY0QXJy
YXk+KGdsb2JhbE9iamVjdCwgdm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCB2ZWN0b3IpOwogfQogCkBA
IC0yMDg4LDcgKzIwODgsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0
NjRBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKIH0KIApAQCAtMjA5Niw3ICsy
MDk2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25E
aXJlY3QoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKgogewogICAgIFZNJiB2bSA9ICp2bVBvaW50
ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIEpTVmFsdWUgaW5pdGlhbFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGluaXRpYWxWYWx1ZUVu
Y29kZWQpOwogICAgIEFTU0VSVChpbml0aWFsVmFsdWUgPT0ganNVbmRlZmluZWQoKSB8fCBpbml0
aWFsVmFsdWUgPT0ganNURFpWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNMZXhpY2FsRW52aXJvbm1l
bnQ6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBzY29wZSwgdGFibGUsIGluaXRpYWxWYWx1ZSk7CkBA
IC0yMTA2LDcgKzIxMDYsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
RGlyZWN0QXJndW1lbnRzKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogcwogewogICAgIFZNJiB2
bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIERpcmVjdEFyZ3VtZW50cyogcmVzdWx0ID0gRGlyZWN0QXJndW1lbnRz
OjpjcmVhdGUoCiAgICAgICAgIHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc3RkOjptYXgobGVuZ3Ro
LCBtaW5DYXBhY2l0eSkpOwogICAgIC8vIFRoZSBjYWxsZXIgd2lsbCBzdG9yZSB0byB0aGlzIG9i
amVjdCB3aXRob3V0IGJhcnJpZXJzLiBNb3N0IGxpa2VseSwgYXQgdGhpcyBwb2ludCwgdGhpcyBp
cwpAQCAtMjEyMCw3ICsyMTIwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNy
ZWF0ZVNjb3BlZEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIC8vIFdlIGNvdWxkIHBhc3MgdGhlIFNj
b3BlZEFyZ3VtZW50c1RhYmxlKiBhcyBhbiBhcmd1bWVudC4gV2UgY3VycmVudGx5IGRvbid0IGJl
Y2F1c2UgSQogICAgIC8vIGRpZG4ndCBmZWVsIGxpa2UgY2hhbmdpbmcgdGhlIG1heCBudW1iZXIg
b2YgYXJndW1lbnRzIGZvciBhIHNsb3cgcGF0aCBjYWxsIGZyb20gNiB0byA3LgpAQCAtMjEzNCw3
ICsyMTM0LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFy
Z3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIHJldHVybiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUJ5Q29weWluZ0Zy
b20oCiAgICAgICAgIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhcmd1bWVudFN0YXJ0LCBsZW5n
dGgsIGNhbGxlZSk7CiB9CkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdChWTSogdm1Qb2ludGVy
LCBJbgogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIERlZmVyR0NGb3JBV2hpbGUg
ZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKQEAgLTIxNzMsNyArMjE3Myw3IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KFZNKiB2
bVBvaW50ZXIsIEluCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgRGVmZXJHQ0Zv
ckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogICAgIApAQCAtMjIwMiw3ICsyMjAyLDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVJlc3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVnaXN0ZXIKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnJlc3RQYXJhbWV0ZXJTdHJ1
Y3R1cmUoKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZWdpc3RlcikgPT0gc2l6ZW9mKEpT
VmFsdWUpLCAiVGhpcyBpcyBhIHN0cm9uZyBhc3N1bXB0aW9uIGhlcmUuIik7CkBAIC0yMjE0LDcg
KzIyMTQsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RJc09iamVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbAogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBvYmpl
Y3QpKTsKICAgICAKQEAgLTIyMjksNyArMjIyOSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk9iamVjdElzRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVChqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIG9iamVjdCkpOwogICAgIApAQCAtMjI0NCw3ICsyMjQ0LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblR5cGVPZk9iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
CiAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgb2JqZWN0KSk7CiAgICAg
CkBAIC0yMjU5LDcgKzIyNTksNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHlw
ZU9mT2JqZWN0QXNUeXBlb2ZUeXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KHZtLCBvYmplY3QpKTsKICAgICAKQEAgLTIyNzQsNyArMjI3NCw3IEBAIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQWxsb2NhdGVTaW1wbGVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlh
bENhcGFjaXR5KFZNCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oCiAgICAgICAgIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0aWFsaXpl
ZCh2bSwgMCwgMCwgaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5LCBmYWxzZSwgMCkpOwpAQCAtMjI4
NCw3ICsyMjg0LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVNpbXBs
ZVByb3BlcnR5U3RvcmFnZShWTSogdm1Qb2ludGVyLCBzaXplX3QKIHsKICAgICBWTSYgdm0gPSAq
dm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPigKICAgICAgICAgQnV0
dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxpemVkKHZtLCAwLCAwLCBuZXdTaXplLCBmYWxzZSwgMCkp
OwpAQCAtMjI5NCw3ICsyMjk0LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxv
Y2F0ZUNvbXBsZXhQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5KFYKIHsKICAgICBW
TSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVCghb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oCkBA
IC0yMzA1LDcgKzIzMDUsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRl
Q29tcGxleFByb3BlcnR5U3RvcmFnZShWTSogdm1Qb2ludGVyLCBKU09iagogewogICAgIFZNJiB2
bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KAogICAgICAg
ICBvYmplY3QtPmFsbG9jYXRlTW9yZU91dE9mTGluZVN0b3JhZ2Uodm0sIG9iamVjdC0+c3RydWN0
dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U2l6ZSkpOwpAQCAtMjMxNSw3ICsyMzE1
LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25FbnN1cmVJbnQzMihWTSogdm1Qb2lu
dGVyLCBKU0NlbGwqIGNlbGwpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgaWYg
KCFjZWxsLT5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIzMjksNyArMjMyOSw3
IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRW5zdXJlRG91YmxlKFZNKiB2bVBvaW50
ZXIsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBpZiAo
IWNlbGwtPmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjM0Myw3ICsyMzQzLDcg
QEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzKFZNKiB2bVBv
aW50ZXIsIEpTQ2VsbCogY2VsbCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBp
ZiAoIWNlbGwtPmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjM1Nyw3ICsyMzU3
LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25FbnN1cmVBcnJheVN0b3JhZ2UoVk0q
IHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAog
ICAgIGlmICghY2VsbC0+aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzcxLDcg
KzIzNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0dlbmVy
aWNQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7
CkBAIC0yMzkxLDcgKzIzOTEsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlCeUludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGJhc2VDZWxsLT50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWShzdWJzY3JpcHQgPCAwKSkg
ewogICAgICAgICAvLyBHbyB0aGUgc2xvd2VzdCB3YXkgcG9zc2libGUgYmVjYXVzZSBuZWdhdGl2
ZSBpbmRpY2VzIGRvbid0IHVzZSBpbmRleGVkIHN0b3JhZ2UuCkBAIC0yNDA0LDcgKzI0MDQsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1
ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTI0MjEsNyArMjQyMSw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JD
ZWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09i
amVjdCogYmFzZSA9IGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0yNDM0LDcgKzI0
MzQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9JbmRleFN0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQzMgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBJZGVudGlmaWVyOjpmcm9tKHZtLCBpbmRl
eCkuc3RyaW5nKCkpOwogfQogCkBAIC0yNDQyLDcgKzI0NDIsNyBAQCBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwV2l0aExhc3RJbmRleChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBSZWdFeHAqIHJl
Z2V4cCA9IHN0YXRpY19jYXN0PFJlZ0V4cCo+KHJlZ2V4cFB0cik7CiAgICAgQVNTRVJUKHJlZ2V4
cC0+aXNWYWxpZCgpKTsKQEAgLTI0NTMsNyArMjQ1Myw3IEBAIFN0cmluZ0ltcGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVzb2x2ZVJvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNTCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBzdHJpbmct
PnZhbHVlKGdsb2JhbE9iamVjdCkuaW1wbCgpOwogfQpAQCAtMjQ2Miw3ICsyNDYyLDcgQEAgSlNT
dHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nVmFsdWVPZihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTI0ODEsNyArMjQ4
MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdTdWJzdHIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIHJldHVybiBqc1N1YnN0cmluZyh2bSwgZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8
SlNTdHJpbmcqPihjZWxsKSwgZnJvbSwgc3Bhbik7CiB9CkBAIC0yNDkwLDcgKzI0OTAsNyBAQCBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nU2xpY2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoY2VsbCk7CiAgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDx1aW50NjRfdD4oSlNTdHJpbmc6Ok1heExlbmd0aCkgPD0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSwgIiIpOwpA
QCAtMjUwMSw3ICsyNTAxLDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9M
b3dlckNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHIKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCkBAIC0yNTIwLDcgKzI1MjAsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkludDMyVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJfdAog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTI1MzYsNyArMjUzNiw3IEBAIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW50NTJUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBpbnQ2NF90CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjU1Miw3ICsyNTUyLDcgQEAgY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Eb3VibGVUb1N0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0yNTY4LDcgKzI1
NjgsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkludDMyVG9TdHJpbmdXaXRoVmFs
aWRSYWRpeChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaW50MzJUb1N0cmlu
Zyh2bSwgdmFsdWUsIHJhZGl4KSk7CiB9CkBAIC0yNTc3LDcgKzI1NzcsNyBAQCBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oaW50NTJUb1N0cmluZyh2bSwgdmFsdWUsIHJhZGl4
KSk7CiB9CkBAIC0yNTg2LDcgKzI1ODYsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRvdWJsZVRvU3RyaW5nV2l0aFZhbGlkUmFkaXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obnVtYmVyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRpeCkpOwogfQpAQCAtMjU5NSw3
ICsyNTk1LDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKFZNKiB2bVBvaW50ZXIsIGludDMyX3QgY2gKIHsKICAgICBWTSYgdm0gPSAqdm1Q
b2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICAKICAgICByZXR1cm4ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcodm0sIHN0YXRpY19j
YXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsKIH0KQEAgLTI2MDQsNyArMjYwNCw3IEBAIFN5bWJvbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdTeW1ib2woVk0qIHZtUG9pbnRlcikKIHsKICAgICBW
TSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZSh2bSk7CiB9CkBAIC0y
NjEzLDcgKzI2MTMsNyBAQCBTeW1ib2wqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3U3ltYm9s
V2l0aERlc2NyaXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgU3RyaW5nIHN0cmluZyA9IGRlc2NyaXB0aW9uLT52YWx1ZShnbG9iYWxPYmplY3Qp
OwpAQCAtMjYyNiw3ICsyNjI2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d1N0cmluZ09iamVjdChWTSogdm1Qb2ludGVyLCBKU1N0cmluZyogc3RyaW5nLAogewogICAgIFZN
JiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIAogICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZSh2bSwg
c3RydWN0dXJlLCBzdHJpbmcpOwogfQpAQCAtMjYzNSw3ICsyNjM1LDcgQEAgSlNTdHJpbmcqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVG9TdHJpbmdPbkNlbGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIHJl
dHVybiBKU1ZhbHVlKGNlbGwpLnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7CiB9CkBAIC0yNjQ0LDcg
KzI2NDQsNyBAQCBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub1N0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSgogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1N0cmluZyhn
bG9iYWxPYmplY3QpOwogfQpAQCAtMjY1Myw3ICsyNjUzLDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHN0cmlu
Z0NvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgY2VsbCk7CiB9CkBAIC0yNjYyLDcgKzI2NjIsNyBA
QCBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKICAgICByZXR1cm4gc3RyaW5nQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpk
ZWNvZGUodmFsdWUpKTsKIH0KQEAgLTI2NzEsNyArMjY3MSw3IEBAIEpTU3RyaW5nKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1N0cmluCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBqc1N0
cmluZyhnbG9iYWxPYmplY3QsIGxlZnQsIHJpZ2h0KTsKIH0KQEAgLTI2ODAsNyArMjY4MCw3IEBA
IEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1ha2VSb3BlMyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIHJldHVybiBqc1N0cmluZyhnbG9iYWxPYmplY3QsIGEsIGIsIGMpOwogfQpAQCAtMjY4
OSw3ICsyNjg5LDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyQ2F0MihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlMKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIEFTU0VSVCghSlNWYWx1ZTo6ZGVjb2RlKGEpLmlzU3ltYm9sKCkpOwpAQCAtMjcwNiw3
ICsyNzA2LDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyQ2F0MyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlMKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIEFTU0VSVCghSlNWYWx1ZTo6ZGVjb2RlKGEpLmlzU3ltYm9sKCkpOwpAQCAtMjcyNiw3ICsy
NzI2LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0
Rm9yRG91YmxlKFZNKiB2bVBvaW50ZXIsIEVuY29kZWQKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2lu
dGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAg
U2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxl
SW5kZXgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKQEAgLTI3NDIsNyArMjc0Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dp
dGNoU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHNpemVfdCB0CiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIFN0cmluZ0ltcGwqIHN0ckltcGwgPSBzdHJpbmctPnZhbHVl
KGdsb2JhbE9iamVjdCkuaW1wbCgpOwpAQCAtMjc1Niw3ICsyNzU2LDcgQEAgaW50MzJfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaFN0cmluZ0FuZEdldEJyYW5jaE9mZnNldChKU0dsb2Jh
bE9iamVjdCogZ2wKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgU3RyaW5nSW1wbCogc3Ry
SW1wbCA9IHN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KS5pbXBsKCk7CkBAIC0yNzkwLDcgKzI3
OTAsNyBAQCB1aW50cHRyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nTGVz
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAKICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKGFzU3RyaW5nKGEp
LT52YWx1ZShnbG9iYWxPYmplY3QpLCBhc1N0cmluZyhiKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSk7
CiB9CkBAIC0yNzk5LDcgKzI3OTksNyBAQCB1aW50cHRyX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Db21wYXJlU3RyaW5nTGVzc0VxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gIWNvZGVQb2ludENvbXBhcmVM
ZXNzVGhhbihhc1N0cmluZyhiKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KSwgYXNTdHJpbmcoYSktPnZh
bHVlKGdsb2JhbE9iamVjdCkpOwogfQpAQCAtMjgwOCw3ICsyODA4LDcgQEAgdWludHB0cl90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0dyZWF0ZXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJu
IGNvZGVQb2ludENvbXBhcmVMZXNzVGhhbihhc1N0cmluZyhiKS0+dmFsdWUoZ2xvYmFsT2JqZWN0
KSwgYXNTdHJpbmcoYSktPnZhbHVlKGdsb2JhbE9iamVjdCkpOwogfQpAQCAtMjgxNyw3ICsyODE3
LDcgQEAgdWludHB0cl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0dyZWF0
ZXJFcShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgcmV0dXJuICFjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oYXNTdHJpbmcoYSkt
PnZhbHVlKGdsb2JhbE9iamVjdCksIGFzU3RyaW5nKGIpLT52YWx1ZShnbG9iYWxPYmplY3QpKTsK
IH0KQEAgLTI4MjYsNyArMjgyNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Ob3Rp
ZnlXcml0ZShWTSogdm1Qb2ludGVyLCBXYXRjaHBvaW50U2V0KiBzZXQpCiB7CiAgICAgVk0mIHZt
ID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAKICAgICBzZXQtPnRvdWNoKHZtLCAiRXhlY3V0ZWQgTm90aWZ5V3JpdGUiKTsK
IH0KQEAgLTI4MzUsNyArMjgzNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJv
d1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSk7CiB9CkBAIC0yODQ0LDcgKzI4NDQsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2l6ZU9mVmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7CiAgICAgCiAgICAgcmV0dXJuIHNpemVPZlZh
cmFyZ3MoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKQEAgLTI4
NTQsNyArMjg1NCw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNPd25Qcm9w
ZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBKU1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKQEAgLTI4
NzUsNyArMjg3NSw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25OdW1iZXJJc0lu
dGVnZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gTnVtYmVyQ29uc3RydWN0b3I6OmlzSW50ZWdlcklt
cGwoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSk7CiB9CiAKQEAgLTI4ODMsNyArMjg4Myw3IEBAIGlu
dDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZTdHJpbmcoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGludDMyX3QgbGVu
Z3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKQEAgLTI5MDgsNyArMjkwOCw3IEBAIGlu
dDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZUludDMyT3JDb250
aWd1b3VzKEpTR2xvYmFsT2JqZWN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHNl
YXJjaEVsZW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKQEAgLTI5MzEsNyAr
MjkzMSw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1
ZURvdWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIEpTVmFsdWUgc2VhcmNoRWxlbWVudCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogCkBAIC0yOTUzLDcgKzI5NTMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTG9hZFZhcmFyZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJf
dCBmaQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVu
dHMgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7CiAgICAgCiAgICAgbG9hZFZh
cmFyZ3MoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcihmaXJzdEVsZW1l
bnREZXN0KSwgYXJndW1lbnRzLCBvZmZzZXQsIGxlbmd0aCk7CkBAIC0yOTc4LDcgKzI5NzgsNyBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICByZXR1cm4gSlNDOjpzdHJpbmdGcm9tQ2hhckNvZGUoZ2xvYmFsT2JqZWN0LCBvcDEpOwog
fQogCkBAIC0yOTg2LDcgKzI5ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZVVudHlwZWQoSlNHbG9iYWxPYmplY3QqCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIGNoYXJWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIGludDMyX3QgY2hJbnQgPSBjaGFyVmFsdWUudG9V
SW50MzIoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQzo6c3Ry
aW5nRnJvbUNoYXJDb2RlKGdsb2JhbE9iamVjdCwgY2hJbnQpKTsKQEAgLTMwMDksNyArMzAwOSw3
IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0KFZNKiB2bVBvaW50
ZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAg
ICBpZiAoIWJ1dHRlcmZseQogICAgICAgICAmJiAoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpIHx8IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKSkg
ewpAQCAtMzAzMSw3ICszMDMxLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d09iamVjdFdpdGhCdXR0ZXJmbHkoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKgogewogICAgIFZN
JiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIAogICAgIGlmICghYnV0dGVyZmx5KSB7CiAgICAgICAgIGJ1dHRl
cmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKApAQCAtMzA0Niw3ICszMDQ2LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdI
ZWFkZXJBbmRWZWN0b3IKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEluZGV4aW5nSGVh
ZGVyIGhlYWRlcjsKICAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKGxlbmd0aCk7CkBAIC0zMDY4
LDcgKzMwNjgsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRo
U3ByZWFkU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgRW5jb2RlZEpTVmFsdWUqIHZhbHVlcyA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVl
Kj4oYnVmZmVyKTsKQEAgLTMxMjYsNyArMzEyNiw3IEBAIEpTQ2VsbCogb3BlcmF0aW9uQ3JlYXRl
Rml4ZWRBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoSlNGaXhlZEFycmF5KiByZXN1bHQgPSBKU0Zp
eGVkQXJyYXk6OnRyeUNyZWF0ZSh2bSwgdm0uZml4ZWRBcnJheVN0cnVjdHVyZS5nZXQoKSwgbGVu
Z3RoKSkKQEAgLTMxNDAsNyArMzE0MCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25TcHJlYWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0zMTc1LDcgKzMxNzUsNyBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQo
aXNKU0FycmF5KGNlbGwpKTsKICAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4o
Y2VsbCk7CkBAIC0zMTg4LDcgKzMxODgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhWTSogdm1Qb2ludGVyKQogewogICAgIFZNJiB2bSA9
ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCiAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZt
LCAiTG9nIEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lkZSBERkcuIl9zKTsKIH0KQEAgLTMxOTcsNyAr
MzE5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZVNj
b3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChKU0dsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAgICAgCiAgICAgSlNWYWx1ZSByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6
cmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChnbG9iYWxPYmplY3QsIHNjb3Bl
LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXNvbHZlZFNjb3BlKTsKQEAgLTMyMDcsNyArMzIwNyw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25SZXNvbHZlU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNTY29wCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpTT2JqZWN0
KiByZXNvbHZlZFNjb3BlID0gSlNTY29wZTo6cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNjb3BlLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpbXBsKSk7CiAgICAgcmV0dXJuIHJlc29sdmVkU2NvcGU7
CkBAIC0zMjE3LDcgKzMyMTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldER5bmFtaWNWYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgaW1wbCk7CkBAIC0zMjc3LDcgKzMyNzcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
UwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgY29uc3RleHByIGJvb2wgaXNT
dHJpY3RNb2RlID0gdHJ1ZTsKICAgICByZXR1cm4gcHV0RHluYW1pY1ZhcihnbG9iYWxPYmplY3Qs
IHZtLCBzY29wZSwgdmFsdWUsIGltcGwsIGdldFB1dEluZm9CaXRzLCBpc1N0cmljdE1vZGUpOwog
fQpAQCAtMzI4Niw3ICszMjg2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5
bmFtaWNWYXJOb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGNvbnN0ZXhwciBib29sIGlzU3RyaWN0TW9kZSA9
IGZhbHNlOwogICAgIHJldHVybiBwdXREeW5hbWljVmFyKGdsb2JhbE9iamVjdCwgdm0sIHNjb3Bl
LCB2YWx1ZSwgaW1wbCwgZ2V0UHV0SW5mb0JpdHMsIGlzU3RyaWN0TW9kZSk7CiB9CkBAIC0zMjk1
LDcgKzMyOTUsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWFwSGFzaChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4ganNNYXBIYXNoKGdsb2JhbE9iamVjdCwgdm0sIEpT
VmFsdWU6OmRlY29kZShpbnB1dCkpOwogfQpAQCAtMzMwNCw3ICszMzA0LDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tldChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTTWFw
OjpCdWNrZXRUeXBlKiogYnVja2V0ID0ganNDYXN0PEpTTWFwKj4obWFwKS0+ZmluZEJ1Y2tldChn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShrZXkpLCBoYXNoKTsKICAgICBpZiAoIWJ1Y2tl
dCkKICAgICAgICAgcmV0dXJuIHZtLnNlbnRpbmVsTWFwQnVja2V0KCk7CkBAIC0zMzE1LDcgKzMz
MTUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgSlNTZXQ6OkJ1Y2tldFR5cGUqKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQqPiht
YXApLT5maW5kQnVja2V0KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGtleSksIGhhc2gp
OwogICAgIGlmICghYnVja2V0KQogICAgICAgICByZXR1cm4gdm0uc2VudGluZWxTZXRCdWNrZXQo
KTsKQEAgLTMzMjYsNyArMzMyNiw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25T
ZXRBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBzZXQsCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvKiBidWNrZXQgPSBqc0Nhc3Q8SlNTZXQq
PihzZXQpLT5hZGROb3JtYWxpemVkKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGtleSks
IEpTVmFsdWUoKSwgaGFzaCk7CiAgICAgaWYgKCFidWNrZXQpCiAgICAgICAgIHJldHVybiB2bS5z
ZW50aW5lbFNldEJ1Y2tldCgpOwpAQCAtMzMzNyw3ICszMzM3LDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk1hcFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG1hcCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8qIGJ1Y2tl
dCA9IGpzQ2FzdDxKU01hcCo+KG1hcCktPmFkZE5vcm1hbGl6ZWQoZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlOjpkZWNvZGUoa2V5KSwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgaGFzaCk7CiAgICAgaWYg
KCFidWNrZXQpCiAgICAgICAgIHJldHVybiB2bS5zZW50aW5lbE1hcEJ1Y2tldCgpOwpAQCAtMzM0
OCw3ICszMzQ4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldlYWtTZXRBZGQoVk0q
IHZtUG9pbnRlciwgSlNDZWxsKiBzZXQsIEpTQ2VsbCoga2V5LAogewogICAgIFZNJiB2bSA9ICp2
bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIGpzQ2FzdDxKU1dlYWtTZXQqPihzZXQpLT5hZGQodm0sIGFzT2JqZWN0KGtleSks
IEpTVmFsdWUoKSwgaGFzaCk7CiB9CiAKQEAgLTMzNTYsNyArMzM1Niw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25XZWFrTWFwU2V0KFZNKiB2bVBvaW50ZXIsIEpTQ2VsbCogbWFwLCBK
U0NlbGwqIGtleSwKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBqc0Nhc3Q8SlNXZWFrTWFw
Kj4obWFwKS0+YWRkKHZtLCBhc09iamVjdChrZXkpLCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBo
YXNoKTsKIH0KIApAQCAtMzM2NCw3ICszMzY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRQcm90b3R5cGVPZk9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmEK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKTsKIH0KIApAQCAt
MzM3Miw3ICszMzcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSkudG9UaGlzKGdsb2JhbE9iamVjdCwgU3RyaWN0TW9kZSk7CkBAIC0zMzk1LDcgKzMzOTUsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dERkcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIHNjb3BlLnRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlVG9UaHJvdykp
OwogfQpAQCAtMzQwNCw3ICszNDA0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRo
cm93U3RhdGljRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHIKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWVzc2FnZS0+dmFsdWUoZ2xv
YmFsT2JqZWN0KTsKICAgICBzY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGNyZWF0
ZUVycm9yKGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8RXJyb3JUeXBlPihlcnJvclR5cGUpLCBl
cnJvck1lc3NhZ2UpKTsKQEAgLTM0MTUsNyArMzQxNSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25MaW5rRGlyZWN0Q2FsbChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywgSlNGdW5j
dGlvCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxlZS0+Z2xvYmFsT2Jq
ZWN0KCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCA9IGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCk7CkBAIC0zNDYyLDcgKzM0
NjIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0RpcmVjdENhbGwoQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8sIEpTRnVuY3RpbwogICAgIGxpbmtEaXJlY3RGb3IoY2FsbEZy
YW1lLCAqY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ssIGNvZGVQdHIpOwogfQogCi1leHRlcm4gIkMi
IHZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVCbG9jayogb3B0aW1pemVkQ29kZUJsb2NrLCBPU1JFeGl0QmFzZSogZXhp
dCkKK3ZvaWQgdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrLCBD
b2RlQmxvY2sqIG9wdGltaXplZENvZGVCbG9jaywgT1NSRXhpdEJhc2UqIGV4aXQpCiB7CiAgICAg
Ly8gSXQncyBzb3J0IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24ndCBHQyB3aGlsZSBpbiBoZXJl
LiBBbnl3YXlzLCBkb2luZyBzbyB3b3VsZG4ndAogICAgIC8vIHJlYWxseSBiZSBwcm9maXRhYmxl
LgpAQCAtMzUxOCw2ICszNTE4LDExIEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIHRy
aWdnZXJSZW9wdGltaXphdGlvbk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kCiAgICAgb3B0
aW1pemVkQ29kZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb09TUkV4aXQs
IENvdW50UmVvcHRpbWl6YXRpb24pOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sq
IG9wdGltaXplZENvZGVCbG9jaywgT1NSRXhpdEJhc2UqIGV4aXQpCit7CisgICAgdHJpZ2dlclJl
b3B0aW1pemF0aW9uTm93KGNvZGVCbG9jaywgb3B0aW1pemVkQ29kZUJsb2NrLCBleGl0KTsKK30K
KwogI2lmIEVOQUJMRShGVExfSklUKQogc3RhdGljIGJvb2wgc2hvdWxkVHJpZ2dlckZUTENvbXBp
bGUoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvZGUqIGppdENvZGUpCiB7CkBAIC0zNTkxLDEx
ICszNTk2LDExIEBAIHN0YXRpYyB2b2lkIHRyaWdnZXJGVExSZXBsYWNlbWVudENvbXBpbGUoVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSklUQ29kZSoKICAgICAgICAgY29kZUJsb2NrLCBD
b21waWxhdGlvbkRlZmVycmVkKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVy
VXBOb3coVk0qIHZtUG9pbnRlcikKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcmlnZ2Vy
VGllclVwTm93KFZNKiB2bVBvaW50ZXIpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgRGVm
ZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAKQEAgLTM4NTAsMTEgKzM4NTUsMTEgQEAg
c3RhdGljIGNoYXIqIHRpZXJVcENvbW1vbihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBC
eXRlY29kZUluZGV4IG9yaWdpbkJ5dGUKICAgICByZXR1cm4gcmV0YWdDb2RlUHRyPGNoYXIqPihh
ZGRyZXNzLCBKU0VudHJ5UHRyVGFnLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihjYWxsRnJhbWUpKTsK
IH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxvb3AoVk0qIHZtUG9p
bnRlciwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleEJpdHMpCit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVHJpZ2dlclRpZXJVcE5vd0luTG9vcChWTSogdm1Qb2ludGVyLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4Qml0cykKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBEZWZlckdDRm9yQVdo
aWxlIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IEJ5dGVj
b2RlSW5kZXg6OmZyb21CaXRzKGJ5dGVjb2RlSW5kZXhCaXRzKTsKQEAgLTM4ODYsMTEgKzM4OTEs
MTEgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxvb3AoVk0qIHZtUG9p
bnRlciwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleEIKICAgICB9CiB9CiAKLWNoYXIqIEpJVF9PUEVS
QVRJT04gdHJpZ2dlck9TUkVudHJ5Tm93KFZNKiB2bVBvaW50ZXIsIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXhCaXRzKQorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcmlnZ2VyT1NSRW50cnlO
b3coVk0qIHZtUG9pbnRlciwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleEJpdHMpCiB7CiAgICAgVk0m
IHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4Ojpmcm9tQml0cyhieXRlY29k
ZUluZGV4Qml0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmlu
ZGV4IDk0ZjRjODIyYjU4NTA0NzhiMjJmYjczYmJmYjE4NmFmY2YzYzNiODguLjI1NjRkOWZjOGRm
OTg3NjcxNThmZDI0MTY2N2IzYWI2ZWJiNjBiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0yOTYsMTYgKzI5NiwxNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua0RpcmVjdENhbGwoQ2FsbExpbmtJbmZvKiwgSlNGdW5jdGlvbiopIFdU
Rl9JTlRFUgogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxl
ckxvZ0RGRyhWTSopIFdURl9JTlRFUk5BTDsKIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJS
ZW9wdGltaXphdGlvbk5vdyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBDb2RlQmxvY2sq
IG9wdGlpbXplZENvZGVCbG9jaywgT1NSRXhpdEJhc2UqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2ssIENvZGVCbG9jayogb3B0aWltemVkQ29kZUJsb2NrLCBPU1JFeGl0
QmFzZSopIFdURl9JTlRFUk5BTDsKK3ZvaWQgdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2ssIENvZGVCbG9jayogb3B0aWltemVkQ29kZUJsb2NrLCBP
U1JFeGl0QmFzZSopOyAvLyBUaGlzIGlzIG5vdCBKSVRfT1BFUkFUSU9OLgogCiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJhbmRvbShKU0dsb2Jh
bE9iamVjdCopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKLXZvaWQgSklUX09QRVJB
VElPTiB0cmlnZ2VyVGllclVwTm93KFZNKikgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFU
SU9OIHRyaWdnZXJUaWVyVXBOb3dJbkxvb3AoVk0qLCB1bnNpZ25lZCBieXRlY29kZUluZGV4Qml0
cykgV1RGX0lOVEVSTkFMOwotY2hhciogSklUX09QRVJBVElPTiB0cmlnZ2VyT1NSRW50cnlOb3co
Vk0qLCB1bnNpZ25lZCBieXRlY29kZUluZGV4Qml0cykgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRyaWdnZXJUaWVyVXBOb3coVk0qKSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJpZ2dlclRpZXJVcE5vd0luTG9vcChWTSosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXhCaXRzKSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyaWdnZXJPU1JFbnRyeU5vdyhWTSosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXhCaXRzKSBXVEZfSU5URVJOQUw7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAKIH0gLy8g
ZXh0ZXJuICJDIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggZjc1NzlmYzliODI1NGEwOGJhODIzMWNlNjg0MjQ2NGE4YzQ4OGM3
Ny4uMTQyYzdlMDY4OWMyNmExZmFmZGNkNTAwM2YxZjM0YmViMjUzODAyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MDg1
LDcgKzUwODUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBjYWxsVGllclVwLmxpbmsoJm1faml0KTsKIAogICAgICAgICAgICAgc2lsZW50
U3BpbGwoc2F2ZVBsYW5zKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24odHJpZ2dlclRpZXJV
cE5vd0luTG9vcCwgJnZtKCksIFRydXN0ZWRJbW0zMihieXRlY29kZUluZGV4LmFzQml0cygpKSk7
CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRyaWdnZXJUaWVyVXBOb3dJbkxv
b3AsICZ2bSgpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSkpOwogICAgICAg
ICAgICAgc2lsZW50RmlsbChzYXZlUGxhbnMpOwogCiAgICAgICAgICAgICBtX2ppdC5qdW1wKCku
bGlua1RvKHRvTmV4dE9wZXJhdGlvbiwgJm1faml0KTsKQEAgLTUxMDAsNyArNTEwMCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3MoJm1faml0LmppdENvZGUoKS0+dGllclVwQ291bnRl
ci5tX2NvdW50ZXIpKTsKICAgICAgICAgCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJz
KEludmFsaWRHUFJSZWcpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHRyaWdnZXJUaWVyVXBOb3cs
ICZ2bSgpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcmlnZ2VyVGllclVwTm93
LCAmdm0oKSk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgCiAg
ICAgICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtNTEzOCw3ICs1MTM4LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgb3ZlcmZsb3dlZENv
dW50ZXIubGluaygmbV9qaXQpOwogCiAgICAgICAgICAgICBzaWxlbnRTcGlsbChzYXZlUGxhbnMp
OwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbih0cmlnZ2VyT1NSRW50cnlOb3csIHRlbXBHUFIs
ICZ2bSgpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSkpOworICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcmlnZ2VyT1NSRW50cnlOb3csIHRlbXBHUFIsICZ2
bSgpLCBUcnVzdGVkSW1tMzIoYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSkpOwogCiAgICAgICAgICAg
ICBpZiAoc2F2ZVBsYW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hU
ZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSKS5saW5rVG8odG9OZXh0T3BlcmF0
aW9uLCAmbV9qaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCmluZGV4
IDlkMDlmZTcxNTQxYzAyNjViMWMxOTllYzBkYjdkMzllZGQxMTkxYTIuLjZhY2FmYmYzYmY1MzVj
OTY5NmJlNjQ4YTIwNzBiNmVlNmY0ZjhiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRUaHVu
a0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXIgaml0OworICAgIENDYWxs
SGVscGVycyBqaXQobnVsbHB0cik7CiAgICAgaml0LnByb2JlKE9TUkV4aXQ6OmV4ZWN1dGVPU1JF
eGl0LCAmdm0pOwogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIkRGRyBPU1IgZXhpdCB0aHVuayIpOwpAQCAtNTAsNyArNTAsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckV4aXRUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRpb25U
aHVua0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgTWFjcm9Bc3NlbWJsZXIgaml0OworICAgIEND
YWxsSGVscGVycyBqaXQobnVsbHB0cik7CiAKICAgICAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBi
ZWZvcmUgd2UgdXNlIHRoZSBzY3JhdGNoIGJ1ZmZlciBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gYWxz
byB1c2VzIHRoZSBzY3JhdGNoIGJ1ZmZlci4KICAgICBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JF
eGl0Q29tcGlsZXJUaHVuazxERkc6OkpJVENvZGU+KGppdCwgdm0sIEpJVFR5cGU6OkRGR0pJVCk7
CkBAIC03Nyw2ICs3Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
b3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiAKICAgICAvLyBTZXQgdXAg
b25lIGFyZ3VtZW50LgogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVy
YXRpb25QdHJUYWcpOwogCkBAIC05OSw3ICsxMDAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQog
CiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAg
Ci0gICAgcGF0Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4oT1NSRXhpdDo6Y29tcGlsZU9TUkV4aXQpKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5r
KGZ1bmN0aW9uQ2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Db21w
aWxlT1NSRXhpdCkpOwogCiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiREZHIE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsiKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4YTAwZDk2
NjNmZTNkNjE2YTBmMWVlZThhZGU2NGY5M2IxZmQxM2Y5Li42MGIwMDRmOGU1OTJlNWRlZTQzYjBk
NzBkYjhmMmNlZDRjNTA4Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC04ODQ1LDYgKzg4NDUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9udFRocm93ID0gaml0
Lmp1bXAoKTsKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKICAgICAg
ICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93
U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnByZXBh
cmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhF
eGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblRocm93U3RhY2tPdmVy
Zmxvd0ZvclZhcmFyZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNv
bihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgICAgICAg
ICAKQEAgLTkxMTEsNiArOTExMiw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKICAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2UubGluaygmaml0KTsKICAgICAgICAgICAgICAgICAgICAgaml0
LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZh
cmFyZ3MpPihqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGpp
dC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3
aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MpKTsK
ICAgICAgICAgICAgICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dp
bmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTkxMTgsNiArOTEy
MCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIob3Jp
Z2luYWxTdGFja0hlaWdodCAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMSk7
CiAgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25TaXplRnJhbWVGb3JWYXJhcmdzKT4oaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwgYXJndW1lbnRzR1BSLCBzY3JhdGNoR1BSMSwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgY2FsbFdpdGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9w
ZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MpKTsKIAogICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgc2NyYXRjaEdQUjEpOwpAQCAtOTEyNiw2ICs5
MTI5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdFNl
dFZhcmFyZ3NGcmFtZShqaXQsIHNjcmF0Y2hHUFIxLCBmYWxzZSwgc2NyYXRjaEdQUjIsIHNjcmF0
Y2hHUFIyKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigtbWluaW11bUpTQ2FsbEFyZWFTaXplKSwgc2NyYXRjaEdQUjIsIENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgICAgICBqaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUpPihqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBzY3JhdGNo
R1BSMiwgYXJndW1lbnRzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihkYXRhLT5maXJz
dFZhckFyZ09mZnNldCksIHNjcmF0Y2hHUFIxKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnBy
ZXBhcmVDYWxsT3BlcmF0aW9uKGppdC52bSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbFdp
dGhFeGNlcHRpb25DaGVjayhiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvblNldHVwVmFyYXJn
c0ZyYW1lKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBqaXQu
YWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSksIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKQEAgLTkyNzcsNiArOTI4MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICAgICAgICAgIGppdC5z
dWJQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KGdsb2JhbE9iamVjdCwgR1BSSW5m
bzo6cmVnVDEpOworICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRh
Z0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIEdQUklu
Zm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNh
bGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcp
OwogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4Y2VwdGlvbkNo
ZWNrKHN0YXRlLT52bSgpLCBBc3NlbWJseUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlvbkNoZWNrLCBB
c3NlbWJseUhlbHBlcnM6OkZhckp1bXBXaWR0aCkpOwpAQCAtMTI5ODUsNyArMTI5OTAsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgLy8gRklYTUU6IFJldmlzaXQgSlNHbG9i
YWxPYmplY3QuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAzMjA0CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAg
ICAgICAgICAgbV9vdXQuc3RvcmVQdHIod2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbV9vdXQu
YWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CisgICAgICAgICAgICBtX291dC5zdG9yZVB0
cihtX2NhbGxGcmFtZSwgbV9vdXQuYWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CiAgICAg
ICAgICAgICBzZXRKU1ZhbHVlKAogICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgYml0d2lz
ZV9jYXN0PEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tR2V0dGVyPihtX25vZGUtPmNhbGxET01H
ZXR0ZXJEYXRhKCktPmN1c3RvbUFjY2Vzc29yR2V0dGVyLnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJl
c3M8Q0Z1bmN0aW9uUHRyVGFnPigpKSwKICAgICAgICAgICAgICAgICAgICAgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJbnRQ
dHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRl
bnRpZmllck51bWJlcl0pKSk7CkBAIC0xNzI2Myw2ICsxNzI2OCw5IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIG1fb3V0LnN0b3JlMzIoCiAgICAgICAgICAgICBtX291dC5jb25zdElu
dDMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSk7CisjaWYgIVVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIHx8
ICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9jYWxsRnJhbWUsIG1f
b3V0LmFic29sdXRlKCZ2bSgpLnRvcENhbGxGcmFtZSkpOworI2VuZGlmCiAgICAgfQogCiAgICAg
dm9pZCBjYWxsUHJlZmxpZ2h0KCkKQEAgLTE3MjkxLDggKzE3Mjk5LDEyIEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgdm9pZCBjYWxsQ2hlY2soKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkK
KyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1enooKSkgeworI2lmICFVU0UoQlVJ
TFRJTl9GUkFNRV9BRERSRVNTKSB8fCAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgICAgICBtX291
dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgbV9vdXQuYWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1l
KSk7CisjZW5kaWYKICAgICAgICAgICAgIG1fb3V0LmNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enopLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpKTsKKyAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgTFZhbHVlIGV4Y2VwdGlvbiA9IG1fb3V0LmxvYWQ2
NChtX291dC5hYnNvbHV0ZSh2bSgpLmFkZHJlc3NPZkV4Y2VwdGlvbigpKSk7CiAgICAgICAgIExW
YWx1ZSBoYWRFeGNlcHRpb24gPSBtX291dC5ub3RaZXJvNjQoZXhjZXB0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAppbmRleCBmNmIz
YTc0Y2EzZTg2NDVlMTEyZGNhZDVlYjM2NGU5YWE0YTY3NjdjLi42NjRkM2I5ODhhZjdlYTgzZjZm
YjgyYmNiM2E4YzBhODgxNzZlZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBAIC0xMzcsOCArMTM3LDcgQEAgc3RhdGljIHZvaWQg
Y29tcGlsZVJlY292ZXJ5KAogICAgICAgICB2YWx1ZS5kYXRhRm9ybWF0KCksIGppdCwgR1BSSW5m
bzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7CiB9CiAKLXN0YXRpYyB2
b2lkIGNvbXBpbGVTdHViKAotICAgIHVuc2lnbmVkIGV4aXRJRCwgSklUQ29kZSogaml0Q29kZSwg
T1NSRXhpdCYgZXhpdCwgVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3N0YXRpYyB2b2lk
IGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBP
U1JFeGl0JiBleGl0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICAvLyBUaGlzIGNvZGUg
cmVxdWlyZXMgZnJhbWVQb2ludGVyUmVnaXN0ZXIgaXMgdGhlIHNhbWUgYXMgY2FsbEZyYW1lUmVn
aXN0ZXIKICAgICBzdGF0aWNfYXNzZXJ0KE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdp
c3RlciA9PSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgIk1hY3JvQXNzZW1ibGVyOjpmcmFt
ZVBvaW50ZXJSZWdpc3RlciBhbmQgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIgbXVzdCBiZSB0
aGUgc2FtZSIpOwpAQCAtMTQ3LDkgKzE0Niw5IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAog
CiAgICAgLy8gVGhlIGZpcnN0IHRoaW5nIHdlIG5lZWQgdG8gZG8gaXMgcmVzdGFibGlzaCBvdXIg
ZnJhbWUgaW4gdGhlIGNhc2Ugb2YgYW4gZXhjZXB0aW9uLgogICAgIGlmIChleGl0LmlzR2VuZXJp
Y1Vud2luZEhhbmRsZXIoKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS0+Y2FsbEZyYW1l
Rm9yQ2F0Y2gpOyAvLyBUaGUgZmlyc3QgdGltZSB3ZSBoaXQgdGhpcyBleGl0LCBsaWtlIGF0IGFs
bCBvdGhlciB0aW1lcywgdGhpcyBmaWVsZCBzaG91bGQgYmUgbm9uLW51bGwuCi0gICAgICAgIGpp
dC5yZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLT50
b3BFbnRyeUZyYW1lKTsKLSAgICAgICAgaml0LmxvYWRQdHIodm0tPmFkZHJlc3NPZkNhbGxGcmFt
ZUZvckNhdGNoKCksIE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHZtLmNhbGxGcmFtZUZvckNhdGNoKTsgLy8gVGhlIGZpcnN0IHRp
bWUgd2UgaGl0IHRoaXMgZXhpdCwgbGlrZSBhdCBhbGwgb3RoZXIgdGltZXMsIHRoaXMgZmllbGQg
c2hvdWxkIGJlIG5vbi1udWxsLgorICAgICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbUVu
dHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKKyAgICAgICAgaml0
LmxvYWRQdHIodm0uYWRkcmVzc09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSwgTWFjcm9Bc3NlbWJsZXI6
OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCkBAIC0xNzUsNyArMTc0
LDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgICAgICAgICBtYXRlcmlhbGl6YXRp
b24tPnByb3BlcnRpZXMoKS5zaXplKCkpOwogICAgIH0KICAgICAKLSAgICBTY3JhdGNoQnVmZmVy
KiBzY3JhdGNoQnVmZmVyID0gdm0tPnNjcmF0Y2hCdWZmZXJGb3JTaXplKAorICAgIFNjcmF0Y2hC
dWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZSgKICAgICAgICAg
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqICgKICAgICAgICAgICAgIGV4aXQubV9kZXNjcmlwdG9y
LT5tX3ZhbHVlcy5zaXplKCkgKyBudW1NYXRlcmlhbGl6YXRpb25zICsgbWF4TWF0ZXJpYWxpemF0
aW9uTnVtQXJndW1lbnRzKSArCiAgICAgICAgIHJlcXVpcmVkU2NyYXRjaE1lbW9yeVNpemVJbkJ5
dGVzKCkgKwpAQCAtMjE1LDE1ICsyMTQsMTUgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAg
ICAgICAgIC8vIHRvIHNldCBpdCBoZXJlIGJlY2F1c2UgY29tcGlsZUZUTE9TUkV4aXQoKSBpcyBv
bmx5IGNhbGxlZCBvbiB0aGUgZmlyc3QgdGltZQogICAgICAgICAvLyB3ZSBleGl0IGZyb20gdGhp
cyBzaXRlLCBidXQgYWxsIHN1YnNlcXVlbnQgZXhpdHMgd2lsbCB0YWtlIHRoaXMgY29tcGlsZWQK
ICAgICAgICAgLy8gcmFtcCB3aXRob3V0IGNhbGxpbmcgY29tcGlsZUZUTE9TUkV4aXQoKSBmaXJz
dC4KLSAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0cnVlKSwg
dm0tPmhlYXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU4KEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRydWUpLCB2bS5oZWFwLmFkZHJlc3NPZkV4cGVjdERv
ZXNHQygpKTsKICAgICB9CiAKICAgICAvLyBCcmluZyB0aGUgc3RhY2sgYmFjayBpbnRvIGEgc2Fu
ZSBmb3JtIGFuZCBhc3NlcnQgdGhhdCBpdCdzIHNhbmUuCiAgICAgaml0LnBvcFRvUmVzdG9yZShH
UFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAg
ICAgCi0gICAgaWYgKFVOTElLRUxZKHZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgaml0Q29k
ZS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uKSkgewotICAgICAgICBQcm9maWxlcjo6RGF0YWJh
c2UmIGRhdGFiYXNlID0gKnZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXI7CisgICAgaWYgKFVOTElL
RUxZKHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBqaXRDb2RlLT5kZmdDb21tb24oKS0+Y29t
cGlsYXRpb24pKSB7CisgICAgICAgIFByb2ZpbGVyOjpEYXRhYmFzZSYgZGF0YWJhc2UgPSAqdm0u
bV9wZXJCeXRlY29kZVByb2ZpbGVyOwogICAgICAgICBQcm9maWxlcjo6Q29tcGlsYXRpb24qIGNv
bXBpbGF0aW9uID0gaml0Q29kZS0+ZGZnQ29tbW9uKCktPmNvbXBpbGF0aW9uLmdldCgpOwogICAg
ICAgICAKICAgICAgICAgUHJvZmlsZXI6Ok9TUkV4aXQqIHByb2ZpbGVyRXhpdCA9IGNvbXBpbGF0
aW9uLT5hZGRPU1JFeGl0KApAQCAtMzM1LDYgKzMzNCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVT
dHViKAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxv
Y2stPmdsb2JhbE9iamVjdEZvcihtYXRlcmlhbGl6YXRpb24tPm9yaWdpbigpKSksCiAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGVyaWFsaXphdGlvbiksCiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGVyaWFsaXphdGlv
bkFyZ3VtZW50cykpOworICAgICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsK
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NS
KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6
bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICAgICAgICAgIGppdC5zdG9yZVB0cihH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgbWF0ZXJpYWxpemF0aW9uVG9Qb2ludGVyLmdldChtYXRl
cmlhbGl6YXRpb24pKTsKQEAgLTM2NCw2ICszNjQsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1
YigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRp
b24pLAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1hdGVyaWFsaXph
dGlvblRvUG9pbnRlci5nZXQobWF0ZXJpYWxpemF0aW9uKSksCiAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0ZXJpYWxpemF0aW9uQXJndW1lbnRzKSk7CisgICAgICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVy
YXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAg
ICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIH0K
QEAgLTQxMCw3ICs0MTEsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCogdm1DYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0Ojp2bUNhbGxlZVNhdmVS
ZWdpc3Rlck9mZnNldHMoKTsKICAgICBSZWdpc3RlclNldCB2bUNhbGxlZVNhdmVzVG9Ta2lwID0g
UmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCk7CiAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25I
YW5kbGVyKCkpIHsKLSAgICAgICAgaml0LmxvYWRQdHIoJnZtLT50b3BFbnRyeUZyYW1lLCBHUFJJ
bmZvOjpyZWdUMSk7CisgICAgICAgIGppdC5sb2FkUHRyKCZ2bS50b3BFbnRyeUZyYW1lLCBHUFJJ
bmZvOjpyZWdUMSk7CiAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoRW50cnlGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0J1ZmZlck9mZnNldCgpKSwgR1BSSW5m
bzo6cmVnVDEpOwogICAgIH0KIApAQCAtNDg1LDkgKzQ4Niw5IEBAIHN0YXRpYyB2b2lkIGNvbXBp
bGVTdHViKAogICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKHJlZykpOwogICAgIH0KICAgICAKLSAgICBoYW5kbGVFeGl0Q291bnRz
KGppdCwgZXhpdCk7CisgICAgaGFuZGxlRXhpdENvdW50cyh2bSwgaml0LCBleGl0KTsKICAgICBy
ZWlmeUlubGluZWRDYWxsRnJhbWVzKGppdCwgZXhpdCk7Ci0gICAgYWRqdXN0QW5kSnVtcFRvVGFy
Z2V0KCp2bSwgaml0LCBleGl0KTsKKyAgICBhZGp1c3RBbmRKdW1wVG9UYXJnZXQodm0sIGppdCwg
ZXhpdCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIGNvZGVCbG9jayk7
CiAgICAgZXhpdC5tX2NvZGUgPSBGSU5BTElaRV9DT0RFX0lGKApAQCAtNTAwLDcgKzUwMSw3IEBA
IHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgICAgICApOwogfQogCi1leHRlcm4gIkMiIHZv
aWQqIGNvbXBpbGVGVExPU1JFeGl0KENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBleGl0
SUQpCitleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCogb3BlcmF0aW9uQ29tcGlsZUZUTE9T
UkV4aXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIGV4aXRJRCkKIHsKICAgICBpZiAo
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6dmVyYm9zZU9TUigpIHx8IE9wdGlv
bnM6OnZlcmJvc2VGVExPU1JFeGl0KCkpCiAgICAgICAgIGRhdGFMb2coIkNvbXBpbGluZyBPU1Ig
ZXhpdCB3aXRoIGV4aXRJRCA9ICIsIGV4aXRJRCwgIlxuIik7CkBAIC01NDUsNyArNTQ2LDcgQEAg
ZXh0ZXJuICJDIiB2b2lkKiBjb21waWxlRlRMT1NSRXhpdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
dW5zaWduZWQgZXhpdElEKQogICAgICAgICB9CiAgICAgfQogCi0gICAgY29tcGlsZVN0dWIoZXhp
dElELCBqaXRDb2RlLCBleGl0LCAmdm0sIGNvZGVCbG9jayk7CisgICAgY29tcGlsZVN0dWIodm0s
IGV4aXRJRCwgaml0Q29kZSwgZXhpdCwgY29kZUJsb2NrKTsKIAogICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoSnVtcCgKICAgICAgICAgZXhpdC5jb2RlTG9jYXRpb25Gb3JSZXBhdGNoKGNvZGVC
bG9jayksIENvZGVMb2NhdGlvbkxhYmVsPE9TUkV4aXRQdHJUYWc+KGV4aXQubV9jb2RlLmNvZGUo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29t
cGlsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmgK
aW5kZXggOTE0YWExOTM4MzFiNzJkMjg0ZDczNTIyNGEwNjZmNThjNzM0MjVlNC4uYmU3MmY0NTM5
OTU1OWM0NmMzYTJhYmEwOTA1YTgxZmUyODNlNDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIC8vIFRha2VzIHRoZSBjYWxsIGZyYW1lIGFuZCB0aGUg
aW5kZXggb2YgdGhlIGV4aXQsIGFuZCByZXR1cm5zIHRoZSBhZGRyZXNzIHRvCiAvLyBqdW1wIHRv
LgogZXh0ZXJuICJDIiB7Ci12b2lkKiBKSVRfT1BFUkFUSU9OIGNvbXBpbGVGVExPU1JFeGl0KENh
bGxGcmFtZSosIHVuc2lnbmVkIGV4aXRJRCkgV1RGX0lOVEVSTkFMOwordm9pZCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db21waWxlRlRMT1NSRXhpdChDYWxsRnJhbWUqLCB1bnNpZ25lZCBleGl0
SUQpIFdURl9JTlRFUk5BTDsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggMjhjOTViMTY5ZDZl
Nzg0ODkzMjYzZWUwNDIyNWYxYTJmMTU2MTlkZS4uODI5ZDJiYWIxMDI2MTgyOTE4ZmNmMzJlZDA0
ZTIzZTY3YmU5NGM1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlv
bnMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgdXNp
bmcgbmFtZXNwYWNlIERGRzsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJp
YWxpemVPYmplY3RJbk9TUihKU0dsb2JhbE9iamVjdCoKICAgICB1c2luZyBuYW1lc3BhY2UgREZH
OwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICAvLyBXZSBjYW5ub3QgR0MuIFdl
J3ZlIGdvdCBwb2ludGVycyBpbiBldmlsIHBsYWNlcy4KICAgICBEZWZlckdDRm9yQVdoaWxlIGRl
ZmVyR0Modm0uaGVhcCk7CkBAIC02MDcsNyArNjA3LDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUihKU0dsb2JhbE9iamVj
dCoKICAgICB9CiB9CiAKLWV4dGVybiAiQyIgdm9pZCogSklUX09QRVJBVElPTiBjb21waWxlRlRM
TGF6eVNsb3dQYXRoKENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBpbmRleCkKK2V4dGVy
biAiQyIgdm9pZCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlRlRMTGF6eVNsb3dQYXRo
KENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBWTSYgdm0gPSBj
YWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3BlcmF0aW9ucy5oCmluZGV4IDA0ZDAyODM5ZDkxMDQ1ZGM3ODBiYjA0NDFkNjhiNjZlNmViODU0
OTcuLjA1ZDk4Y2Y3YTM0M2I2NjcxYjVhMjRjZTMxNjkwOGQyMWY0OGRjYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5oCkBAIC00MCw3ICs0MCw3IEBAIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKEpTR2xvYmFs
T2JqZWN0KiwgRXhpdFRpbWVPCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3B1bGF0
ZU9iamVjdEluT1NSKEpTR2xvYmFsT2JqZWN0KiwgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRp
b24qLCBFbmNvZGVkSlNWYWx1ZSosIEVuY29kZWRKU1ZhbHVlKikgV1RGX0lOVEVSTkFMOwogCi12
b2lkKiBKSVRfT1BFUkFUSU9OIGNvbXBpbGVGVExMYXp5U2xvd1BhdGgoQ2FsbEZyYW1lKiwgdW5z
aWduZWQpIFdURl9JTlRFUk5BTDsKK3ZvaWQqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGls
ZUZUTExhenlTbG93UGF0aChDYWxsRnJhbWUqLCB1bnNpZ25lZCkgV1RGX0lOVEVSTkFMOwogCiB9
IC8vIGV4dGVybiAiQyIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTbG93UGF0aENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTbG93UGF0
aENhbGwuY3BwCmluZGV4IDRjYzZlZGUzNThmY2JmNGQyOTQ5NGE0ZTZmODY0ZTU4NThhMjJkNDUu
LjBjNzBjMTBjMjhhYTFlYjY3MzFhZTEzYzQwMDNhZGQ3Nzc0MTJjNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2xvd1BhdGhDYWxsLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNsb3dQYXRoQ2FsbC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCBTbG93UGF0aENhbGwgU2xvd1BhdGhDYWxsQ29udGV4dDo6bWFrZUNhbGwoVk0mIHZtLCBGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+CiAgICAgbV9qaXQuYWRkTGlua1Rhc2soCiAgICAgICAg
IFtyZXN1bHQsICZ2bV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGh1bmsgPQotICAgICAgICAgICAg
ICAgIHZtLmZ0bFRodW5rcy0+Z2V0U2xvd1BhdGhDYWxsVGh1bmsocmVzdWx0LmtleSgpKTsKKyAg
ICAgICAgICAgICAgICB2bS5mdGxUaHVua3MtPmdldFNsb3dQYXRoQ2FsbFRodW5rKHZtLCByZXN1
bHQua2V5KCkpOwogCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsocmVzdWx0LmNhbGwoKSwg
Q29kZUxvY2F0aW9uTGFiZWw8T3BlcmF0aW9uUHRyVGFnPih0aHVuay5yZXRhZ2dlZENvZGU8T3Bl
cmF0aW9uUHRyVGFnPigpKSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExUaHVua3MuY3BwCmluZGV4IGZhOWJmYzcwYjZjZThlOWUzMmUzNTZkYTE1MjFkZTc5YWYwMDcy
NWUuLmU0Mjk0NTM3MzgxY2Y2OTFiZWM2MmYwZTFhZmJhZTliZGRkZTRkZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJpY0dlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcigKICAgICBqaXQucGVlaygKICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIx
LAogICAgICAgICAoc3RhY2tNaXNhbGlnbm1lbnQgLSBNYWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2
ZUJ5dGVPZmZzZXQoKSkgLyBzaXplb2Yodm9pZCopKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbCA9IGppdC5j
YWxsKE9wZXJhdGlvblB0clRhZyk7CiAKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHdhbnQgdG8g
bWFrZSBhIHRhaWwgY2FsbCB0byB3aGF0IHdhcyByZXR1cm5lZCB0byB1cyBpbiB0aGUKQEAgLTEz
MiwxNCArMTMzLDE0IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3Ny
RXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiB7CiAgICAgdW5zaWduZWQgZXh0
cmFQb3BzVG9SZXN0b3JlID0gMDsKICAgICByZXR1cm4gZ2VuZXJpY0dlbmVyYXRpb25UaHVua0dl
bmVyYXRvcigKLSAgICAgICAgdm0sIGNvbXBpbGVGVExPU1JFeGl0LCBPU1JFeGl0UHRyVGFnLCAi
RlRMIE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsiLCBleHRyYVBvcHNUb1Jlc3RvcmUsIEZyYW1l
QW5kU3RhY2tBZGp1c3RtZW50UmVxdWlyZW1lbnQ6Ok5lZWRlZCk7CisgICAgICAgIHZtLCBvcGVy
YXRpb25Db21waWxlRlRMT1NSRXhpdCwgT1NSRXhpdFB0clRhZywgIkZUTCBPU1IgZXhpdCBnZW5l
cmF0aW9uIHRodW5rIiwgZXh0cmFQb3BzVG9SZXN0b3JlLCBGcmFtZUFuZFN0YWNrQWRqdXN0bWVu
dFJlcXVpcmVtZW50OjpOZWVkZWQpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IGxhenlTbG93UGF0aEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiB7
CiAgICAgdW5zaWduZWQgZXh0cmFQb3BzVG9SZXN0b3JlID0gMTsKICAgICByZXR1cm4gZ2VuZXJp
Y0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcigKLSAgICAgICAgdm0sIGNvbXBpbGVGVExMYXp5U2xv
d1BhdGgsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLCAiRlRMIGxhenkgc2xvdyBwYXRoIGdlbmVyYXRp
b24gdGh1bmsiLCBleHRyYVBvcHNUb1Jlc3RvcmUsIEZyYW1lQW5kU3RhY2tBZGp1c3RtZW50UmVx
dWlyZW1lbnQ6Ok5vdE5lZWRlZCk7CisgICAgICAgIHZtLCBvcGVyYXRpb25Db21waWxlRlRMTGF6
eVNsb3dQYXRoLCBKSVRTdHViUm91dGluZVB0clRhZywgIkZUTCBsYXp5IHNsb3cgcGF0aCBnZW5l
cmF0aW9uIHRodW5rIiwgZXh0cmFQb3BzVG9SZXN0b3JlLCBGcmFtZUFuZFN0YWNrQWRqdXN0bWVu
dFJlcXVpcmVtZW50OjpOb3ROZWVkZWQpOwogfQogCiBzdGF0aWMgdm9pZCByZWdpc3RlckNsb2Ji
ZXJDaGVjayhBc3NlbWJseUhlbHBlcnMmIGppdCwgUmVnaXN0ZXJTZXQgZG9udENsb2JiZXIpCkBA
IC0xNzAsNyArMTcxLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJDbG9iYmVyQ2hlY2soQXNzZW1i
bHlIZWxwZXJzJiBqaXQsIFJlZ2lzdGVyU2V0IGRvbnRDbG9iYmVyKQogICAgIH0KIH0KIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVy
YXRvcihjb25zdCBTbG93UGF0aENhbGxLZXkmIGtleSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBT
bG93UGF0aENhbGxLZXkmIGtleSkKIHsKICAgICBBc3NlbWJseUhlbHBlcnMgaml0KG51bGxwdHIp
OwogICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CkBAIC0yMDEsNiArMjAyLDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENhbGxUaHVua0dlbmVyYXRv
cihjb25zdCBTbG93UGF0aEMKICAgICAKICAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0
ZXJDYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpu
b25BcmdHUFIwLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBrZXkub2Zmc2V0KCkpKTsKKyAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOwogICAgIAogICAgIHJlZ2lzdGVyQ2xvYmJlckNoZWNrKGppdCwga2V5LmFyZ3Vt
ZW50UmVnaXN0ZXJzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuaAppbmRl
eCA3MTg0ZGExODk1NDYwYzk4YmE2NTZhNTI5MTliOGIzZGU0NWQ3MmRjLi40ZjBiMTI5MDljYWNk
NDIyNDVkOTM3NGZkMTQzODRlOGFjMDQ3MTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEZUTCB7CiAKIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRv
cihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBsYXp5U2xvd1Bh
dGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IoY29uc3QgU2xvd1BhdGhD
YWxsS2V5Jik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dQYXRo
Q2FsbFRodW5rR2VuZXJhdG9yKFZNJiwgY29uc3QgU2xvd1BhdGhDYWxsS2V5Jik7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEtleVR5cGVBcmd1bWVudD4KIHN0cnVjdCBUaHVua01hcCB7CkBAIC01NCwx
MyArNTQsMTMgQEAgc3RydWN0IFRodW5rTWFwIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgTWFwVHlw
ZSwgdHlwZW5hbWUgR2VuZXJhdG9yVHlwZT4KIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gZ2VuZXJhdGVJZk5lY2Vzc2FyeSgKLSAgICBNYXBUeXBlJiBtYXAsIGNvbnN0IHR5
cGVuYW1lIE1hcFR5cGU6OktleVR5cGUmIGtleSwgR2VuZXJhdG9yVHlwZSBnZW5lcmF0b3IpCisg
ICAgVk0mIHZtLCBNYXBUeXBlJiBtYXAsIGNvbnN0IHR5cGVuYW1lIE1hcFR5cGU6OktleVR5cGUm
IGtleSwgR2VuZXJhdG9yVHlwZSBnZW5lcmF0b3IpCiB7CiAgICAgdHlwZW5hbWUgTWFwVHlwZTo6
VG9UaHVua01hcDo6aXRlcmF0b3IgaXRlciA9IG1hcC5tX3RvVGh1bmsuZmluZChrZXkpOwogICAg
IGlmIChpdGVyICE9IG1hcC5tX3RvVGh1bmsuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdGVyLT52
YWx1ZTsKIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmVzdWx0
ID0gZ2VuZXJhdG9yKGtleSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiByZXN1bHQgPSBnZW5lcmF0b3Iodm0sIGtleSk7CiAgICAgbWFwLm1fdG9UaHVuay5hZGQo
a2V5LCByZXN1bHQpOwogICAgIG1hcC5tX2Zyb21UaHVuay5hZGQocmVzdWx0LmNvZGUoKSwga2V5
KTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzksMTAgKzc5LDkgQEAgY2xhc3MgVGh1bmtzIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHVua3MpOwogcHVibGljOgogICAgIFRodW5rcygp
ID0gZGVmYXVsdDsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdl
dFNsb3dQYXRoQ2FsbFRodW5rKGNvbnN0IFNsb3dQYXRoQ2FsbEtleSYga2V5KQorICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2V0U2xvd1BhdGhDYWxsVGh1bmsoVk0m
IHZtLCBjb25zdCBTbG93UGF0aENhbGxLZXkmIGtleSkKICAgICB7Ci0gICAgICAgIHJldHVybiBn
ZW5lcmF0ZUlmTmVjZXNzYXJ5KAotICAgICAgICAgICAgbV9zbG93UGF0aENhbGxUaHVua3MsIGtl
eSwgc2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOworICAgICAgICByZXR1cm4gZ2VuZXJhdGVJ
Zk5lY2Vzc2FyeSh2bSwgbV9zbG93UGF0aENhbGxUaHVua3MsIGtleSwgc2xvd1BhdGhDYWxsVGh1
bmtHZW5lcmF0b3IpOwogICAgIH0KIAogICAgIFNsb3dQYXRoQ2FsbEtleSBrZXlGb3JTbG93UGF0
aENhbGxUaHVuayhNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQdHJUYWc+IHB0cikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9GcmFtZVRyYWNlcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaAppbmRl
eCAxMWY3YjhhMmEzMDU5OGJhMzVhN2I0ZmU1MDk4NDI4NTRhZGNhMjRhLi5lNmEyZWM0MmQ4ZWM1
ZTEyZmYwZWU0NDVhYTZkNmM3OWQzYmRmMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5oCkBAIC04MSw2ICs4MSwxNyBAQCBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB2b2lkIGFzc2VydFN0YWNrUG9pbnRlcklzQWxpZ25lZCgpCiAjZW5kaWYK
IH0KIAorY2xhc3MgU2xvd1BhdGhGcmFtZVRyYWNlciB7CitwdWJsaWM6CisgICAgQUxXQVlTX0lO
TElORSBTbG93UGF0aEZyYW1lVHJhY2VyKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCisg
ICAgeworICAgICAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICAgICAgQVNTRVJUKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGNhbGxGcmFtZSkgPCByZWludGVycHJldF9jYXN0PHZvaWQqPih2bS50
b3BFbnRyeUZyYW1lKSk7CisgICAgICAgIGFzc2VydFN0YWNrUG9pbnRlcklzQWxpZ25lZCgpOwor
ICAgICAgICB2bS50b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7CisgICAgfQorfTsKKwogY2xhc3Mg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHsKIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlcihWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtOTIsNCAr
MTAzLDM1IEBAIGNsYXNzIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB7CiAgICAgfQogfTsKIAorY2xh
c3MgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgeworcHVibGljOgorICAgIEFM
V0FZU19JTkxJTkUgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIoVk0mIHZtLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIDogbV92
bSh2bSkKKyNlbmRpZgorICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICAgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAg
ICAgICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbEZyYW1lKSA8IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHZtLnRvcEVudHJ5RnJhbWUpKTsKKyAgICAgICAgYXNzZXJ0U3RhY2tQ
b2ludGVySXNBbGlnbmVkKCk7CisjaWYgVVNFKEJVSUxUSU5fRlJBTUVfQUREUkVTUykKKyAgICAg
ICAgLy8gV2hlbiBkZWJ1Z2dpbmcgbW9kZSwgVVNFKEJVSUxUSU5fRlJBTUVfQUREUkVTUykgZW52
aXJvbm1lbnQgYWxzbyBwdXRzIGZyYW1lIHBvaW50ZXIgdG8gdm0udG9wQ2FsbEZyYW1lLgorICAg
ICAgICAvLyBBbmQgd2UgY2FuIGVuc3VyZSBpdCBpcyB3b3JraW5nIGJ5IGNvbXBhcmluZyB3aXRo
IHRoZSByZXN1bHQgb2YgX19idWlsdGluX2ZyYW1lX2FkcmVzcy4KKyAgICAgICAgQVNTRVJUKHZt
LnRvcENhbGxGcmFtZSA9PSBjYWxsRnJhbWUpOworICAgICAgICB2bS50b3BDYWxsRnJhbWUgPSBj
YWxsRnJhbWU7CisjZW5kaWYKKyAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgfkpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyKCkKKyAgICB7CisgICAgICAgIC8vIEZp
bGwgdm0udG9wQ2FsbEZyYW1lIHdpdGggaW52YWxpZCB2YWx1ZSB3aGVuIGxlYXZpbmcgZnJvbSBK
SVQgb3BlcmF0aW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgbV92bS50b3BDYWxsRnJhbWUgPSBiaXR3
aXNlX2Nhc3Q8Q2FsbEZyYW1lKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigweDBiYWRiZWVmMGJh
ZGJlZWZVTEwpKTsKKyAgICB9CisKKyAgICBWTSYgbV92bTsKKyNlbmRpZgorfTsKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAKaW5kZXggM2NlMjliZDRmYzc3MGI5NzU2MzEwNWYyNmM4NmU4YmJiOTBhNjkwOS4uMWNh
YzFjNDIxZGE4YjdjNjRiOTIyMGZhOWJmMzJjYzRmZGE2MDU2YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMjUyLDYgKzI1Miw3IEBAIHZv
aWQgQXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhjZXB0aW9uRnV6eihWTSYgdm0pCiAgICAgLy8gU2V0
IHVwIG9uZSBhcmd1bWVudC4KICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25FeGNlcHRpb25GdXp6KSksIEdQUkluZm86
Om5vblByZXNlcnZlZE5vblJldHVybkdQUik7CisgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OwogICAgIGNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSLCBPcGVyYXRpb25Q
dHJUYWcpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9m
UmVnaXN0ZXJzOyArK2kpIHsKQEAgLTkzMSw2ICs5MzIsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVy
czo6ZGVidWdDYWxsKFZNJiB2bSwgVl9EZWJ1Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQq
IGFyZwogI2Vsc2UKICNlcnJvciAiSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4i
CiAjZW5kaWYKKyAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGZ1bmN0aW9uKSksIHNjcmF0
Y2gpOwogICAgIGNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggMjc2MGVkNmM3MmUyZWQxZjMx
NTBjM2ZmOTlkMTU0MDA1NTkwMjE0Ni4uYmM1OTUzNTQxMGZhNTBiYmU5ZTkyZjljZDQzNmM4MTJi
OTRlNWZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CkBAIC02NSw2ICs2NSwxNCBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9B
c3NlbWJsZXIgewogICAgIFZNJiB2bSgpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT52bSgpOyB9CiAg
ICAgQXNzZW1ibGVyVHlwZV9UJiBhc3NlbWJsZXIoKSB7IHJldHVybiBtX2Fzc2VtYmxlcjsgfQog
CisgICAgdm9pZCBwcmVwYXJlQ2FsbE9wZXJhdGlvbihWTSYgdm0pCisgICAgeworICAgICAgICBV
TlVTRURfUEFSQU0odm0pOworI2lmICFVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKSB8fCAhQVNT
RVJUX0RJU0FCTEVECisgICAgICAgIHN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCAmdm0udG9wQ2FsbEZyYW1lKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgY2hlY2tTdGFj
a1BvaW50ZXJBbGlnbm1lbnQoKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBjaGVjayBpcyBib3Ro
IHVubmVlZGVkIGFuZCBoYXJkZXIgdG8gd3JpdGUgY29ycmVjdGx5IGZvciBBUk02NApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCmluZGV4IGI0YjQ2OTczYjkxNDNk
NDI0ZDRlNDMxYWU0MmJhNGU0M2MzYzMyNjMuLjg0ODVhOWZiZDY4M2RiZWY2NThmNjcwODgxM2Y3
NThkNWRkYjk4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxI
ZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5j
cHAKQEAgLTYxLDYgKzYxLDcgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmVuc3VyZVNoYWRvd0NoaWNr
ZW5QYWNrZXQoVk0mIHZtLCBHUFJSZWcgc2hhZG93UGFja2V0LCBHUFJSZWcKICAgICBsb2FkUHRy
KEFkZHJlc3Moc2NyYXRjaDFOb25BcmdHUFIpLCBzaGFkb3dQYWNrZXQpOwogICAgIEp1bXAgb2sg
PSBicmFuY2hQdHIoQmVsb3csIHNoYWRvd1BhY2tldCwgVHJ1c3RlZEltbVB0cihzaGFkb3dDaGlj
a2VuLT5sb2dFbmQoKSkpOwogICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblBy
b2Nlc3NTaGFkb3dDaGlja2VuTG9nKT4oVHJ1c3RlZEltbVB0cigmdm0pKTsKKyAgICBwcmVwYXJl
Q2FsbE9wZXJhdGlvbih2bSk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKSksIHNj
cmF0Y2gxTm9uQXJnR1BSKTsKICAgICBjYWxsKHNjcmF0Y2gxTm9uQXJnR1BSLCBPcGVyYXRpb25Q
dHJUYWcpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzaGFkb3dDaGlja2VuLT5hZGRyZXNzT2ZM
b2dDdXJzb3IoKSksIHNjcmF0Y2gxTm9uQXJnR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NDYWxsSGVscGVycy5oCmluZGV4IGQ4MTBkMjM0Nzg3ZTU4OWZjYTY2ZWJjYjRhNDhiMjRmOTNk
Y2RlZDEuLjAxNWYwM2I3NWI2N2M5Zjc1N2NiZTc0MDRkNGUxYTU2OTM0YTI4MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtODQsMTUgKzg0LDYgQEAgY2xh
c3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHBva2Uo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyBhcmd1bWVudEluZGV4
IC0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyk7CiAgICAgfQogCi0gICAgdm9p
ZCBwcmVwYXJlQ2FsbE9wZXJhdGlvbihWTSYgdm0pCi0gICAgewotI2lmIFVTRShCVUlMVElOX0ZS
QU1FX0FERFJFU1MpCi0gICAgICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0jZWxzZQotICAgICAgICBz
dG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFtZSk7Ci0j
ZW5kaWYKLSAgICB9Ci0KIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBOdW1iZXJP
ZlJlZ2lzdGVycywgdHlwZW5hbWUgUmVnVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDM4MDk0NjFhYmU1Mjc3NTU3YWUxYTcyZmUxNjdhY2Fj
YzFhYjM5ZmIuLjljNjc2ZjE1MDQ2NTliZjQwMThkYTM4MjRmMjZjOWUyOTBjNTgyYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTA3LDE3ICsx
MDcsMTcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vy
cm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIC8vIFdlIHBhc3MgaW4gb3VyIG93biBjb2Rl
IGJsb2NrLCBiZWNhdXNlIHRoZSBjYWxsZnJhbWUgaGFzbid0IGJlZW4gcG9wdWxhdGVkLgogICAg
IFZNJiB2bSA9IGNvZGVCbG9jay0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGNhbGxGcmFtZS0+Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKHZtLCBj
b2RlQmxvY2spOwogICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCksIHNjb3BlKTsKIH0KIAotdm9pZCBKSVRfT1BFUkFUSU9OIHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yRnJvbVRodW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmsoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICBnZW5lcmljVW53aW5k
KHZtLCBjYWxsRnJhbWUpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIGludDMyX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgaW50MzJfdCBtaXNzaW5nQXJnQ291bnQgPSBDb21tb25T
bG93UGF0aHM6OmFyaXR5Q2hlY2tGb3Iodm0sIGNhbGxGcmFtZSwgQ29kZUZvckNhbGwpOwpAQCAt
MTQ1LDcgKzE0NSw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3RB
cml0eUNoZWNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlD
aGVja0Zvcih2bSwgY2FsbEZyYW1lLCBDb2RlRm9yQ29uc3RydWN0KTsKQEAgLTE2Miw3ICsxNjIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7
CiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKQEAgLTE3OCw3ICsxNzgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAK
ICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKQEAgLTE5Miw3
ICsxOTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5
SWRPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCkBAIC0y
MTMsNyArMjEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkRGlyZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAg
ICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWREaXJlY3RHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogCkBAIC0yNDgsNyArMjQ4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBJZGVudGlmaWVy
IGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKIApAQCAtMjcxLDcgKzI3MSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICAKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAKQEAg
LTI5MSw3ICsyOTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5SWRHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIAogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKQEAgLTMwOSw3ICszMDksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZQogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAKICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKQEAgLTMzMSw3ICsz
MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRXaXRo
VGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlk
KTsKIAogICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwpAQCAtMzQ5LDcgKzM0OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlz
R2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwog
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CkBAIC0zNjUs
NyArMzY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2wKICAgICAKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlk
KHZtLCB1aWQpOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFz
ZSk7CkBAIC0zODgsNyArMzg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25JbkJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWMKIAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CkBAIC00MTUsNyAr
NDE1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWRHZW5l
cmljKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
SWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBAIC00NDAs
NyArNDQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWRP
cHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBAIC00
NjksNyArNDY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5
VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2UKICAgICAKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
Q29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlLCBKU1ZhbHVlOjpk
ZWNvZGUoa2V5KSkpKTsKIH0KQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cgogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgc3R1Yklu
Zm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWMKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IAogICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgIApAQCAtNTE2LDcgKzUx
Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAK
QEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdE5vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7CiAgICAgCkBAIC01NTIsNyArNTUyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb21VaWQodm0sIHVpZCk7CkBAIC01ODMsNyArNTgzLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWMKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwpAQCAtNjE0LDcgKzYxNCw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iCiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCiAgICAgSWRlbnRpZmllciBp
ZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CkBAIC02NDQsNyArNjQ0LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKICAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKQEAgLTg1OSw3
ICs4NTksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZAogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7
CkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRC
YXNlVmFsdWUpOwpAQCAtOTcyLDcgKzk3Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHN1YnNj
cmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKQEAgLTk4Niw3ICs5ODYs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxHZW5lcmljKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkU3Vic2NyaXB0KTsKQEAgLTEyMTUsNyArMTIxNSw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbXBhcmVMZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKICAgICByZXR1cm4ganNM
ZXNzPHRydWU+KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUxlc3NFcShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAg
cmV0dXJuIGpzTGVzc0VxPHRydWU+KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQpAQCAtMTIzMyw3ICsxMjMz
LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogCiAgICAgcmV0dXJuIGpzTGVzczxmYWxzZT4oZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMiksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSk7CiB9CkBAIC0x
MjQyLDcgKzEyNDIsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3Jl
YXRlckVxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4ganNMZXNzRXE8ZmFsc2U+KGdsb2JhbE9iamVj
dCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSkpOwogfQpAQCAtMTI1MSw3ICsxMjUxLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ29tcGFyZUVxKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1YKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVxdWFs
U2xvd0Nhc2VJbmxpbmUoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CkBAIC0xMjY0LDcgKzEyNjQsNyBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICBib29sIHJlc3VsdCA9IGFzU3RyaW5nKGxlZnQpLT5lcXVhbChnbG9iYWxPYmplY3QsIGFz
U3RyaW5nKHJpZ2h0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTEyNzgsNyArMTI3OCw3IEBA
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAogICAgIEpTVmFsdWUgc3JjMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBK
U1ZhbHVlIHNyYzIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CkBAIC0xMjkwLDcgKzEy
OTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0
aFByb2ZpbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheU5lZ2F0aXZl
SW5kZXhlZChnbG9iYWxPYmplY3QsIHByb2ZpbGUsIHZhbHVlcywgc2l6ZSkpOwogfQogCkBAIC0x
Mjk4LDcgKzEyOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEpTR2xvYmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBzaXplVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
c2l6ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXpl
UXVpcmsoZ2xvYmFsT2JqZWN0LCBwcm9maWxlLCBzaXplVmFsdWUpKTsKIH0KQEAgLTEzMjAsNyAr
MTMyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rp
b24oVk0qIHZtUG9pbnRlciwgSlNTY29wZSogc2NvcGUsCiB7CiAgICAgVk0mIHZtID0gKnZtUG9p
bnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAKQEAgLTEzMjgsNyArMTMyOCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIG5l
d0Z1bmN0aW9uQ29tbW9uPEpTRnVuY3Rpb24+KHZtLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCB0cnVlKTsKIH0KIApAQCAtMTMzNiw3ICsxMzM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihWTSogdm1Qb2ludGVyLCBKU1Nj
b3AKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gbmV3RnVuY3Rpb25Db21tb248
SlNHZW5lcmF0b3JGdW5jdGlvbj4odm0sIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNl
KTsKIH0KIApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2MKIHsK
ICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gbmV3RnVuY3Rpb25Db21tb248SlNHZW5l
cmF0b3JGdW5jdGlvbj4odm0sIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQog
CkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FzeW5jRnVuY3Rpb24oVk0qIHZtUG9pbnRlciwgSlNTY29wZSogcwogewogICAgIFZN
JiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBuZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rp
b24+KHZtLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAKQEAgLTEzNjAs
NyArMTM2MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5
bmNGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvCiB7CiAgICAgVk0mIHZtID0gKnZt
UG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgcmV0dXJuIG5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlvbj4odm0sIHNj
b3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCkBAIC0xMzY4LDcgKzEzNjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb24oVk0qIHZtUG9pbnRlciwgSgogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJl
dHVybiBuZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24+KHZtLCBzY29w
ZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBmYWxzZSk7CiB9CiAgICAgCkBAIC0xMzc2LDcgKzEzNzYs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJh
dG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IHJldHVybiBuZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24+KHZtLCBz
Y29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KICAgICAKQEAgLTEzODQsNyArMTM4
NCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmND
ZWxsKTsKICAgICBKU1ZhbHVlIG5hbWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE5hbWUpOwpA
QCAtMTM5NSw3ICsxMzk1LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09i
amVjdChWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSYgdm0g
PSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgc3RydWN0dXJl
KTsKIH0KQEAgLTE0MDQsNyArMTQwNCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdQcm9taXNlKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAg
IFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIEpTUHJvbWlzZTo6Y3JlYXRlKHZtLCBzdHJ1
Y3R1cmUpOwogfQpAQCAtMTQxMyw3ICsxNDEzLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0ludGVybmFsUHJvbWlzZShWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnUK
IHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU0ludGVybmFsUHJvbWlzZTo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogfQpAQCAtMTQyMiw3ICsxNDIyLDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvcihWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBKU0dl
bmVyYXRvcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogfQpAQCAtMTQzMSw3ICsxNDMxLDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yKFZNKiB2bVBv
aW50ZXIsIFN0cnVjdHVyZSogc3RydWMKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJl
dHVybiBKU0FzeW5jR2VuZXJhdG9yOjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CiB9CkBAIC0xNDQx
LDcgKzE0NDEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogcgogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCiAgICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIp
OwogICAgIEFTU0VSVChyZWdleHAtPmlzVmFsaWQoKSk7CkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBV
bnVzZWRQdHIgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYW5kbGVUcmFwcyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgQVNT
RVJUKHZtLm5lZWRUcmFwSGFuZGxpbmcoKSk7CiAgICAgdm0uaGFuZGxlVHJhcHMoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ2Niw3ICsxNDY2LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKFZNKiB2bVBvaW50ZXIsIGludDMy
X3QgZGVidWdIb29rVHlwZSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHZtLmludGVy
cHJldGVyLT5kZWJ1ZyhjYWxsRnJhbWUsIHN0YXRpY19jYXN0PERlYnVnSG9va1R5cGU+KGRlYnVn
SG9va1R5cGUpKTsKIH0KQEAgLTE0ODIsNyArMTQ4Miw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5
dGVjCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4ID0gQnl0ZWNvZGVJbmRleDo6ZnJvbUJpdHMoYnl0ZWNvZGVJbmRleEJpdHMpOwogCiAgICAg
Ly8gRGVmZXIgR0MgZm9yIGEgd2hpbGUgc28gdGhhdCBpdCBkb2Vzbid0IHJ1biBiZXR3ZWVuIHdo
ZW4gd2UgZW50ZXIgaW50byB0aGlzCkBAIC0xNzI5LDcgKzE3MjksNyBAQCBjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChWTSogdm1Qb2ludGVyLCB1aW50MzJf
dCBieXRlY29kZQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXg6OmZyb21CaXRzKGJ5dGVjb2RlSW5kZXhCaXRzKTsK
IAogICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5yZXBsYWNlbWVudCgpOwpAQCAtMTc1Miw3ICsxNzUyLDcgQEAgY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVByb2ZpbGUoVk0qIHZt
UG9pbnRlciwgdWkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4Ojpmcm9tQml0cyhieXRlY29kZUluZGV4Qml0cyk7
CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBA
IC0xNzg2LDcgKzE3ODYsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRl
eChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIGFycmF5VmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEFycmF5VmFsdWUpOwogICAgIEFTU0VSVChpc0pTQXJyYXkoYXJyYXlWYWx1
ZSkpOwpAQCAtMTgxNiw3ICsxODE2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEdldHRlckJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQob2JqZWN0ICYmIG9iamVjdC0+
aXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmogPSBvYmplY3QtPmdldE9iamVjdCgp
OwpAQCAtMTgyOSw3ICsxODI5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFNl
dHRlckJ5SWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBBU1NFUlQob2JqZWN0ICYmIG9iamVjdC0+aXNP
YmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmogPSBvYmplY3QtPmdldE9iamVjdCgpOwpA
QCAtMTg0Miw3ICsxODQyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRl
ckJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcHV0QWNjZXNzb3JCeVZhbChnbG9iYWxPYmplY3Qs
IGFzT2JqZWN0KGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCksIGF0dHJp
YnV0ZSwgYXNPYmplY3QoZ2V0dGVyKSwgQWNjZXNzb3JUeXBlOjpHZXR0ZXIpOwogfQpAQCAtMTg1
MSw3ICsxODUxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFNldHRlckJ5VmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogCiAgICAgcHV0QWNjZXNzb3JCeVZhbChnbG9iYWxPYmplY3QsIGFzT2Jq
ZWN0KGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCksIGF0dHJpYnV0ZSwg
YXNPYmplY3Qoc2V0dGVyKSwgQWNjZXNzb3JUeXBlOjpTZXR0ZXIpOwogfQpAQCAtMTg2MSw3ICsx
ODYxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlclNldHRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogCiAgICAgQVNTRVJUKG9iamVjdCAmJiBvYmplY3QtPmlzT2JqZWN0KCkpOwogICAg
IEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3Qob2JqZWN0KTsKQEAgLTE4NzgsNyArMTg3
OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKIAogICAgIEFTU0VSVChvYmplY3QgJiYgb2JqZWN0LT5pc09iamVjdCgpKTsKICAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KG9iamVjdCk7CkBAIC0xODk1LDcgKzE4OTUs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wU2NvcGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgaW50MzJfdCBzY29wZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihzY29wZVJl
ZykuUmVnaXN0ZXI6OnNjb3BlKCk7CiAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKHNjb3BlUmVn
KSA9IHNjb3BlLT5uZXh0KCk7CkBAIC0xOTA1LDcgKzE5MDUsNyBAQCBpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBoYXNJbnN0
YW5jZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRIYXNJbnN0YW5jZSk7CkBAIC0yMDY4
LDcgKzIwNjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
VmFsR2VuZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRTdWJzY3JpcHQpOwogCkBAIC0yMDgwLDcgKzIwODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iagogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpOwpAQCAtMjEwMSw3ICsyMTAxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEpTR2xv
YmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgc3Vi
c2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIApAQCAtMjE0
OSw3ICsyMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlHZW5lcmljKEpTR2xvYmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRTdWJzY3JpcHQpOwogICAgIApAQCAtMjE3MCw3ICsyMTcwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CkBAIC0yMjIwLDcgKzIyMjAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWRKU1Jlc3VsdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGVsZXRlQnlJZChnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgdm0sIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSksIHVpZCkpKTsKIH0KIApA
QCAtMjIyOCw3ICsyMjI4LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRl
QnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlMKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBkZWxldGVCeUlkKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgdWlkKTsKIH0KIApA
QCAtMjI2MCw3ICsyMjYwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWxldGVCeVZhbEpTUmVzdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpKSkpOwogfQogCkBAIC0y
MjY4LDcgKzIyNjgsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSgogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIGRlbGV0ZUJ5VmFsKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCB2bSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRLZXkpKTsKIH0KIApAQCAtMjI3Niw3ICsyMjc2LDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDZWwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU1Zh
bHVlOjpkZWNvZGUob2JqZWN0VmFsdWUpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC0yMjkx
LDcgKzIyOTEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29w
ZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgSlNTY29wZSogY3VycmVudFNjb3BlID0ganNDYXN0PEpTU2NvcGUq
PihjdXJyZW50U2NvcGVDZWxsKTsKICAgICByZXR1cm4gSlNXaXRoU2NvcGU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBjdXJyZW50U2NvcGUsIG9iamVjdCk7CiB9CkBAIC0yMzAwLDcgKzIzMDAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNlT2YoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTVmFsdWUgcHJvdG8gPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvKTsKICAgICAK
QEAgLTIzMTIsNyArMjMxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW5zdGFuY2VPZkdlbmVyaWMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkUHJvdG8pOwogICAgIApAQCAtMjMyNiw3ICsyMzI2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkUHJvdG8pOwpAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGds
b2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBzaXplRnJhbWVG
b3JGb3J3YXJkQXJndW1lbnRzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCB2bSwgbnVtVXNlZFN0
YWNrU2xvdHMpOwogfQogCkBAIC0yMzUzLDcgKzIzNTMsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVu
dHMgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7CiAgICAgcmV0dXJuIHNpemVG
cmFtZUZvclZhcmFyZ3MoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIHZtLCBhcmd1bWVudHMsIG51
bVVzZWRTdGFja1Nsb3RzLCBmaXJzdFZhckFyZ09mZnNldCk7CiB9CkBAIC0yMzYyLDcgKzIzNjIs
NyBAQCBDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBGb3J3YXJkQXJndW1l
bnRzRnJhbWUoSlNHbG9iYWxPYmplY3QqIGdsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgc2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIG5ld0NhbGxGcmFtZSwgbGVuZ3RoKTsKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQpA
QCAtMjM3MSw3ICsyMzcxLDcgQEAgQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNl
dHVwVmFyYXJnc0ZyYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRBcmd1bWVudHMpOwogICAgIHNldHVwVmFyYXJnc0ZyYW1lKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGFyZ3VtZW50cywgZmlyc3RWYXJBcmdPZmZzZXQs
IGxlbmd0aCk7CiAgICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKQEAgLTIzODEsNyArMjM4MSw3IEBA
IGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlw
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpT
VmFsdWUga2V5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpOwpAQCAtMjQwNyw3ICsyNDA3
LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktl
eVR5cGUoVk0qIHZtUG9pbnRlciwgRW5jb2RlZEoKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVy
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAg
ICBKU1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAKQEAgLTI0MjcsNyArMjQy
Nyw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoU3RyaW5nV2l0aFVua25v
d25LZXlUeXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICBKU1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNDUyLDcgKzI0NTIs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEZyb21TY29wZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0yNDk0
LDcgKzI0OTQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJbnN0cgogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
CkBAIC0yNTQ4LDcgKzI1NDgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3co
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkRXhjZXB0aW9uVmFsdWUpOwpAQCAtMjU2Miw3ICsyNTYyLDcgQEAgY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9IYXZlUHJvcGVydHlTdG9yYWdl
V2l0aEluaXRpYWwKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFTU0VSVCghb2JqZWN0
LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICBCdXR0ZXJmbHkqIHJl
c3VsdCA9IG9iamVjdC0+YWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgMCwgaW5pdGlh
bE91dE9mTGluZUNhcGFjaXR5KTsKQEAgLTI1NzQsNyArMjU3NCw3IEBAIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZShW
TSogdm1Qb2luCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICBCdXR0ZXJmbHkqIHJlc3Vs
dCA9IG9iamVjdC0+YWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgb2JqZWN0LT5zdHJ1
Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTaXplKTsKICAgICBvYmplY3QtPm51
a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkodm0sIG9iamVjdC0+c3RydWN0dXJlSUQoKSwgcmVz
dWx0KTsKQEAgLTI1ODUsNyArMjU4NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25P
U1JXcml0ZUJhcnJpZXIoVk0qIHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKQogewogICAgIFZNJiB2
bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNlbGwpOwogfQogCkBAIC0yNTkz
LDcgKzI1OTMsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xv
d1BhdGgoVk0qIHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKQogewogICAgIFZNJiB2bSA9ICp2bVBv
aW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyU2xvd1BhdGgoY2VsbCk7CiB9CiAKQEAgLTI2MDEs
NyArMjYwMSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25I
YW5kbGVyKFZNKiB2bVBvaW50ZXIpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgZ2VuZXJp
Y1Vud2luZCh2bSwgY2FsbEZyYW1lKTsKICAgICBBU1NFUlQodm0udGFyZ2V0TWFjaGluZVBDRm9y
VGhyb3cpOwogfQpAQCAtMjYxMCw3ICsyNjEwLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJhbWUoVk0qIHZtUG9pbnRlcikK
IHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBBU1NFUlQoY2FsbEZyYW1lLT5pc1N0YWNrT3Zl
cmZsb3dGcmFtZSgpKTsKICAgICBBU1NFUlQoanNDYXN0PEVycm9ySW5zdGFuY2UqPih2bS5leGNl
cHRpb25Gb3JJbnNwZWN0aW9uKCktPnZhbHVlKCkuYXNDZWxsKCkpLT5pc1N0YWNrT3ZlcmZsb3dF
cnJvcigpKTsKICAgICBnZW5lcmljVW53aW5kKHZtLCBjYWxsRnJhbWUpOwpAQCAtMjYyMSw3ICsy
NjIxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0aW9uKFZN
KiB2bVBvaW50ZXIpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2
bSwgY2FsbEZyYW1lKTsKIH0KIApAQCAtMjYzNCw3ICsyNjM0LDcgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enooSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0oc2NvcGUpOwogI2lmIENPTVBJTEVS
KEdDQ19DT01QQVRJQkxFKQpAQCAtMjY1NSw3ICsyNjU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmMKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNBZGQoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSkpOwogfQogCkBAIC0yNjY0LDcgKzI2NjQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkUHJvZmlsZWQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9m
aWxlZEFkZChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDIpLCAqYXJpdGhQcm9maWxlKSk7CiB9CiAKQEAgLTI2NzIsNyAr
MjY3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGRQ
cm9maWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKTsKICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKQEAg
LTI2OTcsNyArMjY5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVBZGRQcm9maWxlZE5vT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gYWRk
SUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwpAQCAtMjcwOCw3
ICsyNzA4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFk
ZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CkBAIC0y
NzI5LDcgKzI3MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlQWRkTm9PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
Mik7CkBAIC0yNzY3LDcgKzI3NjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhbHVlTXVsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuYwogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAgICByZXR1cm4gdW5wcm9maWxlZE11bChnbG9i
YWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIpOwogfQpAQCAtMjc3Niw3ICsyNzc2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZU11bE5vT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OwogCiAgICAgcmV0dXJuIHVucHJvZmlsZWRNdWwoZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBl
bmNvZGVkT3AyKTsKIH0KQEAgLTI3ODUsNyArMjc4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1dG8gbm9uT3B0aW1p
emVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVNdWxOb09wdGltaXplOwogICAgIGlmIChBcml0aFBy
b2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElDLT5hcml0aFByb2ZpbGUoKSkKQEAgLTI4MDMsNyAr
MjgwMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQ
cm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKIAogICAgIEFTU0VSVChhcml0aFByb2ZpbGUpOwogICAgIHJldHVybiBwcm9maWxl
ZE11bChnbG9iYWxPYmplY3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsICphcml0aFByb2ZpbGUp
OwpAQCAtMjgxMyw3ICsyODEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZU11bFByb2ZpbGVkT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGcKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUg
PSBtdWxJQy0+YXJpdGhQcm9maWxlKCk7CiAgICAgQVNTRVJUKGFyaXRoUHJvZmlsZSk7CkBAIC0y
ODMyLDcgKzI4MzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlTXVsUHJvZmlsZWROb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KgogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7CiAKICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG11bElD
LT5hcml0aFByb2ZpbGUoKTsKICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKQEAgLTI4NDQsNyAr
Mjg0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEpT
VmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7CiAKQEAgLTI4
NjYsNyArMjg2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJp
dGhOZWdhdGVQcm9maWxlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wZXJhbmQpOwog
ICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIUyhvcGVyYW5kKTsKQEAgLTI4OTMsNyArMjg5Myw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhOZWdhdGVQcm9m
aWxlZE9wdGltaXplKEpTR2xvYmFsT2JqZWN0CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9s
b2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgSlNW
YWx1ZSBvcGVyYW5kID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcGVyYW5kKTsKIApAQCAtMjky
Nyw3ICsyOTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0
aE5lZ2F0ZU9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAog
ICAgIEpTVmFsdWUgb3BlcmFuZCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3BlcmFuZCk7CiAK
QEAgLTI5NzgsNyArMjk3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVTdWIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gdW5wcm9maWxlZFN1YihnbG9iYWxPYmpl
Y3QsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIpOwogfQogCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAog
ICAgIHJldHVybiBwcm9maWxlZFN1Yih2bSwgZ2xvYmFsT2JqZWN0LCBlbmNvZGVkT3AxLCBlbmNv
ZGVkT3AyLCAqYXJpdGhQcm9maWxlKTsKIH0KQEAgLTI5OTcsNyArMjk5Nyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIGF1
dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGltaXplOwogICAg
IGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKSkK
QEAgLTMwMTUsNyArMzAxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVmFsdWVTdWJOb09wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiB1bnByb2ZpbGVkU3ViKGdsb2JhbE9i
amVjdCwgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7CiB9CkBAIC0zMDI0LDcgKzMwMjQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5hcml0aFByb2ZpbGUoKTsK
ICAgICBBU1NFUlQoYXJpdGhQcm9maWxlKTsKQEAgLTMwNDMsNyArMzA0Myw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5vT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPmFyaXRoUHJvZmlsZSgpOwogICAgIEFT
U0VSVChhcml0aFByb2ZpbGUpOwpAQCAtMzA1NCw3ICszMDU0LDcgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2coVk0qIHZtUG9pbnRlcikKIHsKICAg
ICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0Vu
dHJpZXModm0sICJMb2cgRnVsbCwgY2FsbGVkIGZyb20gaW5zaWRlIGJhc2VsaW5lIEpJVCJfcyk7
CiB9CiAKQEAgLTMwNjIsNyArMzA2Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
cm9jZXNzU2hhZG93Q2hpY2tlbkxvZyhWTSogdm1Qb2ludGVyKQogewogICAgIFZNJiB2bSA9ICp2
bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLnNoYWRvd0NoaWNrZW4oKSk7CiAgICAgdm0uc2hh
ZG93Q2hpY2tlbigpLT51cGRhdGUodm0sIGNhbGxGcmFtZSk7CiB9CkBAIC0zMDcxLDcgKzMwNzEs
NyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5j
YXRjaGFibGVBbmROb3RpZnlQcm9maWxlcihWTQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBSRUxFQVNFX0FTU0VS
VCghIXNjb3BlLmV4Y2VwdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAppbmRleCAwYWRkYmZmMmU0OGVlZmU2NGI1ZDAyMTVmZDZiMTM2MGY3ODcwMGI3
Li4zN2U4MzYxNWQ0N2ZhNmQ1MDRkODc4NjBkYTQ3Y2VlODY4MjVhNGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHVzaW5n
IERfSklUT3BlcmF0aW9uX0QgPSBkb3VibGUoSklUX09QRVJBVElPTiAqKShkb3VibGUpOwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoVk0qKSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFu
ZGxlckZyb21DYWxsZXJGcmFtZShWTSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WTUhhbmRsZUV4Y2VwdGlvbihWTSopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklU
X09QRVJBVElPTiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVj
dCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNr
T3ZlcmZsb3dFcnJvckZyb21UaHVuayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKENvZGVC
bG9jayopIFdURl9JTlRFUk5BTDsKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxs
QXJpdHlDaGVjayhKU0dsb2JhbE9iamVjdCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGI1ZWM5N2M5NDQzOGIyOGY2M2IwYjljOTZiMWNkMjFm
ZjQwNGM1YjEuLjdkYzQ2YjUxMDI1OTM1ZmQyMDAxYWRmNDRjMWJlMDU4YTYxNjhmY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9u
Q2FsbDxKU0ludGVybmFsUAogICAgICAgICBhdXRvIHNsb3dQYXRoVGh1bmsgPSBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SklUVGh1bmtQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Mo
dGFyZ2V0LnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8SklUVGh1bmtQdHJUYWc+KCkpOwogICAg
ICAgICBGVEw6OlNsb3dQYXRoQ2FsbEtleSBrZXkgPSB0aHVua3Mua2V5Rm9yU2xvd1BhdGhDYWxs
VGh1bmsoc2xvd1BhdGhUaHVuayk7CiAgICAgICAgIGtleSA9IGtleS53aXRoQ2FsbFRhcmdldChu
ZXdDYWxsZWVGdW5jdGlvbik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChj
YWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHRodW5rcy5nZXRTbG93UGF0aENhbGxU
aHVuayhrZXkpLnJldGFnZ2VkQ29kZTxPcGVyYXRpb25QdHJUYWc+KCkpKTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4odGh1bmtzLmdldFNsb3dQYXRoQ2FsbFRodW5rKHZtLCBrZXkpLnJldGFnZ2VkQ29kZTxPcGVy
YXRpb25QdHJUYWc+KCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbHNlIC8vIEVOQUJM
RShGVExfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwCmluZGV4IDZiYmM2Njk3MWVlMzJlNzJlYzVkZWViOTU2ZjVlODQ2NGYyZWZjNzYuLjQ2ODYx
NTBkYTM5MDg2MThhYjJlYmE2NTk3ZjkwNjMxNzIxZWQ3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTExNzMsOCArMTE3Myw5IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYm91bmRUaGlzTm9BcmdzRnVuY3Rp
b25DYWxsR2VuZXJhdG9yKFZNJiB2CiAgICAgLy8gVGhyb3cgU3RhY2sgT3ZlcmZsb3cgZXhjZXB0
aW9uCiAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KHZtLnRvcEVudHJ5RnJhbWUpOwogICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMywgSlNCb3VuZEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
KSwgR1BSSW5mbzo6cmVnVDMpOwotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayk+KEdQUkluZm86OnJlZ1QzKTsKLSAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4odGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwgR1BSSW5mbzo6bm9u
QXJnR1BSMCk7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvblRocm93
U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKT4oR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5w
cmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93
U3RhY2tPdmVyZmxvd0Vycm9yRnJvbVRodW5rKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAg
IGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlv
blB0clRhZyk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRy
VGFnKTsKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA2MGI0OWY5MTE2M2Y1
M2M0ZDQ3ODViZDExNDNkYTVkOWNlMDQ2YWY3Li41Nzk4ZDMwYjhiNTg2YjczNGI4ZmQ4NjA0ODg4
NGZkZGU3NmIwOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBM
TEludCB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
OyBcCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCk7IFwKICAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7IFwKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCisgICAgU2xvd1BhdGhGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7IFwKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKQogCiAjaWZuZGVmIE5ERUJVRwpAQCAtNTM2LDEwICs1MzYs
MTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiAgICAgVk0mIHZtID0gY29k
ZUJsb2NrLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgLy8gSXQncyBvayB0byBjcmVhdGUgdGhlIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciBoZXJlIGJlZm9yZSB3ZQorICAgIC8vIEl0J3Mgb2sgdG8gY3JlYXRlIHRoZSBTbG93UGF0aEZy
YW1lVHJhY2VyIGhlcmUgYmVmb3JlIHdlCiAgICAgLy8gY29udmVydFRvU3RhY2tPdmVyZmxvd0Zy
YW1lKCkgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxsZWQKICAgICAvLyBhZnRl
ciB0aGUgZnJhbWUgaGFzIGJlZW4gcHJvcHVsYXRlZCB3aXRoIGEgcHJvcGVyIENvZGVCbG9jayBh
bmQgY2FsbGVlLgotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKICAg
ICBMTElOVF9TRVRfUENfRk9SX1NUVUJTKCk7CiAKQEAgLTE0MzYsNyArMTQzNiw3IEBAIHN0YXRp
YyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoQ2FsbEZyYW1lKiBjYWxsZWVGcmFt
ZSwgSlNWYWx1ZSBjYWxsZWUsCiAgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6
SlMpOwogICAgIAogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Okhvc3QpIHsKLSAg
ICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsK
KyAgICAgICAgICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7
CiAgICAgICAgICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNhbGxlZSkpOwog
ICAgICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxs
RGF0YS5uYXRpdmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwg
Y2FsbGVlRnJhbWUpKTsKICAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGdsb2JhbE9iamVj
dCwgY2FsbGVlRnJhbWUsIExMSW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
LCBDRnVuY3Rpb25QdHJUYWcpOwpAQCAtMTQ1Niw3ICsxNDU2LDcgQEAgc3RhdGljIFNsb3dQYXRo
UmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU1ZhbHVl
IGNhbGxlZSwKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpKUyk7
CiAgICAgCiAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6SG9zdCkgewot
ICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7Cisg
ICAgICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZWVGcmFtZSk7CiAgICAg
ICAgIGNhbGxlZUZyYW1lLT5zZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgIHZt
Lmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24oYXNPYmplY3QoY2FsbGVlKS0+Z2xvYmFsT2JqZWN0KHZtKSwgY2FsbGVlRnJh
bWUpKTsKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFt
ZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0
clRhZyk7CkBAIC0xNzczLDcgKzE3NzMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZGVidWcpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFuZGxlX2V4Y2VwdGlv
bikKIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgU2xvd1BhdGhGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgY2Fs
bEZyYW1lKTsKICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BdG9taWNzT2JqZWN0LmNwcAppbmRleCA2OWRlYjY2OGNmMWU3NTY4MzBm
Nzc2MTQxZTIxYTJiZmUzZGY5Y2VkLi5iNjhiMmYzZDMyOTUzNTVmNzJiMWU5ODFkMWZhNmU0ZWQz
NzVlNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNz
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcApAQCAtNDcxLDcgKzQ3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXRvbWljc0FkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1ZhbHVl
OjpkZWNvZGUoYmFzZSksIEpTVmFsdWU6OmRlY29kZShpbmRleCksIEpTVmFsdWU6OmRlY29kZShv
cGVyYW5kKX07CiAgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdzKHZtLCBnbG9iYWxP
YmplY3QsIGFyZ3MsIEFkZEZ1bmMoKSk7CiB9CkBAIC00ODAsNyArNDgwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BdG9taWNzQW5kKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFs
dWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGluZGV4
KSwgSlNWYWx1ZTo6ZGVjb2RlKG9wZXJhbmQpfTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9u
V2l0aEFyZ3Modm0sIGdsb2JhbE9iamVjdCwgYXJncywgQW5kRnVuYygpKTsKIH0KQEAgLTQ4OSw3
ICs0ODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3ND
b21wYXJlRXhjaGFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsbwogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBK
U1ZhbHVlOjpkZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUoZXhwZWN0ZWQpLCBKU1ZhbHVl
OjpkZWNvZGUobmV3VmFsdWUpfTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0aEFyZ3Mo
dm0sIGdsb2JhbE9iamVjdCwgYXJncywgQ29tcGFyZUV4Y2hhbmdlRnVuYygpKTsKIH0KQEAgLTQ5
OCw3ICs0OTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21p
Y3NFeGNoYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2Up
LCBKU1ZhbHVlOjpkZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUob3BlcmFuZCl9OwogICAg
IHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyh2bSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBF
eGNoYW5nZUZ1bmMoKSk7CiB9CkBAIC01MDcsNyArNTA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25BdG9taWNzSXNMb2NrRnJlZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2IKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIHJldHVybiBpc0xvY2tG
cmVlKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHNpemUpKTsKIH0KIApAQCAtNTE1LDcg
KzUxNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc0xv
YWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgIEpTVmFsdWUgYXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNW
YWx1ZTo6ZGVjb2RlKGluZGV4KX07CiAgICAgcmV0dXJuIGF0b21pY09wZXJhdGlvbldpdGhBcmdz
KHZtLCBnbG9iYWxPYmplY3QsIGFyZ3MsIExvYWRGdW5jKCkpOwogfQpAQCAtNTI0LDcgKzUyNCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXRvbWljc09yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICBKU1ZhbHVlIGFyZ3NbXSA9IHtKU1ZhbHVlOjpkZWNvZGUoYmFzZSksIEpTVmFsdWU6
OmRlY29kZShpbmRleCksIEpTVmFsdWU6OmRlY29kZShvcGVyYW5kKX07CiAgICAgcmV0dXJuIGF0
b21pY09wZXJhdGlvbldpdGhBcmdzKHZtLCBnbG9iYWxPYmplY3QsIGFyZ3MsIE9yRnVuYygpKTsK
IH0KQEAgLTUzMyw3ICs1MzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkF0b21pY3NTdG9yZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVj
b2RlKGJhc2UpLCBKU1ZhbHVlOjpkZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUob3BlcmFu
ZCl9OwogICAgIHJldHVybiBhdG9taWNPcGVyYXRpb25XaXRoQXJncyh2bSwgZ2xvYmFsT2JqZWN0
LCBhcmdzLCBTdG9yZUZ1bmMoKSk7CiB9CkBAIC01NDIsNyArNTQyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BdG9taWNzU3ViKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3BlcmF0aW9uUHJv
bG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTVmFsdWUg
YXJnc1tdID0ge0pTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNWYWx1ZTo6ZGVjb2RlKGluZGV4KSwg
SlNWYWx1ZTo6ZGVjb2RlKG9wZXJhbmQpfTsKICAgICByZXR1cm4gYXRvbWljT3BlcmF0aW9uV2l0
aEFyZ3Modm0sIGdsb2JhbE9iamVjdCwgYXJncywgU3ViRnVuYygpKTsKIH0KQEAgLTU1MSw3ICs1
NTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkF0b21pY3NYb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CiAgICAgSlNWYWx1ZSBhcmdzW10gPSB7SlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1Zh
bHVlOjpkZWNvZGUoaW5kZXgpLCBKU1ZhbHVlOjpkZWNvZGUob3BlcmFuZCl9OwogICAgIHJldHVy
biBhdG9taWNPcGVyYXRpb25XaXRoQXJncyh2bSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBYb3JGdW5j
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggOTBjM2RlN2EzNDMwYmM3MTg5Yjk2ZjAzODkwNzNmNThhZDBjMWU3OC4u
ODY2ZDJhOWMyZTM1MGRmNmFjMDhmODViYzkyZDNlMTJhYzdlMDY0MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsgXAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBj
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOyBcCiAgICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgp
OyBcCi0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsgXAor
ICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOyBcCiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7IFwKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSkKIApAQCAtMTc1LDcgKzE3NSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jYWxsX2FyaXR5Q2hlY2spCiAgICAgaWYgKFVOTElLRUxZKHNsb3RzVG9BZGQgPCAwKSkg
ewogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IENvbW1vblNsb3dQYXRoczo6Y29kZUJs
b2NrRnJvbUNhbGxGcmFtZUNhbGxlZShjYWxsRnJhbWUsIENvZGVGb3JDYWxsKTsKICAgICAgICAg
Y2FsbEZyYW1lLT5jb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUodm0sIGNvZGVCbG9jayk7Ci0g
ICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
ICAgIFNsb3dQYXRoRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICBF
cnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwogICAgICAgICB0aHJvd0FyaXR5Q2hlY2tTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiAgICAgaWYgKFVOTElLRUxZKHNsb3RzVG9B
ZGQgPCAwKSkgewogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IENvbW1vblNsb3dQYXRo
czo6Y29kZUJsb2NrRnJvbUNhbGxGcmFtZUNhbGxlZShjYWxsRnJhbWUsIENvZGVGb3JDb25zdHJ1
Y3QpOwogICAgICAgICBjYWxsRnJhbWUtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSh2bSwg
Y29kZUJsb2NrKTsKLSAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICAgICAgU2xvd1BhdGhGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAgICAgICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKICAgICAgICAg
dGhyb3dBcml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSk7CiAgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpKSwgY2FsbEZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGE4ZTk3YzAzMWQ3NmE1OGZlZjdlNWE4
MDQ5MzdhNmJiYTEwYTAyNjguLmY0YmE2MzIwMDYyZjZmOTFmYTRlZjlkNDBlZGFjNTJkNjVlZTI4
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcApAQCAtNzI0LDcgKzcyNCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIoSlNHbG9iYWxPYmplCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBSZWdFeHAqIHJlZ0V4cCA9IHNlYXJjaFZhbHVlLT5yZWdFeHAo
KTsKQEAgLTc0Nyw3ICs3NDcsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3Ry
aW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZyhKU0dsb2JhbE9iamVjdAogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC05MjUsNyArOTI1LDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmlj
KEpTR2xvYmFsT2JqZWN0KiBnbG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAg
IAogICAgIHJldHVybiByZXBsYWNlKAogICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjpkZWNvZGUoc2VhcmNoVmFs
dWUpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDE5
Yzg4OTk3OTQ4OTJiMGI1Y2RiZmQ5OTBmNWY5ZjkwNmQ4ZGJkMWIuLjNiMTE4N2U5ZjU4NWRmZjkz
MGM4ODk0MmZlOWY5ZDk1MTQyZTJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKQEAgLTc1Nyw3ICs3NTcsNyBAQCBjbGFzcyBET01KSVRHZXR0ZXIgOiBw
dWJsaWMgRE9NSklUTm9kZSB7CiAgICAgICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwogICAgICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAg
ICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
ICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAg
ICAgICAgICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
c3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyKj4ocG9pbnRlciktPnZhbHVlKCkpKTsKICAgICAgICAg
fQogCkBAIC04NTEsNyArODUxLDcgQEAgY2xhc3MgRE9NSklUR2V0dGVyQ29tcGxleCA6IHB1Ymxp
YyBET01KSVROb2RlIHsKICAgICAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2Nv
cGU7CiAgICAgICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgICAg
ICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgICAg
ICAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgICAgICAgICAgYXV0byogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8RE9NSklUTm9kZSo+KHBv
aW50ZXIpOwogICAgICAgICAgICAgYXV0byogZG9taml0R2V0dGVyQ29tcGxleCA9IGpzRHluYW1p
Y0Nhc3Q8RE9NSklUR2V0dGVyQ29tcGxleCo+KHZtLCBvYmplY3QpOwpAQCAtOTU4LDcgKzk1OCw2
IEBAIGNsYXNzIERPTUpJVEZ1bmN0aW9uT2JqZWN0IDogcHVibGljIERPTUpJVE5vZGUgewogICAg
IHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICAgICAgRE9NSklUTm9kZSogdGhpc09iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8RE9NSklUTm9kZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKQEAgLTk3Miw3
ICs5NzEsNyBAQCBjbGFzcyBET01KSVRGdW5jdGlvbk9iamVjdCA6IHB1YmxpYyBET01KSVROb2Rl
IHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihub2RlLT52YWx1ZSgpKSk7CiAgICAgfQogCkBAIC0xMDUxLDcgKzEw
NTAsNyBAQCBjbGFzcyBET01KSVRDaGVja1N1YkNsYXNzT2JqZWN0IDogcHVibGljIERPTUpJVE5v
ZGUgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKG5vZGUtPnZhbHVlKCkpKTsKICAgICB9CiAKQEAgLTExMTQsNyAr
MTExMyw3IEBAIGNsYXNzIERPTUpJVEdldHRlckJhc2VKU09iamVjdCA6IHB1YmxpYyBET01KSVRO
b2RlIHsKICAgICAgICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAg
ICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgICAgICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgICAgICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgICAgICAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwog
ICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4ocG9p
bnRlcik7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJv
dG90eXBlRGlyZWN0KHZtKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDdiOGM1ZDkwMDJjNjY0OGM1ZDk4
ODYzNTE0YWEyZTg4N2ViYTgxNmUuLmZiYzNhMTdiMzY1MGEyMTBkZmY2YzFmYTY1ZTJkMWM2MjA0
NzljNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcApAQCAtMTc2OCw3ICsxNzY4LDcgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6ZW1p
dExvb3BUaWVyVXBDaGVjayh1aW50MzJfdCBsb29wSW5kZXgpCiAgICAgICAgICAgICBmb3JjZU9T
UkVudHJ5LmxpbmsoJmppdCk7CiAgICAgICAgICAgICB0aWVyVXAubGluaygmaml0KTsKIAotICAg
ICAgICAgICAgaml0LnByb2JlKHRyaWdnZXJPU1JFbnRyeU5vdywgb3NyRW50cnlEYXRhUHRyKTsK
KyAgICAgICAgICAgIGppdC5wcm9iZShvcGVyYXRpb25XYXNtVHJpZ2dlck9TUkVudHJ5Tm93LCBv
c3JFbnRyeURhdGFQdHIpOwogICAgICAgICAgICAgaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxw
ZXJzOjpaZXJvLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLmxpbmtUbyh0aWVyVXBSZXN1bWUsICZq
aXQpOwogICAgICAgICAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBXYXNt
RW50cnlQdHJUYWcpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCA0ZjAxNTcxZTc0N2E5ODQ2MzczZmVlYWU0
ZGYzYmU0NzBmOWQxZGRiLi5kYzNhMjExMGQzNTQ3ZmYzNmVmMDRkMWYzMDNmZWE2OGQ5NTFlZDMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCkBAIC0xMjcxLDcgKzEyNzEsNyBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRMb29wVGll
clVwQ2hlY2sodWludDMyX3QgbG9vcEluZGV4KQogICAgICAgICAgICAgZm9yY2VPU1JFbnRyeS5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgdGllclVwLmxpbmsoJmppdCk7CiAKLSAgICAgICAgICAg
IGppdC5wcm9iZSh0cmlnZ2VyT1NSRW50cnlOb3csIG9zckVudHJ5RGF0YVB0cik7CisgICAgICAg
ICAgICBqaXQucHJvYmUob3BlcmF0aW9uV2FzbVRyaWdnZXJPU1JFbnRyeU5vdywgb3NyRW50cnlE
YXRhUHRyKTsKICAgICAgICAgICAgIGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVy
bywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKS5saW5rVG8odGllclVwUmVzdW1lLCAmaml0KTsKICAg
ICAgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgV2FzbUVudHJ5UHRy
VGFnKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3Bl
cmF0aW9ucy5jcHAKaW5kZXggNWJjNTJmZWIxZTEwMzE4OWFiOThmMzgzM2I4YWUzMmZmNTA1Mzc0
YS4uNTc0NjNlMjVlM2FhMWI1ZjFlODQyZDYxYzAzY2EwMTJlZTBmYjgwMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAtNTEsMTEgKzUxLDEx
IEBAIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJv
d0JhZEk2NChKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbldhc21UaHJvd0JhZEk2NChKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3Rh
bmNlKQogewogICAgIFZNJiB2bSA9IGluc3RhbmNlLT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAogICAgIHsKICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMjQsNyArMjI0LDcgQEAg
c3RhdGljIHZvaWQgZG9PU1JFbnRyeShJbnN0YW5jZSogaW5zdGFuY2UsIFByb2JlOjpDb250ZXh0
JiBjb250ZXh0LCBCQlFDYWxsZWUmIGMKICAgICBjb250ZXh0LmdwcihHUFJJbmZvOjphcmd1bWVu
dEdQUjEpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcj4ob3NyRW50cnlDYWxsZWUuZW50cnlw
b2ludCgpLmV4ZWN1dGFibGVBZGRyZXNzPD4oKSk7CiB9CiAKLXZvaWQgSklUX09QRVJBVElPTiB0
cmlnZ2VyT1NSRW50cnlOb3coUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uV2FzbVRyaWdnZXJPU1JFbnRyeU5vdyhQcm9iZTo6Q29udGV4dCYgY29u
dGV4dCkKIHsKICAgICBPU1JFbnRyeURhdGEmIG9zckVudHJ5RGF0YSA9ICpjb250ZXh0LmFyZzxP
U1JFbnRyeURhdGEqPigpOwogICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSBvc3JFbnRyeURh
dGEuZnVuY3Rpb25JbmRleCgpOwpAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiB0cmlnZ2VyT1NSRW50cnlOb3coUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpCiAgICAgcmV0dXJu
IHJldHVybldpdGhvdXRPU1JFbnRyeSgpOwogfQogCi12b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dl
clRpZXJVcE5vdyhJbnN0YW5jZSogaW5zdGFuY2UsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uV2FzbVRyaWdnZXJUaWVyVXBOb3coSW5zdGFuY2Uq
IGluc3RhbmNlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4KQogewogICAgIFdhc206OkNvZGVCbG9j
ayYgY29kZUJsb2NrID0gKmluc3RhbmNlLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQoaW5zdGFu
Y2UtPm1lbW9yeSgpLT5tb2RlKCkgPT0gY29kZUJsb2NrLm1vZGUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuaAppbmRleCBhZjA1NjkzYzEzMjhmN2I1MjEx
NDdlZDk4NjVhMmU4YWRmZTdmODZjLi4zNWY5OWFlNWY0ZDM1NTFlMDg5NDQ5YmM3NTcxOTQ0ZWQ2
YzNiYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmgK
QEAgLTQwLDkgKzQwLDkgQEAgbmFtZXNwYWNlIFdhc20gewogCiBjbGFzcyBJbnN0YW5jZTsKIAot
dm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJPU1JFbnRyeU5vdyhQcm9iZTo6Q29udGV4dCYpIFdU
Rl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGllclVwTm93KEluc3RhbmNl
KiwgdWludDMyX3QgZnVuY3Rpb25JbmRleCkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRocm93QmFkSTY0KEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25XYXNtVHJpZ2dlck9TUkVudHJ5Tm93
KFByb2JlOjpDb250ZXh0JikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbldhc21UcmlnZ2VyVGllclVwTm93KEluc3RhbmNlKiwgdWludDMyX3QgZnVuY3Rpb25JbmRl
eCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbldhc21UaHJvd0Jh
ZEk2NChKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSBXVEZfSU5URVJOQUw7CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21UaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5j
cHAKaW5kZXggYWU0MjAyZWYxYjIyYTAwYmI2MDBmOGMzZjkzZDY0NWQxNGI2NzAyMy4uZjJiM2Vl
MTVmZDlhZjIwNTJlNGYxYjNjYWE0YjdmNGNlMjgwMjdhNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVRodW5rcy5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0cmlnZ2VyT01HRW50cnlUaWVyVXBUaHVua0dlbmVyYXRv
cihjb25zdAogICAgIHVuc2lnbmVkIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclBy
ZXNlcnZhdGlvbiA9IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cHJlc2VydmVSZWdpc3RlcnNU
b1N0YWNrRm9yQ2FsbChqaXQsIHJlZ2lzdGVyc1RvU3BpbGwsIGV4dHJhUGFkZGluZ0J5dGVzKTsK
IAogICAgIGppdC5sb2FkV2FzbUNvbnRleHRJbnN0YW5jZShHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwotICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KHRyaWdnZXJUaWVyVXBOb3cpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdD
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25XYXNtVHJpZ2dlclRpZXJVcE5v
dykpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5jYWxsKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMiwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaml0LCByZWdpc3RlcnNUb1NwaWxs
LCBSZWdpc3RlclNldCgpLCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2
YXRpb24sIGV4dHJhUGFkZGluZ0J5dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseS5jcHAKaW5kZXggMjk1YjJkMzUwNjYxN2E2ZTVlOWM5MzgwN2Q2
ZDA4ZWIyOGY4NDBhNC4uNjc4YjQwOTQ3MmM4MDQ4NGY5N2IzNDM0YTJiYjk0ZGQ1YWZmZDExNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAK
QEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgdm9pZCBpbnN0YW50aWF0ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZURlZmVycmVkKgogICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsK
ICAgICAgICAgICAgIHJlc29sdmUodm0sIGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgaW5zdGFuY2Us
IG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBjb2RlQmxvY2sucmVsZWFzZU5vbk51bGwoKSwgcmVzb2x2
ZUtpbmQsIGNyZWF0aW9uTW9kZSk7CiAgICAgICAgIH0pOwotICAgIH0pLCAmV2FzbTo6Y3JlYXRl
SlNUb1dhc21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pOworICAgIH0pLCAmV2Fz
bTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyLCAmV2FzbTo6b3BlcmF0aW9uV2FzbVRvSlNFeGNlcHRp
b24pOwogfQogCiBzdGF0aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgY29u
c3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIGJ1ZmZlciwgSlNPYmplY3QqIGltcG9y
dE9iamVjdCwgUmVzb2x2ZSByZXNvbHZlS2luZCwgV2FzbTo6Q3JlYXRpb25Nb2RlIGNyZWF0aW9u
TW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCA5
MGM2Mjc3NDM0NjdlZmM2OGNjNGQzNmY3ZTU3MzI1NjQ5ZWEzZmQyLi44Njc0NjI3MDY3YzgzNDE5
NTczMDM0MTlkMmI5ZjMzYzBiZGRmNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2FzbVRvSlMuY3BwCkBAIC02OCw2ICs2OCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IGhhbmRsZUJh
CiAgICAgLy8gU3RvcmUgQ2FsbGVlLgogICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIEluc3RhbmNlOjpvZmZzZXRPZk93bmVyKCkpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWxsZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgaml0LnByZXBhcmVDYWxs
T3BlcmF0aW9uKHZtKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBK
SVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIAogICAgIGF1dG8g
Y2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CkBAIC03Nyw3ICs3OCw3IEBAIHN0YXRp
YyBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGlu
Z0ZhaWx1cmU+IGhhbmRsZUJhCiAgICAgaWYgKFVOTElLRUxZKGxpbmtCdWZmZXIuZGlkRmFpbFRv
QWxsb2NhdGUoKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChCaW5kaW5nRmFpbHVy
ZTo6T3V0T2ZNZW1vcnkpOwogCi0gICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3dCYWRJNjQpKTsKKyAgICBsaW5rQnVmZmVy
LmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25XYXNtVGhy
b3dCYWRJNjQpKTsKICAgICByZXR1cm4gRklOQUxJWkVfV0FTTV9DT0RFKGxpbmtCdWZmZXIsIFdh
c21FbnRyeVB0clRhZywgIldlYkFzc2VtYmx5LT5KYXZhU2NyaXB0IGludmFsaWQgaTY0IHVzZSBp
biBpbXBvcnRbJWldIiwgaW1wb3J0SW5kZXgpOwogfQogCkBAIC01MTYsNyArNTE3LDcgQEAgRXhw
ZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWls
dXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICByZXR1cm4gRklOQUxJWkVfV0FTTV9DT0RFKHBhdGNo
QnVmZmVyLCBXYXNtRW50cnlQdHJUYWcsICJXZWJBc3NlbWJseS0+SmF2YVNjcmlwdCBpbXBvcnRb
JWldICVzIiwgaW1wb3J0SW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKIH0KIAotdm9pZCogd2FzbVRvSlNFeGNlcHRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFdh
c206OkV4Y2VwdGlvblR5cGUgdHlwZSwgSW5zdGFuY2UqIHdhc21JbnN0YW5jZSkKK3ZvaWQqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uV2FzbVRvSlNFeGNlcHRpb24oQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSwgSW5zdGFuY2UqIHdhc21JbnN0YW5jZSkKIHsK
ICAgICB3YXNtSW5zdGFuY2UtPnN0b3JlVG9wQ2FsbEZyYW1lKGNhbGxGcmFtZSk7CiAgICAgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IHdhc21JbnN0YW5jZS0+b3duZXI8SlNXZWJB
c3NlbWJseUluc3RhbmNlPigpOwpAQCAtNTY1LDcgKzU2Niw3IEBAIHZvaWQgZW1pdFRocm93V2Fz
bVRvSlNFeGNlcHRpb24oQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyB3YXNtSW5zdGFuY2UsIFdh
c206OkV4CiAgICAgaml0LmJyZWFrcG9pbnQoKTsgLy8gV2Ugc2hvdWxkIG5vdCByZWFjaCB0aGlz
LgogCiAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewot
ICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbikpOworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2Fs
bCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihXYXNtOjpvcGVyYXRpb25XYXNtVG9KU0V4
Y2VwdGlvbikpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XYXNtVG9KUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Fz
bVRvSlMuaAppbmRleCA0ODE2MGU1YzkwMWVkNjhjOTIyNDlhZWYzYWE3MDQzZTkxZTkwZmUzLi4y
ZGVlMTBmYjZmODgwZTE2YTQ0OTk5ZTg1NGE0OTU5YjQyNzJkYjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgSW5zdGFu
Y2U7CiAKIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBC
aW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJ
bmZvcywgU2lnbmF0dXJlSW5kZXgsIHVuc2lnbmVkIGltcG9ydEluZGV4KTsKIAotdm9pZCogd2Fz
bVRvSlNFeGNlcHRpb24oQ2FsbEZyYW1lKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSwgSW5zdGFuY2Uq
KTsKK3ZvaWQqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uV2FzbVRvSlNFeGNlcHRpb24oQ2FsbEZy
YW1lKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSwgSW5zdGFuY2UqKSBXVEZfSU5URVJOQUw7CiB2b2lk
IGVtaXRUaHJvd1dhc21Ub0pTRXhjZXB0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZyB3YXNtSW5z
dGFuY2UsIFdhc206OkV4Y2VwdGlvblR5cGUpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2Fz
bQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJ
bnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNmEyNDVkMTRhOGU4MWE5ZWE5
MzQ4ZTE5YTIyZGVlMDgwY2QyMzdkYi4uZTc0MDdlODA1MDU0OGQ0MGMzNjY3ODU0MDgxMDc3M2Q5
ZGM5M2IyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZShKU0dsb2JhbE9iamVjCiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBp
bnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBtb2R1bGUs
IGltcG9ydE9iamVjdCwgaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVs
ZS0+bW9kdWxlKCkpLCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZyb21KUyk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGluc3RhbmNlLT5maW5hbGl6ZUNyZWF0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoJnZtLndhc21D
b250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCAmV2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFw
cGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pLCBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0
aW9uTW9kZTo6RnJvbUpTKTsKKyAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVTeW5jKCZ2bS53YXNtQ29udGV4dCwg
aW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgJldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwgJldh
c206Om9wZXJhdGlvbldhc21Ub0pTRXhjZXB0aW9uKSwgaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVh
dGlvbk1vZGU6OkZyb21KUyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4
IDEyYzVhNjQwNGRlNmQ2N2Q0NTJhMjZmOTA2OWQxNGZmMGY2MjJhMTcuLmI1YTUyMzliOWFlOTBl
ZWE0MzNmZmUxZjBkYzQ4ZGYyZDI5YzBlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTAwMSw3ICsxMDAx
LDcgQEAKICNlbmRpZgogCiAvKiBVc2UgX19idWlsdGluX2ZyYW1lX2FkZHJlc3MoMSkgdG8gZ2V0
IENhbGxGcmFtZSogKi8KLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShBUk02
NCkgfHwgQ1BVKFg4Nl82NCkpICYmIChPUyhMSU5VWCkgfHwgT1MoREFSV0lOKSkKKyNpZiBDT01Q
SUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShBUk02NCkgfHwgQ1BVKFg4Nl82NCkpCiAjZGVm
aW5lIFVTRV9CVUlMVElOX0ZSQU1FX0FERFJFU1MgMQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZGYxYjgx
Y2ZiODYzYjllOWZlNzk5MDJhOGFlMGMzOWM2ZDQyZWE2ZC4uNWQ1OTA4ZDhkMzIwZTI0YjY2ZGM1
ZTE1MTg2NzI2YjI0NzM0NTc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTUzNjgsNyArNTM2OCw3IEBAIHN1YiBHZW5l
cmF0ZU9wZXJhdGlvbkRlZmluaXRpb24KICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IElHTk9SRV9XQVJOSU5HU19CRUdJTihcImZyYW1lLWFkZHJlc3NcIilcbiIpOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBJR05P
UkVfV0FSTklOR1NfRU5EXG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEpT
Qzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTtcbiIpOworICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNDOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7XG4iKTsKICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXgg
ZWE4MzNhMWYxNzYwMjAzZGJjY2JjMzY5ZGE3OTc3ZDI4NjA3YzQzNy4uMTkzZTIyODVjODY4ZjVj
NmRiOTdhMjcwNzY4MTAzMGUxODI4ZWJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTExNDEsNyAr
MTE0MSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBqc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZVdpdGhvCiAgICAgSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJmcmFtZS1hZGRyZXNzIikKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIEpTQzo6TmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKU0M6OkpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
QEAgLTExNzcsNyArMTE3Nyw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBq
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1XaXRob3V0VHlwZUNoCiAgICAgSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJmcmFtZS1hZGRyZXNzIikKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSUdOT1JFX1dBUk5JTkdTX0VORAotICAg
IEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBK
U0M6OkpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKQEAgLTEyMDksNyArMTIwOSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZVdpdGhv
CiAgICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJmcmFtZS1hZGRyZXNzIikKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSUdOT1JFX1dBUk5J
TkdTX0VORAotICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKKyAgICBKU0M6OkpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKQEAgLTEyNDEsNyArMTI0MSw3IEBAIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVs
ZW1lbnRCeUlkV2l0CiAgICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJmcmFtZS1hZGRyZXNzIikK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAg
SUdOT1JFX1dBUk5JTkdTX0VORAotICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKKyAgICBKU0M6OkpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKQEAgLTEyNzUsNyArMTI3NSw3IEBA
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lCiAgICAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJmcmFt
ZS1hZGRyZXNzIikKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CiAgICAgSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKU0M6OkpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUSGVscGVycy5oCmluZGV4IGU2YmVhNWQyZDhmY2FjM2RlMGExYmJjMWQw
ZWE3MDA1MzJmZGU5MzAuLjZkNTY4ODY1ODFkYjRmZTc1NTY1NGM4ODYzMTI0ZTUyMTJiYmRjODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaApAQCAtNjEsNyArNjEsNyBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdG9XcmFwcGVyU2xvdyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwogICAgIEpT
Qzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpTQzo6TmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBKU0M6OkpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlND
OjpKU1ZhbHVlOjplbmNvZGUodG9KUyhnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgKnN0YXRpY19jYXN0PFdyYXBwZWROb2RlKj4ocmVz
dWx0KSkpOwogfQogCg==
</data>
<flag name="review"
          id="397487"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>