<?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>224556</bug_id>
          
          <creation_ts>2021-04-14 09:59:44 -0700</creation_ts>
          <short_desc>Exit the GPUProcess when under memory pressure if it is not being used</short_desc>
          <delta_ts>2021-04-19 12:21:31 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=224691</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224701</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224704</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224709</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224723</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224778</see_also>
          <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>224461</dependson>
    
    <dependson>224505</dependson>
    
    <dependson>224513</dependson>
    
    <dependson>224516</dependson>
    
    <dependson>224566</dependson>
    
    <dependson>224623</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1750175</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-14 09:59:44 -0700</bug_when>
    <thetext>Exit the GPUProcess when under memory pressure if it is not being used. This will help us save memory, especially until we are able to enable &quot;DOM Rendering in GPUProcess&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750178</commentid>
    <comment_count>1</comment_count>
      <attachid>425995</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-14 10:06:29 -0700</bug_when>
    <thetext>Created attachment 425995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750179</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-14 10:06:52 -0700</bug_when>
    <thetext>I am currently perf-testing this patch on PLT5 and PLUM3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750268</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-14 12:12:17 -0700</bug_when>
    <thetext>EWS seems angry:

    TestWebKitAPI.GPUProcess.ExitsUnderMemoryPressureCanvasCase
        Child process terminated with signal 6: Abort trap
    TestWebKitAPI.GPUProcess.ExitsUnderMemoryPressureVideoCase
        Failed to find media engine.
        Failed to find media engine.
        Child process terminated with signal 6: Abort trap
    TestWebKitAPI.GPUProcess.ExitsUnderMemoryPressureWebAudioCase
        Child process terminated with signal 6: Abort trap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750269</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-14 12:12:49 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; EWS seems angry:
&gt; 
&gt;     TestWebKitAPI.GPUProcess.ExitsUnderMemoryPressureCanvasCase
&gt;         Child process terminated with signal 6: Abort trap
&gt;     TestWebKitAPI.GPUProcess.ExitsUnderMemoryPressureVideoCase
&gt;         Failed to find media engine.
&gt;         Failed to find media engine.
&gt;         Child process terminated with signal 6: Abort trap
&gt;     TestWebKitAPI.GPUProcess.ExitsUnderMemoryPressureWebAudioCase
&gt;         Child process terminated with signal 6: Abort trap

Yes, investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750274</commentid>
    <comment_count>5</comment_count>
      <attachid>425995</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-14 12:23:36 -0700</bug_when>
    <thetext>Comment on attachment 425995
Patch

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

&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:133
&gt; +    }
&gt; +    return true;

Please rate limit this with time too although it could be done in a separate patch.
We probably shouldn&apos;t killing GPU process no more than once every 5-10s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750276</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-14 12:25:26 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #5)
&gt; Comment on attachment 425995 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425995&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/GPUProcess.cpp:133
&gt; &gt; +    }
&gt; &gt; +    return true;
&gt; 
&gt; Please rate limit this with time too although it could be done in a separate
&gt; patch.
&gt; We probably shouldn&apos;t killing GPU process no more than once every 5-10s.

Yes, I understand the concern. I am not doing this yet because it is going to be tricky to do this right and avoid making the tests flaky or causing the process not to exit in PLUM3. I am still pondering whether to do this in this patch or in a follow-up. I definitely want to do initial perf testing without this though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750280</commentid>
    <comment_count>7</comment_count>
      <attachid>426031</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-14 12:30:18 -0700</bug_when>
    <thetext>Created attachment 426031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750284</commentid>
    <comment_count>8</comment_count>
      <attachid>426033</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-14 12:35:34 -0700</bug_when>
    <thetext>Created attachment 426033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750326</commentid>
    <comment_count>9</comment_count>
      <attachid>426043</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-14 14:11:14 -0700</bug_when>
    <thetext>Created attachment 426043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750841</commentid>
    <comment_count>10</comment_count>
      <attachid>426153</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-15 16:45:07 -0700</bug_when>
    <thetext>Created attachment 426153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750851</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-15 17:01:47 -0700</bug_when>
    <thetext>The perf results look promising (Nice PLUM3 progression, no PLT5 regression). However, I am getting flaky GPUProcess crashes on ios-EWS (with no crash trace :/). I will investigate locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750855</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-15 17:20:18 -0700</bug_when>
    <thetext>Looks like the iOS EWS crashes are not really true. It is true to this code in WKTR:
void TestController::gpuProcessDidCrash(WKProcessID processID)
{
    fprintf(stderr, &quot;#CRASHED - GPUProcess (pid %ld)\n&quot;, static_cast&lt;long&gt;(processID));
    if (m_shouldExitWhenWebProcessCrashes)
        exit(1);
}


Every time the GPUProcess exits on memory pressure while running the tests, WKTR reports it as a crash even though it is a clean exit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750901</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-15 19:26:04 -0700</bug_when>
    <thetext>A/B Testing results:

PLUM3-iPhone - Arithmetic mean
Comparision by Mean	5.26% better (significant with 98% probability)
Comparision by Individual	5.26% better (significant with 98% probability)

PLUM3-iPad - Arithmetic mean
Comparision by Mean	2.55% better (significant with 98% probability)
Comparision by Individual	2.55% better (significant with 98% probability)

PLT5-iPad - null
Comparision by Mean	0.63% worse (insignificant)
Comparision by Individual	0.63% worse (insignificant)

PLT5-iPhone - null
Comparision by Mean	0.03% better (insignificant)
Comparision by Individual	0.03% better (insignificant)

Looks good!

I know how to address the fake crash reports on ios-EWS (We need to tell the gpuProcessCrashed client delegate only in the case of a true crash, not a clean idle exit). I will try and finish the patch tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751084</commentid>
    <comment_count>14</comment_count>
      <attachid>426230</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-16 08:24:56 -0700</bug_when>
    <thetext>Created attachment 426230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751085</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-16 08:25:23 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; Created attachment 426230 [details]
&gt; Patch

Should take care of those iOS-EWS failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751117</commentid>
    <comment_count>16</comment_count>
      <attachid>426230</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-16 10:03:42 -0700</bug_when>
    <thetext>Comment on attachment 426230
Patch

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

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:293
&gt; +#if HAVE(AVASSETWRITERDELEGATE)

Would you be willing to consider just writing this out as:

    #if PLATFORM(COCOA) &amp;&amp; ENABLE(MEDIA_STREAM) &amp;&amp; HAVE(AVASSETWRITERDELEGATE)

instead of nesting it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751118</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-16 10:04:22 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 426230 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426230&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:293
&gt; &gt; +#if HAVE(AVASSETWRITERDELEGATE)
&gt; 
&gt; Would you be willing to consider just writing this out as:
&gt; 
&gt;     #if PLATFORM(COCOA) &amp;&amp; ENABLE(MEDIA_STREAM) &amp;&amp;
&gt; HAVE(AVASSETWRITERDELEGATE)
&gt; 
&gt; instead of nesting it?

Sure. I was just following the pattern in the header. I&apos;ll update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751122</commentid>
    <comment_count>18</comment_count>
      <attachid>426243</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-16 10:09:49 -0700</bug_when>
    <thetext>Created attachment 426243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751161</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-16 11:07:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/76768542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751174</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-16 11:41:32 -0700</bug_when>
    <thetext>Committed r276148 (236641@main): &lt;https://commits.webkit.org/236641@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426243.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751329</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-16 17:19:48 -0700</bug_when>
    <thetext>There is still code that (re-)launches the GPUProcess too eagerly. I will follow-up and fix them via related bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425995</attachid>
            <date>2021-04-14 10:06:29 -0700</date>
            <delta_ts>2021-04-14 12:30:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224556-20210414100628.patch</filename>
            <type>text/plain</type>
            <size>35074</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzNWQ0ZTc1MWFlZjUyZmE1
NmE3MWQ4YTA5NzliMDkxMTU1YjM2ZGQuLjI2OTg0N2RjMjQ1NzI2ZTgzM2ZkZjlmNDQ3M2JkYWQy
ZTRiMjQ3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjEtMDQtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9jZXNzIHdo
ZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9j
ZXNzIHdoZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkLiBU
aGlzIHdpbGwKKyAgICAgICAgaGVscCB1cyBzYXZlIG1lbW9yeSwgZXNwZWNpYWxseSB1bnRpbCB3
ZSBhcmUgYWJsZSB0byBlbmFibGUgIkRPTSBSZW5kZXJpbmcgaW4KKyAgICAgICAgR1BVUHJvY2Vz
cyIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZCk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFw
aGljc0NvbnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpyZW1vdmVHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6Y2FuRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjp0
cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51c2VkKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
czo6bG93TWVtb3J5SGFuZGxlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YWxsb3dzRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJN
ZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpyZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpkZWxldGVEZWNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6ZGVsZXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNv
bnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyOjpyZWxlYXNlUmVjb3JkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29u
c3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpoYXNTb3VyY2VQcm94aWVzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorCiAyMDIxLTA0LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gV0tNb3VzZURldmlj
ZU9ic2VydmVyIGlzIGNhbGxpbmcgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kKCkgb24gYSBub24tbWFp
biB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA3OTExNGZkOTQzMGNlMWFjNzJhNGViYzE4YzFmZTEy
YTFlOGYwOTE3Li5hNzk5Yzg1MDY0N2I1OTY2YTQzYzIwZmNiNTdhZmE3MzA1ZjdkM2JiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICNp
ZiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGl0eVRv
a2VuKFdURk1vdmUocGFyYW1ldGVycy53ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbikpCiAjZW5kaWYK
LSAgICAsIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eT4oKnRoaXMpKQorICAgICwgbV9yZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eShtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
PigqdGhpcykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgLCBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5KExpYldl
YlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMpKQpAQCAtMjY1LDYgKzI2NSw0NyBAQCB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlc3Ryb3lWaXNpYmlsaXR5UHJvcGFnYXRpb25D
b250ZXh0Rm9yUGFnZShXZWJQYQogfQogI2VuZGlmCiAKK2Jvb2wgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIGZv
ciAoYXV0byYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXJlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmFs
bG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIW1fcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNYXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICBp
ZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHktPmFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9yZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlciAmJiAhbV9yZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci0+
YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmIChtX3Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgJiYgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LT5oYXNTb3VyY2VQcm94aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IW1fYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlci0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1
cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisgICAgaWYg
KG1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIgJiYgIW1fcmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXItPmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorI2VuZGlmCisjaWYgSEFWRShBVkFTU0VUUkVBREVSKQorICAgIGlmICht
X2ltYWdlRGVjb2RlckFWRlByb3h5ICYmICFtX2ltYWdlRGVjb2RlckFWRlByb3h5LT5hbGxvd3NF
eGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
KyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIGlmIChtX2NkbUZhY3RvcnlQcm94eSAm
JiAhbV9jZG1GYWN0b3J5UHJveHktPmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQorICAgIGlmIChtX2xlZ2FjeUNkbUZhY3RvcnlQcm94eSAmJiAhbV9sZWdhY3lDZG1G
YWN0b3J5UHJveHktPmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCiBMb2dnZXImIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ2dlcigpCiB7CiAgICAgaWYgKCFtX2xvZ2dlcikgewpA
QCAtMzcyLDYgKzQxMyw3IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiB7CiAgICAgYm9vbCBm
b3VuZCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5yZW1vdmUocmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBncHVQ
cm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiAj
aWYgRU5BQkxFKFdFQkdMKQpAQCAtMzkxLDYgKzQzMyw4IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0CiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRl
eHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKQogewogICAgIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAucmVtb3ZlKGdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAuaXNFbXB0eSgpKQorICAgICAgICBncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5k
ZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTEZvclRlc3RpbmcoR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBmMmRkOTUwMmFiZTM2YTAwYzcxZTI4NzYz
NjBiOGIyY2VmMDRmODlmLi4wYjA0ZTRhOTYyNTMzMGQ3MzljY2FhZDU0OTcwYThhM2U2ZmQwMGI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFJl
bW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSYgbWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeVByb3h5KCk7Ci0gICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkmIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkgeyByZXR1cm4gKm1fcmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk7IH0KKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eSYgcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKSB7IHJldHVybiBtX3JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmdldCgpOyB9CiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAg
ICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXImIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsK
QEAgLTE0NCw2ICsxNDQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFJl
bW90ZUNvbW1hbmRzKCk7CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJl
KCkgY29uc3Q7CisKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoKTsKICNpZiBFTkFCTEUo
V0VCR0wpCiAgICAgdm9pZCByZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xGb3JUZXN0aW5nKEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CkBAIC0yMjgsNyArMjMwLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI+IG1fcmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OworICAgIFVuaXF1ZVJlZjxSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKICAgICBQQUw6
OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldF
QlJUQykKICAgICBSZWY8TGliV2ViUlRDQ29kZWNzUHJveHk+IG1fbGliV2ViUlRDQ29kZWNzUHJv
eHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKaW5kZXggYjY5ZDRlNDY1
MDU3YmUwM2RlMzk3YmI2NTA1NDIwZmZkN2VmYTY0ZC4uMjIwOTc2ZTBmYjVlNWVhMGQ4YjVjZjJh
NTg0YjZiM2RjYTZkYjE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNw
cApAQCAtMTExLDYgKzExMSw3IEBAIHZvaWQgR1BVUHJvY2Vzczo6cmVtb3ZlR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uCiB7CiAgICAgQVNT
RVJUKG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24ud2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLnJlbW92ZShjb25u
ZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIHRyeUV4aXRJZlVudXNlZEFuZFVu
ZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogdm9pZCBHUFVQcm9jZXNzOjpjb25uZWN0aW9uVG9X
ZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTEyMiw4ICsx
MjMsNDAgQEAgYm9vbCBHUFVQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQogICAgIHJldHVybiBt
X3dlYlByb2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5KCk7CiB9CiAKK2Jvb2wgR1BVUHJvY2Vzczo6
Y2FuRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5S
dW5Mb29wKCkpOworICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiBtX3dlYlBy
b2Nlc3NDb25uZWN0aW9ucy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXdlYlByb2Nlc3NDb25u
ZWN0aW9uLT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHUFVQcm9jZXNz
Ojp0cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluUnVuTG9vcCgpKTsKKyAgICBpZiAoIU1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xl
dG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHRy
eUV4aXRJZlVudXNlZCgpOworfQorCit2b2lkIEdQVVByb2Nlc3M6OnRyeUV4aXRJZlVudXNlZCgp
Cit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgaWYgKCFjYW5FeGl0VW5kZXJN
ZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzLCAiR1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51c2VkOiBHUFVQcm9jZXNzIGlzIGV4aXRpbmcg
YmVjYXVzZSB3ZSBhcmUgdW5kZXIgbWVtb3J5IHByZXNzdXJlIGFuZCB0aGUgcHJvY2VzcyBpcyBu
byBsb25nZXIgdXNlZnVsLiIpOworICAgIHRlcm1pbmF0ZSgpOworfQorCiB2b2lkIEdQVVByb2Nl
c3M6Omxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNo
cm9ub3VzKQogeworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICJHUFVQcm9jZXNzOjpsb3dNZW1v
cnlIYW5kbGVyOiBjcml0aWNhbD0lZCwgc3luY2hyb25vdXM9JWQiLCBjcml0aWNhbCA9PSBDcml0
aWNhbDo6WWVzLCBzeW5jaHJvbm91cyA9PSBTeW5jaHJvbm91czo6WWVzKTsKKyAgICB0cnlFeGl0
SWZVbnVzZWQoKTsKKwogICAgIFdlYkNvcmU6OnJlbGVhc2VHcmFwaGljc01lbW9yeShjcml0aWNh
bCwgc3luY2hyb25vdXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaApp
bmRleCAzNTlhM2M1MjkxMGMzMTE4OTc2MGVhODQyNzM1YzFkMjA0MDM4NmNiLi40ZGM3NjU0M2U1
ZjQ4OTZlYzVlYmIyZGQ3Mzc1ZmQ5NTkxOWU4MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzLmgKQEAgLTkyLDYgKzkyLDggQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlVlA5
RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQ
OURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5U1dEZWNvZGVyKTsKICNlbmRpZgogCisgICAg
dm9pZCB0cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7CisKIHByaXZhdGU6
CiAgICAgdm9pZCBsb3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsLCBTeW5jaHJvbm91cyk7CiAKQEAg
LTEwMSw2ICsxMDMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29u
c3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYsIFNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFRlcm1pbmF0
ZSgpIG92ZXJyaWRlOwogCisgICAgdm9pZCB0cnlFeGl0SWZVbnVzZWQoKTsKKyAgICBib29sIGNh
bkV4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKICAgICAvLyBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBi
OTdiZWY0ZjJlNDFiNTgzODNjY2I3Yzk1ZmEwMmY4Njk5ZTgxNjQ1Li5jOWE1YzQxYTVlNGZmZmUx
Yjg5NDM0ZGVhNDk0YzNiZTRiOTU3MDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC01
OTcsNiArNTk3LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6dXBkYXRlUmVuZGVy
aW5nUmVzb3VyY2VSZXF1ZXN0KCkKICAgICAgICAgbV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0
ID0geyB9OwogfQogCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFsbG93c0V4aXRVbmRl
ck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlLmltYWdlQnVmZmVycygpLmlzRW1wdHkoKSAmJiBtX3JlbW90ZVJlc291cmNlQ2FjaGUubmF0
aXZlSW1hZ2VzKCkuaXNFbXB0eSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGUzZGYy
ZDA4ZGVhZDZiMGUxMzQ0Mzg1NjhjZWQwNzMyZTAxYmM4NzYuLjc0OGM0YTJkMzQ1ODNhN2VhOWRi
YTcxODI0MDQyYjFiYjI0ZWY4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtODMsNiArODMs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBvcHVsYXRlR2V0SW1hZ2VEYXRhU2hhcmVkTWVtb3J5
KFdlYkNvcmU6OkltYWdlRGF0YSopOwogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQ
cmVzc3VyZSgpIGNvbnN0OworCiAgICAgLy8gUnVucyBGdW5jdGlvbiBpbiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kIHRhc2sgcXVldWUuCiAgICAgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+
JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4MzlmZTkzYTIxYmIy
NWY1YmNmYmM1Mzg3YWFjODUyNzcxMDljMTg2Li44ZjUxNDVlNGY3ZGEwNjU3M2IwOWI2Njk1NGMz
MjBmNmNkZTcwZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9VdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIApAQCAtMTczLDYgKzE3NCw5IEBAIHZvaWQgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvCiAgICAgaWYgKGRlc3RpbmF0aW9uKQogICAgICAgICBkZXN0aW5hdGlv
bi0+c2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZOZWVkZWQoKTsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworCisgICAgaWYgKGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAg
ICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5ncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51
c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTIwMyw2ICsyMDcsMTEgQEAgdm9pZCBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6YXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9E
ZXN0aW4KIH0KICNlbmRpZgogCitib29sIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjph
bGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVk
aW9EZXN0aW5hdGlvbnMuaXNFbXB0eSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmgKaW5kZXggZjg0ZDZmOGUzZjVjYzU3N2RlOGZhMDFiNGNjMGFm
OWFjM2NmZWNmMS4uYzYwZjEwNTQ2ZGFmNDNkMWE2M2NhMjA3OTBkODMwMzhkNjQ1MWFlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAg
IGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+JiBlbmNvZGVyKSB7IHJldHVybiBkaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2RlciwgZW5jb2Rlcik7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlBy
b2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
IHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAorICAgIGJvb2wg
YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwog
ICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCmluZGV4IDE1
NWViYWZmYjlhOTRkYmJmZDg3MjU1MmFmMmRjMmJlYWE2MjdkOTMuLjA2ZWM1MjcwNmZjYTdmNzE1
MzlhOTcwNTk0M2Y4YzdkNWI1MjFkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNlUHJveHkuaCIKICNpbmNsdWRlICJS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIgpAQCAtMTQyLDYgKzE0Myw4IEBAIHZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJbnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXImIGlkCiB7CiAgICAgQVNTRVJUKG1faW5zdGFuY2VzLmNvbnRhaW5zKGlk
ZW50aWZpZXIpKTsKICAgICBtX2luc3RhbmNlcy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgaWYg
KG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyAmJiBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVz
c3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmdwdVByb2Nlc3Mo
KS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAKIFJlbW90ZUNE
TUluc3RhbmNlUHJveHkqIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3Qg
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtMTYxLDYgKzE2NCwx
MSBAQCB2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbihjb25zdCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaQogICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkZW50
aWZpZXIpOwogfQogCitib29sIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6YWxsb3dzRXhpdFVuZGVy
TWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX2luc3RhbmNlcy5pc0VtcHR5
KCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKaW5kZXggYzRlODZjMzcyNTgwYzM5MTY5
ZDhjNDNlMjI0Mzk2YWFiM2E4YzllMi4uMDM4MjE2ZTIwZWZmN2M2MzU4NDNjNmVmZDZmMGI0MTM5
ZDMyMjZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUZhY3RvcnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAKICAgICBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgeyBy
ZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOyB9CiAKKyAgICBib29sIGFs
bG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2Vp
dmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAppbmRleCBiMmEzZTc1MDFjODdlZTUxZmE2Mzdk
MDM1ZmJiNzljYjBjODdhOWZiLi4wMDgxYzEyZmRjYmM4ZWU3NzUwNDgwYTU0NTFlYjE5OTU0NTU3
Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAogI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgpAQCAtNzAsNiArNzEsOCBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5OjpkZWxldGVEZWNvZGVyKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmll
cgogICAgICAgICByZXR1cm47CiAKICAgICBtX2ltYWdlRGVjb2RlcnMudGFrZShpZGVudGlmaWVy
KTsKKyAgICBpZiAobV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzICYmIGFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlKCkpCisgICAgICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Z3B1UHJv
Y2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogdm9p
ZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6ZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKElt
YWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTE0MSw2ICsxNDQsMTEgQEAgdm9p
ZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKEltYWdl
RGVjb2RlcklkZW50aWZpZXIgaWQKICAgICAgICAgaW1hZ2VEZWNvZGVyLT5jbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoc3RkOjptaW4oaW5kZXgsIGltYWdlRGVjb2Rlci0+ZnJhbWVDb3VudCgpIC0gMSkp
OwogfQogCitib29sIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjphbGxvd3NFeGl0VW5kZXJN
ZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2VEZWNvZGVycy5pc0Vt
cHR5KCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCmluZGV4IDFhZDYw
Yjc2NTMxYjk0Nzg1YjE1ZDYzZjIwMDBkYTVjMGI3ZGRlNTUuLjQ4Zjg3MGQwYzU3MGY3Y2VkYWY2
MDc5M2M2Mjk5YzA3YTgyY2M3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCkBAIC01MCw2ICs1
MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
JikgZmluYWw7CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVEZWNvZGVyKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4mJik+JiYpOwogICAgIHZv
aWQgZGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eS5jcHAKaW5kZXggYmE3MmZiNzg2Mjg1MmU2NjhmOTQ1N2U3NWJjZWU1
NTAxNDNhYTFkNy4uMGU4YTgxYzY1NmRjODUwMTQ4Mzk2NmMwZmFiMGQxMGQ4YjdkMGFjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCiAjaW5jbHVk
ZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIK
ICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1Qcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2Fj
eUNETVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaCIKQEAgLTE1MSw2ICsxNTIsOSBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcgogCiAgICAg
QVNTRVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIG1fc2Vzc2lvbnMu
cmVtb3ZlKGlkZW50aWZpZXIpOworCisgICAgaWYgKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyAmJiBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPmdwdVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1l
bW9yeVByZXNzdXJlKCk7CiB9CiAKIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSogUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpnZXRTZXNzaW9uKGNvbnN0IFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdApAQCAtMTYxLDYgKzE2NSwxMSBAQCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6
Z2V0U2Vzc2lvbihjb25zdCBSZW1vdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3Nlc3Npb25zLmlzRW1wdHkoKTsKK30KKwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAppbmRleCA1ZmQ4ZmE1NDZhMDk3YmY4ZDQ0YTcy
M2ZjZWJkN2ZlNWU5ZGI4MmUyLi4xMTNmYTk1YTg0OGIxZWRhZjA2ODA1MGExYzRiOTdkMjkxZDE1
M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCkBAIC02NCw2ICs2NCw4IEBAIHB1YmxpYzoK
IAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKSB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7IH0KIAorICAg
IGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGM5NDg1MzYx
ZGMyMWFiOWFiNzIwNzQyOGFhMTM2ZDlkYmQ1NmZhNTcuLjAxOGIyODA3YmZmNDFkZDMyY2NhNTUz
NjMzNTdhYzk4YWQzZmY4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAg
LTcyLDkgKzczLDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNyZWF0
ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVySWRlbnRpZmllciBpZGVuCiB2b2lkIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpkZWxldGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm94aWVzTG9jayk7Ci0gICAgaWYgKGF1dG8gcHJveHkg
PSBtX3Byb3hpZXMudGFrZShpZGVudGlmaWVyKSkKLSAgICAgICAgcHJveHktPmludmFsaWRhdGUo
KTsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm94aWVzTG9jayk7
CisgICAgICAgIGlmIChhdXRvIHByb3h5ID0gbV9wcm94aWVzLnRha2UoaWRlbnRpZmllcikpCisg
ICAgICAgICAgICBwcm94eS0+aW52YWxpZGF0ZSgpOworICAgIH0KKyAgICBpZiAobV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzICYmIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisg
ICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Z3B1UHJvY2VzcygpLnRyeUV4aXRJ
ZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6Z2V0U3VwcG9ydGVkVHlwZXMoTWVkaWFQbGF5ZXJFbnVtczo6TWVk
aWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzksNiArMTg0
LDExIEBAIFJlZlB0cjxNZWRpYVBsYXllcj4gUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
Om1lZGlhUGxheWVyKGNvbnN0IE1lZGlhUGxheWVyCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
K2Jvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm94aWVzLmlzRW1wdHkoKTsKK30K
KwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogTG9nZ2VyJiBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6bG9nZ2VyKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXgg
OTI2N2IxYzk2YzBjNGRmZDNhOTUyYjQ0MmQxZWFkZDMzNzU3NTBlZi4uMDA4ZGE4NzU2YTczMjc5
YWI5OWY2ZjYwODAyZjU3MGEyMGZmNWVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgK
QEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNQbGF5ZXJN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+Jik7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1lZGlhUGxheWVy
KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciYpOworICAgIGJvb2wgYWxsb3dz
RXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuY3BwCmluZGV4IGRkNTJlYTgxN2JjMmZiYjQ1MWVhYjgyNmVmNTJiZWI1
NTE5ZTUyOTEuLmFlZGNhMDIyZmIyZDdkNTZlOWY5YTUzOTYyOWIyNzZiNjdjYzEyMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAK
QEAgLTg4LDYgKzg4LDExIEBAIHZvaWQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJNYW5hZ2VyOjpyZWxlYXNlUmVuZGVyZXIoQXVkaW9NZWRpYVN0cmVhCiAgICAgbV9yZW5kZXJl
cnMucmVtb3ZlKGlkZW50aWZpZXIpOwogfQogCitib29sIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25z
dAoreworICAgIHJldHVybiBtX3JlbmRlcmVycy5pc0VtcHR5KCk7Cit9CisKIH0KIAogI2VuZGlm
IC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1h
bmFnZXIuaAppbmRleCA1YjBhNjg0YjUyNTc5MzliZGFkMmRjZDU5ZTRkNTBhNGM0NjliMmUxLi5j
MzE0OTEyNmI2MzMwNTdiOTllNzc4MmI4ZjVjZWMyNThjYTBkMjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgKQEAgLTYwLDYgKzYwLDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBjbG9zZSgpOwogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5k
ZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJik7CiAgICAgdm9pZCBzdGFydExpc3RlbmluZ0ZvcklQQygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyLmNwcAppbmRleCA5NGNjODZhZWFiOWMwNmQzOTIyZGYwOWM4NTQyZDM3MjAxNTgz
MjJlLi4wMWE1MzZlYWU4YzM3NDNhN2Y4MTdjYzllMjQ2NDI3Mjk3NTk1ZDEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtNjUsNiArNjUsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVJl
Y29yZGVyTWFuYWdlcjo6Y3JlYXRlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRl
bnRpZmkKIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OnJlbGVhc2VSZWNvcmRlcihN
ZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIG1fcmVjb3JkZXJzLnJl
bW92ZShpZGVudGlmaWVyKTsKKyAgICBpZiAoYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUo
KSkKKyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdwdVByb2Nlc3MoKS50cnlF
eGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7Cit9CisKK2Jvb2wgUmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yZWNvcmRlcnMuaXNFbXB0eSgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyLmgKaW5kZXggYTg3ZDhjZWY5M2Y5OGFlMDhhZTc1YTE2M2U4MWY2Y2Y3NzZjZGI5
MS4uODE4YjAxOGQyZDY4MDFiMDdlZWE3ZDUzN2E4NzgzNWM4OTI4MmVlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXIuaApAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRl
ck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
TWFuYWdlci5jcHAKaW5kZXggZTVkYjg0ODJlNDIzMzUxM2QzMDM5MTI5MDVjZWE0YThkMjRmYTIx
Mi4uZjkzM2YyNzcwMjQ3YjUzODQyZGExYzM2Y2VjODFlYzhmY2ZhN2YzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCkBAIC0xMDMsNiArMTAzLDEx
IEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6cmVsZWFzZUxh
eWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllCiAgICAgfSk7CiB9CiAKK2Jvb2wgUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1
cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVycy5pc0VtcHR5KCk7Cit9CisKIH0KIAog
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci5oCmluZGV4IDc1ZjYwZDUyNmNjZDVlYzZjNGViZTEzOTYyYWZmMzRhNTVhNmQyNWEuLmU4NDM2
ZDQ2M2QyNjM3ZTY3MDk5NmM5YzFjZDk2YTAxMmRhZGVhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1
cmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKICAgICB2b2lk
IHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IGZkYTk3MGM0MDNlYmY2N2FkNWI5MmI5MTJhZGI0MjQyNjFlYzQxMzcuLjdlNzc2ZWIwNWQyMWFh
MDNhMjRkMDQyOWM1NTk5MDRlNzZiODgxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
CkBAIC0zNjgsNiArMzY4LDExIEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6
c2V0T3JpZW50YXRpb24odWludDY0X3Qgb3JpZW50YXRpb24pCiAgICAgbV9vcmllbnRhdGlvbk5v
dGlmaWVyLm9yaWVudGF0aW9uQ2hhbmdlZChvcmllbnRhdGlvbik7CiB9CiAKK2Jvb2wgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6aGFzU291cmNlUHJveGllcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJveGllcy5pc0VtcHR5KCk7Cit9CisKIH0KIAogI3VuZGVmIE1FU1NBR0VfQ0hF
Q0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAppbmRleCA4MDdjZThmNzBlODYwNzYzZTc4Yzc2MTE1
MmRjMjY4NmFiMTIzODIwLi4wNDEzNDg5ZjE0Mjk4ZGY1NzgzMDQxNDBmZWJhMzQ2Y2MzMmZhZTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCkBAIC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCisgICAgYm9vbCBoYXNTb3VyY2VQcm94aWVzKCkgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJhNzI0
ZGM4ODYzZjRhZGZiZjAyNWQ5MmJjNWEzMzI5ZWU4MjM4MzguLjkxNGMxZjFhZTg0NTlkZDUwZGEy
MmU4NmQ3ZTVhZWY0NzViMGJkMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNC0xNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEV4aXQgdGhlIEdQVVByb2Nlc3Mgd2hlbiB1
bmRlciBtZW1vcnkgcHJlc3N1cmUgaWYgaXQgaXMgbm90IGJlaW5nIHVzZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDU1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3Zl
cmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJv
Y2Vzcy5tbToKKyAgICAgICAgKHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QpOgorICAgICAgICAo
VEVTVCk6CisKIDIwMjEtMDQtMTQgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIENvbW1pdCBxdWV1ZSBpc24ndCBza2lwcGluZyBidWlsZHMgYW5kIHRlc3Qg
b24gcmV2ZXJ0IHBhdGNoZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQppbmRleCBmMzBjMmUyZTU4ODhiNmMyYjU5ZDIzNWQ1NmZj
ZTQyN2IyMmY3NzdkLi5mOThlODhhYzEwOTQ2ZDcyOWJkY2Y3YWU3ZWYyNjUxYWZjZjhiMGUxIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nl
c3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9j
ZXNzLm1tCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tTdHJpbmcuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00OTAsMyArNDkxLDgyIEBA
IFRFU1QoR1BVUHJvY2VzcywgQ2FudmFzQmFzaWNDcmFzaEhhbmRsaW5nKQogICAgIH1dOwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CisKK3N0YXRpYyB2b2lkIHJ1bk1l
bW9yeVByZXNzdXJlRXhpdFRlc3QoRnVuY3Rpb248dm9pZChXS1dlYlZpZXcgKik+JiYgbG9hZFRl
c3RQYWdlU3luY2hyb25vdXNseSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFdLUHJlZmVyZW5j
ZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVm
KVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQiKSk7CisgICAgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNS
ZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCB0cnVlLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzRW5hYmxlZCIpKTsKKyAgICBXS1By
ZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlkZ2UgV0tQcmVmZXJl
bmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIHRydWUsIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJVc2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxlZCIp
KTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlk
Z2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIGZhbHNlLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmlu
Z0VuYWJsZWQiKSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDQwMCwgNDAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBsb2FkVGVzdFBhZ2VTeW5jaHJvbm91
c2x5KHdlYlZpZXcuZ2V0KCkpOworCisgICAgLy8gQSBHUFVQcm9jZXNzIHNob3VsZCBoYXZlIGJl
ZW4gbGF1bmNoZWQuCisgICAgYXV0byBncHVQcm9jZXNzUElEID0gW2NvbmZpZ3VyYXRpb24uZ2V0
KCkucHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBFWFBFQ1RfTkUoZ3B1
UHJvY2Vzc1BJRCwgMCk7CisKKyAgICAvLyBTaW11bGF0ZSBtZW1vcnkgcHJlc3N1cmUuCisgICAg
c3lzdGVtKCJub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93TWVtb3J5Iik7CisKKyAgICAvLyBN
YWtlIHN1cmUgdGhlIEdQVVByb2Nlc3MgZG9lcyBub3QgZXhpdCBzaW5jZSBpdCBpcyBzdGlsbCBu
ZWVkZWQuCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC41KTsKKyAgICBFWFBFQ1Rf
RVEoZ3B1UHJvY2Vzc1BJRCwgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX2dwdVBy
b2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICAvLyBOYXZpZ2F0ZSB0byBhbm90aGVyIHBhZ2UgdGhh
dCBubyBsb25nZXIgcmVxdWlyZXMgdGhlIEdQVVByb2Nlc3MuCisgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CisKKyAgICAvLyBUaGUgR1BVUHJv
Y2VzcyBzaG91bGQgZXhpdCBvbiBtZW1vcnkgcHJlc3N1cmUuCisgICAgZG8geworICAgICAgICBz
eXN0ZW0oIm5vdGlmeXV0aWwgLXAgb3JnLldlYktpdC5sb3dNZW1vcnkiKTsKKyAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICB9IHdoaWxlIChbY29uZmlndXJhdGlv
bi5nZXQoKS5wcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIC8vIFRo
ZSBHUFVQcm9jZXNzIHNob3VsZCBub3QgcmVsYXVuY2guCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6c2xlZXAoMC41KTsKKyAgICBFWFBFQ1RfRVEoMCwgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJv
Y2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSk7Cit9CisKK1RFU1QoR1BVUHJvY2Vzcywg
RXhpdHNVbmRlck1lbW9yeVByZXNzdXJlQ2FudmFzQ2FzZSkKK3sKKyAgICBydW5NZW1vcnlQcmVz
c3VyZUV4aXRUZXN0KFtdKFdLV2ViVmlldyAqd2ViVmlldykgeworICAgICAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6dGVzdENhbnZhc1BhZ2VdOworCisgICAgICAgIF9f
YmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpAImNvbnRleHQuZmlsbFN0eWxlID0gJyMwMEZGMDAnOyBjb250ZXh0LmZpbGxSZWN0KDAs
IDAsIDQwMCwgNDAwKTsiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgICAgIGRv
bmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICB9KTsKK30KKworVEVTVChHUFVQcm9jZXNzLCBFeGl0c1VuZGVyTWVtb3J5
UHJlc3N1cmVWaWRlb0Nhc2UpCit7CisgICAgcnVuTWVtb3J5UHJlc3N1cmVFeGl0VGVzdChbXShX
S1dlYlZpZXcgKndlYlZpZXcpIHsKKyAgICAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRU
ZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8iXTsKKworICAgICAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHQ6QCJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXS5wbGF5KCkgJiYg
dHJ1ZSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIH0pOworfQorCitURVNUKEdQVVByb2Nlc3MsIEV4aXRzVW5kZXJNZW1vcnlQcmVzc3VyZVdl
YkF1ZGlvQ2FzZSkKK3sKKyAgICBydW5NZW1vcnlQcmVzc3VyZUV4aXRUZXN0KFtdKFdLV2ViVmll
dyAqd2ViVmlldykgeworICAgICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6QCJhdWRpby1jb250ZXh0LXBsYXlpbmciXTsKKworICAgICAgICAvLyBldmFsdWF0ZUph
dmFTY3JpcHQgZ2l2ZXMgdXMgdGhlIHVzZXIgZ2VzdHVyZSB3ZSBuZWVkIHRvIHJlbGlhYmx5IHN0
YXJ0IGF1ZGlvIHBsYXliYWNrIG9uIGFsbCBwbGF0Zm9ybXMuCisgICAgICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAInN0
YXJ0UGxheWluZygpIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CisgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgfSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426031</attachid>
            <date>2021-04-14 12:30:18 -0700</date>
            <delta_ts>2021-04-14 12:35:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224556-20210414123017.patch</filename>
            <type>text/plain</type>
            <size>35106</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzNWQ0ZTc1MWFlZjUyZmE1
NmE3MWQ4YTA5NzliMDkxMTU1YjM2ZGQuLjI2OTg0N2RjMjQ1NzI2ZTgzM2ZkZjlmNDQ3M2JkYWQy
ZTRiMjQ3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjEtMDQtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9jZXNzIHdo
ZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9j
ZXNzIHdoZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkLiBU
aGlzIHdpbGwKKyAgICAgICAgaGVscCB1cyBzYXZlIG1lbW9yeSwgZXNwZWNpYWxseSB1bnRpbCB3
ZSBhcmUgYWJsZSB0byBlbmFibGUgIkRPTSBSZW5kZXJpbmcgaW4KKyAgICAgICAgR1BVUHJvY2Vz
cyIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZCk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFw
aGljc0NvbnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpyZW1vdmVHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6Y2FuRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjp0
cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51c2VkKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
czo6bG93TWVtb3J5SGFuZGxlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YWxsb3dzRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJN
ZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpyZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpkZWxldGVEZWNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6ZGVsZXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNv
bnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyOjpyZWxlYXNlUmVjb3JkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29u
c3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpoYXNTb3VyY2VQcm94aWVzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorCiAyMDIxLTA0LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gV0tNb3VzZURldmlj
ZU9ic2VydmVyIGlzIGNhbGxpbmcgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kKCkgb24gYSBub24tbWFp
biB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA3OTExNGZkOTQzMGNlMWFjNzJhNGViYzE4YzFmZTEy
YTFlOGYwOTE3Li43ODYyNTNlYTg0ODg2NjBhN2U4OGNlNWI1ZjIxNTYzYTkwZWQ1YmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICNp
ZiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGl0eVRv
a2VuKFdURk1vdmUocGFyYW1ldGVycy53ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbikpCiAjZW5kaWYK
LSAgICAsIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eT4oKnRoaXMpKQorICAgICwgbV9yZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eShtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
PigqdGhpcykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgLCBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5KExpYldl
YlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMpKQpAQCAtMjY1LDYgKzI2NSw0OSBAQCB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlc3Ryb3lWaXNpYmlsaXR5UHJvcGFnYXRpb25D
b250ZXh0Rm9yUGFnZShXZWJQYQogfQogI2VuZGlmCiAKK2Jvb2wgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIGZv
ciAoYXV0byYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXJlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmFs
bG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIW1fcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNYXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICBp
ZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHktPmFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFCTEUoV0VCX0FVRElP
KQorICAgIGlmIChtX3JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyICYmICFtX3JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICBpZiAobV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
ICYmIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS0+aGFzU291cmNlUHJveGllcygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2F1ZGlvVHJhY2tSZW5kZXJlck1hbmFn
ZXItPmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci0+YWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorICAgIGlmIChtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyICYmICFtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLT5hbGxvd3NFeGl0VW5kZXJNZW1v
cnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNlbmRpZgorI2lm
IEhBVkUoQVZBU1NFVFJFQURFUikKKyAgICBpZiAobV9pbWFnZURlY29kZXJBVkZQcm94eSAmJiAh
bV9pbWFnZURlY29kZXJBVkZQcm94eS0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyAgICBpZiAobV9jZG1GYWN0b3J5UHJveHkgJiYgIW1fY2RtRmFjdG9yeVByb3h5LT5hbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAobV9sZWdhY3lD
ZG1GYWN0b3J5UHJveHkgJiYgIW1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5LT5hbGxvd3NFeGl0VW5k
ZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dn
ZXIoKQogewogICAgIGlmICghbV9sb2dnZXIpIHsKQEAgLTM3Miw2ICs0MTUsNyBAQCB2b2lkIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaQogewogICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNYXAucmVtb3ZlKHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICBBU1NFUlRf
VU5VU0VEKGZvdW5kLCBmb3VuZCk7CisgICAgZ3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFu
ZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKQEAgLTM5MSw2
ICs0MzUsOCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dAogdm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKIHsKICAgICBtX3JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmIChtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgZ3B1
UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAog
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xG
b3JUZXN0aW5nKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggZjJkZDk1MDJhYmUzNmEwMGM3MWUyODc2MzYwYjhiMmNlZjA0Zjg5Zi4uMGIwNGU0YTk2
MjUzMzBkNzM5Y2NhYWQ1NDk3MGE4YTNlNmZkMDBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMzIsNyArMTMy
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5UHJveHkmIG1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSgpOwot
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eSgpIHsgcmV0dXJuICptX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OyB9Cisg
ICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5nZXQoKTsg
fQogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyJiBhdWRpb1Nlc3Npb25NYW5hZ2VyKCk7CkBAIC0xNDQsNiArMTQ0LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRSZW1vdGVDb21tYW5kcygpOwogCisgICAgYm9v
bCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiAgICAgdm9pZCB0ZXJt
aW5hdGVXZWJQcm9jZXNzKCk7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgcmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwpA
QCAtMjI4LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyPiBtX3JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOwog
I2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyPiBt
X3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsK
KyAgICBVbmlxdWVSZWY8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1fcmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgUmVmPExpYldlYlJUQ0Nv
ZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVVByb2Nlc3MuY3BwCmluZGV4IGI2OWQ0ZTQ2NTA1N2JlMDNkZTM5N2JiNjUwNTQyMGZmZDdl
ZmE2NGQuLjIyMDk3NmUwZmI1ZTVlYTBkOGI1Y2YyYTU4NGI2YjNkY2E2ZGIxNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTExMSw2ICsxMTEsNyBAQCB2b2lk
IEdQVVByb2Nlc3M6OnJlbW92ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubgogewogICAgIEFTU0VSVChtX3dlYlByb2Nlc3NDb25uZWN0aW9u
cy5jb250YWlucyhjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpKTsKICAgICBtX3dl
YlByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmll
cigpKTsKKyAgICB0cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAK
IHZvaWQgR1BVUHJvY2Vzczo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0xMjIsOCArMTIzLDQwIEBAIGJvb2wgR1BVUHJvY2Vzczo6
c2hvdWxkVGVybWluYXRlKCkKICAgICByZXR1cm4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNF
bXB0eSgpOwogfQogCitib29sIEdQVVByb2Nlc3M6OmNhbkV4aXRVbmRlck1lbW9yeVByZXNzdXJl
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBmb3IgKGF1dG8m
IHdlYlByb2Nlc3NDb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkp
IHsKKyAgICAgICAgaWYgKCF3ZWJQcm9jZXNzQ29ubmVjdGlvbi0+YWxsb3dzRXhpdFVuZGVyTWVt
b3J5UHJlc3N1cmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgR1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51c2VkQW5kVW5kZXJN
ZW1vcnlQcmVzc3VyZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgaWYg
KCFNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB0cnlFeGl0SWZVbnVzZWQoKTsKK30KKwordm9p
ZCBHUFVQcm9jZXNzOjp0cnlFeGl0SWZVbnVzZWQoKQoreworICAgIEFTU0VSVChpc01haW5SdW5M
b29wKCkpOworICAgIGlmICghY2FuRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIkdQVVByb2Nlc3M6OnRyeUV4aXRJ
ZlVudXNlZDogR1BVUHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2Ugd2UgYXJlIHVuZGVyIG1lbW9y
eSBwcmVzc3VyZSBhbmQgdGhlIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIHVzZWZ1bC4iKTsKKyAgICB0
ZXJtaW5hdGUoKTsKK30KKwogdm9pZCBHUFVQcm9jZXNzOjpsb3dNZW1vcnlIYW5kbGVyKENyaXRp
Y2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIHsKKyAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzLCAiR1BVUHJvY2Vzczo6bG93TWVtb3J5SGFuZGxlcjogY3JpdGljYWw9JWQsIHN5
bmNocm9ub3VzPSVkIiwgY3JpdGljYWwgPT0gQ3JpdGljYWw6Olllcywgc3luY2hyb25vdXMgPT0g
U3luY2hyb25vdXM6Olllcyk7CisgICAgdHJ5RXhpdElmVW51c2VkKCk7CisKICAgICBXZWJDb3Jl
OjpyZWxlYXNlR3JhcGhpY3NNZW1vcnkoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKaW5kZXggMzU5YTNjNTI5MTBjMzExODk3NjBl
YTg0MjczNWMxZDIwNDAzODZjYi4uNGRjNzY1NDNlNWY0ODk2ZWM1ZWJiMmRkNzM3NWZkOTU5MTll
ODFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC05Miw2ICs5Miw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxl
VlA4RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJs
ZVZQOVNXRGVjb2Rlcik7CiAjZW5kaWYKIAorICAgIHZvaWQgdHJ5RXhpdElmVW51c2VkQW5kVW5k
ZXJNZW1vcnlQcmVzc3VyZSgpOworCiBwcml2YXRlOgogICAgIHZvaWQgbG93TWVtb3J5SGFuZGxl
cihDcml0aWNhbCwgU3luY2hyb25vdXMpOwogCkBAIC0xMDEsNiArMTAzLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmLCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSBvdmVycmlkZTsKIAorICAgIHZvaWQg
dHJ5RXhpdElmVW51c2VkKCk7CisgICAgYm9vbCBjYW5FeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgp
IGNvbnN0OworCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggYjk3YmVmNGYyZTQxYjU4MzgzY2NiN2M5NWZh
MDJmODY5OWU4MTY0NS4uYzlhNWM0MWE1ZTRmZmZlMWI4OTQzNGRlYTQ5NGMzYmU0Yjk1NzA3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtNTk3LDYgKzU5NywxMSBAQCB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OnVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpCiAgICAg
ICAgIG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdCA9IHsgfTsKIH0KIAorYm9vbCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5pbWFnZUJ1ZmZlcnMoKS5pc0VtcHR5
KCkgJiYgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLm5hdGl2ZUltYWdlcygpLmlzRW1wdHkoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBlM2RmMmQwOGRlYWQ2YjBlMTM0NDM4NTY4Y2VkMDcz
MmUwMWJjODc2Li43NDhjNGEyZDM0NTgzYTdlYTlkYmE3MTgyNDA0MmIxYmIyNGVmOGVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTgzLDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBw
b3B1bGF0ZUdldEltYWdlRGF0YVNoYXJlZE1lbW9yeShXZWJDb3JlOjpJbWFnZURhdGEqKTsKIAor
ICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogICAgIC8v
IFJ1bnMgRnVuY3Rpb24gaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB0YXNrIHF1ZXVlLgogICAg
IHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5jcHAKaW5kZXggODM5ZmU5M2EyMWJiMjVmNWJjZmJjNTM4N2FhYzg1Mjc3MTA5YzE4
Ni4uOGY1MTQ1ZTRmN2RhMDY1NzNiMDliNjY5NTRjMzIwZjZjZGU3MGRmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0F1ZGlvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CiAKQEAgLTE3Myw2ICsxNzQsOSBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
OjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpbwogICAgIGlmIChk
ZXN0aW5hdGlvbikKICAgICAgICAgZGVzdGluYXRpb24tPnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93
bklmTmVlZGVkKCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIGlmIChhbGxvd3NF
eGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuZ3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUo
KTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rl
c3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDMs
NiArMjA3LDExIEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmF1ZGlvU2Ft
cGxlc1N0b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGluCiB9CiAjZW5kaWYKIAorYm9vbCBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1
cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1ZGlvRGVzdGluYXRpb25zLmlzRW1wdHkoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCmluZGV4
IGY4NGQ2ZjhlM2Y1Y2M1NzdkZThmYTAxYjRjYzBhZjlhYzNjZmVjZjEuLmM2MGYxMDU0NmRhZjQz
ZDFhNjNjYTIwNzkwZDgzMDM4ZDY0NTFhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5o
CkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyByZXR1cm4gZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOyB9CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNz
dXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCAxNTVlYmFmZmI5YTk0ZGJiZmQ4NzI1NTJhZjJk
YzJiZWFhNjI3ZDkzLi4wNmVjNTI3MDZmY2E3ZjcxNTM5YTk3MDU5NDNmOGM3ZDViNTIxZDMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaCIKQEAgLTE0Miw2ICsxNDMsOCBAQCB2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVt
b3ZlSW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZAogewogICAg
IEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgbV9pbnN0YW5j
ZXMucmVtb3ZlKGlkZW50aWZpZXIpOworICAgIGlmIChtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgJiYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5ncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJN
ZW1vcnlQcmVzc3VyZSgpOwogfQogCiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKQEAgLTE2MSw2ICsxNjQsMTEgQEAgdm9pZCBSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OnJlbW92ZVNlc3Npb24oY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmkKICAgICBtX3Nlc3Npb25zLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAorYm9vbCBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pbnN0YW5jZXMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5oCmluZGV4IGM0ZTg2YzM3MjU4MGMzOTE2OWQ4YzQzZTIyNDM5NmFhYjNhOGM5ZTIuLjAz
ODIxNmUyMGVmZjdjNjM1ODQzYzZlZmQ2ZjBiNDEzOWQzMjI2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKQEAg
LTcwLDYgKzcwLDggQEAgcHVibGljOgogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5nZXQoKTsgfQogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVj
dGlvbjsKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5j
cHAKaW5kZXggYjJhM2U3NTAxYzg3ZWU1MWZhNjM3ZDAzNWZiYjc5Y2IwYzg3YTlmYi4uMDA4MWMx
MmZkY2JjOGVlNzc1MDQ4MGE1NDUxZWIxOTk1NDU1NzM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZF
KEFWQVNTRVRSRUFERVIpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTcwLDYg
KzcxLDggQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6ZGVsZXRlRGVjb2RlcihJ
bWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9pbWFnZURlY29kZXJzLnRha2UoaWRlbnRpZmllcik7CisgICAgaWYgKG1fY29ubmVjdGlvblRv
V2ViUHJvY2VzcyAmJiBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmdwdVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRV
bmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAKIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCkBAIC0xNDEsNiArMTQ0LDExIEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkCiAgICAg
ICAgIGltYWdlRGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHN0ZDo6bWluKGluZGV4LCBp
bWFnZURlY29kZXItPmZyYW1lQ291bnQoKSAtIDEpKTsKIH0KIAorYm9vbCBSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2ltYWdlRGVjb2RlcnMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuaAppbmRleCAxYWQ2MGI3NjUzMWI5NDc4NWIxNWQ2M2YyMDAwZGE1
YzBiN2RkZTU1Li40OGY4NzBkMGM1NzBmN2NlZGFmNjA3OTNjNjI5OWMwN2E4MmNjN2ZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
ICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCisgICAgYm9vbCBhbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQg
Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVj
b2RlcklkZW50aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCmluZGV4
IGJhNzJmYjc4NjI4NTJlNjY4Zjk0NTdlNzViY2VlNTUwMTQzYWExZDcuLjBlOGE4MWM2NTZkYzg1
MDE0ODM5NjZjMGZhYjBkMTBkOGI3ZDBhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCkBAIC0xNTEsNiArMTUyLDkgQEAg
dm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24oUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIKIAogICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5z
KGlkZW50aWZpZXIpKTsKICAgICBtX3Nlc3Npb25zLnJlbW92ZShpZGVudGlmaWVyKTsKKworICAg
IGlmIChtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgJiYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5
UHJlc3N1cmUoKSkKKyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5ncHVQcm9j
ZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Z2V0
U2Vzc2lvbihjb25zdCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYgaWRlbnRpZmll
cikgY29uc3QKQEAgLTE2MSw2ICsxNjUsMTEgQEAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
KiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmdldFNlc3Npb24oY29uc3QgUmVtb3QKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6
OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
ZXNzaW9ucy5pc0VtcHR5KCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
LmgKaW5kZXggNWZkOGZhNTQ2YTA5N2JmOGQ0NGE3MjNmY2ViZDdmZTVlOWRiODJlMi4uMTEzZmE5
NWE4NDhiMWVkYWYwNjgwNTBhMWM0Yjk3ZDI5MWQxNTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHkuaApAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgeyByZXR1cm4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmdldCgpOyB9CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nl
c3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcAppbmRleCBjOTQ4NTM2MWRjMjFhYjlhYjcyMDc0MjhhYTEzNmQ5ZGJk
NTZmYTU3Li4wMThiMjgwN2JmZjQxZGQzMmNjYTU1MzYzMzU3YWM5OGFkM2ZmODBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCkBAIC03Miw5ICs3MywxMyBAQCB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklk
ZW50aWZpZXIgaWRlbgogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRl
TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJv
eGllc0xvY2spOwotICAgIGlmIChhdXRvIHByb3h5ID0gbV9wcm94aWVzLnRha2UoaWRlbnRpZmll
cikpCi0gICAgICAgIHByb3h5LT5pbnZhbGlkYXRlKCk7CisgICAgeworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fcHJveGllc0xvY2spOworICAgICAgICBpZiAoYXV0byBwcm94eSA9
IG1fcHJveGllcy50YWtlKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcHJveHktPmludmFsaWRh
dGUoKTsKKyAgICB9CisgICAgaWYgKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyAmJiBhbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPmdwdVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNz
dXJlKCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFN1cHBv
cnRlZFR5cGVzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTc5LDYgKzE4NCwxMSBAQCBSZWZQdHI8TWVkaWFQbGF5ZXI+
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZWRpYVBsYXllcihjb25zdCBNZWRpYVBs
YXllcgogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJveGllcy5pc0VtcHR5KCk7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKIExvZ2dlciYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IDkyNjdiMWM5NmMwYzRkZmQzYTk1MmI0NDJk
MWVhZGQzMzc1NzUwZWYuLjAwOGRhODc1NmE3MzI3OWFiOTlmNmY2MDgwMmY1NzBhMjBmZjVlYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGRpZFJlY2VpdmVTeW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgUmVmUHRyPFdl
YkNvcmU6Ok1lZGlhUGxheWVyPiBtZWRpYVBsYXllcihjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXll
cklkZW50aWZpZXImKTsKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAppbmRleCBk
ZDUyZWE4MTdiYzJmYmI0NTFlYWI4MjZlZjUyYmViNTUxOWU1MjkxLi5hZWRjYTAyMmZiMmQ3ZDU2
ZTlmOWE1Mzk2MjliMjc2YjY3Y2MxMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwCkBAIC04OCw2ICs4OCwxMSBAQCB2b2lkIFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6cmVsZWFzZVJlbmRlcmVy
KEF1ZGlvTWVkaWFTdHJlYQogICAgIG1fcmVuZGVyZXJzLnJlbW92ZShpZGVudGlmaWVyKTsKIH0K
IAorYm9vbCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmFsbG93
c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZW5kZXJl
cnMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgKaW5kZXggNWIwYTY4NGI1MjU3
OTM5YmRhZDJkY2Q1OWU0ZDUwYTRjNDY5YjJlMS4uYzMxNDkxMjZiNjMzMDU3Yjk5ZTc3ODJiOGY1
Y2VjMjU4Y2EwZDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlci5oCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xv
c2UoKTsKIAorICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlck1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogICAgIHZvaWQgc3RhcnRM
aXN0ZW5pbmdGb3JJUEMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKaW5kZXggOTRjYzg2
YWVhYjljMDZkMzkyMmRmMDljODU0MmQzNzIwMTU4MzIyZS4uMDFhNTM2ZWFlOGMzNzQzYTdmODE3
Y2M5ZTI0NjQyNzI5NzU5NWQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKQEAgLTY1
LDYgKzY1LDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmNyZWF0ZVJlY29y
ZGVyKE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkZW50aWZpCiB2b2lkIFJlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyOjpyZWxlYXNlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKICAgICBtX3JlY29yZGVycy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgaWYg
KGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5ncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQ
cmVzc3VyZSgpOworfQorCitib29sIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjphbGxvd3NF
eGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVjb3JkZXJz
LmlzRW1wdHkoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCmluZGV4IGE4N2Q4Y2Vm
OTNmOThhZTA4YWU3NWExNjNlODFmNmNmNzc2Y2RiOTEuLjgxOGIwMThkMmQ2ODAxYjA3ZWVhN2Q1
MzdhODc4MzVjODkyODJlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKQEAgLTU4LDYgKzU4
LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZU1lZGlhUmVjb3JkZXJNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsgfQogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Owor
CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IGU1ZGI4NDgy
ZTQyMzM1MTNkMzAzOTEyOTA1Y2VhNGE4ZDI0ZmEyMTIuLmY5MzNmMjc3MDI0N2I1Mzg0MmRhMWMz
NmNlYzgxZWM4ZmNmYTdmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmNwcApAQCAtMTAzLDYgKzEwMywxMSBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6OnJlbGVhc2VMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZQogICAgIH0pOwogfQogCitib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9sYXllcnMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAppbmRleCA3NWY2MGQ1MjZjY2Q1ZWM2
YzRlYmUxMzk2MmFmZjM0YTU1YTZkMjVhLi5lODQzNmQ0NjNkMjYzN2U2NzA5OTZjOWMxY2Q5NmEw
MTJkYWRlYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
aApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICBi
b29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcihHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgdm9pZCBzdGFydExpc3RlbmluZ0ZvcklQQygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCBmZGE5NzBjNDAzZWJmNjdhZDViOTJiOTEy
YWRiNDI0MjYxZWM0MTM3Li4yNzAyNzkzZmY1NTFiYTk3YjdlZmIwOTAyMzUzNzQ2Mzk2YWUyMmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcApAQCAtMzY4LDYgKzM2OCwxMSBAQCB2b2lk
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnNldE9yaWVudGF0aW9uKHVpbnQ2NF90IG9y
aWVudGF0aW9uKQogICAgIG1fb3JpZW50YXRpb25Ob3RpZmllci5vcmllbnRhdGlvbkNoYW5nZWQo
b3JpZW50YXRpb24pOwogfQogCitib29sIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6Omhh
c1NvdXJjZVByb3hpZXMoKSBjb25zdAoreworICAgIHJldHVybiAhbV9wcm94aWVzLmlzRW1wdHko
KTsKK30KKwogfQogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5o
CmluZGV4IDgwN2NlOGY3MGU4NjA3NjNlNzhjNzYxMTUyZGMyNjg2YWIxMjM4MjAuLjA0MTM0ODlm
MTQyOThkZjU3ODMwNDE0MGZlYmEzNDZjYzMyZmFlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmgKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21HUFVQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAK
KyAgICBib29sIGhhc1NvdXJjZVByb3hpZXMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmE3MjRkYzg4NjNmNGFkZmJmMDI1ZDkyYmM1YTMz
MjllZTgyMzgzOC4uOTE0YzFmMWFlODQ1OWRkNTBkYTIyZTg2ZDdlNWFlZjQ3NWIwYmQwZCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIxLTA0LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRXhpdCB0aGUgR1BVUHJvY2VzcyB3aGVuIHVuZGVyIG1lbW9yeSBwcmVzc3VyZSBpZiBp
dCBpcyBub3QgYmVpbmcgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI0NTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tOgorICAgICAgICAocnVuTWVt
b3J5UHJlc3N1cmVFeGl0VGVzdCk6CisgICAgICAgIChURVNUKToKKwogMjAyMS0wNC0xNCAgQWFr
YXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tbWl0IHF1ZXVl
IGlzbid0IHNraXBwaW5nIGJ1aWxkcyBhbmQgdGVzdCBvbiByZXZlcnQgcGF0Y2hlcwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCmlu
ZGV4IGYzMGMyZTJlNTg4OGI2YzJiNTlkMjM1ZDU2ZmNlNDI3YjIyZjc3N2QuLmY5OGU4OGFjMTA5
NDZkNzI5YmRjZjdhZTdlZjI2NTFhZmNmOGIwZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0KQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbXBvcnQgPFdlYktpdC9XS1N0cmluZy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1w
b3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBM
QVRGT1JNKE1BQykKQEAgLTQ5MCwzICs0OTEsODIgQEAgVEVTVChHUFVQcm9jZXNzLCBDYW52YXNC
YXNpY0NyYXNoSGFuZGxpbmcpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKIH0KKworc3RhdGljIHZvaWQgcnVuTWVtb3J5UHJlc3N1cmVFeGl0VGVzdChGdW5j
dGlvbjx2b2lkKFdLV2ViVmlldyAqKT4mJiBsb2FkVGVzdFBhZ2VTeW5jaHJvbm91c2x5KQorewor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRl
c3RpbmcoKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdLCB0cnVlLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlR1BVUHJvY2Vzc0Zv
ck1lZGlhRW5hYmxlZCIpKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9y
VGVzdGluZygoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10sIHRydWUsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYXB0dXJlVmlkZW9J
bkdQVVByb2Nlc3NFbmFibGVkIikpOworICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUdQVVBy
b2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFibGVkIikpOworICAgIFdLUHJlZmVyZW5jZXNTZXRC
b29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgZmFsc2UsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJVc2VHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nRW5hYmxlZCIpKTsKKworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgNDAwLCA0MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIGxvYWRUZXN0UGFnZVN5bmNocm9ub3VzbHkod2ViVmlldy5nZXQoKSk7CisKKyAg
ICAvLyBBIEdQVVByb2Nlc3Mgc2hvdWxkIGhhdmUgYmVlbiBsYXVuY2hlZC4KKyAgICBhdXRvIGdw
dVByb2Nlc3NQSUQgPSBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfZ3B1UHJvY2Vz
c0lkZW50aWZpZXJdOworICAgIEVYUEVDVF9ORShncHVQcm9jZXNzUElELCAwKTsKKworICAgIC8v
IFNpbXVsYXRlIG1lbW9yeSBwcmVzc3VyZS4KKyAgICBzeXN0ZW0oIm5vdGlmeXV0aWwgLXAgb3Jn
LldlYktpdC5sb3dNZW1vcnkiKTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgR1BVUHJvY2VzcyBk
b2VzIG5vdCBleGl0IHNpbmNlIGl0IGlzIHN0aWxsIG5lZWRlZC4KKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpzbGVlcCgwLjUpOworICAgIEVYUEVDVF9FUShncHVQcm9jZXNzUElELCBbY29uZmln
dXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAg
IC8vIE5hdmlnYXRlIHRvIGFub3RoZXIgcGFnZSB0aGF0IG5vIGxvbmdlciByZXF1aXJlcyB0aGUg
R1BVUHJvY2Vzcy4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6
QCJzaW1wbGUiXTsKKworICAgIC8vIFRoZSBHUFVQcm9jZXNzIHNob3VsZCBleGl0IG9uIG1lbW9y
eSBwcmVzc3VyZS4KKyAgICBkbyB7CisgICAgICAgIHN5c3RlbSgibm90aWZ5dXRpbCAtcCBvcmcu
V2ViS2l0Lmxvd01lbW9yeSIpOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgw
LjEpOworICAgIH0gd2hpbGUgKFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF9ncHVQ
cm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgLy8gVGhlIEdQVVByb2Nlc3Mgc2hvdWxkIG5vdCBy
ZWxhdW5jaC4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjUpOworICAgIEVYUEVD
VF9FUSgwLCBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50
aWZpZXJdKTsKK30KKworVEVTVChHUFVQcm9jZXNzLCBFeGl0c1VuZGVyTWVtb3J5UHJlc3N1cmVD
YW52YXNDYXNlKQoreworICAgIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3
ICp3ZWJWaWV3KSB7CisgICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
Zzp0ZXN0Q2FudmFzUGFnZV07CisKKyAgICAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiY29udGV4dC5maWxsU3R5bGUg
PSAnIzAwRkYwMCc7IGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgNDAwLCA0MDApOyIgY29tcGxldGlv
bkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBF
Q1RfVFJVRSghZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOwor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIH0pOworfQorCitU
RVNUKEdQVVByb2Nlc3MsIEV4aXRzVW5kZXJNZW1vcnlQcmVzc3VyZVZpZGVvQ2FzZSkKK3sKKyAg
ICBydW5NZW1vcnlQcmVzc3VyZUV4aXRUZXN0KFtdKFdLV2ViVmlldyAqd2ViVmlldykgeworICAg
ICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRl
b3Mtd2l0aC1hdWRpbyJdOworCisgICAgICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCd2aWRlbycpWzBdLnBsYXkoKSAmJiB0cnVlIiBjb21wbGV0aW9uSGFuZGxlcjpe
KGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKCFl
cnJvcik7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgfSk7Cit9CisKK1RFU1QoR1BVUHJv
Y2VzcywgRXhpdHNVbmRlck1lbW9yeVByZXNzdXJlV2ViQXVkaW9DYXNlKQoreworICAgIHJ1bk1l
bW9yeVByZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3ICp3ZWJWaWV3KSB7CisgICAgICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImF1ZGlvLWNvbnRleHQtcGxh
eWluZyJdOworCisgICAgICAgIC8vIGV2YWx1YXRlSmF2YVNjcmlwdCBnaXZlcyB1cyB0aGUgdXNl
ciBnZXN0dXJlIHdlIG5lZWQgdG8gcmVsaWFibHkgc3RhcnQgYXVkaW8gcGxheWJhY2sgb24gYWxs
IHBsYXRmb3Jtcy4KKyAgICAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAg
W3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAic3RhcnRQbGF5aW5nKCkiIGNvbXBsZXRpb25I
YW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNU
X1RSVUUoIWVycm9yKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426033</attachid>
            <date>2021-04-14 12:35:34 -0700</date>
            <delta_ts>2021-04-14 14:11:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224556-20210414123533.patch</filename>
            <type>text/plain</type>
            <size>35220</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzNWQ0ZTc1MWFlZjUyZmE1
NmE3MWQ4YTA5NzliMDkxMTU1YjM2ZGQuLjI2OTg0N2RjMjQ1NzI2ZTgzM2ZkZjlmNDQ3M2JkYWQy
ZTRiMjQ3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjEtMDQtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9jZXNzIHdo
ZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9j
ZXNzIHdoZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkLiBU
aGlzIHdpbGwKKyAgICAgICAgaGVscCB1cyBzYXZlIG1lbW9yeSwgZXNwZWNpYWxseSB1bnRpbCB3
ZSBhcmUgYWJsZSB0byBlbmFibGUgIkRPTSBSZW5kZXJpbmcgaW4KKyAgICAgICAgR1BVUHJvY2Vz
cyIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZCk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFw
aGljc0NvbnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpyZW1vdmVHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6Y2FuRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjp0
cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51c2VkKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
czo6bG93TWVtb3J5SGFuZGxlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YWxsb3dzRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJN
ZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpyZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpkZWxldGVEZWNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6ZGVsZXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNv
bnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyOjpyZWxlYXNlUmVjb3JkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29u
c3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpoYXNTb3VyY2VQcm94aWVzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorCiAyMDIxLTA0LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gV0tNb3VzZURldmlj
ZU9ic2VydmVyIGlzIGNhbGxpbmcgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kKCkgb24gYSBub24tbWFp
biB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA3OTExNGZkOTQzMGNlMWFjNzJhNGViYzE4YzFmZTEy
YTFlOGYwOTE3Li43ODYyNTNlYTg0ODg2NjBhN2U4OGNlNWI1ZjIxNTYzYTkwZWQ1YmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICNp
ZiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGl0eVRv
a2VuKFdURk1vdmUocGFyYW1ldGVycy53ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbikpCiAjZW5kaWYK
LSAgICAsIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eT4oKnRoaXMpKQorICAgICwgbV9yZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eShtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
PigqdGhpcykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgLCBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5KExpYldl
YlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMpKQpAQCAtMjY1LDYgKzI2NSw0OSBAQCB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlc3Ryb3lWaXNpYmlsaXR5UHJvcGFnYXRpb25D
b250ZXh0Rm9yUGFnZShXZWJQYQogfQogI2VuZGlmCiAKK2Jvb2wgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIGZv
ciAoYXV0byYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXJlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmFs
bG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIW1fcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNYXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICBp
ZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHktPmFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFCTEUoV0VCX0FVRElP
KQorICAgIGlmIChtX3JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyICYmICFtX3JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICBpZiAobV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
ICYmIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS0+aGFzU291cmNlUHJveGllcygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2F1ZGlvVHJhY2tSZW5kZXJlck1hbmFn
ZXItPmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci0+YWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorICAgIGlmIChtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyICYmICFtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLT5hbGxvd3NFeGl0VW5kZXJNZW1v
cnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNlbmRpZgorI2lm
IEhBVkUoQVZBU1NFVFJFQURFUikKKyAgICBpZiAobV9pbWFnZURlY29kZXJBVkZQcm94eSAmJiAh
bV9pbWFnZURlY29kZXJBVkZQcm94eS0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyAgICBpZiAobV9jZG1GYWN0b3J5UHJveHkgJiYgIW1fY2RtRmFjdG9yeVByb3h5LT5hbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAobV9sZWdhY3lD
ZG1GYWN0b3J5UHJveHkgJiYgIW1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5LT5hbGxvd3NFeGl0VW5k
ZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dn
ZXIoKQogewogICAgIGlmICghbV9sb2dnZXIpIHsKQEAgLTM3Miw2ICs0MTUsNyBAQCB2b2lkIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaQogewogICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNYXAucmVtb3ZlKHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICBBU1NFUlRf
VU5VU0VEKGZvdW5kLCBmb3VuZCk7CisgICAgZ3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFu
ZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKQEAgLTM5MSw2
ICs0MzUsOCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dAogdm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKIHsKICAgICBtX3JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmIChtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgZ3B1
UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAog
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xG
b3JUZXN0aW5nKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggZjJkZDk1MDJhYmUzNmEwMGM3MWUyODc2MzYwYjhiMmNlZjA0Zjg5Zi4uMGIwNGU0YTk2
MjUzMzBkNzM5Y2NhYWQ1NDk3MGE4YTNlNmZkMDBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMzIsNyArMTMy
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5UHJveHkmIG1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSgpOwot
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eSgpIHsgcmV0dXJuICptX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OyB9Cisg
ICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5nZXQoKTsg
fQogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyJiBhdWRpb1Nlc3Npb25NYW5hZ2VyKCk7CkBAIC0xNDQsNiArMTQ0LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRSZW1vdGVDb21tYW5kcygpOwogCisgICAgYm9v
bCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiAgICAgdm9pZCB0ZXJt
aW5hdGVXZWJQcm9jZXNzKCk7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgcmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwpA
QCAtMjI4LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyPiBtX3JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOwog
I2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyPiBt
X3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsK
KyAgICBVbmlxdWVSZWY8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1fcmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgUmVmPExpYldlYlJUQ0Nv
ZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVVByb2Nlc3MuY3BwCmluZGV4IGI2OWQ0ZTQ2NTA1N2JlMDNkZTM5N2JiNjUwNTQyMGZmZDdl
ZmE2NGQuLjIyMDk3NmUwZmI1ZTVlYTBkOGI1Y2YyYTU4NGI2YjNkY2E2ZGIxNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTExMSw2ICsxMTEsNyBAQCB2b2lk
IEdQVVByb2Nlc3M6OnJlbW92ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubgogewogICAgIEFTU0VSVChtX3dlYlByb2Nlc3NDb25uZWN0aW9u
cy5jb250YWlucyhjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpKTsKICAgICBtX3dl
YlByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmll
cigpKTsKKyAgICB0cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAK
IHZvaWQgR1BVUHJvY2Vzczo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0xMjIsOCArMTIzLDQwIEBAIGJvb2wgR1BVUHJvY2Vzczo6
c2hvdWxkVGVybWluYXRlKCkKICAgICByZXR1cm4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNF
bXB0eSgpOwogfQogCitib29sIEdQVVByb2Nlc3M6OmNhbkV4aXRVbmRlck1lbW9yeVByZXNzdXJl
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBmb3IgKGF1dG8m
IHdlYlByb2Nlc3NDb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkp
IHsKKyAgICAgICAgaWYgKCF3ZWJQcm9jZXNzQ29ubmVjdGlvbi0+YWxsb3dzRXhpdFVuZGVyTWVt
b3J5UHJlc3N1cmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgR1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51c2VkQW5kVW5kZXJN
ZW1vcnlQcmVzc3VyZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgaWYg
KCFNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB0cnlFeGl0SWZVbnVzZWQoKTsKK30KKwordm9p
ZCBHUFVQcm9jZXNzOjp0cnlFeGl0SWZVbnVzZWQoKQoreworICAgIEFTU0VSVChpc01haW5SdW5M
b29wKCkpOworICAgIGlmICghY2FuRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIkdQVVByb2Nlc3M6OnRyeUV4aXRJ
ZlVudXNlZDogR1BVUHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2Ugd2UgYXJlIHVuZGVyIG1lbW9y
eSBwcmVzc3VyZSBhbmQgdGhlIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIHVzZWZ1bC4iKTsKKyAgICB0
ZXJtaW5hdGUoKTsKK30KKwogdm9pZCBHUFVQcm9jZXNzOjpsb3dNZW1vcnlIYW5kbGVyKENyaXRp
Y2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIHsKKyAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzLCAiR1BVUHJvY2Vzczo6bG93TWVtb3J5SGFuZGxlcjogY3JpdGljYWw9JWQsIHN5
bmNocm9ub3VzPSVkIiwgY3JpdGljYWwgPT0gQ3JpdGljYWw6Olllcywgc3luY2hyb25vdXMgPT0g
U3luY2hyb25vdXM6Olllcyk7CisgICAgdHJ5RXhpdElmVW51c2VkKCk7CisKICAgICBXZWJDb3Jl
OjpyZWxlYXNlR3JhcGhpY3NNZW1vcnkoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKaW5kZXggMzU5YTNjNTI5MTBjMzExODk3NjBl
YTg0MjczNWMxZDIwNDAzODZjYi4uNGRjNzY1NDNlNWY0ODk2ZWM1ZWJiMmRkNzM3NWZkOTU5MTll
ODFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC05Miw2ICs5Miw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxl
VlA4RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJs
ZVZQOVNXRGVjb2Rlcik7CiAjZW5kaWYKIAorICAgIHZvaWQgdHJ5RXhpdElmVW51c2VkQW5kVW5k
ZXJNZW1vcnlQcmVzc3VyZSgpOworCiBwcml2YXRlOgogICAgIHZvaWQgbG93TWVtb3J5SGFuZGxl
cihDcml0aWNhbCwgU3luY2hyb25vdXMpOwogCkBAIC0xMDEsNiArMTAzLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmLCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSBvdmVycmlkZTsKIAorICAgIHZvaWQg
dHJ5RXhpdElmVW51c2VkKCk7CisgICAgYm9vbCBjYW5FeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgp
IGNvbnN0OworCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggYjk3YmVmNGYyZTQxYjU4MzgzY2NiN2M5NWZh
MDJmODY5OWU4MTY0NS4uYzlhNWM0MWE1ZTRmZmZlMWI4OTQzNGRlYTQ5NGMzYmU0Yjk1NzA3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtNTk3LDYgKzU5NywxMSBAQCB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OnVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpCiAgICAg
ICAgIG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdCA9IHsgfTsKIH0KIAorYm9vbCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5pbWFnZUJ1ZmZlcnMoKS5pc0VtcHR5
KCkgJiYgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLm5hdGl2ZUltYWdlcygpLmlzRW1wdHkoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBlM2RmMmQwOGRlYWQ2YjBlMTM0NDM4NTY4Y2VkMDcz
MmUwMWJjODc2Li43NDhjNGEyZDM0NTgzYTdlYTlkYmE3MTgyNDA0MmIxYmIyNGVmOGVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTgzLDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBw
b3B1bGF0ZUdldEltYWdlRGF0YVNoYXJlZE1lbW9yeShXZWJDb3JlOjpJbWFnZURhdGEqKTsKIAor
ICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogICAgIC8v
IFJ1bnMgRnVuY3Rpb24gaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB0YXNrIHF1ZXVlLgogICAg
IHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5jcHAKaW5kZXggODM5ZmU5M2EyMWJiMjVmNWJjZmJjNTM4N2FhYzg1Mjc3MTA5YzE4
Ni4uOGY1MTQ1ZTRmN2RhMDY1NzNiMDliNjY5NTRjMzIwZjZjZGU3MGRmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0F1ZGlvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CiAKQEAgLTE3Myw2ICsxNzQsOSBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
OjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpbwogICAgIGlmIChk
ZXN0aW5hdGlvbikKICAgICAgICAgZGVzdGluYXRpb24tPnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93
bklmTmVlZGVkKCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIGlmIChhbGxvd3NF
eGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuZ3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUo
KTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rl
c3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDMs
NiArMjA3LDExIEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmF1ZGlvU2Ft
cGxlc1N0b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGluCiB9CiAjZW5kaWYKIAorYm9vbCBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1
cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1ZGlvRGVzdGluYXRpb25zLmlzRW1wdHkoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCmluZGV4
IGY4NGQ2ZjhlM2Y1Y2M1NzdkZThmYTAxYjRjYzBhZjlhYzNjZmVjZjEuLmM2MGYxMDU0NmRhZjQz
ZDFhNjNjYTIwNzkwZDgzMDM4ZDY0NTFhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5o
CkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyByZXR1cm4gZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOyB9CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNz
dXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCAxNTVlYmFmZmI5YTk0ZGJiZmQ4NzI1NTJhZjJk
YzJiZWFhNjI3ZDkzLi4wNmVjNTI3MDZmY2E3ZjcxNTM5YTk3MDU5NDNmOGM3ZDViNTIxZDMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaCIKQEAgLTE0Miw2ICsxNDMsOCBAQCB2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVt
b3ZlSW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZAogewogICAg
IEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgbV9pbnN0YW5j
ZXMucmVtb3ZlKGlkZW50aWZpZXIpOworICAgIGlmIChtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgJiYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5ncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJN
ZW1vcnlQcmVzc3VyZSgpOwogfQogCiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKQEAgLTE2MSw2ICsxNjQsMTEgQEAgdm9pZCBSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OnJlbW92ZVNlc3Npb24oY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmkKICAgICBtX3Nlc3Npb25zLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAorYm9vbCBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pbnN0YW5jZXMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5oCmluZGV4IGM0ZTg2YzM3MjU4MGMzOTE2OWQ4YzQzZTIyNDM5NmFhYjNhOGM5ZTIuLjAz
ODIxNmUyMGVmZjdjNjM1ODQzYzZlZmQ2ZjBiNDEzOWQzMjI2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKQEAg
LTcwLDYgKzcwLDggQEAgcHVibGljOgogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5nZXQoKTsgfQogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVj
dGlvbjsKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5j
cHAKaW5kZXggYjJhM2U3NTAxYzg3ZWU1MWZhNjM3ZDAzNWZiYjc5Y2IwYzg3YTlmYi4uMDA4MWMx
MmZkY2JjOGVlNzc1MDQ4MGE1NDUxZWIxOTk1NDU1NzM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZF
KEFWQVNTRVRSRUFERVIpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTcwLDYg
KzcxLDggQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6ZGVsZXRlRGVjb2RlcihJ
bWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9pbWFnZURlY29kZXJzLnRha2UoaWRlbnRpZmllcik7CisgICAgaWYgKG1fY29ubmVjdGlvblRv
V2ViUHJvY2VzcyAmJiBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmdwdVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRV
bmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAKIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCkBAIC0xNDEsNiArMTQ0LDExIEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkCiAgICAg
ICAgIGltYWdlRGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHN0ZDo6bWluKGluZGV4LCBp
bWFnZURlY29kZXItPmZyYW1lQ291bnQoKSAtIDEpKTsKIH0KIAorYm9vbCBSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2ltYWdlRGVjb2RlcnMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuaAppbmRleCAxYWQ2MGI3NjUzMWI5NDc4NWIxNWQ2M2YyMDAwZGE1
YzBiN2RkZTU1Li40OGY4NzBkMGM1NzBmN2NlZGFmNjA3OTNjNjI5OWMwN2E4MmNjN2ZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
ICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCisgICAgYm9vbCBhbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQg
Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVj
b2RlcklkZW50aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCmluZGV4
IGJhNzJmYjc4NjI4NTJlNjY4Zjk0NTdlNzViY2VlNTUwMTQzYWExZDcuLjBlOGE4MWM2NTZkYzg1
MDE0ODM5NjZjMGZhYjBkMTBkOGI3ZDBhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCkBAIC0xNTEsNiArMTUyLDkgQEAg
dm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24oUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIKIAogICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5z
KGlkZW50aWZpZXIpKTsKICAgICBtX3Nlc3Npb25zLnJlbW92ZShpZGVudGlmaWVyKTsKKworICAg
IGlmIChtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgJiYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5
UHJlc3N1cmUoKSkKKyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5ncHVQcm9j
ZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Z2V0
U2Vzc2lvbihjb25zdCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYgaWRlbnRpZmll
cikgY29uc3QKQEAgLTE2MSw2ICsxNjUsMTEgQEAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
KiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmdldFNlc3Npb24oY29uc3QgUmVtb3QKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6
OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
ZXNzaW9ucy5pc0VtcHR5KCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
LmgKaW5kZXggNWZkOGZhNTQ2YTA5N2JmOGQ0NGE3MjNmY2ViZDdmZTVlOWRiODJlMi4uMTEzZmE5
NWE4NDhiMWVkYWYwNjgwNTBhMWM0Yjk3ZDI5MWQxNTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHkuaApAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgeyByZXR1cm4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmdldCgpOyB9CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nl
c3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcAppbmRleCBjOTQ4NTM2MWRjMjFhYjlhYjcyMDc0MjhhYTEzNmQ5ZGJk
NTZmYTU3Li4wMThiMjgwN2JmZjQxZGQzMmNjYTU1MzYzMzU3YWM5OGFkM2ZmODBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCkBAIC03Miw5ICs3MywxMyBAQCB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklk
ZW50aWZpZXIgaWRlbgogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRl
TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJv
eGllc0xvY2spOwotICAgIGlmIChhdXRvIHByb3h5ID0gbV9wcm94aWVzLnRha2UoaWRlbnRpZmll
cikpCi0gICAgICAgIHByb3h5LT5pbnZhbGlkYXRlKCk7CisgICAgeworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fcHJveGllc0xvY2spOworICAgICAgICBpZiAoYXV0byBwcm94eSA9
IG1fcHJveGllcy50YWtlKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcHJveHktPmludmFsaWRh
dGUoKTsKKyAgICB9CisgICAgaWYgKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyAmJiBhbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPmdwdVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNz
dXJlKCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFN1cHBv
cnRlZFR5cGVzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTc5LDYgKzE4NCwxMSBAQCBSZWZQdHI8TWVkaWFQbGF5ZXI+
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZWRpYVBsYXllcihjb25zdCBNZWRpYVBs
YXllcgogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJveGllcy5pc0VtcHR5KCk7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKIExvZ2dlciYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IDkyNjdiMWM5NmMwYzRkZmQzYTk1MmI0NDJk
MWVhZGQzMzc1NzUwZWYuLjAwOGRhODc1NmE3MzI3OWFiOTlmNmY2MDgwMmY1NzBhMjBmZjVlYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGRpZFJlY2VpdmVTeW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgUmVmUHRyPFdl
YkNvcmU6Ok1lZGlhUGxheWVyPiBtZWRpYVBsYXllcihjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXll
cklkZW50aWZpZXImKTsKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAppbmRleCBk
ZDUyZWE4MTdiYzJmYmI0NTFlYWI4MjZlZjUyYmViNTUxOWU1MjkxLi5hZWRjYTAyMmZiMmQ3ZDU2
ZTlmOWE1Mzk2MjliMjc2YjY3Y2MxMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwCkBAIC04OCw2ICs4OCwxMSBAQCB2b2lkIFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6cmVsZWFzZVJlbmRlcmVy
KEF1ZGlvTWVkaWFTdHJlYQogICAgIG1fcmVuZGVyZXJzLnJlbW92ZShpZGVudGlmaWVyKTsKIH0K
IAorYm9vbCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmFsbG93
c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZW5kZXJl
cnMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgKaW5kZXggNWIwYTY4NGI1MjU3
OTM5YmRhZDJkY2Q1OWU0ZDUwYTRjNDY5YjJlMS4uYzMxNDkxMjZiNjMzMDU3Yjk5ZTc3ODJiOGY1
Y2VjMjU4Y2EwZDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlci5oCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xv
c2UoKTsKIAorICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlck1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogICAgIHZvaWQgc3RhcnRM
aXN0ZW5pbmdGb3JJUEMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKaW5kZXggOTRjYzg2
YWVhYjljMDZkMzkyMmRmMDljODU0MmQzNzIwMTU4MzIyZS4uMDFhNTM2ZWFlOGMzNzQzYTdmODE3
Y2M5ZTI0NjQyNzI5NzU5NWQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKQEAgLTY1
LDYgKzY1LDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmNyZWF0ZVJlY29y
ZGVyKE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkZW50aWZpCiB2b2lkIFJlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyOjpyZWxlYXNlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKICAgICBtX3JlY29yZGVycy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgaWYg
KGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5ncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQ
cmVzc3VyZSgpOworfQorCitib29sIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjphbGxvd3NF
eGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVjb3JkZXJz
LmlzRW1wdHkoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCmluZGV4IGE4N2Q4Y2Vm
OTNmOThhZTA4YWU3NWExNjNlODFmNmNmNzc2Y2RiOTEuLjgxOGIwMThkMmQ2ODAxYjA3ZWVhN2Q1
MzdhODc4MzVjODkyODJlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKQEAgLTU4LDYgKzU4
LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZU1lZGlhUmVjb3JkZXJNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsgfQogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Owor
CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IGU1ZGI4NDgy
ZTQyMzM1MTNkMzAzOTEyOTA1Y2VhNGE4ZDI0ZmEyMTIuLmY5MzNmMjc3MDI0N2I1Mzg0MmRhMWMz
NmNlYzgxZWM4ZmNmYTdmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmNwcApAQCAtMTAzLDYgKzEwMywxMSBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6OnJlbGVhc2VMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZQogICAgIH0pOwogfQogCitib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9sYXllcnMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAppbmRleCA3NWY2MGQ1MjZjY2Q1ZWM2
YzRlYmUxMzk2MmFmZjM0YTU1YTZkMjVhLi5lODQzNmQ0NjNkMjYzN2U2NzA5OTZjOWMxY2Q5NmEw
MTJkYWRlYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
aApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICBi
b29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcihHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgdm9pZCBzdGFydExpc3RlbmluZ0ZvcklQQygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCBmZGE5NzBjNDAzZWJmNjdhZDViOTJiOTEy
YWRiNDI0MjYxZWM0MTM3Li4yNzAyNzkzZmY1NTFiYTk3YjdlZmIwOTAyMzUzNzQ2Mzk2YWUyMmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcApAQCAtMzY4LDYgKzM2OCwxMSBAQCB2b2lk
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnNldE9yaWVudGF0aW9uKHVpbnQ2NF90IG9y
aWVudGF0aW9uKQogICAgIG1fb3JpZW50YXRpb25Ob3RpZmllci5vcmllbnRhdGlvbkNoYW5nZWQo
b3JpZW50YXRpb24pOwogfQogCitib29sIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6Omhh
c1NvdXJjZVByb3hpZXMoKSBjb25zdAoreworICAgIHJldHVybiAhbV9wcm94aWVzLmlzRW1wdHko
KTsKK30KKwogfQogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5o
CmluZGV4IDgwN2NlOGY3MGU4NjA3NjNlNzhjNzYxMTUyZGMyNjg2YWIxMjM4MjAuLjA0MTM0ODlm
MTQyOThkZjU3ODMwNDE0MGZlYmEzNDZjYzMyZmFlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmgKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21HUFVQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAK
KyAgICBib29sIGhhc1NvdXJjZVByb3hpZXMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmE3MjRkYzg4NjNmNGFkZmJmMDI1ZDkyYmM1YTMz
MjllZTgyMzgzOC4uOTE0YzFmMWFlODQ1OWRkNTBkYTIyZTg2ZDdlNWFlZjQ3NWIwYmQwZCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIxLTA0LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRXhpdCB0aGUgR1BVUHJvY2VzcyB3aGVuIHVuZGVyIG1lbW9yeSBwcmVzc3VyZSBpZiBp
dCBpcyBub3QgYmVpbmcgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI0NTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tOgorICAgICAgICAocnVuTWVt
b3J5UHJlc3N1cmVFeGl0VGVzdCk6CisgICAgICAgIChURVNUKToKKwogMjAyMS0wNC0xNCAgQWFr
YXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tbWl0IHF1ZXVl
IGlzbid0IHNraXBwaW5nIGJ1aWxkcyBhbmQgdGVzdCBvbiByZXZlcnQgcGF0Y2hlcwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCmlu
ZGV4IGYzMGMyZTJlNTg4OGI2YzJiNTlkMjM1ZDU2ZmNlNDI3YjIyZjc3N2QuLmNhNDVhNWRkY2Jj
ZDI5NmFlMmJjZjQ0NjQ4MDZhYmM1MGEyZDg0MzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0KQEAgLTM0LDYgKzM0LDggQEAK
ICNpbXBvcnQgPFdlYktpdC9XS1N0cmluZy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1w
b3J0IDxub3RpZnkuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDkwLDMgKzQ5Miw4MyBAQCBURVNU
KEdQVVByb2Nlc3MsIENhbnZhc0Jhc2ljQ3Jhc2hIYW5kbGluZykKICAgICB9XTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQorCitzdGF0aWMgdm9pZCBydW5NZW1vcnlQ
cmVzc3VyZUV4aXRUZXN0KEZ1bmN0aW9uPHZvaWQoV0tXZWJWaWV3ICopPiYmIGxvYWRUZXN0UGFn
ZVN5bmNocm9ub3VzbHkpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0
Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbY29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIHRydWUsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJVc2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkIikpOworICAgIFdLUHJlZmVyZW5jZXNT
ZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkNhcHR1cmVWaWRlb0luR1BVUHJvY2Vzc0VuYWJsZWQiKSk7CisgICAgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNS
ZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCB0cnVlLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiVXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZ0VuYWJsZWQiKSk7Cisg
ICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdL
UHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCBmYWxzZSwgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdFbmFi
bGVkIikpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgbG9hZFRlc3RQYWdlU3luY2hyb25vdXNseSh3
ZWJWaWV3LmdldCgpKTsKKworICAgIC8vIEEgR1BVUHJvY2VzcyBzaG91bGQgaGF2ZSBiZWVuIGxh
dW5jaGVkLgorICAgIGF1dG8gZ3B1UHJvY2Vzc1BJRCA9IFtjb25maWd1cmF0aW9uLmdldCgpLnBy
b2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX05FKGdwdVByb2Nl
c3NQSUQsIDApOworCisgICAgLy8gU2ltdWxhdGUgbWVtb3J5IHByZXNzdXJlIChub3RpZnl1dGls
IC1wIG9yZy5XZWJLaXQubG93TWVtb3J5KS4KKyAgICBub3RpZnlfcG9zdCgib3JnLldlYktpdC5s
b3dNZW1vcnkiKTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgR1BVUHJvY2VzcyBkb2VzIG5vdCBl
eGl0IHNpbmNlIGl0IGlzIHN0aWxsIG5lZWRlZC4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
bGVlcCgwLjUpOworICAgIEVYUEVDVF9FUShncHVQcm9jZXNzUElELCBbY29uZmlndXJhdGlvbi5n
ZXQoKS5wcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdKTsKKworICAgIC8vIE5hdmln
YXRlIHRvIGFub3RoZXIgcGFnZSB0aGF0IG5vIGxvbmdlciByZXF1aXJlcyB0aGUgR1BVUHJvY2Vz
cy4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUi
XTsKKworICAgIC8vIFRoZSBHUFVQcm9jZXNzIHNob3VsZCBleGl0IG9uIG1lbW9yeSBwcmVzc3Vy
ZS4KKyAgICBkbyB7CisgICAgICAgIC8vIFNpbXVsYXRlIG1lbW9yeSBwcmVzc3VyZSAobm90aWZ5
dXRpbCAtcCBvcmcuV2ViS2l0Lmxvd01lbW9yeSkuCisgICAgICAgIG5vdGlmeV9wb3N0KCJvcmcu
V2ViS2l0Lmxvd01lbW9yeSIpOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgw
LjEpOworICAgIH0gd2hpbGUgKFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF9ncHVQ
cm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgLy8gVGhlIEdQVVByb2Nlc3Mgc2hvdWxkIG5vdCBy
ZWxhdW5jaC4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjUpOworICAgIEVYUEVD
VF9FUSgwLCBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50
aWZpZXJdKTsKK30KKworVEVTVChHUFVQcm9jZXNzLCBFeGl0c1VuZGVyTWVtb3J5UHJlc3N1cmVD
YW52YXNDYXNlKQoreworICAgIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3
ICp3ZWJWaWV3KSB7CisgICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
Zzp0ZXN0Q2FudmFzUGFnZV07CisKKyAgICAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiY29udGV4dC5maWxsU3R5bGUg
PSAnIzAwRkYwMCc7IGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgNDAwLCA0MDApOyIgY29tcGxldGlv
bkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBF
Q1RfVFJVRSghZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOwor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIH0pOworfQorCitU
RVNUKEdQVVByb2Nlc3MsIEV4aXRzVW5kZXJNZW1vcnlQcmVzc3VyZVZpZGVvQ2FzZSkKK3sKKyAg
ICBydW5NZW1vcnlQcmVzc3VyZUV4aXRUZXN0KFtdKFdLV2ViVmlldyAqd2ViVmlldykgeworICAg
ICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRl
b3Mtd2l0aC1hdWRpbyJdOworCisgICAgICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCd2aWRlbycpWzBdLnBsYXkoKSAmJiB0cnVlIiBjb21wbGV0aW9uSGFuZGxlcjpe
KGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKCFl
cnJvcik7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgfSk7Cit9CisKK1RFU1QoR1BVUHJv
Y2VzcywgRXhpdHNVbmRlck1lbW9yeVByZXNzdXJlV2ViQXVkaW9DYXNlKQoreworICAgIHJ1bk1l
bW9yeVByZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3ICp3ZWJWaWV3KSB7CisgICAgICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImF1ZGlvLWNvbnRleHQtcGxh
eWluZyJdOworCisgICAgICAgIC8vIGV2YWx1YXRlSmF2YVNjcmlwdCBnaXZlcyB1cyB0aGUgdXNl
ciBnZXN0dXJlIHdlIG5lZWQgdG8gcmVsaWFibHkgc3RhcnQgYXVkaW8gcGxheWJhY2sgb24gYWxs
IHBsYXRmb3Jtcy4KKyAgICAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAg
W3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAic3RhcnRQbGF5aW5nKCkiIGNvbXBsZXRpb25I
YW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNU
X1RSVUUoIWVycm9yKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426043</attachid>
            <date>2021-04-14 14:11:14 -0700</date>
            <delta_ts>2021-04-15 16:45:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224556-20210414141113.patch</filename>
            <type>text/plain</type>
            <size>35562</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1OTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzNWQ0ZTc1MWFlZjUyZmE1
NmE3MWQ4YTA5NzliMDkxMTU1YjM2ZGQuLjI2OTg0N2RjMjQ1NzI2ZTgzM2ZkZjlmNDQ3M2JkYWQy
ZTRiMjQ3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjEtMDQtMTQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9jZXNzIHdo
ZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9j
ZXNzIHdoZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkLiBU
aGlzIHdpbGwKKyAgICAgICAgaGVscCB1cyBzYXZlIG1lbW9yeSwgZXNwZWNpYWxseSB1bnRpbCB3
ZSBhcmUgYWJsZSB0byBlbmFibGUgIkRPTSBSZW5kZXJpbmcgaW4KKyAgICAgICAgR1BVUHJvY2Vz
cyIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZCk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFw
aGljc0NvbnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpyZW1vdmVHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6Y2FuRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjp0
cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51c2VkKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
czo6bG93TWVtb3J5SGFuZGxlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YWxsb3dzRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJN
ZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpyZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpkZWxldGVEZWNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6ZGVsZXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNv
bnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyOjpyZWxlYXNlUmVjb3JkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29u
c3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpoYXNTb3VyY2VQcm94aWVzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorCiAyMDIxLTA0LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gV0tNb3VzZURldmlj
ZU9ic2VydmVyIGlzIGNhbGxpbmcgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kKCkgb24gYSBub24tbWFp
biB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA3OTExNGZkOTQzMGNlMWFjNzJhNGViYzE4YzFmZTEy
YTFlOGYwOTE3Li43ODYyNTNlYTg0ODg2NjBhN2U4OGNlNWI1ZjIxNTYzYTkwZWQ1YmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVQcm9jZXNzJiBncHVQcm9jZXNzLCBXZWIKICNp
ZiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCiAgICAgLCBtX3dlYlByb2Nlc3NJZGVudGl0eVRv
a2VuKFdURk1vdmUocGFyYW1ldGVycy53ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbikpCiAjZW5kaWYK
LSAgICAsIG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eT4oKnRoaXMpKQorICAgICwgbV9yZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eShtYWtlVW5pcXVlUmVmPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
PigqdGhpcykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgLCBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5KExpYldl
YlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGUoKnRoaXMpKQpAQCAtMjY1LDYgKzI2NSw0OSBAQCB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlc3Ryb3lWaXNpYmlsaXR5UHJvcGFnYXRpb25D
b250ZXh0Rm9yUGFnZShXZWJQYQogfQogI2VuZGlmCiAKK2Jvb2wgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIGZv
ciAoYXV0byYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXJlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmFs
bG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBpZiAoIW1fcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNYXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICBp
ZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHktPmFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFCTEUoV0VCX0FVRElP
KQorICAgIGlmIChtX3JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyICYmICFtX3JlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyLT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICBpZiAobV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
ICYmIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS0+aGFzU291cmNlUHJveGllcygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2F1ZGlvVHJhY2tSZW5kZXJlck1hbmFn
ZXItPmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci0+YWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIEhBVkUo
QVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorICAgIGlmIChtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyICYmICFtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLT5hbGxvd3NFeGl0VW5kZXJNZW1v
cnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNlbmRpZgorI2lm
IEhBVkUoQVZBU1NFVFJFQURFUikKKyAgICBpZiAobV9pbWFnZURlY29kZXJBVkZQcm94eSAmJiAh
bV9pbWFnZURlY29kZXJBVkZQcm94eS0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKKyAgICBpZiAobV9jZG1GYWN0b3J5UHJveHkgJiYgIW1fY2RtRmFjdG9yeVByb3h5LT5hbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAobV9sZWdhY3lD
ZG1GYWN0b3J5UHJveHkgJiYgIW1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5LT5hbGxvd3NFeGl0VW5k
ZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dn
ZXIoKQogewogICAgIGlmICghbV9sb2dnZXIpIHsKQEAgLTM3Miw2ICs0MTUsNyBAQCB2b2lkIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaQogewogICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNYXAucmVtb3ZlKHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICBBU1NFUlRf
VU5VU0VEKGZvdW5kLCBmb3VuZCk7CisgICAgZ3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFu
ZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKQEAgLTM5MSw2
ICs0MzUsOCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dAogdm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKIHsKICAgICBtX3JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmIChtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgZ3B1
UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAog
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xG
b3JUZXN0aW5nKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggZjJkZDk1MDJhYmUzNmEwMGM3MWUyODc2MzYwYjhiMmNlZjA0Zjg5Zi4uMGIwNGU0YTk2
MjUzMzBkNzM5Y2NhYWQ1NDk3MGE4YTNlNmZkMDBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMzIsNyArMTMy
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5UHJveHkmIG1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSgpOwot
ICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eSgpIHsgcmV0dXJuICptX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OyB9Cisg
ICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5nZXQoKTsg
fQogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyJiBhdWRpb1Nlc3Npb25NYW5hZ2VyKCk7CkBAIC0xNDQsNiArMTQ0LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRSZW1vdGVDb21tYW5kcygpOwogCisgICAgYm9v
bCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiAgICAgdm9pZCB0ZXJt
aW5hdGVXZWJQcm9jZXNzKCk7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQgcmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwpA
QCAtMjI4LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyPiBtX3JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOwog
I2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyPiBt
X3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsK
KyAgICBVbmlxdWVSZWY8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1fcmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMpCiAgICAgUmVmPExpYldlYlJUQ0Nv
ZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVVByb2Nlc3MuY3BwCmluZGV4IGI2OWQ0ZTQ2NTA1N2JlMDNkZTM5N2JiNjUwNTQyMGZmZDdl
ZmE2NGQuLjIyMDk3NmUwZmI1ZTVlYTBkOGI1Y2YyYTU4NGI2YjNkY2E2ZGIxNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTExMSw2ICsxMTEsNyBAQCB2b2lk
IEdQVVByb2Nlc3M6OnJlbW92ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubgogewogICAgIEFTU0VSVChtX3dlYlByb2Nlc3NDb25uZWN0aW9u
cy5jb250YWlucyhjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkpKTsKICAgICBtX3dl
YlByb2Nlc3NDb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmll
cigpKTsKKyAgICB0cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAK
IHZvaWQgR1BVUHJvY2Vzczo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0xMjIsOCArMTIzLDQwIEBAIGJvb2wgR1BVUHJvY2Vzczo6
c2hvdWxkVGVybWluYXRlKCkKICAgICByZXR1cm4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuaXNF
bXB0eSgpOwogfQogCitib29sIEdQVVByb2Nlc3M6OmNhbkV4aXRVbmRlck1lbW9yeVByZXNzdXJl
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBmb3IgKGF1dG8m
IHdlYlByb2Nlc3NDb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkp
IHsKKyAgICAgICAgaWYgKCF3ZWJQcm9jZXNzQ29ubmVjdGlvbi0+YWxsb3dzRXhpdFVuZGVyTWVt
b3J5UHJlc3N1cmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgR1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51c2VkQW5kVW5kZXJN
ZW1vcnlQcmVzc3VyZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgaWYg
KCFNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB0cnlFeGl0SWZVbnVzZWQoKTsKK30KKwordm9p
ZCBHUFVQcm9jZXNzOjp0cnlFeGl0SWZVbnVzZWQoKQoreworICAgIEFTU0VSVChpc01haW5SdW5M
b29wKCkpOworICAgIGlmICghY2FuRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIkdQVVByb2Nlc3M6OnRyeUV4aXRJ
ZlVudXNlZDogR1BVUHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2Ugd2UgYXJlIHVuZGVyIG1lbW9y
eSBwcmVzc3VyZSBhbmQgdGhlIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIHVzZWZ1bC4iKTsKKyAgICB0
ZXJtaW5hdGUoKTsKK30KKwogdm9pZCBHUFVQcm9jZXNzOjpsb3dNZW1vcnlIYW5kbGVyKENyaXRp
Y2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIHsKKyAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzLCAiR1BVUHJvY2Vzczo6bG93TWVtb3J5SGFuZGxlcjogY3JpdGljYWw9JWQsIHN5
bmNocm9ub3VzPSVkIiwgY3JpdGljYWwgPT0gQ3JpdGljYWw6Olllcywgc3luY2hyb25vdXMgPT0g
U3luY2hyb25vdXM6Olllcyk7CisgICAgdHJ5RXhpdElmVW51c2VkKCk7CisKICAgICBXZWJDb3Jl
OjpyZWxlYXNlR3JhcGhpY3NNZW1vcnkoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKaW5kZXggMzU5YTNjNTI5MTBjMzExODk3NjBl
YTg0MjczNWMxZDIwNDAzODZjYi4uNGRjNzY1NDNlNWY0ODk2ZWM1ZWJiMmRkNzM3NWZkOTU5MTll
ODFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC05Miw2ICs5Miw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxl
VlA4RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJs
ZVZQOVNXRGVjb2Rlcik7CiAjZW5kaWYKIAorICAgIHZvaWQgdHJ5RXhpdElmVW51c2VkQW5kVW5k
ZXJNZW1vcnlQcmVzc3VyZSgpOworCiBwcml2YXRlOgogICAgIHZvaWQgbG93TWVtb3J5SGFuZGxl
cihDcml0aWNhbCwgU3luY2hyb25vdXMpOwogCkBAIC0xMDEsNiArMTAzLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmLCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSBvdmVycmlkZTsKIAorICAgIHZvaWQg
dHJ5RXhpdElmVW51c2VkKCk7CisgICAgYm9vbCBjYW5FeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgp
IGNvbnN0OworCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggYjk3YmVmNGYyZTQxYjU4MzgzY2NiN2M5NWZh
MDJmODY5OWU4MTY0NS4uYzlhNWM0MWE1ZTRmZmZlMWI4OTQzNGRlYTQ5NGMzYmU0Yjk1NzA3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtNTk3LDYgKzU5NywxMSBAQCB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OnVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpCiAgICAg
ICAgIG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdCA9IHsgfTsKIH0KIAorYm9vbCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5pbWFnZUJ1ZmZlcnMoKS5pc0VtcHR5
KCkgJiYgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLm5hdGl2ZUltYWdlcygpLmlzRW1wdHkoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBlM2RmMmQwOGRlYWQ2YjBlMTM0NDM4NTY4Y2VkMDcz
MmUwMWJjODc2Li43NDhjNGEyZDM0NTgzYTdlYTlkYmE3MTgyNDA0MmIxYmIyNGVmOGVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTgzLDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBw
b3B1bGF0ZUdldEltYWdlRGF0YVNoYXJlZE1lbW9yeShXZWJDb3JlOjpJbWFnZURhdGEqKTsKIAor
ICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogICAgIC8v
IFJ1bnMgRnVuY3Rpb24gaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB0YXNrIHF1ZXVlLgogICAg
IHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5jcHAKaW5kZXggODM5ZmU5M2EyMWJiMjVmNWJjZmJjNTM4N2FhYzg1Mjc3MTA5YzE4
Ni4uOGY1MTQ1ZTRmN2RhMDY1NzNiMDliNjY5NTRjMzIwZjZjZGU3MGRmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0F1ZGlvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CiAKQEAgLTE3Myw2ICsxNzQsOSBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
OjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpbwogICAgIGlmIChk
ZXN0aW5hdGlvbikKICAgICAgICAgZGVzdGluYXRpb24tPnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93
bklmTmVlZGVkKCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIGlmIChhbGxvd3NF
eGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuZ3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUo
KTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rl
c3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDMs
NiArMjA3LDExIEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmF1ZGlvU2Ft
cGxlc1N0b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGluCiB9CiAjZW5kaWYKIAorYm9vbCBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1
cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1ZGlvRGVzdGluYXRpb25zLmlzRW1wdHkoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCmluZGV4
IGY4NGQ2ZjhlM2Y1Y2M1NzdkZThmYTAxYjRjYzBhZjlhYzNjZmVjZjEuLmM2MGYxMDU0NmRhZjQz
ZDFhNjNjYTIwNzkwZDgzMDM4ZDY0NTFhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5o
CkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyByZXR1cm4gZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOyB9CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNz
dXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCAxNTVlYmFmZmI5YTk0ZGJiZmQ4NzI1NTJhZjJk
YzJiZWFhNjI3ZDkzLi4wNmVjNTI3MDZmY2E3ZjcxNTM5YTk3MDU5NDNmOGM3ZDViNTIxZDMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIlJlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaCIKQEAgLTE0Miw2ICsxNDMsOCBAQCB2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVt
b3ZlSW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZAogewogICAg
IEFTU0VSVChtX2luc3RhbmNlcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgbV9pbnN0YW5j
ZXMucmVtb3ZlKGlkZW50aWZpZXIpOworICAgIGlmIChtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgJiYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5ncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJN
ZW1vcnlQcmVzc3VyZSgpOwogfQogCiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBSZW1vdGVDRE1G
YWN0b3J5UHJveHk6OmdldEluc3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKQEAgLTE2MSw2ICsxNjQsMTEgQEAgdm9pZCBSZW1vdGVDRE1GYWN0b3J5
UHJveHk6OnJlbW92ZVNlc3Npb24oY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
ZmkKICAgICBtX3Nlc3Npb25zLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAorYm9vbCBSZW1vdGVD
RE1GYWN0b3J5UHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pbnN0YW5jZXMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQ
cm94eS5oCmluZGV4IGM0ZTg2YzM3MjU4MGMzOTE2OWQ4YzQzZTIyNDM5NmFhYjNhOGM5ZTIuLjAz
ODIxNmUyMGVmZjdjNjM1ODQzYzZlZmQ2ZjBiNDEzOWQzMjI2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKQEAg
LTcwLDYgKzcwLDggQEAgcHVibGljOgogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5nZXQoKTsgfQogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVj
dGlvbjsKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5j
cHAKaW5kZXggYjJhM2U3NTAxYzg3ZWU1MWZhNjM3ZDAzNWZiYjc5Y2IwYzg3YTlmYi4uMDA4MWMx
MmZkY2JjOGVlNzc1MDQ4MGE1NDUxZWIxOTk1NDU1NzM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZF
KEFWQVNTRVRSRUFERVIpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTcwLDYg
KzcxLDggQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6ZGVsZXRlRGVjb2RlcihJ
bWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9pbWFnZURlY29kZXJzLnRha2UoaWRlbnRpZmllcik7CisgICAgaWYgKG1fY29ubmVjdGlvblRv
V2ViUHJvY2VzcyAmJiBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmdwdVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRV
bmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAKIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCkBAIC0xNDEsNiArMTQ0LDExIEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkCiAgICAg
ICAgIGltYWdlRGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHN0ZDo6bWluKGluZGV4LCBp
bWFnZURlY29kZXItPmZyYW1lQ291bnQoKSAtIDEpKTsKIH0KIAorYm9vbCBSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2ltYWdlRGVjb2RlcnMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuaAppbmRleCAxYWQ2MGI3NjUzMWI5NDc4NWIxNWQ2M2YyMDAwZGE1
YzBiN2RkZTU1Li40OGY4NzBkMGM1NzBmN2NlZGFmNjA3OTNjNjI5OWMwN2E4MmNjN2ZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
ICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCisgICAgYm9vbCBhbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQg
Y3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVj
b2RlcklkZW50aWZpZXI+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCmluZGV4
IGJhNzJmYjc4NjI4NTJlNjY4Zjk0NTdlNzViY2VlNTUwMTQzYWExZDcuLjBlOGE4MWM2NTZkYzg1
MDE0ODM5NjZjMGZhYjBkMTBkOGI3ZDBhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCkBAIC0xNTEsNiArMTUyLDkgQEAg
dm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24oUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIKIAogICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5z
KGlkZW50aWZpZXIpKTsKICAgICBtX3Nlc3Npb25zLnJlbW92ZShpZGVudGlmaWVyKTsKKworICAg
IGlmIChtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgJiYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5
UHJlc3N1cmUoKSkKKyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5ncHVQcm9j
ZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Z2V0
U2Vzc2lvbihjb25zdCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYgaWRlbnRpZmll
cikgY29uc3QKQEAgLTE2MSw2ICsxNjUsMTEgQEAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
KiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmdldFNlc3Npb24oY29uc3QgUmVtb3QKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorYm9vbCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6
OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
ZXNzaW9ucy5pc0VtcHR5KCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
LmgKaW5kZXggNWZkOGZhNTQ2YTA5N2JmOGQ0NGE3MjNmY2ViZDdmZTVlOWRiODJlMi4uMTEzZmE5
NWE4NDhiMWVkYWYwNjgwNTBhMWM0Yjk3ZDI5MWQxNTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHkuaApAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgeyByZXR1cm4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmdldCgpOyB9CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nl
c3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcAppbmRleCBjOTQ4NTM2MWRjMjFhYjlhYjcyMDc0MjhhYTEzNmQ5ZGJk
NTZmYTU3Li4wMThiMjgwN2JmZjQxZGQzMmNjYTU1MzYzMzU3YWM5OGFkM2ZmODBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCkBAIC03Miw5ICs3MywxMyBAQCB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklk
ZW50aWZpZXIgaWRlbgogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRl
TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJv
eGllc0xvY2spOwotICAgIGlmIChhdXRvIHByb3h5ID0gbV9wcm94aWVzLnRha2UoaWRlbnRpZmll
cikpCi0gICAgICAgIHByb3h5LT5pbnZhbGlkYXRlKCk7CisgICAgeworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fcHJveGllc0xvY2spOworICAgICAgICBpZiAoYXV0byBwcm94eSA9
IG1fcHJveGllcy50YWtlKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcHJveHktPmludmFsaWRh
dGUoKTsKKyAgICB9CisgICAgaWYgKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyAmJiBhbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPmdwdVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNz
dXJlKCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFN1cHBv
cnRlZFR5cGVzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMTc5LDYgKzE4NCwxMSBAQCBSZWZQdHI8TWVkaWFQbGF5ZXI+
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZWRpYVBsYXllcihjb25zdCBNZWRpYVBs
YXllcgogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJveGllcy5pc0VtcHR5KCk7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKIExvZ2dlciYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IDkyNjdiMWM5NmMwYzRkZmQzYTk1MmI0NDJk
MWVhZGQzMzc1NzUwZWYuLjAwOGRhODc1NmE3MzI3OWFiOTlmNmY2MDgwMmY1NzBhMjBmZjVlYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGRpZFJlY2VpdmVTeW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgUmVmUHRyPFdl
YkNvcmU6Ok1lZGlhUGxheWVyPiBtZWRpYVBsYXllcihjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXll
cklkZW50aWZpZXImKTsKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAppbmRleCBk
ZDUyZWE4MTdiYzJmYmI0NTFlYWI4MjZlZjUyYmViNTUxOWU1MjkxLi5hZWRjYTAyMmZiMmQ3ZDU2
ZTlmOWE1Mzk2MjliMjc2YjY3Y2MxMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwCkBAIC04OCw2ICs4OCwxMSBAQCB2b2lkIFJl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6cmVsZWFzZVJlbmRlcmVy
KEF1ZGlvTWVkaWFTdHJlYQogICAgIG1fcmVuZGVyZXJzLnJlbW92ZShpZGVudGlmaWVyKTsKIH0K
IAorYm9vbCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmFsbG93
c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZW5kZXJl
cnMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgKaW5kZXggNWIwYTY4NGI1MjU3
OTM5YmRhZDJkY2Q1OWU0ZDUwYTRjNDY5YjJlMS4uYzMxNDkxMjZiNjMzMDU3Yjk5ZTc3ODJiOGY1
Y2VjMjU4Y2EwZDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlci5oCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xv
c2UoKTsKIAorICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlck1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogICAgIHZvaWQgc3RhcnRM
aXN0ZW5pbmdGb3JJUEMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKaW5kZXggOTRjYzg2
YWVhYjljMDZkMzkyMmRmMDljODU0MmQzNzIwMTU4MzIyZS4uMDFhNTM2ZWFlOGMzNzQzYTdmODE3
Y2M5ZTI0NjQyNzI5NzU5NWQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKQEAgLTY1
LDYgKzY1LDEzIEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmNyZWF0ZVJlY29y
ZGVyKE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkZW50aWZpCiB2b2lkIFJlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyOjpyZWxlYXNlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKIHsKICAgICBtX3JlY29yZGVycy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgaWYg
KGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5ncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQ
cmVzc3VyZSgpOworfQorCitib29sIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjphbGxvd3NF
eGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVjb3JkZXJz
LmlzRW1wdHkoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCmluZGV4IGE4N2Q4Y2Vm
OTNmOThhZTA4YWU3NWExNjNlODFmNmNmNzc2Y2RiOTEuLjgxOGIwMThkMmQ2ODAxYjA3ZWVhN2Q1
MzdhODc4MzVjODkyODJlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKQEAgLTU4LDYgKzU4
LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZU1lZGlhUmVjb3JkZXJNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsgfQogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Owor
CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IGU1ZGI4NDgy
ZTQyMzM1MTNkMzAzOTEyOTA1Y2VhNGE4ZDI0ZmEyMTIuLmY5MzNmMjc3MDI0N2I1Mzg0MmRhMWMz
NmNlYzgxZWM4ZmNmYTdmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmNwcApAQCAtMTAzLDYgKzEwMywxMSBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6OnJlbGVhc2VMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZQogICAgIH0pOwogfQogCitib29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9sYXllcnMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAppbmRleCA3NWY2MGQ1MjZjY2Q1ZWM2
YzRlYmUxMzk2MmFmZjM0YTU1YTZkMjVhLi5lODQzNmQ0NjNkMjYzN2U2NzA5OTZjOWMxY2Q5NmEw
MTJkYWRlYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
aApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICBi
b29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcihHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgdm9pZCBzdGFydExpc3RlbmluZ0ZvcklQQygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCBmZGE5NzBjNDAzZWJmNjdhZDViOTJiOTEy
YWRiNDI0MjYxZWM0MTM3Li4yNzAyNzkzZmY1NTFiYTk3YjdlZmIwOTAyMzUzNzQ2Mzk2YWUyMmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcApAQCAtMzY4LDYgKzM2OCwxMSBAQCB2b2lk
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnNldE9yaWVudGF0aW9uKHVpbnQ2NF90IG9y
aWVudGF0aW9uKQogICAgIG1fb3JpZW50YXRpb25Ob3RpZmllci5vcmllbnRhdGlvbkNoYW5nZWQo
b3JpZW50YXRpb24pOwogfQogCitib29sIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6Omhh
c1NvdXJjZVByb3hpZXMoKSBjb25zdAoreworICAgIHJldHVybiAhbV9wcm94aWVzLmlzRW1wdHko
KTsKK30KKwogfQogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5o
CmluZGV4IDgwN2NlOGY3MGU4NjA3NjNlNzhjNzYxMTUyZGMyNjg2YWIxMjM4MjAuLjA0MTM0ODlm
MTQyOThkZjU3ODMwNDE0MGZlYmEzNDZjYzMyZmFlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmgKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21HUFVQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAK
KyAgICBib29sIGhhc1NvdXJjZVByb3hpZXMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmE3MjRkYzg4NjNmNGFkZmJmMDI1ZDkyYmM1YTMz
MjllZTgyMzgzOC4uOTE0YzFmMWFlODQ1OWRkNTBkYTIyZTg2ZDdlNWFlZjQ3NWIwYmQwZCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIxLTA0LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgRXhpdCB0aGUgR1BVUHJvY2VzcyB3aGVuIHVuZGVyIG1lbW9yeSBwcmVzc3VyZSBpZiBp
dCBpcyBub3QgYmVpbmcgdXNlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI0NTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tOgorICAgICAgICAocnVuTWVt
b3J5UHJlc3N1cmVFeGl0VGVzdCk6CisgICAgICAgIChURVNUKToKKwogMjAyMS0wNC0xNCAgQWFr
YXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tbWl0IHF1ZXVl
IGlzbid0IHNraXBwaW5nIGJ1aWxkcyBhbmQgdGVzdCBvbiByZXZlcnQgcGF0Y2hlcwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCmlu
ZGV4IGYzMGMyZTJlNTg4OGI2YzJiNTlkMjM1ZDU2ZmNlNDI3YjIyZjc3N2QuLmFiNWQ5YTU0OTIz
NmRjODhiMTBhN2U4MTU4ODM3ZGYzZGExNDNkNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0KQEAgLTM0LDYgKzM0LDggQEAK
ICNpbXBvcnQgPFdlYktpdC9XS1N0cmluZy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1w
b3J0IDxub3RpZnkuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDkwLDMgKzQ5Miw5MCBAQCBURVNU
KEdQVVByb2Nlc3MsIENhbnZhc0Jhc2ljQ3Jhc2hIYW5kbGluZykKICAgICB9XTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQorCitzdGF0aWMgdm9pZCBydW5NZW1vcnlQ
cmVzc3VyZUV4aXRUZXN0KEZ1bmN0aW9uPHZvaWQoV0tXZWJWaWV3ICopPiYmIGxvYWRUZXN0UGFn
ZVN5bmNocm9ub3VzbHkpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0
Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbY29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIHRydWUsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJVc2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkIikpOworICAgIFdLUHJlZmVyZW5jZXNT
ZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtj
b25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkNhcHR1cmVWaWRlb0luR1BVUHJvY2Vzc0VuYWJsZWQiKSk7CisgICAgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNS
ZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCB0cnVlLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiVXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZ0VuYWJsZWQiKSk7Cisg
ICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdL
UHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCBmYWxzZSwgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUdQVVByb2Nlc3NGb3JET01SZW5kZXJpbmdFbmFi
bGVkIikpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgbG9hZFRlc3RQYWdlU3luY2hyb25vdXNseSh3
ZWJWaWV3LmdldCgpKTsKKworICAgIC8vIEEgR1BVUHJvY2VzcyBzaG91bGQgZ2V0IGxhdW5jaGVk
LgorICAgIHdoaWxlICghW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX2dwdVByb2Nl
c3NJZGVudGlmaWVyXSkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsK
KyAgICBhdXRvIGdwdVByb2Nlc3NQSUQgPSBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9v
bCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgLy8gU2ltdWxhdGUgbWVtb3J5IHByZXNz
dXJlIChub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93TWVtb3J5KS4KKyAgICBub3RpZnlfcG9z
dCgib3JnLldlYktpdC5sb3dNZW1vcnkiKTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgR1BVUHJv
Y2VzcyBkb2VzIG5vdCBleGl0IHNpbmNlIGl0IGlzIHN0aWxsIG5lZWRlZC4KKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpzbGVlcCgwLjUpOworICAgIEVYUEVDVF9FUShncHVQcm9jZXNzUElELCBb
Y29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdKTsK
KworICAgIC8vIE5hdmlnYXRlIHRvIGFub3RoZXIgcGFnZSB0aGF0IG5vIGxvbmdlciByZXF1aXJl
cyB0aGUgR1BVUHJvY2Vzcy4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6QCJzaW1wbGUiXTsKKworICAgIC8vIFRoZSBHUFVQcm9jZXNzIHNob3VsZCBleGl0IG9u
IG1lbW9yeSBwcmVzc3VyZS4KKyAgICBkbyB7CisgICAgICAgIC8vIFNpbXVsYXRlIG1lbW9yeSBw
cmVzc3VyZSAobm90aWZ5dXRpbCAtcCBvcmcuV2ViS2l0Lmxvd01lbW9yeSkuCisgICAgICAgIG5v
dGlmeV9wb3N0KCJvcmcuV2ViS2l0Lmxvd01lbW9yeSIpOworICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpzbGVlcCgwLjEpOworICAgIH0gd2hpbGUgKFtjb25maWd1cmF0aW9uLmdldCgpLnBy
b2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgLy8gVGhlIEdQVVByb2Nl
c3Mgc2hvdWxkIG5vdCByZWxhdW5jaC4KKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgw
LjUpOworICAgIEVYUEVDVF9FUSgwLCBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBf
Z3B1UHJvY2Vzc0lkZW50aWZpZXJdKTsKK30KKworVEVTVChHUFVQcm9jZXNzLCBFeGl0c1VuZGVy
TWVtb3J5UHJlc3N1cmVDYW52YXNDYXNlKQoreworICAgIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRl
c3QoW10oV0tXZWJWaWV3ICp3ZWJWaWV3KSB7CisgICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzp0ZXN0Q2FudmFzUGFnZV07CisKKyAgICAgICAgX19ibG9jayBib29s
IGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiY29u
dGV4dC5maWxsU3R5bGUgPSAnIzAwRkYwMCc7IGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgNDAwLCA0
MDApOyIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDpAImNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIDQwMCwgNDAwKS53aWR0aCIgY29tcGxldGlv
bkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAgICBFWFBF
Q1RfVFJVRSghZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOwor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIH0pOworfQorCitU
RVNUKEdQVVByb2Nlc3MsIEV4aXRzVW5kZXJNZW1vcnlQcmVzc3VyZVZpZGVvQ2FzZSkKK3sKKyAg
ICBydW5NZW1vcnlQcmVzc3VyZUV4aXRUZXN0KFtdKFdLV2ViVmlldyAqd2ViVmlldykgeworICAg
ICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRl
b3Mtd2l0aC1hdWRpbyJdOworCisgICAgICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCd2aWRlbycpWzBdLnBsYXkoKSAmJiB0cnVlIiBjb21wbGV0aW9uSGFuZGxlcjpe
KGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKCFl
cnJvcik7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgfSk7Cit9CisKK1RFU1QoR1BVUHJv
Y2VzcywgRXhpdHNVbmRlck1lbW9yeVByZXNzdXJlV2ViQXVkaW9DYXNlKQoreworICAgIHJ1bk1l
bW9yeVByZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3ICp3ZWJWaWV3KSB7CisgICAgICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImF1ZGlvLWNvbnRleHQtcGxh
eWluZyJdOworCisgICAgICAgIC8vIGV2YWx1YXRlSmF2YVNjcmlwdCBnaXZlcyB1cyB0aGUgdXNl
ciBnZXN0dXJlIHdlIG5lZWQgdG8gcmVsaWFibHkgc3RhcnQgYXVkaW8gcGxheWJhY2sgb24gYWxs
IHBsYXRmb3Jtcy4KKyAgICAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAg
W3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAic3RhcnRQbGF5aW5nKCkiIGNvbXBsZXRpb25I
YW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNU
X1RSVUUoIWVycm9yKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426153</attachid>
            <date>2021-04-15 16:45:07 -0700</date>
            <delta_ts>2021-04-16 08:24:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224556-20210415164507.patch</filename>
            <type>text/plain</type>
            <size>35570</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiYTEyZTVmZDZlYTY3OGM3
ZmI1ZWFiNjUxNWI1MGNhYTk4Y2RiYmQuLmFjN2QyOWE0MWRjMDE2ZTQ1M2NjYjliMTQ3MmY2ZWMx
MTY3YTEzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjEtMDQtMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9jZXNzIHdo
ZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9j
ZXNzIHdoZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkLiBU
aGlzIHdpbGwKKyAgICAgICAgaGVscCB1cyBzYXZlIG1lbW9yeSwgZXNwZWNpYWxseSB1bnRpbCB3
ZSBhcmUgYWJsZSB0byBlbmFibGUgIkRPTSBSZW5kZXJpbmcgaW4KKyAgICAgICAgR1BVUHJvY2Vz
cyIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZCk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFw
aGljc0NvbnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpyZW1vdmVHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6Y2FuRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjp0
cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYktpdDo6
R1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51c2VkKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
czo6bG93TWVtb3J5SGFuZGxlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YWxsb3dzRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJN
ZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpyZW1vdmVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpkZWxldGVEZWNvZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6ZGVsZXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNv
bnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlck1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyOjpyZWxlYXNlUmVjb3JkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29u
c3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlIGNvbnN0
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpoYXNTb3VyY2VQcm94aWVzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorCiAyMDIxLTA0LTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRWFybHkgSVBDIG1lc3NhZ2Vz
IHRvIGEgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIG1heSBnZXQgcHJvY2Vzc2VkIG91dCBvZiBv
cmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCmluZGV4IDQ0MWFiMWM2ZTc2YmViMTdlNjU1MWJmYjQ5NzI5OGQ2NzU0
MzY5MjQuLmE5NjE1ZDFlNTI3ODlmN2M4ZTc1ZjczZTI4YTczYWM3MjQyODUyYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nlc3MsIFdlYgogI2lmIEhB
VkUoVEFTS19JREVOVElUWV9UT0tFTikKICAgICAsIG1fd2ViUHJvY2Vzc0lkZW50aXR5VG9rZW4o
V1RGTW92ZShwYXJhbWV0ZXJzLndlYlByb2Nlc3NJZGVudGl0eVRva2VuKSkKICNlbmRpZgotICAg
ICwgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5PigqdGhpcykpCisgICAgLCBtX3JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5KG1ha2VVbmlxdWVSZWY8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+KCp0
aGlzKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgVVNFKExJQldFQlJUQykKICAgICAsIG1fbGliV2ViUlRDQ29kZWNzUHJveHkoTGliV2ViUlRD
Q29kZWNzUHJveHk6OmNyZWF0ZSgqdGhpcykpCkBAIC0yNjcsNiArMjY3LDQ5IEBAIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVzdHJveVZpc2liaWxpdHlQcm9wYWdhdGlvbkNvbnRl
eHRGb3JQYWdlKFdlYlBhCiB9CiAjZW5kaWYKIAorYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAgZm9yIChh
dXRvJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFw
LnZhbHVlcygpKSB7CisgICAgICAgIGlmICghcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+YWxsb3dz
RXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghbV9yZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIGlmICgh
bV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJl
c3N1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIEVOQUJMRShXRUJfQVVESU8pCisg
ICAgaWYgKG1fcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgJiYgIW1fcmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXItPmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorICAgIGlmIChtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgJiYg
bV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LT5oYXNTb3VyY2VQcm94aWVzKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlci0+
YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLT5hbGxvd3NFeGl0VW5k
ZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgSEFWRShBVkFT
U0VUV1JJVEVSREVMRUdBVEUpCisgICAgaWYgKG1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIg
JiYgIW1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXItPmFsbG93c0V4aXRVbmRlck1lbW9yeVBy
ZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2VuZGlmCisjaWYgSEFW
RShBVkFTU0VUUkVBREVSKQorICAgIGlmIChtX2ltYWdlRGVjb2RlckFWRlByb3h5ICYmICFtX2lt
YWdlRGVjb2RlckFWRlByb3h5LT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQor
ICAgIGlmIChtX2NkbUZhY3RvcnlQcm94eSAmJiAhbV9jZG1GYWN0b3J5UHJveHktPmFsbG93c0V4
aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGlmIChtX2xlZ2FjeUNkbUZh
Y3RvcnlQcm94eSAmJiAhbV9sZWdhY3lDZG1GYWN0b3J5UHJveHktPmFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIHJldHVy
biB0cnVlOworfQorCiBMb2dnZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxvZ2dlcigp
CiB7CiAgICAgaWYgKCFtX2xvZ2dlcikgewpAQCAtMzc0LDYgKzQxNyw3IEBAIHZvaWQgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpCiB7CiAgICAgYm9vbCBmb3VuZCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcC5yZW1vdmUocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVT
RUQoZm91bmQsIGZvdW5kKTsKKyAgICBncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5k
ZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQpAQCAtMzkzLDYgKzQz
Nyw4IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0CiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogewogICAgIG1fcmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXAucmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAuaXNFbXB0eSgpKQorICAgICAgICBncHVQcm9j
ZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTEZvclRl
c3RpbmcoR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCBmMmRkOTUwMmFiZTM2YTAwYzcxZTI4NzYzNjBiOGIyY2VmMDRmODlmLi4wYjA0ZTRhOTYyNTMz
MGQ3MzljY2FhZDU0OTcwYThhM2U2ZmQwMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEzMiw3ICsxMzIsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3RvcnlQcm94eSYgbWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5KCk7Ci0gICAg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5KCkgeyByZXR1cm4gKm1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7IH0KKyAgICBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkoKSB7IHJldHVybiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmdldCgpOyB9CiAK
ICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFn
ZXImIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKQEAgLTE0NCw2ICsxNDQsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFJlbW90ZUNvbW1hbmRzKCk7CiAKKyAgICBib29sIGFs
bG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKICAgICB2b2lkIHRlcm1pbmF0
ZVdlYlByb2Nlc3MoKTsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCByZWxlYXNlR3JhcGhp
Y3NDb250ZXh0R0xGb3JUZXN0aW5nKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CkBAIC0y
MjgsNyArMjMwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXI+IG1fcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI7CiAjZW5k
aWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI+IG1fcmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OworICAg
IFVuaXF1ZVJlZjxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICBSZWY8TGliV2ViUlRDQ29kZWNz
UHJveHk+IG1fbGliV2ViUlRDQ29kZWNzUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
UHJvY2Vzcy5jcHAKaW5kZXggYjY5ZDRlNDY1MDU3YmUwM2RlMzk3YmI2NTA1NDIwZmZkN2VmYTY0
ZC4uMjIwOTc2ZTBmYjVlNWVhMGQ4YjVjZjJhNTg0YjZiM2RjYTZkYjE2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtMTExLDYgKzExMSw3IEBAIHZvaWQgR1BV
UHJvY2Vzczo6cmVtb3ZlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uCiB7CiAgICAgQVNTRVJUKG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSkpOwogICAgIG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkp
OworICAgIHRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogdm9p
ZCBHUFVQcm9jZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2VkKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbikKQEAgLTEyMiw4ICsxMjMsNDAgQEAgYm9vbCBHUFVQcm9jZXNzOjpzaG91
bGRUZXJtaW5hdGUoKQogICAgIHJldHVybiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5
KCk7CiB9CiAKK2Jvb2wgR1BVUHJvY2Vzczo6Y2FuRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBj
b25zdAoreworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAgIGZvciAoYXV0byYgd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy52YWx1ZXMoKSkgewor
ICAgICAgICBpZiAoIXdlYlByb2Nlc3NDb25uZWN0aW9uLT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQ
cmVzc3VyZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBHUFVQcm9jZXNzOjp0cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9y
eVByZXNzdXJlKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBpZiAoIU1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHRyeUV4aXRJZlVudXNlZCgpOworfQorCit2b2lkIEdQ
VVByb2Nlc3M6OnRyeUV4aXRJZlVudXNlZCgpCit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3Ao
KSk7CisgICAgaWYgKCFjYW5FeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiR1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51
c2VkOiBHUFVQcm9jZXNzIGlzIGV4aXRpbmcgYmVjYXVzZSB3ZSBhcmUgdW5kZXIgbWVtb3J5IHBy
ZXNzdXJlIGFuZCB0aGUgcHJvY2VzcyBpcyBubyBsb25nZXIgdXNlZnVsLiIpOworICAgIHRlcm1p
bmF0ZSgpOworfQorCiB2b2lkIEdQVVByb2Nlc3M6Omxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWwg
Y3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogeworICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3MsICJHUFVQcm9jZXNzOjpsb3dNZW1vcnlIYW5kbGVyOiBjcml0aWNhbD0lZCwgc3luY2hy
b25vdXM9JWQiLCBjcml0aWNhbCA9PSBDcml0aWNhbDo6WWVzLCBzeW5jaHJvbm91cyA9PSBTeW5j
aHJvbm91czo6WWVzKTsKKyAgICB0cnlFeGl0SWZVbnVzZWQoKTsKKwogICAgIFdlYkNvcmU6OnJl
bGVhc2VHcmFwaGljc01lbW9yeShjcml0aWNhbCwgc3luY2hyb25vdXMpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAppbmRleCAzNTlhM2M1MjkxMGMzMTE4OTc2MGVhODQy
NzM1YzFkMjA0MDM4NmNiLi40ZGM3NjU0M2U1ZjQ4OTZlYzVlYmIyZGQ3Mzc1ZmQ5NTkxOWU4MWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKQEAgLTkyLDYgKzkyLDggQEAg
cHVibGljOgogICAgIHZvaWQgZW5hYmxlVlA5RGVjb2RlcnMoYm9vbCBzaG91bGRFbmFibGVWUDhE
ZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOURlY29kZXIsIGJvb2wgc2hvdWxkRW5hYmxlVlA5
U1dEZWNvZGVyKTsKICNlbmRpZgogCisgICAgdm9pZCB0cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1l
bW9yeVByZXNzdXJlKCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBsb3dNZW1vcnlIYW5kbGVyKENy
aXRpY2FsLCBTeW5jaHJvbm91cyk7CiAKQEAgLTEwMSw2ICsxMDMsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0
aW9uUGFyYW1ldGVycyYsIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlk
ZTsKICAgICBib29sIHNob3VsZFRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogCisgICAgdm9pZCB0cnlF
eGl0SWZVbnVzZWQoKTsKKyAgICBib29sIGNhbkV4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29u
c3Q7CisKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBiOTdiZWY0ZjJlNDFiNTgzODNjY2I3Yzk1ZmEwMmY4
Njk5ZTgxNjQ1Li5jOWE1YzQxYTVlNGZmZmUxYjg5NDM0ZGVhNDk0YzNiZTRiOTU3MDdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC01OTcsNiArNTk3LDExIEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6dXBkYXRlUmVuZGVyaW5nUmVzb3VyY2VSZXF1ZXN0KCkKICAgICAgICAg
bV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0ID0geyB9OwogfQogCitib29sIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmltYWdlQnVmZmVycygpLmlzRW1wdHkoKSAm
JiBtX3JlbW90ZVJlc291cmNlQ2FjaGUubmF0aXZlSW1hZ2VzKCkuaXNFbXB0eSgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCmluZGV4IGUzZGYyZDA4ZGVhZDZiMGUxMzQ0Mzg1NjhjZWQwNzMyZTAx
YmM4NzYuLjc0OGM0YTJkMzQ1ODNhN2VhOWRiYTcxODI0MDQyYjFiYjI0ZWY4ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaApAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBvcHVs
YXRlR2V0SW1hZ2VEYXRhU2hhcmVkTWVtb3J5KFdlYkNvcmU6OkltYWdlRGF0YSopOwogCisgICAg
Ym9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiAgICAgLy8gUnVu
cyBGdW5jdGlvbiBpbiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHRhc2sgcXVldWUuCiAgICAgdm9p
ZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmNwcAppbmRleCA4MzlmZTkzYTIxYmIyNWY1YmNmYmM1Mzg3YWFjODUyNzcxMDljMTg2Li44
ZjUxNDVlNGY3ZGEwNjU3M2IwOWI2Njk1NGMzMjBmNmNkZTcwZGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJfQVVESU8pCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVk
aW9VdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIApA
QCAtMTczLDYgKzE3NCw5IEBAIHZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRl
bGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvCiAgICAgaWYgKGRlc3Rp
bmF0aW9uKQogICAgICAgICBkZXN0aW5hdGlvbi0+c2NoZWR1bGVHcmFjZWZ1bFNodXRkb3duSWZO
ZWVkZWQoKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgaWYgKGFsbG93c0V4aXRV
bmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5ncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwog
fQogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdGFydEF1ZGlvRGVzdGlu
YXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIwMyw2ICsy
MDcsMTEgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6YXVkaW9TYW1wbGVz
U3RvcmFnZUNoYW5nZWQoUmVtb3RlQXVkaW9EZXN0aW4KIH0KICNlbmRpZgogCitib29sIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVkaW9EZXN0aW5hdGlvbnMuaXNFbXB0eSgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKaW5kZXggZjg0
ZDZmOGUzZjVjYzU3N2RlOGZhMDFiNGNjMGFmOWFjM2NmZWNmMS4uYzYwZjEwNTQ2ZGFmNDNkMWE2
M2NhMjA3OTBkODMwMzhkNjQ1MWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgKQEAg
LTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJv
bVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IHJldHVybiBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7IH0KIAorICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1GYWN0b3J5UHJveHkuY3BwCmluZGV4IDE1NWViYWZmYjlhOTRkYmJmZDg3MjU1MmFmMmRjMmJl
YWE2MjdkOTMuLjA2ZWM1MjcwNmZjYTdmNzE1MzlhOTcwNTk0M2Y4YzdkNWI1MjFkMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0
b3J5UHJveHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUNETUlu
c3RhbmNlUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
IgpAQCAtMTQyLDYgKzE0Myw4IEBAIHZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVJ
bnN0YW5jZShjb25zdCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImIGlkCiB7CiAgICAgQVNT
RVJUKG1faW5zdGFuY2VzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBtX2luc3RhbmNlcy5y
ZW1vdmUoaWRlbnRpZmllcik7CisgICAgaWYgKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyAm
JiBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MtPmdwdVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9y
eVByZXNzdXJlKCk7CiB9CiAKIFJlbW90ZUNETUluc3RhbmNlUHJveHkqIFJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6Z2V0SW5zdGFuY2UoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKQpAQCAtMTYxLDYgKzE2NCwxMSBAQCB2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94
eTo6cmVtb3ZlU2Vzc2lvbihjb25zdCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaQog
ICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkZW50aWZpZXIpOwogfQogCitib29sIFJlbW90ZUNETUZh
Y3RvcnlQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAg
IHJldHVybiBtX2luc3RhbmNlcy5pc0VtcHR5KCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmgKaW5kZXggYzRlODZjMzcyNTgwYzM5MTY5ZDhjNDNlMjI0Mzk2YWFiM2E4YzllMi4uMDM4MjE2
ZTIwZWZmN2M2MzU4NDNjNmVmZDZmMGI0MTM5ZDMyMjZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtNzAs
NiArNzAsOCBAQCBwdWJsaWM6CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpOyB9CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkg
Y29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9u
OwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcApp
bmRleCBiMmEzZTc1MDFjODdlZTUxZmE2MzdkMDM1ZmJiNzljYjBjODdhOWZiLi4wMDgxYzEyZmRj
YmM4ZWU3NzUwNDgwYTU0NTFlYjE5OTU0NTU3Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZB
U1NFVFJFQURFUikKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtNzAsNiArNzEs
OCBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpkZWxldGVEZWNvZGVyKEltYWdl
RGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcgogICAgICAgICByZXR1cm47CiAKICAgICBtX2lt
YWdlRGVjb2RlcnMudGFrZShpZGVudGlmaWVyKTsKKyAgICBpZiAobV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzICYmIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy0+Z3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVy
TWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6
ZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKQEAgLTE0MSw2ICsxNDQsMTEgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWQKICAgICAgICAg
aW1hZ2VEZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoc3RkOjptaW4oaW5kZXgsIGltYWdl
RGVjb2Rlci0+ZnJhbWVDb3VudCgpIC0gMSkpOwogfQogCitib29sIFJlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faW1hZ2VEZWNvZGVycy5pc0VtcHR5KCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5oCmluZGV4IDFhZDYwYjc2NTMxYjk0Nzg1YjE1ZDYzZjIwMDBkYTVjMGI3
ZGRlNTUuLjQ4Zjg3MGQwYzU3MGY3Y2VkYWY2MDc5M2M2Mjk5YzA3YTgyY2M3ZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5oCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAg
IGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKKyAgICBib29sIGFsbG93c0V4
aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVh
dGVEZWNvZGVyKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6SW1hZ2VEZWNvZGVy
SWRlbnRpZmllcj4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKaW5kZXggYmE3
MmZiNzg2Mjg1MmU2NjhmOTQ1N2U3NWJjZWU1NTAxNDNhYTFkNy4uMGU4YTgxYzY1NmRjODUwMTQ4
Mzk2NmMwZmFiMGQxMGQ4YjdkMGFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1Qcm94
eS5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKQEAgLTE1MSw2ICsxNTIsOSBAQCB2b2lk
IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uSWRlbnRpZmllcgogCiAgICAgQVNTRVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWRl
bnRpZmllcikpOwogICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkZW50aWZpZXIpOworCisgICAgaWYg
KG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyAmJiBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVz
c3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmdwdVByb2Nlc3Mo
KS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAKIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eSogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpnZXRTZXNz
aW9uKGNvbnN0IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiBpZGVudGlmaWVyKSBj
b25zdApAQCAtMTYxLDYgKzE2NSwxMSBAQCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Z2V0U2Vzc2lvbihjb25zdCBSZW1vdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCitib29sIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6YWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nlc3Np
b25zLmlzRW1wdHkoKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaApp
bmRleCA1ZmQ4ZmE1NDZhMDk3YmY4ZDQ0YTcyM2ZjZWJkN2ZlNWU5ZGI4MmUyLi4xMTNmYTk1YTg0
OGIxZWRhZjA2ODA1MGExYzRiOTdkMjkxZDE1M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5o
CkBAIC02NCw2ICs2NCw4IEBAIHB1YmxpYzoKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuZ2V0KCk7IH0KIAorICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJl
c3N1cmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb247CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuY3BwCmluZGV4IGM5NDg1MzYxZGMyMWFiOWFiNzIwNzQyOGFhMTM2ZDlkYmQ1NmZh
NTcuLjAxOGIyODA3YmZmNDFkZDMyY2NhNTUzNjMzNTdhYzk4YWQzZmY4MGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlICJHUFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5TWVzc2FnZXMuaCIKQEAgLTcyLDkgKzczLDEzIEBAIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVySWRlbnRp
ZmllciBpZGVuCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkZWxldGVNZWRp
YVBsYXllcihNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm94aWVz
TG9jayk7Ci0gICAgaWYgKGF1dG8gcHJveHkgPSBtX3Byb3hpZXMudGFrZShpZGVudGlmaWVyKSkK
LSAgICAgICAgcHJveHktPmludmFsaWRhdGUoKTsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9wcm94aWVzTG9jayk7CisgICAgICAgIGlmIChhdXRvIHByb3h5ID0gbV9w
cm94aWVzLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgICAgICBwcm94eS0+aW52YWxpZGF0ZSgp
OworICAgIH0KKyAgICBpZiAobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzICYmIGFsbG93c0V4
aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy0+Z3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUo
KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0U3VwcG9ydGVk
VHlwZXMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC0xNzksNiArMTg0LDExIEBAIFJlZlB0cjxNZWRpYVBsYXllcj4gUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lZGlhUGxheWVyKGNvbnN0IE1lZGlhUGxheWVy
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcm94aWVzLmlzRW1wdHkoKTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
TG9nZ2VyJiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bG9nZ2VyKCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXggOTI2N2IxYzk2YzBjNGRmZDNhOTUyYjQ0MmQxZWFk
ZDMzNzU3NTBlZi4uMDA4ZGE4NzU2YTczMjc5YWI5OWY2ZjYwODAyZjU3MGEyMGZmNWVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAg
IGJvb2wgZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICBSZWZQdHI8V2ViQ29y
ZTo6TWVkaWFQbGF5ZXI+IG1lZGlhUGxheWVyKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVySWRl
bnRpZmllciYpOworICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwCmluZGV4IGRkNTJl
YTgxN2JjMmZiYjQ1MWVhYjgyNmVmNTJiZWI1NTE5ZTUyOTEuLmFlZGNhMDIyZmIyZDdkNTZlOWY5
YTUzOTYyOWIyNzZiNjdjYzEyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAKQEAgLTg4LDYgKzg4LDExIEBAIHZvaWQgUmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjpyZWxlYXNlUmVuZGVyZXIoQXVk
aW9NZWRpYVN0cmVhCiAgICAgbV9yZW5kZXJlcnMucmVtb3ZlKGlkZW50aWZpZXIpOwogfQogCiti
b29sIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6YWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlbmRlcmVycy5p
c0VtcHR5KCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaAppbmRleCA1YjBhNjg0YjUyNTc5Mzli
ZGFkMmRjZDU5ZTRkNTBhNGM0NjliMmUxLi5jMzE0OTEyNmI2MzMwNTdiOTllNzc4MmI4ZjVjZWMy
NThjYTBkMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJNYW5hZ2VyLmgKQEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjbG9zZSgp
OwogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
TWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAgICAgdm9pZCBzdGFydExpc3Rl
bmluZ0ZvcklQQygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAppbmRleCA5NGNjODZhZWFi
OWMwNmQzOTIyZGYwOWM4NTQyZDM3MjAxNTgzMjJlLi4wMWE1MzZlYWU4YzM3NDNhN2Y4MTdjYzll
MjQ2NDI3Mjk3NTk1ZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtNjUsNiAr
NjUsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6Y3JlYXRlUmVjb3JkZXIo
TWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRlbnRpZmkKIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXI6OnJlbGVhc2VSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRpZmllciBpZGVudGlm
aWVyKQogewogICAgIG1fcmVjb3JkZXJzLnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICBpZiAoYWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmdwdVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNz
dXJlKCk7Cit9CisKK2Jvb2wgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmFsbG93c0V4aXRV
bmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWNvcmRlcnMuaXNF
bXB0eSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKaW5kZXggYTg3ZDhjZWY5M2Y5
OGFlMDhhZTc1YTE2M2U4MWY2Y2Y3NzZjZGI5MS4uODE4YjAxOGQyZDY4MDFiMDdlZWE3ZDUzN2E4
NzgzNWM4OTI4MmVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaApAQCAtNTgsNiArNTgsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9
CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKaW5kZXggZTVkYjg0ODJlNDIz
MzUxM2QzMDM5MTI5MDVjZWE0YThkMjRmYTIxMi4uZjkzM2YyNzcwMjQ3YjUzODQyZGExYzM2Y2Vj
ODFlYzhmY2ZhN2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIuY3BwCkBAIC0xMDMsNiArMTAzLDExIEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyTWFuYWdlcjo6cmVsZWFzZUxheWVyKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllCiAg
ICAgfSk7CiB9CiAKK2Jvb2wgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjo6
YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX2xh
eWVycy5pc0VtcHR5KCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCmluZGV4IDc1ZjYwZDUyNmNjZDVlYzZjNGVi
ZTEzOTYyYWZmMzRhNTVhNmQyNWEuLmU4NDM2ZDQ2M2QyNjM3ZTY3MDk5NmM5YzFjZDk2YTAxMmRh
ZGVhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oCkBA
IC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIGJvb2wg
YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmKTsKICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZkYTk3MGM0MDNlYmY2N2FkNWI5MmI5MTJhZGI0
MjQyNjFlYzQxMzcuLjI3MDI3OTNmZjU1MWJhOTdiN2VmYjA5MDIzNTM3NDYzOTZhZTIyYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0zNjgsNiArMzY4LDExIEBAIHZvaWQgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c2V0T3JpZW50YXRpb24odWludDY0X3Qgb3JpZW50
YXRpb24pCiAgICAgbV9vcmllbnRhdGlvbk5vdGlmaWVyLm9yaWVudGF0aW9uQ2hhbmdlZChvcmll
bnRhdGlvbik7CiB9CiAKK2Jvb2wgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6aGFzU291
cmNlUHJveGllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3Byb3hpZXMuaXNFbXB0eSgpOwor
fQorCiB9CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5k
ZXggODA3Y2U4ZjcwZTg2MDc2M2U3OGM3NjExNTJkYzI2ODZhYjEyMzgyMC4uMDQxMzQ4OWYxNDI5
OGRmNTc4MzA0MTQwZmViYTM0NmNjMzJmYWU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApA
QCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJv
bUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAorICAg
IGJvb2wgaGFzU291cmNlUHJveGllcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZGQ1ZTk3N2Y1MDYyOGIwYzBmODY3Y2U3ODA1NDVkNWM4
YmE0Yzk2Li4zZWJlMzFlZTk1ZWI3MmY3Y2UzZjcyNDlkYTI4M2EyZDBhYjkyNjdlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjEtMDQtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBFeGl0IHRoZSBHUFVQcm9jZXNzIHdoZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlz
IG5vdCBiZWluZyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjQ1NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW06CisgICAgICAgIChydW5NZW1vcnlQ
cmVzc3VyZUV4aXRUZXN0KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTA0LTE1ICBBYWthc2gg
SmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBmYXN0LWNxIGFz
IGEgcHJlZml4IGZvciBwYXRjaCBuYW1lIGZvciBmYXN0LWNxIG1vZGUgb24gY29tbWl0LXF1ZXVl
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVBy
b2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nl
c3MubW0KaW5kZXggZjMwYzJlMmU1ODg4YjZjMmI1OWQyMzVkNTZmY2U0MjdiMjJmNzc3ZC4uYWI1
ZDlhNTQ5MjM2ZGM4OGIxMGE3ZTgxNTg4MzdkZjNkYTE0M2Q1NiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQpAQCAtMzQsNiAr
MzQsOCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLU3RyaW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUu
aD4KKyNpbXBvcnQgPG5vdGlmeS5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00OTAsMyArNDkyLDkw
IEBAIFRFU1QoR1BVUHJvY2VzcywgQ2FudmFzQmFzaWNDcmFzaEhhbmRsaW5nKQogICAgIH1dOwog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CisKK3N0YXRpYyB2b2lkIHJ1
bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoRnVuY3Rpb248dm9pZChXS1dlYlZpZXcgKik+JiYgbG9h
ZFRlc3RQYWdlU3luY2hyb25vdXNseSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFdLUHJlZmVy
ZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZlcmVuY2Vz
UmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQiKSk7CisgICAgV0tQcmVm
ZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdLUHJlZmVyZW5j
ZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCB0cnVlLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzRW5hYmxlZCIpKTsKKyAgICBX
S1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlkZ2UgV0tQcmVm
ZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIHRydWUsIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJVc2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVyaW5nRW5hYmxl
ZCIpKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19i
cmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIGZhbHNl
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRl
cmluZ0VuYWJsZWQiKSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDQwMCwgNDAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBsb2FkVGVzdFBhZ2VTeW5jaHJv
bm91c2x5KHdlYlZpZXcuZ2V0KCkpOworCisgICAgLy8gQSBHUFVQcm9jZXNzIHNob3VsZCBnZXQg
bGF1bmNoZWQuCisgICAgd2hpbGUgKCFbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBf
Z3B1UHJvY2Vzc0lkZW50aWZpZXJdKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVl
cCgwLjEpOworICAgIGF1dG8gZ3B1UHJvY2Vzc1BJRCA9IFtjb25maWd1cmF0aW9uLmdldCgpLnBy
b2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICAvLyBTaW11bGF0ZSBtZW1v
cnkgcHJlc3N1cmUgKG5vdGlmeXV0aWwgLXAgb3JnLldlYktpdC5sb3dNZW1vcnkpLgorICAgIG5v
dGlmeV9wb3N0KCJvcmcuV2ViS2l0Lmxvd01lbW9yeSIpOworCisgICAgLy8gTWFrZSBzdXJlIHRo
ZSBHUFVQcm9jZXNzIGRvZXMgbm90IGV4aXQgc2luY2UgaXQgaXMgc3RpbGwgbmVlZGVkLgorICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuNSk7CisgICAgRVhQRUNUX0VRKGdwdVByb2Nl
c3NQSUQsIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRp
Zmllcl0pOworCisgICAgLy8gTmF2aWdhdGUgdG8gYW5vdGhlciBwYWdlIHRoYXQgbm8gbG9uZ2Vy
IHJlcXVpcmVzIHRoZSBHUFVQcm9jZXNzLgorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
VGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOworCisgICAgLy8gVGhlIEdQVVByb2Nlc3Mgc2hvdWxk
IGV4aXQgb24gbWVtb3J5IHByZXNzdXJlLgorICAgIGRvIHsKKyAgICAgICAgLy8gU2ltdWxhdGUg
bWVtb3J5IHByZXNzdXJlIChub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93TWVtb3J5KS4KKyAg
ICAgICAgbm90aWZ5X3Bvc3QoIm9yZy5XZWJLaXQubG93TWVtb3J5Iik7CisgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgfSB3aGlsZSAoW2NvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSk7CisKKyAgICAvLyBUaGUg
R1BVUHJvY2VzcyBzaG91bGQgbm90IHJlbGF1bmNoLgorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNsZWVwKDAuNSk7CisgICAgRVhQRUNUX0VRKDAsIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0pOworfQorCitURVNUKEdQVVByb2Nlc3MsIEV4
aXRzVW5kZXJNZW1vcnlQcmVzc3VyZUNhbnZhc0Nhc2UpCit7CisgICAgcnVuTWVtb3J5UHJlc3N1
cmVFeGl0VGVzdChbXShXS1dlYlZpZXcgKndlYlZpZXcpIHsKKyAgICAgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOnRlc3RDYW52YXNQYWdlXTsKKworICAgICAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHQ6QCJjb250ZXh0LmZpbGxTdHlsZSA9ICcjMDBGRjAwJzsgY29udGV4dC5maWxsUmVjdCgwLCAw
LCA0MDAsIDQwMCk7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CisgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVK
YXZhU2NyaXB0OkAiY29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgNDAwLCA0MDApLndpZHRoIiBj
b21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAg
ICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgfSk7
Cit9CisKK1RFU1QoR1BVUHJvY2VzcywgRXhpdHNVbmRlck1lbW9yeVByZXNzdXJlVmlkZW9DYXNl
KQoreworICAgIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3ICp3ZWJWaWV3
KSB7CisgICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImxh
cmdlLXZpZGVvcy13aXRoLWF1ZGlvIl07CisKKyAgICAgICAgX19ibG9jayBib29sIGRvbmUgPSBm
YWxzZTsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF0ucGxheSgpICYmIHRydWUiIGNvbXBsZXRpb25I
YW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNU
X1RSVUUoIWVycm9yKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9KTsKK30KKworVEVT
VChHUFVQcm9jZXNzLCBFeGl0c1VuZGVyTWVtb3J5UHJlc3N1cmVXZWJBdWRpb0Nhc2UpCit7Cisg
ICAgcnVuTWVtb3J5UHJlc3N1cmVFeGl0VGVzdChbXShXS1dlYlZpZXcgKndlYlZpZXcpIHsKKyAg
ICAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiYXVkaW8tY29u
dGV4dC1wbGF5aW5nIl07CisKKyAgICAgICAgLy8gZXZhbHVhdGVKYXZhU2NyaXB0IGdpdmVzIHVz
IHRoZSB1c2VyIGdlc3R1cmUgd2UgbmVlZCB0byByZWxpYWJseSBzdGFydCBhdWRpbyBwbGF5YmFj
ayBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwor
ICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJzdGFydFBsYXlpbmcoKSIgY29t
cGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgICAg
ICBFWFBFQ1RfVFJVRSghZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAg
IH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIH0pOwor
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426230</attachid>
            <date>2021-04-16 08:24:56 -0700</date>
            <delta_ts>2021-04-16 10:09:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224556-20210416082455.patch</filename>
            <type>text/plain</type>
            <size>51021</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUzM2ZmYWU1ZGZiNWFjZDUz
ZGNhNmRjMDE2ZTRkNTQ5NjA1ODQ2MWQuLjA3NTc0N2FjNjIzODUxOGI4M2Y4NzBkMDI0OWI5ZWEz
OTRkYzFiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjEtMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9jZXNzIHdo
ZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9j
ZXNzIHdoZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkLiBU
aGlzIHdpbGwKKyAgICAgICAgaGVscCB1cyBzYXZlIG1lbW9yeSwgZXNwZWNpYWxseSB1bnRpbCB3
ZSBhcmUgYWJsZSB0byBlbmFibGUgIkRPTSBSZW5kZXJpbmcgaW4KKyAgICAgICAgR1BVUHJvY2Vz
cyIuCisKKyAgICAgICAgTm90ZSB0aGF0IHdoZW4gdGhlIEdQVVByb2Nlc3MgaXMgcmVhZHkgdG8g
ZXhpdCwgaXQgc2VuZHMgYW4gSVBDIHRvIHRoZSBVSVByb2Nlc3MKKyAgICAgICAgaW4gb3JkZXIg
dG8gZ2V0IHRlcm1pbmF0ZWQsIGluc3RlYWQgb2YgdGVybWluYXRpbmcgaXRzZWxmLiBUaGUgcmVh
c29uIEkgZG8gdGhpcyBpcworICAgICAgICBzbyB0aGF0IHRoZSBVSVByb2Nlc3MgY2FuIGRpc3Rp
bmd1aXNoIGEgR1BVUHJvY2VzcyBjcmFzaCBmcm9tIGEgbm9ybWFsIGlkbGUgZXhpdC4KKworICAg
ICAgICBBL0IgdGVzdGluZyBzaG93czoKKyAgICAgICAgLSA1LTglIFBMVU0zIHByb2dyZXNzaW9u
IG9uIGlQaG9uZQorICAgICAgICAtIDIuNS00JSBQTFVNMyBwcm9ncmVzc2lvbiBvbiBpUGFkCisg
ICAgICAgIC0gTm8gUExUNSByZWdyZXNzaW9uIG9uIGVpdGhlciBpUGhvbmUgb3IgaVBhZC4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjph
bGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAg
ICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29u
dGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3M6OnJlbW92ZUdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpjYW5FeGl0VW5kZXJNZW1v
cnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3M6OnRyeUV4aXRJ
ZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9j
ZXNzOjp0cnlFeGl0SWZVbnVzZWQpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpsb3dN
ZW1vcnlIYW5kbGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphbGxvd3NFeGl0VW5kZXJNZW1v
cnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVBy
ZXNzdXJlIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6
OnJlbW92ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5
OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmRlbGV0ZURlY29kZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJl
c3N1cmUgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkZWxl
dGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgor
ICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXI6OnJlbGVhc2VSZWNvcmRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UmVjb3JkZXJNYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSBjb25zdCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1h
bmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpoYXNTb3Vy
Y2VQcm94aWVzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpncHVQcm9jZXNzRXhp
dGVkKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzSXNSZWFkeVRv
RXhpdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAg
ICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50OjpncHVQcm9jZXNzRGlk
RXhpdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpncHVQcm9jZXNzRXhpdGVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpncHVQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpncHVQcm9jZXNzRGlkRXhpdCk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9ncHVQcm9jZXNzRGlkRXhpdF0pOgor
CiAyMDIxLTA0LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RWFybHkgSVBDIG1lc3NhZ2VzIHRvIGEgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIG1heSBnZXQg
cHJvY2Vzc2VkIG91dCBvZiBvcmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDQ0MWFiMWM2ZTc2YmViMTdl
NjU1MWJmYjQ5NzI5OGQ2NzU0MzY5MjQuLmE5NjE1ZDFlNTI3ODlmN2M4ZTc1ZjczZTI4YTczYWM3
MjQyODUyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVBy
b2Nlc3MsIFdlYgogI2lmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKICAgICAsIG1fd2ViUHJv
Y2Vzc0lkZW50aXR5VG9rZW4oV1RGTW92ZShwYXJhbWV0ZXJzLndlYlByb2Nlc3NJZGVudGl0eVRv
a2VuKSkKICNlbmRpZgotICAgICwgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eShtYWtl
VW5pcXVlPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PigqdGhpcykpCisgICAgLCBtX3Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KG1ha2VVbmlxdWVSZWY8UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk+KCp0aGlzKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICNp
ZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICAsIG1fbGliV2ViUlRDQ29k
ZWNzUHJveHkoTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZSgqdGhpcykpCkBAIC0yNjcsNiAr
MjY3LDQ5IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVzdHJveVZpc2liaWxp
dHlQcm9wYWdhdGlvbkNvbnRleHRGb3JQYWdlKFdlYlBhCiB9CiAjZW5kaWYKIAorYm9vbCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNv
bnN0Cit7CisgICAgZm9yIChhdXRvJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kIDogbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghcmVtb3RlUmVuZGVy
aW5nQmFja2VuZC0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghbV9yZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS0+YWxsb3dz
RXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIEVO
QUJMRShXRUJfQVVESU8pCisgICAgaWYgKG1fcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIg
JiYgIW1fcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXItPmFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmIChtX3VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkgJiYgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LT5oYXNTb3Vy
Y2VQcm94aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fYXVkaW9UcmFj
a1JlbmRlcmVyTWFuYWdlci0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5h
Z2VyLT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisjaWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisgICAgaWYgKG1fcmVtb3RlTWVk
aWFSZWNvcmRlck1hbmFnZXIgJiYgIW1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXItPmFsbG93
c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorI2VuZGlmCisjaWYgSEFWRShBVkFTU0VUUkVBREVSKQorICAgIGlmIChtX2ltYWdlRGVjb2Rl
ckFWRlByb3h5ICYmICFtX2ltYWdlRGVjb2RlckFWRlByb3h5LT5hbGxvd3NFeGl0VW5kZXJNZW1v
cnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQorICAgIGlmIChtX2NkbUZhY3RvcnlQcm94eSAmJiAhbV9jZG1GYWN0
b3J5UHJveHktPmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAg
IGlmIChtX2xlZ2FjeUNkbUZhY3RvcnlQcm94eSAmJiAhbV9sZWdhY3lDZG1GYWN0b3J5UHJveHkt
PmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCiBMb2dnZXImIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmxvZ2dlcigpCiB7CiAgICAgaWYgKCFtX2xvZ2dlcikgewpAQCAtMzc0LDYgKzQx
Nyw3IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0Jh
Y2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiB7CiAgICAgYm9vbCBmb3VuZCA9IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1hcC5yZW1vdmUocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
OwogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKKyAgICBncHVQcm9jZXNzKCkudHJ5
RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiAjaWYgRU5BQkxFKFdF
QkdMKQpAQCAtMzkzLDYgKzQzNyw4IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0CiB2b2lkIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogewogICAg
IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAucmVtb3ZlKGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgaWYgKG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAuaXNFbXB0eSgp
KQorICAgICAgICBncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVz
c3VyZSgpOwogfQogCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFw
aGljc0NvbnRleHRHTEZvclRlc3RpbmcoR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50
aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAppbmRleCBmMmRkOTUwMmFiZTM2YTAwYzcxZTI4NzYzNjBiOGIyY2VmMDRm
ODlmLi4wYjA0ZTRhOTYyNTMzMGQ3MzljY2FhZDU0OTcwYThhM2U2ZmQwMGI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
QEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFJlbW90ZU1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSYgbWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeVByb3h5KCk7Ci0gICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5KCkgeyByZXR1cm4gKm1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk7IH0KKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgcmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkoKSB7IHJldHVybiBtX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmdldCgpOyB9CiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1hbmFnZXImIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKQEAgLTE0NCw2ICsx
NDQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFJlbW90ZUNvbW1hbmRz
KCk7CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisK
ICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoKTsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAg
dm9pZCByZWxlYXNlR3JhcGhpY3NDb250ZXh0R0xGb3JUZXN0aW5nKEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CkBAIC0yMjgsNyArMjMwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI+IG1fcmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OworICAgIFVuaXF1ZVJlZjxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eT4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKICAgICBQQUw6OlNlc3Npb25JRCBt
X3Nlc3Npb25JRDsKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICBS
ZWY8TGliV2ViUlRDQ29kZWNzUHJveHk+IG1fbGliV2ViUlRDQ29kZWNzUHJveHk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKaW5kZXggYjY5ZDRlNDY1MDU3YmUwM2RlMzk3
YmI2NTA1NDIwZmZkN2VmYTY0ZC4uNzc2NTk1NjRkODI1YzMyYjM5NWU5NjRjZjVkNmEyZWE4MjYz
NGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcApAQCAtMTExLDYg
KzExMSw3IEBAIHZvaWQgR1BVUHJvY2Vzczo6cmVtb3ZlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uCiB7CiAgICAgQVNTRVJUKG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIo
KSkpOwogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uLndlYlBy
b2Nlc3NJZGVudGlmaWVyKCkpOworICAgIHRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJl
c3N1cmUoKTsKIH0KIAogdm9pZCBHUFVQcm9jZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xv
c2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTEyMiw4ICsxMjMsNDAgQEAgYm9v
bCBHUFVQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQogICAgIHJldHVybiBtX3dlYlByb2Nlc3ND
b25uZWN0aW9ucy5pc0VtcHR5KCk7CiB9CiAKK2Jvb2wgR1BVUHJvY2Vzczo6Y2FuRXhpdFVuZGVy
TWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwor
ICAgIGZvciAoYXV0byYgd2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0
aW9ucy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXdlYlByb2Nlc3NDb25uZWN0aW9uLT5hbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHUFVQcm9jZXNzOjp0cnlFeGl0SWZV
bnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9v
cCgpKTsKKyAgICBpZiAoIU1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRl
ck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHRyeUV4aXRJZlVudXNl
ZCgpOworfQorCit2b2lkIEdQVVByb2Nlc3M6OnRyeUV4aXRJZlVudXNlZCgpCit7CisgICAgQVNT
RVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgaWYgKCFjYW5FeGl0VW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiR1BVUHJv
Y2Vzczo6dHJ5RXhpdElmVW51c2VkOiBHUFVQcm9jZXNzIGlzIGV4aXRpbmcgYmVjYXVzZSB3ZSBh
cmUgdW5kZXIgbWVtb3J5IHByZXNzdXJlIGFuZCB0aGUgcHJvY2VzcyBpcyBubyBsb25nZXIgdXNl
ZnVsLiIpOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkdQ
VVByb2Nlc3NQcm94eTo6UHJvY2Vzc0lzUmVhZHlUb0V4aXQoKSwgMCk7Cit9CisKIHZvaWQgR1BV
UHJvY2Vzczo6bG93TWVtb3J5SGFuZGxlcihDcml0aWNhbCBjcml0aWNhbCwgU3luY2hyb25vdXMg
c3luY2hyb25vdXMpCiB7CisgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIkdQVVByb2Nlc3M6Omxv
d01lbW9yeUhhbmRsZXI6IGNyaXRpY2FsPSVkLCBzeW5jaHJvbm91cz0lZCIsIGNyaXRpY2FsID09
IENyaXRpY2FsOjpZZXMsIHN5bmNocm9ub3VzID09IFN5bmNocm9ub3VzOjpZZXMpOworICAgIHRy
eUV4aXRJZlVudXNlZCgpOworCiAgICAgV2ViQ29yZTo6cmVsZWFzZUdyYXBoaWNzTWVtb3J5KGNy
aXRpY2FsLCBzeW5jaHJvbm91cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vz
cy5oCmluZGV4IDM1OWEzYzUyOTEwYzMxMTg5NzYwZWE4NDI3MzVjMWQyMDQwMzg2Y2IuLjRkYzc2
NTQzZTVmNDg5NmVjNWViYjJkZDczNzVmZDk1OTE5ZTgxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVVByb2Nlc3MuaApAQCAtOTIsNiArOTIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFi
bGVWUDlEZWNvZGVycyhib29sIHNob3VsZEVuYWJsZVZQOERlY29kZXIsIGJvb2wgc2hvdWxkRW5h
YmxlVlA5RGVjb2RlciwgYm9vbCBzaG91bGRFbmFibGVWUDlTV0RlY29kZXIpOwogI2VuZGlmCiAK
KyAgICB2b2lkIHRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKKwogcHJp
dmF0ZToKICAgICB2b2lkIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWwsIFN5bmNocm9ub3VzKTsK
IApAQCAtMTAxLDYgKzEwMyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplU2FuZGJv
eChjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiwgU2FuZGJv
eEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkVGVy
bWluYXRlKCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHRyeUV4aXRJZlVudXNlZCgpOworICAgIGJv
b2wgY2FuRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogICAgIC8vIElQQzo6Q29u
bmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmlu
ZGV4IGI5N2JlZjRmMmU0MWI1ODM4M2NjYjdjOTVmYTAyZjg2OTllODE2NDUuLmM5YTVjNDFhNWU0
ZmZmZTFiODk0MzRkZWE0OTRjM2JlNGI5NTcwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAK
QEAgLTU5Nyw2ICs1OTcsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp1cGRhdGVS
ZW5kZXJpbmdSZXNvdXJjZVJlcXVlc3QoKQogICAgICAgICBtX3JlbmRlcmluZ1Jlc291cmNlc1Jl
cXVlc3QgPSB7IH07CiB9CiAKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlbW90ZVJlc291
cmNlQ2FjaGUuaW1hZ2VCdWZmZXJzKCkuaXNFbXB0eSgpICYmIG1fcmVtb3RlUmVzb3VyY2VDYWNo
ZS5uYXRpdmVJbWFnZXMoKS5pc0VtcHR5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXgg
ZTNkZjJkMDhkZWFkNmIwZTEzNDQzODU2OGNlZDA3MzJlMDFiYzg3Ni4uNzQ4YzRhMmQzNDU4M2E3
ZWE5ZGJhNzE4MjQwNDJiMWJiMjRlZjhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC04Myw2
ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9wdWxhdGVHZXRJbWFnZURhdGFTaGFyZWRN
ZW1vcnkoV2ViQ29yZTo6SW1hZ2VEYXRhKik7CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlKCkgY29uc3Q7CisKICAgICAvLyBSdW5zIEZ1bmN0aW9uIGluIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgdGFzayBxdWV1ZS4KICAgICB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCmluZGV4IDgzOWZlOTNh
MjFiYjI1ZjViY2ZiYzUzODdhYWM4NTI3NzEwOWMxODYuLjhmNTE0NWU0ZjdkYTA2NTczYjA5YjY2
OTU0YzMyMGY2Y2RlNzBkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQl9BVURJ
TykKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJH
UFVQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb1V0aWxpdGllcy5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCkBAIC0xNzMsNiArMTc0LDkgQEAgdm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW8KICAgICBpZiAoZGVzdGluYXRpb24pCiAgICAgICAgIGRlc3Rp
bmF0aW9uLT5zY2hlZHVsZUdyYWNlZnVsU2h1dGRvd25JZk5lZWRlZCgpOwogICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisKKyAgICBpZiAoYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkK
KyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdwdVByb2Nlc3MoKS50cnlFeGl0
SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjAzLDYgKzIwNywxMSBAQCB2b2lkIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjphdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChSZW1vdGVB
dWRpb0Rlc3RpbgogfQogI2VuZGlmCiAKK2Jvb2wgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9hdWRpb0Rlc3RpbmF0aW9ucy5pc0VtcHR5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCX0FVRElPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAppbmRleCBmODRkNmY4ZTNmNWNjNTc3ZGU4ZmEwMWI0
Y2MwYWY5YWMzY2ZlY2YxLi5jNjBmMTA1NDZkYWY0M2QxYTYzY2EyMDc5MGQ4MzAzOGQ2NDUxYWUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mIGVuY29kZXIpIHsgcmV0dXJuIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
V2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCisgICAg
Ym9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKaW5k
ZXggMTU1ZWJhZmZiOWE5NGRiYmZkODcyNTUyYWYyZGMyYmVhYTYyN2Q5My4uMDZlYzUyNzA2ZmNh
N2Y3MTUzOWE5NzA1OTQzZjhjN2Q1YjUyMWQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1Db25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIgogI2luY2x1
ZGUgIlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgiCkBAIC0xNDIsNiArMTQzLDggQEAg
dm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZUluc3RhbmNlKGNvbnN0IFJlbW90ZUNE
TUluc3RhbmNlSWRlbnRpZmllciYgaWQKIHsKICAgICBBU1NFUlQobV9pbnN0YW5jZXMuY29udGFp
bnMoaWRlbnRpZmllcikpOwogICAgIG1faW5zdGFuY2VzLnJlbW92ZShpZGVudGlmaWVyKTsKKyAg
ICBpZiAobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzICYmIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkpCisgICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Z3B1UHJv
Y2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSogUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpnZXRJbnN0YW5jZShj
b25zdCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCkBAIC0xNjEsNiAr
MTY0LDExIEBAIHZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpyZW1vdmVTZXNzaW9uKGNvbnN0
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpCiAgICAgbV9zZXNzaW9ucy5yZW1vdmUo
aWRlbnRpZmllcik7CiB9CiAKK2Jvb2wgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphbGxvd3NFeGl0
VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5zdGFuY2VzLmlz
RW1wdHkoKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaAppbmRleCBjNGU4NmMzNzI1ODBj
MzkxNjlkOGM0M2UyMjQzOTZhYWIzYThjOWUyLi4wMzgyMTZlMjBlZmY3YzYzNTg0M2M2ZWZkNmYw
YjQxMzlkMzIyNmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCkBAIC03MCw2ICs3MCw4IEBAIHB1YmxpYzoKIAog
ICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KSB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7IH0KIAorICAgIGJv
b2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCmluZGV4IGIyYTNlNzUwMWM4N2VlNTFm
YTYzN2QwMzVmYmI3OWNiMGM4N2E5ZmIuLjAwODFjMTJmZGNiYzhlZTc3NTA0ODBhNTQ1MWViMTk5
NTQ1NTczOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUUkVBREVSKQogCiAjaW5jbHVk
ZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIK
ICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC03MCw2ICs3MSw4IEBAIHZvaWQgUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHk6OmRlbGV0ZURlY29kZXIoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW1hZ2VEZWNvZGVycy50YWtlKGlkZW50
aWZpZXIpOworICAgIGlmIChtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgJiYgYWxsb3dzRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5n
cHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwogfQog
CiB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjplbmNvZGVkRGF0YVN0YXR1c0NoYW5n
ZWQoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAtMTQxLDYgKzE0NCwxMSBA
QCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZAogICAgICAgICBpbWFnZURlY29kZXItPmNsZWFyRnJh
bWVCdWZmZXJDYWNoZShzdGQ6Om1pbihpbmRleCwgaW1hZ2VEZWNvZGVyLT5mcmFtZUNvdW50KCkg
LSAxKSk7CiB9CiAKK2Jvb2wgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmFsbG93c0V4aXRV
bmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZURlY29kZXJz
LmlzRW1wdHkoKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKaW5kZXgg
MWFkNjBiNzY1MzFiOTQ3ODViMTVkNjNmMjAwMGRhNWMwYjdkZGU1NS4uNDhmODcwZDBjNTcwZjdj
ZWRhZjYwNzkzYzYyOTljMDdhODJjYzdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKQEAgLTUw
LDYgKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mKSBmaW5hbDsKIAorICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyPiYmKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCBiYTcyZmI3ODYyODUyZTY2OGY5NDU3ZTc1
YmNlZTU1MDE0M2FhMWQ3Li4wZThhODFjNjU2ZGM4NTAxNDgzOTY2YzBmYWIwZDEwZDhiN2QwYWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKICNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5oIgpAQCAtMTUxLDYgKzE1Miw5IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyCiAK
ICAgICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgbV9zZXNz
aW9ucy5yZW1vdmUoaWRlbnRpZmllcik7CisKKyAgICBpZiAobV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzICYmIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Z3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVu
ZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KiBS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmdldFNlc3Npb24oY29uc3QgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CkBAIC0xNjEsNiArMTY1LDEx
IEBAIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5OjpnZXRTZXNzaW9uKGNvbnN0IFJlbW90CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2Jv
b2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVz
c3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbnMuaXNFbXB0eSgpOworfQorCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCmluZGV4IDVmZDhmYTU0NmEwOTdiZjhk
NDRhNzIzZmNlYmQ3ZmU1ZTlkYjgyZTIuLjExM2ZhOTVhODQ4YjFlZGFmMDY4MDUwYTFjNGI5N2Qy
OTFkMTUzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKQEAgLTY0LDYgKzY0LDggQEAgcHVi
bGljOgogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpIHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsgfQog
CisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggYzk0
ODUzNjFkYzIxYWI5YWI3MjA3NDI4YWExMzZkOWRiZDU2ZmE1Ny4uMDE4YjI4MDdiZmY0MWRkMzJj
Y2E1NTM2MzM1N2FjOThhZDNmZjgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
IgpAQCAtNzIsOSArNzMsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
Y3JlYXRlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW4KIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRlbGV0ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVySWRl
bnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3hpZXNMb2NrKTsKLSAgICBpZiAoYXV0byBw
cm94eSA9IG1fcHJveGllcy50YWtlKGlkZW50aWZpZXIpKQotICAgICAgICBwcm94eS0+aW52YWxp
ZGF0ZSgpOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3hpZXNM
b2NrKTsKKyAgICAgICAgaWYgKGF1dG8gcHJveHkgPSBtX3Byb3hpZXMudGFrZShpZGVudGlmaWVy
KSkKKyAgICAgICAgICAgIHByb3h5LT5pbnZhbGlkYXRlKCk7CisgICAgfQorICAgIGlmIChtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgJiYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUo
KSkKKyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5ncHVQcm9jZXNzKCkudHJ5
RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3OSw2
ICsxODQsMTEgQEAgUmVmUHRyPE1lZGlhUGxheWVyPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6bWVkaWFQbGF5ZXIoY29uc3QgTWVkaWFQbGF5ZXIKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAorYm9vbCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6YWxsb3dzRXhpdFVuZGVy
TWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3Byb3hpZXMuaXNFbXB0eSgp
OworfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBMb2dnZXImIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5Ojpsb2dnZXIoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApp
bmRleCA5MjY3YjFjOTZjMGM0ZGZkM2E5NTJiNDQyZDFlYWRkMzM3NTc1MGVmLi4wMDhkYTg3NTZh
NzMyNzlhYjk5ZjZmNjA4MDJmNTcwYTIwZmY1ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY1Bs
YXllck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mKTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBsYXllcj4gbWVkaWFQ
bGF5ZXIoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJik7CisgICAgYm9vbCBh
bGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlci5jcHAKaW5kZXggZGQ1MmVhODE3YmMyZmJiNDUxZWFiODI2ZWY1
MmJlYjU1MTllNTI5MS4uYWVkY2EwMjJmYjJkN2Q1NmU5ZjlhNTM5NjI5YjI3NmI2N2NjMTIxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2Vy
LmNwcApAQCAtODgsNiArODgsMTEgQEAgdm9pZCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlck1hbmFnZXI6OnJlbGVhc2VSZW5kZXJlcihBdWRpb01lZGlhU3RyZWEKICAgICBtX3Jl
bmRlcmVycy5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKK2Jvb2wgUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVuZGVyZXJzLmlzRW1wdHkoKTsKK30KKwogfQogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWFuYWdlci5oCmluZGV4IDViMGE2ODRiNTI1NzkzOWJkYWQyZGNkNTllNGQ1MGE0YzQ2OWIy
ZTEuLmMzMTQ5MTI2YjYzMzA1N2I5OWU3NzgyYjhmNWNlYzI1OGNhMGQyODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaApAQCAtNjAsNiAr
NjAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICBib29sIGFsbG93c0V4
aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmKTsKICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXIuY3BwCmluZGV4IDk0Y2M4NmFlYWI5YzA2ZDM5MjJkZjA5Yzg1NDJkMzcy
MDE1ODMyMmUuLjAxYTUzNmVhZThjMzc0M2E3ZjgxN2NjOWUyNDY0MjcyOTc1OTVkMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXIuY3BwCkBAIC02NSw2ICs2NSwxMyBAQCB2b2lkIFJlbW90ZU1l
ZGlhUmVjb3JkZXJNYW5hZ2VyOjpjcmVhdGVSZWNvcmRlcihNZWRpYVJlY29yZGVySWRlbnRpZmll
ciBpZGVudGlmaQogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6cmVsZWFzZVJlY29y
ZGVyKE1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgbV9yZWNvcmRl
cnMucmVtb3ZlKGlkZW50aWZpZXIpOworICAgIGlmIChhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVz
c3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ3B1UHJvY2Vzcygp
LnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKK30KKworYm9vbCBSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3JlY29yZGVycy5pc0VtcHR5KCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXIuaAppbmRleCBhODdkOGNlZjkzZjk4YWUwOGFlNzVhMTYzZTgxZjZjZjc3
NmNkYjkxLi44MThiMDE4ZDJkNjgwMWIwN2VlYTdkNTM3YTg3ODM1Yzg5MjgyZWVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlci5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAorICAgIGJvb2wgYWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJNYW5hZ2VyLmNwcAppbmRleCBlNWRiODQ4MmU0MjMzNTEzZDMwMzkxMjkwNWNlYTRhOGQy
NGZhMjEyLi5mOTMzZjI3NzAyNDdiNTM4NDJkYTFjMzZjZWM4MWVjOGZjZmE3ZjMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTEwMyw2ICsx
MDMsMTEgQEAgdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjpyZWxl
YXNlTGF5ZXIoU2FtcGxlQnVmZmVyRGlzcGxheUxheWUKICAgICB9KTsKIH0KIAorYm9vbCBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQ
cmVzc3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJzLmlzRW1wdHkoKTsKK30KKwog
fQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyLmgKaW5kZXggNzVmNjBkNTI2Y2NkNWVjNmM0ZWJlMTM5NjJhZmYzNGE1NWE2ZDI1YS4u
ZTg0MzZkNDYzZDI2MzdlNjcwOTk2YzljMWNkOTZhMDEyZGFkZWExOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgKQEAgLTU5LDYgKzU5LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjbG9zZSgpOwogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQ
cmVzc3VyZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogICAg
IHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Byb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmgKaW5kZXggNjNmZGE3YjViYzk3ZTQ0NTEzNGZiMDUy
Y2MyMzFiOGQ2MGRhZTExNi4uODU3MWM0NjkyZWUwNDk0NjhlOTUwMGJhYTlhMjJjNTk0ODM1NjIy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
LmgKQEAgLTM3LDQgKzM3LDkgQEAgZW51bSBjbGFzcyBQcm9jZXNzVGVybWluYXRpb25SZWFzb24g
ewogICAgIFJlcXVlc3RlZEJ5R1BVUHJvY2VzcwogfTsKIAorZW51bSBjbGFzcyBHUFVQcm9jZXNz
VGVybWluYXRpb25SZWFzb24geworICAgIENyYXNoLAorICAgIElkbGVFeGl0Cit9OworCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZkYTk3MGM0MDNlYmY2N2FkNWI5MmI5MTJh
ZGI0MjQyNjFlYzQxMzcuLjI3MDI3OTNmZjU1MWJhOTdiN2VmYjA5MDIzNTM3NDYzOTZhZTIyYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0zNjgsNiArMzY4LDExIEBAIHZvaWQg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c2V0T3JpZW50YXRpb24odWludDY0X3Qgb3Jp
ZW50YXRpb24pCiAgICAgbV9vcmllbnRhdGlvbk5vdGlmaWVyLm9yaWVudGF0aW9uQ2hhbmdlZChv
cmllbnRhdGlvbik7CiB9CiAKK2Jvb2wgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6aGFz
U291cmNlUHJveGllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3Byb3hpZXMuaXNFbXB0eSgp
OworfQorCiB9CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgK
aW5kZXggODA3Y2U4ZjcwZTg2MDc2M2U3OGM3NjExNTJkYzI2ODZhYjEyMzgyMC4uMDQxMzQ4OWYx
NDI5OGRmNTc4MzA0MTQwZmViYTM0NmNjMzJmYWU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
aApAQCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
RnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAor
ICAgIGJvb2wgaGFzU291cmNlUHJveGllcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKaW5kZXggYWQ1OGM5NGYxMDhiOWM4MWI0NGZlNTRm
NDlhZmY4Mzk5MDQzOWIxOS4uZWZjODU2N2IyYzNiNWMxMmE3NGViOGY4MzM0MDhiZmViNTc1ZDc2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5j
cHAKQEAgLTI4NSwxOSArMjg1LDM3IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9j
ZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwKICAgICB9LCAw
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CiB9CiAKLXZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpncHVQcm9jZXNzQ3Jhc2hlZCgpCit2
b2lkIEdQVVByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRp
b25SZWFzb24gcmVhc29uKQogeworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpOworCisgICAgc3dpdGNoIChyZWFzb24pIHsKKyAgICBjYXNlIEdQVVByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbjo6Q3Jhc2g6CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICIl
cCAtIEdQVVByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZDogcmVhc29uPWNyYXNoIiwgdGhp
cyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
OjpJZGxlRXhpdDoKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIiVwIC0gR1BVUHJvY2Vz
c1Byb3h5OjpncHVQcm9jZXNzRXhpdGVkOiByZWFzb249aWRsZS1leGl0IiwgdGhpcyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGlmIChzaW5nbGV0b24oKSA9PSB0aGlzKQogICAgICAg
ICBzaW5nbGV0b24oKSA9IG51bGxwdHI7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDog
V2ViUHJvY2Vzc1Bvb2w6OmFsbFByb2Nlc3NQb29scygpKQotICAgICAgICBwcm9jZXNzUG9vbC0+
Z3B1UHJvY2Vzc0NyYXNoZWQocHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3NQ
b29sLT5ncHVQcm9jZXNzRXhpdGVkKHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbik7Cit9CisK
K3ZvaWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzSXNSZWFkeVRvRXhpdCgpCit7CisgICAgUkVM
RUFTRV9MT0coUHJvY2VzcywgIiVwIC0gR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzSXNSZWFkeVRv
RXhpdDoiLCB0aGlzKTsKKyAgICB0ZXJtaW5hdGUoKTsKKyAgICBncHVQcm9jZXNzRXhpdGVkKEdQ
VVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6SWRsZUV4aXQpOyAvLyBNYXkgY2F1c2UgfHRoaXN8
IHRvIGdldCBkZWxldGVkLgogfQogCiB2b2lkIEdQVVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBD
OjpDb25uZWN0aW9uJikKIHsKLSAgICAvLyBUaGlzIHdpbGwgY2F1c2UgdXMgdG8gYmUgZGVsZXRl
ZC4KLSAgICBncHVQcm9jZXNzQ3Jhc2hlZCgpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nl
c3MsICIlcCAtIEdQVVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2U6IiwgdGhpcyk7CisgICAgZ3B1UHJv
Y2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoKTsgLy8gTWF5IGNh
dXNlIHx0aGlzfCB0byBnZXQgZGVsZXRlZC4KIH0KIAogdm9pZCBHUFVQcm9jZXNzUHJveHk6OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCkBAIC0zMTksNyArMzM3LDcgQEAgdm9pZCBHUFVQcm9j
ZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJ
UEM6OkNvbm5lY3QKICAgICBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGlu
ZyhsYXVuY2hlciwgY29ubmVjdGlvbklkZW50aWZpZXIpOwogCiAgICAgaWYgKCFJUEM6OkNvbm5l
Y3Rpb246OmlkZW50aWZpZXJJc1ZhbGlkKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkgewotICAgICAg
ICBncHVQcm9jZXNzQ3Jhc2hlZCgpOworICAgICAgICBncHVQcm9jZXNzRXhpdGVkKEdQVVByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCmluZGV4
IDU3ZGNhM2VhMjA1MTgyOTQyYjgwMjdkZTFlMDQ3MzBmMGMzODhjZjYuLjRiYjAxZGViYjc4NGJj
MzhkMGVhNzM0NTk5ZDUwM2NmOWJjNWNiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdXhp
bGlhcnlQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHlNZXNzYWdlc1Jl
cGxpZXMuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNz
VGVybWluYXRpb25SZWFzb24uaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5j
bHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIuaCIKQEAgLTEwMSw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29ubmVj
dGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcHJvY2Vz
c1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZ3B1
UHJvY2Vzc0NyYXNoZWQoKTsKKyAgICB2b2lkIGdwdVByb2Nlc3NFeGl0ZWQoR1BVUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uKTsKIAogICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKICAgICBB
U0NJSUxpdGVyYWwgY2xpZW50TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJHUFVQcm9jZXNz
Il9zOyB9CkBAIC0xMTcsNiArMTE4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllcik7CisgICAgdm9pZCBwcm9jZXNzSXNSZWFkeVRvRXhpdCgpOwogCiAjaWYgSEFWRShWSVNJ
QklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0Rm9yVmlz
aWJpbGl0eVByb3BhZ2F0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBMYXllckhvc3RpbmdDb250ZXh0SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWZh
MWZiNjQzYWRhNTAxNTA2MjM3NDFiYjllNDczYjQyZjUwYjc5OS4uNGVlMmVkZjhjYTgxNTgwYjEx
M2ZkN2EzZGYyNzg4YzYzM2JkMmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCw2ICsyOCw3IEBA
IG1lc3NhZ2VzIC0+IEdQVVByb2Nlc3NQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRDcmVh
dGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJL
aXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpCiAjZW5kaWYKIAorICAgIFByb2Nl
c3NJc1JlYWR5VG9FeGl0KCkKICAgICBUZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyKQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKaW5kZXggNzlmZTA1MDU1OGRhY2RiMmI0N2JlNzMxMGUxNDMzNmVhNmVi
ZmVkMS4uMTQzOWZkMDA2ODEwYWRkZjVjZDdlNzJmNmE5ZmZjYWU3NzUxZjRkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzQyLDcgKzM0Miw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIHZpcnR1YWwgdm9pZCBncHVQcm9j
ZXNzQ3Jhc2hlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBncHVQcm9jZXNzRGlkRXhpdCgpIHsg
fQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDcwZmVhYTA5MzIyZDY1NDAyYTc5
M2M4MmFmYjkzYWZiNWQwYjViYjcuLjczMmJkNGM1ODc3ZGY1NTAyODNjMWU4ZmU5NWY0NWZjZjQ5
NzZhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTAz
OTcsMTMgKzEwMzk3LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWRlZFN1YnJlc291
cmNlRG9tYWlucygpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLXZvaWQgV2Vi
UGFnZVByb3h5OjpncHVQcm9jZXNzQ3Jhc2hlZCgpCit2b2lkIFdlYlBhZ2VQcm94eTo6Z3B1UHJv
Y2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRpb25SZWFzb24pCiB7CiAjaWYgSEFWRShWSVNJ
QklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJv
cGFnYXRpb25JbkdQVVByb2Nlc3MgPSAwOwogI2VuZGlmCiAKLSAgICBwYWdlQ2xpZW50KCkuZ3B1
UHJvY2Vzc0NyYXNoZWQoKTsKKyAgICBwYWdlQ2xpZW50KCkuZ3B1UHJvY2Vzc0RpZEV4aXQoKTsK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgYm9vbCBzaG91bGRBbGxvd0F1ZGlvQ2Fw
dHVyZSA9IGlzQ2FwdHVyaW5nQXVkaW8oKSAmJiBwcmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0lu
R1BVUHJvY2Vzc0VuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggYjg1MzNjYmM3NDNhZjlhZjU0MjA1NTNlODM3YWU3MWIwNjg3MWNiMS4uNjhhM2VhYmVl
NDE5M2RkYjkyZTY2YmQwOGZlYWRhNzlkYjZlNjYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTEyMzcsNyArMTIzNyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIHZvaWQgZ3B1UHJvY2Vzc0NyYXNoZWQoKTsKKyAg
ICB2b2lkIGdwdVByb2Nlc3NFeGl0ZWQoR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uKTsKICNl
bmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCmluZGV4IGY5MWQ4YmY2NzA2NWQxMjM4OWJjMjM1YjA1MTE0YzE3ZDI3NWIy
ZWEuLmZkYWQ4NTRhZGE2OWY0NmE5MWJjZTUzNjIxYTE5ZjZiOTU1OTYxNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTUwNCwyMyArNTA0LDI3IEBA
IEdQVVByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZUdQVVByb2Nlc3MoKQogICAg
IHJldHVybiAqbV9ncHVQcm9jZXNzOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpncHVQcm9j
ZXNzQ3Jhc2hlZChQcm9jZXNzSUQgaWRlbnRpZmllcikKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omdw
dVByb2Nlc3NFeGl0ZWQoUHJvY2Vzc0lEIGlkZW50aWZpZXIsIEdQVVByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbiByZWFzb24pCiB7Ci0gICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfRVJST1Io
UHJvY2VzcywgImdwdVByb2Nlc3NDcmFzaGVkOiBQSUQ9JWQiLCBpZGVudGlmaWVyKTsKKyAgICBX
RUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiZ3B1UHJvY2Vzc0RpZEV4aXQ6IFBJ
RD0lZCwgcmVhc29uPSV1IiwgaWRlbnRpZmllciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNv
bikpOwogICAgIG1fZ3B1UHJvY2VzcyA9IG51bGxwdHI7CiAKLSAgICBtX2NsaWVudC5ncHVQcm9j
ZXNzRGlkQ3Jhc2godGhpcywgaWRlbnRpZmllcik7CisgICAgaWYgKHJlYXNvbiA9PSBHUFVQcm9j
ZXNzVGVybWluYXRpb25SZWFzb246OkNyYXNoKQorICAgICAgICBtX2NsaWVudC5ncHVQcm9jZXNz
RGlkQ3Jhc2godGhpcywgaWRlbnRpZmllcik7CisKICAgICBWZWN0b3I8UmVmPFdlYlByb2Nlc3NQ
cm94eT4+IHByb2Nlc3NlcyA9IG1fcHJvY2Vzc2VzOwogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IHByb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+Z3B1UHJvY2Vzc0NyYXNoZWQoKTsKLQotICAg
IGlmICgrK21fcmVjZW50R1BVUHJvY2Vzc0NyYXNoQ291bnQgPiBtYXhpbXVtR1BVUHJvY2Vzc1Jl
bGF1bmNoQXR0ZW1wdHNCZWZvcmVLaWxsaW5nV2ViUHJvY2Vzc2VzKSB7Ci0gICAgICAgIFdFQlBS
T0NFU1NQT09MX1JFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJncHVQcm9jZXNzQ3Jhc2hlZDog
R1BVIFByb2Nlc3MgaGFzIGNyYXNoZWQgbW9yZSB0aGFuICV1IHRpbWVzIGluIHRoZSBsYXN0ICVn
IHNlY29uZHMsIHRlcm1pbmF0aW5nIGFsbCBXZWJQcm9jZXNzZXMiLCBtYXhpbXVtR1BVUHJvY2Vz
c1JlbGF1bmNoQXR0ZW1wdHNCZWZvcmVLaWxsaW5nV2ViUHJvY2Vzc2VzLCByZXNldEdQVVByb2Nl
c3NDcmFzaENvdW50RGVsYXkuc2Vjb25kcygpKTsKLSAgICAgICAgbV9yZXNldEdQVVByb2Nlc3ND
cmFzaENvdW50VGltZXIuc3RvcCgpOwotICAgICAgICBtX3JlY2VudEdQVVByb2Nlc3NDcmFzaENv
dW50ID0gMDsKLSAgICAgICAgdGVybWluYXRlQWxsV2ViQ29udGVudFByb2Nlc3NlcygpOwotICAg
IH0gZWxzZSBpZiAoIW1fcmVzZXRHUFVQcm9jZXNzQ3Jhc2hDb3VudFRpbWVyLmlzQWN0aXZlKCkp
Ci0gICAgICAgIG1fcmVzZXRHUFVQcm9jZXNzQ3Jhc2hDb3VudFRpbWVyLnN0YXJ0T25lU2hvdChy
ZXNldEdQVVByb2Nlc3NDcmFzaENvdW50RGVsYXkpOworICAgICAgICBwcm9jZXNzLT5ncHVQcm9j
ZXNzRXhpdGVkKHJlYXNvbik7CisKKyAgICBpZiAocmVhc29uID09IEdQVVByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbjo6Q3Jhc2gpIHsKKyAgICAgICAgaWYgKCsrbV9yZWNlbnRHUFVQcm9jZXNzQ3Jh
c2hDb3VudCA+IG1heGltdW1HUFVQcm9jZXNzUmVsYXVuY2hBdHRlbXB0c0JlZm9yZUtpbGxpbmdX
ZWJQcm9jZXNzZXMpIHsKKyAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX0VS
Uk9SKFByb2Nlc3MsICJncHVQcm9jZXNzRGlkRXhpdDogR1BVIFByb2Nlc3MgaGFzIGNyYXNoZWQg
bW9yZSB0aGFuICV1IHRpbWVzIGluIHRoZSBsYXN0ICVnIHNlY29uZHMsIHRlcm1pbmF0aW5nIGFs
bCBXZWJQcm9jZXNzZXMiLCBtYXhpbXVtR1BVUHJvY2Vzc1JlbGF1bmNoQXR0ZW1wdHNCZWZvcmVL
aWxsaW5nV2ViUHJvY2Vzc2VzLCByZXNldEdQVVByb2Nlc3NDcmFzaENvdW50RGVsYXkuc2Vjb25k
cygpKTsKKyAgICAgICAgICAgIG1fcmVzZXRHUFVQcm9jZXNzQ3Jhc2hDb3VudFRpbWVyLnN0b3Ao
KTsKKyAgICAgICAgICAgIG1fcmVjZW50R1BVUHJvY2Vzc0NyYXNoQ291bnQgPSAwOworICAgICAg
ICAgICAgdGVybWluYXRlQWxsV2ViQ29udGVudFByb2Nlc3NlcygpOworICAgICAgICB9IGVsc2Ug
aWYgKCFtX3Jlc2V0R1BVUHJvY2Vzc0NyYXNoQ291bnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAg
ICAgICAgbV9yZXNldEdQVVByb2Nlc3NDcmFzaENvdW50VGltZXIuc3RhcnRPbmVTaG90KHJlc2V0
R1BVUHJvY2Vzc0NyYXNoQ291bnREZWxheSk7CisgICAgfQogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQ
cm94eSwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXgg
ZGM3YTFhMTM1ZjBmZjcyYTlkZmMyMjA3OGM4NjU1NmU2YmY3YWZjOS4uYjczODcyZWRiNGJmZmU4
YjRlMWUzZTQwYjkxNjBhODg2NmY4NjcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC0zNTcsNyArMzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGV4dENo
ZWNrZXJTdGF0ZUNoYW5nZWQoKTsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICB2b2lk
IGdwdVByb2Nlc3NDcmFzaGVkKFByb2Nlc3NJRCk7CisgICAgdm9pZCBncHVQcm9jZXNzRXhpdGVk
KFByb2Nlc3NJRCwgR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIHZvaWQgZ2V0
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25QYXJhbWV0ZXJzJiYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3ND
b25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0ODYyNzc3MDE0NWUwNTk0NjViYTg0Y2E2M2RiM2E1Njcz
NTdmODE4Li5iY2YyYTlmMTRhZThiYTE0Y2I2OWQ2YmM1ZmY0YmU4ZWVhZjNlMGQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTc4NiwxMCArNzg2
LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihHUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiBwCiAgICAgbV9wcm9jZXNzUG9vbC0+Z2V0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVw
bHkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdwdVByb2Nlc3NDcmFzaGVkKCkKK3Zv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpncHVQcm9jZXNzRXhpdGVkKEdQVVByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbiByZWFzb24pCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogY29weVRvVmVjdG9yT2Y8
UmVmUHRyPFdlYlBhZ2VQcm94eT4+KG1fcGFnZU1hcC52YWx1ZXMoKSkpCi0gICAgICAgIHBhZ2Ut
PmdwdVByb2Nlc3NDcmFzaGVkKCk7CisgICAgICAgIHBhZ2UtPmdwdVByb2Nlc3NFeGl0ZWQocmVh
c29uKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCmluZGV4IDQxNDc0ZGVjN2ExMDM4NjllYTBmYzZhYmUxNmU5ZDUyODdkZmFiOGYuLjE3MTA1
NTg0NTI5Njk5MTk2MTI1NjNlYTBjMjg2ZWEzZThlMmExN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0zNzYsNyArMzc2LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgdm9pZCBncHVQcm9jZXNzQ3Jhc2hl
ZCgpOworICAgIHZvaWQgZ3B1UHJvY2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRpb25SZWFz
b24pOwogI2VuZGlmCiAKICAgICBib29sIGhhc1NsZWVwRGlzYWJsZXIoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggY2Qx
Y2QwYjRmZTE0OGNkOTQyNDk1ZDQzMzg5NjNiYmFlMzc1MzJkYy4uZDg3OTgyMzQxYjZlZmI0NGY3
M2UxMTE3MTNiNGEwNDIzZjNjZDFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICNlbmRp
ZiAvLyBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKLSAgICB2b2lkIGdwdVByb2Nlc3NDcmFzaGVkKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBncHVQcm9jZXNzRGlkRXhpdCgpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdm9pZCBwcmVmZXJl
bmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggYjIxZDhiY2Y4ZjMyNzY5ZjZl
YzgxM2M0ODQ0NzU2N2NmZjVmZWMxYi4uYWQxYWE3MmEwODE5NGMyYmRiMzJiNjNhODVjMWUwNzI5
NTYyYmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQpAQCAtMjEyLDkgKzIxMiw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENy
ZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJICiAj
ZW5kaWYgLy8gSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpncHVQcm9jZXNzQ3Jhc2hlZCgpCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpncHVQcm9jZXNzRGlkRXhpdCgpCiB7Ci0gICAgW21fY29udGVu
dFZpZXcgX2dwdVByb2Nlc3NDcmFzaGVkXTsKKyAgICBbbV9jb250ZW50VmlldyBfZ3B1UHJvY2Vz
c0RpZEV4aXRdOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5oCmluZGV4IGM1NzQ1MWFlMmQ4MWEzYTQzMjhlZjA4MDlmMmQzODExNDg0MDU1
YTEuLjA5NTA4NmNkMWY5ZDVmNjlmN2E3YWUxOThlZjlhOWZjZTBjNGJmZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaApAQCAtOTgsNyArOTgsNyBAQCBl
bnVtIGNsYXNzIFZpZXdTdGFiaWxpdHlGbGFnIDogdWludDhfdDsKIC0gKHN0ZDo6dW5pcXVlX3B0
cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVEcmF3aW5nQXJlYVByb3h5OihXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eSYpcHJvY2VzczsKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0Owog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLS0gKHZvaWQpX2dwdVByb2Nlc3NDcmFzaGVkOworLSAo
dm9pZClfZ3B1UHJvY2Vzc0RpZEV4aXQ7CiAjZW5kaWYKIC0gKHZvaWQpX3Byb2Nlc3NXaWxsU3dh
cDsKIC0gKHZvaWQpX2RpZFJlbGF1bmNoUHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggYWU0MGZiMDFmNjNkYmMwOTA2NGM2OThiN2Vl
ZDk0OGZlMGEwZDFlNC4uMTQ0NDU5Y2Y0ZjUwNDdjMDIwYTYzNDBkMzM2NTAyYWQ3NmEwNzVlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTY1
Niw3ICs2NTYsNyBAQCAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdAogfQogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQotLSAodm9pZClfZ3B1UHJvY2Vzc0NyYXNoZWQKKy0gKHZvaWQpX2dwdVByb2Nl
c3NEaWRFeGl0CiB7CiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAgICAg
W3NlbGYgX3JlbW92ZVZpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JHUFVQcm9jZXNzXTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkOWVkODYx
YTFiZTAzMDVkMmQ4YTA4OGFjOGZiMzIyYmE3NjRiZjA4Li4yZWI0Njc1Yjk0M2M4ODI5ODk4MzNj
ZjMyNTA0NTY1ZWEzY2FkYjE5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDQtMTYgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9jZXNzIHdoZW4gdW5k
ZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1NTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2Uu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3Mu
bW06CisgICAgICAgIChydW5NZW1vcnlQcmVzc3VyZUV4aXRUZXN0KToKKyAgICAgICAgKFRFU1Qp
OgorCiAyMDIxLTA0LTE2ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIEF2b2lkIGNvbnZlcnRpbmcgSFRNTCBjaGFycyBpbiBfVzNDVGVzdENvbnZl
cnRlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9H
UFVQcm9jZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQ
cm9jZXNzLm1tCmluZGV4IGYzMGMyZTJlNTg4OGI2YzJiNTlkMjM1ZDU2ZmNlNDI3YjIyZjc3N2Qu
LmFiNWQ5YTU0OTIzNmRjODhiMTBhN2U4MTU4ODM3ZGYzZGExNDNkNTYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0dQVVByb2Nlc3MubW0KQEAgLTM0
LDYgKzM0LDggQEAKICNpbXBvcnQgPFdlYktpdC9XS1N0cmluZy5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlLmg+CisjaW1wb3J0IDxub3RpZnkuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDkwLDMgKzQ5
Miw5MCBAQCBURVNUKEdQVVByb2Nlc3MsIENhbnZhc0Jhc2ljQ3Jhc2hIYW5kbGluZykKICAgICB9
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQorCitzdGF0aWMgdm9p
ZCBydW5NZW1vcnlQcmVzc3VyZUV4aXRUZXN0KEZ1bmN0aW9uPHZvaWQoV0tXZWJWaWV3ICopPiYm
IGxvYWRUZXN0UGFnZVN5bmNocm9ub3VzbHkpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBXS1By
ZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlkZ2UgV0tQcmVmZXJl
bmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIHRydWUsIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJVc2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkIikpOworICAgIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1ByZWZl
cmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkNhcHR1cmVWaWRlb0luR1BVUHJvY2Vzc0VuYWJsZWQiKSk7Cisg
ICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdL
UHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCB0cnVlLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZ0Vu
YWJsZWQiKSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3Rpbmco
KF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCBm
YWxzZSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUdQVVByb2Nlc3NGb3JET01S
ZW5kZXJpbmdFbmFibGVkIikpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDQwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgbG9hZFRlc3RQYWdlU3lu
Y2hyb25vdXNseSh3ZWJWaWV3LmdldCgpKTsKKworICAgIC8vIEEgR1BVUHJvY2VzcyBzaG91bGQg
Z2V0IGxhdW5jaGVkLgorICAgIHdoaWxlICghW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bv
b2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
c2xlZXAoMC4xKTsKKyAgICBhdXRvIGdwdVByb2Nlc3NQSUQgPSBbY29uZmlndXJhdGlvbi5nZXQo
KS5wcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgLy8gU2ltdWxhdGUg
bWVtb3J5IHByZXNzdXJlIChub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93TWVtb3J5KS4KKyAg
ICBub3RpZnlfcG9zdCgib3JnLldlYktpdC5sb3dNZW1vcnkiKTsKKworICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgR1BVUHJvY2VzcyBkb2VzIG5vdCBleGl0IHNpbmNlIGl0IGlzIHN0aWxsIG5lZWRlZC4K
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjUpOworICAgIEVYUEVDVF9FUShncHVQ
cm9jZXNzUElELCBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lk
ZW50aWZpZXJdKTsKKworICAgIC8vIE5hdmlnYXRlIHRvIGFub3RoZXIgcGFnZSB0aGF0IG5vIGxv
bmdlciByZXF1aXJlcyB0aGUgR1BVUHJvY2Vzcy4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKKworICAgIC8vIFRoZSBHUFVQcm9jZXNzIHNo
b3VsZCBleGl0IG9uIG1lbW9yeSBwcmVzc3VyZS4KKyAgICBkbyB7CisgICAgICAgIC8vIFNpbXVs
YXRlIG1lbW9yeSBwcmVzc3VyZSAobm90aWZ5dXRpbCAtcCBvcmcuV2ViS2l0Lmxvd01lbW9yeSku
CisgICAgICAgIG5vdGlmeV9wb3N0KCJvcmcuV2ViS2l0Lmxvd01lbW9yeSIpOworICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCgwLjEpOworICAgIH0gd2hpbGUgKFtjb25maWd1cmF0
aW9uLmdldCgpLnByb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0pOworCisgICAgLy8g
VGhlIEdQVVByb2Nlc3Mgc2hvdWxkIG5vdCByZWxhdW5jaC4KKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzbGVlcCgwLjUpOworICAgIEVYUEVDVF9FUSgwLCBbY29uZmlndXJhdGlvbi5nZXQoKS5w
cm9jZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdKTsKK30KKworVEVTVChHUFVQcm9jZXNz
LCBFeGl0c1VuZGVyTWVtb3J5UHJlc3N1cmVDYW52YXNDYXNlKQoreworICAgIHJ1bk1lbW9yeVBy
ZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3ICp3ZWJWaWV3KSB7CisgICAgICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzp0ZXN0Q2FudmFzUGFnZV07CisKKyAgICAgICAg
X19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OkAiY29udGV4dC5maWxsU3R5bGUgPSAnIzAwRkYwMCc7IGNvbnRleHQuZmlsbFJlY3Qo
MCwgMCwgNDAwLCA0MDApOyIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOworICAgICAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1
YXRlSmF2YVNjcmlwdDpAImNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIDQwMCwgNDAwKS53aWR0
aCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAg
ICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IH0pOworfQorCitURVNUKEdQVVByb2Nlc3MsIEV4aXRzVW5kZXJNZW1vcnlQcmVzc3VyZVZpZGVv
Q2FzZSkKK3sKKyAgICBydW5NZW1vcnlQcmVzc3VyZUV4aXRUZXN0KFtdKFdLV2ViVmlldyAqd2Vi
VmlldykgeworICAgICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6
QCJsYXJnZS12aWRlb3Mtd2l0aC1hdWRpbyJdOworCisgICAgICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdLnBsYXkoKSAmJiB0cnVlIiBjb21wbGV0
aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9UUlVFKCFlcnJvcik7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07
CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgfSk7Cit9CisK
K1RFU1QoR1BVUHJvY2VzcywgRXhpdHNVbmRlck1lbW9yeVByZXNzdXJlV2ViQXVkaW9DYXNlKQor
eworICAgIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3ICp3ZWJWaWV3KSB7
CisgICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImF1ZGlv
LWNvbnRleHQtcGxheWluZyJdOworCisgICAgICAgIC8vIGV2YWx1YXRlSmF2YVNjcmlwdCBnaXZl
cyB1cyB0aGUgdXNlciBnZXN0dXJlIHdlIG5lZWQgdG8gcmVsaWFibHkgc3RhcnQgYXVkaW8gcGxh
eWJhY2sgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxz
ZTsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAic3RhcnRQbGF5aW5nKCki
IGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAg
ICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9
KTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426243</attachid>
            <date>2021-04-16 10:09:49 -0700</date>
            <delta_ts>2021-04-16 11:41:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224556-20210416100948.patch</filename>
            <type>text/plain</type>
            <size>53933</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUzM2ZmYWU1ZGZiNWFjZDUz
ZGNhNmRjMDE2ZTRkNTQ5NjA1ODQ2MWQuLjdiZmRkODYyY2Q0MGMyZGQxYzQ3MTliMWQ5M2JhNmI1
NmI2N2MwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjEtMDQtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9jZXNzIHdo
ZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1NTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBFeGl0IHRoZSBHUFVQcm9jZXNz
IHdoZW4gdW5kZXIgbWVtb3J5IHByZXNzdXJlIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkLiBUaGlz
IHdpbGwKKyAgICAgICAgaGVscCB1cyBzYXZlIG1lbW9yeSwgZXNwZWNpYWxseSB1bnRpbCB3ZSBh
cmUgYWJsZSB0byBlbmFibGUgIkRPTSBSZW5kZXJpbmcgaW4KKyAgICAgICAgR1BVUHJvY2VzcyIu
CisKKyAgICAgICAgTm90ZSB0aGF0IHdoZW4gdGhlIEdQVVByb2Nlc3MgaXMgcmVhZHkgdG8gZXhp
dCwgaXQgc2VuZHMgYW4gSVBDIHRvIHRoZSBVSVByb2Nlc3MKKyAgICAgICAgaW4gb3JkZXIgdG8g
Z2V0IHRlcm1pbmF0ZWQsIGluc3RlYWQgb2YgdGVybWluYXRpbmcgaXRzZWxmLiBUaGUgcmVhc29u
IEkgZG8gdGhpcyBpcworICAgICAgICBzbyB0aGF0IHRoZSBVSVByb2Nlc3MgY2FuIGRpc3Rpbmd1
aXNoIGEgR1BVUHJvY2VzcyBjcmFzaCBmcm9tIGEgbm9ybWFsIGlkbGUgZXhpdC4KKworICAgICAg
ICBBL0IgdGVzdGluZyBzaG93czoKKyAgICAgICAgLSA1LTglIFBMVU0zIHByb2dyZXNzaW9uIG9u
IGlQaG9uZQorICAgICAgICAtIDIuNS00JSBQTFVNMyBwcm9ncmVzc2lvbiBvbiBpUGFkCisgICAg
ICAgIC0gTm8gUExUNSByZWdyZXNzaW9uIG9uIGVpdGhlciBpUGhvbmUgb3IgaVBhZC4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjphbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAg
KFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZUdyYXBoaWNzQ29udGV4
dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3M6OnJlbW92ZUdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpjYW5FeGl0VW5kZXJNZW1vcnlQ
cmVzc3VyZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3M6OnRyeUV4aXRJZlVu
dXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNz
Ojp0cnlFeGl0SWZVbnVzZWQpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzOjpsb3dNZW1v
cnlIYW5kbGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQ
cmVzc3VyZSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNz
dXJlIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0
b3J5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJl
bW92ZUluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojph
bGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmRlbGV0ZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1
cmUgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkZWxldGVN
ZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlck1h
bmFnZXI6OnJlbGVhc2VSZWNvcmRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSBjb25zdCk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXIuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUgY29uc3QpOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpoYXNTb3VyY2VQ
cm94aWVzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpncHVQcm9jZXNzRXhpdGVk
KToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzSXNSZWFkeVRvRXhp
dCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpHUFVQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50OjpncHVQcm9jZXNzRGlkRXhp
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpncHVQcm9jZXNzRXhpdGVkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpn
cHVQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpncHVQcm9jZXNzRGlkRXhpdCk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9ncHVQcm9jZXNzRGlkRXhpdF0pOgorCiAy
MDIxLTA0LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRWFy
bHkgSVBDIG1lc3NhZ2VzIHRvIGEgV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIG1heSBnZXQgcHJv
Y2Vzc2VkIG91dCBvZiBvcmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDQ0MWFiMWM2ZTc2YmViMTdlNjU1
MWJmYjQ5NzI5OGQ2NzU0MzY5MjQuLmIxMTI5ZjMyODQ4MTExMGU5ODgzMDc1M2U4NzRlYTAzZTUw
MGExNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmIGdwdVByb2Nl
c3MsIFdlYgogI2lmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKICAgICAsIG1fd2ViUHJvY2Vz
c0lkZW50aXR5VG9rZW4oV1RGTW92ZShwYXJhbWV0ZXJzLndlYlByb2Nlc3NJZGVudGl0eVRva2Vu
KSkKICNlbmRpZgotICAgICwgbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eShtYWtlVW5p
cXVlPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PigqdGhpcykpCisgICAgLCBtX3JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KG1ha2VVbmlxdWVSZWY8UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk+KCp0aGlzKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICAsIG1fbGliV2ViUlRDQ29kZWNz
UHJveHkoTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZSgqdGhpcykpCkBAIC0yNjcsNiArMjY3
LDQ5IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVzdHJveVZpc2liaWxpdHlQ
cm9wYWdhdGlvbkNvbnRleHRGb3JQYWdlKFdlYlBhCiB9CiAjZW5kaWYKIAorYm9vbCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0
Cit7CisgICAgZm9yIChhdXRvJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kIDogbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghbV9yZW1vdGVH
cmFwaGljc0NvbnRleHRHTE1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgorICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS0+YWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIEVOQUJM
RShXRUJfQVVESU8pCisgICAgaWYgKG1fcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgJiYg
IW1fcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXItPmFsbG93c0V4aXRVbmRlck1lbW9yeVBy
ZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmIChtX3VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkgJiYgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LT5oYXNTb3VyY2VQ
cm94aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fYXVkaW9UcmFja1Jl
bmRlcmVyTWFuYWdlci0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
LT5hbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
SEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisgICAgaWYgKG1fcmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXIgJiYgIW1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXItPmFsbG93c0V4aXRVbmRl
ck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIEhB
VkUoQVZBU1NFVFJFQURFUikKKyAgICBpZiAobV9pbWFnZURlY29kZXJBVkZQcm94eSAmJiAhbV9p
bWFnZURlY29kZXJBVkZQcm94eS0+YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
KyAgICBpZiAobV9jZG1GYWN0b3J5UHJveHkgJiYgIW1fY2RtRmFjdG9yeVByb3h5LT5hbGxvd3NF
eGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
KyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAobV9sZWdhY3lDZG1G
YWN0b3J5UHJveHkgJiYgIW1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5LT5hbGxvd3NFeGl0VW5kZXJN
ZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogTG9nZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dnZXIo
KQogewogICAgIGlmICghbV9sb2dnZXIpIHsKQEAgLTMxOSw4ICszNjIsOSBAQCBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1c2VyTWVkaWFD
YXB0dXJlTWFuYWdlcgogCiAgICAgcmV0dXJuICptX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk7CiB9CisjZW5kaWYKIAotI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2lmIFBM
QVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklU
RVJERUxFR0FURSkKIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjptZWRpYVJlY29yZGVyTWFuYWdlcigpCiB7CiAgICAgaWYgKCFtX3JlbW90ZU1l
ZGlhUmVjb3JkZXJNYW5hZ2VyKQpAQCAtMzI5LDcgKzM3Myw2IEBAIFJlbW90ZU1lZGlhUmVjb3Jk
ZXJNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYVJlY29yZGVyTWFuYWdl
cigpCiAgICAgcmV0dXJuICptX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogfQogI2VuZGlm
Ci0jZW5kaWYgLy8gIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIFJlbW90ZUNETUZhY3RvcnlQcm94eSYgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y2RtRmFjdG9yeVByb3h5KCkKQEAgLTM3NCw2ICs0MTcsNyBA
QCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5k
KFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogewogICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRNYXAucmVtb3ZlKHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CisgICAgZ3B1UHJvY2VzcygpLnRyeUV4aXRJ
ZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkK
QEAgLTM5Myw2ICs0MzcsOCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dAogdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKIHsKICAgICBtX3Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLnJlbW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIGlmIChtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmlzRW1wdHkoKSkKKyAg
ICAgICAgZ3B1UHJvY2VzcygpLnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUo
KTsKIH0KIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3ND
b250ZXh0R0xGb3JUZXN0aW5nKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVy
KQpAQCAtNTM3LDcgKzU4Myw4IEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlz
cGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDCiAgICAgICAgIHVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9j
ZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0j
aWYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUp
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAg
IG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhj
b25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NDYsOCArNTkz
LDcgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEMKICAgICAgICAgbWVkaWFSZWNvcmRlck1hbmFn
ZXIoKS5kaWRSZWNlaXZlUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSNlbmRpZiAvLyBIQVZFKEFWQVNT
RVRXUklURVJERUxFR0FURSkKLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVDRE1GYWN0
b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBjZG1GYWN0b3J5UHJv
eHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKaW5kZXggZjJkZDk1MDJhYmUzNmEwMGM3MWUyODc2MzYwYjhiMmNlZjA0Zjg5Zi4u
Yjg0YThmODM2N2I0YTExYzlmZWJjMzIxMWZmNWFiYzgxMjE2ODE3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0x
MzIsNyArMTMyLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBSZW1vdGVNZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5UHJveHkmIG1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQ
cm94eSgpOwotICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSgpIHsgcmV0dXJuICptX3JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OyB9CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIHJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5nZXQoKTsgfQogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHlNYW5hZ2VyJiBhdWRpb1Nlc3Npb25NYW5hZ2VyKCk7CkBAIC0xNDQsNiArMTQ0LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRSZW1vdGVDb21tYW5kcygpOwog
CisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiAgICAg
dm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKCk7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZvaWQg
cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMRm9yVGVzdGluZyhHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOwpAQCAtMTU2LDkgKzE1OCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBQTEFURk9S
TShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5JiB1c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7Ci0jaWYgSEFWRShBVkFT
U0VUV1JJVEVSREVMRUdBVEUpCi0gICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIG1lZGlh
UmVjb3JkZXJNYW5hZ2VyKCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisgICAgUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXImIG1lZGlhUmVjb3JkZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAog
ICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMjI4LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyPiBtX3JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyOwogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyPiBtX3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eT4gbV9yZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTsKKyAgICBVbmlxdWVSZWY8UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAgICAgUEFMOjpTZXNz
aW9uSUQgbV9zZXNzaW9uSUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShMSUJXRUJSVEMp
CiAgICAgUmVmPExpYldlYlJUQ0NvZGVjc1Byb3h5PiBtX2xpYldlYlJUQ0NvZGVjc1Byb3h5OwpA
QCAtMjM3LDkgKzIzOSw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKICAg
ICBSZWY8UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyPiBtX2F1ZGlv
VHJhY2tSZW5kZXJlck1hbmFnZXI7CiAgICAgUmVmPFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllck1hbmFnZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKLSNpZiBIQVZF
KEFWQVNTRVRXUklURVJERUxFR0FURSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiAjZW5kaWYKKyNp
ZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VU
V1JJVEVSREVMRUdBVEUpCisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZU1lZGlhUmVjb3JkZXJN
YW5hZ2VyPiBtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwogI2VuZGlmCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBib29sIG1fYWxsb3dzQXVkaW9DYXB0dXJlIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAppbmRleCBiNjlkNGU0NjUwNTdi
ZTAzZGUzOTdiYjY1MDU0MjBmZmQ3ZWZhNjRkLi43NzY1OTU2NGQ4MjVjMzJiMzk1ZTk2NGNmNWQ2
YTJlYTgyNjM0ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBA
IC0xMTEsNiArMTExLDcgQEAgdm9pZCBHUFVQcm9jZXNzOjpyZW1vdmVHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm4KIHsKICAgICBBU1NFUlQo
bV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRl
bnRpZmllcigpKSk7CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rp
b24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgdHJ5RXhpdElmVW51c2VkQW5kVW5kZXJN
ZW1vcnlQcmVzc3VyZSgpOwogfQogCiB2b2lkIEdQVVByb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NDbG9zZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpAQCAtMTIyLDggKzEyMyw0
MCBAQCBib29sIEdQVVByb2Nlc3M6OnNob3VsZFRlcm1pbmF0ZSgpCiAgICAgcmV0dXJuIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmlzRW1wdHkoKTsKIH0KIAorYm9vbCBHUFVQcm9jZXNzOjpjYW5F
eGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxv
b3AoKSk7CisgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzQ29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghd2ViUHJvY2Vzc0Nvbm5lY3Rp
b24tPmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdQVVByb2Nlc3M6OnRy
eUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKQoreworICAgIEFTU0VSVChpc01h
aW5SdW5Mb29wKCkpOworICAgIGlmICghTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24o
KS5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdHJ5RXhp
dElmVW51c2VkKCk7Cit9CisKK3ZvaWQgR1BVUHJvY2Vzczo6dHJ5RXhpdElmVW51c2VkKCkKK3sK
KyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBpZiAoIWNhbkV4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3Ms
ICJHUFVQcm9jZXNzOjp0cnlFeGl0SWZVbnVzZWQ6IEdQVVByb2Nlc3MgaXMgZXhpdGluZyBiZWNh
dXNlIHdlIGFyZSB1bmRlciBtZW1vcnkgcHJlc3N1cmUgYW5kIHRoZSBwcm9jZXNzIGlzIG5vIGxv
bmdlciB1c2VmdWwuIik7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6R1BVUHJvY2Vzc1Byb3h5OjpQcm9jZXNzSXNSZWFkeVRvRXhpdCgpLCAwKTsKK30KKwog
dm9pZCBHUFVQcm9jZXNzOjpsb3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5j
aHJvbm91cyBzeW5jaHJvbm91cykKIHsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiR1BVUHJv
Y2Vzczo6bG93TWVtb3J5SGFuZGxlcjogY3JpdGljYWw9JWQsIHN5bmNocm9ub3VzPSVkIiwgY3Jp
dGljYWwgPT0gQ3JpdGljYWw6Olllcywgc3luY2hyb25vdXMgPT0gU3luY2hyb25vdXM6Olllcyk7
CisgICAgdHJ5RXhpdElmVW51c2VkKCk7CisKICAgICBXZWJDb3JlOjpyZWxlYXNlR3JhcGhpY3NN
ZW1vcnkoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzLmgKaW5kZXggMzU5YTNjNTI5MTBjMzExODk3NjBlYTg0MjczNWMxZDIwNDAzODZj
Yi4uNGRjNzY1NDNlNWY0ODk2ZWM1ZWJiMmRkNzM3NWZkOTU5MTllODFhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC05Miw2ICs5Miw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGVuYWJsZVZQOURlY29kZXJzKGJvb2wgc2hvdWxkRW5hYmxlVlA4RGVjb2RlciwgYm9vbCBz
aG91bGRFbmFibGVWUDlEZWNvZGVyLCBib29sIHNob3VsZEVuYWJsZVZQOVNXRGVjb2Rlcik7CiAj
ZW5kaWYKIAorICAgIHZvaWQgdHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgp
OworCiBwcml2YXRlOgogICAgIHZvaWQgbG93TWVtb3J5SGFuZGxlcihDcml0aWNhbCwgU3luY2hy
b25vdXMpOwogCkBAIC0xMDEsNiArMTAzLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxp
emVTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
LCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBz
aG91bGRUZXJtaW5hdGUoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgdHJ5RXhpdElmVW51c2VkKCk7
CisgICAgYm9vbCBjYW5FeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiAgICAgLy8g
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKaW5kZXggYjk3YmVmNGYyZTQxYjU4MzgzY2NiN2M5NWZhMDJmODY5OWU4MTY0NS4uYzlh
NWM0MWE1ZTRmZmZlMWI4OTQzNGRlYTQ5NGMzYmU0Yjk1NzA3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcApAQCAtNTk3LDYgKzU5NywxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpCiAgICAgICAgIG1fcmVuZGVyaW5nUmVz
b3VyY2VzUmVxdWVzdCA9IHsgfTsKIH0KIAorYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjph
bGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZS5pbWFnZUJ1ZmZlcnMoKS5pc0VtcHR5KCkgJiYgbV9yZW1vdGVSZXNv
dXJjZUNhY2hlLm5hdGl2ZUltYWdlcygpLmlzRW1wdHkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAppbmRleCBlM2RmMmQwOGRlYWQ2YjBlMTM0NDM4NTY4Y2VkMDczMmUwMWJjODc2Li43NDhjNGEy
ZDM0NTgzYTdlYTlkYmE3MTgyNDA0MmIxYmIyNGVmOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgK
QEAgLTgzLDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBwb3B1bGF0ZUdldEltYWdlRGF0
YVNoYXJlZE1lbW9yeShXZWJDb3JlOjpJbWFnZURhdGEqKTsKIAorICAgIGJvb2wgYWxsb3dzRXhp
dFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogICAgIC8vIFJ1bnMgRnVuY3Rpb24gaW4g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCB0YXNrIHF1ZXVlLgogICAgIHZvaWQgZGlzcGF0Y2goRnVu
Y3Rpb248dm9pZCgpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKaW5kZXgg
ODM5ZmU5M2EyMWJiMjVmNWJjZmJjNTM4N2FhYzg1Mjc3MTA5YzE4Ni4uOGY1MTQ1ZTRmN2RhMDY1
NzNiMDliNjY5NTRjMzIwZjZjZGU3MGRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
V0VCX0FVRElPKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgIkdQVVByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvVXRpbGl0aWVzLmg+
CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKQEAgLTE3Myw2ICsxNzQs
OSBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3Rp
bmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpbwogICAgIGlmIChkZXN0aW5hdGlvbikKICAgICAg
ICAgZGVzdGluYXRpb24tPnNjaGVkdWxlR3JhY2VmdWxTaHV0ZG93bklmTmVlZGVkKCk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgIGlmIChhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVz
c3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ3B1UHJvY2Vzcygp
LnRyeUV4aXRJZlVudXNlZEFuZFVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKIH0KIAogdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDMsNiArMjA3LDExIEBAIHZvaWQg
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2Vk
KFJlbW90ZUF1ZGlvRGVzdGluCiB9CiAjZW5kaWYKIAorYm9vbCBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcjo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAg
IHJldHVybiBtX2F1ZGlvRGVzdGluYXRpb25zLmlzRW1wdHkoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJf
QVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCmluZGV4IGY4NGQ2ZjhlM2Y1Y2M1Nzdk
ZThmYTAxYjRjYzBhZjlhYzNjZmVjZjEuLmM2MGYxMDU0NmRhZjQzZDFhNjNjYTIwNzkwZDgzMDM4
ZDY0NTFhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCkBAIC01Niw2ICs1Niw4IEBA
IHB1YmxpYzoKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyByZXR1cm4gZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9
CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmNwcAppbmRleCAxNTVlYmFmZmI5YTk0ZGJiZmQ4NzI1NTJhZjJkYzJiZWFhNjI3ZDkzLi4wNmVj
NTI3MDZmY2E3ZjcxNTM5YTk3MDU5NDNmOGM3ZDViNTIxZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90
ZUNETUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmgi
CiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCIKQEAgLTE0Miw2ICsx
NDMsOCBAQCB2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlSW5zdGFuY2UoY29uc3Qg
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiBpZAogewogICAgIEFTU0VSVChtX2luc3RhbmNl
cy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgbV9pbnN0YW5jZXMucmVtb3ZlKGlkZW50aWZp
ZXIpOworICAgIGlmIChtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgJiYgYWxsb3dzRXhpdFVu
ZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5ncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwog
fQogCiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KiBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmdldElu
c3RhbmNlKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKQEAg
LTE2MSw2ICsxNjQsMTEgQEAgdm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Np
b24oY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmkKICAgICBtX3Nlc3Npb25z
LnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAorYm9vbCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFs
bG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnN0
YW5jZXMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCmluZGV4IGM0ZTg2
YzM3MjU4MGMzOTE2OWQ4YzQzZTIyNDM5NmFhYjNhOGM5ZTIuLjAzODIxNmUyMGVmZjdjNjM1ODQz
YzZlZmQ2ZjBiNDEzOWQzMjI2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKQEAgLTcwLDYgKzcwLDggQEAgcHVi
bGljOgogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpIHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsgfQog
CisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKaW5kZXggYjJhM2U3NTAx
Yzg3ZWU1MWZhNjM3ZDAzNWZiYjc5Y2IwYzg3YTlmYi4uMDA4MWMxMmZkY2JjOGVlNzc1MDQ4MGE1
NDUxZWIxOTk1NDU1NzM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAK
ICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTcwLDYgKzcxLDggQEAgdm9pZCBSZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eTo6ZGVsZXRlRGVjb2RlcihJbWFnZURlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pbWFnZURlY29kZXJzLnRh
a2UoaWRlbnRpZmllcik7CisgICAgaWYgKG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcyAmJiBhbGxv
d3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpKQorICAgICAgICBtX2Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MtPmdwdVByb2Nlc3MoKS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJl
KCk7CiB9CiAKIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmVuY29kZWREYXRhU3Rh
dHVzQ2hhbmdlZChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC0xNDEsNiAr
MTQ0LDExIEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNsZWFyRnJhbWVCdWZm
ZXJDYWNoZShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkCiAgICAgICAgIGltYWdlRGVjb2Rlci0+
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHN0ZDo6bWluKGluZGV4LCBpbWFnZURlY29kZXItPmZyYW1l
Q291bnQoKSAtIDEpKTsKIH0KIAorYm9vbCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6YWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX2ltYWdl
RGVjb2RlcnMuaXNFbXB0eSgpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aAppbmRleCAxYWQ2MGI3NjUzMWI5NDc4NWIxNWQ2M2YyMDAwZGE1YzBiN2RkZTU1Li40OGY4NzBk
MGM1NzBmN2NlZGFmNjA3OTNjNjI5OWMwN2E4MmNjN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCisgICAgYm9vbCBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQ
cmVzc3VyZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRGVjb2Rlcihjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXI+JiYp
PiYmKTsKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRp
Zmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCmluZGV4IGJhNzJmYjc4NjI4NTJlNjY4
Zjk0NTdlNzViY2VlNTUwMTQzYWExZDcuLjBlOGE4MWM2NTZkYzg1MDE0ODM5NjZjMGZhYjBkMTBk
OGI3ZDBhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKIAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJH
UFVQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCIKICNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmgiCkBAIC0xNTEsNiArMTUyLDkgQEAgdm9pZCBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50
aWZpZXIKIAogICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAg
ICBtX3Nlc3Npb25zLnJlbW92ZShpZGVudGlmaWVyKTsKKworICAgIGlmIChtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgJiYgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAg
ICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5ncHVQcm9jZXNzKCkudHJ5RXhpdElmVW51
c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOwogfQogCiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkqIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Z2V0U2Vzc2lvbihjb25zdCBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYgaWRlbnRpZmllcikgY29uc3QKQEAgLTE2MSw2
ICsxNjUsMTEgQEAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KiBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHk6OmdldFNlc3Npb24oY29uc3QgUmVtb3QKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAorYm9vbCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9ucy5pc0VtcHR5KCk7
Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKaW5kZXggNWZkOGZhNTQ2
YTA5N2JmOGQ0NGE3MjNmY2ViZDdmZTVlOWRiODJlMi4uMTEzZmE5NWE4NDhiMWVkYWYwNjgwNTBh
MWM0Yjk3ZDI5MWQxNTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaApAQCAtNjQsNiArNjQs
OCBAQCBwdWJsaWM6CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdl
dCgpOyB9CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOwogICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApp
bmRleCBjOTQ4NTM2MWRjMjFhYjlhYjcyMDc0MjhhYTEzNmQ5ZGJkNTZmYTU3Li4wMThiMjgwN2Jm
ZjQxZGQzMmNjYTU1MzYzMzU3YWM5OGFkM2ZmODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1l
c3NhZ2VzLmgiCkBAIC03Miw5ICs3MywxMyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbgogdm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGVsZXRlTWVkaWFQbGF5ZXIoTWVkaWFQ
bGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJveGllc0xvY2spOwotICAgIGlm
IChhdXRvIHByb3h5ID0gbV9wcm94aWVzLnRha2UoaWRlbnRpZmllcikpCi0gICAgICAgIHByb3h5
LT5pbnZhbGlkYXRlKCk7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
cHJveGllc0xvY2spOworICAgICAgICBpZiAoYXV0byBwcm94eSA9IG1fcHJveGllcy50YWtlKGlk
ZW50aWZpZXIpKQorICAgICAgICAgICAgcHJveHktPmludmFsaWRhdGUoKTsKKyAgICB9CisgICAg
aWYgKG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyAmJiBhbGxvd3NFeGl0VW5kZXJNZW1vcnlQ
cmVzc3VyZSgpKQorICAgICAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmdwdVByb2Nl
c3MoKS50cnlFeGl0SWZVbnVzZWRBbmRVbmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAKIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFN1cHBvcnRlZFR5cGVzKE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciBlbmdpbmVJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTc5LDYgKzE4NCwxMSBAQCBSZWZQdHI8TWVkaWFQbGF5ZXI+IFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjptZWRpYVBsYXllcihjb25zdCBNZWRpYVBsYXllcgogICAgIHJldHVybiBu
dWxscHRyOwogfQogCitib29sIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjphbGxvd3NF
eGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJveGllcy5p
c0VtcHR5KCk7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIExvZ2dlciYgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5oCmluZGV4IDkyNjdiMWM5NmMwYzRkZmQzYTk1MmI0NDJkMWVhZGQzMzc1NzUwZWYuLjAw
OGRhODc1NmE3MzI3OWFiOTlmNmY2MDgwMmY1NzBhMjBmZjVlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGRpZFJlY2Vp
dmVTeW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVy
PiBtZWRpYVBsYXllcihjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXImKTsKKyAg
ICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmNwcAppbmRleCBkZDUyZWE4MTdiYzJmYmI0NTFl
YWI4MjZlZjUyYmViNTUxOWU1MjkxLi5hZWRjYTAyMmZiMmQ3ZDU2ZTlmOWE1Mzk2MjliMjc2YjY3
Y2MxMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
ck1hbmFnZXIuY3BwCkBAIC04OCw2ICs4OCwxMSBAQCB2b2lkIFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlcjo6cmVsZWFzZVJlbmRlcmVyKEF1ZGlvTWVkaWFTdHJlYQog
ICAgIG1fcmVuZGVyZXJzLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAorYm9vbCBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI6OmFsbG93c0V4aXRVbmRlck1lbW9yeVBy
ZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZW5kZXJlcnMuaXNFbXB0eSgpOworfQor
CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNYW5hZ2VyLmgKaW5kZXggNWIwYTY4NGI1MjU3OTM5YmRhZDJkY2Q1OWU0ZDUw
YTRjNDY5YjJlMS4uYzMxNDkxMjZiNjMzMDU3Yjk5ZTc3ODJiOGY1Y2VjMjU4Y2EwZDI4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oCkBA
IC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xvc2UoKTsKIAorICAgIGJvb2wg
YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYpOwogICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKaW5kZXggOTRjYzg2YWVhYjljMDZkMzkyMmRmMDlj
ODU0MmQzNzIwMTU4MzIyZS4uMDFhNTM2ZWFlOGMzNzQzYTdmODE3Y2M5ZTI0NjQyNzI5NzU5NWQx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAKQEAgLTY1LDYgKzY1LDEzIEBAIHZvaWQg
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6OmNyZWF0ZVJlY29yZGVyKE1lZGlhUmVjb3JkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjpyZWxl
YXNlUmVjb3JkZXIoTWVkaWFSZWNvcmRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBt
X3JlY29yZGVycy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgaWYgKGFsbG93c0V4aXRVbmRlck1l
bW9yeVByZXNzdXJlKCkpCisgICAgICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5ncHVQ
cm9jZXNzKCkudHJ5RXhpdElmVW51c2VkQW5kVW5kZXJNZW1vcnlQcmVzc3VyZSgpOworfQorCiti
b29sIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVz
c3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVjb3JkZXJzLmlzRW1wdHkoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCmluZGV4IGE4N2Q4Y2VmOTNmOThhZTA4YWU3NWExNjNl
ODFmNmNmNzc2Y2RiOTEuLjgxOGIwMThkMmQ2ODAxYjA3ZWVhN2Q1MzdhODc4MzVjODkyODJlZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmgKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlbW90ZU1lZGlhUmVjb3JkZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJv
Y2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlcikg
eyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCisgICAgYm9vbCBh
bGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCmluZGV4IGU1ZGI4NDgyZTQyMzM1MTNkMzAzOTEyOTA1
Y2VhNGE4ZDI0ZmEyMTIuLmY5MzNmMjc3MDI0N2I1Mzg0MmRhMWMzNmNlYzgxZWM4ZmNmYTdmMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcApAQCAt
MTAzLDYgKzEwMywxMSBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXI6OnJlbGVhc2VMYXllcihTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZQogICAgIH0pOwogfQogCiti
b29sIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI6OmFsbG93c0V4aXRVbmRl
ck1lbW9yeVByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllcnMuaXNFbXB0eSgp
OworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIuaAppbmRleCA3NWY2MGQ1MjZjY2Q1ZWM2YzRlYmUxMzk2MmFmZjM0YTU1
YTZkMjVhLi5lODQzNmQ0NjNkMjYzN2U2NzA5OTZjOWMxY2Q5NmEwMTJkYWRlYTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaApAQCAtNTksNiArNTksOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlKCk7CiAKKyAgICBib29sIGFsbG93c0V4aXRVbmRl
ck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Jik7CiAgICAgdm9pZCBzdGFydExpc3RlbmluZ0ZvcklQQygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Qcm9jZXNzVGVybWluYXRpb25SZWFzb24uaAppbmRleCA2M2ZkYTdiNWJjOTdlNDQ1
MTM0ZmIwNTJjYzIzMWI4ZDYwZGFlMTE2Li44NTcxYzQ2OTJlZTA0OTQ2OGU5NTAwYmFhOWEyMmM1
OTQ4MzU2MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzVGVybWlu
YXRpb25SZWFzb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzVGVybWluYXRp
b25SZWFzb24uaApAQCAtMzcsNCArMzcsOSBAQCBlbnVtIGNsYXNzIFByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbiB7CiAgICAgUmVxdWVzdGVkQnlHUFVQcm9jZXNzCiB9OwogCitlbnVtIGNsYXNzIEdQ
VVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB7CisgICAgQ3Jhc2gsCisgICAgSWRsZUV4aXQKK307
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggZmRhOTcwYzQwM2ViZjY3YWQ1
YjkyYjkxMmFkYjQyNDI2MWVjNDEzNy4uMjcwMjc5M2ZmNTUxYmE5N2I3ZWZiMDkwMjM1Mzc0NjM5
NmFlMjJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTM2OCw2ICszNjgsMTEg
QEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpzZXRPcmllbnRhdGlvbih1aW50
NjRfdCBvcmllbnRhdGlvbikKICAgICBtX29yaWVudGF0aW9uTm90aWZpZXIub3JpZW50YXRpb25D
aGFuZ2VkKG9yaWVudGF0aW9uKTsKIH0KIAorYm9vbCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5OjpoYXNTb3VyY2VQcm94aWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fcHJveGllcy5p
c0VtcHR5KCk7Cit9CisKIH0KIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuaAppbmRleCA4MDdjZThmNzBlODYwNzYzZTc4Yzc2MTE1MmRjMjY4NmFiMTIzODIwLi4w
NDEzNDg5ZjE0Mjk4ZGY1NzgzMDQxNDBmZWJhMzQ2Y2MzMmZhZTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5oCkBAIC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsgfQogCisgICAgYm9vbCBoYXNTb3VyY2VQcm94aWVzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhZDU4Yzk0ZjEwOGI5Yzgx
YjQ0ZmU1NGY0OWFmZjgzOTkwNDM5YjE5Li5lZmM4NTY3YjJjM2I1YzEyYTc0ZWI4ZjgzMzQwOGJm
ZWI1NzVkNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMjg1LDE5ICsyODUsMzcgQEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6Omdl
dEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LAog
ICAgIH0sIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKIH0KIAotdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdwdVByb2Nlc3NDcmFz
aGVkKCkKK3ZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpncHVQcm9jZXNzRXhpdGVkKEdQVVByb2Nlc3NU
ZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyk7CisKKyAgICBzd2l0Y2ggKHJlYXNvbikgeworICAgIGNhc2UgR1BVUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaDoKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJv
Y2VzcywgIiVwIC0gR1BVUHJvY2Vzc1Byb3h5OjpncHVQcm9jZXNzRXhpdGVkOiByZWFzb249Y3Jh
c2giLCB0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHUFVQcm9jZXNzVGVybWluYXRp
b25SZWFzb246OklkbGVFeGl0OgorICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiJXAgLSBH
UFVQcm9jZXNzUHJveHk6OmdwdVByb2Nlc3NFeGl0ZWQ6IHJlYXNvbj1pZGxlLWV4aXQiLCB0aGlz
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgaWYgKHNpbmdsZXRvbigpID09IHRoaXMp
CiAgICAgICAgIHNpbmdsZXRvbigpID0gbnVsbHB0cjsKIAogICAgIGZvciAoYXV0byYgcHJvY2Vz
c1Bvb2wgOiBXZWJQcm9jZXNzUG9vbDo6YWxsUHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nl
c3NQb29sLT5ncHVQcm9jZXNzQ3Jhc2hlZChwcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAg
cHJvY2Vzc1Bvb2wtPmdwdVByb2Nlc3NFeGl0ZWQocHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29u
KTsKK30KKwordm9pZCBHUFVQcm9jZXNzUHJveHk6OnByb2Nlc3NJc1JlYWR5VG9FeGl0KCkKK3sK
KyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiJXAgLSBHUFVQcm9jZXNzUHJveHk6OnByb2Nlc3NJ
c1JlYWR5VG9FeGl0OiIsIHRoaXMpOworICAgIHRlcm1pbmF0ZSgpOworICAgIGdwdVByb2Nlc3NF
eGl0ZWQoR1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpJZGxlRXhpdCk7IC8vIE1heSBjYXVz
ZSB8dGhpc3wgdG8gZ2V0IGRlbGV0ZWQuCiB9CiAKIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKQogewotICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB1cyB0byBi
ZSBkZWxldGVkLgotICAgIGdwdVByb2Nlc3NDcmFzaGVkKCk7CisgICAgUkVMRUFTRV9MT0dfRVJS
T1IoUHJvY2VzcywgIiVwIC0gR1BVUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZToiLCB0aGlzKTsKKyAg
ICBncHVQcm9jZXNzRXhpdGVkKEdQVVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpOyAv
LyBNYXkgY2F1c2UgfHRoaXN8IHRvIGdldCBkZWxldGVkLgogfQogCiB2b2lkIEdQVVByb2Nlc3NQ
cm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKQEAgLTMxOSw3ICszMzcsNyBAQCB2b2lk
IEdQVVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1
bmNoZXIsIElQQzo6Q29ubmVjdAogICAgIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6ZGlkRmluaXNo
TGF1bmNoaW5nKGxhdW5jaGVyLCBjb25uZWN0aW9uSWRlbnRpZmllcik7CiAKICAgICBpZiAoIUlQ
Qzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzVmFsaWQoY29ubmVjdGlvbklkZW50aWZpZXIpKSB7
Ci0gICAgICAgIGdwdVByb2Nlc3NDcmFzaGVkKCk7CisgICAgICAgIGdwdVByb2Nlc3NFeGl0ZWQo
R1BVUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5
LmgKaW5kZXggNTdkY2EzZWEyMDUxODI5NDJiODAyN2RlMWUwNDczMGYwYzM4OGNmNi4uNGJiMDFk
ZWJiNzg0YmMzOGQwZWE3MzQ1OTlkNTAzY2Y5YmM1Y2IyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NQcm94eU1l
c3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgorI2luY2x1ZGUg
IlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIu
aCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5SWRlbnRpZmllci5oIgpAQCAtMTAxLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwcm9jZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBncHVQcm9jZXNzQ3Jhc2hlZCgpOworICAgIHZvaWQgZ3B1UHJvY2Vzc0V4aXRlZChHUFVQ
cm9jZXNzVGVybWluYXRpb25SZWFzb24pOwogCiAgICAgLy8gUHJvY2Vzc1Rocm90dGxlckNsaWVu
dAogICAgIEFTQ0lJTGl0ZXJhbCBjbGllbnROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkdQ
VVByb2Nlc3MiX3M7IH0KQEAgLTExNyw2ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyKTsKKyAgICB2b2lkIHByb2Nlc3NJc1JlYWR5VG9FeGl0KCk7CiAKICNpZiBI
QVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAgICB2b2lkIGRpZENyZWF0ZUNvbnRl
eHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIExheWVySG9zdGluZ0NvbnRleHRJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBhZmExZmI2NDNhZGE1MDE1MDYyMzc0MWJiOWU0NzNiNDJmNTBiNzk5Li40ZWUyZWRmOGNh
ODE1ODBiMTEzZmQ3YTNkZjI3ODhjNjMzYmQyZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4LDYg
KzI4LDcgQEAgbWVzc2FnZXMgLT4gR1BVUHJvY2Vzc1Byb3h5IE5vdFJlZkNvdW50ZWQgewogICAg
IERpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKICNlbmRpZgogCisg
ICAgUHJvY2Vzc0lzUmVhZHlUb0V4aXQoKQogICAgIFRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3OWZlMDUwNTU4ZGFjZGIyYjQ3YmU3MzEwZTE0
MzM2ZWE2ZWJmZWQxLi4xNDM5ZmQwMDY4MTBhZGRmNWNkN2U3MmY2YTlmZmNhZTc3NTFmNGQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zNDIsNyArMzQyLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgdmlydHVhbCB2b2lk
IGdwdVByb2Nlc3NDcmFzaGVkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGdwdVByb2Nlc3NEaWRF
eGl0KCkgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNv
bnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNzBmZWFhMDkzMjJk
NjU0MDJhNzkzYzgyYWZiOTNhZmI1ZDBiNWJiNy4uNzMyYmQ0YzU4NzdkZjU1MDI4M2MxZThmZTk1
ZjQ1ZmNmNDk3NmEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0xMDM5NywxMyArMTAzOTcsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9hZGVk
U3VicmVzb3VyY2VEb21haW5zKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQot
dm9pZCBXZWJQYWdlUHJveHk6OmdwdVByb2Nlc3NDcmFzaGVkKCkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpncHVQcm9jZXNzRXhpdGVkKEdQVVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbikKIHsKICNpZiBI
QVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAgICBtX2NvbnRleHRJREZvclZpc2li
aWxpdHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzcyA9IDA7CiAjZW5kaWYKIAotICAgIHBhZ2VDbGll
bnQoKS5ncHVQcm9jZXNzQ3Jhc2hlZCgpOworICAgIHBhZ2VDbGllbnQoKS5ncHVQcm9jZXNzRGlk
RXhpdCgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBib29sIHNob3VsZEFsbG93
QXVkaW9DYXB0dXJlID0gaXNDYXB0dXJpbmdBdWRpbygpICYmIHByZWZlcmVuY2VzKCkuY2FwdHVy
ZUF1ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBiODUzM2NiYzc0M2FmOWFmNTQyMDU1M2U4MzdhZTcxYjA2ODcxY2IxLi42
OGEzZWFiZWU0MTkzZGRiOTJlNjZiZDA4ZmVhZGE3OWRiNmU2NjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTIzNyw3ICsxMjM3LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgdm9pZCBncHVQcm9jZXNzQ3Jhc2hl
ZCgpOworICAgIHZvaWQgZ3B1UHJvY2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRpb25SZWFz
b24pOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZjkxZDhiZjY3MDY1ZDEyMzg5YmMyMzViMDUxMTRj
MTdkMjc1YjJlYS4uZmRhZDg1NGFkYTY5ZjQ2YTkxYmNlNTM2MjFhMTlmNmI5NTU5NjE0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTA0LDIzICs1
MDQsMjcgQEAgR1BVUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlR1BVUHJvY2Vz
cygpCiAgICAgcmV0dXJuICptX2dwdVByb2Nlc3M7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmdwdVByb2Nlc3NDcmFzaGVkKFByb2Nlc3NJRCBpZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNz
UG9vbDo6Z3B1UHJvY2Vzc0V4aXRlZChQcm9jZXNzSUQgaWRlbnRpZmllciwgR1BVUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKLSAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xP
R19FUlJPUihQcm9jZXNzLCAiZ3B1UHJvY2Vzc0NyYXNoZWQ6IFBJRD0lZCIsIGlkZW50aWZpZXIp
OworICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJncHVQcm9jZXNzRGlk
RXhpdDogUElEPSVkLCByZWFzb249JXUiLCBpZGVudGlmaWVyLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmVhc29uKSk7CiAgICAgbV9ncHVQcm9jZXNzID0gbnVsbHB0cjsKIAotICAgIG1fY2xpZW50
LmdwdVByb2Nlc3NEaWRDcmFzaCh0aGlzLCBpZGVudGlmaWVyKTsKKyAgICBpZiAocmVhc29uID09
IEdQVVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6Q3Jhc2gpCisgICAgICAgIG1fY2xpZW50Lmdw
dVByb2Nlc3NEaWRDcmFzaCh0aGlzLCBpZGVudGlmaWVyKTsKKwogICAgIFZlY3RvcjxSZWY8V2Vi
UHJvY2Vzc1Byb3h5Pj4gcHJvY2Vzc2VzID0gbV9wcm9jZXNzZXM7CiAgICAgZm9yIChhdXRvJiBw
cm9jZXNzIDogcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5ncHVQcm9jZXNzQ3Jhc2hlZCgp
OwotCi0gICAgaWYgKCsrbV9yZWNlbnRHUFVQcm9jZXNzQ3Jhc2hDb3VudCA+IG1heGltdW1HUFVQ
cm9jZXNzUmVsYXVuY2hBdHRlbXB0c0JlZm9yZUtpbGxpbmdXZWJQcm9jZXNzZXMpIHsKLSAgICAg
ICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgImdwdVByb2Nlc3ND
cmFzaGVkOiBHUFUgUHJvY2VzcyBoYXMgY3Jhc2hlZCBtb3JlIHRoYW4gJXUgdGltZXMgaW4gdGhl
IGxhc3QgJWcgc2Vjb25kcywgdGVybWluYXRpbmcgYWxsIFdlYlByb2Nlc3NlcyIsIG1heGltdW1H
UFVQcm9jZXNzUmVsYXVuY2hBdHRlbXB0c0JlZm9yZUtpbGxpbmdXZWJQcm9jZXNzZXMsIHJlc2V0
R1BVUHJvY2Vzc0NyYXNoQ291bnREZWxheS5zZWNvbmRzKCkpOwotICAgICAgICBtX3Jlc2V0R1BV
UHJvY2Vzc0NyYXNoQ291bnRUaW1lci5zdG9wKCk7Ci0gICAgICAgIG1fcmVjZW50R1BVUHJvY2Vz
c0NyYXNoQ291bnQgPSAwOwotICAgICAgICB0ZXJtaW5hdGVBbGxXZWJDb250ZW50UHJvY2Vzc2Vz
KCk7Ci0gICAgfSBlbHNlIGlmICghbV9yZXNldEdQVVByb2Nlc3NDcmFzaENvdW50VGltZXIuaXNB
Y3RpdmUoKSkKLSAgICAgICAgbV9yZXNldEdQVVByb2Nlc3NDcmFzaENvdW50VGltZXIuc3RhcnRP
bmVTaG90KHJlc2V0R1BVUHJvY2Vzc0NyYXNoQ291bnREZWxheSk7CisgICAgICAgIHByb2Nlc3Mt
PmdwdVByb2Nlc3NFeGl0ZWQocmVhc29uKTsKKworICAgIGlmIChyZWFzb24gPT0gR1BVUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uOjpDcmFzaCkgeworICAgICAgICBpZiAoKyttX3JlY2VudEdQVVBy
b2Nlc3NDcmFzaENvdW50ID4gbWF4aW11bUdQVVByb2Nlc3NSZWxhdW5jaEF0dGVtcHRzQmVmb3Jl
S2lsbGluZ1dlYlByb2Nlc3NlcykgeworICAgICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFT
RV9MT0dfRVJST1IoUHJvY2VzcywgImdwdVByb2Nlc3NEaWRFeGl0OiBHUFUgUHJvY2VzcyBoYXMg
Y3Jhc2hlZCBtb3JlIHRoYW4gJXUgdGltZXMgaW4gdGhlIGxhc3QgJWcgc2Vjb25kcywgdGVybWlu
YXRpbmcgYWxsIFdlYlByb2Nlc3NlcyIsIG1heGltdW1HUFVQcm9jZXNzUmVsYXVuY2hBdHRlbXB0
c0JlZm9yZUtpbGxpbmdXZWJQcm9jZXNzZXMsIHJlc2V0R1BVUHJvY2Vzc0NyYXNoQ291bnREZWxh
eS5zZWNvbmRzKCkpOworICAgICAgICAgICAgbV9yZXNldEdQVVByb2Nlc3NDcmFzaENvdW50VGlt
ZXIuc3RvcCgpOworICAgICAgICAgICAgbV9yZWNlbnRHUFVQcm9jZXNzQ3Jhc2hDb3VudCA9IDA7
CisgICAgICAgICAgICB0ZXJtaW5hdGVBbGxXZWJDb250ZW50UHJvY2Vzc2VzKCk7CisgICAgICAg
IH0gZWxzZSBpZiAoIW1fcmVzZXRHUFVQcm9jZXNzQ3Jhc2hDb3VudFRpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgICAgICBtX3Jlc2V0R1BVUHJvY2Vzc0NyYXNoQ291bnRUaW1lci5zdGFydE9uZVNo
b3QocmVzZXRHUFVQcm9jZXNzQ3Jhc2hDb3VudERlbGF5KTsKKyAgICB9CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2Vi
UHJvY2Vzc1Byb3h5LCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAppbmRleCBkYzdhMWExMzVmMGZmNzJhOWRmYzIyMDc4Yzg2NTU2ZTZiZjdhZmM5Li5iNzM4NzJl
ZGI0YmZmZThiNGUxZTNlNDBiOTE2MGE4ODY2Zjg2NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM1Nyw3ICszNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB0ZXh0Q2hlY2tlclN0YXRlQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQot
ICAgIHZvaWQgZ3B1UHJvY2Vzc0NyYXNoZWQoUHJvY2Vzc0lEKTsKKyAgICB2b2lkIGdwdVByb2Nl
c3NFeGl0ZWQoUHJvY2Vzc0lELCBHUFVQcm9jZXNzVGVybWluYXRpb25SZWFzb24pOwogCiAgICAg
dm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBHUFVQcm9jZXNz
Q29ubmVjdGlvblBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDQ4NjI3NzcwMTQ1ZTA1OTQ2NWJhODRjYTYz
ZGIzYTU2NzM1N2Y4MTguLmJjZjJhOWYxNGFlOGJhMTRjYjY5ZDZiYzVmZjRiZThlZWFmM2UwZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzg2
LDEwICs3ODYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0
aW9uKEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHAKICAgICBtX3Byb2Nlc3NQb29s
LT5nZXRHUFVQcm9jZXNzQ29ubmVjdGlvbigqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RG
TW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0NyYXNo
ZWQoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdwdVByb2Nlc3NFeGl0ZWQoR1BVUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9W
ZWN0b3JPZjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4obV9wYWdlTWFwLnZhbHVlcygpKSkKLSAgICAg
ICAgcGFnZS0+Z3B1UHJvY2Vzc0NyYXNoZWQoKTsKKyAgICAgICAgcGFnZS0+Z3B1UHJvY2Vzc0V4
aXRlZChyZWFzb24pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggNDE0NzRkZWM3YTEwMzg2OWVhMGZjNmFiZTE2ZTlkNTI4N2RmYWI4
Zi4uMTcxMDU1ODQ1Mjk2OTkxOTYxMjU2M2VhMGMyODZlYTNlOGUyYTE3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTM3Niw3ICszNzYsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICB2b2lkIGdwdVByb2Nl
c3NDcmFzaGVkKCk7CisgICAgdm9pZCBncHVQcm9jZXNzRXhpdGVkKEdQVVByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbik7CiAjZW5kaWYKIAogICAgIGJvb2wgaGFzU2xlZXBEaXNhYmxlcigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApp
bmRleCBjZDFjZDBiNGZlMTQ4Y2Q5NDI0OTVkNDMzODk2M2JiYWUzNzUzMmRjLi5kODc5ODIzNDFi
NmVmYjQ0ZjczZTExMTcxM2I0YTA0MjNmM2NkMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtODEsNyArODEsNyBAQCBwcml2YXRl
OgogI2VuZGlmIC8vIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQotICAgIHZvaWQgZ3B1UHJvY2Vzc0NyYXNoZWQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGdwdVByb2Nlc3NEaWRFeGl0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICB2b2lk
IHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0b29sVGlwQ2hhbmdl
ZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBiMjFkOGJjZjhm
MzI3NjlmNmVjODEzYzQ4NDQ3NTY3Y2ZmNWZlYzFiLi5hZDFhYTcyYTA4MTk0YzJiZGIzMmI2M2E4
NWMxZTA3Mjk1NjJiYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCkBAIC0yMTIsOSArMjEyLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihM
YXllckgKICNlbmRpZiAvLyBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKLXZvaWQgUGFnZUNsaWVudEltcGw6OmdwdVByb2Nlc3NDcmFz
aGVkKCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmdwdVByb2Nlc3NEaWRFeGl0KCkKIHsKLSAgICBb
bV9jb250ZW50VmlldyBfZ3B1UHJvY2Vzc0NyYXNoZWRdOworICAgIFttX2NvbnRlbnRWaWV3IF9n
cHVQcm9jZXNzRGlkRXhpdF07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3LmgKaW5kZXggYzU3NDUxYWUyZDgxYTNhNDMyOGVmMDgwOWYyZDM4
MTE0ODQwNTVhMS4uMDk1MDg2Y2QxZjlkNWY2OWY3YTdhZTE5OGVmOWE5ZmNlMGM0YmZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCkBAIC05OCw3ICs5
OCw3IEBAIGVudW0gY2xhc3MgVmlld1N0YWJpbGl0eUZsYWcgOiB1aW50OF90OwogLSAoc3RkOjp1
bmlxdWVfcHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4pX2NyZWF0ZURyYXdpbmdBcmVhUHJv
eHk6KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Jilwcm9jZXNzOwogLSAodm9pZClfcHJvY2Vzc0Rp
ZEV4aXQ7CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotLSAodm9pZClfZ3B1UHJvY2Vzc0NyYXNo
ZWQ7CistICh2b2lkKV9ncHVQcm9jZXNzRGlkRXhpdDsKICNlbmRpZgogLSAodm9pZClfcHJvY2Vz
c1dpbGxTd2FwOwogLSAodm9pZClfZGlkUmVsYXVuY2hQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCBhZTQwZmIwMWY2M2RiYzA5MDY0
YzY5OGI3ZWVkOTQ4ZmUwYTBkMWU0Li4xNDQ0NTljZjRmNTA0N2MwMjBhNjM0MGQzMzY1MDJhZDc2
YTA3NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5t
bQpAQCAtNjU2LDcgKzY1Niw3IEBAIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CiB9CiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCi0tICh2b2lkKV9ncHVQcm9jZXNzQ3Jhc2hlZAorLSAodm9pZClf
Z3B1UHJvY2Vzc0RpZEV4aXQKIHsKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklF
VykKICAgICBbc2VsZiBfcmVtb3ZlVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvckdQVVByb2Nl
c3NdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQ5ZWQ4NjFhMWJlMDMwNWQyZDhhMDg4YWM4ZmIzMjJiYTc2NGJmMDguLjVhZmE0MWJkZjM2M2U2
MTFiMDdjNWQzZGI5YjdiZGNiMmI1YzNjODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNC0xNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEV4aXQgdGhlIEdQVVByb2Nlc3Mg
d2hlbiB1bmRlciBtZW1vcnkgcHJlc3N1cmUgaWYgaXQgaXMgbm90IGJlaW5nIHVzZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDU1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3Zl
cmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJv
Y2Vzcy5tbToKKyAgICAgICAgKHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QpOgorICAgICAgICAo
VEVTVCk6CisKIDIwMjEtMDQtMTYgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxp
YS5jb20+CiAKICAgICAgICAgQXZvaWQgY29udmVydGluZyBIVE1MIGNoYXJzIGluIF9XM0NUZXN0
Q29udmVydGVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0dQVVByb2Nlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0dQVVByb2Nlc3MubW0KaW5kZXggZjMwYzJlMmU1ODg4YjZjMmI1OWQyMzVkNTZmY2U0MjdiMjJm
Nzc3ZC4uYWI1ZDlhNTQ5MjM2ZGM4OGIxMGE3ZTgxNTg4MzdkZjNkYTE0M2Q1NiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9HUFVQcm9jZXNzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvR1BVUHJvY2Vzcy5tbQpA
QCAtMzQsNiArMzQsOCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLU3RyaW5nLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d1ByaXZhdGUuaD4KKyNpbXBvcnQgPG5vdGlmeS5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00OTAs
MyArNDkyLDkwIEBAIFRFU1QoR1BVUHJvY2VzcywgQ2FudmFzQmFzaWNDcmFzaEhhbmRsaW5nKQog
ICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CisKK3N0YXRp
YyB2b2lkIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoRnVuY3Rpb248dm9pZChXS1dlYlZpZXcg
Kik+JiYgbG9hZFRlc3RQYWdlU3luY2hyb25vdXNseSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKChfX2JyaWRnZSBXS1By
ZWZlcmVuY2VzUmVmKVtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSwgdHJ1ZSwgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQiKSk7Cisg
ICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoKF9fYnJpZGdlIFdL
UHJlZmVyZW5jZXNSZWYpW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLCB0cnVlLCBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FwdHVyZVZpZGVvSW5HUFVQcm9jZXNzRW5hYmxlZCIp
KTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZygoX19icmlk
Z2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10sIHRydWUsIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VHUFVQcm9jZXNzRm9yQ2FudmFzUmVuZGVy
aW5nRW5hYmxlZCIpKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVz
dGluZygoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNl
c10sIGZhbHNlLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlR1BVUHJvY2Vzc0Zv
ckRPTVJlbmRlcmluZ0VuYWJsZWQiKSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDQwMCwg
NDAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBsb2FkVGVzdFBh
Z2VTeW5jaHJvbm91c2x5KHdlYlZpZXcuZ2V0KCkpOworCisgICAgLy8gQSBHUFVQcm9jZXNzIHNo
b3VsZCBnZXQgbGF1bmNoZWQuCisgICAgd2hpbGUgKCFbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9j
ZXNzUG9vbCBfZ3B1UHJvY2Vzc0lkZW50aWZpZXJdKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzbGVlcCgwLjEpOworICAgIGF1dG8gZ3B1UHJvY2Vzc1BJRCA9IFtjb25maWd1cmF0aW9u
LmdldCgpLnByb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl07CisKKyAgICAvLyBTaW11
bGF0ZSBtZW1vcnkgcHJlc3N1cmUgKG5vdGlmeXV0aWwgLXAgb3JnLldlYktpdC5sb3dNZW1vcnkp
LgorICAgIG5vdGlmeV9wb3N0KCJvcmcuV2ViS2l0Lmxvd01lbW9yeSIpOworCisgICAgLy8gTWFr
ZSBzdXJlIHRoZSBHUFVQcm9jZXNzIGRvZXMgbm90IGV4aXQgc2luY2UgaXQgaXMgc3RpbGwgbmVl
ZGVkLgorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuNSk7CisgICAgRVhQRUNUX0VR
KGdwdVByb2Nlc3NQSUQsIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF9ncHVQcm9j
ZXNzSWRlbnRpZmllcl0pOworCisgICAgLy8gTmF2aWdhdGUgdG8gYW5vdGhlciBwYWdlIHRoYXQg
bm8gbG9uZ2VyIHJlcXVpcmVzIHRoZSBHUFVQcm9jZXNzLgorICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOworCisgICAgLy8gVGhlIEdQVVByb2Nl
c3Mgc2hvdWxkIGV4aXQgb24gbWVtb3J5IHByZXNzdXJlLgorICAgIGRvIHsKKyAgICAgICAgLy8g
U2ltdWxhdGUgbWVtb3J5IHByZXNzdXJlIChub3RpZnl1dGlsIC1wIG9yZy5XZWJLaXQubG93TWVt
b3J5KS4KKyAgICAgICAgbm90aWZ5X3Bvc3QoIm9yZy5XZWJLaXQubG93TWVtb3J5Iik7CisgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKDAuMSk7CisgICAgfSB3aGlsZSAoW2NvbmZp
Z3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX2dwdVByb2Nlc3NJZGVudGlmaWVyXSk7CisKKyAg
ICAvLyBUaGUgR1BVUHJvY2VzcyBzaG91bGQgbm90IHJlbGF1bmNoLgorICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnNsZWVwKDAuNSk7CisgICAgRVhQRUNUX0VRKDAsIFtjb25maWd1cmF0aW9uLmdl
dCgpLnByb2Nlc3NQb29sIF9ncHVQcm9jZXNzSWRlbnRpZmllcl0pOworfQorCitURVNUKEdQVVBy
b2Nlc3MsIEV4aXRzVW5kZXJNZW1vcnlQcmVzc3VyZUNhbnZhc0Nhc2UpCit7CisgICAgcnVuTWVt
b3J5UHJlc3N1cmVFeGl0VGVzdChbXShXS1dlYlZpZXcgKndlYlZpZXcpIHsKKyAgICAgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOnRlc3RDYW52YXNQYWdlXTsKKworICAg
ICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgICAgICBbd2ViVmlldyBldmFsdWF0
ZUphdmFTY3JpcHQ6QCJjb250ZXh0LmZpbGxTdHlsZSA9ICcjMDBGRjAwJzsgY29udGV4dC5maWxs
UmVjdCgwLCAwLCA0MDAsIDQwMCk7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CisgICAgICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcg
ZXZhbHVhdGVKYXZhU2NyaXB0OkAiY29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgNDAwLCA0MDAp
LndpZHRoIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CisgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisgICAgfSk7Cit9CisKK1RFU1QoR1BVUHJvY2VzcywgRXhpdHNVbmRlck1lbW9yeVByZXNzdXJl
VmlkZW9DYXNlKQoreworICAgIHJ1bk1lbW9yeVByZXNzdXJlRXhpdFRlc3QoW10oV0tXZWJWaWV3
ICp3ZWJWaWV3KSB7CisgICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAImxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvIl07CisKKyAgICAgICAgX19ibG9jayBib29s
IGRvbmUgPSBmYWxzZTsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF0ucGxheSgpICYmIHRydWUiIGNv
bXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAg
ICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9KTsK
K30KKworVEVTVChHUFVQcm9jZXNzLCBFeGl0c1VuZGVyTWVtb3J5UHJlc3N1cmVXZWJBdWRpb0Nh
c2UpCit7CisgICAgcnVuTWVtb3J5UHJlc3N1cmVFeGl0VGVzdChbXShXS1dlYlZpZXcgKndlYlZp
ZXcpIHsKKyAgICAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAi
YXVkaW8tY29udGV4dC1wbGF5aW5nIl07CisKKyAgICAgICAgLy8gZXZhbHVhdGVKYXZhU2NyaXB0
IGdpdmVzIHVzIHRoZSB1c2VyIGdlc3R1cmUgd2UgbmVlZCB0byByZWxpYWJseSBzdGFydCBhdWRp
byBwbGF5YmFjayBvbiBhbGwgcGxhdGZvcm1zLgorICAgICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9
IGZhbHNlOworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJzdGFydFBsYXlp
bmcoKSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIH0pOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>