<?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>69292</bug_id>
          
          <creation_ts>2011-10-03 14:31:09 -0700</creation_ts>
          <short_desc>WEB_AUDIO does not compile on Leopard 32-bit.</short_desc>
          <delta_ts>2011-10-05 13:52:53 -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>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://build.webkit.org/builders/Leopard%20Intel%20Debug%20%28Build%29/builds/40113/steps/compile-webkit/logs/warnings%20%28178%29</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68587</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>crogers</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>477246</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-10-03 14:31:09 -0700</bug_when>
    <thetext>WEB_AUDIO fails to compile on the Leopard bots due to many 32&lt;-&gt;64 casting warnings.

http://build.webkit.org/builders/Leopard%20Intel%20Debug%20%28Build%29/builds/40113/steps/compile-webkit/logs/warnings%20%28178%29</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477968</commentid>
    <comment_count>1</comment_count>
      <attachid>109695</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-10-04 14:40:30 -0700</bug_when>
    <thetext>Created attachment 109695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477971</commentid>
    <comment_count>2</comment_count>
      <attachid>109696</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-10-04 14:43:17 -0700</bug_when>
    <thetext>Created attachment 109696
Patch

This time, without the changes to project.pbxproj and SVGResourcePattern.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477994</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-10-04 15:13:18 -0700</bug_when>
    <thetext>+kbr

Thanks Jer, I&apos;m looking through it now.  I&apos;m also applying the patch and measuring any performance difference in the DynamicsCompressor.  I don&apos;t expect to see too much difference but I just want to do a quick sanity check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478047</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-10-04 16:22:05 -0700</bug_when>
    <thetext>I&apos;ve run a few performance tests and it seems like I&apos;m seeing some performance impact due to switching everything to double precision in ZeroPole.cpp and DynamicsCompressorKernel.cpp.  It worries me a bit, so I think it&apos;s probably a better idea to uniformly switch both of these over to using &quot;float&quot; everywhere in these places.  Sorry, I know I suggested you go the double route, but after having tested the performance...

As far as the DoublePoint3D - it probably is fine either way (using double as in your patch or switching everything to float).  Performance will not be an issue here.  I would go with DoublePoint3D if you think it will be useful to have this used in other parts of WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478456</commentid>
    <comment_count>5</comment_count>
      <attachid>109814</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-10-05 10:02:11 -0700</bug_when>
    <thetext>Created attachment 109814
Patch

Made the changes Chris Rogers suggested, namely operating as much as possible as floats.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478460</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-05 10:05:13 -0700</bug_when>
    <thetext>Attachment 109814 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/audio/Panner.h:50:  The parameter name &quot;model&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/audio/HRTFKernel.h:80:  The parameter name &quot;channel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 89 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478482</commentid>
    <comment_count>7</comment_count>
      <attachid>109814</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-05 10:36:33 -0700</bug_when>
    <thetext>Comment on attachment 109814
Patch

Attachment 109814 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9958324</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478512</commentid>
    <comment_count>8</comment_count>
      <attachid>109823</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-10-05 11:01:45 -0700</bug_when>
    <thetext>Created attachment 109823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478545</commentid>
    <comment_count>9</comment_count>
      <attachid>109823</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-05 11:40:25 -0700</bug_when>
    <thetext>Comment on attachment 109823
Patch

Attachment 109823 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9942782</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478551</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-10-05 11:49:48 -0700</bug_when>
    <thetext>patch seems pretty good so far -- I noticed it fails the cr-linux bots since some small changes are necessary to AudioDestinationChromium.cpp (due to sampleRate changing to float).
Could you please change AudioDestinationChromium?


In file included from /Volumes/Channel/Source/ChromiumTrunk/src/third_party/WebKit/Source/WebKit/chromium/src/AudioDestinationChromium.cpp:33:
src/AudioDestinationChromium.h:52:12: error: virtual function &apos;sampleRate&apos; has a different return type (&apos;double&apos;) than the function it overrides (which has return type &apos;float&apos;)
    double sampleRate() const { return m_sampleRate; }
           ^
../../WebCore/platform/audio/AudioDestination.h:53:19: note: overridden virtual function is here
    virtual float sampleRate() const = 0;
                  ^
/Volumes/Channel/Source/ChromiumTrunk/src/third_party/WebKit/Source/WebKit/chromium/src/AudioDestinationChromium.cpp:53:48: error: out-of-line definition of &apos;create&apos; does not match any declaration in &apos;WebCore::AudioDestination&apos;
PassOwnPtr&lt;AudioDestination&gt; AudioDestination::create(AudioSourceProvider&amp; provider, double sampleRate)
                                               ^~~~~~
/Volumes/Channel/Source/ChromiumTrunk/src/third_party/WebKit/Source/WebKit/chromium/src/AudioDestinationChromium.cpp:104:26: error: out-of-line definition of &apos;WebCore::AudioDestination::hardwareSampleRate&apos; differs from the declaration in the return type
double AudioDestination::hardwareSampleRate()
                         ^
../../WebCore/platform/audio/AudioDestination.h:54:18: note: previous declaration is here
    static float hardwareSampleRate();
                 ^
3 errors generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478589</commentid>
    <comment_count>11</comment_count>
      <attachid>109839</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-10-05 12:45:44 -0700</bug_when>
    <thetext>Created attachment 109839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478612</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-10-05 13:13:32 -0700</bug_when>
    <thetext>This looks fine to me.  There&apos;s one layout test &quot;webaudio/audiobuffersource-playbackrate.html&quot; which I&apos;ll need to rebaseline after this (I&apos;ll do it).  The test is audibly identical, but differs in the fringes due to the precision changes introduced in this patch.

All audio samples run fine - performance is fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478616</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-10-05 13:19:32 -0700</bug_when>
    <thetext>By the way, can you tell me how I can set my Xcode project to see these types of Leopard 32-bit warnings? I&apos;d rather not bother you guys too much as code is modified and new code added...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478633</commentid>
    <comment_count>14</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-10-05 13:30:17 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; By the way, can you tell me how I can set my Xcode project to see these types of Leopard 32-bit warnings? I&apos;d rather not bother you guys too much as code is modified and new code added...

You need to set the compiler to GCC and build 32-bit.  In Xcode 4, select the WebCore project, and choose the WebCore Build Settings panel.  The option to choose the compiler is in Build Options / Compiler for C / C++ / Objective-C, and LLVM GCC 4.2 should be an option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478643</commentid>
    <comment_count>15</comment_count>
      <attachid>109839</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-05 13:38:37 -0700</bug_when>
    <thetext>Comment on attachment 109839
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478655</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-10-05 13:52:53 -0700</bug_when>
    <thetext>Committed r96745: &lt;http://trac.webkit.org/changeset/96745&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109695</attachid>
            <date>2011-10-04 14:40:30 -0700</date>
            <delta_ts>2011-10-04 14:43:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69292-20111004144029.patch</filename>
            <type>text/plain</type>
            <size>55621</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMzEzM2M3NmIwMzI5MmY3
MDQ2MmRlNzk2ZDEzNWZmNmY3MmM1YTk0Li41MDE5YTgxMmY2NThiNDg4ZWNiYWViMjgxY2ZlNGZj
NjQxNmMxODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA1IEBACisyMDExLTEwLTA0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFdFQl9BVURJTyBkb2VzIG5v
dCBjb21waWxlIG9uIExlb3BhcmQgMzItYml0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHM7IGNvdmVyZWQgYnkgYWxsIGV4aXN0aW5n
IGF1ZGlvIGFuZCBncmFwaGljcyB0ZXN0cy4KKworICAgICAgICBGbG9hdFBvaW50M0QgaGFzIGJl
ZW4gY29udmVydGVkIHRvIGEgYmFzZSB0ZW1wbGF0ZSBjbGFzcywgRmxvYXRQb2ludDNEQmFzZSwg
d2l0aCB0eXBlZGVmcworICAgICAgICBmb3IgRmxvYXQgYW5kIERvdWJsZSB2ZXJzaW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5oOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQ
b2ludDNEQmFzZTo6RmxvYXRQb2ludDNEQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBv
aW50M0RCYXNlOjp4KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9pbnQzREJhc2U6OnNldFgp
OgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDNEQmFzZTo6eSk6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFBvaW50M0RCYXNlOjpzZXRZKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9p
bnQzREJhc2U6OnopOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDNEQmFzZTo6c2V0Wik6
CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50M0RCYXNlOjpzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RmxvYXRQb2ludDNEQmFzZTo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBv
aW50M0RCYXNlOjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50M0RCYXNlOjpk
b3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDNEQmFzZTo6Y3Jvc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6RmxvYXRQb2ludDNEQmFzZTo6bGVuZ3RoU3F1YXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvciArPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciAtPSk6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcispOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3It
KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciopOgorICAgICAgICAoV2ViQ29y
ZTo6OjpkaXN0YW5jZVRvKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bm9ybWFsaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6Ojo6bGVuZ3RoKToKKworICAgICAgICBDaGFuZ2VzIHRvIEZsb2F0UG9pbnQz
RCBhYm92ZSBtZWFuIHRoYXQgdGhlIGZvbGxvd2luZyBmaWxlcyBjYW4gbm8gbG9uZ2VyIGZvcndh
cmQtZGVjbGFyZQorICAgICAgICBGbG9hdFBvaW50M0QgYW5kIG11c3QgaW5jbHVkZQhGbG9hdFBv
aW50M0QuaCBpbnN0ZWFkOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0
aW9uTWF0cml4Lmg6CisKKyAgICAgICAgVXNlIG9mIGZsb2F0IGFuZCBkb3VibGUgd2l0aGluIHRo
ZSBXRUJfQVVESU8gaW1wbGVtZW50YXRpb24gaGF2ZSBiZWVuIGhhcm1vbml6ZWQsIHdpdGggbW9z
dAorICAgICAgICBjYWxjdWxhdGlvbnMgZG9uZSB1c2luZyBkb3VibGVzLCBhbmQgd2l0aCBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KCkgYWRkZWQgd2hlbiBuZWNlc3NhcnkgdG8KKyAgICAgICAgbmFy
cm93IHJlc3VsdHMgZG93biB0byBmbG9hdHM6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9N
b25vKTogVXNlICIvMiIgaW5zdGVhZCBvZiAiKi41IiB0byBhdm9pZCBkb3VibGUtPmZsb2F0IGNv
bnZlcnNpb25zLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6Z2Fpbik6IFVzZSBEb3VibGVQb2ludDNELgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpz
ZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVycyk6IGZsb2F0IC0+IGRvdWJsZS4KKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0RW1waGFzaXNQYXJhbWV0ZXJzKTogZmxvYXQg
LT4gZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNz
KTogZmxvYXQgLT4gZG91YmxlLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNl
dFByZURlbGF5VGltZSk6IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQuCisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOiBmbG9hdCAtPiBkb3VibGUgJiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpzYW1wbGVSYXRlKTogZmxvYXQgLT4gZG91YmxlLgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL1plcm9Qb2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpwcm9jZXNz
KTogZmxvYXQgLT4gZG91YmxlICYgbmFycm93UHJlY2lzaW9uVG9GbG9hdC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oOgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnNl
dFplcm8pOiBmbG9hdCAtPiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6c2V0
UG9sZSk6IGZsb2F0IC0+IGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJv
KTogZmxvYXQgLT4gZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnBvbGUpOiBm
bG9hdCAtPiBkb3VibGUuCisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2Vzcyk6
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnJlbmRlckZyb21CdWZmZXIpOiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0LgorICAg
ICAgICAqIHdlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
TGlzdGVuZXI6OnNldFBvc2l0aW9uKTogZmxvYXQgLT4gZG91YmxlLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9MaXN0ZW5lcjo6cG9zaXRpb24pOiBmbG9hdCAtPiBkb3VibGUuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0xpc3RlbmVyOjpzZXRPcmllbnRhdGlvbik6IGZsb2F0IC0+IGRvdWJsZS4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6Om9yaWVudGF0aW9uKTogZmxvYXQgLT4g
ZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9MaXN0ZW5lcjo6c2V0VXBWZWN0b3IpOiBm
bG9hdCAtPiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0xpc3RlbmVyOjp1cFZlY3Rv
cik6IGZsb2F0IC0+IGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnNl
dFZlbG9jaXR5KTogZmxvYXQgLT4gZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9MaXN0
ZW5lcjo6dmVsb2NpdHkpOiBmbG9hdCAtPiBkb3VibGUuCisgICAgICAgICogd2ViYXVkaW8vQXVk
aW9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVyTm9kZTo6QXVk
aW9QYW5uZXJOb2RlKTogVXNlIERvdWJsZVBvaW50M0QuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Bhbm5lck5vZGU6OmdldEF6aW11dGhFbGV2YXRpb24pOiBVc2UgRG91YmxlUG9pbnQzRC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUpOiBVc2UgRG91Ymxl
UG9pbnQzRC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VDb25l
R2Fpbik6IFVzZSBEb3VibGVQb2ludDNELgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvUGFubmVy
Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpwb3NpdGlvbik6IFVz
ZSBEb3VibGVQb2ludDNELgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpzZXRQ
b3NpdGlvbik6IFVzZSBEb3VibGVQb2ludDNELgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5u
ZXJOb2RlOjpvcmllbnRhdGlvbik6IFVzZSBEb3VibGVQb2ludDNELgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9QYW5uZXJOb2RlOjpzZXRPcmllbnRhdGlvbik6IFVzZSBEb3VibGVQb2ludDNELgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjp2ZWxvY2l0eSk6IFVzZSBEb3VibGVQ
b2ludDNELgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpzZXRWZWxvY2l0eSk6
IFVzZSBEb3VibGVQb2ludDNELgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6dmFsdWUpOiBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6c21vb3RoZWRWYWx1ZSk6IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpzbW9vdGgp
OiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6
Y2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVWYWx1ZXMpOiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0Lgor
ICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUpOiBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1
ZXNGb3JUaW1lUmFuZ2VJbXBsKTogbmFycm93UHJlY2lzaW9uVG9GbG9hdC4KKyAgICAgICAgKiB3
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVT
aGFwZXJEU1BLZXJuZWw6OnByb2Nlc3MpOiBVc2UgIi8yIiBpbnN0ZWFkIG9mICIqMC41Ii4KKwog
MjAxMS0xMC0wMyAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJnYigpIHdpdGggcGVyY2VudGFnZXMgc2hvd3Mgd3JvbmcgaGV4
L2hzbCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBiZjViYTFmYTIxMzJlMTk3OTRjNzQ3Mjk2NTYwNjIxMTJmZTk4OGE3
Li4xMzgyM2FlNWVlMjJlNmRkNWEwYTZiYTg1MWYzZjU5ODU5YzI4YmExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzQ3Miw2
ICsyNzQ3Miw3IEBACiAJCQkJREVBRF9DT0RFX1NUUklQUElORyA9ICIkKERFQURfQ09ERV9TVFJJ
UFBJTkdfZGVidWcpIjsKIAkJCQlERUJVR19ERUZJTkVTID0gIiQoREVCVUdfREVGSU5FU19kZWJ1
ZykiOwogCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAiJChHQ0NfT1BUSU1JWkFUSU9OX0xF
VkVMX2RlYnVnKSI7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm1n
Y2M0MjsKIAkJCQlTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9ICIkKFNUUklQX0lOU1RBTExFRF9Q
Uk9EVUNUX2RlYnVnKSI7CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwpAQCAtMjc0ODAsNiArMjc0
ODEsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19WRVJTSU9OID0gY29t
LmFwcGxlLmNvbXBpbGVycy5sbHZtZ2NjNDI7CiAJCQkJU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1Qg
PSBOTzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKQEAgLTI3NDg4LDYgKzI3NDkwLDggQEAK
IAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSAxQ0RENDVFNjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZpZyAqLzsKIAkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJz
Lmxsdm1nY2M0MjsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsK
IAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAppbmRleCBlMzRmN2RiZDVlNzBjMjVjY2RjNzUzMTFhODky
NzUzMzc5N2I3N2ViLi5hMzI0NTNjZGY1ZmEzMTRkMmY2NWZjY2EwZGRiMzRlMzUwZjljYTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBAIC00NjYsNyAr
NDY2LDcgQEAgUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9N
b25vKEF1ZGlvQnVzKiBzb3VyY2VCdXMpCiAgICAgICAgIAogICAgICAgICAgICAgLy8gRG8gdGhl
IG1vbm8gbWl4ZG93bi4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyAr
K2kpCi0gICAgICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSAwLjUgKiAoc291cmNlTFtpXSAr
IHNvdXJjZVJbaV0pOworICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gKHNvdXJjZUxb
aV0gKyBzb3VyY2VSW2ldKSAvIDI7CiAKICAgICAgICAgICAgIGRlc3RpbmF0aW9uQnVzLT5zZXRT
YW1wbGVSYXRlKHNvdXJjZUJ1cy0+c2FtcGxlUmF0ZSgpKTsgICAgCiAgICAgICAgICAgICByZXR1
cm4gZGVzdGluYXRpb25CdXMucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQ29uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9D
b25lLmNwcAppbmRleCBmNTE0Y2RlYjU4MjZmN2Q1YTFiODQ0ZDEwMzIzN2NkNmExMzUxMGEzLi4x
YTIxMWExOTdkMTM1NzVkMDU5YjIxYTY5NTJiNzgxZjRkOTljOTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Db25lLmNwcApAQCAtNDIsMTYgKzQyLDE2IEBAIENvbmVFZmZlY3Q6OkNv
bmVFZmZlY3QoKQogewogfQogCi1kb3VibGUgQ29uZUVmZmVjdDo6Z2FpbihGbG9hdFBvaW50M0Qg
c291cmNlUG9zaXRpb24sIEZsb2F0UG9pbnQzRCBzb3VyY2VPcmllbnRhdGlvbiwgRmxvYXRQb2lu
dDNEIGxpc3RlbmVyUG9zaXRpb24pCitkb3VibGUgQ29uZUVmZmVjdDo6Z2FpbihEb3VibGVQb2lu
dDNEIHNvdXJjZVBvc2l0aW9uLCBEb3VibGVQb2ludDNEIHNvdXJjZU9yaWVudGF0aW9uLCBEb3Vi
bGVQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24pCiB7CiAgICAgaWYgKHNvdXJjZU9yaWVudGF0aW9u
LmlzWmVybygpIHx8ICgobV9pbm5lckFuZ2xlID09IDM2MC4wKSAmJiAobV9vdXRlckFuZ2xlID09
IDM2MC4wKSkpCiAgICAgICAgIHJldHVybiAxLjA7IC8vIG5vIGNvbmUgc3BlY2lmaWVkIC0gdW5p
dHkgZ2FpbgogCiAgICAgLy8gTm9ybWFsaXplZCBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCi0gICAg
RmxvYXRQb2ludDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBsaXN0ZW5lclBvc2l0aW9uIC0gc291cmNl
UG9zaXRpb247CisgICAgRG91YmxlUG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gbGlzdGVuZXJQ
b3NpdGlvbiAtIHNvdXJjZVBvc2l0aW9uOwogICAgIHNvdXJjZVRvTGlzdGVuZXIubm9ybWFsaXpl
KCk7CiAKLSAgICBGbG9hdFBvaW50M0Qgbm9ybWFsaXplZFNvdXJjZU9yaWVudGF0aW9uID0gc291
cmNlT3JpZW50YXRpb247CisgICAgRG91YmxlUG9pbnQzRCBub3JtYWxpemVkU291cmNlT3JpZW50
YXRpb24gPSBzb3VyY2VPcmllbnRhdGlvbjsKICAgICBub3JtYWxpemVkU291cmNlT3JpZW50YXRp
b24ubm9ybWFsaXplKCk7CiAKICAgICAvLyBBbmdsZSBiZXR3ZWVuIHRoZSBzb3VyY2Ugb3JpZW50
YXRpb24gdmVjdG9yIGFuZCB0aGUgc291cmNlLWxpc3RlbmVyIHZlY3RvcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQ29uZS5oCmluZGV4IGY1NjYwMTgyZDczYjU1MmI4ZWRkYmMwNWE3OTdhNjQz
ODQ2ZDhiZDUuLmY4NDlhZWRmZDA3OTlmNjkxMjU1M2M5MjQ1MDMzOGMxNzczNmYwZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgog
ICAgIENvbmVFZmZlY3QoKTsKIAogICAgIC8vIFJldHVybnMgc2NhbGFyIGdhaW4gZm9yIHRoZSBn
aXZlbiBzb3VyY2UvbGlzdGVuZXIgcG9zaXRpb25zL29yaWVudGF0aW9ucwotICAgIGRvdWJsZSBn
YWluKEZsb2F0UG9pbnQzRCBzb3VyY2VQb3NpdGlvbiwgRmxvYXRQb2ludDNEIHNvdXJjZU9yaWVu
dGF0aW9uLCBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbik7CisgICAgZG91YmxlIGdhaW4o
RG91YmxlUG9pbnQzRCBzb3VyY2VQb3NpdGlvbiwgRG91YmxlUG9pbnQzRCBzb3VyY2VPcmllbnRh
dGlvbiwgRG91YmxlUG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uKTsKIAogICAgIC8vIEFuZ2xlcyBp
biBkZWdyZWVzCiAgICAgdm9pZCBzZXRJbm5lckFuZ2xlKGRvdWJsZSBpbm5lckFuZ2xlKSB7IG1f
aW5uZXJBbmdsZSA9IGlubmVyQW5nbGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IDE1ZWVjOWY0MGFhZjZkMDIy
MWFhNWU2YjMxMTU1MmU4NThkNzFjMzYuLmMwNzEwNWExN2JjMWMzM2VmMjIzODJlOWNhMTJmYTNk
YThiY2Q3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmNwcApAQCAtODUsMTMgKzg1LDEzIEBAIGRvdWJsZSBEeW5hbWljc0Nv
bXByZXNzb3I6OnBhcmFtZXRlclZhbHVlKHVuc2lnbmVkIHBhcmFtZXRlcklEKQogICAgIHJldHVy
biBtX3BhcmFtZXRlcnNbcGFyYW1ldGVySURdOwogfQogCi12b2lkIER5bmFtaWNzQ29tcHJlc3Nv
cjo6c2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnModW5zaWduZWQgc3RhZ2VJbmRleCwgZmxvYXQg
Z2FpbiwgZmxvYXQgbm9ybWFsaXplZEZyZXF1ZW5jeSAvKiAwIC0+IDEgKi8pCit2b2lkIER5bmFt
aWNzQ29tcHJlc3Nvcjo6c2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnModW5zaWduZWQgc3RhZ2VJ
bmRleCwgZG91YmxlIGdhaW4sIGRvdWJsZSBub3JtYWxpemVkRnJlcXVlbmN5IC8qIDAgLT4gMSAq
LykKIHsKLSAgICBmbG9hdCBnayA9IDEgLSBnYWluIC8gMjA7Ci0gICAgZmxvYXQgZjEgPSBub3Jt
YWxpemVkRnJlcXVlbmN5ICogZ2s7Ci0gICAgZmxvYXQgZjIgPSBub3JtYWxpemVkRnJlcXVlbmN5
IC8gZ2s7Ci0gICAgZmxvYXQgcjEgPSBleHAoLWYxICogcGlEb3VibGUpOwotICAgIGZsb2F0IHIy
ID0gZXhwKC1mMiAqIHBpRG91YmxlKTsKKyAgICBkb3VibGUgZ2sgPSAxIC0gZ2FpbiAvIDIwOwor
ICAgIGRvdWJsZSBmMSA9IG5vcm1hbGl6ZWRGcmVxdWVuY3kgKiBnazsKKyAgICBkb3VibGUgZjIg
PSBub3JtYWxpemVkRnJlcXVlbmN5IC8gZ2s7CisgICAgZG91YmxlIHIxID0gZXhwKC1mMSAqIHBp
RG91YmxlKTsKKyAgICBkb3VibGUgcjIgPSBleHAoLWYyICogcGlEb3VibGUpOwogCiAgICAgLy8g
U2V0IHByZS1maWx0ZXIgemVybyBhbmQgcG9sZSB0byBjcmVhdGUgYW4gZW1waGFzaXMgZmlsdGVy
LgogICAgIG1fcHJlRmlsdGVyW3N0YWdlSW5kZXhdLnNldFplcm8ocjEpOwpAQCAtMTA3LDcgKzEw
Nyw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVy
cyh1bnNpZ25lZCBzdGFnZUluZGV4LCBmbG9hdCBnCiAgICAgbV9wb3N0RmlsdGVyUltzdGFnZUlu
ZGV4XS5zZXRQb2xlKHIxKTsKIH0KIAotdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldEVtcGhh
c2lzUGFyYW1ldGVycyhmbG9hdCBnYWluLCBmbG9hdCBhbmNob3JGcmVxLCBmbG9hdCBmaWx0ZXJT
dGFnZVJhdGlvKQordm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldEVtcGhhc2lzUGFyYW1ldGVy
cyhkb3VibGUgZ2FpbiwgZG91YmxlIGFuY2hvckZyZXEsIGRvdWJsZSBmaWx0ZXJTdGFnZVJhdGlv
KQogewogICAgIHNldEVtcGhhc2lzU3RhZ2VQYXJhbWV0ZXJzKDAsIGdhaW4sIGFuY2hvckZyZXEp
OwogICAgIHNldEVtcGhhc2lzU3RhZ2VQYXJhbWV0ZXJzKDEsIGdhaW4sIGFuY2hvckZyZXEgLyBm
aWx0ZXJTdGFnZVJhdGlvKTsKQEAgLTEzMCw5ICsxMzAsOSBAQCB2b2lkIER5bmFtaWNzQ29tcHJl
c3Nvcjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25C
dXMsCiAgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDAp
LT5kYXRhKCk7CiAgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFu
bmVsKDEpLT5kYXRhKCk7CiAKLSAgICBmbG9hdCBmaWx0ZXJTdGFnZUdhaW4gPSBwYXJhbWV0ZXJW
YWx1ZShQYXJhbUZpbHRlclN0YWdlR2Fpbik7Ci0gICAgZmxvYXQgZmlsdGVyU3RhZ2VSYXRpbyA9
IHBhcmFtZXRlclZhbHVlKFBhcmFtRmlsdGVyU3RhZ2VSYXRpbyk7Ci0gICAgZmxvYXQgYW5jaG9y
ID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1GaWx0ZXJBbmNob3IpOworICAgIGRvdWJsZSBmaWx0ZXJT
dGFnZUdhaW4gPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUZpbHRlclN0YWdlR2Fpbik7CisgICAgZG91
YmxlIGZpbHRlclN0YWdlUmF0aW8gPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUZpbHRlclN0YWdlUmF0
aW8pOworICAgIGRvdWJsZSBhbmNob3IgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUZpbHRlckFuY2hv
cik7CiAKICAgICBpZiAoZmlsdGVyU3RhZ2VHYWluICE9IG1fbGFzdEZpbHRlclN0YWdlR2FpbiB8
fCBmaWx0ZXJTdGFnZVJhdGlvICE9IG1fbGFzdEZpbHRlclN0YWdlUmF0aW8gfHwgYW5jaG9yICE9
IG1fbGFzdEFuY2hvcikgewogICAgICAgICBtX2xhc3RGaWx0ZXJTdGFnZUdhaW4gPSBmaWx0ZXJT
dGFnZUdhaW47CkBAIC0xNTYsMTkgKzE1NiwxOSBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6
cHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsCiAg
ICAgICAgIG1fcHJlRmlsdGVyUlszXS5wcm9jZXNzKGRlc3RpbmF0aW9uUiwgZGVzdGluYXRpb25S
LCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIH0KIAotICAgIGZsb2F0IGRiVGhyZXNob2xkID0gcGFy
YW1ldGVyVmFsdWUoUGFyYW1UaHJlc2hvbGQpOwotICAgIGZsb2F0IGRiSGVhZHJvb20gPSBwYXJh
bWV0ZXJWYWx1ZShQYXJhbUhlYWRyb29tKTsKLSAgICBmbG9hdCBhdHRhY2tUaW1lID0gcGFyYW1l
dGVyVmFsdWUoUGFyYW1BdHRhY2spOwotICAgIGZsb2F0IHJlbGVhc2VUaW1lID0gcGFyYW1ldGVy
VmFsdWUoUGFyYW1SZWxlYXNlKTsKLSAgICBmbG9hdCBwcmVEZWxheVRpbWUgPSBwYXJhbWV0ZXJW
YWx1ZShQYXJhbVByZURlbGF5KTsKKyAgICBkb3VibGUgZGJUaHJlc2hvbGQgPSBwYXJhbWV0ZXJW
YWx1ZShQYXJhbVRocmVzaG9sZCk7CisgICAgZG91YmxlIGRiSGVhZHJvb20gPSBwYXJhbWV0ZXJW
YWx1ZShQYXJhbUhlYWRyb29tKTsKKyAgICBkb3VibGUgYXR0YWNrVGltZSA9IHBhcmFtZXRlclZh
bHVlKFBhcmFtQXR0YWNrKTsKKyAgICBkb3VibGUgcmVsZWFzZVRpbWUgPSBwYXJhbWV0ZXJWYWx1
ZShQYXJhbVJlbGVhc2UpOworICAgIGRvdWJsZSBwcmVEZWxheVRpbWUgPSBwYXJhbWV0ZXJWYWx1
ZShQYXJhbVByZURlbGF5KTsKIAogICAgIC8vIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBtYXN0ZXIg
dm9sdW1lIG9uIHRoZSBjb21wcmVzc2VkIHNpZ25hbCAocHJlLWJsZW5kaW5nKS4KLSAgICBmbG9h
dCBkYlBvc3RHYWluID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1Qb3N0R2Fpbik7CisgICAgZG91Ymxl
IGRiUG9zdEdhaW4gPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVBvc3RHYWluKTsKIAogICAgIC8vIExp
bmVhciBibGVuZGluZyB2YWx1ZSBmcm9tIGRyeSB0byBjb21wbGV0ZWx5IHByb2Nlc3NlZCAoMCAt
PiAxKQogICAgIC8vIDAgbWVhbnMgdGhlIHNpZ25hbCBpcyBjb21wbGV0ZWx5IHVucHJvY2Vzc2Vk
LgogICAgIC8vIDEgbWl4ZXMgaW4gb25seSB0aGUgY29tcHJlc3NlZCBzaWduYWwuCi0gICAgZmxv
YXQgZWZmZWN0QmxlbmQgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUVmZmVjdEJsZW5kKTsKKyAgICBk
b3VibGUgZWZmZWN0QmxlbmQgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUVmZmVjdEJsZW5kKTsKIAog
ICAgIGRvdWJsZSByZWxlYXNlWm9uZTEgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJlbGVhc2Vab25l
MSk7CiAgICAgZG91YmxlIHJlbGVhc2Vab25lMiA9IHBhcmFtZXRlclZhbHVlKFBhcmFtUmVsZWFz
ZVpvbmUyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yLmgKaW5kZXggZDBjMDM2ZjI5YWVlYzQxNzZjYzU0M2NjOGMxNWQyMWI4NDE5NTBh
Zi4uMjczODU3N2JjODFiMTA5Nzg2MDY4MzNlNDMzNGM4NzkyNjA0NTkzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTg0
LDkgKzg0LDkgQEAgcHJvdGVjdGVkOgogICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CiAKICAgICAv
LyBFbXBoYXNpcyBmaWx0ZXIgY29udHJvbHMuCi0gICAgZmxvYXQgbV9sYXN0RmlsdGVyU3RhZ2VS
YXRpbzsKLSAgICBmbG9hdCBtX2xhc3RBbmNob3I7Ci0gICAgZmxvYXQgbV9sYXN0RmlsdGVyU3Rh
Z2VHYWluOworICAgIGRvdWJsZSBtX2xhc3RGaWx0ZXJTdGFnZVJhdGlvOworICAgIGRvdWJsZSBt
X2xhc3RBbmNob3I7CisgICAgZG91YmxlIG1fbGFzdEZpbHRlclN0YWdlR2FpbjsKIAogICAgIC8v
IEVtcGhhc2lzIGZpbHRlcnMuCiAgICAgWmVyb1BvbGUgbV9wcmVGaWx0ZXJbNF07CkBAIC05NCw4
ICs5NCw4IEBAIHByb3RlY3RlZDoKICAgICBaZXJvUG9sZSBtX3Bvc3RGaWx0ZXJbNF07CiAgICAg
WmVyb1BvbGUgbV9wb3N0RmlsdGVyUls0XTsKIAotICAgIHZvaWQgc2V0RW1waGFzaXNTdGFnZVBh
cmFtZXRlcnModW5zaWduZWQgc3RhZ2VJbmRleCwgZmxvYXQgZ2FpbiwgZmxvYXQgbm9ybWFsaXpl
ZEZyZXF1ZW5jeSAvKiAwIC0+IDEgKi8pOwotICAgIHZvaWQgc2V0RW1waGFzaXNQYXJhbWV0ZXJz
KGZsb2F0IGdhaW4sIGZsb2F0IGFuY2hvckZyZXEsIGZsb2F0IGZpbHRlclN0YWdlUmF0aW8pOwor
ICAgIHZvaWQgc2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnModW5zaWduZWQgc3RhZ2VJbmRleCwg
ZG91YmxlIGdhaW4sIGRvdWJsZSBub3JtYWxpemVkRnJlcXVlbmN5IC8qIDAgLT4gMSAqLyk7Cisg
ICAgdm9pZCBzZXRFbXBoYXNpc1BhcmFtZXRlcnMoZG91YmxlIGdhaW4sIGRvdWJsZSBhbmNob3JG
cmVxLCBkb3VibGUgZmlsdGVyU3RhZ2VSYXRpbyk7CiAKICAgICAvLyBUaGUgY29yZSBjb21wcmVz
c29yLgogICAgIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCBtX2NvbXByZXNzb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
S2VybmVsLmNwcAppbmRleCBhMDcyMzQ2MWJiMjFjNTNjYTcxNmZkNmZlN2I2YzU3ZDQ4N2MzYmJm
Li40MDEyY2E0ZGE2ODU2OGFlM2E3ZjRhMDBiZGY1ODE2MTk0ZWEzODU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJEeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWwuaCIKIAogI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRmxvYXRD
b252ZXJzaW9uLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAKQEAgLTY1LDEwICs2NiwxMCBAQCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OkR5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChkb3VibGUgc2FtcGxlUmF0ZSkKICAgICBtX21ldGVyaW5n
UmVsZWFzZUsgPSBkaXNjcmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJhdGUobWV0ZXJpbmdSZWxl
YXNlVGltZUNvbnN0YW50LCBzYW1wbGVSYXRlKTsKIH0KIAotdm9pZCBEeW5hbWljc0NvbXByZXNz
b3JLZXJuZWw6OnNldFByZURlbGF5VGltZShmbG9hdCBwcmVEZWxheVRpbWUpCit2b2lkIER5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0UHJlRGVsYXlUaW1lKGRvdWJsZSBwcmVEZWxheVRpbWUp
CiB7CiAgICAgLy8gUmUtY29uZmlndXJlIGxvb2stYWhlYWQgc2VjdGlvbiBwcmUtZGVsYXkgaWYg
ZGVsYXkgdGltZSBoYXMgY2hhbmdlZC4KLSAgICB1bnNpZ25lZCBwcmVEZWxheUZyYW1lcyA9IHBy
ZURlbGF5VGltZSAvIHNhbXBsZVJhdGUoKTsKKyAgICB1bnNpZ25lZCBwcmVEZWxheUZyYW1lcyA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJlRGVsYXlUaW1lIC8gc2FtcGxlUmF0ZSgpKTsKICAg
ICBpZiAocHJlRGVsYXlGcmFtZXMgPiBNYXhQcmVEZWxheUZyYW1lcyAtIDEpCiAgICAgICAgIHBy
ZURlbGF5RnJhbWVzID0gTWF4UHJlRGVsYXlGcmFtZXMgLSAxOwogICAgICAgICAKQEAgLTg3LDI1
ICs4OCwyNSBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCog
c291cmNlTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBk
ZXN0aW5hdGlvblIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBmcmFtZXNUb1Byb2Nlc3MsCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IGRiVGhyZXNob2xkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgZGJIZWFkcm9vbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IGF0dGFja1RpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCByZWxlYXNlVGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHByZURlbGF5VGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IGRiUG9zdEdhaW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCBlZmZlY3RCbGVuZCwgLyogZXF1YWwgcG93ZXIgY3Jvc3Nm
YWRlICovCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJl
bGVhc2Vab25lMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
IHJlbGVhc2Vab25lMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHJlbGVhc2Vab25lMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IHJlbGVhc2Vab25lNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIGRiVGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG91YmxlIGRiSGVhZHJvb20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb3VibGUgYXR0YWNrVGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSByZWxlYXNlVGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvdWJsZSBwcmVEZWxheVRpbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgZGJQb3N0R2FpbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBlZmZlY3RCbGVuZCwgLyogZXF1YWwgcG93ZXIgY3Jv
c3NmYWRlICovCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSByZWxlYXNlWm9uZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgcmVsZWFzZVpvbmUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIHJlbGVhc2Vab25lMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvdWJsZSByZWxlYXNlWm9uZTQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICkKIHsKICAgICBib29sIGlzU3RlcmVvID0gZGVzdGluYXRpb25SOwotICAgIGZs
b2F0IHNhbXBsZVJhdGUgPSB0aGlzLT5zYW1wbGVSYXRlKCk7CisgICAgZG91YmxlIHNhbXBsZVJh
dGUgPSB0aGlzLT5zYW1wbGVSYXRlKCk7CiAKLSAgICBmbG9hdCBkcnlNaXggPSAxIC0gZWZmZWN0
QmxlbmQ7Ci0gICAgZmxvYXQgd2V0TWl4ID0gZWZmZWN0QmxlbmQ7CisgICAgZG91YmxlIGRyeU1p
eCA9IDEgLSBlZmZlY3RCbGVuZDsKKyAgICBkb3VibGUgd2V0TWl4ID0gZWZmZWN0QmxlbmQ7CiAK
ICAgICAvLyBUaHJlc2hvbGQgYW5kIGhlYWRyb29tLgogICAgIGRvdWJsZSBsaW5lYXJUaHJlc2hv
bGQgPSBkZWNpYmVsc1RvTGluZWFyKGRiVGhyZXNob2xkKTsKQEAgLTEyMSwxNCArMTIyLDE0IEBA
IHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VMLAog
ICAgIC8vIEVtcGlyaWNhbC9wZXJjZXB0dWFsIHR1bmluZy4KICAgICBmdWxsUmFuZ2VNYWtldXBH
YWluID0gcG93KGZ1bGxSYW5nZU1ha2V1cEdhaW4sIDAuNik7CiAKLSAgICBmbG9hdCBtYXN0ZXJM
aW5lYXJHYWluID0gZGVjaWJlbHNUb0xpbmVhcihkYlBvc3RHYWluKSAqIGZ1bGxSYW5nZU1ha2V1
cEdhaW47CisgICAgZG91YmxlIG1hc3RlckxpbmVhckdhaW4gPSBkZWNpYmVsc1RvTGluZWFyKGRi
UG9zdEdhaW4pICogZnVsbFJhbmdlTWFrZXVwR2FpbjsKIAogICAgIC8vIEF0dGFjayBwYXJhbWV0
ZXJzLgotICAgIGF0dGFja1RpbWUgPSBtYXgoMC4wMDFmLCBhdHRhY2tUaW1lKTsKLSAgICBmbG9h
dCBhdHRhY2tGcmFtZXMgPSBhdHRhY2tUaW1lICogc2FtcGxlUmF0ZTsKKyAgICBhdHRhY2tUaW1l
ID0gbWF4KDAuMDAxLCBhdHRhY2tUaW1lKTsKKyAgICBkb3VibGUgYXR0YWNrRnJhbWVzID0gYXR0
YWNrVGltZSAqIHNhbXBsZVJhdGU7CiAKICAgICAvLyBSZWxlYXNlIHBhcmFtZXRlcnMuCi0gICAg
ZmxvYXQgcmVsZWFzZUZyYW1lcyA9IHNhbXBsZVJhdGUgKiByZWxlYXNlVGltZTsKKyAgICBkb3Vi
bGUgcmVsZWFzZUZyYW1lcyA9IHNhbXBsZVJhdGUgKiByZWxlYXNlVGltZTsKICAgICAKICAgICAv
LyBEZXRlY3RvciByZWxlYXNlIHRpbWUuCiAgICAgZG91YmxlIHNhdFJlbGVhc2VUaW1lID0gMC4w
MDI1OwpAQCAtMTc0LDcgKzE3NSw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpw
cm9jZXNzKGZsb2F0KiBzb3VyY2VMLAogICAgICAgICBpZiAoaXNpbmYobV9kZXRlY3RvckF2ZXJh
Z2UpKQogICAgICAgICAgICAgbV9kZXRlY3RvckF2ZXJhZ2UgPSAxOwogCi0gICAgICAgIGZsb2F0
IGRlc2lyZWRHYWluID0gbV9kZXRlY3RvckF2ZXJhZ2U7CisgICAgICAgIGRvdWJsZSBkZXNpcmVk
R2FpbiA9IG1fZGV0ZWN0b3JBdmVyYWdlOwogCiAgICAgICAgIC8vIFByZS13YXJwIHNvIHdlIGdl
dCBkZXNpcmVkR2FpbiBhZnRlciBzaW4oKSB3YXJwIGJlbG93LgogICAgICAgICBkb3VibGUgc2Nh
bGVkRGVzaXJlZEdhaW4gPSBhc2luKGRlc2lyZWRHYWluKSAvICgwLjUgKiBwaURvdWJsZSk7CkBA
IC0xODUsNyArMTg2LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3Mo
ZmxvYXQqIHNvdXJjZUwsCiAKICAgICAgICAgLy8gZW52ZWxvcGVSYXRlIGlzIHRoZSByYXRlIHdl
IHNsZXcgZnJvbSBjdXJyZW50IGNvbXByZXNzb3IgbGV2ZWwgdG8gdGhlIGRlc2lyZWQgbGV2ZWwu
CiAgICAgICAgIC8vIFRoZSBleGFjdCByYXRlIGRlcGVuZHMgb24gaWYgd2UncmUgYXR0YWNraW5n
IG9yIHJlbGVhc2luZyBhbmQgYnkgaG93IG11Y2guCi0gICAgICAgIGZsb2F0IGVudmVsb3BlUmF0
ZTsKKyAgICAgICAgZG91YmxlIGVudmVsb3BlUmF0ZTsKIAogICAgICAgICBib29sIGlzUmVsZWFz
aW5nID0gc2NhbGVkRGVzaXJlZEdhaW4gPiBtX2NvbXByZXNzb3JHYWluOwogCkBAIC0yMzUsNyAr
MjM2LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNv
dXJjZUwsCiAgICAgICAgICAgICBpZiAobV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYiA9PSAt
MSB8fCBtX21heEF0dGFja0NvbXByZXNzaW9uRGlmZkRiIDwgY29tcHJlc3Npb25EaWZmRGIpCiAg
ICAgICAgICAgICAgICAgbV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYiA9IGNvbXByZXNzaW9u
RGlmZkRiOwogCi0gICAgICAgICAgICBkb3VibGUgZWZmQXR0ZW5EaWZmRGIgPSBtYXgoMC41Ziwg
bV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYik7CisgICAgICAgICAgICBkb3VibGUgZWZmQXR0
ZW5EaWZmRGIgPSBtYXgoMC41LCBtX21heEF0dGFja0NvbXByZXNzaW9uRGlmZkRiKTsKIAogICAg
ICAgICAgICAgZG91YmxlIHggPSAwLjI1IC8gZWZmQXR0ZW5EaWZmRGI7CiAgICAgICAgICAgICBl
bnZlbG9wZVJhdGUgPSAxIC0gcG93KHgsIGRvdWJsZSgxIC8gYXR0YWNrRnJhbWVzKSk7CkBAIC0y
NDYsMjMgKzI0NywyMyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2Vzcyhm
bG9hdCogc291cmNlTCwKICAgICAgICAgLy8gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+CiAKICAgICAgICAgewotICAgICAgICAgICAgZmxvYXQqIGRlbGF5QnVmZmVyTCA9IG1fcHJl
RGVsYXlCdWZmZXJMLmRhdGEoKTsKLSAgICAgICAgICAgIGZsb2F0KiBkZWxheUJ1ZmZlclIgPSBt
X3ByZURlbGF5QnVmZmVyUi5kYXRhKCk7CisgICAgICAgICAgICBkb3VibGUqIGRlbGF5QnVmZmVy
TCA9IG1fcHJlRGVsYXlCdWZmZXJMLmRhdGEoKTsKKyAgICAgICAgICAgIGRvdWJsZSogZGVsYXlC
dWZmZXJSID0gbV9wcmVEZWxheUJ1ZmZlclIuZGF0YSgpOwogICAgICAgICAgICAgaW50IHByZURl
bGF5UmVhZEluZGV4ID0gbV9wcmVEZWxheVJlYWRJbmRleDsKICAgICAgICAgICAgIGludCBwcmVE
ZWxheVdyaXRlSW5kZXggPSBtX3ByZURlbGF5V3JpdGVJbmRleDsKLSAgICAgICAgICAgIGZsb2F0
IGRldGVjdG9yQXZlcmFnZSA9IG1fZGV0ZWN0b3JBdmVyYWdlOwotICAgICAgICAgICAgZmxvYXQg
Y29tcHJlc3NvckdhaW4gPSBtX2NvbXByZXNzb3JHYWluOworICAgICAgICAgICAgZG91YmxlIGRl
dGVjdG9yQXZlcmFnZSA9IG1fZGV0ZWN0b3JBdmVyYWdlOworICAgICAgICAgICAgZG91YmxlIGNv
bXByZXNzb3JHYWluID0gbV9jb21wcmVzc29yR2FpbjsKIAogICAgICAgICAgICAgaW50IGxvb3BG
cmFtZXMgPSBuRGl2aXNpb25GcmFtZXM7CiAgICAgICAgICAgICB3aGlsZSAobG9vcEZyYW1lcy0t
KSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgY29tcHJlc3NvcklucHV0OwotICAgICAgICAgICAg
ICAgIGZsb2F0IGlucHV0TDsKLSAgICAgICAgICAgICAgICBmbG9hdCBpbnB1dFIgPSAwOworICAg
ICAgICAgICAgICAgIGRvdWJsZSBjb21wcmVzc29ySW5wdXQ7CisgICAgICAgICAgICAgICAgZG91
YmxlIGlucHV0TDsKKyAgICAgICAgICAgICAgICBkb3VibGUgaW5wdXRSID0gMDsKIAogICAgICAg
ICAgICAgICAgIC8vIFByZWRlbGF5IHNpZ25hbCwgY29tcHV0aW5nIGNvbXByZXNzaW9uIGFtb3Vu
dCBmcm9tIHVuLWRlbGF5ZWQgdmVyc2lvbi4KICAgICAgICAgICAgICAgICBpZiAoaXNTdGVyZW8p
IHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgdW5kZWxheWVkTCA9ICpzb3VyY2VMKys7Ci0g
ICAgICAgICAgICAgICAgICAgIGZsb2F0IHVuZGVsYXllZFIgPSAqc291cmNlUisrOworICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgdW5kZWxheWVkTCA9ICpzb3VyY2VMKys7CisgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSB1bmRlbGF5ZWRSID0gKnNvdXJjZVIrKzsKIAogICAgICAgICAgICAg
ICAgICAgICBjb21wcmVzc29ySW5wdXQgPSAwLjUgKiAodW5kZWxheWVkTCArIHVuZGVsYXllZFIp
OwogCkBAIC0yODMsNyArMjg0LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnBy
b2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAKICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgc2hh
cGVkIHBvd2VyIG9uIHVuZGVsYXllZCBpbnB1dC4KIAotICAgICAgICAgICAgICAgIGZsb2F0IHNj
YWxlZElucHV0ID0gY29tcHJlc3NvcklucHV0OworICAgICAgICAgICAgICAgIGRvdWJsZSBzY2Fs
ZWRJbnB1dCA9IGNvbXByZXNzb3JJbnB1dDsKICAgICAgICAgICAgICAgICBkb3VibGUgYWJzSW5w
dXQgPSBzY2FsZWRJbnB1dCA+IDAgPyBzY2FsZWRJbnB1dCA6IC1zY2FsZWRJbnB1dDsKIAogICAg
ICAgICAgICAgICAgIC8vIFB1dCB0aHJvdWdoIHNoYXBpbmcgY3VydmUuCkBAIC0zMDQsNyArMzA1
LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJj
ZUwsCiAgICAgICAgICAgICAgICAgZG91YmxlIHJhdGUgPSBpc1JlbGVhc2UgPyBzYXRSZWxlYXNl
UmF0ZSA6IDE7CiAKICAgICAgICAgICAgICAgICBkZXRlY3RvckF2ZXJhZ2UgKz0gKGF0dGVudWF0
aW9uIC0gZGV0ZWN0b3JBdmVyYWdlKSAqIHJhdGU7Ci0gICAgICAgICAgICAgICAgZGV0ZWN0b3JB
dmVyYWdlID0gbWluKDEuMGYsIGRldGVjdG9yQXZlcmFnZSk7CisgICAgICAgICAgICAgICAgZGV0
ZWN0b3JBdmVyYWdlID0gbWluKDEuMCwgZGV0ZWN0b3JBdmVyYWdlKTsKIAogICAgICAgICAgICAg
ICAgIC8vIEZpeCBncmVtbGlucy4KICAgICAgICAgICAgICAgICBpZiAoaXNuYW4oZGV0ZWN0b3JB
dmVyYWdlKSkKQEAgLTMxOSw3ICszMjAsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5l
bDo6cHJvY2VzcyhmbG9hdCogc291cmNlTCwKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAvLyBSZWxlYXNlIC0gZXhwb25lbnRpYWxseSBpbmNyZWFzZSBnYWlu
IHRvIDEuMAogICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29yR2FpbiAqPSBlbnZlbG9wZVJh
dGU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzb3JHYWluID0gbWluKDEuMGYsIGNvbXBy
ZXNzb3JHYWluKTsKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NvckdhaW4gPSBtaW4oMS4w
LCBjb21wcmVzc29yR2Fpbik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
Ly8gV2FycCBwcmUtY29tcHJlc3Npb24gZ2FpbiB0byBzbW9vdGggb3V0IHNoYXJwIGV4cG9uZW50
aWFsIHRyYW5zaXRpb24gcG9pbnRzLgpAQCAtMzM3LDE2ICszMzgsMTYgQEAgdm9pZCBEeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAKICAgICAgICAgICAg
ICAgICAvLyBBcHBseSBmaW5hbCBnYWluLgogICAgICAgICAgICAgICAgIGlmIChpc1N0ZXJlbykg
ewotICAgICAgICAgICAgICAgICAgICBmbG9hdCBvdXRwdXRMID0gaW5wdXRMOwotICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBvdXRwdXRSID0gaW5wdXRSOworICAgICAgICAgICAgICAgICAgICBk
b3VibGUgb3V0cHV0TCA9IGlucHV0TDsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIG91dHB1
dFIgPSBpbnB1dFI7CiAKICAgICAgICAgICAgICAgICAgICAgb3V0cHV0TCAqPSB0b3RhbEdhaW47
CiAgICAgICAgICAgICAgICAgICAgIG91dHB1dFIgKj0gdG90YWxHYWluOwogCi0gICAgICAgICAg
ICAgICAgICAgICpkZXN0aW5hdGlvbkwrKyA9IG91dHB1dEw7Ci0gICAgICAgICAgICAgICAgICAg
ICpkZXN0aW5hdGlvblIrKyA9IG91dHB1dFI7CisgICAgICAgICAgICAgICAgICAgICpkZXN0aW5h
dGlvbkwrKyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQob3V0cHV0TCk7CisgICAgICAgICAgICAg
ICAgICAgICpkZXN0aW5hdGlvblIrKyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQob3V0cHV0Uik7
CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICpkZXN0aW5hdGlv
bkwrKyA9IGlucHV0TCAqIHRvdGFsR2FpbjsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3RpbmF0
aW9uTCsrID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChpbnB1dEwgKiB0b3RhbEdhaW4pOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBMb2NhbHMgYmFjayB0byBtZW1iZXIgdmFyaWFi
bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuaAppbmRleCBhNmU3MGQzNTBmMTIwMjdkMDc4MDZlODExOWMxZjMy
YTM1YmY2NTFiLi45ZWU4MWEzZGUyODE2ZDRlZjkyYTUxYzhkNDc3ZjE0ZjM2NjQzZGNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwuaApAQCAtNDQsNDkgKzQ0LDQ5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICAgZmxvYXQgKmRlc3RpbmF0aW9uUiwKICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZnJhbWVz
VG9Qcm9jZXNzLAogCi0gICAgICAgICAgICAgICAgIGZsb2F0IGRiVGhyZXNob2xkLAotICAgICAg
ICAgICAgICAgICBmbG9hdCBkYkhlYWRyb29tLAotICAgICAgICAgICAgICAgICBmbG9hdCBhdHRh
Y2tUaW1lLAotICAgICAgICAgICAgICAgICBmbG9hdCByZWxlYXNlVGltZSwKLSAgICAgICAgICAg
ICAgICAgZmxvYXQgcHJlRGVsYXlUaW1lLAotICAgICAgICAgICAgICAgICBmbG9hdCBkYlBvc3RH
YWluLAotICAgICAgICAgICAgICAgICBmbG9hdCBlZmZlY3RCbGVuZCwKLQotICAgICAgICAgICAg
ICAgICBmbG9hdCByZWxlYXNlWm9uZTEsCi0gICAgICAgICAgICAgICAgIGZsb2F0IHJlbGVhc2Va
b25lMiwKLSAgICAgICAgICAgICAgICAgZmxvYXQgcmVsZWFzZVpvbmUzLAotICAgICAgICAgICAg
ICAgICBmbG9hdCByZWxlYXNlWm9uZTQKKyAgICAgICAgICAgICAgICAgZG91YmxlIGRiVGhyZXNo
b2xkLAorICAgICAgICAgICAgICAgICBkb3VibGUgZGJIZWFkcm9vbSwKKyAgICAgICAgICAgICAg
ICAgZG91YmxlIGF0dGFja1RpbWUsCisgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxlYXNlVGlt
ZSwKKyAgICAgICAgICAgICAgICAgZG91YmxlIHByZURlbGF5VGltZSwKKyAgICAgICAgICAgICAg
ICAgZG91YmxlIGRiUG9zdEdhaW4sCisgICAgICAgICAgICAgICAgIGRvdWJsZSBlZmZlY3RCbGVu
ZCwKKworICAgICAgICAgICAgICAgICBkb3VibGUgcmVsZWFzZVpvbmUxLAorICAgICAgICAgICAg
ICAgICBkb3VibGUgcmVsZWFzZVpvbmUyLAorICAgICAgICAgICAgICAgICBkb3VibGUgcmVsZWFz
ZVpvbmUzLAorICAgICAgICAgICAgICAgICBkb3VibGUgcmVsZWFzZVpvbmU0CiAgICAgICAgICAg
ICAgICAgICk7CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICB1bnNpZ25lZCBsYXRlbmN5RnJh
bWVzKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UHJlRGVsYXlGcmFtZXM7IH0KIAotICAgIGZsb2F0
IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBkb3VibGUg
c2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgZmxvYXQgbV9zYW1wbGVSYXRlOworICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CiAgICAg
Ci0gICAgZmxvYXQgbV9kZXRlY3RvckF2ZXJhZ2U7Ci0gICAgZmxvYXQgbV9jb21wcmVzc29yR2Fp
bjsKKyAgICBkb3VibGUgbV9kZXRlY3RvckF2ZXJhZ2U7CisgICAgZG91YmxlIG1fY29tcHJlc3Nv
ckdhaW47CiAKICAgICAvLyBNZXRlcmluZwotICAgIGZsb2F0IG1fbWV0ZXJpbmdSZWxlYXNlSzsK
LSAgICBmbG9hdCBtX21ldGVyaW5nR2FpbjsKKyAgICBkb3VibGUgbV9tZXRlcmluZ1JlbGVhc2VL
OworICAgIGRvdWJsZSBtX21ldGVyaW5nR2FpbjsKIAogICAgIC8vIExvb2thaGVhZCBzZWN0aW9u
LgogICAgIGVudW0geyBNYXhQcmVEZWxheUZyYW1lcyA9IDEwMjQgfTsKICAgICBlbnVtIHsgTWF4
UHJlRGVsYXlGcmFtZXNNYXNrID0gTWF4UHJlRGVsYXlGcmFtZXMgLSAxIH07CiAgICAgZW51bSB7
IERlZmF1bHRQcmVEZWxheUZyYW1lcyA9IDI1NiB9OyAvLyBzZXRQcmVEZWxheVRpbWUoKSB3aWxs
IG92ZXJyaWRlIHRoaXMgaW5pdGlhbCB2YWx1ZQogICAgIHVuc2lnbmVkIG1fbGFzdFByZURlbGF5
RnJhbWVzOwotICAgIHZvaWQgc2V0UHJlRGVsYXlUaW1lKGZsb2F0KTsKKyAgICB2b2lkIHNldFBy
ZURlbGF5VGltZShkb3VibGUpOwogCi0gICAgQXVkaW9GbG9hdEFycmF5IG1fcHJlRGVsYXlCdWZm
ZXJMOwotICAgIEF1ZGlvRmxvYXRBcnJheSBtX3ByZURlbGF5QnVmZmVyUjsKKyAgICBBdWRpb0Rv
dWJsZUFycmF5IG1fcHJlRGVsYXlCdWZmZXJMOworICAgIEF1ZGlvRG91YmxlQXJyYXkgbV9wcmVE
ZWxheUJ1ZmZlclI7CiAgICAgaW50IG1fcHJlRGVsYXlSZWFkSW5kZXg7CiAgICAgaW50IG1fcHJl
RGVsYXlXcml0ZUluZGV4OwogCi0gICAgZmxvYXQgbV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZE
YjsKKyAgICBkb3VibGUgbV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1plcm9Qb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xl
LmNwcAppbmRleCA5ZDk5YTRkOTIwYmY3YjJkODg2NTY3ZDk2NTg2MjZjZmUyMmViMTJmLi4wNzVi
ZWI4ZjhjZmIxZDQ3NTJhZGU5NWQzNzM1NTUyMWIyNTQxYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuY3BwCkBAIC0zMiwzMyArMzIsMzUgQEAKIAogI2luY2x1
ZGUgIlplcm9Qb2xlLmgiCiAKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIFplcm9Qb2xlOjpwcm9jZXNzKGZsb2F0ICpzb3VyY2UsIGZs
b2F0ICpkZXN0aW5hdGlvbiwgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzKQogewotICAgIGZsb2F0
IHplcm8gPSBtX3plcm87Ci0gICAgZmxvYXQgcG9sZSA9IG1fcG9sZTsKKyAgICBkb3VibGUgemVy
byA9IG1femVybzsKKyAgICBkb3VibGUgcG9sZSA9IG1fcG9sZTsKIAogICAgIC8vIEdhaW4gY29t
cGVuc2F0aW9uIHRvIG1ha2UgMGRCIEAgMEh6Ci0gICAgY29uc3QgZmxvYXQgazEgPSAxIC8gKDEg
LSB6ZXJvKTsKLSAgICBjb25zdCBmbG9hdCBrMiA9IDEgLSBwb2xlOworICAgIGNvbnN0IGRvdWJs
ZSBrMSA9IDEgLyAoMSAtIHplcm8pOworICAgIGNvbnN0IGRvdWJsZSBrMiA9IDEgLSBwb2xlOwog
ICAgIAogICAgIC8vIE1lbWJlciB2YXJpYWJsZXMgdG8gbG9jYWxzLgotICAgIGZsb2F0IGxhc3RY
ID0gbV9sYXN0WDsKLSAgICBmbG9hdCBsYXN0WSA9IG1fbGFzdFk7CisgICAgZG91YmxlIGxhc3RY
ID0gbV9sYXN0WDsKKyAgICBkb3VibGUgbGFzdFkgPSBtX2xhc3RZOwogCiAgICAgd2hpbGUgKGZy
YW1lc1RvUHJvY2Vzcy0tKSB7CiAgICAgICAgIGZsb2F0IGlucHV0ID0gKnNvdXJjZSsrOwogCiAg
ICAgICAgIC8vIFplcm8KLSAgICAgICAgZmxvYXQgb3V0cHV0MSA9IGsxICogKGlucHV0IC0gemVy
byAqIGxhc3RYKTsKKyAgICAgICAgZG91YmxlIG91dHB1dDEgPSBrMSAqIChpbnB1dCAtIHplcm8g
KiBsYXN0WCk7CiAgICAgICAgIGxhc3RYID0gaW5wdXQ7CiAKICAgICAgICAgLy8gUG9sZQotICAg
ICAgICBmbG9hdCBvdXRwdXQyID0gazIgKiBvdXRwdXQxICsgcG9sZSAqIGxhc3RZOworICAgICAg
ICBkb3VibGUgb3V0cHV0MiA9IGsyICogb3V0cHV0MSArIHBvbGUgKiBsYXN0WTsKICAgICAgICAg
bGFzdFkgPSBvdXRwdXQyOwogCi0gICAgICAgICpkZXN0aW5hdGlvbisrID0gb3V0cHV0MjsKKyAg
ICAgICAgKmRlc3RpbmF0aW9uKysgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG91dHB1dDIpOwog
ICAgIH0KICAgICAKICAgICAvLyBMb2NhbHMgdG8gbWVtYmVyIHZhcmlhYmxlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCmluZGV4IDkzZmQwZDZmOTc1MzdhNWYyYTA3
NmJhNGY5ZjY2MjI4YTcyMzliYTMuLjhlNmZkYjM2YTcyZDlhMDBkODc5NzIzMzVhY2EyNTU4ZWQ0
NjdiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaApAQCAtNDgs
MTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICAvLyBSZXNldCBmaWx0ZXIgc3RhdGUuCiAgICAgdm9p
ZCByZXNldCgpIHsgbV9sYXN0WCA9IDA7IG1fbGFzdFkgPSAwOyB9CiAgICAgCi0gICAgdm9pZCBz
ZXRaZXJvKGZsb2F0IHplcm8pIHsgbV96ZXJvID0gemVybzsgfQotICAgIHZvaWQgc2V0UG9sZShm
bG9hdCBwb2xlKSB7IG1fcG9sZSA9IHBvbGU7IH0KKyAgICB2b2lkIHNldFplcm8oZG91YmxlIHpl
cm8pIHsgbV96ZXJvID0gemVybzsgfQorICAgIHZvaWQgc2V0UG9sZShkb3VibGUgcG9sZSkgeyBt
X3BvbGUgPSBwb2xlOyB9CiAgICAgCi0gICAgZmxvYXQgemVybygpIGNvbnN0IHsgcmV0dXJuIG1f
emVybzsgfQotICAgIGZsb2F0IHBvbGUoKSBjb25zdCB7IHJldHVybiBtX3BvbGU7IH0KKyAgICBk
b3VibGUgemVybygpIGNvbnN0IHsgcmV0dXJuIG1femVybzsgfQorICAgIGRvdWJsZSBwb2xlKCkg
Y29uc3QgeyByZXR1cm4gbV9wb2xlOyB9CiAKIHByaXZhdGU6Ci0gICAgZmxvYXQgbV96ZXJvOwot
ICAgIGZsb2F0IG1fcG9sZTsKLSAgICBmbG9hdCBtX2xhc3RYOwotICAgIGZsb2F0IG1fbGFzdFk7
CisgICAgZG91YmxlIG1femVybzsKKyAgICBkb3VibGUgbV9wb2xlOworICAgIGRvdWJsZSBtX2xh
c3RYOworICAgIGRvdWJsZSBtX2xhc3RZOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNE
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5jcHAK
aW5kZXggZWQxODE2YmRkN2E4YzYyMjQxMDk1ZDQ4MzVhZTliOTExMGY2NmI2ZC4uY2NlMDBjODI0
OTg3ZGE0ZDJkODU2MWI1NWNiNWI5MWM1YzM4MGQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuY3BwCkBAIC0yMywyMCArMjMsMyBAQAog
CiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAKLSNpbmNsdWRlIDxtYXRoLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotdm9pZCBGbG9hdFBvaW50M0Q6Om5vcm1hbGl6ZSgpCi17Ci0gICAg
ZmxvYXQgdGVtcExlbmd0aCA9IGxlbmd0aCgpOwotCi0gICAgaWYgKHRlbXBMZW5ndGgpIHsKLSAg
ICAgICAgbV94IC89IHRlbXBMZW5ndGg7Ci0gICAgICAgIG1feSAvPSB0ZW1wTGVuZ3RoOwotICAg
ICAgICBtX3ogLz0gdGVtcExlbmd0aDsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQ
b2ludDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0Qu
aAppbmRleCBiYTBlZTlkOTQ3MWRmNWU5NzY2YTUwMzIyYjVmNWM0Y2I0MDhjOGVjLi4yNWNiNTYz
ODI0NzI3NTU1NTY2ZGVlMTJjYzE4ODQ0NzczZWZkZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaApAQCAtMjcsNTcgKzI3LDU4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRmxvYXRQb2ludDNEIHsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorY2xhc3MgRmxvYXRQb2ludDNEQmFzZSB7CiBwdWJsaWM6Ci0gICAgRmxvYXRQ
b2ludDNEKCkKKyAgICBGbG9hdFBvaW50M0RCYXNlKCkKICAgICAgICAgOiBtX3goMCkKICAgICAg
ICAgLCBtX3koMCkKICAgICAgICAgLCBtX3ooMCkKICAgICB7CiAgICAgfQogCi0gICAgRmxvYXRQ
b2ludDNEKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCisgICAgRmxvYXRQb2ludDNEQmFzZShU
IHgsIFQgeSwgVCB6KQogICAgICAgICA6IG1feCh4KQogICAgICAgICAsIG1feSh5KQogICAgICAg
ICAsIG1feih6KQogICAgIHsKICAgICB9CiAKLSAgICBGbG9hdFBvaW50M0QoY29uc3QgRmxvYXRQ
b2ludCYgcCkKKyAgICBGbG9hdFBvaW50M0RCYXNlKGNvbnN0IEZsb2F0UG9pbnQmIHApCiAgICAg
ICAgIDogbV94KHAueCgpKQogICAgICAgICAsIG1feShwLnkoKSkKICAgICAgICAgLCBtX3ooMCkK
ICAgICB7CiAgICAgfQogCi0gICAgRmxvYXRQb2ludDNEKGNvbnN0IEZsb2F0UG9pbnQzRCYgcCkK
KyAgICBGbG9hdFBvaW50M0RCYXNlKGNvbnN0IEZsb2F0UG9pbnQzREJhc2UmIHApCiAgICAgICAg
IDogbV94KHAueCgpKQogICAgICAgICAsIG1feShwLnkoKSkKICAgICAgICAgLCBtX3oocC56KCkp
CiAgICAgewogICAgIH0KIAotICAgIGZsb2F0IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KLSAg
ICB2b2lkIHNldFgoZmxvYXQgeCkgeyBtX3ggPSB4OyB9CisgICAgVCB4KCkgY29uc3QgeyByZXR1
cm4gbV94OyB9CisgICAgdm9pZCBzZXRYKFQgeCkgeyBtX3ggPSB4OyB9CiAKLSAgICBmbG9hdCB5
KCkgY29uc3QgeyByZXR1cm4gbV95OyB9Ci0gICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsgbV95ID0g
eTsgfQorICAgIFQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQorICAgIHZvaWQgc2V0WShUIHkp
IHsgbV95ID0geTsgfQogCi0gICAgZmxvYXQgeigpIGNvbnN0IHsgcmV0dXJuIG1fejsgfQotICAg
IHZvaWQgc2V0WihmbG9hdCB6KSB7IG1feiA9IHo7IH0KLSAgICB2b2lkIHNldChmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB6KQorICAgIFQgeigpIGNvbnN0IHsgcmV0dXJuIG1fejsgfQorICAgIHZv
aWQgc2V0WihUIHopIHsgbV96ID0gejsgfQorICAgIHZvaWQgc2V0KFQgeCwgVCB5LCBUIHopCiAg
ICAgewogICAgICAgICBtX3ggPSB4OwogICAgICAgICBtX3kgPSB5OwogICAgICAgICBtX3ogPSB6
OwogICAgIH0KLSAgICB2b2lkIG1vdmUoZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkeikKKyAg
ICB2b2lkIG1vdmUoVCBkeCwgVCBkeSwgVCBkeikKICAgICB7CiAgICAgICAgIG1feCArPSBkeDsK
ICAgICAgICAgbV95ICs9IGR5OwogICAgICAgICBtX3ogKz0gZHo7CiAgICAgfQotICAgIHZvaWQg
c2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzeikKKyAgICB2b2lkIHNjYWxlKFQgc3gs
IFQgc3ksIFQgc3opCiAgICAgewogICAgICAgICBtX3ggKj0gc3g7CiAgICAgICAgIG1feSAqPSBz
eTsKQEAgLTkxLDE5ICs5MiwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG5vcm1hbGl6ZSgpOwog
Ci0gICAgZmxvYXQgZG90KGNvbnN0IEZsb2F0UG9pbnQzRCYgYSkgY29uc3QKKyAgICBUIGRvdChj
b25zdCBGbG9hdFBvaW50M0RCYXNlJiBhKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
eCAqIGEueCgpICsgbV95ICogYS55KCkgKyBtX3ogKiBhLnooKTsKICAgICB9CiAKLSAgICAvLyBT
ZXRzIHRoaXMgRmxvYXRQb2ludDNEIHRvIHRoZSBjcm9zcyBwcm9kdWN0IG9mIHRoZSBwYXNzZWQg
dHdvLgorICAgIC8vIFNldHMgdGhpcyBGbG9hdFBvaW50M0RCYXNlIHRvIHRoZSBjcm9zcyBwcm9k
dWN0IG9mIHRoZSBwYXNzZWQgdHdvLgogICAgIC8vIEl0IGlzIHNhZmUgZm9yICJ0aGlzIiB0byBi
ZSB0aGUgc2FtZSBhcyBlaXRoZXIgb3IgYm90aCBvZiB0aGUKICAgICAvLyBhcmd1bWVudHMuCi0g
ICAgdm9pZCBjcm9zcyhjb25zdCBGbG9hdFBvaW50M0QmIGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYg
YikKKyAgICB2b2lkIGNyb3NzKGNvbnN0IEZsb2F0UG9pbnQzREJhc2UmIGEsIGNvbnN0IEZsb2F0
UG9pbnQzREJhc2UmIGIpCiAgICAgewotICAgICAgICBmbG9hdCB4ID0gYS55KCkgKiBiLnooKSAt
IGEueigpICogYi55KCk7Ci0gICAgICAgIGZsb2F0IHkgPSBhLnooKSAqIGIueCgpIC0gYS54KCkg
KiBiLnooKTsKLSAgICAgICAgZmxvYXQgeiA9IGEueCgpICogYi55KCkgLSBhLnkoKSAqIGIueCgp
OworICAgICAgICBUIHggPSBhLnkoKSAqIGIueigpIC0gYS56KCkgKiBiLnkoKTsKKyAgICAgICAg
VCB5ID0gYS56KCkgKiBiLngoKSAtIGEueCgpICogYi56KCk7CisgICAgICAgIFQgeiA9IGEueCgp
ICogYi55KCkgLSBhLnkoKSAqIGIueCgpOwogICAgICAgICBtX3ggPSB4OwogICAgICAgICBtX3kg
PSB5OwogICAgICAgICBtX3ogPSB6OwpAQCAtMTExLDc3ICsxMTIsMTE0IEBAIHB1YmxpYzoKIAog
ICAgIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIHJldHVybmluZyAidGhpcyBjcm9zcyBwb2ludCIg
YXMgYQogICAgIC8vIHN0YWNrLWFsbG9jYXRlZCByZXN1bHQuCi0gICAgRmxvYXRQb2ludDNEIGNy
b3NzKGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9pbnQpIGNvbnN0CisgICAgRmxvYXRQb2ludDNEQmFz
ZSBjcm9zcyhjb25zdCBGbG9hdFBvaW50M0RCYXNlJiBwb2ludCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIEZsb2F0UG9pbnQzRCByZXN1bHQ7CisgICAgICAgIEZsb2F0UG9pbnQzREJhc2UgcmVzdWx0
OwogICAgICAgICByZXN1bHQuY3Jvc3MoKnRoaXMsIHBvaW50KTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBmbG9hdCBsZW5ndGhTcXVhcmVkKCkgY29uc3QgeyByZXR1cm4g
dGhpcy0+ZG90KCp0aGlzKTsgfQotICAgIGZsb2F0IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHNx
cnRmKGxlbmd0aFNxdWFyZWQoKSk7IH0KKyAgICBUIGxlbmd0aFNxdWFyZWQoKSBjb25zdCB7IHJl
dHVybiB0aGlzLT5kb3QoKnRoaXMpOyB9CisgICAgVCBsZW5ndGgoKSBjb25zdDsKICAgICAKLSAg
ICBmbG9hdCBkaXN0YW5jZVRvKGNvbnN0IEZsb2F0UG9pbnQzRCYgYSkgY29uc3Q7CisgICAgVCBk
aXN0YW5jZVRvKGNvbnN0IEZsb2F0UG9pbnQzREJhc2UmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBmbG9hdCBtX3g7Ci0gICAgZmxvYXQgbV95OwotICAgIGZsb2F0IG1fejsKKyAgICBUIG1feDsK
KyAgICBUIG1feTsKKyAgICBUIG1fejsKIH07CiAKLWlubGluZSBGbG9hdFBvaW50M0QmIG9wZXJh
dG9yICs9KEZsb2F0UG9pbnQzRCYgYSwgY29uc3QgRmxvYXRQb2ludDNEJiBiKQordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitpbmxpbmUgRmxvYXRQb2ludDNEQmFzZTxUPiYgb3BlcmF0b3IgKz0oRmxv
YXRQb2ludDNEQmFzZTxUPiYgYSwgY29uc3QgRmxvYXRQb2ludDNEQmFzZTxUPiYgYikKIHsKICAg
ICBhLm1vdmUoYi54KCksIGIueSgpLCBiLnooKSk7CiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGlu
ZSBGbG9hdFBvaW50M0QmIG9wZXJhdG9yIC09KEZsb2F0UG9pbnQzRCYgYSwgY29uc3QgRmxvYXRQ
b2ludDNEJiBiKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgRmxvYXRQb2ludDNEQmFz
ZTxUPiYgb3BlcmF0b3IgLT0oRmxvYXRQb2ludDNEQmFzZTxUPiYgYSwgY29uc3QgRmxvYXRQb2lu
dDNEQmFzZTxUPiYgYikKIHsKICAgICBhLm1vdmUoLWIueCgpLCAtYi55KCksIC1iLnooKSk7CiAg
ICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBGbG9hdFBvaW50M0Qgb3BlcmF0b3IrKGNvbnN0IEZs
b2F0UG9pbnQzRCYgYSwgY29uc3QgRmxvYXRQb2ludDNEJiBiKQordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitpbmxpbmUgRmxvYXRQb2ludDNEQmFzZTxUPiBvcGVyYXRvcisoY29uc3QgRmxvYXRQb2lu
dDNEQmFzZTxUPiYgYSwgY29uc3QgRmxvYXRQb2ludDNEQmFzZTxUPiYgYikKIHsKLSAgICByZXR1
cm4gRmxvYXRQb2ludDNEKGEueCgpICsgYi54KCksIGEueSgpICsgYi55KCksIGEueigpICsgYi56
KCkpOworICAgIHJldHVybiBGbG9hdFBvaW50M0RCYXNlPFQ+KGEueCgpICsgYi54KCksIGEueSgp
ICsgYi55KCksIGEueigpICsgYi56KCkpOwogfQogCi1pbmxpbmUgRmxvYXRQb2ludDNEIG9wZXJh
dG9yLShjb25zdCBGbG9hdFBvaW50M0QmIGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYgYikKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIEZsb2F0UG9pbnQzREJhc2U8VD4gb3BlcmF0b3ItKGNv
bnN0IEZsb2F0UG9pbnQzREJhc2U8VD4mIGEsIGNvbnN0IEZsb2F0UG9pbnQzREJhc2U8VD4mIGIp
CiB7Ci0gICAgcmV0dXJuIEZsb2F0UG9pbnQzRChhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgp
LCBhLnooKSAtIGIueigpKTsKKyAgICByZXR1cm4gRmxvYXRQb2ludDNEQmFzZTxUPihhLngoKSAt
IGIueCgpLCBhLnkoKSAtIGIueSgpLCBhLnooKSAtIGIueigpKTsKIH0KIAotaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGbG9hdFBvaW50M0QmIGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYgYikK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9h
dFBvaW50M0RCYXNlPFQ+JiBhLCBjb25zdCBGbG9hdFBvaW50M0RCYXNlPFQ+JiBiKQogewogICAg
IHJldHVybiBhLngoKSA9PSBiLngoKSAmJiBhLnkoKSA9PSBiLnkoKSAmJiBhLnooKSA9PSBiLnoo
KTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGbG9hdFBvaW50M0QmIGEsIGNv
bnN0IEZsb2F0UG9pbnQzRCYgYikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBGbG9hdFBvaW50M0RCYXNlPFQ+JiBhLCBjb25zdCBGbG9hdFBvaW50
M0RCYXNlPFQ+JiBiKQogewogICAgIHJldHVybiBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBi
LnkoKSB8fCBhLnooKSAhPSBiLnooKTsKIH0KIAotaW5saW5lIGZsb2F0IG9wZXJhdG9yKihjb25z
dCBGbG9hdFBvaW50M0QmIGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYgYikKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgoraW5saW5lIFQgb3BlcmF0b3IqKGNvbnN0IEZsb2F0UG9pbnQzREJhc2U8VD4mIGEs
IGNvbnN0IEZsb2F0UG9pbnQzREJhc2U8VD4mIGIpCiB7CiAgICAgLy8gZG90IHByb2R1Y3QKICAg
ICByZXR1cm4gYS5kb3QoYik7CiB9CiAKLWlubGluZSBGbG9hdFBvaW50M0Qgb3BlcmF0b3IqKGZs
b2F0IGssIGNvbnN0IEZsb2F0UG9pbnQzRCYgdikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5s
aW5lIEZsb2F0UG9pbnQzREJhc2U8VD4gb3BlcmF0b3IqKFQgaywgY29uc3QgRmxvYXRQb2ludDNE
QmFzZTxUPiYgdikKIHsKLSAgICByZXR1cm4gRmxvYXRQb2ludDNEKGsgKiB2LngoKSwgayAqIHYu
eSgpLCBrICogdi56KCkpOworICAgIHJldHVybiBGbG9hdFBvaW50M0RCYXNlPFQ+KGsgKiB2Lngo
KSwgayAqIHYueSgpLCBrICogdi56KCkpOwogfQogCi1pbmxpbmUgRmxvYXRQb2ludDNEIG9wZXJh
dG9yKihjb25zdCBGbG9hdFBvaW50M0QmIHYsIGZsb2F0IGspCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2lubGluZSBGbG9hdFBvaW50M0RCYXNlPFQ+IG9wZXJhdG9yKihjb25zdCBGbG9hdFBvaW50
M0RCYXNlPFQ+JiB2LCBUIGspCiB7Ci0gICAgcmV0dXJuIEZsb2F0UG9pbnQzRChrICogdi54KCks
IGsgKiB2LnkoKSwgayAqIHYueigpKTsKKyAgICByZXR1cm4gRmxvYXRQb2ludDNEQmFzZTxUPihr
ICogdi54KCksIGsgKiB2LnkoKSwgayAqIHYueigpKTsKIH0KIAotaW5saW5lIGZsb2F0IEZsb2F0
UG9pbnQzRDo6ZGlzdGFuY2VUbyhjb25zdCBGbG9hdFBvaW50M0QmIGEpIGNvbnN0Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2lubGluZSBUIEZsb2F0UG9pbnQzREJhc2U8VD46OmRpc3RhbmNlVG8o
Y29uc3QgRmxvYXRQb2ludDNEQmFzZTxUPiYgYSkgY29uc3QKIHsKICAgICByZXR1cm4gKCp0aGlz
IC0gYSkubGVuZ3RoKCk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQg
RmxvYXRQb2ludDNEQmFzZTxUPjo6bm9ybWFsaXplKCkKK3sKKyAgICBUIHRlbXBMZW5ndGggPSBs
ZW5ndGgoKTsKKyAgICAKKyAgICBpZiAodGVtcExlbmd0aCkgeworICAgICAgICBtX3ggLz0gdGVt
cExlbmd0aDsKKyAgICAgICAgbV95IC89IHRlbXBMZW5ndGg7CisgICAgICAgIG1feiAvPSB0ZW1w
TGVuZ3RoOworICAgIH0KK30KKwordGVtcGxhdGUgPD4KK2lubGluZSBmbG9hdCBGbG9hdFBvaW50
M0RCYXNlPGZsb2F0Pjo6bGVuZ3RoKCkgY29uc3QgCit7IAorICAgIHJldHVybiBzcXJ0ZihsZW5n
dGhTcXVhcmVkKCkpOyAKK30KKwordGVtcGxhdGUgPD4KK2lubGluZSBkb3VibGUgRmxvYXRQb2lu
dDNEQmFzZTxkb3VibGU+OjpsZW5ndGgoKSBjb25zdCAKK3sgCisgICAgcmV0dXJuIHNxcnQobGVu
Z3RoU3F1YXJlZCgpKTsgCit9CisKK3R5cGVkZWYgRmxvYXRQb2ludDNEQmFzZTxmbG9hdD4gRmxv
YXRQb2ludDNEOwordHlwZWRlZiBGbG9hdFBvaW50M0RCYXNlPGRvdWJsZT4gRG91YmxlUG9pbnQz
RDsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRmxvYXRQb2ludDNEX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApp
bmRleCBjZGExYzhjMDliODc1YzA2ZTFiOTYwNjRmZjA4ZmQwN2U2YWU0MzQ0Li42MGNhZmRmYjY2
MThiNGYyMGMyZWMwYzk1N2JiYTMyZjhiMmUwMzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC04MCw3ICs4MCw2IEBAIHR5cGVk
ZWYgdW5zaWduZWQgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3I7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgRmxvYXRQb2ludDNEOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3Mg
SW1hZ2U7CiBjbGFzcyBUZXh0U3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oCmluZGV4IGMxOWMzYzExMzIzYjc0YTU2ZTEzNTE4NjhkYmFmNTYwNWRhOWVkZDkuLjIwNWUw
MmVhODE3YWNhMTI3ZjhkYmExZjBkZDYxNTU4MjUwZjAxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgVHJhbnNmb3JtYXRp
b25NYXRyaXhfaAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0UG9p
bnQzRC5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+IC8vZm9y
IG1lbWNweQogI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CkBAIC02MCw3ICs2MSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgSW50
UmVjdDsKLWNsYXNzIEZsb2F0UG9pbnQzRDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0
UXVhZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IDRkYjU2M2EwYTY3MmFkZmYzNTQ3Mzc3ZjU1
OTcxMzZlNWU1ZDY4Y2UuLjAzZmNlMWQ0ZjJlOGNjNmVmMWFlMmMxMmYyODliZGFhY2M4YTk3MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBib29sIFJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6YXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVy
U3R5bGUqCiAgICAgICAgIEZsb2F0UmVjdCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllczsK
IAogICAgICAgICAvLyBTY2FsZSB0aGUgdGlsZSBzaXplIHRvIG1hdGNoIHRoZSBzY2FsZSBsZXZl
bCBvZiB0aGUgcGF0dGVyblRyYW5zZm9ybS4KLSAgICAgICAgYWJzb2x1dGVUaWxlQm91bmRhcmll
cy5zY2FsZShtX2F0dHJpYnV0ZXMucGF0dGVyblRyYW5zZm9ybSgpLnhTY2FsZSgpLCBtX2F0dHJp
YnV0ZXMucGF0dGVyblRyYW5zZm9ybSgpLnlTY2FsZSgpKTsKKyAgICAgICAgYWJzb2x1dGVUaWxl
Qm91bmRhcmllcy5zY2FsZShuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fYXR0cmlidXRlcy5wYXR0
ZXJuVHJhbnNmb3JtKCkueFNjYWxlKCkpLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fYXR0cmli
dXRlcy5wYXR0ZXJuVHJhbnNmb3JtKCkueVNjYWxlKCkpKTsKIAogICAgICAgICAvLyBCdWlsZCB0
aWxlIGltYWdlLgogICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHRpbGVJbWFnZSA9IGNyZWF0
ZVRpbGVJbWFnZShtX2F0dHJpYnV0ZXMsIHRpbGVCb3VuZGFyaWVzLCBhYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzLCB0aWxlSW1hZ2VUcmFuc2Zvcm0sIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwCmluZGV4IDRhMjMwZTA4MjMwY2Q1YmQzYjYwNWVmNzU5YzllOTBiNTgxYTYzNGUuLjg5NmQ2
ZGU5MzJjMTNjOTQ2NDM1NmNjNTI1YzUxZTc3Zjk2ZDEwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xMzMsOCArMTM0LDggQEAgdm9pZCBBdWRpb0J1ZmZl
clNvdXJjZU5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAgLy8g
SWYgdGhlIGVuZCB0aW1lIGlzIHNvbWV3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHRoaXMgdGltZSBx
dWFudHVtLCB0aGVuIHNpbXBseSB6ZXJvIG91dCB0aGUKICAgICAgICAgLy8gZnJhbWVzIHN0YXJ0
aW5nIGF0IHRoZSBlbmQgdGltZS4KICAgICAgICAgaWYgKG1fZW5kVGltZSAhPSBVbmtub3duVGlt
ZSAmJiBtX2VuZFRpbWUgPj0gcXVhbnR1bVN0YXJ0VGltZSAmJiBtX2VuZFRpbWUgPCBxdWFudHVt
RW5kVGltZSkgewotICAgICAgICAgICAgdW5zaWduZWQgemVyb1N0YXJ0RnJhbWUgPSAobV9lbmRU
aW1lIC0gcXVhbnR1bVN0YXJ0VGltZSkgKiBzYW1wbGVSYXRlOwotICAgICAgICAgICAgdW5zaWdu
ZWQgZnJhbWVzVG9aZXJvID0gZnJhbWVzVG9Qcm9jZXNzIC0gemVyb1N0YXJ0RnJhbWU7CisgICAg
ICAgICAgICBzaXplX3QgemVyb1N0YXJ0RnJhbWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KCht
X2VuZFRpbWUgLSBxdWFudHVtU3RhcnRUaW1lKSAqIHNhbXBsZVJhdGUpOworICAgICAgICAgICAg
c2l6ZV90IGZyYW1lc1RvWmVybyA9IGZyYW1lc1RvUHJvY2VzcyAtIHplcm9TdGFydEZyYW1lOwog
CiAgICAgICAgICAgICBib29sIGlzU2FmZSA9IHplcm9TdGFydEZyYW1lIDwgZnJhbWVzVG9Qcm9j
ZXNzICYmIGZyYW1lc1RvWmVybyA8PSBmcmFtZXNUb1Byb2Nlc3MgJiYgemVyb1N0YXJ0RnJhbWUg
KyBmcmFtZXNUb1plcm8gPD0gZnJhbWVzVG9Qcm9jZXNzOwogICAgICAgICAgICAgQVNTRVJUKGlz
U2FmZSk7CkBAIC0yNzIsMTMgKzI3MywxMyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
cmVuZGVyRnJvbUJ1ZmZlcihBdWRpb0J1cyogYnVzLCB1bnNpZ25lZCBkZXN0aW5hdGlvbgogICAg
ICAgICBkb3VibGUgc2FtcGxlTDEgPSBzb3VyY2VMW3JlYWRJbmRleF07CiAgICAgICAgIGRvdWJs
ZSBzYW1wbGVMMiA9IHNvdXJjZUxbcmVhZEluZGV4Ml07CiAgICAgICAgIGRvdWJsZSBzYW1wbGVM
ID0gKDEuMCAtIGludGVycG9sYXRpb25GYWN0b3IpICogc2FtcGxlTDEgKyBpbnRlcnBvbGF0aW9u
RmFjdG9yICogc2FtcGxlTDI7Ci0gICAgICAgICpkZXN0aW5hdGlvbkwrKyA9IHNhbXBsZUw7Cisg
ICAgICAgICpkZXN0aW5hdGlvbkwrKyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc2FtcGxlTCk7
CiAKICAgICAgICAgaWYgKGlzU3RlcmVvKSB7CiAgICAgICAgICAgICBkb3VibGUgc2FtcGxlUjEg
PSBzb3VyY2VSW3JlYWRJbmRleF07CiAgICAgICAgICAgICBkb3VibGUgc2FtcGxlUjIgPSBzb3Vy
Y2VSW3JlYWRJbmRleDJdOwogICAgICAgICAgICAgZG91YmxlIHNhbXBsZVIgPSAoMS4wIC0gaW50
ZXJwb2xhdGlvbkZhY3RvcikgKiBzYW1wbGVSMSArIGludGVycG9sYXRpb25GYWN0b3IgKiBzYW1w
bGVSMjsKLSAgICAgICAgICAgICpkZXN0aW5hdGlvblIrKyA9IHNhbXBsZVI7CisgICAgICAgICAg
ICAqZGVzdGluYXRpb25SKysgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHNhbXBsZVIpOwogICAg
ICAgICB9CiAKICAgICAgICAgdmlydHVhbFJlYWRJbmRleCArPSBwaXRjaFJhdGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKaW5kZXggNTI4MWE4OTA3Y2NiYTBjMTgxYjUx
N2Q3YzZhYjUyODA0Njg0MGRjZi4uZDAxYTJjYWI5YmYwZGE0YTM1OTYxZTA4ZmI2N2NhNGVkNTQ5
MzE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaApAQCAtNDUsMjcg
KzQ1LDI3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBQb3NpdGlvbgotICAgIHZvaWQgc2V0
UG9zaXRpb24oZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgeyBzZXRQb3NpdGlvbihGbG9h
dFBvaW50M0QoeCwgeSwgeikpOyB9Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBv
aW50M0QgJnBvc2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgfQotICAgIGNvbnN0IEZs
b2F0UG9pbnQzRCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAg
dm9pZCBzZXRQb3NpdGlvbihkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KSB7IHNldFBvc2l0
aW9uKERvdWJsZVBvaW50M0QoeCwgeSwgeikpOyB9CisgICAgdm9pZCBzZXRQb3NpdGlvbihjb25z
dCBEb3VibGVQb2ludDNEICZwb3NpdGlvbikgeyBtX3Bvc2l0aW9uID0gcG9zaXRpb247IH0KKyAg
ICBjb25zdCBEb3VibGVQb2ludDNEJiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRp
b247IH0KIAogICAgIC8vIE9yaWVudGF0aW9uCiAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihkb3Vi
bGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgdXBYLCBkb3VibGUgdXBZLCBkb3VibGUg
dXBaKQogICAgIHsKLSAgICAgICAgc2V0T3JpZW50YXRpb24oRmxvYXRQb2ludDNEKHgsIHksIHop
KTsKLSAgICAgICAgc2V0VXBWZWN0b3IoRmxvYXRQb2ludDNEKHVwWCwgdXBZLCB1cFopKTsKKyAg
ICAgICAgc2V0T3JpZW50YXRpb24oRG91YmxlUG9pbnQzRCh4LCB5LCB6KSk7CisgICAgICAgIHNl
dFVwVmVjdG9yKERvdWJsZVBvaW50M0QodXBYLCB1cFksIHVwWikpOwogICAgIH0KLSAgICB2b2lk
IHNldE9yaWVudGF0aW9uKGNvbnN0IEZsb2F0UG9pbnQzRCAmb3JpZW50YXRpb24pIHsgbV9vcmll
bnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9Ci0gICAgY29uc3QgRmxvYXRQb2ludDNEJiBvcmllbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNldE9yaWVu
dGF0aW9uKGNvbnN0IERvdWJsZVBvaW50M0QgJm9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24g
PSBvcmllbnRhdGlvbjsgfQorICAgIGNvbnN0IERvdWJsZVBvaW50M0QmIG9yaWVudGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQogCiAgICAgLy8gVXAtdmVjdG9yCi0gICAg
dm9pZCBzZXRVcFZlY3Rvcihjb25zdCBGbG9hdFBvaW50M0QgJnVwVmVjdG9yKSB7IG1fdXBWZWN0
b3IgPSB1cFZlY3RvcjsgfQotICAgIGNvbnN0IEZsb2F0UG9pbnQzRCYgdXBWZWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX3VwVmVjdG9yOyB9CisgICAgdm9pZCBzZXRVcFZlY3Rvcihjb25zdCBEb3Vi
bGVQb2ludDNEICZ1cFZlY3RvcikgeyBtX3VwVmVjdG9yID0gdXBWZWN0b3I7IH0KKyAgICBjb25z
dCBEb3VibGVQb2ludDNEJiB1cFZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdXBWZWN0b3I7IH0K
IAogICAgIC8vIFZlbG9jaXR5Ci0gICAgdm9pZCBzZXRWZWxvY2l0eShkb3VibGUgeCwgZG91Ymxl
IHksIGRvdWJsZSB6KSB7IHNldFZlbG9jaXR5KEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7IH0KLSAg
ICB2b2lkIHNldFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQzRCAmdmVsb2NpdHkpIHsgbV92ZWxv
Y2l0eSA9IHZlbG9jaXR5OyB9Ci0gICAgY29uc3QgRmxvYXRQb2ludDNEJiB2ZWxvY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7IH0KKyAgICB2b2lkIHNldFZlbG9jaXR5KGRvdWJsZSB4
LCBkb3VibGUgeSwgZG91YmxlIHopIHsgc2V0VmVsb2NpdHkoRG91YmxlUG9pbnQzRCh4LCB5LCB6
KSk7IH0KKyAgICB2b2lkIHNldFZlbG9jaXR5KGNvbnN0IERvdWJsZVBvaW50M0QgJnZlbG9jaXR5
KSB7IG1fdmVsb2NpdHkgPSB2ZWxvY2l0eTsgfQorICAgIGNvbnN0IERvdWJsZVBvaW50M0QmIHZl
bG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQogCiAgICAgLy8gRG9wcGxlciBm
YWN0b3IKICAgICB2b2lkIHNldERvcHBsZXJGYWN0b3IoZG91YmxlIGRvcHBsZXJGYWN0b3IpIHsg
bV9kb3BwbGVyRmFjdG9yID0gZG9wcGxlckZhY3RvcjsgfQpAQCAtNzksMTEgKzc5LDExIEBAIHBy
aXZhdGU6CiAgICAgQXVkaW9MaXN0ZW5lcigpOwogCiAgICAgLy8gUG9zaXRpb24gLyBPcmllbnRh
dGlvbgotICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOwotICAgIEZsb2F0UG9pbnQzRCBtX29y
aWVudGF0aW9uOwotICAgIEZsb2F0UG9pbnQzRCBtX3VwVmVjdG9yOworICAgIERvdWJsZVBvaW50
M0QgbV9wb3NpdGlvbjsKKyAgICBEb3VibGVQb2ludDNEIG1fb3JpZW50YXRpb247CisgICAgRG91
YmxlUG9pbnQzRCBtX3VwVmVjdG9yOwogCi0gICAgRmxvYXRQb2ludDNEIG1fdmVsb2NpdHk7Cisg
ICAgRG91YmxlUG9pbnQzRCBtX3ZlbG9jaXR5OwogCiAgICAgZG91YmxlIG1fZG9wcGxlckZhY3Rv
cjsKICAgICBkb3VibGUgbV9zcGVlZE9mU291bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QXVkaW9QYW5uZXJOb2RlLmNwcAppbmRleCA3ZDI2ZmVhYzk0N2Q3NmM0YmFmNDc4NDdmODFmYWU0
NzA1YzI5MzI0Li43NzA5MzdhNTUxZGU5Mzg4MjY5OTY5NGVkNDI1NjlkZmZmY2FkZDI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAKQEAgLTU4LDkgKzU4
LDkgQEAgQXVkaW9QYW5uZXJOb2RlOjpBdWRpb1Bhbm5lck5vZGUoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKICAgICBtX2Rpc3RhbmNlR2FpbiA9IEF1ZGlvR2Fpbjo6
Y3JlYXRlKCJkaXN0YW5jZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKICAgICBtX2NvbmVHYWluID0g
QXVkaW9HYWluOjpjcmVhdGUoImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7CiAKLSAgICBtX3Bv
c2l0aW9uID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOwotICAgIG1fb3JpZW50YXRpb24gPSBGbG9h
dFBvaW50M0QoMSwgMCwgMCk7Ci0gICAgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCgwLCAwLCAw
KTsKKyAgICBtX3Bvc2l0aW9uID0gRG91YmxlUG9pbnQzRCgwLCAwLCAwKTsKKyAgICBtX29yaWVu
dGF0aW9uID0gRG91YmxlUG9pbnQzRCgxLCAwLCAwKTsKKyAgICBtX3ZlbG9jaXR5ID0gRG91Ymxl
UG9pbnQzRCgwLCAwLCAwKTsKICAgICAKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVBhbm5lcik7
CiAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2b2lkIEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0aEVs
ZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aQogICAgIGRvdWJs
ZSBhemltdXRoID0gMC4wOwogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzb3VyY2UtbGlzdGVuZXIg
dmVjdG9yCi0gICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5w
b3NpdGlvbigpOwotICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VMaXN0ZW5lciA9IG1fcG9zaXRpb24g
LSBsaXN0ZW5lclBvc2l0aW9uOworICAgIERvdWJsZVBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9
IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRG91YmxlUG9pbnQzRCBzb3VyY2VMaXN0ZW5l
ciA9IG1fcG9zaXRpb24gLSBsaXN0ZW5lclBvc2l0aW9uOwogCiAgICAgaWYgKHNvdXJjZUxpc3Rl
bmVyLmlzWmVybygpKSB7CiAgICAgICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSBpZiBzb3VyY2UgYW5k
IGxpc3RlbmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludApAQCAtMTc4LDE5ICsxNzgsMTkgQEAgdm9p
ZCBBdWRpb1Bhbm5lck5vZGU6OmdldEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRo
LCBkb3VibGUqIG91dEVsZXZhdGkKICAgICBzb3VyY2VMaXN0ZW5lci5ub3JtYWxpemUoKTsKIAog
ICAgIC8vIEFsaWduIGF4ZXMKLSAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udCA9IGxpc3Rl
bmVyKCktPm9yaWVudGF0aW9uKCk7Ci0gICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyVXAgPSBsaXN0
ZW5lcigpLT51cFZlY3RvcigpOwotICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlz
dGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVwKTsKKyAgICBEb3VibGVQb2ludDNEIGxpc3RlbmVy
RnJvbnQgPSBsaXN0ZW5lcigpLT5vcmllbnRhdGlvbigpOworICAgIERvdWJsZVBvaW50M0QgbGlz
dGVuZXJVcCA9IGxpc3RlbmVyKCktPnVwVmVjdG9yKCk7CisgICAgRG91YmxlUG9pbnQzRCBsaXN0
ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVwKTsKICAgICBsaXN0ZW5l
clJpZ2h0Lm5vcm1hbGl6ZSgpOwogCi0gICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnROb3Jt
ID0gbGlzdGVuZXJGcm9udDsKKyAgICBEb3VibGVQb2ludDNEIGxpc3RlbmVyRnJvbnROb3JtID0g
bGlzdGVuZXJGcm9udDsKICAgICBsaXN0ZW5lckZyb250Tm9ybS5ub3JtYWxpemUoKTsKIAotICAg
IEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3MobGlzdGVuZXJGcm9udE5vcm0p
OworICAgIERvdWJsZVBvaW50M0QgdXAgPSBsaXN0ZW5lclJpZ2h0LmNyb3NzKGxpc3RlbmVyRnJv
bnROb3JtKTsKIAogICAgIGRvdWJsZSB1cFByb2plY3Rpb24gPSBzb3VyY2VMaXN0ZW5lci5kb3Qo
dXApOwogCi0gICAgRmxvYXRQb2ludDNEIHByb2plY3RlZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVy
IC0gdXBQcm9qZWN0aW9uICogdXA7CisgICAgRG91YmxlUG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2Ug
PSBzb3VyY2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOwogICAgIHByb2plY3RlZFNvdXJj
ZS5ub3JtYWxpemUoKTsKIAogICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVkU291
cmNlLmRvdChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJsZTsKQEAgLTIzMiw4ICsyMzIsOCBAQCBm
bG9hdCBBdWRpb1Bhbm5lck5vZGU6OmRvcHBsZXJSYXRlKCkKICAgICBpZiAoZG9wcGxlckZhY3Rv
ciA+IDAuMCkgewogICAgICAgICBkb3VibGUgc3BlZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3Bl
ZWRPZlNvdW5kKCk7CiAKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0
eSA9IG1fdmVsb2NpdHk7Ci0gICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxv
Y2l0eSA9IGxpc3RlbmVyKCktPnZlbG9jaXR5KCk7CisgICAgICAgIGNvbnN0IERvdWJsZVBvaW50
M0QgJnNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKKyAgICAgICAgY29uc3QgRG91YmxlUG9p
bnQzRCAmbGlzdGVuZXJWZWxvY2l0eSA9IGxpc3RlbmVyKCktPnZlbG9jaXR5KCk7CiAKICAgICAg
ICAgLy8gRG9uJ3QgYm90aGVyIGlmIGJvdGggc291cmNlIGFuZCBsaXN0ZW5lciBoYXZlIG5vIHZl
bG9jaXR5CiAgICAgICAgIGJvb2wgc291cmNlSGFzVmVsb2NpdHkgPSAhc291cmNlVmVsb2NpdHku
aXNaZXJvKCk7CkBAIC0yNDEsOCArMjQxLDggQEAgZmxvYXQgQXVkaW9QYW5uZXJOb2RlOjpkb3Bw
bGVyUmF0ZSgpCiAKICAgICAgICAgaWYgKHNvdXJjZUhhc1ZlbG9jaXR5IHx8IGxpc3RlbmVySGFz
VmVsb2NpdHkpIHsKICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlIHRvIGxpc3Rl
bmVyIHZlY3RvcgotICAgICAgICAgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBs
aXN0ZW5lcigpLT5wb3NpdGlvbigpOwotICAgICAgICAgICAgRmxvYXRQb2ludDNEIHNvdXJjZVRv
TGlzdGVuZXIgPSBtX3Bvc2l0aW9uIC0gbGlzdGVuZXJQb3NpdGlvbjsKKyAgICAgICAgICAgIERv
dWJsZVBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7Cisg
ICAgICAgICAgICBEb3VibGVQb2ludDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBtX3Bvc2l0aW9uIC0g
bGlzdGVuZXJQb3NpdGlvbjsKIAogICAgICAgICAgICAgZG91YmxlIHNvdXJjZUxpc3RlbmVyTWFn
bml0dWRlID0gc291cmNlVG9MaXN0ZW5lci5sZW5ndGgoKTsKIApAQCAtMjcyLDcgKzI3Miw3IEBA
IGZsb2F0IEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUoKQogCiBmbG9hdCBBdWRpb1Bhbm5l
ck5vZGU6OmRpc3RhbmNlQ29uZUdhaW4oKQogewotICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBv
c2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICBEb3VibGVQb2ludDNEIGxpc3Rl
bmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOwogCiAgICAgZG91YmxlIGxpc3Rl
bmVyRGlzdGFuY2UgPSBtX3Bvc2l0aW9uLmRpc3RhbmNlVG8obGlzdGVuZXJQb3NpdGlvbik7CiAg
ICAgZG91YmxlIGRpc3RhbmNlR2FpbiA9IG1fZGlzdGFuY2VFZmZlY3QuZ2FpbihsaXN0ZW5lckRp
c3RhbmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVy
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmgKaW5kZXgg
NjFlMzRhOTdjM2JkZTg0NGIxMmFiMGQ1MGI2MDIwMGU1OGFiNmIyZS4uMzcyZjc1ODUwZDhjYzI0
NmIyOWEzYjMyNzI0ZjA1NWEzNmFhYzBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9QYW5uZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVk
aW9QYW5uZXJOb2RlLmgKQEAgLTc1LDE2ICs3NSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQ
YW5uaW5nTW9kZWwodW5zaWduZWQgc2hvcnQpOwogCiAgICAgLy8gUG9zaXRpb24KLSAgICBGbG9h
dFBvaW50M0QgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Ci0gICAgdm9p
ZCBzZXRQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fcG9zaXRpb24gPSBG
bG9hdFBvaW50M0QoeCwgeSwgeik7IH0KKyAgICBEb3VibGVQb2ludDNEIHBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24oZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gRG91YmxlUG9pbnQzRCh4LCB5LCB6KTsg
fQogCiAgICAgLy8gT3JpZW50YXRpb24KLSAgICBGbG9hdFBvaW50M0Qgb3JpZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Ci0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwg
eSwgeik7IH0KKyAgICBEb3VibGVQb2ludDNEIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeikgeyBtX29yaWVudGF0aW9uID0gRG91YmxlUG9pbnQzRCh4LCB5LCB6KTsgfQogCiAg
ICAgLy8gVmVsb2NpdHkKLSAgICBGbG9hdFBvaW50M0QgdmVsb2NpdHkoKSBjb25zdCB7IHJldHVy
biBtX3ZlbG9jaXR5OyB9Ci0gICAgdm9pZCBzZXRWZWxvY2l0eShmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KKyAgICBEb3Vi
bGVQb2ludDNEIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQorICAgIHZv
aWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9jaXR5ID0g
RG91YmxlUG9pbnQzRCh4LCB5LCB6KTsgfQogCiAgICAgLy8gRGlzdGFuY2UgcGFyYW1ldGVycwog
ICAgIHVuc2lnbmVkIHNob3J0IGRpc3RhbmNlTW9kZWwoKSB7IHJldHVybiBtX2Rpc3RhbmNlRWZm
ZWN0Lm1vZGVsKCk7IH0KQEAgLTEyOSw5ICsxMjksOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxQ
YW5uZXI+IG1fcGFubmVyOwogICAgIHVuc2lnbmVkIG1fcGFubmluZ01vZGVsOwogCi0gICAgRmxv
YXRQb2ludDNEIG1fcG9zaXRpb247Ci0gICAgRmxvYXRQb2ludDNEIG1fb3JpZW50YXRpb247Ci0g
ICAgRmxvYXRQb2ludDNEIG1fdmVsb2NpdHk7CisgICAgRG91YmxlUG9pbnQzRCBtX3Bvc2l0aW9u
OworICAgIERvdWJsZVBvaW50M0QgbV9vcmllbnRhdGlvbjsKKyAgICBEb3VibGVQb2ludDNEIG1f
dmVsb2NpdHk7CiAKICAgICAvLyBHYWluCiAgICAgUmVmUHRyPEF1ZGlvR2Fpbj4gbV9kaXN0YW5j
ZUdhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDkwNTY0OTg0
ZGYyZDNjZjNjOGYyZTc3NTQ2NjQ2M2U3ZTkwMzgwZjkuLjFiZWRmMGNkZmU1MzY1ZDY4MTU4YzUx
YTE3NDRkNGVkNjhlZDc5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJBdWRpb05vZGUuaCIKICNpbmNsdWRlICJB
dWRpb1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDEzICs0NCwx
MyBAQCBmbG9hdCBBdWRpb1BhcmFtOjp2YWx1ZSgpCiAgICAgLy8gVXBkYXRlIHZhbHVlIGZvciB0
aW1lbGluZS4KICAgICBpZiAoY29udGV4dCgpICYmIGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgp
KSB7CiAgICAgICAgIGJvb2wgaGFzVmFsdWU7Ci0gICAgICAgIGZsb2F0IHRpbWVsaW5lVmFsdWUg
PSBtX3RpbWVsaW5lLnZhbHVlRm9yQ29udGV4dFRpbWUoY29udGV4dCgpLCBtX3ZhbHVlLCBoYXNW
YWx1ZSk7CisgICAgICAgIGZsb2F0IHRpbWVsaW5lVmFsdWUgPSBtX3RpbWVsaW5lLnZhbHVlRm9y
Q29udGV4dFRpbWUoY29udGV4dCgpLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fdmFsdWUpLCBo
YXNWYWx1ZSk7CiAKICAgICAgICAgaWYgKGhhc1ZhbHVlKQogICAgICAgICAgICAgbV92YWx1ZSA9
IHRpbWVsaW5lVmFsdWU7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Piht
X3ZhbHVlKTsKKyAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtX3ZhbHVlKTsKIH0K
IAogdm9pZCBBdWRpb1BhcmFtOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkKQEAgLTYyLDcgKzYzLDcg
QEAgdm9pZCBBdWRpb1BhcmFtOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkKIAogZmxvYXQgQXVkaW9Q
YXJhbTo6c21vb3RoZWRWYWx1ZSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Piht
X3Ntb290aGVkVmFsdWUpOworICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fc21v
b3RoZWRWYWx1ZSk7CiB9CiAKIGJvb2wgQXVkaW9QYXJhbTo6c21vb3RoKCkKQEAgLTcxLDcgKzcy
LDcgQEAgYm9vbCBBdWRpb1BhcmFtOjpzbW9vdGgoKQogICAgIC8vIFNtb290aGluZyBlZmZlY3Rp
dmVseSBpcyBwZXJmb3JtZWQgYnkgdGhlIHRpbWVsaW5lLgogICAgIGJvb2wgdXNlVGltZWxpbmVW
YWx1ZSA9IGZhbHNlOwogICAgIGlmIChjb250ZXh0KCkpCi0gICAgICAgIG1fdmFsdWUgPSBtX3Rp
bWVsaW5lLnZhbHVlRm9yQ29udGV4dFRpbWUoY29udGV4dCgpLCBtX3ZhbHVlLCB1c2VUaW1lbGlu
ZVZhbHVlKTsKKyAgICAgICAgbV92YWx1ZSA9IG1fdGltZWxpbmUudmFsdWVGb3JDb250ZXh0VGlt
ZShjb250ZXh0KCksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV92YWx1ZSksIHVzZVRpbWVsaW5l
VmFsdWUpOwogICAgIAogICAgIGlmIChtX3Ntb290aGVkVmFsdWUgPT0gbV92YWx1ZSkgewogICAg
ICAgICAvLyBTbW9vdGhlZCB2YWx1ZSBoYXMgYWxyZWFkeSBhcHByb2FjaGVkIGFuZCBzbmFwcGVk
IHRvIHZhbHVlLgpAQCAtMTAxLDEzICsxMDIsMTMgQEAgdm9pZCBBdWRpb1BhcmFtOjpjYWxjdWxh
dGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyhmbG9hdCogdmFsdWVzLCB1bnNpZ25lZCBudW1iZXJPZlYK
IAogICAgIC8vIENhbGN1bGF0ZSB2YWx1ZXMgZm9yIHRoaXMgcmVuZGVyIHF1YW50dW0uCiAgICAg
Ly8gTm9ybWFsbHkgbnVtYmVyT2ZWYWx1ZXMgd2lsbCBlcXVhbCBBdWRpb05vZGU6OlByb2Nlc3Np
bmdTaXplSW5GcmFtZXMgKHRoZSByZW5kZXIgcXVhbnR1bSBzaXplKS4KLSAgICBmbG9hdCBzYW1w
bGVSYXRlID0gY29udGV4dCgpLT5zYW1wbGVSYXRlKCk7Ci0gICAgZmxvYXQgc3RhcnRUaW1lID0g
Y29udGV4dCgpLT5jdXJyZW50VGltZSgpOworICAgIGZsb2F0IHNhbXBsZVJhdGUgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KGNvbnRleHQoKS0+c2FtcGxlUmF0ZSgpKTsKKyAgICBmbG9hdCBzdGFy
dFRpbWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbnRleHQoKS0+Y3VycmVudFRpbWUoKSk7
CiAgICAgZmxvYXQgZW5kVGltZSA9IHN0YXJ0VGltZSArIG51bWJlck9mVmFsdWVzIC8gc2FtcGxl
UmF0ZTsKIAogICAgIC8vIE5vdGUgd2UncmUgcnVubmluZyBjb250cm9sIHJhdGUgYXQgdGhlIHNh
bXBsZS1yYXRlLgogICAgIC8vIFBhc3MgaW4gdGhlIGN1cnJlbnQgdmFsdWUgYXMgZGVmYXVsdCB2
YWx1ZS4KLSAgICBtX3ZhbHVlID0gbV90aW1lbGluZS52YWx1ZXNGb3JUaW1lUmFuZ2Uoc3RhcnRU
aW1lLCBlbmRUaW1lLCBtX3ZhbHVlLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzLCBzYW1wbGVSYXRl
LCBzYW1wbGVSYXRlKTsKKyAgICBtX3ZhbHVlID0gbV90aW1lbGluZS52YWx1ZXNGb3JUaW1lUmFu
Z2Uoc3RhcnRUaW1lLCBlbmRUaW1lLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fdmFsdWUpLCB2
YWx1ZXMsIG51bWJlck9mVmFsdWVzLCBzYW1wbGVSYXRlLCBzYW1wbGVSYXRlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QXVkaW9QYXJhbVRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5jcHAKaW5kZXggMDQ1MTg4NDQ1NmZhZTE5MTg1NzA4YWEyZjYxMWJlYjNkMzQw
NDY0My4uNmI5OWU5NDFhMjJjYmRmNzRiOTgwODQ5MGM0YTQ5OTZhZjgzZTNjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiQXVkaW9QYXJhbVRpbWVsaW5lLmgiCiAKICNpbmNsdWRlICJBdWRp
b1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xMjMsOSArMTI0LDkg
QEAgZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29u
dGV4dCogY29udGV4dCwgZmxvYXQgZGVmYXUKIAogICAgIC8vIEFzayBmb3IganVzdCBhIHNpbmds
ZSB2YWx1ZS4KICAgICBmbG9hdCB2YWx1ZTsKLSAgICBmbG9hdCBzYW1wbGVSYXRlID0gY29udGV4
dC0+c2FtcGxlUmF0ZSgpOwotICAgIGZsb2F0IHN0YXJ0VGltZSA9IGNvbnRleHQtPmN1cnJlbnRU
aW1lKCk7Ci0gICAgZmxvYXQgZW5kVGltZSA9IHN0YXJ0VGltZSArIDEuMSAvIHNhbXBsZVJhdGU7
IC8vIHRpbWUganVzdCBiZXlvbmQgb25lIHNhbXBsZS1mcmFtZQorICAgIGZsb2F0IHNhbXBsZVJh
dGUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbnRleHQtPnNhbXBsZVJhdGUoKSk7CisgICAg
ZmxvYXQgc3RhcnRUaW1lID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb250ZXh0LT5jdXJyZW50
VGltZSgpKTsKKyAgICBmbG9hdCBlbmRUaW1lID0gc3RhcnRUaW1lICsgMS4xZiAvIHNhbXBsZVJh
dGU7IC8vIHRpbWUganVzdCBiZXlvbmQgb25lIHNhbXBsZS1mcmFtZQogICAgIGZsb2F0IGNvbnRy
b2xSYXRlID0gc2FtcGxlUmF0ZSAvIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lczsg
Ly8gb25lIHBhcmFtZXRlciBjaGFuZ2UgcGVyIHJlbmRlciBxdWFudHVtCiAgICAgdmFsdWUgPSB2
YWx1ZXNGb3JUaW1lUmFuZ2Uoc3RhcnRUaW1lLCBlbmRUaW1lLCBkZWZhdWx0VmFsdWUsICZ2YWx1
ZSwgMSwgc2FtcGxlUmF0ZSwgY29udHJvbFJhdGUpOwogCkBAIC0xODQsNyArMTg1LDcgQEAgZmxv
YXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2VJbXBsKGZsb2F0IHN0YXJ0
VGltZSwKICAgICB9CiAKICAgICAvLyBNYWludGFpbiBhIHJ1bm5pbmcgdGltZSBhbmQgaW5kZXgg
Zm9yIHdyaXRpbmcgdGhlIHZhbHVlcyBidWZmZXIuCi0gICAgZG91YmxlIGN1cnJlbnRUaW1lID0g
c3RhcnRUaW1lOworICAgIGZsb2F0IGN1cnJlbnRUaW1lID0gc3RhcnRUaW1lOwogICAgIHVuc2ln
bmVkIHdyaXRlSW5kZXggPSAwOwogCiAgICAgLy8gSWYgZmlyc3QgZXZlbnQgaXMgYWZ0ZXIgc3Rh
cnRUaW1lIHRoZW4gZmlsbCBpbml0aWFsIHBhcnQgb2YgdmFsdWVzIGJ1ZmZlciB3aXRoIGRlZmF1
bHRWYWx1ZQpAQCAtMjQ1LDggKzI0Niw4IEBAIGZsb2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFs
dWVzRm9yVGltZVJhbmdlSW1wbChmbG9hdCBzdGFydFRpbWUsCiAgICAgICAgICAgICAgICAgICAg
IHZhbHVlc1t3cml0ZUluZGV4XSA9IHZhbHVlOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAvLyBJbnRlcnBvbGF0ZSBpbiBsb2cgc3BhY2UuCi0gICAgICAgICAgICAgICAg
dmFsdWUxID0gbG9nMih2YWx1ZTEpOwotICAgICAgICAgICAgICAgIHZhbHVlMiA9IGxvZzIodmFs
dWUyKTsKKyAgICAgICAgICAgICAgICB2YWx1ZTEgPSBsb2cyZih2YWx1ZTEpOworICAgICAgICAg
ICAgICAgIHZhbHVlMiA9IGxvZzJmKHZhbHVlMik7CiAKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogb3B0aW1pemUgdG8gbm90IHVzZSBwb3coKSBpbiBpbm5lciBsb29wLCB0aGlzIGlzIGp1c3Qg
YSBzaW1wbGUgZXhwb25lbnRpYWwgcmFtcC4KICAgICAgICAgICAgICAgICBmb3IgKDsgd3JpdGVJ
bmRleCA8IGZpbGxUb0ZyYW1lOyArK3dyaXRlSW5kZXgpIHsKQEAgLTI4MSw3ICsyODIsNyBAQCBm
bG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlc0ZvclRpbWVSYW5nZUltcGwoZmxvYXQgc3Rh
cnRUaW1lLAogICAgICAgICAgICAgICAgICAgICAvLyBFeHBvbmVudGlhbCBhcHByb2FjaCB0byB0
YXJnZXQgdmFsdWUgd2l0aCBnaXZlbiB0aW1lIGNvbnN0YW50LgogICAgICAgICAgICAgICAgICAg
ICBmbG9hdCB0YXJnZXRWYWx1ZSA9IGV2ZW50LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGZsb2F0IHRpbWVDb25zdGFudCA9IGV2ZW50LnRpbWVDb25zdGFudCgpOwotICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBkaXNjcmV0ZVRpbWVDb25zdGFudCA9IEF1ZGlvVXRpbGl0aWVzOjpkaXNj
cmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJhdGUodGltZUNvbnN0YW50LCBjb250cm9sUmF0ZSk7
CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRpc2NyZXRlVGltZUNvbnN0YW50ID0gbmFycm93
UHJlY2lzaW9uVG9GbG9hdChBdWRpb1V0aWxpdGllczo6ZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JT
YW1wbGVSYXRlKHRpbWVDb25zdGFudCwgY29udHJvbFJhdGUpKTsKIAogICAgICAgICAgICAgICAg
ICAgICBmb3IgKDsgd3JpdGVJbmRleCA8IGZpbGxUb0ZyYW1lOyArK3dyaXRlSW5kZXgpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1t3cml0ZUluZGV4XSA9IHZhbHVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAppbmRleCA0MTZi
NzIyMzRlYWE1NGRjNzdkYWFiNjcyZTJlODJiY2IzNjYzYjg5Li41ZjNjZjM0NzYyMzBlYzA0MmI5
MTUzYzFlMzM4YzU3NTdhMWJhODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9X
YXZlU2hhcGVyRFNQS2VybmVsLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFdhdmVTaGFwZXJE
U1BLZXJuZWw6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
LCBzaXplXwogICAgICAgICBjb25zdCBmbG9hdCBpbnB1dCA9IHNvdXJjZVtpXTsKIAogICAgICAg
ICAvLyBDYWxjdWxhdGUgYW4gaW5kZXggYmFzZWQgb24gaW5wdXQgLTEgLT4gKzEgd2l0aCAwIGJl
aW5nIGF0IHRoZSBjZW50ZXIgb2YgdGhlIGN1cnZlIGRhdGEuCi0gICAgICAgIGludCBpbmRleCA9
IGN1cnZlTGVuZ3RoICogMC41ICogKGlucHV0ICsgMSk7CisgICAgICAgIGludCBpbmRleCA9IChj
dXJ2ZUxlbmd0aCAqIChpbnB1dCArIDEpKSAvIDI7CiAKICAgICAgICAgLy8gQ2xpcCBpbmRleCB0
byB0aGUgaW5wdXQgcmFuZ2Ugb2YgdGhlIGN1cnZlLgogICAgICAgICAvLyBUaGlzIHRha2VzIGNh
cmUgb2YgaW5wdXQgb3V0c2lkZSBvZiBub21pbmFsIHJhbmdlIC0xIC0+ICsxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109696</attachid>
            <date>2011-10-04 14:43:17 -0700</date>
            <delta_ts>2011-10-05 10:02:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69292-20111004144316.patch</filename>
            <type>text/plain</type>
            <size>53322</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMzEzM2M3NmIwMzI5MmY3
MDQ2MmRlNzk2ZDEzNWZmNmY3MmM1YTk0Li41MDE5YTgxMmY2NThiNDg4ZWNiYWViMjgxY2ZlNGZj
NjQxNmMxODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA1IEBACisyMDExLTEwLTA0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFdFQl9BVURJTyBkb2VzIG5v
dCBjb21waWxlIG9uIExlb3BhcmQgMzItYml0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHM7IGNvdmVyZWQgYnkgYWxsIGV4aXN0aW5n
IGF1ZGlvIGFuZCBncmFwaGljcyB0ZXN0cy4KKworICAgICAgICBGbG9hdFBvaW50M0QgaGFzIGJl
ZW4gY29udmVydGVkIHRvIGEgYmFzZSB0ZW1wbGF0ZSBjbGFzcywgRmxvYXRQb2ludDNEQmFzZSwg
d2l0aCB0eXBlZGVmcworICAgICAgICBmb3IgRmxvYXQgYW5kIERvdWJsZSB2ZXJzaW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5oOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQ
b2ludDNEQmFzZTo6RmxvYXRQb2ludDNEQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBv
aW50M0RCYXNlOjp4KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9pbnQzREJhc2U6OnNldFgp
OgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDNEQmFzZTo6eSk6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFBvaW50M0RCYXNlOjpzZXRZKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9p
bnQzREJhc2U6OnopOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDNEQmFzZTo6c2V0Wik6
CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50M0RCYXNlOjpzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RmxvYXRQb2ludDNEQmFzZTo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBv
aW50M0RCYXNlOjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50M0RCYXNlOjpk
b3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDNEQmFzZTo6Y3Jvc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6RmxvYXRQb2ludDNEQmFzZTo6bGVuZ3RoU3F1YXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvciArPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciAtPSk6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcispOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3It
KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciopOgorICAgICAgICAoV2ViQ29y
ZTo6OjpkaXN0YW5jZVRvKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bm9ybWFsaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6Ojo6bGVuZ3RoKToKKworICAgICAgICBDaGFuZ2VzIHRvIEZsb2F0UG9pbnQz
RCBhYm92ZSBtZWFuIHRoYXQgdGhlIGZvbGxvd2luZyBmaWxlcyBjYW4gbm8gbG9uZ2VyIGZvcndh
cmQtZGVjbGFyZQorICAgICAgICBGbG9hdFBvaW50M0QgYW5kIG11c3QgaW5jbHVkZQhGbG9hdFBv
aW50M0QuaCBpbnN0ZWFkOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0
aW9uTWF0cml4Lmg6CisKKyAgICAgICAgVXNlIG9mIGZsb2F0IGFuZCBkb3VibGUgd2l0aGluIHRo
ZSBXRUJfQVVESU8gaW1wbGVtZW50YXRpb24gaGF2ZSBiZWVuIGhhcm1vbml6ZWQsIHdpdGggbW9z
dAorICAgICAgICBjYWxjdWxhdGlvbnMgZG9uZSB1c2luZyBkb3VibGVzLCBhbmQgd2l0aCBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KCkgYWRkZWQgd2hlbiBuZWNlc3NhcnkgdG8KKyAgICAgICAgbmFy
cm93IHJlc3VsdHMgZG93biB0byBmbG9hdHM6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9N
b25vKTogVXNlICIvMiIgaW5zdGVhZCBvZiAiKi41IiB0byBhdm9pZCBkb3VibGUtPmZsb2F0IGNv
bnZlcnNpb25zLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6Z2Fpbik6IFVzZSBEb3VibGVQb2ludDNELgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpz
ZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVycyk6IGZsb2F0IC0+IGRvdWJsZS4KKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0RW1waGFzaXNQYXJhbWV0ZXJzKTogZmxvYXQg
LT4gZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNz
KTogZmxvYXQgLT4gZG91YmxlLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNl
dFByZURlbGF5VGltZSk6IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQuCisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOiBmbG9hdCAtPiBkb3VibGUgJiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpzYW1wbGVSYXRlKTogZmxvYXQgLT4gZG91YmxlLgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL1plcm9Qb2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpwcm9jZXNz
KTogZmxvYXQgLT4gZG91YmxlICYgbmFycm93UHJlY2lzaW9uVG9GbG9hdC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oOgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnNl
dFplcm8pOiBmbG9hdCAtPiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6c2V0
UG9sZSk6IGZsb2F0IC0+IGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJv
KTogZmxvYXQgLT4gZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnBvbGUpOiBm
bG9hdCAtPiBkb3VibGUuCisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2Vzcyk6
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnJlbmRlckZyb21CdWZmZXIpOiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0LgorICAg
ICAgICAqIHdlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
TGlzdGVuZXI6OnNldFBvc2l0aW9uKTogZmxvYXQgLT4gZG91YmxlLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9MaXN0ZW5lcjo6cG9zaXRpb24pOiBmbG9hdCAtPiBkb3VibGUuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0xpc3RlbmVyOjpzZXRPcmllbnRhdGlvbik6IGZsb2F0IC0+IGRvdWJsZS4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6Om9yaWVudGF0aW9uKTogZmxvYXQgLT4g
ZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9MaXN0ZW5lcjo6c2V0VXBWZWN0b3IpOiBm
bG9hdCAtPiBkb3VibGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0xpc3RlbmVyOjp1cFZlY3Rv
cik6IGZsb2F0IC0+IGRvdWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnNl
dFZlbG9jaXR5KTogZmxvYXQgLT4gZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9MaXN0
ZW5lcjo6dmVsb2NpdHkpOiBmbG9hdCAtPiBkb3VibGUuCisgICAgICAgICogd2ViYXVkaW8vQXVk
aW9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVyTm9kZTo6QXVk
aW9QYW5uZXJOb2RlKTogVXNlIERvdWJsZVBvaW50M0QuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Bhbm5lck5vZGU6OmdldEF6aW11dGhFbGV2YXRpb24pOiBVc2UgRG91YmxlUG9pbnQzRC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUpOiBVc2UgRG91Ymxl
UG9pbnQzRC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VDb25l
R2Fpbik6IFVzZSBEb3VibGVQb2ludDNELgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvUGFubmVy
Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpwb3NpdGlvbik6IFVz
ZSBEb3VibGVQb2ludDNELgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpzZXRQ
b3NpdGlvbik6IFVzZSBEb3VibGVQb2ludDNELgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5u
ZXJOb2RlOjpvcmllbnRhdGlvbik6IFVzZSBEb3VibGVQb2ludDNELgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9QYW5uZXJOb2RlOjpzZXRPcmllbnRhdGlvbik6IFVzZSBEb3VibGVQb2ludDNELgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjp2ZWxvY2l0eSk6IFVzZSBEb3VibGVQ
b2ludDNELgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpzZXRWZWxvY2l0eSk6
IFVzZSBEb3VibGVQb2ludDNELgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6dmFsdWUpOiBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6c21vb3RoZWRWYWx1ZSk6IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpzbW9vdGgp
OiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6
Y2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVWYWx1ZXMpOiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0Lgor
ICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUpOiBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1
ZXNGb3JUaW1lUmFuZ2VJbXBsKTogbmFycm93UHJlY2lzaW9uVG9GbG9hdC4KKyAgICAgICAgKiB3
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVT
aGFwZXJEU1BLZXJuZWw6OnByb2Nlc3MpOiBVc2UgIi8yIiBpbnN0ZWFkIG9mICIqMC41Ii4KKwog
MjAxMS0xMC0wMyAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJnYigpIHdpdGggcGVyY2VudGFnZXMgc2hvd3Mgd3JvbmcgaGV4
L2hzbCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvQnVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApp
bmRleCBlMzRmN2RiZDVlNzBjMjVjY2RjNzUzMTFhODkyNzUzMzc5N2I3N2ViLi5hMzI0NTNjZGY1
ZmEzMTRkMmY2NWZjY2EwZGRiMzRlMzUwZjljYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgUGFzc093blB0cjxBdWRp
b0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKEF1ZGlvQnVzKiBzb3VyY2VCdXMp
CiAgICAgICAgIAogICAgICAgICAgICAgLy8gRG8gdGhlIG1vbm8gbWl4ZG93bi4KICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kpCi0gICAgICAgICAgICAgICAgZGVz
dGluYXRpb25baV0gPSAwLjUgKiAoc291cmNlTFtpXSArIHNvdXJjZVJbaV0pOworICAgICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uW2ldID0gKHNvdXJjZUxbaV0gKyBzb3VyY2VSW2ldKSAvIDI7CiAK
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uQnVzLT5zZXRTYW1wbGVSYXRlKHNvdXJjZUJ1cy0+c2Ft
cGxlUmF0ZSgpKTsgICAgCiAgICAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb25CdXMucmVsZWFz
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmNwcAppbmRleCBmNTE0Y2RlYjU4
MjZmN2Q1YTFiODQ0ZDEwMzIzN2NkNmExMzUxMGEzLi4xYTIxMWExOTdkMTM1NzVkMDU5YjIxYTY5
NTJiNzgxZjRkOTljOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9Db25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmNwcApA
QCAtNDIsMTYgKzQyLDE2IEBAIENvbmVFZmZlY3Q6OkNvbmVFZmZlY3QoKQogewogfQogCi1kb3Vi
bGUgQ29uZUVmZmVjdDo6Z2FpbihGbG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24sIEZsb2F0UG9p
bnQzRCBzb3VyY2VPcmllbnRhdGlvbiwgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24pCitk
b3VibGUgQ29uZUVmZmVjdDo6Z2FpbihEb3VibGVQb2ludDNEIHNvdXJjZVBvc2l0aW9uLCBEb3Vi
bGVQb2ludDNEIHNvdXJjZU9yaWVudGF0aW9uLCBEb3VibGVQb2ludDNEIGxpc3RlbmVyUG9zaXRp
b24pCiB7CiAgICAgaWYgKHNvdXJjZU9yaWVudGF0aW9uLmlzWmVybygpIHx8ICgobV9pbm5lckFu
Z2xlID09IDM2MC4wKSAmJiAobV9vdXRlckFuZ2xlID09IDM2MC4wKSkpCiAgICAgICAgIHJldHVy
biAxLjA7IC8vIG5vIGNvbmUgc3BlY2lmaWVkIC0gdW5pdHkgZ2FpbgogCiAgICAgLy8gTm9ybWFs
aXplZCBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCi0gICAgRmxvYXRQb2ludDNEIHNvdXJjZVRvTGlz
dGVuZXIgPSBsaXN0ZW5lclBvc2l0aW9uIC0gc291cmNlUG9zaXRpb247CisgICAgRG91YmxlUG9p
bnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gbGlzdGVuZXJQb3NpdGlvbiAtIHNvdXJjZVBvc2l0aW9u
OwogICAgIHNvdXJjZVRvTGlzdGVuZXIubm9ybWFsaXplKCk7CiAKLSAgICBGbG9hdFBvaW50M0Qg
bm9ybWFsaXplZFNvdXJjZU9yaWVudGF0aW9uID0gc291cmNlT3JpZW50YXRpb247CisgICAgRG91
YmxlUG9pbnQzRCBub3JtYWxpemVkU291cmNlT3JpZW50YXRpb24gPSBzb3VyY2VPcmllbnRhdGlv
bjsKICAgICBub3JtYWxpemVkU291cmNlT3JpZW50YXRpb24ubm9ybWFsaXplKCk7CiAKICAgICAv
LyBBbmdsZSBiZXR3ZWVuIHRoZSBzb3VyY2Ugb3JpZW50YXRpb24gdmVjdG9yIGFuZCB0aGUgc291
cmNlLWxpc3RlbmVyIHZlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQ29uZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oCmluZGV4
IGY1NjYwMTgyZDczYjU1MmI4ZWRkYmMwNWE3OTdhNjQzODQ2ZDhiZDUuLmY4NDlhZWRmZDA3OTlm
NjkxMjU1M2M5MjQ1MDMzOGMxNzczNmYwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0NvbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9D
b25lLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIENvbmVFZmZlY3QoKTsKIAogICAg
IC8vIFJldHVybnMgc2NhbGFyIGdhaW4gZm9yIHRoZSBnaXZlbiBzb3VyY2UvbGlzdGVuZXIgcG9z
aXRpb25zL29yaWVudGF0aW9ucwotICAgIGRvdWJsZSBnYWluKEZsb2F0UG9pbnQzRCBzb3VyY2VQ
b3NpdGlvbiwgRmxvYXRQb2ludDNEIHNvdXJjZU9yaWVudGF0aW9uLCBGbG9hdFBvaW50M0QgbGlz
dGVuZXJQb3NpdGlvbik7CisgICAgZG91YmxlIGdhaW4oRG91YmxlUG9pbnQzRCBzb3VyY2VQb3Np
dGlvbiwgRG91YmxlUG9pbnQzRCBzb3VyY2VPcmllbnRhdGlvbiwgRG91YmxlUG9pbnQzRCBsaXN0
ZW5lclBvc2l0aW9uKTsKIAogICAgIC8vIEFuZ2xlcyBpbiBkZWdyZWVzCiAgICAgdm9pZCBzZXRJ
bm5lckFuZ2xlKGRvdWJsZSBpbm5lckFuZ2xlKSB7IG1faW5uZXJBbmdsZSA9IGlubmVyQW5nbGU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3IuY3BwCmluZGV4IDE1ZWVjOWY0MGFhZjZkMDIyMWFhNWU2YjMxMTU1MmU4NThkNzFjMzYu
LmMwNzEwNWExN2JjMWMzM2VmMjIzODJlOWNhMTJmYTNkYThiY2Q3ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAt
ODUsMTMgKzg1LDEzIEBAIGRvdWJsZSBEeW5hbWljc0NvbXByZXNzb3I6OnBhcmFtZXRlclZhbHVl
KHVuc2lnbmVkIHBhcmFtZXRlcklEKQogICAgIHJldHVybiBtX3BhcmFtZXRlcnNbcGFyYW1ldGVy
SURdOwogfQogCi12b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0RW1waGFzaXNTdGFnZVBhcmFt
ZXRlcnModW5zaWduZWQgc3RhZ2VJbmRleCwgZmxvYXQgZ2FpbiwgZmxvYXQgbm9ybWFsaXplZEZy
ZXF1ZW5jeSAvKiAwIC0+IDEgKi8pCit2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0RW1waGFz
aXNTdGFnZVBhcmFtZXRlcnModW5zaWduZWQgc3RhZ2VJbmRleCwgZG91YmxlIGdhaW4sIGRvdWJs
ZSBub3JtYWxpemVkRnJlcXVlbmN5IC8qIDAgLT4gMSAqLykKIHsKLSAgICBmbG9hdCBnayA9IDEg
LSBnYWluIC8gMjA7Ci0gICAgZmxvYXQgZjEgPSBub3JtYWxpemVkRnJlcXVlbmN5ICogZ2s7Ci0g
ICAgZmxvYXQgZjIgPSBub3JtYWxpemVkRnJlcXVlbmN5IC8gZ2s7Ci0gICAgZmxvYXQgcjEgPSBl
eHAoLWYxICogcGlEb3VibGUpOwotICAgIGZsb2F0IHIyID0gZXhwKC1mMiAqIHBpRG91YmxlKTsK
KyAgICBkb3VibGUgZ2sgPSAxIC0gZ2FpbiAvIDIwOworICAgIGRvdWJsZSBmMSA9IG5vcm1hbGl6
ZWRGcmVxdWVuY3kgKiBnazsKKyAgICBkb3VibGUgZjIgPSBub3JtYWxpemVkRnJlcXVlbmN5IC8g
Z2s7CisgICAgZG91YmxlIHIxID0gZXhwKC1mMSAqIHBpRG91YmxlKTsKKyAgICBkb3VibGUgcjIg
PSBleHAoLWYyICogcGlEb3VibGUpOwogCiAgICAgLy8gU2V0IHByZS1maWx0ZXIgemVybyBhbmQg
cG9sZSB0byBjcmVhdGUgYW4gZW1waGFzaXMgZmlsdGVyLgogICAgIG1fcHJlRmlsdGVyW3N0YWdl
SW5kZXhdLnNldFplcm8ocjEpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgRHluYW1pY3NDb21w
cmVzc29yOjpzZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVycyh1bnNpZ25lZCBzdGFnZUluZGV4LCBm
bG9hdCBnCiAgICAgbV9wb3N0RmlsdGVyUltzdGFnZUluZGV4XS5zZXRQb2xlKHIxKTsKIH0KIAot
dm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldEVtcGhhc2lzUGFyYW1ldGVycyhmbG9hdCBnYWlu
LCBmbG9hdCBhbmNob3JGcmVxLCBmbG9hdCBmaWx0ZXJTdGFnZVJhdGlvKQordm9pZCBEeW5hbWlj
c0NvbXByZXNzb3I6OnNldEVtcGhhc2lzUGFyYW1ldGVycyhkb3VibGUgZ2FpbiwgZG91YmxlIGFu
Y2hvckZyZXEsIGRvdWJsZSBmaWx0ZXJTdGFnZVJhdGlvKQogewogICAgIHNldEVtcGhhc2lzU3Rh
Z2VQYXJhbWV0ZXJzKDAsIGdhaW4sIGFuY2hvckZyZXEpOwogICAgIHNldEVtcGhhc2lzU3RhZ2VQ
YXJhbWV0ZXJzKDEsIGdhaW4sIGFuY2hvckZyZXEgLyBmaWx0ZXJTdGFnZVJhdGlvKTsKQEAgLTEz
MCw5ICsxMzAsOSBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2VzcyhBdWRpb0J1cyog
c291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsCiAgICAgZmxvYXQqIGRlc3RpbmF0
aW9uTCA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CiAgICAgZmxvYXQqIGRl
c3RpbmF0aW9uUiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDEpLT5kYXRhKCk7CiAKLSAgICBm
bG9hdCBmaWx0ZXJTdGFnZUdhaW4gPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUZpbHRlclN0YWdlR2Fp
bik7Ci0gICAgZmxvYXQgZmlsdGVyU3RhZ2VSYXRpbyA9IHBhcmFtZXRlclZhbHVlKFBhcmFtRmls
dGVyU3RhZ2VSYXRpbyk7Ci0gICAgZmxvYXQgYW5jaG9yID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1G
aWx0ZXJBbmNob3IpOworICAgIGRvdWJsZSBmaWx0ZXJTdGFnZUdhaW4gPSBwYXJhbWV0ZXJWYWx1
ZShQYXJhbUZpbHRlclN0YWdlR2Fpbik7CisgICAgZG91YmxlIGZpbHRlclN0YWdlUmF0aW8gPSBw
YXJhbWV0ZXJWYWx1ZShQYXJhbUZpbHRlclN0YWdlUmF0aW8pOworICAgIGRvdWJsZSBhbmNob3Ig
PSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUZpbHRlckFuY2hvcik7CiAKICAgICBpZiAoZmlsdGVyU3Rh
Z2VHYWluICE9IG1fbGFzdEZpbHRlclN0YWdlR2FpbiB8fCBmaWx0ZXJTdGFnZVJhdGlvICE9IG1f
bGFzdEZpbHRlclN0YWdlUmF0aW8gfHwgYW5jaG9yICE9IG1fbGFzdEFuY2hvcikgewogICAgICAg
ICBtX2xhc3RGaWx0ZXJTdGFnZUdhaW4gPSBmaWx0ZXJTdGFnZUdhaW47CkBAIC0xNTYsMTkgKzE1
NiwxOSBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNl
QnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsCiAgICAgICAgIG1fcHJlRmlsdGVyUlszXS5w
cm9jZXNzKGRlc3RpbmF0aW9uUiwgZGVzdGluYXRpb25SLCBmcmFtZXNUb1Byb2Nlc3MpOwogICAg
IH0KIAotICAgIGZsb2F0IGRiVGhyZXNob2xkID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1UaHJlc2hv
bGQpOwotICAgIGZsb2F0IGRiSGVhZHJvb20gPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUhlYWRyb29t
KTsKLSAgICBmbG9hdCBhdHRhY2tUaW1lID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1BdHRhY2spOwot
ICAgIGZsb2F0IHJlbGVhc2VUaW1lID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1SZWxlYXNlKTsKLSAg
ICBmbG9hdCBwcmVEZWxheVRpbWUgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVByZURlbGF5KTsKKyAg
ICBkb3VibGUgZGJUaHJlc2hvbGQgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVRocmVzaG9sZCk7Cisg
ICAgZG91YmxlIGRiSGVhZHJvb20gPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUhlYWRyb29tKTsKKyAg
ICBkb3VibGUgYXR0YWNrVGltZSA9IHBhcmFtZXRlclZhbHVlKFBhcmFtQXR0YWNrKTsKKyAgICBk
b3VibGUgcmVsZWFzZVRpbWUgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJlbGVhc2UpOworICAgIGRv
dWJsZSBwcmVEZWxheVRpbWUgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVByZURlbGF5KTsKIAogICAg
IC8vIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBtYXN0ZXIgdm9sdW1lIG9uIHRoZSBjb21wcmVzc2Vk
IHNpZ25hbCAocHJlLWJsZW5kaW5nKS4KLSAgICBmbG9hdCBkYlBvc3RHYWluID0gcGFyYW1ldGVy
VmFsdWUoUGFyYW1Qb3N0R2Fpbik7CisgICAgZG91YmxlIGRiUG9zdEdhaW4gPSBwYXJhbWV0ZXJW
YWx1ZShQYXJhbVBvc3RHYWluKTsKIAogICAgIC8vIExpbmVhciBibGVuZGluZyB2YWx1ZSBmcm9t
IGRyeSB0byBjb21wbGV0ZWx5IHByb2Nlc3NlZCAoMCAtPiAxKQogICAgIC8vIDAgbWVhbnMgdGhl
IHNpZ25hbCBpcyBjb21wbGV0ZWx5IHVucHJvY2Vzc2VkLgogICAgIC8vIDEgbWl4ZXMgaW4gb25s
eSB0aGUgY29tcHJlc3NlZCBzaWduYWwuCi0gICAgZmxvYXQgZWZmZWN0QmxlbmQgPSBwYXJhbWV0
ZXJWYWx1ZShQYXJhbUVmZmVjdEJsZW5kKTsKKyAgICBkb3VibGUgZWZmZWN0QmxlbmQgPSBwYXJh
bWV0ZXJWYWx1ZShQYXJhbUVmZmVjdEJsZW5kKTsKIAogICAgIGRvdWJsZSByZWxlYXNlWm9uZTEg
PSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJlbGVhc2Vab25lMSk7CiAgICAgZG91YmxlIHJlbGVhc2Va
b25lMiA9IHBhcmFtZXRlclZhbHVlKFBhcmFtUmVsZWFzZVpvbmUyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKaW5kZXggZDBjMDM2
ZjI5YWVlYzQxNzZjYzU0M2NjOGMxNWQyMWI4NDE5NTBhZi4uMjczODU3N2JjODFiMTA5Nzg2MDY4
MzNlNDMzNGM4NzkyNjA0NTkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTg0LDkgKzg0LDkgQEAgcHJvdGVjdGVkOgog
ICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CiAKICAgICAvLyBFbXBoYXNpcyBmaWx0ZXIgY29udHJv
bHMuCi0gICAgZmxvYXQgbV9sYXN0RmlsdGVyU3RhZ2VSYXRpbzsKLSAgICBmbG9hdCBtX2xhc3RB
bmNob3I7Ci0gICAgZmxvYXQgbV9sYXN0RmlsdGVyU3RhZ2VHYWluOworICAgIGRvdWJsZSBtX2xh
c3RGaWx0ZXJTdGFnZVJhdGlvOworICAgIGRvdWJsZSBtX2xhc3RBbmNob3I7CisgICAgZG91Ymxl
IG1fbGFzdEZpbHRlclN0YWdlR2FpbjsKIAogICAgIC8vIEVtcGhhc2lzIGZpbHRlcnMuCiAgICAg
WmVyb1BvbGUgbV9wcmVGaWx0ZXJbNF07CkBAIC05NCw4ICs5NCw4IEBAIHByb3RlY3RlZDoKICAg
ICBaZXJvUG9sZSBtX3Bvc3RGaWx0ZXJbNF07CiAgICAgWmVyb1BvbGUgbV9wb3N0RmlsdGVyUls0
XTsKIAotICAgIHZvaWQgc2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnModW5zaWduZWQgc3RhZ2VJ
bmRleCwgZmxvYXQgZ2FpbiwgZmxvYXQgbm9ybWFsaXplZEZyZXF1ZW5jeSAvKiAwIC0+IDEgKi8p
OwotICAgIHZvaWQgc2V0RW1waGFzaXNQYXJhbWV0ZXJzKGZsb2F0IGdhaW4sIGZsb2F0IGFuY2hv
ckZyZXEsIGZsb2F0IGZpbHRlclN0YWdlUmF0aW8pOworICAgIHZvaWQgc2V0RW1waGFzaXNTdGFn
ZVBhcmFtZXRlcnModW5zaWduZWQgc3RhZ2VJbmRleCwgZG91YmxlIGdhaW4sIGRvdWJsZSBub3Jt
YWxpemVkRnJlcXVlbmN5IC8qIDAgLT4gMSAqLyk7CisgICAgdm9pZCBzZXRFbXBoYXNpc1BhcmFt
ZXRlcnMoZG91YmxlIGdhaW4sIGRvdWJsZSBhbmNob3JGcmVxLCBkb3VibGUgZmlsdGVyU3RhZ2VS
YXRpbyk7CiAKICAgICAvLyBUaGUgY29yZSBjb21wcmVzc29yLgogICAgIER5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbCBtX2NvbXByZXNzb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRleCBhMDcyMzQ2
MWJiMjFjNTNjYTcxNmZkNmZlN2I2YzU3ZDQ4N2MzYmJmLi40MDEyY2E0ZGE2ODU2OGFlM2E3ZjRh
MDBiZGY1ODE2MTk0ZWEzODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCIKIAogI2luY2x1ZGUgIkF1
ZGlvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTY1LDEwICs2Niwx
MCBAQCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChk
b3VibGUgc2FtcGxlUmF0ZSkKICAgICBtX21ldGVyaW5nUmVsZWFzZUsgPSBkaXNjcmV0ZVRpbWVD
b25zdGFudEZvclNhbXBsZVJhdGUobWV0ZXJpbmdSZWxlYXNlVGltZUNvbnN0YW50LCBzYW1wbGVS
YXRlKTsKIH0KIAotdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldFByZURlbGF5VGlt
ZShmbG9hdCBwcmVEZWxheVRpbWUpCit2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0
UHJlRGVsYXlUaW1lKGRvdWJsZSBwcmVEZWxheVRpbWUpCiB7CiAgICAgLy8gUmUtY29uZmlndXJl
IGxvb2stYWhlYWQgc2VjdGlvbiBwcmUtZGVsYXkgaWYgZGVsYXkgdGltZSBoYXMgY2hhbmdlZC4K
LSAgICB1bnNpZ25lZCBwcmVEZWxheUZyYW1lcyA9IHByZURlbGF5VGltZSAvIHNhbXBsZVJhdGUo
KTsKKyAgICB1bnNpZ25lZCBwcmVEZWxheUZyYW1lcyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
cHJlRGVsYXlUaW1lIC8gc2FtcGxlUmF0ZSgpKTsKICAgICBpZiAocHJlRGVsYXlGcmFtZXMgPiBN
YXhQcmVEZWxheUZyYW1lcyAtIDEpCiAgICAgICAgIHByZURlbGF5RnJhbWVzID0gTWF4UHJlRGVs
YXlGcmFtZXMgLSAxOwogICAgICAgICAKQEAgLTg3LDI1ICs4OCwyNSBAQCB2b2lkIER5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlTCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvblIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MsCiAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRiVGhyZXNob2xk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGJIZWFkcm9v
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGF0dGFja1Rp
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCByZWxlYXNl
VGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHByZURl
bGF5VGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRi
UG9zdEdhaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBl
ZmZlY3RCbGVuZCwgLyogZXF1YWwgcG93ZXIgY3Jvc3NmYWRlICovCi0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJlbGVhc2Vab25lMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJlbGVhc2Vab25lMiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJlbGVhc2Vab25lMywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJlbGVhc2Vab25lNAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRiVGhyZXNob2xkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRiSGVhZHJvb20s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgYXR0YWNrVGlt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxlYXNl
VGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBwcmVE
ZWxheVRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
ZGJQb3N0R2FpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSBlZmZlY3RCbGVuZCwgLyogZXF1YWwgcG93ZXIgY3Jvc3NmYWRlICovCisKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxlYXNlWm9uZTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgcmVsZWFzZVpvbmUyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHJlbGVhc2Vab25lMywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxlYXNlWm9u
ZTQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKIHsKICAgICBib29s
IGlzU3RlcmVvID0gZGVzdGluYXRpb25SOwotICAgIGZsb2F0IHNhbXBsZVJhdGUgPSB0aGlzLT5z
YW1wbGVSYXRlKCk7CisgICAgZG91YmxlIHNhbXBsZVJhdGUgPSB0aGlzLT5zYW1wbGVSYXRlKCk7
CiAKLSAgICBmbG9hdCBkcnlNaXggPSAxIC0gZWZmZWN0QmxlbmQ7Ci0gICAgZmxvYXQgd2V0TWl4
ID0gZWZmZWN0QmxlbmQ7CisgICAgZG91YmxlIGRyeU1peCA9IDEgLSBlZmZlY3RCbGVuZDsKKyAg
ICBkb3VibGUgd2V0TWl4ID0gZWZmZWN0QmxlbmQ7CiAKICAgICAvLyBUaHJlc2hvbGQgYW5kIGhl
YWRyb29tLgogICAgIGRvdWJsZSBsaW5lYXJUaHJlc2hvbGQgPSBkZWNpYmVsc1RvTGluZWFyKGRi
VGhyZXNob2xkKTsKQEAgLTEyMSwxNCArMTIyLDE0IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VMLAogICAgIC8vIEVtcGlyaWNhbC9wZXJjZXB0
dWFsIHR1bmluZy4KICAgICBmdWxsUmFuZ2VNYWtldXBHYWluID0gcG93KGZ1bGxSYW5nZU1ha2V1
cEdhaW4sIDAuNik7CiAKLSAgICBmbG9hdCBtYXN0ZXJMaW5lYXJHYWluID0gZGVjaWJlbHNUb0xp
bmVhcihkYlBvc3RHYWluKSAqIGZ1bGxSYW5nZU1ha2V1cEdhaW47CisgICAgZG91YmxlIG1hc3Rl
ckxpbmVhckdhaW4gPSBkZWNpYmVsc1RvTGluZWFyKGRiUG9zdEdhaW4pICogZnVsbFJhbmdlTWFr
ZXVwR2FpbjsKIAogICAgIC8vIEF0dGFjayBwYXJhbWV0ZXJzLgotICAgIGF0dGFja1RpbWUgPSBt
YXgoMC4wMDFmLCBhdHRhY2tUaW1lKTsKLSAgICBmbG9hdCBhdHRhY2tGcmFtZXMgPSBhdHRhY2tU
aW1lICogc2FtcGxlUmF0ZTsKKyAgICBhdHRhY2tUaW1lID0gbWF4KDAuMDAxLCBhdHRhY2tUaW1l
KTsKKyAgICBkb3VibGUgYXR0YWNrRnJhbWVzID0gYXR0YWNrVGltZSAqIHNhbXBsZVJhdGU7CiAK
ICAgICAvLyBSZWxlYXNlIHBhcmFtZXRlcnMuCi0gICAgZmxvYXQgcmVsZWFzZUZyYW1lcyA9IHNh
bXBsZVJhdGUgKiByZWxlYXNlVGltZTsKKyAgICBkb3VibGUgcmVsZWFzZUZyYW1lcyA9IHNhbXBs
ZVJhdGUgKiByZWxlYXNlVGltZTsKICAgICAKICAgICAvLyBEZXRlY3RvciByZWxlYXNlIHRpbWUu
CiAgICAgZG91YmxlIHNhdFJlbGVhc2VUaW1lID0gMC4wMDI1OwpAQCAtMTc0LDcgKzE3NSw3IEBA
IHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VMLAog
ICAgICAgICBpZiAoaXNpbmYobV9kZXRlY3RvckF2ZXJhZ2UpKQogICAgICAgICAgICAgbV9kZXRl
Y3RvckF2ZXJhZ2UgPSAxOwogCi0gICAgICAgIGZsb2F0IGRlc2lyZWRHYWluID0gbV9kZXRlY3Rv
ckF2ZXJhZ2U7CisgICAgICAgIGRvdWJsZSBkZXNpcmVkR2FpbiA9IG1fZGV0ZWN0b3JBdmVyYWdl
OwogCiAgICAgICAgIC8vIFByZS13YXJwIHNvIHdlIGdldCBkZXNpcmVkR2FpbiBhZnRlciBzaW4o
KSB3YXJwIGJlbG93LgogICAgICAgICBkb3VibGUgc2NhbGVkRGVzaXJlZEdhaW4gPSBhc2luKGRl
c2lyZWRHYWluKSAvICgwLjUgKiBwaURvdWJsZSk7CkBAIC0xODUsNyArMTg2LDcgQEAgdm9pZCBE
eW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAKICAgICAg
ICAgLy8gZW52ZWxvcGVSYXRlIGlzIHRoZSByYXRlIHdlIHNsZXcgZnJvbSBjdXJyZW50IGNvbXBy
ZXNzb3IgbGV2ZWwgdG8gdGhlIGRlc2lyZWQgbGV2ZWwuCiAgICAgICAgIC8vIFRoZSBleGFjdCBy
YXRlIGRlcGVuZHMgb24gaWYgd2UncmUgYXR0YWNraW5nIG9yIHJlbGVhc2luZyBhbmQgYnkgaG93
IG11Y2guCi0gICAgICAgIGZsb2F0IGVudmVsb3BlUmF0ZTsKKyAgICAgICAgZG91YmxlIGVudmVs
b3BlUmF0ZTsKIAogICAgICAgICBib29sIGlzUmVsZWFzaW5nID0gc2NhbGVkRGVzaXJlZEdhaW4g
PiBtX2NvbXByZXNzb3JHYWluOwogCkBAIC0yMzUsNyArMjM2LDcgQEAgdm9pZCBEeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAgICAgICAgICAgICBpZiAo
bV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYiA9PSAtMSB8fCBtX21heEF0dGFja0NvbXByZXNz
aW9uRGlmZkRiIDwgY29tcHJlc3Npb25EaWZmRGIpCiAgICAgICAgICAgICAgICAgbV9tYXhBdHRh
Y2tDb21wcmVzc2lvbkRpZmZEYiA9IGNvbXByZXNzaW9uRGlmZkRiOwogCi0gICAgICAgICAgICBk
b3VibGUgZWZmQXR0ZW5EaWZmRGIgPSBtYXgoMC41ZiwgbV9tYXhBdHRhY2tDb21wcmVzc2lvbkRp
ZmZEYik7CisgICAgICAgICAgICBkb3VibGUgZWZmQXR0ZW5EaWZmRGIgPSBtYXgoMC41LCBtX21h
eEF0dGFja0NvbXByZXNzaW9uRGlmZkRiKTsKIAogICAgICAgICAgICAgZG91YmxlIHggPSAwLjI1
IC8gZWZmQXR0ZW5EaWZmRGI7CiAgICAgICAgICAgICBlbnZlbG9wZVJhdGUgPSAxIC0gcG93KHgs
IGRvdWJsZSgxIC8gYXR0YWNrRnJhbWVzKSk7CkBAIC0yNDYsMjMgKzI0NywyMyBAQCB2b2lkIER5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlTCwKICAgICAgICAg
Ly8gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKICAgICAgICAgewotICAgICAg
ICAgICAgZmxvYXQqIGRlbGF5QnVmZmVyTCA9IG1fcHJlRGVsYXlCdWZmZXJMLmRhdGEoKTsKLSAg
ICAgICAgICAgIGZsb2F0KiBkZWxheUJ1ZmZlclIgPSBtX3ByZURlbGF5QnVmZmVyUi5kYXRhKCk7
CisgICAgICAgICAgICBkb3VibGUqIGRlbGF5QnVmZmVyTCA9IG1fcHJlRGVsYXlCdWZmZXJMLmRh
dGEoKTsKKyAgICAgICAgICAgIGRvdWJsZSogZGVsYXlCdWZmZXJSID0gbV9wcmVEZWxheUJ1ZmZl
clIuZGF0YSgpOwogICAgICAgICAgICAgaW50IHByZURlbGF5UmVhZEluZGV4ID0gbV9wcmVEZWxh
eVJlYWRJbmRleDsKICAgICAgICAgICAgIGludCBwcmVEZWxheVdyaXRlSW5kZXggPSBtX3ByZURl
bGF5V3JpdGVJbmRleDsKLSAgICAgICAgICAgIGZsb2F0IGRldGVjdG9yQXZlcmFnZSA9IG1fZGV0
ZWN0b3JBdmVyYWdlOwotICAgICAgICAgICAgZmxvYXQgY29tcHJlc3NvckdhaW4gPSBtX2NvbXBy
ZXNzb3JHYWluOworICAgICAgICAgICAgZG91YmxlIGRldGVjdG9yQXZlcmFnZSA9IG1fZGV0ZWN0
b3JBdmVyYWdlOworICAgICAgICAgICAgZG91YmxlIGNvbXByZXNzb3JHYWluID0gbV9jb21wcmVz
c29yR2FpbjsKIAogICAgICAgICAgICAgaW50IGxvb3BGcmFtZXMgPSBuRGl2aXNpb25GcmFtZXM7
CiAgICAgICAgICAgICB3aGlsZSAobG9vcEZyYW1lcy0tKSB7Ci0gICAgICAgICAgICAgICAgZmxv
YXQgY29tcHJlc3NvcklucHV0OwotICAgICAgICAgICAgICAgIGZsb2F0IGlucHV0TDsKLSAgICAg
ICAgICAgICAgICBmbG9hdCBpbnB1dFIgPSAwOworICAgICAgICAgICAgICAgIGRvdWJsZSBjb21w
cmVzc29ySW5wdXQ7CisgICAgICAgICAgICAgICAgZG91YmxlIGlucHV0TDsKKyAgICAgICAgICAg
ICAgICBkb3VibGUgaW5wdXRSID0gMDsKIAogICAgICAgICAgICAgICAgIC8vIFByZWRlbGF5IHNp
Z25hbCwgY29tcHV0aW5nIGNvbXByZXNzaW9uIGFtb3VudCBmcm9tIHVuLWRlbGF5ZWQgdmVyc2lv
bi4KICAgICAgICAgICAgICAgICBpZiAoaXNTdGVyZW8pIHsKLSAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgdW5kZWxheWVkTCA9ICpzb3VyY2VMKys7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0
IHVuZGVsYXllZFIgPSAqc291cmNlUisrOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgdW5k
ZWxheWVkTCA9ICpzb3VyY2VMKys7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB1bmRlbGF5
ZWRSID0gKnNvdXJjZVIrKzsKIAogICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29ySW5wdXQg
PSAwLjUgKiAodW5kZWxheWVkTCArIHVuZGVsYXllZFIpOwogCkBAIC0yODMsNyArMjg0LDcgQEAg
dm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAK
ICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgc2hhcGVkIHBvd2VyIG9uIHVuZGVsYXllZCBp
bnB1dC4KIAotICAgICAgICAgICAgICAgIGZsb2F0IHNjYWxlZElucHV0ID0gY29tcHJlc3Nvcklu
cHV0OworICAgICAgICAgICAgICAgIGRvdWJsZSBzY2FsZWRJbnB1dCA9IGNvbXByZXNzb3JJbnB1
dDsKICAgICAgICAgICAgICAgICBkb3VibGUgYWJzSW5wdXQgPSBzY2FsZWRJbnB1dCA+IDAgPyBz
Y2FsZWRJbnB1dCA6IC1zY2FsZWRJbnB1dDsKIAogICAgICAgICAgICAgICAgIC8vIFB1dCB0aHJv
dWdoIHNoYXBpbmcgY3VydmUuCkBAIC0zMDQsNyArMzA1LDcgQEAgdm9pZCBEeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAgICAgICAgICAgICAgICAgZG91
YmxlIHJhdGUgPSBpc1JlbGVhc2UgPyBzYXRSZWxlYXNlUmF0ZSA6IDE7CiAKICAgICAgICAgICAg
ICAgICBkZXRlY3RvckF2ZXJhZ2UgKz0gKGF0dGVudWF0aW9uIC0gZGV0ZWN0b3JBdmVyYWdlKSAq
IHJhdGU7Ci0gICAgICAgICAgICAgICAgZGV0ZWN0b3JBdmVyYWdlID0gbWluKDEuMGYsIGRldGVj
dG9yQXZlcmFnZSk7CisgICAgICAgICAgICAgICAgZGV0ZWN0b3JBdmVyYWdlID0gbWluKDEuMCwg
ZGV0ZWN0b3JBdmVyYWdlKTsKIAogICAgICAgICAgICAgICAgIC8vIEZpeCBncmVtbGlucy4KICAg
ICAgICAgICAgICAgICBpZiAoaXNuYW4oZGV0ZWN0b3JBdmVyYWdlKSkKQEAgLTMxOSw3ICszMjAs
NyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNl
TCwKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBSZWxl
YXNlIC0gZXhwb25lbnRpYWxseSBpbmNyZWFzZSBnYWluIHRvIDEuMAogICAgICAgICAgICAgICAg
ICAgICBjb21wcmVzc29yR2FpbiAqPSBlbnZlbG9wZVJhdGU7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbXByZXNzb3JHYWluID0gbWluKDEuMGYsIGNvbXByZXNzb3JHYWluKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29tcHJlc3NvckdhaW4gPSBtaW4oMS4wLCBjb21wcmVzc29yR2Fpbik7CiAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gV2FycCBwcmUtY29tcHJlc3Npb24g
Z2FpbiB0byBzbW9vdGggb3V0IHNoYXJwIGV4cG9uZW50aWFsIHRyYW5zaXRpb24gcG9pbnRzLgpA
QCAtMzM3LDE2ICszMzgsMTYgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nl
c3MoZmxvYXQqIHNvdXJjZUwsCiAKICAgICAgICAgICAgICAgICAvLyBBcHBseSBmaW5hbCBnYWlu
LgogICAgICAgICAgICAgICAgIGlmIChpc1N0ZXJlbykgewotICAgICAgICAgICAgICAgICAgICBm
bG9hdCBvdXRwdXRMID0gaW5wdXRMOwotICAgICAgICAgICAgICAgICAgICBmbG9hdCBvdXRwdXRS
ID0gaW5wdXRSOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgb3V0cHV0TCA9IGlucHV0TDsK
KyAgICAgICAgICAgICAgICAgICAgZG91YmxlIG91dHB1dFIgPSBpbnB1dFI7CiAKICAgICAgICAg
ICAgICAgICAgICAgb3V0cHV0TCAqPSB0b3RhbEdhaW47CiAgICAgICAgICAgICAgICAgICAgIG91
dHB1dFIgKj0gdG90YWxHYWluOwogCi0gICAgICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvbkwr
KyA9IG91dHB1dEw7Ci0gICAgICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvblIrKyA9IG91dHB1
dFI7CisgICAgICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvbkwrKyA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQob3V0cHV0TCk7CisgICAgICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvblIrKyA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQob3V0cHV0Uik7CiAgICAgICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvbkwrKyA9IGlucHV0TCAqIHRvdGFsR2Fp
bjsKKyAgICAgICAgICAgICAgICAgICAgKmRlc3RpbmF0aW9uTCsrID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdChpbnB1dEwgKiB0b3RhbEdhaW4pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAvLyBMb2NhbHMgYmFjayB0byBtZW1iZXIgdmFyaWFibGVzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAppbmRl
eCBhNmU3MGQzNTBmMTIwMjdkMDc4MDZlODExOWMxZjMyYTM1YmY2NTFiLi45ZWU4MWEzZGUyODE2
ZDRlZjkyYTUxYzhkNDc3ZjE0ZjM2NjQzZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaApAQCAtNDQsNDkg
KzQ0LDQ5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgZmxvYXQgKmRlc3RpbmF0aW9uUiwK
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzLAogCi0gICAgICAgICAg
ICAgICAgIGZsb2F0IGRiVGhyZXNob2xkLAotICAgICAgICAgICAgICAgICBmbG9hdCBkYkhlYWRy
b29tLAotICAgICAgICAgICAgICAgICBmbG9hdCBhdHRhY2tUaW1lLAotICAgICAgICAgICAgICAg
ICBmbG9hdCByZWxlYXNlVGltZSwKLSAgICAgICAgICAgICAgICAgZmxvYXQgcHJlRGVsYXlUaW1l
LAotICAgICAgICAgICAgICAgICBmbG9hdCBkYlBvc3RHYWluLAotICAgICAgICAgICAgICAgICBm
bG9hdCBlZmZlY3RCbGVuZCwKLQotICAgICAgICAgICAgICAgICBmbG9hdCByZWxlYXNlWm9uZTEs
Ci0gICAgICAgICAgICAgICAgIGZsb2F0IHJlbGVhc2Vab25lMiwKLSAgICAgICAgICAgICAgICAg
ZmxvYXQgcmVsZWFzZVpvbmUzLAotICAgICAgICAgICAgICAgICBmbG9hdCByZWxlYXNlWm9uZTQK
KyAgICAgICAgICAgICAgICAgZG91YmxlIGRiVGhyZXNob2xkLAorICAgICAgICAgICAgICAgICBk
b3VibGUgZGJIZWFkcm9vbSwKKyAgICAgICAgICAgICAgICAgZG91YmxlIGF0dGFja1RpbWUsCisg
ICAgICAgICAgICAgICAgIGRvdWJsZSByZWxlYXNlVGltZSwKKyAgICAgICAgICAgICAgICAgZG91
YmxlIHByZURlbGF5VGltZSwKKyAgICAgICAgICAgICAgICAgZG91YmxlIGRiUG9zdEdhaW4sCisg
ICAgICAgICAgICAgICAgIGRvdWJsZSBlZmZlY3RCbGVuZCwKKworICAgICAgICAgICAgICAgICBk
b3VibGUgcmVsZWFzZVpvbmUxLAorICAgICAgICAgICAgICAgICBkb3VibGUgcmVsZWFzZVpvbmUy
LAorICAgICAgICAgICAgICAgICBkb3VibGUgcmVsZWFzZVpvbmUzLAorICAgICAgICAgICAgICAg
ICBkb3VibGUgcmVsZWFzZVpvbmU0CiAgICAgICAgICAgICAgICAgICk7CiAKICAgICB2b2lkIHJl
c2V0KCk7CiAKICAgICB1bnNpZ25lZCBsYXRlbmN5RnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0UHJlRGVsYXlGcmFtZXM7IH0KIAotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2FtcGxlUmF0ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZmxvYXQgbV9zYW1wbGVSYXRl
OworICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CiAgICAgCi0gICAgZmxvYXQgbV9kZXRlY3RvckF2
ZXJhZ2U7Ci0gICAgZmxvYXQgbV9jb21wcmVzc29yR2FpbjsKKyAgICBkb3VibGUgbV9kZXRlY3Rv
ckF2ZXJhZ2U7CisgICAgZG91YmxlIG1fY29tcHJlc3NvckdhaW47CiAKICAgICAvLyBNZXRlcmlu
ZwotICAgIGZsb2F0IG1fbWV0ZXJpbmdSZWxlYXNlSzsKLSAgICBmbG9hdCBtX21ldGVyaW5nR2Fp
bjsKKyAgICBkb3VibGUgbV9tZXRlcmluZ1JlbGVhc2VLOworICAgIGRvdWJsZSBtX21ldGVyaW5n
R2FpbjsKIAogICAgIC8vIExvb2thaGVhZCBzZWN0aW9uLgogICAgIGVudW0geyBNYXhQcmVEZWxh
eUZyYW1lcyA9IDEwMjQgfTsKICAgICBlbnVtIHsgTWF4UHJlRGVsYXlGcmFtZXNNYXNrID0gTWF4
UHJlRGVsYXlGcmFtZXMgLSAxIH07CiAgICAgZW51bSB7IERlZmF1bHRQcmVEZWxheUZyYW1lcyA9
IDI1NiB9OyAvLyBzZXRQcmVEZWxheVRpbWUoKSB3aWxsIG92ZXJyaWRlIHRoaXMgaW5pdGlhbCB2
YWx1ZQogICAgIHVuc2lnbmVkIG1fbGFzdFByZURlbGF5RnJhbWVzOwotICAgIHZvaWQgc2V0UHJl
RGVsYXlUaW1lKGZsb2F0KTsKKyAgICB2b2lkIHNldFByZURlbGF5VGltZShkb3VibGUpOwogCi0g
ICAgQXVkaW9GbG9hdEFycmF5IG1fcHJlRGVsYXlCdWZmZXJMOwotICAgIEF1ZGlvRmxvYXRBcnJh
eSBtX3ByZURlbGF5QnVmZmVyUjsKKyAgICBBdWRpb0RvdWJsZUFycmF5IG1fcHJlRGVsYXlCdWZm
ZXJMOworICAgIEF1ZGlvRG91YmxlQXJyYXkgbV9wcmVEZWxheUJ1ZmZlclI7CiAgICAgaW50IG1f
cHJlRGVsYXlSZWFkSW5kZXg7CiAgICAgaW50IG1fcHJlRGVsYXlXcml0ZUluZGV4OwogCi0gICAg
ZmxvYXQgbV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYjsKKyAgICBkb3VibGUgbV9tYXhBdHRh
Y2tDb21wcmVzc2lvbkRpZmZEYjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcAppbmRleCA5ZDk5YTRkOTIwYmY3
YjJkODg2NTY3ZDk2NTg2MjZjZmUyMmViMTJmLi4wNzViZWI4ZjhjZmIxZDQ3NTJhZGU5NWQzNzM1
NTUyMWIyNTQxYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9a
ZXJvUG9sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUu
Y3BwCkBAIC0zMiwzMyArMzIsMzUgQEAKIAogI2luY2x1ZGUgIlplcm9Qb2xlLmgiCiAKKyNpbmNs
dWRlICJGbG9hdENvbnZlcnNpb24uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFpl
cm9Qb2xlOjpwcm9jZXNzKGZsb2F0ICpzb3VyY2UsIGZsb2F0ICpkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgZnJhbWVzVG9Qcm9jZXNzKQogewotICAgIGZsb2F0IHplcm8gPSBtX3plcm87Ci0gICAgZmxv
YXQgcG9sZSA9IG1fcG9sZTsKKyAgICBkb3VibGUgemVybyA9IG1femVybzsKKyAgICBkb3VibGUg
cG9sZSA9IG1fcG9sZTsKIAogICAgIC8vIEdhaW4gY29tcGVuc2F0aW9uIHRvIG1ha2UgMGRCIEAg
MEh6Ci0gICAgY29uc3QgZmxvYXQgazEgPSAxIC8gKDEgLSB6ZXJvKTsKLSAgICBjb25zdCBmbG9h
dCBrMiA9IDEgLSBwb2xlOworICAgIGNvbnN0IGRvdWJsZSBrMSA9IDEgLyAoMSAtIHplcm8pOwor
ICAgIGNvbnN0IGRvdWJsZSBrMiA9IDEgLSBwb2xlOwogICAgIAogICAgIC8vIE1lbWJlciB2YXJp
YWJsZXMgdG8gbG9jYWxzLgotICAgIGZsb2F0IGxhc3RYID0gbV9sYXN0WDsKLSAgICBmbG9hdCBs
YXN0WSA9IG1fbGFzdFk7CisgICAgZG91YmxlIGxhc3RYID0gbV9sYXN0WDsKKyAgICBkb3VibGUg
bGFzdFkgPSBtX2xhc3RZOwogCiAgICAgd2hpbGUgKGZyYW1lc1RvUHJvY2Vzcy0tKSB7CiAgICAg
ICAgIGZsb2F0IGlucHV0ID0gKnNvdXJjZSsrOwogCiAgICAgICAgIC8vIFplcm8KLSAgICAgICAg
ZmxvYXQgb3V0cHV0MSA9IGsxICogKGlucHV0IC0gemVybyAqIGxhc3RYKTsKKyAgICAgICAgZG91
YmxlIG91dHB1dDEgPSBrMSAqIChpbnB1dCAtIHplcm8gKiBsYXN0WCk7CiAgICAgICAgIGxhc3RY
ID0gaW5wdXQ7CiAKICAgICAgICAgLy8gUG9sZQotICAgICAgICBmbG9hdCBvdXRwdXQyID0gazIg
KiBvdXRwdXQxICsgcG9sZSAqIGxhc3RZOworICAgICAgICBkb3VibGUgb3V0cHV0MiA9IGsyICog
b3V0cHV0MSArIHBvbGUgKiBsYXN0WTsKICAgICAgICAgbGFzdFkgPSBvdXRwdXQyOwogCi0gICAg
ICAgICpkZXN0aW5hdGlvbisrID0gb3V0cHV0MjsKKyAgICAgICAgKmRlc3RpbmF0aW9uKysgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG91dHB1dDIpOwogICAgIH0KICAgICAKICAgICAvLyBMb2Nh
bHMgdG8gbWVtYmVyIHZhcmlhYmxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1plcm9Qb2xlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJv
UG9sZS5oCmluZGV4IDkzZmQwZDZmOTc1MzdhNWYyYTA3NmJhNGY5ZjY2MjI4YTcyMzliYTMuLjhl
NmZkYjM2YTcyZDlhMDBkODc5NzIzMzVhY2EyNTU4ZWQ0NjdiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAg
ICAvLyBSZXNldCBmaWx0ZXIgc3RhdGUuCiAgICAgdm9pZCByZXNldCgpIHsgbV9sYXN0WCA9IDA7
IG1fbGFzdFkgPSAwOyB9CiAgICAgCi0gICAgdm9pZCBzZXRaZXJvKGZsb2F0IHplcm8pIHsgbV96
ZXJvID0gemVybzsgfQotICAgIHZvaWQgc2V0UG9sZShmbG9hdCBwb2xlKSB7IG1fcG9sZSA9IHBv
bGU7IH0KKyAgICB2b2lkIHNldFplcm8oZG91YmxlIHplcm8pIHsgbV96ZXJvID0gemVybzsgfQor
ICAgIHZvaWQgc2V0UG9sZShkb3VibGUgcG9sZSkgeyBtX3BvbGUgPSBwb2xlOyB9CiAgICAgCi0g
ICAgZmxvYXQgemVybygpIGNvbnN0IHsgcmV0dXJuIG1femVybzsgfQotICAgIGZsb2F0IHBvbGUo
KSBjb25zdCB7IHJldHVybiBtX3BvbGU7IH0KKyAgICBkb3VibGUgemVybygpIGNvbnN0IHsgcmV0
dXJuIG1femVybzsgfQorICAgIGRvdWJsZSBwb2xlKCkgY29uc3QgeyByZXR1cm4gbV9wb2xlOyB9
CiAKIHByaXZhdGU6Ci0gICAgZmxvYXQgbV96ZXJvOwotICAgIGZsb2F0IG1fcG9sZTsKLSAgICBm
bG9hdCBtX2xhc3RYOwotICAgIGZsb2F0IG1fbGFzdFk7CisgICAgZG91YmxlIG1femVybzsKKyAg
ICBkb3VibGUgbV9wb2xlOworICAgIGRvdWJsZSBtX2xhc3RYOworICAgIGRvdWJsZSBtX2xhc3RZ
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5jcHAKaW5kZXggZWQxODE2YmRkN2E4YzYyMjQx
MDk1ZDQ4MzVhZTliOTExMGY2NmI2ZC4uY2NlMDBjODI0OTg3ZGE0ZDJkODU2MWI1NWNiNWI5MWM1
YzM4MGQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRQb2ludDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFBvaW50M0QuY3BwCkBAIC0yMywyMCArMjMsMyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludDNE
LmgiCiAKLSNpbmNsdWRlIDxtYXRoLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBG
bG9hdFBvaW50M0Q6Om5vcm1hbGl6ZSgpCi17Ci0gICAgZmxvYXQgdGVtcExlbmd0aCA9IGxlbmd0
aCgpOwotCi0gICAgaWYgKHRlbXBMZW5ndGgpIHsKLSAgICAgICAgbV94IC89IHRlbXBMZW5ndGg7
Ci0gICAgICAgIG1feSAvPSB0ZW1wTGVuZ3RoOwotICAgICAgICBtX3ogLz0gdGVtcExlbmd0aDsK
LSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaAppbmRleCBiYTBlZTlkOTQ3MWRmNWU5
NzY2YTUwMzIyYjVmNWM0Y2I0MDhjOGVjLi4yNWNiNTYzODI0NzI3NTU1NTY2ZGVlMTJjYzE4ODQ0
NzczZWZkZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFBvaW50M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFBvaW50M0QuaApAQCAtMjcsNTcgKzI3LDU4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgRmxvYXRQb2ludDNEIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgRmxvYXRQ
b2ludDNEQmFzZSB7CiBwdWJsaWM6Ci0gICAgRmxvYXRQb2ludDNEKCkKKyAgICBGbG9hdFBvaW50
M0RCYXNlKCkKICAgICAgICAgOiBtX3goMCkKICAgICAgICAgLCBtX3koMCkKICAgICAgICAgLCBt
X3ooMCkKICAgICB7CiAgICAgfQogCi0gICAgRmxvYXRQb2ludDNEKGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHopCisgICAgRmxvYXRQb2ludDNEQmFzZShUIHgsIFQgeSwgVCB6KQogICAgICAgICA6
IG1feCh4KQogICAgICAgICAsIG1feSh5KQogICAgICAgICAsIG1feih6KQogICAgIHsKICAgICB9
CiAKLSAgICBGbG9hdFBvaW50M0QoY29uc3QgRmxvYXRQb2ludCYgcCkKKyAgICBGbG9hdFBvaW50
M0RCYXNlKGNvbnN0IEZsb2F0UG9pbnQmIHApCiAgICAgICAgIDogbV94KHAueCgpKQogICAgICAg
ICAsIG1feShwLnkoKSkKICAgICAgICAgLCBtX3ooMCkKICAgICB7CiAgICAgfQogCi0gICAgRmxv
YXRQb2ludDNEKGNvbnN0IEZsb2F0UG9pbnQzRCYgcCkKKyAgICBGbG9hdFBvaW50M0RCYXNlKGNv
bnN0IEZsb2F0UG9pbnQzREJhc2UmIHApCiAgICAgICAgIDogbV94KHAueCgpKQogICAgICAgICAs
IG1feShwLnkoKSkKICAgICAgICAgLCBtX3oocC56KCkpCiAgICAgewogICAgIH0KIAotICAgIGZs
b2F0IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KLSAgICB2b2lkIHNldFgoZmxvYXQgeCkgeyBt
X3ggPSB4OyB9CisgICAgVCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CisgICAgdm9pZCBzZXRY
KFQgeCkgeyBtX3ggPSB4OyB9CiAKLSAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9
Ci0gICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsgbV95ID0geTsgfQorICAgIFQgeSgpIGNvbnN0IHsg
cmV0dXJuIG1feTsgfQorICAgIHZvaWQgc2V0WShUIHkpIHsgbV95ID0geTsgfQogCi0gICAgZmxv
YXQgeigpIGNvbnN0IHsgcmV0dXJuIG1fejsgfQotICAgIHZvaWQgc2V0WihmbG9hdCB6KSB7IG1f
eiA9IHo7IH0KLSAgICB2b2lkIHNldChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorICAgIFQg
eigpIGNvbnN0IHsgcmV0dXJuIG1fejsgfQorICAgIHZvaWQgc2V0WihUIHopIHsgbV96ID0gejsg
fQorICAgIHZvaWQgc2V0KFQgeCwgVCB5LCBUIHopCiAgICAgewogICAgICAgICBtX3ggPSB4Owog
ICAgICAgICBtX3kgPSB5OwogICAgICAgICBtX3ogPSB6OwogICAgIH0KLSAgICB2b2lkIG1vdmUo
ZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkeikKKyAgICB2b2lkIG1vdmUoVCBkeCwgVCBkeSwg
VCBkeikKICAgICB7CiAgICAgICAgIG1feCArPSBkeDsKICAgICAgICAgbV95ICs9IGR5OwogICAg
ICAgICBtX3ogKz0gZHo7CiAgICAgfQotICAgIHZvaWQgc2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5
LCBmbG9hdCBzeikKKyAgICB2b2lkIHNjYWxlKFQgc3gsIFQgc3ksIFQgc3opCiAgICAgewogICAg
ICAgICBtX3ggKj0gc3g7CiAgICAgICAgIG1feSAqPSBzeTsKQEAgLTkxLDE5ICs5MiwxOSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIG5vcm1hbGl6ZSgpOwogCi0gICAgZmxvYXQgZG90KGNvbnN0IEZs
b2F0UG9pbnQzRCYgYSkgY29uc3QKKyAgICBUIGRvdChjb25zdCBGbG9hdFBvaW50M0RCYXNlJiBh
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1feCAqIGEueCgpICsgbV95ICogYS55KCkg
KyBtX3ogKiBhLnooKTsKICAgICB9CiAKLSAgICAvLyBTZXRzIHRoaXMgRmxvYXRQb2ludDNEIHRv
IHRoZSBjcm9zcyBwcm9kdWN0IG9mIHRoZSBwYXNzZWQgdHdvLgorICAgIC8vIFNldHMgdGhpcyBG
bG9hdFBvaW50M0RCYXNlIHRvIHRoZSBjcm9zcyBwcm9kdWN0IG9mIHRoZSBwYXNzZWQgdHdvLgog
ICAgIC8vIEl0IGlzIHNhZmUgZm9yICJ0aGlzIiB0byBiZSB0aGUgc2FtZSBhcyBlaXRoZXIgb3Ig
Ym90aCBvZiB0aGUKICAgICAvLyBhcmd1bWVudHMuCi0gICAgdm9pZCBjcm9zcyhjb25zdCBGbG9h
dFBvaW50M0QmIGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYgYikKKyAgICB2b2lkIGNyb3NzKGNvbnN0
IEZsb2F0UG9pbnQzREJhc2UmIGEsIGNvbnN0IEZsb2F0UG9pbnQzREJhc2UmIGIpCiAgICAgewot
ICAgICAgICBmbG9hdCB4ID0gYS55KCkgKiBiLnooKSAtIGEueigpICogYi55KCk7Ci0gICAgICAg
IGZsb2F0IHkgPSBhLnooKSAqIGIueCgpIC0gYS54KCkgKiBiLnooKTsKLSAgICAgICAgZmxvYXQg
eiA9IGEueCgpICogYi55KCkgLSBhLnkoKSAqIGIueCgpOworICAgICAgICBUIHggPSBhLnkoKSAq
IGIueigpIC0gYS56KCkgKiBiLnkoKTsKKyAgICAgICAgVCB5ID0gYS56KCkgKiBiLngoKSAtIGEu
eCgpICogYi56KCk7CisgICAgICAgIFQgeiA9IGEueCgpICogYi55KCkgLSBhLnkoKSAqIGIueCgp
OwogICAgICAgICBtX3ggPSB4OwogICAgICAgICBtX3kgPSB5OwogICAgICAgICBtX3ogPSB6OwpA
QCAtMTExLDc3ICsxMTIsMTE0IEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnZlbmllbmNlIGZ1bmN0
aW9uIHJldHVybmluZyAidGhpcyBjcm9zcyBwb2ludCIgYXMgYQogICAgIC8vIHN0YWNrLWFsbG9j
YXRlZCByZXN1bHQuCi0gICAgRmxvYXRQb2ludDNEIGNyb3NzKGNvbnN0IEZsb2F0UG9pbnQzRCYg
cG9pbnQpIGNvbnN0CisgICAgRmxvYXRQb2ludDNEQmFzZSBjcm9zcyhjb25zdCBGbG9hdFBvaW50
M0RCYXNlJiBwb2ludCkgY29uc3QKICAgICB7Ci0gICAgICAgIEZsb2F0UG9pbnQzRCByZXN1bHQ7
CisgICAgICAgIEZsb2F0UG9pbnQzREJhc2UgcmVzdWx0OwogICAgICAgICByZXN1bHQuY3Jvc3Mo
KnRoaXMsIHBvaW50KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBmbG9h
dCBsZW5ndGhTcXVhcmVkKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+ZG90KCp0aGlzKTsgfQotICAg
IGZsb2F0IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHNxcnRmKGxlbmd0aFNxdWFyZWQoKSk7IH0K
KyAgICBUIGxlbmd0aFNxdWFyZWQoKSBjb25zdCB7IHJldHVybiB0aGlzLT5kb3QoKnRoaXMpOyB9
CisgICAgVCBsZW5ndGgoKSBjb25zdDsKICAgICAKLSAgICBmbG9hdCBkaXN0YW5jZVRvKGNvbnN0
IEZsb2F0UG9pbnQzRCYgYSkgY29uc3Q7CisgICAgVCBkaXN0YW5jZVRvKGNvbnN0IEZsb2F0UG9p
bnQzREJhc2UmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBmbG9hdCBtX3g7Ci0gICAgZmxvYXQg
bV95OwotICAgIGZsb2F0IG1fejsKKyAgICBUIG1feDsKKyAgICBUIG1feTsKKyAgICBUIG1fejsK
IH07CiAKLWlubGluZSBGbG9hdFBvaW50M0QmIG9wZXJhdG9yICs9KEZsb2F0UG9pbnQzRCYgYSwg
Y29uc3QgRmxvYXRQb2ludDNEJiBiKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgRmxv
YXRQb2ludDNEQmFzZTxUPiYgb3BlcmF0b3IgKz0oRmxvYXRQb2ludDNEQmFzZTxUPiYgYSwgY29u
c3QgRmxvYXRQb2ludDNEQmFzZTxUPiYgYikKIHsKICAgICBhLm1vdmUoYi54KCksIGIueSgpLCBi
LnooKSk7CiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBGbG9hdFBvaW50M0QmIG9wZXJhdG9y
IC09KEZsb2F0UG9pbnQzRCYgYSwgY29uc3QgRmxvYXRQb2ludDNEJiBiKQordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitpbmxpbmUgRmxvYXRQb2ludDNEQmFzZTxUPiYgb3BlcmF0b3IgLT0oRmxvYXRQ
b2ludDNEQmFzZTxUPiYgYSwgY29uc3QgRmxvYXRQb2ludDNEQmFzZTxUPiYgYikKIHsKICAgICBh
Lm1vdmUoLWIueCgpLCAtYi55KCksIC1iLnooKSk7CiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGlu
ZSBGbG9hdFBvaW50M0Qgb3BlcmF0b3IrKGNvbnN0IEZsb2F0UG9pbnQzRCYgYSwgY29uc3QgRmxv
YXRQb2ludDNEJiBiKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgRmxvYXRQb2ludDNE
QmFzZTxUPiBvcGVyYXRvcisoY29uc3QgRmxvYXRQb2ludDNEQmFzZTxUPiYgYSwgY29uc3QgRmxv
YXRQb2ludDNEQmFzZTxUPiYgYikKIHsKLSAgICByZXR1cm4gRmxvYXRQb2ludDNEKGEueCgpICsg
Yi54KCksIGEueSgpICsgYi55KCksIGEueigpICsgYi56KCkpOworICAgIHJldHVybiBGbG9hdFBv
aW50M0RCYXNlPFQ+KGEueCgpICsgYi54KCksIGEueSgpICsgYi55KCksIGEueigpICsgYi56KCkp
OwogfQogCi1pbmxpbmUgRmxvYXRQb2ludDNEIG9wZXJhdG9yLShjb25zdCBGbG9hdFBvaW50M0Qm
IGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYgYikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5l
IEZsb2F0UG9pbnQzREJhc2U8VD4gb3BlcmF0b3ItKGNvbnN0IEZsb2F0UG9pbnQzREJhc2U8VD4m
IGEsIGNvbnN0IEZsb2F0UG9pbnQzREJhc2U8VD4mIGIpCiB7Ci0gICAgcmV0dXJuIEZsb2F0UG9p
bnQzRChhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpLCBhLnooKSAtIGIueigpKTsKKyAgICBy
ZXR1cm4gRmxvYXRQb2ludDNEQmFzZTxUPihhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpLCBh
LnooKSAtIGIueigpKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFBv
aW50M0QmIGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYgYikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFBvaW50M0RCYXNlPFQ+JiBhLCBjb25z
dCBGbG9hdFBvaW50M0RCYXNlPFQ+JiBiKQogewogICAgIHJldHVybiBhLngoKSA9PSBiLngoKSAm
JiBhLnkoKSA9PSBiLnkoKSAmJiBhLnooKSA9PSBiLnooKTsKIH0KIAotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBGbG9hdFBvaW50M0QmIGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYgYikKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGbG9hdFBv
aW50M0RCYXNlPFQ+JiBhLCBjb25zdCBGbG9hdFBvaW50M0RCYXNlPFQ+JiBiKQogewogICAgIHJl
dHVybiBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBiLnkoKSB8fCBhLnooKSAhPSBiLnooKTsK
IH0KIAotaW5saW5lIGZsb2F0IG9wZXJhdG9yKihjb25zdCBGbG9hdFBvaW50M0QmIGEsIGNvbnN0
IEZsb2F0UG9pbnQzRCYgYikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIFQgb3BlcmF0
b3IqKGNvbnN0IEZsb2F0UG9pbnQzREJhc2U8VD4mIGEsIGNvbnN0IEZsb2F0UG9pbnQzREJhc2U8
VD4mIGIpCiB7CiAgICAgLy8gZG90IHByb2R1Y3QKICAgICByZXR1cm4gYS5kb3QoYik7CiB9CiAK
LWlubGluZSBGbG9hdFBvaW50M0Qgb3BlcmF0b3IqKGZsb2F0IGssIGNvbnN0IEZsb2F0UG9pbnQz
RCYgdikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIEZsb2F0UG9pbnQzREJhc2U8VD4g
b3BlcmF0b3IqKFQgaywgY29uc3QgRmxvYXRQb2ludDNEQmFzZTxUPiYgdikKIHsKLSAgICByZXR1
cm4gRmxvYXRQb2ludDNEKGsgKiB2LngoKSwgayAqIHYueSgpLCBrICogdi56KCkpOworICAgIHJl
dHVybiBGbG9hdFBvaW50M0RCYXNlPFQ+KGsgKiB2LngoKSwgayAqIHYueSgpLCBrICogdi56KCkp
OwogfQogCi1pbmxpbmUgRmxvYXRQb2ludDNEIG9wZXJhdG9yKihjb25zdCBGbG9hdFBvaW50M0Qm
IHYsIGZsb2F0IGspCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSBGbG9hdFBvaW50M0RC
YXNlPFQ+IG9wZXJhdG9yKihjb25zdCBGbG9hdFBvaW50M0RCYXNlPFQ+JiB2LCBUIGspCiB7Ci0g
ICAgcmV0dXJuIEZsb2F0UG9pbnQzRChrICogdi54KCksIGsgKiB2LnkoKSwgayAqIHYueigpKTsK
KyAgICByZXR1cm4gRmxvYXRQb2ludDNEQmFzZTxUPihrICogdi54KCksIGsgKiB2LnkoKSwgayAq
IHYueigpKTsKIH0KIAotaW5saW5lIGZsb2F0IEZsb2F0UG9pbnQzRDo6ZGlzdGFuY2VUbyhjb25z
dCBGbG9hdFBvaW50M0QmIGEpIGNvbnN0Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSBU
IEZsb2F0UG9pbnQzREJhc2U8VD46OmRpc3RhbmNlVG8oY29uc3QgRmxvYXRQb2ludDNEQmFzZTxU
PiYgYSkgY29uc3QKIHsKICAgICByZXR1cm4gKCp0aGlzIC0gYSkubGVuZ3RoKCk7CiB9CiAKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgRmxvYXRQb2ludDNEQmFzZTxUPjo6bm9y
bWFsaXplKCkKK3sKKyAgICBUIHRlbXBMZW5ndGggPSBsZW5ndGgoKTsKKyAgICAKKyAgICBpZiAo
dGVtcExlbmd0aCkgeworICAgICAgICBtX3ggLz0gdGVtcExlbmd0aDsKKyAgICAgICAgbV95IC89
IHRlbXBMZW5ndGg7CisgICAgICAgIG1feiAvPSB0ZW1wTGVuZ3RoOworICAgIH0KK30KKwordGVt
cGxhdGUgPD4KK2lubGluZSBmbG9hdCBGbG9hdFBvaW50M0RCYXNlPGZsb2F0Pjo6bGVuZ3RoKCkg
Y29uc3QgCit7IAorICAgIHJldHVybiBzcXJ0ZihsZW5ndGhTcXVhcmVkKCkpOyAKK30KKwordGVt
cGxhdGUgPD4KK2lubGluZSBkb3VibGUgRmxvYXRQb2ludDNEQmFzZTxkb3VibGU+OjpsZW5ndGgo
KSBjb25zdCAKK3sgCisgICAgcmV0dXJuIHNxcnQobGVuZ3RoU3F1YXJlZCgpKTsgCit9CisKK3R5
cGVkZWYgRmxvYXRQb2ludDNEQmFzZTxmbG9hdD4gRmxvYXRQb2ludDNEOwordHlwZWRlZiBGbG9h
dFBvaW50M0RCYXNlPGRvdWJsZT4gRG91YmxlUG9pbnQzRDsKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRmxvYXRQb2ludDNEX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCBjZGExYzhjMDliODc1YzA2ZTFi
OTYwNjRmZjA4ZmQwN2U2YWU0MzQ0Li42MGNhZmRmYjY2MThiNGYyMGMyZWMwYzk1N2JiYTMyZjhi
MmUwMzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oCkBAIC04MCw3ICs4MCw2IEBAIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJUcmVlQXNU
ZXh0QmVoYXZpb3I7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRmxvYXRQb2ludDNE
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBUZXh0U3RyZWFt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IGMxOWMzYzExMzIzYjc0
YTU2ZTEzNTE4NjhkYmFmNTYwNWRhOWVkZDkuLjIwNWUwMmVhODE3YWNhMTI3ZjhkYmExZjBkZDYx
NTU4MjUwZjAxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTI3
LDYgKzI3LDcgQEAKICNkZWZpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXhfaAogCiAjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIkludFBv
aW50LmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+IC8vZm9yIG1lbWNweQogI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+CkBAIC02MCw3ICs2MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgSW50UmVjdDsKLWNsYXNzIEZsb2F0UG9pbnQz
RDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0UXVhZDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggNGEyMzBlMDgy
MzBjZDViZDNiNjA1ZWY3NTljOWU5MGI1ODFhNjM0ZS4uODk2ZDZkZTkzMmMxM2M5NDY0MzU2Y2M1
MjVjNTFlNzdmOTZkMTBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9D
b250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDYWxs
U3RhY2suaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KQEAgLTEzMyw4ICsxMzQsOCBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2Vz
cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICAvLyBJZiB0aGUgZW5kIHRpbWUgaXMg
c29tZXdoZXJlIGluIHRoZSBtaWRkbGUgb2YgdGhpcyB0aW1lIHF1YW50dW0sIHRoZW4gc2ltcGx5
IHplcm8gb3V0IHRoZQogICAgICAgICAvLyBmcmFtZXMgc3RhcnRpbmcgYXQgdGhlIGVuZCB0aW1l
LgogICAgICAgICBpZiAobV9lbmRUaW1lICE9IFVua25vd25UaW1lICYmIG1fZW5kVGltZSA+PSBx
dWFudHVtU3RhcnRUaW1lICYmIG1fZW5kVGltZSA8IHF1YW50dW1FbmRUaW1lKSB7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCB6ZXJvU3RhcnRGcmFtZSA9IChtX2VuZFRpbWUgLSBxdWFudHVtU3RhcnRU
aW1lKSAqIHNhbXBsZVJhdGU7Ci0gICAgICAgICAgICB1bnNpZ25lZCBmcmFtZXNUb1plcm8gPSBm
cmFtZXNUb1Byb2Nlc3MgLSB6ZXJvU3RhcnRGcmFtZTsKKyAgICAgICAgICAgIHNpemVfdCB6ZXJv
U3RhcnRGcmFtZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoKG1fZW5kVGltZSAtIHF1YW50dW1T
dGFydFRpbWUpICogc2FtcGxlUmF0ZSk7CisgICAgICAgICAgICBzaXplX3QgZnJhbWVzVG9aZXJv
ID0gZnJhbWVzVG9Qcm9jZXNzIC0gemVyb1N0YXJ0RnJhbWU7CiAKICAgICAgICAgICAgIGJvb2wg
aXNTYWZlID0gemVyb1N0YXJ0RnJhbWUgPCBmcmFtZXNUb1Byb2Nlc3MgJiYgZnJhbWVzVG9aZXJv
IDw9IGZyYW1lc1RvUHJvY2VzcyAmJiB6ZXJvU3RhcnRGcmFtZSArIGZyYW1lc1RvWmVybyA8PSBm
cmFtZXNUb1Byb2Nlc3M7CiAgICAgICAgICAgICBBU1NFUlQoaXNTYWZlKTsKQEAgLTI3MiwxMyAr
MjczLDEzIEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5kZXJGcm9tQnVmZmVyKEF1
ZGlvQnVzKiBidXMsIHVuc2lnbmVkIGRlc3RpbmF0aW9uCiAgICAgICAgIGRvdWJsZSBzYW1wbGVM
MSA9IHNvdXJjZUxbcmVhZEluZGV4XTsKICAgICAgICAgZG91YmxlIHNhbXBsZUwyID0gc291cmNl
TFtyZWFkSW5kZXgyXTsKICAgICAgICAgZG91YmxlIHNhbXBsZUwgPSAoMS4wIC0gaW50ZXJwb2xh
dGlvbkZhY3RvcikgKiBzYW1wbGVMMSArIGludGVycG9sYXRpb25GYWN0b3IgKiBzYW1wbGVMMjsK
LSAgICAgICAgKmRlc3RpbmF0aW9uTCsrID0gc2FtcGxlTDsKKyAgICAgICAgKmRlc3RpbmF0aW9u
TCsrID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzYW1wbGVMKTsKIAogICAgICAgICBpZiAoaXNT
dGVyZW8pIHsKICAgICAgICAgICAgIGRvdWJsZSBzYW1wbGVSMSA9IHNvdXJjZVJbcmVhZEluZGV4
XTsKICAgICAgICAgICAgIGRvdWJsZSBzYW1wbGVSMiA9IHNvdXJjZVJbcmVhZEluZGV4Ml07CiAg
ICAgICAgICAgICBkb3VibGUgc2FtcGxlUiA9ICgxLjAgLSBpbnRlcnBvbGF0aW9uRmFjdG9yKSAq
IHNhbXBsZVIxICsgaW50ZXJwb2xhdGlvbkZhY3RvciAqIHNhbXBsZVIyOwotICAgICAgICAgICAg
KmRlc3RpbmF0aW9uUisrID0gc2FtcGxlUjsKKyAgICAgICAgICAgICpkZXN0aW5hdGlvblIrKyA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc2FtcGxlUik7CiAgICAgICAgIH0KIAogICAgICAgICB2
aXJ0dWFsUmVhZEluZGV4ICs9IHBpdGNoUmF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
TGlzdGVuZXIuaAppbmRleCA1MjgxYTg5MDdjY2JhMGMxODFiNTE3ZDdjNmFiNTI4MDQ2ODQwZGNm
Li5kMDFhMmNhYjliZjBkYTRhMzU5NjFlMDhmYjY3Y2E0ZWQ1NDkzMTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oCkBAIC00NSwyNyArNDUsMjcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIC8vIFBvc2l0aW9uCi0gICAgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUgeCwg
ZG91YmxlIHksIGRvdWJsZSB6KSB7IHNldFBvc2l0aW9uKEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7
IH0KLSAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQzRCAmcG9zaXRpb24pIHsg
bV9wb3NpdGlvbiA9IHBvc2l0aW9uOyB9Ci0gICAgY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKGRv
dWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIHsgc2V0UG9zaXRpb24oRG91YmxlUG9pbnQzRCh4
LCB5LCB6KSk7IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IERvdWJsZVBvaW50M0QgJnBv
c2l0aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgfQorICAgIGNvbnN0IERvdWJsZVBvaW50
M0QmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiAgICAgLy8gT3Jp
ZW50YXRpb24KICAgICB2b2lkIHNldE9yaWVudGF0aW9uKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91
YmxlIHosIGRvdWJsZSB1cFgsIGRvdWJsZSB1cFksIGRvdWJsZSB1cFopCiAgICAgewotICAgICAg
ICBzZXRPcmllbnRhdGlvbihGbG9hdFBvaW50M0QoeCwgeSwgeikpOwotICAgICAgICBzZXRVcFZl
Y3RvcihGbG9hdFBvaW50M0QodXBYLCB1cFksIHVwWikpOworICAgICAgICBzZXRPcmllbnRhdGlv
bihEb3VibGVQb2ludDNEKHgsIHksIHopKTsKKyAgICAgICAgc2V0VXBWZWN0b3IoRG91YmxlUG9p
bnQzRCh1cFgsIHVwWSwgdXBaKSk7CiAgICAgfQotICAgIHZvaWQgc2V0T3JpZW50YXRpb24oY29u
c3QgRmxvYXRQb2ludDNEICZvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRp
b247IH0KLSAgICBjb25zdCBGbG9hdFBvaW50M0QmIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIHZvaWQgc2V0T3JpZW50YXRpb24oY29uc3QgRG91Ymxl
UG9pbnQzRCAmb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9Cisg
ICAgY29uc3QgRG91YmxlUG9pbnQzRCYgb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29y
aWVudGF0aW9uOyB9CiAKICAgICAvLyBVcC12ZWN0b3IKLSAgICB2b2lkIHNldFVwVmVjdG9yKGNv
bnN0IEZsb2F0UG9pbnQzRCAmdXBWZWN0b3IpIHsgbV91cFZlY3RvciA9IHVwVmVjdG9yOyB9Ci0g
ICAgY29uc3QgRmxvYXRQb2ludDNEJiB1cFZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdXBWZWN0
b3I7IH0KKyAgICB2b2lkIHNldFVwVmVjdG9yKGNvbnN0IERvdWJsZVBvaW50M0QgJnVwVmVjdG9y
KSB7IG1fdXBWZWN0b3IgPSB1cFZlY3RvcjsgfQorICAgIGNvbnN0IERvdWJsZVBvaW50M0QmIHVw
VmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV91cFZlY3RvcjsgfQogCiAgICAgLy8gVmVsb2NpdHkK
LSAgICB2b2lkIHNldFZlbG9jaXR5KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIHsgc2V0
VmVsb2NpdHkoRmxvYXRQb2ludDNEKHgsIHksIHopKTsgfQotICAgIHZvaWQgc2V0VmVsb2NpdHko
Y29uc3QgRmxvYXRQb2ludDNEICZ2ZWxvY2l0eSkgeyBtX3ZlbG9jaXR5ID0gdmVsb2NpdHk7IH0K
LSAgICBjb25zdCBGbG9hdFBvaW50M0QmIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxv
Y2l0eTsgfQorICAgIHZvaWQgc2V0VmVsb2NpdHkoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUg
eikgeyBzZXRWZWxvY2l0eShEb3VibGVQb2ludDNEKHgsIHksIHopKTsgfQorICAgIHZvaWQgc2V0
VmVsb2NpdHkoY29uc3QgRG91YmxlUG9pbnQzRCAmdmVsb2NpdHkpIHsgbV92ZWxvY2l0eSA9IHZl
bG9jaXR5OyB9CisgICAgY29uc3QgRG91YmxlUG9pbnQzRCYgdmVsb2NpdHkoKSBjb25zdCB7IHJl
dHVybiBtX3ZlbG9jaXR5OyB9CiAKICAgICAvLyBEb3BwbGVyIGZhY3RvcgogICAgIHZvaWQgc2V0
RG9wcGxlckZhY3Rvcihkb3VibGUgZG9wcGxlckZhY3RvcikgeyBtX2RvcHBsZXJGYWN0b3IgPSBk
b3BwbGVyRmFjdG9yOyB9CkBAIC03OSwxMSArNzksMTEgQEAgcHJpdmF0ZToKICAgICBBdWRpb0xp
c3RlbmVyKCk7CiAKICAgICAvLyBQb3NpdGlvbiAvIE9yaWVudGF0aW9uCi0gICAgRmxvYXRQb2lu
dDNEIG1fcG9zaXRpb247Ci0gICAgRmxvYXRQb2ludDNEIG1fb3JpZW50YXRpb247Ci0gICAgRmxv
YXRQb2ludDNEIG1fdXBWZWN0b3I7CisgICAgRG91YmxlUG9pbnQzRCBtX3Bvc2l0aW9uOworICAg
IERvdWJsZVBvaW50M0QgbV9vcmllbnRhdGlvbjsKKyAgICBEb3VibGVQb2ludDNEIG1fdXBWZWN0
b3I7CiAKLSAgICBGbG9hdFBvaW50M0QgbV92ZWxvY2l0eTsKKyAgICBEb3VibGVQb2ludDNEIG1f
dmVsb2NpdHk7CiAKICAgICBkb3VibGUgbV9kb3BwbGVyRmFjdG9yOwogICAgIGRvdWJsZSBtX3Nw
ZWVkT2ZTb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFu
bmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3Bw
CmluZGV4IDdkMjZmZWFjOTQ3ZDc2YzRiYWY0Nzg0N2Y4MWZhZTQ3MDVjMjkzMjQuLjc3MDkzN2E1
NTFkZTkzODgyNjk5Njk0ZWQ0MjU2OWRmZmZjYWRkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNwcApAQCAtNTgsOSArNTgsOSBAQCBBdWRpb1Bhbm5lck5v
ZGU6OkF1ZGlvUGFubmVyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVS
YXRlKQogICAgIG1fZGlzdGFuY2VHYWluID0gQXVkaW9HYWluOjpjcmVhdGUoImRpc3RhbmNlR2Fp
biIsIDEuMCwgMC4wLCAxLjApOwogICAgIG1fY29uZUdhaW4gPSBBdWRpb0dhaW46OmNyZWF0ZSgi
Y29uZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKIAotICAgIG1fcG9zaXRpb24gPSBGbG9hdFBvaW50
M0QoMCwgMCwgMCk7Ci0gICAgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9pbnQzRCgxLCAwLCAwKTsK
LSAgICBtX3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOworICAgIG1fcG9zaXRpb24g
PSBEb3VibGVQb2ludDNEKDAsIDAsIDApOworICAgIG1fb3JpZW50YXRpb24gPSBEb3VibGVQb2lu
dDNEKDEsIDAsIDApOworICAgIG1fdmVsb2NpdHkgPSBEb3VibGVQb2ludDNEKDAsIDAsIDApOwog
ICAgIAogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlUGFubmVyKTsKIApAQCAtMTY1LDggKzE2NSw4
IEBAIHZvaWQgQXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0
QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpCiAgICAgZG91YmxlIGF6aW11dGggPSAwLjA7CiAK
ICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZS1saXN0ZW5lciB2ZWN0b3IKLSAgICBGbG9hdFBv
aW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7Ci0gICAgRmxv
YXRQb2ludDNEIHNvdXJjZUxpc3RlbmVyID0gbV9wb3NpdGlvbiAtIGxpc3RlbmVyUG9zaXRpb247
CisgICAgRG91YmxlUG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRp
b24oKTsKKyAgICBEb3VibGVQb2ludDNEIHNvdXJjZUxpc3RlbmVyID0gbV9wb3NpdGlvbiAtIGxp
c3RlbmVyUG9zaXRpb247CiAKICAgICBpZiAoc291cmNlTGlzdGVuZXIuaXNaZXJvKCkpIHsKICAg
ICAgICAgLy8gZGVnZW5lcmF0ZSBjYXNlIGlmIHNvdXJjZSBhbmQgbGlzdGVuZXIgYXJlIGF0IHRo
ZSBzYW1lIHBvaW50CkBAIC0xNzgsMTkgKzE3OCwxOSBAQCB2b2lkIEF1ZGlvUGFubmVyTm9kZTo6
Z2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0
aQogICAgIHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOwogCiAgICAgLy8gQWxpZ24gYXhlcwot
ICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIoKS0+b3JpZW50YXRpb24o
KTsKLSAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJVcCA9IGxpc3RlbmVyKCktPnVwVmVjdG9yKCk7
Ci0gICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUmlnaHQgPSBsaXN0ZW5lckZyb250LmNyb3NzKGxp
c3RlbmVyVXApOworICAgIERvdWJsZVBvaW50M0QgbGlzdGVuZXJGcm9udCA9IGxpc3RlbmVyKCkt
Pm9yaWVudGF0aW9uKCk7CisgICAgRG91YmxlUG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIo
KS0+dXBWZWN0b3IoKTsKKyAgICBEb3VibGVQb2ludDNEIGxpc3RlbmVyUmlnaHQgPSBsaXN0ZW5l
ckZyb250LmNyb3NzKGxpc3RlbmVyVXApOwogICAgIGxpc3RlbmVyUmlnaHQubm9ybWFsaXplKCk7
CiAKLSAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250Owor
ICAgIERvdWJsZVBvaW50M0QgbGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250OwogICAg
IGxpc3RlbmVyRnJvbnROb3JtLm5vcm1hbGl6ZSgpOwogCi0gICAgRmxvYXRQb2ludDNEIHVwID0g
bGlzdGVuZXJSaWdodC5jcm9zcyhsaXN0ZW5lckZyb250Tm9ybSk7CisgICAgRG91YmxlUG9pbnQz
RCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3MobGlzdGVuZXJGcm9udE5vcm0pOwogCiAgICAgZG91
YmxlIHVwUHJvamVjdGlvbiA9IHNvdXJjZUxpc3RlbmVyLmRvdCh1cCk7CiAKLSAgICBGbG9hdFBv
aW50M0QgcHJvamVjdGVkU291cmNlID0gc291cmNlTGlzdGVuZXIgLSB1cFByb2plY3Rpb24gKiB1
cDsKKyAgICBEb3VibGVQb2ludDNEIHByb2plY3RlZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVyIC0g
dXBQcm9qZWN0aW9uICogdXA7CiAgICAgcHJvamVjdGVkU291cmNlLm5vcm1hbGl6ZSgpOwogCiAg
ICAgYXppbXV0aCA9IDE4MC4wICogYWNvcyhwcm9qZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyUmln
aHQpKSAvIHBpRG91YmxlOwpAQCAtMjMyLDggKzIzMiw4IEBAIGZsb2F0IEF1ZGlvUGFubmVyTm9k
ZTo6ZG9wcGxlclJhdGUoKQogICAgIGlmIChkb3BwbGVyRmFjdG9yID4gMC4wKSB7CiAgICAgICAg
IGRvdWJsZSBzcGVlZE9mU291bmQgPSBsaXN0ZW5lcigpLT5zcGVlZE9mU291bmQoKTsKIAotICAg
ICAgICBjb25zdCBGbG9hdFBvaW50M0QgJnNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS0+
dmVsb2NpdHkoKTsKKyAgICAgICAgY29uc3QgRG91YmxlUG9pbnQzRCAmc291cmNlVmVsb2NpdHkg
PSBtX3ZlbG9jaXR5OworICAgICAgICBjb25zdCBEb3VibGVQb2ludDNEICZsaXN0ZW5lclZlbG9j
aXR5ID0gbGlzdGVuZXIoKS0+dmVsb2NpdHkoKTsKIAogICAgICAgICAvLyBEb24ndCBib3RoZXIg
aWYgYm90aCBzb3VyY2UgYW5kIGxpc3RlbmVyIGhhdmUgbm8gdmVsb2NpdHkKICAgICAgICAgYm9v
bCBzb3VyY2VIYXNWZWxvY2l0eSA9ICFzb3VyY2VWZWxvY2l0eS5pc1plcm8oKTsKQEAgLTI0MSw4
ICsyNDEsOCBAQCBmbG9hdCBBdWRpb1Bhbm5lck5vZGU6OmRvcHBsZXJSYXRlKCkKIAogICAgICAg
ICBpZiAoc291cmNlSGFzVmVsb2NpdHkgfHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkgewogICAgICAg
ICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzb3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9yCi0gICAgICAg
ICAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9u
KCk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50M0Qgc291cmNlVG9MaXN0ZW5lciA9IG1fcG9zaXRp
b24gLSBsaXN0ZW5lclBvc2l0aW9uOworICAgICAgICAgICAgRG91YmxlUG9pbnQzRCBsaXN0ZW5l
clBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICAgICAgICAgIERvdWJsZVBv
aW50M0Qgc291cmNlVG9MaXN0ZW5lciA9IG1fcG9zaXRpb24gLSBsaXN0ZW5lclBvc2l0aW9uOwog
CiAgICAgICAgICAgICBkb3VibGUgc291cmNlTGlzdGVuZXJNYWduaXR1ZGUgPSBzb3VyY2VUb0xp
c3RlbmVyLmxlbmd0aCgpOwogCkBAIC0yNzIsNyArMjcyLDcgQEAgZmxvYXQgQXVkaW9QYW5uZXJO
b2RlOjpkb3BwbGVyUmF0ZSgpCiAKIGZsb2F0IEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VDb25l
R2FpbigpCiB7Ci0gICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigp
LT5wb3NpdGlvbigpOworICAgIERvdWJsZVBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3Rl
bmVyKCktPnBvc2l0aW9uKCk7CiAKICAgICBkb3VibGUgbGlzdGVuZXJEaXN0YW5jZSA9IG1fcG9z
aXRpb24uZGlzdGFuY2VUbyhsaXN0ZW5lclBvc2l0aW9uKTsKICAgICBkb3VibGUgZGlzdGFuY2VH
YWluID0gbV9kaXN0YW5jZUVmZmVjdC5nYWluKGxpc3RlbmVyRGlzdGFuY2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaAppbmRleCA2MWUzNGE5N2MzYmRlODQ0YjEy
YWIwZDUwYjYwMjAwZTU4YWI2YjJlLi4zNzJmNzU4NTBkOGNjMjQ2YjI5YTNiMzI3MjRmMDU1YTM2
YWFjMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaApAQCAt
NzUsMTYgKzc1LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhbm5pbmdNb2RlbCh1bnNpZ25l
ZCBzaG9ydCk7CiAKICAgICAvLyBQb3NpdGlvbgotICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6
KTsgfQorICAgIERvdWJsZVBvaW50M0QgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uOyB9CisgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7
IG1fcG9zaXRpb24gPSBEb3VibGVQb2ludDNEKHgsIHksIHopOyB9CiAKICAgICAvLyBPcmllbnRh
dGlvbgotICAgIEZsb2F0UG9pbnQzRCBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9z
aXRpb247IH0KLSAgICB2b2lkIHNldE9yaWVudGF0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHopIHsgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorICAgIERvdWJs
ZVBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAg
dm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3JpZW50
YXRpb24gPSBEb3VibGVQb2ludDNEKHgsIHksIHopOyB9CiAKICAgICAvLyBWZWxvY2l0eQotICAg
IEZsb2F0UG9pbnQzRCB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7IH0KLSAg
ICB2b2lkIHNldFZlbG9jaXR5KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV92ZWxvY2l0
eSA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorICAgIERvdWJsZVBvaW50M0QgdmVsb2NpdHko
KSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBzZXRWZWxvY2l0eShmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBEb3VibGVQb2ludDNEKHgsIHks
IHopOyB9CiAKICAgICAvLyBEaXN0YW5jZSBwYXJhbWV0ZXJzCiAgICAgdW5zaWduZWQgc2hvcnQg
ZGlzdGFuY2VNb2RlbCgpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3QubW9kZWwoKTsgfQpAQCAt
MTI5LDkgKzEyOSw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFBhbm5lcj4gbV9wYW5uZXI7CiAg
ICAgdW5zaWduZWQgbV9wYW5uaW5nTW9kZWw7CiAKLSAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlv
bjsKLSAgICBGbG9hdFBvaW50M0QgbV9vcmllbnRhdGlvbjsKLSAgICBGbG9hdFBvaW50M0QgbV92
ZWxvY2l0eTsKKyAgICBEb3VibGVQb2ludDNEIG1fcG9zaXRpb247CisgICAgRG91YmxlUG9pbnQz
RCBtX29yaWVudGF0aW9uOworICAgIERvdWJsZVBvaW50M0QgbV92ZWxvY2l0eTsKIAogICAgIC8v
IEdhaW4KICAgICBSZWZQdHI8QXVkaW9HYWluPiBtX2Rpc3RhbmNlR2FpbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKaW5kZXggOTA1NjQ5ODRkZjJkM2NmM2M4ZjJlNzc1NDY2
NDYzZTdlOTAzODBmOS4uMWJlZGYwY2RmZTUzNjVkNjgxNThjNTFhMTc0NGQ0ZWQ2OGVkNzliMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsMTMgKzQ0LDEzIEBAIGZsb2F0IEF1ZGlvUGFy
YW06OnZhbHVlKCkKICAgICAvLyBVcGRhdGUgdmFsdWUgZm9yIHRpbWVsaW5lLgogICAgIGlmIChj
b250ZXh0KCkgJiYgY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpIHsKICAgICAgICAgYm9vbCBo
YXNWYWx1ZTsKLSAgICAgICAgZmxvYXQgdGltZWxpbmVWYWx1ZSA9IG1fdGltZWxpbmUudmFsdWVG
b3JDb250ZXh0VGltZShjb250ZXh0KCksIG1fdmFsdWUsIGhhc1ZhbHVlKTsKKyAgICAgICAgZmxv
YXQgdGltZWxpbmVWYWx1ZSA9IG1fdGltZWxpbmUudmFsdWVGb3JDb250ZXh0VGltZShjb250ZXh0
KCksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV92YWx1ZSksIGhhc1ZhbHVlKTsKIAogICAgICAg
ICBpZiAoaGFzVmFsdWUpCiAgICAgICAgICAgICBtX3ZhbHVlID0gdGltZWxpbmVWYWx1ZTsKICAg
ICB9CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdmFsdWUpOworICAgIHJldHVy
biBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fdmFsdWUpOwogfQogCiB2b2lkIEF1ZGlvUGFyYW06
OnNldFZhbHVlKGZsb2F0IHZhbHVlKQpAQCAtNjIsNyArNjMsNyBAQCB2b2lkIEF1ZGlvUGFyYW06
OnNldFZhbHVlKGZsb2F0IHZhbHVlKQogCiBmbG9hdCBBdWRpb1BhcmFtOjpzbW9vdGhlZFZhbHVl
KCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc21vb3RoZWRWYWx1ZSk7Cisg
ICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV9zbW9vdGhlZFZhbHVlKTsKIH0KIAog
Ym9vbCBBdWRpb1BhcmFtOjpzbW9vdGgoKQpAQCAtNzEsNyArNzIsNyBAQCBib29sIEF1ZGlvUGFy
YW06OnNtb290aCgpCiAgICAgLy8gU21vb3RoaW5nIGVmZmVjdGl2ZWx5IGlzIHBlcmZvcm1lZCBi
eSB0aGUgdGltZWxpbmUuCiAgICAgYm9vbCB1c2VUaW1lbGluZVZhbHVlID0gZmFsc2U7CiAgICAg
aWYgKGNvbnRleHQoKSkKLSAgICAgICAgbV92YWx1ZSA9IG1fdGltZWxpbmUudmFsdWVGb3JDb250
ZXh0VGltZShjb250ZXh0KCksIG1fdmFsdWUsIHVzZVRpbWVsaW5lVmFsdWUpOworICAgICAgICBt
X3ZhbHVlID0gbV90aW1lbGluZS52YWx1ZUZvckNvbnRleHRUaW1lKGNvbnRleHQoKSwgbmFycm93
UHJlY2lzaW9uVG9GbG9hdChtX3ZhbHVlKSwgdXNlVGltZWxpbmVWYWx1ZSk7CiAgICAgCiAgICAg
aWYgKG1fc21vb3RoZWRWYWx1ZSA9PSBtX3ZhbHVlKSB7CiAgICAgICAgIC8vIFNtb290aGVkIHZh
bHVlIGhhcyBhbHJlYWR5IGFwcHJvYWNoZWQgYW5kIHNuYXBwZWQgdG8gdmFsdWUuCkBAIC0xMDEs
MTMgKzEwMiwxMyBAQCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFs
dWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJlck9mVgogCiAgICAgLy8gQ2FsY3VsYXRl
IHZhbHVlcyBmb3IgdGhpcyByZW5kZXIgcXVhbnR1bS4KICAgICAvLyBOb3JtYWxseSBudW1iZXJP
ZlZhbHVlcyB3aWxsIGVxdWFsIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcyAodGhl
IHJlbmRlciBxdWFudHVtIHNpemUpLgotICAgIGZsb2F0IHNhbXBsZVJhdGUgPSBjb250ZXh0KCkt
PnNhbXBsZVJhdGUoKTsKLSAgICBmbG9hdCBzdGFydFRpbWUgPSBjb250ZXh0KCktPmN1cnJlbnRU
aW1lKCk7CisgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29u
dGV4dCgpLT5zYW1wbGVSYXRlKCkpOworICAgIGZsb2F0IHN0YXJ0VGltZSA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoY29udGV4dCgpLT5jdXJyZW50VGltZSgpKTsKICAgICBmbG9hdCBlbmRUaW1l
ID0gc3RhcnRUaW1lICsgbnVtYmVyT2ZWYWx1ZXMgLyBzYW1wbGVSYXRlOwogCiAgICAgLy8gTm90
ZSB3ZSdyZSBydW5uaW5nIGNvbnRyb2wgcmF0ZSBhdCB0aGUgc2FtcGxlLXJhdGUuCiAgICAgLy8g
UGFzcyBpbiB0aGUgY3VycmVudCB2YWx1ZSBhcyBkZWZhdWx0IHZhbHVlLgotICAgIG1fdmFsdWUg
PSBtX3RpbWVsaW5lLnZhbHVlc0ZvclRpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUsIG1fdmFs
dWUsIHZhbHVlcywgbnVtYmVyT2ZWYWx1ZXMsIHNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOworICAg
IG1fdmFsdWUgPSBtX3RpbWVsaW5lLnZhbHVlc0ZvclRpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRp
bWUsIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV92YWx1ZSksIHZhbHVlcywgbnVtYmVyT2ZWYWx1
ZXMsIHNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAppbmRl
eCAwNDUxODg0NDU2ZmFlMTkxODU3MDhhYTJmNjExYmViM2QzNDA0NjQzLi42Yjk5ZTk0MWEyMmNi
ZGY3NGI5ODA4NDkwYzRhNDk5NmFmODNlM2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJB
dWRpb1BhcmFtVGltZWxpbmUuaCIKIAogI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCisjaW5j
bHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTEyMyw5ICsxMjQsOSBAQCBmbG9hdCBBdWRpb1BhcmFt
VGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9h
dCBkZWZhdQogCiAgICAgLy8gQXNrIGZvciBqdXN0IGEgc2luZ2xlIHZhbHVlLgogICAgIGZsb2F0
IHZhbHVlOwotICAgIGZsb2F0IHNhbXBsZVJhdGUgPSBjb250ZXh0LT5zYW1wbGVSYXRlKCk7Ci0g
ICAgZmxvYXQgc3RhcnRUaW1lID0gY29udGV4dC0+Y3VycmVudFRpbWUoKTsKLSAgICBmbG9hdCBl
bmRUaW1lID0gc3RhcnRUaW1lICsgMS4xIC8gc2FtcGxlUmF0ZTsgLy8gdGltZSBqdXN0IGJleW9u
ZCBvbmUgc2FtcGxlLWZyYW1lCisgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQoY29udGV4dC0+c2FtcGxlUmF0ZSgpKTsKKyAgICBmbG9hdCBzdGFydFRpbWUgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbnRleHQtPmN1cnJlbnRUaW1lKCkpOworICAgIGZsb2F0
IGVuZFRpbWUgPSBzdGFydFRpbWUgKyAxLjFmIC8gc2FtcGxlUmF0ZTsgLy8gdGltZSBqdXN0IGJl
eW9uZCBvbmUgc2FtcGxlLWZyYW1lCiAgICAgZmxvYXQgY29udHJvbFJhdGUgPSBzYW1wbGVSYXRl
IC8gQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzOyAvLyBvbmUgcGFyYW1ldGVyIGNo
YW5nZSBwZXIgcmVuZGVyIHF1YW50dW0KICAgICB2YWx1ZSA9IHZhbHVlc0ZvclRpbWVSYW5nZShz
dGFydFRpbWUsIGVuZFRpbWUsIGRlZmF1bHRWYWx1ZSwgJnZhbHVlLCAxLCBzYW1wbGVSYXRlLCBj
b250cm9sUmF0ZSk7CiAKQEAgLTE4NCw3ICsxODUsNyBAQCBmbG9hdCBBdWRpb1BhcmFtVGltZWxp
bmU6OnZhbHVlc0ZvclRpbWVSYW5nZUltcGwoZmxvYXQgc3RhcnRUaW1lLAogICAgIH0KIAogICAg
IC8vIE1haW50YWluIGEgcnVubmluZyB0aW1lIGFuZCBpbmRleCBmb3Igd3JpdGluZyB0aGUgdmFs
dWVzIGJ1ZmZlci4KLSAgICBkb3VibGUgY3VycmVudFRpbWUgPSBzdGFydFRpbWU7CisgICAgZmxv
YXQgY3VycmVudFRpbWUgPSBzdGFydFRpbWU7CiAgICAgdW5zaWduZWQgd3JpdGVJbmRleCA9IDA7
CiAKICAgICAvLyBJZiBmaXJzdCBldmVudCBpcyBhZnRlciBzdGFydFRpbWUgdGhlbiBmaWxsIGlu
aXRpYWwgcGFydCBvZiB2YWx1ZXMgYnVmZmVyIHdpdGggZGVmYXVsdFZhbHVlCkBAIC0yNDUsOCAr
MjQ2LDggQEAgZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2VJbXBs
KGZsb2F0IHN0YXJ0VGltZSwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzW3dyaXRlSW5kZXhd
ID0gdmFsdWU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEludGVy
cG9sYXRlIGluIGxvZyBzcGFjZS4KLSAgICAgICAgICAgICAgICB2YWx1ZTEgPSBsb2cyKHZhbHVl
MSk7Ci0gICAgICAgICAgICAgICAgdmFsdWUyID0gbG9nMih2YWx1ZTIpOworICAgICAgICAgICAg
ICAgIHZhbHVlMSA9IGxvZzJmKHZhbHVlMSk7CisgICAgICAgICAgICAgICAgdmFsdWUyID0gbG9n
MmYodmFsdWUyKTsKIAogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBvcHRpbWl6ZSB0byBub3Qg
dXNlIHBvdygpIGluIGlubmVyIGxvb3AsIHRoaXMgaXMganVzdCBhIHNpbXBsZSBleHBvbmVudGlh
bCByYW1wLgogICAgICAgICAgICAgICAgIGZvciAoOyB3cml0ZUluZGV4IDwgZmlsbFRvRnJhbWU7
ICsrd3JpdGVJbmRleCkgewpAQCAtMjgxLDcgKzI4Miw3IEBAIGZsb2F0IEF1ZGlvUGFyYW1UaW1l
bGluZTo6dmFsdWVzRm9yVGltZVJhbmdlSW1wbChmbG9hdCBzdGFydFRpbWUsCiAgICAgICAgICAg
ICAgICAgICAgIC8vIEV4cG9uZW50aWFsIGFwcHJvYWNoIHRvIHRhcmdldCB2YWx1ZSB3aXRoIGdp
dmVuIHRpbWUgY29uc3RhbnQuCiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHRhcmdldFZhbHVl
ID0gZXZlbnQudmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGltZUNvbnN0YW50
ID0gZXZlbnQudGltZUNvbnN0YW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IGRpc2Ny
ZXRlVGltZUNvbnN0YW50ID0gQXVkaW9VdGlsaXRpZXM6OmRpc2NyZXRlVGltZUNvbnN0YW50Rm9y
U2FtcGxlUmF0ZSh0aW1lQ29uc3RhbnQsIGNvbnRyb2xSYXRlKTsKKyAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgZGlzY3JldGVUaW1lQ29uc3RhbnQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KEF1
ZGlvVXRpbGl0aWVzOjpkaXNjcmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJhdGUodGltZUNvbnN0
YW50LCBjb250cm9sUmF0ZSkpOwogCiAgICAgICAgICAgICAgICAgICAgIGZvciAoOyB3cml0ZUlu
ZGV4IDwgZmlsbFRvRnJhbWU7ICsrd3JpdGVJbmRleCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWVzW3dyaXRlSW5kZXhdID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCmluZGV4IDQxNmI3MjIzNGVhYTU0ZGM3N2RhYWI2
NzJlMmU4MmJjYjM2NjNiODkuLjVmM2NmMzQ3NjIzMGVjMDQyYjkxNTNjMWUzMzhjNTc1N2ExYmE4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJu
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgV2F2ZVNoYXBlckRTUEtlcm5lbDo6cHJvY2Vzcyhj
b25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfCiAgICAgICAgIGNv
bnN0IGZsb2F0IGlucHV0ID0gc291cmNlW2ldOwogCiAgICAgICAgIC8vIENhbGN1bGF0ZSBhbiBp
bmRleCBiYXNlZCBvbiBpbnB1dCAtMSAtPiArMSB3aXRoIDAgYmVpbmcgYXQgdGhlIGNlbnRlciBv
ZiB0aGUgY3VydmUgZGF0YS4KLSAgICAgICAgaW50IGluZGV4ID0gY3VydmVMZW5ndGggKiAwLjUg
KiAoaW5wdXQgKyAxKTsKKyAgICAgICAgaW50IGluZGV4ID0gKGN1cnZlTGVuZ3RoICogKGlucHV0
ICsgMSkpIC8gMjsKIAogICAgICAgICAvLyBDbGlwIGluZGV4IHRvIHRoZSBpbnB1dCByYW5nZSBv
ZiB0aGUgY3VydmUuCiAgICAgICAgIC8vIFRoaXMgdGFrZXMgY2FyZSBvZiBpbnB1dCBvdXRzaWRl
IG9mIG5vbWluYWwgcmFuZ2UgLTEgLT4gKzEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109814</attachid>
            <date>2011-10-05 10:02:11 -0700</date>
            <delta_ts>2011-10-05 11:01:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69292-20111005100210.patch</filename>
            <type>text/plain</type>
            <size>127857</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1NDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMzcxMTk2M2YwZDcwMmMy
ZWZhNDc3MGIzODY4MmEwYTBkZTk0YTFkLi4yNmVjOWVkZmE5ODg1MTRjY2ZlNTdjYzU2ZDgyNjg2
MGExNTllNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjI2IEBACisyMDExLTEwLTA0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFdFQl9BVURJTyBkb2VzIG5v
dCBjb21waWxlIG9uIExlb3BhcmQgMzItYml0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHM7IGNvdmVyZWQgYnkgYWxsIGV4aXN0aW5n
IGF1ZGlvIHRlc3RzLgorCisgICAgICAgIFVzZSBvZiBmbG9hdCBhbmQgZG91YmxlIHdpdGhpbiB0
aGUgV0VCX0FVRElPIGltcGxlbWVudGF0aW9uIGhhdmUgYmVlbiBoYXJtb25pemVkLCB3aXRoIG1v
c3QKKyAgICAgICAgY2FsY3VsYXRpb25zIGRvbmUgdXNpbmcgZmxvYXRzLCB3aXRoIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoKSBhZGRlZCB3aGVuIG5lY2Vzc2FyeSB0bworICAgICAgICBuYXJyb3cg
ZG91YmxlIHJlc3VsdHMgZG93biB0byBmbG9hdHMsIGFuZCB3aXRoIGZsb2F0IGNvbnN0YW50cyBp
bml0aWFsaXplZCB3aXRoIGZsb2F0IHZhbHVlczoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6QXVkaW9CdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OnNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnNldFNhbXBsZVJhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0RTUEtlcm5lbDo6QXVkaW9EU1BLZXJuZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EU1BLZXJuZWw6OnNhbXBsZVJhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yOjpBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcik6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9GaWxlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUHJvY2Vzc29yOjpBdWRpb1Byb2Nlc3Nvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1Byb2Nlc3Nvcjo6c2FtcGxlUmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9VdGlsaXRpZXM6OmRlY2liZWxzVG9MaW5lYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9V
dGlsaXRpZXM6OmxpbmVhclRvRGVjaWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9VdGls
aXRpZXM6OmRpc2NyZXRlVGltZUNvbnN0YW50Rm9yU2FtcGxlUmF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVz
c29yOjpEeW5hbWljc0NvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21w
cmVzc29yOjppbml0aWFsaXplUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWlj
c0NvbXByZXNzb3I6OnBhcmFtZXRlclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNz
Q29tcHJlc3Nvcjo6c2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6RHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJl
c3Nvcjo6c2FtcGxlUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6
Om55cXVpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzYXR1cmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXF1YWxQb3dlclBhbm5lcjo6RXF1YWxQb3dlclBhbm5lcik6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpIUlRG
RGF0YWJhc2U6OnNhbXBsZVJhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmNy
ZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkhSVEZEYXRhYmFzZUxvYWRlcjo6SFJURkRhdGFiYXNlTG9hZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZE
YXRhYmFzZUxvYWRlcjo6ZGF0YWJhc2VTYW1wbGVSYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9IUlRGRWxldmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246
OmNhbGN1bGF0ZVN5bW1ldHJpY0tlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNhbGN1bGF0ZUtlcm5lbHNGb3JBemltdXRoRWxldmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5n
U2xpY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpzYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhSVEZFbGV2YXRpb246OkhSVEZFbGV2YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEF2ZXJhZ2VHcm91
cERlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6Y3JlYXRlSW50ZXJwb2xhdGVkS2VybmVsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpI
UlRGS2VybmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6ZnJhbWVE
ZWxheSk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpzYW1wbGVSYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6SFJU
RlBhbm5lcik6CisgICAgICAgIChXZWJDb3JlOjpIUlRGUGFubmVyOjpmZnRTaXplRm9yU2FtcGxl
UmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oOgorICAgICAgICAo
V2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9CdXNNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk1hYzo6QXVkaW9EZXN0aW5hdGlv
bk1hYyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25NYWM6OnNhbXBsZVJhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlQnVzRnJvbUF1ZGlvRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVC
dXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb0ZpbGVSZWFkZXJNYWMuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMp
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6
OkRlY29kaW5nVGFzayk6CisgICAgICAgICogd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnNhbXBs
ZVJhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZSk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUu
aDoKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpj
cmVhdGVGcm9tQXVkaW9GaWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6
QXVkaW9CdWZmZXIpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6c2FtcGxlUmF0ZSk6CisgICAgICAgICogd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnJlbmRlckZyb21CdWZmZXIpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWxNZXJnZXI6OkF1ZGlvQ2hhbm5lbE1l
cmdlcik6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0NoYW5uZWxNZXJnZXI6OmNyZWF0ZSk6CisgICAgICAgICogd2ViYXVk
aW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFu
bmVsU3BsaXR0ZXI6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVyKToKKyAgICAgICAgKiB3ZWJhdWRpby9B
dWRpb0NoYW5uZWxTcGxpdHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsU3Bs
aXR0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzYW1wbGVSYXRl
KToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgor
ICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogd2Vi
YXVkaW8vQXVkaW9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0dhaW5Ob2Rl
OjpBdWRpb0dhaW5Ob2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0dhaW5Ob2RlOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1
ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9MaXN0ZW5lcjo6
QXVkaW9MaXN0ZW5lcik6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9MaXN0ZW5lcjo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9MaXN0ZW5lcjo6c2V0T3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9MaXN0ZW5lcjo6c2V0VmVsb2NpdHkpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6CisgICAgICAg
ICogd2ViYXVkaW8vQXVkaW9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnNh
bXBsZVJhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Bhbm5lck5vZGU6OkF1ZGlvUGFubmVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Bhbm5lck5vZGU6OmdldEF6aW11dGhFbGV2YXRpb24pOgorICAgICAg
ICAqIHdlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Q
YW5uZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9QYXJhbTo6c21vb3RoZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFt
OjpzbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6Y2FsY3VsYXRlU2FtcGxl
QWNjdXJhdGVWYWx1ZXMpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4
dFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6dGltZVRvU2FtcGxlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2VJbXBsKToKKyAg
ICAgICAgKiB3ZWJhdWRpby9BdWRpb1NvdXJjZU5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU291cmNlTm9kZTo6QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9CaXF1
YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZEZpbHRlck5vZGU6OkJp
cXVhZEZpbHRlck5vZGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZEZpbHRlck5vZGU6OmNyZWF0ZSk6CisgICAgICAgICog
d2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFBy
b2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKToKKyAgICAgICAgKiB3ZWJhdWRpby9CaXF1YWRQcm9j
ZXNzb3IuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUpOgorICAgICAgICAqIHdlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgICogd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6aW5pdGlh
bGl6ZSk6CisgICAgICAgICogd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6
CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnNhbXBsZVJh
dGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGF5RFNQS2VybmVsOjpEZWxheURTUEtlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxheURTUEtlcm5lbDo6cHJvY2Vzcyk6CisgICAgICAgICogd2ViYXVkaW8vRGVsYXlEU1BL
ZXJuZWwuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0RlbGF5Tm9k
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIHdl
YmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5UHJvY2Vz
c29yOjpEZWxheVByb2Nlc3Nvcik6CisgICAgICAgICogd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3Iu
aDoKKyAgICAgICAgKiB3ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZSk6CisgICAgICAgICog
d2ViYXVkaW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaWdo
UGFzczJGaWx0ZXJOb2RlOjpIaWdoUGFzczJGaWx0ZXJOb2RlKToKKyAgICAgICAgKiB3ZWJhdWRp
by9IaWdoUGFzczJGaWx0ZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpIaWdoUGFzczJGaWx0
ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRBdWRpb05vZGU6OkphdmFTY3JpcHRBdWRpb05vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oOgorICAgICAgICAqIHdlYmF1
ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb3dQYXNzMkZp
bHRlck5vZGU6Okxvd1Bhc3MyRmlsdGVyTm9kZSk6CisgICAgICAgICogd2ViYXVkaW8vTG93UGFz
czJGaWx0ZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpMb3dQYXNzMkZpbHRlck5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6
CisgICAgICAgIChXZWJDb3JlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnNhbXBsZVJh
dGUpOgorICAgICAgICAqIHdlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXJOb2RlOjpSZWFsdGltZUFuYWx5c2VyTm9kZSk6
CisgICAgICAgICogd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lQW5hbHlzZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlv
L1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRT
UEtlcm5lbDo6cHJvY2Vzcyk6CisgICAgICAgICogd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpXYXZlU2hhcGVy
UHJvY2Vzc29yKToKKyAgICAgICAgKiB3ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmg6CisK
KwogMjAxMS0xMC0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTY1MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5jcHAKaW5kZXggZTM0ZjdkYmQ1ZTcwYzI1Y2NkYzc1MzExYTg5Mjc1
MzM3OTdiNzdlYi4uYWQyOWFmMWFhZDIzNzIzNzA5MWY1NTkzNjIyN2I5MzFmZTk5OWNjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtNDgsOSArNDgs
OSBAQCB1c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKICAgICAKIEF1ZGlvQnVzOjpBdWRpb0J1
cyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbGVuZ3RoLCBib29sIGFsbG9jYXRl
KQogICAgIDogbV9sZW5ndGgobGVuZ3RoKQotICAgICwgbV9idXNHYWluKDEuMCkKKyAgICAsIG1f
YnVzR2FpbigxKQogICAgICwgbV9pc0ZpcnN0VGltZSh0cnVlKQotICAgICwgbV9zYW1wbGVSYXRl
KDAuMCkKKyAgICAsIG1fc2FtcGxlUmF0ZSgwKQogewogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1iZXJPZkNoYW5uZWxzKTsKIApAQCAtNDY2LDcgKzQ2Niw3IEBAIFBh
c3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCeU1peGluZ1RvTW9ubyhBdWRpb0J1
cyogc291cmNlQnVzKQogICAgICAgICAKICAgICAgICAgICAgIC8vIERvIHRoZSBtb25vIG1peGRv
d24uCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKQotICAgICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gMC41ICogKHNvdXJjZUxbaV0gKyBzb3VyY2VSW2ld
KTsKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IChzb3VyY2VMW2ldICsgc291cmNl
UltpXSkgLyAyOwogCiAgICAgICAgICAgICBkZXN0aW5hdGlvbkJ1cy0+c2V0U2FtcGxlUmF0ZShz
b3VyY2VCdXMtPnNhbXBsZVJhdGUoKSk7ICAgIAogICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0
aW9uQnVzLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQnVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5o
CmluZGV4IGE4N2Y1NWQzMTMyZWMzYTk1NmUyZTk0NmZiNjRmMWEwNDU3OTFlNzUuLjUzZmI0Yjk2
OTc3M2NkYTQ1YTAzMzBhNWQ4NWYxOTAxMWMyYzQ4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9CdXMuaApAQCAtNzYsOCArNzYsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICAvLyBTYW1wbGUtcmF0
ZSA6IDAuMCBpZiB1bmtub3duIG9yICJkb24ndCBjYXJlIgotICAgIGRvdWJsZSBzYW1wbGVSYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0gICAgdm9pZCBzZXRTYW1wbGVSYXRl
KGRvdWJsZSBzYW1wbGVSYXRlKSB7IG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7IH0KKyAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgdm9p
ZCBzZXRTYW1wbGVSYXRlKGZsb2F0IHNhbXBsZVJhdGUpIHsgbV9zYW1wbGVSYXRlID0gc2FtcGxl
UmF0ZTsgfQogCiAgICAgLy8gWmVyb2VzIGFsbCBjaGFubmVscy4KICAgICB2b2lkIHplcm8oKTsK
QEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWFrZXMgbWF4aW11bSBhYnNvbHV0
ZSB2YWx1ZSA9PSAxLjAgKGlmIHBvc3NpYmxlKS4KICAgICB2b2lkIG5vcm1hbGl6ZSgpOwogCi0g
ICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIqIG5hbWUsIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxB
dWRpb0J1cz4gbG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgZmxvYXQgc2Ft
cGxlUmF0ZSk7CiAKIHByb3RlY3RlZDoKICAgICBBdWRpb0J1cygpIHsgfTsKQEAgLTE0OSw3ICsx
NDksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBkb3VibGUgbV9idXNHYWluOwogICAgIGJvb2wgbV9p
c0ZpcnN0VGltZTsKLSAgICBkb3VibGUgbV9zYW1wbGVSYXRlOyAvLyAwLjAgaWYgdW5rbm93biBv
ciBOL0EKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7IC8vIDAuMCBpZiB1bmtub3duIG9yIE4vQQog
fTsKIAogfSAvLyBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0RTUEtlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9EU1BLZXJuZWwuaAppbmRleCBkMDcxOWM1NjU5NzI3YTRlNmQ2NTA2OTg2ZDRjZTdmMWM5MmZm
YjI3Li5mMzNjOWVkZTRkM2MwYTEzNjM2MzJlNWMwODRlZDBlYmRhYjUyMmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBBdWRpb0RTUEtlcm5lbChkb3VibGUg
c2FtcGxlUmF0ZSkKKyAgICBBdWRpb0RTUEtlcm5lbChmbG9hdCBzYW1wbGVSYXRlKQogICAgICAg
ICA6IG1fa2VybmVsUHJvY2Vzc29yKDApCiAgICAgICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJh
dGUpCiAgICAgewpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgPSAwOwogCi0gICAg
ZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgZG91
YmxlIG55cXVpc3QoKSBjb25zdCB7IHJldHVybiAwLjUgKiBzYW1wbGVSYXRlKCk7IH0KIAogICAg
IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKiBwcm9jZXNzb3IoKSB7IHJldHVybiBtX2tlcm5lbFBy
b2Nlc3NvcjsgfQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBB
dWRpb0RTUEtlcm5lbFByb2Nlc3NvciogbV9rZXJuZWxQcm9jZXNzb3I7Ci0gICAgZG91YmxlIG1f
c2FtcGxlUmF0ZTsKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAKaW5kZXggYzkwMTYxOWMzODAxOTRiYTFlNWVjZWM3
NTRkNmRmZTEwYzNkZThiMS4uYmM3N2JhZTRmNGM5MTM0ZjQ1N2ZlNjQyYzJjNzg0YWQyZGI3ZWMw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJu
ZWxQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
RFNQS2VybmVsUHJvY2Vzc29yLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAvLyBzZXROdW1iZXJPZkNoYW5uZWxzKCkgbWF5IGxhdGVyIGJlIGNhbGxlZCBpZiB0
aGUgb2JqZWN0IGlzIG5vdCB5ZXQgaW4gYW4gImluaXRpYWxpemVkIiBzdGF0ZS4KLUF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yOjpBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcihkb3VibGUgc2FtcGxlUmF0
ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKK0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yOjpB
dWRpb0RTUEtlcm5lbFByb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzKQogICAgIDogQXVkaW9Qcm9jZXNzb3Ioc2FtcGxlUmF0ZSkKICAgICAsIG1fbnVt
YmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9oYXNKdXN0UmVzZXQodHJ1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2Vy
bmVsUHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtl
cm5lbFByb2Nlc3Nvci5oCmluZGV4IGU4N2E4MTAyNmE5ZDRjYWMyYThlM2UzMzZmNDVkZWE4M2Vl
ZDY3N2EuLjQwYjVhYjhkNjczODNlMmRjODk3Y2Y3NTNmNjQ5YzFjMDAzN2IzYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9j
ZXNzb3IuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NvcjsKIGNsYXNzIEF1
ZGlvRFNQS2VybmVsUHJvY2Vzc29yIDogcHVibGljIEF1ZGlvUHJvY2Vzc29yIHsKIHB1YmxpYzoK
ICAgICAvLyBudW1iZXJPZkNoYW5uZWxzIG1heSBiZSBsYXRlciBjaGFuZ2VkIGlmIG9iamVjdCBp
cyBub3QgeWV0IGluIGFuICJpbml0aWFsaXplZCIgc3RhdGUKLSAgICBBdWRpb0RTUEtlcm5lbFBy
b2Nlc3Nvcihkb3VibGUgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7Cisg
ICAgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscyk7CiAKICAgICAvLyBTdWJjbGFzc2VzIGNyZWF0ZSB0aGUgYXBwcm9wcmlh
dGUgdHlwZSBvZiBwcm9jZXNzaW5nIGtlcm5lbCBoZXJlLgogICAgIC8vIFdlJ2xsIGNhbGwgdGhp
cyB0byBjcmVhdGUgYSBrZXJuZWwgZm9yIGVhY2ggY2hhbm5lbC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAppbmRleCA5NDk4MTEwMzcxMzk4
ZjBiNTViZGU4OTcxNmQ4NTBmMzhhOGRlNjg3Li43NTg4MmMwYTYzNWZmM2Y4Nzc0YzUyOWM3NDA0
ZjFkZWQxZDUzYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0Rlc3RpbmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbi5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEF1ZGlvU291cmNlUHJvdmlk
ZXI7CiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZShBdWRpb1NvdXJjZVByb3ZpZGVyJiwgZG91
YmxlIHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+
IGNyZWF0ZShBdWRpb1NvdXJjZVByb3ZpZGVyJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2
aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uKCkgeyB9CiAKQEAgLTUwLDggKzUwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmcoKSA9IDA7CiAKICAgICAvLyBTYW1wbGUtcmF0
ZSBjb252ZXJzaW9uIG1heSBoYXBwZW4gaW4gQXVkaW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdh
cmUgc2FtcGxlLXJhdGUKLSAgICB2aXJ0dWFsIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3QgPSAw
OwotICAgIHN0YXRpYyBkb3VibGUgaGFyZHdhcmVTYW1wbGVSYXRlKCk7CisgICAgdmlydHVhbCBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOworICAgIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNh
bXBsZVJhdGUoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRmlsZVJlYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GaWxlUmVhZGVyLmgKaW5kZXggM2MwMjQ5MDdhMWJj
MWZiNzUzZjg0ZmZjODU0YjBhODhiNTVmMmFkZi4uMGM4ZGM2ZTQ5OTNiZGRkMDNkZTRhZTk3YjEy
NTZmYjZkZDQwNTNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9GaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9GaWxlUmVhZGVyLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgQXVkaW9CdXM7CiAvLyBzYW1w
bGVSYXRlIHdpbGwgYmUgbWFkZSAoaWYgaXQgZG9lc24ndCBhbHJlYWR5IG1hdGNoIHRoZSBmaWxl
J3Mgc2FtcGxlLXJhdGUpLgogLy8gVGhlIGNyZWF0ZWQgYnVmZmVyIHdpbGwgaGF2ZSBpdHMgc2Ft
cGxlLXJhdGUgc2V0IGNvcnJlY3RseSB0byB0aGUgcmVzdWx0LgogCi1QYXNzT3duUHRyPEF1ZGlv
QnVzPiBjcmVhdGVCdXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9ubywgZG91YmxlIHNhbXBsZVJhdGUpOworUGFzc093
blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGNvbnN0IHZvaWQq
IGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBsZVJhdGUp
OwogCi1QYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGNvbnN0IGNo
YXIqIGZpbGVQYXRoLCBib29sIG1peFRvTW9ubywgZG91YmxlIHNhbXBsZVJhdGUpOworUGFzc093
blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0
aCwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKIC8vIE1heSBwYXNzIGluIDAuMCBmb3Igc2FtcGxlUmF0ZSBpbiB3aGlj
aCBjYXNlIGl0IHdpbGwgdXNlIHRoZSBBdWRpb0J1cydzIHNhbXBsZVJhdGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiB2b2lkIHdyaXRlQnVzVG9BdWRpb0ZpbGUoQXVkaW9CdXMqIGJ1
cywgY29uc3QgY2hhciogZmlsZVBhdGgsIGRvdWJsZSBmaWxlU2FtcGxlUmF0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nlc3Nvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaAppbmRleCA2OWJhNDBm
ODA0YTg2NTZmOTQ4MWJlYWRlNGZiZDRhYmQxOWNhMTg2Li4yZDdiNjBhN2NlNjBlYjA2NjVlMmQy
ODhmYmM5NDk2NjZmZmRjYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Byb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvUHJvY2Vzc29yLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQXVkaW9CdXM7CiAKIGNs
YXNzIEF1ZGlvUHJvY2Vzc29yIHsKIHB1YmxpYzoKLSAgICBBdWRpb1Byb2Nlc3Nvcihkb3VibGUg
c2FtcGxlUmF0ZSkKKyAgICBBdWRpb1Byb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlKQogICAgICAg
ICA6IG1faW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJh
dGUpCiAgICAgewpAQCAtNjMsMTEgKzYzLDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNJbml0
aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KIAotICAgIGRvdWJsZSBz
YW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgZmxvYXQgc2Ft
cGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBtX2luaXRpYWxpemVkOwotICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CisgICAgZmxv
YXQgbV9zYW1wbGVSYXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuY3BwCmluZGV4IDdhNGIz
MmU1OTE4OTMwMWZkMThiYTE4ZTlkOTdlYTAxNjAzYjljZGUuLjFhMDJiN2UxMGRmMjA1MGM3ZmFi
MTU5ZjE2ZGI3YzdkMGY0MWFmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1V0aWxpdGllcy5jcHAKQEAgLTMzLDI3ICszMywyNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIG5hbWVzcGFjZSBBdWRpb1V0aWxpdGllcyB7CiAKLWRvdWJsZSBkZWNpYmVsc1Rv
TGluZWFyKGRvdWJsZSBkZWNpYmVscykKK2Zsb2F0IGRlY2liZWxzVG9MaW5lYXIoZmxvYXQgZGVj
aWJlbHMpCiB7Ci0gICAgcmV0dXJuIHBvdygxMC4wLCAwLjA1ICogZGVjaWJlbHMpOworICAgIHJl
dHVybiBwb3dmKDEwLCAwLjA1ZiAqIGRlY2liZWxzKTsKIH0KIAotZG91YmxlIGxpbmVhclRvRGVj
aWJlbHMoZG91YmxlIGxpbmVhcikKK2Zsb2F0IGxpbmVhclRvRGVjaWJlbHMoZmxvYXQgbGluZWFy
KQogewogICAgIC8vIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSBkZWNpYmVscyBmb3Ig
YSB6ZXJvIGxpbmVhciB2YWx1ZSBzaW5jZSBpdCB3b3VsZCBiZSAtSW5mLgogICAgIC8vIC0xMDAw
LjAgZEIgcmVwcmVzZW50cyBhIHZlcnkgdGlueSBsaW5lYXIgdmFsdWUgaW4gY2FzZSB3ZSBldmVy
IHJlYWNoIHRoaXMgY2FzZS4KICAgICBBU1NFUlQobGluZWFyKTsKICAgICBpZiAoIWxpbmVhcikK
LSAgICAgICAgcmV0dXJuIC0xMDAwLjA7CisgICAgICAgIHJldHVybiAtMTAwMDsKICAgICAgICAg
Ci0gICAgcmV0dXJuIDIwLjAgKiBsb2cxMChsaW5lYXIpOworICAgIHJldHVybiAyMCAqIGxvZzEw
ZihsaW5lYXIpOwogfQogCi1kb3VibGUgZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRl
KGRvdWJsZSB0aW1lQ29uc3RhbnQsIGRvdWJsZSBzYW1wbGVSYXRlKQorZmxvYXQgZGlzY3JldGVU
aW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRlKGZsb2F0IHRpbWVDb25zdGFudCwgZmxvYXQgc2FtcGxl
UmF0ZSkKIHsKICAgICAvLyBoYXJkY29kZWQgdmFsdWUgaXMgdGVtcG9yYXJ5IGJ1aWxkIGZpeCBm
b3IgV2luZG93cy4KICAgICAvLyBGSVhNRTogcmVwbGFjZSBoYXJkY29kZSAyLjcxODI4MiB3aXRo
IE1fRSB1bnRpbCB0aGUgY29ycmVjdCBNYXRoRXh0cmFzLmggc29sdXRpb24gaXMgZGV0ZXJtaW5l
ZC4KLSAgICByZXR1cm4gMS4wIC0gcG93KDEuMCAvIDIuNzE4MjgyLCAxLjAgLyAoc2FtcGxlUmF0
ZSAqIHRpbWVDb25zdGFudCkpOworICAgIHJldHVybiAxIC0gcG93ZigxIC8gMi43MTgyODJmLCAx
IC8gKHNhbXBsZVJhdGUgKiB0aW1lQ29uc3RhbnQpKTsKIH0KICAgICAKIH0gLy8gQXVkaW9VdGls
aXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9VdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmgK
aW5kZXggN2NmNDRjZWYyYjRkM2FkMjJkODRhMDI0M2JiZDE3NGU2NGM1ZDIyNy4uYzk4YTRjOGRl
OGJmMTFmZmIyMDNmNWU2NWZhMWVmMDYyYjAzYmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5oCkBAIC0zMCwxMyArMzAsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIEF1ZGlvVXRpbGl0aWVzIHsKIAogLy8gU3RhbmRhcmQg
ZnVuY3Rpb25zIGZvciBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIGRlY2liZWwgdmFsdWVzIGZyb20g
bGluZWFyLgotZG91YmxlIGxpbmVhclRvRGVjaWJlbHMoZG91YmxlKTsKLWRvdWJsZSBkZWNpYmVs
c1RvTGluZWFyKGRvdWJsZSk7CitmbG9hdCBsaW5lYXJUb0RlY2liZWxzKGZsb2F0KTsKK2Zsb2F0
IGRlY2liZWxzVG9MaW5lYXIoZmxvYXQpOwogCiAvLyB0aW1lQ29uc3RhbnQgaXMgdGhlIHRpbWUg
aXQgdGFrZXMgYSBmaXJzdC1vcmRlciBsaW5lYXIgdGltZS1pbnZhcmlhbnQgc3lzdGVtCiAvLyB0
byByZWFjaCB0aGUgdmFsdWUgMSAtIDEvZSAoYXJvdW5kIDYzLjIlKSBnaXZlbiBhIHN0ZXAgaW5w
dXQgcmVzcG9uc2UuCiAvLyBkaXNjcmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJhdGUoKSB3aWxs
IHJldHVybiB0aGUgZGlzY3JldGUgdGltZS1jb25zdGFudCBmb3IgdGhlIHNwZWNpZmljIHNhbXBs
ZVJhdGUuCi1kb3VibGUgZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRlKGRvdWJsZSB0
aW1lQ29uc3RhbnQsIGRvdWJsZSBzYW1wbGVSYXRlKTsKK2Zsb2F0IGRpc2NyZXRlVGltZUNvbnN0
YW50Rm9yU2FtcGxlUmF0ZShmbG9hdCB0aW1lQ29uc3RhbnQsIGZsb2F0IHNhbXBsZVJhdGUpOwog
ICAgIAogfSAvLyBBdWRpb1V0aWxpdGVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IDE1ZWVjOWY0MGFhZjZkMDIy
MWFhNWU2YjMxMTU1MmU4NThkNzFjMzYuLmM0Nzk1ZjRmODFlYmZjOGVkOWJmNzZhNTk4NDE0ZTc4
OTlkODJlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBBdWRpb1V0aWxpdGllczsKICAgICAKLUR5bmFtaWNzQ29tcHJl
c3Nvcjo6RHluYW1pY3NDb21wcmVzc29yKGJvb2wgaXNTdGVyZW8sIGRvdWJsZSBzYW1wbGVSYXRl
KQorRHluYW1pY3NDb21wcmVzc29yOjpEeW5hbWljc0NvbXByZXNzb3IoYm9vbCBpc1N0ZXJlbywg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IG1faXNTdGVyZW8oaXNTdGVyZW8pCiAgICAgLCBtX3Nh
bXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICAsIG1fY29tcHJlc3NvcihzYW1wbGVSYXRlKQpAQCAt
NTksMTcgKzU5LDE3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjppbml0aWFsaXplUGFyYW1l
dGVycygpCiAgICAgCiAgICAgbV9wYXJhbWV0ZXJzW1BhcmFtVGhyZXNob2xkXSA9IC0yNDsgLy8g
ZEIKICAgICBtX3BhcmFtZXRlcnNbUGFyYW1IZWFkcm9vbV0gPSAyMTsgLy8gZEIKLSAgICBtX3Bh
cmFtZXRlcnNbUGFyYW1BdHRhY2tdID0gMC4wMDM7IC8vIHNlY29uZHMKLSAgICBtX3BhcmFtZXRl
cnNbUGFyYW1SZWxlYXNlXSA9IDAuMjUwOyAvLyBzZWNvbmRzCi0gICAgbV9wYXJhbWV0ZXJzW1Bh
cmFtUHJlRGVsYXldID0gMC4wMDY7IC8vIHNlY29uZHMKKyAgICBtX3BhcmFtZXRlcnNbUGFyYW1B
dHRhY2tdID0gMC4wMDNmOyAvLyBzZWNvbmRzCisgICAgbV9wYXJhbWV0ZXJzW1BhcmFtUmVsZWFz
ZV0gPSAwLjI1MGY7IC8vIHNlY29uZHMKKyAgICBtX3BhcmFtZXRlcnNbUGFyYW1QcmVEZWxheV0g
PSAwLjAwNmY7IC8vIHNlY29uZHMKIAogICAgIC8vIFJlbGVhc2Ugem9uZSB2YWx1ZXMgMCAtPiAx
LgotICAgIG1fcGFyYW1ldGVyc1tQYXJhbVJlbGVhc2Vab25lMV0gPSAwLjA5OwotICAgIG1fcGFy
YW1ldGVyc1tQYXJhbVJlbGVhc2Vab25lMl0gPSAwLjE2OwotICAgIG1fcGFyYW1ldGVyc1tQYXJh
bVJlbGVhc2Vab25lM10gPSAwLjQyOwotICAgIG1fcGFyYW1ldGVyc1tQYXJhbVJlbGVhc2Vab25l
NF0gPSAwLjk4OworICAgIG1fcGFyYW1ldGVyc1tQYXJhbVJlbGVhc2Vab25lMV0gPSAwLjA5ZjsK
KyAgICBtX3BhcmFtZXRlcnNbUGFyYW1SZWxlYXNlWm9uZTJdID0gMC4xNmY7CisgICAgbV9wYXJh
bWV0ZXJzW1BhcmFtUmVsZWFzZVpvbmUzXSA9IDAuNDJmOworICAgIG1fcGFyYW1ldGVyc1tQYXJh
bVJlbGVhc2Vab25lNF0gPSAwLjk4ZjsKIAotICAgIG1fcGFyYW1ldGVyc1tQYXJhbUZpbHRlclN0
YWdlR2Fpbl0gPSA0LjQ7IC8vIGRCCisgICAgbV9wYXJhbWV0ZXJzW1BhcmFtRmlsdGVyU3RhZ2VH
YWluXSA9IDQuNGY7IC8vIGRCCiAgICAgbV9wYXJhbWV0ZXJzW1BhcmFtRmlsdGVyU3RhZ2VSYXRp
b10gPSAyOwogICAgIG1fcGFyYW1ldGVyc1tQYXJhbUZpbHRlckFuY2hvcl0gPSAxNTAwMCAvIG55
cXVpc3QoKTsKICAgICAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6
OmluaXRpYWxpemVQYXJhbWV0ZXJzKCkKICAgICBtX3BhcmFtZXRlcnNbUGFyYW1FZmZlY3RCbGVu
ZF0gPSAxOwogfQogCi1kb3VibGUgRHluYW1pY3NDb21wcmVzc29yOjpwYXJhbWV0ZXJWYWx1ZSh1
bnNpZ25lZCBwYXJhbWV0ZXJJRCkKK2Zsb2F0IER5bmFtaWNzQ29tcHJlc3Nvcjo6cGFyYW1ldGVy
VmFsdWUodW5zaWduZWQgcGFyYW1ldGVySUQpCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRlcklEIDwg
UGFyYW1MYXN0KTsKICAgICByZXR1cm4gbV9wYXJhbWV0ZXJzW3BhcmFtZXRlcklEXTsKQEAgLTkw
LDggKzkwLDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldEVtcGhhc2lzU3RhZ2VQYXJh
bWV0ZXJzKHVuc2lnbmVkIHN0YWdlSW5kZXgsIGZsb2F0IGcKICAgICBmbG9hdCBnayA9IDEgLSBn
YWluIC8gMjA7CiAgICAgZmxvYXQgZjEgPSBub3JtYWxpemVkRnJlcXVlbmN5ICogZ2s7CiAgICAg
ZmxvYXQgZjIgPSBub3JtYWxpemVkRnJlcXVlbmN5IC8gZ2s7Ci0gICAgZmxvYXQgcjEgPSBleHAo
LWYxICogcGlEb3VibGUpOwotICAgIGZsb2F0IHIyID0gZXhwKC1mMiAqIHBpRG91YmxlKTsKKyAg
ICBmbG9hdCByMSA9IGV4cGYoLWYxICogcGlGbG9hdCk7CisgICAgZmxvYXQgcjIgPSBleHBmKC1m
MiAqIHBpRmxvYXQpOwogCiAgICAgLy8gU2V0IHByZS1maWx0ZXIgemVybyBhbmQgcG9sZSB0byBj
cmVhdGUgYW4gZW1waGFzaXMgZmlsdGVyLgogICAgIG1fcHJlRmlsdGVyW3N0YWdlSW5kZXhdLnNl
dFplcm8ocjEpOwpAQCAtMTcwLDEwICsxNzAsMTAgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6
OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLAog
ICAgIC8vIDEgbWl4ZXMgaW4gb25seSB0aGUgY29tcHJlc3NlZCBzaWduYWwuCiAgICAgZmxvYXQg
ZWZmZWN0QmxlbmQgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUVmZmVjdEJsZW5kKTsKIAotICAgIGRv
dWJsZSByZWxlYXNlWm9uZTEgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJlbGVhc2Vab25lMSk7Ci0g
ICAgZG91YmxlIHJlbGVhc2Vab25lMiA9IHBhcmFtZXRlclZhbHVlKFBhcmFtUmVsZWFzZVpvbmUy
KTsKLSAgICBkb3VibGUgcmVsZWFzZVpvbmUzID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1SZWxlYXNl
Wm9uZTMpOwotICAgIGRvdWJsZSByZWxlYXNlWm9uZTQgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJl
bGVhc2Vab25lNCk7CisgICAgZmxvYXQgcmVsZWFzZVpvbmUxID0gcGFyYW1ldGVyVmFsdWUoUGFy
YW1SZWxlYXNlWm9uZTEpOworICAgIGZsb2F0IHJlbGVhc2Vab25lMiA9IHBhcmFtZXRlclZhbHVl
KFBhcmFtUmVsZWFzZVpvbmUyKTsKKyAgICBmbG9hdCByZWxlYXNlWm9uZTMgPSBwYXJhbWV0ZXJW
YWx1ZShQYXJhbVJlbGVhc2Vab25lMyk7CisgICAgZmxvYXQgcmVsZWFzZVpvbmU0ID0gcGFyYW1l
dGVyVmFsdWUoUGFyYW1SZWxlYXNlWm9uZTQpOwogCiAgICAgLy8gQXBwbHkgY29tcHJlc3Npb24g
dG8gdGhlIHByZS1maWx0ZXJlZCBzaWduYWwuCiAgICAgLy8gVGhlIHByb2Nlc3NpbmcgaXMgcGVy
Zm9ybWVkIGluIHBsYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuaAppbmRleCBkMGMwMzZmMjlhZWVjNDE3NmNjNTQzY2M4YzE1ZDIx
Yjg0MTk1MGFmLi4yMTUyOTUxMmRlZjE5MDQ2NmNlY2E4NWNhODFjM2Q4NzZlYjAwZmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
aApAQCAtNjIsMjYgKzYyLDI2IEBAIHB1YmxpYzoKICAgICAgICAgUGFyYW1MYXN0CiAgICAgfTsK
IAotICAgIER5bmFtaWNzQ29tcHJlc3Nvcihib29sIGlzU3RlcmVvLCBkb3VibGUgc2FtcGxlUmF0
ZSk7CisgICAgRHluYW1pY3NDb21wcmVzc29yKGJvb2wgaXNTdGVyZW8sIGZsb2F0IHNhbXBsZVJh
dGUpOwogCiAgICAgdm9pZCBwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBk
ZXN0aW5hdGlvbkJ1cywgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB2b2lkIHJlc2V0
KCk7CiAKLSAgICBkb3VibGUgcGFyYW1ldGVyVmFsdWUodW5zaWduZWQgcGFyYW1ldGVySUQpOwor
ICAgIGZsb2F0IHBhcmFtZXRlclZhbHVlKHVuc2lnbmVkIHBhcmFtZXRlcklEKTsKIAogICAgIGJv
b2wgaXNTdGVyZW8oKSBjb25zdCB7IHJldHVybiBtX2lzU3RlcmVvOyB9Ci0gICAgZG91YmxlIHNh
bXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KLSAgICBkb3VibGUgbnlx
dWlzdCgpIGNvbnN0IHsgcmV0dXJuIDAuNSAqIG1fc2FtcGxlUmF0ZTsgfQorICAgIGZsb2F0IHNh
bXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBueXF1
aXN0KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlIC8gMjsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgLy8gbV9wYXJhbWV0ZXJzIGhvbGRzIHRoZSB0d2Vha2FibGUgY29tcHJlc3NvciBwYXJhbWV0
ZXJzLgogICAgIC8vIEZJWE1FOiBleHBvc2Ugc29tZSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgb25l
cyAoc3VjaCBhcyB0aHJlc2hvbGQsIGF0dGFjaywgcmVsZWFzZSkKICAgICAvLyBhcyBEeW5hbWlj
c0NvbXByZXNzb3JOb2RlIGF0dHJpYnV0ZXMuCi0gICAgZG91YmxlIG1fcGFyYW1ldGVyc1tQYXJh
bUxhc3RdOworICAgIGZsb2F0IG1fcGFyYW1ldGVyc1tQYXJhbUxhc3RdOwogICAgIHZvaWQgaW5p
dGlhbGl6ZVBhcmFtZXRlcnMoKTsKIAogICAgIGJvb2wgbV9pc1N0ZXJlbzsKLSAgICBkb3VibGUg
bV9zYW1wbGVSYXRlOworICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKIAogICAgIC8vIEVtcGhhc2lz
IGZpbHRlciBjb250cm9scy4KICAgICBmbG9hdCBtX2xhc3RGaWx0ZXJTdGFnZVJhdGlvOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
S2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbC5jcHAKaW5kZXggYTA3MjM0NjFiYjIxYzUzY2E3MTZmZDZmZTdiNmM1N2Q0ODdj
M2JiZi4uMjIyOWMzODE1YjViZmQyOTBhZTFmZjE1ZDM1NTRmNWRmYjMwNzAzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3JLZXJuZWwuY3BwCkBAIC00MywxNSArNDMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNp
bmcgbmFtZXNwYWNlIEF1ZGlvVXRpbGl0aWVzOwogCiAvLyBNZXRlcmluZyBoaXRzIHBlYWtzIGlu
c3RhbnRseSwgYnV0IHJlbGVhc2VzIHRoaXMgZmFzdCAoaW4gc2Vjb25kcykuCi1jb25zdCBkb3Vi
bGUgbWV0ZXJpbmdSZWxlYXNlVGltZUNvbnN0YW50ID0gMC4zMjU7Citjb25zdCBmbG9hdCBtZXRl
cmluZ1JlbGVhc2VUaW1lQ29uc3RhbnQgPSAwLjMyNWY7CiAgICAgCiAvLyBFeHBvbmVudGlhbCBz
YXR1cmF0aW9uIGN1cnZlLgotc3RhdGljIGRvdWJsZSBzYXR1cmF0ZShkb3VibGUgeCwgZG91Ymxl
IGspCitzdGF0aWMgZmxvYXQgc2F0dXJhdGUoZmxvYXQgeCwgZmxvYXQgaykKIHsKICAgICByZXR1
cm4gMSAtIGV4cCgtayAqIHgpOwogfQogCi1EeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OkR5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbChkb3VibGUgc2FtcGxlUmF0ZSkKK0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbDo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsKGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdFByZURlbGF5RnJhbWVzKERl
ZmF1bHRQcmVEZWxheUZyYW1lcykKICAgICAsIG1fcHJlRGVsYXlCdWZmZXJMKE1heFByZURlbGF5
RnJhbWVzKQpAQCAtMTA4LDE4ICsxMDgsMTggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAgICAgZmxvYXQgd2V0TWl4ID0gZWZmZWN0Qmxl
bmQ7CiAKICAgICAvLyBUaHJlc2hvbGQgYW5kIGhlYWRyb29tLgotICAgIGRvdWJsZSBsaW5lYXJU
aHJlc2hvbGQgPSBkZWNpYmVsc1RvTGluZWFyKGRiVGhyZXNob2xkKTsKLSAgICBkb3VibGUgbGlu
ZWFySGVhZHJvb20gPSBkZWNpYmVsc1RvTGluZWFyKGRiSGVhZHJvb20pOworICAgIGZsb2F0IGxp
bmVhclRocmVzaG9sZCA9IGRlY2liZWxzVG9MaW5lYXIoZGJUaHJlc2hvbGQpOworICAgIGZsb2F0
IGxpbmVhckhlYWRyb29tID0gZGVjaWJlbHNUb0xpbmVhcihkYkhlYWRyb29tKTsKIAogICAgIC8v
IE1ha2V1cCBnYWluLgotICAgIGRvdWJsZSBtYXhpbXVtID0gMS4wNSAqIGxpbmVhckhlYWRyb29t
ICogbGluZWFyVGhyZXNob2xkOwotICAgIGRvdWJsZSBrayA9IChtYXhpbXVtIC0gbGluZWFyVGhy
ZXNob2xkKTsKLSAgICBkb3VibGUgaW52ZXJzZUtLID0gMSAvIGtrOworICAgIGZsb2F0IG1heGlt
dW0gPSAxLjA1ZiAqIGxpbmVhckhlYWRyb29tICogbGluZWFyVGhyZXNob2xkOworICAgIGZsb2F0
IGtrID0gKG1heGltdW0gLSBsaW5lYXJUaHJlc2hvbGQpOworICAgIGZsb2F0IGludmVyc2VLSyA9
IDEgLyBrazsKIAotICAgIGRvdWJsZSBmdWxsUmFuZ2VHYWluID0gKGxpbmVhclRocmVzaG9sZCAr
IGtrICogc2F0dXJhdGUoMSAtIGxpbmVhclRocmVzaG9sZCwgMSkpOwotICAgIGRvdWJsZSBmdWxs
UmFuZ2VNYWtldXBHYWluID0gMSAvIGZ1bGxSYW5nZUdhaW47CisgICAgZmxvYXQgZnVsbFJhbmdl
R2FpbiA9IChsaW5lYXJUaHJlc2hvbGQgKyBrayAqIHNhdHVyYXRlKDEgLSBsaW5lYXJUaHJlc2hv
bGQsIDEpKTsKKyAgICBmbG9hdCBmdWxsUmFuZ2VNYWtldXBHYWluID0gMSAvIGZ1bGxSYW5nZUdh
aW47CiAgICAgLy8gRW1waXJpY2FsL3BlcmNlcHR1YWwgdHVuaW5nLgotICAgIGZ1bGxSYW5nZU1h
a2V1cEdhaW4gPSBwb3coZnVsbFJhbmdlTWFrZXVwR2FpbiwgMC42KTsKKyAgICBmdWxsUmFuZ2VN
YWtldXBHYWluID0gcG93ZihmdWxsUmFuZ2VNYWtldXBHYWluLCAwLjZmKTsKIAogICAgIGZsb2F0
IG1hc3RlckxpbmVhckdhaW4gPSBkZWNpYmVsc1RvTGluZWFyKGRiUG9zdEdhaW4pICogZnVsbFJh
bmdlTWFrZXVwR2FpbjsKIApAQCAtMTMxLDI2ICsxMzEsMjYgQEAgdm9pZCBEeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAgICAgZmxvYXQgcmVsZWFzZUZy
YW1lcyA9IHNhbXBsZVJhdGUgKiByZWxlYXNlVGltZTsKICAgICAKICAgICAvLyBEZXRlY3RvciBy
ZWxlYXNlIHRpbWUuCi0gICAgZG91YmxlIHNhdFJlbGVhc2VUaW1lID0gMC4wMDI1OwotICAgIGRv
dWJsZSBzYXRSZWxlYXNlRnJhbWVzID0gc2F0UmVsZWFzZVRpbWUgKiBzYW1wbGVSYXRlOworICAg
IGZsb2F0IHNhdFJlbGVhc2VUaW1lID0gMC4wMDI1ZjsKKyAgICBmbG9hdCBzYXRSZWxlYXNlRnJh
bWVzID0gc2F0UmVsZWFzZVRpbWUgKiBzYW1wbGVSYXRlOwogCiAgICAgLy8gQ3JlYXRlIGEgc21v
b3RoIGZ1bmN0aW9uIHdoaWNoIHBhc3NlcyB0aHJvdWdoIGZvdXIgcG9pbnRzLgogCiAgICAgLy8g
UG9seW5vbWlhbCBvZiB0aGUgZm9ybQogICAgIC8vIHkgPSBhICsgYip4ICsgYyp4XjIgKyBkKnhe
MyArIGUqeF40OwogCi0gICAgZG91YmxlIHkxID0gcmVsZWFzZUZyYW1lcyAqIHJlbGVhc2Vab25l
MTsKLSAgICBkb3VibGUgeTIgPSByZWxlYXNlRnJhbWVzICogcmVsZWFzZVpvbmUyOwotICAgIGRv
dWJsZSB5MyA9IHJlbGVhc2VGcmFtZXMgKiByZWxlYXNlWm9uZTM7Ci0gICAgZG91YmxlIHk0ID0g
cmVsZWFzZUZyYW1lcyAqIHJlbGVhc2Vab25lNDsKKyAgICBmbG9hdCB5MSA9IHJlbGVhc2VGcmFt
ZXMgKiByZWxlYXNlWm9uZTE7CisgICAgZmxvYXQgeTIgPSByZWxlYXNlRnJhbWVzICogcmVsZWFz
ZVpvbmUyOworICAgIGZsb2F0IHkzID0gcmVsZWFzZUZyYW1lcyAqIHJlbGVhc2Vab25lMzsKKyAg
ICBmbG9hdCB5NCA9IHJlbGVhc2VGcmFtZXMgKiByZWxlYXNlWm9uZTQ7CiAKICAgICAvLyBBbGwg
b2YgdGhlc2UgY29lZmZpY2llbnRzIHdlcmUgZGVyaXZlZCBmb3IgNHRoIG9yZGVyIHBvbHlub21p
YWwgY3VydmUgZml0dGluZyB3aGVyZSB0aGUgeSB2YWx1ZXMKICAgICAvLyBtYXRjaCB0aGUgZXZl
bmx5IHNwYWNlZCB4IHZhbHVlcyBhcyBmb2xsb3dzOiAoeTEgOiB4ID09IDAsIHkyIDogeCA9PSAx
LCB5MyA6IHggPT0gMiwgeTQgOiB4ID09IDMpCi0gICAgZG91YmxlIGtBID0gMC45OTk5OTk5OTk5
OTk5OTk4KnkxICsgMS44NDMyMjE5Njg0MzIzOTIzZS0xNip5MiAtIDEuOTM3MzM5NDM1MTY3NjQy
M2UtMTYqeTMgKyA4LjgyNDUxNjAxMTgxNjI0NWUtMTgqeTQ7Ci0gICAgZG91YmxlIGtCID0gLTEu
NTc4ODMyMDM1Mjg0NTg4OCp5MSArIDIuMzMwNTgzNzAzMjA3NDI4Nip5MiAtIDAuOTE0MTE5NDIw
NDg0MDQyOSp5MyArIDAuMTYyMzY3NzUyNTYxMjAzMip5NDsKLSAgICBkb3VibGUga0MgPSAwLjUz
MzQxNDI4NjkxMDY0MjQqeTEgLSAxLjI3MjczNjc4OTIxMzYzMSp5MiArIDAuOTI1ODg1NjA0MjIw
NzUxMip5MyAtIDAuMTg2NTYzMTAxOTE3NzYyMjYqeTQ7Ci0gICAgZG91YmxlIGtEID0gMC4wODc4
MzQ2MzEzODIwNzIzNCp5MSAtIDAuMTY5NDE2Mjk2NzkyNTYyMip5MiArIDAuMDg1ODgwNTc5NTE1
OTUyNzIqeTMgLSAwLjAwNDI5ODkxNDEwNTQ2MjgzKnk0OwotICAgIGRvdWJsZSBrRSA9IC0wLjA0
MjQxNjg4MzAwODEyMzA3NCp5MSArIDAuMTExNTY5MzgyNzk4NzYwMip5MiAtIDAuMDk3NjQ2NzYz
MjUyNjU4NzIqeTMgKyAwLjAyODQ5NDI2MzQ2MjAyMTU3Nip5NDsKKyAgICBmbG9hdCBrQSA9IDAu
OTk5OTk5OTk5OTk5OTk5OGYqeTEgKyAxLjg0MzIyMTk2ODQzMjM5MjNlLTE2Zip5MiAtIDEuOTM3
MzM5NDM1MTY3NjQyM2UtMTZmKnkzICsgOC44MjQ1MTYwMTE4MTYyNDVlLTE4Zip5NDsKKyAgICBm
bG9hdCBrQiA9IC0xLjU3ODgzMjAzNTI4NDU4ODhmKnkxICsgMi4zMzA1ODM3MDMyMDc0Mjg2Zip5
MiAtIDAuOTE0MTE5NDIwNDg0MDQyOWYqeTMgKyAwLjE2MjM2Nzc1MjU2MTIwMzJmKnk0OworICAg
IGZsb2F0IGtDID0gMC41MzM0MTQyODY5MTA2NDI0Zip5MSAtIDEuMjcyNzM2Nzg5MjEzNjMxZip5
MiArIDAuOTI1ODg1NjA0MjIwNzUxMmYqeTMgLSAwLjE4NjU2MzEwMTkxNzc2MjI2Zip5NDsKKyAg
ICBmbG9hdCBrRCA9IDAuMDg3ODM0NjMxMzgyMDcyMzRmKnkxIC0gMC4xNjk0MTYyOTY3OTI1NjIy
Zip5MiArIDAuMDg1ODgwNTc5NTE1OTUyNzJmKnkzIC0gMC4wMDQyOTg5MTQxMDU0NjI4M2YqeTQ7
CisgICAgZmxvYXQga0UgPSAtMC4wNDI0MTY4ODMwMDgxMjMwNzRmKnkxICsgMC4xMTE1NjkzODI3
OTg3NjAyZip5MiAtIDAuMDk3NjQ2NzYzMjUyNjU4NzJmKnkzICsgMC4wMjg0OTQyNjM0NjIwMjE1
NzZmKnk0OwogCiAgICAgLy8geCByYW5nZXMgZnJvbSAwIC0+IDMgICAgICAgMCAgICAxICAgIDIg
ICAzCiAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAtMTUgIC0xMCAgLTUgICAwZGIK
QEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2Vz
cyhmbG9hdCogc291cmNlTCwKICAgICAgICAgZmxvYXQgZGVzaXJlZEdhaW4gPSBtX2RldGVjdG9y
QXZlcmFnZTsKIAogICAgICAgICAvLyBQcmUtd2FycCBzbyB3ZSBnZXQgZGVzaXJlZEdhaW4gYWZ0
ZXIgc2luKCkgd2FycCBiZWxvdy4KLSAgICAgICAgZG91YmxlIHNjYWxlZERlc2lyZWRHYWluID0g
YXNpbihkZXNpcmVkR2FpbikgLyAoMC41ICogcGlEb3VibGUpOworICAgICAgICBmbG9hdCBzY2Fs
ZWREZXNpcmVkR2FpbiA9IGFzaW5mKGRlc2lyZWRHYWluKSAvICgwLjVmICogcGlGbG9hdCk7CiAK
ICAgICAgICAgLy8gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAgICAgICAgIC8v
IERlYWwgd2l0aCBlbnZlbG9wZXMKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIER5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlTCwKICAgICAgICAgYm9vbCBpc1Jl
bGVhc2luZyA9IHNjYWxlZERlc2lyZWRHYWluID4gbV9jb21wcmVzc29yR2FpbjsKIAogICAgICAg
ICAvLyBjb21wcmVzc2lvbkRpZmZEYiBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQg
Y29tcHJlc3Npb24gbGV2ZWwgYW5kIHRoZSBkZXNpcmVkIGxldmVsLgotICAgICAgICBkb3VibGUg
Y29tcHJlc3Npb25EaWZmRGIgPSBsaW5lYXJUb0RlY2liZWxzKG1fY29tcHJlc3NvckdhaW4gLyBz
Y2FsZWREZXNpcmVkR2Fpbik7CisgICAgICAgIGZsb2F0IGNvbXByZXNzaW9uRGlmZkRiID0gbGlu
ZWFyVG9EZWNpYmVscyhtX2NvbXByZXNzb3JHYWluIC8gc2NhbGVkRGVzaXJlZEdhaW4pOwogCiAg
ICAgICAgIGlmIChpc1JlbGVhc2luZykgewogICAgICAgICAgICAgLy8gUmVsZWFzZSBtb2RlIC0g
Y29tcHJlc3Npb25EaWZmRGIgc2hvdWxkIGJlIG5lZ2F0aXZlIGRCCkBAIC0yMDUsMjAgKzIwNSwy
MCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNl
TCwKICAgICAgICAgICAgIC8vIEFkYXB0aXZlIHJlbGVhc2UgLSBoaWdoZXIgY29tcHJlc3Npb24g
KGxvd2VyIGNvbXByZXNzaW9uRGlmZkRiKSAgcmVsZWFzZXMgZmFzdGVyLgogCiAgICAgICAgICAg
ICAvLyBDb250YWluIHdpdGhpbiByYW5nZTogLTEyIC0+IDAgdGhlbiBzY2FsZSB0byBnbyBmcm9t
IDAgLT4gMwotICAgICAgICAgICAgZG91YmxlIHggPSBjb21wcmVzc2lvbkRpZmZEYjsKLSAgICAg
ICAgICAgIHggPSBtYXgoLTEyLiwgeCk7Ci0gICAgICAgICAgICB4ID0gbWluKDAuLCB4KTsKLSAg
ICAgICAgICAgIHggPSAwLjI1ICogKHggKyAxMik7CisgICAgICAgICAgICBmbG9hdCB4ID0gY29t
cHJlc3Npb25EaWZmRGI7CisgICAgICAgICAgICB4ID0gbWF4KC0xMi4wZiwgeCk7CisgICAgICAg
ICAgICB4ID0gbWluKDAuMGYsIHgpOworICAgICAgICAgICAgeCA9IDAuMjVmICogKHggKyAxMik7
CiAKICAgICAgICAgICAgIC8vIENvbXB1dGUgYWRhcHRpdmUgcmVsZWFzZSBjdXJ2ZSB1c2luZyA0
dGggb3JkZXIgcG9seW5vbWlhbC4KICAgICAgICAgICAgIC8vIE5vcm1hbCB2YWx1ZXMgZm9yIHRo
ZSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cyB3b3VsZCBjcmVhdGUgYSBtb25vdG9uaWNhbGx5IGlu
Y3JlYXNpbmcgZnVuY3Rpb24uCi0gICAgICAgICAgICBkb3VibGUgeDIgPSB4ICogeDsKLSAgICAg
ICAgICAgIGRvdWJsZSB4MyA9IHgyICogeDsKLSAgICAgICAgICAgIGRvdWJsZSB4NCA9IHgyICog
eDI7Ci0gICAgICAgICAgICBkb3VibGUgcmVsZWFzZUZyYW1lcyA9IGtBICsga0IgKiB4ICsga0Mg
KiB4MiArIGtEICogeDMgKyBrRSAqIHg0OworICAgICAgICAgICAgZmxvYXQgeDIgPSB4ICogeDsK
KyAgICAgICAgICAgIGZsb2F0IHgzID0geDIgKiB4OworICAgICAgICAgICAgZmxvYXQgeDQgPSB4
MiAqIHgyOworICAgICAgICAgICAgZmxvYXQgcmVsZWFzZUZyYW1lcyA9IGtBICsga0IgKiB4ICsg
a0MgKiB4MiArIGtEICogeDMgKyBrRSAqIHg0OwogCiAjZGVmaW5lIGtTcGFjaW5nRGIgNQotICAg
ICAgICAgICAgZG91YmxlIGRiUGVyRnJhbWUgPSBrU3BhY2luZ0RiIC8gcmVsZWFzZUZyYW1lczsK
KyAgICAgICAgICAgIGZsb2F0IGRiUGVyRnJhbWUgPSBrU3BhY2luZ0RiIC8gcmVsZWFzZUZyYW1l
czsKIAogICAgICAgICAgICAgZW52ZWxvcGVSYXRlID0gZGVjaWJlbHNUb0xpbmVhcihkYlBlckZy
YW1lKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTIzNSwxMCArMjM1LDEwIEBAIHZvaWQgRHluYW1p
Y3NDb21wcmVzc29yS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VMLAogICAgICAgICAgICAg
aWYgKG1fbWF4QXR0YWNrQ29tcHJlc3Npb25EaWZmRGIgPT0gLTEgfHwgbV9tYXhBdHRhY2tDb21w
cmVzc2lvbkRpZmZEYiA8IGNvbXByZXNzaW9uRGlmZkRiKQogICAgICAgICAgICAgICAgIG1fbWF4
QXR0YWNrQ29tcHJlc3Npb25EaWZmRGIgPSBjb21wcmVzc2lvbkRpZmZEYjsKIAotICAgICAgICAg
ICAgZG91YmxlIGVmZkF0dGVuRGlmZkRiID0gbWF4KDAuNWYsIG1fbWF4QXR0YWNrQ29tcHJlc3Np
b25EaWZmRGIpOworICAgICAgICAgICAgZmxvYXQgZWZmQXR0ZW5EaWZmRGIgPSBtYXgoMC41Ziwg
bV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYik7CiAKLSAgICAgICAgICAgIGRvdWJsZSB4ID0g
MC4yNSAvIGVmZkF0dGVuRGlmZkRiOwotICAgICAgICAgICAgZW52ZWxvcGVSYXRlID0gMSAtIHBv
dyh4LCBkb3VibGUoMSAvIGF0dGFja0ZyYW1lcykpOworICAgICAgICAgICAgZmxvYXQgeCA9IDAu
MjVmIC8gZWZmQXR0ZW5EaWZmRGI7CisgICAgICAgICAgICBlbnZlbG9wZVJhdGUgPSAxIC0gcG93
Zih4LCAxIC8gYXR0YWNrRnJhbWVzKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIH5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgRHluYW1p
Y3NDb21wcmVzc29yS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VMLAogICAgICAgICAgICAg
ICAgICAgICBmbG9hdCB1bmRlbGF5ZWRMID0gKnNvdXJjZUwrKzsKICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgdW5kZWxheWVkUiA9ICpzb3VyY2VSKys7CiAKLSAgICAgICAgICAgICAgICAgICAg
Y29tcHJlc3NvcklucHV0ID0gMC41ICogKHVuZGVsYXllZEwgKyB1bmRlbGF5ZWRSKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29tcHJlc3NvcklucHV0ID0gMC41ZiAqICh1bmRlbGF5ZWRMICsgdW5k
ZWxheWVkUik7CiAKICAgICAgICAgICAgICAgICAgICAgaW5wdXRMID0gZGVsYXlCdWZmZXJMW3By
ZURlbGF5UmVhZEluZGV4XTsKICAgICAgICAgICAgICAgICAgICAgaW5wdXRSID0gZGVsYXlCdWZm
ZXJSW3ByZURlbGF5UmVhZEluZGV4XTsKQEAgLTI4NCwyNCArMjg0LDI0IEBAIHZvaWQgRHluYW1p
Y3NDb21wcmVzc29yS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VMLAogICAgICAgICAgICAg
ICAgIC8vIENhbGN1bGF0ZSBzaGFwZWQgcG93ZXIgb24gdW5kZWxheWVkIGlucHV0LgogCiAgICAg
ICAgICAgICAgICAgZmxvYXQgc2NhbGVkSW5wdXQgPSBjb21wcmVzc29ySW5wdXQ7Ci0gICAgICAg
ICAgICAgICAgZG91YmxlIGFic0lucHV0ID0gc2NhbGVkSW5wdXQgPiAwID8gc2NhbGVkSW5wdXQg
OiAtc2NhbGVkSW5wdXQ7CisgICAgICAgICAgICAgICAgZmxvYXQgYWJzSW5wdXQgPSBzY2FsZWRJ
bnB1dCA+IDAgPyBzY2FsZWRJbnB1dCA6IC1zY2FsZWRJbnB1dDsKIAogICAgICAgICAgICAgICAg
IC8vIFB1dCB0aHJvdWdoIHNoYXBpbmcgY3VydmUuCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyBsaW5lYXIgdXAgdG8gdGhlIHRocmVzaG9sZCwgdGhlbiBleHBvbmVudGlhbGx5IGFwcHJvYWNo
ZXMgdGhlIG1heGltdW0gKGhlYWRyb29tIGFtb3VudCBhYm92ZSB0aHJlc2hvbGQpLgogICAgICAg
ICAgICAgICAgIC8vIFRoZSB0cmFuc2l0aW9uIGZyb20gdGhlIHRocmVzaG9sZCB0byB0aGUgZXhw
b25lbnRpYWwgcG9ydGlvbiBpcyBzbW9vdGggKDFzdCBkZXJpdmF0aXZlIG1hdGNoZWQpLgotICAg
ICAgICAgICAgICAgIGRvdWJsZSBzaGFwZWRJbnB1dCA9IGFic0lucHV0IDwgbGluZWFyVGhyZXNo
b2xkID8gYWJzSW5wdXQgOiBsaW5lYXJUaHJlc2hvbGQgKyBrayAqIHNhdHVyYXRlKGFic0lucHV0
IC0gbGluZWFyVGhyZXNob2xkLCBpbnZlcnNlS0spOworICAgICAgICAgICAgICAgIGZsb2F0IHNo
YXBlZElucHV0ID0gYWJzSW5wdXQgPCBsaW5lYXJUaHJlc2hvbGQgPyBhYnNJbnB1dCA6IGxpbmVh
clRocmVzaG9sZCArIGtrICogc2F0dXJhdGUoYWJzSW5wdXQgLSBsaW5lYXJUaHJlc2hvbGQsIGlu
dmVyc2VLSyk7CiAKLSAgICAgICAgICAgICAgICBkb3VibGUgYXR0ZW51YXRpb24gPSBhYnNJbnB1
dCA8PSAwLjAwMDEgPyAxIDogc2hhcGVkSW5wdXQgLyBhYnNJbnB1dDsKKyAgICAgICAgICAgICAg
ICBmbG9hdCBhdHRlbnVhdGlvbiA9IGFic0lucHV0IDw9IDAuMDAwMWYgPyAxIDogc2hhcGVkSW5w
dXQgLyBhYnNJbnB1dDsKIAotICAgICAgICAgICAgICAgIGRvdWJsZSBhdHRlbnVhdGlvbkRiID0g
LWxpbmVhclRvRGVjaWJlbHMoYXR0ZW51YXRpb24pOwotICAgICAgICAgICAgICAgIGF0dGVudWF0
aW9uRGIgPSBtYXgoMi4sIGF0dGVudWF0aW9uRGIpOworICAgICAgICAgICAgICAgIGZsb2F0IGF0
dGVudWF0aW9uRGIgPSAtbGluZWFyVG9EZWNpYmVscyhhdHRlbnVhdGlvbik7CisgICAgICAgICAg
ICAgICAgYXR0ZW51YXRpb25EYiA9IG1heCgyLjBmLCBhdHRlbnVhdGlvbkRiKTsKIAotICAgICAg
ICAgICAgICAgIGRvdWJsZSBkYlBlckZyYW1lID0gYXR0ZW51YXRpb25EYiAvIHNhdFJlbGVhc2VG
cmFtZXM7CisgICAgICAgICAgICAgICAgZmxvYXQgZGJQZXJGcmFtZSA9IGF0dGVudWF0aW9uRGIg
LyBzYXRSZWxlYXNlRnJhbWVzOwogCi0gICAgICAgICAgICAgICAgZG91YmxlIHNhdFJlbGVhc2VS
YXRlID0gZGVjaWJlbHNUb0xpbmVhcihkYlBlckZyYW1lKSAtIDE7CisgICAgICAgICAgICAgICAg
ZmxvYXQgc2F0UmVsZWFzZVJhdGUgPSBkZWNpYmVsc1RvTGluZWFyKGRiUGVyRnJhbWUpIC0gMTsK
IAogICAgICAgICAgICAgICAgIGJvb2wgaXNSZWxlYXNlID0gKGF0dGVudWF0aW9uID4gZGV0ZWN0
b3JBdmVyYWdlKTsKLSAgICAgICAgICAgICAgICBkb3VibGUgcmF0ZSA9IGlzUmVsZWFzZSA/IHNh
dFJlbGVhc2VSYXRlIDogMTsKKyAgICAgICAgICAgICAgICBmbG9hdCByYXRlID0gaXNSZWxlYXNl
ID8gc2F0UmVsZWFzZVJhdGUgOiAxOwogCiAgICAgICAgICAgICAgICAgZGV0ZWN0b3JBdmVyYWdl
ICs9IChhdHRlbnVhdGlvbiAtIGRldGVjdG9yQXZlcmFnZSkgKiByYXRlOwogICAgICAgICAgICAg
ICAgIGRldGVjdG9yQXZlcmFnZSA9IG1pbigxLjBmLCBkZXRlY3RvckF2ZXJhZ2UpOwpAQCAtMzIz
LDEzICszMjMsMTMgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxv
YXQqIHNvdXJjZUwsCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gV2Fy
cCBwcmUtY29tcHJlc3Npb24gZ2FpbiB0byBzbW9vdGggb3V0IHNoYXJwIGV4cG9uZW50aWFsIHRy
YW5zaXRpb24gcG9pbnRzLgotICAgICAgICAgICAgICAgIGRvdWJsZSBwb3N0V2FycENvbXByZXNz
b3JHYWluID0gc2luKDAuNSAqIHBpRG91YmxlICogY29tcHJlc3NvckdhaW4pOworICAgICAgICAg
ICAgICAgIGZsb2F0IHBvc3RXYXJwQ29tcHJlc3NvckdhaW4gPSBzaW5mKDAuNWYgKiBwaUZsb2F0
ICogY29tcHJlc3NvckdhaW4pOwogCiAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRvdGFs
IGdhaW4gdXNpbmcgbWFzdGVyIGdhaW4gYW5kIGVmZmVjdCBibGVuZC4KLSAgICAgICAgICAgICAg
ICBkb3VibGUgdG90YWxHYWluID0gZHJ5TWl4ICsgd2V0TWl4ICogbWFzdGVyTGluZWFyR2FpbiAq
IHBvc3RXYXJwQ29tcHJlc3NvckdhaW47CisgICAgICAgICAgICAgICAgZmxvYXQgdG90YWxHYWlu
ID0gZHJ5TWl4ICsgd2V0TWl4ICogbWFzdGVyTGluZWFyR2FpbiAqIHBvc3RXYXJwQ29tcHJlc3Nv
ckdhaW47CiAKICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbWV0ZXJpbmcuCi0gICAgICAg
ICAgICAgICAgZG91YmxlIGRiUmVhbEdhaW4gPSAyMCAqIGxvZzEwKHBvc3RXYXJwQ29tcHJlc3Nv
ckdhaW4pOworICAgICAgICAgICAgICAgIGZsb2F0IGRiUmVhbEdhaW4gPSAyMCAqIGxvZzEwKHBv
c3RXYXJwQ29tcHJlc3NvckdhaW4pOwogICAgICAgICAgICAgICAgIGlmIChkYlJlYWxHYWluIDwg
bV9tZXRlcmluZ0dhaW4pCiAgICAgICAgICAgICAgICAgICAgIG1fbWV0ZXJpbmdHYWluID0gZGJS
ZWFsR2FpbjsKICAgICAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCmluZGV4IGE2ZTcw
ZDM1MGYxMjAyN2QwNzgwNmU4MTE5YzFmMzJhMzViZjY1MWIuLjhlNWY3MDk5ZDg4YmI1NWFlNzhk
NDc4Y2Q3OTZkY2Y0YTE5NmQyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRHluYW1pY3NDb21wcmVzc29yS2VybmVsIHsK
IHB1YmxpYzoKLSAgICBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwoZG91YmxlIHNhbXBsZVJhdGUp
OworICAgIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAg
IC8vIFBlcmZvcm1zIHN0ZXJlby1saW5rZWQgY29tcHJlc3Npb24uCiAgICAgdm9pZCBwcm9jZXNz
KGZsb2F0ICpzb3VyY2VMLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRXF1YWxQb3dlclBhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9F
cXVhbFBvd2VyUGFubmVyLmNwcAppbmRleCBlMmMyYTVjNDZhY2UxNzE0Nzc0Mzg1YjA1NjEwODQ5
NTY0MTg4YzFmLi4xM2ExOWQ2Y2Q0NDUxZDdiMmY5ODgyYjUwYzRlZDllMDAzMjBiM2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNw
cApAQCAtMzQsMTMgKzM0LDEzIEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogLy8g
VXNlIGEgNTBtcyBzbW9vdGhpbmcgLyBkZS16aXBwZXJpbmcgdGltZS1jb25zdGFudC4KLWNvbnN0
IGRvdWJsZSBTbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwLjA1MDsKK2NvbnN0IGZsb2F0IFNtb290
aGluZ1RpbWVDb25zdGFudCA9IDAuMDUwZjsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1FcXVhbFBvd2VyUGFubmVyOjpFcXVhbFBvd2VyUGFubmVyKGRv
dWJsZSBzYW1wbGVSYXRlKQorRXF1YWxQb3dlclBhbm5lcjo6RXF1YWxQb3dlclBhbm5lcihmbG9h
dCBzYW1wbGVSYXRlKQogICAgIDogUGFubmVyKFBhbm5pbmdNb2RlbEVxdWFsUG93ZXIpCiAgICAg
LCBtX2lzRmlyc3RSZW5kZXIodHJ1ZSkKICAgICAsIG1fZ2FpbkwoMC4wKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCmluZGV4IGYyMDYxN2Vi
NDdjYzM1NDQzMGVmYzE2NzNjYTQ5MTEzY2ViZmIxZjUuLjRmNjAwMWRmOTE0MjBlYzU0NGFmY2Vk
Y2RmNjg5N2U4NDQ4MGQ3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9FcXVhbFBvd2VyUGFubmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBFcXVhbFBvd2VyUGFubmVyIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6Ci0g
ICAgRXF1YWxQb3dlclBhbm5lcihkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgRXF1YWxQb3dlclBh
bm5lcihmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYW4oZG91YmxlIGF6
aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91
dHB1dEJ1Ziwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwCmluZGV4IGVmMTIyOWY2OTVlMTU4MmQzOTQy
MDYyOTNhMWEwZDM3MjE1ZmM1OWUuLjg1NTg2OTgwMzI2ZjUyMDdhYmJiMGRkNDIzMmNmYTAzMDg1
Y2Y5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNl
LmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIGNvbnN0IHVuc2lnbmVkIEhSVEZEYXRhYmFzZTo6TnVt
YmVyT2ZSYXdFbGV2YXRpb25zID0gMTA7IC8vIC00NSAtPiArOTAgKGVhY2ggMTUKIGNvbnN0IHVu
c2lnbmVkIEhSVEZEYXRhYmFzZTo6SW50ZXJwb2xhdGlvbkZhY3RvciA9IDE7CiBjb25zdCB1bnNp
Z25lZCBIUlRGRGF0YWJhc2U6Ok51bWJlck9mVG90YWxFbGV2YXRpb25zID0gTnVtYmVyT2ZSYXdF
bGV2YXRpb25zICogSW50ZXJwb2xhdGlvbkZhY3RvcjsKIAotUGFzc093blB0cjxIUlRGRGF0YWJh
c2U+IEhSVEZEYXRhYmFzZTo6Y3JlYXRlKGRvdWJsZSBzYW1wbGVSYXRlKQorUGFzc093blB0cjxI
UlRGRGF0YWJhc2U+IEhSVEZEYXRhYmFzZTo6Y3JlYXRlKGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAg
ICAgT3duUHRyPEhSVEZEYXRhYmFzZT4gaHJ0ZkRhdGFiYXNlID0gYWRvcHRQdHIobmV3IEhSVEZE
YXRhYmFzZShzYW1wbGVSYXRlKSk7CiAgICAgcmV0dXJuIGhydGZEYXRhYmFzZS5yZWxlYXNlKCk7
CiB9CiAKLUhSVEZEYXRhYmFzZTo6SFJURkRhdGFiYXNlKGRvdWJsZSBzYW1wbGVSYXRlKQorSFJU
RkRhdGFiYXNlOjpIUlRGRGF0YWJhc2UoZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IG1fZWxldmF0
aW9ucyhOdW1iZXJPZlRvdGFsRWxldmF0aW9ucykKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVS
YXRlKQogewpAQCAtNzUsNyArNzUsNyBAQCBIUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZShkb3Vi
bGUgc2FtcGxlUmF0ZSkKIAogICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbnRlcnBvbGF0ZWQg
Y29udm9sdXRpb24ga2VybmVscyBhbmQgZGVsYXlzLgogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqaiA9IDE7IGpqIDwgSW50ZXJwb2xhdGlvbkZhY3RvcjsgKytqaikgewotICAgICAgICAgICAg
ICAgIGRvdWJsZSB4ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihqaikgLyBzdGF0aWNfY2FzdDxkb3Vi
bGU+KEludGVycG9sYXRpb25GYWN0b3IpOworICAgICAgICAgICAgICAgIGZsb2F0IHggPSBzdGF0
aWNfY2FzdDxmbG9hdD4oamopIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KEludGVycG9sYXRpb25GYWN0
b3IpOwogICAgICAgICAgICAgICAgIG1fZWxldmF0aW9uc1tpICsgampdID0gSFJURkVsZXZhdGlv
bjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKG1fZWxldmF0aW9uc1tpXS5nZXQoKSwgbV9l
bGV2YXRpb25zW2pdLmdldCgpLCB4LCBzYW1wbGVSYXRlKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQobV9lbGV2YXRpb25zW2kgKyBqal0uZ2V0KCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAppbmRleCBiZjEzYTNhMjIzMDk1
NmFiY2Q2YjllZWQ1MTcyOTI2ZDc1YTcxYTE4Li5iYjdjZjUzMGY1YTFjNmYwYTI3MGI2YWEyNzNh
NTQzZTJhZGExNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2UuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBIUlRGS2VybmVsOwogY2xhc3MgSFJURkRh
dGFiYXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIUlRGRGF0YWJhc2UpOwogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEhSVEZEYXRhYmFzZT4gY3JlYXRlKGRvdWJsZSBzYW1w
bGVSYXRlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxIUlRGRGF0YWJhc2U+IGNyZWF0ZShmbG9h
dCBzYW1wbGVSYXRlKTsKIAogICAgIC8vIGdldEtlcm5lbHNGcm9tQXppbXV0aEVsZXZhdGlvbigp
IHJldHVybnMgYSBsZWZ0IGFuZCByaWdodCBlYXIga2VybmVsLCBhbmQgYW4gaW50ZXJwb2xhdGVk
IGxlZnQgYW5kIHJpZ2h0IGZyYW1lIGRlbGF5IGZvciB0aGUgZ2l2ZW4gYXppbXV0aCBhbmQgZWxl
dmF0aW9uLgogICAgIC8vIGF6aW11dGhCbGVuZCBtdXN0IGJlIGluIHRoZSByYW5nZSAwIC0+IDEu
CkBAIC01NywxMCArNTcsMTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBv
ZiBkaWZmZXJlbnQgYXppbXV0aCBhbmdsZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9m
QXppbXV0aHMoKSB7IHJldHVybiBIUlRGRWxldmF0aW9uOjpOdW1iZXJPZlRvdGFsQXppbXV0aHM7
IH0KIAotICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRl
OyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsg
fQogICAgIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBIUlRGRGF0YWJhc2UoZG91YmxlIHNhbXBs
ZVJhdGUpOworICAgIGV4cGxpY2l0IEhSVEZEYXRhYmFzZShmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIC8vIE1pbmltdW0gYW5kIG1heGltdW0gZWxldmF0aW9uIGFuZ2xlcyAoaW5jbHVzaXZlKSBm
b3IgYSBIUlRGRGF0YWJhc2UuCiAgICAgc3RhdGljIGNvbnN0IGludCBNaW5FbGV2YXRpb247CkBA
IC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHVuc2lnbmVkIGluZGV4RnJvbUVs
ZXZhdGlvbkFuZ2xlKGRvdWJsZSk7CiAKICAgICBWZWN0b3I8T3duUHRyPEhSVEZFbGV2YXRpb24+
ID4gbV9lbGV2YXRpb25zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgZG91YmxlIG1fc2FtcGxlUmF0ZTsKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCA5YWNkYzMyNThmYTg2Y2Nm
YmM3ODg2ZThkZGU5NTk5NmE4NzdkZDIzLi5jYjczNTVhYThmYTNhZDE1YzgxYjdjYTQzZTAxZDRl
ZWM0MzgwY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZUxvYWRlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gU2luZ2xldG9uCiBIUlRGRGF0YWJhc2VMb2FkZXIqIEhSVEZEYXRhYmFzZUxvYWRlcjo6
c19sb2FkZXIgPSAwOwogCi1QYXNzUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gSFJURkRhdGFi
YXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShkb3VibGUg
c2FtcGxlUmF0ZSkKK1Bhc3NSZWZQdHI8SFJURkRhdGFiYXNlTG9hZGVyPiBIUlRGRGF0YWJhc2VM
b2FkZXI6OmNyZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KGZsb2F0IHNhbXBs
ZVJhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTksNyArNTksNyBA
QCBQYXNzUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVh
dGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZgogICAgIHJldHVybiBsb2FkZXI7CiB9CiAKLUhSVEZE
YXRhYmFzZUxvYWRlcjo6SFJURkRhdGFiYXNlTG9hZGVyKGRvdWJsZSBzYW1wbGVSYXRlKQorSFJU
RkRhdGFiYXNlTG9hZGVyOjpIUlRGRGF0YWJhc2VMb2FkZXIoZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICA6IG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQoMCkKICAgICAsIG1fZGF0YWJhc2VTYW1wbGVSYXRl
KHNhbXBsZVJhdGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRGF0YWJhc2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZUxvYWRlci5oCmluZGV4IGVlN2ViMjIzYzc5YjQyMTAzNWVmYjk5MzFhMzQ3YWQ3
MTExYzU0NzUuLmU2NzcwN2U4MTRhMWRhYzdjYmVmNWJjZTY4ZTEwNzQzMDc5Y2VhODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5o
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBMYXppbHkgY3JlYXRlcyB0aGUgc2lu
Z2xldG9uIEhSVEZEYXRhYmFzZUxvYWRlciAoaWYgbm90IGFscmVhZHkgY3JlYXRlZCkgYW5kIHN0
YXJ0cyBsb2FkaW5nIGFzeW5jaHJvbm91c2x5ICh3aGVuIGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUp
LgogICAgIC8vIFJldHVybnMgdGhlIHNpbmdsZXRvbiBIUlRGRGF0YWJhc2VMb2FkZXIuCiAgICAg
Ly8gTXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFJURkRhdGFiYXNlTG9hZGVyPiBjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5l
Y2Vzc2FyeShkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFJURkRh
dGFiYXNlTG9hZGVyPiBjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShmbG9h
dCBzYW1wbGVSYXRlKTsKIAogICAgIC8vIFJldHVybnMgdGhlIHNpbmdsZXRvbiBIUlRGRGF0YWJh
c2VMb2FkZXIuCiAgICAgc3RhdGljIEhSVEZEYXRhYmFzZUxvYWRlciogbG9hZGVyKCkgeyByZXR1
cm4gc19sb2FkZXI7IH0KQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIAogICAgIEhSVEZE
YXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2hydGZEYXRhYmFzZS5nZXQoKTsgfQogCi0g
ICAgZG91YmxlIGRhdGFiYXNlU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VT
YW1wbGVSYXRlOyB9CisgICAgZmxvYXQgZGF0YWJhc2VTYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhYmFzZVNhbXBsZVJhdGU7IH0KICAgICAKICAgICAvLyBDYWxsZWQgaW4gYXN5bmNo
cm9ub3VzIGxvYWRpbmcgdGhyZWFkLgogICAgIHZvaWQgbG9hZCgpOwpAQCAtNzIsNyArNzIsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gQm90aCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1
Y3RvciBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBleHBsaWNpdCBI
UlRGRGF0YWJhc2VMb2FkZXIoZG91YmxlIHNhbXBsZVJhdGUpOyAgICAKKyAgICBleHBsaWNpdCBI
UlRGRGF0YWJhc2VMb2FkZXIoZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgCiAgICAgLy8gSWYgaXQg
aGFzbid0IGFscmVhZHkgYmVlbiBsb2FkZWQsIGNyZWF0ZXMgYSBuZXcgdGhyZWFkIGFuZCBpbml0
aWF0ZXMgYXN5bmNocm9ub3VzIGxvYWRpbmcgb2YgdGhlIGRlZmF1bHQgZGF0YWJhc2UuCiAgICAg
Ly8gVGhpcyBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KQEAgLTg1LDcgKzg1
LDcgQEAgcHJpdmF0ZToKICAgICBNdXRleCBtX3RocmVhZExvY2s7CiAgICAgVGhyZWFkSWRlbnRp
ZmllciBtX2RhdGFiYXNlTG9hZGVyVGhyZWFkOwogCi0gICAgZG91YmxlIG1fZGF0YWJhc2VTYW1w
bGVSYXRlOyAgICAKKyAgICBmbG9hdCBtX2RhdGFiYXNlU2FtcGxlUmF0ZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZFbGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHAKaW5kZXggYjBkYjg2MjNmOTYzYTBlNzdjMDlhOGY1NDE0M2U0YTdkYjA2
MTczMC4uY2YyMTI1NTQ5MDI2NWViODk0NGRjMjEyNzMxOTFhYjEyYjA1YjI2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgY29uc3QgdW5zaWduZWQgSFJURkVsZXZhdGlvbjo6TnVtYmVyT2ZUb3RhbEF6aW11
dGhzID0gTnVtYmVyT2ZSYXdBemltdXRocyAqIEludGUKIAogLy8gVGFrZXMgYWR2YW50YWdlIG9m
IHRoZSBzeW1tZXRyeSBhbmQgY3JlYXRlcyBhIGNvbXBvc2l0ZSB2ZXJzaW9uIG9mIHRoZSB0d28g
bWVhc3VyZWQgdmVyc2lvbnMuICBGb3IgZXhhbXBsZSwgd2UgaGF2ZSBib3RoIGF6aW11dGggMzAg
YW5kIC0zMCBkZWdyZWVzCiAvLyB3aGVyZSB0aGUgcm9sZXMgb2YgbGVmdCBhbmQgcmlnaHQgZWFy
cyBhcmUgcmV2ZXJzZWQgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuCi1ib29sIEhSVEZFbGV2
YXRpb246OmNhbGN1bGF0ZVN5bW1ldHJpY0tlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKGludCBh
emltdXRoLCBpbnQgZWxldmF0aW9uLCBkb3VibGUgc2FtcGxlUmF0ZSwgY29uc3QgU3RyaW5nJiBz
dWJqZWN0TmFtZSwKK2Jvb2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRlU3ltbWV0cmljS2VybmVs
c0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpb24sIGZsb2F0IHNh
bXBsZVJhdGUsIGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxIUlRG
S2VybmVsPiYga2VybmVsTCwgUmVmUHRyPEhSVEZLZXJuZWw+JiBrZXJuZWxSKQogewogICAgIFJl
ZlB0cjxIUlRGS2VybmVsPiBrZXJuZWxMMTsKQEAgLTcxLDEzICs3MSwxMyBAQCBib29sIEhSVEZF
bGV2YXRpb246OmNhbGN1bGF0ZVN5bW1ldHJpY0tlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKGlu
dCBhemltdXRoLCBpbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIC8vIE5v
dGljZSBML1IgcmV2ZXJzYWwgaW4gc3ltbWV0cmljIHZlcnNpb24uCi0gICAga2VybmVsTCA9IEhS
VEZLZXJuZWw6OmNyZWF0ZUludGVycG9sYXRlZEtlcm5lbChrZXJuZWxMMS5nZXQoKSwga2VybmVs
UjIuZ2V0KCksIDAuNSk7Ci0gICAga2VybmVsUiA9IEhSVEZLZXJuZWw6OmNyZWF0ZUludGVycG9s
YXRlZEtlcm5lbChrZXJuZWxSMS5nZXQoKSwga2VybmVsTDIuZ2V0KCksIDAuNSk7CisgICAga2Vy
bmVsTCA9IEhSVEZLZXJuZWw6OmNyZWF0ZUludGVycG9sYXRlZEtlcm5lbChrZXJuZWxMMS5nZXQo
KSwga2VybmVsUjIuZ2V0KCksIDAuNWYpOworICAgIGtlcm5lbFIgPSBIUlRGS2VybmVsOjpjcmVh
dGVJbnRlcnBvbGF0ZWRLZXJuZWwoa2VybmVsUjEuZ2V0KCksIGtlcm5lbEwyLmdldCgpLCAwLjVm
KTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIUlRGRWxldmF0aW9uOjpjYWxj
dWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwgaW50IGVsZXZhdGlv
biwgZG91YmxlIHNhbXBsZVJhdGUsIGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUsCitib29sIEhS
VEZFbGV2YXRpb246OmNhbGN1bGF0ZUtlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKGludCBhemlt
dXRoLCBpbnQgZWxldmF0aW9uLCBmbG9hdCBzYW1wbGVSYXRlLCBjb25zdCBTdHJpbmcmIHN1Ympl
Y3ROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8SFJURktlcm5lbD4mIGtlcm5lbEwsIFJlZlB0cjxIUlRGS2VybmVsPiYg
a2VybmVsUikKIHsKICAgICAvLyBWYWxpZCB2YWx1ZXMgZm9yIGF6aW11dGggYXJlIDAgLT4gMzQ1
IGluIDE1IGRlZ3JlZSBpbmNyZW1lbnRzLgpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBpbnQg
bWF4RWxldmF0aW9uc1tdID0gewogICAgIDQ1IC8vICAzNDUgCiB9OwogCi1QYXNzT3duUHRyPEhS
VEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5n
JiBzdWJqZWN0TmFtZSwgaW50IGVsZXZhdGlvbiwgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzT3du
UHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3Qg
U3RyaW5nJiBzdWJqZWN0TmFtZSwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsK
ICAgICBib29sIGlzRWxldmF0aW9uR29vZCA9IGVsZXZhdGlvbiA+PSAtNDUgJiYgZWxldmF0aW9u
IDw9IDkwICYmIChlbGV2YXRpb24gLyAxNSkgKiAxNSA9PSBlbGV2YXRpb247CiAgICAgQVNTRVJU
KGlzRWxldmF0aW9uR29vZCk7CkBAIC0xODgsNyArMTg4LDcgQEAgUGFzc093blB0cjxIUlRGRWxl
dmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3Vi
amVjdE4KIAogICAgICAgICAvLyBDcmVhdGUgdGhlIGludGVycG9sYXRlZCBjb252b2x1dGlvbiBr
ZXJuZWxzIGFuZCBkZWxheXMuCiAgICAgICAgIGZvciAodW5zaWduZWQgamogPSAxOyBqaiA8IElu
dGVycG9sYXRpb25GYWN0b3I7ICsramopIHsKLSAgICAgICAgICAgIGRvdWJsZSB4ID0gZG91Ymxl
KGpqKSAvIGRvdWJsZShJbnRlcnBvbGF0aW9uRmFjdG9yKTsgLy8gaW50ZXJwb2xhdGUgZnJvbSAw
IC0+IDEKKyAgICAgICAgICAgIGZsb2F0IHggPSBmbG9hdChqaikgLyBmbG9hdChJbnRlcnBvbGF0
aW9uRmFjdG9yKTsgLy8gaW50ZXJwb2xhdGUgZnJvbSAwIC0+IDEKIAogICAgICAgICAgICAgKCpr
ZXJuZWxMaXN0TClbaSArIGpqXSA9IEhSVEZLZXJuZWw6OmNyZWF0ZUludGVycG9sYXRlZEtlcm5l
bChrZXJuZWxMaXN0TC0+YXQoaSkuZ2V0KCksIGtlcm5lbExpc3RMLT5hdChqKS5nZXQoKSwgeCk7
CiAgICAgICAgICAgICAoKmtlcm5lbExpc3RSKVtpICsgampdID0gSFJURktlcm5lbDo6Y3JlYXRl
SW50ZXJwb2xhdGVkS2VybmVsKGtlcm5lbExpc3RSLT5hdChpKS5nZXQoKSwga2VybmVsTGlzdFIt
PmF0KGopLmdldCgpLCB4KTsKQEAgLTE5OSw3ICsxOTksNyBAQCBQYXNzT3duUHRyPEhSVEZFbGV2
YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWJq
ZWN0TgogICAgIHJldHVybiBocnRmRWxldmF0aW9uLnJlbGVhc2UoKTsKIH0KIAotUGFzc093blB0
cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGlj
ZXMoSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjEsIEhSVEZFbGV2YXRpb24qIGhydGZFbGV2
YXRpb24yLCBkb3VibGUgeCwgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzT3duUHRyPEhSVEZFbGV2
YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxl
dmF0aW9uKiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjIsIGZs
b2F0IHgsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgQVNTRVJUKGhydGZFbGV2YXRpb24xICYm
IGhydGZFbGV2YXRpb24yKTsKICAgICBpZiAoIWhydGZFbGV2YXRpb24xIHx8ICFocnRmRWxldmF0
aW9uMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaApp
bmRleCAyNGI3ODIyODg2ZGVkYTEwOTU0NGNmMDcyYjExMzQwZmQyOTE0OGJiLi5jY2ZmMDk3Zjhh
ZDZjZjExYjUyYzg5NzdlMGY4YWYzM2UwNzlkMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCkBAIC01MCwxMCArNTAsMTAgQEAgcHVibGljOgog
ICAgIC8vIE5vcm1hbGx5LCB0aGVyZSB3aWxsIG9ubHkgYmUgYSBzaW5nbGUgSFJURiBkYXRhYmFz
ZSBzZXQsIGJ1dCB0aGlzIEFQSSBzdXBwb3J0cyB0aGUgcG9zc2liaWxpdHkgb2YgbXVsdGlwbGUg
b25lcyB3aXRoIGRpZmZlcmVudCBuYW1lcy4KICAgICAvLyBJbnRlcnBvbGF0ZWQgYXppbXV0aHMg
d2lsbCBiZSBnZW5lcmF0ZWQgYmFzZWQgb24gSW50ZXJwb2xhdGlvbkZhY3Rvci4KICAgICAvLyBW
YWxpZCB2YWx1ZXMgZm9yIGVsZXZhdGlvbiBhcmUgLTQ1IC0+ICs5MCBpbiAxNSBkZWdyZWUgaW5j
cmVtZW50cy4KLSAgICBzdGF0aWMgUGFzc093blB0cjxIUlRGRWxldmF0aW9uPiBjcmVhdGVGb3JT
dWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUsIGludCBlbGV2YXRpb24sIGRvdWJsZSBz
YW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxIUlRGRWxldmF0aW9uPiBjcmVhdGVG
b3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUsIGludCBlbGV2YXRpb24sIGZsb2F0
IHNhbXBsZVJhdGUpOwogCiAgICAgLy8gR2l2ZW4gdHdvIEhSVEZFbGV2YXRpb25zLCBhbmQgYW4g
aW50ZXJwb2xhdGlvbiBmYWN0b3IgeDogMCAtPiAxLCByZXR1cm5zIGFuIGludGVycG9sYXRlZCBI
UlRGRWxldmF0aW9uLgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEhSVEZFbGV2YXRpb24+IGNyZWF0
ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMSwgSFJU
RkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjIsIGRvdWJsZSB4LCBkb3VibGUgc2FtcGxlUmF0ZSk7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8SFJURkVsZXZhdGlvbj4gY3JlYXRlQnlJbnRlcnBvbGF0
aW5nU2xpY2VzKEhSVEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24xLCBIUlRGRWxldmF0aW9uKiBo
cnRmRWxldmF0aW9uMiwgZmxvYXQgeCwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBSZXR1
cm5zIHRoZSBsaXN0IG9mIGxlZnQgb3IgcmlnaHQgZWFyIEhSVEZLZXJuZWxzIGZvciBhbGwgdGhl
IGF6aW11dGhzIGdvaW5nIGZyb20gMCB0byAzNjAgZGVncmVlcy4KICAgICBIUlRGS2VybmVsTGlz
dCoga2VybmVsTGlzdEwoKSB7IHJldHVybiBtX2tlcm5lbExpc3RMLmdldCgpOyB9CkBAIC02MSw3
ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBlbGV2YXRpb25BbmdsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZWxldmF0aW9uQW5nbGU7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkF6aW11dGhz
KCkgeyByZXR1cm4gTnVtYmVyT2ZUb3RhbEF6aW11dGhzOyB9Ci0gICAgZG91YmxlIHNhbXBsZVJh
dGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgCiAgICAgLy8gUmV0dXJucyB0
aGUgbGVmdCBhbmQgcmlnaHQga2VybmVscyBmb3IgdGhlIGdpdmVuIGF6aW11dGggaW5kZXguCiAg
ICAgLy8gVGhlIGludGVycG9sYXRlZCBkZWxheXMgYmFzZWQgb24gYXppbXV0aEJsZW5kOiAwIC0+
IDEgYXJlIHJldHVybmVkIGluIGZyYW1lRGVsYXlMIGFuZCBmcmFtZURlbGF5Ui4KQEAgLTgzLDE2
ICs4MywxNiBAQCBwdWJsaWM6CiAgICAgLy8gVmFsaWQgdmFsdWVzIGZvciBhemltdXRoIGFyZSAw
IC0+IDM0NSBpbiAxNSBkZWdyZWUgaW5jcmVtZW50cy4KICAgICAvLyBWYWxpZCB2YWx1ZXMgZm9y
IGVsZXZhdGlvbiBhcmUgLTQ1IC0+ICs5MCBpbiAxNSBkZWdyZWUgaW5jcmVtZW50cy4KICAgICAv
LyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KLSAgICBzdGF0aWMgYm9vbCBjYWxjdWxhdGVLZXJu
ZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwgaW50IGVsZXZhdGlvbiwgZG91Ymxl
IHNhbXBsZVJhdGUsIGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUsCisgICAgc3RhdGljIGJvb2wg
Y2FsY3VsYXRlS2VybmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2
YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUsIGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEhS
VEZLZXJuZWw+JiBrZXJuZWxMLCBSZWZQdHI8SFJURktlcm5lbD4mIGtlcm5lbFIpOwogCiAgICAg
Ly8gR2l2ZW4gYSBzcGVjaWZpYyBhemltdXRoIGFuZCBlbGV2YXRpb24gYW5nbGUsIHJldHVybnMg
dGhlIGxlZnQgYW5kIHJpZ2h0IEhSVEZLZXJuZWwgaW4ga2VybmVsTCBhbmQga2VybmVsUi4KICAg
ICAvLyBUaGlzIG1ldGhvZCBhdmVyYWdlcyB0aGUgbWVhc3VyZWQgcmVzcG9uc2UgdXNpbmcgc3lt
bWV0cnkgb2YgYXppbXV0aCAoZm9yIGV4YW1wbGUgYnkgYXZlcmFnaW5nIHRoZSAtMzAuMCBhbmQg
KzMwLjAgYXppbXV0aCByZXNwb25zZXMpLgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNz
LgotICAgIHN0YXRpYyBib29sIGNhbGN1bGF0ZVN5bW1ldHJpY0tlcm5lbHNGb3JBemltdXRoRWxl
dmF0aW9uKGludCBhemltdXRoLCBpbnQgZWxldmF0aW9uLCBkb3VibGUgc2FtcGxlUmF0ZSwgY29u
c3QgU3RyaW5nJiBzdWJqZWN0TmFtZSwKKyAgICBzdGF0aWMgYm9vbCBjYWxjdWxhdGVTeW1tZXRy
aWNLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwgaW50IGVsZXZhdGlvbiwg
ZmxvYXQgc2FtcGxlUmF0ZSwgY29uc3QgU3RyaW5nJiBzdWJqZWN0TmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
SFJURktlcm5lbD4mIGtlcm5lbEwsIFJlZlB0cjxIUlRGS2VybmVsPiYga2VybmVsUik7CiBwcml2
YXRlOgotICAgIEhSVEZFbGV2YXRpb24oUGFzc093blB0cjxIUlRGS2VybmVsTGlzdD4ga2VybmVs
TGlzdEwsIFBhc3NPd25QdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RSLCBpbnQgZWxldmF0
aW9uLCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAgICBIUlRGRWxldmF0aW9uKFBhc3NPd25QdHI8SFJU
Rktlcm5lbExpc3Q+IGtlcm5lbExpc3RMLCBQYXNzT3duUHRyPEhSVEZLZXJuZWxMaXN0PiBrZXJu
ZWxMaXN0UiwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICAgICAgOiBtX2tl
cm5lbExpc3RMKGtlcm5lbExpc3RMKQogICAgICAgICAsIG1fa2VybmVsTGlzdFIoa2VybmVsTGlz
dFIpCiAgICAgICAgICwgbV9lbGV2YXRpb25BbmdsZShlbGV2YXRpb24pCkBAIC0xMDMsNyArMTAz
LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8SFJURktlcm5lbExpc3Q+IG1fa2VybmVsTGlzdEw7
CiAgICAgT3duUHRyPEhSVEZLZXJuZWxMaXN0PiBtX2tlcm5lbExpc3RSOwogICAgIGRvdWJsZSBt
X2VsZXZhdGlvbkFuZ2xlOwotICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CisgICAgZmxvYXQgbV9z
YW1wbGVSYXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAppbmRleCA5ZGIzNWJhNjVkNjQ3ZjZmMzRm
YWIyZTk2ZGE0MzMwNDk5MWIzNjJmLi42OGVjY2I5NjkzMTUxZDhiMDI3Yjc3NTgxMGNmZWRjNDI4
MzQxNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2Vy
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbC5oIgogI2luY2x1ZGUg
IkJpcXVhZC5oIgogI2luY2x1ZGUgIkZGVEZyYW1lLmgiCisjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKQEAgLTQ1LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhpcyByZXByZXNl
bnRzIHRoZSBpbml0aWFsIGRlbGF5IGJlZm9yZSB0aGUgbW9zdCBlbmVyZ2V0aWMgcGFydCBvZiB0
aGUgaW1wdWxzZSByZXNwb25zZS4KIC8vIFRoZSBzYW1wbGUtZnJhbWUgZGVsYXkgaXMgcmVtb3Zl
ZCBmcm9tIHRoZSBpbXB1bHNlUCBpbXB1bHNlIHJlc3BvbnNlLCBhbmQgdGhpcyB2YWx1ZSAgaXMg
cmV0dXJuZWQuCiAvLyB0aGUgbGVuZ3RoIG9mIHRoZSBwYXNzZWQgaW4gQXVkaW9DaGFubmVsIG11
c3QgYmUgYSBwb3dlciBvZiAyLgotc3RhdGljIGRvdWJsZSBleHRyYWN0QXZlcmFnZUdyb3VwRGVs
YXkoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgYW5hbHlzaXNGRlRTaXplKQorc3RhdGlj
IGZsb2F0IGV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheShBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNp
emVfdCBhbmFseXNpc0ZGVFNpemUpCiB7CiAgICAgQVNTRVJUKGNoYW5uZWwpOwogICAgICAgICAK
QEAgLTU5LDE0ICs2MCwxNCBAQCBzdGF0aWMgZG91YmxlIGV4dHJhY3RBdmVyYWdlR3JvdXBEZWxh
eShBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBhbmFseXNpc0ZGVAogICAgIEZGVEZyYW1l
IGVzdGltYXRpb25GcmFtZShhbmFseXNpc0ZGVFNpemUpOwogICAgIGVzdGltYXRpb25GcmFtZS5k
b0ZGVChpbXB1bHNlUCk7CiAKLSAgICBkb3VibGUgZnJhbWVEZWxheSA9IGVzdGltYXRpb25GcmFt
ZS5leHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoKTsKKyAgICBmbG9hdCBmcmFtZURlbGF5ID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChlc3RpbWF0aW9uRnJhbWUuZXh0cmFjdEF2ZXJhZ2VHcm91cERl
bGF5KCkpOwogICAgIGVzdGltYXRpb25GcmFtZS5kb0ludmVyc2VGRlQoaW1wdWxzZVApOwogCiAg
ICAgcmV0dXJuIGZyYW1lRGVsYXk7CiB9CiAKLUhSVEZLZXJuZWw6OkhSVEZLZXJuZWwoQXVkaW9D
aGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZG91YmxlIHNhbXBsZVJhdGUsIGJvb2wg
YmFzc0Jvb3N0KQotICAgIDogbV9mcmFtZURlbGF5KDAuMCkKK0hSVEZLZXJuZWw6OkhSVEZLZXJu
ZWwoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZmxvYXQgc2FtcGxlUmF0
ZSwgYm9vbCBiYXNzQm9vc3QpCisgICAgOiBtX2ZyYW1lRGVsYXkoMCkKICAgICAsIG1fc2FtcGxl
UmF0ZShzYW1wbGVSYXRlKQogewogICAgIEFTU0VSVChjaGFubmVsKTsKQEAgLTExNiwyMiArMTE3
LDIyIEBAIFBhc3NPd25QdHI8QXVkaW9DaGFubmVsPiBIUlRGS2VybmVsOjpjcmVhdGVJbXB1bHNl
UmVzcG9uc2UoKQogfQogCiAvLyBJbnRlcnBvbGF0ZXMgdHdvIGtlcm5lbHMgd2l0aCB4OiAwIC0+
IDEgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4KLVBhc3NSZWZQdHI8SFJURktlcm5lbD4gSFJURktl
cm5lbDo6Y3JlYXRlSW50ZXJwb2xhdGVkS2VybmVsKEhSVEZLZXJuZWwqIGtlcm5lbDEsIEhSVEZL
ZXJuZWwqIGtlcm5lbDIsIGRvdWJsZSB4KQorUGFzc1JlZlB0cjxIUlRGS2VybmVsPiBIUlRGS2Vy
bmVsOjpjcmVhdGVJbnRlcnBvbGF0ZWRLZXJuZWwoSFJURktlcm5lbCoga2VybmVsMSwgSFJURktl
cm5lbCoga2VybmVsMiwgZmxvYXQgeCkKIHsKICAgICBBU1NFUlQoa2VybmVsMSAmJiBrZXJuZWwy
KTsKICAgICBpZiAoIWtlcm5lbDEgfHwgIWtlcm5lbDIpCiAgICAgICAgIHJldHVybiAwOwogIAog
ICAgIEFTU0VSVCh4ID49IDAuMCAmJiB4IDwgMS4wKTsKLSAgICB4ID0gbWluKDEuMCwgbWF4KDAu
MCwgeCkpOworICAgIHggPSBtaW4oMS4wZiwgbWF4KDAuMGYsIHgpKTsKICAgICAKLSAgICBkb3Vi
bGUgc2FtcGxlUmF0ZTEgPSBrZXJuZWwxLT5zYW1wbGVSYXRlKCk7Ci0gICAgZG91YmxlIHNhbXBs
ZVJhdGUyID0ga2VybmVsMi0+c2FtcGxlUmF0ZSgpOworICAgIGZsb2F0IHNhbXBsZVJhdGUxID0g
a2VybmVsMS0+c2FtcGxlUmF0ZSgpOworICAgIGZsb2F0IHNhbXBsZVJhdGUyID0ga2VybmVsMi0+
c2FtcGxlUmF0ZSgpOwogICAgIEFTU0VSVChzYW1wbGVSYXRlMSA9PSBzYW1wbGVSYXRlMik7CiAg
ICAgaWYgKHNhbXBsZVJhdGUxICE9IHNhbXBsZVJhdGUyKQogICAgICAgICByZXR1cm4gMDsKICAg
ICAKLSAgICBkb3VibGUgZnJhbWVEZWxheSA9ICgxLjAgLSB4KSAqIGtlcm5lbDEtPmZyYW1lRGVs
YXkoKSArIHggKiBrZXJuZWwyLT5mcmFtZURlbGF5KCk7CisgICAgZmxvYXQgZnJhbWVEZWxheSA9
ICgxIC0geCkgKiBrZXJuZWwxLT5mcmFtZURlbGF5KCkgKyB4ICoga2VybmVsMi0+ZnJhbWVEZWxh
eSgpOwogICAgIAogICAgIE93blB0cjxGRlRGcmFtZT4gaW50ZXJwb2xhdGVkRnJhbWUgPSBGRlRG
cmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUoKmtlcm5lbDEtPmZmdEZyYW1lKCksICprZXJu
ZWwyLT5mZnRGcmFtZSgpLCB4KTsKICAgICByZXR1cm4gSFJURktlcm5lbDo6Y3JlYXRlKGludGVy
cG9sYXRlZEZyYW1lLnJlbGVhc2UoKSwgZnJhbWVEZWxheSwgc2FtcGxlUmF0ZTEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5oCmluZGV4IDU3MmEwODUxMWQ4YjFk
MjUyNzQ4ZDZlNDFjOTEzODFjNmQ2NTFmOWUuLmY2ZWI2MGU0ODVkYzJiODZmMDY0OTg0Y2RhMWQw
MmFjYzg1NzAxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVs
LmgKQEAgLTUxLDI1ICs1MSwyNSBAQCBjbGFzcyBIUlRGS2VybmVsIDogcHVibGljIFJlZkNvdW50
ZWQ8SFJURktlcm5lbD4gewogcHVibGljOgogICAgIC8vIE5vdGU6IHRoaXMgaXMgZGVzdHJ1Y3Rp
dmUgb24gdGhlIHBhc3NlZCBpbiBBdWRpb0NoYW5uZWwuCiAgICAgLy8gVGhlIGxlbmd0aCBvZiBj
aGFubmVsIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFJU
Rktlcm5lbD4gY3JlYXRlKEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6ZV90IGZmdFNpemUsIGRv
dWJsZSBzYW1wbGVSYXRlLCBib29sIGJhc3NCb29zdCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
UlRGS2VybmVsPiBjcmVhdGUoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwg
ZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBiYXNzQm9vc3QpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhSVEZLZXJuZWwoY2hhbm5lbCwgZmZ0U2l6ZSwgc2FtcGxlUmF0ZSwgYmFz
c0Jvb3N0KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFJURktlcm5lbD4gY3Jl
YXRlKFBhc3NPd25QdHI8RkZURnJhbWU+IGZmdEZyYW1lLCBkb3VibGUgZnJhbWVEZWxheSwgZG91
YmxlIHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFJURktlcm5lbD4gY3JlYXRl
KFBhc3NPd25QdHI8RkZURnJhbWU+IGZmdEZyYW1lLCBmbG9hdCBmcmFtZURlbGF5LCBmbG9hdCBz
YW1wbGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIUlRGS2VybmVs
KGZmdEZyYW1lLCBmcmFtZURlbGF5LCBzYW1wbGVSYXRlKSk7CiAgICAgfQogCiAgICAgLy8gR2l2
ZW4gdHdvIEhSVEZLZXJuZWxzLCBhbmQgYW4gaW50ZXJwb2xhdGlvbiBmYWN0b3IgeDogMCAtPiAx
LCByZXR1cm5zIGFuIGludGVycG9sYXRlZCBIUlRGS2VybmVsLgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhSVEZLZXJuZWw+IGNyZWF0ZUludGVycG9sYXRlZEtlcm5lbChIUlRGS2VybmVsKiBrZXJu
ZWwxLCBIUlRGS2VybmVsKiBrZXJuZWwyLCBkb3VibGUgeCk7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SFJURktlcm5lbD4gY3JlYXRlSW50ZXJwb2xhdGVkS2VybmVsKEhSVEZLZXJuZWwqIGtlcm5l
bDEsIEhSVEZLZXJuZWwqIGtlcm5lbDIsIGZsb2F0IHgpOwogICAKICAgICBGRlRGcmFtZSogZmZ0
RnJhbWUoKSB7IHJldHVybiBtX2ZmdEZyYW1lLmdldCgpOyB9CiAgICAgCiAgICAgc2l6ZV90IGZm
dFNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZmdEZyYW1lLT5mZnRTaXplKCk7IH0KLSAgICBkb3Vi
bGUgZnJhbWVEZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVEZWxheTsgfQorICAgIGZsb2F0
IGZyYW1lRGVsYXkoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lRGVsYXk7IH0KIAotICAgIGRvdWJs
ZSBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgIGRvdWJsZSBu
eXF1aXN0KCkgY29uc3QgeyByZXR1cm4gMC41ICogc2FtcGxlUmF0ZSgpOyB9CiAKICAgICAvLyBD
b252ZXJ0cyBiYWNrIGludG8gaW1wdWxzZS1yZXNwb25zZSBmb3JtLgpAQCAtNzcsOSArNzcsOSBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gTm90ZTogdGhpcyBpcyBkZXN0cnVjdGl2ZSBv
biB0aGUgcGFzc2VkIGluIEF1ZGlvQ2hhbm5lbC4KLSAgICBIUlRGS2VybmVsKEF1ZGlvQ2hhbm5l
bCogY2hhbm5lbCwgc2l6ZV90IGZmdFNpemUsIGRvdWJsZSBzYW1wbGVSYXRlLCBib29sIGJhc3NC
b29zdCk7CisgICAgSFJURktlcm5lbChBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRT
aXplLCBmbG9hdCBzYW1wbGVSYXRlLCBib29sIGJhc3NCb29zdCk7CiAgICAgCi0gICAgSFJURktl
cm5lbChQYXNzT3duUHRyPEZGVEZyYW1lPiBmZnRGcmFtZSwgZG91YmxlIGZyYW1lRGVsYXksIGRv
dWJsZSBzYW1wbGVSYXRlKQorICAgIEhSVEZLZXJuZWwoUGFzc093blB0cjxGRlRGcmFtZT4gZmZ0
RnJhbWUsIGZsb2F0IGZyYW1lRGVsYXksIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgICAgIDogbV9m
ZnRGcmFtZShmZnRGcmFtZSkKICAgICAgICAgLCBtX2ZyYW1lRGVsYXkoZnJhbWVEZWxheSkKICAg
ICAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKQEAgLTg3LDggKzg3LDggQEAgcHJpdmF0
ZToKICAgICB9CiAgICAgCiAgICAgT3duUHRyPEZGVEZyYW1lPiBtX2ZmdEZyYW1lOwotICAgIGRv
dWJsZSBtX2ZyYW1lRGVsYXk7Ci0gICAgZG91YmxlIG1fc2FtcGxlUmF0ZTsKKyAgICBmbG9hdCBt
X2ZyYW1lRGVsYXk7CisgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogfTsKIAogdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPEhSVEZLZXJuZWw+ID4gSFJURktlcm5lbExpc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuY3BwCmluZGV4IDY4YmM1MDVhZjkwZTBjOTY3YmU1
ZTYzYjA5M2JhZjNkMmI1YzEzYzcuLjUzNzdlYjI3MGQzNmZkODMyYmViNGQ4YWFmYjAyY2MzMzlm
OThkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5u
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuY3Bw
CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFdlIEFTU0VSVCB0aGUg
ZGVsYXkgdmFsdWVzIHVzZWQgaW4gcHJvY2VzcygpIHdpdGggdGhpcyB2YWx1ZS4KIGNvbnN0IGRv
dWJsZSBNYXhEZWxheVRpbWVTZWNvbmRzID0gMC4wMDI7CiAKLUhSVEZQYW5uZXI6OkhSVEZQYW5u
ZXIoZG91YmxlIHNhbXBsZVJhdGUpCitIUlRGUGFubmVyOjpIUlRGUGFubmVyKGZsb2F0IHNhbXBs
ZVJhdGUpCiAgICAgOiBQYW5uZXIoUGFubmluZ01vZGVsSFJURikKICAgICAsIG1fc2FtcGxlUmF0
ZShzYW1wbGVSYXRlKQogICAgICwgbV9pc0ZpcnN0UmVuZGVyKHRydWUpCkBAIC02MCw3ICs2MCw3
IEBAIEhSVEZQYW5uZXI6On5IUlRGUGFubmVyKCkKIHsKIH0KIAotc2l6ZV90IEhSVEZQYW5uZXI6
OmZmdFNpemVGb3JTYW1wbGVSYXRlKGRvdWJsZSBzYW1wbGVSYXRlKQorc2l6ZV90IEhSVEZQYW5u
ZXI6OmZmdFNpemVGb3JTYW1wbGVSYXRlKGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgLy8gVGhl
IEhSVEYgaW1wdWxzZSByZXNwb25zZXMgKGxvYWRlZCBhcyBhdWRpbyByZXNvdXJjZXMpIGFyZSA1
MTIgc2FtcGxlLWZyYW1lcyBANDQuMUtIei4KICAgICAvLyBDdXJyZW50bHksIHdlIHRydW5jYXRl
IHRoZSBpbXB1bHNlIHJlc3BvbnNlcyB0byBoYWxmIHRoaXMgc2l6ZSwgYnV0IGFuIEZGVC1zaXpl
IG9mIHR3aWNlIGltcHVsc2UgcmVzcG9uc2Ugc2l6ZSBpcyBuZWVkZWQgKGZvciBjb252b2x1dGlv
bikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKaW5kZXggNmMx
M2Q0OGI1OTlkMTM3MmRmODVlYzBhYTQ0MGUxZTA2MTJmMGZkNC4uZTc3MWJhMjhiM2U0YWFkZWQ2
ZjgwMjE1NjQ2MzIyN2E2ZmZlMTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURlBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZQYW5uZXIuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEhSVEZQYW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBI
UlRGUGFubmVyKGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBleHBsaWNpdCBIUlRGUGFubmVyKGZs
b2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkhSVEZQYW5uZXIoKTsKIAogICAgIC8vIFBh
bm5lcgpAQCAtNDEsMTYgKzQxLDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQo
KTsKIAogICAgIHNpemVfdCBmZnRTaXplKCkgeyByZXR1cm4gZmZ0U2l6ZUZvclNhbXBsZVJhdGUo
bV9zYW1wbGVSYXRlKTsgfQotICAgIHN0YXRpYyBzaXplX3QgZmZ0U2l6ZUZvclNhbXBsZVJhdGUo
ZG91YmxlIHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBzaXplX3QgZmZ0U2l6ZUZvclNhbXBsZVJh
dGUoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3NhbXBsZVJhdGU7IH0KICAgICAKIHByaXZhdGU6CiAgICAgLy8gR2l2ZW4gYW4gYXpp
bXV0aCBhbmdsZSBpbiB0aGUgcmFuZ2UgLTE4MCAtPiArMTgwLCByZXR1cm5zIHRoZSBjb3JyZXNw
b25kaW5nIGF6aW11dGggaW5kZXggZm9yIHRoZSBkYXRhYmFzZSwKICAgICAvLyBhbmQgYXppbXV0
aEJsZW5kIHdoaWNoIGlzIGFuIGludGVycG9sYXRpb24gdmFsdWUgZnJvbSAwIC0+IDEuCiAgICAg
aW50IGNhbGN1bGF0ZURlc2lyZWRBemltdXRoSW5kZXhBbmRCbGVuZChkb3VibGUgYXppbXV0aCwg
ZG91YmxlJiBhemltdXRoQmxlbmQpOwogCi0gICAgZG91YmxlIG1fc2FtcGxlUmF0ZTsKKyAgICBm
bG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgCiAgICAgLy8gbV9pc0ZpcnN0UmVuZGVyIGFuZCBtX2F6
aW11dGhJbmRleCBhcmUgdXNlZCB0byBhdm9pZCBoYXJzaGx5IGNoYW5naW5nIGZyb20gcmVuZGVy
aW5nIGF0IG9uZSBhemltdXRoIGFuZ2xlIHRvIGFub3RoZXIgYW5nbGUgdmVyeSBmYXIgYXdheS4K
ICAgICAvLyBDaGFuZ2luZyB0aGUgYXppbXV0aCBncmFkdWFsbHkgcHJvZHVjZXMgYSBzbW9vdGhl
ciBzb3VuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCmluZGV4IGQz
ZDFhMmFlY2FlZmZlYTZjYmUxNDVjYzFlNmNhZDRjZGM1ODY5ZGYuLmRlYmM5ZTMyMTZkNzBhOTQ2
N2IzMzFmNDQ2MWVmYmMxNGQ1MWRkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1Bhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGFubmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBh
c3NPd25QdHI8UGFubmVyPiBQYW5uZXI6OmNyZWF0ZShQYW5uaW5nTW9kZWwgbW9kZWwsIGRvdWJs
ZSBzYW1wbGVSYXRlKQorUGFzc093blB0cjxQYW5uZXI+IFBhbm5lcjo6Y3JlYXRlKFBhbm5pbmdN
b2RlbCBtb2RlbCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBPd25QdHI8UGFubmVyPiBwYW5u
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmgKaW5kZXggYjU3Y2VkYTI0
MDNiMjJmZWU2MWVhMWJmYjJjMmQ4NWQ1NmRhYTUxMC4uMmY5YmE3OTJjZjZkNmMyNmYxN2M2MmIz
NjNiOTcyNTQwMWYzMzZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIAogICAgIHR5cGVkZWYgdW5zaWduZWQgUGFu
bmluZ01vZGVsOwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8UGFubmVyPiBjcmVhdGUoUGFubmlu
Z01vZGVsIG1vZGVsLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8
UGFubmVyPiBjcmVhdGUoUGFubmluZ01vZGVsIG1vZGVsLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIHZpcnR1YWwgflBhbm5lcigpIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvQnVzTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvQnVzTWFjLm1tCmluZGV4IDZlNmUyN2FiNzY3Y2IxZjA0ZDVkYmVj
NjA4OTFiNWI3MmNkMDI2ODUuLjQyYTcxOGIyMTVhYTlkNDA0ZGMxOGQ5NWEwNWI0OTA5N2E0NGJi
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0J1
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9CdXNN
YWMubW0KQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3du
UHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciog
bmFtZSwgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgZmxvYXQgc2FtcGxlUmF0ZSkK
IHsKICAgICAvLyBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIGZyb20gb3RoZXIgdGhhbiB0aGUg
bWFpbiB0aHJlYWQsIHNvIHdlIG5lZWQgYW4gYXV0by1yZWxlYXNlIHBvb2wuCiAgICAgTlNBdXRv
cmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmNwcAppbmRleCBkNGVjYWJhYjIxZWI0MTM0NjMxZmZiMzE4ODQwYTA1MDFlMDgy
ZDA4Li44YmY4Y2M0Mzc0NWIzNWRjNGQzNzE0MWYzYjkzYTliMTVjM2ZlNTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRp
b25NYWMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oIgogCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgorI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgPENvcmVBdWRpby9BdWRpb0hhcmR3YXJlLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDEyICs0MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjb25zdCBpbnQga0J1ZmZlclNpemUgPSAxMjg7CiAKIC8vIEZhY3RvcnkgbWV0aG9kOiBNYWMt
aW1wbGVtZW50YXRpb24KLVBhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5h
dGlvbjo6Y3JlYXRlKEF1ZGlvU291cmNlUHJvdmlkZXImIHByb3ZpZGVyLCBkb3VibGUgc2FtcGxl
UmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKEF1ZGlvU291cmNlUHJvdmlkZXImIHByb3ZpZGVyLCBmbG9hdCBzYW1wbGVSYXRlKQogewog
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXVkaW9EZXN0aW5hdGlvbk1hYyhwcm92aWRlciwgc2Ft
cGxlUmF0ZSkpOwogfQogCi1kb3VibGUgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVS
YXRlKCkKK2Zsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCiB7CiAg
ICAgLy8gRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IG91dHB1dCBkZXZpY2UncyBzYW1wbGUtcmF0ZS4K
ICAgICBBdWRpb0RldmljZUlEIGRldmljZUlEID0ga0F1ZGlvRGV2aWNlVW5rbm93bjsKQEAgLTU0
LDcgKzU1LDcgQEAgZG91YmxlIEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgp
CiAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgZGVmYXVsdE91dHB1dERldmljZUFkZHJl
c3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlEZWZhdWx0T3V0cHV0RGV2aWNlLCBrQXVkaW9P
YmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0
ZXIgfTsKICAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShr
QXVkaW9PYmplY3RTeXN0ZW1PYmplY3QsICZkZWZhdWx0T3V0cHV0RGV2aWNlQWRkcmVzcywgMCwg
MCwgJmluZm9TaXplLCAodm9pZCopJmRldmljZUlEKTsKICAgICBpZiAocmVzdWx0KQotICAgICAg
ICByZXR1cm4gMC4wOyAvLyBlcnJvcgorICAgICAgICByZXR1cm4gMDsgLy8gZXJyb3IKIAogICAg
IEZsb2F0NjQgbm9taW5hbFNhbXBsZVJhdGU7CiAgICAgaW5mb1NpemUgPSBzaXplb2YoRmxvYXQ2
NCk7CkBAIC02MiwxMiArNjMsMTIgQEAgZG91YmxlIEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJl
U2FtcGxlUmF0ZSgpCiAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mgbm9taW5hbFNhbXBs
ZVJhdGVBZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9wZXJ0eU5vbWluYWxTYW1wbGVSYXRlLCBr
QXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1l
bnRNYXN0ZXIgfTsKICAgICByZXN1bHQgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShkZXZp
Y2VJRCwgJm5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcywgMCwgMCwgJmluZm9TaXplLCAodm9pZCop
Jm5vbWluYWxTYW1wbGVSYXRlKTsKICAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gMC4w
OyAvLyBlcnJvcgorICAgICAgICByZXR1cm4gMDsgLy8gZXJyb3IKIAotICAgIHJldHVybiBub21p
bmFsU2FtcGxlUmF0ZTsKKyAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChub21pbmFs
U2FtcGxlUmF0ZSk7CiB9CiAKLUF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVzdGluYXRpb25N
YWMoQXVkaW9Tb3VyY2VQcm92aWRlciYgcHJvdmlkZXIsIGRvdWJsZSBzYW1wbGVSYXRlKQorQXVk
aW9EZXN0aW5hdGlvbk1hYzo6QXVkaW9EZXN0aW5hdGlvbk1hYyhBdWRpb1NvdXJjZVByb3ZpZGVy
JiBwcm92aWRlciwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IG1fb3V0cHV0VW5pdCgwKQogICAg
ICwgbV9wcm92aWRlcihwcm92aWRlcikKICAgICAsIG1fcmVuZGVyQnVzKDIsIGtCdWZmZXJTaXpl
LCBmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb0Rlc3RpbmF0aW9uTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9EZXN0aW5hdGlvbk1hYy5oCmluZGV4IDE5NzQ0MGM2ODRmNzYwNjRjODg5YWUwMTg5OGQw
MTkwYTdkZjAxMjEuLjk2M2Y3YzczNTUxNWE2NTBjYzIwMGYyYmFlZDY2ODk3NzFmNTBkMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVz
dGluYXRpb25NYWMuaApAQCAtMzksMTQgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQXVkaW9EZXN0aW5hdGlvbk1hYyA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uIHsKIHB1
YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTWFjKEF1ZGlvU291cmNlUHJvdmlkZXImLCBkb3Vi
bGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9EZXN0aW5hdGlvbk1hYyhBdWRpb1NvdXJjZVByb3Zp
ZGVyJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk1h
YygpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KTsKICAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CiAKLSAgICBk
b3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KIAogcHJpdmF0
ZToKICAgICB2b2lkIGNvbmZpZ3VyZSgpOwpAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAg
IEF1ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7CiAgICAgQXVkaW9CdXMgbV9yZW5kZXJC
dXM7CiAKLSAgICBkb3VibGUgbV9zYW1wbGVSYXRlOworICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsK
ICAgICBib29sIG1faXNQbGF5aW5nOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCA0MjY5OTVl
MTNkMjc0MDE1ZjVmZjU0NmNiMWYzMmEyZTQ0ZTQxNzY1Li43YjY2NmE1NWFiODc5ZTQwZjY4YzRk
YmZlYzc3YzM3OGMxY2FjOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
CiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0ZpbGVSZWFkZXIuaCIKKyNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KIApA
QCAtMTM1LDcgKzEzNiw3IEBAIFNJbnQ2NCBBdWRpb0ZpbGVSZWFkZXI6OmdldFNpemVQcm9jKHZv
aWQqIGNsaWVudERhdGEpCiAgICAgcmV0dXJuIGF1ZGlvRmlsZVJlYWRlci0+ZGF0YVNpemUoKTsK
IH0KIAotUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZG91
YmxlIHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQorUGFzc093blB0cjxBdWRpb0J1cz4gQXVk
aW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8p
CiB7CiAgICAgaWYgKCFtX2V4dEF1ZGlvRmlsZVJlZikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xODcsNyArMTg4LDcgQEAgUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVy
OjpjcmVhdGVCdXMoZG91YmxlIHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb24KIAogICAgIC8vIENy
ZWF0ZSBBdWRpb0J1cyB3aGVyZSB3ZSdsbCBwdXQgdGhlIFBDTSBhdWRpbyBkYXRhCiAgICAgT3du
UHRyPEF1ZGlvQnVzPiBhdWRpb0J1cyA9IGFkb3B0UHRyKG5ldyBBdWRpb0J1cyhidXNDaGFubmVs
Q291bnQsIG51bWJlck9mRnJhbWVzKSk7Ci0gICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUobV9j
bGllbnREYXRhRm9ybWF0Lm1TYW1wbGVSYXRlKTsgLy8gc2F2ZSBmb3IgbGF0ZXIKKyAgICBhdWRp
b0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fY2xpZW50RGF0YUZv
cm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBzYXZlIGZvciBsYXRlcgogCiAgICAgLy8gT25seSBhbGxv
Y2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlCiAgICAgQXVkaW9GbG9hdEFycmF5IGJ1Zkw7CkBA
IC0yNDEsMTMgKzI0MiwxMyBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6
OmNyZWF0ZUJ1cyhkb3VibGUgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbgogICAgIHJldHVybiBh
dWRpb0J1cy5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zy
b21BdWRpb0ZpbGUoY29uc3QgY2hhciogZmlsZVBhdGgsIGJvb2wgbWl4VG9Nb25vLCBkb3VibGUg
c2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUo
Y29uc3QgY2hhciogZmlsZVBhdGgsIGJvb2wgbWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKQog
ewogICAgIEF1ZGlvRmlsZVJlYWRlciByZWFkZXIoZmlsZVBhdGgpOwogICAgIHJldHVybiByZWFk
ZXIuY3JlYXRlQnVzKHNhbXBsZVJhdGUsIG1peFRvTW9ubyk7CiB9CiAKLVBhc3NPd25QdHI8QXVk
aW9CdXM+IGNyZWF0ZUJ1c0Zyb21Jbk1lbW9yeUF1ZGlvRmlsZShjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QgZGF0YVNpemUsIGJvb2wgbWl4VG9Nb25vLCBkb3VibGUgc2FtcGxlUmF0ZSkKK1Bhc3NP
d25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21Jbk1lbW9yeUF1ZGlvRmlsZShjb25zdCB2b2lk
KiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIGJvb2wgbWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRl
KQogewogICAgIEF1ZGlvRmlsZVJlYWRlciByZWFkZXIoZGF0YSwgZGF0YVNpemUpOwogICAgIHJl
dHVybiByZWFkZXIuY3JlYXRlQnVzKHNhbXBsZVJhdGUsIG1peFRvTW9ubyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmgK
aW5kZXggZDUzMTI2NmNhMDNmNGJiYzIyNzRiMTg4NDAyN2QyNjUyZjFkYzg1Ni4uMjEyMzQzMTQ5
M2U2OGFiYWQ3YzY0OTAwNTAzMDNjYjVlYzQwMzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuaApAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgfkF1ZGlvRmlsZVJlYWRlcigpOwogCiAgICAgLy8gUmV0dXJu
cyAwIGlmIGVycm9yCi0gICAgUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzKGRvdWJsZSBz
YW1wbGVSYXRlLCBib29sIG1peFRvTW9ubyk7CisgICAgUGFzc093blB0cjxBdWRpb0J1cz4gY3Jl
YXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKTsKIAogICAgIGNvbnN0IHZv
aWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBzaXplX3QgZGF0YVNpemUo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXggYTlhODkwMjFlMThmN2Q4NzY3ZjA2NzJmMjZm
ZjMxYTMzYzUxZmUxYy4uY2Q0OWFlMGFmZGE2MTkzNzNiMjQ0YWRiYmQ2ZTQwZDAwOTY0ZTBjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcApAQCAt
NTQsNyArNTQsNyBAQCBBc3luY0F1ZGlvRGVjb2Rlcjo6fkFzeW5jQXVkaW9EZWNvZGVyKCkKICAg
ICBtX3RocmVhZElEID0gMDsKIH0KIAotdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5
bmMoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZG91YmxlIHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8
QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVm
ZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit2b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjpkZWNv
ZGVBc3luYyhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVm
UHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgQVNTRVJUKGF1ZGlvRGF0YSk7CkBAIC05MSwxMiArOTEsMTIgQEAgdm9pZCBB
c3luY0F1ZGlvRGVjb2Rlcjo6cnVuTG9vcCgpCiAgICAgfQogfQogCi1QYXNzT3duUHRyPEFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s+IEFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rh
c2s6OmNyZWF0ZShBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBkb3VibGUgc2FtcGxlUmF0ZSwgUGFz
c1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK1Bhc3NPd25QdHI8QXN5bmNBdWRp
b0RlY29kZXI6OkRlY29kaW5nVGFzaz4gQXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6
Y3JlYXRlKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlv
QnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBEZWNvZGluZ1Rhc2soYXVkaW9EYXRhLCBzYW1wbGVSYXRlLCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spKTsKIH0KIAotQXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6RGVj
b2RpbmdUYXNrKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGRvdWJsZSBzYW1wbGVSYXRlLCBQYXNz
UmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxB
dWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorQXN5bmNBdWRpb0RlY29kZXI6OkRl
Y29kaW5nVGFzazo6RGVjb2RpbmdUYXNrKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNh
bXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAgOiBt
X2F1ZGlvRGF0YShhdWRpb0RhdGEpCiAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAg
ICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4IGYyY2NhOGQwNzg1Y2NlYTg0NWNjMjJh
ZDQ5ZDUxZGQ0MThjOWE5YTYuLmYwOTU0MmQzOWRhNDM4NmQxZTRhN2E5MGFjYTRjYWJkYjNjNTk5
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaApAQCAt
NDcsMjEgKzQ3LDIxIEBAIHB1YmxpYzoKICAgICB+QXN5bmNBdWRpb0RlY29kZXIoKTsKIAogICAg
IC8vIE11c3QgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2b2lkIGRlY29kZUFz
eW5jKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGRvdWJsZSBzYW1wbGVSYXRlLCBQYXNzUmVmUHRy
PEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1
ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIGRlY29kZUFzeW5jKEFycmF5
QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZm
ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2spOwogCiBwcml2YXRlOgogICAgIGNsYXNzIERlY29kaW5nVGFzayB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlY29kaW5nVGFzayk7CiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxEZWNvZGluZ1Rhc2s+IGNyZWF0ZShBcnJheUJ1
ZmZlciogYXVkaW9EYXRhLCBkb3VibGUgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZl
ckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPERlY29kaW5nVGFz
az4gY3JlYXRlKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1
ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOwogCiAgICAgICAgIHZvaWQgZGVjb2Rl
KCk7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIERlY29kaW5nVGFzayhBcnJheUJ1
ZmZlciogYXVkaW9EYXRhLCBkb3VibGUgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZl
ckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayk7CisgICAgICAgIERlY29kaW5nVGFzayhBcnJheUJ1ZmZlciogYXVk
aW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKTsKIAogICAgICAgICBBcnJheUJ1ZmZlciogYXVkaW9EYXRhKCkgeyByZXR1cm4gbV9h
dWRpb0RhdGEuZ2V0KCk7IH0KLSAgICAgICAgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgICAgICBBdWRpb0J1ZmZlckNhbGxiYWNrKiBzdWNj
ZXNzQ2FsbGJhY2soKSB7IHJldHVybiBtX3N1Y2Nlc3NDYWxsYmFjay5nZXQoKTsgfQogICAgICAg
ICBBdWRpb0J1ZmZlckNhbGxiYWNrKiBlcnJvckNhbGxiYWNrKCkgeyByZXR1cm4gbV9lcnJvckNh
bGxiYWNrLmdldCgpOyB9CiAgICAgICAgIEF1ZGlvQnVmZmVyKiBhdWRpb0J1ZmZlcigpIHsgcmV0
dXJuIG1fYXVkaW9CdWZmZXIuZ2V0KCk7IH0KQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBub3RpZnlDb21wbGV0ZSgpOwogCiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gbV9hdWRpb0RhdGE7Ci0gICAgICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CisgICAgICAgIGZs
b2F0IG1fc2FtcGxlUmF0ZTsKICAgICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IG1f
c3VjY2Vzc0NhbGxiYWNrOwogICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gbV9l
cnJvckNhbGxiYWNrOwogICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fYXVkaW9CdWZmZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29y
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHAKaW5kZXggODI4MDYyZWViN2IyZTVjMDhhMzMxZWU1MzA3MzgxMDcyMDFhYTFkOC4uOTAx
NDJmMjdiMmQ2ODk5OWFiNmIxMDkyMzkzZjIwNmU5YjVkNWIyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcApAQCAtMzYsNyAr
MzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvQmFzaWNQcm9jZXNzb3JOb2Rl
OjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBz
YW1wbGVSYXRlKQorQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlv
Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBB
dWRpb05vZGVJbnB1dCh0aGlzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKaW5kZXggMzhiZmQzYjU0Y2VhNmIxM2YyZGE5NzhlZmFk
MjMwZTQ5ODY5MzM1Zi4uNWE1NTVkYWZiYTBhYzk4NGYxOTM5ZTNhZTZkMmE0N2VjZDNiOTA0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc29yOwogLy8gQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUgaXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0
cHV0IHdoZXJlIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGNo
YW5uZWxzLgogY2xhc3MgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2Rl
IHsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQqLCBk
b3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250
ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2aXJ0dWFs
IHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmNwcAppbmRleCBmZjRmMDQyODc4MzkzZGFiNTUxODNhN2NjZGU0ZmQz
MWQ0YjQ3NTc4Li42ZTI0ZDNiNDlhNGFjNThhNGU3NzFhNWE4MmMwY2ZlZjlkNTBhMGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0zOSwxMiArMzksMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcywgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlv
QnVmZmVyKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKSk7CiB9
CiAKLVBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IEF1ZGlvQnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9G
aWxlRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIGJvb2wgbWl4VG9Nb25v
LCBkb3VibGUgc2FtcGxlUmF0ZSkKK1Bhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IEF1ZGlvQnVmZmVy
OjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNp
emUsIGJvb2wgbWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIE93blB0cjxBdWRp
b0J1cz4gYnVzID0gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGRhdGEsIGRhdGFTaXpl
LCBtaXhUb01vbm8sIHNhbXBsZVJhdGUpOwogICAgIGlmIChidXMuZ2V0KCkpCkBAIC01Myw3ICs1
Myw3IEBAIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IEF1ZGlvQnVmZmVyOjpjcmVhdGVGcm9tQXVk
aW9GaWxlRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzCiAgICAgcmV0dXJuIDA7CiB9CiAKLUF1ZGlv
QnVmZmVyOjpBdWRpb0J1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVt
YmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlKQorQXVkaW9CdWZmZXI6OkF1ZGlvQnVmZmVy
KHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICA6IG1fZ2FpbigxLjApCiAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxl
UmF0ZSkKICAgICAsIG1fbGVuZ3RoKG51bWJlck9mRnJhbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyLmgKaW5kZXggYjExYTIwZTA1MmY3Nzk4Y2E3YmY4OGUxZGNmMGExMDdkMTNm
YjA5ZS4uZDVlOWYyYjRiNGUxZmVhMjQ4M2IyYzdlZmI4MjkyMDg3M2Y2ZjY1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCkBAIC00MSwxNSArNDEsMTUgQEAgY2xhc3MgQXVk
aW9CdXM7CiAgICAgCiBjbGFzcyBBdWRpb0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlv
QnVmZmVyPiB7CiBwdWJsaWM6ICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+
IGNyZWF0ZSh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMs
IGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4g
Y3JlYXRlKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBSZXR1cm5zIDAgaWYgZGF0YSBpcyBub3QgYSB2
YWxpZCBhdWRpbyBmaWxlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBjcmVh
dGVGcm9tQXVkaW9GaWxlRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIGJv
b2wgbWl4VG9Nb25vLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
QXVkaW9CdWZmZXI+IGNyZWF0ZUZyb21BdWRpb0ZpbGVEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAg
Ly8gRm9ybWF0CiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9
CiAgICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoKCkgLyBzYW1wbGVS
YXRlKCk7IH0KLSAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxl
UmF0ZTsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJh
dGU7IH0KIAogICAgIC8vIENoYW5uZWwgZGF0YSBhY2Nlc3MKICAgICB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVscy5zaXplKCk7IH0KQEAgLTY2LDEx
ICs2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlTWVtb3J5KCk7CiAgICAgCiBwcm90
ZWN0ZWQ6Ci0gICAgQXVkaW9CdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90
IG51bWJlck9mRnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXIodW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1w
bGVSYXRlKTsKICAgICBBdWRpb0J1ZmZlcihBdWRpb0J1cyogYnVzKTsKIAogICAgIGRvdWJsZSBt
X2dhaW47IC8vIHNjYWxhciBnYWluCi0gICAgZG91YmxlIG1fc2FtcGxlUmF0ZTsKKyAgICBmbG9h
dCBtX3NhbXBsZVJhdGU7CiAgICAgc2l6ZV90IG1fbGVuZ3RoOwogCiAgICAgVmVjdG9yPFJlZlB0
cjxGbG9hdDMyQXJyYXk+ID4gbV9jaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDRhMjMwZTA4MjMwY2Q1YmQzYjYw
NWVmNzU5YzllOTBiNTgxYTYzNGUuLmI0Yjg2M2Y2NTliYjMyNWZiMjAxMDU5ZThjYjJhMTJjNmRl
YTllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgog
I2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC00OCwx
MiArNDksMTIgQEAgY29uc3QgZG91YmxlIFVua25vd25UaW1lID0gLTE7CiAvLyB0byBtaW5pbWl6
ZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBhbGlhc2luZy4KIGNvbnN0IGRvdWJsZSBNYXhSYXRlID0g
MTAyNDsKIAotUGFzc1JlZlB0cjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUp
CitQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0F1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBzYW1wbGVS
YXRlKQogICAgICwgbV9idWZmZXIoMCkKICAgICAsIG1faXNQbGF5aW5nKGZhbHNlKQpAQCAtMTAw
LDcgKzEwMSw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCiAgICAgLy8gQ2FyZWZ1bCAtIHRoaXMgaXMgYSB0cnlMb2NrKCkgYW5k
IG5vdCBhbiBhdXRvbG9ja2VyLCBzbyB3ZSBtdXN0IHVubG9jaygpIGJlZm9yZSBldmVyeSByZXR1
cm4uCiAgICAgaWYgKG1fcHJvY2Vzc0xvY2sudHJ5TG9jaygpKSB7CiAgICAgICAgIC8vIENoZWNr
IGlmIGl0J3MgdGltZSB0byBzdGFydCBwbGF5aW5nLgotICAgICAgICBkb3VibGUgc2FtcGxlUmF0
ZSA9IHRoaXMtPnNhbXBsZVJhdGUoKTsKKyAgICAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRoaXMt
PnNhbXBsZVJhdGUoKTsKICAgICAgICAgZG91YmxlIHF1YW50dW1TdGFydFRpbWUgPSBjb250ZXh0
KCktPmN1cnJlbnRUaW1lKCk7CiAgICAgICAgIGRvdWJsZSBxdWFudHVtRW5kVGltZSA9IHF1YW50
dW1TdGFydFRpbWUgKyBmcmFtZXNUb1Byb2Nlc3MgLyBzYW1wbGVSYXRlOwogCkBAIC0xMzMsOCAr
MTM0LDggQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2VzcykKICAgICAgICAgLy8gSWYgdGhlIGVuZCB0aW1lIGlzIHNvbWV3aGVyZSBpbiB0
aGUgbWlkZGxlIG9mIHRoaXMgdGltZSBxdWFudHVtLCB0aGVuIHNpbXBseSB6ZXJvIG91dCB0aGUK
ICAgICAgICAgLy8gZnJhbWVzIHN0YXJ0aW5nIGF0IHRoZSBlbmQgdGltZS4KICAgICAgICAgaWYg
KG1fZW5kVGltZSAhPSBVbmtub3duVGltZSAmJiBtX2VuZFRpbWUgPj0gcXVhbnR1bVN0YXJ0VGlt
ZSAmJiBtX2VuZFRpbWUgPCBxdWFudHVtRW5kVGltZSkgewotICAgICAgICAgICAgdW5zaWduZWQg
emVyb1N0YXJ0RnJhbWUgPSAobV9lbmRUaW1lIC0gcXVhbnR1bVN0YXJ0VGltZSkgKiBzYW1wbGVS
YXRlOwotICAgICAgICAgICAgdW5zaWduZWQgZnJhbWVzVG9aZXJvID0gZnJhbWVzVG9Qcm9jZXNz
IC0gemVyb1N0YXJ0RnJhbWU7CisgICAgICAgICAgICBzaXplX3QgemVyb1N0YXJ0RnJhbWUgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KChtX2VuZFRpbWUgLSBxdWFudHVtU3RhcnRUaW1lKSAqIHNh
bXBsZVJhdGUpOworICAgICAgICAgICAgc2l6ZV90IGZyYW1lc1RvWmVybyA9IGZyYW1lc1RvUHJv
Y2VzcyAtIHplcm9TdGFydEZyYW1lOwogCiAgICAgICAgICAgICBib29sIGlzU2FmZSA9IHplcm9T
dGFydEZyYW1lIDwgZnJhbWVzVG9Qcm9jZXNzICYmIGZyYW1lc1RvWmVybyA8PSBmcmFtZXNUb1By
b2Nlc3MgJiYgemVyb1N0YXJ0RnJhbWUgKyBmcmFtZXNUb1plcm8gPD0gZnJhbWVzVG9Qcm9jZXNz
OwogICAgICAgICAgICAgQVNTRVJUKGlzU2FmZSk7CkBAIC0yNzIsMTMgKzI3MywxMyBAQCB2b2lk
IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cmVuZGVyRnJvbUJ1ZmZlcihBdWRpb0J1cyogYnVzLCB1
bnNpZ25lZCBkZXN0aW5hdGlvbgogICAgICAgICBkb3VibGUgc2FtcGxlTDEgPSBzb3VyY2VMW3Jl
YWRJbmRleF07CiAgICAgICAgIGRvdWJsZSBzYW1wbGVMMiA9IHNvdXJjZUxbcmVhZEluZGV4Ml07
CiAgICAgICAgIGRvdWJsZSBzYW1wbGVMID0gKDEuMCAtIGludGVycG9sYXRpb25GYWN0b3IpICog
c2FtcGxlTDEgKyBpbnRlcnBvbGF0aW9uRmFjdG9yICogc2FtcGxlTDI7Ci0gICAgICAgICpkZXN0
aW5hdGlvbkwrKyA9IHNhbXBsZUw7CisgICAgICAgICpkZXN0aW5hdGlvbkwrKyA9IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoc2FtcGxlTCk7CiAKICAgICAgICAgaWYgKGlzU3RlcmVvKSB7CiAgICAg
ICAgICAgICBkb3VibGUgc2FtcGxlUjEgPSBzb3VyY2VSW3JlYWRJbmRleF07CiAgICAgICAgICAg
ICBkb3VibGUgc2FtcGxlUjIgPSBzb3VyY2VSW3JlYWRJbmRleDJdOwogICAgICAgICAgICAgZG91
YmxlIHNhbXBsZVIgPSAoMS4wIC0gaW50ZXJwb2xhdGlvbkZhY3RvcikgKiBzYW1wbGVSMSArIGlu
dGVycG9sYXRpb25GYWN0b3IgKiBzYW1wbGVSMjsKLSAgICAgICAgICAgICpkZXN0aW5hdGlvblIr
KyA9IHNhbXBsZVI7CisgICAgICAgICAgICAqZGVzdGluYXRpb25SKysgPSBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHNhbXBsZVIpOwogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbFJlYWRJbmRl
eCArPSBwaXRjaFJhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5oCmluZGV4IGM3NjljOTdmZjAwOWVlOWViMzMyM2ZmODI5MGFjNjczZTdiYTQ2
MmUuLmZkNzMwODFkNmIzZjgxYjRlMWZiN2IyYjNjZDM4YmQ4MDBlNzgzYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC00Myw3ICs0
Myw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIAogY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
IDogcHVibGljIEF1ZGlvU291cmNlTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNh
bXBsZVJhdGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmlydHVhbCB+
QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCk7CiAgICAgCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFzc1JlZlB0cjxBdWRpb1Bhbm5lck5vZGU+IHBhbm5l
ck5vZGUpIHsgbV9wYW5uZXJOb2RlID0gcGFubmVyTm9kZTsgfQogCiBwcml2YXRlOgotICAgIEF1
ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0ZSk7Cisg
ICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgdm9pZCByZW5kZXJGcm9tQnVmZmVyKEF1ZGlvQnVzKiwgdW5zaWduZWQgZGVzdGlu
YXRpb25GcmFtZU9mZnNldCwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAKaW5kZXggMGY4Y2MwMDAyZmUx
Y2QyOWQzYzgwNzU0YTc5OWQ5N2NiOTY1ZmZjYS4uNTFlNzg1NTg2ODMzMWE0NWY3NjU1MzU0MmQy
OGMzZjFhMTFkMTk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9D
aGFubmVsTWVyZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5u
ZWxNZXJnZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEl0
IGNhbiBlYXNpbHkgYmUgaW5jcmVhc2VkIHRvIHN1cHBvcnQgbW9yZSBpZiB0aGUgd2ViIGF1ZGlv
IHNwZWNpZmljYXRpb24gaXMgdXBkYXRlZC4KIGNvbnN0IHVuc2lnbmVkIE51bWJlck9mSW5wdXRz
ID0gNjsKIAotQXVkaW9DaGFubmVsTWVyZ2VyOjpBdWRpb0NoYW5uZWxNZXJnZXIoQXVkaW9Db250
ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0F1ZGlvQ2hhbm5lbE1lcmdlcjo6QXVk
aW9DaGFubmVsTWVyZ2VyKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIC8vIENyZWF0ZSBh
IGZpeGVkIG51bWJlciBvZiBpbnB1dHMgKGFibGUgdG8gaGFuZGxlIHRoZSBtYXhpbXVtIG51bWJl
ciBvZiBjaGFubmVscyB3ZSBkZWFsIHdpdGgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NoYW5uZWxNZXJnZXIuaAppbmRleCBiN2I3MThiNDkxNWE4OWVmN2M2MDg1ZDg2MWVkYzcw
NjRlMmNmNGJmLi5lNzczZGFlYjkxM2Y1MmQyNjU1NGZhNjM4ZjhjZDYwYTIwY2ZmYTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuaApAQCAtMzgsNyAr
MzgsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiAgICAgCiBjbGFzcyBBdWRpb0NoYW5uZWxNZXJn
ZXIgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
dWRpb0NoYW5uZWxNZXJnZXI+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBz
YW1wbGVSYXRlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbE1lcmdlcj4gY3Jl
YXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9DaGFubmVsTWVyZ2VyKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsgICAgICAKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKTsK
IAogcHJpdmF0ZToKLSAgICBBdWRpb0NoYW5uZWxNZXJnZXIoQXVkaW9Db250ZXh0KiwgZG91Ymxl
IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQ2hhbm5lbE1lcmdlcihBdWRpb0NvbnRleHQqLCBmbG9h
dCBzYW1wbGVSYXRlKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcAppbmRleCA3ZTkwYjdh
OTNjNmY0ZDI4NWE1MTRlNmU0ZmNlYTI1ZWM3ODBlZjdjLi5lNWNjNzJhODZiNmEwMTE0NzVlM2Q2
YTgzODc1ZjhjNTZhM2Y0OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVk
aW9DaGFubmVsU3BsaXR0ZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIEl0IGNhbiBlYXNpbHkgYmUgaW5jcmVhc2VkIHRvIHN1cHBvcnQgbW9yZSBpZiB0aGUg
d2ViIGF1ZGlvIHNwZWNpZmljYXRpb24gaXMgdXBkYXRlZC4KIGNvbnN0IHVuc2lnbmVkIE51bWJl
ck9mT3V0cHV0cyA9IDY7CiAKLUF1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpBdWRpb0NoYW5uZWxTcGxp
dHRlcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorQXVkaW9DaGFu
bmVsU3BsaXR0ZXI6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVyKEF1ZGlvQ29udGV4dCogY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQog
ewogICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmgKaW5kZXggN2Rh
ZGFjNTcxYzc0NDBmZmUxZGE3YWU4NTU0YmExMDA1NTNjNjg5Mi4uNzFiMGVmNDE1YmZkNDVlNjNj
M2YwMTdmNzdiZGNjOWE2NDA2Y2NiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NoYW5uZWxTcGxpdHRlci5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4
dDsKICAgICAKIGNsYXNzIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyIDogcHVibGljIEF1ZGlvTm9kZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IGNy
ZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBdWRpb0NoYW5uZWxTcGxpdHRlcihjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCiAg
ICAgfQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7
CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9DaGFubmVsU3BsaXR0ZXIoQXVkaW9Db250ZXh0KiwgZG91
YmxlIHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQ2hhbm5lbFNwbGl0dGVyKEF1ZGlvQ29udGV4dCos
IGZsb2F0IHNhbXBsZVJhdGUpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMzllOGYzZGYyYTM0YTZmNmQ3
ODhhZDI1ZTIyMmQ4YjliM2E4MDlmZi4uM2VmZmZlYzkxZGMwNmQ4MWU5MWRlZDFjZTU1N2IzMDdl
ZjEzZTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC04
Miw3ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIG5hbWVzcGFjZSB7CiAgICAg
Ci1ib29sIGlzU2FtcGxlUmF0ZVJhbmdlR29vZChkb3VibGUgc2FtcGxlUmF0ZSkKK2Jvb2wgaXNT
YW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJuIHNhbXBs
ZVJhdGUgPj0gMjIwNTAgJiYgc2FtcGxlUmF0ZSA8PSA5NjAwMDsKIH0KQEAgLTEwMyw3ICsxMDMs
NyBAQCBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9Db250ZXh0KGRvY3Vt
ZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZU9mZmxpbmVDb250ZXh0KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCitQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGVP
ZmZsaW5lQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIEF1
ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50KiBkb2N1bWVudCkKIH0KIAogLy8gQ29u
c3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgotQXVkaW9Db250
ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlKQorQXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQsIHRoaXMpCiAgICAgLCBtX2lzSW5pdGlhbGl6ZWQo
ZmFsc2UpCiAgICAgLCBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZChmYWxzZSkKQEAgLTI5NCw3ICsy
OTQsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVmQnVmZmVyKFBhc3NSZWZQdHI8QXVkaW9CdWZm
ZXI+IGJ1ZmZlcikKICAgICBtX2FsbG9jYXRlZEJ1ZmZlcnMuYXBwZW5kKGJ1ZmZlcik7CiB9CiAK
LVBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNhbXBs
ZVJhdGUpCitQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZl
cih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0
IHNhbXBsZVJhdGUpCiB7CiAgICAgaWYgKCFpc1NhbXBsZVJhdGVSYW5nZUdvb2Qoc2FtcGxlUmF0
ZSkgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwIHx8ICFudW1iZXJPZkZyYW1lcykKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDhmNWMz
NWIwYTRlNDA5NmFlN2ExMWVhNDlhMzU2NDFiNzA1MDUzYjMuLmZhNzNkNzA5MzA4ODU0MjlmOWEz
ZWViNzhjMmZiZGMzMTgxZWExZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRp
b0NvbnRleHQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgLy8gQ3JlYXRlIGFuIEF1ZGlvQ29u
dGV4dCBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGVPZmZsaW5lQ29udGV4dChEb2N1bWVudCosIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNh
bXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0Nv
bnRleHQ+IGNyZWF0ZU9mZmxpbmVDb250ZXh0KERvY3VtZW50KiwgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHQoKTsKIApAQCAtOTUsOSArOTUs
OSBAQCBwdWJsaWM6CiAKICAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGluYXRpb24oKSB7
IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQogICAgIGRvdWJsZSBjdXJyZW50VGlt
ZSgpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpOyB9Ci0gICAgZG91
YmxlIHNhbXBsZVJhdGUoKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgp
OyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLT5z
YW1wbGVSYXRlKCk7IH0KIAotICAgIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IGNyZWF0ZUJ1ZmZl
cih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJs
ZSBzYW1wbGVSYXRlKTsKKyAgICBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBjcmVhdGVCdWZmZXIo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBz
YW1wbGVSYXRlKTsKICAgICBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBjcmVhdGVCdWZmZXIoQXJy
YXlCdWZmZXIqIGFycmF5QnVmZmVyLCBib29sIG1peFRvTW9ubyk7CiAKICAgICAvLyBBc3luY2hy
b25vdXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgpAQCAtMjI2LDcgKzIyNiw3IEBAIHB1Ymxp
YzoKICAgICAKIHByaXZhdGU6CiAgICAgQXVkaW9Db250ZXh0KERvY3VtZW50Kik7Ci0gICAgQXVk
aW9Db250ZXh0KERvY3VtZW50KiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9Db250ZXh0KERvY3Vt
ZW50KiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBm
bG9hdCBzYW1wbGVSYXRlKTsKICAgICB2b2lkIGNvbnN0cnVjdENvbW1vbigpOwogCiAgICAgdm9p
ZCBsYXp5SW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGE3MzVjYTEwYzA5YzYzYTI5Mzg4MjA3ZTBhYjg1ZTJk
MzliMWM4NzEuLmZmOWViYmQzMjc4NjQ5N2NjY2Q5MGI1OWUwMTJkZGQyMTFlMzRhZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotQXVkaW9EZXN0aW5h
dGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91
YmxlIHNhbXBsZVJhdGUpCitBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2N1cnJlbnRUaW1lKDAuMCkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDU5
MTMyMDVmODRiOTQ4ZDY4MzMzNDEwOTUyMDMzMGJkMGY2MDU2YzkuLmQ3YmM3YmMxMmQ3OTAyNmVi
NWFmYjU3ZjRlZmU3MjQ2OGI1MzdkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBBdWRpb0NvbnRl
eHQ7CiAgICAgCiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUs
IHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0
aW9uTm9kZShBdWRpb0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9EZXN0
aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVh
bCB+QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKICAgICAvLyBBdWRpb05vZGUgICAKQEAg
LTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgeyByZXR1
cm4gbV9jdXJyZW50VGltZTsgfQogCi0gICAgdmlydHVhbCBkb3VibGUgc2FtcGxlUmF0ZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiAyOyB9
IC8vIEZJWE1FOiB1cGRhdGUgd2hlbiBtdWx0aS1jaGFubmVsIChtb3JlIHRoYW4gc3RlcmVvKSBp
cyBzdXBwb3J0ZWQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9H
YWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmNwcApp
bmRleCAzNjc4NzkyZDI2NzRkZDY4Yjg2NGM5OWEwNDc2MDI2MDFkZWEzZGY2Li4yMTI5Yzg1ZDY5
MTgwMDg4ODVmZTg3MTcyOGVhY2M1MThkZDQwNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0dhaW5Ob2RlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUF1ZGlvR2Fpbk5vZGU6OkF1ZGlvR2Fpbk5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0
LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0F1ZGlvR2Fpbk5vZGU6OkF1ZGlvR2Fpbk5vZGUoQXVkaW9D
b250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRl
eHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1fc2FtcGxlQWNj
dXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcykgLy8gRklY
TUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBjb250ZXh0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmgKaW5kZXggYTBkM2MyYjIwOGFhOGNlZjM3MTdkNTNm
MDYyZjQ3YjNmNTIwYjg3ZS4uZTYzNDIxMjhjNzc5OTRiYmQ0OGQyMGQ2ZjE4N2IyOGQ1NzkxOTRl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuaApAQCAtMzksNyArMzks
NyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiAKIGNsYXNzIEF1ZGlvR2Fpbk5vZGUgOiBwdWJsaWMg
QXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0dhaW5Ob2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBdWRpb0dhaW5Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBBdWRpb0dhaW5Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKICAgICB9CkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb0dhaW4qIGdhaW4oKSB7IHJldHVybiBtX2dh
aW4uZ2V0KCk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIAogcHJp
dmF0ZToKLSAgICBBdWRpb0dhaW5Ob2RlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRl
KTsKKyAgICBBdWRpb0dhaW5Ob2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwog
CiAgICAgZG91YmxlIG1fbGFzdEdhaW47IC8vIGZvciBkZS16aXBwZXJpbmcKICAgICBSZWZQdHI8
QXVkaW9HYWluPiBtX2dhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0xpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIu
Y3BwCmluZGV4IDQ0ZmIwMmNkOGZiYTMxODE5ODhiMmJjY2RjMTA5Nzc5ZDkwNDA0MmEuLjJmMWVm
NzY0ZGY4ZGJkMjJiNjczYzBlYzcwYmZiNmY2M2IxYWI0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBBdWRpb0xpc3RlbmVyOjpBdWRpb0xpc3RlbmVyKCkKICAgICA6IG1fcG9zaXRp
b24oMCwgMCwgMCkKLSAgICAsIG1fb3JpZW50YXRpb24oMC4wLCAwLjAsIC0xLjApCi0gICAgLCBt
X3VwVmVjdG9yKDAuMCwgMS4wLCAwLjApCisgICAgLCBtX29yaWVudGF0aW9uKDAsIDAsIC0xKQor
ICAgICwgbV91cFZlY3RvcigwLCAxLCAwKQogICAgICwgbV92ZWxvY2l0eSgwLCAwLCAwKQotICAg
ICwgbV9kb3BwbGVyRmFjdG9yKDEuMCkKKyAgICAsIG1fZG9wcGxlckZhY3RvcigxKQogICAgICwg
bV9zcGVlZE9mU291bmQoMzQzLjMpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0xp
c3RlbmVyLmgKaW5kZXggNTI4MWE4OTA3Y2NiYTBjMTgxYjUxN2Q3YzZhYjUyODA0Njg0MGRjZi4u
OGI1ZDhhZDFhMDM4YjU1MTMzYzdmYjNhN2M0OGM5Mjg2NThkNTgwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaApAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICAvLyBQb3NpdGlvbgotICAgIHZvaWQgc2V0UG9zaXRpb24oZG91YmxlIHgsIGRv
dWJsZSB5LCBkb3VibGUgeikgeyBzZXRQb3NpdGlvbihGbG9hdFBvaW50M0QoeCwgeSwgeikpOyB9
CisgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IHNldFBv
c2l0aW9uKEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7IH0KICAgICB2b2lkIHNldFBvc2l0aW9uKGNv
bnN0IEZsb2F0UG9pbnQzRCAmcG9zaXRpb24pIHsgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOyB9CiAg
ICAgY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRp
b247IH0KIAogICAgIC8vIE9yaWVudGF0aW9uCi0gICAgdm9pZCBzZXRPcmllbnRhdGlvbihkb3Vi
bGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgdXBYLCBkb3VibGUgdXBZLCBkb3VibGUg
dXBaKQorICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwg
ZmxvYXQgdXBYLCBmbG9hdCB1cFksIGZsb2F0IHVwWikKICAgICB7CiAgICAgICAgIHNldE9yaWVu
dGF0aW9uKEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7CiAgICAgICAgIHNldFVwVmVjdG9yKEZsb2F0
UG9pbnQzRCh1cFgsIHVwWSwgdXBaKSk7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBGbG9hdFBvaW50M0QmIHVwVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV91cFZlY3Rvcjsg
fQogCiAgICAgLy8gVmVsb2NpdHkKLSAgICB2b2lkIHNldFZlbG9jaXR5KGRvdWJsZSB4LCBkb3Vi
bGUgeSwgZG91YmxlIHopIHsgc2V0VmVsb2NpdHkoRmxvYXRQb2ludDNEKHgsIHksIHopKTsgfQor
ICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBzZXRWZWxv
Y2l0eShGbG9hdFBvaW50M0QoeCwgeSwgeikpOyB9CiAgICAgdm9pZCBzZXRWZWxvY2l0eShjb25z
dCBGbG9hdFBvaW50M0QgJnZlbG9jaXR5KSB7IG1fdmVsb2NpdHkgPSB2ZWxvY2l0eTsgfQogICAg
IGNvbnN0IEZsb2F0UG9pbnQzRCYgdmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGUuY3BwCmluZGV4IDBjMTdkZTYwY2Jl
NmFjMGQ5N2YwNTA2MzA2NTRlMThhODkzNTMyNzguLmMyYmJhZjcxYjFhYjM5MGZkMWU5NzJmODgz
NjBhNjhhOWFlZDgzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcApAQCAt
MzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvTm9kZTo6QXVkaW9O
b2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCitBdWRpb05vZGU6
OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX25vZGVUeXBlKE5vZGVUeXBlVW5rbm93
bikKICAgICAsIG1fY29udGV4dChjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGUu
aAppbmRleCAwMDg3MWRkNTk2Mzk1MzJiZTZkNzdjMzRmNzIzNjg2MDU2ZjcwM2U3Li44NmZmZTdj
ZmE0NTUyNjE1YTliOTU4Mzk0YmRlN2FkNDhlZGZjN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb05vZGUuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBBdWRpb05vZGUgewogcHVibGljOgog
ICAgIGVudW0geyBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzID0gMTI4IH07CiAKLSAgICBBdWRpb05v
ZGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgIEF1ZGlvTm9kZShBdWRp
b0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb05vZGUoKTsK
IAogICAgIEF1ZGlvQ29udGV4dCogY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsg
fQpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbm5lY3QoQXVkaW9Ob2Rl
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZXggPSAwLCB1bnNpZ25lZCBpbnB1dElu
ZGV4ID0gMCk7CiAgICAgYm9vbCBkaXNjb25uZWN0KHVuc2lnbmVkIG91dHB1dEluZGV4ID0gMCk7
CiAKLSAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsg
fQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0K
IAogICAgIC8vIHByb2Nlc3NJZk5lY2Vzc2FyeSgpIGlzIGNhbGxlZCBieSBvdXIgb3V0cHV0KHMp
IHdoZW4gdGhlIHJlbmRlcmluZyBncmFwaCBuZWVkcyB0aGlzIEF1ZGlvTm9kZSB0byBwcm9jZXNz
LgogICAgIC8vIFRoaXMgbWV0aG9kIGVuc3VyZXMgdGhhdCB0aGUgQXVkaW9Ob2RlIHdpbGwgb25s
eSBwcm9jZXNzIG9uY2UgcGVyIHJlbmRlcmluZyB0aW1lIHF1YW50dW0gZXZlbiBpZiBpdCdzIGNh
bGxlZCByZXBlYXRlZGx5LgpAQCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9sYXRp
bGUgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CiAgICAgTm9kZVR5cGUgbV9ub2RlVHlwZTsKICAgICBS
ZWZQdHI8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgZG91YmxlIG1fc2FtcGxlUmF0ZTsK
KyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgVmVjdG9yPE93blB0cjxBdWRpb05vZGVJbnB1
dD4gPiBtX2lucHV0czsKICAgICBWZWN0b3I8T3duUHRyPEF1ZGlvTm9kZU91dHB1dD4gPiBtX291
dHB1dHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVy
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwCmlu
ZGV4IDdkMjZmZWFjOTQ3ZDc2YzRiYWY0Nzg0N2Y4MWZhZTQ3MDVjMjkzMjQuLmZhZjdmMTU5ZTQ0
MzIxNDQ2ZWQ2NDM2MWMyZGY0NDVkMzA1YThkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9QYW5uZXJOb2RlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgdm9pZCBmaXhO
QU5zKGRvdWJsZSAmeCkKICAgICAgICAgeCA9IDAuMDsKIH0KIAotQXVkaW9QYW5uZXJOb2RlOjpB
dWRpb1Bhbm5lck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkK
K0F1ZGlvUGFubmVyTm9kZTo6QXVkaW9QYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQog
ICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmVyOjpQYW5uaW5nTW9kZWxIUlRGKQogICAgICwgbV9s
YXN0R2FpbigtMS4wKQpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgQXVkaW9QYW5uZXJOb2RlOjpn
ZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRp
CiAKICAgICBGbG9hdFBvaW50M0QgdXAgPSBsaXN0ZW5lclJpZ2h0LmNyb3NzKGxpc3RlbmVyRnJv
bnROb3JtKTsKIAotICAgIGRvdWJsZSB1cFByb2plY3Rpb24gPSBzb3VyY2VMaXN0ZW5lci5kb3Qo
dXApOworICAgIGZsb2F0IHVwUHJvamVjdGlvbiA9IHNvdXJjZUxpc3RlbmVyLmRvdCh1cCk7CiAK
ICAgICBGbG9hdFBvaW50M0QgcHJvamVjdGVkU291cmNlID0gc291cmNlTGlzdGVuZXIgLSB1cFBy
b2plY3Rpb24gKiB1cDsKICAgICBwcm9qZWN0ZWRTb3VyY2Uubm9ybWFsaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oCmluZGV4IDYxZTM0YTk3YzNiZGU4NDRi
MTJhYjBkNTBiNjAyMDBlNThhYjZiMmUuLjZlY2ViZWFhZTMxY2E3ZGFjMzg1NzlmMWQ1YTAzNWRl
MzcyMmNmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVy
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgU09VTkRGSUVMRCA9IDIsCiAgICAgfTsK
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvUGFubmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1Bhbm5lck5v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJs
aWM6CiAgICAgQXVkaW9HYWluKiBjb25lR2FpbigpIHsgcmV0dXJuIG1fY29uZUdhaW4uZ2V0KCk7
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAKIHByaXZhdGU6Ci0g
ICAgQXVkaW9QYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAg
ICBBdWRpb1Bhbm5lck5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAg
ICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBnYWluIGF0dGVudWF0
aW9uLgogICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHAKaW5kZXggOTA1NjQ5ODRkZjJkM2NmM2M4ZjJlNzc1NDY2NDYzZTdlOTAz
ODBmOS4uYmU5Mjc5ZmRmMTgwYWQwNGE2MjRiZDI1MDE0OTllNTIzNzQ4OTNmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1
ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAi
RmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDMsMTMgKzQ0LDEzIEBAIGZsb2F0IEF1ZGlvUGFyYW06OnZhbHVl
KCkKICAgICAvLyBVcGRhdGUgdmFsdWUgZm9yIHRpbWVsaW5lLgogICAgIGlmIChjb250ZXh0KCkg
JiYgY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpIHsKICAgICAgICAgYm9vbCBoYXNWYWx1ZTsK
LSAgICAgICAgZmxvYXQgdGltZWxpbmVWYWx1ZSA9IG1fdGltZWxpbmUudmFsdWVGb3JDb250ZXh0
VGltZShjb250ZXh0KCksIG1fdmFsdWUsIGhhc1ZhbHVlKTsKKyAgICAgICAgZmxvYXQgdGltZWxp
bmVWYWx1ZSA9IG1fdGltZWxpbmUudmFsdWVGb3JDb250ZXh0VGltZShjb250ZXh0KCksIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQobV92YWx1ZSksIGhhc1ZhbHVlKTsKIAogICAgICAgICBpZiAoaGFz
VmFsdWUpCiAgICAgICAgICAgICBtX3ZhbHVlID0gdGltZWxpbmVWYWx1ZTsKICAgICB9CiAKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdmFsdWUpOworICAgIHJldHVybiBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KG1fdmFsdWUpOwogfQogCiB2b2lkIEF1ZGlvUGFyYW06OnNldFZhbHVl
KGZsb2F0IHZhbHVlKQpAQCAtNjIsNyArNjMsNyBAQCB2b2lkIEF1ZGlvUGFyYW06OnNldFZhbHVl
KGZsb2F0IHZhbHVlKQogCiBmbG9hdCBBdWRpb1BhcmFtOjpzbW9vdGhlZFZhbHVlKCkKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc21vb3RoZWRWYWx1ZSk7CisgICAgcmV0dXJu
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV9zbW9vdGhlZFZhbHVlKTsKIH0KIAogYm9vbCBBdWRp
b1BhcmFtOjpzbW9vdGgoKQpAQCAtNzEsNyArNzIsNyBAQCBib29sIEF1ZGlvUGFyYW06OnNtb290
aCgpCiAgICAgLy8gU21vb3RoaW5nIGVmZmVjdGl2ZWx5IGlzIHBlcmZvcm1lZCBieSB0aGUgdGlt
ZWxpbmUuCiAgICAgYm9vbCB1c2VUaW1lbGluZVZhbHVlID0gZmFsc2U7CiAgICAgaWYgKGNvbnRl
eHQoKSkKLSAgICAgICAgbV92YWx1ZSA9IG1fdGltZWxpbmUudmFsdWVGb3JDb250ZXh0VGltZShj
b250ZXh0KCksIG1fdmFsdWUsIHVzZVRpbWVsaW5lVmFsdWUpOworICAgICAgICBtX3ZhbHVlID0g
bV90aW1lbGluZS52YWx1ZUZvckNvbnRleHRUaW1lKGNvbnRleHQoKSwgbmFycm93UHJlY2lzaW9u
VG9GbG9hdChtX3ZhbHVlKSwgdXNlVGltZWxpbmVWYWx1ZSk7CiAgICAgCiAgICAgaWYgKG1fc21v
b3RoZWRWYWx1ZSA9PSBtX3ZhbHVlKSB7CiAgICAgICAgIC8vIFNtb290aGVkIHZhbHVlIGhhcyBh
bHJlYWR5IGFwcHJvYWNoZWQgYW5kIHNuYXBwZWQgdG8gdmFsdWUuCkBAIC0xMDIsMTIgKzEwMywx
MiBAQCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKGZsb2F0
KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJlck9mVgogICAgIC8vIENhbGN1bGF0ZSB2YWx1ZXMgZm9y
IHRoaXMgcmVuZGVyIHF1YW50dW0uCiAgICAgLy8gTm9ybWFsbHkgbnVtYmVyT2ZWYWx1ZXMgd2ls
bCBlcXVhbCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMgKHRoZSByZW5kZXIgcXVh
bnR1bSBzaXplKS4KICAgICBmbG9hdCBzYW1wbGVSYXRlID0gY29udGV4dCgpLT5zYW1wbGVSYXRl
KCk7Ci0gICAgZmxvYXQgc3RhcnRUaW1lID0gY29udGV4dCgpLT5jdXJyZW50VGltZSgpOworICAg
IGZsb2F0IHN0YXJ0VGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29udGV4dCgpLT5jdXJy
ZW50VGltZSgpKTsKICAgICBmbG9hdCBlbmRUaW1lID0gc3RhcnRUaW1lICsgbnVtYmVyT2ZWYWx1
ZXMgLyBzYW1wbGVSYXRlOwogCiAgICAgLy8gTm90ZSB3ZSdyZSBydW5uaW5nIGNvbnRyb2wgcmF0
ZSBhdCB0aGUgc2FtcGxlLXJhdGUuCiAgICAgLy8gUGFzcyBpbiB0aGUgY3VycmVudCB2YWx1ZSBh
cyBkZWZhdWx0IHZhbHVlLgotICAgIG1fdmFsdWUgPSBtX3RpbWVsaW5lLnZhbHVlc0ZvclRpbWVS
YW5nZShzdGFydFRpbWUsIGVuZFRpbWUsIG1fdmFsdWUsIHZhbHVlcywgbnVtYmVyT2ZWYWx1ZXMs
IHNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOworICAgIG1fdmFsdWUgPSBtX3RpbWVsaW5lLnZhbHVl
c0ZvclRpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUsIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
bV92YWx1ZSksIHZhbHVlcywgbnVtYmVyT2ZWYWx1ZXMsIHNhbXBsZVJhdGUsIHNhbXBsZVJhdGUp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAppbmRleCAwNDUxODg0NDU2ZmFlMTkxODU3MDhhYTJm
NjExYmViM2QzNDA0NjQzLi4yZWUxMzRhZTM3YTIyMTAyODk2ZDk2ZThlYWMzMGEzYTQ4M2YzYmNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdWRpb1BhcmFtVGltZWxpbmUuaCIKIAogI2lu
Y2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTEy
NCw4ICsxMjUsOCBAQCBmbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRp
bWUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBkZWZhdQogICAgIC8vIEFzayBmb3IganVz
dCBhIHNpbmdsZSB2YWx1ZS4KICAgICBmbG9hdCB2YWx1ZTsKICAgICBmbG9hdCBzYW1wbGVSYXRl
ID0gY29udGV4dC0+c2FtcGxlUmF0ZSgpOwotICAgIGZsb2F0IHN0YXJ0VGltZSA9IGNvbnRleHQt
PmN1cnJlbnRUaW1lKCk7Ci0gICAgZmxvYXQgZW5kVGltZSA9IHN0YXJ0VGltZSArIDEuMSAvIHNh
bXBsZVJhdGU7IC8vIHRpbWUganVzdCBiZXlvbmQgb25lIHNhbXBsZS1mcmFtZQorICAgIGZsb2F0
IHN0YXJ0VGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29udGV4dC0+Y3VycmVudFRpbWUo
KSk7CisgICAgZmxvYXQgZW5kVGltZSA9IHN0YXJ0VGltZSArIDEuMWYgLyBzYW1wbGVSYXRlOyAv
LyB0aW1lIGp1c3QgYmV5b25kIG9uZSBzYW1wbGUtZnJhbWUKICAgICBmbG9hdCBjb250cm9sUmF0
ZSA9IHNhbXBsZVJhdGUgLyBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXM7IC8vIG9u
ZSBwYXJhbWV0ZXIgY2hhbmdlIHBlciByZW5kZXIgcXVhbnR1bQogICAgIHZhbHVlID0gdmFsdWVz
Rm9yVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSwgZGVmYXVsdFZhbHVlLCAmdmFsdWUsIDEs
IHNhbXBsZVJhdGUsIGNvbnRyb2xSYXRlKTsKIApAQCAtMTU3LDcgKzE1OCw3IEBAIGZsb2F0IEF1
ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVzRm9yVGltZVJhbmdlKGZsb2F0IHN0YXJ0VGltZSwKIH0K
IAogLy8gUmV0dXJucyB0aGUgcm91bmRlZCBkb3duIGludGVnZXIgc2FtcGxlLWZyYW1lIGZvciB0
aGUgdGltZSBhbmQgc2FtcGxlLXJhdGUuCi1zdGF0aWMgdW5zaWduZWQgdGltZVRvU2FtcGxlRnJh
bWUoZG91YmxlIHRpbWUsIGRvdWJsZSBzYW1wbGVSYXRlKQorc3RhdGljIHVuc2lnbmVkIHRpbWVU
b1NhbXBsZUZyYW1lKGRvdWJsZSB0aW1lLCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIGRvdWJs
ZSBrID0gMC41IC8gc2FtcGxlUmF0ZTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KCh0aW1lICsgaykgKiBzYW1wbGVSYXRlKTsKQEAgLTE4NCw3ICsxODUsNyBAQCBmbG9hdCBBdWRp
b1BhcmFtVGltZWxpbmU6OnZhbHVlc0ZvclRpbWVSYW5nZUltcGwoZmxvYXQgc3RhcnRUaW1lLAog
ICAgIH0KIAogICAgIC8vIE1haW50YWluIGEgcnVubmluZyB0aW1lIGFuZCBpbmRleCBmb3Igd3Jp
dGluZyB0aGUgdmFsdWVzIGJ1ZmZlci4KLSAgICBkb3VibGUgY3VycmVudFRpbWUgPSBzdGFydFRp
bWU7CisgICAgZmxvYXQgY3VycmVudFRpbWUgPSBzdGFydFRpbWU7CiAgICAgdW5zaWduZWQgd3Jp
dGVJbmRleCA9IDA7CiAKICAgICAvLyBJZiBmaXJzdCBldmVudCBpcyBhZnRlciBzdGFydFRpbWUg
dGhlbiBmaWxsIGluaXRpYWwgcGFydCBvZiB2YWx1ZXMgYnVmZmVyIHdpdGggZGVmYXVsdFZhbHVl
CkBAIC0yNDUsOCArMjQ2LDggQEAgZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZXNGb3JU
aW1lUmFuZ2VJbXBsKGZsb2F0IHN0YXJ0VGltZSwKICAgICAgICAgICAgICAgICAgICAgdmFsdWVz
W3dyaXRlSW5kZXhdID0gdmFsdWU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIC8vIEludGVycG9sYXRlIGluIGxvZyBzcGFjZS4KLSAgICAgICAgICAgICAgICB2YWx1ZTEg
PSBsb2cyKHZhbHVlMSk7Ci0gICAgICAgICAgICAgICAgdmFsdWUyID0gbG9nMih2YWx1ZTIpOwor
ICAgICAgICAgICAgICAgIHZhbHVlMSA9IGxvZzJmKHZhbHVlMSk7CisgICAgICAgICAgICAgICAg
dmFsdWUyID0gbG9nMmYodmFsdWUyKTsKIAogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBvcHRp
bWl6ZSB0byBub3QgdXNlIHBvdygpIGluIGlubmVyIGxvb3AsIHRoaXMgaXMganVzdCBhIHNpbXBs
ZSBleHBvbmVudGlhbCByYW1wLgogICAgICAgICAgICAgICAgIGZvciAoOyB3cml0ZUluZGV4IDwg
ZmlsbFRvRnJhbWU7ICsrd3JpdGVJbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b1NvdXJjZU5vZGUuaAppbmRleCA2MDkxMzcxNmJhMGZkYzg4Y2VhZGEyYTczNTU1OTdiYjM0ZWE2
ZTYwLi5hNmJkZDQyN2I5OTIyM2U3ODdjY2EzZmMwZWUyNzdmMTYxNmQzODg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1NvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9BdWRpb1NvdXJjZU5vZGUuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291cmNlTm9kZSA6IHB1YmxpYyBBdWRpb05v
ZGUgewogcHVibGljOgotICAgIEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQs
IGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQqIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFk
RmlsdGVyTm9kZS5jcHAKaW5kZXggY2VkMDdiOGJhZDUwMTQ2OTU2MGY4MGQ3YjUxNzlhNmIwZDNh
YjgyNC4uZjE2ZDhlNWY5NmQ3NTdiZjk1ZDU3MjQyYjZlMmRiOTVjZTYxY2YwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0
ZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCitCaXF1YWRG
aWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpCiB7CiAgICAgLy8gSW5pdGlhbGx5IHNldHVwIGFzIGxvd3Bhc3MgZmlsdGVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCmluZGV4IGRmZTE3YjNhZDZh
MjkxMjg3NWEzNTc5ZTY2ZTRjYmJkMTQzYzM3NzEuLjY4M2IyYTM5ZDQ3NGY4M2VlY2Q2YjU2NTJj
NDIxZWU2ODBiNTc3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVh
ZEZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRGaWx0ZXJO
b2RlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICBBTExQQVNTID0gNwogICAg
IH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXF1YWRG
aWx0ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKICAgICB9CkBAIC01OSw3ICs1
OSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiBnYWluKCkgeyByZXR1cm4gYmlxdWFkUHJv
Y2Vzc29yKCktPnBhcmFtZXRlcjMoKTsgfQogICAgIAogcHJpdmF0ZToKLSAgICBCaXF1YWRGaWx0
ZXJOb2RlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBCaXF1YWRGaWx0
ZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgQmlxdWFkUHJv
Y2Vzc29yKiBiaXF1YWRQcm9jZXNzb3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXF1YWRQcm9j
ZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlx
dWFkUHJvY2Vzc29yLmNwcAppbmRleCA1NDBlMWZhMTA5NWQ3NmZjODlmYzUxOWQ1YWE1NTk0NGI5
YjlhOGFkLi5jNzU1Mjc3NDg1YjY3OWRmM2U4OWYzYWYwZTMxNWQ4ZWY2MzkyYTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotQmlxdWFkUHJvY2Vzc29yOjpCaXF1YWRQ
cm9jZXNzb3IoZG91YmxlIHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29s
IGF1dG9Jbml0aWFsaXplKQorQmlxdWFkUHJvY2Vzc29yOjpCaXF1YWRQcm9jZXNzb3IoZmxvYXQg
c2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUp
CiAgICAgOiBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5u
ZWxzKQogICAgICwgbV90eXBlKExvd1Bhc3MpCiAgICAgLCBtX3BhcmFtZXRlcjEoMCkKQEAgLTUx
LDcgKzUxLDcgQEAgQmlxdWFkUHJvY2Vzc29yOjpCaXF1YWRQcm9jZXNzb3IoZG91YmxlIHNhbXBs
ZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib28KICAgICAgICAgaW5pdGlhbGl6ZSgp
OwogfQogCi1CaXF1YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nlc3NvcihGaWx0ZXJUeXBlIHR5cGUs
IGRvdWJsZSBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5p
dGlhbGl6ZSkKK0JpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEZpbHRlclR5cGUgdHlw
ZSwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0lu
aXRpYWxpemUpCiAgICAgOiBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1i
ZXJPZkNoYW5uZWxzKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3BhcmFtZXRlcjEoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKaW5kZXggM2M1MjE4NTJk
MDMxNzg2YTJjNTZkZjY5ZDUwNjZhZjM4NWJhMzVhOC4uZTc0ODcyNjJhZGExMGVhYjU0OGI1OWEz
NGE1YjgxMDIzNTMxNzVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlx
dWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmgKQEAgLTQ5LDEwICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFsbHBhc3MgPSA3CiAg
ICAgfTsKIAotICAgIEJpcXVhZFByb2Nlc3Nvcihkb3VibGUgc2FtcGxlUmF0ZSwgc2l6ZV90IG51
bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOworICAgIEJpcXVhZFByb2Nlc3Nv
cihmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5p
dGlhbGl6ZSk7CiAKICAgICAvLyBPbGQgY29uc3RydWN0b3IgdXNlZCBieSBkZXByZWNhdGVkIExv
d1Bhc3MyRmlsdGVyTm9kZSBhbmQgSGlnaFBhc3MyRmlsdGVyTm9kZQotICAgIEJpcXVhZFByb2Nl
c3NvcihGaWx0ZXJUeXBlLCBkb3VibGUgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMsIGJvb2wgYXV0b0luaXRpYWxpemUgPSB0cnVlKTsKKyAgICBCaXF1YWRQcm9jZXNzb3IoRmls
dGVyVHlwZSwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wg
YXV0b0luaXRpYWxpemUgPSB0cnVlKTsKIAogICAgIHZpcnR1YWwgfkJpcXVhZFByb2Nlc3Nvcigp
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQ29udm9sdmVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCAy
OGQ1N2RiMzEwNDJiNzg5ZDNhZjRiZDQxYjc4YWY3Mzk4MzM4MjhjLi4zMTU4MzU2MTk3MWE2OTli
YjMwYzVhMjhjMWFmYzJhYWNiMWQ2M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmNwcApAQCAtNDUsNyArNDUsNyBAQCBjb25zdCBzaXplX3QgTWF4RkZUU2l6ZSA9
IDMyNzY4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNvbnZvbHZlck5vZGU6OkNvbnZvbHZl
ck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0NvbnZvbHZl
ck5vZGU6OkNvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgYWRkSW5w
dXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9Db252b2x2ZXJOb2RlLmgKaW5kZXggN2I3MWJhOTZkY2E1ZTA3NTA5ZmZhNjE5N2ZhOWUz
ZGU2MTZkZjkxNC4uZmIyOWQ1YzVkMjg3YjkwYmU0NTA2Njc1ZjM1NWJmYmJiNzg0M2Q5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaApAQCAtMzcsNyArMzcsNyBAQCBj
bGFzcyBSZXZlcmI7CiAgICAgCiBjbGFzcyBDb252b2x2ZXJOb2RlIDogcHVibGljIEF1ZGlvTm9k
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udm9sdmVyTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udm9s
dmVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCiAgICAgfQpAQCAtNTUsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgQXVkaW9CdWZmZXIqIGJ1ZmZlcigpOwogCiBwcml2YXRlOgotICAg
IENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgIENv
bnZvbHZlck5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBPd25Q
dHI8UmV2ZXJiPiBtX3JldmVyYjsKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fYnVmZmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAKaW5kZXggZjFhNzI2MzMzODkzYTM1NjA5YWQ5Zjc0NDJkMTkyNzljZmM4YzMx
Zi4uZjdkYjM0ZTA1OGNhYmUxNjE2MDNjYWJhMDA5ZmQxZjE5ZDQ5ODExZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpp
bml0aWFsaXplKCkKICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBkb3VibGUgaGFyZHdhcmVTYW1wbGVSYXRlID0gQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdh
cmVTYW1wbGVSYXRlKCk7CisgICAgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlID0gQXVkaW9EZXN0
aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAjaWZuZGVmIE5ERUJVRyAgICAKICAgICBm
cHJpbnRmKHN0ZGVyciwgIj4+Pj4gaGFyZHdhcmVTYW1wbGVSYXRlID0gJWZcbiIsIGhhcmR3YXJl
U2FtcGxlUmF0ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZjFkNjg5ZGIwOWM5MzU5OGJiMzQ2
MzU4NzJkMTczMTY4NmQ0OGMxMi4uNjMwYmRjMzM1MmQ3NWE3MzQyODY5NzdkZmI5YTJiZTQ0ZjFl
N2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBpbml0aWFsaXplKCk7CiAgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOwogICAg
IAotICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbi0+
c2FtcGxlUmF0ZSgpOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb24tPnNhbXBsZVJhdGUoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVu
ZGVyaW5nKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxh
eURTUEtlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5j
cHAKaW5kZXggOGUwYjQwZWZjYmI3ZDFlMGYzOWY2NjAzMjY2YmNjMjI0MjRkZDZiMi4uYWVkYTE4
OWM1YTk1NTcxMDIzMTdiNDgwZjIwYWI5ODZjZTJmNGY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcApAQCAtMzMsOCArMzMsOCBAQAogCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogICAKLWNvbnN0IGRvdWJsZSBEZWZhdWx0TWF4RGVsYXlUaW1lID0gMS4wOwot
Y29uc3QgZG91YmxlIFNtb290aGluZ1RpbWVDb25zdGFudCA9IDAuMDIwOyAvLyAyMG1zCitjb25z
dCBmbG9hdCBEZWZhdWx0TWF4RGVsYXlUaW1lID0gMTsKK2NvbnN0IGZsb2F0IFNtb290aGluZ1Rp
bWVDb25zdGFudCA9IDAuMDIwZjsgLy8gMjBtcwogICAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNTQsNyArNTQsNyBAQCBEZWxheURTUEtlcm5lbDo6RGVsYXlEU1BLZXJuZWwoRGVsYXlQcm9j
ZXNzb3IqIHByb2Nlc3NvcikKICAgICBtX3Ntb290aGluZ1JhdGUgPSBBdWRpb1V0aWxpdGllczo6
ZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRlKFNtb290aGluZ1RpbWVDb25zdGFudCwg
cHJvY2Vzc29yLT5zYW1wbGVSYXRlKCkpOwogfQogCi1EZWxheURTUEtlcm5lbDo6RGVsYXlEU1BL
ZXJuZWwoZG91YmxlIG1heERlbGF5VGltZSwgZG91YmxlIHNhbXBsZVJhdGUpCitEZWxheURTUEtl
cm5lbDo6RGVsYXlEU1BLZXJuZWwoZG91YmxlIG1heERlbGF5VGltZSwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IEF1ZGlvRFNQS2VybmVsKHNhbXBsZVJhdGUpCiAgICAgLCBtX21heERlbGF5VGlt
ZShtYXhEZWxheVRpbWUpCiAgICAgLCBtX3dyaXRlSW5kZXgoMCkKQEAgLTg4LDcgKzg4LDcgQEAg
dm9pZCBEZWxheURTUEtlcm5lbDo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCog
ZGVzdGluYXRpb24sIHNpemVfdCBmcmEKICAgICBpZiAoIXNvdXJjZSB8fCAhZGVzdGluYXRpb24p
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgZG91YmxlIHNhbXBsZVJhdGUgPSB0aGlz
LT5zYW1wbGVSYXRlKCk7CisgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IHRoaXMtPnNhbXBsZVJhdGUo
KTsKICAgICBkb3VibGUgZGVsYXlUaW1lID0gZGVsYXlQcm9jZXNzb3IoKSA/IGRlbGF5UHJvY2Vz
c29yKCktPmRlbGF5VGltZSgpLT52YWx1ZSgpIDogbV9kZXNpcmVkRGVsYXlGcmFtZXMgLyBzYW1w
bGVSYXRlOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBkZWxheSB0aW1lIGlzIGluIGEgdmFsaWQg
cmFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuaAppbmRleCAyYWUz
NmNiODY0N2UwNjAwNmNlNTI1NGRiNDViMWQ3YzMwZTFlODI2Li43OWEzOTU2OGI3ODhmMTcxZjEy
ZjY3ZjBiZmFkNzNhZmQxNmU4OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9EZWxheURTUEtlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQ
S2VybmVsLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRGVsYXlQcm9jZXNzb3I7CiBjbGFzcyBE
ZWxheURTUEtlcm5lbCA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbCB7CiBwdWJsaWM6ICAKICAgICBE
ZWxheURTUEtlcm5lbChEZWxheVByb2Nlc3NvciopOwotICAgIERlbGF5RFNQS2VybmVsKGRvdWJs
ZSBtYXhEZWxheVRpbWUsIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBEZWxheURTUEtlcm5lbChk
b3VibGUgbWF4RGVsYXlUaW1lLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXggYjU3OGQ2MDQ4MGNlYzE4NjNhNjJjZjY3
ZjI3Y2JlZThkYzdmNTEwMi4uMmE1MjVkZDFhNmMxOGI5ZGQ1YzQ0YTdlMzQ0YjcwZTliMTQ5Zjkw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5vZGUuY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250
ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0RlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgbV9wcm9jZXNzb3IgPSBh
ZG9wdFB0cihuZXcgRGVsYXlQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgMSkpOyAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5kZXggOTNhZDIyNzlkMzE2NWQ2MWY3Y2MwMzBkYjNmZTll
ZDM3MjUwZTA5ZS4uM2Q1OGE4OTEzN2EzNmEzY2Q1ZGY4Y2U5YWU4NTUyYjM3MjhlMjZmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgQXVk
aW9QYXJhbTsKIAogY2xhc3MgRGVsYXlOb2RlIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERlbGF5Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsYXlOb2RlKGNv
bnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKICAgICB9CkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICBBdWRpb1BhcmFtKiBkZWxheVRpbWUoKTsKIAogcHJpdmF0ZToKLSAgICBEZWxheU5v
ZGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgIERlbGF5Tm9kZShBdWRp
b0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIERlbGF5UHJvY2Vzc29yKiBkZWxh
eVByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PERlbGF5UHJvY2Vzc29yKj4ocHJvY2Vz
c29yKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQ
cm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3Bw
CmluZGV4IDVmZGM4ZGZjMmExYTU2MmY1OTY0NWVkNzljOGZjNWZhZmVhMmNkZTQuLjhlZDNlNDMz
N2UwOWYxMzAxN2ZjNmYzZjdlZjJmYmRjOGYyMzI2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoZG91YmxlIHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCitEZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9j
ZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICA6
IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpCiB7
CiAgICAgbV9kZWxheVRpbWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoImRlbGF5VGltZSIsIDAuMCwg
MC4wLCAxLjApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgKaW5kZXgg
NDg0NGM0YjI2ODFhZjgyOTg3OGRlOWU5ZjMxZThhYjFhMmVmODRkZC4uMTU0MjhjZTc1OTY4NWZi
ZjI4Yjg1YTA2MGQwY2VhMGIzYjMzMzRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vRGVsYXlQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEF1ZGlvRFNQS2VybmVsOwogICAg
IAogY2xhc3MgRGVsYXlQcm9jZXNzb3IgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Ig
ewogcHVibGljOgotICAgIERlbGF5UHJvY2Vzc29yKGRvdWJsZSBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBEZWxheVByb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICB2aXJ0dWFsIH5EZWxheVByb2Nlc3Nv
cigpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRl
S2VybmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuY3BwCmluZGV4IDZmZWIyOTYwOTE4Njg5YTY4YjcwM2YwODUyMzI3ZjRiMTQ1YjZk
MmYuLmVhOGI1ODkyMjM1NmFhMTM2NTEzMmFlZjMxZmFhZjYwM2Y3NDU0MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC0z
NSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRHluYW1pY3NDb21wcmVzc29y
Tm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJs
ZSBzYW1wbGVSYXRlKQorRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29y
Tm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRp
b05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBhZGRJbnB1dChhZG9wdFB0cihuZXcg
QXVkaW9Ob2RlSW5wdXQodGhpcykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAppbmRleCA3YWU3NWVhZDAyYjQ5NWQ3NmM0NjZhYWRhOTY0
YjAwZGI2ZGI0YmEwLi5kNzE4YWIzNDFjYzAxZTE4OGNmMjEzMDU2NzQ2NWYwNDhiZGEwNWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5o
CkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIER5bmFtaWNzQ29tcHJlc3NvcjsKICAgICAKIGNsYXNz
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEeW5h
bWljc0NvbXByZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKICAgICB9CkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCk7
CiAKIHByaXZhdGU6Ci0gICAgRHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQqLCBk
b3VibGUgc2FtcGxlUmF0ZSk7CisgICAgRHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRl
eHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIE93blB0cjxEeW5hbWljc0NvbXByZXNzb3I+
IG1fZHluYW1pY3NDb21wcmVzc29yOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
SGlnaFBhc3MyRmlsdGVyTm9kZS5jcHAKaW5kZXggMjc5NDZkZDk5ZmEzNDA5ZmNiYjVhNmRmNjYw
ODhmZGViYTUzNjYzOC4uNTIwNzg1ZjgwNjhmZDUyNWVjMmJiNWEyMmE3YjhmMDA4ZDFhZTA3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1IaWdoUGFzczJGaWx0
ZXJOb2RlOjpIaWdoUGFzczJGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91Ymxl
IHNhbXBsZVJhdGUpCitIaWdoUGFzczJGaWx0ZXJOb2RlOjpIaWdoUGFzczJGaWx0ZXJOb2RlKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgbV9wcm9jZXNzb3IgPSBh
ZG9wdFB0cihuZXcgQmlxdWFkUHJvY2Vzc29yKEJpcXVhZFByb2Nlc3Nvcjo6SGlnaFBhc3MsIHNh
bXBsZVJhdGUsIDEsIGZhbHNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9IaWdoUGFzczJGaWx0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9IaWdoUGFz
czJGaWx0ZXJOb2RlLmgKaW5kZXggYmUwYmViNmMyMzZkMmMyZmRhYzViZDBhYjNhYTMwOTQ5YmI3
ZmUxYS4uYmZkNzZhMGQ1ODRjMWE4ODVlYjlkMzUwOTkyOTk4ZmZlZTNjNWE2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuaApAQCAtMzQsNyArMzQs
NyBAQCBjbGFzcyBBdWRpb1BhcmFtOwogICAgIAogY2xhc3MgSGlnaFBhc3MyRmlsdGVyTm9kZSA6
IHB1YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SGlnaFBhc3MyRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4
dCwgZG91YmxlIHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SGlnaFBhc3MyRmls
dGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGlnaFBhc3MyRmlsdGVyTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCiAgICAgfQpAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgQXVkaW9QYXJhbSogcmVzb25hbmNlKCkgeyByZXR1cm4gYmlxdWFkUHJvY2Vzc29y
KCktPnBhcmFtZXRlcjIoKTsgfQogICAgIAogcHJpdmF0ZToKLSAgICBIaWdoUGFzczJGaWx0ZXJO
b2RlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBIaWdoUGFzczJGaWx0
ZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgQmlxdWFkUHJv
Y2Vzc29yKiBiaXF1YWRQcm9jZXNzb3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXF1YWRQcm9j
ZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCmluZGV4IDQ4NzI5OWI0NjAyZDdiYzZhZTFkZGM2MmU0
YjM1MjVmMTMzYTY1ZTcuLjA1ZTIxYjdhMzEwYTE1OGExODQ0OGE5NTVhMDMyOGEzNzE1NjI3NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3Bw
CkBAIC00MiwxMiArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBzaXplX3Qg
RGVmYXVsdEJ1ZmZlclNpemUgPSA0MDk2OwogCi1QYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05v
ZGU+IEphdmFTY3JpcHRBdWRpb05vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRv
dWJsZSBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKK1Bhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlv
Tm9kZT4gSmF2YVNjcmlwdEF1ZGlvTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBKYXZhU2NyaXB0QXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51
bWJlck9mSW5wdXRzLCBudW1iZXJPZk91dHB1dHMpKTsKIH0KIAotSmF2YVNjcmlwdEF1ZGlvTm9k
ZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1w
bGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0cykKK0phdmFTY3JpcHRBdWRpb05vZGU6OkphdmFTY3JpcHRBdWRp
b05vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9kb3VibGVC
dWZmZXJJbmRleCgwKQogICAgICwgbV9kb3VibGVCdWZmZXJJbmRleEZvckV2ZW50KDApCkBAIC05
Niw3ICs5Niw3IEBAIHZvaWQgSmF2YVNjcmlwdEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpCiAgICAg
aWYgKGlzSW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG91YmxlIHNhbXBs
ZVJhdGUgPSBjb250ZXh0KCktPnNhbXBsZVJhdGUoKTsKKyAgICBmbG9hdCBzYW1wbGVSYXRlID0g
Y29udGV4dCgpLT5zYW1wbGVSYXRlKCk7CiAKICAgICAvLyBDcmVhdGUgZG91YmxlIGJ1ZmZlcnMg
b24gYm90aCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzaWRlcy4KICAgICAvLyBUaGVzZSBBdWRpb0J1
ZmZlcnMgd2lsbCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBpbiB0aGUgbWFpbiB0aHJlYWQgYnkgSmF2
YVNjcmlwdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRB
dWRpb05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
aAppbmRleCBlOTlhMjVkMDA2NDhjNjI3M2U2ZGMyYWFhNWRmZTM2OTc2YmRlNzMxLi41YTI5OWM0
OTBjZmYzNTc1N2U1NDFkN2ZiNjA1YzFkYjY1ODQyNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICAvLyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBvbmF1ZGlvcHJv
Y2VzcyBldmVudCBoYW5kbGVyIGlzIGNhbGxlZCBhbmQgaG93IG1hbnkgc2FtcGxlLWZyYW1lcyBu
ZWVkIHRvIGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwuCiAgICAgLy8gTG93ZXIgbnVtYmVycyBmb3Ig
YnVmZmVyU2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxvd2VyIChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hl
ciBudW1iZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvIGJyZWFrdXAgYW5kIGds
aXRjaGVzLgogICAgIC8vIFRoZSB2YWx1ZSBjaG9zZW4gbXVzdCBjYXJlZnVsbHkgYmFsYW5jZSBi
ZXR3ZWVuIGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxpdHkuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SmF2YVNjcmlwdEF1ZGlvTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVS
YXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMgPSAxLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dHMgPSAxKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKYXZhU2Ny
aXB0QXVkaW9Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzID0gMSwgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRzID0gMSk7CiAKICAgICB2aXJ0dWFsIH5KYXZhU2NyaXB0QXVkaW9Ob2RlKCk7
CiAKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEF1ZGlvTm9kZTo6ZGVyZWY7
CiAgICAgCiBwcml2YXRlOgotICAgIEphdmFTY3JpcHRBdWRpb05vZGUoQXVkaW9Db250ZXh0Kiwg
ZG91YmxlIHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0cywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBKYXZhU2NyaXB0QXVkaW9Ob2Rl
KEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNp
Z25lZCBudW1iZXJPZklucHV0cywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKIAogICAgIHN0
YXRpYyB2b2lkIGZpcmVQcm9jZXNzRXZlbnREaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSk7CiAgICAg
dm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9Mb3dQYXNzMkZpbHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTG93
UGFzczJGaWx0ZXJOb2RlLmNwcAppbmRleCBhYzJkZTFmZjI0ZTYwM2JiOWY4NmUzY2JlYzU1MDI4
OTdkNzU2ZjliLi5lMmQ2NjlhY2QxOWVlMjk0ZDQwNGY2ODc3NjAzNGIwM2I5OWMyNTI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Mb3dQYXNzMkZpbHRlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Mb3dQYXNzMkZpbHRlck5vZGU6
Okxvd1Bhc3MyRmlsdGVyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVS
YXRlKQorTG93UGFzczJGaWx0ZXJOb2RlOjpMb3dQYXNzMkZpbHRlck5vZGUoQXVkaW9Db250ZXh0
KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBtX3Byb2Nlc3NvciA9IGFkb3B0UHRyKG5l
dyBCaXF1YWRQcm9jZXNzb3IoQmlxdWFkUHJvY2Vzc29yOjpMb3dQYXNzLCBzYW1wbGVSYXRlLCAx
LCBmYWxzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTG93UGFzczJG
aWx0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Mb3dQYXNzMkZpbHRlck5vZGUu
aAppbmRleCA0M2Q3MDUxM2QyN2RjMzBlOTQxODQ3YzE5YjNmMGQyODAwMmQ2NTIzLi4zMzQyYzZm
OTY0MzM0MjBmNDNjNmUxYTg4NjkwNzNmODBhNjJkZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9Mb3dQYXNzMkZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9Mb3dQYXNzMkZpbHRlck5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBBdWRp
b1BhcmFtOwogICAgIAogY2xhc3MgTG93UGFzczJGaWx0ZXJOb2RlIDogcHVibGljIEF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMb3dQYXNz
MkZpbHRlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVS
YXRlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvd1Bhc3MyRmlsdGVyTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTG93UGFzczJGaWx0ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsgICAgICAKICAgICB9CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFt
KiByZXNvbmFuY2UoKSB7IHJldHVybiBiaXF1YWRQcm9jZXNzb3IoKS0+cGFyYW1ldGVyMigpOyB9
CiAgICAgCiBwcml2YXRlOgotICAgIExvd1Bhc3MyRmlsdGVyTm9kZShBdWRpb0NvbnRleHQqLCBk
b3VibGUgc2FtcGxlUmF0ZSk7CisgICAgTG93UGFzczJGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCos
IGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgQmlxdWFkUHJvY2Vzc29yKiBiaXF1YWRQcm9jZXNz
b3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXF1YWRQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oCmluZGV4IDcxNGMxMjA1MTllMTkyODlkNjQwYjNiYmNjYmFkODUwNTdm
ZTU1NTcuLmM0ZDU2N2E1ZDI5ZGM1YTkwODRhNTUwN2MyNzczOWVhZTVjNWVjNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKTsKICAgICAKLSAgICBkb3VibGUg
c2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7
IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJUYXJnZXQt
PnNhbXBsZVJhdGUoKTsgfQogCiAgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwCmluZGV4
IDQ0OWM4NGFmZWY5NzFhMDVjYjIzNzJjY2YzMWM3YzNjMWE0MjIxZjAuLjhkNzRhNjdhODBhNzI3
NjdkNzhhMDZlZGQ4NmZhNzI3YjYzZGQ3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWFsdGltZUFuYWx5c2VyTm9kZTo6UmVhbHRpbWVBbmFseXNlck5v
ZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK1JlYWx0aW1lQW5h
bHlzZXJOb2RlOjpSZWFsdGltZUFuYWx5c2VyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsK
ICAgICBhZGRJbnB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlSW5wdXQodGhpcykpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oCmluZGV4IGQwMGE1
YjZmMDBhNmJhMjMxMWZjYTVkYmM4YWE5NTlhOGI3NmQwYTIuLjZjN2FkZDk1OTI0OGJkNzE2OWUw
MGJlMzJjYTdlYjI4M2YxYWQ5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlck5vZGUuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFJlYWx0aW1lQW5hbHlzZXJOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhbHRpbWVBbmFseXNlck5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJlYWx0aW1lQW5hbHlzZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBS
ZWFsdGltZUFuYWx5c2VyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCiAgICAgfQpA
QCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEo
VWludDhBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJy
YXkpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVhbHRpbWVBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0
KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgIFJlYWx0aW1lQW5hbHlzZXJOb2RlKEF1ZGlvQ29u
dGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgUmVhbHRpbWVBbmFseXNlciBtX2FuYWx5
c2VyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJE
U1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5l
bC5jcHAKaW5kZXggNDE2YjcyMjM0ZWFhNTRkYzc3ZGFhYjY3MmUyZTgyYmNiMzY2M2I4OS4uNWYz
Y2YzNDc2MjMwZWMwNDJiOTE1M2MxZTMzOGM1NzU3YTFiYTgzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAg
dm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZs
b2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV8KICAgICAgICAgY29uc3QgZmxvYXQgaW5wdXQgPSBzb3Vy
Y2VbaV07CiAKICAgICAgICAgLy8gQ2FsY3VsYXRlIGFuIGluZGV4IGJhc2VkIG9uIGlucHV0IC0x
IC0+ICsxIHdpdGggMCBiZWluZyBhdCB0aGUgY2VudGVyIG9mIHRoZSBjdXJ2ZSBkYXRhLgotICAg
ICAgICBpbnQgaW5kZXggPSBjdXJ2ZUxlbmd0aCAqIDAuNSAqIChpbnB1dCArIDEpOworICAgICAg
ICBpbnQgaW5kZXggPSAoY3VydmVMZW5ndGggKiAoaW5wdXQgKyAxKSkgLyAyOwogCiAgICAgICAg
IC8vIENsaXAgaW5kZXggdG8gdGhlIGlucHV0IHJhbmdlIG9mIHRoZSBjdXJ2ZS4KICAgICAgICAg
Ly8gVGhpcyB0YWtlcyBjYXJlIG9mIGlucHV0IG91dHNpZGUgb2Ygbm9taW5hbCByYW5nZSAtMSAt
PiArMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nl
c3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNw
cAppbmRleCBhYmQ1MjJjYTc5ZGRjODRiM2E0OTY0NDM5ZTlhMTQwNmU3MDRiY2VhLi5mNzU3MWRl
YmI3MTJjOTU0ZDJhZjlhNDhmNjY0MWE4MjM3NjYwZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1XYXZlU2hhcGVyUHJvY2Vzc29yOjpXYXZlU2hhcGVy
UHJvY2Vzc29yKGRvdWJsZSBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKK1dh
dmVTaGFwZXJQcm9jZXNzb3I6OldhdmVTaGFwZXJQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwg
c2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcihz
YW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCmluZGV4IDg2YTE4OGQzM2M1OTVhYmU0MzViYTIw
ZDIwNjZjODZiODJiZjRiZDMuLmViNjcyNjA2ZTQxM2E2MmE0ZTI1MWQ2ZjQ1MDQzNWZjNGM2ZDEz
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNz
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXYXZlU2hhcGVy
UHJvY2Vzc29yIDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKIHB1YmxpYzoKLSAg
ICBXYXZlU2hhcGVyUHJvY2Vzc29yKGRvdWJsZSBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZD
aGFubmVscyk7CisgICAgV2F2ZVNoYXBlclByb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5XYXZlU2hhcGVyUHJvY2Vzc29y
KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109823</attachid>
            <date>2011-10-05 11:01:45 -0700</date>
            <delta_ts>2011-10-05 12:45:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69292-20111005110143.patch</filename>
            <type>text/plain</type>
            <size>129373</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1NDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMzcxMTk2M2YwZDcwMmMy
ZWZhNDc3MGIzODY4MmEwYTBkZTk0YTFkLi4xZTUyNGIwN2ZhMWRmN2I1NTg2MDhjYTZhMWFlZGZm
MjAwMTIyNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjI4IEBACisyMDExLTEwLTA1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFdFQl9BVURJTyBkb2VzIG5v
dCBjb21waWxlIG9uIExlb3BhcmQgMzItYml0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHM7IGNvdmVyZWQgYnkgYWxsIGV4aXN0aW5n
IGF1ZGlvIHRlc3RzLgorCisgICAgICAgIFVzZSBvZiBmbG9hdCBhbmQgZG91YmxlIHdpdGhpbiB0
aGUgV0VCX0FVRElPIGltcGxlbWVudGF0aW9uIGhhdmUgYmVlbiBoYXJtb25pemVkLCB3aXRoIG1v
c3QKKyAgICAgICAgY2FsY3VsYXRpb25zIGRvbmUgdXNpbmcgZmxvYXRzLCB3aXRoIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoKSBhZGRlZCB3aGVuIG5lY2Vzc2FyeSB0bworICAgICAgICBuYXJyb3cg
ZG91YmxlIHJlc3VsdHMgZG93biB0byBmbG9hdHMsIGFuZCB3aXRoIGZsb2F0IGNvbnN0YW50cyBp
bml0aWFsaXplZCB3aXRoIGZsb2F0IHZhbHVlczoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6QXVkaW9CdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OnNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnNldFNhbXBsZVJhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0RTUEtlcm5lbDo6QXVkaW9EU1BLZXJuZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EU1BLZXJuZWw6OnNhbXBsZVJhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yOjpBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcik6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9GaWxlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUHJvY2Vzc29yOjpBdWRpb1Byb2Nlc3Nvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1Byb2Nlc3Nvcjo6c2FtcGxlUmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9VdGlsaXRpZXM6OmRlY2liZWxzVG9MaW5lYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9V
dGlsaXRpZXM6OmxpbmVhclRvRGVjaWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9VdGls
aXRpZXM6OmRpc2NyZXRlVGltZUNvbnN0YW50Rm9yU2FtcGxlUmF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVz
c29yOjpEeW5hbWljc0NvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21w
cmVzc29yOjppbml0aWFsaXplUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWlj
c0NvbXByZXNzb3I6OnBhcmFtZXRlclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNz
Q29tcHJlc3Nvcjo6c2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6RHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJl
c3Nvcjo6c2FtcGxlUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6
Om55cXVpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzYXR1cmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXF1YWxQb3dlclBhbm5lcjo6RXF1YWxQb3dlclBhbm5lcik6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpIUlRG
RGF0YWJhc2U6OnNhbXBsZVJhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmNy
ZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkhSVEZEYXRhYmFzZUxvYWRlcjo6SFJURkRhdGFiYXNlTG9hZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZE
YXRhYmFzZUxvYWRlcjo6ZGF0YWJhc2VTYW1wbGVSYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9IUlRGRWxldmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246
OmNhbGN1bGF0ZVN5bW1ldHJpY0tlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNhbGN1bGF0ZUtlcm5lbHNGb3JBemltdXRoRWxldmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5n
U2xpY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpzYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhSVEZFbGV2YXRpb246OkhSVEZFbGV2YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEF2ZXJhZ2VHcm91
cERlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6Y3JlYXRlSW50ZXJwb2xhdGVkS2VybmVsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpI
UlRGS2VybmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6ZnJhbWVE
ZWxheSk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpzYW1wbGVSYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6SFJU
RlBhbm5lcik6CisgICAgICAgIChXZWJDb3JlOjpIUlRGUGFubmVyOjpmZnRTaXplRm9yU2FtcGxl
UmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oOgorICAgICAgICAo
V2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
aHJvbWl1bS9BdWRpb0J1c0Nocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
Ojpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvQnVzTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVzdGluYXRpb25NYWMp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpzYW1wbGVSYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQnVzRnJv
bUluTWVtb3J5QXVkaW9GaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9G
aWxlUmVhZGVyTWFjLmg6CisgICAgICAgICogd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpEZWNv
ZGluZ1Rhc2spOgorICAgICAgICAqIHdlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRl
KToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmg6Cisg
ICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9CdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y3JlYXRl
RnJvbUF1ZGlvRmlsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OkF1ZGlv
QnVmZmVyKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0J1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdWZmZXI6OnNhbXBsZVJhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OkF1ZGlvQnVmZmVyU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpyZW5kZXJGcm9tQnVmZmVyKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsTWVyZ2VyOjpBdWRpb0NoYW5uZWxNZXJnZXIp
OgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9DaGFubmVsTWVyZ2VyOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1
ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbFNw
bGl0dGVyOjpBdWRpb0NoYW5uZWxTcGxpdHRlcik6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9D
aGFubmVsU3BsaXR0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZU9mZmxpbmVDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c2FtcGxlUmF0ZSk6Cisg
ICAgICAgICogd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAg
ICAgKiB3ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIHdlYmF1ZGlv
L0F1ZGlvR2Fpbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6QXVk
aW9HYWluTm9kZSk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9B
dWRpb0xpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OkF1ZGlv
TGlzdGVuZXIpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvTGlzdGVuZXI6OnNldE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
TGlzdGVuZXI6OnNldFZlbG9jaXR5KToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpBdWRpb05vZGUpOgorICAgICAgICAqIHdl
YmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpzYW1wbGVS
YXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpBdWRpb1Bhbm5lck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9uKToKKyAgICAgICAgKiB3
ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVy
Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb1BhcmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
UGFyYW06OnNtb290aGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6c21v
b3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OmNhbGN1bGF0ZVNhbXBsZUFjY3Vy
YXRlVmFsdWVzKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRUaW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVUb1NhbXBsZUZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVzRm9yVGltZVJhbmdlSW1wbCk6CisgICAgICAg
ICogd2ViYXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nv
dXJjZU5vZGU6OkF1ZGlvU291cmNlTm9kZSk6CisgICAgICAgICogd2ViYXVkaW8vQmlxdWFkRmls
dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRG
aWx0ZXJOb2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1
ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNz
b3I6OkJpcXVhZFByb2Nlc3Nvcik6CisgICAgICAgICogd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29y
Lmg6CisgICAgICAgICogd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2RlOjpjcmVhdGUp
OgorICAgICAgICAqIHdlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmluaXRpYWxpemUp
OgorICAgICAgICAqIHdlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzYW1wbGVSYXRlKToK
KyAgICAgICAgKiB3ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxheURTUEtlcm5lbDo6RGVsYXlEU1BLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6RGVs
YXlEU1BLZXJuZWw6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL0RlbGF5RFNQS2VybmVs
Lmg6CisgICAgICAgICogd2ViYXVkaW8vRGVsYXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9EZWxheU5vZGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRp
by9EZWxheVByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheVByb2Nlc3Nvcjo6
RGVsYXlQcm9jZXNzb3IpOgorICAgICAgICAqIHdlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmg6Cisg
ICAgICAgICogd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKToK
KyAgICAgICAgKiB3ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1
ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlnaFBhc3My
RmlsdGVyTm9kZTo6SGlnaFBhc3MyRmlsdGVyTm9kZSk6CisgICAgICAgICogd2ViYXVkaW8vSGln
aFBhc3MyRmlsdGVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6SGlnaFBhc3MyRmlsdGVyTm9k
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRBdWRpb05vZGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRBdWRpb05vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIHdlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9M
b3dQYXNzMkZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG93UGFzczJGaWx0ZXJO
b2RlOjpMb3dQYXNzMkZpbHRlck5vZGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0xvd1Bhc3MyRmls
dGVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6TG93UGFzczJGaWx0ZXJOb2RlOjpjcmVhdGUp
OgorICAgICAgICAqIHdlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzYW1wbGVSYXRlKToK
KyAgICAgICAgKiB3ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyTm9kZTo6UmVhbHRpbWVBbmFseXNlck5vZGUpOgorICAg
ICAgICAqIHdlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZUFuYWx5c2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9XYXZl
U2hhcGVyRFNQS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJu
ZWw6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6V2F2ZVNoYXBlclByb2Nl
c3Nvcik6CisgICAgICAgICogd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oOgorCisKIDIw
MTEtMTAtMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk2NTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9CdXMuY3BwCmluZGV4IGUzNGY3ZGJkNWU3MGMyNWNjZGM3NTMxMWE4OTI3NTMzNzk3
Yjc3ZWIuLmFkMjlhZjFhYWQyMzcyMzcwOTFmNTU5MzYyMjdiOTMxZmU5OTljYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKQEAgLTQ4LDkgKzQ4LDkgQEAg
dXNpbmcgbmFtZXNwYWNlIFZlY3Rvck1hdGg7CiAgICAgCiBBdWRpb0J1czo6QXVkaW9CdXModW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGxlbmd0aCwgYm9vbCBhbGxvY2F0ZSkKICAg
ICA6IG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAsIG1fYnVzR2FpbigxLjApCisgICAgLCBtX2J1c0dh
aW4oMSkKICAgICAsIG1faXNGaXJzdFRpbWUodHJ1ZSkKLSAgICAsIG1fc2FtcGxlUmF0ZSgwLjAp
CisgICAgLCBtX3NhbXBsZVJhdGUoMCkKIHsKICAgICBtX2NoYW5uZWxzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobnVtYmVyT2ZDaGFubmVscyk7CiAKQEAgLTQ2Niw3ICs0NjYsNyBAQCBQYXNzT3du
UHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlNaXhpbmdUb01vbm8oQXVkaW9CdXMqIHNv
dXJjZUJ1cykKICAgICAgICAgCiAgICAgICAgICAgICAvLyBEbyB0aGUgbW9ubyBtaXhkb3duLgog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG47ICsraSkKLSAgICAgICAgICAg
ICAgICBkZXN0aW5hdGlvbltpXSA9IDAuNSAqIChzb3VyY2VMW2ldICsgc291cmNlUltpXSk7Cisg
ICAgICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSAoc291cmNlTFtpXSArIHNvdXJjZVJbaV0p
IC8gMjsKIAogICAgICAgICAgICAgZGVzdGluYXRpb25CdXMtPnNldFNhbXBsZVJhdGUoc291cmNl
QnVzLT5zYW1wbGVSYXRlKCkpOyAgICAKICAgICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbkJ1
cy5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRl
eCBhODdmNTVkMzEzMmVjM2E5NTZlMmU5NDZmYjY0ZjFhMDQ1NzkxZTc1Li41M2ZiNGI5Njk3NzNj
ZGE0NWEwMzMwYTVkODVmMTkwMTFjMmM0ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQnVzLmgKQEAgLTc2LDggKzc2LDggQEAgcHVibGljOgogICAgIHNpemVfdCBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogCiAgICAgLy8gU2FtcGxlLXJhdGUgOiAw
LjAgaWYgdW5rbm93biBvciAiZG9uJ3QgY2FyZSIKLSAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQotICAgIHZvaWQgc2V0U2FtcGxlUmF0ZShkb3Vi
bGUgc2FtcGxlUmF0ZSkgeyBtX3NhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOyB9CisgICAgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIHZvaWQgc2V0
U2FtcGxlUmF0ZShmbG9hdCBzYW1wbGVSYXRlKSB7IG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7
IH0KIAogICAgIC8vIFplcm9lcyBhbGwgY2hhbm5lbHMuCiAgICAgdm9pZCB6ZXJvKCk7CkBAIC0x
MzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIC8vIE1ha2VzIG1heGltdW0gYWJzb2x1dGUgdmFs
dWUgPT0gMS4wIChpZiBwb3NzaWJsZSkuCiAgICAgdm9pZCBub3JtYWxpemUoKTsKIAotICAgIHN0
YXRpYyBQYXNzT3duUHRyPEF1ZGlvQnVzPiBsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFy
KiBuYW1lLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9C
dXM+IGxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGZsb2F0IHNhbXBsZVJh
dGUpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQXVkaW9CdXMoKSB7IH07CkBAIC0xNDksNyArMTQ5LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgZG91YmxlIG1fYnVzR2FpbjsKICAgICBib29sIG1faXNGaXJz
dFRpbWU7Ci0gICAgZG91YmxlIG1fc2FtcGxlUmF0ZTsgLy8gMC4wIGlmIHVua25vd24gb3IgTi9B
CisgICAgZmxvYXQgbV9zYW1wbGVSYXRlOyAvLyAwLjAgaWYgdW5rbm93biBvciBOL0EKIH07CiAK
IH0gLy8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9EU1BLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQ
S2VybmVsLmgKaW5kZXggZDA3MTljNTY1OTcyN2E0ZTZkNjUwNjk4NmQ0Y2U3ZjFjOTJmZmIyNy4u
ZjMzYzllZGU0ZDNjMGExMzYzNjMyZTVjMDg0ZWQwZWJkYWI1MjJjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbC5oCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgQXVkaW9EU1BLZXJuZWwoZG91YmxlIHNhbXBs
ZVJhdGUpCisgICAgQXVkaW9EU1BLZXJuZWwoZmxvYXQgc2FtcGxlUmF0ZSkKICAgICAgICAgOiBt
X2tlcm5lbFByb2Nlc3NvcigwKQogICAgICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQog
ICAgIHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpID0gMDsKIAotICAgIGRvdWJs
ZSBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgIGRvdWJsZSBu
eXF1aXN0KCkgY29uc3QgeyByZXR1cm4gMC41ICogc2FtcGxlUmF0ZSgpOyB9CiAKICAgICBBdWRp
b0RTUEtlcm5lbFByb2Nlc3NvciogcHJvY2Vzc29yKCkgeyByZXR1cm4gbV9rZXJuZWxQcm9jZXNz
b3I7IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IqIG1fa2VybmVsUHJvY2Vzc29yOwotICAgIGRvdWJsZSBtX3NhbXBs
ZVJhdGU7CisgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BL
ZXJuZWxQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IuY3BwCmluZGV4IGM5MDE2MTljMzgwMTk0YmExZTVlY2VjNzU0ZDZk
ZmUxMGMzZGU4YjEuLmJjNzdiYWU0ZjRjOTEzNGY0NTdmZTY0MmMyYzc4NGFkMmRiN2VjMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJv
Y2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtl
cm5lbFByb2Nlc3Nvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogLy8gc2V0TnVtYmVyT2ZDaGFubmVscygpIG1heSBsYXRlciBiZSBjYWxsZWQgaWYgdGhlIG9i
amVjdCBpcyBub3QgeWV0IGluIGFuICJpbml0aWFsaXplZCIgc3RhdGUuCi1BdWRpb0RTUEtlcm5l
bFByb2Nlc3Nvcjo6QXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IoZG91YmxlIHNhbXBsZVJhdGUsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCitBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcjo6QXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscykKICAgICA6IEF1ZGlvUHJvY2Vzc29yKHNhbXBsZVJhdGUpCiAgICAgLCBtX251bWJlck9m
Q2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1faGFzSnVzdFJlc2V0KHRydWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFBy
b2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQ
cm9jZXNzb3IuaAppbmRleCBlODdhODEwMjZhOWQ0Y2FjMmE4ZTNlMzM2ZjQ1ZGVhODNlZWQ2Nzdh
Li40MGI1YWI4ZDY3MzgzZTJkYzg5N2NmNzUzZjY0OWMxYzAwMzdiM2IwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29y
LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgQXVkaW9Qcm9jZXNzb3I7CiBjbGFzcyBBdWRpb0RT
UEtlcm5lbFByb2Nlc3NvciA6IHB1YmxpYyBBdWRpb1Byb2Nlc3NvciB7CiBwdWJsaWM6CiAgICAg
Ly8gbnVtYmVyT2ZDaGFubmVscyBtYXkgYmUgbGF0ZXIgY2hhbmdlZCBpZiBvYmplY3QgaXMgbm90
IHlldCBpbiBhbiAiaW5pdGlhbGl6ZWQiIHN0YXRlCi0gICAgQXVkaW9EU1BLZXJuZWxQcm9jZXNz
b3IoZG91YmxlIHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOworICAgIEF1
ZGlvRFNQS2VybmVsUHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMpOwogCiAgICAgLy8gU3ViY2xhc3NlcyBjcmVhdGUgdGhlIGFwcHJvcHJpYXRlIHR5
cGUgb2YgcHJvY2Vzc2luZyBrZXJuZWwgaGVyZS4KICAgICAvLyBXZSdsbCBjYWxsIHRoaXMgdG8g
Y3JlYXRlIGEga2VybmVsIGZvciBlYWNoIGNoYW5uZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKaW5kZXggOTQ5ODExMDM3MTM5OGYwYjU1
YmRlODk3MTZkODUwZjM4YThkZTY4Ny4uNzU4ODJjMGE2MzVmZjNmODc3NGM1MjljNzQwNGYxZGVk
MWQ1M2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVz
dGluYXRpb24uaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBBdWRpb1NvdXJjZVByb3ZpZGVyOwog
CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoQXVkaW9Tb3VyY2VQcm92aWRlciYsIGRvdWJsZSBz
YW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVh
dGUoQXVkaW9Tb3VyY2VQcm92aWRlciYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmlydHVh
bCB+QXVkaW9EZXN0aW5hdGlvbigpIHsgfQogCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nKCkgPSAwOwogCiAgICAgLy8gU2FtcGxlLXJhdGUgY29u
dmVyc2lvbiBtYXkgaGFwcGVuIGluIEF1ZGlvRGVzdGluYXRpb24gdG8gdGhlIGhhcmR3YXJlIHNh
bXBsZS1yYXRlCi0gICAgdmlydHVhbCBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0ID0gMDsKLSAg
ICBzdGF0aWMgZG91YmxlIGhhcmR3YXJlU2FtcGxlUmF0ZSgpOworICAgIHZpcnR1YWwgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0ID0gMDsKKyAgICBzdGF0aWMgZmxvYXQgaGFyZHdhcmVTYW1wbGVS
YXRlKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRmlsZVJlYWRlci5oCmluZGV4IDNjMDI0OTA3YTFiYzFmYjc1
M2Y4NGZmYzg1NGIwYTg4YjU1ZjJhZGYuLjBjOGRjNmU0OTkzYmRkZDAzZGU0YWU5N2IxMjU2ZmI2
ZGQ0MDUzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
RmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRmls
ZVJlYWRlci5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIEF1ZGlvQnVzOwogLy8gc2FtcGxlUmF0
ZSB3aWxsIGJlIG1hZGUgKGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBtYXRjaCB0aGUgZmlsZSdzIHNh
bXBsZS1yYXRlKS4KIC8vIFRoZSBjcmVhdGVkIGJ1ZmZlciB3aWxsIGhhdmUgaXRzIHNhbXBsZS1y
YXRlIHNldCBjb3JyZWN0bHkgdG8gdGhlIHJlc3VsdC4KIAotUGFzc093blB0cjxBdWRpb0J1cz4g
Y3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBk
YXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBzYW1wbGVSYXRlKTsKK1Bhc3NPd25QdHI8
QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21Jbk1lbW9yeUF1ZGlvRmlsZShjb25zdCB2b2lkKiBkYXRh
LCBzaXplX3QgZGF0YVNpemUsIGJvb2wgbWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAot
UGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBm
aWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBzYW1wbGVSYXRlKTsKK1Bhc3NPd25QdHI8
QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUoY29uc3QgY2hhciogZmlsZVBhdGgsIGJv
b2wgbWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAvLyBNYXkgcGFzcyBpbiAwLjAgZm9yIHNhbXBsZVJhdGUgaW4gd2hpY2ggY2Fz
ZSBpdCB3aWxsIHVzZSB0aGUgQXVkaW9CdXMncyBzYW1wbGVSYXRlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogdm9pZCB3cml0ZUJ1c1RvQXVkaW9GaWxlKEF1ZGlvQnVzKiBidXMsIGNv
bnN0IGNoYXIqIGZpbGVQYXRoLCBkb3VibGUgZmlsZVNhbXBsZVJhdGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHJvY2Vzc29yLmgKaW5kZXggNjliYTQwZjgwNGE4
NjU2Zjk0ODFiZWFkZTRmYmQ0YWJkMTljYTE4Ni4uMmQ3YjYwYTdjZTYwZWIwNjY1ZTJkMjg4ZmJj
OTQ5NjY2ZmZkY2JjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9Qcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Byb2Nlc3Nvci5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEF1ZGlvQnVzOwogCiBjbGFzcyBB
dWRpb1Byb2Nlc3NvciB7CiBwdWJsaWM6Ci0gICAgQXVkaW9Qcm9jZXNzb3IoZG91YmxlIHNhbXBs
ZVJhdGUpCisgICAgQXVkaW9Qcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSkKICAgICAgICAgOiBt
X2luaXRpYWxpemVkKGZhbHNlKQogICAgICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQog
ICAgIHsKQEAgLTYzLDExICs2MywxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSW5pdGlhbGl6
ZWQoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkOyB9CiAKLSAgICBkb3VibGUgc2FtcGxl
UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIGZsb2F0IHNhbXBsZVJh
dGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KIAogcHJvdGVjdGVkOgogICAgIGJv
b2wgbV9pbml0aWFsaXplZDsKLSAgICBkb3VibGUgbV9zYW1wbGVSYXRlOworICAgIGZsb2F0IG1f
c2FtcGxlUmF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmNwcAppbmRleCA3YTRiMzJlNTkx
ODkzMDFmZDE4YmExOGU5ZDk3ZWEwMTYwM2I5Y2RlLi4xYTAyYjdlMTBkZjIwNTBjN2ZhYjE1OWYx
NmRiN2M3ZDBmNDFhZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9VdGlsaXRpZXMuY3BwCkBAIC0zMywyNyArMzMsMjcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBuYW1lc3BhY2UgQXVkaW9VdGlsaXRpZXMgewogCi1kb3VibGUgZGVjaWJlbHNUb0xpbmVh
cihkb3VibGUgZGVjaWJlbHMpCitmbG9hdCBkZWNpYmVsc1RvTGluZWFyKGZsb2F0IGRlY2liZWxz
KQogewotICAgIHJldHVybiBwb3coMTAuMCwgMC4wNSAqIGRlY2liZWxzKTsKKyAgICByZXR1cm4g
cG93ZigxMCwgMC4wNWYgKiBkZWNpYmVscyk7CiB9CiAKLWRvdWJsZSBsaW5lYXJUb0RlY2liZWxz
KGRvdWJsZSBsaW5lYXIpCitmbG9hdCBsaW5lYXJUb0RlY2liZWxzKGZsb2F0IGxpbmVhcikKIHsK
ICAgICAvLyBJdCdzIG5vdCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgZGVjaWJlbHMgZm9yIGEgemVy
byBsaW5lYXIgdmFsdWUgc2luY2UgaXQgd291bGQgYmUgLUluZi4KICAgICAvLyAtMTAwMC4wIGRC
IHJlcHJlc2VudHMgYSB2ZXJ5IHRpbnkgbGluZWFyIHZhbHVlIGluIGNhc2Ugd2UgZXZlciByZWFj
aCB0aGlzIGNhc2UuCiAgICAgQVNTRVJUKGxpbmVhcik7CiAgICAgaWYgKCFsaW5lYXIpCi0gICAg
ICAgIHJldHVybiAtMTAwMC4wOworICAgICAgICByZXR1cm4gLTEwMDA7CiAgICAgICAgIAotICAg
IHJldHVybiAyMC4wICogbG9nMTAobGluZWFyKTsKKyAgICByZXR1cm4gMjAgKiBsb2cxMGYobGlu
ZWFyKTsKIH0KIAotZG91YmxlIGRpc2NyZXRlVGltZUNvbnN0YW50Rm9yU2FtcGxlUmF0ZShkb3Vi
bGUgdGltZUNvbnN0YW50LCBkb3VibGUgc2FtcGxlUmF0ZSkKK2Zsb2F0IGRpc2NyZXRlVGltZUNv
bnN0YW50Rm9yU2FtcGxlUmF0ZShmbG9hdCB0aW1lQ29uc3RhbnQsIGZsb2F0IHNhbXBsZVJhdGUp
CiB7CiAgICAgLy8gaGFyZGNvZGVkIHZhbHVlIGlzIHRlbXBvcmFyeSBidWlsZCBmaXggZm9yIFdp
bmRvd3MuCiAgICAgLy8gRklYTUU6IHJlcGxhY2UgaGFyZGNvZGUgMi43MTgyODIgd2l0aCBNX0Ug
dW50aWwgdGhlIGNvcnJlY3QgTWF0aEV4dHJhcy5oIHNvbHV0aW9uIGlzIGRldGVybWluZWQuCi0g
ICAgcmV0dXJuIDEuMCAtIHBvdygxLjAgLyAyLjcxODI4MiwgMS4wIC8gKHNhbXBsZVJhdGUgKiB0
aW1lQ29uc3RhbnQpKTsKKyAgICByZXR1cm4gMSAtIHBvd2YoMSAvIDIuNzE4MjgyZiwgMSAvIChz
YW1wbGVSYXRlICogdGltZUNvbnN0YW50KSk7CiB9CiAgICAgCiB9IC8vIEF1ZGlvVXRpbGl0ZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5oCmluZGV4
IDdjZjQ0Y2VmMmI0ZDNhZDIyZDg0YTAyNDNiYmQxNzRlNjRjNWQyMjcuLmM5OGE0YzhkZThiZjEx
ZmZiMjAzZjVlNjVmYTFlZjA2MmIwM2JmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuaApAQCAtMzAsMTMgKzMwLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBBdWRpb1V0aWxpdGllcyB7CiAKIC8vIFN0YW5kYXJkIGZ1bmN0
aW9ucyBmb3IgY29udmVydGluZyB0byBhbmQgZnJvbSBkZWNpYmVsIHZhbHVlcyBmcm9tIGxpbmVh
ci4KLWRvdWJsZSBsaW5lYXJUb0RlY2liZWxzKGRvdWJsZSk7Ci1kb3VibGUgZGVjaWJlbHNUb0xp
bmVhcihkb3VibGUpOworZmxvYXQgbGluZWFyVG9EZWNpYmVscyhmbG9hdCk7CitmbG9hdCBkZWNp
YmVsc1RvTGluZWFyKGZsb2F0KTsKIAogLy8gdGltZUNvbnN0YW50IGlzIHRoZSB0aW1lIGl0IHRh
a2VzIGEgZmlyc3Qtb3JkZXIgbGluZWFyIHRpbWUtaW52YXJpYW50IHN5c3RlbQogLy8gdG8gcmVh
Y2ggdGhlIHZhbHVlIDEgLSAxL2UgKGFyb3VuZCA2My4yJSkgZ2l2ZW4gYSBzdGVwIGlucHV0IHJl
c3BvbnNlLgogLy8gZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRlKCkgd2lsbCByZXR1
cm4gdGhlIGRpc2NyZXRlIHRpbWUtY29uc3RhbnQgZm9yIHRoZSBzcGVjaWZpYyBzYW1wbGVSYXRl
LgotZG91YmxlIGRpc2NyZXRlVGltZUNvbnN0YW50Rm9yU2FtcGxlUmF0ZShkb3VibGUgdGltZUNv
bnN0YW50LCBkb3VibGUgc2FtcGxlUmF0ZSk7CitmbG9hdCBkaXNjcmV0ZVRpbWVDb25zdGFudEZv
clNhbXBsZVJhdGUoZmxvYXQgdGltZUNvbnN0YW50LCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICAK
IH0gLy8gQXVkaW9VdGlsaXRlcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAppbmRleCAxNWVlYzlmNDBhYWY2ZDAyMjFhYTVl
NmIzMTE1NTJlODU4ZDcxYzM2Li5jNDc5NWY0ZjgxZWJmYzhlZDliZjc2YTU5ODQxNGU3ODk5ZDgy
ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgQXVkaW9VdGlsaXRpZXM7CiAgICAgCi1EeW5hbWljc0NvbXByZXNzb3I6
OkR5bmFtaWNzQ29tcHJlc3Nvcihib29sIGlzU3RlcmVvLCBkb3VibGUgc2FtcGxlUmF0ZSkKK0R5
bmFtaWNzQ29tcHJlc3Nvcjo6RHluYW1pY3NDb21wcmVzc29yKGJvb2wgaXNTdGVyZW8sIGZsb2F0
IHNhbXBsZVJhdGUpCiAgICAgOiBtX2lzU3RlcmVvKGlzU3RlcmVvKQogICAgICwgbV9zYW1wbGVS
YXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX2NvbXByZXNzb3Ioc2FtcGxlUmF0ZSkKQEAgLTU5LDE3
ICs1OSwxNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZVBhcmFtZXRlcnMo
KQogICAgIAogICAgIG1fcGFyYW1ldGVyc1tQYXJhbVRocmVzaG9sZF0gPSAtMjQ7IC8vIGRCCiAg
ICAgbV9wYXJhbWV0ZXJzW1BhcmFtSGVhZHJvb21dID0gMjE7IC8vIGRCCi0gICAgbV9wYXJhbWV0
ZXJzW1BhcmFtQXR0YWNrXSA9IDAuMDAzOyAvLyBzZWNvbmRzCi0gICAgbV9wYXJhbWV0ZXJzW1Bh
cmFtUmVsZWFzZV0gPSAwLjI1MDsgLy8gc2Vjb25kcwotICAgIG1fcGFyYW1ldGVyc1tQYXJhbVBy
ZURlbGF5XSA9IDAuMDA2OyAvLyBzZWNvbmRzCisgICAgbV9wYXJhbWV0ZXJzW1BhcmFtQXR0YWNr
XSA9IDAuMDAzZjsgLy8gc2Vjb25kcworICAgIG1fcGFyYW1ldGVyc1tQYXJhbVJlbGVhc2VdID0g
MC4yNTBmOyAvLyBzZWNvbmRzCisgICAgbV9wYXJhbWV0ZXJzW1BhcmFtUHJlRGVsYXldID0gMC4w
MDZmOyAvLyBzZWNvbmRzCiAKICAgICAvLyBSZWxlYXNlIHpvbmUgdmFsdWVzIDAgLT4gMS4KLSAg
ICBtX3BhcmFtZXRlcnNbUGFyYW1SZWxlYXNlWm9uZTFdID0gMC4wOTsKLSAgICBtX3BhcmFtZXRl
cnNbUGFyYW1SZWxlYXNlWm9uZTJdID0gMC4xNjsKLSAgICBtX3BhcmFtZXRlcnNbUGFyYW1SZWxl
YXNlWm9uZTNdID0gMC40MjsKLSAgICBtX3BhcmFtZXRlcnNbUGFyYW1SZWxlYXNlWm9uZTRdID0g
MC45ODsKKyAgICBtX3BhcmFtZXRlcnNbUGFyYW1SZWxlYXNlWm9uZTFdID0gMC4wOWY7CisgICAg
bV9wYXJhbWV0ZXJzW1BhcmFtUmVsZWFzZVpvbmUyXSA9IDAuMTZmOworICAgIG1fcGFyYW1ldGVy
c1tQYXJhbVJlbGVhc2Vab25lM10gPSAwLjQyZjsKKyAgICBtX3BhcmFtZXRlcnNbUGFyYW1SZWxl
YXNlWm9uZTRdID0gMC45OGY7CiAKLSAgICBtX3BhcmFtZXRlcnNbUGFyYW1GaWx0ZXJTdGFnZUdh
aW5dID0gNC40OyAvLyBkQgorICAgIG1fcGFyYW1ldGVyc1tQYXJhbUZpbHRlclN0YWdlR2Fpbl0g
PSA0LjRmOyAvLyBkQgogICAgIG1fcGFyYW1ldGVyc1tQYXJhbUZpbHRlclN0YWdlUmF0aW9dID0g
MjsKICAgICBtX3BhcmFtZXRlcnNbUGFyYW1GaWx0ZXJBbmNob3JdID0gMTUwMDAgLyBueXF1aXN0
KCk7CiAgICAgCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjppbml0
aWFsaXplUGFyYW1ldGVycygpCiAgICAgbV9wYXJhbWV0ZXJzW1BhcmFtRWZmZWN0QmxlbmRdID0g
MTsKIH0KIAotZG91YmxlIER5bmFtaWNzQ29tcHJlc3Nvcjo6cGFyYW1ldGVyVmFsdWUodW5zaWdu
ZWQgcGFyYW1ldGVySUQpCitmbG9hdCBEeW5hbWljc0NvbXByZXNzb3I6OnBhcmFtZXRlclZhbHVl
KHVuc2lnbmVkIHBhcmFtZXRlcklEKQogewogICAgIEFTU0VSVChwYXJhbWV0ZXJJRCA8IFBhcmFt
TGFzdCk7CiAgICAgcmV0dXJuIG1fcGFyYW1ldGVyc1twYXJhbWV0ZXJJRF07CkBAIC05MCw4ICs5
MCw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVy
cyh1bnNpZ25lZCBzdGFnZUluZGV4LCBmbG9hdCBnCiAgICAgZmxvYXQgZ2sgPSAxIC0gZ2FpbiAv
IDIwOwogICAgIGZsb2F0IGYxID0gbm9ybWFsaXplZEZyZXF1ZW5jeSAqIGdrOwogICAgIGZsb2F0
IGYyID0gbm9ybWFsaXplZEZyZXF1ZW5jeSAvIGdrOwotICAgIGZsb2F0IHIxID0gZXhwKC1mMSAq
IHBpRG91YmxlKTsKLSAgICBmbG9hdCByMiA9IGV4cCgtZjIgKiBwaURvdWJsZSk7CisgICAgZmxv
YXQgcjEgPSBleHBmKC1mMSAqIHBpRmxvYXQpOworICAgIGZsb2F0IHIyID0gZXhwZigtZjIgKiBw
aUZsb2F0KTsKIAogICAgIC8vIFNldCBwcmUtZmlsdGVyIHplcm8gYW5kIHBvbGUgdG8gY3JlYXRl
IGFuIGVtcGhhc2lzIGZpbHRlci4KICAgICBtX3ByZUZpbHRlcltzdGFnZUluZGV4XS5zZXRaZXJv
KHIxKTsKQEAgLTE3MCwxMCArMTcwLDEwIEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpwcm9j
ZXNzKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywKICAgICAv
LyAxIG1peGVzIGluIG9ubHkgdGhlIGNvbXByZXNzZWQgc2lnbmFsLgogICAgIGZsb2F0IGVmZmVj
dEJsZW5kID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1FZmZlY3RCbGVuZCk7CiAKLSAgICBkb3VibGUg
cmVsZWFzZVpvbmUxID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1SZWxlYXNlWm9uZTEpOwotICAgIGRv
dWJsZSByZWxlYXNlWm9uZTIgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJlbGVhc2Vab25lMik7Ci0g
ICAgZG91YmxlIHJlbGVhc2Vab25lMyA9IHBhcmFtZXRlclZhbHVlKFBhcmFtUmVsZWFzZVpvbmUz
KTsKLSAgICBkb3VibGUgcmVsZWFzZVpvbmU0ID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1SZWxlYXNl
Wm9uZTQpOworICAgIGZsb2F0IHJlbGVhc2Vab25lMSA9IHBhcmFtZXRlclZhbHVlKFBhcmFtUmVs
ZWFzZVpvbmUxKTsKKyAgICBmbG9hdCByZWxlYXNlWm9uZTIgPSBwYXJhbWV0ZXJWYWx1ZShQYXJh
bVJlbGVhc2Vab25lMik7CisgICAgZmxvYXQgcmVsZWFzZVpvbmUzID0gcGFyYW1ldGVyVmFsdWUo
UGFyYW1SZWxlYXNlWm9uZTMpOworICAgIGZsb2F0IHJlbGVhc2Vab25lNCA9IHBhcmFtZXRlclZh
bHVlKFBhcmFtUmVsZWFzZVpvbmU0KTsKIAogICAgIC8vIEFwcGx5IGNvbXByZXNzaW9uIHRvIHRo
ZSBwcmUtZmlsdGVyZWQgc2lnbmFsLgogICAgIC8vIFRoZSBwcm9jZXNzaW5nIGlzIHBlcmZvcm1l
ZCBpbiBwbGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yLmgKaW5kZXggZDBjMDM2ZjI5YWVlYzQxNzZjYzU0M2NjOGMxNWQyMWI4NDE5
NTBhZi4uMjE1Mjk1MTJkZWYxOTA0NjZjZWNhODVjYTgxYzNkODc2ZWIwMGZhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAg
LTYyLDI2ICs2MiwyNiBAQCBwdWJsaWM6CiAgICAgICAgIFBhcmFtTGFzdAogICAgIH07CiAKLSAg
ICBEeW5hbWljc0NvbXByZXNzb3IoYm9vbCBpc1N0ZXJlbywgZG91YmxlIHNhbXBsZVJhdGUpOwor
ICAgIER5bmFtaWNzQ29tcHJlc3Nvcihib29sIGlzU3RlcmVvLCBmbG9hdCBzYW1wbGVSYXRlKTsK
IAogICAgIHZvaWQgcHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGlu
YXRpb25CdXMsIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgdm9pZCByZXNldCgpOwog
Ci0gICAgZG91YmxlIHBhcmFtZXRlclZhbHVlKHVuc2lnbmVkIHBhcmFtZXRlcklEKTsKKyAgICBm
bG9hdCBwYXJhbWV0ZXJWYWx1ZSh1bnNpZ25lZCBwYXJhbWV0ZXJJRCk7CiAKICAgICBib29sIGlz
U3RlcmVvKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0ZXJlbzsgfQotICAgIGRvdWJsZSBzYW1wbGVS
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0gICAgZG91YmxlIG55cXVpc3Qo
KSBjb25zdCB7IHJldHVybiAwLjUgKiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1wbGVS
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgZmxvYXQgbnlxdWlzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZSAvIDI7IH0KIAogcHJvdGVjdGVkOgogICAgIC8v
IG1fcGFyYW1ldGVycyBob2xkcyB0aGUgdHdlYWthYmxlIGNvbXByZXNzb3IgcGFyYW1ldGVycy4K
ICAgICAvLyBGSVhNRTogZXhwb3NlIHNvbWUgb2YgdGhlIG1vc3QgaW1wb3J0YW50IG9uZXMgKHN1
Y2ggYXMgdGhyZXNob2xkLCBhdHRhY2ssIHJlbGVhc2UpCiAgICAgLy8gYXMgRHluYW1pY3NDb21w
cmVzc29yTm9kZSBhdHRyaWJ1dGVzLgotICAgIGRvdWJsZSBtX3BhcmFtZXRlcnNbUGFyYW1MYXN0
XTsKKyAgICBmbG9hdCBtX3BhcmFtZXRlcnNbUGFyYW1MYXN0XTsKICAgICB2b2lkIGluaXRpYWxp
emVQYXJhbWV0ZXJzKCk7CiAKICAgICBib29sIG1faXNTdGVyZW87Ci0gICAgZG91YmxlIG1fc2Ft
cGxlUmF0ZTsKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAKICAgICAvLyBFbXBoYXNpcyBmaWx0
ZXIgY29udHJvbHMuCiAgICAgZmxvYXQgbV9sYXN0RmlsdGVyU3RhZ2VSYXRpbzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5l
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWwuY3BwCmluZGV4IGEwNzIzNDYxYmIyMWM1M2NhNzE2ZmQ2ZmU3YjZjNTdkNDg3YzNiYmYu
LjIyMjljMzgxNWI1YmZkMjkwYWUxZmYxNWQzNTU0ZjVkZmIzMDcwM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2Vy
bmVsLmNwcApAQCAtNDMsMTUgKzQzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBBdWRpb1V0aWxpdGllczsKIAogLy8gTWV0ZXJpbmcgaGl0cyBwZWFrcyBpbnN0YW50
bHksIGJ1dCByZWxlYXNlcyB0aGlzIGZhc3QgKGluIHNlY29uZHMpLgotY29uc3QgZG91YmxlIG1l
dGVyaW5nUmVsZWFzZVRpbWVDb25zdGFudCA9IDAuMzI1OworY29uc3QgZmxvYXQgbWV0ZXJpbmdS
ZWxlYXNlVGltZUNvbnN0YW50ID0gMC4zMjVmOwogICAgIAogLy8gRXhwb25lbnRpYWwgc2F0dXJh
dGlvbiBjdXJ2ZS4KLXN0YXRpYyBkb3VibGUgc2F0dXJhdGUoZG91YmxlIHgsIGRvdWJsZSBrKQor
c3RhdGljIGZsb2F0IHNhdHVyYXRlKGZsb2F0IHgsIGZsb2F0IGspCiB7CiAgICAgcmV0dXJuIDEg
LSBleHAoLWsgKiB4KTsKIH0KIAotRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpEeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWwoZG91YmxlIHNhbXBsZVJhdGUpCitEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9z
YW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RQcmVEZWxheUZyYW1lcyhEZWZhdWx0
UHJlRGVsYXlGcmFtZXMpCiAgICAgLCBtX3ByZURlbGF5QnVmZmVyTChNYXhQcmVEZWxheUZyYW1l
cykKQEAgLTEwOCwxOCArMTA4LDE4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpw
cm9jZXNzKGZsb2F0KiBzb3VyY2VMLAogICAgIGZsb2F0IHdldE1peCA9IGVmZmVjdEJsZW5kOwog
CiAgICAgLy8gVGhyZXNob2xkIGFuZCBoZWFkcm9vbS4KLSAgICBkb3VibGUgbGluZWFyVGhyZXNo
b2xkID0gZGVjaWJlbHNUb0xpbmVhcihkYlRocmVzaG9sZCk7Ci0gICAgZG91YmxlIGxpbmVhckhl
YWRyb29tID0gZGVjaWJlbHNUb0xpbmVhcihkYkhlYWRyb29tKTsKKyAgICBmbG9hdCBsaW5lYXJU
aHJlc2hvbGQgPSBkZWNpYmVsc1RvTGluZWFyKGRiVGhyZXNob2xkKTsKKyAgICBmbG9hdCBsaW5l
YXJIZWFkcm9vbSA9IGRlY2liZWxzVG9MaW5lYXIoZGJIZWFkcm9vbSk7CiAKICAgICAvLyBNYWtl
dXAgZ2Fpbi4KLSAgICBkb3VibGUgbWF4aW11bSA9IDEuMDUgKiBsaW5lYXJIZWFkcm9vbSAqIGxp
bmVhclRocmVzaG9sZDsKLSAgICBkb3VibGUga2sgPSAobWF4aW11bSAtIGxpbmVhclRocmVzaG9s
ZCk7Ci0gICAgZG91YmxlIGludmVyc2VLSyA9IDEgLyBrazsKKyAgICBmbG9hdCBtYXhpbXVtID0g
MS4wNWYgKiBsaW5lYXJIZWFkcm9vbSAqIGxpbmVhclRocmVzaG9sZDsKKyAgICBmbG9hdCBrayA9
IChtYXhpbXVtIC0gbGluZWFyVGhyZXNob2xkKTsKKyAgICBmbG9hdCBpbnZlcnNlS0sgPSAxIC8g
a2s7CiAKLSAgICBkb3VibGUgZnVsbFJhbmdlR2FpbiA9IChsaW5lYXJUaHJlc2hvbGQgKyBrayAq
IHNhdHVyYXRlKDEgLSBsaW5lYXJUaHJlc2hvbGQsIDEpKTsKLSAgICBkb3VibGUgZnVsbFJhbmdl
TWFrZXVwR2FpbiA9IDEgLyBmdWxsUmFuZ2VHYWluOworICAgIGZsb2F0IGZ1bGxSYW5nZUdhaW4g
PSAobGluZWFyVGhyZXNob2xkICsga2sgKiBzYXR1cmF0ZSgxIC0gbGluZWFyVGhyZXNob2xkLCAx
KSk7CisgICAgZmxvYXQgZnVsbFJhbmdlTWFrZXVwR2FpbiA9IDEgLyBmdWxsUmFuZ2VHYWluOwog
ICAgIC8vIEVtcGlyaWNhbC9wZXJjZXB0dWFsIHR1bmluZy4KLSAgICBmdWxsUmFuZ2VNYWtldXBH
YWluID0gcG93KGZ1bGxSYW5nZU1ha2V1cEdhaW4sIDAuNik7CisgICAgZnVsbFJhbmdlTWFrZXVw
R2FpbiA9IHBvd2YoZnVsbFJhbmdlTWFrZXVwR2FpbiwgMC42Zik7CiAKICAgICBmbG9hdCBtYXN0
ZXJMaW5lYXJHYWluID0gZGVjaWJlbHNUb0xpbmVhcihkYlBvc3RHYWluKSAqIGZ1bGxSYW5nZU1h
a2V1cEdhaW47CiAKQEAgLTEzMSwyNiArMTMxLDI2IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VMLAogICAgIGZsb2F0IHJlbGVhc2VGcmFtZXMg
PSBzYW1wbGVSYXRlICogcmVsZWFzZVRpbWU7CiAgICAgCiAgICAgLy8gRGV0ZWN0b3IgcmVsZWFz
ZSB0aW1lLgotICAgIGRvdWJsZSBzYXRSZWxlYXNlVGltZSA9IDAuMDAyNTsKLSAgICBkb3VibGUg
c2F0UmVsZWFzZUZyYW1lcyA9IHNhdFJlbGVhc2VUaW1lICogc2FtcGxlUmF0ZTsKKyAgICBmbG9h
dCBzYXRSZWxlYXNlVGltZSA9IDAuMDAyNWY7CisgICAgZmxvYXQgc2F0UmVsZWFzZUZyYW1lcyA9
IHNhdFJlbGVhc2VUaW1lICogc2FtcGxlUmF0ZTsKIAogICAgIC8vIENyZWF0ZSBhIHNtb290aCBm
dW5jdGlvbiB3aGljaCBwYXNzZXMgdGhyb3VnaCBmb3VyIHBvaW50cy4KIAogICAgIC8vIFBvbHlu
b21pYWwgb2YgdGhlIGZvcm0KICAgICAvLyB5ID0gYSArIGIqeCArIGMqeF4yICsgZCp4XjMgKyBl
KnheNDsKIAotICAgIGRvdWJsZSB5MSA9IHJlbGVhc2VGcmFtZXMgKiByZWxlYXNlWm9uZTE7Ci0g
ICAgZG91YmxlIHkyID0gcmVsZWFzZUZyYW1lcyAqIHJlbGVhc2Vab25lMjsKLSAgICBkb3VibGUg
eTMgPSByZWxlYXNlRnJhbWVzICogcmVsZWFzZVpvbmUzOwotICAgIGRvdWJsZSB5NCA9IHJlbGVh
c2VGcmFtZXMgKiByZWxlYXNlWm9uZTQ7CisgICAgZmxvYXQgeTEgPSByZWxlYXNlRnJhbWVzICog
cmVsZWFzZVpvbmUxOworICAgIGZsb2F0IHkyID0gcmVsZWFzZUZyYW1lcyAqIHJlbGVhc2Vab25l
MjsKKyAgICBmbG9hdCB5MyA9IHJlbGVhc2VGcmFtZXMgKiByZWxlYXNlWm9uZTM7CisgICAgZmxv
YXQgeTQgPSByZWxlYXNlRnJhbWVzICogcmVsZWFzZVpvbmU0OwogCiAgICAgLy8gQWxsIG9mIHRo
ZXNlIGNvZWZmaWNpZW50cyB3ZXJlIGRlcml2ZWQgZm9yIDR0aCBvcmRlciBwb2x5bm9taWFsIGN1
cnZlIGZpdHRpbmcgd2hlcmUgdGhlIHkgdmFsdWVzCiAgICAgLy8gbWF0Y2ggdGhlIGV2ZW5seSBz
cGFjZWQgeCB2YWx1ZXMgYXMgZm9sbG93czogKHkxIDogeCA9PSAwLCB5MiA6IHggPT0gMSwgeTMg
OiB4ID09IDIsIHk0IDogeCA9PSAzKQotICAgIGRvdWJsZSBrQSA9IDAuOTk5OTk5OTk5OTk5OTk5
OCp5MSArIDEuODQzMjIxOTY4NDMyMzkyM2UtMTYqeTIgLSAxLjkzNzMzOTQzNTE2NzY0MjNlLTE2
KnkzICsgOC44MjQ1MTYwMTE4MTYyNDVlLTE4Knk0OwotICAgIGRvdWJsZSBrQiA9IC0xLjU3ODgz
MjAzNTI4NDU4ODgqeTEgKyAyLjMzMDU4MzcwMzIwNzQyODYqeTIgLSAwLjkxNDExOTQyMDQ4NDA0
MjkqeTMgKyAwLjE2MjM2Nzc1MjU2MTIwMzIqeTQ7Ci0gICAgZG91YmxlIGtDID0gMC41MzM0MTQy
ODY5MTA2NDI0KnkxIC0gMS4yNzI3MzY3ODkyMTM2MzEqeTIgKyAwLjkyNTg4NTYwNDIyMDc1MTIq
eTMgLSAwLjE4NjU2MzEwMTkxNzc2MjI2Knk0OwotICAgIGRvdWJsZSBrRCA9IDAuMDg3ODM0NjMx
MzgyMDcyMzQqeTEgLSAwLjE2OTQxNjI5Njc5MjU2MjIqeTIgKyAwLjA4NTg4MDU3OTUxNTk1Mjcy
KnkzIC0gMC4wMDQyOTg5MTQxMDU0NjI4Myp5NDsKLSAgICBkb3VibGUga0UgPSAtMC4wNDI0MTY4
ODMwMDgxMjMwNzQqeTEgKyAwLjExMTU2OTM4Mjc5ODc2MDIqeTIgLSAwLjA5NzY0Njc2MzI1MjY1
ODcyKnkzICsgMC4wMjg0OTQyNjM0NjIwMjE1NzYqeTQ7CisgICAgZmxvYXQga0EgPSAwLjk5OTk5
OTk5OTk5OTk5OThmKnkxICsgMS44NDMyMjE5Njg0MzIzOTIzZS0xNmYqeTIgLSAxLjkzNzMzOTQz
NTE2NzY0MjNlLTE2Zip5MyArIDguODI0NTE2MDExODE2MjQ1ZS0xOGYqeTQ7CisgICAgZmxvYXQg
a0IgPSAtMS41Nzg4MzIwMzUyODQ1ODg4Zip5MSArIDIuMzMwNTgzNzAzMjA3NDI4NmYqeTIgLSAw
LjkxNDExOTQyMDQ4NDA0MjlmKnkzICsgMC4xNjIzNjc3NTI1NjEyMDMyZip5NDsKKyAgICBmbG9h
dCBrQyA9IDAuNTMzNDE0Mjg2OTEwNjQyNGYqeTEgLSAxLjI3MjczNjc4OTIxMzYzMWYqeTIgKyAw
LjkyNTg4NTYwNDIyMDc1MTJmKnkzIC0gMC4xODY1NjMxMDE5MTc3NjIyNmYqeTQ7CisgICAgZmxv
YXQga0QgPSAwLjA4NzgzNDYzMTM4MjA3MjM0Zip5MSAtIDAuMTY5NDE2Mjk2NzkyNTYyMmYqeTIg
KyAwLjA4NTg4MDU3OTUxNTk1MjcyZip5MyAtIDAuMDA0Mjk4OTE0MTA1NDYyODNmKnk0OworICAg
IGZsb2F0IGtFID0gLTAuMDQyNDE2ODgzMDA4MTIzMDc0Zip5MSArIDAuMTExNTY5MzgyNzk4NzYw
MmYqeTIgLSAwLjA5NzY0Njc2MzI1MjY1ODcyZip5MyArIDAuMDI4NDk0MjYzNDYyMDIxNTc2Zip5
NDsKIAogICAgIC8vIHggcmFuZ2VzIGZyb20gMCAtPiAzICAgICAgIDAgICAgMSAgICAyICAgMwog
ICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgLTE1ICAtMTAgIC01ICAgMGRiCkBAIC0x
NzcsNyArMTc3LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxv
YXQqIHNvdXJjZUwsCiAgICAgICAgIGZsb2F0IGRlc2lyZWRHYWluID0gbV9kZXRlY3RvckF2ZXJh
Z2U7CiAKICAgICAgICAgLy8gUHJlLXdhcnAgc28gd2UgZ2V0IGRlc2lyZWRHYWluIGFmdGVyIHNp
bigpIHdhcnAgYmVsb3cuCi0gICAgICAgIGRvdWJsZSBzY2FsZWREZXNpcmVkR2FpbiA9IGFzaW4o
ZGVzaXJlZEdhaW4pIC8gKDAuNSAqIHBpRG91YmxlKTsKKyAgICAgICAgZmxvYXQgc2NhbGVkRGVz
aXJlZEdhaW4gPSBhc2luZihkZXNpcmVkR2FpbikgLyAoMC41ZiAqIHBpRmxvYXQpOwogCiAgICAg
ICAgIC8vIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogICAgICAgICAvLyBEZWFs
IHdpdGggZW52ZWxvcGVzCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNz
b3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAgICAgICAgIGJvb2wgaXNSZWxlYXNp
bmcgPSBzY2FsZWREZXNpcmVkR2FpbiA+IG1fY29tcHJlc3NvckdhaW47CiAKICAgICAgICAgLy8g
Y29tcHJlc3Npb25EaWZmRGIgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IGNvbXBy
ZXNzaW9uIGxldmVsIGFuZCB0aGUgZGVzaXJlZCBsZXZlbC4KLSAgICAgICAgZG91YmxlIGNvbXBy
ZXNzaW9uRGlmZkRiID0gbGluZWFyVG9EZWNpYmVscyhtX2NvbXByZXNzb3JHYWluIC8gc2NhbGVk
RGVzaXJlZEdhaW4pOworICAgICAgICBmbG9hdCBjb21wcmVzc2lvbkRpZmZEYiA9IGxpbmVhclRv
RGVjaWJlbHMobV9jb21wcmVzc29yR2FpbiAvIHNjYWxlZERlc2lyZWRHYWluKTsKIAogICAgICAg
ICBpZiAoaXNSZWxlYXNpbmcpIHsKICAgICAgICAgICAgIC8vIFJlbGVhc2UgbW9kZSAtIGNvbXBy
ZXNzaW9uRGlmZkRiIHNob3VsZCBiZSBuZWdhdGl2ZSBkQgpAQCAtMjA1LDIwICsyMDUsMjAgQEAg
dm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAg
ICAgICAgICAgICAvLyBBZGFwdGl2ZSByZWxlYXNlIC0gaGlnaGVyIGNvbXByZXNzaW9uIChsb3dl
ciBjb21wcmVzc2lvbkRpZmZEYikgIHJlbGVhc2VzIGZhc3Rlci4KIAogICAgICAgICAgICAgLy8g
Q29udGFpbiB3aXRoaW4gcmFuZ2U6IC0xMiAtPiAwIHRoZW4gc2NhbGUgdG8gZ28gZnJvbSAwIC0+
IDMKLSAgICAgICAgICAgIGRvdWJsZSB4ID0gY29tcHJlc3Npb25EaWZmRGI7Ci0gICAgICAgICAg
ICB4ID0gbWF4KC0xMi4sIHgpOwotICAgICAgICAgICAgeCA9IG1pbigwLiwgeCk7Ci0gICAgICAg
ICAgICB4ID0gMC4yNSAqICh4ICsgMTIpOworICAgICAgICAgICAgZmxvYXQgeCA9IGNvbXByZXNz
aW9uRGlmZkRiOworICAgICAgICAgICAgeCA9IG1heCgtMTIuMGYsIHgpOworICAgICAgICAgICAg
eCA9IG1pbigwLjBmLCB4KTsKKyAgICAgICAgICAgIHggPSAwLjI1ZiAqICh4ICsgMTIpOwogCiAg
ICAgICAgICAgICAvLyBDb21wdXRlIGFkYXB0aXZlIHJlbGVhc2UgY3VydmUgdXNpbmcgNHRoIG9y
ZGVyIHBvbHlub21pYWwuCiAgICAgICAgICAgICAvLyBOb3JtYWwgdmFsdWVzIGZvciB0aGUgcG9s
eW5vbWlhbCBjb2VmZmljaWVudHMgd291bGQgY3JlYXRlIGEgbW9ub3RvbmljYWxseSBpbmNyZWFz
aW5nIGZ1bmN0aW9uLgotICAgICAgICAgICAgZG91YmxlIHgyID0geCAqIHg7Ci0gICAgICAgICAg
ICBkb3VibGUgeDMgPSB4MiAqIHg7Ci0gICAgICAgICAgICBkb3VibGUgeDQgPSB4MiAqIHgyOwot
ICAgICAgICAgICAgZG91YmxlIHJlbGVhc2VGcmFtZXMgPSBrQSArIGtCICogeCArIGtDICogeDIg
KyBrRCAqIHgzICsga0UgKiB4NDsKKyAgICAgICAgICAgIGZsb2F0IHgyID0geCAqIHg7CisgICAg
ICAgICAgICBmbG9hdCB4MyA9IHgyICogeDsKKyAgICAgICAgICAgIGZsb2F0IHg0ID0geDIgKiB4
MjsKKyAgICAgICAgICAgIGZsb2F0IHJlbGVhc2VGcmFtZXMgPSBrQSArIGtCICogeCArIGtDICog
eDIgKyBrRCAqIHgzICsga0UgKiB4NDsKIAogI2RlZmluZSBrU3BhY2luZ0RiIDUKLSAgICAgICAg
ICAgIGRvdWJsZSBkYlBlckZyYW1lID0ga1NwYWNpbmdEYiAvIHJlbGVhc2VGcmFtZXM7CisgICAg
ICAgICAgICBmbG9hdCBkYlBlckZyYW1lID0ga1NwYWNpbmdEYiAvIHJlbGVhc2VGcmFtZXM7CiAK
ICAgICAgICAgICAgIGVudmVsb3BlUmF0ZSA9IGRlY2liZWxzVG9MaW5lYXIoZGJQZXJGcmFtZSk7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMzUsMTAgKzIzNSwxMCBAQCB2b2lkIER5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlTCwKICAgICAgICAgICAgIGlmICht
X21heEF0dGFja0NvbXByZXNzaW9uRGlmZkRiID09IC0xIHx8IG1fbWF4QXR0YWNrQ29tcHJlc3Np
b25EaWZmRGIgPCBjb21wcmVzc2lvbkRpZmZEYikKICAgICAgICAgICAgICAgICBtX21heEF0dGFj
a0NvbXByZXNzaW9uRGlmZkRiID0gY29tcHJlc3Npb25EaWZmRGI7CiAKLSAgICAgICAgICAgIGRv
dWJsZSBlZmZBdHRlbkRpZmZEYiA9IG1heCgwLjVmLCBtX21heEF0dGFja0NvbXByZXNzaW9uRGlm
ZkRiKTsKKyAgICAgICAgICAgIGZsb2F0IGVmZkF0dGVuRGlmZkRiID0gbWF4KDAuNWYsIG1fbWF4
QXR0YWNrQ29tcHJlc3Npb25EaWZmRGIpOwogCi0gICAgICAgICAgICBkb3VibGUgeCA9IDAuMjUg
LyBlZmZBdHRlbkRpZmZEYjsKLSAgICAgICAgICAgIGVudmVsb3BlUmF0ZSA9IDEgLSBwb3coeCwg
ZG91YmxlKDEgLyBhdHRhY2tGcmFtZXMpKTsKKyAgICAgICAgICAgIGZsb2F0IHggPSAwLjI1ZiAv
IGVmZkF0dGVuRGlmZkRiOworICAgICAgICAgICAgZW52ZWxvcGVSYXRlID0gMSAtIHBvd2YoeCwg
MSAvIGF0dGFja0ZyYW1lcyk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyB+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIER5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlTCwKICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgdW5kZWxheWVkTCA9ICpzb3VyY2VMKys7CiAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHVuZGVsYXllZFIgPSAqc291cmNlUisrOwogCi0gICAgICAgICAgICAgICAgICAgIGNvbXBy
ZXNzb3JJbnB1dCA9IDAuNSAqICh1bmRlbGF5ZWRMICsgdW5kZWxheWVkUik7CisgICAgICAgICAg
ICAgICAgICAgIGNvbXByZXNzb3JJbnB1dCA9IDAuNWYgKiAodW5kZWxheWVkTCArIHVuZGVsYXll
ZFIpOwogCiAgICAgICAgICAgICAgICAgICAgIGlucHV0TCA9IGRlbGF5QnVmZmVyTFtwcmVEZWxh
eVJlYWRJbmRleF07CiAgICAgICAgICAgICAgICAgICAgIGlucHV0UiA9IGRlbGF5QnVmZmVyUltw
cmVEZWxheVJlYWRJbmRleF07CkBAIC0yODQsMjQgKzI4NCwyNCBAQCB2b2lkIER5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlTCwKICAgICAgICAgICAgICAgICAv
LyBDYWxjdWxhdGUgc2hhcGVkIHBvd2VyIG9uIHVuZGVsYXllZCBpbnB1dC4KIAogICAgICAgICAg
ICAgICAgIGZsb2F0IHNjYWxlZElucHV0ID0gY29tcHJlc3NvcklucHV0OwotICAgICAgICAgICAg
ICAgIGRvdWJsZSBhYnNJbnB1dCA9IHNjYWxlZElucHV0ID4gMCA/IHNjYWxlZElucHV0IDogLXNj
YWxlZElucHV0OworICAgICAgICAgICAgICAgIGZsb2F0IGFic0lucHV0ID0gc2NhbGVkSW5wdXQg
PiAwID8gc2NhbGVkSW5wdXQgOiAtc2NhbGVkSW5wdXQ7CiAKICAgICAgICAgICAgICAgICAvLyBQ
dXQgdGhyb3VnaCBzaGFwaW5nIGN1cnZlLgogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbGlu
ZWFyIHVwIHRvIHRoZSB0aHJlc2hvbGQsIHRoZW4gZXhwb25lbnRpYWxseSBhcHByb2FjaGVzIHRo
ZSBtYXhpbXVtIChoZWFkcm9vbSBhbW91bnQgYWJvdmUgdGhyZXNob2xkKS4KICAgICAgICAgICAg
ICAgICAvLyBUaGUgdHJhbnNpdGlvbiBmcm9tIHRoZSB0aHJlc2hvbGQgdG8gdGhlIGV4cG9uZW50
aWFsIHBvcnRpb24gaXMgc21vb3RoICgxc3QgZGVyaXZhdGl2ZSBtYXRjaGVkKS4KLSAgICAgICAg
ICAgICAgICBkb3VibGUgc2hhcGVkSW5wdXQgPSBhYnNJbnB1dCA8IGxpbmVhclRocmVzaG9sZCA/
IGFic0lucHV0IDogbGluZWFyVGhyZXNob2xkICsga2sgKiBzYXR1cmF0ZShhYnNJbnB1dCAtIGxp
bmVhclRocmVzaG9sZCwgaW52ZXJzZUtLKTsKKyAgICAgICAgICAgICAgICBmbG9hdCBzaGFwZWRJ
bnB1dCA9IGFic0lucHV0IDwgbGluZWFyVGhyZXNob2xkID8gYWJzSW5wdXQgOiBsaW5lYXJUaHJl
c2hvbGQgKyBrayAqIHNhdHVyYXRlKGFic0lucHV0IC0gbGluZWFyVGhyZXNob2xkLCBpbnZlcnNl
S0spOwogCi0gICAgICAgICAgICAgICAgZG91YmxlIGF0dGVudWF0aW9uID0gYWJzSW5wdXQgPD0g
MC4wMDAxID8gMSA6IHNoYXBlZElucHV0IC8gYWJzSW5wdXQ7CisgICAgICAgICAgICAgICAgZmxv
YXQgYXR0ZW51YXRpb24gPSBhYnNJbnB1dCA8PSAwLjAwMDFmID8gMSA6IHNoYXBlZElucHV0IC8g
YWJzSW5wdXQ7CiAKLSAgICAgICAgICAgICAgICBkb3VibGUgYXR0ZW51YXRpb25EYiA9IC1saW5l
YXJUb0RlY2liZWxzKGF0dGVudWF0aW9uKTsKLSAgICAgICAgICAgICAgICBhdHRlbnVhdGlvbkRi
ID0gbWF4KDIuLCBhdHRlbnVhdGlvbkRiKTsKKyAgICAgICAgICAgICAgICBmbG9hdCBhdHRlbnVh
dGlvbkRiID0gLWxpbmVhclRvRGVjaWJlbHMoYXR0ZW51YXRpb24pOworICAgICAgICAgICAgICAg
IGF0dGVudWF0aW9uRGIgPSBtYXgoMi4wZiwgYXR0ZW51YXRpb25EYik7CiAKLSAgICAgICAgICAg
ICAgICBkb3VibGUgZGJQZXJGcmFtZSA9IGF0dGVudWF0aW9uRGIgLyBzYXRSZWxlYXNlRnJhbWVz
OworICAgICAgICAgICAgICAgIGZsb2F0IGRiUGVyRnJhbWUgPSBhdHRlbnVhdGlvbkRiIC8gc2F0
UmVsZWFzZUZyYW1lczsKIAotICAgICAgICAgICAgICAgIGRvdWJsZSBzYXRSZWxlYXNlUmF0ZSA9
IGRlY2liZWxzVG9MaW5lYXIoZGJQZXJGcmFtZSkgLSAxOworICAgICAgICAgICAgICAgIGZsb2F0
IHNhdFJlbGVhc2VSYXRlID0gZGVjaWJlbHNUb0xpbmVhcihkYlBlckZyYW1lKSAtIDE7CiAKICAg
ICAgICAgICAgICAgICBib29sIGlzUmVsZWFzZSA9IChhdHRlbnVhdGlvbiA+IGRldGVjdG9yQXZl
cmFnZSk7Ci0gICAgICAgICAgICAgICAgZG91YmxlIHJhdGUgPSBpc1JlbGVhc2UgPyBzYXRSZWxl
YXNlUmF0ZSA6IDE7CisgICAgICAgICAgICAgICAgZmxvYXQgcmF0ZSA9IGlzUmVsZWFzZSA/IHNh
dFJlbGVhc2VSYXRlIDogMTsKIAogICAgICAgICAgICAgICAgIGRldGVjdG9yQXZlcmFnZSArPSAo
YXR0ZW51YXRpb24gLSBkZXRlY3RvckF2ZXJhZ2UpICogcmF0ZTsKICAgICAgICAgICAgICAgICBk
ZXRlY3RvckF2ZXJhZ2UgPSBtaW4oMS4wZiwgZGV0ZWN0b3JBdmVyYWdlKTsKQEAgLTMyMywxMyAr
MzIzLDEzIEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBz
b3VyY2VMLAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIFdhcnAgcHJl
LWNvbXByZXNzaW9uIGdhaW4gdG8gc21vb3RoIG91dCBzaGFycCBleHBvbmVudGlhbCB0cmFuc2l0
aW9uIHBvaW50cy4KLSAgICAgICAgICAgICAgICBkb3VibGUgcG9zdFdhcnBDb21wcmVzc29yR2Fp
biA9IHNpbigwLjUgKiBwaURvdWJsZSAqIGNvbXByZXNzb3JHYWluKTsKKyAgICAgICAgICAgICAg
ICBmbG9hdCBwb3N0V2FycENvbXByZXNzb3JHYWluID0gc2luZigwLjVmICogcGlGbG9hdCAqIGNv
bXByZXNzb3JHYWluKTsKIAogICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0b3RhbCBnYWlu
IHVzaW5nIG1hc3RlciBnYWluIGFuZCBlZmZlY3QgYmxlbmQuCi0gICAgICAgICAgICAgICAgZG91
YmxlIHRvdGFsR2FpbiA9IGRyeU1peCArIHdldE1peCAqIG1hc3RlckxpbmVhckdhaW4gKiBwb3N0
V2FycENvbXByZXNzb3JHYWluOworICAgICAgICAgICAgICAgIGZsb2F0IHRvdGFsR2FpbiA9IGRy
eU1peCArIHdldE1peCAqIG1hc3RlckxpbmVhckdhaW4gKiBwb3N0V2FycENvbXByZXNzb3JHYWlu
OwogCiAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIG1ldGVyaW5nLgotICAgICAgICAgICAg
ICAgIGRvdWJsZSBkYlJlYWxHYWluID0gMjAgKiBsb2cxMChwb3N0V2FycENvbXByZXNzb3JHYWlu
KTsKKyAgICAgICAgICAgICAgICBmbG9hdCBkYlJlYWxHYWluID0gMjAgKiBsb2cxMChwb3N0V2Fy
cENvbXByZXNzb3JHYWluKTsKICAgICAgICAgICAgICAgICBpZiAoZGJSZWFsR2FpbiA8IG1fbWV0
ZXJpbmdHYWluKQogICAgICAgICAgICAgICAgICAgICBtX21ldGVyaW5nR2FpbiA9IGRiUmVhbEdh
aW47CiAgICAgICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAppbmRleCBhNmU3MGQzNTBm
MTIwMjdkMDc4MDZlODExOWMxZjMyYTM1YmY2NTFiLi44ZTVmNzA5OWQ4OGJiNTVhZTc4ZDQ3OGNk
Nzk2ZGNmNGExOTZkMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCB7CiBwdWJs
aWM6Ci0gICAgRHluYW1pY3NDb21wcmVzc29yS2VybmVsKGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAg
ICBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBQ
ZXJmb3JtcyBzdGVyZW8tbGlua2VkIGNvbXByZXNzaW9uLgogICAgIHZvaWQgcHJvY2VzcyhmbG9h
dCAqc291cmNlTCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Vx
dWFsUG93ZXJQYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQ
b3dlclBhbm5lci5jcHAKaW5kZXggZTJjMmE1YzQ2YWNlMTcxNDc3NDM4NWIwNTYxMDg0OTU2NDE4
OGMxZi4uMTNhMTlkNmNkNDQ1MWQ3YjJmOTg4MmI1MGM0ZWQ5ZTAwMzIwYjNiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAKQEAg
LTM0LDEzICszNCwxMyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIC8vIFVzZSBh
IDUwbXMgc21vb3RoaW5nIC8gZGUtemlwcGVyaW5nIHRpbWUtY29uc3RhbnQuCi1jb25zdCBkb3Vi
bGUgU21vb3RoaW5nVGltZUNvbnN0YW50ID0gMC4wNTA7Citjb25zdCBmbG9hdCBTbW9vdGhpbmdU
aW1lQ29uc3RhbnQgPSAwLjA1MGY7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotRXF1YWxQb3dlclBhbm5lcjo6RXF1YWxQb3dlclBhbm5lcihkb3VibGUg
c2FtcGxlUmF0ZSkKK0VxdWFsUG93ZXJQYW5uZXI6OkVxdWFsUG93ZXJQYW5uZXIoZmxvYXQgc2Ft
cGxlUmF0ZSkKICAgICA6IFBhbm5lcihQYW5uaW5nTW9kZWxFcXVhbFBvd2VyKQogICAgICwgbV9p
c0ZpcnN0UmVuZGVyKHRydWUpCiAgICAgLCBtX2dhaW5MKDAuMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAppbmRleCBmMjA2MTdlYjQ3Y2Mz
NTQ0MzBlZmMxNjczY2E0OTExM2NlYmZiMWY1Li40ZjYwMDFkZjkxNDIwZWM1NDRhZmNlZGNkZjY4
OTdlODQ0ODBkNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9F
cXVhbFBvd2VyUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1
YWxQb3dlclBhbm5lci5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRXF1YWxQb3dlclBhbm5lciA6IHB1YmxpYyBQYW5uZXIgewogcHVibGljOgotICAgIEVx
dWFsUG93ZXJQYW5uZXIoZG91YmxlIHNhbXBsZVJhdGUpOworICAgIEVxdWFsUG93ZXJQYW5uZXIo
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFuKGRvdWJsZSBhemltdXRo
LCBkb3VibGUgZWxldmF0aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRC
dWYsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcAppbmRleCBlZjEyMjlmNjk1ZTE1ODJkMzk0MjA2Mjkz
YTFhMGQzNzIxNWZjNTllLi44NTU4Njk4MDMyNmY1MjA3YWJiYjBkZDQyMzJjZmEwMzA4NWNmOTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAK
QEAgLTQ1LDEzICs0NSwxMyBAQCBjb25zdCB1bnNpZ25lZCBIUlRGRGF0YWJhc2U6Ok51bWJlck9m
UmF3RWxldmF0aW9ucyA9IDEwOyAvLyAtNDUgLT4gKzkwIChlYWNoIDE1CiBjb25zdCB1bnNpZ25l
ZCBIUlRGRGF0YWJhc2U6OkludGVycG9sYXRpb25GYWN0b3IgPSAxOwogY29uc3QgdW5zaWduZWQg
SFJURkRhdGFiYXNlOjpOdW1iZXJPZlRvdGFsRWxldmF0aW9ucyA9IE51bWJlck9mUmF3RWxldmF0
aW9ucyAqIEludGVycG9sYXRpb25GYWN0b3I7CiAKLVBhc3NPd25QdHI8SFJURkRhdGFiYXNlPiBI
UlRGRGF0YWJhc2U6OmNyZWF0ZShkb3VibGUgc2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8SFJURkRh
dGFiYXNlPiBIUlRGRGF0YWJhc2U6OmNyZWF0ZShmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIE93
blB0cjxIUlRGRGF0YWJhc2U+IGhydGZEYXRhYmFzZSA9IGFkb3B0UHRyKG5ldyBIUlRGRGF0YWJh
c2Uoc2FtcGxlUmF0ZSkpOwogICAgIHJldHVybiBocnRmRGF0YWJhc2UucmVsZWFzZSgpOwogfQog
Ci1IUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZShkb3VibGUgc2FtcGxlUmF0ZSkKK0hSVEZEYXRh
YmFzZTo6SFJURkRhdGFiYXNlKGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX2VsZXZhdGlvbnMo
TnVtYmVyT2ZUb3RhbEVsZXZhdGlvbnMpCiAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkK
IHsKQEAgLTc1LDcgKzc1LDcgQEAgSFJURkRhdGFiYXNlOjpIUlRGRGF0YWJhc2UoZG91YmxlIHNh
bXBsZVJhdGUpCiAKICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgaW50ZXJwb2xhdGVkIGNvbnZv
bHV0aW9uIGtlcm5lbHMgYW5kIGRlbGF5cy4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgamog
PSAxOyBqaiA8IEludGVycG9sYXRpb25GYWN0b3I7ICsramopIHsKLSAgICAgICAgICAgICAgICBk
b3VibGUgeCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oamopIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihJ
bnRlcnBvbGF0aW9uRmFjdG9yKTsKKyAgICAgICAgICAgICAgICBmbG9hdCB4ID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGpqKSAvIHN0YXRpY19jYXN0PGZsb2F0PihJbnRlcnBvbGF0aW9uRmFjdG9yKTsK
ICAgICAgICAgICAgICAgICBtX2VsZXZhdGlvbnNbaSArIGpqXSA9IEhSVEZFbGV2YXRpb246OmNy
ZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhtX2VsZXZhdGlvbnNbaV0uZ2V0KCksIG1fZWxldmF0
aW9uc1tqXS5nZXQoKSwgeCwgc2FtcGxlUmF0ZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1f
ZWxldmF0aW9uc1tpICsgampdLmdldCgpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmgKaW5kZXggYmYxM2EzYTIyMzA5NTZhYmNk
NmI5ZWVkNTE3MjkyNmQ3NWE3MWExOC4uYmI3Y2Y1MzBmNWExYzZmMGEyNzBiNmFhMjczYTU0M2Uy
YWRhMTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNl
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSFJURktlcm5lbDsKIGNsYXNzIEhSVEZEYXRhYmFz
ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFJURkRhdGFiYXNlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxIUlRGRGF0YWJhc2U+IGNyZWF0ZShkb3VibGUgc2FtcGxlUmF0
ZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SFJURkRhdGFiYXNlPiBjcmVhdGUoZmxvYXQgc2Ft
cGxlUmF0ZSk7CiAKICAgICAvLyBnZXRLZXJuZWxzRnJvbUF6aW11dGhFbGV2YXRpb24oKSByZXR1
cm5zIGEgbGVmdCBhbmQgcmlnaHQgZWFyIGtlcm5lbCwgYW5kIGFuIGludGVycG9sYXRlZCBsZWZ0
IGFuZCByaWdodCBmcmFtZSBkZWxheSBmb3IgdGhlIGdpdmVuIGF6aW11dGggYW5kIGVsZXZhdGlv
bi4KICAgICAvLyBhemltdXRoQmxlbmQgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMCAtPiAxLgpAQCAt
NTcsMTAgKzU3LDEwIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlm
ZmVyZW50IGF6aW11dGggYW5nbGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZkF6aW11
dGhzKCkgeyByZXR1cm4gSFJURkVsZXZhdGlvbjo6TnVtYmVyT2ZUb3RhbEF6aW11dGhzOyB9CiAK
LSAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQor
ICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KICAg
ICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgSFJURkRhdGFiYXNlKGRvdWJsZSBzYW1wbGVSYXRl
KTsKKyAgICBleHBsaWNpdCBIUlRGRGF0YWJhc2UoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAv
LyBNaW5pbXVtIGFuZCBtYXhpbXVtIGVsZXZhdGlvbiBhbmdsZXMgKGluY2x1c2l2ZSkgZm9yIGEg
SFJURkRhdGFiYXNlLgogICAgIHN0YXRpYyBjb25zdCBpbnQgTWluRWxldmF0aW9uOwpAQCAtODAs
NyArODAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB1bnNpZ25lZCBpbmRleEZyb21FbGV2YXRp
b25BbmdsZShkb3VibGUpOwogCiAgICAgVmVjdG9yPE93blB0cjxIUlRGRWxldmF0aW9uPiA+IG1f
ZWxldmF0aW9uczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAot
ICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CisgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKaW5kZXggOWFjZGMzMjU4ZmE4NmNjZmJjNzg4
NmU4ZGRlOTU5OTZhODc3ZGQyMy4uY2I3MzU1YWE4ZmEzYWQxNWM4MWI3Y2E0M2UwMWQ0ZWVjNDM4
MGNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IFNpbmdsZXRvbgogSFJURkRhdGFiYXNlTG9hZGVyKiBIUlRGRGF0YWJhc2VMb2FkZXI6OnNfbG9h
ZGVyID0gMDsKIAotUGFzc1JlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IEhSVEZEYXRhYmFzZUxv
YWRlcjo6Y3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoZG91YmxlIHNhbXBs
ZVJhdGUpCitQYXNzUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gSFJURkRhdGFiYXNlTG9hZGVy
OjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShmbG9hdCBzYW1wbGVSYXRl
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTU5LDcgKzU5LDcgQEAgUGFz
c1JlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IEhSVEZEYXRhYmFzZUxvYWRlcjo6Y3JlYXRlQW5k
TG9hZEFzeW5jaHJvbm91c2x5SWYKICAgICByZXR1cm4gbG9hZGVyOwogfQogCi1IUlRGRGF0YWJh
c2VMb2FkZXI6OkhSVEZEYXRhYmFzZUxvYWRlcihkb3VibGUgc2FtcGxlUmF0ZSkKK0hSVEZEYXRh
YmFzZUxvYWRlcjo6SFJURkRhdGFiYXNlTG9hZGVyKGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBt
X2RhdGFiYXNlTG9hZGVyVGhyZWFkKDApCiAgICAgLCBtX2RhdGFiYXNlU2FtcGxlUmF0ZShzYW1w
bGVSYXRlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkRhdGFiYXNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuaAppbmRleCBlZTdlYjIyM2M3OWI0MjEwMzVlZmI5OTMxYTM0N2FkNzExMWM1
NDc1Li5lNjc3MDdlODE0YTFkYWM3Y2JlZjViY2U2OGUxMDc0MzA3OWNlYTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaApAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gTGF6aWx5IGNyZWF0ZXMgdGhlIHNpbmdsZXRv
biBIUlRGRGF0YWJhc2VMb2FkZXIgKGlmIG5vdCBhbHJlYWR5IGNyZWF0ZWQpIGFuZCBzdGFydHMg
bG9hZGluZyBhc3luY2hyb25vdXNseSAod2hlbiBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lKS4KICAg
ICAvLyBSZXR1cm5zIHRoZSBzaW5nbGV0b24gSFJURkRhdGFiYXNlTG9hZGVyLgogICAgIC8vIE11
c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhSVEZEYXRhYmFzZUxvYWRlcj4gY3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3Nh
cnkoZG91YmxlIHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhSVEZEYXRhYmFz
ZUxvYWRlcj4gY3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoZmxvYXQgc2Ft
cGxlUmF0ZSk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBzaW5nbGV0b24gSFJURkRhdGFiYXNlTG9h
ZGVyLgogICAgIHN0YXRpYyBIUlRGRGF0YWJhc2VMb2FkZXIqIGxvYWRlcigpIHsgcmV0dXJuIHNf
bG9hZGVyOyB9CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBIUlRGRGF0YWJh
c2UqIGRhdGFiYXNlKCkgeyByZXR1cm4gbV9ocnRmRGF0YWJhc2UuZ2V0KCk7IH0KIAotICAgIGRv
dWJsZSBkYXRhYmFzZVNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlU2FtcGxl
UmF0ZTsgfQorICAgIGZsb2F0IGRhdGFiYXNlU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YWJhc2VTYW1wbGVSYXRlOyB9CiAgICAgCiAgICAgLy8gQ2FsbGVkIGluIGFzeW5jaHJvbm91
cyBsb2FkaW5nIHRocmVhZC4KICAgICB2b2lkIGxvYWQoKTsKQEAgLTcyLDcgKzcyLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIC8vIEJvdGggY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Ig
bXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgZXhwbGljaXQgSFJURkRh
dGFiYXNlTG9hZGVyKGRvdWJsZSBzYW1wbGVSYXRlKTsgICAgCisgICAgZXhwbGljaXQgSFJURkRh
dGFiYXNlTG9hZGVyKGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIAogICAgIC8vIElmIGl0IGhhc24n
dCBhbHJlYWR5IGJlZW4gbG9hZGVkLCBjcmVhdGVzIGEgbmV3IHRocmVhZCBhbmQgaW5pdGlhdGVz
IGFzeW5jaHJvbm91cyBsb2FkaW5nIG9mIHRoZSBkZWZhdWx0IGRhdGFiYXNlLgogICAgIC8vIFRo
aXMgbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCkBAIC04NSw3ICs4NSw3IEBA
IHByaXZhdGU6CiAgICAgTXV0ZXggbV90aHJlYWRMb2NrOwogICAgIFRocmVhZElkZW50aWZpZXIg
bV9kYXRhYmFzZUxvYWRlclRocmVhZDsKIAotICAgIGRvdWJsZSBtX2RhdGFiYXNlU2FtcGxlUmF0
ZTsgICAgCisgICAgZmxvYXQgbV9kYXRhYmFzZVNhbXBsZVJhdGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2
YXRpb24uY3BwCmluZGV4IGIwZGI4NjIzZjk2M2EwZTc3YzA5YThmNTQxNDNlNGE3ZGIwNjE3MzAu
LmNmMjEyNTU0OTAyNjVlYjg5NDRkYzIxMjczMTkxYWIxMmIwNWIyNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC01Miw3ICs1Miw3
IEBAIGNvbnN0IHVuc2lnbmVkIEhSVEZFbGV2YXRpb246Ok51bWJlck9mVG90YWxBemltdXRocyA9
IE51bWJlck9mUmF3QXppbXV0aHMgKiBJbnRlCiAKIC8vIFRha2VzIGFkdmFudGFnZSBvZiB0aGUg
c3ltbWV0cnkgYW5kIGNyZWF0ZXMgYSBjb21wb3NpdGUgdmVyc2lvbiBvZiB0aGUgdHdvIG1lYXN1
cmVkIHZlcnNpb25zLiAgRm9yIGV4YW1wbGUsIHdlIGhhdmUgYm90aCBhemltdXRoIDMwIGFuZCAt
MzAgZGVncmVlcwogLy8gd2hlcmUgdGhlIHJvbGVzIG9mIGxlZnQgYW5kIHJpZ2h0IGVhcnMgYXJl
IHJldmVyc2VkIHdpdGggcmVzcGVjdCB0byBlYWNoIG90aGVyLgotYm9vbCBIUlRGRWxldmF0aW9u
OjpjYWxjdWxhdGVTeW1tZXRyaWNLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0
aCwgaW50IGVsZXZhdGlvbiwgZG91YmxlIHNhbXBsZVJhdGUsIGNvbnN0IFN0cmluZyYgc3ViamVj
dE5hbWUsCitib29sIEhSVEZFbGV2YXRpb246OmNhbGN1bGF0ZVN5bW1ldHJpY0tlcm5lbHNGb3JB
emltdXRoRWxldmF0aW9uKGludCBhemltdXRoLCBpbnQgZWxldmF0aW9uLCBmbG9hdCBzYW1wbGVS
YXRlLCBjb25zdCBTdHJpbmcmIHN1YmplY3ROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SFJURktlcm5l
bD4mIGtlcm5lbEwsIFJlZlB0cjxIUlRGS2VybmVsPiYga2VybmVsUikKIHsKICAgICBSZWZQdHI8
SFJURktlcm5lbD4ga2VybmVsTDE7CkBAIC03MSwxMyArNzEsMTMgQEAgYm9vbCBIUlRGRWxldmF0
aW9uOjpjYWxjdWxhdGVTeW1tZXRyaWNLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXpp
bXV0aCwgaW4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAvLyBOb3RpY2Ug
TC9SIHJldmVyc2FsIGluIHN5bW1ldHJpYyB2ZXJzaW9uLgotICAgIGtlcm5lbEwgPSBIUlRGS2Vy
bmVsOjpjcmVhdGVJbnRlcnBvbGF0ZWRLZXJuZWwoa2VybmVsTDEuZ2V0KCksIGtlcm5lbFIyLmdl
dCgpLCAwLjUpOwotICAgIGtlcm5lbFIgPSBIUlRGS2VybmVsOjpjcmVhdGVJbnRlcnBvbGF0ZWRL
ZXJuZWwoa2VybmVsUjEuZ2V0KCksIGtlcm5lbEwyLmdldCgpLCAwLjUpOworICAgIGtlcm5lbEwg
PSBIUlRGS2VybmVsOjpjcmVhdGVJbnRlcnBvbGF0ZWRLZXJuZWwoa2VybmVsTDEuZ2V0KCksIGtl
cm5lbFIyLmdldCgpLCAwLjVmKTsKKyAgICBrZXJuZWxSID0gSFJURktlcm5lbDo6Y3JlYXRlSW50
ZXJwb2xhdGVkS2VybmVsKGtlcm5lbFIxLmdldCgpLCBrZXJuZWxMMi5nZXQoKSwgMC41Zik7CiAg
ICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRl
S2VybmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpb24sIGRv
dWJsZSBzYW1wbGVSYXRlLCBjb25zdCBTdHJpbmcmIHN1YmplY3ROYW1lLAorYm9vbCBIUlRGRWxl
dmF0aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwg
aW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSwgY29uc3QgU3RyaW5nJiBzdWJqZWN0TmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPEhSVEZLZXJuZWw+JiBrZXJuZWxMLCBSZWZQdHI8SFJURktlcm5lbD4mIGtlcm5l
bFIpCiB7CiAgICAgLy8gVmFsaWQgdmFsdWVzIGZvciBhemltdXRoIGFyZSAwIC0+IDM0NSBpbiAx
NSBkZWdyZWUgaW5jcmVtZW50cy4KQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgaW50IG1heEVs
ZXZhdGlvbnNbXSA9IHsKICAgICA0NSAvLyAgMzQ1IAogfTsKIAotUGFzc093blB0cjxIUlRGRWxl
dmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3Vi
amVjdE5hbWUsIGludCBlbGV2YXRpb24sIGRvdWJsZSBzYW1wbGVSYXRlKQorUGFzc093blB0cjxI
UlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmlu
ZyYgc3ViamVjdE5hbWUsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAg
Ym9vbCBpc0VsZXZhdGlvbkdvb2QgPSBlbGV2YXRpb24gPj0gLTQ1ICYmIGVsZXZhdGlvbiA8PSA5
MCAmJiAoZWxldmF0aW9uIC8gMTUpICogMTUgPT0gZWxldmF0aW9uOwogICAgIEFTU0VSVChpc0Vs
ZXZhdGlvbkdvb2QpOwpAQCAtMTg4LDcgKzE4OCw3IEBAIFBhc3NPd25QdHI8SFJURkVsZXZhdGlv
bj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1YmplY3RO
CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbnRlcnBvbGF0ZWQgY29udm9sdXRpb24ga2VybmVs
cyBhbmQgZGVsYXlzLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGpqID0gMTsgamogPCBJbnRlcnBv
bGF0aW9uRmFjdG9yOyArK2pqKSB7Ci0gICAgICAgICAgICBkb3VibGUgeCA9IGRvdWJsZShqaikg
LyBkb3VibGUoSW50ZXJwb2xhdGlvbkZhY3Rvcik7IC8vIGludGVycG9sYXRlIGZyb20gMCAtPiAx
CisgICAgICAgICAgICBmbG9hdCB4ID0gZmxvYXQoamopIC8gZmxvYXQoSW50ZXJwb2xhdGlvbkZh
Y3Rvcik7IC8vIGludGVycG9sYXRlIGZyb20gMCAtPiAxCiAKICAgICAgICAgICAgICgqa2VybmVs
TGlzdEwpW2kgKyBqal0gPSBIUlRGS2VybmVsOjpjcmVhdGVJbnRlcnBvbGF0ZWRLZXJuZWwoa2Vy
bmVsTGlzdEwtPmF0KGkpLmdldCgpLCBrZXJuZWxMaXN0TC0+YXQoaikuZ2V0KCksIHgpOwogICAg
ICAgICAgICAgKCprZXJuZWxMaXN0UilbaSArIGpqXSA9IEhSVEZLZXJuZWw6OmNyZWF0ZUludGVy
cG9sYXRlZEtlcm5lbChrZXJuZWxMaXN0Ui0+YXQoaSkuZ2V0KCksIGtlcm5lbExpc3RSLT5hdChq
KS5nZXQoKSwgeCk7CkBAIC0xOTksNyArMTk5LDcgQEAgUGFzc093blB0cjxIUlRGRWxldmF0aW9u
PiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViamVjdE4K
ICAgICByZXR1cm4gaHJ0ZkVsZXZhdGlvbi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8SFJU
RkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhS
VEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24xLCBIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9u
MiwgZG91YmxlIHgsIGRvdWJsZSBzYW1wbGVSYXRlKQorUGFzc093blB0cjxIUlRGRWxldmF0aW9u
PiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsZXZhdGlv
biogaHJ0ZkVsZXZhdGlvbjEsIEhSVEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24yLCBmbG9hdCB4
LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIEFTU0VSVChocnRmRWxldmF0aW9uMSAmJiBocnRm
RWxldmF0aW9uMik7CiAgICAgaWYgKCFocnRmRWxldmF0aW9uMSB8fCAhaHJ0ZkVsZXZhdGlvbjIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKaW5kZXgg
MjRiNzgyMjg4NmRlZGExMDk1NDRjZjA3MmIxMTM0MGZkMjkxNDhiYi4uY2NmZjA5N2Y4YWQ2Y2Yx
MWI1MmM4OTc3ZTBmOGFmMzNlMDc5ZDIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uaApAQCAtNTAsMTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICAv
LyBOb3JtYWxseSwgdGhlcmUgd2lsbCBvbmx5IGJlIGEgc2luZ2xlIEhSVEYgZGF0YWJhc2Ugc2V0
LCBidXQgdGhpcyBBUEkgc3VwcG9ydHMgdGhlIHBvc3NpYmlsaXR5IG9mIG11bHRpcGxlIG9uZXMg
d2l0aCBkaWZmZXJlbnQgbmFtZXMuCiAgICAgLy8gSW50ZXJwb2xhdGVkIGF6aW11dGhzIHdpbGwg
YmUgZ2VuZXJhdGVkIGJhc2VkIG9uIEludGVycG9sYXRpb25GYWN0b3IuCiAgICAgLy8gVmFsaWQg
dmFsdWVzIGZvciBlbGV2YXRpb24gYXJlIC00NSAtPiArOTAgaW4gMTUgZGVncmVlIGluY3JlbWVu
dHMuCi0gICAgc3RhdGljIFBhc3NPd25QdHI8SFJURkVsZXZhdGlvbj4gY3JlYXRlRm9yU3ViamVj
dChjb25zdCBTdHJpbmcmIHN1YmplY3ROYW1lLCBpbnQgZWxldmF0aW9uLCBkb3VibGUgc2FtcGxl
UmF0ZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SFJURkVsZXZhdGlvbj4gY3JlYXRlRm9yU3Vi
amVjdChjb25zdCBTdHJpbmcmIHN1YmplY3ROYW1lLCBpbnQgZWxldmF0aW9uLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIC8vIEdpdmVuIHR3byBIUlRGRWxldmF0aW9ucywgYW5kIGFuIGludGVy
cG9sYXRpb24gZmFjdG9yIHg6IDAgLT4gMSwgcmV0dXJucyBhbiBpbnRlcnBvbGF0ZWQgSFJURkVs
ZXZhdGlvbi4KLSAgICBzdGF0aWMgUGFzc093blB0cjxIUlRGRWxldmF0aW9uPiBjcmVhdGVCeUlu
dGVycG9sYXRpbmdTbGljZXMoSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjEsIEhSVEZFbGV2
YXRpb24qIGhydGZFbGV2YXRpb24yLCBkb3VibGUgeCwgZG91YmxlIHNhbXBsZVJhdGUpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEhSVEZFbGV2YXRpb24+IGNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1Ns
aWNlcyhIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0ZkVs
ZXZhdGlvbjIsIGZsb2F0IHgsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgLy8gUmV0dXJucyB0
aGUgbGlzdCBvZiBsZWZ0IG9yIHJpZ2h0IGVhciBIUlRGS2VybmVscyBmb3IgYWxsIHRoZSBhemlt
dXRocyBnb2luZyBmcm9tIDAgdG8gMzYwIGRlZ3JlZXMuCiAgICAgSFJURktlcm5lbExpc3QqIGtl
cm5lbExpc3RMKCkgeyByZXR1cm4gbV9rZXJuZWxMaXN0TC5nZXQoKTsgfQpAQCAtNjEsNyArNjEs
NyBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUgZWxldmF0aW9uQW5nbGUoKSBjb25zdCB7IHJldHVy
biBtX2VsZXZhdGlvbkFuZ2xlOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBemltdXRocygpIHsg
cmV0dXJuIE51bWJlck9mVG90YWxBemltdXRoczsgfQotICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgIAogICAgIC8vIFJldHVybnMgdGhlIGxl
ZnQgYW5kIHJpZ2h0IGtlcm5lbHMgZm9yIHRoZSBnaXZlbiBhemltdXRoIGluZGV4LgogICAgIC8v
IFRoZSBpbnRlcnBvbGF0ZWQgZGVsYXlzIGJhc2VkIG9uIGF6aW11dGhCbGVuZDogMCAtPiAxIGFy
ZSByZXR1cm5lZCBpbiBmcmFtZURlbGF5TCBhbmQgZnJhbWVEZWxheVIuCkBAIC04MywxNiArODMs
MTYgQEAgcHVibGljOgogICAgIC8vIFZhbGlkIHZhbHVlcyBmb3IgYXppbXV0aCBhcmUgMCAtPiAz
NDUgaW4gMTUgZGVncmVlIGluY3JlbWVudHMuCiAgICAgLy8gVmFsaWQgdmFsdWVzIGZvciBlbGV2
YXRpb24gYXJlIC00NSAtPiArOTAgaW4gMTUgZGVncmVlIGluY3JlbWVudHMuCiAgICAgLy8gUmV0
dXJucyB0cnVlIG9uIHN1Y2Nlc3MuCi0gICAgc3RhdGljIGJvb2wgY2FsY3VsYXRlS2VybmVsc0Zv
ckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpb24sIGRvdWJsZSBzYW1w
bGVSYXRlLCBjb25zdCBTdHJpbmcmIHN1YmplY3ROYW1lLAorICAgIHN0YXRpYyBib29sIGNhbGN1
bGF0ZUtlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKGludCBhemltdXRoLCBpbnQgZWxldmF0aW9u
LCBmbG9hdCBzYW1wbGVSYXRlLCBjb25zdCBTdHJpbmcmIHN1YmplY3ROYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxIUlRGS2Vy
bmVsPiYga2VybmVsTCwgUmVmUHRyPEhSVEZLZXJuZWw+JiBrZXJuZWxSKTsKIAogICAgIC8vIEdp
dmVuIGEgc3BlY2lmaWMgYXppbXV0aCBhbmQgZWxldmF0aW9uIGFuZ2xlLCByZXR1cm5zIHRoZSBs
ZWZ0IGFuZCByaWdodCBIUlRGS2VybmVsIGluIGtlcm5lbEwgYW5kIGtlcm5lbFIuCiAgICAgLy8g
VGhpcyBtZXRob2QgYXZlcmFnZXMgdGhlIG1lYXN1cmVkIHJlc3BvbnNlIHVzaW5nIHN5bW1ldHJ5
IG9mIGF6aW11dGggKGZvciBleGFtcGxlIGJ5IGF2ZXJhZ2luZyB0aGUgLTMwLjAgYW5kICszMC4w
IGF6aW11dGggcmVzcG9uc2VzKS4KICAgICAvLyBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KLSAg
ICBzdGF0aWMgYm9vbCBjYWxjdWxhdGVTeW1tZXRyaWNLZXJuZWxzRm9yQXppbXV0aEVsZXZhdGlv
bihpbnQgYXppbXV0aCwgaW50IGVsZXZhdGlvbiwgZG91YmxlIHNhbXBsZVJhdGUsIGNvbnN0IFN0
cmluZyYgc3ViamVjdE5hbWUsCisgICAgc3RhdGljIGJvb2wgY2FsY3VsYXRlU3ltbWV0cmljS2Vy
bmVsc0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpb24sIGZsb2F0
IHNhbXBsZVJhdGUsIGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEhSVEZL
ZXJuZWw+JiBrZXJuZWxMLCBSZWZQdHI8SFJURktlcm5lbD4mIGtlcm5lbFIpOwogcHJpdmF0ZToK
LSAgICBIUlRGRWxldmF0aW9uKFBhc3NPd25QdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RM
LCBQYXNzT3duUHRyPEhSVEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0UiwgaW50IGVsZXZhdGlvbiwg
ZG91YmxlIHNhbXBsZVJhdGUpCisgICAgSFJURkVsZXZhdGlvbihQYXNzT3duUHRyPEhSVEZLZXJu
ZWxMaXN0PiBrZXJuZWxMaXN0TCwgUGFzc093blB0cjxIUlRGS2VybmVsTGlzdD4ga2VybmVsTGlz
dFIsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgICAgIDogbV9rZXJuZWxM
aXN0TChrZXJuZWxMaXN0TCkKICAgICAgICAgLCBtX2tlcm5lbExpc3RSKGtlcm5lbExpc3RSKQog
ICAgICAgICAsIG1fZWxldmF0aW9uQW5nbGUoZWxldmF0aW9uKQpAQCAtMTAzLDcgKzEwMyw3IEBA
IHByaXZhdGU6CiAgICAgT3duUHRyPEhSVEZLZXJuZWxMaXN0PiBtX2tlcm5lbExpc3RMOwogICAg
IE93blB0cjxIUlRGS2VybmVsTGlzdD4gbV9rZXJuZWxMaXN0UjsKICAgICBkb3VibGUgbV9lbGV2
YXRpb25BbmdsZTsKLSAgICBkb3VibGUgbV9zYW1wbGVSYXRlOworICAgIGZsb2F0IG1fc2FtcGxl
UmF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKaW5kZXggOWRiMzViYTY1ZDY0N2Y2ZjM0ZmFiMmU5
NmRhNDMzMDQ5OTFiMzYyZi4uNjhlY2NiOTY5MzE1MWQ4YjAyN2I3NzU4MTBjZmVkYzQyODM0MTVk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJBdWRpb0NoYW5uZWwuaCIKICNpbmNsdWRlICJCaXF1
YWQuaCIKICNpbmNsdWRlICJGRlRGcmFtZS5oIgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBA
IC00NSw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoaXMgcmVwcmVzZW50cyB0
aGUgaW5pdGlhbCBkZWxheSBiZWZvcmUgdGhlIG1vc3QgZW5lcmdldGljIHBhcnQgb2YgdGhlIGlt
cHVsc2UgcmVzcG9uc2UuCiAvLyBUaGUgc2FtcGxlLWZyYW1lIGRlbGF5IGlzIHJlbW92ZWQgZnJv
bSB0aGUgaW1wdWxzZVAgaW1wdWxzZSByZXNwb25zZSwgYW5kIHRoaXMgdmFsdWUgIGlzIHJldHVy
bmVkLgogLy8gdGhlIGxlbmd0aCBvZiB0aGUgcGFzc2VkIGluIEF1ZGlvQ2hhbm5lbCBtdXN0IGJl
IGEgcG93ZXIgb2YgMi4KLXN0YXRpYyBkb3VibGUgZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KEF1
ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6ZV90IGFuYWx5c2lzRkZUU2l6ZSkKK3N0YXRpYyBmbG9h
dCBleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3Qg
YW5hbHlzaXNGRlRTaXplKQogewogICAgIEFTU0VSVChjaGFubmVsKTsKICAgICAgICAgCkBAIC01
OSwxNCArNjAsMTQgQEAgc3RhdGljIGRvdWJsZSBleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoQXVk
aW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgYW5hbHlzaXNGRlQKICAgICBGRlRGcmFtZSBlc3Rp
bWF0aW9uRnJhbWUoYW5hbHlzaXNGRlRTaXplKTsKICAgICBlc3RpbWF0aW9uRnJhbWUuZG9GRlQo
aW1wdWxzZVApOwogCi0gICAgZG91YmxlIGZyYW1lRGVsYXkgPSBlc3RpbWF0aW9uRnJhbWUuZXh0
cmFjdEF2ZXJhZ2VHcm91cERlbGF5KCk7CisgICAgZmxvYXQgZnJhbWVEZWxheSA9IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoZXN0aW1hdGlvbkZyYW1lLmV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheSgp
KTsKICAgICBlc3RpbWF0aW9uRnJhbWUuZG9JbnZlcnNlRkZUKGltcHVsc2VQKTsKIAogICAgIHJl
dHVybiBmcmFtZURlbGF5OwogfQogCi1IUlRGS2VybmVsOjpIUlRGS2VybmVsKEF1ZGlvQ2hhbm5l
bCogY2hhbm5lbCwgc2l6ZV90IGZmdFNpemUsIGRvdWJsZSBzYW1wbGVSYXRlLCBib29sIGJhc3NC
b29zdCkKLSAgICA6IG1fZnJhbWVEZWxheSgwLjApCitIUlRGS2VybmVsOjpIUlRGS2VybmVsKEF1
ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6ZV90IGZmdFNpemUsIGZsb2F0IHNhbXBsZVJhdGUsIGJv
b2wgYmFzc0Jvb3N0KQorICAgIDogbV9mcmFtZURlbGF5KDApCiAgICAgLCBtX3NhbXBsZVJhdGUo
c2FtcGxlUmF0ZSkKIHsKICAgICBBU1NFUlQoY2hhbm5lbCk7CkBAIC0xMTYsMjIgKzExNywyMiBA
QCBQYXNzT3duUHRyPEF1ZGlvQ2hhbm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3Bv
bnNlKCkKIH0KIAogLy8gSW50ZXJwb2xhdGVzIHR3byBrZXJuZWxzIHdpdGggeDogMCAtPiAxIGFu
ZCByZXR1cm5zIHRoZSByZXN1bHQuCi1QYXNzUmVmUHRyPEhSVEZLZXJuZWw+IEhSVEZLZXJuZWw6
OmNyZWF0ZUludGVycG9sYXRlZEtlcm5lbChIUlRGS2VybmVsKiBrZXJuZWwxLCBIUlRGS2VybmVs
KiBrZXJuZWwyLCBkb3VibGUgeCkKK1Bhc3NSZWZQdHI8SFJURktlcm5lbD4gSFJURktlcm5lbDo6
Y3JlYXRlSW50ZXJwb2xhdGVkS2VybmVsKEhSVEZLZXJuZWwqIGtlcm5lbDEsIEhSVEZLZXJuZWwq
IGtlcm5lbDIsIGZsb2F0IHgpCiB7CiAgICAgQVNTRVJUKGtlcm5lbDEgJiYga2VybmVsMik7CiAg
ICAgaWYgKCFrZXJuZWwxIHx8ICFrZXJuZWwyKQogICAgICAgICByZXR1cm4gMDsKICAKICAgICBB
U1NFUlQoeCA+PSAwLjAgJiYgeCA8IDEuMCk7Ci0gICAgeCA9IG1pbigxLjAsIG1heCgwLjAsIHgp
KTsKKyAgICB4ID0gbWluKDEuMGYsIG1heCgwLjBmLCB4KSk7CiAgICAgCi0gICAgZG91YmxlIHNh
bXBsZVJhdGUxID0ga2VybmVsMS0+c2FtcGxlUmF0ZSgpOwotICAgIGRvdWJsZSBzYW1wbGVSYXRl
MiA9IGtlcm5lbDItPnNhbXBsZVJhdGUoKTsKKyAgICBmbG9hdCBzYW1wbGVSYXRlMSA9IGtlcm5l
bDEtPnNhbXBsZVJhdGUoKTsKKyAgICBmbG9hdCBzYW1wbGVSYXRlMiA9IGtlcm5lbDItPnNhbXBs
ZVJhdGUoKTsKICAgICBBU1NFUlQoc2FtcGxlUmF0ZTEgPT0gc2FtcGxlUmF0ZTIpOwogICAgIGlm
IChzYW1wbGVSYXRlMSAhPSBzYW1wbGVSYXRlMikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0g
ICAgZG91YmxlIGZyYW1lRGVsYXkgPSAoMS4wIC0geCkgKiBrZXJuZWwxLT5mcmFtZURlbGF5KCkg
KyB4ICoga2VybmVsMi0+ZnJhbWVEZWxheSgpOworICAgIGZsb2F0IGZyYW1lRGVsYXkgPSAoMSAt
IHgpICoga2VybmVsMS0+ZnJhbWVEZWxheSgpICsgeCAqIGtlcm5lbDItPmZyYW1lRGVsYXkoKTsK
ICAgICAKICAgICBPd25QdHI8RkZURnJhbWU+IGludGVycG9sYXRlZEZyYW1lID0gRkZURnJhbWU6
OmNyZWF0ZUludGVycG9sYXRlZEZyYW1lKCprZXJuZWwxLT5mZnRGcmFtZSgpLCAqa2VybmVsMi0+
ZmZ0RnJhbWUoKSwgeCk7CiAgICAgcmV0dXJuIEhSVEZLZXJuZWw6OmNyZWF0ZShpbnRlcnBvbGF0
ZWRGcmFtZS5yZWxlYXNlKCksIGZyYW1lRGVsYXksIHNhbXBsZVJhdGUxKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuaAppbmRleCA1NzJhMDg1MTFkOGIxZDI1Mjc0
OGQ2ZTQxYzkxMzgxYzZkNjUxZjllLi4zYThkYmZkZTJmMzI3ZGEzMTc1NjM1MmY5NTA3OWYxZDlh
YWFkNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2Vy
bmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5oCkBA
IC01MSwyNSArNTEsMjUgQEAgY2xhc3MgSFJURktlcm5lbCA6IHB1YmxpYyBSZWZDb3VudGVkPEhS
VEZLZXJuZWw+IHsKIHB1YmxpYzoKICAgICAvLyBOb3RlOiB0aGlzIGlzIGRlc3RydWN0aXZlIG9u
IHRoZSBwYXNzZWQgaW4gQXVkaW9DaGFubmVsLgogICAgIC8vIFRoZSBsZW5ndGggb2YgY2hhbm5l
bCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhSVEZLZXJu
ZWw+IGNyZWF0ZShBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRTaXplLCBkb3VibGUg
c2FtcGxlUmF0ZSwgYm9vbCBiYXNzQm9vc3QpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFJURktl
cm5lbD4gY3JlYXRlKEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6ZV90IGZmdFNpemUsIGZsb2F0
IHNhbXBsZVJhdGUsIGJvb2wgYmFzc0Jvb3N0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIUlRGS2VybmVsKGNoYW5uZWwsIGZmdFNpemUsIHNhbXBsZVJhdGUsIGJhc3NCb29z
dCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhSVEZLZXJuZWw+IGNyZWF0ZShQ
YXNzT3duUHRyPEZGVEZyYW1lPiBmZnRGcmFtZSwgZG91YmxlIGZyYW1lRGVsYXksIGRvdWJsZSBz
YW1wbGVSYXRlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhSVEZLZXJuZWw+IGNyZWF0ZShQYXNz
T3duUHRyPEZGVEZyYW1lPiBmZnRGcmFtZSwgZmxvYXQgZnJhbWVEZWxheSwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFJURktlcm5lbChmZnRG
cmFtZSwgZnJhbWVEZWxheSwgc2FtcGxlUmF0ZSkpOwogICAgIH0KIAogICAgIC8vIEdpdmVuIHR3
byBIUlRGS2VybmVscywgYW5kIGFuIGludGVycG9sYXRpb24gZmFjdG9yIHg6IDAgLT4gMSwgcmV0
dXJucyBhbiBpbnRlcnBvbGF0ZWQgSFJURktlcm5lbC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
UlRGS2VybmVsPiBjcmVhdGVJbnRlcnBvbGF0ZWRLZXJuZWwoSFJURktlcm5lbCoga2VybmVsMSwg
SFJURktlcm5lbCoga2VybmVsMiwgZG91YmxlIHgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhS
VEZLZXJuZWw+IGNyZWF0ZUludGVycG9sYXRlZEtlcm5lbChIUlRGS2VybmVsKiBrZXJuZWwxLCBI
UlRGS2VybmVsKiBrZXJuZWwyLCBmbG9hdCB4KTsKICAgCiAgICAgRkZURnJhbWUqIGZmdEZyYW1l
KCkgeyByZXR1cm4gbV9mZnRGcmFtZS5nZXQoKTsgfQogICAgIAogICAgIHNpemVfdCBmZnRTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9mZnRGcmFtZS0+ZmZ0U2l6ZSgpOyB9Ci0gICAgZG91YmxlIGZy
YW1lRGVsYXkoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lRGVsYXk7IH0KKyAgICBmbG9hdCBmcmFt
ZURlbGF5KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZURlbGF5OyB9CiAKLSAgICBkb3VibGUgc2Ft
cGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIGZsb2F0IHNhbXBs
ZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KICAgICBkb3VibGUgbnlxdWlz
dCgpIGNvbnN0IHsgcmV0dXJuIDAuNSAqIHNhbXBsZVJhdGUoKTsgfQogCiAgICAgLy8gQ29udmVy
dHMgYmFjayBpbnRvIGltcHVsc2UtcmVzcG9uc2UgZm9ybS4KQEAgLTc3LDkgKzc3LDkgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIC8vIE5vdGU6IHRoaXMgaXMgZGVzdHJ1Y3RpdmUgb24gdGhl
IHBhc3NlZCBpbiBBdWRpb0NoYW5uZWwuCi0gICAgSFJURktlcm5lbChBdWRpb0NoYW5uZWwqIGNo
YW5uZWwsIHNpemVfdCBmZnRTaXplLCBkb3VibGUgc2FtcGxlUmF0ZSwgYm9vbCBiYXNzQm9vc3Qp
OworICAgIEhSVEZLZXJuZWwoQXVkaW9DaGFubmVsKiwgc2l6ZV90IGZmdFNpemUsIGZsb2F0IHNh
bXBsZVJhdGUsIGJvb2wgYmFzc0Jvb3N0KTsKICAgICAKLSAgICBIUlRGS2VybmVsKFBhc3NPd25Q
dHI8RkZURnJhbWU+IGZmdEZyYW1lLCBkb3VibGUgZnJhbWVEZWxheSwgZG91YmxlIHNhbXBsZVJh
dGUpCisgICAgSFJURktlcm5lbChQYXNzT3duUHRyPEZGVEZyYW1lPiBmZnRGcmFtZSwgZmxvYXQg
ZnJhbWVEZWxheSwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICAgICAgOiBtX2ZmdEZyYW1lKGZmdEZy
YW1lKQogICAgICAgICAsIG1fZnJhbWVEZWxheShmcmFtZURlbGF5KQogICAgICAgICAsIG1fc2Ft
cGxlUmF0ZShzYW1wbGVSYXRlKQpAQCAtODcsOCArODcsOCBAQCBwcml2YXRlOgogICAgIH0KICAg
ICAKICAgICBPd25QdHI8RkZURnJhbWU+IG1fZmZ0RnJhbWU7Ci0gICAgZG91YmxlIG1fZnJhbWVE
ZWxheTsKLSAgICBkb3VibGUgbV9zYW1wbGVSYXRlOworICAgIGZsb2F0IG1fZnJhbWVEZWxheTsK
KyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SFJU
Rktlcm5lbD4gPiBIUlRGS2VybmVsTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURlBhbm5lci5jcHAKaW5kZXggNjhiYzUwNWFmOTBlMGM5NjdiZTVlNjNiMDkzYmFmM2Qy
YjVjMTNjNy4uNTM3N2ViMjcwZDM2ZmQ4MzJiZWI0ZDhhYWZiMDJjYzMzOWY5OGQ5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAKQEAgLTQ0LDcgKzQ0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gV2UgQVNTRVJUIHRoZSBkZWxheSB2YWx1ZXMg
dXNlZCBpbiBwcm9jZXNzKCkgd2l0aCB0aGlzIHZhbHVlLgogY29uc3QgZG91YmxlIE1heERlbGF5
VGltZVNlY29uZHMgPSAwLjAwMjsKIAotSFJURlBhbm5lcjo6SFJURlBhbm5lcihkb3VibGUgc2Ft
cGxlUmF0ZSkKK0hSVEZQYW5uZXI6OkhSVEZQYW5uZXIoZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6
IFBhbm5lcihQYW5uaW5nTW9kZWxIUlRGKQogICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUp
CiAgICAgLCBtX2lzRmlyc3RSZW5kZXIodHJ1ZSkKQEAgLTYwLDcgKzYwLDcgQEAgSFJURlBhbm5l
cjo6fkhSVEZQYW5uZXIoKQogewogfQogCi1zaXplX3QgSFJURlBhbm5lcjo6ZmZ0U2l6ZUZvclNh
bXBsZVJhdGUoZG91YmxlIHNhbXBsZVJhdGUpCitzaXplX3QgSFJURlBhbm5lcjo6ZmZ0U2l6ZUZv
clNhbXBsZVJhdGUoZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICAvLyBUaGUgSFJURiBpbXB1bHNl
IHJlc3BvbnNlcyAobG9hZGVkIGFzIGF1ZGlvIHJlc291cmNlcykgYXJlIDUxMiBzYW1wbGUtZnJh
bWVzIEA0NC4xS0h6LgogICAgIC8vIEN1cnJlbnRseSwgd2UgdHJ1bmNhdGUgdGhlIGltcHVsc2Ug
cmVzcG9uc2VzIHRvIGhhbGYgdGhpcyBzaXplLCBidXQgYW4gRkZULXNpemUgb2YgdHdpY2UgaW1w
dWxzZSByZXNwb25zZSBzaXplIGlzIG5lZWRlZCAoZm9yIGNvbnZvbHV0aW9uKS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAppbmRleCA2YzEzZDQ4YjU5OWQxMzcy
ZGY4NWVjMGFhNDQwZTFlMDYxMmYwZmQ0Li5lNzcxYmEyOGIzZTRhYWRlZDZmODAyMTU2NDYzMjI3
YTZmZmUxMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
UGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5o
CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJURlBhbm5l
ciA6IHB1YmxpYyBQYW5uZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IEhSVEZQYW5uZXIoZG91
YmxlIHNhbXBsZVJhdGUpOworICAgIGV4cGxpY2l0IEhSVEZQYW5uZXIoZmxvYXQgc2FtcGxlUmF0
ZSk7CiAgICAgdmlydHVhbCB+SFJURlBhbm5lcigpOwogCiAgICAgLy8gUGFubmVyCkBAIC00MSwx
NiArNDEsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwogCiAgICAgc2l6
ZV90IGZmdFNpemUoKSB7IHJldHVybiBmZnRTaXplRm9yU2FtcGxlUmF0ZShtX3NhbXBsZVJhdGUp
OyB9Ci0gICAgc3RhdGljIHNpemVfdCBmZnRTaXplRm9yU2FtcGxlUmF0ZShkb3VibGUgc2FtcGxl
UmF0ZSk7CisgICAgc3RhdGljIHNpemVfdCBmZnRTaXplRm9yU2FtcGxlUmF0ZShmbG9hdCBzYW1w
bGVSYXRlKTsKIAotICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1w
bGVSYXRlOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxl
UmF0ZTsgfQogICAgIAogcHJpdmF0ZToKICAgICAvLyBHaXZlbiBhbiBhemltdXRoIGFuZ2xlIGlu
IHRoZSByYW5nZSAtMTgwIC0+ICsxODAsIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgYXppbXV0
aCBpbmRleCBmb3IgdGhlIGRhdGFiYXNlLAogICAgIC8vIGFuZCBhemltdXRoQmxlbmQgd2hpY2gg
aXMgYW4gaW50ZXJwb2xhdGlvbiB2YWx1ZSBmcm9tIDAgLT4gMS4KICAgICBpbnQgY2FsY3VsYXRl
RGVzaXJlZEF6aW11dGhJbmRleEFuZEJsZW5kKGRvdWJsZSBhemltdXRoLCBkb3VibGUmIGF6aW11
dGhCbGVuZCk7CiAKLSAgICBkb3VibGUgbV9zYW1wbGVSYXRlOworICAgIGZsb2F0IG1fc2FtcGxl
UmF0ZTsKICAgICAKICAgICAvLyBtX2lzRmlyc3RSZW5kZXIgYW5kIG1fYXppbXV0aEluZGV4IGFy
ZSB1c2VkIHRvIGF2b2lkIGhhcnNobHkgY2hhbmdpbmcgZnJvbSByZW5kZXJpbmcgYXQgb25lIGF6
aW11dGggYW5nbGUgdG8gYW5vdGhlciBhbmdsZSB2ZXJ5IGZhciBhd2F5LgogICAgIC8vIENoYW5n
aW5nIHRoZSBhemltdXRoIGdyYWR1YWxseSBwcm9kdWNlcyBhIHNtb290aGVyIHNvdW5kLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKaW5kZXggZDNkMWEyYWVjYWVmZmVh
NmNiZTE0NWNjMWU2Y2FkNGNkYzU4NjlkZi4uZGViYzllMzIxNmQ3MGE5NDY3YjMzMWY0NDYxZWZi
YzE0ZDUxZGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFu
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCkBA
IC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxQYW5u
ZXI+IFBhbm5lcjo6Y3JlYXRlKFBhbm5pbmdNb2RlbCBtb2RlbCwgZG91YmxlIHNhbXBsZVJhdGUp
CitQYXNzT3duUHRyPFBhbm5lcj4gUGFubmVyOjpjcmVhdGUoUGFubmluZ01vZGVsIG1vZGVsLCBm
bG9hdCBzYW1wbGVSYXRlKQogewogICAgIE93blB0cjxQYW5uZXI+IHBhbm5lcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuaAppbmRleCBiNTdjZWRhMjQwM2IyMmZlZTYxZWEx
YmZiMmMyZDg1ZDU2ZGFhNTEwLi40YjcyODMyN2QyOWFlOGIzYzNkODM5ZjVkOWYwZTFhZjc2ZGI0
ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBQYW5uaW5nTW9kZWw7CiAK
LSAgICBzdGF0aWMgUGFzc093blB0cjxQYW5uZXI+IGNyZWF0ZShQYW5uaW5nTW9kZWwgbW9kZWws
IGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYW5uZXI+IGNyZWF0
ZShQYW5uaW5nTW9kZWwsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmlydHVhbCB+UGFubmVy
KCkgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jaHJv
bWl1bS9BdWRpb0J1c0Nocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21pdW0uY3BwCmluZGV4IGQ1YzU1MjYwNjc3YTRkMTY4MjMz
MmVkNGEwYWY2NWE3MGQ4ZDFhNGQuLmYyYTAwOTY0MTE2NGE3NWE0NzBhZWRlMDdiNWVhNzU1Yjgz
YjM2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVt
L0F1ZGlvQnVzQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2Nocm9taXVtL0F1ZGlvQnVzQ2hyb21pdW0uY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGRvdWJsZSBzYW1wbGVSYXRlKQorUGFzc093
blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIq
IG5hbWUsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgLy8gRklYTUU6IHRoZSBzYW1wbGVSYXRl
IHBhcmFtZXRlciBpcyBpZ25vcmVkLiBJdCBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBBUEku
CiAgICAgT3duUHRyPEF1ZGlvQnVzPiBhdWRpb0J1cyA9IFBsYXRmb3JtU3VwcG9ydDo6bG9hZFBs
YXRmb3JtQXVkaW9SZXNvdXJjZShuYW1lLCBzYW1wbGVSYXRlKTsKQEAgLTQ4LDcgKzQ4LDcgQEAg
UGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIqIG5hbWUsIGRvdWJsZSBzYW0KICAgICByZXR1cm4gQXVkaW9CdXM6OmNyZWF0ZUJ5U2Ft
cGxlUmF0ZUNvbnZlcnRpbmcoYXVkaW9CdXMuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKIH0K
IAotUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGNv
bnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBz
YW1wbGVSYXRlKQorUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVk
aW9GaWxlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8s
IGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgLy8gRklYTUU6IHRoZSBzYW1wbGVSYXRlIHBhcmFt
ZXRlciBpcyBpZ25vcmVkLiBJdCBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBBUEkuCiAgICAg
T3duUHRyPEF1ZGlvQnVzPiBhdWRpb0J1cyA9IFBsYXRmb3JtU3VwcG9ydDo6ZGVjb2RlQXVkaW9G
aWxlRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGRhdGFTaXplLCBzYW1wbGVS
YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0J1c01hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0J1c01h
Yy5tbQppbmRleCA2ZTZlMjdhYjc2N2NiMWYwNGQ1ZGJlYzYwODkxYjViNzJjZDAyNjg1Li40MmE3
MThiMjE1YWE5ZDQwNGRjMThkOTVhMDViNDkwOTdhNDRiYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9CdXNNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvQnVzTWFjLm1tCkBAIC00MSw3ICs0MSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGRvdWJsZSBzYW1wbGVSYXRl
KQorUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNv
bnN0IGNoYXIqIG5hbWUsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qg
Y2FuIGJlIGNhbGxlZCBmcm9tIG90aGVyIHRoYW4gdGhlIG1haW4gdGhyZWFkLCBzbyB3ZSBuZWVk
IGFuIGF1dG8tcmVsZWFzZSBwb29sLgogICAgIE5TQXV0b3JlbGVhc2VQb29sKiBwb29sID0gW1tO
U0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggZDRl
Y2FiYWIyMWViNDEzNDYzMWZmYjMxODg0MGEwNTAxZTA4MmQwOC4uOGJmOGNjNDM3NDViMzVkYzRk
MzcxNDFmM2I5M2E5YjE1YzNmZTUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25NYWMuaCIKIAogI2luY2x1ZGUgIkF1ZGlv
U291cmNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRl
IDxDb3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
MCwxMiArNDEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgaW50IGtCdWZmZXJTaXpl
ID0gMTI4OwogCiAvLyBGYWN0b3J5IG1ldGhvZDogTWFjLWltcGxlbWVudGF0aW9uCi1QYXNzT3du
UHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb1NvdXJj
ZVByb3ZpZGVyJiBwcm92aWRlciwgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzT3duUHRyPEF1ZGlv
RGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb1NvdXJjZVByb3ZpZGVy
JiBwcm92aWRlciwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEF1ZGlvRGVzdGluYXRpb25NYWMocHJvdmlkZXIsIHNhbXBsZVJhdGUpKTsKIH0KIAotZG91Ymxl
IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCitmbG9hdCBBdWRpb0Rlc3Rp
bmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQogewogICAgIC8vIERldGVybWluZSB0aGUgZGVm
YXVsdCBvdXRwdXQgZGV2aWNlJ3Mgc2FtcGxlLXJhdGUuCiAgICAgQXVkaW9EZXZpY2VJRCBkZXZp
Y2VJRCA9IGtBdWRpb0RldmljZVVua25vd247CkBAIC01NCw3ICs1NSw3IEBAIGRvdWJsZSBBdWRp
b0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQogICAgIEF1ZGlvT2JqZWN0UHJvcGVy
dHlBZGRyZXNzIGRlZmF1bHRPdXRwdXREZXZpY2VBZGRyZXNzID0geyBrQXVkaW9IYXJkd2FyZVBy
b3BlcnR5RGVmYXVsdE91dHB1dERldmljZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2Jh
bCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CiAgICAgT1NTdGF0dXMgcmVz
dWx0ID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0
LCAmZGVmYXVsdE91dHB1dERldmljZUFkZHJlc3MsIDAsIDAsICZpbmZvU2l6ZSwgKHZvaWQqKSZk
ZXZpY2VJRCk7CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIDAuMDsgLy8gZXJyb3IK
KyAgICAgICAgcmV0dXJuIDA7IC8vIGVycm9yCiAKICAgICBGbG9hdDY0IG5vbWluYWxTYW1wbGVS
YXRlOwogICAgIGluZm9TaXplID0gc2l6ZW9mKEZsb2F0NjQpOwpAQCAtNjIsMTIgKzYzLDEyIEBA
IGRvdWJsZSBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQogICAgIEF1ZGlv
T2JqZWN0UHJvcGVydHlBZGRyZXNzIG5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcyA9IHsga0F1ZGlv
RGV2aWNlUHJvcGVydHlOb21pbmFsU2FtcGxlUmF0ZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29w
ZUdsb2JhbCwga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CiAgICAgcmVzdWx0
ID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoZGV2aWNlSUQsICZub21pbmFsU2FtcGxlUmF0
ZUFkZHJlc3MsIDAsIDAsICZpbmZvU2l6ZSwgKHZvaWQqKSZub21pbmFsU2FtcGxlUmF0ZSk7CiAg
ICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIDAuMDsgLy8gZXJyb3IKKyAgICAgICAgcmV0
dXJuIDA7IC8vIGVycm9yCiAKLSAgICByZXR1cm4gbm9taW5hbFNhbXBsZVJhdGU7CisgICAgcmV0
dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobm9taW5hbFNhbXBsZVJhdGUpOwogfQogCi1BdWRp
b0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rlc3RpbmF0aW9uTWFjKEF1ZGlvU291cmNlUHJvdmlkZXIm
IHByb3ZpZGVyLCBkb3VibGUgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlv
RGVzdGluYXRpb25NYWMoQXVkaW9Tb3VyY2VQcm92aWRlciYgcHJvdmlkZXIsIGZsb2F0IHNhbXBs
ZVJhdGUpCiAgICAgOiBtX291dHB1dFVuaXQoMCkKICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIp
CiAgICAgLCBtX3JlbmRlckJ1cygyLCBrQnVmZmVyU2l6ZSwgZmFsc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaApp
bmRleCAxOTc0NDBjNjg0Zjc2MDY0Yzg4OWFlMDE4OThkMDE5MGE3ZGYwMTIxLi45NjNmN2M3MzU1
MTVhNjUwY2MyMDBmMmJhZWQ2Njg5NzcxZjUwZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKQEAgLTM5LDE0
ICszOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb25N
YWMgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiB7CiBwdWJsaWM6Ci0gICAgQXVkaW9EZXN0aW5h
dGlvbk1hYyhBdWRpb1NvdXJjZVByb3ZpZGVyJiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgIEF1
ZGlvRGVzdGluYXRpb25NYWMoQXVkaW9Tb3VyY2VQcm92aWRlciYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25NYWMoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAgICAgYm9vbCBpc1BsYXlpbmco
KSB7IHJldHVybiBtX2lzUGxheWluZzsgfQogCi0gICAgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25z
dCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb25maWd1cmUo
KTsKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyJiBt
X3Byb3ZpZGVyOwogICAgIEF1ZGlvQnVzIG1fcmVuZGVyQnVzOwogCi0gICAgZG91YmxlIG1fc2Ft
cGxlUmF0ZTsKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgYm9vbCBtX2lzUGxheWluZzsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0ZpbGVSZWFkZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRmlsZVJlYWRlck1hYy5jcHAKaW5kZXggNDI2OTk1ZTEzZDI3NDAxNWY1ZmY1NDZjYjFmMzJh
MmU0NGU0MTc2NS4uN2I2NjZhNTVhYjg3OWU0MGY2OGM0ZGJmZWM3N2MzNzhjMWNhYzlkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRl
ck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmls
ZVJlYWRlck1hYy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgi
CiAjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVyLmgiCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9u
LmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRl
IDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CiAKQEAgLTEzNSw3ICsxMzYsNyBAQCBTSW50
NjQgQXVkaW9GaWxlUmVhZGVyOjpnZXRTaXplUHJvYyh2b2lkKiBjbGllbnREYXRhKQogICAgIHJl
dHVybiBhdWRpb0ZpbGVSZWFkZXItPmRhdGFTaXplKCk7CiB9CiAKLVBhc3NPd25QdHI8QXVkaW9C
dXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGRvdWJsZSBzYW1wbGVSYXRlLCBib29sIG1p
eFRvTW9ubykKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVz
KGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQogewogICAgIGlmICghbV9leHRBdWRp
b0ZpbGVSZWYpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTg3LDcgKzE4OCw3IEBAIFBh
c3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGRvdWJsZSBzYW1w
bGVSYXRlLCBib29sIG1peFRvTW9uCiAKICAgICAvLyBDcmVhdGUgQXVkaW9CdXMgd2hlcmUgd2Un
bGwgcHV0IHRoZSBQQ00gYXVkaW8gZGF0YQogICAgIE93blB0cjxBdWRpb0J1cz4gYXVkaW9CdXMg
PSBhZG9wdFB0cihuZXcgQXVkaW9CdXMoYnVzQ2hhbm5lbENvdW50LCBudW1iZXJPZkZyYW1lcykp
OwotICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fY2xpZW50RGF0YUZvcm1hdC5tU2FtcGxl
UmF0ZSk7IC8vIHNhdmUgZm9yIGxhdGVyCisgICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUobmFy
cm93UHJlY2lzaW9uVG9GbG9hdChtX2NsaWVudERhdGFGb3JtYXQubVNhbXBsZVJhdGUpKTsgLy8g
c2F2ZSBmb3IgbGF0ZXIKIAogICAgIC8vIE9ubHkgYWxsb2NhdGVkIGluIHRoZSBtaXhUb01vbm8g
Y2FzZQogICAgIEF1ZGlvRmxvYXRBcnJheSBidWZMOwpAQCAtMjQxLDEzICsyNDIsMTMgQEAgUGFz
c093blB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZG91YmxlIHNhbXBs
ZVJhdGUsIGJvb2wgbWl4VG9Nb24KICAgICByZXR1cm4gYXVkaW9CdXMucmVsZWFzZSgpOwogfQog
Ci1QYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGNvbnN0IGNoYXIq
IGZpbGVQYXRoLCBib29sIG1peFRvTW9ubywgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzT3duUHRy
PEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGNvbnN0IGNoYXIqIGZpbGVQYXRoLCBi
b29sIG1peFRvTW9ubywgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBBdWRpb0ZpbGVSZWFkZXIg
cmVhZGVyKGZpbGVQYXRoKTsKICAgICByZXR1cm4gcmVhZGVyLmNyZWF0ZUJ1cyhzYW1wbGVSYXRl
LCBtaXhUb01vbm8pOwogfQogCi1QYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tSW5N
ZW1vcnlBdWRpb0ZpbGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBib29sIG1p
eFRvTW9ubywgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVC
dXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXpl
LCBib29sIG1peFRvTW9ubywgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBBdWRpb0ZpbGVSZWFk
ZXIgcmVhZGVyKGRhdGEsIGRhdGFTaXplKTsKICAgICByZXR1cm4gcmVhZGVyLmNyZWF0ZUJ1cyhz
YW1wbGVSYXRlLCBtaXhUb01vbm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5oCmluZGV4IGQ1MzEyNjZjYTAzZjRiYmMy
Mjc0YjE4ODQwMjdkMjY1MmYxZGM4NTYuLjIxMjM0MzE0OTNlNjhhYmFkN2M2NDkwMDUwMzAzY2I1
ZWM0MDM4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb0ZpbGVSZWFkZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9GaWxlUmVhZGVyTWFjLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIH5B
dWRpb0ZpbGVSZWFkZXIoKTsKIAogICAgIC8vIFJldHVybnMgMCBpZiBlcnJvcgotICAgIFBhc3NP
d25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1cyhkb3VibGUgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01v
bm8pOworICAgIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRl
LCBib29sIG1peFRvTW9ubyk7CiAKICAgICBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhOyB9CiAgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
U2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3Bw
CmluZGV4IGE5YTg5MDIxZTE4ZjdkODc2N2YwNjcyZjI2ZmYzMWEzM2M1MWZlMWMuLmNkNDlhZTBh
ZmRhNjE5MzczYjI0NGFkYmJkNmU0MGQwMDk2NGUwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgQXN5bmNBdWRp
b0RlY29kZXI6On5Bc3luY0F1ZGlvRGVjb2RlcigpCiAgICAgbV90aHJlYWRJRCA9IDA7CiB9CiAK
LXZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKEFycmF5QnVmZmVyKiBhdWRpb0Rh
dGEsIGRvdWJsZSBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKQordm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMoQXJyYXlCdWZmZXIqIGF1
ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChhdWRp
b0RhdGEpOwpAQCAtOTEsMTIgKzkxLDEyIEBAIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OnJ1bkxv
b3AoKQogICAgIH0KIH0KIAotUGFzc093blB0cjxBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdU
YXNrPiBBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpjcmVhdGUoQXJyYXlCdWZmZXIq
IGF1ZGlvRGF0YSwgZG91YmxlIHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2spCitQYXNzT3duUHRyPEFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s+
IEFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmNyZWF0ZShBcnJheUJ1ZmZlciogYXVk
aW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVjb2RpbmdUYXNrKGF1ZGlvRGF0
YSwgc2FtcGxlUmF0ZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiB9CiAKLUFz
eW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OkRlY29kaW5nVGFzayhBcnJheUJ1ZmZlciog
YXVkaW9EYXRhLCBkb3VibGUgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKK0FzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OkRlY29kaW5nVGFz
ayhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1
ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZl
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgIDogbV9hdWRpb0RhdGEoYXVkaW9EYXRhKQog
ICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhz
dWNjZXNzQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3lu
Y0F1ZGlvRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuaAppbmRleCBmMmNjYThkMDc4NWNjZWE4NDVjYzIyYWQ0OWQ1MWRkNDE4YzlhOWE2Li5mMDk1
NDJkMzlkYTQzODZkMWU0YTdhOTBhY2E0Y2FiZGIzYzU5OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKQEAgLTQ3LDIxICs0NywyMSBAQCBwdWJsaWM6
CiAgICAgfkFzeW5jQXVkaW9EZWNvZGVyKCk7CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiB0
aGUgbWFpbiB0aHJlYWQuCi0gICAgdm9pZCBkZWNvZGVBc3luYyhBcnJheUJ1ZmZlciogYXVkaW9E
YXRhLCBkb3VibGUgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjayk7CisgICAgdm9pZCBkZWNvZGVBc3luYyhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9h
dCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKIAog
cHJpdmF0ZToKICAgICBjbGFzcyBEZWNvZGluZ1Rhc2sgewogICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEZWNvZGluZ1Rhc2spOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NP
d25QdHI8RGVjb2RpbmdUYXNrPiBjcmVhdGUoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZG91Ymxl
IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOworICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxEZWNvZGluZ1Rhc2s+IGNyZWF0ZShBcnJheUJ1ZmZlciog
YXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKTsKIAogICAgICAgICB2b2lkIGRlY29kZSgpOwogICAgICAgICAKICAgICBwcml2
YXRlOgotICAgICAgICBEZWNvZGluZ1Rhc2soQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZG91Ymxl
IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOworICAg
ICAgICBEZWNvZGluZ1Rhc2soQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0
ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CiAKICAgICAgICAgQXJy
YXlCdWZmZXIqIGF1ZGlvRGF0YSgpIHsgcmV0dXJuIG1fYXVkaW9EYXRhLmdldCgpOyB9Ci0gICAg
ICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Cisg
ICAgICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0K
ICAgICAgICAgQXVkaW9CdWZmZXJDYWxsYmFjayogc3VjY2Vzc0NhbGxiYWNrKCkgeyByZXR1cm4g
bV9zdWNjZXNzQ2FsbGJhY2suZ2V0KCk7IH0KICAgICAgICAgQXVkaW9CdWZmZXJDYWxsYmFjayog
ZXJyb3JDYWxsYmFjaygpIHsgcmV0dXJuIG1fZXJyb3JDYWxsYmFjay5nZXQoKTsgfQogICAgICAg
ICBBdWRpb0J1ZmZlciogYXVkaW9CdWZmZXIoKSB7IHJldHVybiBtX2F1ZGlvQnVmZmVyLmdldCgp
OyB9CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgbm90aWZ5Q29tcGxl
dGUoKTsKIAogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYXVkaW9EYXRhOwotICAgICAg
ICBkb3VibGUgbV9zYW1wbGVSYXRlOworICAgICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAg
ICAgIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKICAgICAg
ICAgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKICAgICAgICAg
UmVmUHRyPEF1ZGlvQnVmZmVyPiBtX2F1ZGlvQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDgyODA2MmVlYjdi
MmU1YzA4YTMzMWVlNTMwNzM4MTA3MjAxYWExZDguLjkwMTQyZjI3YjJkNjg5OTlhYjZiMTA5MjM5
M2YyMDZlOWI1ZDViMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQqIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBhZGRJbnB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlSW5wdXQodGhpcykpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5o
CmluZGV4IDM4YmZkM2I1NGNlYTZiMTNmMmRhOTc4ZWZhZDIzMGU0OTg2OTMzNWYuLjVhNTU1ZGFm
YmEwYWM5ODRmMTkzOWUzYWU2ZDJhNDdlY2QzYjkwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaApAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBBdWRpb1Byb2Nlc3NvcjsKIC8vIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIGlzIGFuIEF1
ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dCB3aGVyZSB0aGUgaW5wdXQgYW5k
IG91dHB1dCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBjaGFubmVscy4KIGNsYXNzIEF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiBwdWJsaWM6Ci0gICAgQXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAg
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6ZV90IGZy
YW1lc1RvUHJvY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5k
ZXggZmY0ZjA0Mjg3ODM5M2RhYjU1MTgzYTdjY2RlNGZkMzFkNGI0NzU3OC4uNmUyNGQzYjQ5YTRh
YzU4YTRlNzcxYTVhODJjMGNmZWY5ZDUwYTBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmNwcApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gQXVkaW9CdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRl
KQorUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gQXVkaW9CdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb0J1ZmZlcihudW1iZXJPZkNoYW5uZWxz
LCBudW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSkpOwogfQogCi1QYXNzUmVmUHRyPEF1ZGlvQnVm
ZmVyPiBBdWRpb0J1ZmZlcjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9ubywgZG91YmxlIHNhbXBsZVJhdGUpCitQ
YXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBBdWRpb0J1ZmZlcjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURh
dGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9ubywgZmxv
YXQgc2FtcGxlUmF0ZSkKIHsKICAgICBPd25QdHI8QXVkaW9CdXM+IGJ1cyA9IGNyZWF0ZUJ1c0Zy
b21Jbk1lbW9yeUF1ZGlvRmlsZShkYXRhLCBkYXRhU2l6ZSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRl
KTsKICAgICBpZiAoYnVzLmdldCgpKQpAQCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRyPEF1ZGlv
QnVmZmVyPiBBdWRpb0J1ZmZlcjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoY29uc3Qgdm9pZCog
ZGF0YSwgcwogICAgIHJldHVybiAwOwogfQogCi1BdWRpb0J1ZmZlcjo6QXVkaW9CdWZmZXIodW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBkb3VibGUgc2Ft
cGxlUmF0ZSkKK0F1ZGlvQnVmZmVyOjpBdWRpb0J1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX2dh
aW4oMS4wKQogICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX2xlbmd0aChu
dW1iZXJPZkZyYW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCmluZGV4IGIx
MWEyMGUwNTJmNzc5OGNhN2JmODhlMWRjZjBhMTA3ZDEzZmIwOWUuLmQ1ZTlmMmI0YjRlMWZlYTI0
ODNiMmM3ZWZiODI5MjA4NzNmNmY2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuaApAQCAtNDEsMTUgKzQxLDE1IEBAIGNsYXNzIEF1ZGlvQnVzOwogICAgIAogY2xhc3MgQXVk
aW9CdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRpb0J1ZmZlcj4gewogcHVibGljOiAgIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0ZSk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAg
ICAgLy8gUmV0dXJucyAwIGlmIGRhdGEgaXMgbm90IGEgdmFsaWQgYXVkaW8gZmlsZS4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gY3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9ubywgZG91YmxlIHNh
bXBsZVJhdGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBjcmVhdGVGcm9t
QXVkaW9GaWxlRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIGJvb2wgbWl4
VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIC8vIEZvcm1hdAogICAgIHNpemVfdCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgIGRvdWJsZSBkdXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGxlbmd0aCgpIC8gc2FtcGxlUmF0ZSgpOyB9Ci0gICAgZG91YmxlIHNh
bXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1w
bGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAKICAgICAvLyBDaGFubmVs
IGRhdGEgYWNjZXNzCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hhbm5lbHMuc2l6ZSgpOyB9CkBAIC02NiwxMSArNjYsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgcmVsZWFzZU1lbW9yeSgpOwogICAgIAogcHJvdGVjdGVkOgotICAgIEF1ZGlvQnVmZmVy
KHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91Ymxl
IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgQXVkaW9CdWZm
ZXIoQXVkaW9CdXMqIGJ1cyk7CiAKICAgICBkb3VibGUgbV9nYWluOyAvLyBzY2FsYXIgZ2Fpbgot
ICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CisgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogICAgIHNp
emVfdCBtX2xlbmd0aDsKIAogICAgIFZlY3RvcjxSZWZQdHI8RmxvYXQzMkFycmF5PiA+IG1fY2hh
bm5lbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmNwcAppbmRleCA0YTIzMGUwODIzMGNkNWJkM2I2MDVlZjc1OWM5ZTkwYjU4MWE2MzRlLi5i
NGI4NjNmNjU5YmIzMjVmYjIwMTA1OWU4Y2IyYTEyYzZkZWE5ZTViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb05vZGVPdXRw
dXQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNDgsMTIgKzQ5LDEyIEBAIGNvbnN0IGRvdWJs
ZSBVbmtub3duVGltZSA9IC0xOwogLy8gdG8gbWluaW1pemUgbGluZWFyIGludGVycG9sYXRpb24g
YWxpYXNpbmcuCiBjb25zdCBkb3VibGUgTWF4UmF0ZSA9IDEwMjQ7CiAKLVBhc3NSZWZQdHI8QXVk
aW9CdWZmZXJTb3VyY2VOb2RlPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0Nv
bnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorUGFzc1JlZlB0cjxBdWRpb0J1ZmZl
clNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCog
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1
ZGlvQnVmZmVyU291cmNlTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiB9CiAKLUF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4
dCwgZG91YmxlIHNhbXBsZVJhdGUpCitBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBBdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fYnVmZmVyKDAp
CiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKQEAgLTEwMCw3ICsxMDEsNyBAQCB2b2lkIEF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgIC8v
IENhcmVmdWwgLSB0aGlzIGlzIGEgdHJ5TG9jaygpIGFuZCBub3QgYW4gYXV0b2xvY2tlciwgc28g
d2UgbXVzdCB1bmxvY2soKSBiZWZvcmUgZXZlcnkgcmV0dXJuLgogICAgIGlmIChtX3Byb2Nlc3NM
b2NrLnRyeUxvY2soKSkgewogICAgICAgICAvLyBDaGVjayBpZiBpdCdzIHRpbWUgdG8gc3RhcnQg
cGxheWluZy4KLSAgICAgICAgZG91YmxlIHNhbXBsZVJhdGUgPSB0aGlzLT5zYW1wbGVSYXRlKCk7
CisgICAgICAgIGZsb2F0IHNhbXBsZVJhdGUgPSB0aGlzLT5zYW1wbGVSYXRlKCk7CiAgICAgICAg
IGRvdWJsZSBxdWFudHVtU3RhcnRUaW1lID0gY29udGV4dCgpLT5jdXJyZW50VGltZSgpOwogICAg
ICAgICBkb3VibGUgcXVhbnR1bUVuZFRpbWUgPSBxdWFudHVtU3RhcnRUaW1lICsgZnJhbWVzVG9Q
cm9jZXNzIC8gc2FtcGxlUmF0ZTsKIApAQCAtMTMzLDggKzEzNCw4IEBAIHZvaWQgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIC8v
IElmIHRoZSBlbmQgdGltZSBpcyBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGlzIHRpbWUg
cXVhbnR1bSwgdGhlbiBzaW1wbHkgemVybyBvdXQgdGhlCiAgICAgICAgIC8vIGZyYW1lcyBzdGFy
dGluZyBhdCB0aGUgZW5kIHRpbWUuCiAgICAgICAgIGlmIChtX2VuZFRpbWUgIT0gVW5rbm93blRp
bWUgJiYgbV9lbmRUaW1lID49IHF1YW50dW1TdGFydFRpbWUgJiYgbV9lbmRUaW1lIDwgcXVhbnR1
bUVuZFRpbWUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHplcm9TdGFydEZyYW1lID0gKG1fZW5k
VGltZSAtIHF1YW50dW1TdGFydFRpbWUpICogc2FtcGxlUmF0ZTsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGZyYW1lc1RvWmVybyA9IGZyYW1lc1RvUHJvY2VzcyAtIHplcm9TdGFydEZyYW1lOworICAg
ICAgICAgICAgc2l6ZV90IHplcm9TdGFydEZyYW1lID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCgo
bV9lbmRUaW1lIC0gcXVhbnR1bVN0YXJ0VGltZSkgKiBzYW1wbGVSYXRlKTsKKyAgICAgICAgICAg
IHNpemVfdCBmcmFtZXNUb1plcm8gPSBmcmFtZXNUb1Byb2Nlc3MgLSB6ZXJvU3RhcnRGcmFtZTsK
IAogICAgICAgICAgICAgYm9vbCBpc1NhZmUgPSB6ZXJvU3RhcnRGcmFtZSA8IGZyYW1lc1RvUHJv
Y2VzcyAmJiBmcmFtZXNUb1plcm8gPD0gZnJhbWVzVG9Qcm9jZXNzICYmIHplcm9TdGFydEZyYW1l
ICsgZnJhbWVzVG9aZXJvIDw9IGZyYW1lc1RvUHJvY2VzczsKICAgICAgICAgICAgIEFTU0VSVChp
c1NhZmUpOwpAQCAtMjcyLDEzICsyNzMsMTMgQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OnJlbmRlckZyb21CdWZmZXIoQXVkaW9CdXMqIGJ1cywgdW5zaWduZWQgZGVzdGluYXRpb24KICAg
ICAgICAgZG91YmxlIHNhbXBsZUwxID0gc291cmNlTFtyZWFkSW5kZXhdOwogICAgICAgICBkb3Vi
bGUgc2FtcGxlTDIgPSBzb3VyY2VMW3JlYWRJbmRleDJdOwogICAgICAgICBkb3VibGUgc2FtcGxl
TCA9ICgxLjAgLSBpbnRlcnBvbGF0aW9uRmFjdG9yKSAqIHNhbXBsZUwxICsgaW50ZXJwb2xhdGlv
bkZhY3RvciAqIHNhbXBsZUwyOwotICAgICAgICAqZGVzdGluYXRpb25MKysgPSBzYW1wbGVMOwor
ICAgICAgICAqZGVzdGluYXRpb25MKysgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHNhbXBsZUwp
OwogCiAgICAgICAgIGlmIChpc1N0ZXJlbykgewogICAgICAgICAgICAgZG91YmxlIHNhbXBsZVIx
ID0gc291cmNlUltyZWFkSW5kZXhdOwogICAgICAgICAgICAgZG91YmxlIHNhbXBsZVIyID0gc291
cmNlUltyZWFkSW5kZXgyXTsKICAgICAgICAgICAgIGRvdWJsZSBzYW1wbGVSID0gKDEuMCAtIGlu
dGVycG9sYXRpb25GYWN0b3IpICogc2FtcGxlUjEgKyBpbnRlcnBvbGF0aW9uRmFjdG9yICogc2Ft
cGxlUjI7Ci0gICAgICAgICAgICAqZGVzdGluYXRpb25SKysgPSBzYW1wbGVSOworICAgICAgICAg
ICAgKmRlc3RpbmF0aW9uUisrID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzYW1wbGVSKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZpcnR1YWxSZWFkSW5kZXggKz0gcGl0Y2hSYXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRleCBjNzY5
Yzk3ZmYwMDllZTllYjMzMjNmZjgyOTBhYzY3M2U3YmE0NjJlLi5mZDczMDgxZDZiM2Y4MWI0ZTFm
YjdiMmIzY2QzOGJkODAwZTc4M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBBdWRpb0NvbnRl
eHQ7CiAKIGNsYXNzIEF1ZGlvQnVmZmVyU291cmNlTm9kZSA6IHB1YmxpYyBBdWRpb1NvdXJjZU5v
ZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyU291cmNlTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgp
OwogICAgIApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYW5uZXJOb2Rl
KFBhc3NSZWZQdHI8QXVkaW9QYW5uZXJOb2RlPiBwYW5uZXJOb2RlKSB7IG1fcGFubmVyTm9kZSA9
IHBhbm5lck5vZGU7IH0KIAogcHJpdmF0ZToKLSAgICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVk
aW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcmVuZGVyRnJv
bUJ1ZmZlcihBdWRpb0J1cyosIHVuc2lnbmVkIGRlc3RpbmF0aW9uRnJhbWVPZmZzZXQsIHNpemVf
dCBudW1iZXJPZkZyYW1lcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0No
YW5uZWxNZXJnZXIuY3BwCmluZGV4IDBmOGNjMDAwMmZlMWNkMjlkM2M4MDc1NGE3OTlkOTdjYjk2
NWZmY2EuLjUxZTc4NTU4NjgzMzFhNDVmNzY1NTM1NDJkMjhjM2YxYTExZDE5OGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmNwcApAQCAtNDIsNyAr
NDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBJdCBjYW4gZWFzaWx5IGJlIGluY3JlYXNl
ZCB0byBzdXBwb3J0IG1vcmUgaWYgdGhlIHdlYiBhdWRpbyBzcGVjaWZpY2F0aW9uIGlzIHVwZGF0
ZWQuCiBjb25zdCB1bnNpZ25lZCBOdW1iZXJPZklucHV0cyA9IDY7CiAKLUF1ZGlvQ2hhbm5lbE1l
cmdlcjo6QXVkaW9DaGFubmVsTWVyZ2VyKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNh
bXBsZVJhdGUpCitBdWRpb0NoYW5uZWxNZXJnZXI6OkF1ZGlvQ2hhbm5lbE1lcmdlcihBdWRpb0Nv
bnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkKIHsKICAgICAvLyBDcmVhdGUgYSBmaXhlZCBudW1iZXIgb2YgaW5wdXRz
IChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgd2UgZGVhbCB3
aXRoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1l
cmdlci5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmgKaW5k
ZXggYjdiNzE4YjQ5MTVhODllZjdjNjA4NWQ4NjFlZGM3MDY0ZTJjZjRiZi4uZTc3M2RhZWI5MTNm
NTJkMjY1NTRmYTYzOGY4Y2Q2MGEyMGNmZmEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9DaGFubmVsTWVyZ2VyLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVkaW9Db250
ZXh0OwogICAgIAogY2xhc3MgQXVkaW9DaGFubmVsTWVyZ2VyIDogcHVibGljIEF1ZGlvTm9kZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsTWVyZ2VyPiBjcmVh
dGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxNZXJnZXI+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEF1ZGlvQ2hhbm5lbE1lcmdlcihjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCiAgICAgfQpA
QCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrTnVtYmVyT2ZD
aGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0Kik7CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9D
aGFubmVsTWVyZ2VyKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBBdWRp
b0NoYW5uZWxNZXJnZXIoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b0NoYW5uZWxTcGxpdHRlci5jcHAKaW5kZXggN2U5MGI3YTkzYzZmNGQyODVhNTE0ZTZlNGZjZWEy
NWVjNzgwZWY3Yy4uZTVjYzcyYTg2YjZhMDExNDc1ZTNkNmE4Mzg3NWY4YzU2YTNmNDhiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBJdCBjYW4gZWFzaWx5IGJl
IGluY3JlYXNlZCB0byBzdXBwb3J0IG1vcmUgaWYgdGhlIHdlYiBhdWRpbyBzcGVjaWZpY2F0aW9u
IGlzIHVwZGF0ZWQuCiBjb25zdCB1bnNpZ25lZCBOdW1iZXJPZk91dHB1dHMgPSA2OwogCi1BdWRp
b0NoYW5uZWxTcGxpdHRlcjo6QXVkaW9DaGFubmVsU3BsaXR0ZXIoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0F1ZGlvQ2hhbm5lbFNwbGl0dGVyOjpBdWRpb0NoYW5u
ZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBhZGRJbnB1dChhZG9wdFB0
cihuZXcgQXVkaW9Ob2RlSW5wdXQodGhpcykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0NoYW5uZWxTcGxpdHRlci5oCmluZGV4IDdkYWRhYzU3MWM3NDQwZmZlMWRhN2FlODU1
NGJhMTAwNTUzYzY4OTIuLjcxYjBlZjQxNWJmZDQ1ZTYzYzNmMDE3Zjc3YmRjYzlhNjQwNmNjYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNwbGl0dGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaApA
QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiAgICAgCiBjbGFzcyBBdWRpb0No
YW5uZWxTcGxpdHRlciA6IHB1YmxpYyBBdWRpb05vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NoYW5u
ZWxTcGxpdHRlcj4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9DaGFubmVsU3BsaXR0
ZXIoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAogICAgIH0KQEAgLTQ0LDcgKzQ0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwogCiBwcml2YXRlOgotICAgIEF1ZGlv
Q2hhbm5lbFNwbGl0dGVyKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBB
dWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwCmluZGV4IDM5ZThmM2RmMmEzNGE2ZjZkNzg4YWQyNWUyMjJkOGI5YjNhODA5ZmYu
LjNlZmZmZWM5MWRjMDZkODFlOTFkZWQxY2U1NTdiMzA3ZWYxM2UyZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCiBuYW1lc3BhY2UgewogICAgIAotYm9vbCBpc1NhbXBsZVJhdGVSYW5n
ZUdvb2QoZG91YmxlIHNhbXBsZVJhdGUpCitib29sIGlzU2FtcGxlUmF0ZVJhbmdlR29vZChmbG9h
dCBzYW1wbGVSYXRlKQogewogICAgIHJldHVybiBzYW1wbGVSYXRlID49IDIyMDUwICYmIHNhbXBs
ZVJhdGUgPD0gOTYwMDA7CiB9CkBAIC0xMDMsNyArMTAzLDcgQEAgUGFzc1JlZlB0cjxBdWRpb0Nv
bnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4dChkb2N1bWVudCkpOwogfQogCi1QYXNzUmVmUHRy
PEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dChEb2N1bWVu
dCogZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcywgZG91YmxlIHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxB
dWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQq
IGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChk
b2N1bWVudCk7CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4
dChEb2N1bWVudCogZG9jdW1lbnQpCiB9CiAKIC8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChu
b24tcmVhbHRpbWUpIHJlbmRlcmluZy4KLUF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3Vt
ZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0ZSkKK0F1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERv
Y3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJl
ck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3Vt
ZW50LCB0aGlzKQogICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQogICAgICwgbV9pc0F1ZGlv
VGhyZWFkRmluaXNoZWQoZmFsc2UpCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBBdWRpb0NvbnRl
eHQ6OnJlZkJ1ZmZlcihQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBidWZmZXIpCiAgICAgbV9hbGxv
Y2F0ZWRCdWZmZXJzLmFwcGVuZChidWZmZXIpOwogfQogCi1QYXNzUmVmUHRyPEF1ZGlvQnVmZmVy
PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBz
aXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlKQorUGFzc1JlZlB0cjxBdWRp
b0J1ZmZlcj4gQXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIGlm
ICghaXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNhbXBsZVJhdGUpIHx8IG51bWJlck9mQ2hhbm5lbHMg
PiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA4ZjVjMzViMGE0ZTQwOTZhZTdhMTFlYTQ5YTM1
NjQxYjcwNTA1M2IzLi5mYTczZDcwOTMwODg1NDI5ZjlhM2VlYjc4YzJmYmRjMzE4MWVhMWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNzYsNyArNzYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1l
bnQqKTsKIAogICAgIC8vIENyZWF0ZSBhbiBBdWRpb0NvbnRleHQgZm9yIG9mZmxpbmUgKG5vbi1y
ZWFsdGltZSkgcmVuZGVyaW5nLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4g
Y3JlYXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQqLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGVPZmZsaW5lQ29u
dGV4dChEb2N1bWVudCosIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJP
ZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVh
bCB+QXVkaW9Db250ZXh0KCk7CiAKQEAgLTk1LDkgKzk1LDkgQEAgcHVibGljOgogCiAgICAgQXVk
aW9EZXN0aW5hdGlvbk5vZGUqIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5v
ZGUuZ2V0KCk7IH0KICAgICBkb3VibGUgY3VycmVudFRpbWUoKSB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZS0+Y3VycmVudFRpbWUoKTsgfQotICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKTsgfQorICAgIGZsb2F0IHNhbXBsZVJh
dGUoKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpOyB9CiAKLSAgICBQ
YXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgUGFz
c1JlZlB0cjxBdWRpb0J1ZmZlcj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgUGFzc1Jl
ZlB0cjxBdWRpb0J1ZmZlcj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciwg
Ym9vbCBtaXhUb01vbm8pOwogCiAgICAgLy8gQXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBk
ZWNvZGluZy4KQEAgLTIyNiw3ICsyMjYsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAg
IEF1ZGlvQ29udGV4dChEb2N1bWVudCopOwotICAgIEF1ZGlvQ29udGV4dChEb2N1bWVudCosIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNh
bXBsZVJhdGUpOworICAgIEF1ZGlvQ29udGV4dChEb2N1bWVudCosIHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAg
dm9pZCBjb25zdHJ1Y3RDb21tb24oKTsKIAogICAgIHZvaWQgbGF6eUluaXRpYWxpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRl
eCBhNzM1Y2ExMGMwOWM2M2EyOTM4ODIwN2UwYWI4NWUyZDM5YjFjODcxLi5mZjllYmJkMzI3ODY0
OTdjY2NkOTBiNTllMDEyZGRkMjExZTM0YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0
aW9uTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRl
KQogICAgICwgbV9jdXJyZW50VGltZSgwLjApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA1OTEzMjA1Zjg0Yjk0OGQ2ODMzMzQxMDk1
MjAzMzBiZDBmNjA1NmM5Li5kN2JjN2JjMTJkNzkwMjZlYjVhZmI1N2Y0ZWZlNzI0NjhiNTM3ZDUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogICAgIAogY2xhc3MgQXVkaW9E
ZXN0aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92
aWRlciB7CiBwdWJsaWM6Ci0gICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0Kiwg
ZG91YmxlIHNhbXBsZVJhdGUpOworICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4
dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Ob2Rl
KCk7CiAgICAgCiAgICAgLy8gQXVkaW9Ob2RlICAgCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
IAogICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIHsgcmV0dXJuIG1fY3VycmVudFRpbWU7IH0KIAot
ICAgIHZpcnR1YWwgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzKCkgY29uc3QgeyByZXR1cm4gMjsgfSAvLyBGSVhNRTogdXBkYXRlIHdoZW4g
bXVsdGktY2hhbm5lbCAobW9yZSB0aGFuIHN0ZXJlbykgaXMgc3VwcG9ydGVkCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5jcHAKaW5kZXggMzY3ODc5MmQyNjc0ZGQ2OGI4
NjRjOTlhMDQ3NjAyNjAxZGVhM2RmNi4uMjEyOWM4NWQ2OTE4MDA4ODg1ZmU4NzE3MjhlYWNjNTE4
ZGQ0MDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5jcHAKQEAg
LTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb0dhaW5Ob2RlOjpB
dWRpb0dhaW5Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCitB
dWRpb0dhaW5Ob2RlOjpBdWRpb0dhaW5Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwg
bV9sYXN0R2FpbigxLjApCiAgICAgLCBtX3NhbXBsZUFjY3VyYXRlR2FpblZhbHVlcyhBdWRpb05v
ZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpIC8vIEZJWE1FOiBjYW4gcHJvYmFibHkgc2hhcmUg
dGVtcCBidWZmZXIgaW4gY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9HYWluTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9k
ZS5oCmluZGV4IGEwZDNjMmIyMDhhYThjZWYzNzE3ZDUzZjA2MmY0N2IzZjUyMGI4N2UuLmU2MzQy
MTI4Yzc3OTk0YmJkNDhkMjBkNmYxODdiMjhkNTc5MTk0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvR2Fpbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9BdWRpb0dhaW5Ob2RlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0
OwogCiBjbGFzcyBBdWRpb0dhaW5Ob2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9HYWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCog
Y29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9H
YWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9HYWluTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKSk7ICAgICAgCiAgICAgfQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgQXVkaW9HYWluKiBnYWluKCkgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAKIHByaXZhdGU6Ci0gICAgQXVkaW9HYWluTm9k
ZShBdWRpb0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9HYWluTm9kZShB
dWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGRvdWJsZSBtX2xhc3RHYWlu
OyAvLyBmb3IgZGUtemlwcGVyaW5nCiAgICAgUmVmUHRyPEF1ZGlvR2Fpbj4gbV9nYWluOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmNwcAppbmRleCA0NGZiMDJjZDhmYmEz
MTgxOTg4YjJiY2NkYzEwOTc3OWQ5MDQwNDJhLi4yZjFlZjc2NGRmOGRiZDIyYjY3M2MwZWM3MGJm
YjZmNjNiMWFiNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0xp
c3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmNw
cApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9MaXN0ZW5l
cjo6QXVkaW9MaXN0ZW5lcigpCiAgICAgOiBtX3Bvc2l0aW9uKDAsIDAsIDApCi0gICAgLCBtX29y
aWVudGF0aW9uKDAuMCwgMC4wLCAtMS4wKQotICAgICwgbV91cFZlY3RvcigwLjAsIDEuMCwgMC4w
KQorICAgICwgbV9vcmllbnRhdGlvbigwLCAwLCAtMSkKKyAgICAsIG1fdXBWZWN0b3IoMCwgMSwg
MCkKICAgICAsIG1fdmVsb2NpdHkoMCwgMCwgMCkKLSAgICAsIG1fZG9wcGxlckZhY3RvcigxLjAp
CisgICAgLCBtX2RvcHBsZXJGYWN0b3IoMSkKICAgICAsIG1fc3BlZWRPZlNvdW5kKDM0My4zKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5o
IGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5oCmluZGV4IDUyODFhODkw
N2NjYmEwYzE4MWI1MTdkN2M2YWI1MjgwNDY4NDBkY2YuLjhiNWQ4YWQxYTAzOGI1NTEzM2M3ZmIz
YTdjNDhjOTI4NjU4ZDU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvTGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0xpc3RlbmVy
LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gUG9zaXRpb24K
LSAgICB2b2lkIHNldFBvc2l0aW9uKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIHsgc2V0
UG9zaXRpb24oRmxvYXRQb2ludDNEKHgsIHksIHopKTsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24o
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBzZXRQb3NpdGlvbihGbG9hdFBvaW50M0QoeCwg
eSwgeikpOyB9CiAgICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50M0QgJnBvc2l0
aW9uKSB7IG1fcG9zaXRpb24gPSBwb3NpdGlvbjsgfQogICAgIGNvbnN0IEZsb2F0UG9pbnQzRCYg
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAKICAgICAvLyBPcmllbnRh
dGlvbgotICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUg
eiwgZG91YmxlIHVwWCwgZG91YmxlIHVwWSwgZG91YmxlIHVwWikKKyAgICB2b2lkIHNldE9yaWVu
dGF0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHVwWCwgZmxvYXQgdXBZLCBm
bG9hdCB1cFopCiAgICAgewogICAgICAgICBzZXRPcmllbnRhdGlvbihGbG9hdFBvaW50M0QoeCwg
eSwgeikpOwogICAgICAgICBzZXRVcFZlY3RvcihGbG9hdFBvaW50M0QodXBYLCB1cFksIHVwWikp
OwpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRQb2ludDNEJiB1cFZl
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdXBWZWN0b3I7IH0KIAogICAgIC8vIFZlbG9jaXR5Ci0g
ICAgdm9pZCBzZXRWZWxvY2l0eShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KSB7IHNldFZl
bG9jaXR5KEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7IH0KKyAgICB2b2lkIHNldFZlbG9jaXR5KGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgc2V0VmVsb2NpdHkoRmxvYXRQb2ludDNEKHgsIHks
IHopKTsgfQogICAgIHZvaWQgc2V0VmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludDNEICZ2ZWxvY2l0
eSkgeyBtX3ZlbG9jaXR5ID0gdmVsb2NpdHk7IH0KICAgICBjb25zdCBGbG9hdFBvaW50M0QmIHZl
bG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9Ob2RlLmNwcAppbmRleCAwYzE3ZGU2MGNiZTZhYzBkOTdmMDUwNjMwNjU0ZTE4YTg5
MzUzMjc4Li5jMmJiYWY3MWIxYWIzOTBmZDFlOTcyZjg4MzYwYTY4YTlhZWQ4MzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1BdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRl
eHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorQXVkaW9Ob2RlOjpBdWRpb05vZGUoQXVkaW9Db250ZXh0
KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9pc0luaXRpYWxpemVkKGZhbHNl
KQogICAgICwgbV9ub2RlVHlwZShOb2RlVHlwZVVua25vd24pCiAgICAgLCBtX2NvbnRleHQoY29u
dGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKaW5kZXggMDA4NzFkZDU5NjM5NTMy
YmU2ZDc3YzM0ZjcyMzY4NjA1NmY3MDNlNy4uODZmZmU3Y2ZhNDU1MjYxNWE5Yjk1ODM5NGJkZTdh
ZDQ4ZWRmYzdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgY2xhc3MgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKICAgICBlbnVtIHsgUHJvY2Vzc2luZ1Np
emVJbkZyYW1lcyA9IDEyOCB9OwogCi0gICAgQXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCosIGRvdWJs
ZSBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb05vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9Ob2RlKCk7CiAKICAgICBBdWRpb0NvbnRleHQqIGNv
bnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KQEAgLTExNyw3ICsxMTcsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBjb25uZWN0KEF1ZGlvTm9kZSogZGVzdGluYXRpb24sIHVuc2lnbmVk
IG91dHB1dEluZGV4ID0gMCwgdW5zaWduZWQgaW5wdXRJbmRleCA9IDApOwogICAgIGJvb2wgZGlz
Y29ubmVjdCh1bnNpZ25lZCBvdXRwdXRJbmRleCA9IDApOwogCi0gICAgZG91YmxlIHNhbXBsZVJh
dGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAKICAgICAvLyBwcm9jZXNzSWZOZWNl
c3NhcnkoKSBpcyBjYWxsZWQgYnkgb3VyIG91dHB1dChzKSB3aGVuIHRoZSByZW5kZXJpbmcgZ3Jh
cGggbmVlZHMgdGhpcyBBdWRpb05vZGUgdG8gcHJvY2Vzcy4KICAgICAvLyBUaGlzIG1ldGhvZCBl
bnN1cmVzIHRoYXQgdGhlIEF1ZGlvTm9kZSB3aWxsIG9ubHkgcHJvY2VzcyBvbmNlIHBlciByZW5k
ZXJpbmcgdGltZSBxdWFudHVtIGV2ZW4gaWYgaXQncyBjYWxsZWQgcmVwZWF0ZWRseS4KQEAgLTE1
MCw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIHZvbGF0aWxlIGJvb2wgbV9pc0luaXRpYWxpemVk
OwogICAgIE5vZGVUeXBlIG1fbm9kZVR5cGU7CiAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gbV9j
b250ZXh0OwotICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CisgICAgZmxvYXQgbV9zYW1wbGVSYXRl
OwogICAgIFZlY3RvcjxPd25QdHI8QXVkaW9Ob2RlSW5wdXQ+ID4gbV9pbnB1dHM7CiAgICAgVmVj
dG9yPE93blB0cjxBdWRpb05vZGVPdXRwdXQ+ID4gbV9vdXRwdXRzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNwcAppbmRleCA3ZDI2ZmVhYzk0N2Q3NmM0YmFm
NDc4NDdmODFmYWU0NzA1YzI5MzI0Li5mYWY3ZjE1OWU0NDMyMTQ0NmVkNjQzNjFjMmRmNDQ1ZDMw
NWE4ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCiAgICAgICAg
IHggPSAwLjA7CiB9CiAKLUF1ZGlvUGFubmVyTm9kZTo6QXVkaW9QYW5uZXJOb2RlKEF1ZGlvQ29u
dGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCitBdWRpb1Bhbm5lck5vZGU6OkF1ZGlv
UGFubmVyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fcGFubmluZ01vZGVsKFBh
bm5lcjo6UGFubmluZ01vZGVsSFJURikKICAgICAsIG1fbGFzdEdhaW4oLTEuMCkKQEAgLTE4OCw3
ICsxODgsNyBAQCB2b2lkIEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZhdGlvbihkb3Vi
bGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aQogCiAgICAgRmxvYXRQb2ludDNEIHVw
ID0gbGlzdGVuZXJSaWdodC5jcm9zcyhsaXN0ZW5lckZyb250Tm9ybSk7CiAKLSAgICBkb3VibGUg
dXBQcm9qZWN0aW9uID0gc291cmNlTGlzdGVuZXIuZG90KHVwKTsKKyAgICBmbG9hdCB1cFByb2pl
Y3Rpb24gPSBzb3VyY2VMaXN0ZW5lci5kb3QodXApOwogCiAgICAgRmxvYXRQb2ludDNEIHByb2pl
Y3RlZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7CiAgICAgcHJv
amVjdGVkU291cmNlLm5vcm1hbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bh
bm5lck5vZGUuaAppbmRleCA2MWUzNGE5N2MzYmRlODQ0YjEyYWIwZDUwYjYwMjAwZTU4YWI2YjJl
Li42ZWNlYmVhYWUzMWNhN2RhYzM4NTc5ZjFkNWEwMzVkZTM3MjJjZjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFNPVU5ERklFTEQgPSAyLAogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxBdWRpb1Bhbm5lck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBz
YW1wbGVSYXRlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvUGFubmVyTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9QYW5uZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsKICAgICB9CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIEF1ZGlvR2FpbiogY29u
ZUdhaW4oKSB7IHJldHVybiBtX2NvbmVHYWluLmdldCgpOyB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogCiBwcml2YXRlOgotICAgIEF1ZGlvUGFubmVyTm9kZShBdWRp
b0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9QYW5uZXJOb2RlKEF1ZGlv
Q29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgY29tYmlu
ZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4KICAgICBmbG9hdCBkaXN0YW5j
ZUNvbmVHYWluKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bh
cmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDkw
NTY0OTg0ZGYyZDNjZjNjOGYyZTc3NTQ2NjQ2M2U3ZTkwMzgwZjkuLmJlOTI3OWZkZjE4MGFkMDRh
NjI0YmQyNTAxNDk5ZTUyMzc0ODkzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJBdWRpb05vZGUuaCIKICNpbmNs
dWRlICJBdWRpb1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDEz
ICs0NCwxMyBAQCBmbG9hdCBBdWRpb1BhcmFtOjp2YWx1ZSgpCiAgICAgLy8gVXBkYXRlIHZhbHVl
IGZvciB0aW1lbGluZS4KICAgICBpZiAoY29udGV4dCgpICYmIGNvbnRleHQoKS0+aXNBdWRpb1Ro
cmVhZCgpKSB7CiAgICAgICAgIGJvb2wgaGFzVmFsdWU7Ci0gICAgICAgIGZsb2F0IHRpbWVsaW5l
VmFsdWUgPSBtX3RpbWVsaW5lLnZhbHVlRm9yQ29udGV4dFRpbWUoY29udGV4dCgpLCBtX3ZhbHVl
LCBoYXNWYWx1ZSk7CisgICAgICAgIGZsb2F0IHRpbWVsaW5lVmFsdWUgPSBtX3RpbWVsaW5lLnZh
bHVlRm9yQ29udGV4dFRpbWUoY29udGV4dCgpLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fdmFs
dWUpLCBoYXNWYWx1ZSk7CiAKICAgICAgICAgaWYgKGhhc1ZhbHVlKQogICAgICAgICAgICAgbV92
YWx1ZSA9IHRpbWVsaW5lVmFsdWU7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0PihtX3ZhbHVlKTsKKyAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtX3ZhbHVl
KTsKIH0KIAogdm9pZCBBdWRpb1BhcmFtOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkKQEAgLTYyLDcg
KzYzLDcgQEAgdm9pZCBBdWRpb1BhcmFtOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkKIAogZmxvYXQg
QXVkaW9QYXJhbTo6c21vb3RoZWRWYWx1ZSgpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0PihtX3Ntb290aGVkVmFsdWUpOworICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KG1fc21vb3RoZWRWYWx1ZSk7CiB9CiAKIGJvb2wgQXVkaW9QYXJhbTo6c21vb3RoKCkKQEAgLTcx
LDcgKzcyLDcgQEAgYm9vbCBBdWRpb1BhcmFtOjpzbW9vdGgoKQogICAgIC8vIFNtb290aGluZyBl
ZmZlY3RpdmVseSBpcyBwZXJmb3JtZWQgYnkgdGhlIHRpbWVsaW5lLgogICAgIGJvb2wgdXNlVGlt
ZWxpbmVWYWx1ZSA9IGZhbHNlOwogICAgIGlmIChjb250ZXh0KCkpCi0gICAgICAgIG1fdmFsdWUg
PSBtX3RpbWVsaW5lLnZhbHVlRm9yQ29udGV4dFRpbWUoY29udGV4dCgpLCBtX3ZhbHVlLCB1c2VU
aW1lbGluZVZhbHVlKTsKKyAgICAgICAgbV92YWx1ZSA9IG1fdGltZWxpbmUudmFsdWVGb3JDb250
ZXh0VGltZShjb250ZXh0KCksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV92YWx1ZSksIHVzZVRp
bWVsaW5lVmFsdWUpOwogICAgIAogICAgIGlmIChtX3Ntb290aGVkVmFsdWUgPT0gbV92YWx1ZSkg
ewogICAgICAgICAvLyBTbW9vdGhlZCB2YWx1ZSBoYXMgYWxyZWFkeSBhcHByb2FjaGVkIGFuZCBz
bmFwcGVkIHRvIHZhbHVlLgpAQCAtMTAyLDEyICsxMDMsMTIgQEAgdm9pZCBBdWRpb1BhcmFtOjpj
YWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyhmbG9hdCogdmFsdWVzLCB1bnNpZ25lZCBudW1i
ZXJPZlYKICAgICAvLyBDYWxjdWxhdGUgdmFsdWVzIGZvciB0aGlzIHJlbmRlciBxdWFudHVtLgog
ICAgIC8vIE5vcm1hbGx5IG51bWJlck9mVmFsdWVzIHdpbGwgZXF1YWwgQXVkaW9Ob2RlOjpQcm9j
ZXNzaW5nU2l6ZUluRnJhbWVzICh0aGUgcmVuZGVyIHF1YW50dW0gc2l6ZSkuCiAgICAgZmxvYXQg
c2FtcGxlUmF0ZSA9IGNvbnRleHQoKS0+c2FtcGxlUmF0ZSgpOwotICAgIGZsb2F0IHN0YXJ0VGlt
ZSA9IGNvbnRleHQoKS0+Y3VycmVudFRpbWUoKTsKKyAgICBmbG9hdCBzdGFydFRpbWUgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KGNvbnRleHQoKS0+Y3VycmVudFRpbWUoKSk7CiAgICAgZmxvYXQg
ZW5kVGltZSA9IHN0YXJ0VGltZSArIG51bWJlck9mVmFsdWVzIC8gc2FtcGxlUmF0ZTsKIAogICAg
IC8vIE5vdGUgd2UncmUgcnVubmluZyBjb250cm9sIHJhdGUgYXQgdGhlIHNhbXBsZS1yYXRlLgog
ICAgIC8vIFBhc3MgaW4gdGhlIGN1cnJlbnQgdmFsdWUgYXMgZGVmYXVsdCB2YWx1ZS4KLSAgICBt
X3ZhbHVlID0gbV90aW1lbGluZS52YWx1ZXNGb3JUaW1lUmFuZ2Uoc3RhcnRUaW1lLCBlbmRUaW1l
LCBtX3ZhbHVlLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzLCBzYW1wbGVSYXRlLCBzYW1wbGVSYXRl
KTsKKyAgICBtX3ZhbHVlID0gbV90aW1lbGluZS52YWx1ZXNGb3JUaW1lUmFuZ2Uoc3RhcnRUaW1l
LCBlbmRUaW1lLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fdmFsdWUpLCB2YWx1ZXMsIG51bWJl
ck9mVmFsdWVzLCBzYW1wbGVSYXRlLCBzYW1wbGVSYXRlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbVRp
bWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5j
cHAKaW5kZXggMDQ1MTg4NDQ1NmZhZTE5MTg1NzA4YWEyZjYxMWJlYjNkMzQwNDY0My4uMmVlMTM0
YWUzN2EyMjEwMjg5NmQ5NmU4ZWFjMzBhM2E0ODNmM2JjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQXVkaW9QYXJhbVRpbWVsaW5lLmgiCiAKICNpbmNsdWRlICJBdWRpb1V0aWxpdGllcy5o
IgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xMjQsOCArMTI1LDggQEAgZmxvYXQgQXVk
aW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dCogY29udGV4
dCwgZmxvYXQgZGVmYXUKICAgICAvLyBBc2sgZm9yIGp1c3QgYSBzaW5nbGUgdmFsdWUuCiAgICAg
ZmxvYXQgdmFsdWU7CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IGNvbnRleHQtPnNhbXBsZVJhdGUo
KTsKLSAgICBmbG9hdCBzdGFydFRpbWUgPSBjb250ZXh0LT5jdXJyZW50VGltZSgpOwotICAgIGZs
b2F0IGVuZFRpbWUgPSBzdGFydFRpbWUgKyAxLjEgLyBzYW1wbGVSYXRlOyAvLyB0aW1lIGp1c3Qg
YmV5b25kIG9uZSBzYW1wbGUtZnJhbWUKKyAgICBmbG9hdCBzdGFydFRpbWUgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KGNvbnRleHQtPmN1cnJlbnRUaW1lKCkpOworICAgIGZsb2F0IGVuZFRpbWUg
PSBzdGFydFRpbWUgKyAxLjFmIC8gc2FtcGxlUmF0ZTsgLy8gdGltZSBqdXN0IGJleW9uZCBvbmUg
c2FtcGxlLWZyYW1lCiAgICAgZmxvYXQgY29udHJvbFJhdGUgPSBzYW1wbGVSYXRlIC8gQXVkaW9O
b2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzOyAvLyBvbmUgcGFyYW1ldGVyIGNoYW5nZSBwZXIg
cmVuZGVyIHF1YW50dW0KICAgICB2YWx1ZSA9IHZhbHVlc0ZvclRpbWVSYW5nZShzdGFydFRpbWUs
IGVuZFRpbWUsIGRlZmF1bHRWYWx1ZSwgJnZhbHVlLCAxLCBzYW1wbGVSYXRlLCBjb250cm9sUmF0
ZSk7CiAKQEAgLTE1Nyw3ICsxNTgsNyBAQCBmbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVl
c0ZvclRpbWVSYW5nZShmbG9hdCBzdGFydFRpbWUsCiB9CiAKIC8vIFJldHVybnMgdGhlIHJvdW5k
ZWQgZG93biBpbnRlZ2VyIHNhbXBsZS1mcmFtZSBmb3IgdGhlIHRpbWUgYW5kIHNhbXBsZS1yYXRl
Lgotc3RhdGljIHVuc2lnbmVkIHRpbWVUb1NhbXBsZUZyYW1lKGRvdWJsZSB0aW1lLCBkb3VibGUg
c2FtcGxlUmF0ZSkKK3N0YXRpYyB1bnNpZ25lZCB0aW1lVG9TYW1wbGVGcmFtZShkb3VibGUgdGlt
ZSwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBkb3VibGUgayA9IDAuNSAvIHNhbXBsZVJhdGU7
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPigodGltZSArIGspICogc2FtcGxlUmF0
ZSk7CkBAIC0xODQsNyArMTg1LDcgQEAgZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZXNG
b3JUaW1lUmFuZ2VJbXBsKGZsb2F0IHN0YXJ0VGltZSwKICAgICB9CiAKICAgICAvLyBNYWludGFp
biBhIHJ1bm5pbmcgdGltZSBhbmQgaW5kZXggZm9yIHdyaXRpbmcgdGhlIHZhbHVlcyBidWZmZXIu
Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lID0gc3RhcnRUaW1lOworICAgIGZsb2F0IGN1cnJlbnRU
aW1lID0gc3RhcnRUaW1lOwogICAgIHVuc2lnbmVkIHdyaXRlSW5kZXggPSAwOwogCiAgICAgLy8g
SWYgZmlyc3QgZXZlbnQgaXMgYWZ0ZXIgc3RhcnRUaW1lIHRoZW4gZmlsbCBpbml0aWFsIHBhcnQg
b2YgdmFsdWVzIGJ1ZmZlciB3aXRoIGRlZmF1bHRWYWx1ZQpAQCAtMjQ1LDggKzI0Niw4IEBAIGZs
b2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVzRm9yVGltZVJhbmdlSW1wbChmbG9hdCBzdGFy
dFRpbWUsCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1t3cml0ZUluZGV4XSA9IHZhbHVlOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJbnRlcnBvbGF0ZSBpbiBs
b2cgc3BhY2UuCi0gICAgICAgICAgICAgICAgdmFsdWUxID0gbG9nMih2YWx1ZTEpOwotICAgICAg
ICAgICAgICAgIHZhbHVlMiA9IGxvZzIodmFsdWUyKTsKKyAgICAgICAgICAgICAgICB2YWx1ZTEg
PSBsb2cyZih2YWx1ZTEpOworICAgICAgICAgICAgICAgIHZhbHVlMiA9IGxvZzJmKHZhbHVlMik7
CiAKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogb3B0aW1pemUgdG8gbm90IHVzZSBwb3coKSBp
biBpbm5lciBsb29wLCB0aGlzIGlzIGp1c3QgYSBzaW1wbGUgZXhwb25lbnRpYWwgcmFtcC4KICAg
ICAgICAgICAgICAgICBmb3IgKDsgd3JpdGVJbmRleCA8IGZpbGxUb0ZyYW1lOyArK3dyaXRlSW5k
ZXgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmgKaW5kZXggNjA5
MTM3MTZiYTBmZGM4OGNlYWRhMmE3MzU1NTk3YmIzNGVhNmU2MC4uYTZiZGQ0MjdiOTkyMjNlNzg3
Y2NhM2ZjMGVlMjc3ZjE2MTZkMzg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9T
b3VyY2VOb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBdWRpb1NvdXJjZU5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAgICBBdWRp
b1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAg
ICBBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgIHsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IGNl
ZDA3YjhiYWQ1MDE0Njk1NjBmODBkN2I1MTc5YTZiMGQzYWI4MjQuLmYxNmQ4ZTVmOTZkNzU3YmY5
NWQ1NzI0MmI2ZTJkYjk1Y2U2MWNmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0Jp
cXVhZEZpbHRlck5vZGUuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQqIGNv
bnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVy
Tm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIC8vIEluaXRp
YWxseSBzZXR1cCBhcyBsb3dwYXNzIGZpbHRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0Jp
cXVhZEZpbHRlck5vZGUuaAppbmRleCBkZmUxN2IzYWQ2YTI5MTI4NzVhMzU3OWU2NmU0Y2JiZDE0
M2MzNzcxLi42ODNiMmEzOWQ0NzRmODNlZWNkNmI1NjUyYzQyMWVlNjgwYjU3NzkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICAgICAgQUxMUEFTUyA9IDcKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91
YmxlIHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QmlxdWFkRmlsdGVyTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmlxdWFkRmlsdGVyTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKSk7ICAgICAgCiAgICAgfQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgQXVk
aW9QYXJhbSogZ2FpbigpIHsgcmV0dXJuIGJpcXVhZFByb2Nlc3NvcigpLT5wYXJhbWV0ZXIzKCk7
IH0KICAgICAKIHByaXZhdGU6Ci0gICAgQmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQqLCBk
b3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQqLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIEJpcXVhZFByb2Nlc3NvciogYmlxdWFkUHJvY2Vzc29y
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmlxdWFkUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKaW5kZXgg
NTQwZTFmYTEwOTVkNzZmYzg5ZmM1MTlkNWFhNTU5NDRiOWI5YThhZC4uYzc1NTI3NzQ4NWI2Nzlk
ZjNlODlmM2FmMGUzMTVkOGVmNjM5MmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKLUJpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKGRvdWJsZSBzYW1wbGVS
YXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSkKK0JpcXVh
ZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQogICAgIDogQXVkaW9EU1BLZXJuZWxQ
cm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fdHlwZShMb3dQ
YXNzKQogICAgICwgbV9wYXJhbWV0ZXIxKDApCkBAIC01MSw3ICs1MSw3IEBAIEJpcXVhZFByb2Nl
c3Nvcjo6QmlxdWFkUHJvY2Vzc29yKGRvdWJsZSBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZD
aGFubmVscywgYm9vCiAgICAgICAgIGluaXRpYWxpemUoKTsKIH0KIAotQmlxdWFkUHJvY2Vzc29y
OjpCaXF1YWRQcm9jZXNzb3IoRmlsdGVyVHlwZSB0eXBlLCBkb3VibGUgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCitCaXF1YWRQcm9jZXNz
b3I6OkJpcXVhZFByb2Nlc3NvcihGaWx0ZXJUeXBlIHR5cGUsIGZsb2F0IHNhbXBsZVJhdGUsIHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQogICAgIDogQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1f
dHlwZSh0eXBlKQogICAgICwgbV9wYXJhbWV0ZXIxKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0JpcXVhZFByb2Nlc3Nvci5oCmluZGV4IDNjNTIxODUyZDAzMTc4NmEyYzU2ZGY2OWQ1MDY2YWYz
ODViYTM1YTguLmU3NDg3MjYyYWRhMTBlYWI1NDhiNTlhMzRhNWI4MTAyMzUzMTc1ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCkBAIC00OSwxMCArNDksMTAg
QEAgcHVibGljOgogICAgICAgICBBbGxwYXNzID0gNwogICAgIH07CiAKLSAgICBCaXF1YWRQcm9j
ZXNzb3IoZG91YmxlIHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1
dG9Jbml0aWFsaXplKTsKKyAgICBCaXF1YWRQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOwogCiAgICAgLy8gT2xk
IGNvbnN0cnVjdG9yIHVzZWQgYnkgZGVwcmVjYXRlZCBMb3dQYXNzMkZpbHRlck5vZGUgYW5kIEhp
Z2hQYXNzMkZpbHRlck5vZGUKLSAgICBCaXF1YWRQcm9jZXNzb3IoRmlsdGVyVHlwZSwgZG91Ymxl
IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXpl
ID0gdHJ1ZSk7CisgICAgQmlxdWFkUHJvY2Vzc29yKEZpbHRlclR5cGUsIGZsb2F0IHNhbXBsZVJh
dGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplID0gdHJ1ZSk7
CiAKICAgICB2aXJ0dWFsIH5CaXF1YWRQcm9jZXNzb3IoKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKaW5kZXggMjhkNTdkYjMxMDQyYjc4OWQzYWY0YmQ0
MWI3OGFmNzM5ODMzODI4Yy4uMzE1ODM1NjE5NzFhNjk5YmIzMGM1YTI4YzFhZmMyYWFjYjFkNjNm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgY29uc3Qgc2l6ZV90IE1heEZGVFNpemUgPSAzMjc2ODsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1Db252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCogY29u
dGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCitDb252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05v
ZGVJbnB1dCh0aGlzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCmlu
ZGV4IDdiNzFiYTk2ZGNhNWUwNzUwOWZmYTYxOTdmYTllM2RlNjE2ZGY5MTQuLmZiMjlkNWM1ZDI4
N2I5MGJlNDUwNjY3NWYzNTViZmJiYjc4NDNkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgUmV2ZXJiOwogICAgIAogY2xh
c3MgQ29udm9sdmVyTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENvbnZvbHZlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQs
IGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnZvbHZlck5vZGU+
IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnZvbHZlck5vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkpOyAgICAgIAogICAgIH0KQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIEF1ZGlv
QnVmZmVyKiBidWZmZXIoKTsKIAogcHJpdmF0ZToKLSAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29u
dGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4
dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgT3duUHRyPFJldmVyYj4gbV9yZXZlcmI7CiAg
ICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX2J1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGYxYTcy
NjMzMzg5M2EzNTYwOWFkOWY3NDQyZDE5Mjc5Y2ZjOGMzMWYuLmY3ZGIzNGUwNThjYWJlMTYxNjAz
Y2FiYTAwOWZkMWYxOWQ0OTgxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2
b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6aW5pdGlhbGl6ZSgpCiAgICAgaWYgKGlz
SW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG91YmxlIGhhcmR3YXJlU2Ft
cGxlUmF0ZSA9IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpOworICAgIGZs
b2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSA9IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxl
UmF0ZSgpOwogI2lmbmRlZiBOREVCVUcgICAgCiAgICAgZnByaW50ZihzdGRlcnIsICI+Pj4+IGhh
cmR3YXJlU2FtcGxlUmF0ZSA9ICVmXG4iLCBoYXJkd2FyZVNhbXBsZVJhdGUpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oCmluZGV4IGYxZDY4OWRiMDljOTM1OThiYjM0NjM1ODcyZDE3MzE2ODZkNDhjMTIuLjYz
MGJkYzMzNTJkNzVhNzM0Mjg2OTc3ZGZiOWEyYmU0NGYxZTdhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAg
IHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKTsKICAgICAKLSAgICBkb3VibGUgc2FtcGxlUmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPnNhbXBsZVJhdGUoKTsgfQorICAgIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uLT5zYW1wbGVSYXRl
KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydFJlbmRlcmluZygpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwCmluZGV4IDhlMGI0MGVmY2JiN2Qx
ZTBmMzlmNjYwMzI2NmJjYzIyNDI0ZGQ2YjIuLmFlZGExODljNWE5NTU3MTAyMzE3YjQ4MGYyMGFi
OTg2Y2UyZjRmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQ
S2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5j
cHAKQEAgLTMzLDggKzMzLDggQEAKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgCi1jb25zdCBk
b3VibGUgRGVmYXVsdE1heERlbGF5VGltZSA9IDEuMDsKLWNvbnN0IGRvdWJsZSBTbW9vdGhpbmdU
aW1lQ29uc3RhbnQgPSAwLjAyMDsgLy8gMjBtcworY29uc3QgZmxvYXQgRGVmYXVsdE1heERlbGF5
VGltZSA9IDE7Citjb25zdCBmbG9hdCBTbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwLjAyMGY7IC8v
IDIwbXMKICAgCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDcgKzU0LDcgQEAgRGVsYXlE
U1BLZXJuZWw6OkRlbGF5RFNQS2VybmVsKERlbGF5UHJvY2Vzc29yKiBwcm9jZXNzb3IpCiAgICAg
bV9zbW9vdGhpbmdSYXRlID0gQXVkaW9VdGlsaXRpZXM6OmRpc2NyZXRlVGltZUNvbnN0YW50Rm9y
U2FtcGxlUmF0ZShTbW9vdGhpbmdUaW1lQ29uc3RhbnQsIHByb2Nlc3Nvci0+c2FtcGxlUmF0ZSgp
KTsKIH0KIAotRGVsYXlEU1BLZXJuZWw6OkRlbGF5RFNQS2VybmVsKGRvdWJsZSBtYXhEZWxheVRp
bWUsIGRvdWJsZSBzYW1wbGVSYXRlKQorRGVsYXlEU1BLZXJuZWw6OkRlbGF5RFNQS2VybmVsKGRv
dWJsZSBtYXhEZWxheVRpbWUsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0RTUEtlcm5l
bChzYW1wbGVSYXRlKQogICAgICwgbV9tYXhEZWxheVRpbWUobWF4RGVsYXlUaW1lKQogICAgICwg
bV93cml0ZUluZGV4KDApCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRGVsYXlEU1BLZXJuZWw6OnBy
b2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJh
CiAgICAgaWYgKCFzb3VyY2UgfHwgIWRlc3RpbmF0aW9uKQogICAgICAgICByZXR1cm47CiAgICAg
ICAgIAotICAgIGRvdWJsZSBzYW1wbGVSYXRlID0gdGhpcy0+c2FtcGxlUmF0ZSgpOworICAgIGZs
b2F0IHNhbXBsZVJhdGUgPSB0aGlzLT5zYW1wbGVSYXRlKCk7CiAgICAgZG91YmxlIGRlbGF5VGlt
ZSA9IGRlbGF5UHJvY2Vzc29yKCkgPyBkZWxheVByb2Nlc3NvcigpLT5kZWxheVRpbWUoKS0+dmFs
dWUoKSA6IG1fZGVzaXJlZERlbGF5RnJhbWVzIC8gc2FtcGxlUmF0ZTsKIAogICAgIC8vIE1ha2Ug
c3VyZSB0aGUgZGVsYXkgdGltZSBpcyBpbiBhIHZhbGlkIHJhbmdlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0RlbGF5RFNQS2VybmVsLmgKaW5kZXggMmFlMzZjYjg2NDdlMDYwMDZjZTUyNTRkYjQ1
YjFkN2MzMGUxZTgyNi4uNzlhMzk1NjhiNzg4ZjE3MWYxMmY2N2YwYmZhZDczYWZkMTZlODhiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oCkBAIC0zNiw3ICszNiw3
IEBAIGNsYXNzIERlbGF5UHJvY2Vzc29yOwogY2xhc3MgRGVsYXlEU1BLZXJuZWwgOiBwdWJsaWMg
QXVkaW9EU1BLZXJuZWwgewogcHVibGljOiAgCiAgICAgRGVsYXlEU1BLZXJuZWwoRGVsYXlQcm9j
ZXNzb3IqKTsKLSAgICBEZWxheURTUEtlcm5lbChkb3VibGUgbWF4RGVsYXlUaW1lLCBkb3VibGUg
c2FtcGxlUmF0ZSk7CisgICAgRGVsYXlEU1BLZXJuZWwoZG91YmxlIG1heERlbGF5VGltZSwgZmxv
YXQgc2FtcGxlUmF0ZSk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgZmxv
YXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5vZGUu
Y3BwCmluZGV4IGI1NzhkNjA0ODBjZWMxODYzYTYyY2Y2N2YyN2NiZWU4ZGM3ZjUxMDIuLjJhNTI1
ZGQxYTZjMThiOWRkNWM0NGE3ZTM0NGI3MGU5YjE0OWY5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vRGVsYXlOb2RlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLURlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNh
bXBsZVJhdGUpCitEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQogewogICAgIG1fcHJvY2Vzc29yID0gYWRvcHRQdHIobmV3IERlbGF5UHJvY2Vz
c29yKHNhbXBsZVJhdGUsIDEpKTsgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9EZWxheU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCmlu
ZGV4IDkzYWQyMjc5ZDMxNjVkNjFmN2NjMDMwZGIzZmU5ZWQzNzI1MGUwOWUuLjNkNThhODkxMzdh
MzZhM2NkNWRmOGNlOWFlODU1MmIzNzI4ZTI2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5
Tm9kZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEF1ZGlvUGFyYW07CiAKIGNsYXNzIERlbGF5
Tm9kZSA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8RGVsYXlOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBk
b3VibGUgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0
ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGF5Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAg
ICAgCiAgICAgfQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSogZGVs
YXlUaW1lKCk7CiAKIHByaXZhdGU6Ci0gICAgRGVsYXlOb2RlKEF1ZGlvQ29udGV4dCosIGRvdWJs
ZSBzYW1wbGVSYXRlKTsKKyAgICBEZWxheU5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CiAKICAgICBEZWxheVByb2Nlc3NvciogZGVsYXlQcm9jZXNzb3IoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxEZWxheVByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAppbmRleCA1ZmRjOGRmYzJhMWE1NjJm
NTk2NDVlZDc5YzhmYzVmYWZlYTJjZGU0Li44ZWQzZTQzMzdlMDlmMTMwMTdmYzZmM2Y3ZWYyZmJk
YzhmMjMyNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nl
c3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3Bw
CkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGVsYXlQcm9jZXNz
b3I6OkRlbGF5UHJvY2Vzc29yKGRvdWJsZSBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzKQorRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nv
cihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogewogICAgIG1fZGVsYXlUaW1lID0gQXVk
aW9QYXJhbTo6Y3JlYXRlKCJkZWxheVRpbWUiLCAwLjAsIDAuMCwgMS4wKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDQ4NDRjNGIyNjgxYWY4Mjk4NzhkZTll
OWYzMWU4YWIxYTJlZjg0ZGQuLjE1NDI4Y2U3NTk2ODVmYmYyOGI4NWEwNjBkMGNlYTBiM2IzMzM0
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaApAQCAtMzcsNyAr
MzcsNyBAQCBjbGFzcyBBdWRpb0RTUEtlcm5lbDsKICAgICAKIGNsYXNzIERlbGF5UHJvY2Vzc29y
IDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKIHB1YmxpYzoKLSAgICBEZWxheVBy
b2Nlc3Nvcihkb3VibGUgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7Cisg
ICAgRGVsYXlQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscyk7CiAgICAgdmlydHVhbCB+RGVsYXlQcm9jZXNzb3IoKTsKICAgICAKICAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCA2ZmVi
Mjk2MDkxODY4OWE2OGI3MDNmMDg1MjMyN2Y0YjE0NWI2ZDJmLi5lYThiNTg5MjIzNTZhYTEzNjUx
MzJhZWYzMWZhYWY2MDNmNzQ1NDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpCiB7CiAgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmgK
aW5kZXggN2FlNzVlYWQwMmI0OTVkNzZjNDY2YWFkYTk2NGIwMGRiNmRiNGJhMC4uZDcxOGFiMzQx
Y2MwMWUxODhjZjIxMzA1Njc0NjVmMDQ4YmRhMDVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFz
cyBEeW5hbWljc0NvbXByZXNzb3I7CiAgICAgCiBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
IDogcHVibGljIEF1ZGlvTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RHlu
YW1pY3NDb21wcmVzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91Ymxl
IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RHluYW1pY3NDb21wcmVzc29yTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRHluYW1pY3NDb21wcmVzc29yTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCiAgICAgfQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgotICAgIER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAg
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CiAKICAgICBPd25QdHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29tcHJlc3NvcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9IaWdoUGFzczJGaWx0ZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuY3Bw
CmluZGV4IDI3OTQ2ZGQ5OWZhMzQwOWZjYmI1YTZkZjY2MDg4ZmRlYmE1MzY2MzguLjUyMDc4NWY4
MDY4ZmQ1MjVlYzJiYjVhMjJhN2I4ZjAwOGQxYWUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotSGlnaFBhc3MyRmlsdGVyTm9kZTo6SGlnaFBhc3MyRmlsdGVy
Tm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorSGlnaFBhc3My
RmlsdGVyTm9kZTo6SGlnaFBhc3MyRmlsdGVyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQogewogICAgIG1fcHJvY2Vzc29yID0gYWRvcHRQdHIobmV3IEJpcXVhZFByb2Nl
c3NvcihCaXF1YWRQcm9jZXNzb3I6OkhpZ2hQYXNzLCBzYW1wbGVSYXRlLCAxLCBmYWxzZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5oCmluZGV4IGJl
MGJlYjZjMjM2ZDJjMmZkYWM1YmQwYWIzYWEzMDk0OWJiN2ZlMWEuLmJmZDc2YTBkNTg0YzFhODg1
ZWI5ZDM1MDk5Mjk5OGZmZWUzYzVhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9I
aWdoUGFzczJGaWx0ZXJOb2RlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQXVkaW9QYXJhbTsK
ICAgICAKIGNsYXNzIEhpZ2hQYXNzMkZpbHRlck5vZGUgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhpZ2hQYXNzMkZpbHRl
ck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhpZ2hQYXNzMkZpbHRlck5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEhpZ2hQYXNzMkZpbHRlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAg
ICAgIAogICAgIH0KQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIEF1ZGlvUGFyYW0qIHJl
c29uYW5jZSgpIHsgcmV0dXJuIGJpcXVhZFByb2Nlc3NvcigpLT5wYXJhbWV0ZXIyKCk7IH0KICAg
ICAKIHByaXZhdGU6Ci0gICAgSGlnaFBhc3MyRmlsdGVyTm9kZShBdWRpb0NvbnRleHQqLCBkb3Vi
bGUgc2FtcGxlUmF0ZSk7CisgICAgSGlnaFBhc3MyRmlsdGVyTm9kZShBdWRpb0NvbnRleHQqLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIEJpcXVhZFByb2Nlc3NvciogYmlxdWFkUHJvY2Vzc29y
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmlxdWFkUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlv
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNw
cAppbmRleCA0ODcyOTliNDYwMmQ3YmM2YWUxZGRjNjJlNGIzNTI1ZjEzM2E2NWU3Li4wNWUyMWI3
YTMxMGExNThhMTg0NDhhOTU1YTAzMjhhMzcxNTYyNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3Qgc2l6ZV90IERlZmF1bHRCdWZmZXJTaXplID0gNDA5
NjsKIAotUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBKYXZhU2NyaXB0QXVkaW9Ob2Rl
OjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSwgc2l6ZV90
IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzLCB1bnNpZ25lZCBudW1iZXJPZk91
dHB1dHMpCitQYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IEphdmFTY3JpcHRBdWRpb05v
ZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVf
dCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cywgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRzKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSmF2YVNjcmlwdEF1ZGlvTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlLCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0cywgbnVtYmVyT2ZP
dXRwdXRzKSk7CiB9CiAKLUphdmFTY3JpcHRBdWRpb05vZGU6OkphdmFTY3JpcHRBdWRpb05vZGUo
QXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNp
emUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCitK
YXZhU2NyaXB0QXVkaW9Ob2RlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCogY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiAgICAgOiBBdWRpb05vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fZG91YmxlQnVmZmVySW5kZXgoMCkKICAgICAsIG1f
ZG91YmxlQnVmZmVySW5kZXhGb3JFdmVudCgwKQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEphdmFT
Y3JpcHRBdWRpb05vZGU6OmluaXRpYWxpemUoKQogICAgIGlmIChpc0luaXRpYWxpemVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGRvdWJsZSBzYW1wbGVSYXRlID0gY29udGV4dCgpLT5zYW1w
bGVSYXRlKCk7CisgICAgZmxvYXQgc2FtcGxlUmF0ZSA9IGNvbnRleHQoKS0+c2FtcGxlUmF0ZSgp
OwogCiAgICAgLy8gQ3JlYXRlIGRvdWJsZSBidWZmZXJzIG9uIGJvdGggdGhlIGlucHV0IGFuZCBv
dXRwdXQgc2lkZXMuCiAgICAgLy8gVGhlc2UgQXVkaW9CdWZmZXJzIHdpbGwgYmUgZGlyZWN0bHkg
YWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkIGJ5IEphdmFTY3JpcHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmgKaW5kZXggZTk5YTI1ZDAwNjQ4YzYy
NzNlNmRjMmFhYTVkZmUzNjk3NmJkZTczMS4uNWEyOTljNDkwY2ZmMzU3NTdlNTQxZDdmYjYwNWMx
ZGI2NTg0MjVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlw
dEF1ZGlvTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRp
b05vZGUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyB2YWx1ZSBjb250
cm9scyBob3cgZnJlcXVlbnRseSB0aGUgb25hdWRpb3Byb2Nlc3MgZXZlbnQgaGFuZGxlciBpcyBj
YWxsZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFtZXMgbmVlZCB0byBiZSBwcm9jZXNzZWQgZWFj
aCBjYWxsLgogICAgIC8vIExvd2VyIG51bWJlcnMgZm9yIGJ1ZmZlclNpemUgd2lsbCByZXN1bHQg
aW4gYSBsb3dlciAoYmV0dGVyKSBsYXRlbmN5LiBIaWdoZXIgbnVtYmVycyB3aWxsIGJlIG5lY2Vz
c2FyeSB0byBhdm9pZCBhdWRpbyBicmVha3VwIGFuZCBnbGl0Y2hlcy4KICAgICAvLyBUaGUgdmFs
dWUgY2hvc2VuIG11c3QgY2FyZWZ1bGx5IGJhbGFuY2UgYmV0d2VlbiBsYXRlbmN5IGFuZCBhdWRp
byBxdWFsaXR5LgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUs
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRzID0gMSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzID0g
MSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0cyA9IDEsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyA9IDEpOwogCiAg
ICAgdmlydHVhbCB+SmF2YVNjcmlwdEF1ZGlvTm9kZSgpOwogCkBAIC03Nyw3ICs3Nyw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBBdWRpb05vZGU6OmRlcmVmOwogICAgIAogcHJpdmF0ZToKLSAgICBK
YXZhU2NyaXB0QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlLCBzaXpl
X3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0cyk7CisgICAgSmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBz
YW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMsIHVu
c2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiAKICAgICBzdGF0aWMgdm9pZCBmaXJlUHJvY2Vzc0V2
ZW50RGlzcGF0Y2godm9pZCogdXNlckRhdGEpOwogICAgIHZvaWQgZmlyZVByb2Nlc3NFdmVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTG93UGFzczJGaWx0ZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAKaW5k
ZXggYWMyZGUxZmYyNGU2MDNiYjlmODZlM2NiZWM1NTAyODk3ZDc1NmY5Yi4uZTJkNjY5YWNkMTll
ZTI5NGQ0MDRmNjg3NzYwMzRiMDNiOTljMjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vTG93UGFzczJGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9Mb3dQYXNzMkZpbHRlck5vZGUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotTG93UGFzczJGaWx0ZXJOb2RlOjpMb3dQYXNzMkZpbHRlck5vZGUoQXVk
aW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0xvd1Bhc3MyRmlsdGVyTm9k
ZTo6TG93UGFzczJGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CiB7CiAgICAgbV9wcm9jZXNzb3IgPSBhZG9wdFB0cihuZXcgQmlxdWFkUHJvY2Vzc29yKEJpcXVh
ZFByb2Nlc3Nvcjo6TG93UGFzcywgc2FtcGxlUmF0ZSwgMSwgZmFsc2UpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vTG93UGFzczJGaWx0ZXJOb2RlLmgKaW5kZXggNDNkNzA1MTNkMjdkYzMw
ZTk0MTg0N2MxOWIzZjBkMjgwMDJkNjUyMy4uMzM0MmM2Zjk2NDMzNDIwZjQzYzZlMWE4ODY5MDcz
ZjgwYTYyZGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTG93UGFzczJG
aWx0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTG93UGFzczJGaWx0ZXJO
b2RlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQXVkaW9QYXJhbTsKICAgICAKIGNsYXNzIExv
d1Bhc3MyRmlsdGVyTm9kZSA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TG93UGFzczJGaWx0ZXJOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMb3dQYXNzMkZpbHRlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvd1Bh
c3MyRmlsdGVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCiAgICAgfQpAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSogcmVzb25hbmNlKCkgeyByZXR1cm4g
YmlxdWFkUHJvY2Vzc29yKCktPnBhcmFtZXRlcjIoKTsgfQogICAgIAogcHJpdmF0ZToKLSAgICBM
b3dQYXNzMkZpbHRlck5vZGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAg
IExvd1Bhc3MyRmlsdGVyTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIEJpcXVhZFByb2Nlc3NvciogYmlxdWFkUHJvY2Vzc29yKCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QmlxdWFkUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA3
MTRjMTIwNTE5ZTE5Mjg5ZDY0MGIzYmJjY2JhZDg1MDU3ZmU1NTU3Li5jNGQ1NjdhNWQyOWRjNWE5
MDg0YTU1MDdjMjc3MzllYWU1YzVlYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNDksNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsKICAgICB2aXJ0dWFsIHZvaWQg
dW5pbml0aWFsaXplKCk7CiAgICAgCi0gICAgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAogICAg
IHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcAppbmRleCA0NDljODRhZmVmOTcxYTA1Y2IyMzcy
Y2NmMzFjN2MzYzFhNDIyMWYwLi44ZDc0YTY3YTgwYTcyNzY3ZDc4YTA2ZWRkODZmYTcyN2I2M2Rk
N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5v
ZGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVhbHRp
bWVBbmFseXNlck5vZGU6OlJlYWx0aW1lQW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4
dCwgZG91YmxlIHNhbXBsZVJhdGUpCitSZWFsdGltZUFuYWx5c2VyTm9kZTo6UmVhbHRpbWVBbmFs
eXNlck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgYWRkSW5wdXQoYWRvcHRQdHIo
bmV3IEF1ZGlvTm9kZUlucHV0KHRoaXMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlck5vZGUuaAppbmRleCBkMDBhNWI2ZjAwYTZiYTIzMTFmY2E1ZGJjOGFh
OTU5YThiNzZkMGEyLi42YzdhZGQ5NTkyNDhiZDcxNjllMDBiZTMyY2E3ZWIyODNmMWFkOTkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmgKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZWFsdGltZUFuYWx5
c2VyTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFJlYWx0aW1lQW5hbHlzZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBk
b3VibGUgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFsdGltZUFuYWx5c2Vy
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVhbHRpbWVBbmFseXNlck5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAogICAgIH0KQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkqIGFycmF5KSB7IG1f
YW5hbHlzZXIuZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGFycmF5KTsgfQogCiBwcml2YXRlOgotICAg
IFJlYWx0aW1lQW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsK
KyAgICBSZWFsdGltZUFuYWx5c2VyTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRl
KTsKIAogICAgIFJlYWx0aW1lQW5hbHlzZXIgbV9hbmFseXNlcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCmluZGV4IDQxNmI3MjIzNGVh
YTU0ZGM3N2RhYWI2NzJlMmU4MmJjYjM2NjNiODkuLjVmM2NmMzQ3NjIzMGVjMDQyYjkxNTNjMWUz
MzhjNTc1N2ExYmE4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVT
aGFwZXJEU1BLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJEU1BLZXJuZWwuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgV2F2ZVNoYXBlckRTUEtlcm5l
bDo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVf
CiAgICAgICAgIGNvbnN0IGZsb2F0IGlucHV0ID0gc291cmNlW2ldOwogCiAgICAgICAgIC8vIENh
bGN1bGF0ZSBhbiBpbmRleCBiYXNlZCBvbiBpbnB1dCAtMSAtPiArMSB3aXRoIDAgYmVpbmcgYXQg
dGhlIGNlbnRlciBvZiB0aGUgY3VydmUgZGF0YS4KLSAgICAgICAgaW50IGluZGV4ID0gY3VydmVM
ZW5ndGggKiAwLjUgKiAoaW5wdXQgKyAxKTsKKyAgICAgICAgaW50IGluZGV4ID0gKGN1cnZlTGVu
Z3RoICogKGlucHV0ICsgMSkpIC8gMjsKIAogICAgICAgICAvLyBDbGlwIGluZGV4IHRvIHRoZSBp
bnB1dCByYW5nZSBvZiB0aGUgY3VydmUuCiAgICAgICAgIC8vIFRoaXMgdGFrZXMgY2FyZSBvZiBp
bnB1dCBvdXRzaWRlIG9mIG5vbWluYWwgcmFuZ2UgLTEgLT4gKzEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKaW5kZXggYWJkNTIyY2E3OWRkYzg0
YjNhNDk2NDQzOWU5YTE0MDZlNzA0YmNlYS4uZjc1NzFkZWJiNzEyYzk1NGQyYWY5YTQ4ZjY2NDFh
ODIzNzY2MGQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBl
clByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclBy
b2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAotV2F2ZVNoYXBlclByb2Nlc3Nvcjo6V2F2ZVNoYXBlclByb2Nlc3Nvcihkb3VibGUgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpCitXYXZlU2hhcGVyUHJvY2Vzc29yOjpXYXZl
U2hhcGVyUHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxz
KQogICAgIDogQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFu
bmVscykKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNz
b3IuaAppbmRleCA4NmExODhkMzNjNTk1YWJlNDM1YmEyMGQyMDY2Yzg2YjgyYmY0YmQzLi5lYjY3
MjYwNmU0MTNhNjJhNGUyNTFkNmY0NTA0MzVmYzRjNmQxMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2F2ZVNoYXBlclByb2Nlc3NvciA6IHB1YmxpYyBBdWRp
b0RTUEtlcm5lbFByb2Nlc3NvciB7CiBwdWJsaWM6Ci0gICAgV2F2ZVNoYXBlclByb2Nlc3Nvcihk
b3VibGUgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIFdhdmVTaGFw
ZXJQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOwog
CiAgICAgdmlydHVhbCB+V2F2ZVNoYXBlclByb2Nlc3NvcigpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109839</attachid>
            <date>2011-10-05 12:45:44 -0700</date>
            <delta_ts>2011-10-05 13:38:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69292-20111005124542.patch</filename>
            <type>text/plain</type>
            <size>133210</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY3MzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NjI3N2VkYTYyY2RiZjY4
MzBiYzExNGViYjhiZmVmZDFiOGU2NWUyLi43YWM2YWMxNTk1YWM2ZWJmN2VhYTBkYjBlNGNjNGYw
YTA3YmYzMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjI4IEBACisyMDExLTEwLTA1ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFdFQl9BVURJTyBkb2VzIG5v
dCBjb21waWxlIG9uIExlb3BhcmQgMzItYml0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHM7IGNvdmVyZWQgYnkgYWxsIGV4aXN0aW5n
IGF1ZGlvIHRlc3RzLgorCisgICAgICAgIFVzZSBvZiBmbG9hdCBhbmQgZG91YmxlIHdpdGhpbiB0
aGUgV0VCX0FVRElPIGltcGxlbWVudGF0aW9uIGhhdmUgYmVlbiBoYXJtb25pemVkLCB3aXRoIG1v
c3QKKyAgICAgICAgY2FsY3VsYXRpb25zIGRvbmUgdXNpbmcgZmxvYXRzLCB3aXRoIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoKSBhZGRlZCB3aGVuIG5lY2Vzc2FyeSB0bworICAgICAgICBuYXJyb3cg
ZG91YmxlIHJlc3VsdHMgZG93biB0byBmbG9hdHMsIGFuZCB3aXRoIGZsb2F0IGNvbnN0YW50cyBp
bml0aWFsaXplZCB3aXRoIGZsb2F0IHZhbHVlczoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6QXVkaW9CdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OnNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnNldFNhbXBsZVJhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0RTUEtlcm5lbDo6QXVkaW9EU1BLZXJuZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EU1BLZXJuZWw6OnNhbXBsZVJhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yOjpBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcik6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9GaWxlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUHJvY2Vzc29yOjpBdWRpb1Byb2Nlc3Nvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1Byb2Nlc3Nvcjo6c2FtcGxlUmF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9VdGlsaXRpZXM6OmRlY2liZWxzVG9MaW5lYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9V
dGlsaXRpZXM6OmxpbmVhclRvRGVjaWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9VdGls
aXRpZXM6OmRpc2NyZXRlVGltZUNvbnN0YW50Rm9yU2FtcGxlUmF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVz
c29yOjpEeW5hbWljc0NvbXByZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21w
cmVzc29yOjppbml0aWFsaXplUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWlj
c0NvbXByZXNzb3I6OnBhcmFtZXRlclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNz
Q29tcHJlc3Nvcjo6c2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6RHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJl
c3Nvcjo6c2FtcGxlUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6
Om55cXVpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzYXR1cmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXF1YWxQb3dlclBhbm5lcjo6RXF1YWxQb3dlclBhbm5lcik6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpIUlRG
RGF0YWJhc2U6OnNhbXBsZVJhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmNy
ZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkhSVEZEYXRhYmFzZUxvYWRlcjo6SFJURkRhdGFiYXNlTG9hZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZE
YXRhYmFzZUxvYWRlcjo6ZGF0YWJhc2VTYW1wbGVSYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9IUlRGRWxldmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246
OmNhbGN1bGF0ZVN5bW1ldHJpY0tlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNhbGN1bGF0ZUtlcm5lbHNGb3JBemltdXRoRWxldmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5n
U2xpY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpzYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhSVEZFbGV2YXRpb246OkhSVEZFbGV2YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEF2ZXJhZ2VHcm91
cERlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6Y3JlYXRlSW50ZXJwb2xhdGVkS2VybmVsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpI
UlRGS2VybmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6ZnJhbWVE
ZWxheSk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpzYW1wbGVSYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6SFJU
RlBhbm5lcik6CisgICAgICAgIChXZWJDb3JlOjpIUlRGUGFubmVyOjpmZnRTaXplRm9yU2FtcGxl
UmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oOgorICAgICAgICAo
V2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
aHJvbWl1bS9BdWRpb0J1c0Nocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
Ojpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvQnVzTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVzdGluYXRpb25NYWMp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpzYW1wbGVSYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQnVzRnJv
bUluTWVtb3J5QXVkaW9GaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9G
aWxlUmVhZGVyTWFjLmg6CisgICAgICAgICogd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpEZWNv
ZGluZ1Rhc2spOgorICAgICAgICAqIHdlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRl
KToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmg6Cisg
ICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9CdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlcjo6Y3JlYXRl
RnJvbUF1ZGlvRmlsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXI6OkF1ZGlv
QnVmZmVyKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0J1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdWZmZXI6OnNhbXBsZVJhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OkF1ZGlvQnVmZmVyU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpyZW5kZXJGcm9tQnVmZmVyKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsTWVyZ2VyOjpBdWRpb0NoYW5uZWxNZXJnZXIp
OgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9DaGFubmVsTWVyZ2VyOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1
ZGlvQ2hhbm5lbFNwbGl0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbFNw
bGl0dGVyOjpBdWRpb0NoYW5uZWxTcGxpdHRlcik6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9D
aGFubmVsU3BsaXR0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZU9mZmxpbmVDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c2FtcGxlUmF0ZSk6Cisg
ICAgICAgICogd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAg
ICAgKiB3ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIHdlYmF1ZGlv
L0F1ZGlvR2Fpbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6QXVk
aW9HYWluTm9kZSk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9HYWluTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9B
dWRpb0xpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OkF1ZGlv
TGlzdGVuZXIpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvTGlzdGVuZXI6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvTGlzdGVuZXI6OnNldE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
TGlzdGVuZXI6OnNldFZlbG9jaXR5KToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpBdWRpb05vZGUpOgorICAgICAgICAqIHdl
YmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpzYW1wbGVS
YXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9QYW5uZXJOb2RlOjpBdWRpb1Bhbm5lck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9uKToKKyAgICAgICAgKiB3
ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVy
Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb1BhcmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
UGFyYW06OnNtb290aGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6c21v
b3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OmNhbGN1bGF0ZVNhbXBsZUFjY3Vy
YXRlVmFsdWVzKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRUaW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OnRpbWVUb1NhbXBsZUZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVzRm9yVGltZVJhbmdlSW1wbCk6CisgICAgICAg
ICogd2ViYXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nv
dXJjZU5vZGU6OkF1ZGlvU291cmNlTm9kZSk6CisgICAgICAgICogd2ViYXVkaW8vQmlxdWFkRmls
dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRG
aWx0ZXJOb2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1
ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNz
b3I6OkJpcXVhZFByb2Nlc3Nvcik6CisgICAgICAgICogd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29y
Lmg6CisgICAgICAgICogd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2RlOjpjcmVhdGUp
OgorICAgICAgICAqIHdlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmluaXRpYWxpemUp
OgorICAgICAgICAqIHdlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzYW1wbGVSYXRlKToK
KyAgICAgICAgKiB3ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxheURTUEtlcm5lbDo6RGVsYXlEU1BLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6RGVs
YXlEU1BLZXJuZWw6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL0RlbGF5RFNQS2VybmVs
Lmg6CisgICAgICAgICogd2ViYXVkaW8vRGVsYXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAgICAgICAgKiB3ZWJhdWRpby9EZWxheU5vZGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRp
by9EZWxheVByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheVByb2Nlc3Nvcjo6
RGVsYXlQcm9jZXNzb3IpOgorICAgICAgICAqIHdlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmg6Cisg
ICAgICAgICogd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKToK
KyAgICAgICAgKiB3ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1
ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlnaFBhc3My
RmlsdGVyTm9kZTo6SGlnaFBhc3MyRmlsdGVyTm9kZSk6CisgICAgICAgICogd2ViYXVkaW8vSGln
aFBhc3MyRmlsdGVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6SGlnaFBhc3MyRmlsdGVyTm9k
ZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRBdWRpb05vZGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRBdWRpb05vZGU6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIHdlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaDoKKyAgICAgICAgKiB3ZWJhdWRpby9M
b3dQYXNzMkZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG93UGFzczJGaWx0ZXJO
b2RlOjpMb3dQYXNzMkZpbHRlck5vZGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0xvd1Bhc3MyRmls
dGVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6TG93UGFzczJGaWx0ZXJOb2RlOjpjcmVhdGUp
OgorICAgICAgICAqIHdlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzYW1wbGVSYXRlKToK
KyAgICAgICAgKiB3ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyTm9kZTo6UmVhbHRpbWVBbmFseXNlck5vZGUpOgorICAg
ICAgICAqIHdlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZUFuYWx5c2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJhdWRpby9XYXZl
U2hhcGVyRFNQS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJu
ZWw6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6V2F2ZVNoYXBlclByb2Nl
c3Nvcik6CisgICAgICAgICogd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oOgorCisKIDIw
MTEtMTAtMDUgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFNo
cmluayBPdXRsaW5lVmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5jcHAKaW5kZXggZTM0ZjdkYmQ1ZTcwYzI1Y2NkYzc1MzExYTg5Mjc1MzM3OTdiNzdlYi4uYWQy
OWFmMWFhZDIzNzIzNzA5MWY1NTkzNjIyN2I5MzFmZTk5OWNjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtNDgsOSArNDgsOSBAQCB1c2luZyBuYW1l
c3BhY2UgVmVjdG9yTWF0aDsKICAgICAKIEF1ZGlvQnVzOjpBdWRpb0J1cyh1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbGVuZ3RoLCBib29sIGFsbG9jYXRlKQogICAgIDogbV9sZW5n
dGgobGVuZ3RoKQotICAgICwgbV9idXNHYWluKDEuMCkKKyAgICAsIG1fYnVzR2FpbigxKQogICAg
ICwgbV9pc0ZpcnN0VGltZSh0cnVlKQotICAgICwgbV9zYW1wbGVSYXRlKDAuMCkKKyAgICAsIG1f
c2FtcGxlUmF0ZSgwKQogewogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShu
dW1iZXJPZkNoYW5uZWxzKTsKIApAQCAtNDY2LDcgKzQ2Niw3IEBAIFBhc3NPd25QdHI8QXVkaW9C
dXM+IEF1ZGlvQnVzOjpjcmVhdGVCeU1peGluZ1RvTW9ubyhBdWRpb0J1cyogc291cmNlQnVzKQog
ICAgICAgICAKICAgICAgICAgICAgIC8vIERvIHRoZSBtb25vIG1peGRvd24uCiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKQotICAgICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uW2ldID0gMC41ICogKHNvdXJjZUxbaV0gKyBzb3VyY2VSW2ldKTsKKyAgICAgICAgICAg
ICAgICBkZXN0aW5hdGlvbltpXSA9IChzb3VyY2VMW2ldICsgc291cmNlUltpXSkgLyAyOwogCiAg
ICAgICAgICAgICBkZXN0aW5hdGlvbkJ1cy0+c2V0U2FtcGxlUmF0ZShzb3VyY2VCdXMtPnNhbXBs
ZVJhdGUoKSk7ICAgIAogICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uQnVzLnJlbGVhc2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCmluZGV4IGE4N2Y1NWQz
MTMyZWMzYTk1NmUyZTk0NmZiNjRmMWEwNDU3OTFlNzUuLjUzZmI0Yjk2OTc3M2NkYTQ1YTAzMzBh
NWQ4NWYxOTAxMWMyYzQ4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQnVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuaApAQCAtNzYsOCArNzYsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICAvLyBTYW1wbGUtcmF0ZSA6IDAuMCBpZiB1bmtu
b3duIG9yICJkb24ndCBjYXJlIgotICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9zYW1wbGVSYXRlOyB9Ci0gICAgdm9pZCBzZXRTYW1wbGVSYXRlKGRvdWJsZSBzYW1wbGVS
YXRlKSB7IG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgdm9pZCBzZXRTYW1wbGVSYXRl
KGZsb2F0IHNhbXBsZVJhdGUpIHsgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsgfQogCiAgICAg
Ly8gWmVyb2VzIGFsbCBjaGFubmVscy4KICAgICB2b2lkIHplcm8oKTsKQEAgLTEzMyw3ICsxMzMs
NyBAQCBwdWJsaWM6CiAgICAgLy8gTWFrZXMgbWF4aW11bSBhYnNvbHV0ZSB2YWx1ZSA9PSAxLjAg
KGlmIHBvc3NpYmxlKS4KICAgICB2b2lkIG5vcm1hbGl6ZSgpOwogCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8QXVkaW9CdXM+IGxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGRv
dWJsZSBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0J1cz4gbG9hZFBs
YXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKIHBy
b3RlY3RlZDoKICAgICBBdWRpb0J1cygpIHsgfTsKQEAgLTE0OSw3ICsxNDksNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBkb3VibGUgbV9idXNHYWluOwogICAgIGJvb2wgbV9pc0ZpcnN0VGltZTsKLSAg
ICBkb3VibGUgbV9zYW1wbGVSYXRlOyAvLyAwLjAgaWYgdW5rbm93biBvciBOL0EKKyAgICBmbG9h
dCBtX3NhbXBsZVJhdGU7IC8vIDAuMCBpZiB1bmtub3duIG9yIE4vQQogfTsKIAogfSAvLyBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtl
cm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWwuaApp
bmRleCBkMDcxOWM1NjU5NzI3YTRlNmQ2NTA2OTg2ZDRjZTdmMWM5MmZmYjI3Li5mMzNjOWVkZTRk
M2MwYTEzNjM2MzJlNWMwODRlZDBlYmRhYjUyMmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICBBdWRpb0RTUEtlcm5lbChkb3VibGUgc2FtcGxlUmF0ZSkKKyAg
ICBBdWRpb0RTUEtlcm5lbChmbG9hdCBzYW1wbGVSYXRlKQogICAgICAgICA6IG1fa2VybmVsUHJv
Y2Vzc29yKDApCiAgICAgICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgewpAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgZmxv
YXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgPSAwOwogCi0gICAgZG91YmxlIHNhbXBsZVJh
dGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgZG91YmxlIG55cXVpc3QoKSBj
b25zdCB7IHJldHVybiAwLjUgKiBzYW1wbGVSYXRlKCk7IH0KIAogICAgIEF1ZGlvRFNQS2VybmVs
UHJvY2Vzc29yKiBwcm9jZXNzb3IoKSB7IHJldHVybiBtX2tlcm5lbFByb2Nlc3NvcjsgfQpAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBBdWRpb0RTUEtlcm5lbFBy
b2Nlc3NvciogbV9rZXJuZWxQcm9jZXNzb3I7Ci0gICAgZG91YmxlIG1fc2FtcGxlUmF0ZTsKKyAg
ICBmbG9hdCBtX3NhbXBsZVJhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nl
c3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFBy
b2Nlc3Nvci5jcHAKaW5kZXggNDUwNjhkYjQyMWRiNTlmNmU4ZmM2NzY1NjUxNDlkNTdmM2ZiNDU0
YS4uY2Y0ZDJkMzUxNzVhNTM4OTNlMTVjZWY1MDNmMGJmOWUzNmEwYWM4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vz
c29yLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBzZXRO
dW1iZXJPZkNoYW5uZWxzKCkgbWF5IGxhdGVyIGJlIGNhbGxlZCBpZiB0aGUgb2JqZWN0IGlzIG5v
dCB5ZXQgaW4gYW4gImluaXRpYWxpemVkIiBzdGF0ZS4KLUF1ZGlvRFNQS2VybmVsUHJvY2Vzc29y
OjpBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcihkb3VibGUgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscykKK0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yOjpBdWRpb0RTUEtlcm5lbFBy
b2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAg
IDogQXVkaW9Qcm9jZXNzb3Ioc2FtcGxlUmF0ZSkKICAgICAsIG1fbnVtYmVyT2ZDaGFubmVscyhu
dW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9oYXNKdXN0UmVzZXQodHJ1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5o
CmluZGV4IGU4N2E4MTAyNmE5ZDRjYWMyYThlM2UzMzZmNDVkZWE4M2VlZDY3N2EuLjQwYjVhYjhk
NjczODNlMmRjODk3Y2Y3NTNmNjQ5YzFjMDAzN2IzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaApAQCAtNTAs
NyArNTAsNyBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NvcjsKIGNsYXNzIEF1ZGlvRFNQS2VybmVsUHJv
Y2Vzc29yIDogcHVibGljIEF1ZGlvUHJvY2Vzc29yIHsKIHB1YmxpYzoKICAgICAvLyBudW1iZXJP
ZkNoYW5uZWxzIG1heSBiZSBsYXRlciBjaGFuZ2VkIGlmIG9iamVjdCBpcyBub3QgeWV0IGluIGFu
ICJpbml0aWFsaXplZCIgc3RhdGUKLSAgICBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcihkb3VibGUg
c2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgQXVkaW9EU1BLZXJu
ZWxQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7
CiAKICAgICAvLyBTdWJjbGFzc2VzIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBvZiBwcm9j
ZXNzaW5nIGtlcm5lbCBoZXJlLgogICAgIC8vIFdlJ2xsIGNhbGwgdGhpcyB0byBjcmVhdGUgYSBr
ZXJuZWwgZm9yIGVhY2ggY2hhbm5lbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAppbmRleCA5NDk4MTEwMzcxMzk4ZjBiNTViZGU4OTcxNmQ4
NTBmMzhhOGRlNjg3Li43NTg4MmMwYTYzNWZmM2Y4Nzc0YzUyOWM3NDA0ZjFkZWQxZDUzYzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5o
CkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7CiAKIGNsYXNzIEF1
ZGlvRGVzdGluYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvRGVz
dGluYXRpb24+IGNyZWF0ZShBdWRpb1NvdXJjZVByb3ZpZGVyJiwgZG91YmxlIHNhbXBsZVJhdGUp
OworICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZShBdWRpb1Nv
dXJjZVByb3ZpZGVyJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0Rl
c3RpbmF0aW9uKCkgeyB9CiAKQEAgLTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc1BsYXlpbmcoKSA9IDA7CiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJzaW9uIG1h
eSBoYXBwZW4gaW4gQXVkaW9EZXN0aW5hdGlvbiB0byB0aGUgaGFyZHdhcmUgc2FtcGxlLXJhdGUK
LSAgICB2aXJ0dWFsIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOwotICAgIHN0YXRpYyBk
b3VibGUgaGFyZHdhcmVTYW1wbGVSYXRlKCk7CisgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRl
KCkgY29uc3QgPSAwOworICAgIHN0YXRpYyBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUoKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9GaWxlUmVhZGVyLmgKaW5kZXggM2MwMjQ5MDdhMWJjMWZiNzUzZjg0ZmZjODU0
YjBhODhiNTVmMmFkZi4uMGM4ZGM2ZTQ5OTNiZGRkMDNkZTRhZTk3YjEyNTZmYjZkZDQwNTNkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GaWxlUmVhZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GaWxlUmVhZGVyLmgK
QEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgQXVkaW9CdXM7CiAvLyBzYW1wbGVSYXRlIHdpbGwgYmUg
bWFkZSAoaWYgaXQgZG9lc24ndCBhbHJlYWR5IG1hdGNoIHRoZSBmaWxlJ3Mgc2FtcGxlLXJhdGUp
LgogLy8gVGhlIGNyZWF0ZWQgYnVmZmVyIHdpbGwgaGF2ZSBpdHMgc2FtcGxlLXJhdGUgc2V0IGNv
cnJlY3RseSB0byB0aGUgcmVzdWx0LgogCi1QYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNG
cm9tSW5NZW1vcnlBdWRpb0ZpbGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBi
b29sIG1peFRvTW9ubywgZG91YmxlIHNhbXBsZVJhdGUpOworUGFzc093blB0cjxBdWRpb0J1cz4g
Y3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBk
YXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBsZVJhdGUpOwogCi1QYXNzT3duUHRy
PEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGNvbnN0IGNoYXIqIGZpbGVQYXRoLCBi
b29sIG1peFRvTW9ubywgZG91YmxlIHNhbXBsZVJhdGUpOworUGFzc093blB0cjxBdWRpb0J1cz4g
Y3JlYXRlQnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01v
bm8sIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
IC8vIE1heSBwYXNzIGluIDAuMCBmb3Igc2FtcGxlUmF0ZSBpbiB3aGljaCBjYXNlIGl0IHdpbGwg
dXNlIHRoZSBBdWRpb0J1cydzIHNhbXBsZVJhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiB2b2lkIHdyaXRlQnVzVG9BdWRpb0ZpbGUoQXVkaW9CdXMqIGJ1cywgY29uc3QgY2hhciog
ZmlsZVBhdGgsIGRvdWJsZSBmaWxlU2FtcGxlUmF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaAppbmRleCA2OWJhNDBmODA0YTg2NTZmOTQ4MWJl
YWRlNGZiZDRhYmQxOWNhMTg2Li4yZDdiNjBhN2NlNjBlYjA2NjVlMmQyODhmYmM5NDk2NjZmZmRj
YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nl
c3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHJvY2Vzc29y
LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQXVkaW9CdXM7CiAKIGNsYXNzIEF1ZGlvUHJvY2Vz
c29yIHsKIHB1YmxpYzoKLSAgICBBdWRpb1Byb2Nlc3Nvcihkb3VibGUgc2FtcGxlUmF0ZSkKKyAg
ICBBdWRpb1Byb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlKQogICAgICAgICA6IG1faW5pdGlhbGl6
ZWQoZmFsc2UpCiAgICAgICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgewpAQCAt
NjMsMTEgKzYzLDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQ7IH0KIAotICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2luaXRp
YWxpemVkOwotICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CisgICAgZmxvYXQgbV9zYW1wbGVSYXRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuY3BwCmluZGV4IDdhNGIzMmU1OTE4OTMwMWZkMThi
YTE4ZTlkOTdlYTAxNjAzYjljZGUuLjFhMDJiN2UxMGRmMjA1MGM3ZmFiMTU5ZjE2ZGI3YzdkMGY0
MWFmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxp
dGllcy5jcHAKQEAgLTMzLDI3ICszMywyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVz
cGFjZSBBdWRpb1V0aWxpdGllcyB7CiAKLWRvdWJsZSBkZWNpYmVsc1RvTGluZWFyKGRvdWJsZSBk
ZWNpYmVscykKK2Zsb2F0IGRlY2liZWxzVG9MaW5lYXIoZmxvYXQgZGVjaWJlbHMpCiB7Ci0gICAg
cmV0dXJuIHBvdygxMC4wLCAwLjA1ICogZGVjaWJlbHMpOworICAgIHJldHVybiBwb3dmKDEwLCAw
LjA1ZiAqIGRlY2liZWxzKTsKIH0KIAotZG91YmxlIGxpbmVhclRvRGVjaWJlbHMoZG91YmxlIGxp
bmVhcikKK2Zsb2F0IGxpbmVhclRvRGVjaWJlbHMoZmxvYXQgbGluZWFyKQogewogICAgIC8vIEl0
J3Mgbm90IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSBkZWNpYmVscyBmb3IgYSB6ZXJvIGxpbmVhciB2
YWx1ZSBzaW5jZSBpdCB3b3VsZCBiZSAtSW5mLgogICAgIC8vIC0xMDAwLjAgZEIgcmVwcmVzZW50
cyBhIHZlcnkgdGlueSBsaW5lYXIgdmFsdWUgaW4gY2FzZSB3ZSBldmVyIHJlYWNoIHRoaXMgY2Fz
ZS4KICAgICBBU1NFUlQobGluZWFyKTsKICAgICBpZiAoIWxpbmVhcikKLSAgICAgICAgcmV0dXJu
IC0xMDAwLjA7CisgICAgICAgIHJldHVybiAtMTAwMDsKICAgICAgICAgCi0gICAgcmV0dXJuIDIw
LjAgKiBsb2cxMChsaW5lYXIpOworICAgIHJldHVybiAyMCAqIGxvZzEwZihsaW5lYXIpOwogfQog
Ci1kb3VibGUgZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRlKGRvdWJsZSB0aW1lQ29u
c3RhbnQsIGRvdWJsZSBzYW1wbGVSYXRlKQorZmxvYXQgZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JT
YW1wbGVSYXRlKGZsb2F0IHRpbWVDb25zdGFudCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICAv
LyBoYXJkY29kZWQgdmFsdWUgaXMgdGVtcG9yYXJ5IGJ1aWxkIGZpeCBmb3IgV2luZG93cy4KICAg
ICAvLyBGSVhNRTogcmVwbGFjZSBoYXJkY29kZSAyLjcxODI4MiB3aXRoIE1fRSB1bnRpbCB0aGUg
Y29ycmVjdCBNYXRoRXh0cmFzLmggc29sdXRpb24gaXMgZGV0ZXJtaW5lZC4KLSAgICByZXR1cm4g
MS4wIC0gcG93KDEuMCAvIDIuNzE4MjgyLCAxLjAgLyAoc2FtcGxlUmF0ZSAqIHRpbWVDb25zdGFu
dCkpOworICAgIHJldHVybiAxIC0gcG93ZigxIC8gMi43MTgyODJmLCAxIC8gKHNhbXBsZVJhdGUg
KiB0aW1lQ29uc3RhbnQpKTsKIH0KICAgICAKIH0gLy8gQXVkaW9VdGlsaXRlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmgKaW5kZXggN2NmNDRjZWYy
YjRkM2FkMjJkODRhMDI0M2JiZDE3NGU2NGM1ZDIyNy4uYzk4YTRjOGRlOGJmMTFmZmIyMDNmNWU2
NWZhMWVmMDYyYjAzYmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1V0aWxpdGllcy5oCkBAIC0zMCwxMyArMzAsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIEF1ZGlvVXRpbGl0aWVzIHsKIAogLy8gU3RhbmRhcmQgZnVuY3Rpb25zIGZvciBj
b252ZXJ0aW5nIHRvIGFuZCBmcm9tIGRlY2liZWwgdmFsdWVzIGZyb20gbGluZWFyLgotZG91Ymxl
IGxpbmVhclRvRGVjaWJlbHMoZG91YmxlKTsKLWRvdWJsZSBkZWNpYmVsc1RvTGluZWFyKGRvdWJs
ZSk7CitmbG9hdCBsaW5lYXJUb0RlY2liZWxzKGZsb2F0KTsKK2Zsb2F0IGRlY2liZWxzVG9MaW5l
YXIoZmxvYXQpOwogCiAvLyB0aW1lQ29uc3RhbnQgaXMgdGhlIHRpbWUgaXQgdGFrZXMgYSBmaXJz
dC1vcmRlciBsaW5lYXIgdGltZS1pbnZhcmlhbnQgc3lzdGVtCiAvLyB0byByZWFjaCB0aGUgdmFs
dWUgMSAtIDEvZSAoYXJvdW5kIDYzLjIlKSBnaXZlbiBhIHN0ZXAgaW5wdXQgcmVzcG9uc2UuCiAv
LyBkaXNjcmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJhdGUoKSB3aWxsIHJldHVybiB0aGUgZGlz
Y3JldGUgdGltZS1jb25zdGFudCBmb3IgdGhlIHNwZWNpZmljIHNhbXBsZVJhdGUuCi1kb3VibGUg
ZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRlKGRvdWJsZSB0aW1lQ29uc3RhbnQsIGRv
dWJsZSBzYW1wbGVSYXRlKTsKK2Zsb2F0IGRpc2NyZXRlVGltZUNvbnN0YW50Rm9yU2FtcGxlUmF0
ZShmbG9hdCB0aW1lQ29uc3RhbnQsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIAogfSAvLyBBdWRp
b1V0aWxpdGVzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5h
bWljc0NvbXByZXNzb3IuY3BwCmluZGV4IDE1ZWVjOWY0MGFhZjZkMDIyMWFhNWU2YjMxMTU1MmU4
NThkNzFjMzYuLmM0Nzk1ZjRmODFlYmZjOGVkOWJmNzZhNTk4NDE0ZTc4OTlkODJlZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBBdWRpb1V0aWxpdGllczsKICAgICAKLUR5bmFtaWNzQ29tcHJlc3Nvcjo6RHluYW1pY3ND
b21wcmVzc29yKGJvb2wgaXNTdGVyZW8sIGRvdWJsZSBzYW1wbGVSYXRlKQorRHluYW1pY3NDb21w
cmVzc29yOjpEeW5hbWljc0NvbXByZXNzb3IoYm9vbCBpc1N0ZXJlbywgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IG1faXNTdGVyZW8oaXNTdGVyZW8pCiAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxl
UmF0ZSkKICAgICAsIG1fY29tcHJlc3NvcihzYW1wbGVSYXRlKQpAQCAtNTksMTcgKzU5LDE3IEBA
IHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjppbml0aWFsaXplUGFyYW1ldGVycygpCiAgICAgCiAg
ICAgbV9wYXJhbWV0ZXJzW1BhcmFtVGhyZXNob2xkXSA9IC0yNDsgLy8gZEIKICAgICBtX3BhcmFt
ZXRlcnNbUGFyYW1IZWFkcm9vbV0gPSAyMTsgLy8gZEIKLSAgICBtX3BhcmFtZXRlcnNbUGFyYW1B
dHRhY2tdID0gMC4wMDM7IC8vIHNlY29uZHMKLSAgICBtX3BhcmFtZXRlcnNbUGFyYW1SZWxlYXNl
XSA9IDAuMjUwOyAvLyBzZWNvbmRzCi0gICAgbV9wYXJhbWV0ZXJzW1BhcmFtUHJlRGVsYXldID0g
MC4wMDY7IC8vIHNlY29uZHMKKyAgICBtX3BhcmFtZXRlcnNbUGFyYW1BdHRhY2tdID0gMC4wMDNm
OyAvLyBzZWNvbmRzCisgICAgbV9wYXJhbWV0ZXJzW1BhcmFtUmVsZWFzZV0gPSAwLjI1MGY7IC8v
IHNlY29uZHMKKyAgICBtX3BhcmFtZXRlcnNbUGFyYW1QcmVEZWxheV0gPSAwLjAwNmY7IC8vIHNl
Y29uZHMKIAogICAgIC8vIFJlbGVhc2Ugem9uZSB2YWx1ZXMgMCAtPiAxLgotICAgIG1fcGFyYW1l
dGVyc1tQYXJhbVJlbGVhc2Vab25lMV0gPSAwLjA5OwotICAgIG1fcGFyYW1ldGVyc1tQYXJhbVJl
bGVhc2Vab25lMl0gPSAwLjE2OwotICAgIG1fcGFyYW1ldGVyc1tQYXJhbVJlbGVhc2Vab25lM10g
PSAwLjQyOwotICAgIG1fcGFyYW1ldGVyc1tQYXJhbVJlbGVhc2Vab25lNF0gPSAwLjk4OworICAg
IG1fcGFyYW1ldGVyc1tQYXJhbVJlbGVhc2Vab25lMV0gPSAwLjA5ZjsKKyAgICBtX3BhcmFtZXRl
cnNbUGFyYW1SZWxlYXNlWm9uZTJdID0gMC4xNmY7CisgICAgbV9wYXJhbWV0ZXJzW1BhcmFtUmVs
ZWFzZVpvbmUzXSA9IDAuNDJmOworICAgIG1fcGFyYW1ldGVyc1tQYXJhbVJlbGVhc2Vab25lNF0g
PSAwLjk4ZjsKIAotICAgIG1fcGFyYW1ldGVyc1tQYXJhbUZpbHRlclN0YWdlR2Fpbl0gPSA0LjQ7
IC8vIGRCCisgICAgbV9wYXJhbWV0ZXJzW1BhcmFtRmlsdGVyU3RhZ2VHYWluXSA9IDQuNGY7IC8v
IGRCCiAgICAgbV9wYXJhbWV0ZXJzW1BhcmFtRmlsdGVyU3RhZ2VSYXRpb10gPSAyOwogICAgIG1f
cGFyYW1ldGVyc1tQYXJhbUZpbHRlckFuY2hvcl0gPSAxNTAwMCAvIG55cXVpc3QoKTsKICAgICAK
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OmluaXRpYWxpemVQYXJh
bWV0ZXJzKCkKICAgICBtX3BhcmFtZXRlcnNbUGFyYW1FZmZlY3RCbGVuZF0gPSAxOwogfQogCi1k
b3VibGUgRHluYW1pY3NDb21wcmVzc29yOjpwYXJhbWV0ZXJWYWx1ZSh1bnNpZ25lZCBwYXJhbWV0
ZXJJRCkKK2Zsb2F0IER5bmFtaWNzQ29tcHJlc3Nvcjo6cGFyYW1ldGVyVmFsdWUodW5zaWduZWQg
cGFyYW1ldGVySUQpCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRlcklEIDwgUGFyYW1MYXN0KTsKICAg
ICByZXR1cm4gbV9wYXJhbWV0ZXJzW3BhcmFtZXRlcklEXTsKQEAgLTkwLDggKzkwLDggQEAgdm9p
ZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldEVtcGhhc2lzU3RhZ2VQYXJhbWV0ZXJzKHVuc2lnbmVk
IHN0YWdlSW5kZXgsIGZsb2F0IGcKICAgICBmbG9hdCBnayA9IDEgLSBnYWluIC8gMjA7CiAgICAg
ZmxvYXQgZjEgPSBub3JtYWxpemVkRnJlcXVlbmN5ICogZ2s7CiAgICAgZmxvYXQgZjIgPSBub3Jt
YWxpemVkRnJlcXVlbmN5IC8gZ2s7Ci0gICAgZmxvYXQgcjEgPSBleHAoLWYxICogcGlEb3VibGUp
OwotICAgIGZsb2F0IHIyID0gZXhwKC1mMiAqIHBpRG91YmxlKTsKKyAgICBmbG9hdCByMSA9IGV4
cGYoLWYxICogcGlGbG9hdCk7CisgICAgZmxvYXQgcjIgPSBleHBmKC1mMiAqIHBpRmxvYXQpOwog
CiAgICAgLy8gU2V0IHByZS1maWx0ZXIgemVybyBhbmQgcG9sZSB0byBjcmVhdGUgYW4gZW1waGFz
aXMgZmlsdGVyLgogICAgIG1fcHJlRmlsdGVyW3N0YWdlSW5kZXhdLnNldFplcm8ocjEpOwpAQCAt
MTcwLDEwICsxNzAsMTAgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnByb2Nlc3MoQXVkaW9C
dXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLAogICAgIC8vIDEgbWl4ZXMg
aW4gb25seSB0aGUgY29tcHJlc3NlZCBzaWduYWwuCiAgICAgZmxvYXQgZWZmZWN0QmxlbmQgPSBw
YXJhbWV0ZXJWYWx1ZShQYXJhbUVmZmVjdEJsZW5kKTsKIAotICAgIGRvdWJsZSByZWxlYXNlWm9u
ZTEgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJlbGVhc2Vab25lMSk7Ci0gICAgZG91YmxlIHJlbGVh
c2Vab25lMiA9IHBhcmFtZXRlclZhbHVlKFBhcmFtUmVsZWFzZVpvbmUyKTsKLSAgICBkb3VibGUg
cmVsZWFzZVpvbmUzID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1SZWxlYXNlWm9uZTMpOwotICAgIGRv
dWJsZSByZWxlYXNlWm9uZTQgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJlbGVhc2Vab25lNCk7Cisg
ICAgZmxvYXQgcmVsZWFzZVpvbmUxID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1SZWxlYXNlWm9uZTEp
OworICAgIGZsb2F0IHJlbGVhc2Vab25lMiA9IHBhcmFtZXRlclZhbHVlKFBhcmFtUmVsZWFzZVpv
bmUyKTsKKyAgICBmbG9hdCByZWxlYXNlWm9uZTMgPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbVJlbGVh
c2Vab25lMyk7CisgICAgZmxvYXQgcmVsZWFzZVpvbmU0ID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1S
ZWxlYXNlWm9uZTQpOwogCiAgICAgLy8gQXBwbHkgY29tcHJlc3Npb24gdG8gdGhlIHByZS1maWx0
ZXJlZCBzaWduYWwuCiAgICAgLy8gVGhlIHByb2Nlc3NpbmcgaXMgcGVyZm9ybWVkIGluIHBsYWNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3IuaAppbmRleCBkMGMwMzZmMjlhZWVjNDE3NmNjNTQzY2M4YzE1ZDIxYjg0MTk1MGFmLi4yMTUy
OTUxMmRlZjE5MDQ2NmNlY2E4NWNhODFjM2Q4NzZlYjAwZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtNjIsMjYgKzYy
LDI2IEBAIHB1YmxpYzoKICAgICAgICAgUGFyYW1MYXN0CiAgICAgfTsKIAotICAgIER5bmFtaWNz
Q29tcHJlc3Nvcihib29sIGlzU3RlcmVvLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgRHluYW1p
Y3NDb21wcmVzc29yKGJvb2wgaXNTdGVyZW8sIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9p
ZCBwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywg
dW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKLSAgICBkb3Vi
bGUgcGFyYW1ldGVyVmFsdWUodW5zaWduZWQgcGFyYW1ldGVySUQpOworICAgIGZsb2F0IHBhcmFt
ZXRlclZhbHVlKHVuc2lnbmVkIHBhcmFtZXRlcklEKTsKIAogICAgIGJvb2wgaXNTdGVyZW8oKSBj
b25zdCB7IHJldHVybiBtX2lzU3RlcmVvOyB9Ci0gICAgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25z
dCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KLSAgICBkb3VibGUgbnlxdWlzdCgpIGNvbnN0IHsg
cmV0dXJuIDAuNSAqIG1fc2FtcGxlUmF0ZTsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25z
dCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBueXF1aXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zYW1wbGVSYXRlIC8gMjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgLy8gbV9wYXJhbWV0
ZXJzIGhvbGRzIHRoZSB0d2Vha2FibGUgY29tcHJlc3NvciBwYXJhbWV0ZXJzLgogICAgIC8vIEZJ
WE1FOiBleHBvc2Ugc29tZSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgb25lcyAoc3VjaCBhcyB0aHJl
c2hvbGQsIGF0dGFjaywgcmVsZWFzZSkKICAgICAvLyBhcyBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
IGF0dHJpYnV0ZXMuCi0gICAgZG91YmxlIG1fcGFyYW1ldGVyc1tQYXJhbUxhc3RdOworICAgIGZs
b2F0IG1fcGFyYW1ldGVyc1tQYXJhbUxhc3RdOwogICAgIHZvaWQgaW5pdGlhbGl6ZVBhcmFtZXRl
cnMoKTsKIAogICAgIGJvb2wgbV9pc1N0ZXJlbzsKLSAgICBkb3VibGUgbV9zYW1wbGVSYXRlOwor
ICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKIAogICAgIC8vIEVtcGhhc2lzIGZpbHRlciBjb250cm9s
cy4KICAgICBmbG9hdCBtX2xhc3RGaWx0ZXJTdGFnZVJhdGlvOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAK
aW5kZXggYTA3MjM0NjFiYjIxYzUzY2E3MTZmZDZmZTdiNmM1N2Q0ODdjM2JiZi4uMjIyOWMzODE1
YjViZmQyOTBhZTFmZjE1ZDM1NTRmNWRmYjMwNzAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCkBA
IC00MywxNSArNDMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEF1
ZGlvVXRpbGl0aWVzOwogCiAvLyBNZXRlcmluZyBoaXRzIHBlYWtzIGluc3RhbnRseSwgYnV0IHJl
bGVhc2VzIHRoaXMgZmFzdCAoaW4gc2Vjb25kcykuCi1jb25zdCBkb3VibGUgbWV0ZXJpbmdSZWxl
YXNlVGltZUNvbnN0YW50ID0gMC4zMjU7Citjb25zdCBmbG9hdCBtZXRlcmluZ1JlbGVhc2VUaW1l
Q29uc3RhbnQgPSAwLjMyNWY7CiAgICAgCiAvLyBFeHBvbmVudGlhbCBzYXR1cmF0aW9uIGN1cnZl
Lgotc3RhdGljIGRvdWJsZSBzYXR1cmF0ZShkb3VibGUgeCwgZG91YmxlIGspCitzdGF0aWMgZmxv
YXQgc2F0dXJhdGUoZmxvYXQgeCwgZmxvYXQgaykKIHsKICAgICByZXR1cm4gMSAtIGV4cCgtayAq
IHgpOwogfQogCi1EeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OkR5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbChkb3VibGUgc2FtcGxlUmF0ZSkKK0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6RHluYW1p
Y3NDb21wcmVzc29yS2VybmVsKGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX3NhbXBsZVJhdGUo
c2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdFByZURlbGF5RnJhbWVzKERlZmF1bHRQcmVEZWxheUZy
YW1lcykKICAgICAsIG1fcHJlRGVsYXlCdWZmZXJMKE1heFByZURlbGF5RnJhbWVzKQpAQCAtMTA4
LDE4ICsxMDgsMTggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxv
YXQqIHNvdXJjZUwsCiAgICAgZmxvYXQgd2V0TWl4ID0gZWZmZWN0QmxlbmQ7CiAKICAgICAvLyBU
aHJlc2hvbGQgYW5kIGhlYWRyb29tLgotICAgIGRvdWJsZSBsaW5lYXJUaHJlc2hvbGQgPSBkZWNp
YmVsc1RvTGluZWFyKGRiVGhyZXNob2xkKTsKLSAgICBkb3VibGUgbGluZWFySGVhZHJvb20gPSBk
ZWNpYmVsc1RvTGluZWFyKGRiSGVhZHJvb20pOworICAgIGZsb2F0IGxpbmVhclRocmVzaG9sZCA9
IGRlY2liZWxzVG9MaW5lYXIoZGJUaHJlc2hvbGQpOworICAgIGZsb2F0IGxpbmVhckhlYWRyb29t
ID0gZGVjaWJlbHNUb0xpbmVhcihkYkhlYWRyb29tKTsKIAogICAgIC8vIE1ha2V1cCBnYWluLgot
ICAgIGRvdWJsZSBtYXhpbXVtID0gMS4wNSAqIGxpbmVhckhlYWRyb29tICogbGluZWFyVGhyZXNo
b2xkOwotICAgIGRvdWJsZSBrayA9IChtYXhpbXVtIC0gbGluZWFyVGhyZXNob2xkKTsKLSAgICBk
b3VibGUgaW52ZXJzZUtLID0gMSAvIGtrOworICAgIGZsb2F0IG1heGltdW0gPSAxLjA1ZiAqIGxp
bmVhckhlYWRyb29tICogbGluZWFyVGhyZXNob2xkOworICAgIGZsb2F0IGtrID0gKG1heGltdW0g
LSBsaW5lYXJUaHJlc2hvbGQpOworICAgIGZsb2F0IGludmVyc2VLSyA9IDEgLyBrazsKIAotICAg
IGRvdWJsZSBmdWxsUmFuZ2VHYWluID0gKGxpbmVhclRocmVzaG9sZCArIGtrICogc2F0dXJhdGUo
MSAtIGxpbmVhclRocmVzaG9sZCwgMSkpOwotICAgIGRvdWJsZSBmdWxsUmFuZ2VNYWtldXBHYWlu
ID0gMSAvIGZ1bGxSYW5nZUdhaW47CisgICAgZmxvYXQgZnVsbFJhbmdlR2FpbiA9IChsaW5lYXJU
aHJlc2hvbGQgKyBrayAqIHNhdHVyYXRlKDEgLSBsaW5lYXJUaHJlc2hvbGQsIDEpKTsKKyAgICBm
bG9hdCBmdWxsUmFuZ2VNYWtldXBHYWluID0gMSAvIGZ1bGxSYW5nZUdhaW47CiAgICAgLy8gRW1w
aXJpY2FsL3BlcmNlcHR1YWwgdHVuaW5nLgotICAgIGZ1bGxSYW5nZU1ha2V1cEdhaW4gPSBwb3co
ZnVsbFJhbmdlTWFrZXVwR2FpbiwgMC42KTsKKyAgICBmdWxsUmFuZ2VNYWtldXBHYWluID0gcG93
ZihmdWxsUmFuZ2VNYWtldXBHYWluLCAwLjZmKTsKIAogICAgIGZsb2F0IG1hc3RlckxpbmVhckdh
aW4gPSBkZWNpYmVsc1RvTGluZWFyKGRiUG9zdEdhaW4pICogZnVsbFJhbmdlTWFrZXVwR2FpbjsK
IApAQCAtMTMxLDI2ICsxMzEsMjYgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnBy
b2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAgICAgZmxvYXQgcmVsZWFzZUZyYW1lcyA9IHNhbXBsZVJh
dGUgKiByZWxlYXNlVGltZTsKICAgICAKICAgICAvLyBEZXRlY3RvciByZWxlYXNlIHRpbWUuCi0g
ICAgZG91YmxlIHNhdFJlbGVhc2VUaW1lID0gMC4wMDI1OwotICAgIGRvdWJsZSBzYXRSZWxlYXNl
RnJhbWVzID0gc2F0UmVsZWFzZVRpbWUgKiBzYW1wbGVSYXRlOworICAgIGZsb2F0IHNhdFJlbGVh
c2VUaW1lID0gMC4wMDI1ZjsKKyAgICBmbG9hdCBzYXRSZWxlYXNlRnJhbWVzID0gc2F0UmVsZWFz
ZVRpbWUgKiBzYW1wbGVSYXRlOwogCiAgICAgLy8gQ3JlYXRlIGEgc21vb3RoIGZ1bmN0aW9uIHdo
aWNoIHBhc3NlcyB0aHJvdWdoIGZvdXIgcG9pbnRzLgogCiAgICAgLy8gUG9seW5vbWlhbCBvZiB0
aGUgZm9ybQogICAgIC8vIHkgPSBhICsgYip4ICsgYyp4XjIgKyBkKnheMyArIGUqeF40OwogCi0g
ICAgZG91YmxlIHkxID0gcmVsZWFzZUZyYW1lcyAqIHJlbGVhc2Vab25lMTsKLSAgICBkb3VibGUg
eTIgPSByZWxlYXNlRnJhbWVzICogcmVsZWFzZVpvbmUyOwotICAgIGRvdWJsZSB5MyA9IHJlbGVh
c2VGcmFtZXMgKiByZWxlYXNlWm9uZTM7Ci0gICAgZG91YmxlIHk0ID0gcmVsZWFzZUZyYW1lcyAq
IHJlbGVhc2Vab25lNDsKKyAgICBmbG9hdCB5MSA9IHJlbGVhc2VGcmFtZXMgKiByZWxlYXNlWm9u
ZTE7CisgICAgZmxvYXQgeTIgPSByZWxlYXNlRnJhbWVzICogcmVsZWFzZVpvbmUyOworICAgIGZs
b2F0IHkzID0gcmVsZWFzZUZyYW1lcyAqIHJlbGVhc2Vab25lMzsKKyAgICBmbG9hdCB5NCA9IHJl
bGVhc2VGcmFtZXMgKiByZWxlYXNlWm9uZTQ7CiAKICAgICAvLyBBbGwgb2YgdGhlc2UgY29lZmZp
Y2llbnRzIHdlcmUgZGVyaXZlZCBmb3IgNHRoIG9yZGVyIHBvbHlub21pYWwgY3VydmUgZml0dGlu
ZyB3aGVyZSB0aGUgeSB2YWx1ZXMKICAgICAvLyBtYXRjaCB0aGUgZXZlbmx5IHNwYWNlZCB4IHZh
bHVlcyBhcyBmb2xsb3dzOiAoeTEgOiB4ID09IDAsIHkyIDogeCA9PSAxLCB5MyA6IHggPT0gMiwg
eTQgOiB4ID09IDMpCi0gICAgZG91YmxlIGtBID0gMC45OTk5OTk5OTk5OTk5OTk4KnkxICsgMS44
NDMyMjE5Njg0MzIzOTIzZS0xNip5MiAtIDEuOTM3MzM5NDM1MTY3NjQyM2UtMTYqeTMgKyA4Ljgy
NDUxNjAxMTgxNjI0NWUtMTgqeTQ7Ci0gICAgZG91YmxlIGtCID0gLTEuNTc4ODMyMDM1Mjg0NTg4
OCp5MSArIDIuMzMwNTgzNzAzMjA3NDI4Nip5MiAtIDAuOTE0MTE5NDIwNDg0MDQyOSp5MyArIDAu
MTYyMzY3NzUyNTYxMjAzMip5NDsKLSAgICBkb3VibGUga0MgPSAwLjUzMzQxNDI4NjkxMDY0MjQq
eTEgLSAxLjI3MjczNjc4OTIxMzYzMSp5MiArIDAuOTI1ODg1NjA0MjIwNzUxMip5MyAtIDAuMTg2
NTYzMTAxOTE3NzYyMjYqeTQ7Ci0gICAgZG91YmxlIGtEID0gMC4wODc4MzQ2MzEzODIwNzIzNCp5
MSAtIDAuMTY5NDE2Mjk2NzkyNTYyMip5MiArIDAuMDg1ODgwNTc5NTE1OTUyNzIqeTMgLSAwLjAw
NDI5ODkxNDEwNTQ2MjgzKnk0OwotICAgIGRvdWJsZSBrRSA9IC0wLjA0MjQxNjg4MzAwODEyMzA3
NCp5MSArIDAuMTExNTY5MzgyNzk4NzYwMip5MiAtIDAuMDk3NjQ2NzYzMjUyNjU4NzIqeTMgKyAw
LjAyODQ5NDI2MzQ2MjAyMTU3Nip5NDsKKyAgICBmbG9hdCBrQSA9IDAuOTk5OTk5OTk5OTk5OTk5
OGYqeTEgKyAxLjg0MzIyMTk2ODQzMjM5MjNlLTE2Zip5MiAtIDEuOTM3MzM5NDM1MTY3NjQyM2Ut
MTZmKnkzICsgOC44MjQ1MTYwMTE4MTYyNDVlLTE4Zip5NDsKKyAgICBmbG9hdCBrQiA9IC0xLjU3
ODgzMjAzNTI4NDU4ODhmKnkxICsgMi4zMzA1ODM3MDMyMDc0Mjg2Zip5MiAtIDAuOTE0MTE5NDIw
NDg0MDQyOWYqeTMgKyAwLjE2MjM2Nzc1MjU2MTIwMzJmKnk0OworICAgIGZsb2F0IGtDID0gMC41
MzM0MTQyODY5MTA2NDI0Zip5MSAtIDEuMjcyNzM2Nzg5MjEzNjMxZip5MiArIDAuOTI1ODg1NjA0
MjIwNzUxMmYqeTMgLSAwLjE4NjU2MzEwMTkxNzc2MjI2Zip5NDsKKyAgICBmbG9hdCBrRCA9IDAu
MDg3ODM0NjMxMzgyMDcyMzRmKnkxIC0gMC4xNjk0MTYyOTY3OTI1NjIyZip5MiArIDAuMDg1ODgw
NTc5NTE1OTUyNzJmKnkzIC0gMC4wMDQyOTg5MTQxMDU0NjI4M2YqeTQ7CisgICAgZmxvYXQga0Ug
PSAtMC4wNDI0MTY4ODMwMDgxMjMwNzRmKnkxICsgMC4xMTE1NjkzODI3OTg3NjAyZip5MiAtIDAu
MDk3NjQ2NzYzMjUyNjU4NzJmKnkzICsgMC4wMjg0OTQyNjM0NjIwMjE1NzZmKnk0OwogCiAgICAg
Ly8geCByYW5nZXMgZnJvbSAwIC0+IDMgICAgICAgMCAgICAxICAgIDIgICAzCiAgICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAtMTUgIC0xMCAgLTUgICAwZGIKQEAgLTE3Nyw3ICsxNzcs
NyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNl
TCwKICAgICAgICAgZmxvYXQgZGVzaXJlZEdhaW4gPSBtX2RldGVjdG9yQXZlcmFnZTsKIAogICAg
ICAgICAvLyBQcmUtd2FycCBzbyB3ZSBnZXQgZGVzaXJlZEdhaW4gYWZ0ZXIgc2luKCkgd2FycCBi
ZWxvdy4KLSAgICAgICAgZG91YmxlIHNjYWxlZERlc2lyZWRHYWluID0gYXNpbihkZXNpcmVkR2Fp
bikgLyAoMC41ICogcGlEb3VibGUpOworICAgICAgICBmbG9hdCBzY2FsZWREZXNpcmVkR2FpbiA9
IGFzaW5mKGRlc2lyZWRHYWluKSAvICgwLjVmICogcGlGbG9hdCk7CiAKICAgICAgICAgLy8gfn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAgICAgICAgIC8vIERlYWwgd2l0aCBlbnZl
bG9wZXMKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6
cHJvY2VzcyhmbG9hdCogc291cmNlTCwKICAgICAgICAgYm9vbCBpc1JlbGVhc2luZyA9IHNjYWxl
ZERlc2lyZWRHYWluID4gbV9jb21wcmVzc29yR2FpbjsKIAogICAgICAgICAvLyBjb21wcmVzc2lv
bkRpZmZEYiBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgY29tcHJlc3Npb24gbGV2
ZWwgYW5kIHRoZSBkZXNpcmVkIGxldmVsLgotICAgICAgICBkb3VibGUgY29tcHJlc3Npb25EaWZm
RGIgPSBsaW5lYXJUb0RlY2liZWxzKG1fY29tcHJlc3NvckdhaW4gLyBzY2FsZWREZXNpcmVkR2Fp
bik7CisgICAgICAgIGZsb2F0IGNvbXByZXNzaW9uRGlmZkRiID0gbGluZWFyVG9EZWNpYmVscyht
X2NvbXByZXNzb3JHYWluIC8gc2NhbGVkRGVzaXJlZEdhaW4pOwogCiAgICAgICAgIGlmIChpc1Jl
bGVhc2luZykgewogICAgICAgICAgICAgLy8gUmVsZWFzZSBtb2RlIC0gY29tcHJlc3Npb25EaWZm
RGIgc2hvdWxkIGJlIG5lZ2F0aXZlIGRCCkBAIC0yMDUsMjAgKzIwNSwyMCBAQCB2b2lkIER5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlTCwKICAgICAgICAgICAg
IC8vIEFkYXB0aXZlIHJlbGVhc2UgLSBoaWdoZXIgY29tcHJlc3Npb24gKGxvd2VyIGNvbXByZXNz
aW9uRGlmZkRiKSAgcmVsZWFzZXMgZmFzdGVyLgogCiAgICAgICAgICAgICAvLyBDb250YWluIHdp
dGhpbiByYW5nZTogLTEyIC0+IDAgdGhlbiBzY2FsZSB0byBnbyBmcm9tIDAgLT4gMwotICAgICAg
ICAgICAgZG91YmxlIHggPSBjb21wcmVzc2lvbkRpZmZEYjsKLSAgICAgICAgICAgIHggPSBtYXgo
LTEyLiwgeCk7Ci0gICAgICAgICAgICB4ID0gbWluKDAuLCB4KTsKLSAgICAgICAgICAgIHggPSAw
LjI1ICogKHggKyAxMik7CisgICAgICAgICAgICBmbG9hdCB4ID0gY29tcHJlc3Npb25EaWZmRGI7
CisgICAgICAgICAgICB4ID0gbWF4KC0xMi4wZiwgeCk7CisgICAgICAgICAgICB4ID0gbWluKDAu
MGYsIHgpOworICAgICAgICAgICAgeCA9IDAuMjVmICogKHggKyAxMik7CiAKICAgICAgICAgICAg
IC8vIENvbXB1dGUgYWRhcHRpdmUgcmVsZWFzZSBjdXJ2ZSB1c2luZyA0dGggb3JkZXIgcG9seW5v
bWlhbC4KICAgICAgICAgICAgIC8vIE5vcm1hbCB2YWx1ZXMgZm9yIHRoZSBwb2x5bm9taWFsIGNv
ZWZmaWNpZW50cyB3b3VsZCBjcmVhdGUgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgZnVuY3Rp
b24uCi0gICAgICAgICAgICBkb3VibGUgeDIgPSB4ICogeDsKLSAgICAgICAgICAgIGRvdWJsZSB4
MyA9IHgyICogeDsKLSAgICAgICAgICAgIGRvdWJsZSB4NCA9IHgyICogeDI7Ci0gICAgICAgICAg
ICBkb3VibGUgcmVsZWFzZUZyYW1lcyA9IGtBICsga0IgKiB4ICsga0MgKiB4MiArIGtEICogeDMg
KyBrRSAqIHg0OworICAgICAgICAgICAgZmxvYXQgeDIgPSB4ICogeDsKKyAgICAgICAgICAgIGZs
b2F0IHgzID0geDIgKiB4OworICAgICAgICAgICAgZmxvYXQgeDQgPSB4MiAqIHgyOworICAgICAg
ICAgICAgZmxvYXQgcmVsZWFzZUZyYW1lcyA9IGtBICsga0IgKiB4ICsga0MgKiB4MiArIGtEICog
eDMgKyBrRSAqIHg0OwogCiAjZGVmaW5lIGtTcGFjaW5nRGIgNQotICAgICAgICAgICAgZG91Ymxl
IGRiUGVyRnJhbWUgPSBrU3BhY2luZ0RiIC8gcmVsZWFzZUZyYW1lczsKKyAgICAgICAgICAgIGZs
b2F0IGRiUGVyRnJhbWUgPSBrU3BhY2luZ0RiIC8gcmVsZWFzZUZyYW1lczsKIAogICAgICAgICAg
ICAgZW52ZWxvcGVSYXRlID0gZGVjaWJlbHNUb0xpbmVhcihkYlBlckZyYW1lKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTIzNSwxMCArMjM1LDEwIEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2Vy
bmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VMLAogICAgICAgICAgICAgaWYgKG1fbWF4QXR0YWNr
Q29tcHJlc3Npb25EaWZmRGIgPT0gLTEgfHwgbV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYiA8
IGNvbXByZXNzaW9uRGlmZkRiKQogICAgICAgICAgICAgICAgIG1fbWF4QXR0YWNrQ29tcHJlc3Np
b25EaWZmRGIgPSBjb21wcmVzc2lvbkRpZmZEYjsKIAotICAgICAgICAgICAgZG91YmxlIGVmZkF0
dGVuRGlmZkRiID0gbWF4KDAuNWYsIG1fbWF4QXR0YWNrQ29tcHJlc3Npb25EaWZmRGIpOworICAg
ICAgICAgICAgZmxvYXQgZWZmQXR0ZW5EaWZmRGIgPSBtYXgoMC41ZiwgbV9tYXhBdHRhY2tDb21w
cmVzc2lvbkRpZmZEYik7CiAKLSAgICAgICAgICAgIGRvdWJsZSB4ID0gMC4yNSAvIGVmZkF0dGVu
RGlmZkRiOwotICAgICAgICAgICAgZW52ZWxvcGVSYXRlID0gMSAtIHBvdyh4LCBkb3VibGUoMSAv
IGF0dGFja0ZyYW1lcykpOworICAgICAgICAgICAgZmxvYXQgeCA9IDAuMjVmIC8gZWZmQXR0ZW5E
aWZmRGI7CisgICAgICAgICAgICBlbnZlbG9wZVJhdGUgPSAxIC0gcG93Zih4LCAxIC8gYXR0YWNr
RnJhbWVzKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+
fn5+fn5+fn5+fgpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2Vy
bmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VMLAogICAgICAgICAgICAgICAgICAgICBmbG9hdCB1
bmRlbGF5ZWRMID0gKnNvdXJjZUwrKzsKICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdW5kZWxh
eWVkUiA9ICpzb3VyY2VSKys7CiAKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NvcklucHV0
ID0gMC41ICogKHVuZGVsYXllZEwgKyB1bmRlbGF5ZWRSKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29tcHJlc3NvcklucHV0ID0gMC41ZiAqICh1bmRlbGF5ZWRMICsgdW5kZWxheWVkUik7CiAKICAg
ICAgICAgICAgICAgICAgICAgaW5wdXRMID0gZGVsYXlCdWZmZXJMW3ByZURlbGF5UmVhZEluZGV4
XTsKICAgICAgICAgICAgICAgICAgICAgaW5wdXRSID0gZGVsYXlCdWZmZXJSW3ByZURlbGF5UmVh
ZEluZGV4XTsKQEAgLTI4NCwyNCArMjg0LDI0IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2Vy
bmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VMLAogICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0
ZSBzaGFwZWQgcG93ZXIgb24gdW5kZWxheWVkIGlucHV0LgogCiAgICAgICAgICAgICAgICAgZmxv
YXQgc2NhbGVkSW5wdXQgPSBjb21wcmVzc29ySW5wdXQ7Ci0gICAgICAgICAgICAgICAgZG91Ymxl
IGFic0lucHV0ID0gc2NhbGVkSW5wdXQgPiAwID8gc2NhbGVkSW5wdXQgOiAtc2NhbGVkSW5wdXQ7
CisgICAgICAgICAgICAgICAgZmxvYXQgYWJzSW5wdXQgPSBzY2FsZWRJbnB1dCA+IDAgPyBzY2Fs
ZWRJbnB1dCA6IC1zY2FsZWRJbnB1dDsKIAogICAgICAgICAgICAgICAgIC8vIFB1dCB0aHJvdWdo
IHNoYXBpbmcgY3VydmUuCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBsaW5lYXIgdXAgdG8g
dGhlIHRocmVzaG9sZCwgdGhlbiBleHBvbmVudGlhbGx5IGFwcHJvYWNoZXMgdGhlIG1heGltdW0g
KGhlYWRyb29tIGFtb3VudCBhYm92ZSB0aHJlc2hvbGQpLgogICAgICAgICAgICAgICAgIC8vIFRo
ZSB0cmFuc2l0aW9uIGZyb20gdGhlIHRocmVzaG9sZCB0byB0aGUgZXhwb25lbnRpYWwgcG9ydGlv
biBpcyBzbW9vdGggKDFzdCBkZXJpdmF0aXZlIG1hdGNoZWQpLgotICAgICAgICAgICAgICAgIGRv
dWJsZSBzaGFwZWRJbnB1dCA9IGFic0lucHV0IDwgbGluZWFyVGhyZXNob2xkID8gYWJzSW5wdXQg
OiBsaW5lYXJUaHJlc2hvbGQgKyBrayAqIHNhdHVyYXRlKGFic0lucHV0IC0gbGluZWFyVGhyZXNo
b2xkLCBpbnZlcnNlS0spOworICAgICAgICAgICAgICAgIGZsb2F0IHNoYXBlZElucHV0ID0gYWJz
SW5wdXQgPCBsaW5lYXJUaHJlc2hvbGQgPyBhYnNJbnB1dCA6IGxpbmVhclRocmVzaG9sZCArIGtr
ICogc2F0dXJhdGUoYWJzSW5wdXQgLSBsaW5lYXJUaHJlc2hvbGQsIGludmVyc2VLSyk7CiAKLSAg
ICAgICAgICAgICAgICBkb3VibGUgYXR0ZW51YXRpb24gPSBhYnNJbnB1dCA8PSAwLjAwMDEgPyAx
IDogc2hhcGVkSW5wdXQgLyBhYnNJbnB1dDsKKyAgICAgICAgICAgICAgICBmbG9hdCBhdHRlbnVh
dGlvbiA9IGFic0lucHV0IDw9IDAuMDAwMWYgPyAxIDogc2hhcGVkSW5wdXQgLyBhYnNJbnB1dDsK
IAotICAgICAgICAgICAgICAgIGRvdWJsZSBhdHRlbnVhdGlvbkRiID0gLWxpbmVhclRvRGVjaWJl
bHMoYXR0ZW51YXRpb24pOwotICAgICAgICAgICAgICAgIGF0dGVudWF0aW9uRGIgPSBtYXgoMi4s
IGF0dGVudWF0aW9uRGIpOworICAgICAgICAgICAgICAgIGZsb2F0IGF0dGVudWF0aW9uRGIgPSAt
bGluZWFyVG9EZWNpYmVscyhhdHRlbnVhdGlvbik7CisgICAgICAgICAgICAgICAgYXR0ZW51YXRp
b25EYiA9IG1heCgyLjBmLCBhdHRlbnVhdGlvbkRiKTsKIAotICAgICAgICAgICAgICAgIGRvdWJs
ZSBkYlBlckZyYW1lID0gYXR0ZW51YXRpb25EYiAvIHNhdFJlbGVhc2VGcmFtZXM7CisgICAgICAg
ICAgICAgICAgZmxvYXQgZGJQZXJGcmFtZSA9IGF0dGVudWF0aW9uRGIgLyBzYXRSZWxlYXNlRnJh
bWVzOwogCi0gICAgICAgICAgICAgICAgZG91YmxlIHNhdFJlbGVhc2VSYXRlID0gZGVjaWJlbHNU
b0xpbmVhcihkYlBlckZyYW1lKSAtIDE7CisgICAgICAgICAgICAgICAgZmxvYXQgc2F0UmVsZWFz
ZVJhdGUgPSBkZWNpYmVsc1RvTGluZWFyKGRiUGVyRnJhbWUpIC0gMTsKIAogICAgICAgICAgICAg
ICAgIGJvb2wgaXNSZWxlYXNlID0gKGF0dGVudWF0aW9uID4gZGV0ZWN0b3JBdmVyYWdlKTsKLSAg
ICAgICAgICAgICAgICBkb3VibGUgcmF0ZSA9IGlzUmVsZWFzZSA/IHNhdFJlbGVhc2VSYXRlIDog
MTsKKyAgICAgICAgICAgICAgICBmbG9hdCByYXRlID0gaXNSZWxlYXNlID8gc2F0UmVsZWFzZVJh
dGUgOiAxOwogCiAgICAgICAgICAgICAgICAgZGV0ZWN0b3JBdmVyYWdlICs9IChhdHRlbnVhdGlv
biAtIGRldGVjdG9yQXZlcmFnZSkgKiByYXRlOwogICAgICAgICAgICAgICAgIGRldGVjdG9yQXZl
cmFnZSA9IG1pbigxLjBmLCBkZXRlY3RvckF2ZXJhZ2UpOwpAQCAtMzIzLDEzICszMjMsMTMgQEAg
dm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCiAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gV2FycCBwcmUtY29tcHJlc3Np
b24gZ2FpbiB0byBzbW9vdGggb3V0IHNoYXJwIGV4cG9uZW50aWFsIHRyYW5zaXRpb24gcG9pbnRz
LgotICAgICAgICAgICAgICAgIGRvdWJsZSBwb3N0V2FycENvbXByZXNzb3JHYWluID0gc2luKDAu
NSAqIHBpRG91YmxlICogY29tcHJlc3NvckdhaW4pOworICAgICAgICAgICAgICAgIGZsb2F0IHBv
c3RXYXJwQ29tcHJlc3NvckdhaW4gPSBzaW5mKDAuNWYgKiBwaUZsb2F0ICogY29tcHJlc3Nvckdh
aW4pOwogCiAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRvdGFsIGdhaW4gdXNpbmcgbWFz
dGVyIGdhaW4gYW5kIGVmZmVjdCBibGVuZC4KLSAgICAgICAgICAgICAgICBkb3VibGUgdG90YWxH
YWluID0gZHJ5TWl4ICsgd2V0TWl4ICogbWFzdGVyTGluZWFyR2FpbiAqIHBvc3RXYXJwQ29tcHJl
c3NvckdhaW47CisgICAgICAgICAgICAgICAgZmxvYXQgdG90YWxHYWluID0gZHJ5TWl4ICsgd2V0
TWl4ICogbWFzdGVyTGluZWFyR2FpbiAqIHBvc3RXYXJwQ29tcHJlc3NvckdhaW47CiAKICAgICAg
ICAgICAgICAgICAvLyBDYWxjdWxhdGUgbWV0ZXJpbmcuCi0gICAgICAgICAgICAgICAgZG91Ymxl
IGRiUmVhbEdhaW4gPSAyMCAqIGxvZzEwKHBvc3RXYXJwQ29tcHJlc3NvckdhaW4pOworICAgICAg
ICAgICAgICAgIGZsb2F0IGRiUmVhbEdhaW4gPSAyMCAqIGxvZzEwKHBvc3RXYXJwQ29tcHJlc3Nv
ckdhaW4pOwogICAgICAgICAgICAgICAgIGlmIChkYlJlYWxHYWluIDwgbV9tZXRlcmluZ0dhaW4p
CiAgICAgICAgICAgICAgICAgICAgIG1fbWV0ZXJpbmdHYWluID0gZGJSZWFsR2FpbjsKICAgICAg
ICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCmluZGV4IGE2ZTcwZDM1MGYxMjAyN2QwNzgw
NmU4MTE5YzFmMzJhMzViZjY1MWIuLjhlNWY3MDk5ZDg4YmI1NWFlNzhkNDc4Y2Q3OTZkY2Y0YTE5
NmQyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRHluYW1pY3NDb21wcmVzc29yS2VybmVsIHsKIHB1YmxpYzoKLSAgICBE
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwoZG91YmxlIHNhbXBsZVJhdGUpOworICAgIER5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbChmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIC8vIFBlcmZvcm1zIHN0
ZXJlby1saW5rZWQgY29tcHJlc3Npb24uCiAgICAgdm9pZCBwcm9jZXNzKGZsb2F0ICpzb3VyY2VM
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBh
bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVy
LmNwcAppbmRleCBlMmMyYTVjNDZhY2UxNzE0Nzc0Mzg1YjA1NjEwODQ5NTY0MTg4YzFmLi4xM2Ex
OWQ2Y2Q0NDUxZDdiMmY5ODgyYjUwYzRlZDllMDAzMjBiM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNwcApAQCAtMzQsMTMgKzM0
LDEzIEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogLy8gVXNlIGEgNTBtcyBzbW9v
dGhpbmcgLyBkZS16aXBwZXJpbmcgdGltZS1jb25zdGFudC4KLWNvbnN0IGRvdWJsZSBTbW9vdGhp
bmdUaW1lQ29uc3RhbnQgPSAwLjA1MDsKK2NvbnN0IGZsb2F0IFNtb290aGluZ1RpbWVDb25zdGFu
dCA9IDAuMDUwZjsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1FcXVhbFBvd2VyUGFubmVyOjpFcXVhbFBvd2VyUGFubmVyKGRvdWJsZSBzYW1wbGVSYXRl
KQorRXF1YWxQb3dlclBhbm5lcjo6RXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKQog
ICAgIDogUGFubmVyKFBhbm5pbmdNb2RlbEVxdWFsUG93ZXIpCiAgICAgLCBtX2lzRmlyc3RSZW5k
ZXIodHJ1ZSkKICAgICAsIG1fZ2FpbkwoMC4wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCmluZGV4IGYyMDYxN2ViNDdjYzM1NDQzMGVmYzE2
NzNjYTQ5MTEzY2ViZmIxZjUuLjRmNjAwMWRmOTE0MjBlYzU0NGFmY2VkY2RmNjg5N2U4NDQ4MGQ3
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQ
YW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFu
bmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFcXVh
bFBvd2VyUGFubmVyIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6Ci0gICAgRXF1YWxQb3dlclBh
bm5lcihkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgRXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSBl
bGV2YXRpb24sIEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91dHB1dEJ1Ziwgc2l6ZV90
IGZyYW1lc1RvUHJvY2Vzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2UuY3BwCmluZGV4IGVmMTIyOWY2OTVlMTU4MmQzOTQyMDYyOTNhMWEwZDM3MjE1
ZmM1OWUuLjg1NTg2OTgwMzI2ZjUyMDdhYmJiMGRkNDIzMmNmYTAzMDg1Y2Y5MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcApAQCAtNDUsMTMg
KzQ1LDEzIEBAIGNvbnN0IHVuc2lnbmVkIEhSVEZEYXRhYmFzZTo6TnVtYmVyT2ZSYXdFbGV2YXRp
b25zID0gMTA7IC8vIC00NSAtPiArOTAgKGVhY2ggMTUKIGNvbnN0IHVuc2lnbmVkIEhSVEZEYXRh
YmFzZTo6SW50ZXJwb2xhdGlvbkZhY3RvciA9IDE7CiBjb25zdCB1bnNpZ25lZCBIUlRGRGF0YWJh
c2U6Ok51bWJlck9mVG90YWxFbGV2YXRpb25zID0gTnVtYmVyT2ZSYXdFbGV2YXRpb25zICogSW50
ZXJwb2xhdGlvbkZhY3RvcjsKIAotUGFzc093blB0cjxIUlRGRGF0YWJhc2U+IEhSVEZEYXRhYmFz
ZTo6Y3JlYXRlKGRvdWJsZSBzYW1wbGVSYXRlKQorUGFzc093blB0cjxIUlRGRGF0YWJhc2U+IEhS
VEZEYXRhYmFzZTo6Y3JlYXRlKGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgT3duUHRyPEhSVEZE
YXRhYmFzZT4gaHJ0ZkRhdGFiYXNlID0gYWRvcHRQdHIobmV3IEhSVEZEYXRhYmFzZShzYW1wbGVS
YXRlKSk7CiAgICAgcmV0dXJuIGhydGZEYXRhYmFzZS5yZWxlYXNlKCk7CiB9CiAKLUhSVEZEYXRh
YmFzZTo6SFJURkRhdGFiYXNlKGRvdWJsZSBzYW1wbGVSYXRlKQorSFJURkRhdGFiYXNlOjpIUlRG
RGF0YWJhc2UoZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IG1fZWxldmF0aW9ucyhOdW1iZXJPZlRv
dGFsRWxldmF0aW9ucykKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogewpAQCAtNzUs
NyArNzUsNyBAQCBIUlRGRGF0YWJhc2U6OkhSVEZEYXRhYmFzZShkb3VibGUgc2FtcGxlUmF0ZSkK
IAogICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbnRlcnBvbGF0ZWQgY29udm9sdXRpb24ga2Vy
bmVscyBhbmQgZGVsYXlzLgogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqaiA9IDE7IGpqIDwg
SW50ZXJwb2xhdGlvbkZhY3RvcjsgKytqaikgewotICAgICAgICAgICAgICAgIGRvdWJsZSB4ID0g
c3RhdGljX2Nhc3Q8ZG91YmxlPihqaikgLyBzdGF0aWNfY2FzdDxkb3VibGU+KEludGVycG9sYXRp
b25GYWN0b3IpOworICAgICAgICAgICAgICAgIGZsb2F0IHggPSBzdGF0aWNfY2FzdDxmbG9hdD4o
amopIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KEludGVycG9sYXRpb25GYWN0b3IpOwogICAgICAgICAg
ICAgICAgIG1fZWxldmF0aW9uc1tpICsgampdID0gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRl
cnBvbGF0aW5nU2xpY2VzKG1fZWxldmF0aW9uc1tpXS5nZXQoKSwgbV9lbGV2YXRpb25zW2pdLmdl
dCgpLCB4LCBzYW1wbGVSYXRlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9lbGV2YXRpb25z
W2kgKyBqal0uZ2V0KCkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRGF0YWJhc2UuaAppbmRleCBiZjEzYTNhMjIzMDk1NmFiY2Q2YjllZWQ1MTcy
OTI2ZDc1YTcxYTE4Li5iYjdjZjUzMGY1YTFjNmYwYTI3MGI2YWEyNzNhNTQzZTJhZGExNjQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaApAQCAtNDYs
NyArNDYsNyBAQCBjbGFzcyBIUlRGS2VybmVsOwogY2xhc3MgSFJURkRhdGFiYXNlIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShIUlRGRGF0YWJhc2UpOwogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEhSVEZEYXRhYmFzZT4gY3JlYXRlKGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxIUlRGRGF0YWJhc2U+IGNyZWF0ZShmbG9hdCBzYW1wbGVSYXRlKTsK
IAogICAgIC8vIGdldEtlcm5lbHNGcm9tQXppbXV0aEVsZXZhdGlvbigpIHJldHVybnMgYSBsZWZ0
IGFuZCByaWdodCBlYXIga2VybmVsLCBhbmQgYW4gaW50ZXJwb2xhdGVkIGxlZnQgYW5kIHJpZ2h0
IGZyYW1lIGRlbGF5IGZvciB0aGUgZ2l2ZW4gYXppbXV0aCBhbmQgZWxldmF0aW9uLgogICAgIC8v
IGF6aW11dGhCbGVuZCBtdXN0IGJlIGluIHRoZSByYW5nZSAwIC0+IDEuCkBAIC01NywxMCArNTcs
MTAgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgYXpp
bXV0aCBhbmdsZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIG51bWJlck9mQXppbXV0aHMoKSB7IHJl
dHVybiBIUlRGRWxldmF0aW9uOjpOdW1iZXJPZlRvdGFsQXppbXV0aHM7IH0KIAotICAgIGRvdWJs
ZSBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBIUlRGRGF0YWJhc2UoZG91YmxlIHNhbXBsZVJhdGUpOworICAgIGV4
cGxpY2l0IEhSVEZEYXRhYmFzZShmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIC8vIE1pbmltdW0g
YW5kIG1heGltdW0gZWxldmF0aW9uIGFuZ2xlcyAoaW5jbHVzaXZlKSBmb3IgYSBIUlRGRGF0YWJh
c2UuCiAgICAgc3RhdGljIGNvbnN0IGludCBNaW5FbGV2YXRpb247CkBAIC04MCw3ICs4MCw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIHVuc2lnbmVkIGluZGV4RnJvbUVsZXZhdGlvbkFuZ2xlKGRv
dWJsZSk7CiAKICAgICBWZWN0b3I8T3duUHRyPEhSVEZFbGV2YXRpb24+ID4gbV9lbGV2YXRpb25z
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgZG91Ymxl
IG1fc2FtcGxlUmF0ZTsKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCA5YWNkYzMyNThmYTg2Y2NmYmM3ODg2ZThkZGU5NTk5
NmE4NzdkZDIzLi5jYjczNTVhYThmYTNhZDE1YzgxYjdjYTQzZTAxZDRlZWM0MzgwY2MzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRl
ci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gU2luZ2xldG9u
CiBIUlRGRGF0YWJhc2VMb2FkZXIqIEhSVEZEYXRhYmFzZUxvYWRlcjo6c19sb2FkZXIgPSAwOwog
Ci1QYXNzUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVh
dGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShkb3VibGUgc2FtcGxlUmF0ZSkKK1Bh
c3NSZWZQdHI8SFJURkRhdGFiYXNlTG9hZGVyPiBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFu
ZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTksNyArNTksNyBAQCBQYXNzUmVmUHRyPEhS
VEZEYXRhYmFzZUxvYWRlcj4gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNo
cm9ub3VzbHlJZgogICAgIHJldHVybiBsb2FkZXI7CiB9CiAKLUhSVEZEYXRhYmFzZUxvYWRlcjo6
SFJURkRhdGFiYXNlTG9hZGVyKGRvdWJsZSBzYW1wbGVSYXRlKQorSFJURkRhdGFiYXNlTG9hZGVy
OjpIUlRGRGF0YWJhc2VMb2FkZXIoZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IG1fZGF0YWJhc2VM
b2FkZXJUaHJlYWQoMCkKICAgICAsIG1fZGF0YWJhc2VTYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRl
ci5oCmluZGV4IGVlN2ViMjIzYzc5YjQyMTAzNWVmYjk5MzFhMzQ3YWQ3MTExYzU0NzUuLmU2Nzcw
N2U4MTRhMWRhYzdjYmVmNWJjZTY4ZTEwNzQzMDc5Y2VhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oCkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICAvLyBMYXppbHkgY3JlYXRlcyB0aGUgc2luZ2xldG9uIEhSVEZEYXRh
YmFzZUxvYWRlciAoaWYgbm90IGFscmVhZHkgY3JlYXRlZCkgYW5kIHN0YXJ0cyBsb2FkaW5nIGFz
eW5jaHJvbm91c2x5ICh3aGVuIGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUpLgogICAgIC8vIFJldHVy
bnMgdGhlIHNpbmdsZXRvbiBIUlRGRGF0YWJhc2VMb2FkZXIuCiAgICAgLy8gTXVzdCBiZSBjYWxs
ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFJURkRhdGFi
YXNlTG9hZGVyPiBjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShkb3VibGUg
c2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFJURkRhdGFiYXNlTG9hZGVyPiBj
cmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShmbG9hdCBzYW1wbGVSYXRlKTsK
IAogICAgIC8vIFJldHVybnMgdGhlIHNpbmdsZXRvbiBIUlRGRGF0YWJhc2VMb2FkZXIuCiAgICAg
c3RhdGljIEhSVEZEYXRhYmFzZUxvYWRlciogbG9hZGVyKCkgeyByZXR1cm4gc19sb2FkZXI7IH0K
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIAogICAgIEhSVEZEYXRhYmFzZSogZGF0YWJh
c2UoKSB7IHJldHVybiBtX2hydGZEYXRhYmFzZS5nZXQoKTsgfQogCi0gICAgZG91YmxlIGRhdGFi
YXNlU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VTYW1wbGVSYXRlOyB9Cisg
ICAgZmxvYXQgZGF0YWJhc2VTYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZVNh
bXBsZVJhdGU7IH0KICAgICAKICAgICAvLyBDYWxsZWQgaW4gYXN5bmNocm9ub3VzIGxvYWRpbmcg
dGhyZWFkLgogICAgIHZvaWQgbG9hZCgpOwpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgLy8gQm90aCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBtdXN0IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBleHBsaWNpdCBIUlRGRGF0YWJhc2VMb2Fk
ZXIoZG91YmxlIHNhbXBsZVJhdGUpOyAgICAKKyAgICBleHBsaWNpdCBIUlRGRGF0YWJhc2VMb2Fk
ZXIoZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgCiAgICAgLy8gSWYgaXQgaGFzbid0IGFscmVhZHkg
YmVlbiBsb2FkZWQsIGNyZWF0ZXMgYSBuZXcgdGhyZWFkIGFuZCBpbml0aWF0ZXMgYXN5bmNocm9u
b3VzIGxvYWRpbmcgb2YgdGhlIGRlZmF1bHQgZGF0YWJhc2UuCiAgICAgLy8gVGhpcyBtdXN0IGJl
IGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToK
ICAgICBNdXRleCBtX3RocmVhZExvY2s7CiAgICAgVGhyZWFkSWRlbnRpZmllciBtX2RhdGFiYXNl
TG9hZGVyVGhyZWFkOwogCi0gICAgZG91YmxlIG1fZGF0YWJhc2VTYW1wbGVSYXRlOyAgICAKKyAg
ICBmbG9hdCBtX2RhdGFiYXNlU2FtcGxlUmF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAK
aW5kZXggYjBkYjg2MjNmOTYzYTBlNzdjMDlhOGY1NDE0M2U0YTdkYjA2MTczMC4uY2YyMTI1NTQ5
MDI2NWViODk0NGRjMjEyNzMxOTFhYjEyYjA1YjI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgY29uc3Qg
dW5zaWduZWQgSFJURkVsZXZhdGlvbjo6TnVtYmVyT2ZUb3RhbEF6aW11dGhzID0gTnVtYmVyT2ZS
YXdBemltdXRocyAqIEludGUKIAogLy8gVGFrZXMgYWR2YW50YWdlIG9mIHRoZSBzeW1tZXRyeSBh
bmQgY3JlYXRlcyBhIGNvbXBvc2l0ZSB2ZXJzaW9uIG9mIHRoZSB0d28gbWVhc3VyZWQgdmVyc2lv
bnMuICBGb3IgZXhhbXBsZSwgd2UgaGF2ZSBib3RoIGF6aW11dGggMzAgYW5kIC0zMCBkZWdyZWVz
CiAvLyB3aGVyZSB0aGUgcm9sZXMgb2YgbGVmdCBhbmQgcmlnaHQgZWFycyBhcmUgcmV2ZXJzZWQg
d2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuCi1ib29sIEhSVEZFbGV2YXRpb246OmNhbGN1bGF0
ZVN5bW1ldHJpY0tlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKGludCBhemltdXRoLCBpbnQgZWxl
dmF0aW9uLCBkb3VibGUgc2FtcGxlUmF0ZSwgY29uc3QgU3RyaW5nJiBzdWJqZWN0TmFtZSwKK2Jv
b2wgSFJURkVsZXZhdGlvbjo6Y2FsY3VsYXRlU3ltbWV0cmljS2VybmVsc0ZvckF6aW11dGhFbGV2
YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUsIGNvbnN0
IFN0cmluZyYgc3ViamVjdE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxIUlRGS2VybmVsPiYga2VybmVs
TCwgUmVmUHRyPEhSVEZLZXJuZWw+JiBrZXJuZWxSKQogewogICAgIFJlZlB0cjxIUlRGS2VybmVs
PiBrZXJuZWxMMTsKQEAgLTcxLDEzICs3MSwxMyBAQCBib29sIEhSVEZFbGV2YXRpb246OmNhbGN1
bGF0ZVN5bW1ldHJpY0tlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKGludCBhemltdXRoLCBpbgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIC8vIE5vdGljZSBML1IgcmV2ZXJz
YWwgaW4gc3ltbWV0cmljIHZlcnNpb24uCi0gICAga2VybmVsTCA9IEhSVEZLZXJuZWw6OmNyZWF0
ZUludGVycG9sYXRlZEtlcm5lbChrZXJuZWxMMS5nZXQoKSwga2VybmVsUjIuZ2V0KCksIDAuNSk7
Ci0gICAga2VybmVsUiA9IEhSVEZLZXJuZWw6OmNyZWF0ZUludGVycG9sYXRlZEtlcm5lbChrZXJu
ZWxSMS5nZXQoKSwga2VybmVsTDIuZ2V0KCksIDAuNSk7CisgICAga2VybmVsTCA9IEhSVEZLZXJu
ZWw6OmNyZWF0ZUludGVycG9sYXRlZEtlcm5lbChrZXJuZWxMMS5nZXQoKSwga2VybmVsUjIuZ2V0
KCksIDAuNWYpOworICAgIGtlcm5lbFIgPSBIUlRGS2VybmVsOjpjcmVhdGVJbnRlcnBvbGF0ZWRL
ZXJuZWwoa2VybmVsUjEuZ2V0KCksIGtlcm5lbEwyLmdldCgpLCAwLjVmKTsKICAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIUlRGRWxldmF0aW9uOjpjYWxjdWxhdGVLZXJuZWxzRm9y
QXppbXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwgaW50IGVsZXZhdGlvbiwgZG91YmxlIHNhbXBs
ZVJhdGUsIGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUsCitib29sIEhSVEZFbGV2YXRpb246OmNh
bGN1bGF0ZUtlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKGludCBhemltdXRoLCBpbnQgZWxldmF0
aW9uLCBmbG9hdCBzYW1wbGVSYXRlLCBjb25zdCBTdHJpbmcmIHN1YmplY3ROYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
SFJURktlcm5lbD4mIGtlcm5lbEwsIFJlZlB0cjxIUlRGS2VybmVsPiYga2VybmVsUikKIHsKICAg
ICAvLyBWYWxpZCB2YWx1ZXMgZm9yIGF6aW11dGggYXJlIDAgLT4gMzQ1IGluIDE1IGRlZ3JlZSBp
bmNyZW1lbnRzLgpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBpbnQgbWF4RWxldmF0aW9uc1td
ID0gewogICAgIDQ1IC8vICAzNDUgCiB9OwogCi1QYXNzT3duUHRyPEhSVEZFbGV2YXRpb24+IEhS
VEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWJqZWN0TmFtZSwg
aW50IGVsZXZhdGlvbiwgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzT3duUHRyPEhSVEZFbGV2YXRp
b24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWJqZWN0
TmFtZSwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBib29sIGlzRWxl
dmF0aW9uR29vZCA9IGVsZXZhdGlvbiA+PSAtNDUgJiYgZWxldmF0aW9uIDw9IDkwICYmIChlbGV2
YXRpb24gLyAxNSkgKiAxNSA9PSBlbGV2YXRpb247CiAgICAgQVNTRVJUKGlzRWxldmF0aW9uR29v
ZCk7CkBAIC0xODgsNyArMTg4LDcgQEAgUGFzc093blB0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxl
dmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViamVjdE4KIAogICAgICAg
ICAvLyBDcmVhdGUgdGhlIGludGVycG9sYXRlZCBjb252b2x1dGlvbiBrZXJuZWxzIGFuZCBkZWxh
eXMuCiAgICAgICAgIGZvciAodW5zaWduZWQgamogPSAxOyBqaiA8IEludGVycG9sYXRpb25GYWN0
b3I7ICsramopIHsKLSAgICAgICAgICAgIGRvdWJsZSB4ID0gZG91YmxlKGpqKSAvIGRvdWJsZShJ
bnRlcnBvbGF0aW9uRmFjdG9yKTsgLy8gaW50ZXJwb2xhdGUgZnJvbSAwIC0+IDEKKyAgICAgICAg
ICAgIGZsb2F0IHggPSBmbG9hdChqaikgLyBmbG9hdChJbnRlcnBvbGF0aW9uRmFjdG9yKTsgLy8g
aW50ZXJwb2xhdGUgZnJvbSAwIC0+IDEKIAogICAgICAgICAgICAgKCprZXJuZWxMaXN0TClbaSAr
IGpqXSA9IEhSVEZLZXJuZWw6OmNyZWF0ZUludGVycG9sYXRlZEtlcm5lbChrZXJuZWxMaXN0TC0+
YXQoaSkuZ2V0KCksIGtlcm5lbExpc3RMLT5hdChqKS5nZXQoKSwgeCk7CiAgICAgICAgICAgICAo
Kmtlcm5lbExpc3RSKVtpICsgampdID0gSFJURktlcm5lbDo6Y3JlYXRlSW50ZXJwb2xhdGVkS2Vy
bmVsKGtlcm5lbExpc3RSLT5hdChpKS5nZXQoKSwga2VybmVsTGlzdFItPmF0KGopLmdldCgpLCB4
KTsKQEAgLTE5OSw3ICsxOTksNyBAQCBQYXNzT3duUHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2
YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWJqZWN0TgogICAgIHJldHVy
biBocnRmRWxldmF0aW9uLnJlbGVhc2UoKTsKIH0KIAotUGFzc093blB0cjxIUlRGRWxldmF0aW9u
PiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsZXZhdGlv
biogaHJ0ZkVsZXZhdGlvbjEsIEhSVEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24yLCBkb3VibGUg
eCwgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzT3duUHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2
YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxldmF0aW9uKiBocnRmRWxl
dmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjIsIGZsb2F0IHgsIGZsb2F0IHNh
bXBsZVJhdGUpCiB7CiAgICAgQVNTRVJUKGhydGZFbGV2YXRpb24xICYmIGhydGZFbGV2YXRpb24y
KTsKICAgICBpZiAoIWhydGZFbGV2YXRpb24xIHx8ICFocnRmRWxldmF0aW9uMikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAppbmRleCAyNGI3ODIyODg2
ZGVkYTEwOTU0NGNmMDcyYjExMzQwZmQyOTE0OGJiLi5jY2ZmMDk3ZjhhZDZjZjExYjUyYzg5Nzdl
MGY4YWYzM2UwNzlkMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5oCkBAIC01MCwxMCArNTAsMTAgQEAgcHVibGljOgogICAgIC8vIE5vcm1hbGx5
LCB0aGVyZSB3aWxsIG9ubHkgYmUgYSBzaW5nbGUgSFJURiBkYXRhYmFzZSBzZXQsIGJ1dCB0aGlz
IEFQSSBzdXBwb3J0cyB0aGUgcG9zc2liaWxpdHkgb2YgbXVsdGlwbGUgb25lcyB3aXRoIGRpZmZl
cmVudCBuYW1lcy4KICAgICAvLyBJbnRlcnBvbGF0ZWQgYXppbXV0aHMgd2lsbCBiZSBnZW5lcmF0
ZWQgYmFzZWQgb24gSW50ZXJwb2xhdGlvbkZhY3Rvci4KICAgICAvLyBWYWxpZCB2YWx1ZXMgZm9y
IGVsZXZhdGlvbiBhcmUgLTQ1IC0+ICs5MCBpbiAxNSBkZWdyZWUgaW5jcmVtZW50cy4KLSAgICBz
dGF0aWMgUGFzc093blB0cjxIUlRGRWxldmF0aW9uPiBjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0
cmluZyYgc3ViamVjdE5hbWUsIGludCBlbGV2YXRpb24sIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxIUlRGRWxldmF0aW9uPiBjcmVhdGVGb3JTdWJqZWN0KGNvbnN0
IFN0cmluZyYgc3ViamVjdE5hbWUsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUpOwog
CiAgICAgLy8gR2l2ZW4gdHdvIEhSVEZFbGV2YXRpb25zLCBhbmQgYW4gaW50ZXJwb2xhdGlvbiBm
YWN0b3IgeDogMCAtPiAxLCByZXR1cm5zIGFuIGludGVycG9sYXRlZCBIUlRGRWxldmF0aW9uLgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEhSVEZFbGV2YXRpb24+IGNyZWF0ZUJ5SW50ZXJwb2xhdGlu
Z1NsaWNlcyhIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0
ZkVsZXZhdGlvbjIsIGRvdWJsZSB4LCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFBh
c3NPd25QdHI8SFJURkVsZXZhdGlvbj4gY3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZF
bGV2YXRpb24qIGhydGZFbGV2YXRpb24xLCBIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMiwg
ZmxvYXQgeCwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBsaXN0IG9m
IGxlZnQgb3IgcmlnaHQgZWFyIEhSVEZLZXJuZWxzIGZvciBhbGwgdGhlIGF6aW11dGhzIGdvaW5n
IGZyb20gMCB0byAzNjAgZGVncmVlcy4KICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlzdEwo
KSB7IHJldHVybiBtX2tlcm5lbExpc3RMLmdldCgpOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1Ymxp
YzoKIAogICAgIGRvdWJsZSBlbGV2YXRpb25BbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxldmF0
aW9uQW5nbGU7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkF6aW11dGhzKCkgeyByZXR1cm4gTnVt
YmVyT2ZUb3RhbEF6aW11dGhzOyB9Ci0gICAgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgCiAgICAgLy8gUmV0dXJucyB0aGUgbGVmdCBhbmQgcmln
aHQga2VybmVscyBmb3IgdGhlIGdpdmVuIGF6aW11dGggaW5kZXguCiAgICAgLy8gVGhlIGludGVy
cG9sYXRlZCBkZWxheXMgYmFzZWQgb24gYXppbXV0aEJsZW5kOiAwIC0+IDEgYXJlIHJldHVybmVk
IGluIGZyYW1lRGVsYXlMIGFuZCBmcmFtZURlbGF5Ui4KQEAgLTgzLDE2ICs4MywxNiBAQCBwdWJs
aWM6CiAgICAgLy8gVmFsaWQgdmFsdWVzIGZvciBhemltdXRoIGFyZSAwIC0+IDM0NSBpbiAxNSBk
ZWdyZWUgaW5jcmVtZW50cy4KICAgICAvLyBWYWxpZCB2YWx1ZXMgZm9yIGVsZXZhdGlvbiBhcmUg
LTQ1IC0+ICs5MCBpbiAxNSBkZWdyZWUgaW5jcmVtZW50cy4KICAgICAvLyBSZXR1cm5zIHRydWUg
b24gc3VjY2Vzcy4KLSAgICBzdGF0aWMgYm9vbCBjYWxjdWxhdGVLZXJuZWxzRm9yQXppbXV0aEVs
ZXZhdGlvbihpbnQgYXppbXV0aCwgaW50IGVsZXZhdGlvbiwgZG91YmxlIHNhbXBsZVJhdGUsIGNv
bnN0IFN0cmluZyYgc3ViamVjdE5hbWUsCisgICAgc3RhdGljIGJvb2wgY2FsY3VsYXRlS2VybmVs
c0ZvckF6aW11dGhFbGV2YXRpb24oaW50IGF6aW11dGgsIGludCBlbGV2YXRpb24sIGZsb2F0IHNh
bXBsZVJhdGUsIGNvbnN0IFN0cmluZyYgc3ViamVjdE5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEhSVEZLZXJuZWw+JiBrZXJu
ZWxMLCBSZWZQdHI8SFJURktlcm5lbD4mIGtlcm5lbFIpOwogCiAgICAgLy8gR2l2ZW4gYSBzcGVj
aWZpYyBhemltdXRoIGFuZCBlbGV2YXRpb24gYW5nbGUsIHJldHVybnMgdGhlIGxlZnQgYW5kIHJp
Z2h0IEhSVEZLZXJuZWwgaW4ga2VybmVsTCBhbmQga2VybmVsUi4KICAgICAvLyBUaGlzIG1ldGhv
ZCBhdmVyYWdlcyB0aGUgbWVhc3VyZWQgcmVzcG9uc2UgdXNpbmcgc3ltbWV0cnkgb2YgYXppbXV0
aCAoZm9yIGV4YW1wbGUgYnkgYXZlcmFnaW5nIHRoZSAtMzAuMCBhbmQgKzMwLjAgYXppbXV0aCBy
ZXNwb25zZXMpLgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAgIHN0YXRpYyBi
b29sIGNhbGN1bGF0ZVN5bW1ldHJpY0tlcm5lbHNGb3JBemltdXRoRWxldmF0aW9uKGludCBhemlt
dXRoLCBpbnQgZWxldmF0aW9uLCBkb3VibGUgc2FtcGxlUmF0ZSwgY29uc3QgU3RyaW5nJiBzdWJq
ZWN0TmFtZSwKKyAgICBzdGF0aWMgYm9vbCBjYWxjdWxhdGVTeW1tZXRyaWNLZXJuZWxzRm9yQXpp
bXV0aEVsZXZhdGlvbihpbnQgYXppbXV0aCwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0
ZSwgY29uc3QgU3RyaW5nJiBzdWJqZWN0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SFJURktlcm5lbD4mIGtl
cm5lbEwsIFJlZlB0cjxIUlRGS2VybmVsPiYga2VybmVsUik7CiBwcml2YXRlOgotICAgIEhSVEZF
bGV2YXRpb24oUGFzc093blB0cjxIUlRGS2VybmVsTGlzdD4ga2VybmVsTGlzdEwsIFBhc3NPd25Q
dHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RSLCBpbnQgZWxldmF0aW9uLCBkb3VibGUgc2Ft
cGxlUmF0ZSkKKyAgICBIUlRGRWxldmF0aW9uKFBhc3NPd25QdHI8SFJURktlcm5lbExpc3Q+IGtl
cm5lbExpc3RMLCBQYXNzT3duUHRyPEhSVEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0UiwgaW50IGVs
ZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICAgICAgOiBtX2tlcm5lbExpc3RMKGtlcm5l
bExpc3RMKQogICAgICAgICAsIG1fa2VybmVsTGlzdFIoa2VybmVsTGlzdFIpCiAgICAgICAgICwg
bV9lbGV2YXRpb25BbmdsZShlbGV2YXRpb24pCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToK
ICAgICBPd25QdHI8SFJURktlcm5lbExpc3Q+IG1fa2VybmVsTGlzdEw7CiAgICAgT3duUHRyPEhS
VEZLZXJuZWxMaXN0PiBtX2tlcm5lbExpc3RSOwogICAgIGRvdWJsZSBtX2VsZXZhdGlvbkFuZ2xl
OwotICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CisgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGS2VybmVsLmNwcAppbmRleCA5ZGIzNWJhNjVkNjQ3ZjZmMzRmYWIyZTk2ZGE0MzMwNDk5
MWIzNjJmLi42OGVjY2I5NjkzMTUxZDhiMDI3Yjc3NTgxMGNmZWRjNDI4MzQxNWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkJpcXVhZC5oIgogI2lu
Y2x1ZGUgIkZGVEZyYW1lLmgiCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTQ1LDcgKzQ2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhpcyByZXByZXNlbnRzIHRoZSBpbml0aWFs
IGRlbGF5IGJlZm9yZSB0aGUgbW9zdCBlbmVyZ2V0aWMgcGFydCBvZiB0aGUgaW1wdWxzZSByZXNw
b25zZS4KIC8vIFRoZSBzYW1wbGUtZnJhbWUgZGVsYXkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBpbXB1
bHNlUCBpbXB1bHNlIHJlc3BvbnNlLCBhbmQgdGhpcyB2YWx1ZSAgaXMgcmV0dXJuZWQuCiAvLyB0
aGUgbGVuZ3RoIG9mIHRoZSBwYXNzZWQgaW4gQXVkaW9DaGFubmVsIG11c3QgYmUgYSBwb3dlciBv
ZiAyLgotc3RhdGljIGRvdWJsZSBleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoQXVkaW9DaGFubmVs
KiBjaGFubmVsLCBzaXplX3QgYW5hbHlzaXNGRlRTaXplKQorc3RhdGljIGZsb2F0IGV4dHJhY3RB
dmVyYWdlR3JvdXBEZWxheShBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBhbmFseXNpc0ZG
VFNpemUpCiB7CiAgICAgQVNTRVJUKGNoYW5uZWwpOwogICAgICAgICAKQEAgLTU5LDE0ICs2MCwx
NCBAQCBzdGF0aWMgZG91YmxlIGV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheShBdWRpb0NoYW5uZWwq
IGNoYW5uZWwsIHNpemVfdCBhbmFseXNpc0ZGVAogICAgIEZGVEZyYW1lIGVzdGltYXRpb25GcmFt
ZShhbmFseXNpc0ZGVFNpemUpOwogICAgIGVzdGltYXRpb25GcmFtZS5kb0ZGVChpbXB1bHNlUCk7
CiAKLSAgICBkb3VibGUgZnJhbWVEZWxheSA9IGVzdGltYXRpb25GcmFtZS5leHRyYWN0QXZlcmFn
ZUdyb3VwRGVsYXkoKTsKKyAgICBmbG9hdCBmcmFtZURlbGF5ID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdChlc3RpbWF0aW9uRnJhbWUuZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KCkpOwogICAgIGVz
dGltYXRpb25GcmFtZS5kb0ludmVyc2VGRlQoaW1wdWxzZVApOwogCiAgICAgcmV0dXJuIGZyYW1l
RGVsYXk7CiB9CiAKLUhSVEZLZXJuZWw6OkhSVEZLZXJuZWwoQXVkaW9DaGFubmVsKiBjaGFubmVs
LCBzaXplX3QgZmZ0U2l6ZSwgZG91YmxlIHNhbXBsZVJhdGUsIGJvb2wgYmFzc0Jvb3N0KQotICAg
IDogbV9mcmFtZURlbGF5KDAuMCkKK0hSVEZLZXJuZWw6OkhSVEZLZXJuZWwoQXVkaW9DaGFubmVs
KiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBiYXNzQm9v
c3QpCisgICAgOiBtX2ZyYW1lRGVsYXkoMCkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRl
KQogewogICAgIEFTU0VSVChjaGFubmVsKTsKQEAgLTExNiwyMiArMTE3LDIyIEBAIFBhc3NPd25Q
dHI8QXVkaW9DaGFubmVsPiBIUlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UoKQogfQog
CiAvLyBJbnRlcnBvbGF0ZXMgdHdvIGtlcm5lbHMgd2l0aCB4OiAwIC0+IDEgYW5kIHJldHVybnMg
dGhlIHJlc3VsdC4KLVBhc3NSZWZQdHI8SFJURktlcm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW50
ZXJwb2xhdGVkS2VybmVsKEhSVEZLZXJuZWwqIGtlcm5lbDEsIEhSVEZLZXJuZWwqIGtlcm5lbDIs
IGRvdWJsZSB4KQorUGFzc1JlZlB0cjxIUlRGS2VybmVsPiBIUlRGS2VybmVsOjpjcmVhdGVJbnRl
cnBvbGF0ZWRLZXJuZWwoSFJURktlcm5lbCoga2VybmVsMSwgSFJURktlcm5lbCoga2VybmVsMiwg
ZmxvYXQgeCkKIHsKICAgICBBU1NFUlQoa2VybmVsMSAmJiBrZXJuZWwyKTsKICAgICBpZiAoIWtl
cm5lbDEgfHwgIWtlcm5lbDIpCiAgICAgICAgIHJldHVybiAwOwogIAogICAgIEFTU0VSVCh4ID49
IDAuMCAmJiB4IDwgMS4wKTsKLSAgICB4ID0gbWluKDEuMCwgbWF4KDAuMCwgeCkpOworICAgIHgg
PSBtaW4oMS4wZiwgbWF4KDAuMGYsIHgpKTsKICAgICAKLSAgICBkb3VibGUgc2FtcGxlUmF0ZTEg
PSBrZXJuZWwxLT5zYW1wbGVSYXRlKCk7Ci0gICAgZG91YmxlIHNhbXBsZVJhdGUyID0ga2VybmVs
Mi0+c2FtcGxlUmF0ZSgpOworICAgIGZsb2F0IHNhbXBsZVJhdGUxID0ga2VybmVsMS0+c2FtcGxl
UmF0ZSgpOworICAgIGZsb2F0IHNhbXBsZVJhdGUyID0ga2VybmVsMi0+c2FtcGxlUmF0ZSgpOwog
ICAgIEFTU0VSVChzYW1wbGVSYXRlMSA9PSBzYW1wbGVSYXRlMik7CiAgICAgaWYgKHNhbXBsZVJh
dGUxICE9IHNhbXBsZVJhdGUyKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBkb3VibGUg
ZnJhbWVEZWxheSA9ICgxLjAgLSB4KSAqIGtlcm5lbDEtPmZyYW1lRGVsYXkoKSArIHggKiBrZXJu
ZWwyLT5mcmFtZURlbGF5KCk7CisgICAgZmxvYXQgZnJhbWVEZWxheSA9ICgxIC0geCkgKiBrZXJu
ZWwxLT5mcmFtZURlbGF5KCkgKyB4ICoga2VybmVsMi0+ZnJhbWVEZWxheSgpOwogICAgIAogICAg
IE93blB0cjxGRlRGcmFtZT4gaW50ZXJwb2xhdGVkRnJhbWUgPSBGRlRGcmFtZTo6Y3JlYXRlSW50
ZXJwb2xhdGVkRnJhbWUoKmtlcm5lbDEtPmZmdEZyYW1lKCksICprZXJuZWwyLT5mZnRGcmFtZSgp
LCB4KTsKICAgICByZXR1cm4gSFJURktlcm5lbDo6Y3JlYXRlKGludGVycG9sYXRlZEZyYW1lLnJl
bGVhc2UoKSwgZnJhbWVEZWxheSwgc2FtcGxlUmF0ZTEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURktlcm5lbC5oCmluZGV4IDU3MmEwODUxMWQ4YjFkMjUyNzQ4ZDZlNDFjOTEz
ODFjNmQ2NTFmOWUuLjNhOGRiZmRlMmYzMjdkYTMxNzU2MzUyZjk1MDc5ZjFkOWFhYWQ3NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmgKQEAgLTUxLDI1ICs1
MSwyNSBAQCBjbGFzcyBIUlRGS2VybmVsIDogcHVibGljIFJlZkNvdW50ZWQ8SFJURktlcm5lbD4g
ewogcHVibGljOgogICAgIC8vIE5vdGU6IHRoaXMgaXMgZGVzdHJ1Y3RpdmUgb24gdGhlIHBhc3Nl
ZCBpbiBBdWRpb0NoYW5uZWwuCiAgICAgLy8gVGhlIGxlbmd0aCBvZiBjaGFubmVsIG11c3QgYmUg
YSBwb3dlciBvZiB0d28uCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFJURktlcm5lbD4gY3JlYXRl
KEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6ZV90IGZmdFNpemUsIGRvdWJsZSBzYW1wbGVSYXRl
LCBib29sIGJhc3NCb29zdCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIUlRGS2VybmVsPiBjcmVh
dGUoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZmxvYXQgc2FtcGxlUmF0
ZSwgYm9vbCBiYXNzQm9vc3QpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhS
VEZLZXJuZWwoY2hhbm5lbCwgZmZ0U2l6ZSwgc2FtcGxlUmF0ZSwgYmFzc0Jvb3N0KSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFJURktlcm5lbD4gY3JlYXRlKFBhc3NPd25QdHI8
RkZURnJhbWU+IGZmdEZyYW1lLCBkb3VibGUgZnJhbWVEZWxheSwgZG91YmxlIHNhbXBsZVJhdGUp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFJURktlcm5lbD4gY3JlYXRlKFBhc3NPd25QdHI8RkZU
RnJhbWU+IGZmdEZyYW1lLCBmbG9hdCBmcmFtZURlbGF5LCBmbG9hdCBzYW1wbGVSYXRlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIUlRGS2VybmVsKGZmdEZyYW1lLCBmcmFt
ZURlbGF5LCBzYW1wbGVSYXRlKSk7CiAgICAgfQogCiAgICAgLy8gR2l2ZW4gdHdvIEhSVEZLZXJu
ZWxzLCBhbmQgYW4gaW50ZXJwb2xhdGlvbiBmYWN0b3IgeDogMCAtPiAxLCByZXR1cm5zIGFuIGlu
dGVycG9sYXRlZCBIUlRGS2VybmVsLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhSVEZLZXJuZWw+
IGNyZWF0ZUludGVycG9sYXRlZEtlcm5lbChIUlRGS2VybmVsKiBrZXJuZWwxLCBIUlRGS2VybmVs
KiBrZXJuZWwyLCBkb3VibGUgeCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFJURktlcm5lbD4g
Y3JlYXRlSW50ZXJwb2xhdGVkS2VybmVsKEhSVEZLZXJuZWwqIGtlcm5lbDEsIEhSVEZLZXJuZWwq
IGtlcm5lbDIsIGZsb2F0IHgpOwogICAKICAgICBGRlRGcmFtZSogZmZ0RnJhbWUoKSB7IHJldHVy
biBtX2ZmdEZyYW1lLmdldCgpOyB9CiAgICAgCiAgICAgc2l6ZV90IGZmdFNpemUoKSBjb25zdCB7
IHJldHVybiBtX2ZmdEZyYW1lLT5mZnRTaXplKCk7IH0KLSAgICBkb3VibGUgZnJhbWVEZWxheSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVEZWxheTsgfQorICAgIGZsb2F0IGZyYW1lRGVsYXkoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lRGVsYXk7IH0KIAotICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgIGRvdWJsZSBueXF1aXN0KCkgY29uc3Qg
eyByZXR1cm4gMC41ICogc2FtcGxlUmF0ZSgpOyB9CiAKICAgICAvLyBDb252ZXJ0cyBiYWNrIGlu
dG8gaW1wdWxzZS1yZXNwb25zZSBmb3JtLgpAQCAtNzcsOSArNzcsOSBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgLy8gTm90ZTogdGhpcyBpcyBkZXN0cnVjdGl2ZSBvbiB0aGUgcGFzc2VkIGlu
IEF1ZGlvQ2hhbm5lbC4KLSAgICBIUlRGS2VybmVsKEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6
ZV90IGZmdFNpemUsIGRvdWJsZSBzYW1wbGVSYXRlLCBib29sIGJhc3NCb29zdCk7CisgICAgSFJU
Rktlcm5lbChBdWRpb0NoYW5uZWwqLCBzaXplX3QgZmZ0U2l6ZSwgZmxvYXQgc2FtcGxlUmF0ZSwg
Ym9vbCBiYXNzQm9vc3QpOwogICAgIAotICAgIEhSVEZLZXJuZWwoUGFzc093blB0cjxGRlRGcmFt
ZT4gZmZ0RnJhbWUsIGRvdWJsZSBmcmFtZURlbGF5LCBkb3VibGUgc2FtcGxlUmF0ZSkKKyAgICBI
UlRGS2VybmVsKFBhc3NPd25QdHI8RkZURnJhbWU+IGZmdEZyYW1lLCBmbG9hdCBmcmFtZURlbGF5
LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgICAgICA6IG1fZmZ0RnJhbWUoZmZ0RnJhbWUpCiAgICAg
ICAgICwgbV9mcmFtZURlbGF5KGZyYW1lRGVsYXkpCiAgICAgICAgICwgbV9zYW1wbGVSYXRlKHNh
bXBsZVJhdGUpCkBAIC04Nyw4ICs4Nyw4IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIE93
blB0cjxGRlRGcmFtZT4gbV9mZnRGcmFtZTsKLSAgICBkb3VibGUgbV9mcmFtZURlbGF5OwotICAg
IGRvdWJsZSBtX3NhbXBsZVJhdGU7CisgICAgZmxvYXQgbV9mcmFtZURlbGF5OworICAgIGZsb2F0
IG1fc2FtcGxlUmF0ZTsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxIUlRGS2VybmVsPiA+
IEhSVEZLZXJuZWxMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURlBhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFu
bmVyLmNwcAppbmRleCA2OGJjNTA1YWY5MGUwYzk2N2JlNWU2M2IwOTNiYWYzZDJiNWMxM2M3Li41
Mzc3ZWIyNzBkMzZmZDgzMmJlYjRkOGFhZmIwMmNjMzM5Zjk4ZDk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBXZSBBU1NFUlQgdGhlIGRlbGF5IHZhbHVlcyB1c2VkIGluIHBy
b2Nlc3MoKSB3aXRoIHRoaXMgdmFsdWUuCiBjb25zdCBkb3VibGUgTWF4RGVsYXlUaW1lU2Vjb25k
cyA9IDAuMDAyOwogCi1IUlRGUGFubmVyOjpIUlRGUGFubmVyKGRvdWJsZSBzYW1wbGVSYXRlKQor
SFJURlBhbm5lcjo6SFJURlBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogUGFubmVyKFBh
bm5pbmdNb2RlbEhSVEYpCiAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICAsIG1f
aXNGaXJzdFJlbmRlcih0cnVlKQpAQCAtNjAsNyArNjAsNyBAQCBIUlRGUGFubmVyOjp+SFJURlBh
bm5lcigpCiB7CiB9CiAKLXNpemVfdCBIUlRGUGFubmVyOjpmZnRTaXplRm9yU2FtcGxlUmF0ZShk
b3VibGUgc2FtcGxlUmF0ZSkKK3NpemVfdCBIUlRGUGFubmVyOjpmZnRTaXplRm9yU2FtcGxlUmF0
ZShmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIC8vIFRoZSBIUlRGIGltcHVsc2UgcmVzcG9uc2Vz
IChsb2FkZWQgYXMgYXVkaW8gcmVzb3VyY2VzKSBhcmUgNTEyIHNhbXBsZS1mcmFtZXMgQDQ0LjFL
SHouCiAgICAgLy8gQ3VycmVudGx5LCB3ZSB0cnVuY2F0ZSB0aGUgaW1wdWxzZSByZXNwb25zZXMg
dG8gaGFsZiB0aGlzIHNpemUsIGJ1dCBhbiBGRlQtc2l6ZSBvZiB0d2ljZSBpbXB1bHNlIHJlc3Bv
bnNlIHNpemUgaXMgbmVlZGVkIChmb3IgY29udm9sdXRpb24pLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCmluZGV4IDZjMTNkNDhiNTk5ZDEzNzJkZjg1ZWMwYWE0
NDBlMWUwNjEyZjBmZDQuLmU3NzFiYTI4YjNlNGFhZGVkNmY4MDIxNTY0NjMyMjdhNmZmZTEyODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIUlRGUGFubmVyIDogcHVibGlj
IFBhbm5lciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSFJURlBhbm5lcihkb3VibGUgc2FtcGxl
UmF0ZSk7CisgICAgZXhwbGljaXQgSFJURlBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2
aXJ0dWFsIH5IUlRGUGFubmVyKCk7CiAKICAgICAvLyBQYW5uZXIKQEAgLTQxLDE2ICs0MSwxNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CiAKICAgICBzaXplX3QgZmZ0U2l6
ZSgpIHsgcmV0dXJuIGZmdFNpemVGb3JTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7IH0KLSAgICBz
dGF0aWMgc2l6ZV90IGZmdFNpemVGb3JTYW1wbGVSYXRlKGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAg
ICBzdGF0aWMgc2l6ZV90IGZmdFNpemVGb3JTYW1wbGVSYXRlKGZsb2F0IHNhbXBsZVJhdGUpOwog
Ci0gICAgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0K
KyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAg
ICAgCiBwcml2YXRlOgogICAgIC8vIEdpdmVuIGFuIGF6aW11dGggYW5nbGUgaW4gdGhlIHJhbmdl
IC0xODAgLT4gKzE4MCwgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBhemltdXRoIGluZGV4IGZv
ciB0aGUgZGF0YWJhc2UsCiAgICAgLy8gYW5kIGF6aW11dGhCbGVuZCB3aGljaCBpcyBhbiBpbnRl
cnBvbGF0aW9uIHZhbHVlIGZyb20gMCAtPiAxLgogICAgIGludCBjYWxjdWxhdGVEZXNpcmVkQXpp
bXV0aEluZGV4QW5kQmxlbmQoZG91YmxlIGF6aW11dGgsIGRvdWJsZSYgYXppbXV0aEJsZW5kKTsK
IAotICAgIGRvdWJsZSBtX3NhbXBsZVJhdGU7CisgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogICAg
IAogICAgIC8vIG1faXNGaXJzdFJlbmRlciBhbmQgbV9hemltdXRoSW5kZXggYXJlIHVzZWQgdG8g
YXZvaWQgaGFyc2hseSBjaGFuZ2luZyBmcm9tIHJlbmRlcmluZyBhdCBvbmUgYXppbXV0aCBhbmds
ZSB0byBhbm90aGVyIGFuZ2xlIHZlcnkgZmFyIGF3YXkuCiAgICAgLy8gQ2hhbmdpbmcgdGhlIGF6
aW11dGggZ3JhZHVhbGx5IHByb2R1Y2VzIGEgc21vb3RoZXIgc291bmQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAppbmRleCBkM2QxYTJhZWNhZWZmZWE2Y2JlMTQ1Y2Mx
ZTZjYWQ0Y2RjNTg2OWRmLi5kZWJjOWUzMjE2ZDcwYTk0NjdiMzMxZjQ0NjFlZmJjMTRkNTFkZGZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPFBhbm5lcj4gUGFubmVy
OjpjcmVhdGUoUGFubmluZ01vZGVsIG1vZGVsLCBkb3VibGUgc2FtcGxlUmF0ZSkKK1Bhc3NPd25Q
dHI8UGFubmVyPiBQYW5uZXI6OmNyZWF0ZShQYW5uaW5nTW9kZWwgbW9kZWwsIGZsb2F0IHNhbXBs
ZVJhdGUpCiB7CiAgICAgT3duUHRyPFBhbm5lcj4gcGFubmVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1Bhbm5lci5oCmluZGV4IGI1N2NlZGEyNDAzYjIyZmVlNjFlYTFiZmIyYzJkODVk
NTZkYWE1MTAuLjRiNzI4MzI3ZDI5YWU4YjNjM2Q4MzlmNWQ5ZjBlMWFmNzZkYjRkNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB0eXBlZGVmIHVuc2lnbmVkIFBhbm5pbmdNb2RlbDsKIAotICAgIHN0YXRp
YyBQYXNzT3duUHRyPFBhbm5lcj4gY3JlYXRlKFBhbm5pbmdNb2RlbCBtb2RlbCwgZG91YmxlIHNh
bXBsZVJhdGUpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhbm5lcj4gY3JlYXRlKFBhbm5pbmdN
b2RlbCwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5QYW5uZXIoKSB7IH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nocm9taXVtL0F1ZGlv
QnVzQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0v
QXVkaW9CdXNDaHJvbWl1bS5jcHAKaW5kZXggZDVjNTUyNjA2NzdhNGQxNjgyMzMyZWQ0YTBhZjY1
YTcwZDhkMWE0ZC4uZjJhMDA5NjQxMTY0YTc1YTQ3MGFlZGUwN2I1ZWE3NTViODNiMzZlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0vQXVkaW9CdXND
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY2hyb21pdW0v
QXVkaW9CdXNDaHJvbWl1bS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3Vy
Y2UoY29uc3QgY2hhciogbmFtZSwgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzT3duUHRyPEF1ZGlv
QnVzPiBBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgZmxv
YXQgc2FtcGxlUmF0ZSkKIHsKICAgICAvLyBGSVhNRTogdGhlIHNhbXBsZVJhdGUgcGFyYW1ldGVy
IGlzIGlnbm9yZWQuIEl0IHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIEFQSS4KICAgICBPd25Q
dHI8QXVkaW9CdXM+IGF1ZGlvQnVzID0gUGxhdGZvcm1TdXBwb3J0Ojpsb2FkUGxhdGZvcm1BdWRp
b1Jlc291cmNlKG5hbWUsIHNhbXBsZVJhdGUpOwpAQCAtNDgsNyArNDgsNyBAQCBQYXNzT3duUHRy
PEF1ZGlvQnVzPiBBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFt
ZSwgZG91YmxlIHNhbQogICAgIHJldHVybiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29u
dmVydGluZyhhdWRpb0J1cy5nZXQoKSwgZmFsc2UsIHNhbXBsZVJhdGUpOwogfQogCi1QYXNzT3du
UHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUoY29uc3Qgdm9pZCog
ZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9ubywgZG91YmxlIHNhbXBsZVJhdGUp
CitQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUoY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9ubywgZmxvYXQgc2Ft
cGxlUmF0ZSkKIHsKICAgICAvLyBGSVhNRTogdGhlIHNhbXBsZVJhdGUgcGFyYW1ldGVyIGlzIGln
bm9yZWQuIEl0IHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIEFQSS4KICAgICBPd25QdHI8QXVk
aW9CdXM+IGF1ZGlvQnVzID0gUGxhdGZvcm1TdXBwb3J0OjpkZWNvZGVBdWRpb0ZpbGVEYXRhKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgZGF0YVNpemUsIHNhbXBsZVJhdGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvQnVzTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvQnVzTWFjLm1tCmluZGV4
IDZlNmUyN2FiNzY3Y2IxZjA0ZDVkYmVjNjA4OTFiNWI3MmNkMDI2ODUuLjQyYTcxOGIyMTVhYTlk
NDA0ZGMxOGQ5NWEwNWI0OTA5N2E0NGJiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0J1c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9CdXNNYWMubW0KQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzT3du
UHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciog
bmFtZSwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBjYW4gYmUgY2Fs
bGVkIGZyb20gb3RoZXIgdGhhbiB0aGUgbWFpbiB0aHJlYWQsIHNvIHdlIG5lZWQgYW4gYXV0by1y
ZWxlYXNlIHBvb2wuCiAgICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVh
c2VQb29sIGFsbG9jXSBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCBkNGVjYWJhYjIxZWI0
MTM0NjMxZmZiMzE4ODQwYTA1MDFlMDgyZDA4Li44YmY4Y2M0Mzc0NWIzNWRjNGQzNzE0MWYzYjkz
YTliMTVjM2ZlNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiQXVkaW9EZXN0aW5hdGlvbk1hYy5oIgogCiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92
aWRlci5oIgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgPENvcmVBdWRp
by9BdWRpb0hhcmR3YXJlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDEyICs0MSwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBpbnQga0J1ZmZlclNpemUgPSAxMjg7CiAK
IC8vIEZhY3RvcnkgbWV0aG9kOiBNYWMtaW1wbGVtZW50YXRpb24KLVBhc3NPd25QdHI8QXVkaW9E
ZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvU291cmNlUHJvdmlkZXIm
IHByb3ZpZGVyLCBkb3VibGUgc2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlv
bj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvU291cmNlUHJvdmlkZXImIHByb3ZpZGVy
LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXVkaW9EZXN0
aW5hdGlvbk1hYyhwcm92aWRlciwgc2FtcGxlUmF0ZSkpOwogfQogCi1kb3VibGUgQXVkaW9EZXN0
aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKK2Zsb2F0IEF1ZGlvRGVzdGluYXRpb246Omhh
cmR3YXJlU2FtcGxlUmF0ZSgpCiB7CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IG91dHB1
dCBkZXZpY2UncyBzYW1wbGUtcmF0ZS4KICAgICBBdWRpb0RldmljZUlEIGRldmljZUlEID0ga0F1
ZGlvRGV2aWNlVW5rbm93bjsKQEAgLTU0LDcgKzU1LDcgQEAgZG91YmxlIEF1ZGlvRGVzdGluYXRp
b246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCiAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mg
ZGVmYXVsdE91dHB1dERldmljZUFkZHJlc3MgPSB7IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlEZWZh
dWx0T3V0cHV0RGV2aWNlLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9P
YmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKICAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRp
b09iamVjdEdldFByb3BlcnR5RGF0YShrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3QsICZkZWZhdWx0
T3V0cHV0RGV2aWNlQWRkcmVzcywgMCwgMCwgJmluZm9TaXplLCAodm9pZCopJmRldmljZUlEKTsK
ICAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gMC4wOyAvLyBlcnJvcgorICAgICAgICBy
ZXR1cm4gMDsgLy8gZXJyb3IKIAogICAgIEZsb2F0NjQgbm9taW5hbFNhbXBsZVJhdGU7CiAgICAg
aW5mb1NpemUgPSBzaXplb2YoRmxvYXQ2NCk7CkBAIC02MiwxMiArNjMsMTIgQEAgZG91YmxlIEF1
ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCiAgICAgQXVkaW9PYmplY3RQcm9w
ZXJ0eUFkZHJlc3Mgbm9taW5hbFNhbXBsZVJhdGVBZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9w
ZXJ0eU5vbWluYWxTYW1wbGVSYXRlLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLCBr
QXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKICAgICByZXN1bHQgPSBBdWRpb09i
amVjdEdldFByb3BlcnR5RGF0YShkZXZpY2VJRCwgJm5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcywg
MCwgMCwgJmluZm9TaXplLCAodm9pZCopJm5vbWluYWxTYW1wbGVSYXRlKTsKICAgICBpZiAocmVz
dWx0KQotICAgICAgICByZXR1cm4gMC4wOyAvLyBlcnJvcgorICAgICAgICByZXR1cm4gMDsgLy8g
ZXJyb3IKIAotICAgIHJldHVybiBub21pbmFsU2FtcGxlUmF0ZTsKKyAgICByZXR1cm4gbmFycm93
UHJlY2lzaW9uVG9GbG9hdChub21pbmFsU2FtcGxlUmF0ZSk7CiB9CiAKLUF1ZGlvRGVzdGluYXRp
b25NYWM6OkF1ZGlvRGVzdGluYXRpb25NYWMoQXVkaW9Tb3VyY2VQcm92aWRlciYgcHJvdmlkZXIs
IGRvdWJsZSBzYW1wbGVSYXRlKQorQXVkaW9EZXN0aW5hdGlvbk1hYzo6QXVkaW9EZXN0aW5hdGlv
bk1hYyhBdWRpb1NvdXJjZVByb3ZpZGVyJiBwcm92aWRlciwgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICA6IG1fb3V0cHV0VW5pdCgwKQogICAgICwgbV9wcm92aWRlcihwcm92aWRlcikKICAgICAsIG1f
cmVuZGVyQnVzKDIsIGtCdWZmZXJTaXplLCBmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCmluZGV4IDE5NzQ0
MGM2ODRmNzYwNjRjODg5YWUwMTg5OGQwMTkwYTdkZjAxMjEuLjk2M2Y3YzczNTUxNWE2NTBjYzIw
MGYyYmFlZDY2ODk3NzFmNTBkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaApAQCAtMzksMTQgKzM5LDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk1hYyA6IHB1Ymxp
YyBBdWRpb0Rlc3RpbmF0aW9uIHsKIHB1YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTWFjKEF1
ZGlvU291cmNlUHJvdmlkZXImLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9EZXN0aW5h
dGlvbk1hYyhBdWRpb1NvdXJjZVByb3ZpZGVyJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmly
dHVhbCB+QXVkaW9EZXN0aW5hdGlvbk1hYygpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7
CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKICAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJu
IG1faXNQbGF5aW5nOyB9CiAKLSAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2FtcGxlUmF0ZTsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBt
X3NhbXBsZVJhdGU7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbmZpZ3VyZSgpOwpAQCAtNjAs
NyArNjAsNyBAQCBwcml2YXRlOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7
CiAgICAgQXVkaW9CdXMgbV9yZW5kZXJCdXM7CiAKLSAgICBkb3VibGUgbV9zYW1wbGVSYXRlOwor
ICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBib29sIG1faXNQbGF5aW5nOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRl
ck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVh
ZGVyTWFjLmNwcAppbmRleCA0MjY5OTVlMTNkMjc0MDE1ZjVmZjU0NmNiMWYzMmEyZTQ0ZTQxNzY1
Li43YjY2NmE1NWFiODc5ZTQwZjY4YzRkYmZlYzc3YzM3OGMxY2FjOWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFj
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRl
ICJBdWRpb0ZpbGVSZWFkZXIuaCIKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPENvcmVTZXJ2
aWNlcy9Db3JlU2VydmljZXMuaD4KIApAQCAtMTM1LDcgKzEzNiw3IEBAIFNJbnQ2NCBBdWRpb0Zp
bGVSZWFkZXI6OmdldFNpemVQcm9jKHZvaWQqIGNsaWVudERhdGEpCiAgICAgcmV0dXJuIGF1ZGlv
RmlsZVJlYWRlci0+ZGF0YVNpemUoKTsKIH0KIAotUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9G
aWxlUmVhZGVyOjpjcmVhdGVCdXMoZG91YmxlIHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQor
UGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2Ft
cGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiB7CiAgICAgaWYgKCFtX2V4dEF1ZGlvRmlsZVJlZikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODcsNyArMTg4LDcgQEAgUGFzc093blB0cjxB
dWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZG91YmxlIHNhbXBsZVJhdGUsIGJv
b2wgbWl4VG9Nb24KIAogICAgIC8vIENyZWF0ZSBBdWRpb0J1cyB3aGVyZSB3ZSdsbCBwdXQgdGhl
IFBDTSBhdWRpbyBkYXRhCiAgICAgT3duUHRyPEF1ZGlvQnVzPiBhdWRpb0J1cyA9IGFkb3B0UHRy
KG5ldyBBdWRpb0J1cyhidXNDaGFubmVsQ291bnQsIG51bWJlck9mRnJhbWVzKSk7Ci0gICAgYXVk
aW9CdXMtPnNldFNhbXBsZVJhdGUobV9jbGllbnREYXRhRm9ybWF0Lm1TYW1wbGVSYXRlKTsgLy8g
c2F2ZSBmb3IgbGF0ZXIKKyAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KG1fY2xpZW50RGF0YUZvcm1hdC5tU2FtcGxlUmF0ZSkpOyAvLyBzYXZlIGZvciBs
YXRlcgogCiAgICAgLy8gT25seSBhbGxvY2F0ZWQgaW4gdGhlIG1peFRvTW9ubyBjYXNlCiAgICAg
QXVkaW9GbG9hdEFycmF5IGJ1Zkw7CkBAIC0yNDEsMTMgKzI0MiwxMyBAQCBQYXNzT3duUHRyPEF1
ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhkb3VibGUgc2FtcGxlUmF0ZSwgYm9v
bCBtaXhUb01vbgogICAgIHJldHVybiBhdWRpb0J1cy5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25Q
dHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUoY29uc3QgY2hhciogZmlsZVBhdGgs
IGJvb2wgbWl4VG9Nb25vLCBkb3VibGUgc2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9CdXM+
IGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUoY29uc3QgY2hhciogZmlsZVBhdGgsIGJvb2wgbWl4VG9N
b25vLCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIEF1ZGlvRmlsZVJlYWRlciByZWFkZXIoZmls
ZVBhdGgpOwogICAgIHJldHVybiByZWFkZXIuY3JlYXRlQnVzKHNhbXBsZVJhdGUsIG1peFRvTW9u
byk7CiB9CiAKLVBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21Jbk1lbW9yeUF1ZGlv
RmlsZShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIGJvb2wgbWl4VG9Nb25vLCBk
b3VibGUgc2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21Jbk1l
bW9yeUF1ZGlvRmlsZShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIGJvb2wgbWl4
VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIEF1ZGlvRmlsZVJlYWRlciByZWFkZXIo
ZGF0YSwgZGF0YVNpemUpOwogICAgIHJldHVybiByZWFkZXIuY3JlYXRlQnVzKHNhbXBsZVJhdGUs
IG1peFRvTW9ubyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9GaWxlUmVhZGVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9GaWxlUmVhZGVyTWFjLmgKaW5kZXggZDUzMTI2NmNhMDNmNGJiYzIyNzRiMTg4NDAy
N2QyNjUyZjFkYzg1Ni4uMjEyMzQzMTQ5M2U2OGFiYWQ3YzY0OTAwNTAzMDNjYjVlYzQwMzg3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJl
YWRlck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Zp
bGVSZWFkZXJNYWMuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgfkF1ZGlvRmlsZVJl
YWRlcigpOwogCiAgICAgLy8gUmV0dXJucyAwIGlmIGVycm9yCi0gICAgUGFzc093blB0cjxBdWRp
b0J1cz4gY3JlYXRlQnVzKGRvdWJsZSBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubyk7CisgICAg
UGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4
VG9Nb25vKTsKIAogICAgIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7
IH0KICAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXggYTlh
ODkwMjFlMThmN2Q4NzY3ZjA2NzJmMjZmZjMxYTMzYzUxZmUxYy4uY2Q0OWFlMGFmZGE2MTkzNzNi
MjQ0YWRiYmQ2ZTQwZDAwOTY0ZTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0Fz
eW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQCBBc3luY0F1ZGlvRGVjb2Rlcjo6
fkFzeW5jQXVkaW9EZWNvZGVyKCkKICAgICBtX3RocmVhZElEID0gMDsKIH0KIAotdm9pZCBBc3lu
Y0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZG91Ymxl
IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit2b2lk
IEFzeW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBm
bG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGF1ZGlvRGF0YSk7CkBA
IC05MSwxMiArOTEsMTIgQEAgdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6cnVuTG9vcCgpCiAgICAg
fQogfQogCi1QYXNzT3duUHRyPEFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s+IEFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmNyZWF0ZShBcnJheUJ1ZmZlciogYXVkaW9EYXRh
LCBkb3VibGUgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKK1Bhc3NPd25QdHI8QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzaz4gQXN5bmNBdWRp
b0RlY29kZXI6OkRlY29kaW5nVGFzazo6Y3JlYXRlKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZs
b2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7
CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWNvZGluZ1Rhc2soYXVkaW9EYXRhLCBzYW1wbGVS
YXRlLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKIH0KIAotQXN5bmNBdWRpb0Rl
Y29kZXI6OkRlY29kaW5nVGFzazo6RGVjb2RpbmdUYXNrKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEs
IGRvdWJsZSBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KQorQXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6RGVjb2RpbmdUYXNrKEFycmF5QnVm
ZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spCiAgICAgOiBtX2F1ZGlvRGF0YShhdWRpb0RhdGEpCiAgICAgLCBtX3Nh
bXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxs
YmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4
IGYyY2NhOGQwNzg1Y2NlYTg0NWNjMjJhZDQ5ZDUxZGQ0MThjOWE5YTYuLmYwOTU0MmQzOWRhNDM4
NmQxZTRhN2E5MGFjYTRjYWJkYjNjNTk5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QXN5bmNBdWRpb0RlY29kZXIuaApAQCAtNDcsMjEgKzQ3LDIxIEBAIHB1YmxpYzoKICAgICB+QXN5
bmNBdWRpb0RlY29kZXIoKTsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRo
cmVhZC4KLSAgICB2b2lkIGRlY29kZUFzeW5jKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGRvdWJs
ZSBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAg
ICB2b2lkIGRlY29kZUFzeW5jKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJh
dGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOwogCiBwcml2YXRlOgog
ICAgIGNsYXNzIERlY29kaW5nVGFzayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERl
Y29kaW5nVGFzayk7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxEZWNv
ZGluZ1Rhc2s+IGNyZWF0ZShBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBkb3VibGUgc2FtcGxlUmF0
ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHN0YXRp
YyBQYXNzT3duUHRyPERlY29kaW5nVGFzaz4gY3JlYXRlKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEs
IGZsb2F0IHNhbXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
OwogCiAgICAgICAgIHZvaWQgZGVjb2RlKCk7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIERlY29kaW5nVGFzayhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBkb3VibGUgc2FtcGxlUmF0
ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgICAgIERlY29k
aW5nVGFzayhBcnJheUJ1ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVm
UHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKIAogICAgICAgICBBcnJheUJ1ZmZlciog
YXVkaW9EYXRhKCkgeyByZXR1cm4gbV9hdWRpb0RhdGEuZ2V0KCk7IH0KLSAgICAgICAgZG91Ymxl
IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICAgICAgZmxv
YXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgICAgICBB
dWRpb0J1ZmZlckNhbGxiYWNrKiBzdWNjZXNzQ2FsbGJhY2soKSB7IHJldHVybiBtX3N1Y2Nlc3ND
YWxsYmFjay5nZXQoKTsgfQogICAgICAgICBBdWRpb0J1ZmZlckNhbGxiYWNrKiBlcnJvckNhbGxi
YWNrKCkgeyByZXR1cm4gbV9lcnJvckNhbGxiYWNrLmdldCgpOyB9CiAgICAgICAgIEF1ZGlvQnVm
ZmVyKiBhdWRpb0J1ZmZlcigpIHsgcmV0dXJuIG1fYXVkaW9CdWZmZXIuZ2V0KCk7IH0KQEAgLTcw
LDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBub3RpZnlDb21wbGV0ZSgpOwogCiAg
ICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9hdWRpb0RhdGE7Ci0gICAgICAgIGRvdWJsZSBt
X3NhbXBsZVJhdGU7CisgICAgICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICAgICAgUmVmUHRy
PEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogICAgICAgICBSZWZQdHI8
QXVkaW9CdWZmZXJDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOwogICAgICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IG1fYXVkaW9CdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggODI4MDYyZWViN2IyZTVjMDhhMzMx
ZWU1MzA3MzgxMDcyMDFhYTFkOC4uOTAxNDJmMjdiMmQ2ODk5OWFiNmIxMDkyMzkzZjIwNmU5YjVk
NWIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0Nv
bnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAg
IGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKaW5kZXggMzhi
ZmQzYjU0Y2VhNmIxM2YyZGE5NzhlZmFkMjMwZTQ5ODY5MzM1Zi4uNWE1NTVkYWZiYTBhYzk4NGYx
OTM5ZTNhZTZkMmE0N2VjZDNiOTA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEF1ZGlv
UHJvY2Vzc29yOwogLy8gQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgaXMgYW4gQXVkaW9Ob2RlIHdp
dGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0IHdoZXJlIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGhh
dmUgdGhlIHNhbWUgbnVtYmVyIG9mIGNoYW5uZWxzLgogY2xhc3MgQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZShBdWRpb0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAv
LyBBdWRpb05vZGUKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAppbmRleCBmZjRmMDQy
ODc4MzkzZGFiNTUxODNhN2NjZGU0ZmQzMWQ0YjQ3NTc4Li42ZTI0ZDNiNDlhNGFjNThhNGU3NzFh
NWE4MmMwY2ZlZjlkNTBhMGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXIu
Y3BwCkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPEF1ZGlvQnVmZmVyPiBBdWRpb0J1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzUmVm
UHRyPEF1ZGlvQnVmZmVyPiBBdWRpb0J1ZmZlcjo6Y3JlYXRlKHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvQnVmZmVyKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9m
RnJhbWVzLCBzYW1wbGVSYXRlKSk7CiB9CiAKLVBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IEF1ZGlv
QnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qg
ZGF0YVNpemUsIGJvb2wgbWl4VG9Nb25vLCBkb3VibGUgc2FtcGxlUmF0ZSkKK1Bhc3NSZWZQdHI8
QXVkaW9CdWZmZXI+IEF1ZGlvQnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShjb25zdCB2
b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIGJvb2wgbWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVS
YXRlKQogewogICAgIE93blB0cjxBdWRpb0J1cz4gYnVzID0gY3JlYXRlQnVzRnJvbUluTWVtb3J5
QXVkaW9GaWxlKGRhdGEsIGRhdGFTaXplLCBtaXhUb01vbm8sIHNhbXBsZVJhdGUpOwogICAgIGlm
IChidXMuZ2V0KCkpCkBAIC01Myw3ICs1Myw3IEBAIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IEF1
ZGlvQnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLUF1ZGlvQnVmZmVyOjpBdWRpb0J1ZmZlcih1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlKQor
QXVkaW9CdWZmZXI6OkF1ZGlvQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IG1fZ2FpbigxLjApCiAg
ICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICAsIG1fbGVuZ3RoKG51bWJlck9mRnJh
bWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmgKaW5kZXggYjExYTIwZTA1MmY3
Nzk4Y2E3YmY4OGUxZGNmMGExMDdkMTNmYjA5ZS4uZDVlOWYyYjRiNGUxZmVhMjQ4M2IyYzdlZmI4
MjkyMDg3M2Y2ZjY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9C
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCkBAIC00
MSwxNSArNDEsMTUgQEAgY2xhc3MgQXVkaW9CdXM7CiAgICAgCiBjbGFzcyBBdWRpb0J1ZmZlciA6
IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvQnVmZmVyPiB7CiBwdWJsaWM6ICAgCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gY3JlYXRlKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBSZXR1
cm5zIDAgaWYgZGF0YSBpcyBub3QgYSB2YWxpZCBhdWRpbyBmaWxlLgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEF1ZGlvQnVmZmVyPiBjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3QgZGF0YVNpemUsIGJvb2wgbWl4VG9Nb25vLCBkb3VibGUgc2FtcGxlUmF0ZSk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IGNyZWF0ZUZyb21BdWRpb0ZpbGVE
YXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGZs
b2F0IHNhbXBsZVJhdGUpOwogCiAgICAgLy8gRm9ybWF0CiAgICAgc2l6ZV90IGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbGVuZ3RoKCkgLyBzYW1wbGVSYXRlKCk7IH0KLSAgICBkb3VibGUgc2FtcGxlUmF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KIAogICAgIC8vIENoYW5uZWwgZGF0YSBhY2Nl
c3MKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFu
bmVscy5zaXplKCk7IH0KQEAgLTY2LDExICs2NiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxl
YXNlTWVtb3J5KCk7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgQXVkaW9CdWZmZXIodW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0
ZSk7CisgICAgQXVkaW9CdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICBBdWRpb0J1ZmZlcihBdWRpb0J1
cyogYnVzKTsKIAogICAgIGRvdWJsZSBtX2dhaW47IC8vIHNjYWxhciBnYWluCi0gICAgZG91Ymxl
IG1fc2FtcGxlUmF0ZTsKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgc2l6ZV90IG1fbGVu
Z3RoOwogCiAgICAgVmVjdG9yPFJlZlB0cjxGbG9hdDMyQXJyYXk+ID4gbV9jaGFubmVsczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmlu
ZGV4IDRhMjMwZTA4MjMwY2Q1YmQzYjYwNWVmNzU5YzllOTBiNTgxYTYzNGUuLmI0Yjg2M2Y2NTli
YjMyNWZiMjAxMDU5ZThjYjJhMTJjNmRlYTllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CkBAIC00OCwxMiArNDksMTIgQEAgY29uc3QgZG91YmxlIFVua25vd25U
aW1lID0gLTE7CiAvLyB0byBtaW5pbWl6ZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBhbGlhc2luZy4K
IGNvbnN0IGRvdWJsZSBNYXhSYXRlID0gMTAyNDsKIAotUGFzc1JlZlB0cjxBdWRpb0J1ZmZlclNv
dXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29u
dGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyU291cmNlTm9k
ZT4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUg
c2FtcGxlUmF0ZSkKK0F1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
KEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU291
cmNlTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9idWZmZXIoMCkKICAgICAsIG1f
aXNQbGF5aW5nKGZhbHNlKQpAQCAtMTAwLDcgKzEwMSw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgLy8gQ2FyZWZ1bCAt
IHRoaXMgaXMgYSB0cnlMb2NrKCkgYW5kIG5vdCBhbiBhdXRvbG9ja2VyLCBzbyB3ZSBtdXN0IHVu
bG9jaygpIGJlZm9yZSBldmVyeSByZXR1cm4uCiAgICAgaWYgKG1fcHJvY2Vzc0xvY2sudHJ5TG9j
aygpKSB7CiAgICAgICAgIC8vIENoZWNrIGlmIGl0J3MgdGltZSB0byBzdGFydCBwbGF5aW5nLgot
ICAgICAgICBkb3VibGUgc2FtcGxlUmF0ZSA9IHRoaXMtPnNhbXBsZVJhdGUoKTsKKyAgICAgICAg
ZmxvYXQgc2FtcGxlUmF0ZSA9IHRoaXMtPnNhbXBsZVJhdGUoKTsKICAgICAgICAgZG91YmxlIHF1
YW50dW1TdGFydFRpbWUgPSBjb250ZXh0KCktPmN1cnJlbnRUaW1lKCk7CiAgICAgICAgIGRvdWJs
ZSBxdWFudHVtRW5kVGltZSA9IHF1YW50dW1TdGFydFRpbWUgKyBmcmFtZXNUb1Byb2Nlc3MgLyBz
YW1wbGVSYXRlOwogCkBAIC0xMzMsOCArMTM0LDggQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAgLy8gSWYgdGhlIGVu
ZCB0aW1lIGlzIHNvbWV3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHRoaXMgdGltZSBxdWFudHVtLCB0
aGVuIHNpbXBseSB6ZXJvIG91dCB0aGUKICAgICAgICAgLy8gZnJhbWVzIHN0YXJ0aW5nIGF0IHRo
ZSBlbmQgdGltZS4KICAgICAgICAgaWYgKG1fZW5kVGltZSAhPSBVbmtub3duVGltZSAmJiBtX2Vu
ZFRpbWUgPj0gcXVhbnR1bVN0YXJ0VGltZSAmJiBtX2VuZFRpbWUgPCBxdWFudHVtRW5kVGltZSkg
ewotICAgICAgICAgICAgdW5zaWduZWQgemVyb1N0YXJ0RnJhbWUgPSAobV9lbmRUaW1lIC0gcXVh
bnR1bVN0YXJ0VGltZSkgKiBzYW1wbGVSYXRlOwotICAgICAgICAgICAgdW5zaWduZWQgZnJhbWVz
VG9aZXJvID0gZnJhbWVzVG9Qcm9jZXNzIC0gemVyb1N0YXJ0RnJhbWU7CisgICAgICAgICAgICBz
aXplX3QgemVyb1N0YXJ0RnJhbWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KChtX2VuZFRpbWUg
LSBxdWFudHVtU3RhcnRUaW1lKSAqIHNhbXBsZVJhdGUpOworICAgICAgICAgICAgc2l6ZV90IGZy
YW1lc1RvWmVybyA9IGZyYW1lc1RvUHJvY2VzcyAtIHplcm9TdGFydEZyYW1lOwogCiAgICAgICAg
ICAgICBib29sIGlzU2FmZSA9IHplcm9TdGFydEZyYW1lIDwgZnJhbWVzVG9Qcm9jZXNzICYmIGZy
YW1lc1RvWmVybyA8PSBmcmFtZXNUb1Byb2Nlc3MgJiYgemVyb1N0YXJ0RnJhbWUgKyBmcmFtZXNU
b1plcm8gPD0gZnJhbWVzVG9Qcm9jZXNzOwogICAgICAgICAgICAgQVNTRVJUKGlzU2FmZSk7CkBA
IC0yNzIsMTMgKzI3MywxMyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cmVuZGVyRnJv
bUJ1ZmZlcihBdWRpb0J1cyogYnVzLCB1bnNpZ25lZCBkZXN0aW5hdGlvbgogICAgICAgICBkb3Vi
bGUgc2FtcGxlTDEgPSBzb3VyY2VMW3JlYWRJbmRleF07CiAgICAgICAgIGRvdWJsZSBzYW1wbGVM
MiA9IHNvdXJjZUxbcmVhZEluZGV4Ml07CiAgICAgICAgIGRvdWJsZSBzYW1wbGVMID0gKDEuMCAt
IGludGVycG9sYXRpb25GYWN0b3IpICogc2FtcGxlTDEgKyBpbnRlcnBvbGF0aW9uRmFjdG9yICog
c2FtcGxlTDI7Ci0gICAgICAgICpkZXN0aW5hdGlvbkwrKyA9IHNhbXBsZUw7CisgICAgICAgICpk
ZXN0aW5hdGlvbkwrKyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc2FtcGxlTCk7CiAKICAgICAg
ICAgaWYgKGlzU3RlcmVvKSB7CiAgICAgICAgICAgICBkb3VibGUgc2FtcGxlUjEgPSBzb3VyY2VS
W3JlYWRJbmRleF07CiAgICAgICAgICAgICBkb3VibGUgc2FtcGxlUjIgPSBzb3VyY2VSW3JlYWRJ
bmRleDJdOwogICAgICAgICAgICAgZG91YmxlIHNhbXBsZVIgPSAoMS4wIC0gaW50ZXJwb2xhdGlv
bkZhY3RvcikgKiBzYW1wbGVSMSArIGludGVycG9sYXRpb25GYWN0b3IgKiBzYW1wbGVSMjsKLSAg
ICAgICAgICAgICpkZXN0aW5hdGlvblIrKyA9IHNhbXBsZVI7CisgICAgICAgICAgICAqZGVzdGlu
YXRpb25SKysgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHNhbXBsZVIpOwogICAgICAgICB9CiAK
ICAgICAgICAgdmlydHVhbFJlYWRJbmRleCArPSBwaXRjaFJhdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IGM3NjljOTdmZjAwOWVl
OWViMzMyM2ZmODI5MGFjNjczZTdiYTQ2MmUuLmZkNzMwODFkNmIzZjgxYjRlMWZiN2IyYjNjZDM4
YmQ4MDBlNzgzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIAogY2xh
c3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIDogcHVibGljIEF1ZGlvU291cmNlTm9kZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBs
ZVJhdGUpOwogCiAgICAgdmlydHVhbCB+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCk7CiAgICAgCkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFzc1JlZlB0
cjxBdWRpb1Bhbm5lck5vZGU+IHBhbm5lck5vZGUpIHsgbV9wYW5uZXJOb2RlID0gcGFubmVyTm9k
ZTsgfQogCiBwcml2YXRlOgotICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQq
LCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29u
dGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9pZCByZW5kZXJGcm9tQnVmZmVyKEF1
ZGlvQnVzKiwgdW5zaWduZWQgZGVzdGluYXRpb25GcmFtZU9mZnNldCwgc2l6ZV90IG51bWJlck9m
RnJhbWVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFu
bmVsTWVyZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbE1lcmdl
ci5jcHAKaW5kZXggMGY4Y2MwMDAyZmUxY2QyOWQzYzgwNzU0YTc5OWQ5N2NiOTY1ZmZjYS4uNTFl
Nzg1NTg2ODMzMWE0NWY3NjU1MzU0MmQyOGMzZjFhMTFkMTk4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIEl0IGNhbiBlYXNpbHkgYmUgaW5jcmVhc2VkIHRvIHN1cHBv
cnQgbW9yZSBpZiB0aGUgd2ViIGF1ZGlvIHNwZWNpZmljYXRpb24gaXMgdXBkYXRlZC4KIGNvbnN0
IHVuc2lnbmVkIE51bWJlck9mSW5wdXRzID0gNjsKIAotQXVkaW9DaGFubmVsTWVyZ2VyOjpBdWRp
b0NoYW5uZWxNZXJnZXIoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkK
K0F1ZGlvQ2hhbm5lbE1lcmdlcjo6QXVkaW9DaGFubmVsTWVyZ2VyKEF1ZGlvQ29udGV4dCogY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVS
YXRlKQogewogICAgIC8vIENyZWF0ZSBhIGZpeGVkIG51bWJlciBvZiBpbnB1dHMgKGFibGUgdG8g
aGFuZGxlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBkZWFsIHdpdGgpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsTWVyZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxNZXJnZXIuaAppbmRleCBiN2I3MThi
NDkxNWE4OWVmN2M2MDg1ZDg2MWVkYzcwNjRlMmNmNGJmLi5lNzczZGFlYjkxM2Y1MmQyNjU1NGZh
NjM4ZjhjZDYwYTIwY2ZmYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NoYW5uZWxNZXJnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0No
YW5uZWxNZXJnZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiAgICAg
CiBjbGFzcyBBdWRpb0NoYW5uZWxNZXJnZXIgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NoYW5uZWxNZXJnZXI+IGNyZWF0ZShBdWRpb0Nv
bnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEF1ZGlvQ2hhbm5lbE1lcmdlcj4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9DaGFu
bmVsTWVyZ2VyKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKICAgICB9CkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9y
SW5wdXQoQXVkaW9Ob2RlSW5wdXQqKTsKIAogcHJpdmF0ZToKLSAgICBBdWRpb0NoYW5uZWxNZXJn
ZXIoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQ2hhbm5lbE1l
cmdlcihBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hh
bm5lbFNwbGl0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hhbm5lbFNw
bGl0dGVyLmNwcAppbmRleCA3ZTkwYjdhOTNjNmY0ZDI4NWE1MTRlNmU0ZmNlYTI1ZWM3ODBlZjdj
Li5lNWNjNzJhODZiNmEwMTE0NzVlM2Q2YTgzODc1ZjhjNTZhM2Y0OGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEl0IGNhbiBlYXNpbHkgYmUgaW5jcmVhc2Vk
IHRvIHN1cHBvcnQgbW9yZSBpZiB0aGUgd2ViIGF1ZGlvIHNwZWNpZmljYXRpb24gaXMgdXBkYXRl
ZC4KIGNvbnN0IHVuc2lnbmVkIE51bWJlck9mT3V0cHV0cyA9IDY7CiAKLUF1ZGlvQ2hhbm5lbFNw
bGl0dGVyOjpBdWRpb0NoYW5uZWxTcGxpdHRlcihBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJs
ZSBzYW1wbGVSYXRlKQorQXVkaW9DaGFubmVsU3BsaXR0ZXI6OkF1ZGlvQ2hhbm5lbFNwbGl0dGVy
KEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRp
b05vZGVJbnB1dCh0aGlzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QXVkaW9DaGFubmVsU3BsaXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ2hh
bm5lbFNwbGl0dGVyLmgKaW5kZXggN2RhZGFjNTcxYzc0NDBmZmUxZGE3YWU4NTU0YmExMDA1NTNj
Njg5Mi4uNzFiMGVmNDE1YmZkNDVlNjNjM2YwMTdmNzdiZGNjOWE2NDA2Y2NiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9DaGFubmVsU3BsaXR0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NoYW5uZWxTcGxpdHRlci5oCkBAIC0zNCw3ICsz
NCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKICAgICAKIGNsYXNzIEF1ZGlvQ2hhbm5lbFNwbGl0
dGVyIDogcHVibGljIEF1ZGlvTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
QXVkaW9DaGFubmVsU3BsaXR0ZXI+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJs
ZSBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVy
PiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb0NoYW5uZWxTcGxpdHRlcihjb250ZXh0
LCBzYW1wbGVSYXRlKSk7ICAgICAgCiAgICAgfQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9DaGFubmVsU3Bs
aXR0ZXIoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQ2hhbm5l
bFNwbGl0dGVyKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
aW5kZXggMzllOGYzZGYyYTM0YTZmNmQ3ODhhZDI1ZTIyMmQ4YjliM2E4MDlmZi4uM2VmZmZlYzkx
ZGMwNmQ4MWU5MWRlZDFjZTU1N2IzMDdlZjEzZTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIG5hbWVzcGFjZSB7CiAgICAgCi1ib29sIGlzU2FtcGxlUmF0ZVJhbmdlR29vZChkb3Vi
bGUgc2FtcGxlUmF0ZSkKK2Jvb2wgaXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJh
dGUpCiB7CiAgICAgcmV0dXJuIHNhbXBsZVJhdGUgPj0gMjIwNTAgJiYgc2FtcGxlUmF0ZSA8PSA5
NjAwMDsKIH0KQEAgLTEwMyw3ICsxMDMsNyBAQCBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVk
aW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXVkaW9Db250ZXh0KGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8QXVkaW9Db250
ZXh0PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU9mZmxpbmVDb250ZXh0KERvY3VtZW50KiBkb2N1bWVu
dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBkb3Vi
bGUgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEF1ZGlvQ29udGV4
dD4gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQg
c2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsK
IApAQCAtMTQzLDcgKzE0Myw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50
KiBkb2N1bWVudCkKIH0KIAogLy8gQ29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGlt
ZSkgcmVuZGVyaW5nLgotQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGRv
dWJsZSBzYW1wbGVSYXRlKQorQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQqIGRv
Y3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQsIHRoaXMp
CiAgICAgLCBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2lzQXVkaW9UaHJlYWRGaW5p
c2hlZChmYWxzZSkKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVmQnVm
ZmVyKFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IGJ1ZmZlcikKICAgICBtX2FsbG9jYXRlZEJ1ZmZl
cnMuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKLVBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1i
ZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJhdGUpCitQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBB
dWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgaWYgKCFpc1NhbXBs
ZVJhdGVSYW5nZUdvb2Qoc2FtcGxlUmF0ZSkgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwIHx8ICFu
dW1iZXJPZkZyYW1lcykKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCmluZGV4IDhmNWMzNWIwYTRlNDA5NmFlN2ExMWVhNDlhMzU2NDFiNzA1MDUz
YjMuLmZhNzNkNzA5MzA4ODU0MjlmOWEzZWViNzhjMmZiZGMzMTgxZWExZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAg
ICAgLy8gQ3JlYXRlIGFuIEF1ZGlvQ29udGV4dCBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSBy
ZW5kZXJpbmcuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGVPZmZs
aW5lQ29udGV4dChEb2N1bWVudCosIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBu
dW1iZXJPZkZyYW1lcywgZG91YmxlIHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IGNyZWF0ZU9mZmxpbmVDb250ZXh0KERvY3Vt
ZW50KiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBm
bG9hdCBzYW1wbGVSYXRlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0Nv
bnRleHQoKTsKIApAQCAtOTUsOSArOTUsOSBAQCBwdWJsaWM6CiAKICAgICBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsg
fQogICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLT5j
dXJyZW50VGltZSgpOyB9Ci0gICAgZG91YmxlIHNhbXBsZVJhdGUoKSB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIHsgcmV0
dXJuIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCk7IH0KIAotICAgIFBhc3NSZWZQdHI8
QXVkaW9CdWZmZXI+IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMsIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBQYXNzUmVmUHRyPEF1
ZGlvQnVmZmVyPiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90
IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICBQYXNzUmVmUHRyPEF1ZGlv
QnVmZmVyPiBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyLCBib29sIG1peFRv
TW9ubyk7CiAKICAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgpA
QCAtMjI2LDcgKzIyNiw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgQXVkaW9Db250
ZXh0KERvY3VtZW50Kik7Ci0gICAgQXVkaW9Db250ZXh0KERvY3VtZW50KiwgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBkb3VibGUgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9Db250ZXh0KERvY3VtZW50KiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywg
c2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2b2lkIGNvbnN0
cnVjdENvbW1vbigpOwogCiAgICAgdm9pZCBsYXp5SW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGE3MzVjYTEw
YzA5YzYzYTI5Mzg4MjA3ZTBhYjg1ZTJkMzliMWM4NzEuLmZmOWViYmQzMjc4NjQ5N2NjY2Q5MGI1
OWUwMTJkZGQyMTFlMzRhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAotQXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCitBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBt
X2N1cnJlbnRUaW1lKDAuMCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oCmluZGV4IDU5MTMyMDVmODRiOTQ4ZDY4MzMzNDEwOTUyMDMzMGJkMGY2
MDU2YzkuLmQ3YmM3YmMxMmQ3OTAyNmViNWFmYjU3ZjRlZmU3MjQ2OGI1MzdkNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiAgICAgCiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSA6IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKIHB1
YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQqLCBkb3VibGUgc2Ft
cGxlUmF0ZSk7CisgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAK
ICAgICAvLyBBdWRpb05vZGUgICAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgZG91
YmxlIGN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbV9jdXJyZW50VGltZTsgfQogCi0gICAgdmlydHVh
bCBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IHNhbXBs
ZVJhdGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMoKSBjb25zdCB7IHJldHVybiAyOyB9IC8vIEZJWE1FOiB1cGRhdGUgd2hlbiBtdWx0aS1jaGFu
bmVsIChtb3JlIHRoYW4gc3RlcmVvKSBpcyBzdXBwb3J0ZWQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9BdWRpb0dhaW5Ob2RlLmNwcAppbmRleCAzNjc4NzkyZDI2NzRkZDY4Yjg2NGM5OWEwNDc2
MDI2MDFkZWEzZGY2Li4yMTI5Yzg1ZDY5MTgwMDg4ODVmZTg3MTcyOGVhY2M1MThkZDQwNDI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmNwcApAQCAtMzQsNyArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvR2Fpbk5vZGU6OkF1ZGlvR2Fpbk5v
ZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0F1ZGlvR2Fpbk5v
ZGU6OkF1ZGlvR2Fpbk5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWlu
KDEuMCkKICAgICAsIG1fc2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vz
c2luZ1NpemVJbkZyYW1lcykgLy8gRklYTUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZl
ciBpbiBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0dh
aW5Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0dhaW5Ob2RlLmgKaW5kZXgg
YTBkM2MyYjIwOGFhOGNlZjM3MTdkNTNmMDYyZjQ3YjNmNTIwYjg3ZS4uZTYzNDIxMjhjNzc5OTRi
YmQ0OGQyMGQ2ZjE4N2IyOGQ1NzkxOTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9HYWluTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
R2Fpbk5vZGUuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiAKIGNsYXNz
IEF1ZGlvR2Fpbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBdWRpb0dhaW5Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBk
b3VibGUgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0dhaW5Ob2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb0dhaW5Ob2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpKTsgICAgICAKICAgICB9CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb0dh
aW4qIGdhaW4oKSB7IHJldHVybiBtX2dhaW4uZ2V0KCk7IH0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgIAogcHJpdmF0ZToKLSAgICBBdWRpb0dhaW5Ob2RlKEF1ZGlvQ29u
dGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb0dhaW5Ob2RlKEF1ZGlvQ29udGV4
dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgZG91YmxlIG1fbGFzdEdhaW47IC8vIGZvciBk
ZS16aXBwZXJpbmcKICAgICBSZWZQdHI8QXVkaW9HYWluPiBtX2dhaW47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwCmluZGV4IDQ0ZmIwMmNkOGZiYTMxODE5ODhiMmJj
Y2RjMTA5Nzc5ZDkwNDA0MmEuLjJmMWVmNzY0ZGY4ZGJkMjJiNjczYzBlYzcwYmZiNmY2M2IxYWI0
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwCkBAIC0zOCwx
MCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdWRpb0xpc3RlbmVyOjpBdWRpb0xp
c3RlbmVyKCkKICAgICA6IG1fcG9zaXRpb24oMCwgMCwgMCkKLSAgICAsIG1fb3JpZW50YXRpb24o
MC4wLCAwLjAsIC0xLjApCi0gICAgLCBtX3VwVmVjdG9yKDAuMCwgMS4wLCAwLjApCisgICAgLCBt
X29yaWVudGF0aW9uKDAsIDAsIC0xKQorICAgICwgbV91cFZlY3RvcigwLCAxLCAwKQogICAgICwg
bV92ZWxvY2l0eSgwLCAwLCAwKQotICAgICwgbV9kb3BwbGVyRmFjdG9yKDEuMCkKKyAgICAsIG1f
ZG9wcGxlckZhY3RvcigxKQogICAgICwgbV9zcGVlZE9mU291bmQoMzQzLjMpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmgKaW5kZXggNTI4MWE4OTA3Y2NiYTBjMTgx
YjUxN2Q3YzZhYjUyODA0Njg0MGRjZi4uOGI1ZDhhZDFhMDM4YjU1MTMzYzdmYjNhN2M0OGM5Mjg2
NThkNTgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9MaXN0ZW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaApAQCAtNDUs
MTIgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBQb3NpdGlvbgotICAgIHZvaWQg
c2V0UG9zaXRpb24oZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgeyBzZXRQb3NpdGlvbihG
bG9hdFBvaW50M0QoeCwgeSwgeikpOyB9CisgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB6KSB7IHNldFBvc2l0aW9uKEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7IH0K
ICAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQzRCAmcG9zaXRpb24pIHsgbV9w
b3NpdGlvbiA9IHBvc2l0aW9uOyB9CiAgICAgY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KIAogICAgIC8vIE9yaWVudGF0aW9uCi0gICAg
dm9pZCBzZXRPcmllbnRhdGlvbihkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUg
dXBYLCBkb3VibGUgdXBZLCBkb3VibGUgdXBaKQorICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdXBYLCBmbG9hdCB1cFksIGZsb2F0IHVwWikK
ICAgICB7CiAgICAgICAgIHNldE9yaWVudGF0aW9uKEZsb2F0UG9pbnQzRCh4LCB5LCB6KSk7CiAg
ICAgICAgIHNldFVwVmVjdG9yKEZsb2F0UG9pbnQzRCh1cFgsIHVwWSwgdXBaKSk7CkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBGbG9hdFBvaW50M0QmIHVwVmVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV91cFZlY3RvcjsgfQogCiAgICAgLy8gVmVsb2NpdHkKLSAgICB2b2lkIHNl
dFZlbG9jaXR5KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIHsgc2V0VmVsb2NpdHkoRmxv
YXRQb2ludDNEKHgsIHksIHopKTsgfQorICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeikgeyBzZXRWZWxvY2l0eShGbG9hdFBvaW50M0QoeCwgeSwgeikpOyB9CiAg
ICAgdm9pZCBzZXRWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50M0QgJnZlbG9jaXR5KSB7IG1fdmVs
b2NpdHkgPSB2ZWxvY2l0eTsgfQogICAgIGNvbnN0IEZsb2F0UG9pbnQzRCYgdmVsb2NpdHkoKSBj
b25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05v
ZGUuY3BwCmluZGV4IDBjMTdkZTYwY2JlNmFjMGQ5N2YwNTA2MzA2NTRlMThhODkzNTMyNzguLmMy
YmJhZjcxYjFhYjM5MGZkMWU5NzJmODgzNjBhNjhhOWFlZDgzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUF1ZGlvTm9kZTo6QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91Ymxl
IHNhbXBsZVJhdGUpCitBdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBt
X25vZGVUeXBlKE5vZGVUeXBlVW5rbm93bikKICAgICAsIG1fY29udGV4dChjb250ZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb05vZGUuaAppbmRleCAwMDg3MWRkNTk2Mzk1MzJiZTZkNzdjMzRm
NzIzNjg2MDU2ZjcwM2U3Li44NmZmZTdjZmE0NTUyNjE1YTliOTU4Mzk0YmRlN2FkNDhlZGZjN2My
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFz
cyBBdWRpb05vZGUgewogcHVibGljOgogICAgIGVudW0geyBQcm9jZXNzaW5nU2l6ZUluRnJhbWVz
ID0gMTI4IH07CiAKLSAgICBBdWRpb05vZGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJh
dGUpOworICAgIEF1ZGlvTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAg
ICB2aXJ0dWFsIH5BdWRpb05vZGUoKTsKIAogICAgIEF1ZGlvQ29udGV4dCogY29udGV4dCgpIHsg
cmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGNvbm5lY3QoQXVkaW9Ob2RlKiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5k
ZXggPSAwLCB1bnNpZ25lZCBpbnB1dEluZGV4ID0gMCk7CiAgICAgYm9vbCBkaXNjb25uZWN0KHVu
c2lnbmVkIG91dHB1dEluZGV4ID0gMCk7CiAKLSAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KIAogICAgIC8vIHByb2Nlc3NJZk5lY2Vzc2FyeSgpIGlz
IGNhbGxlZCBieSBvdXIgb3V0cHV0KHMpIHdoZW4gdGhlIHJlbmRlcmluZyBncmFwaCBuZWVkcyB0
aGlzIEF1ZGlvTm9kZSB0byBwcm9jZXNzLgogICAgIC8vIFRoaXMgbWV0aG9kIGVuc3VyZXMgdGhh
dCB0aGUgQXVkaW9Ob2RlIHdpbGwgb25seSBwcm9jZXNzIG9uY2UgcGVyIHJlbmRlcmluZyB0aW1l
IHF1YW50dW0gZXZlbiBpZiBpdCdzIGNhbGxlZCByZXBlYXRlZGx5LgpAQCAtMTUwLDcgKzE1MCw3
IEBAIHByaXZhdGU6CiAgICAgdm9sYXRpbGUgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CiAgICAgTm9k
ZVR5cGUgbV9ub2RlVHlwZTsKICAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7Ci0g
ICAgZG91YmxlIG1fc2FtcGxlUmF0ZTsKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgVmVj
dG9yPE93blB0cjxBdWRpb05vZGVJbnB1dD4gPiBtX2lucHV0czsKICAgICBWZWN0b3I8T3duUHRy
PEF1ZGlvTm9kZU91dHB1dD4gPiBtX291dHB1dHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb1Bhbm5lck5vZGUuY3BwCmluZGV4IDdkMjZmZWFjOTQ3ZDc2YzRiYWY0Nzg0N2Y4MWZh
ZTQ3MDVjMjkzMjQuLmZhZjdmMTU5ZTQ0MzIxNDQ2ZWQ2NDM2MWMyZGY0NDVkMzA1YThkZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBzdGF0aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAmeCkKICAgICAgICAgeCA9IDAuMDsK
IH0KIAotQXVkaW9QYW5uZXJOb2RlOjpBdWRpb1Bhbm5lck5vZGUoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkKK0F1ZGlvUGFubmVyTm9kZTo6QXVkaW9QYW5uZXJOb2Rl
KEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmVyOjpQYW5u
aW5nTW9kZWxIUlRGKQogICAgICwgbV9sYXN0R2FpbigtMS4wKQpAQCAtMTg4LDcgKzE4OCw3IEBA
IHZvaWQgQXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXpp
bXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpCiAKICAgICBGbG9hdFBvaW50M0QgdXAgPSBsaXN0ZW5l
clJpZ2h0LmNyb3NzKGxpc3RlbmVyRnJvbnROb3JtKTsKIAotICAgIGRvdWJsZSB1cFByb2plY3Rp
b24gPSBzb3VyY2VMaXN0ZW5lci5kb3QodXApOworICAgIGZsb2F0IHVwUHJvamVjdGlvbiA9IHNv
dXJjZUxpc3RlbmVyLmRvdCh1cCk7CiAKICAgICBGbG9hdFBvaW50M0QgcHJvamVjdGVkU291cmNl
ID0gc291cmNlTGlzdGVuZXIgLSB1cFByb2plY3Rpb24gKiB1cDsKICAgICBwcm9qZWN0ZWRTb3Vy
Y2Uubm9ybWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5o
CmluZGV4IDYxZTM0YTk3YzNiZGU4NDRiMTJhYjBkNTBiNjAyMDBlNThhYjZiMmUuLjZlY2ViZWFh
ZTMxY2E3ZGFjMzg1NzlmMWQ1YTAzNWRlMzcyMmNmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvUGFubmVyTm9kZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
U09VTkRGSUVMRCA9IDIsCiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvUGFu
bmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBBdWRpb1Bhbm5lck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0K
QEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9HYWluKiBjb25lR2FpbigpIHsg
cmV0dXJuIG1fY29uZUdhaW4uZ2V0KCk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAKIHByaXZhdGU6Ci0gICAgQXVkaW9QYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCos
IGRvdWJsZSBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb1Bhbm5lck5vZGUoQXVkaW9Db250ZXh0Kiwg
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5j
ZSBhbmQgY29uZSBnYWluIGF0dGVudWF0aW9uLgogICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKaW5kZXggOTA1NjQ5ODRkZjJk
M2NmM2M4ZjJlNzc1NDY2NDYzZTdlOTAzODBmOS4uYmU5Mjc5ZmRmMTgwYWQwNGE2MjRiZDI1MDE0
OTllNTIzNzQ4OTNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Q
YXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlv
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDMsMTMgKzQ0LDEzIEBA
IGZsb2F0IEF1ZGlvUGFyYW06OnZhbHVlKCkKICAgICAvLyBVcGRhdGUgdmFsdWUgZm9yIHRpbWVs
aW5lLgogICAgIGlmIChjb250ZXh0KCkgJiYgY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpIHsK
ICAgICAgICAgYm9vbCBoYXNWYWx1ZTsKLSAgICAgICAgZmxvYXQgdGltZWxpbmVWYWx1ZSA9IG1f
dGltZWxpbmUudmFsdWVGb3JDb250ZXh0VGltZShjb250ZXh0KCksIG1fdmFsdWUsIGhhc1ZhbHVl
KTsKKyAgICAgICAgZmxvYXQgdGltZWxpbmVWYWx1ZSA9IG1fdGltZWxpbmUudmFsdWVGb3JDb250
ZXh0VGltZShjb250ZXh0KCksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV92YWx1ZSksIGhhc1Zh
bHVlKTsKIAogICAgICAgICBpZiAoaGFzVmFsdWUpCiAgICAgICAgICAgICBtX3ZhbHVlID0gdGlt
ZWxpbmVWYWx1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdmFs
dWUpOworICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fdmFsdWUpOwogfQogCiB2
b2lkIEF1ZGlvUGFyYW06OnNldFZhbHVlKGZsb2F0IHZhbHVlKQpAQCAtNjIsNyArNjMsNyBAQCB2
b2lkIEF1ZGlvUGFyYW06OnNldFZhbHVlKGZsb2F0IHZhbHVlKQogCiBmbG9hdCBBdWRpb1BhcmFt
OjpzbW9vdGhlZFZhbHVlKCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc21v
b3RoZWRWYWx1ZSk7CisgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV9zbW9vdGhl
ZFZhbHVlKTsKIH0KIAogYm9vbCBBdWRpb1BhcmFtOjpzbW9vdGgoKQpAQCAtNzEsNyArNzIsNyBA
QCBib29sIEF1ZGlvUGFyYW06OnNtb290aCgpCiAgICAgLy8gU21vb3RoaW5nIGVmZmVjdGl2ZWx5
IGlzIHBlcmZvcm1lZCBieSB0aGUgdGltZWxpbmUuCiAgICAgYm9vbCB1c2VUaW1lbGluZVZhbHVl
ID0gZmFsc2U7CiAgICAgaWYgKGNvbnRleHQoKSkKLSAgICAgICAgbV92YWx1ZSA9IG1fdGltZWxp
bmUudmFsdWVGb3JDb250ZXh0VGltZShjb250ZXh0KCksIG1fdmFsdWUsIHVzZVRpbWVsaW5lVmFs
dWUpOworICAgICAgICBtX3ZhbHVlID0gbV90aW1lbGluZS52YWx1ZUZvckNvbnRleHRUaW1lKGNv
bnRleHQoKSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChtX3ZhbHVlKSwgdXNlVGltZWxpbmVWYWx1
ZSk7CiAgICAgCiAgICAgaWYgKG1fc21vb3RoZWRWYWx1ZSA9PSBtX3ZhbHVlKSB7CiAgICAgICAg
IC8vIFNtb290aGVkIHZhbHVlIGhhcyBhbHJlYWR5IGFwcHJvYWNoZWQgYW5kIHNuYXBwZWQgdG8g
dmFsdWUuCkBAIC0xMDIsMTIgKzEwMywxMiBAQCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZVNh
bXBsZUFjY3VyYXRlVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJlck9mVgogICAg
IC8vIENhbGN1bGF0ZSB2YWx1ZXMgZm9yIHRoaXMgcmVuZGVyIHF1YW50dW0uCiAgICAgLy8gTm9y
bWFsbHkgbnVtYmVyT2ZWYWx1ZXMgd2lsbCBlcXVhbCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXpl
SW5GcmFtZXMgKHRoZSByZW5kZXIgcXVhbnR1bSBzaXplKS4KICAgICBmbG9hdCBzYW1wbGVSYXRl
ID0gY29udGV4dCgpLT5zYW1wbGVSYXRlKCk7Ci0gICAgZmxvYXQgc3RhcnRUaW1lID0gY29udGV4
dCgpLT5jdXJyZW50VGltZSgpOworICAgIGZsb2F0IHN0YXJ0VGltZSA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQoY29udGV4dCgpLT5jdXJyZW50VGltZSgpKTsKICAgICBmbG9hdCBlbmRUaW1lID0g
c3RhcnRUaW1lICsgbnVtYmVyT2ZWYWx1ZXMgLyBzYW1wbGVSYXRlOwogCiAgICAgLy8gTm90ZSB3
ZSdyZSBydW5uaW5nIGNvbnRyb2wgcmF0ZSBhdCB0aGUgc2FtcGxlLXJhdGUuCiAgICAgLy8gUGFz
cyBpbiB0aGUgY3VycmVudCB2YWx1ZSBhcyBkZWZhdWx0IHZhbHVlLgotICAgIG1fdmFsdWUgPSBt
X3RpbWVsaW5lLnZhbHVlc0ZvclRpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUsIG1fdmFsdWUs
IHZhbHVlcywgbnVtYmVyT2ZWYWx1ZXMsIHNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOworICAgIG1f
dmFsdWUgPSBtX3RpbWVsaW5lLnZhbHVlc0ZvclRpbWVSYW5nZShzdGFydFRpbWUsIGVuZFRpbWUs
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobV92YWx1ZSksIHZhbHVlcywgbnVtYmVyT2ZWYWx1ZXMs
IHNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAppbmRleCAw
NDUxODg0NDU2ZmFlMTkxODU3MDhhYTJmNjExYmViM2QzNDA0NjQzLi4yZWUxMzRhZTM3YTIyMTAy
ODk2ZDk2ZThlYWMzMGEzYTQ4M2YzYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdWRp
b1BhcmFtVGltZWxpbmUuaCIKIAogI2luY2x1ZGUgIkF1ZGlvVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTEyNCw4ICsxMjUsOCBAQCBmbG9hdCBBdWRpb1BhcmFtVGlt
ZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBk
ZWZhdQogICAgIC8vIEFzayBmb3IganVzdCBhIHNpbmdsZSB2YWx1ZS4KICAgICBmbG9hdCB2YWx1
ZTsKICAgICBmbG9hdCBzYW1wbGVSYXRlID0gY29udGV4dC0+c2FtcGxlUmF0ZSgpOwotICAgIGZs
b2F0IHN0YXJ0VGltZSA9IGNvbnRleHQtPmN1cnJlbnRUaW1lKCk7Ci0gICAgZmxvYXQgZW5kVGlt
ZSA9IHN0YXJ0VGltZSArIDEuMSAvIHNhbXBsZVJhdGU7IC8vIHRpbWUganVzdCBiZXlvbmQgb25l
IHNhbXBsZS1mcmFtZQorICAgIGZsb2F0IHN0YXJ0VGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQoY29udGV4dC0+Y3VycmVudFRpbWUoKSk7CisgICAgZmxvYXQgZW5kVGltZSA9IHN0YXJ0VGlt
ZSArIDEuMWYgLyBzYW1wbGVSYXRlOyAvLyB0aW1lIGp1c3QgYmV5b25kIG9uZSBzYW1wbGUtZnJh
bWUKICAgICBmbG9hdCBjb250cm9sUmF0ZSA9IHNhbXBsZVJhdGUgLyBBdWRpb05vZGU6OlByb2Nl
c3NpbmdTaXplSW5GcmFtZXM7IC8vIG9uZSBwYXJhbWV0ZXIgY2hhbmdlIHBlciByZW5kZXIgcXVh
bnR1bQogICAgIHZhbHVlID0gdmFsdWVzRm9yVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSwg
ZGVmYXVsdFZhbHVlLCAmdmFsdWUsIDEsIHNhbXBsZVJhdGUsIGNvbnRyb2xSYXRlKTsKIApAQCAt
MTU3LDcgKzE1OCw3IEBAIGZsb2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVzRm9yVGltZVJh
bmdlKGZsb2F0IHN0YXJ0VGltZSwKIH0KIAogLy8gUmV0dXJucyB0aGUgcm91bmRlZCBkb3duIGlu
dGVnZXIgc2FtcGxlLWZyYW1lIGZvciB0aGUgdGltZSBhbmQgc2FtcGxlLXJhdGUuCi1zdGF0aWMg
dW5zaWduZWQgdGltZVRvU2FtcGxlRnJhbWUoZG91YmxlIHRpbWUsIGRvdWJsZSBzYW1wbGVSYXRl
KQorc3RhdGljIHVuc2lnbmVkIHRpbWVUb1NhbXBsZUZyYW1lKGRvdWJsZSB0aW1lLCBmbG9hdCBz
YW1wbGVSYXRlKQogewogICAgIGRvdWJsZSBrID0gMC41IC8gc2FtcGxlUmF0ZTsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCh0aW1lICsgaykgKiBzYW1wbGVSYXRlKTsKQEAgLTE4
NCw3ICsxODUsNyBAQCBmbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlc0ZvclRpbWVSYW5n
ZUltcGwoZmxvYXQgc3RhcnRUaW1lLAogICAgIH0KIAogICAgIC8vIE1haW50YWluIGEgcnVubmlu
ZyB0aW1lIGFuZCBpbmRleCBmb3Igd3JpdGluZyB0aGUgdmFsdWVzIGJ1ZmZlci4KLSAgICBkb3Vi
bGUgY3VycmVudFRpbWUgPSBzdGFydFRpbWU7CisgICAgZmxvYXQgY3VycmVudFRpbWUgPSBzdGFy
dFRpbWU7CiAgICAgdW5zaWduZWQgd3JpdGVJbmRleCA9IDA7CiAKICAgICAvLyBJZiBmaXJzdCBl
dmVudCBpcyBhZnRlciBzdGFydFRpbWUgdGhlbiBmaWxsIGluaXRpYWwgcGFydCBvZiB2YWx1ZXMg
YnVmZmVyIHdpdGggZGVmYXVsdFZhbHVlCkBAIC0yNDUsOCArMjQ2LDggQEAgZmxvYXQgQXVkaW9Q
YXJhbVRpbWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2VJbXBsKGZsb2F0IHN0YXJ0VGltZSwKICAg
ICAgICAgICAgICAgICAgICAgdmFsdWVzW3dyaXRlSW5kZXhdID0gdmFsdWU7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIEludGVycG9sYXRlIGluIGxvZyBzcGFjZS4K
LSAgICAgICAgICAgICAgICB2YWx1ZTEgPSBsb2cyKHZhbHVlMSk7Ci0gICAgICAgICAgICAgICAg
dmFsdWUyID0gbG9nMih2YWx1ZTIpOworICAgICAgICAgICAgICAgIHZhbHVlMSA9IGxvZzJmKHZh
bHVlMSk7CisgICAgICAgICAgICAgICAgdmFsdWUyID0gbG9nMmYodmFsdWUyKTsKIAogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBvcHRpbWl6ZSB0byBub3QgdXNlIHBvdygpIGluIGlubmVyIGxv
b3AsIHRoaXMgaXMganVzdCBhIHNpbXBsZSBleHBvbmVudGlhbCByYW1wLgogICAgICAgICAgICAg
ICAgIGZvciAoOyB3cml0ZUluZGV4IDwgZmlsbFRvRnJhbWU7ICsrd3JpdGVJbmRleCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1NvdXJjZU5vZGUuaAppbmRleCA2MDkxMzcxNmJhMGZk
Yzg4Y2VhZGEyYTczNTU1OTdiYjM0ZWE2ZTYwLi5hNmJkZDQyN2I5OTIyM2U3ODdjY2EzZmMwZWUy
NzdmMTYxNmQzODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Nv
dXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1NvdXJjZU5vZGUu
aApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291
cmNlTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewogcHVibGljOgotICAgIEF1ZGlvU291cmNlTm9k
ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIEF1ZGlvU291
cmNlTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgICAg
IDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgewogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKaW5kZXggY2VkMDdiOGJhZDUw
MTQ2OTU2MGY4MGQ3YjUxNzlhNmIwZDNhYjgyNC4uZjE2ZDhlNWY5NmQ3NTdiZjk1ZDU3MjQyYjZl
MmRiOTVjZTYxY2YwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFk
RmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVy
Tm9kZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CaXF1
YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91
YmxlIHNhbXBsZVJhdGUpCitCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlv
Q29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgLy8gSW5pdGlhbGx5IHNldHVw
IGFzIGxvd3Bhc3MgZmlsdGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVy
Tm9kZS5oCmluZGV4IGRmZTE3YjNhZDZhMjkxMjg3NWEzNTc5ZTY2ZTRjYmJkMTQzYzM3NzEuLjY4
M2IyYTM5ZDQ3NGY4M2VlY2Q2YjU2NTJjNDIxZWU2ODBiNTc3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgICAgICBBTExQQVNTID0gNwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXF1
YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxl
UmF0ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBCaXF1YWRGaWx0ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsg
ICAgICAKICAgICB9CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiBn
YWluKCkgeyByZXR1cm4gYmlxdWFkUHJvY2Vzc29yKCktPnBhcmFtZXRlcjMoKTsgfQogICAgIAog
cHJpdmF0ZToKLSAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1w
bGVSYXRlKTsKKyAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBs
ZVJhdGUpOwogCiAgICAgQmlxdWFkUHJvY2Vzc29yKiBiaXF1YWRQcm9jZXNzb3IoKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxCaXF1YWRQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCA1NDBlMWZhMTA5
NWQ3NmZjODlmYzUxOWQ1YWE1NTk0NGI5YjlhOGFkLi5jNzU1Mjc3NDg1YjY3OWRmM2U4OWYzYWYw
ZTMxNWQ4ZWY2MzkyYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1
YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nl
c3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAot
QmlxdWFkUHJvY2Vzc29yOjpCaXF1YWRQcm9jZXNzb3IoZG91YmxlIHNhbXBsZVJhdGUsIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQorQmlxdWFkUHJvY2Vzc29y
OjpCaXF1YWRQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCiAgICAgOiBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcihz
YW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV90eXBlKExvd1Bhc3MpCiAgICAg
LCBtX3BhcmFtZXRlcjEoMCkKQEAgLTUxLDcgKzUxLDcgQEAgQmlxdWFkUHJvY2Vzc29yOjpCaXF1
YWRQcm9jZXNzb3IoZG91YmxlIHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBi
b28KICAgICAgICAgaW5pdGlhbGl6ZSgpOwogfQogCi1CaXF1YWRQcm9jZXNzb3I6OkJpcXVhZFBy
b2Nlc3NvcihGaWx0ZXJUeXBlIHR5cGUsIGRvdWJsZSBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVy
T2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSkKK0JpcXVhZFByb2Nlc3Nvcjo6QmlxdWFk
UHJvY2Vzc29yKEZpbHRlclR5cGUgdHlwZSwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJl
ck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCiAgICAgOiBBdWRpb0RTUEtlcm5lbFBy
b2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV90eXBlKHR5cGUp
CiAgICAgLCBtX3BhcmFtZXRlcjEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0JpcXVhZFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmgKaW5kZXggM2M1MjE4NTJkMDMxNzg2YTJjNTZkZjY5ZDUwNjZhZjM4NWJhMzVhOC4u
ZTc0ODcyNjJhZGExMGVhYjU0OGI1OWEzNGE1YjgxMDIzNTMxNzVmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKQEAgLTQ5LDEwICs0OSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIEFsbHBhc3MgPSA3CiAgICAgfTsKIAotICAgIEJpcXVhZFByb2Nlc3Nvcihkb3Vi
bGUgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxp
emUpOworICAgIEJpcXVhZFByb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVy
T2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSk7CiAKICAgICAvLyBPbGQgY29uc3RydWN0
b3IgdXNlZCBieSBkZXByZWNhdGVkIExvd1Bhc3MyRmlsdGVyTm9kZSBhbmQgSGlnaFBhc3MyRmls
dGVyTm9kZQotICAgIEJpcXVhZFByb2Nlc3NvcihGaWx0ZXJUeXBlLCBkb3VibGUgc2FtcGxlUmF0
ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUgPSB0cnVlKTsK
KyAgICBCaXF1YWRQcm9jZXNzb3IoRmlsdGVyVHlwZSwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUgPSB0cnVlKTsKIAogICAgIHZp
cnR1YWwgfkJpcXVhZFByb2Nlc3NvcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcAppbmRleCAyOGQ1N2RiMzEwNDJiNzg5ZDNhZjRiZDQxYjc4YWY3Mzk4
MzM4MjhjLi4zMTU4MzU2MTk3MWE2OTliYjMwYzVhMjhjMWFmYzJhYWNiMWQ2M2Y0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApAQCAtNDUsNyArNDUsNyBAQCBj
b25zdCBzaXplX3QgTWF4RkZUU2l6ZSA9IDMyNzY4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3Vi
bGUgc2FtcGxlUmF0ZSkKK0NvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0
KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCiB7CiAgICAgYWRkSW5wdXQoYWRvcHRQdHIobmV3IEF1ZGlvTm9kZUlucHV0KHRo
aXMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKaW5kZXggN2I3MWJh
OTZkY2E1ZTA3NTA5ZmZhNjE5N2ZhOWUzZGU2MTZkZjkxNC4uZmIyOWQ1YzVkMjg3YjkwYmU0NTA2
Njc1ZjM1NWJmYmJiNzg0M2Q5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
Q29udm9sdmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0NvbnZvbHZlck5v
ZGUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBSZXZlcmI7CiAgICAgCiBjbGFzcyBDb252b2x2
ZXJOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNh
bXBsZVJhdGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ29udm9sdmVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAg
ICAgCiAgICAgfQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9CdWZmZXIqIGJ1
ZmZlcigpOwogCiBwcml2YXRlOgotICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0KiwgZG91
YmxlIHNhbXBsZVJhdGUpOworICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAKICAgICBPd25QdHI8UmV2ZXJiPiBtX3JldmVyYjsKICAgICBSZWZQdHI8
QXVkaW9CdWZmZXI+IG1fYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZjFhNzI2MzMzODkzYTM1
NjA5YWQ5Zjc0NDJkMTkyNzljZmM4YzMxZi4uZjdkYjM0ZTA1OGNhYmUxNjE2MDNjYWJhMDA5ZmQx
ZjE5ZDQ5ODExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlOjppbml0aWFsaXplKCkKICAgICBpZiAoaXNJbml0aWFsaXpl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkb3VibGUgaGFyZHdhcmVTYW1wbGVSYXRlID0g
QXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CisgICAgZmxvYXQgaGFyZHdh
cmVTYW1wbGVSYXRlID0gQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAj
aWZuZGVmIE5ERUJVRyAgICAKICAgICBmcHJpbnRmKHN0ZGVyciwgIj4+Pj4gaGFyZHdhcmVTYW1w
bGVSYXRlID0gJWZcbiIsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5k
ZXggZjFkNjg5ZGIwOWM5MzU5OGJiMzQ2MzU4NzJkMTczMTY4NmQ0OGMxMi4uNjMwYmRjMzM1MmQ3
NWE3MzQyODY5NzdkZmI5YTJiZTQ0ZjFlN2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgdmlydHVhbCB2
b2lkIHVuaW5pdGlhbGl6ZSgpOwogICAgIAotICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXN0aW5hdGlvbi0+c2FtcGxlUmF0ZSgpOyB9CisgICAgZmxvYXQgc2FtcGxl
UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb24tPnNhbXBsZVJhdGUoKTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAKaW5kZXggOGUwYjQwZWZjYmI3ZDFlMGYzOWY2NjAz
MjY2YmNjMjI0MjRkZDZiMi4uYWVkYTE4OWM1YTk1NTcxMDIzMTdiNDgwZjIwYWI5ODZjZTJmNGY4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcApAQCAtMzMs
OCArMzMsOCBAQAogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAKLWNvbnN0IGRvdWJsZSBEZWZh
dWx0TWF4RGVsYXlUaW1lID0gMS4wOwotY29uc3QgZG91YmxlIFNtb290aGluZ1RpbWVDb25zdGFu
dCA9IDAuMDIwOyAvLyAyMG1zCitjb25zdCBmbG9hdCBEZWZhdWx0TWF4RGVsYXlUaW1lID0gMTsK
K2NvbnN0IGZsb2F0IFNtb290aGluZ1RpbWVDb25zdGFudCA9IDAuMDIwZjsgLy8gMjBtcwogICAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTQsNyArNTQsNyBAQCBEZWxheURTUEtlcm5lbDo6
RGVsYXlEU1BLZXJuZWwoRGVsYXlQcm9jZXNzb3IqIHByb2Nlc3NvcikKICAgICBtX3Ntb290aGlu
Z1JhdGUgPSBBdWRpb1V0aWxpdGllczo6ZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRl
KFNtb290aGluZ1RpbWVDb25zdGFudCwgcHJvY2Vzc29yLT5zYW1wbGVSYXRlKCkpOwogfQogCi1E
ZWxheURTUEtlcm5lbDo6RGVsYXlEU1BLZXJuZWwoZG91YmxlIG1heERlbGF5VGltZSwgZG91Ymxl
IHNhbXBsZVJhdGUpCitEZWxheURTUEtlcm5lbDo6RGVsYXlEU1BLZXJuZWwoZG91YmxlIG1heERl
bGF5VGltZSwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvRFNQS2VybmVsKHNhbXBsZVJh
dGUpCiAgICAgLCBtX21heERlbGF5VGltZShtYXhEZWxheVRpbWUpCiAgICAgLCBtX3dyaXRlSW5k
ZXgoMCkKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBEZWxheURTUEtlcm5lbDo6cHJvY2Vzcyhjb25z
dCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBmcmEKICAgICBpZiAo
IXNvdXJjZSB8fCAhZGVzdGluYXRpb24pCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAg
ZG91YmxlIHNhbXBsZVJhdGUgPSB0aGlzLT5zYW1wbGVSYXRlKCk7CisgICAgZmxvYXQgc2FtcGxl
UmF0ZSA9IHRoaXMtPnNhbXBsZVJhdGUoKTsKICAgICBkb3VibGUgZGVsYXlUaW1lID0gZGVsYXlQ
cm9jZXNzb3IoKSA/IGRlbGF5UHJvY2Vzc29yKCktPmRlbGF5VGltZSgpLT52YWx1ZSgpIDogbV9k
ZXNpcmVkRGVsYXlGcmFtZXMgLyBzYW1wbGVSYXRlOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBk
ZWxheSB0aW1lIGlzIGluIGEgdmFsaWQgcmFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVs
YXlEU1BLZXJuZWwuaAppbmRleCAyYWUzNmNiODY0N2UwNjAwNmNlNTI1NGRiNDViMWQ3YzMwZTFl
ODI2Li43OWEzOTU2OGI3ODhmMTcxZjEyZjY3ZjBiZmFkNzNhZmQxNmU4OGI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3Mg
RGVsYXlQcm9jZXNzb3I7CiBjbGFzcyBEZWxheURTUEtlcm5lbCA6IHB1YmxpYyBBdWRpb0RTUEtl
cm5lbCB7CiBwdWJsaWM6ICAKICAgICBEZWxheURTUEtlcm5lbChEZWxheVByb2Nlc3NvciopOwot
ICAgIERlbGF5RFNQS2VybmVsKGRvdWJsZSBtYXhEZWxheVRpbWUsIGRvdWJsZSBzYW1wbGVSYXRl
KTsKKyAgICBEZWxheURTUEtlcm5lbChkb3VibGUgbWF4RGVsYXlUaW1lLCBmbG9hdCBzYW1wbGVS
YXRlKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNl
LCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIHZpcnR1
YWwgdm9pZCByZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXgg
YjU3OGQ2MDQ4MGNlYzE4NjNhNjJjZjY3ZjI3Y2JlZThkYzdmNTEwMi4uMmE1MjVkZDFhNmMxOGI5
ZGQ1YzQ0YTdlMzQ0YjcwZTliMTQ5ZjkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5v
ZGUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGVsYXlO
b2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0ZSkK
K0RlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CiB7CiAgICAgbV9wcm9jZXNzb3IgPSBhZG9wdFB0cihuZXcgRGVsYXlQcm9jZXNzb3Ioc2FtcGxl
UmF0ZSwgMSkpOyAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5kZXggOTNhZDIy
NzlkMzE2NWQ2MWY3Y2MwMzBkYjNmZTllZDM3MjUwZTA5ZS4uM2Q1OGE4OTEzN2EzNmEzY2Q1ZGY4
Y2U5YWU4NTUyYjM3MjhlMjZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
RGVsYXlOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmgKQEAg
LTM1LDcgKzM1LDcgQEAgY2xhc3MgQXVkaW9QYXJhbTsKIAogY2xhc3MgRGVsYXlOb2RlIDogcHVi
bGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxEZWxheU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1w
bGVSYXRlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlbGF5Tm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRGVsYXlOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKICAgICB9
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiBkZWxheVRpbWUoKTsK
IAogcHJpdmF0ZToKLSAgICBEZWxheU5vZGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJh
dGUpOworICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIERlbGF5UHJvY2Vzc29yKiBkZWxheVByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PERlbGF5UHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCmluZGV4IDVmZGM4ZGZjMmExYTU2MmY1OTY0NWVkNzlj
OGZjNWZhZmVhMmNkZTQuLjhlZDNlNDMzN2UwOWYxMzAxN2ZjNmYzZjdlZjJmYmRjOGYyMzI2Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6RGVsYXlQ
cm9jZXNzb3IoZG91YmxlIHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCitE
ZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscykKICAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJh
dGUsIG51bWJlck9mQ2hhbm5lbHMpCiB7CiAgICAgbV9kZWxheVRpbWUgPSBBdWRpb1BhcmFtOjpj
cmVhdGUoImRlbGF5VGltZSIsIDAuMCwgMC4wLCAxLjApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0RlbGF5UHJvY2Vzc29yLmgKaW5kZXggNDg0NGM0YjI2ODFhZjgyOTg3OGRlOWU5ZjMxZThhYjFh
MmVmODRkZC4uMTU0MjhjZTc1OTY4NWZiZjI4Yjg1YTA2MGQwY2VhMGIzYjMzMzRlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCkBAIC0zNyw3ICszNyw3IEBAIGNs
YXNzIEF1ZGlvRFNQS2VybmVsOwogICAgIAogY2xhc3MgRGVsYXlQcm9jZXNzb3IgOiBwdWJsaWMg
QXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogcHVibGljOgotICAgIERlbGF5UHJvY2Vzc29yKGRv
dWJsZSBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBEZWxheVBy
b2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKICAg
ICB2aXJ0dWFsIH5EZWxheVByb2Nlc3NvcigpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc093blB0
cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmluZGV4IDZmZWIyOTYwOTE4Njg5
YTY4YjcwM2YwODUyMzI3ZjRiMTQ1YjZkMmYuLmVhOGI1ODkyMjM1NmFhMTM2NTEzMmFlZjMxZmFh
ZjYwM2Y3NDU0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRp
b0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorRHluYW1pY3NDb21wcmVzc29y
Tm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAg
ICBhZGRJbnB1dChhZG9wdFB0cihuZXcgQXVkaW9Ob2RlSW5wdXQodGhpcykpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAppbmRleCA3YWU3
NWVhZDAyYjQ5NWQ3NmM0NjZhYWRhOTY0YjAwZGI2ZGI0YmEwLi5kNzE4YWIzNDFjYzAxZTE4OGNm
MjEzMDU2NzQ2NWYwNDhiZGEwNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yTm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIER5bmFtaWNz
Q29tcHJlc3NvcjsKICAgICAKIGNsYXNzIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgOiBwdWJsaWMg
QXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUgc2FtcGxlUmF0
ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBEeW5hbWljc0NvbXByZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsgICAgICAKICAgICB9CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgdW5pbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAgRHluYW1pY3NDb21wcmVz
c29yTm9kZShBdWRpb0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgRHluYW1pY3ND
b21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIE93
blB0cjxEeW5hbWljc0NvbXByZXNzb3I+IG1fZHluYW1pY3NDb21wcmVzc29yOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5jcHAKaW5kZXggMjc5
NDZkZDk5ZmEzNDA5ZmNiYjVhNmRmNjYwODhmZGViYTUzNjYzOC4uNTIwNzg1ZjgwNjhmZDUyNWVj
MmJiNWEyMmE3YjhmMDA4ZDFhZTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
SGlnaFBhc3MyRmlsdGVyTm9kZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1IaWdoUGFzczJGaWx0ZXJOb2RlOjpIaWdoUGFzczJGaWx0ZXJOb2RlKEF1ZGlv
Q29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCitIaWdoUGFzczJGaWx0ZXJOb2Rl
OjpIaWdoUGFzczJGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CiB7CiAgICAgbV9wcm9jZXNzb3IgPSBhZG9wdFB0cihuZXcgQmlxdWFkUHJvY2Vzc29yKEJpcXVh
ZFByb2Nlc3Nvcjo6SGlnaFBhc3MsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9IaWdoUGFzczJGaWx0ZXJOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9IaWdoUGFzczJGaWx0ZXJOb2RlLmgKaW5kZXggYmUwYmViNmMyMzZk
MmMyZmRhYzViZDBhYjNhYTMwOTQ5YmI3ZmUxYS4uYmZkNzZhMGQ1ODRjMWE4ODVlYjlkMzUwOTky
OTk4ZmZlZTNjNWE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSGlnaFBh
c3MyRmlsdGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0hpZ2hQYXNzMkZp
bHRlck5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBBdWRpb1BhcmFtOwogICAgIAogY2xh
c3MgSGlnaFBhc3MyRmlsdGVyTm9kZSA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SGlnaFBhc3MyRmlsdGVyTm9kZT4gY3Jl
YXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZG91YmxlIHNhbXBsZVJhdGUpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SGlnaFBhc3MyRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSGlnaFBhc3MyRmlsdGVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCiAgICAg
fQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSogcmVzb25hbmNlKCkg
eyByZXR1cm4gYmlxdWFkUHJvY2Vzc29yKCktPnBhcmFtZXRlcjIoKTsgfQogICAgIAogcHJpdmF0
ZToKLSAgICBIaWdoUGFzczJGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCosIGRvdWJsZSBzYW1wbGVS
YXRlKTsKKyAgICBIaWdoUGFzczJGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBs
ZVJhdGUpOwogCiAgICAgQmlxdWFkUHJvY2Vzc29yKiBiaXF1YWRQcm9jZXNzb3IoKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxCaXF1YWRQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCmluZGV4IDQ4
NzI5OWI0NjAyZDdiYzZhZTFkZGM2MmU0YjM1MjVmMTMzYTY1ZTcuLjA1ZTIxYjdhMzEwYTE1OGEx
ODQ0OGE5NTVhMDMyOGEzNzE1NjI3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjb25zdCBzaXplX3QgRGVmYXVsdEJ1ZmZlclNpemUgPSA0MDk2OwogCi1QYXNz
UmVmUHRyPEphdmFTY3JpcHRBdWRpb05vZGU+IEphdmFTY3JpcHRBdWRpb05vZGU6OmNyZWF0ZShB
dWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6
ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKK1Bh
c3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gSmF2YVNjcmlwdEF1ZGlvTm9kZTo6Y3JlYXRl
KEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNp
emUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKYXZhU2NyaXB0QXVkaW9Ob2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRzLCBudW1iZXJPZk91dHB1dHMpKTsK
IH0KIAotSmF2YVNjcmlwdEF1ZGlvTm9kZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZShBdWRpb0NvbnRl
eHQqIGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWdu
ZWQgbnVtYmVyT2ZJbnB1dHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKK0phdmFTY3JpcHRB
dWRpb05vZGU6OkphdmFTY3JpcHRBdWRpb05vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMs
IHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogICAgICwgbV9kb3VibGVCdWZmZXJJbmRleCgwKQogICAgICwgbV9kb3VibGVCdWZm
ZXJJbmRleEZvckV2ZW50KDApCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgSmF2YVNjcmlwdEF1ZGlv
Tm9kZTo6aW5pdGlhbGl6ZSgpCiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZG91YmxlIHNhbXBsZVJhdGUgPSBjb250ZXh0KCktPnNhbXBsZVJhdGUoKTsK
KyAgICBmbG9hdCBzYW1wbGVSYXRlID0gY29udGV4dCgpLT5zYW1wbGVSYXRlKCk7CiAKICAgICAv
LyBDcmVhdGUgZG91YmxlIGJ1ZmZlcnMgb24gYm90aCB0aGUgaW5wdXQgYW5kIG91dHB1dCBzaWRl
cy4KICAgICAvLyBUaGVzZSBBdWRpb0J1ZmZlcnMgd2lsbCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBp
biB0aGUgbWFpbiB0aHJlYWQgYnkgSmF2YVNjcmlwdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaAppbmRleCBlOTlhMjVkMDA2NDhjNjI3M2U2ZGMyYWFh
NWRmZTM2OTc2YmRlNzMxLi41YTI5OWM0OTBjZmYzNTc1N2U1NDFkN2ZiNjA1YzFkYjY1ODQyNWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oCkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBm
cmVxdWVudGx5IHRoZSBvbmF1ZGlvcHJvY2VzcyBldmVudCBoYW5kbGVyIGlzIGNhbGxlZCBhbmQg
aG93IG1hbnkgc2FtcGxlLWZyYW1lcyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwuCiAg
ICAgLy8gTG93ZXIgbnVtYmVycyBmb3IgYnVmZmVyU2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxvd2Vy
IChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hlciBudW1iZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2
b2lkIGF1ZGlvIGJyZWFrdXAgYW5kIGdsaXRjaGVzLgogICAgIC8vIFRoZSB2YWx1ZSBjaG9zZW4g
bXVzdCBjYXJlZnVsbHkgYmFsYW5jZSBiZXR3ZWVuIGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxpdHku
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SmF2YVNjcmlwdEF1ZGlvTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dCosIGRvdWJsZSBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dHMgPSAxLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMgPSAxKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxKYXZhU2NyaXB0QXVkaW9Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0
KiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9m
SW5wdXRzID0gMSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzID0gMSk7CiAKICAgICB2aXJ0dWFs
IH5KYXZhU2NyaXB0QXVkaW9Ob2RlKCk7CiAKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAg
IHVzaW5nIEF1ZGlvTm9kZTo6ZGVyZWY7CiAgICAgCiBwcml2YXRlOgotICAgIEphdmFTY3JpcHRB
dWRpb05vZGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJT
aXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsK
KyAgICBKYXZhU2NyaXB0QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUs
IHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cywgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRzKTsKIAogICAgIHN0YXRpYyB2b2lkIGZpcmVQcm9jZXNzRXZlbnREaXNwYXRj
aCh2b2lkKiB1c2VyRGF0YSk7CiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Mb3dQYXNzMkZpbHRlck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vTG93UGFzczJGaWx0ZXJOb2RlLmNwcAppbmRleCBhYzJkZTFm
ZjI0ZTYwM2JiOWY4NmUzY2JlYzU1MDI4OTdkNzU2ZjliLi5lMmQ2NjlhY2QxOWVlMjk0ZDQwNGY2
ODc3NjAzNGIwM2I5OWMyNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9M
b3dQYXNzMkZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0xvd1Bh
c3MyRmlsdGVyTm9kZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1Mb3dQYXNzMkZpbHRlck5vZGU6Okxvd1Bhc3MyRmlsdGVyTm9kZShBdWRpb0NvbnRleHQq
IGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorTG93UGFzczJGaWx0ZXJOb2RlOjpMb3dQYXNz
MkZpbHRlck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAg
IDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBt
X3Byb2Nlc3NvciA9IGFkb3B0UHRyKG5ldyBCaXF1YWRQcm9jZXNzb3IoQmlxdWFkUHJvY2Vzc29y
OjpMb3dQYXNzLCBzYW1wbGVSYXRlLCAxLCBmYWxzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vTG93UGFzczJGaWx0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9Mb3dQYXNzMkZpbHRlck5vZGUuaAppbmRleCA0M2Q3MDUxM2QyN2RjMzBlOTQxODQ3YzE5
YjNmMGQyODAwMmQ2NTIzLi4zMzQyYzZmOTY0MzM0MjBmNDNjNmUxYTg4NjkwNzNmODBhNjJkZTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Mb3dQYXNzMkZpbHRlck5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Mb3dQYXNzMkZpbHRlck5vZGUuaApAQCAt
MzQsNyArMzQsNyBAQCBjbGFzcyBBdWRpb1BhcmFtOwogICAgIAogY2xhc3MgTG93UGFzczJGaWx0
ZXJOb2RlIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxMb3dQYXNzMkZpbHRlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQq
IGNvbnRleHQsIGRvdWJsZSBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvd1Bh
c3MyRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG93UGFzczJGaWx0ZXJO
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsgICAgICAKICAgICB9CkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiByZXNvbmFuY2UoKSB7IHJldHVybiBiaXF1YWRQcm9j
ZXNzb3IoKS0+cGFyYW1ldGVyMigpOyB9CiAgICAgCiBwcml2YXRlOgotICAgIExvd1Bhc3MyRmls
dGVyTm9kZShBdWRpb0NvbnRleHQqLCBkb3VibGUgc2FtcGxlUmF0ZSk7CisgICAgTG93UGFzczJG
aWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgQmlxdWFk
UHJvY2Vzc29yKiBiaXF1YWRQcm9jZXNzb3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXF1YWRQ
cm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDcxNGMxMjA1MTll
MTkyODlkNjQwYjNiYmNjYmFkODUwNTdmZTU1NTcuLmM0ZDU2N2E1ZDI5ZGM1YTkwODRhNTUwN2My
NzczOWVhZTVjNWVjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxp
emUoKTsKICAgICAKLSAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVu
ZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJUYXJnZXQtPnNhbXBsZVJhdGUoKTsgfQogCiAgICAgdm9pZCBzdGFy
dFJlbmRlcmluZygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRp
bWVBbmFseXNlck5vZGUuY3BwCmluZGV4IDQ0OWM4NGFmZWY5NzFhMDVjYjIzNzJjY2YzMWM3YzNj
MWE0MjIxZjAuLjhkNzRhNjdhODBhNzI3NjdkNzhhMDZlZGQ4NmZhNzI3YjYzZGQ3ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWFsdGltZUFuYWx5c2Vy
Tm9kZTo6UmVhbHRpbWVBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBkb3VibGUg
c2FtcGxlUmF0ZSkKK1JlYWx0aW1lQW5hbHlzZXJOb2RlOjpSZWFsdGltZUFuYWx5c2VyTm9kZShB
dWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBhZGRJbnB1dChhZG9wdFB0cihuZXcgQXVkaW9O
b2RlSW5wdXQodGhpcykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1Jl
YWx0aW1lQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFu
YWx5c2VyTm9kZS5oCmluZGV4IGQwMGE1YjZmMDBhNmJhMjMxMWZjYTVkYmM4YWE5NTlhOGI3NmQw
YTIuLjZjN2FkZDk1OTI0OGJkNzE2OWUwMGJlMzJjYTdlYjI4M2YxYWQ5OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuaApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlYWx0aW1lQW5hbHlzZXJOb2RlIDog
cHVibGljIEF1ZGlvTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhbHRp
bWVBbmFseXNlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzYW1w
bGVSYXRlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWx0aW1lQW5hbHlzZXJOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFsdGltZUFuYWx5c2VyTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKSk7ICAgICAgCiAgICAgfQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5n
ZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVhbHRpbWVB
bmFseXNlck5vZGUoQXVkaW9Db250ZXh0KiwgZG91YmxlIHNhbXBsZVJhdGUpOworICAgIFJlYWx0
aW1lQW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAg
UmVhbHRpbWVBbmFseXNlciBtX2FuYWx5c2VyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNDE2YjcyMjM0ZWFhNTRkYzc3ZGFh
YjY3MmUyZTgyYmNiMzY2M2I4OS4uNWYzY2YzNDc2MjMwZWMwNDJiOTE1M2MxZTMzOGM1NzU3YTFi
YTgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtl
cm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5l
bC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNz
KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV8KICAgICAgICAg
Y29uc3QgZmxvYXQgaW5wdXQgPSBzb3VyY2VbaV07CiAKICAgICAgICAgLy8gQ2FsY3VsYXRlIGFu
IGluZGV4IGJhc2VkIG9uIGlucHV0IC0xIC0+ICsxIHdpdGggMCBiZWluZyBhdCB0aGUgY2VudGVy
IG9mIHRoZSBjdXJ2ZSBkYXRhLgotICAgICAgICBpbnQgaW5kZXggPSBjdXJ2ZUxlbmd0aCAqIDAu
NSAqIChpbnB1dCArIDEpOworICAgICAgICBpbnQgaW5kZXggPSAoY3VydmVMZW5ndGggKiAoaW5w
dXQgKyAxKSkgLyAyOwogCiAgICAgICAgIC8vIENsaXAgaW5kZXggdG8gdGhlIGlucHV0IHJhbmdl
IG9mIHRoZSBjdXJ2ZS4KICAgICAgICAgLy8gVGhpcyB0YWtlcyBjYXJlIG9mIGlucHV0IG91dHNp
ZGUgb2Ygbm9taW5hbCByYW5nZSAtMSAtPiArMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCBhYmQ1MjJjYTc5ZGRjODRiM2E0OTY0NDM5
ZTlhMTQwNmU3MDRiY2VhLi5mNzU3MWRlYmI3MTJjOTU0ZDJhZjlhNDhmNjY0MWE4MjM3NjYwZDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNw
cApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1XYXZlU2hh
cGVyUHJvY2Vzc29yOjpXYXZlU2hhcGVyUHJvY2Vzc29yKGRvdWJsZSBzYW1wbGVSYXRlLCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscykKK1dhdmVTaGFwZXJQcm9jZXNzb3I6OldhdmVTaGFwZXJQcm9j
ZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBB
dWRpb0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nv
ci5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCmluZGV4
IDg2YTE4OGQzM2M1OTVhYmU0MzViYTIwZDIwNjZjODZiODJiZjRiZDMuLmViNjcyNjA2ZTQxM2E2
MmE0ZTI1MWQ2ZjQ1MDQzNWZjNGM2ZDEzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXYXZlU2hhcGVyUHJvY2Vzc29yIDogcHVibGljIEF1ZGlvRFNQS2VybmVs
UHJvY2Vzc29yIHsKIHB1YmxpYzoKLSAgICBXYXZlU2hhcGVyUHJvY2Vzc29yKGRvdWJsZSBzYW1w
bGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgV2F2ZVNoYXBlclByb2Nlc3Nv
cihmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0
dWFsIH5XYXZlU2hhcGVyUHJvY2Vzc29yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggNzI2MmVhYWYyMTMxM2M2MjIyNzA2NjU5M2RhMjFlODgxOTExYjAwZi4uYmVkNWI0YjZlNDJj
YWM5ZjM4OTUwNjEzZmI3NzVjMDI2ODZmMGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMC0wNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBXRUJfQVVESU8gZG9lcyBub3QgY29tcGlsZSBvbiBMZW9wYXJkIDMy
LWJpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5
MjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGxh
dGZvcm0taW5kZXBlbmRlbnQgcG9ydGlvbnMgb2YgV0VCX0FVRElPIGhhdmUgY2hhbmdlZCBmcm9t
IGRvdWJsZSAtPiBmbG9hdCwgYW5kIAorICAgICAgICBwbGF0Zm9ybS1zcGVjaWZpYyBzdWJjbGFz
c2VzIG11c3QgY2hhbmdlIGFzIHdlbGwuCisKKyAgICAgICAgKiBzcmMvQXVkaW9EZXN0aW5hdGlv
bkNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkF1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUpOgorICAgICAgICAqIHNyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21p
dW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6c2FtcGxl
UmF0ZSk6CisKIDIwMTEtMTAtMDUgIEFubmEgQ2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIEZ1bmN0aW9ucyB0byBtYWtlIDx0cmFjaz4gZW5hYmxlZCBhdCBydW50aW1l
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5hdGlv
bkNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRp
b25DaHJvbWl1bS5jcHAKaW5kZXggMmJlMWZmNWRlMjI5OGU3YTc2YmQzN2RmYjYwYWZjNDk2MmQ1
MzBhNy4uOTQ5OWExY2U3YzM0NDBhN2QwMWM4NDBiMmMxNzgyNWE3NWIxMWEwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21p
dW0uY3BwCkBAIC01MCwxMiArNTAsMTIgQEAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWxsYmFja0J1
ZmZlclNpemUgPSAxNjM4NDsKIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMgPSAyOwog
CiAvLyBGYWN0b3J5IG1ldGhvZDogQ2hyb21pdW0taW1wbGVtZW50YXRpb24KLVBhc3NPd25QdHI8
QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvU291cmNlUHJv
dmlkZXImIHByb3ZpZGVyLCBkb3VibGUgc2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9EZXN0
aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvU291cmNlUHJvdmlkZXImIHBy
b3ZpZGVyLCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXVk
aW9EZXN0aW5hdGlvbkNocm9taXVtKHByb3ZpZGVyLCBzYW1wbGVSYXRlKSk7CiB9CiAKLUF1ZGlv
RGVzdGluYXRpb25DaHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvU291cmNl
UHJvdmlkZXImIHByb3ZpZGVyLCBkb3VibGUgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25D
aHJvbWl1bTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvU291cmNlUHJvdmlkZXImIHBy
b3ZpZGVyLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKICAg
ICAsIG1fcmVuZGVyQnVzKG51bWJlck9mQ2hhbm5lbHMsIHJlbmRlckJ1ZmZlclNpemUsIGZhbHNl
KQogICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCkBAIC0xMDEsOSArMTAxLDkgQEAgdm9p
ZCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OnN0b3AoKQogICAgIH0KIH0KIAotZG91YmxlIEF1
ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCitmbG9hdCBBdWRpb0Rlc3RpbmF0
aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQogewotICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1
cHBvcnQoKS0+YXVkaW9IYXJkd2FyZVNhbXBsZVJhdGUoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5hdWRpb0hhcmR3YXJlU2FtcGxlUmF0
ZSgpKTsKIH0KIAogLy8gUHVsbHMgb24gb3VyIHByb3ZpZGVyIHRvIGdldCB0aGUgcmVuZGVyZWQg
YXVkaW8gc3RyZWFtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVk
aW9EZXN0aW5hdGlvbkNocm9taXVtLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRp
b0Rlc3RpbmF0aW9uQ2hyb21pdW0uaAppbmRleCBlY2ZjNGIwN2Q0YjRlYzI0MThkYWYxNDI4NDEw
NmY3YjZmMjZmZDc2Li4xM2EzZjUyZmQ4M2Y3ZDcyYmMwZjBhNGJjZmZkM2IwM2EwZGExN2FkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9u
Q2hyb21pdW0uaApAQCAtNDIsMTQgKzQyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1
YmxpYyBXZWJLaXQ6OldlYkF1ZGlvRGV2aWNlOjpSZW5kZXJDYWxsYmFjayB7CiBwdWJsaWM6Ci0g
ICAgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvU291cmNlUHJvdmlkZXImLCBkb3VibGUg
c2FtcGxlUmF0ZSk7CisgICAgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtKEF1ZGlvU291cmNlUHJv
dmlkZXImLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9u
Q2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCk7CiAgICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2lzUGxheWluZzsgfQog
Ci0gICAgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0K
KyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAK
ICAgICAvLyBXZWJLaXQ6OldlYkF1ZGlvRGV2aWNlOjpSZW5kZXJDYWxsYmFjawogICAgIHZpcnR1
YWwgdm9pZCByZW5kZXIoY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8ZmxvYXQqPiYgYXVkaW9EYXRh
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOwpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7CiAgICAgQXVkaW9CdXMg
bV9yZW5kZXJCdXM7Ci0gICAgZG91YmxlIG1fc2FtcGxlUmF0ZTsKKyAgICBmbG9hdCBtX3NhbXBs
ZVJhdGU7CiAgICAgYm9vbCBtX2lzUGxheWluZzsKICAgICBPd25QdHI8V2ViS2l0OjpXZWJBdWRp
b0RldmljZT4gbV9hdWRpb0RldmljZTsKICAgICBzaXplX3QgbV9jYWxsYmFja0J1ZmZlclNpemU7
Cg==
</data>
<flag name="review"
          id="107169"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>