<?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>226688</bug_id>
          
          <creation_ts>2021-06-05 16:08:24 -0700</creation_ts>
          <short_desc>Use `const uint8_t*` type more consistently to store bytes in WebKit</short_desc>
          <delta_ts>2021-06-05 22:26:18 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767158</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-05 16:08:24 -0700</bug_when>
    <thetext>Use `const uint8_t*` type more consistently to store bytes in WebKit (instead of `unsigned char*`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767159</commentid>
    <comment_count>1</comment_count>
      <attachid>430661</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-05 16:09:48 -0700</bug_when>
    <thetext>Created attachment 430661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767160</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-06-05 16:10:41 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767161</commentid>
    <comment_count>3</comment_count>
      <attachid>430662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-05 16:31:24 -0700</bug_when>
    <thetext>Created attachment 430662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767163</commentid>
    <comment_count>4</comment_count>
      <attachid>430663</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-05 16:35:52 -0700</bug_when>
    <thetext>Created attachment 430663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767164</commentid>
    <comment_count>5</comment_count>
      <attachid>430664</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-05 16:43:22 -0700</bug_when>
    <thetext>Created attachment 430664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767171</commentid>
    <comment_count>6</comment_count>
      <attachid>430666</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-05 17:31:07 -0700</bug_when>
    <thetext>Created attachment 430666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767172</commentid>
    <comment_count>7</comment_count>
      <attachid>430667</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-05 17:42:18 -0700</bug_when>
    <thetext>Created attachment 430667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767185</commentid>
    <comment_count>8</comment_count>
      <attachid>430671</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-05 20:32:32 -0700</bug_when>
    <thetext>Created attachment 430671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767187</commentid>
    <comment_count>9</comment_count>
      <attachid>430671</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-05 21:01:42 -0700</bug_when>
    <thetext>Comment on attachment 430671
Patch

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

Looks great as is. Some suggestions for making it even better follow.

Side note: If we do decide to move to std::byte for some or all of this at some point, reducing the casts to a minimum as you are doing here and using auto instead of repeating types, as I suggest in various places below, can make such a transition even easier. Note that if we ever *do* switch to std::byte, reading from such things will be done with std::to_integer&lt;uint8_t&gt;, not reinterpret_cast, so I think it will be a not-super-hard job on top of this one. std::byte is quite close to a subset of uint8_t in semantics.

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:661
&gt; +            auto highByte = frame.payload[0];
&gt; +            auto lowByte = frame.payload[1];
&gt;              m_closeEventCode = highByte &lt;&lt; 8 | lowByte;

With the types handled correctly don’t need the local variables any more, so this might be good as a one-liner.

&gt; Source/WebCore/Modules/websockets/WebSocketDeflater.cpp:174
&gt; +    static const uint8_t strippedFields[] = &quot;\0\0\xff\xff&quot;;
&gt;      static const size_t strippedLength = 4;

When touching code like this it’s nice to make it use constexpr instead of const. Also not sure string syntax is better here than array syntax. I would use something like this:

    constexpr uint8_t strippedFields[] = { 0, 0, 0xFF, 0xFF };
    constexpr auto strippedLength = std::size(strippedFields);

&gt; Source/WebCore/Modules/websockets/WebSocketFrame.cpp:42
&gt; -const unsigned char finalBit = 0x80;
&gt; -const unsigned char compressBit = 0x40;
&gt; -const unsigned char reserved2Bit = 0x20;
&gt; -const unsigned char reserved3Bit = 0x10;
&gt; -const unsigned char opCodeMask = 0xF;
&gt; -const unsigned char maskBit = 0x80;
&gt; -const unsigned char payloadLengthMask = 0x7F;
&gt; +const uint8_t finalBit = 0x80;
&gt; +const uint8_t compressBit = 0x40;
&gt; +const uint8_t reserved2Bit = 0x20;
&gt; +const uint8_t reserved3Bit = 0x10;
&gt; +const uint8_t opCodeMask = 0xF;
&gt; +const uint8_t maskBit = 0x80;
&gt; +const uint8_t payloadLengthMask = 0x7F;
&gt;  const size_t maxPayloadLengthWithoutExtendedLengthField = 125;
&gt;  const size_t payloadLengthWithTwoByteExtendedLengthField = 126;
&gt;  const size_t payloadLengthWithEightByteExtendedLengthField = 127;

Same constexpr thought.

&gt; Source/WebCore/Modules/websockets/WebSocketFrame.cpp:52
&gt; +    uint8_t* p = data;

I’d use more auto in this function rather than writing uint8_t so many times.

&gt; Source/WebCore/Modules/websockets/WebSocketHandshake.cpp:253
&gt; +    const uint8_t* p = readHTTPHeaders(header + lineLength, header + len);

auto

&gt; Source/WebCore/Modules/websockets/WebSocketHandshake.cpp:400
&gt; +    const uint8_t* end = p + 1;

auto

&gt; Source/WebCore/Modules/websockets/WebSocketHandshake.cpp:446
&gt; +    const uint8_t* p = start;

auto

&gt; Source/WebCore/contentextensions/SerializedNFA.cpp:39
&gt; +    const uint8_t* bytes = reinterpret_cast&lt;const uint8_t*&gt;(container.data());

auto

&gt; Source/WebCore/contentextensions/SerializedNFA.cpp:41
&gt; +    const uint8_t* end = bytes + bytesLength;

auto

&gt; Source/WebCore/html/track/WebVTTParser.cpp:228
&gt; +    const uint8_t endLines[] = &quot;\n\n&quot;;

constexpr

&gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:107
&gt; +    const uint8_t* data = static_cast&lt;const uint8_t*&gt;(srcData);

auto

&gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:118
&gt; +        uint8_t* dst = temporaryData.data();

auto

&gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:121
&gt; +        const uint8_t* bits = static_cast&lt;const uint8_t*&gt;(srcData);
&gt; +        const uint8_t* src = bits + sourceOffset.y() * bytesPerLine + sourceOffset.x() * bytesPerPixel;

auto

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:668
&gt; +    const uint8_t* p = start;
&gt; +    const uint8_t* end = start + length;

auto

&gt; Source/WebKitLegacy/win/WebDownloadCFNet.cpp:170
&gt; +    RetainPtr&lt;CFDataRef&gt; resumeData = adoptCF(CFDataCreate(0, buffer.data(), buffer.size()));

auto

&gt; Tools/DumpRenderTree/TestRunner.cpp:315
&gt; +    const uint8_t* buffer = static_cast&lt;const uint8_t*&gt;(bufferView-&gt;baseAddress());

auto

&gt; Tools/DumpRenderTree/TestRunner.cpp:316
&gt; +    std::vector&lt;uint8_t&gt; audioData(buffer, buffer + bufferView-&gt;byteLength());

Can probably just use std::vector, and rely on deduction to supply &lt;uint8_t&gt;.

&gt; Tools/DumpRenderTree/TestRunner.cpp:2371
&gt; +    const uint8_t* buffer = static_cast&lt;const uint8_t*&gt;(bufferView-&gt;baseAddress());
&gt; +    std::vector&lt;uint8_t&gt; mediaIconData(buffer, buffer + bufferView-&gt;byteLength());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767188</commentid>
    <comment_count>10</comment_count>
      <attachid>430673</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-05 21:12:15 -0700</bug_when>
    <thetext>Created attachment 430673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767192</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-05 22:25:50 -0700</bug_when>
    <thetext>Committed r278532 (238530@main): &lt;https://commits.webkit.org/238530@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430673.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767193</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-05 22:26:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/78915526&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430661</attachid>
            <date>2021-06-05 16:09:48 -0700</date>
            <delta_ts>2021-06-05 16:34:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226688-20210605160947.patch</filename>
            <type>text/plain</type>
            <size>107330</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjViYzlhNjk5MTRjZTRh
Y2JjNmIwZDQ2NzdjNzVjMjYwNzY4OGMwYS4uODk5YTAxY2IwMjlmMjJiYjczMzc4YzUyN2RlZGM3
YjJmNjcxNDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wNi0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhf
dCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkgdG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNo
YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFN0cmVhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6
OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6
cGFyc2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRGcmFtZVBheWxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6OldlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaW1JbnB1
dFNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2
ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFk
U3RhdHVzTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRI
VFRQSGVhZGVycyk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9TZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
Ojp3cml0ZUFsbFRvRmlsZSk6CisgICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogY3J5
cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRNYXN0ZXJLZXkpOgorICAgICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZEJ5dGVzKToKKyAgICAgICAgKiBkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGRvbS9SYXdEYXRhRG9jdW1l
bnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAqIGh0
bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFj
ay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6ZmlsZUZpbmlzaGVkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1
bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltSW5wdXRTYW1wbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VIVFRQSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJl
cXVlc3RCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpkYXRhQ2hhbmdlZCk6CisKIDIwMjEtMDYtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBJbmxpbmVUZXh0Qm94IHRvIExlZ2FjeUlubGluZVRl
eHRCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNDkyOWU2M2M1NGVhN2I1NjVkM2RmMDQ3ZjFlYTA1MTdiNWY1NGIw
ZC4uYzNkYjA5NjdiNDUyZTk0ZTIzZDcwNWJhMTQ1NjgxOWM2M2QyYjMyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0wNi0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhfdCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkg
dG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRD
dWVEYXRhKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2Vi
VlRUQ3VlRGF0YSk6CisKIDIwMjEtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBPcHRpbWl6ZSBhIGZldyBjYWxsIHNpdGVzIGNyZWF0aW5nIFNoYXJlZEJ1
ZmZlciBvYmplY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmlu
ZGV4IDEwZjg4YjE4OGExNjFkODFkNjMxN2MyZjhhNDY1YjVkODE1OTZhYjguLjI1Zjc2YTU5NDIx
OWM5NjNmYzMzNjVhYTM1YjVjZjI1OGU0NDM2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBET01DYWNoZTo6YWRk
QWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjaHVu
ayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2h1bmstPmRhdGEpLCBjaHVuay0+c2l6
ZSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSwgY2h1bmst
PnNpemUpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgdGFza0hh
bmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUo
ZGF0YSkpOwogICAgICAgICAgICAgfSk7CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBET01DYWNo
ZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2Us
IERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8gY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2h1bmstPmRhdGEpLCBjaHVuay0+c2l6ZSk7Cisg
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhLCBjaHVuay0+c2l6ZSk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOwogICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAK
aW5kZXggODhhNjdlMzU1NGFhNDhjYzIzYjIyYzUyMTA2Y2FmYzE4OWYxZTk3YS4uMmFiMGNhZjEw
MGQwYzMxMzhjMmI2MjY0M2Q3M2IyMWVjNmJlOWViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBA
QCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoYXV0byBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRh
dGEtPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaHVuay0+ZGF0YSksIGNo
dW5rLT5zaXplKTsKKyAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEsIGNo
dW5rLT5zaXplKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXNvbHZlV2l0
aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXpl
KCkpOwogICAgICAgICB9KTsKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5n
JiBjbwogICAgIH0KIH0KIAotdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKIHsKICAgICBpZiAobV9zb3VyY2Up
IHsKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRh
LCBzaXplKSk7CkBAIC0zMzQsMTEgKzMzNCw2IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgIG1fYnVmZmVyLT5hcHBl
bmQoZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQotewotICAgIGFwcGVuZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSk7Ci19Ci0KIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCiB7CiAgICAgcmV0dXJuIFdU
Rk1vdmUobV9idWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCmluZGV4IDM3ZDA1NGIxMGNlOGRiZWQxOTFjN2I4NWY4ODFkZWU0NmUw
NGIwZDIuLjFiNjI3NjYzYmRkMmE1OTA5Y2UxZWMzZWY3YTk4MmIyNDlkNzVjYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTQ2
LDggKzQ2LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgRmV0Y2hCb2R5Q29uc3VtZXIoVHlw
ZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIHVuc2lnbmVkKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsg
fQogICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcAppbmRleCBiMzk3ODY5NWZkN2VmMTkyMTRiNmI5MDFhOGYzZjFhOTZlZTBlMGVjLi5k
ZTEzYzE3NGQzMDMwOTZmZmUzY2JjZTA0NjA5Y2MyOTRkMGVmNTJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTE1OSw3ICsxNTks
NyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNvbnN0IHdl
YnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVu
dExvY2sgfTsKICAgICBpZiAoIW1fY2xpZW50KSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRhdGEg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YS5kYXRhPGNoYXI+KCkp
OworICAgICAgICBhdXRvKiBkYXRhID0gYnVmZmVyLmRhdGEuZGF0YTx1aW50OF90PigpOwogICAg
ICAgICBpZiAoYnVmZmVyLmJpbmFyeSkKICAgICAgICAgICAgIG1fYnVmZmVyZWRNZXNzYWdlcy5h
cHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgYnVmZmVyLnNpemUoKSkpOwogICAgICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzNlMTA1MDE4ZDhhMjY3Y2FiZDQyZjUzMWJmZjg0ZTQw
MzRlNTAxYy4uZjg5NDYwODc3ZGJmZjIwNmMyZWI0ZjdkNjNkMjk3MmRmZjBhYTg3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzCiBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5k
KGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBieXRlTGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAl
cCBzZW5kKCkgU2VuZGluZyBBcnJheUJ1ZmZlciAlcCBieXRlT2Zmc2V0PSV1IGJ5dGVMZW5ndGg9
JXUiLCB0aGlzLCAmYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7Ci0gICAgZW5x
dWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsK
KyAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUJpbmFyeSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5
dGVMZW5ndGgpOwogICAgIHByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKTsKICAgICByZXR1cm4g
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOwogfQpAQCAtMTcwLDkgKzE3
MCw5IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENo
YW5uZWw6OnNlbmQoQmxvYiYgYmluYXJ5RGF0YSkKICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlNlbmRTdWNjZXNzOwogfQogCi1ib29sIFdlYlNvY2tldENoYW5uZWw6OnNl
bmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6
c2VuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kKCkgU2VuZGluZyBjaGFyKiBkYXRhPSVwIGxlbmd0
aD0lZCIsIHRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIHNlbmQoKSBTZW5kaW5nIHVpbnQ4X3QqIGRhdGE9JXAgbGVuZ3RoPSVkIiwgdGhp
cywgZGF0YSwgbGVuZ3RoKTsKICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9w
Q29kZUJpbmFyeSwgZGF0YSwgbGVuZ3RoKTsKICAgICBwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVl
KCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkK
ICAgICBkZXJlZigpOwogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2Nr
ZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlU29ja2V0
U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKSBSZWNlaXZlZCAlenUgYnl0ZXMiLCB0aGlz
LCBsZW5ndGgpOwogICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsgLy8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92
aW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OmRpZEZhaWwoRXhjZXB0aW9uQ29kZSBlcnJvckNvZGUpCiAgICAgZGVyZWYoKTsK
IH0KIAotYm9vbCBXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuKQorYm9vbCBXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcihj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuKQogewogICAgIHNpemVfdCBuZXdCdWZmZXJT
aXplID0gbV9idWZmZXIuc2l6ZSgpICsgbGVuOwogICAgIGlmIChuZXdCdWZmZXJTaXplIDwgbV9i
dWZmZXIuc2l6ZSgpKSB7CkBAIC00ODgsMTQgKzQ4OCwxNCBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24p
CiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV9oYW5kbGUpOwogCi0gICAgVmVjdG9yPGNo
YXI+IGJ1ZjsKKyAgICBWZWN0b3I8dWludDhfdD4gYnVmOwogICAgIGlmICghbV9yZWNlaXZlZENs
b3NpbmdIYW5kc2hha2UgJiYgY29kZSAhPSBDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCkgewot
ICAgICAgICB1bnNpZ25lZCBjaGFyIGhpZ2hCeXRlID0gY29kZSA+PiA4OwotICAgICAgICB1bnNp
Z25lZCBjaGFyIGxvd0J5dGUgPSBjb2RlOwotICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0
PGNoYXI+KGhpZ2hCeXRlKSk7Ci0gICAgICAgIGJ1Zi5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4o
bG93Qnl0ZSkpOworICAgICAgICB1aW50OF90IGhpZ2hCeXRlID0gY29kZSA+PiA4OworICAgICAg
ICB1aW50OF90IGxvd0J5dGUgPSBjb2RlOworICAgICAgICBidWYuYXBwZW5kKGhpZ2hCeXRlKTsK
KyAgICAgICAgYnVmLmFwcGVuZChsb3dCeXRlKTsKICAgICAgICAgYXV0byByZWFzb25VVEY4ID0g
cmVhc29uLnV0ZjgoKTsKLSAgICAgICAgYnVmLmFwcGVuZChyZWFzb25VVEY4LmRhdGEoKSwgcmVh
c29uVVRGOC5sZW5ndGgoKSk7CisgICAgICAgIGJ1Zi5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4ocmVhc29uVVRGOC5kYXRhKCkpLCByZWFzb25VVEY4Lmxlbmd0aCgpKTsK
ICAgICB9CiAgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVDbG9zZSwg
YnVmLmRhdGEoKSwgYnVmLnNpemUoKSk7CiAgICAgUmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOyAvLyBBbiBhdHRlbXB0IHRvIHNlbmQgY2xvc2luZyBoYW5kc2hha2Ug
bWF5IGZhaWwsIHdoaWNoIHdpbGwgZ2V0IHRoZSBjaGFubmVsIGNsb3NlZCBhbmQgZGVyZWZlcmVu
Y2VkLgpAQCAtNTI0LDcgKzUyNCw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0Zy
YW1lKCkKICAgICBBU1NFUlQoIW1fYnVmZmVyLmlzRW1wdHkoKSk7CiAKICAgICBXZWJTb2NrZXRG
cmFtZSBmcmFtZTsKLSAgICBjb25zdCBjaGFyKiBmcmFtZUVuZDsKKyAgICBjb25zdCB1aW50OF90
KiBmcmFtZUVuZDsKICAgICBTdHJpbmcgZXJyb3JTdHJpbmc7CiAgICAgV2ViU29ja2V0RnJhbWU6
OlBhcnNlRnJhbWVSZXN1bHQgcmVzdWx0ID0gV2ViU29ja2V0RnJhbWU6OnBhcnNlRnJhbWUobV9i
dWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCksIGZyYW1lLCBmcmFtZUVuZCwgZXJyb3JTdHJp
bmcpOwogICAgIGlmIChyZXN1bHQgPT0gV2ViU29ja2V0RnJhbWU6OkZyYW1lSW5jb21wbGV0ZSkK
QEAgLTY1Niw4ICs2NTYsOCBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgp
CiAgICAgICAgICAgICBmYWlsKCJSZWNlaXZlZCBhIGJyb2tlbiBjbG9zZSBmcmFtZSBjb250YWlu
aW5nIGFuIGludmFsaWQgc2l6ZSBib2R5LiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0ZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGZyYW1lLnBheWxvYWRbMF0pOwotICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBsb3dCeXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZnJhbWUu
cGF5bG9hZFsxXSk7CisgICAgICAgICAgICBhdXRvIGhpZ2hCeXRlID0gZnJhbWUucGF5bG9hZFsw
XTsKKyAgICAgICAgICAgIGF1dG8gbG93Qnl0ZSA9IGZyYW1lLnBheWxvYWRbMV07CiAgICAgICAg
ICAgICBtX2Nsb3NlRXZlbnRDb2RlID0gaGlnaEJ5dGUgPDwgOCB8IGxvd0J5dGU7CiAgICAgICAg
ICAgICBpZiAobV9jbG9zZUV2ZW50Q29kZSA9PSBDbG9zZUV2ZW50Q29kZU5vU3RhdHVzUmN2ZCB8
fCBtX2Nsb3NlRXZlbnRDb2RlID09IENsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlIHx8IG1f
Y2xvc2VFdmVudENvZGUgPT0gQ2xvc2VFdmVudENvZGVUTFNIYW5kc2hha2UpIHsKICAgICAgICAg
ICAgICAgICBtX2Nsb3NlRXZlbnRDb2RlID0gQ2xvc2VFdmVudENvZGVBYm5vcm1hbENsb3N1cmU7
CkBAIC03MTQsNyArNzE0LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZy
YW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKICAgICBtX291dGdvaW5nRnJhbWVRdWV1ZS5hcHBl
bmQoV1RGTW92ZShmcmFtZSkpOwogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVS
YXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVz
ID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwogICAgIGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVl
PFF1ZXVlZEZyYW1lPigpOwpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpCiAgICAgICAgIGF1dG8gZnJhbWUgPSBtX291
dGdvaW5nRnJhbWVRdWV1ZS50YWtlRmlyc3QoKTsKICAgICAgICAgc3dpdGNoIChmcmFtZS0+ZnJh
bWVUeXBlKSB7CiAgICAgICAgIGNhc2UgUXVldWVkRnJhbWVUeXBlU3RyaW5nOiB7Ci0gICAgICAg
ICAgICBzZW5kRnJhbWUoZnJhbWUtPm9wQ29kZSwgZnJhbWUtPnN0cmluZ0RhdGEuZGF0YSgpLCBm
cmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5v
cENvZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGZyYW1lLT5zdHJpbmdEYXRh
LmRhdGEoKSksIGZyYW1lLT5zdHJpbmdEYXRhLmxlbmd0aCgpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFzdWNjZXNzKQogICAgICAgICAgICAgICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJT
b2NrZXQgZnJhbWUuIik7CiAgICAgICAgICAgICB9KTsKQEAgLTc4MCw3ICs3ODAsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICAg
ICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmVzdWx0ID0gbV9ibG9iTG9hZGVyLT5hcnJheUJ1
ZmZlclJlc3VsdCgpOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7CiAg
ICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyU3RhdHVzID0gQmxvYkxvYWRlck5vdFN0YXJ0ZWQ7
Ci0gICAgICAgICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzKSB7CisgICAgICAg
ICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxlbmd0aCgpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwoIkZhaWxl
ZCB0byBzZW5kIFdlYlNvY2tldCBmcmFtZS4iKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTgx
Myw3ICs4MTMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmFib3J0T3V0Z29pbmdGcmFtZVF1
ZXVlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNv
Y2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2Rl
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9oYW5kbGUpOwog
ICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwpAQCAtODI3LDcgKzgyNyw3IEBAIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25z
dCBjaGFyKiBkYXRhCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAg
ICAgfQogCi0gICAgVmVjdG9yPGNoYXI+IGZyYW1lRGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4g
ZnJhbWVEYXRhOwogICAgIGZyYW1lLm1ha2VGcmFtZURhdGEoZnJhbWVEYXRhKTsKIAogICAgIG1f
aGFuZGxlLT5zZW5kRGF0YShmcmFtZURhdGEuZGF0YSgpLCBmcmFtZURhdGEuc2l6ZSgpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCBhNDYyZTNlMDhlMDkyNzk4NzAx
ZTM3YjFiYzQyMTJkMTg2OWEzMTgwLi4wZDBlZDI2ZmY1ZjFjZjBjMDM2NGUyZjkyZWQyMzY2MDZh
NmUxNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudCYgY2xpZW50LCBTb2NrZXRQcm92aWRlciYgcHJvdmlkZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0Q2hhbm5lbChkb2N1bWVudCwgY2xpZW50LCBwcm92aWRl
cikpOyB9CiAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hhbm5lbCgpOwogCi0gICAgYm9vbCBzZW5k
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworICAgIGJvb2wgc2VuZChjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogICAgIC8vIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsIGZ1bmN0aW9ucy4KICAgICBDb25uZWN0U3RhdHVzIGNvbm5lY3QoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCkgZmluYWw7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAg
ICAvLyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgZnVuY3Rpb25zLgogICAgIHZvaWQgZGlkT3Bl
blNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZENs
b3NlU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hhcios
IHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2Nr
ZXRTdHJlYW1IYW5kbGUmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lk
IGRpZEZhaWxUb1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYpIGZp
bmFsOwogICAgIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoU29ja2V0U3RyZWFtSGFuZGxl
Jiwgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxTb2NrZXRT
dHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKSBmaW5h
bDsKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwoKSBvdmVycmlkZSB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZlRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiAKLSAgICBib29s
IGFwcGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pOworICAgIGJvb2wg
YXBwZW5kVG9CdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbik7CiAgICAgdm9p
ZCBza2lwQnVmZmVyKHNpemVfdCBsZW4pOwogICAgIGJvb2wgcHJvY2Vzc0J1ZmZlcigpOwogICAg
IHZvaWQgcmVzdW1lVGltZXJGaXJlZCgpOwpAQCAtMTYwLDExICsxNjAsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgUXVldWVkRnJhbWVUeXBlIGZyYW1lVHlwZTsKICAgICAgICAgLy8gT25seSBvbmUg
b2YgdGhlIGZvbGxvd2luZyBpdGVtcyBpcyB1c2VkLCBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9m
IGZyYW1lVHlwZS4KICAgICAgICAgQ1N0cmluZyBzdHJpbmdEYXRhOwotICAgICAgICBWZWN0b3I8
Y2hhcj4gdmVjdG9yRGF0YTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvckRhdGE7CiAg
ICAgICAgIFJlZlB0cjxCbG9iPiBibG9iRGF0YTsKICAgICB9OwogICAgIHZvaWQgZW5xdWV1ZVRl
eHRGcmFtZShjb25zdCBDU3RyaW5nJik7Ci0gICAgdm9pZCBlbnF1ZXVlUmF3RnJhbWUoV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwor
ICAgIHZvaWQgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIGVucXVldWVCbG9iRnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSwgQmxvYiYpOwogCiAgICAgdm9pZCBwcm9jZXNzT3V0
Z29pbmdGcmFtZVF1ZXVlKCk7CkBAIC0xODQsNyArMTg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IElmIHlvdSBhcmUgZ29pbmcgdG8gc2VuZCBhIGh5YmktMTAgZnJhbWUsIHlvdSBuZWVkIHRvIHVz
ZSB0aGUgb3V0Z29pbmcgZnJhbWUgcXVldWUKICAgICAvLyBpbnN0ZWFkIG9mIGNhbGwgc2VuZEZy
YW1lKCkgZGlyZWN0bHkuCi0gICAgdm9pZCBzZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIGVudW0g
QmxvYkxvYWRlclN0YXR1cyB7CiAgICAgICAgIEJsb2JMb2FkZXJOb3RTdGFydGVkLApAQCAtMTk3
LDcgKzE5Nyw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxXZWJTb2NrZXRDaGFubmVsQ2xpZW50
PiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0SGFuZHNoYWtlPiBtX2hh
bmRzaGFrZTsKICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBtX2hhbmRsZTsKLSAgICBW
ZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwogCiAg
ICAgVGltZXIgbV9yZXN1bWVUaW1lcjsKICAgICBib29sIG1fc3VzcGVuZGVkIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZXIuY3BwCmluZGV4IDE0YWI4MDk1YjI1Y2YxMzk0YzA4NDlhMGIxODc4MTc0YzQ1NzMz
YWQuLjExMmVkMmVlMGVhMzZlYTRiM2M3MDk0ZDc1NzM4YTJlZGUzYzI3ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmNwcApAQCAtNjMsMTUgKzYzLDE1IEBAIFdlYlNvY2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVm
bGF0ZXIoKQogICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldERlZmxhdGVyICVwIERlc3Ry
dWN0b3IgZGVmbGF0ZUVuZCgpIGZhaWxlZDogJWQgaXMgcmV0dXJuZWQiLCB0aGlzLCByZXN1bHQp
OwogfQogCi1zdGF0aWMgdm9pZCBzZXRTdHJlYW1QYXJhbWV0ZXIoel9zdHJlYW0qIHN0cmVhbSwg
Y29uc3QgY2hhciogaW5wdXREYXRhLCBzaXplX3QgaW5wdXRMZW5ndGgsIGNoYXIqIG91dHB1dERh
dGEsIHNpemVfdCBvdXRwdXRMZW5ndGgpCitzdGF0aWMgdm9pZCBzZXRTdHJlYW1QYXJhbWV0ZXIo
el9zdHJlYW0qIHN0cmVhbSwgY29uc3QgdWludDhfdCogaW5wdXREYXRhLCBzaXplX3QgaW5wdXRM
ZW5ndGgsIHVpbnQ4X3QqIG91dHB1dERhdGEsIHNpemVfdCBvdXRwdXRMZW5ndGgpCiB7Ci0gICAg
c3RyZWFtLT5uZXh0X2luID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KGNvbnN0X2Nhc3Q8Y2hh
cio+KGlucHV0RGF0YSkpOworICAgIHN0cmVhbS0+bmV4dF9pbiA9IGNvbnN0X2Nhc3Q8dWludDhf
dCo+KGlucHV0RGF0YSk7CiAgICAgc3RyZWFtLT5hdmFpbF9pbiA9IGlucHV0TGVuZ3RoOwotICAg
IHN0cmVhbS0+bmV4dF9vdXQgPSByZWludGVycHJldF9jYXN0PEJ5dGVmKj4ob3V0cHV0RGF0YSk7
CisgICAgc3RyZWFtLT5uZXh0X291dCA9IG91dHB1dERhdGE7CiAgICAgc3RyZWFtLT5hdmFpbF9v
dXQgPSBvdXRwdXRMZW5ndGg7CiB9CiAKLWJvb2wgV2ViU29ja2V0RGVmbGF0ZXI6OmFkZEJ5dGVz
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitib29sIFdlYlNvY2tldERlZmxhdGVy
OjphZGRCeXRlcyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlm
ICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzcsNyArMTM3LDcgQEAgV2Vi
U29ja2V0SW5mbGF0ZXI6On5XZWJTb2NrZXRJbmZsYXRlcigpCiAgICAgICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0SW5mbGF0ZXIgJXAgRGVzdHJ1Y3RvciBpbmZsYXRlRW5kKCkgZmFpbGVkOiAl
ZCBpcyByZXR1cm5lZCIsIHRoaXMsIHJlc3VsdCk7CiB9CiAKLWJvb2wgV2ViU29ja2V0SW5mbGF0
ZXI6OmFkZEJ5dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitib29sIFdlYlNv
Y2tldEluZmxhdGVyOjphZGRCeXRlcyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzAsNyAr
MTcwLDcgQEAgYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKIAogYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6ZmluaXNoKCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgY2hhciogc3RyaXBwZWRGaWVsZHMgPSAiXDBcMFx4ZmZceGZmIjsK
KyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBzdHJpcHBlZEZpZWxkc1tdID0gIlwwXDBceGZmXHhm
ZiI7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzdHJpcHBlZExlbmd0aCA9IDQ7CiAKICAgICAv
LyBBcHBlbmRzIDQgb2N0ZXN0cyBvZiAweDAwIDB4MDAgMHhmZiAweGZmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oCmluZGV4
IGY2MmRjNTg1YTgzYmUzYTEzOTQxYjU3YmFmNzI5NjU2YzEzMDQ5MmIuLjhmNDU0ZmIzYjY5NmQ4
YmM0M2VmMmFhNTdiMWY3YjA5Y2UyNjA5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oCkBAIC00OSwxNiArNDksMTYg
QEAgcHVibGljOgogICAgIH5XZWJTb2NrZXREZWZsYXRlcigpOwogCiAgICAgYm9vbCBpbml0aWFs
aXplKCk7Ci0gICAgYm9vbCBhZGRCeXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29s
IGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgZmluaXNoKCk7Ci0g
ICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIGNv
bnN0IHVpbnQ4X3QqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQogICAgIHZvaWQgcmVz
ZXQoKTsKIAogcHJpdmF0ZToKICAgICBpbnQgbV93aW5kb3dCaXRzOwogICAgIENvbnRleHRUYWtl
T3Zlck1vZGUgbV9jb250ZXh0VGFrZU92ZXJNb2RlOwotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZl
cjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHpf
c3RyZWFtPiBtX3N0cmVhbTsKIH07CiAKQEAgLTY5LDE1ICs2OSwxNSBAQCBwdWJsaWM6CiAgICAg
fldlYlNvY2tldEluZmxhdGVyKCk7CiAKICAgICBib29sIGluaXRpYWxpemUoKTsKLSAgICBib29s
IGFkZEJ5dGVzKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIGJvb2wgYWRkQnl0ZXMoY29uc3Qg
dWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBmaW5pc2goKTsKLSAgICBjb25zdCBjaGFyKiBk
YXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0
YSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAgICAgdm9pZCByZXNldCgpOwogCiBwcml2YXRl
OgogICAgIGludCBtX3dpbmRvd0JpdHM7Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAg
IFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8el9zdHJlYW0+
IG1fc3RyZWFtOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAKaW5kZXggZjdmMzY1NzViMjY3NTVjY2I5YTIxZTg5ZTZi
YjNlNGQwMmU3MDhiOS4uNjNlMjU3MzExMzk2NzE2ODNiYzhlZWMyYmY1YjYxZDFiNjU3ZWUzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RnJhbWUuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
Q29uc3RhbnRzIGZvciBoeWJpLTEwIGZyYW1lIGZvcm1hdC4KLWNvbnN0IHVuc2lnbmVkIGNoYXIg
ZmluYWxCaXQgPSAweDgwOwotY29uc3QgdW5zaWduZWQgY2hhciBjb21wcmVzc0JpdCA9IDB4NDA7
Ci1jb25zdCB1bnNpZ25lZCBjaGFyIHJlc2VydmVkMkJpdCA9IDB4MjA7Ci1jb25zdCB1bnNpZ25l
ZCBjaGFyIHJlc2VydmVkM0JpdCA9IDB4MTA7Ci1jb25zdCB1bnNpZ25lZCBjaGFyIG9wQ29kZU1h
c2sgPSAweEY7Ci1jb25zdCB1bnNpZ25lZCBjaGFyIG1hc2tCaXQgPSAweDgwOwotY29uc3QgdW5z
aWduZWQgY2hhciBwYXlsb2FkTGVuZ3RoTWFzayA9IDB4N0Y7Citjb25zdCB1aW50OF90IGZpbmFs
Qml0ID0gMHg4MDsKK2NvbnN0IHVpbnQ4X3QgY29tcHJlc3NCaXQgPSAweDQwOworY29uc3QgdWlu
dDhfdCByZXNlcnZlZDJCaXQgPSAweDIwOworY29uc3QgdWludDhfdCByZXNlcnZlZDNCaXQgPSAw
eDEwOworY29uc3QgdWludDhfdCBvcENvZGVNYXNrID0gMHhGOworY29uc3QgdWludDhfdCBtYXNr
Qml0ID0gMHg4MDsKK2NvbnN0IHVpbnQ4X3QgcGF5bG9hZExlbmd0aE1hc2sgPSAweDdGOwogY29u
c3Qgc2l6ZV90IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCA9IDEy
NTsKIGNvbnN0IHNpemVfdCBwYXlsb2FkTGVuZ3RoV2l0aFR3b0J5dGVFeHRlbmRlZExlbmd0aEZp
ZWxkID0gMTI2OwogY29uc3Qgc2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0ZW5k
ZWRMZW5ndGhGaWVsZCA9IDEyNzsKQEAgLTQ3LDIyICs0NywyMiBAQCBib29sIFdlYlNvY2tldEZy
YW1lOjpuZWVkc0V4dGVuZGVkTGVuZ3RoRmllbGQoc2l6ZV90IHBheWxvYWRMZW5ndGgpCiAgICAg
cmV0dXJuIHBheWxvYWRMZW5ndGggPiBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVu
Z3RoRmllbGQ7CiB9CiAKLVdlYlNvY2tldEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tl
dEZyYW1lOjpwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXZWJTb2Nr
ZXRGcmFtZSYgZnJhbWUsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCwgU3RyaW5nJiBlcnJvclN0cmlu
ZykKK1dlYlNvY2tldEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldEZyYW1lOjpwYXJz
ZUZyYW1lKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXZWJTb2NrZXRGcmFtZSYg
ZnJhbWUsIGNvbnN0IHVpbnQ4X3QqJiBmcmFtZUVuZCwgU3RyaW5nJiBlcnJvclN0cmluZykKIHsK
LSAgICBjaGFyKiBwID0gZGF0YTsKLSAgICBjb25zdCBjaGFyKiBidWZmZXJFbmQgPSBkYXRhICsg
ZGF0YUxlbmd0aDsKKyAgICB1aW50OF90KiBwID0gZGF0YTsKKyAgICBjb25zdCB1aW50OF90KiBi
dWZmZXJFbmQgPSBkYXRhICsgZGF0YUxlbmd0aDsKIAogICAgIGlmIChkYXRhTGVuZ3RoIDwgMikK
ICAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKIAotICAgIHVuc2lnbmVkIGNoYXIgZmly
c3RCeXRlID0gKnArKzsKLSAgICB1bnNpZ25lZCBjaGFyIHNlY29uZEJ5dGUgPSAqcCsrOworICAg
IHVpbnQ4X3QgZmlyc3RCeXRlID0gKnArKzsKKyAgICB1aW50OF90IHNlY29uZEJ5dGUgPSAqcCsr
OwogCiAgICAgYm9vbCBmaW5hbCA9IGZpcnN0Qnl0ZSAmIGZpbmFsQml0OwogICAgIGJvb2wgY29t
cHJlc3MgPSBmaXJzdEJ5dGUgJiBjb21wcmVzc0JpdDsKICAgICBib29sIHJlc2VydmVkMiA9IGZp
cnN0Qnl0ZSAmIHJlc2VydmVkMkJpdDsKICAgICBib29sIHJlc2VydmVkMyA9IGZpcnN0Qnl0ZSAm
IHJlc2VydmVkM0JpdDsKLSAgICB1bnNpZ25lZCBjaGFyIG9wQ29kZSA9IGZpcnN0Qnl0ZSAmIG9w
Q29kZU1hc2s7CisgICAgdWludDhfdCBvcENvZGUgPSBmaXJzdEJ5dGUgJiBvcENvZGVNYXNrOwog
CiAgICAgYm9vbCBtYXNrZWQgPSBzZWNvbmRCeXRlICYgbWFza0JpdDsKICAgICB1aW50NjRfdCBw
YXlsb2FkTGVuZ3RoNjQgPSBzZWNvbmRCeXRlICYgcGF5bG9hZExlbmd0aE1hc2s7CkBAIC03OSw3
ICs3OSw3IEBAIFdlYlNvY2tldEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldEZyYW1l
OjpwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBkCiAgICAgICAgIHBheWxvYWRMZW5ndGg2
NCA9IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0ZW5kZWRQYXlsb2FkTGVuZ3Ro
U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBwYXlsb2FkTGVuZ3RoNjQgPDw9IDg7Ci0gICAgICAg
ICAgICBwYXlsb2FkTGVuZ3RoNjQgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnArKyk7
CisgICAgICAgICAgICBwYXlsb2FkTGVuZ3RoNjQgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKnAr
Kyk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemUgPT0g
MiAmJiBwYXlsb2FkTGVuZ3RoNjQgPD0gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExl
bmd0aEZpZWxkKSB7CiAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJUaGUgbWluaW1hbCBudW1i
ZXIgb2YgYnl0ZXMgTVVTVCBiZSB1c2VkIHRvIGVuY29kZSB0aGUgbGVuZ3RoIjsKQEAgLTEwMyw4
ICsxMDMsOCBAQCBXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFt
ZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZAogICAgICAgICByZXR1cm4gRnJhbWVJ
bmNvbXBsZXRlOwogCiAgICAgaWYgKG1hc2tlZCkgewotICAgICAgICBjb25zdCBjaGFyKiBtYXNr
aW5nS2V5ID0gcDsKLSAgICAgICAgY2hhciogcGF5bG9hZCA9IHAgKyBtYXNraW5nS2V5V2lkdGhJ
bkJ5dGVzOworICAgICAgICB1aW50OF90KiBtYXNraW5nS2V5ID0gcDsKKyAgICAgICAgdWludDhf
dCogcGF5bG9hZCA9IHAgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHBheWxvYWRMZW5ndGg7ICsraSkKICAgICAgICAgICAgIHBheWxvYWRb
aV0gXj0gbWFza2luZ0tleVtpICUgbWFza2luZ0tleVdpZHRoSW5CeXRlc107IC8vIFVubWFzayB0
aGUgcGF5bG9hZC4KICAgICB9CkBAIC0xMjEsNyArMTIxLDcgQEAgV2ViU29ja2V0RnJhbWU6OlBh
cnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0RnJhbWU6OnBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6
ZV90IGQKICAgICByZXR1cm4gRnJhbWVPSzsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kRnJhbWVQ
YXlsb2FkKGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSwgVmVjdG9yPGNoYXI+JiBmcmFtZURh
dGEpCitzdGF0aWMgdm9pZCBhcHBlbmRGcmFtZVBheWxvYWQoY29uc3QgV2ViU29ja2V0RnJhbWUm
IGZyYW1lLCBWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSkKIHsKICAgICBzaXplX3QgbWFza2lu
Z0tleVN0YXJ0ID0gMDsKICAgICBpZiAoZnJhbWUubWFza2VkKSB7CkBAIC0xMzksNyArMTM5LDcg
QEAgc3RhdGljIHZvaWQgYXBwZW5kRnJhbWVQYXlsb2FkKGNvbnN0IFdlYlNvY2tldEZyYW1lJiBm
cmFtZSwgVmVjdG9yPGNoYXI+JiBmcmFtZUQKICAgICB9CiB9CiAKLXZvaWQgV2ViU29ja2V0RnJh
bWU6Om1ha2VGcmFtZURhdGEoVmVjdG9yPGNoYXI+JiBmcmFtZURhdGEpCit2b2lkIFdlYlNvY2tl
dEZyYW1lOjptYWtlRnJhbWVEYXRhKFZlY3Rvcjx1aW50OF90PiYgZnJhbWVEYXRhKQogewogICAg
IEFTU0VSVCghKG9wQ29kZSAmIH5vcENvZGVNYXNrKSk7IC8vIENoZWNrcyB3aGV0aGVyICJvcENv
ZGUiIGZpdHMgaW4gdGhlIHJhbmdlIG9mIG9wQ29kZXMuCiAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2
b2lkIFdlYlNvY2tldEZyYW1lOjptYWtlRnJhbWVEYXRhKFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRh
KQogICAgICAgICBmcmFtZURhdGEuYXBwZW5kKHBheWxvYWRMZW5ndGggJiAweEZGKTsKICAgICB9
IGVsc2UgewogICAgICAgICBmcmFtZURhdGEuYXQoMSkgfD0gcGF5bG9hZExlbmd0aFdpdGhFaWdo
dEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkOwotICAgICAgICBjaGFyIGV4dGVuZGVkUGF5bG9hZExl
bmd0aFs4XTsKKyAgICAgICAgdWludDhfdCBleHRlbmRlZFBheWxvYWRMZW5ndGhbOF07CiAgICAg
ICAgIHNpemVfdCByZW1haW5pbmcgPSBwYXlsb2FkTGVuZ3RoOwogICAgICAgICAvLyBGaWxsIHRo
ZSBsZW5ndGggaW50byBleHRlbmRlZFBheWxvYWRMZW5ndGggaW4gdGhlIG5ldHdvcmsgYnl0ZSBv
cmRlci4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsKQEAgLTE2OSw3ICsx
NjksNyBAQCB2b2lkIFdlYlNvY2tldEZyYW1lOjptYWtlRnJhbWVEYXRhKFZlY3RvcjxjaGFyPiYg
ZnJhbWVEYXRhKQogICAgIGFwcGVuZEZyYW1lUGF5bG9hZCgqdGhpcywgZnJhbWVEYXRhKTsKIH0K
IAotV2ViU29ja2V0RnJhbWU6OldlYlNvY2tldEZyYW1lKE9wQ29kZSBvcENvZGUsIGJvb2wgZmlu
YWwsIGJvb2wgY29tcHJlc3MsIGJvb2wgbWFza2VkLCBjb25zdCBjaGFyKiBwYXlsb2FkLCBzaXpl
X3QgcGF5bG9hZExlbmd0aCkKK1dlYlNvY2tldEZyYW1lOjpXZWJTb2NrZXRGcmFtZShPcENvZGUg
b3BDb2RlLCBib29sIGZpbmFsLCBib29sIGNvbXByZXNzLCBib29sIG1hc2tlZCwgY29uc3QgdWlu
dDhfdCogcGF5bG9hZCwgc2l6ZV90IHBheWxvYWRMZW5ndGgpCiAgICAgOiBvcENvZGUob3BDb2Rl
KQogICAgICwgZmluYWwoZmluYWwpCiAgICAgLCBjb21wcmVzcyhjb21wcmVzcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmgKaW5kZXgg
ZGIxNjBkY2ZiMWVlNTk1NWE5ZDU3ZmRjODc3YjRmOTQ3M2E1NzNhMC4uYTc0Y2I4MjljNzVhZWNh
MTkxM2Y5Zjg0MmJjMzkzYTQ3YWRkYzE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmgKQEAgLTU2LDEwICs1NiwxMCBAQCBzdHJ1
Y3QgV2ViU29ja2V0RnJhbWUgewogICAgIHN0YXRpYyBib29sIGlzQ29udHJvbE9wQ29kZShPcENv
ZGUgb3BDb2RlKSB7IHJldHVybiBvcENvZGUgPT0gT3BDb2RlQ2xvc2UgfHwgb3BDb2RlID09IE9w
Q29kZVBpbmcgfHwgb3BDb2RlID09IE9wQ29kZVBvbmc7IH0KICAgICBzdGF0aWMgYm9vbCBpc1Jl
c2VydmVkT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuICFpc05vbkNvbnRyb2xPcENvZGUo
b3BDb2RlKSAmJiAhaXNDb250cm9sT3BDb2RlKG9wQ29kZSk7IH0KICAgICBzdGF0aWMgYm9vbCBu
ZWVkc0V4dGVuZGVkTGVuZ3RoRmllbGQoc2l6ZV90IHBheWxvYWRMZW5ndGgpOwotICAgIHN0YXRp
YyBQYXJzZUZyYW1lUmVzdWx0IHBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIFdlYlNvY2tldEZyYW1lJiwgY29uc3QgY2hhciomIGZyYW1lRW5kLCBTdHJpbmcmIGVycm9y
U3RyaW5nKTsgLy8gTWF5IG1vZGlmeSBwYXJ0IG9mIGRhdGEgdG8gdW5tYXNrIHRoZSBmcmFtZS4K
KyAgICBzdGF0aWMgUGFyc2VGcmFtZVJlc3VsdCBwYXJzZUZyYW1lKHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoLCBXZWJTb2NrZXRGcmFtZSYsIGNvbnN0IHVpbnQ4X3QqJiBmcmFtZUVu
ZCwgU3RyaW5nJiBlcnJvclN0cmluZyk7IC8vIE1heSBtb2RpZnkgcGFydCBvZiBkYXRhIHRvIHVu
bWFzayB0aGUgZnJhbWUuCiAKLSAgICBXRUJDT1JFX0VYUE9SVCBXZWJTb2NrZXRGcmFtZShPcENv
ZGUgPSBPcENvZGVJbnZhbGlkLCBib29sIGZpbmFsID0gZmFsc2UsIGJvb2wgY29tcHJlc3MgPSBm
YWxzZSwgYm9vbCBtYXNrZWQgPSBmYWxzZSwgY29uc3QgY2hhciogcGF5bG9hZCA9IG51bGxwdHIs
IHNpemVfdCBwYXlsb2FkTGVuZ3RoID0gMCk7Ci0gICAgdm9pZCBtYWtlRnJhbWVEYXRhKFZlY3Rv
cjxjaGFyPiYgZnJhbWVEYXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXZWJTb2NrZXRGcmFtZShP
cENvZGUgPSBPcENvZGVJbnZhbGlkLCBib29sIGZpbmFsID0gZmFsc2UsIGJvb2wgY29tcHJlc3Mg
PSBmYWxzZSwgYm9vbCBtYXNrZWQgPSBmYWxzZSwgY29uc3QgdWludDhfdCogcGF5bG9hZCA9IG51
bGxwdHIsIHNpemVfdCBwYXlsb2FkTGVuZ3RoID0gMCk7CisgICAgdm9pZCBtYWtlRnJhbWVEYXRh
KFZlY3Rvcjx1aW50OF90PiYgZnJhbWVEYXRhKTsKIAogICAgIE9wQ29kZSBvcENvZGU7CiAgICAg
Ym9vbCBmaW5hbDsKQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IFdlYlNvY2tldEZyYW1lIHsKICAg
ICBib29sIHJlc2VydmVkMjsKICAgICBib29sIHJlc2VydmVkMzsKICAgICBib29sIG1hc2tlZDsK
LSAgICBjb25zdCBjaGFyKiBwYXlsb2FkOworICAgIGNvbnN0IHVpbnQ4X3QqIHBheWxvYWQ7CiAg
ICAgc2l6ZV90IHBheWxvYWRMZW5ndGg7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDg0OWNm
NWY2MjRiY2MyNzJlZTVlN2JjNjI2ZGE3ZTUwM2FkNDQ5MjIuLjlkMTE2OTlmMWE0YjZjNTY3Njc1
YjcxYTMyODMwYzI0MmEwNTgzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHN0YXRpYyBTdHJpbmcgaG9zdE5hbWUoY29uc3QgVVJMJiB1cmwsIGJvb2wgc2VjdXJlKQogfQog
CiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heElucHV0U2FtcGxlU2l6ZSA9IDEyODsKLXN0YXRpYyBT
dHJpbmcgdHJpbUlucHV0U2FtcGxlKGNvbnN0IGNoYXIqIHAsIHNpemVfdCBsZW4pCitzdGF0aWMg
U3RyaW5nIHRyaW1JbnB1dFNhbXBsZShjb25zdCB1aW50OF90KiBwLCBzaXplX3QgbGVuKQogewog
ICAgIFN0cmluZyBzID0gU3RyaW5nKHAsIHN0ZDo6bWluPHNpemVfdD4obGVuLCBtYXhJbnB1dFNh
bXBsZVNpemUpKTsKICAgICBpZiAobGVuID4gbWF4SW5wdXRTYW1wbGVTaXplKQpAQCAtMjIxLDcg
KzIyMSw3IEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZXNldCgpCiAgICAgbV9leHRlbnNp
b25EaXNwYXRjaGVyLnJlc2V0KCk7CiB9CiAKLWludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRT
ZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQoraW50IFdlYlNv
Y2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCB1aW50OF90KiBoZWFkZXIs
IHNpemVfdCBsZW4pCiB7CiAgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKICAgICBpbnQgc3RhdHVz
Q29kZTsKQEAgLTI0NSwxMiArMjQ1LDEyIEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRT
ZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQogICAgICAgICBy
ZXR1cm4gbGVuOwogICAgIH0KICAgICBtX21vZGUgPSBOb3JtYWw7Ci0gICAgaWYgKCFzdHJuc3Ry
KGhlYWRlciwgIlxyXG5cclxuIiwgbGVuKSkgeworICAgIGlmICghbWVtbWVtKGhlYWRlciwgbGVu
LCAiXHJcblxyXG4iLCA0KSkgewogICAgICAgICAvLyBKdXN0IGhhc24ndCBiZWVuIHJlY2VpdmVk
IGZ1bGx5IHlldC4KICAgICAgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKICAgICAgICAgcmV0dXJu
IC0xOwogICAgIH0KLSAgICBjb25zdCBjaGFyKiBwID0gcmVhZEhUVFBIZWFkZXJzKGhlYWRlciAr
IGxpbmVMZW5ndGgsIGhlYWRlciArIGxlbik7CisgICAgY29uc3QgdWludDhfdCogcCA9IHJlYWRI
VFRQSGVhZGVycyhoZWFkZXIgKyBsaW5lTGVuZ3RoLCBoZWFkZXIgKyBsZW4pOwogICAgIGlmICgh
cCkgewogICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldEhhbmRzaGFrZSAlcCByZWFkU2Vy
dmVySGFuZHNoYWtlKCkgcmVhZEhUVFBIZWFkZXJzKCkgZmFpbGVkIiwgdGhpcyk7CiAgICAgICAg
IG1fbW9kZSA9IEZhaWxlZDsgLy8gbV9mYWlsdXJlUmVhc29uIGlzIHNldCBpbnNpZGUgcmVhZEhU
VFBIZWFkZXJzKCkuCkBAIC0zNjIsNyArMzYyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGhlYWRl
ckhhc1ZhbGlkSFRUUFZlcnNpb24oU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZSkKIC8vIFJldHVy
bnMgdGhlIGhlYWRlciBsZW5ndGggKGluY2x1ZGluZyAiXHJcbiIpLCBvciAtMSBpZiB3ZSBoYXZl
IG5vdCByZWNlaXZlZCBlbm91Z2ggZGF0YSB5ZXQuCiAvLyBJZiB0aGUgbGluZSBpcyBtYWxmb3Jt
ZWQgb3IgdGhlIHN0YXR1cyBjb2RlIGlzIG5vdCBhIDMtZGlnaXQgbnVtYmVyLAogLy8gc3RhdHVz
Q29kZSBhbmQgc3RhdHVzVGV4dCB3aWxsIGJlIHNldCB0byAtMSBhbmQgYSBudWxsIHN0cmluZywg
cmVzcGVjdGl2ZWx5LgotaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFN0YXR1c0xpbmUoY29u
c3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLCBpbnQmIHN0YXR1c0NvZGUsIFN0
cmluZyYgc3RhdHVzVGV4dCkKK2ludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNMaW5l
KGNvbnN0IHVpbnQ4X3QqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50JiBzdGF0dXND
b2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpCiB7CiAgICAgLy8gQXJiaXRyYXJ5IHNpemUgbGltaXQg
dG8gcHJldmVudCB0aGUgc2VydmVyIGZyb20gc2VuZGluZyBhbiB1bmJvdW5kZWQKICAgICAvLyBh
bW91bnQgb2YgZGF0YSB3aXRoIG5vIG5ld2xpbmVzIGFuZCBmb3JjaW5nIHVzIHRvIGJ1ZmZlciBp
dCBhbGwuCkBAIC0zNzEsOSArMzcxLDkgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFN0
YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLAogICAgIHN0
YXR1c0NvZGUgPSAtMTsKICAgICBzdGF0dXNUZXh0ID0gU3RyaW5nKCk7CiAKLSAgICBjb25zdCBj
aGFyKiBzcGFjZTEgPSBudWxscHRyOwotICAgIGNvbnN0IGNoYXIqIHNwYWNlMiA9IG51bGxwdHI7
Ci0gICAgY29uc3QgY2hhciogcDsKKyAgICBjb25zdCB1aW50OF90KiBzcGFjZTEgPSBudWxscHRy
OworICAgIGNvbnN0IHVpbnQ4X3QqIHNwYWNlMiA9IG51bGxwdHI7CisgICAgY29uc3QgdWludDhf
dCogcDsKICAgICBzaXplX3QgY29uc3VtZWRMZW5ndGg7CiAKICAgICBmb3IgKHAgPSBoZWFkZXIs
IGNvbnN1bWVkTGVuZ3RoID0gMDsgY29uc3VtZWRMZW5ndGggPCBoZWFkZXJMZW5ndGg7IHArKywg
Y29uc3VtZWRMZW5ndGgrKykgewpAQCAtMzk3LDcgKzM5Nyw3IEBAIGludCBXZWJTb2NrZXRIYW5k
c2hha2U6OnJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxl
bmd0aCwKICAgICBpZiAoY29uc3VtZWRMZW5ndGggPT0gaGVhZGVyTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gLTE7IC8vIFdlIGhhdmUgbm90IHJlY2VpdmVkICdcbicgeWV0LgogCi0gICAgY29uc3Qg
Y2hhciogZW5kID0gcCArIDE7CisgICAgY29uc3QgdWludDhfdCogZW5kID0gcCArIDE7CiAgICAg
aW50IGxpbmVMZW5ndGggPSBlbmQgLSBoZWFkZXI7CiAgICAgaWYgKGxpbmVMZW5ndGggPiBtYXhp
bXVtTGVuZ3RoKSB7CiAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTdGF0dXMgbGluZSBpcyB0
b28gbG9uZyJfczsKQEAgLTQxNSwxMyArNDE1LDEzIEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6
OnJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwK
ICAgICAgICAgcmV0dXJuIGxpbmVMZW5ndGg7CiAgICAgfQogCi0gICAgU3RyaW5nVmlldyBodHRw
U3RhdHVzTGluZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oaGVhZGVyKSwgc3BhY2Ux
IC0gaGVhZGVyKTsKKyAgICBTdHJpbmdWaWV3IGh0dHBTdGF0dXNMaW5lKGhlYWRlciwgc3BhY2Ux
IC0gaGVhZGVyKTsKICAgICBpZiAoIWhlYWRlckhhc1ZhbGlkSFRUUFZlcnNpb24oaHR0cFN0YXR1
c0xpbmUpKSB7CiAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IG1ha2VTdHJpbmcoIkludmFsaWQg
SFRUUCB2ZXJzaW9uIHN0cmluZzogIiwgaHR0cFN0YXR1c0xpbmUpOwogICAgICAgICByZXR1cm4g
bGluZUxlbmd0aDsKICAgICB9CiAKLSAgICBTdHJpbmdWaWV3IHN0YXR1c0NvZGVTdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHNwYWNlMSArIDEpLCBzcGFjZTIgLSBzcGFjZTEg
LSAxKTsKKyAgICBTdHJpbmdWaWV3IHN0YXR1c0NvZGVTdHJpbmcoc3BhY2UxICsgMSwgc3BhY2Uy
IC0gc3BhY2UxIC0gMSk7CiAgICAgaWYgKHN0YXR1c0NvZGVTdHJpbmcubGVuZ3RoKCkgIT0gMykg
Ly8gU3RhdHVzIGNvZGUgbXVzdCBjb25zaXN0IG9mIHRocmVlIGRpZ2l0cy4KICAgICAgICAgcmV0
dXJuIGxpbmVMZW5ndGg7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpIHsKQEAgLTQz
NiwxNCArNDM2LDE0IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNMaW5lKGNv
bnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwKICAgICByZXR1cm4gbGluZUxl
bmd0aDsKIH0KIAotY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRl
cnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCkKK2NvbnN0IHVpbnQ4X3QqIFdl
YlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0IHVpbnQ4X3QqIHN0YXJ0LCBj
b25zdCB1aW50OF90KiBlbmQpCiB7CiAgICAgU3RyaW5nVmlldyBuYW1lOwogICAgIFN0cmluZyB2
YWx1ZTsKICAgICBib29sIHNhd1NlY1dlYlNvY2tldEV4dGVuc2lvbnNIZWFkZXJGaWVsZCA9IGZh
bHNlOwogICAgIGJvb2wgc2F3U2VjV2ViU29ja2V0QWNjZXB0SGVhZGVyRmllbGQgPSBmYWxzZTsK
ICAgICBib29sIHNhd1NlY1dlYlNvY2tldFByb3RvY29sSGVhZGVyRmllbGQgPSBmYWxzZTsKLSAg
ICBjb25zdCBjaGFyKiBwID0gc3RhcnQ7CisgICAgY29uc3QgdWludDhfdCogcCA9IHN0YXJ0Owog
ICAgIGZvciAoOyBwIDwgZW5kOyBwKyspIHsKICAgICAgICAgc2l6ZV90IGNvbnN1bWVkTGVuZ3Ro
ID0gcGFyc2VIVFRQSGVhZGVyKHAsIGVuZCAtIHAsIG1fZmFpbHVyZVJlYXNvbiwgbmFtZSwgdmFs
dWUpOwogICAgICAgICBpZiAoIWNvbnN1bWVkTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCmluZGV4IGVhZjhh
NWMwNmFkMjA1OGQzZDM4OTUxMzUyMzk5NmY2YmUzZTBkZDMuLjVlNjRjMTgzNGY2ZTgzNjE0ZDMw
MWM0ZmVkZDM5ZDg4M2NhZDdjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCByZXNldCgpOwogCi0gICAgaW50IHJlYWRTZXJ2ZXJIYW5kc2hha2Uo
Y29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKTsKKyAgICBpbnQgcmVhZFNlcnZlckhhbmRz
aGFrZShjb25zdCB1aW50OF90KiBoZWFkZXIsIHNpemVfdCBsZW4pOwogICAgIE1vZGUgbW9kZSgp
IGNvbnN0OwogICAgIFN0cmluZyBmYWlsdXJlUmVhc29uKCkgY29uc3Q7IC8vIFJldHVybnMgYSBz
dHJpbmcgaW5kaWNhdGluZyB0aGUgcmVhc29uIG9mIGZhaWx1cmUgaWYgbW9kZSgpID09IEZhaWxl
ZC4KIApAQCAtODcsMTAgKzg3LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKIAotICAgIGludCBy
ZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsIGlu
dCYgc3RhdHVzQ29kZSwgU3RyaW5nJiBzdGF0dXNUZXh0KTsKKyAgICBpbnQgcmVhZFN0YXR1c0xp
bmUoY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLCBpbnQmIHN0YXR1
c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCk7CiAKICAgICAvLyBSZWFkcyBhbGwgaGVhZGVycyBl
eGNlcHQgZm9yIHRoZSB0d28gcHJlZGVmaW5lZCBvbmVzLgotICAgIGNvbnN0IGNoYXIqIHJlYWRI
VFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKTsKKyAgICBjb25z
dCB1aW50OF90KiByZWFkSFRUUEhlYWRlcnMoY29uc3QgdWludDhfdCogc3RhcnQsIGNvbnN0IHVp
bnQ4X3QqIGVuZCk7CiAgICAgdm9pZCBwcm9jZXNzSGVhZGVycygpOwogICAgIGJvb2wgY2hlY2tS
ZXNwb25zZUhlYWRlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggMGJmMmFhOWExMGIyMmUxMTVhMzJmMjUxNGE3ZDdlYjUwNmI1OTgxYS4uYjNm
MzEwOTVhYWE5YWU4Mzk0ZmI5ODU5YzZkZjQ4YjJjYjlmMDg4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00NDcsMTAgKzQ0NywxMCBAQCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6QnJpZGdlOgogICAgIGlmICghbV9wZWVyKQogICAgICAgICByZXR1cm4gVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRGYWlsOwogCi0gICAgLy8gQXJyYXlCdWZmZXIgaXNu
J3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRoZSBjb250ZW50IG9mIEFycmF5QnVmZmVyIGlzIGNvcGll
ZCBpbnRvIFZlY3RvcjxjaGFyPi4KLSAgICBWZWN0b3I8Y2hhcj4gZGF0YShieXRlTGVuZ3RoKTsK
KyAgICAvLyBBcnJheUJ1ZmZlciBpc24ndCB0aHJlYWQtc2FmZSwgaGVuY2UgdGhlIGNvbnRlbnQg
b2YgQXJyYXlCdWZmZXIgaXMgY29waWVkIGludG8gVmVjdG9yPHVpbnQ4X3Q+LgorICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhKGJ5dGVMZW5ndGgpOwogICAgIGlmIChiaW5hcnlEYXRhLmJ5dGVMZW5n
dGgoKSkKLSAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSgpLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CisgICAgICAg
IG1lbWNweShkYXRhLmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURh
dGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwogICAgIHNldE1ldGhvZE5vdENv
bXBsZXRlZCgpOwogCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyID0g
bV9wZWVyLCBkYXRhID0gV1RGTW92ZShkYXRhKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2Vy
aWFsaXplZE5GQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxp
emVkTkZBLmNwcAppbmRleCAyODM3YWNmOWVlZjk0ZGJjOGJmOGEwMzM5MjM3MTIzYzlkZTZjNWUy
Li45NmY2NWJkZDRjZTc5YmJhODg2ZDk5YTFjNjYyNGZmYmU0ZjEzMDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcApAQCAtMzYs
OSArMzYsOSBAQCBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgewogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIGJvb2wgd3JpdGVBbGxUb0ZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGZpbGUsIGNvbnN0IFQmIGNvbnRhaW5lcikKIHsKLSAgICBjb25zdCBjaGFyKiBieXRlcyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvbnRhaW5lci5kYXRhKCkpOworICAgIGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY29udGFp
bmVyLmRhdGEoKSk7CiAgICAgc2l6ZV90IGJ5dGVzTGVuZ3RoID0gY29udGFpbmVyLnNpemUoKSAq
IHNpemVvZihjb250YWluZXJbMF0pOwotICAgIGNvbnN0IGNoYXIqIGVuZCA9IGJ5dGVzICsgYnl0
ZXNMZW5ndGg7CisgICAgY29uc3QgdWludDhfdCogZW5kID0gYnl0ZXMgKyBieXRlc0xlbmd0aDsK
ICAgICB3aGlsZSAoYnl0ZXMgPCBlbmQpIHsKICAgICAgICAgYXV0byB3cml0dGVuID0gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgYnl0ZXMsIGJ5dGVzTGVuZ3RoKTsKICAgICAgICAgaWYg
KHdyaXR0ZW4gPT0gLTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxl
Q3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4
IDc2NjRjMDY5ZjE0OWZiZWU2ZDFiNTQ3MTYyODYxOTgyZDYxODlhOTguLjg2NDM4NzBkZDBlODEy
MmRhMTgzODliYmNhZTg1N2RhN2UzMmUzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9TdWJ0bGVDcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwCkBAIC0xMTIzLDcgKzExMjMsNyBAQCB2b2lkIFN1YnRsZUNyeXB0bzo6dW53cmFw
S2V5KEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBLZXlGb3JtYXQgZm9ybWF0LCBCdWZmZQog
ICAgICAgICAgICAgICAgICAgICBhdXRvJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcgandrU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IGNo
YXIqPihieXRlcy5kYXRhKCkpLCBieXRlcy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBT
dHJpbmcgandrU3RyaW5nKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gandrT2JqZWN0ID0gSlNPTlBhcnNlKCZzdGF0ZSwgandrU3RyaW5nKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFqd2tPYmplY3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCmluZGV4IDJkMjE0NGYwYWM1
OTZlMzk5NjQ1ZDE3MDNhODY5MmVhMzViYTM2NDcuLmQyOTkwOWEzNDk3ZGM0YTQ5YTdhZjBkNmQz
MjQ5NDk4ZDE3MjU2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2Vy
aWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZmluZE1hc3RlcktleSgpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGtl
eURhdGEgPSBhZG9wdENGKGtleURhdGFSZWYpOwotICAgIHJldHVybiBiYXNlNjREZWNvZGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlEYXRhLmdldCgp
KSksIENGRGF0YUdldExlbmd0aChrZXlEYXRhLmdldCgpKSk7CisgICAgcmV0dXJuIGJhc2U2NERl
Y29kZShDRkRhdGFHZXRCeXRlUHRyKGtleURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5
RGF0YS5nZXQoKSkpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVmYXVs
dFdlYkNyeXB0b01hc3RlcktleSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERh
dGFEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZWQ4NTY2NDdhMzk5ZDY1YjA4MTExN2I4NjkwNDE1
ZDI0MjlhZjc3MC4uN2IyYjQ1MDMxY2I1MDUzY2I2NDU2ZDhlYzY0ZDhiY2M3ZTA2NGU2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyOjpEZWNvZGVkRGF0YURv
Y3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCkKIHsKIH0KIAotdm9pZCBEZWNvZGVkRGF0
YURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYgd3JpdGVyLCBjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEZWNvZGVkRGF0YURvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYgd3JpdGVyLCBjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaAppbmRl
eCBiYmIwNmEzZThhN2RkMDFmZGYxZDJmOTFjZmY0NTEwYmQ0ZTY3ZDE2Li45NTU4MmEwZDY5Mzkw
YjJhNTE2MjM1ZWU2M2ZiZmJjMzBjNWJkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGFwcGVuZChSZWZQdHI8U3RyaW5nSW1wbD4mJikgb3ZlcnJpZGUgPSAwOwogCiAgICAg
Ly8gYXBwZW5kQnl0ZXMgYW5kIGZsdXNoIGFyZSB1c2VkIGJ5IERvY3VtZW50V3JpdGVyICh0aGUg
bG9hZGVyKS4KLSAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hh
ciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5kQnl0ZXMo
RG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBmbHVzaChEb2N1bWVudFdyaXRlciYpIG92ZXJyaWRlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAppbmRleCA5Y2JlOTJhMzI3ZmQyNTJlOGVlMDMy
NDk5M2Q3NTI0MmFlNWY1MGM3Li43YzRjM2QyZTdkY2U4Yzk5NzUwMGE0ZTZkYjU5ZDAwZGJhNmEw
NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluc2VydChTZWdtZW50ZWRTdHJpbmcmJikgPSAwOwog
CiAgICAgLy8gYXBwZW5kQnl0ZXMgYW5kIGZsdXNoIGFyZSB1c2VkIGJ5IERvY3VtZW50V3JpdGVy
ICh0aGUgbG9hZGVyKS4KLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0
ZXImLCBjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBz
aXplX3QgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoKERvY3VtZW50V3JpdGVy
JikgPSAwOwogCiAgICAgLy8gRklYTUU6IGFwcGVuZCgpIHNob3VsZCBiZSBwcml2YXRlLCBidXQg
RG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudCB1c2VzIGl0IGZvciBub3cuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKaW5kZXggMDk0ZWM4N2Y2NWFjMjc1
YjU3YjA4MWQwYmMyMmRlNWZiYjlhZDg5Ny4uZGUzODk5MjFhYzZkYzBlMDBjZTQ2OTliNDc2OGJi
YThjZWFkN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVu
dFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIu
aApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2goRG9jdW1lbnRXcml0
ZXImIHdyaXRlcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBhcHBlbmRC
eXRlcyBpcyBjYWxsZWQgYXQgbGVhc3Qgb25jZS4KLSAgICAgICAgYXBwZW5kQnl0ZXMod3JpdGVy
LCAwLCAwKTsKKyAgICAgICAgYXBwZW5kQnl0ZXMod3JpdGVyLCBudWxscHRyLCAwKTsKICAgICB9
CiAKICAgICB2b2lkIGluc2VydChTZWdtZW50ZWRTdHJpbmcmJikgb3ZlcnJpZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDQ1MzhjZjc2OTA1MTIwOWNhMzk5MjcyYzBk
OWFjODI2MzdmZDFmNGUuLmZhOWJkYWYyMjExN2E3YzE4N2FjMGJmZjhiNjMwNzMxODEwODQ3ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtOTIsNyArOTIsNyBAQCBw
cml2YXRlOgogCiAgICAgSW1hZ2VEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIAotICAgIHZv
aWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhf
dCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2goKSBvdmVycmlkZTsKIH07CiAK
QEAgLTE4Nyw3ICsxODcsNyBAQCBpbmxpbmUgSW1hZ2VEb2N1bWVudCYgSW1hZ2VEb2N1bWVudFBh
cnNlcjo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxJbWFnZURvY3VtZW50
PigqUmF3RGF0YURvY3VtZW50UGFyc2VyOjpkb2N1bWVudCgpKTsKIH0KIAotdm9pZCBJbWFnZURv
Y3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBz
aXplX3QpCit2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3Jp
dGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkKIHsKICAgICBkb2N1bWVudCgpLnVwZGF0ZUR1
cmluZ1BhcnNpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4
IDdjYjM5ZWQ1Njc5ODZmOTg5ZGY4ZjJmZjA2MGE0YmU2YjUyOTU0ZTUuLmU5ZTkwM2FmZWI3ZTQ4
N2NkYjEyNmVhMjcyOTc3YzZkNjZiZmQ0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3Vt
ZW50LmNwcApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2
b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVfdCkgZmlu
YWw7CisgICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIAog
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50IHsgbnVsbHB0ciB9OwpAQCAtMTMw
LDcgKzEzMCw3IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1
Y3R1cmUoKQogICAgIGZyYW1lLT5sb2FkZXIoKS5zZXRPdXRnb2luZ1JlZmVycmVyKGRvY3VtZW50
LmNvbXBsZXRlVVJMKG1fb3V0Z29pbmdSZWZlcnJlcikpOwogfQogCi12b2lkIE1lZGlhRG9jdW1l
bnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVf
dCkKK3ZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIm
LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KQogewogICAgIGlmIChtX21lZGlhRWxlbWVudCkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAppbmRleCBk
NTg4MmZiMjg1NWQ5NzhkMzQxNjFiNDVjYWRmZDMxMGM2MDIwZmEwLi5lM2EzZGE2ZmYyNDcxOWJm
Yzk3NTJkZmU1NTNhMTYzNzY0ZGU2YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BsdWdpbkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3Vt
ZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2
b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVfdCkgZmlu
YWw7CisgICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIAog
ICAgIEhUTUxFbWJlZEVsZW1lbnQqIG1fZW1iZWRFbGVtZW50IHsgbnVsbHB0ciB9OwpAQCAtMTEw
LDcgKzExMCw3IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3Ry
dWN0dXJlKCkKICAgICBkb2N1bWVudC5zZXRIYXNWaXN1YWxseU5vbkVtcHR5Q3VzdG9tQ29udGVu
dCgpOwogfQogCi12b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVu
dFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXplX3QpCit2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2Vy
OjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpCiB7
CiAgICAgaWYgKG1fZW1iZWRFbGVtZW50KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAppbmRleCAxMGQ3MTgyZTIyOGExNGM4ZjQy
YzcyYTZkZDM3MDA2MDE5NjFlYmZmLi5iYjEyYzE1OWRlNzRmOTI5NDUzNjk1NDFkNzg3MmU2YzVj
MWFjYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRU
cmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgK
QEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5i
YW5kR2VuZXJpY0N1ZSYpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAg
IHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKSBvdmVycmlkZSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9Ci0gICAgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hhcios
IHVuc2lnbmVkKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBw
YXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKSBvdmVycmlkZSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoSVNPV2Vi
VlRUQ3VlJiYpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIE1lZGlh
VGltZSBzdGFydFRpbWVWYXJpYW5jZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCmluZGV4IDA1ZDc1
MTAxYjVjMWI4MWJjNmU5ZDQyMjNkNTg5ZTE3MTBmODgwM2MuLmEyMjI4YmMxN2VhMzU2ZjYwNTIy
OGM1NGVjZTM3MGRjNGZjZDQ5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV2ViVlRUUGFy
c2VyJiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlcigpCiAgICAgcmV0dXJuICptX3dlYlZU
VFBhcnNlcjsKIH0KIAotdm9pZCBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlV2ViVlRUQ3Vl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIEluYmFuZFdlYlZU
VFRleHRUcmFjazo6cGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKICAgICBwYXJzZXIoKS5wYXJzZUJ5dGVzKGRhdGEsIGxlbmd0aCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRU
cmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2su
aAppbmRleCA4NGVlMGU1NzQwZGM2Mzc3MzJkZTM4YTI4YzM5OTJlNzYzYTJjZjQ5Li4zMTUyMzU3
MjliNWZiZDk5ZjYzNGZhN2Q2Yzc3NmMyN2JjNmMxYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHJpdmF0ZToKICAgICBJbmJhbmRXZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tD
bGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAKICAgICBXZWJWVFRQYXJzZXImIHBh
cnNlcigpOwotICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHBhcnNlV2Vi
VlRUQ3VlRGF0YShJU09XZWJWVFRDdWUmJikgZmluYWw7CiAKICAgICB2b2lkIG5ld0N1ZXNQYXJz
ZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApp
bmRleCA5ZjFkMmQ0YmJiNWY3ZDcyM2U0MjMzYTVkMTZlNDIyN2MzOTE3YjExLi5kNTNjYTZhM2I3
ZTZkZWQwZGM3MTdlZjVmNTg4NTA3YWM3NTkzYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJWVFRQYXJz
ZXI6OnBhcnNlRmlsZUhlYWRlcihTdHJpbmcmJiBkYXRhKQogICAgIHBhcnNlKCk7CiB9CiAKLXZv
aWQgV2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKK3ZvaWQgV2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBtX2xpbmVSZWFkZXIuYXBwZW5kKG1fZGVjb2Rlci0+
ZGVjb2RlKGRhdGEsIGxlbmd0aCkpOwogICAgIHBhcnNlKCk7CkBAIC0yMjUsNyArMjI1LDggQEAg
dm9pZCBXZWJWVFRQYXJzZXI6OnBhcnNlKCkKIHZvaWQgV2ViVlRUUGFyc2VyOjpmaWxlRmluaXNo
ZWQoKQogewogICAgIEFTU0VSVChtX3N0YXRlICE9IEZpbmlzaGVkKTsKLSAgICBwYXJzZUJ5dGVz
KCJcblxuIiwgMik7CisgICAgY29uc3QgdWludDhfdCBlbmRMaW5lc1tdID0gIlxuXG4iOworICAg
IHBhcnNlQnl0ZXMoZW5kTGluZXMsIDIpOwogICAgIG1fc3RhdGUgPSBGaW5pc2hlZDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgKaW5kZXggZmEzM2EyY2YwZTNm
MDY4NDliNzBhZmVhMzA3YjgzNjlmZTMxYmI2Yy4uMTI4NTUyMDkxNzQzODVkMDUyMDhkYzdhNDA0
ZGJhYTMxZmYwNjc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5o
CkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBhcnNlRmxvYXRQ
ZXJjZW50YWdlVmFsdWVQYWlyKFZUVFNjYW5uZXImIHZhbHVlU2Nhbm5lciwgY2hhciwgRmxvYXRQ
b2ludCYpOwogCiAgICAgLy8gSW5wdXQgZGF0YSB0byB0aGUgcGFyc2VyIHRvIHBhcnNlLgotICAg
IHZvaWQgcGFyc2VCeXRlcyhjb25zdCBjaGFyKiwgdW5zaWduZWQpOworICAgIHZvaWQgcGFyc2VC
eXRlcyhjb25zdCB1aW50OF90KiwgdW5zaWduZWQpOwogICAgIHZvaWQgcGFyc2VGaWxlSGVhZGVy
KFN0cmluZyYmKTsKICAgICB2b2lkIHBhcnNlQ3VlRGF0YShjb25zdCBJU09XZWJWVFRDdWUmKTsK
ICAgICB2b2lkIGZsdXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNw
cAppbmRleCBiZmRjMmIyYjFkNzkzMmI1ZTRmMDAwODMyODljMDUwNDc3N2VhMjZmLi4wZTQwZDk1
MGEyN2Q2MzJmNDIwOTQxNGQyZWEwNDdiODRiMzJhMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIERvY3VtZW50V3Jp
dGVyOjpyZXBvcnREYXRhUmVjZWl2ZWQoKQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlc29s
dmVTdHlsZShEb2N1bWVudDo6UmVzb2x2ZVN0eWxlVHlwZTo6UmVidWlsZCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnRXcml0ZXI6OmFkZERhdGEoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgp
Cit2b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhlc2UgdG8gQVNTRVJUIG9uY2Ug
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDI3IGhhcyBiZWVuIHJl
c29sdmVkLgogICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6Ok5vdFN0YXJ0ZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCA4NWMwYTM4NmNkYzIx
NDcyNzA0YWNiOWMwZjRmMmQ2MDQ4OTEwMjlmLi43MGZkMjBjMTM3M2FjMGRjOWI0NDQ5NTRjM2Ey
MDQwNmYyMWI4YzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRX
cml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApAQCAt
NDcsOCArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdp
bihjb25zdCBVUkwmLCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwg
RG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBudWxscHRyKTsKLSAgICB2b2lkIGFkZERhdGEoY29u
c3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkgeyBhZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGJ5dGVzKSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgYWRkRGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAgICAgdm9pZCBpbnNlcnREYXRhU3luY2hy
b25vdXNseShjb25zdCBTdHJpbmcmKTsgLy8gRm9yIGFuIGludGVybmFsIHVzZSBvbmx5IHRvIHBy
ZXZlbnQgdGhlIHBhcnNlciBmcm9tIHlpZWxkaW5nLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAKaW5kZXggYTZjMjY4
OTJkYTYxNGM1MTBmNDA1YzY4OGRjYWZjZTg4MTEzNGQ0Mi4uYTY4NzExZjZjMjE5ZjdhNDhhYjNh
NmUxNmY1NWViMGU2NDA1ZmMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Np
bmtEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICAvLyBJZ25vcmUgYWxs
IGRhdGEuCi0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIq
LCBzaXplX3QpIG92ZXJyaWRlCisgICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYs
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlCiAgICAgewogICAgIH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IGRkODg5MzVkYWI2NDVi
NTBjOTA4YTUyZjlkN2YxODBkYjFmZTIwOWUuLjhjYzNjNTY4YzQzNzk2YWM2MWIzMDk3NTQ3YTg5
ZWY4MTJkOThkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3Bw
CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0
YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKICAgICB3aGlsZSAobV9wYXJzZU9mZnNldCA8
IGJ1ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEobV9wYXJzZU9mZnNldCk7Ci0gICAgICAgIG1fY3VlUGFyc2VyLT5wYXJzZUJ5dGVzKGRhdGEu
ZGF0YUFzQ2hhclB0cigpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIG1fY3VlUGFyc2VyLT5wYXJz
ZUJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1fcGFyc2VPZmZzZXQg
Kz0gZGF0YS5zaXplKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCBkNGNhZjRkNWY5
ZWE3NjZjNjAwMGY4ZmY3MzZjMjQ3YzEzMjNiM2QwLi5mMjY0ZjFkZDcxMjNkNjkyYzY1N2YxZWNl
MTQ5OTRjNDE5NjMzNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA2LDcgKzYwNiw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAg
ICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9u
Q2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YUFzQ2hhclB0cigp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICgh
bWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNr
IG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFy
c2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
IkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQg
c3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFy
c2VyLmNwcAppbmRleCBjOGE5YmJkZTNlMzdkYTA1NzdlOTA0MWUxOTk2M2U0NGYxYTI1MzJhLi5i
ODdkZDgzNTA2MDdjMjRiZTI1NmUzNDQxYmVkMmQzNzY3ZTA5NTUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0UGFyc2VyLmNwcApAQCAtNzIsNyArNzIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgY2FjaGVNb2RlSWRl
bnRpZgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBD
aGFyYWN0ZXJUeXBlIGZhbGxiYWNrTW9kZUlkZW50aWZpZXJbXSA9IHsgJ0YnLCAnQScsICdMJywg
J0wnLCAnQicsICdBJywgJ0MnLCAnSycgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBuZXR3b3JrTW9kZUlkZW50aWZpZXJb
XSA9IHsgJ04nLCAnRScsICdUJywgJ1cnLCAnTycsICdSJywgJ0snIH07CiAKLXN0ZDo6b3B0aW9u
YWw8QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0PiBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUs
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9u
Q2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBt
YW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciBj
YWNoZU1hbmlmZXN0TUlNRVR5cGVbXSA9ICJ0ZXh0L2NhY2hlLW1hbmlmZXN0IjsKICAgICBib29s
IGFsbG93RmFsbGJhY2tOYW1lc3BhY2VPdXRzaWRlTWFuaWZlc3RQYXRoID0gZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobWFuaWZlc3RNSU1FVHlwZSwgY2FjaGVNYW5pZmVzdE1JTUVUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlTWFuaWZlc3RQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuaAppbmRleCAwYmY5ZjlmMTZhNWFmNjlmY2Fm
YTAxNjlkOWU2NjQ0MWIxZjlmODYyLi43MDBjMWJjOGVjY2NlOThkODM4OTEwODQxMmQ1MzExMWYx
NmQ1ZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5oCkBAIC00MSw2ICs0MSw2IEBA
IHN0cnVjdCBBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QgewogICAgIGJvb2wgYWxsb3dBbGxOZXR3
b3JrUmVxdWVzdHMgeyBmYWxzZSB9OyAvLyBXaWxkY2FyZCBmb3VuZCBpbiBORVRXT1JLIHNlY3Rp
b24uCiB9OwogCi1zdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VB
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3Ry
aW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK3N0
ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0PiBwYXJzZUFwcGxpY2F0aW9uQ2Fj
aGVNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0
TUlNRVR5cGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwCmluZGV4IDc5MTFjYTJiNzc1NzRkZWY5ZGM0ZTFj
MzIyMzYwZDJmOTUzN2MyMjkuLjlhYWU5ZTgxYWI0MWQ1NDc0NjgxNTQwMzUxNzg2MGZhZDMzY2U3
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Zp
bGVSZWFkZXJJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb0ZpbGVSZWFkZXJJT1MuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgT1NTdGF0dXMgQXVkaW9G
aWxlUmVhZGVyOjpyZWFkUHJvYyh2b2lkKiBjbGllbnREYXRhLCBTSW50NjQgcG9zaXRpb24sIFVJ
bnQzMiByZXEKICAgICBpZiAoc3RhdGljX2Nhc3Q8VUludDY0Pihwb3NpdGlvbikgPCBkYXRhU2l6
ZSkgewogICAgICAgICBzaXplX3QgYnl0ZXNBdmFpbGFibGUgPSBkYXRhU2l6ZSAtIHN0YXRpY19j
YXN0PHNpemVfdD4ocG9zaXRpb24pOwogICAgICAgICBieXRlc1RvUmVhZCA9IHJlcXVlc3RDb3Vu
dCA8PSBieXRlc0F2YWlsYWJsZSA/IHJlcXVlc3RDb3VudCA6IGJ5dGVzQXZhaWxhYmxlOwotICAg
ICAgICBtZW1jcHkoYnVmZmVyLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkgKyBwb3Np
dGlvbiwgYnl0ZXNUb1JlYWQpOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSkgKyBwb3NpdGlvbiwgYnl0ZXNUb1JlYWQpOwogICAgIH0KIAog
ICAgIGlmIChhY3R1YWxDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAKaW5kZXggNzVjZGMwZmE4MjE0NDAz
OThhNzNiYTc4MjE0ZWYyNmY2MTYwMGYzNy4uNWFhNzg5YTJjYzYyZmViZGMwMWNjMzVhM2Y3ZTU2
ODFlMzdlMTliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgT1NTdGF0dXMg
QXVkaW9GaWxlUmVhZGVyOjpyZWFkUHJvYyh2b2lkKiBjbGllbnREYXRhLCBTSW50NjQgcG9zaXRp
b24sIFVJbnQzMiByZXEKICAgICBpZiAoc3RhdGljX2Nhc3Q8VUludDY0Pihwb3NpdGlvbikgPCBk
YXRhU2l6ZSkgewogICAgICAgICBzaXplX3QgYnl0ZXNBdmFpbGFibGUgPSBkYXRhU2l6ZSAtIHN0
YXRpY19jYXN0PHNpemVfdD4ocG9zaXRpb24pOwogICAgICAgICBieXRlc1RvUmVhZCA9IHJlcXVl
c3RDb3VudCA8PSBieXRlc0F2YWlsYWJsZSA/IHJlcXVlc3RDb3VudCA6IGJ5dGVzQXZhaWxhYmxl
OwotICAgICAgICBtZW1jcHkoYnVmZmVyLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSkg
KyBwb3NpdGlvbiwgYnl0ZXNUb1JlYWQpOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSkgKyBwb3NpdGlvbiwgYnl0ZXNUb1JlYWQpOwogICAg
IH0gZWxzZQogICAgICAgICBieXRlc1RvUmVhZCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVD
bGllbnQuaAppbmRleCA1ZTVkMzk4MGI4MDRhZjQyYjg1MGM1YmVmMjgzNGU1MDE2ZmYxZGQ5Li45
NTRlNTQxZDE4ZmIxYTM3ZjJkMDc1ZmM2ZjRlOGVhOWQ4ZTNjMzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUNsaWVudC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJikgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRU
Q3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYmKSA9IDA7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggZWE4ZTEwNzJhOTcxZjcxMjE3MTcwYjYxM2U3YWU3NjhiYWVkZmVjNi4uNGMxY2I4
YWM5NjY1YWViYzcxY2Q4MjBhYmFjMzRkODg3MjU0MzExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTI1LDcgKzEyNSw3
IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNh
bXBsZSgpCiAKICAgICAgICAgR1NUX0lORk8oIlRyYWNrICVkIHBhcnNpbmcgc2FtcGxlOiAlLipz
IiwgbV9pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihtYXBwZWRCdWZmZXIuc2l6ZSgpKSwKICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1hcHBlZEJ1ZmZlci5kYXRhKCkpKTsKLSAg
ICAgICAgY2xpZW50KCktPnBhcnNlV2ViVlRUQ3VlRGF0YShyZWludGVycHJldF9jYXN0PGNoYXIq
PihtYXBwZWRCdWZmZXIuZGF0YSgpKSwgbWFwcGVkQnVmZmVyLnNpemUoKSk7CisgICAgICAgIGNs
aWVudCgpLT5wYXJzZVdlYlZUVEN1ZURhdGEobWFwcGVkQnVmZmVyLmRhdGEoKSwgbWFwcGVkQnVm
ZmVyLnNpemUoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcAppbmRleCBmZWY2NjUxMjhhYzkwYzFiMDBhMzdiODg4NzNlZDcxMTc0YjA3Nzc0Li4zMzAy
OGE1ZTk0YzljZTcwNGExMzhmMDNiOTM0ZGMxMWUyOWRlMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE5pY29zaWFJbWFn
ZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQog
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNldChzaXplLCBuYXRpdmVJbWFnZS0+aGFz
QWxwaGEoKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpO
b0ZsYWcpOwogI2lmIFVTRShDQUlSTykKICAgICAgICAgICAgICAgICAgICAgYXV0byogc3VyZmFj
ZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGF1dG8qIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOworICAgICAgICAgICAgICAgICAgICBh
dXRvKiBpbWFnZURhdGEgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpOwog
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZURhdGEsIElu
dFJlY3QoSW50UG9pbnQoKSwgc2l6ZSksIEludFBvaW50KCksIGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3N0cmlkZShzdXJmYWNlKSk7CiAjZWxzZQogICAgICAgICAgICAgICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCAzNjJiNjQyZTUwOGI4MDc5MDEz
ZWZkYWZlMGQ0YTgxZWFhYTE3ZjFmLi42NzBlMzdkM2ZiZDczMzc4M2JjYzhmNzU5YjVkMDdmNjhi
ZWUyZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMTA0LDggKzEwNCw4IEBAIHZvaWQg
Qml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25z
dCBJbnRSZWN0JiB0YXJnZXRSCiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lk
KTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0OwotICAgIGNvbnN0IGNo
YXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc3JjRGF0YSk7Ci0gICAgVmVjdG9y
PGNoYXI+IHRlbXBvcmFyeURhdGE7CisgICAgY29uc3QgdWludDhfdCogZGF0YSA9IHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihzcmNEYXRhKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdGVtcG9y
YXJ5RGF0YTsKICAgICBJbnRQb2ludCBhZGp1c3RlZFNvdXJjZU9mZnNldCA9IHNvdXJjZU9mZnNl
dDsKIAogICAgIC8vIFRleHR1cmUgdXBsb2FkIHJlcXVpcmVzIHN1YmltYWdlIGJ1ZmZlciBpZiBk
cml2ZXIgZG9lc24ndCBzdXBwb3J0IHN1YmltYWdlIGFuZCB3ZSBkb24ndCBoYXZlIGZ1bGwgaW1h
Z2UgdXBsb2FkLgpAQCAtMTE1LDEwICsxMTUsMTAgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVw
ZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFIK
ICAgICAvLyBwcmVwYXJlIHRlbXBvcmFyeURhdGEgaWYgbmVjZXNzYXJ5CiAgICAgaWYgKHJlcXVp
cmVTdWJJbWFnZUJ1ZmZlcikgewogICAgICAgICB0ZW1wb3JhcnlEYXRhLnJlc2l6ZSh0YXJnZXRS
ZWN0LndpZHRoKCkgKiB0YXJnZXRSZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQaXhlbCk7Ci0gICAg
ICAgIGNoYXIqIGRzdCA9IHRlbXBvcmFyeURhdGEuZGF0YSgpOworICAgICAgICB1aW50OF90KiBk
c3QgPSB0ZW1wb3JhcnlEYXRhLmRhdGEoKTsKICAgICAgICAgZGF0YSA9IGRzdDsKLSAgICAgICAg
Y29uc3QgY2hhciogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzcmNEYXRhKTsKLSAg
ICAgICAgY29uc3QgY2hhciogc3JjID0gYml0cyArIHNvdXJjZU9mZnNldC55KCkgKiBieXRlc1Bl
ckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsKKyAgICAgICAgY29uc3Qg
dWludDhfdCogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzcmNEYXRhKTsKKyAg
ICAgICAgY29uc3QgdWludDhfdCogc3JjID0gYml0cyArIHNvdXJjZU9mZnNldC55KCkgKiBieXRl
c1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsKICAgICAgICAgY29u
c3QgaW50IHRhcmdldEJ5dGVzUGVyTGluZSA9IHRhcmdldFJlY3Qud2lkdGgoKSAqIGJ5dGVzUGVy
UGl4ZWw7CiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGFyZ2V0UmVjdC5oZWlnaHQoKTsg
Kyt5KSB7CiAgICAgICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIHRhcmdldEJ5dGVzUGVyTGluZSk7
CkBAIC0xNTcsMTEgKzE1NywxMSBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVu
dHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjbwogICAgICAgICBy
ZXR1cm47CiAKICAgICBpbnQgYnl0ZXNQZXJMaW5lOwotICAgIGNvbnN0IGNoYXIqIGltYWdlRGF0
YTsKKyAgICBjb25zdCB1aW50OF90KiBpbWFnZURhdGE7CiAKICNpZiBVU0UoQ0FJUk8pCiAgICAg
Y2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpOwotICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOworICAgIGltYWdlRGF0YSA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAgYnl0ZXNQZXJMaW5lID0gY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogI2VsaWYgVVNFKERJUkVDVDJE
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCA2ZDM5MTUwNzEwOGMxYmVlMjY1YTcxOGRhMDQ3NWIwNThmODIyNjgyLi5mZDM0NWJiNzg2
ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXIt
PmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSks
IG1hcmtlclNpemUpOworICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7
CiAgICAgfQogCiAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAxM2EyMzJjMTI4YTk3
NWUwY2IwYzM1NzliODUwZGMyODdmMmVkZWEwLi5mNWY4NTU4NzFmYzcwODU2NmY3ZWY4YjlhMTYx
ZTI3YjhlNWQ4OWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXVz
ZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAKLSAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgY2hh
ciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OwogCiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGF1
ZGlvQml0UmF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IGQ3MTA1YzJmYTQwMGNhZmU4ODNkMmI2Yjc1MWQ5
NzI1YWZjZTk3YmQuLjYzYmQ2NTk4ZDAyYTVjNzAwNmRhOTI5ZmM5NGYxZjVmNjZhNzE2ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
bW0KQEAgLTc0LDE0ICs3NCwxNCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyJil3cml0ZXIKIC0gKHZvaWQpYXNzZXRX
cml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJhZ21lbnRlZEhl
YWRlckRhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRIZWFkZXJEYXRhCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGFzc2V0V3JpdGVyKTsKLSAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkSGVh
ZGVyRGF0YSBsZW5ndGhdKTsKKyAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVk
SGVhZGVyRGF0YSBsZW5ndGhdKTsKIH0KIAogLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdy
aXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkTWVkaWFEYXRhOihOU0RhdGEg
KilmcmFnbWVudGVkTWVkaWFEYXRhIGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQ6KEFWRnJhZ21l
bnRlZE1lZGlhRGF0YVJlcG9ydCAqKWZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQKIHsKICAgICBV
TlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOwogICAgIFVOVVNFRF9QQVJBTShmcmFnbWVudGVkTWVk
aWFEYXRhUmVwb3J0KTsKLSAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURh
dGEgbGVuZ3RoXSk7CisgICAgbV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KFtmcmFnbWVudGVkTWVkaWFEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkTWVkaWFE
YXRhIGxlbmd0aF0pOwogfQogCiAtICh2b2lkKWNsb3NlCkBAIC01MzEsNyArNTMxLDcgQEAgdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEoKQogICAgIG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIodGFrZURhdGEoKSwgY3VycmVudFRpbWVDb2RlKTsK
IH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKICAgICBpZiAoIW1fZGF0YSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA3YWRkY2Uz
OTgzMDk3ODdjM2QzYWFmMGM0ZWNlNDQ0NDBiNjhhNjM2Li5iOGExNTNmYzFjMThlMzdhN2Q4YmEz
YzhmZTdjOGUwZGU3YTNlYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMzEwLDcgKzMxMCw4IEBAIGJvb2wgaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAjZW5kaWYKIAogc3RhdGljIGNv
bnN0IHNpemVfdCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7Ci1zdGF0aWMgU3RyaW5nIHRyaW1J
bnB1dFNhbXBsZShjb25zdCBjaGFyKiBwLCBzaXplX3QgbGVuZ3RoKQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhclR5cGU+CitzdGF0aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShDaGFyVHlwZSogcCwg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICBTdHJpbmcgcyA9IFN0cmluZyhwLCBzdGQ6Om1pbjxzaXpl
X3Q+KGxlbmd0aCwgbWF4SW5wdXRTYW1wbGVTaXplKSk7CiAgICAgaWYgKGxlbmd0aCA+IG1heElu
cHV0U2FtcGxlU2l6ZSkKQEAgLTYzMSwxNCArNjMyLDE1IEBAIGJvb2wgcGFyc2VSYW5nZShjb25z
dCBTdHJpbmcmIHJhbmdlLCBsb25nIGxvbmcmIHJhbmdlT2Zmc2V0LCBsb25nIGxvbmcmIHJhbmdl
RW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkSGVh
ZGVyTmFtZUNoYXJhY3Rlcihjb25zdCBjaGFyKiBjaGFyYWN0ZXIpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRIZWFkZXJOYW1lQ2hh
cmFjdGVyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQogewogICAgIC8vIGh0dHBzOi8vdG9vbHMu
aWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yCiAgICAgLy8gQSBoZWFkZXIgbmFtZSBz
aG91bGQgb25seSBjb250YWluIG9uZSBvciBtb3JlIG9mCiAgICAgLy8gYWxwaGFudW1lcmljIG9y
ICEgIyAkICUgJiAnICogKyAtIC4gXiBfIGAgfCB+Ci0gICAgaWYgKGlzQVNDSUlBbHBoYW51bWVy
aWMoKmNoYXJhY3RlcikpCisgICAgaWYgKGlzQVNDSUlBbHBoYW51bWVyaWMoY2hhcmFjdGVyKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgc3dpdGNoICgqY2hhcmFjdGVyKSB7CisgICAgc3dp
dGNoIChjaGFyYWN0ZXIpIHsKICAgICBjYXNlICchJzoKICAgICBjYXNlICcjJzoKICAgICBjYXNl
ICckJzoKQEAgLTY2MCwxNiArNjYyLDE2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkSGVh
ZGVyTmFtZUNoYXJhY3Rlcihjb25zdCBjaGFyKiBjaGFyYWN0ZXIpCiAgICAgfQogfQogCi1zaXpl
X3QgcGFyc2VIVFRQSGVhZGVyKGNvbnN0IGNoYXIqIHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24sIFN0cmluZ1ZpZXcmIG5hbWVTdHIsIFN0cmluZyYgdmFsdWVTdHIs
IGJvb2wgc3RyaWN0KQorc2l6ZV90IHBhcnNlSFRUUEhlYWRlcihjb25zdCB1aW50OF90KiBzdGFy
dCwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdWaWV3JiBuYW1l
U3RyLCBTdHJpbmcmIHZhbHVlU3RyLCBib29sIHN0cmljdCkKIHsKLSAgICBjb25zdCBjaGFyKiBw
ID0gc3RhcnQ7Ci0gICAgY29uc3QgY2hhciogZW5kID0gc3RhcnQgKyBsZW5ndGg7CisgICAgY29u
c3QgdWludDhfdCogcCA9IHN0YXJ0OworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHN0YXJ0ICsg
bGVuZ3RoOwogCi0gICAgVmVjdG9yPGNoYXI+IG5hbWU7Ci0gICAgVmVjdG9yPGNoYXI+IHZhbHVl
OworICAgIFZlY3Rvcjx1aW50OF90PiBuYW1lOworICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZTsK
IAogICAgIGJvb2wgZm91bmRGaXJzdE5hbWVDaGFyID0gZmFsc2U7Ci0gICAgY29uc3QgY2hhciog
bmFtZVB0ciA9IG51bGxwdHI7CisgICAgY29uc3QgdWludDhfdCogbmFtZVB0ciA9IG51bGxwdHI7
CiAgICAgc2l6ZV90IG5hbWVTaXplID0gMDsKIAogICAgIG5hbWVTdHIgPSBTdHJpbmdWaWV3KCk7
CkBAIC02OTIsNyArNjk0LDcgQEAgc2l6ZV90IHBhcnNlSFRUUEhlYWRlcihjb25zdCBjaGFyKiBz
dGFydCwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLAogICAgICAgICBjYXNl
ICc6JzoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
aWYgKCFpc1ZhbGlkSGVhZGVyTmFtZUNoYXJhY3RlcihwKSkgeworICAgICAgICAgICAgaWYgKCFp
c1ZhbGlkSGVhZGVyTmFtZUNoYXJhY3RlcigqcCkpIHsKICAgICAgICAgICAgICAgICBpZiAobmFt
ZS5zaXplKCkgPCAxKQogICAgICAgICAgICAgICAgICAgICBmYWlsdXJlUmVhc29uID0gIlVuZXhw
ZWN0ZWQgc3RhcnQgY2hhcmFjdGVyIGluIGhlYWRlciBuYW1lIjsKICAgICAgICAgICAgICAgICBl
bHNlCkBAIC03NDcsNyArNzQ5LDcgQEAgc2l6ZV90IHBhcnNlSFRUUEhlYWRlcihjb25zdCBjaGFy
KiBzdGFydCwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLAogICAgIHJldHVy
biBwIC0gc3RhcnQ7CiB9CiAKLXNpemVfdCBwYXJzZUhUVFBSZXF1ZXN0Qm9keShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIGJvZHkpCitzaXpl
X3QgcGFyc2VIVFRQUmVxdWVzdEJvZHkoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgVmVjdG9yPHVpbnQ4X3Q+JiBib2R5KQogewogICAgIGJvZHkuY2xlYXIoKTsKICAgICBib2R5
LmFwcGVuZChkYXRhLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5oCmluZGV4IGE4NjllZjc5YmI1ZDIxYmEzOWJiMmMwNmU5Y2U4Y2YzZDM4
Zjk4NDAuLjFiMWE0ZDBiYTgzOGIyZDBhMzI1NTRjNzM5ZDg5YjYxYWFjNzg1ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTkxLDggKzkx
LDggQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXJzZVJhbmdlKGNvbnN0IFN0cmluZyYsIGxvbmcg
bG9uZyYgcmFuZ2VPZmZzZXQsIGxvbmcgbG9uZyYKIENvbnRlbnRUeXBlT3B0aW9uc0Rpc3Bvc2l0
aW9uIHBhcnNlQ29udGVudFR5cGVPcHRpb25zSGVhZGVyKFN0cmluZ1ZpZXcgaGVhZGVyKTsKIAog
Ly8gUGFyc2luZyBDb21wbGV0ZSBIVFRQIE1lc3NhZ2VzLgotc2l6ZV90IHBhcnNlSFRUUEhlYWRl
cihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24s
IFN0cmluZ1ZpZXcmIG5hbWVTdHIsIFN0cmluZyYgdmFsdWVTdHIsIGJvb2wgc3RyaWN0ID0gdHJ1
ZSk7Ci1zaXplX3QgcGFyc2VIVFRQUmVxdWVzdEJvZHkoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBib2R5KTsKK3NpemVfdCBwYXJzZUhUVFBI
ZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJl
UmVhc29uLCBTdHJpbmdWaWV3JiBuYW1lU3RyLCBTdHJpbmcmIHZhbHVlU3RyLCBib29sIHN0cmlj
dCA9IHRydWUpOworc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5KGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1aW50OF90PiYgYm9keSk7CiAKIC8vIEhUVFAgSGVh
ZGVyIHJvdXRpbmUgYXMgcGVyIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyN0ZXJtaW5v
bG9neS1oZWFkZXJzCiBib29sIGlzRm9yYmlkZGVuSGVhZGVyTmFtZShjb25zdCBTdHJpbmcmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlLmNwcAppbmRleCBkNmM4Y2I5MDE3MGZlZGZjMWI1NWNlNWQ3ZWNkODJmNWNmODBhMzky
Li42ZGUxYTNmOGExZjliNjNkMWU3MWZiM2FhN2NlNDI1MzQxYTY1MWQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3Bw
CkBAIC01MCwxMSArNTAsMTEgQEAgU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1TdGF0
ZSBTb2NrZXRTdHJlYW1IYW5kbGU6OnN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9zdGF0ZTsK
IH0KIAotdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChtX3N0YXRlID09IENvbm5lY3RpbmcgfHwgbV9zdGF0ZSA9PSBDbG9zaW5nKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIHBsYXRmb3JtU2VuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGxhdGZvcm1TZW5kKGRhdGEsIGxlbmd0aCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6c2Vu
ZEhhbmRzaGFrZShDU3RyaW5nJiYgaGFuZHNoYWtlLCBzdGQ6Om9wdGlvbmFsPENvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5PiYmIGhlYWRlckZpZWxkUHJveHksIEZ1bmN0aW9uPHZvaWQoYm9v
bCwgYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggY2ExMWE2MTNhNjkxMGQ4
NjZiODU5N2UyYTI4MjM0NGRkMmUwZTc1My4uMGI5OTNkNzhjZDRhZWFhYmI5NGY3MzM5NjljZWQ4
OGZmMjk1OTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKSA9IGRlZmF1bHQ7CiAgICAgU29ja2V0U3RyZWFtU3Rh
dGUgc3RhdGUoKSBjb25zdDsKIAotICAgIHZvaWQgc2VuZERhdGEoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4pOworICAgIHZvaWQgc2VuZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4p
OwogICAgIHZvaWQgc2VuZEhhbmRzaGFrZShDU3RyaW5nJiYgaGFuZHNoYWtlLCBzdGQ6Om9wdGlv
bmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYmLCBGdW5jdGlvbjx2b2lkKGJvb2ws
IGJvb2wpPik7CiAgICAgdm9pZCBjbG9zZSgpOyAvLyBEaXNjb25uZWN0IGFmdGVyIGFsbCBkYXRh
IGluIGJ1ZmZlciBhcmUgc2VudC4KICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNs
aWVudC5oCmluZGV4IDYwYTIzZDVmNDc3NDk2MzY3ZTFiNjFiOWZlY2E5YmQxYTA2MmJmMmEuLjVk
ZTU1OWMwYWJkZWQ5MTUzY2NkZjA3N2U3ZTJiNTZlN2NiZThhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkT3Bl
blNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZENsb3NlU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiwg
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxU
b1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoU29ja2V0U3RyZWFtSGFuZGxlJiwg
c2l6ZV90IGJ1ZmZlcmVkQW1vdW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxTb2Nr
ZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Rvd25s
b2FkQnVuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Rvd25sb2Fk
QnVuZGxlLmgKaW5kZXggOGRlMjI0NWFhM2ZjYjI1MTAwYWU5MGFlOWZlNjA4YzRkYzg1NDNiNi4u
NzFmN2ViYjBmMzI2NGU2NDFlOTdmZmNiMWYwNGJiNjAxMjNjYjg1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRG93bmxvYWRCdW5kbGUuaApAQCAtMzEs
OCArMzEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERvd25sb2FkQnVuZGxl
IHsKIAotYm9vbCBhcHBlbmRSZXN1bWVEYXRhKGNvbnN0IGNoYXIqLCB1aW50MzJfdCwgY29uc3Qg
U3RyaW5nJiBidW5kbGVQYXRoKTsKLWJvb2wgZXh0cmFjdFJlc3VtZURhdGEoY29uc3QgU3RyaW5n
JiBidW5kbGVQYXRoLCBWZWN0b3I8Y2hhcj4mIHJlc3VtZURhdGEpOworYm9vbCBhcHBlbmRSZXN1
bWVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBidW5kbGVQYXRo
KTsKK2Jvb2wgZXh0cmFjdFJlc3VtZURhdGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0
b3I8dWludDhfdD4mIHJlc3VtZURhdGEpOwogY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKCk7
CiAKIH0gLy8gbmFtZXNwYWNlIERvd25sb2FkQnVuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxDRk5ldC5jcHAKaW5kZXggNjI1NDg1YmYxYzBlOGU1ODE5YmY2NTQwNTViZDM4NjQzNzE4M2E0
OC4uZDEzNzk0OThhYWI4MWVlMmNhN2FhMDg5YjFiNTBmOTk1YzI4Mjk0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcApAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgU29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6cmVhZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5
cGUpCiAgICAgICAgIGlmIChsZW5ndGggPT0gLTEpCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRG
YWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihwdHIpLCBsZW5ndGgpOworICAgICAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIHB0ciwgbGVuZ3RoKTsKIAogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggODQ4MTA3Y2M2YWRmMDU4ZGFh
ODhkODQ2ODAyYTM2ZmQ4ZDc3ZGUwNS4uMDViNGUyOWJjOTMxYzE0MzQ1YjQ3OTU5OGJhZWU2N2Vi
NGI2OGMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgQ3VybENhY2hl
RW50cnk6OmlzQ2FjaGVkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDdXJsQ2FjaGVF
bnRyeTo6c2F2ZUNhY2hlZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlQ2FjaGVkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBpZiAoIW9wZW5Db250ZW50RmlsZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVFbnRyeS5oCmluZGV4IDQ3Mjc2MmM3ZjU1MmNkYzBkOTQ0Zjk5MGNhYTMwZDI2Yzgw
MjNhMjUuLjI0NjE0MDhiZmE2MjI0ZGQxNTA4ZDFjNDNmMjc2ZjYyMWQ2YTI3MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRy
eS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZW50cnlTaXplKCk7CiAg
ICAgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMoKSB7IHJldHVybiBtX3JlcXVlc3RIZWFk
ZXJzOyB9CiAKLSAgICBib29sIHNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCk7CisgICAgYm9vbCBzYXZlQ2FjaGVkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qp
OwogICAgIGJvb2wgcmVhZENhY2hlZERhdGEoUmVzb3VyY2VIYW5kbGUqKTsKIAogICAgIGJvb2wg
c2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKaW5kZXggZTY5ZjZjMzU3NzVlZGVjY2ViMjJlODUxNTQ2NTNhOTQ4NjI2ZmJjZC4uNzUw
NGM5ODg2ZmI4ZjI1ZWZlNzlhODI2MjYyODIwODk4MjY3N2Y5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNw
cApAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVz
cG9uc2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlSGFuZGxlJiBqb2IsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAobV9kaXNhYmxlZCkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKaW5kZXggNGUyNDljOWMyYjBlOWFmMWFlM2FhNDkzZTgz
YjUxOGE2NTQyYzM5Mi4uYzllMjlkODA5NzBjNDA0NmU3OTYxNjJiZDk4MzI5MTFiNmRlZTY4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldENh
Y2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSYsIFJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgY2hh
ciosIHNpemVfdCk7IC8vIFNhdmUgZGF0YQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsgLy8gU2F2ZSBkYXRhCiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlJik7CiAgICAgdm9pZCBkaWRGYWlsKFJl
c291cmNlSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU3RyZWFtLmNwcAppbmRleCAxYjE1YWYwMWJjYzBlYWI5MTBmYzNiOWU4YThk
NDYzYjdjNjY4NTE5Li5mZjU1ZDM1MjM0Mjc4NmZjZGVhZWZjNjRmNmNjYmUwMTVmNGM1YjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJl
YW0uY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUo
KQogICAgICAgICBkZXN0cm95SGFuZGxlKCk7CiAKICAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50
T25NYWluVGhyZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9
IFdURk1vdmUocmVjZWl2ZUJ1ZmZlciksIGxlbmd0aCA9IGJ5dGVzUmVjZWl2ZWRdKENsaWVudCYg
Y2xpZW50KSBtdXRhYmxlIHsKLSAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVEYXRhKHN0cmVhbUlE
LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZ2V0KCkpLCBsZW5ndGgpOwor
ICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVu
Z3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU3RyZWFtLmgKaW5kZXggMzEzYjAxNzNkYTVjZDQwNGExZTNmY2FkOTU3M2I4
ZmY3YzNhYmQ0Zi4uZTY0NjI5ZmMyMmEyMDk3YTJhZjBiMGMwMTM5YjIzZDc5MDhjZjNkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
U2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgY2hhciosIHNpemVfdCkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxT
dHJlYW1JRCwgQ1VSTGNvZGUpID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRG93bmxvYWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Eb3dubG9hZEJ1bmRsZS5oCmluZGV4IGMxMjVkZWIx
OGY4NjI1ZGM3NjE3NzI5M2RmMjcyMWI3YzI3MjMzZmEuLjZiOTc4YmU2Zjg0ZTZlOTM0NzRiZGIy
M2RiNmJlYWIzZDU2ZmE2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Eb3dubG9hZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Eb3dubG9hZEJ1bmRsZS5oCkBAIC0zMCw4ICszMCw4IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRG93bmxvYWRCdW5kbGUgewogCi1ib29sIGFwcGVuZFJl
c3VtZURhdGEoY29uc3QgY2hhciosIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgp
OwotYm9vbCBleHRyYWN0UmVzdW1lRGF0YShjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgsIFZlY3Rv
cjxjaGFyPiYgcmVzdW1lRGF0YSk7Citib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgdWludDhf
dCosIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpOworYm9vbCBleHRyYWN0UmVz
dW1lRGF0YShjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgsIFZlY3Rvcjx1aW50OF90PiYgcmVzdW1l
RGF0YSk7CiBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24oKTsKIAogfSAvLyBuYW1lc3BhY2Ug
RG93bmxvYWRCdW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IDJkMDU4NGRhYjVj
ZmY2ZDE0OTA2Mjk2NDJiYWVhNjUyZmFlYTAwMzMuLmI4MDRmZGUwOTczYmJmYjI4MzMxY2Y3YzNh
MWYyMGIwNDNlNzRmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtNjEsNyArNjEs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRTZW5kRGF0YShDdXJsU3RyZWFtSUQsIHNpemVfdCkgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSkg
ZmluYWw7CiAKICAgICBib29sIGlzU3RyZWFtSW52YWxpZGF0ZWQoKSB7IHJldHVybiBtX3N0cmVh
bUlEID09IGludmFsaWRDdXJsU3RyZWFtSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bEN1cmwuY3BwCmluZGV4IDJmZWNlMDI4ZWZmZGJlODg1MThlYzdiOGJlMjU5YjBhMDkwODZjY2Yu
LjRiOTQ5MWMxMTU0M2YyYjYwZjEyZDM2ZTllNmEwY2JhYWUzNGE3MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6ZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QgbGVuZ3Ro
KQogICAgIHNlbmRQZW5kaW5nRGF0YSgpOwogfQogCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkUmVjZWl2ZURhdGEoQ3Vy
bFN0cmVhbUlELCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlm
IChtX3N0YXRlICE9IE9wZW4pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAppbmRl
eCA5MDFiMmI3MTBlNGY4MWEzYzgwY2FiMDM5Mzg4NDdlYTE2NDFlMzI3Li5kODNjM2IyYTYzYjIy
YzM5ZTE4YzEyOWU0NGJjOGYyZDM4YjhiMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbigpCiAgICAgcmV0dXJuIGV4dGVu
c2lvbjsKIH0KIAotYm9vbCBhcHBlbmRSZXN1bWVEYXRhKGNvbnN0IGNoYXIqIHJlc3VtZUJ5dGVz
LCB1aW50MzJfdCByZXN1bWVMZW5ndGgsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCkKK2Jvb2wg
YXBwZW5kUmVzdW1lRGF0YShjb25zdCB1aW50OF90KiByZXN1bWVCeXRlcywgdWludDMyX3QgcmVz
dW1lTGVuZ3RoLCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpCiB7CiAgICAgaWYgKCFyZXN1bWVC
eXRlcyB8fCAhcmVzdW1lTGVuZ3RoKSB7CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCByZXN1
bWUgZGF0YSB0byB3cml0ZSB0byBidW5kbGUgcGF0aCIpOwpAQCAtODksNyArODksNyBAQCBleGl0
OgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgZXh0cmFjdFJlc3VtZURhdGEoY29uc3Qg
U3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0b3I8Y2hhcj4mIHJlc3VtZURhdGEpCitib29sIGV4dHJh
Y3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiBy
ZXN1bWVEYXRhKQogewogICAgIGlmIChidW5kbGVQYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBM
T0dfRVJST1IoIkNhbm5vdCBjcmVhdGUgcmVzdW1lIGRhdGEgZnJvbSBlbXB0eSBkb3dubG9hZCBi
dW5kbGUgcGF0aCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5k
ZXggZWNiNmJhZTE2ODk1NjE2N2Y2MWZhZjNkY2EyOTM2NDZjZGNhZDQ4Ni4uMDA5NGY0N2Q0NjQw
MWQ1OWFjYjg1Zjc2NTQzZGE2MmQ3MzhjMGZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZH
SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQo
bG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQg
aGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7
CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihV
UkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgbG9hZGVyLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhQXNDaGFyUHRy
KCksIGRhdGEoKS0+c2l6ZSgpKTsKKyAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRhdGEoKS0+c2l6ZSgpKTsKICAg
ICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOwogCiAg
ICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
LmNwcAppbmRleCAxZjViZWY3OWQxNmUyNzZkOWMxMDExMjhiODg5ZDdjZjFiYThmMDRhLi4xMjQ3
ZGFhNjQ2MzlkNmU2ZWFjMTZkMTEyNjM4YjlmOWQ0YTc5NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBA
IGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnVwZGF0ZUxlYWZUZXh0Tm9kZSgpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgLy8gVGhpcyBvcGVyYXRpb24gbWlnaHQgZmlyZSBtdXRhdGlvbiBl
dmVudCwgc2VlIGJlbG93LgotICAgIG1fbGVhZlRleHROb2RlLT5hcHBlbmREYXRhKFN0cmluZzo6
ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9idWZmZXJlZFRleHQuZGF0
YSgpKSwgbV9idWZmZXJlZFRleHQuc2l6ZSgpKSk7CisgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVu
ZERhdGEoU3RyaW5nOjpmcm9tVVRGOChtX2J1ZmZlcmVkVGV4dC5kYXRhKCksIG1fYnVmZmVyZWRU
ZXh0LnNpemUoKSkpOwogICAgIG1fYnVmZmVyZWRUZXh0ID0geyB9OwogCiAgICAgbV9sZWFmVGV4
dE5vZGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggZWRmZjg0NjRmZDUyOTAzNjg2OWRh
MGM3ZTRlYjg0OGZhZjkwYmQzZC4uOWVjNTVmNjE2ZjU4NDNiNmM4MDI3YmMxOWRhN2E2MDU4ZDRh
YTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRl
eHRUcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCB2b2lkIFJlbW90ZVRl
eHRUcmFja1Byb3h5OjpwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogICAg
IG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UGFyc2VXZWJWVFRGaWxlSGVhZGVyKG1faWRlbnRpZmll
ciwgaGVhZGVyKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVRl
eHRUcmFja1Byb3h5OjpwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKQordm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRDdWVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIW1fY29u
bmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpQYXJzZVdlYlZUVEN1ZURhdGEobV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZl
cmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpLCBt
X21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpQYXJz
ZVdlYlZUVEN1ZURhdGEobV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSwgbGVu
Z3RoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0VHJh
Y2tQcm94eTo6cGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYmIGN1ZURhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94
eS5oCmluZGV4IGI3NGU4ODJiMTQwYzY2YWM4OTNjYmIyOTg5ZTEwOThiNTAwZWQxOTYuLjc4YjRl
ODRlYzJmYmUxYjBjY2RmOTQ4MjBhNjM1ZjhkZDg2YWRkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCkBAIC03Nyw3
ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoV2Vi
Q29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRU
RmlsZUhlYWRlcihTdHJpbmcmJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBw
YXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKFdlYkNvcmU6OklTT1dlYlZUVEN1
ZSYmKTsKIAogICAgIC8vIFRyYWNrUHJpdmF0ZUJhc2VDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDFiMzU3
ZjY4ZmNhNDM5OWIzZDZhZTQxZWMzOGI4N2UzNDIzOWMxMmQuLjFiNjc0ZTRmOGQ1NmM2Y2VlZjEx
ZjY3NTBjMTZkOTdjZDdkN2MyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrQmxvYjo6cmVhZERhdGEoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtKQog
ICAgIGlmIChieXRlc1RvUmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXplKQogICAgICAgICBieXRl
c1RvUmVhZCA9IG1fdG90YWxSZW1haW5pbmdTaXplOwogCi0gICAgYXV0byogZGF0YSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGl0ZW0uZGF0YSgpLmRhdGEoKS0+ZGF0YSgpKSArIGl0
ZW0ub2Zmc2V0KCkgKyBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CisgICAgYXV0byogZGF0YSA9IGl0
ZW0uZGF0YSgpLmRhdGEoKS0+ZGF0YSgpICsgaXRlbS5vZmZzZXQoKSArIG1fY3VycmVudEl0ZW1S
ZWFkU2l6ZTsKICAgICBtX2N1cnJlbnRJdGVtUmVhZFNpemUgPSAwOwogCiAgICAgY29uc3VtZURh
dGEoZGF0YSwgc3RhdGljX2Nhc3Q8aW50PihieXRlc1RvUmVhZCkpOwpAQCAtMzk5LDcgKzM5OSw3
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkUmVhZChpbnQgYnl0ZXNSZWFkKQogICAg
IGNvbnN1bWVEYXRhKG1fYnVmZmVyLmRhdGEoKSwgYnl0ZXNSZWFkKTsKIH0KIAotdm9pZCBOZXR3
b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNS
ZWFkKQordm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIG1fdG90YWxSZW1haW5pbmdTaXplIC09IGJ5
dGVzUmVhZDsKIApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZG93bmxvYWQoKQogICAgIHJlYWQoKTsKIH0KIAotYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3
cml0ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCitib29sIE5ldHdv
cmtEYXRhVGFza0Jsb2I6OndyaXRlRG93bmxvYWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGJ5
dGVzUmVhZCkKIHsKICAgICBBU1NFUlQoaXNEb3dubG9hZCgpKTsKICAgICBpbnQgYnl0ZXNXcml0
dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGRhdGEsIGJ5dGVz
UmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5oCmluZGV4IGZkOGNkZWYwMjQ4NmYxOWUzZTEwOTk1ZTRjNTMyNWNhZTkwY2JiZDEu
LmZkMTVlMjQ0MDRkOGFkOTQyMTQzMjY2NmM0NzBiNmYxZTQzYmRiYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCkBAIC04NSwx
MiArODUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNpemVGb3JOZXh0KCk7CiAgICAgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShFcnJvciA9IEVycm9yOjpOb0Vycm9yKTsKICAg
ICB2b2lkIHNlZWsoKTsKLSAgICB2b2lkIGNvbnN1bWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBieXRlc1JlYWQpOworICAgIHZvaWQgY29uc3VtZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGJ5dGVzUmVhZCk7CiAgICAgdm9pZCByZWFkKCk7CiAgICAgdm9pZCByZWFkRGF0YShjb25z
dCBXZWJDb3JlOjpCbG9iRGF0YUl0ZW0mKTsKICAgICB2b2lkIHJlYWRGaWxlKGNvbnN0IFdlYkNv
cmU6OkJsb2JEYXRhSXRlbSYpOwogICAgIHZvaWQgZG93bmxvYWQoKTsKLSAgICBib29sIHdyaXRl
RG93bmxvYWQoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCk7CisgICAgYm9vbCB3cml0
ZURvd25sb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpOwogICAgIHZvaWQg
Y2xlYW5Eb3dubG9hZEZpbGVzKCk7CiAgICAgdm9pZCBkaWRGYWlsRG93bmxvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmluaXNoRG93bmxvYWQoKTsKQEAg
LTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
PiBtX2Jsb2JEYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBc3luY0ZpbGVTdHJl
YW0+IG1fc3RyZWFtOyAvLyBGb3IgYXN5bmNocm9ub3VzIGxvYWRpbmcuCi0gICAgVmVjdG9yPGNo
YXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKICAgICBWZWN0b3I8
bG9uZyBsb25nPiBtX2l0ZW1MZW5ndGhMaXN0OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6
U3VzcGVuZGVkIH07CiAgICAgbG9uZyBsb25nIG1fcmFuZ2VPZmZzZXQgeyBrUG9zaXRpb25Ob3RT
cGVjaWZpZWQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0uY3BwCmluZGV4IDE1YTk5ZWNlMzRhYzE2MDM0ZDZiYmM4ZTQ3YzI4OWUz
OGI2YzkyYjUuLjUyZWI1YjA4ZjE2Y2JhMjMyMTQ5MDI4Y2RhYTgxNTBhZDA0ZTRhOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFt
LmNwcApAQCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkQ2xv
c2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUpCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRDbG9zZVNvY2tldFN0cmVhbSgpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3Zv
aWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0
U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsICZoYW5kbGUgPT0gbV9pbXBsLnB0cigpKTsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2NrZXRTdHJlYW06OkRpZFJlY2VpdmVTb2NrZXRTdHJl
YW1EYXRhKElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgbGVuZ3RoKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVhbTo6
RGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEsIGxlbmd0
aCkpKTsKIH0KIAogdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRGYWlsVG9SZWNlaXZlU29j
a2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5k
ZXggNjAwNmIyZTFiN2M2MzIxMjNkZjA4OWI5MjI3YjI2Zjc5MDY4Y2UwNC4uZTI1Njk4NDI2NmNl
NWVlY2YxNTAyOGE1MjNmNmFhY2Q4M2E2YWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVi
bGljOgogICAgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudAogICAgIHZvaWQgZGlkT3BlblNv
Y2tldFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKICAgICB2b2lk
IGRpZENsb3NlU29ja2V0U3RyZWFtKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlJiwgY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlU29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxUb1JlY2VpdmVTb2NrZXRT
dHJlYW1EYXRhKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJiwgc2l6
ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0oV2ViQ29yZTo6U29ja2V0
U3RyZWFtSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6U29ja2V0U3RyZWFtRXJyb3ImKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjMjU3ZmEx
MWQ2MmEzMTRjMjg2MmRjZDczYjE2YTc4MmM4MTM1MjM2Li45NDZhZjQ3ZGZiN2U2MTFmMWFiNDQx
NzM0YTliMGUxNDE5ZmJlZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwCkBAIC0xNTMsOSArMTUzLDkgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6Y3Jl
YXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1jb25zdCBj
aGFyKiBTaGFyZWFibGVSZXNvdXJjZTo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFy
ZWFibGVSZXNvdXJjZTo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIG1fb2Zmc2V0OworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBt
X29mZnNldDsKIH0KIAogdW5zaWduZWQgU2hhcmVhYmxlUmVzb3VyY2U6OnNpemUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggNTM3NGQ3Yjk2Y2Yy
MjE5YTc2NmJiNzBhYjYwYWM4ODczNjZjMWY0MC4uN2I0N2Y1ZDY4NTFkOWRlMzJkMWMzYTU0NzA1
MTYwYWE0ZjdjNmNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIH5TaGFyZWFibGVSZXNvdXJjZSgpOwog
Ci0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAKaW5kZXggNWExODBiZWVkMTJmNWNkY2RmYmFlNjcwMmU2OTNiOWVhNmUwYTg0NC4u
M2M5NzFhMTNmNDljNWU3NDRkZTYwOWQ4NWRmYTdkZDNlYjVkMTUyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
CkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVEYXRhVG9GaWxlKGNvbnN0IFdl
YktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBmaWxlRGF0YSwgUGxhdGZvcm0KIHsKICAgICBib29s
IHN1Y2Nlc3MgPSB0cnVlOwogICAgIGZpbGVEYXRhLmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgIGlmICh3cml0ZVRvRmlsZShm
ZCwgKGNvbnN0IGNoYXIqKWRhdGEsIHNpemUpID09IC0xKSB7CisgICAgICAgIGlmICh3cml0ZVRv
RmlsZShmZCwgZGF0YSwgc2l6ZSkgPT0gLTEpIHsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggMmY0ODkzODc1
MTE0OTkzMzZmYzYwMDFmNjExYWYwZWFiNWI5YzdmNy4uNWNjNDc0YzUzZTU0MWNhNzE2ZDNlYThh
NTg5OWE1MDQ3MjQwMjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+
IEljb25EYXRhYmFzZTo6aWNvbkRhdGEoaW50NjRfdCBpY29uSUQpCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZEljb24oY29u
c3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGljb25EYXRhKQorc3RkOjpv
cHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBpY29u
VVJMLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGljb25EYXRhKQogewogICAgIEFTU0VSVCghaXNN
YWluUnVuTG9vcCgpKTsKICAgICBBU1NFUlQobV9kYi5pc09wZW4oKSk7CkBAIC02MDYsNyArNjA2
LDcgQEAgU3RyaW5nIEljb25EYXRhYmFzZTo6aWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBwYWdlVVJMKQogICAgIHJldHVybiBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuZ2V0KHBhZ2VVUkwp
OwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpY29uRGF0YSwgc2l6ZV90IGljb25EYXRh
U2l6ZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRh
YmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
aWNvblVSTCwgY29uc3QgdWludDhfdCogaWNvbkRhdGEsIHNpemVfdCBpY29uRGF0YVNpemUsIGNv
bnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIApAQCAtNjM4LDcgKzYzOCw3IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8
Y2hhcj4gZGF0YSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGljb25EYXRhKSwgaWNv
bkRhdGFTaXplIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgeyBpY29uRGF0YSwgaWNvbkRh
dGFTaXplIH07CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGljb25VUkwgPSBpY29uVVJMLmlzb2xhdGVkQ29weSgpLCBpY29u
RGF0YSA9IFdURk1vdmUoZGF0YSksIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVkQ29weSgpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewogICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgICAgICBpZiAobV9kYi5pc09wZW4o
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2Uu
aAppbmRleCAwZTdiY2M3ZWM2M2RmMjUyNzJmY2M1MTM4NjFmY2I5ODFjODRlYzczLi5kMDIxZTJj
ZDkwZDNjZTkzOWNmZTQ0MzgxZTZlZjAyY2YyYzY3Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBib29sKT4mJik7CiAgICAgdm9pZCBsb2FkSWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImJik+JiYpOwogICAgIFN0cmlu
ZyBpY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldEljb25Gb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhciosIHNpemVf
dCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0SWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBpY29uVVJMLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmIHBh
Z2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiBwcml2
YXRlOgpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRf
dD4gaWNvbklERm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBib29sJiBleHBpcmVkKTsKICAgICBi
b29sIHNldEljb25JREZvclBhZ2VVUkwoaW50NjRfdCwgY29uc3QgU3RyaW5nJik7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGljb25EYXRhKGludDY0X3QpOwotICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRf
dD4gYWRkSWNvbihjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8Y2hhcj4mKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGludDY0X3Q+IGFkZEljb24oY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+Jik7CiAgICAgdm9pZCB1cGRhdGVJY29uVGltZXN0YW1wKGludDY0X3QgaWNvbklELCBp
bnQ2NF90IHRpbWVzdGFtcCk7CiAgICAgdm9pZCBkZWxldGVJY29uKGludDY0X3QpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJh
Y2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCAwMmJjNzE2YmI1N2QyZjU4ZjI4ZDU5ZTU4ODBjN2Iy
NGExMDBiMDYwLi5mN2Q3MjNjNjNiZmM2MmFjNTdhYWEwMzVhZjJlYzU4ZGRmMTI0ZjMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFRleHRUcmFj
a1ByaXZhdGVSZW1vdGU6OnBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKICAgICBpZiAoYXV0byogY2xpZW50
ID0gdGhpcy0+Y2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+cGFyc2VXZWJWVFRDdWVEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOwor
ICAgICAgICBjbGllbnQtPnBhcnNlV2ViVlRUQ3VlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpOwogfQogCiB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2ViVlRUQ3VlRGF0
YVN0cnVjdChJU09XZWJWVFRDdWUmJiBjdWVEYXRhKQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQg
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6YWRkRGF0YUN1ZShNZWRpYVRpbWUmJiBzdGFydCwgTWVk
aWFUaW1lJiYgZW5kLCBJUEM6CiB7CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKICAgICBpZiAoYXV0
byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+YWRkRGF0YUN1ZShX
VEZNb3ZlKHN0YXJ0KSwgV1RGTW92ZShlbmQpLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgY2xpZW50LT5hZGREYXRhQ3Vl
KFdURk1vdmUoc3RhcnQpLCBXVEZNb3ZlKGVuZCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzg0MWE4ZjNi
Njk2YWNkNWQxYTkyNDBkN2QxYjUxM2ViOWFjNjkzMy4uYzE1NTlhMjIyMDA1MjMyNDNiNzE0ZjVj
ZTg4MTUzYmRmYzBkMTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgUmVmPFdlYlNv
Y2tldENoYW5uZWw+IFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHdlYlBhZ2VQcm8KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVs
KHdlYlBhZ2VQcm94eUlELCBkb2N1bWVudCwgY2xpZW50KSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6bm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpu
b3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgV2ViU29ja2V0RnJhbWUgZnJhbWUob3BD
b2RlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZGF0YSwgbGVuZ3RoKTsKICAgICBtX2luc3BlY3Rvci5k
aWRTZW5kV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgZnJhbWUpOwpAQCAtNTYsMTAg
KzU2LDEwIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyCiBOZXR3b3JrU2VuZFF1ZXVlIFdlYlNv
Y2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNv
Y2tldENoYW5uZWwmIGNoYW5uZWwpCiB7CiAgICAgcmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hhbm5l
bF0oYXV0byYgdXRmOFN0cmluZykgewotICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRm
OFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNv
Y2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDgqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBj
aGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0
cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJp
bmcubGVuZ3RoKCkpOwogICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGJ5dGVMZW5ndGgpIHsKLSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1l
KFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwgZGF0YSwgYnl0ZUxlbmd0aCk7
CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFu
bmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIGJ5dGVMZW5ndGggfSB9
LCBieXRlTGVuZ3RoKTsKICAgICB9LCBbJmNoYW5uZWxdKEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9u
Q29kZSkgewogICAgICAgICBhdXRvIGNvZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4Y2VwdGlvbkNv
ZGUpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ29ubmVj
dChTdHJpbmcmJiBzdWJwcm90b2NvbCwgU3RyaW5nJiYgZXh0ZW5zaW9ucykKICAgICBtX2NsaWVu
dC0+ZGlkQ29ubmVjdCgpOwogfQogCi1zdGF0aWMgaW5saW5lIFdlYlNvY2tldEZyYW1lIGNyZWF0
ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlKQorc3RhdGljIGlubGluZSBXZWJT
b2NrZXRGcmFtZSBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3Rvcihjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSkK
IHsKICAgICAvLyBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gc2luY2UgZnJhbWVzIGNhbiBiZSBt
ZXJnZWQgb24gYSBzaW5nbGUgbWVzc2FnZS4KICAgICBXZWJTb2NrZXRGcmFtZSBmcmFtZTsKQEAg
LTI5NCw3ICsyOTQsOCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVUZXh0KFN0
cmluZyYmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luc3BlY3Rv
ci5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3JlYXRlV2ViU29j
a2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IobWVzc2FnZS51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLnV0
ZjgoKS5sZW5ndGgoKSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCkpOworICAg
IGF1dG8gdXRmOE1lc3NhZ2UgPSBtZXNzYWdlLnV0ZjgoKTsKKyAgICBtX2luc3BlY3Rvci5kaWRS
ZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3JlYXRlV2ViU29ja2V0RnJh
bWVGb3JXZWJJbnNwZWN0b3IocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOE1l
c3NhZ2UuZGF0YSgpKSwgdXRmOE1lc3NhZ2UubGVuZ3RoKCksIFdlYlNvY2tldEZyYW1lOjpPcENv
ZGU6Ok9wQ29kZVRleHQpKTsKIAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNz
YWdlKTsKIH0KQEAgLTMxNSw3ICszMTYsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJl
Y2VpdmVCaW5hcnlEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9k
b2N1bWVudC5nZXQoKSwgY3JlYXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSwgV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5KSk7CisgICAgbV9pbnNwZWN0b3IuZGlkUmVj
ZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNyZWF0ZVdlYlNvY2tldEZyYW1l
Rm9yV2ViSW5zcGVjdG9yKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgV2ViU29ja2V0RnJhbWU6
Ok9wQ29kZTo6T3BDb2RlQmluYXJ5KSk7CiAKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFy
eURhdGEoZGF0YS52ZWN0b3IoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMDk0YmFmNjFmNTQ0M2JmM2U5YjI2
ZTk1NGZhZThkNjU0YzBkZTVkNC4uNzI0MTdlMjMyNjI0MTI3Y2M1ZGFlZDM0NTE3NmRmYTNhMWY0
ZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJl
ZlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICB2
b2lkIG5vdGlmeVNlbmRGcmFtZShXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICB2b2lkIG5vdGlmeVNlbmRGcmFtZShX
ZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKTsKICAgICB2b2lkIGxvZ0Vycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKIAog
ICAgIC8vIE1lc3NhZ2UgcmVjZWl2ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCAzYjRhYzI5YjBkZjc2NWMyNDlm
NzcyNTcxZjQ5NDY2YzU4OWU3MWE4Li4wNWI0ZDc1OTI3NjI4MjI2ZWI0MDQ2OGU4NTFkMDMyNmE5
NWEzYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldFN0cmVhbS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlNvY2tldFN0cmVh
bTo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oKQogCiB2b2lkIFdlYlNvY2tldFN0cmVhbTo6ZGlkUmVj
ZWl2ZVNvY2tldFN0cmVhbURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewot
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcywgZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXRTdHJlYW06OmRpZEZhaWxUb1JlY2VpdmVTb2Nr
ZXRTdHJlYW1EYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggMjBlMWNlZGI4OTc1ZGI2NDAxZjRjMTQxMWRlZmExZGQ5Mjk5YzU4YS4uZjAw
MWE2Y2NmYWQyZGU4ZjRkYjA1YjgxNWUxZTE3YjUzODkzZjYyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc2MDksNyArNzYwOSw3IEBAIHZv
aWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZl
Y3RvcjxTaGFyZWRNZW1vcnk6OklQCiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2Uo
KS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5
LT5zaXplKCkpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRv
SGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCku
cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9y
eS0+c2l6ZSgpKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxU
b0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmNwcAppbmRleCBmNmQ1YjU2ZWJlNzlkZmUzNDAzOWI3YjVkMzlmOTVkZjE4ODQx
MWE3Li5lY2U4NGY4ZTVlNTNiNzM5YWEzODc5N2VlNTlmZDg1MDY5NjUxNmNmIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMzEyLDggKzMxMiw4IEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIHNldEF1ZGlvUmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0CiAgICAgSlNDOjpKU0FycmF5QnVmZmVyVmlldyoganNCdWZmZXJWaWV3ID0gSlND
Ojpqc0R5bmFtaWNDYXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgdG9KUyh0b0pTKGNv
bnRleHQpLCBhcmd1bWVudHNbMF0pKTsKICAgICBBU1NFUlQoanNCdWZmZXJWaWV3KTsKICAgICBS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IGJ1ZmZlclZpZXcgPSBqc0J1ZmZlclZpZXctPnVu
c2hhcmVkSW1wbCgpOwotICAgIGNvbnN0IGNoYXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygpKTsKLSAgICBzdGQ6OnZlY3RvcjxjaGFy
PiBhdWRpb0RhdGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwor
ICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
dWZmZXJWaWV3LT5iYXNlQWRkcmVzcygpKTsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBhdWRp
b0RhdGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogCiAgICAg
VGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOwogICAgIGNvbnRyb2xsZXItPnNldEF1ZGlvUmVzdWx0
KGF1ZGlvRGF0YSk7CkBAIC0yMzY3LDggKzIzNjcsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9w
ZW5QYW5lbEZpbGVzTWVkaWFJY29uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG1l
ZAogICAgIEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqIGpzQnVmZmVyVmlldyA9IEpTQzo6anNEeW5h
bWljQ2FzdDxKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIHRvSlModG9KUyhjb250ZXh0KSwg
bWVkaWFJY29uKSk7CiAgICAgQVNTRVJUKGpzQnVmZmVyVmlldyk7CiAgICAgUmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXJWaWV3PiBidWZmZXJWaWV3ID0ganNCdWZmZXJWaWV3LT51bnNoYXJlZEltcGwo
KTsKLSAgICBjb25zdCBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVm
ZmVyVmlldy0+YmFzZUFkZHJlc3MoKSk7Ci0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbWVkaWFJY29u
RGF0YShidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSk7CisgICAgY29u
c3QgdWludDhfdCogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlclZp
ZXctPmJhc2VBZGRyZXNzKCkpOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1lZGlhSWNvbkRh
dGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogICAgIAogICAg
IG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb24gPSBtZWRpYUljb25EYXRhOwogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5oCmluZGV4IDNlMGE2NzdlMDg3NDYyMWFiNTQ4Njg2M2QxMmU0Nzg4Y2Y1
NmVlNWYuLjJlMDQ5NGUzMGYzZjBiM2E3NDIyZWU3NTkzZjdlN2YzZDY1N2QwYzggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTI5OSw4ICsyOTksOCBAQCBwdWJsaWM6CiAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHRlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RVUkw7IH0KICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhhc2goKSBjb25zdCB7IHJldHVybiBt
X2V4cGVjdGVkUGl4ZWxIYXNoOyB9CiAKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxjaGFyPiYgYXVk
aW9SZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvUmVzdWx0OyB9Ci0gICAgdm9pZCBzZXRB
dWRpb1Jlc3VsdChjb25zdCBzdGQ6OnZlY3RvcjxjaGFyPiYgYXVkaW9EYXRhKSB7IG1fYXVkaW9S
ZXN1bHQgPSBhdWRpb0RhdGE7IH0KKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgYXVk
aW9SZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvUmVzdWx0OyB9CisgICAgdm9pZCBzZXRB
dWRpb1Jlc3VsdChjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgYXVkaW9EYXRhKSB7IG1fYXVk
aW9SZXN1bHQgPSBhdWRpb0RhdGE7IH0KIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzQWxsb3dM
aXN0RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlv
blByb3RvY29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpOwogICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50
cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9wZW5Q
YW5lbEZpbGVzKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNoYXI+JiBvcGVuUGFuZWxGaWxlc01lZGlh
SWNvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb247IH0KKyAgICBj
b25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgb3BlblBhbmVsRmlsZXNNZWRpYUljb24oKSBjb25z
dCB7IHJldHVybiBtX29wZW5QYW5lbEZpbGVzTWVkaWFJY29uOyB9CiAgICAgdm9pZCBzZXRPcGVu
UGFuZWxGaWxlc01lZGlhSWNvbihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogI2VuZGlmCiAK
QEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBt
X3dpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyczsKICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4g
bV9hbGxvd2VkSG9zdHM7CiAKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBtX2F1ZGlvUmVzdWx0Owor
ICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1fYXVkaW9SZXN1bHQ7CiAKICAgICBzdGQ6Om1hcDxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG1fVVJMc1RvUmVkaXJlY3Q7CiAKQEAgLTQ4Miw3ICs0
ODIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1fb3BlblBh
bmVsRmlsZXM7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnZlY3RvcjxjaGFy
PiBtX29wZW5QYW5lbEZpbGVzTWVkaWFJY29uOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1f
b3BlblBhbmVsRmlsZXNNZWRpYUljb247CiAjZW5kaWYKIAogICAgIHN0YXRpYyBKU1JldGFpblB0
cjxKU0NsYXNzUmVmPiBjcmVhdGVKU0NsYXNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURl
bGVnYXRlLm1tCmluZGV4IGJiYTUzYmRiZjk0ZTE5YjNmNzU3MDBlY2FiYWExYzg3ZWY0ZmMyZDgu
LjI3ZjI2MTQ0NWUyZWZlZDkzYTdiNTUzYmVhZDAzZTRlNDk1NGU4N2QgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCkBAIC0zOTYsNyArMzk2LDcgQEAgLSAodm9pZCl3ZWJW
aWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0
TGlzdGVuZXI6KGkKICAgICBhdXRvJiBpY29uRGF0YSA9IGdUZXN0UnVubmVyLT5vcGVuUGFuZWxG
aWxlc01lZGlhSWNvbigpOwogICAgIENHSW1hZ2VSZWYgaW1hZ2VSZWYgPSBudWxscHRyOwogICAg
IGlmICghaWNvbkRhdGEuZW1wdHkoKSkgewotICAgICAgICBhdXRvIGRhdGFSZWYgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZShudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oaWNv
bkRhdGEuZGF0YSgpKSwgaWNvbkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YVJlZiA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGljb25EYXRhLmRhdGEoKSwgaWNvbkRhdGEu
c2l6ZSgpKSk7CiAgICAgICAgIGF1dG8gaW1hZ2VQcm92aWRlclJlZiA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGFSZWYuZ2V0KCkpKTsKICAgICAgICAgaW1hZ2VS
ZWYgPSBDR0ltYWdlQ3JlYXRlV2l0aEpQRUdEYXRhUHJvdmlkZXIoaW1hZ2VQcm92aWRlclJlZi5n
ZXQoKSwgbnVsbHB0ciwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="452200"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430662</attachid>
            <date>2021-06-05 16:31:24 -0700</date>
            <delta_ts>2021-06-05 16:39:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226688-20210605163123.patch</filename>
            <type>text/plain</type>
            <size>123125</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjViYzlhNjk5MTRjZTRh
Y2JjNmIwZDQ2NzdjNzVjMjYwNzY4OGMwYS4uODk5YTAxY2IwMjlmMjJiYjczMzc4YzUyN2RlZGM3
YjJmNjcxNDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wNi0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhf
dCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkgdG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNo
YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFN0cmVhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6
OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6
cGFyc2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRGcmFtZVBheWxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6OldlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaW1JbnB1
dFNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2
ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFk
U3RhdHVzTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRI
VFRQSGVhZGVycyk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9TZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
Ojp3cml0ZUFsbFRvRmlsZSk6CisgICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogY3J5
cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRNYXN0ZXJLZXkpOgorICAgICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZEJ5dGVzKToKKyAgICAgICAgKiBkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGRvbS9SYXdEYXRhRG9jdW1l
bnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAqIGh0
bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFj
ay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6ZmlsZUZpbmlzaGVkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1
bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltSW5wdXRTYW1wbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VIVFRQSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJl
cXVlc3RCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpkYXRhQ2hhbmdlZCk6CisKIDIwMjEtMDYtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBJbmxpbmVUZXh0Qm94IHRvIExlZ2FjeUlubGluZVRl
eHRCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNDkyOWU2M2M1NGVhN2I1NjVkM2RmMDQ3ZjFlYTA1MTdiNWY1NGIw
ZC4uYzNkYjA5NjdiNDUyZTk0ZTIzZDcwNWJhMTQ1NjgxOWM2M2QyYjMyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0wNi0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhfdCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkg
dG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRD
dWVEYXRhKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2Vi
VlRUQ3VlRGF0YSk6CisKIDIwMjEtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBPcHRpbWl6ZSBhIGZldyBjYWxsIHNpdGVzIGNyZWF0aW5nIFNoYXJlZEJ1
ZmZlciBvYmplY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oCmluZGV4IGRi
Nzg2ZDMyOTg1NjZjNGIwYmE3NzM5ODIzMDI5Zjg1NTYyMTc3MDMuLjliNWIwODVhMWFhOTA2NGI4
MzhkNGMwMTI5ODRiNGI2YTllNjBiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
U29ja2V0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVj
dGlvbi5oCkBAIC01OSw5ICs1OSw5IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHU29ja2V0Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIGNvbnN0IE1lc3NhZ2VIYW5kbGVycyYgbV9tZXNz
YWdlSGFuZGxlcnM7CiAgICAgZ3BvaW50ZXIgbV91c2VyRGF0YTsKLSAgICBWZWN0b3I8Y2hhcj4g
bV9yZWFkQnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX3JlYWRCdWZmZXI7CiAgICAgR1Nv
Y2tldE1vbml0b3IgbV9yZWFkTW9uaXRvcjsKLSAgICBWZWN0b3I8Y2hhcj4gbV93cml0ZUJ1ZmZl
cjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV93cml0ZUJ1ZmZlcjsKICAgICBHU29ja2V0TW9uaXRv
ciBtX3dyaXRlTW9uaXRvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKaW5kZXggMTBmODhiMTg4YTE2MWQ4MWQ2MzE3YzJmOGE0NjViNWQ4MTU5NmFiOC4u
MjVmNzZhNTk0MjE5Yzk2M2ZjMzM2NWFhMzViNWNmMjU4ZTQ0MzYxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIERP
TUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlm
IChhdXRvIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGRhdGEtPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaHVuay0+ZGF0YSks
IGNodW5rLT5zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5k
YXRhLCBjaHVuay0+c2l6ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25z
ZSwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgICAgICB9KTsKQEAgLTM4Myw3ICszODMsNyBAQCB2
b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4m
JiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
YXV0byBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEt
PmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaHVuay0+ZGF0YSksIGNodW5r
LT5zaXplKTsKKyAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEsIGNodW5r
LT5zaXplKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRo
UmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
cmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CiAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcAppbmRleCA4OGE2N2UzNTU0YWE0OGNjMjNiMjJjNTIxMDZjYWZjMTg5ZjFlOTdh
Li4yYWIwY2FmMTAwZDBjMzEzOGMyYjYyNjQzZDczYjIxZWM2YmU5ZWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc2
LDcgKzI3Niw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChhdXRvIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5r
LT5kYXRhKSwgY2h1bmstPnNpemUpOworICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVu
ay0+ZGF0YSwgY2h1bmstPnNpemUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEtPmRhdGEoKSks
IGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0pOwpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBj
b25zdCBTdHJpbmcmIGNvCiAgICAgfQogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogewogICAgIGlm
IChtX3NvdXJjZSkgewogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5
Q3JlYXRlKGRhdGEsIHNpemUpKTsKQEAgLTMzNCwxMSArMzM0LDYgQEAgdm9pZCBGZXRjaEJvZHlD
b25zdW1lcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgbV9i
dWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpCi17Ci0gICAg
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKLX0KLQog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAg
ICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMzdkMDU0YjEwY2U4ZGJlZDE5MWM3Yjg1
Zjg4MWRlZTQ2ZTA0YjBkMi4uMWI2Mjc2NjNiZGQyYTU5MDljZTFlYzNlZjdhOTgyYjI0OWQ3NWNi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaApAQCAtNDYsOCArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBleHBsaWNpdCBGZXRjaEJvZHlD
b25zdW1lcihUeXBlIHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQogCi0gICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAh
IW1fYnVmZmVyOyB9CiAgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGIzOTc4Njk1ZmQ3ZWYxOTIxNGI2YjkwMWE4ZjNmMWE5
NmVlMGUwZWMuLmRlMTNjMTc0ZDMwMzA5NmZmZTNjYmNlMDQ2MDljYzI5NGQwZWY1MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAt
MTU5LDcgKzE1OSw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPbk1lc3Nh
Z2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY2xpZW50TG9jayB9OwogICAgIGlmICghbV9jbGllbnQpIHsKLSAgICAgICAgY29uc3Qg
Y2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhLmRh
dGE8Y2hhcj4oKSk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBidWZmZXIuZGF0YS5kYXRhPHVpbnQ4
X3Q+KCk7CiAgICAgICAgIGlmIChidWZmZXIuYmluYXJ5KQogICAgICAgICAgICAgbV9idWZmZXJl
ZE1lc3NhZ2VzLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBidWZmZXIuc2l6ZSgp
KSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA3M2UxMDUwMThkOGEyNjdjYWJkNDJm
NTMxYmZmODRlNDAzNGU1MDFjLi5mODk0NjA4NzdkYmZmMjA2YzJlYjRmN2Q2M2QyOTcyZGZmMGFh
ODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcm
IG1lc3MKIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENo
YW5uZWw6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXRDaGFubmVsICVwIHNlbmQoKSBTZW5kaW5nIEFycmF5QnVmZmVyICVwIGJ5dGVPZmZzZXQ9JXUg
Ynl0ZUxlbmd0aD0ldSIsIHRoaXMsICZiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3Ro
KTsKLSAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUJpbmFyeSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5
dGVMZW5ndGgpOworICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmlu
YXJ5LCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0
ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwog
ICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CkBA
IC0xNzAsOSArMTcwLDkgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChCbG9iJiBiaW5hcnlEYXRhKQogICAgIHJldHVybiBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1Y2Nlc3M7CiB9CiAKLWJvb2wgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorYm9vbCBXZWJTb2Nr
ZXRDaGFubmVsOjpzZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQoKSBTZW5kaW5nIGNoYXIqIGRh
dGE9JXAgbGVuZ3RoPSVkIiwgdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgdWludDhfdCogZGF0YT0lcCBsZW5n
dGg9JWQiLCB0aGlzLCBkYXRhLCBsZW5ndGgpOwogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2Nr
ZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBsZW5ndGgpOwogICAgIHByb2Nlc3NPdXRnb2lu
Z0ZyYW1lUXVldWUoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRs
ZSYgaGFuZGxlKQogICAgIGRlcmVmKCk7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJl
Y2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgpIFJlY2VpdmVkICV6dSBi
eXRlcyIsIHRoaXMsIGxlbmd0aCk7CiAgICAgUmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50
aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgpAQCAtNDA0LDcgKzQwNCw3IEBAIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbChFeGNlcHRpb25Db2RlIGVycm9yQ29kZSkKICAg
ICBkZXJlZigpOwogfQogCi1ib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pCitib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVu
ZFRvQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW4pCiB7CiAgICAgc2l6ZV90
IG5ld0J1ZmZlclNpemUgPSBtX2J1ZmZlci5zaXplKCkgKyBsZW47CiAgICAgaWYgKG5ld0J1ZmZl
clNpemUgPCBtX2J1ZmZlci5zaXplKCkpIHsKQEAgLTQ4OCwxNCArNDg4LDE0IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChtX2hhbmRsZSk7CiAKLSAg
ICBWZWN0b3I8Y2hhcj4gYnVmOworICAgIFZlY3Rvcjx1aW50OF90PiBidWY7CiAgICAgaWYgKCFt
X3JlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSAmJiBjb2RlICE9IENsb3NlRXZlbnRDb2RlTm90U3Bl
Y2lmaWVkKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5dGUgPSBjb2RlID4+IDg7Ci0g
ICAgICAgIHVuc2lnbmVkIGNoYXIgbG93Qnl0ZSA9IGNvZGU7Ci0gICAgICAgIGJ1Zi5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y2hhcj4oaGlnaEJ5dGUpKTsKLSAgICAgICAgYnVmLmFwcGVuZChzdGF0aWNf
Y2FzdDxjaGFyPihsb3dCeXRlKSk7CisgICAgICAgIHVpbnQ4X3QgaGlnaEJ5dGUgPSBjb2RlID4+
IDg7CisgICAgICAgIHVpbnQ4X3QgbG93Qnl0ZSA9IGNvZGU7CisgICAgICAgIGJ1Zi5hcHBlbmQo
aGlnaEJ5dGUpOworICAgICAgICBidWYuYXBwZW5kKGxvd0J5dGUpOwogICAgICAgICBhdXRvIHJl
YXNvblVURjggPSByZWFzb24udXRmOCgpOwotICAgICAgICBidWYuYXBwZW5kKHJlYXNvblVURjgu
ZGF0YSgpLCByZWFzb25VVEY4Lmxlbmd0aCgpKTsKKyAgICAgICAgYnVmLmFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZWFzb25VVEY4LmRhdGEoKSksIHJlYXNvblVURjgu
bGVuZ3RoKCkpOwogICAgIH0KICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9w
Q29kZUNsb3NlLCBidWYuZGF0YSgpLCBidWYuc2l6ZSgpKTsKICAgICBSZWY8V2ViU29ja2V0Q2hh
bm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEFuIGF0dGVtcHQgdG8gc2VuZCBjbG9zaW5n
IGhhbmRzaGFrZSBtYXkgZmFpbCwgd2hpY2ggd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFu
ZCBkZXJlZmVyZW5jZWQuCkBAIC01MjQsNyArNTI0LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVs
Ojpwcm9jZXNzRnJhbWUoKQogICAgIEFTU0VSVCghbV9idWZmZXIuaXNFbXB0eSgpKTsKIAogICAg
IFdlYlNvY2tldEZyYW1lIGZyYW1lOwotICAgIGNvbnN0IGNoYXIqIGZyYW1lRW5kOworICAgIGNv
bnN0IHVpbnQ4X3QqIGZyYW1lRW5kOwogICAgIFN0cmluZyBlcnJvclN0cmluZzsKICAgICBXZWJT
b2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCByZXN1bHQgPSBXZWJTb2NrZXRGcmFtZTo6cGFy
c2VGcmFtZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSwgZnJhbWUsIGZyYW1lRW5k
LCBlcnJvclN0cmluZyk7CiAgICAgaWYgKHJlc3VsdCA9PSBXZWJTb2NrZXRGcmFtZTo6RnJhbWVJ
bmNvbXBsZXRlKQpAQCAtNjU2LDggKzY1Niw4IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc0ZyYW1lKCkKICAgICAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGEgYnJva2VuIGNsb3NlIGZy
YW1lIGNvbnRhaW5pbmcgYW4gaW52YWxpZCBzaXplIGJvZHkuIik7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGhp
Z2hCeXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZnJhbWUucGF5bG9hZFswXSk7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxvd0J5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihmcmFtZS5wYXlsb2FkWzFdKTsKKyAgICAgICAgICAgIGF1dG8gaGlnaEJ5dGUgPSBmcmFt
ZS5wYXlsb2FkWzBdOworICAgICAgICAgICAgYXV0byBsb3dCeXRlID0gZnJhbWUucGF5bG9hZFsx
XTsKICAgICAgICAgICAgIG1fY2xvc2VFdmVudENvZGUgPSBoaWdoQnl0ZSA8PCA4IHwgbG93Qnl0
ZTsKICAgICAgICAgICAgIGlmIChtX2Nsb3NlRXZlbnRDb2RlID09IENsb3NlRXZlbnRDb2RlTm9T
dGF0dXNSY3ZkIHx8IG1fY2xvc2VFdmVudENvZGUgPT0gQ2xvc2VFdmVudENvZGVBYm5vcm1hbENs
b3N1cmUgfHwgbV9jbG9zZUV2ZW50Q29kZSA9PSBDbG9zZUV2ZW50Q29kZVRMU0hhbmRzaGFrZSkg
ewogICAgICAgICAgICAgICAgIG1fY2xvc2VFdmVudENvZGUgPSBDbG9zZUV2ZW50Q29kZUFibm9y
bWFsQ2xvc3VyZTsKQEAgLTcxNCw3ICs3MTQsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogICAgIG1fb3V0Z29pbmdGcmFt
ZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGZyYW1lKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5x
dWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1l
UXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7CiAgICAgYXV0byBmcmFtZSA9
IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgYXV0byBm
cmFtZSA9IG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnRha2VGaXJzdCgpOwogICAgICAgICBzd2l0Y2gg
KGZyYW1lLT5mcmFtZVR5cGUpIHsKICAgICAgICAgY2FzZSBRdWV1ZWRGcmFtZVR5cGVTdHJpbmc6
IHsKLSAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBmcmFtZS0+c3RyaW5nRGF0
YS5kYXRhKCksIGZyYW1lLT5zdHJpbmdEYXRhLmxlbmd0aCgpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzKSB7CisgICAgICAgICAgICBzZW5kRnJh
bWUoZnJhbWUtPm9wQ29kZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZnJhbWUt
PnN0cmluZ0RhdGEuZGF0YSgpKSwgZnJhbWUtPnN0cmluZ0RhdGEubGVuZ3RoKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChib29sIHN1Y2Nlc3MpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgIGZhaWwoIkZhaWxlZCB0
byBzZW5kIFdlYlNvY2tldCBmcmFtZS4iKTsKICAgICAgICAgICAgIH0pOwpAQCAtNzgwLDcgKzc4
MCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgp
CiAgICAgICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiByZXN1bHQgPSBtX2Jsb2JMb2Fk
ZXItPmFycmF5QnVmZmVyUmVzdWx0KCk7CiAgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0g
bnVsbHB0cjsKICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVy
Tm90U3RhcnRlZDsKLSAgICAgICAgICAgICAgICBzZW5kRnJhbWUoZnJhbWUtPm9wQ29kZSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0LT5ieXRlTGVuZ3Ro
KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChib29sIHN1Y2Nlc3Mp
IHsKKyAgICAgICAgICAgICAgICBzZW5kRnJhbWUoZnJhbWUtPm9wQ29kZSwgc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHJlc3VsdC0+ZGF0YSgpKSwgcmVzdWx0LT5ieXRlTGVuZ3RoKCksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChib29sIHN1Y2Nlc3MpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAg
ZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lLiIpOwogICAgICAgICAgICAgICAg
IH0pOwpAQCAtODEzLDcgKzgxMyw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6YWJvcnRPdXRn
b2luZ0ZyYW1lUXVldWUoKQogICAgIH0KIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5k
RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9w
Q29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCht
X2hhbmRsZSk7CiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CkBAIC04MjcsNyArODI3LDcgQEAg
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBv
cENvZGUsIGNvbnN0IGNoYXIqIGRhdGEKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKICAgICB9CiAKLSAgICBWZWN0b3I8Y2hhcj4gZnJhbWVEYXRhOworICAgIFZlY3Rv
cjx1aW50OF90PiBmcmFtZURhdGE7CiAgICAgZnJhbWUubWFrZUZyYW1lRGF0YShmcmFtZURhdGEp
OwogCiAgICAgbV9oYW5kbGUtPnNlbmREYXRhKGZyYW1lRGF0YS5kYXRhKCksIGZyYW1lRGF0YS5z
aXplKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGE0NjJlM2Uw
OGUwOTI3OTg3MDFlMzdiMWJjNDIxMmQxODY5YTMxODAuLjBkMGVkMjZmZjVmMWNmMGMwMzY0ZTJm
OTJlZDIzNjYwNmE2ZTE2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiBjbGllbnQsIFNvY2tldFByb3ZpZGVyJiBwcm92aWRl
cikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVsKGRvY3VtZW50LCBjbGll
bnQsIHByb3ZpZGVyKSk7IH0KICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CiAKLSAg
ICBib29sIHNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBzZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgLy8gVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwgZnVuY3Rpb25zLgogICAgIENvbm5lY3RTdGF0dXMgY29ubmVjdChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBmaW5hbDsKQEAgLTg0LDcgKzg0LDcgQEAg
cHVibGljOgogICAgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCBmdW5jdGlvbnMuCiAgICAg
dm9pZCBkaWRPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFsOwogICAg
IHZvaWQgZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmLCBj
b25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJl
YW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFt
SGFuZGxlJikgZmluYWw7CiAgICAgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudChTb2NrZXRT
dHJlYW1IYW5kbGUmLCBzaXplX3QgYnVmZmVyZWRBbW91bnQpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbFNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBTb2NrZXRTdHJlYW1F
cnJvciYpIGZpbmFsOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2b2lk
IGRlcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0K
IAotICAgIGJvb2wgYXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbik7
CisgICAgYm9vbCBhcHBlbmRUb0J1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
KTsKICAgICB2b2lkIHNraXBCdWZmZXIoc2l6ZV90IGxlbik7CiAgICAgYm9vbCBwcm9jZXNzQnVm
ZmVyKCk7CiAgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKCk7CkBAIC0xNjAsMTEgKzE2MCwxMSBA
QCBwcml2YXRlOgogICAgICAgICBRdWV1ZWRGcmFtZVR5cGUgZnJhbWVUeXBlOwogICAgICAgICAv
LyBPbmx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIGl0ZW1zIGlzIHVzZWQsIGFjY29yZGluZyB0byB0
aGUgdmFsdWUgb2YgZnJhbWVUeXBlLgogICAgICAgICBDU3RyaW5nIHN0cmluZ0RhdGE7Ci0gICAg
ICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3JEYXRhOworICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVj
dG9yRGF0YTsKICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2JEYXRhOwogICAgIH07CiAgICAgdm9p
ZCBlbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcmKTsKLSAgICB2b2lkIGVucXVldWVSYXdG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCk7CisgICAgdm9pZCBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgIHZvaWQgZW5x
dWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBCbG9iJik7CiAKICAgICB2b2lk
IHByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKTsKQEAgLTE4NCw3ICsxODQsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gSWYgeW91IGFyZSBnb2luZyB0byBzZW5kIGEgaHliaS0xMCBmcmFtZSwgeW91
IG5lZWQgdG8gdXNlIHRoZSBvdXRnb2luZyBmcmFtZSBxdWV1ZQogICAgIC8vIGluc3RlYWQgb2Yg
Y2FsbCBzZW5kRnJhbWUoKSBkaXJlY3RseS4KLSAgICB2b2lkIHNlbmRGcmFtZShXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV1RGOjpG
dW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBzZW5kRnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRh
dGFMZW5ndGgsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpOwog
CiAgICAgZW51bSBCbG9iTG9hZGVyU3RhdHVzIHsKICAgICAgICAgQmxvYkxvYWRlck5vdFN0YXJ0
ZWQsCkBAIC0xOTcsNyArMTk3LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFdlYlNvY2tldENo
YW5uZWxDbGllbnQ+IG1fY2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRIYW5k
c2hha2U+IG1faGFuZHNoYWtlOwogICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IG1faGFu
ZGxlOwotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9i
dWZmZXI7CiAKICAgICBUaW1lciBtX3Jlc3VtZVRpbWVyOwogICAgIGJvb2wgbV9zdXNwZW5kZWQg
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKaW5kZXggMTRhYjgwOTViMjVjZjEzOTRjMDg0OWEwYjE4
NzgxNzRjNDU3MzNhZC4uMTEyZWQyZWUwZWEzNmVhNGIzYzcwOTRkNzU3MzhhMmVkZTNjMjdmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZXIuY3BwCkBAIC02MywxNSArNjMsMTUgQEAgV2ViU29ja2V0RGVmbGF0ZXI6On5X
ZWJTb2NrZXREZWZsYXRlcigpCiAgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0RGVmbGF0
ZXIgJXAgRGVzdHJ1Y3RvciBkZWZsYXRlRW5kKCkgZmFpbGVkOiAlZCBpcyByZXR1cm5lZCIsIHRo
aXMsIHJlc3VsdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldFN0cmVhbVBhcmFtZXRlcih6X3N0cmVh
bSogc3RyZWFtLCBjb25zdCBjaGFyKiBpbnB1dERhdGEsIHNpemVfdCBpbnB1dExlbmd0aCwgY2hh
ciogb3V0cHV0RGF0YSwgc2l6ZV90IG91dHB1dExlbmd0aCkKK3N0YXRpYyB2b2lkIHNldFN0cmVh
bVBhcmFtZXRlcih6X3N0cmVhbSogc3RyZWFtLCBjb25zdCB1aW50OF90KiBpbnB1dERhdGEsIHNp
emVfdCBpbnB1dExlbmd0aCwgdWludDhfdCogb3V0cHV0RGF0YSwgc2l6ZV90IG91dHB1dExlbmd0
aCkKIHsKLSAgICBzdHJlYW0tPm5leHRfaW4gPSByZWludGVycHJldF9jYXN0PEJ5dGVmKj4oY29u
c3RfY2FzdDxjaGFyKj4oaW5wdXREYXRhKSk7CisgICAgc3RyZWFtLT5uZXh0X2luID0gY29uc3Rf
Y2FzdDx1aW50OF90Kj4oaW5wdXREYXRhKTsKICAgICBzdHJlYW0tPmF2YWlsX2luID0gaW5wdXRM
ZW5ndGg7Ci0gICAgc3RyZWFtLT5uZXh0X291dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihv
dXRwdXREYXRhKTsKKyAgICBzdHJlYW0tPm5leHRfb3V0ID0gb3V0cHV0RGF0YTsKICAgICBzdHJl
YW0tPmF2YWlsX291dCA9IG91dHB1dExlbmd0aDsKIH0KIAotYm9vbCBXZWJTb2NrZXREZWZsYXRl
cjo6YWRkQnl0ZXMoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK2Jvb2wgV2ViU29j
a2V0RGVmbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgp
CiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNyw3ICsx
MzcsNyBAQCBXZWJTb2NrZXRJbmZsYXRlcjo6fldlYlNvY2tldEluZmxhdGVyKCkKICAgICAgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRJbmZsYXRlciAlcCBEZXN0cnVjdG9yIGluZmxhdGVFbmQo
KSBmYWlsZWQ6ICVkIGlzIHJldHVybmVkIiwgdGhpcywgcmVzdWx0KTsKIH0KIAotYm9vbCBXZWJT
b2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
K2Jvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTE3MCw3ICsxNzAsNyBAQCBib29sIFdlYlNvY2tldEluZmxhdGVyOjphZGRCeXRlcyhjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogCiBib29sIFdlYlNvY2tldEluZmxhdGVyOjpm
aW5pc2goKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpcHBlZEZpZWxkcyA9ICJcMFww
XHhmZlx4ZmYiOworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IHN0cmlwcGVkRmllbGRzW10gPSAi
XDBcMFx4ZmZceGZmIjsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHN0cmlwcGVkTGVuZ3RoID0g
NDsKIAogICAgIC8vIEFwcGVuZHMgNCBvY3Rlc3RzIG9mIDB4MDAgMHgwMCAweGZmIDB4ZmYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZs
YXRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVyLmgKaW5kZXggZjYyZGM1ODVhODNiZTNhMTM5NDFiNTdiYWY3Mjk2NTZjMTMwNDkyYi4uOGY0
NTRmYjNiNjk2ZDhiYzQzZWYyYWE1N2IxZjdiMDljZTI2MDkyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmgKQEAgLTQ5
LDE2ICs0OSwxNiBAQCBwdWJsaWM6CiAgICAgfldlYlNvY2tldERlZmxhdGVyKCk7CiAKICAgICBi
b29sIGluaXRpYWxpemUoKTsKLSAgICBib29sIGFkZEJ5dGVzKGNvbnN0IGNoYXIqLCBzaXplX3Qp
OworICAgIGJvb2wgYWRkQnl0ZXMoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBm
aW5pc2goKTsKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgp
OyB9CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsg
fQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAg
ICAgdm9pZCByZXNldCgpOwogCiBwcml2YXRlOgogICAgIGludCBtX3dpbmRvd0JpdHM7CiAgICAg
Q29udGV4dFRha2VPdmVyTW9kZSBtX2NvbnRleHRUYWtlT3Zlck1vZGU7Ci0gICAgVmVjdG9yPGNo
YXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8el9zdHJlYW0+IG1fc3RyZWFtOwogfTsKIApAQCAtNjksMTUgKzY5LDE1IEBAIHB1
YmxpYzoKICAgICB+V2ViU29ja2V0SW5mbGF0ZXIoKTsKIAogICAgIGJvb2wgaW5pdGlhbGl6ZSgp
OwotICAgIGJvb2wgYWRkQnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgYm9vbCBhZGRC
eXRlcyhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBib29sIGZpbmlzaCgpOwotICAgIGNv
bnN0IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBjb25zdCB1
aW50OF90KiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KICAgICB2b2lkIHJlc2V0KCk7
CiAKIHByaXZhdGU6CiAgICAgaW50IG1fd2luZG93Qml0czsKLSAgICBWZWN0b3I8Y2hhcj4gbV9i
dWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjx6X3N0cmVhbT4gbV9zdHJlYW07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcAppbmRleCBmN2YzNjU3NWIyNjc1NWNj
YjlhMjFlODllNmJiM2U0ZDAyZTcwOGI5Li42M2UyNTczMTEzOTY3MTY4M2JjOGVlYzJiZjViNjFk
MWI2NTdlZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRGcmFtZS5jcHAKQEAgLTMwLDEzICszMCwxMyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAvLyBDb25zdGFudHMgZm9yIGh5YmktMTAgZnJhbWUgZm9ybWF0LgotY29uc3QgdW5z
aWduZWQgY2hhciBmaW5hbEJpdCA9IDB4ODA7Ci1jb25zdCB1bnNpZ25lZCBjaGFyIGNvbXByZXNz
Qml0ID0gMHg0MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQyQml0ID0gMHgyMDsKLWNv
bnN0IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQzQml0ID0gMHgxMDsKLWNvbnN0IHVuc2lnbmVkIGNo
YXIgb3BDb2RlTWFzayA9IDB4RjsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgbWFza0JpdCA9IDB4ODA7
Ci1jb25zdCB1bnNpZ25lZCBjaGFyIHBheWxvYWRMZW5ndGhNYXNrID0gMHg3RjsKK2NvbnN0IHVp
bnQ4X3QgZmluYWxCaXQgPSAweDgwOworY29uc3QgdWludDhfdCBjb21wcmVzc0JpdCA9IDB4NDA7
Citjb25zdCB1aW50OF90IHJlc2VydmVkMkJpdCA9IDB4MjA7Citjb25zdCB1aW50OF90IHJlc2Vy
dmVkM0JpdCA9IDB4MTA7Citjb25zdCB1aW50OF90IG9wQ29kZU1hc2sgPSAweEY7Citjb25zdCB1
aW50OF90IG1hc2tCaXQgPSAweDgwOworY29uc3QgdWludDhfdCBwYXlsb2FkTGVuZ3RoTWFzayA9
IDB4N0Y7CiBjb25zdCBzaXplX3QgbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0
aEZpZWxkID0gMTI1OwogY29uc3Qgc2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoVHdvQnl0ZUV4dGVu
ZGVkTGVuZ3RoRmllbGQgPSAxMjY7CiBjb25zdCBzaXplX3QgcGF5bG9hZExlbmd0aFdpdGhFaWdo
dEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkID0gMTI3OwpAQCAtNDcsMjIgKzQ3LDIyIEBAIGJvb2wg
V2ViU29ja2V0RnJhbWU6Om5lZWRzRXh0ZW5kZWRMZW5ndGhGaWVsZChzaXplX3QgcGF5bG9hZExl
bmd0aCkKICAgICByZXR1cm4gcGF5bG9hZExlbmd0aCA+IG1heFBheWxvYWRMZW5ndGhXaXRob3V0
RXh0ZW5kZWRMZW5ndGhGaWVsZDsKIH0KIAotV2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1
bHQgV2ViU29ja2V0RnJhbWU6OnBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIFdlYlNvY2tldEZyYW1lJiBmcmFtZSwgY29uc3QgY2hhciomIGZyYW1lRW5kLCBTdHJpbmcm
IGVycm9yU3RyaW5nKQorV2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0
RnJhbWU6OnBhcnNlRnJhbWUodWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdlYlNv
Y2tldEZyYW1lJiBmcmFtZSwgY29uc3QgdWludDhfdComIGZyYW1lRW5kLCBTdHJpbmcmIGVycm9y
U3RyaW5nKQogewotICAgIGNoYXIqIHAgPSBkYXRhOwotICAgIGNvbnN0IGNoYXIqIGJ1ZmZlckVu
ZCA9IGRhdGEgKyBkYXRhTGVuZ3RoOworICAgIHVpbnQ4X3QqIHAgPSBkYXRhOworICAgIGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlckVuZCA9IGRhdGEgKyBkYXRhTGVuZ3RoOwogCiAgICAgaWYgKGRhdGFM
ZW5ndGggPCAyKQogICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRlOwogCi0gICAgdW5zaWdu
ZWQgY2hhciBmaXJzdEJ5dGUgPSAqcCsrOwotICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kQnl0ZSA9
ICpwKys7CisgICAgdWludDhfdCBmaXJzdEJ5dGUgPSAqcCsrOworICAgIHVpbnQ4X3Qgc2Vjb25k
Qnl0ZSA9ICpwKys7CiAKICAgICBib29sIGZpbmFsID0gZmlyc3RCeXRlICYgZmluYWxCaXQ7CiAg
ICAgYm9vbCBjb21wcmVzcyA9IGZpcnN0Qnl0ZSAmIGNvbXByZXNzQml0OwogICAgIGJvb2wgcmVz
ZXJ2ZWQyID0gZmlyc3RCeXRlICYgcmVzZXJ2ZWQyQml0OwogICAgIGJvb2wgcmVzZXJ2ZWQzID0g
Zmlyc3RCeXRlICYgcmVzZXJ2ZWQzQml0OwotICAgIHVuc2lnbmVkIGNoYXIgb3BDb2RlID0gZmly
c3RCeXRlICYgb3BDb2RlTWFzazsKKyAgICB1aW50OF90IG9wQ29kZSA9IGZpcnN0Qnl0ZSAmIG9w
Q29kZU1hc2s7CiAKICAgICBib29sIG1hc2tlZCA9IHNlY29uZEJ5dGUgJiBtYXNrQml0OwogICAg
IHVpbnQ2NF90IHBheWxvYWRMZW5ndGg2NCA9IHNlY29uZEJ5dGUgJiBwYXlsb2FkTGVuZ3RoTWFz
azsKQEAgLTc5LDcgKzc5LDcgQEAgV2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1bHQgV2Vi
U29ja2V0RnJhbWU6OnBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGQKICAgICAgICAgcGF5
bG9hZExlbmd0aDY0ID0gMDsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHRlbmRlZFBh
eWxvYWRMZW5ndGhTaXplOyArK2kpIHsKICAgICAgICAgICAgIHBheWxvYWRMZW5ndGg2NCA8PD0g
ODsKLSAgICAgICAgICAgIHBheWxvYWRMZW5ndGg2NCB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPigqcCsrKTsKKyAgICAgICAgICAgIHBheWxvYWRMZW5ndGg2NCB8PSBzdGF0aWNfY2FzdDx1
aW50OF90PigqcCsrKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXh0ZW5kZWRQYXlsb2FkTGVu
Z3RoU2l6ZSA9PSAyICYmIHBheWxvYWRMZW5ndGg2NCA8PSBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91
dEV4dGVuZGVkTGVuZ3RoRmllbGQpIHsKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlRoZSBt
aW5pbWFsIG51bWJlciBvZiBieXRlcyBNVVNUIGJlIHVzZWQgdG8gZW5jb2RlIHRoZSBsZW5ndGgi
OwpAQCAtMTAzLDggKzEwMyw4IEBAIFdlYlNvY2tldEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IFdl
YlNvY2tldEZyYW1lOjpwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBkCiAgICAgICAgIHJl
dHVybiBGcmFtZUluY29tcGxldGU7CiAKICAgICBpZiAobWFza2VkKSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIG1hc2tpbmdLZXkgPSBwOwotICAgICAgICBjaGFyKiBwYXlsb2FkID0gcCArIG1hc2tp
bmdLZXlXaWR0aEluQnl0ZXM7CisgICAgICAgIHVpbnQ4X3QqIG1hc2tpbmdLZXkgPSBwOworICAg
ICAgICB1aW50OF90KiBwYXlsb2FkID0gcCArIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXM7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9hZExlbmd0aDsgKytpKQogICAgICAgICAg
ICAgcGF5bG9hZFtpXSBePSBtYXNraW5nS2V5W2kgJSBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzXTsg
Ly8gVW5tYXNrIHRoZSBwYXlsb2FkLgogICAgIH0KQEAgLTEyMSw3ICsxMjEsNyBAQCBXZWJTb2Nr
ZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFy
KiBkYXRhLCBzaXplX3QgZAogICAgIHJldHVybiBGcmFtZU9LOwogfQogCi1zdGF0aWMgdm9pZCBh
cHBlbmRGcmFtZVBheWxvYWQoY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lLCBWZWN0b3I8Y2hh
cj4mIGZyYW1lRGF0YSkKK3N0YXRpYyB2b2lkIGFwcGVuZEZyYW1lUGF5bG9hZChjb25zdCBXZWJT
b2NrZXRGcmFtZSYgZnJhbWUsIFZlY3Rvcjx1aW50OF90PiYgZnJhbWVEYXRhKQogewogICAgIHNp
emVfdCBtYXNraW5nS2V5U3RhcnQgPSAwOwogICAgIGlmIChmcmFtZS5tYXNrZWQpIHsKQEAgLTEz
OSw3ICsxMzksNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRGcmFtZVBheWxvYWQoY29uc3QgV2ViU29j
a2V0RnJhbWUmIGZyYW1lLCBWZWN0b3I8Y2hhcj4mIGZyYW1lRAogICAgIH0KIH0KIAotdm9pZCBX
ZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSkKK3Zv
aWQgV2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiBmcmFtZURh
dGEpCiB7CiAgICAgQVNTRVJUKCEob3BDb2RlICYgfm9wQ29kZU1hc2spKTsgLy8gQ2hlY2tzIHdo
ZXRoZXIgIm9wQ29kZSIgZml0cyBpbiB0aGUgcmFuZ2Ugb2Ygb3BDb2Rlcy4KIApAQCAtMTU1LDcg
KzE1NSw3IEBAIHZvaWQgV2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEoVmVjdG9yPGNoYXI+
JiBmcmFtZURhdGEpCiAgICAgICAgIGZyYW1lRGF0YS5hcHBlbmQocGF5bG9hZExlbmd0aCAmIDB4
RkYpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZyYW1lRGF0YS5hdCgxKSB8PSBwYXlsb2FkTGVu
Z3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQ7Ci0gICAgICAgIGNoYXIgZXh0ZW5k
ZWRQYXlsb2FkTGVuZ3RoWzhdOworICAgICAgICB1aW50OF90IGV4dGVuZGVkUGF5bG9hZExlbmd0
aFs4XTsKICAgICAgICAgc2l6ZV90IHJlbWFpbmluZyA9IHBheWxvYWRMZW5ndGg7CiAgICAgICAg
IC8vIEZpbGwgdGhlIGxlbmd0aCBpbnRvIGV4dGVuZGVkUGF5bG9hZExlbmd0aCBpbiB0aGUgbmV0
d29yayBieXRlIG9yZGVyLgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkgewpA
QCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgV2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEoVmVj
dG9yPGNoYXI+JiBmcmFtZURhdGEpCiAgICAgYXBwZW5kRnJhbWVQYXlsb2FkKCp0aGlzLCBmcmFt
ZURhdGEpOwogfQogCi1XZWJTb2NrZXRGcmFtZTo6V2ViU29ja2V0RnJhbWUoT3BDb2RlIG9wQ29k
ZSwgYm9vbCBmaW5hbCwgYm9vbCBjb21wcmVzcywgYm9vbCBtYXNrZWQsIGNvbnN0IGNoYXIqIHBh
eWxvYWQsIHNpemVfdCBwYXlsb2FkTGVuZ3RoKQorV2ViU29ja2V0RnJhbWU6OldlYlNvY2tldEZy
YW1lKE9wQ29kZSBvcENvZGUsIGJvb2wgZmluYWwsIGJvb2wgY29tcHJlc3MsIGJvb2wgbWFza2Vk
LCBjb25zdCB1aW50OF90KiBwYXlsb2FkLCBzaXplX3QgcGF5bG9hZExlbmd0aCkKICAgICA6IG9w
Q29kZShvcENvZGUpCiAgICAgLCBmaW5hbChmaW5hbCkKICAgICAsIGNvbXByZXNzKGNvbXByZXNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJh
bWUuaAppbmRleCBkYjE2MGRjZmIxZWU1OTU1YTlkNTdmZGM4NzdiNGY5NDczYTU3M2EwLi5hNzRj
YjgyOWM3NWFlY2ExOTEzZjlmODQyYmMzOTNhNDdhZGRjMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaApAQCAtNTYsMTAgKzU2
LDEwIEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFtZSB7CiAgICAgc3RhdGljIGJvb2wgaXNDb250cm9s
T3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuIG9wQ29kZSA9PSBPcENvZGVDbG9zZSB8fCBv
cENvZGUgPT0gT3BDb2RlUGluZyB8fCBvcENvZGUgPT0gT3BDb2RlUG9uZzsgfQogICAgIHN0YXRp
YyBib29sIGlzUmVzZXJ2ZWRPcENvZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gIWlzTm9uQ29u
dHJvbE9wQ29kZShvcENvZGUpICYmICFpc0NvbnRyb2xPcENvZGUob3BDb2RlKTsgfQogICAgIHN0
YXRpYyBib29sIG5lZWRzRXh0ZW5kZWRMZW5ndGhGaWVsZChzaXplX3QgcGF5bG9hZExlbmd0aCk7
Ci0gICAgc3RhdGljIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0RnJhbWUmLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQsIFN0
cmluZyYgZXJyb3JTdHJpbmcpOyAvLyBNYXkgbW9kaWZ5IHBhcnQgb2YgZGF0YSB0byB1bm1hc2sg
dGhlIGZyYW1lLgorICAgIHN0YXRpYyBQYXJzZUZyYW1lUmVzdWx0IHBhcnNlRnJhbWUodWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdlYlNvY2tldEZyYW1lJiwgY29uc3QgdWludDhf
dComIGZyYW1lRW5kLCBTdHJpbmcmIGVycm9yU3RyaW5nKTsgLy8gTWF5IG1vZGlmeSBwYXJ0IG9m
IGRhdGEgdG8gdW5tYXNrIHRoZSBmcmFtZS4KIAotICAgIFdFQkNPUkVfRVhQT1JUIFdlYlNvY2tl
dEZyYW1lKE9wQ29kZSA9IE9wQ29kZUludmFsaWQsIGJvb2wgZmluYWwgPSBmYWxzZSwgYm9vbCBj
b21wcmVzcyA9IGZhbHNlLCBib29sIG1hc2tlZCA9IGZhbHNlLCBjb25zdCBjaGFyKiBwYXlsb2Fk
ID0gbnVsbHB0ciwgc2l6ZV90IHBheWxvYWRMZW5ndGggPSAwKTsKLSAgICB2b2lkIG1ha2VGcmFt
ZURhdGEoVmVjdG9yPGNoYXI+JiBmcmFtZURhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIFdlYlNv
Y2tldEZyYW1lKE9wQ29kZSA9IE9wQ29kZUludmFsaWQsIGJvb2wgZmluYWwgPSBmYWxzZSwgYm9v
bCBjb21wcmVzcyA9IGZhbHNlLCBib29sIG1hc2tlZCA9IGZhbHNlLCBjb25zdCB1aW50OF90KiBw
YXlsb2FkID0gbnVsbHB0ciwgc2l6ZV90IHBheWxvYWRMZW5ndGggPSAwKTsKKyAgICB2b2lkIG1h
a2VGcmFtZURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiBmcmFtZURhdGEpOwogCiAgICAgT3BDb2RlIG9w
Q29kZTsKICAgICBib29sIGZpbmFsOwpAQCAtNjcsNyArNjcsNyBAQCBzdHJ1Y3QgV2ViU29ja2V0
RnJhbWUgewogICAgIGJvb2wgcmVzZXJ2ZWQyOwogICAgIGJvb2wgcmVzZXJ2ZWQzOwogICAgIGJv
b2wgbWFza2VkOwotICAgIGNvbnN0IGNoYXIqIHBheWxvYWQ7CisgICAgY29uc3QgdWludDhfdCog
cGF5bG9hZDsKICAgICBzaXplX3QgcGF5bG9hZExlbmd0aDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAK
aW5kZXggODQ5Y2Y1ZjYyNGJjYzI3MmVlNWU3YmM2MjZkYTdlNTAzYWQ0NDkyMi4uOWQxMTY5OWYx
YTRiNmM1Njc2NzViNzFhMzI4MzBjMjQyYTA1ODMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgc3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBVUkwmIHVybCwgYm9vbCBz
ZWN1cmUpCiB9CiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0gMTI4
Owotc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciogcCwgc2l6ZV90IGxl
bikKK3N0YXRpYyBTdHJpbmcgdHJpbUlucHV0U2FtcGxlKGNvbnN0IHVpbnQ4X3QqIHAsIHNpemVf
dCBsZW4pCiB7CiAgICAgU3RyaW5nIHMgPSBTdHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW4s
IG1heElucHV0U2FtcGxlU2l6ZSkpOwogICAgIGlmIChsZW4gPiBtYXhJbnB1dFNhbXBsZVNpemUp
CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlc2V0KCkKICAg
ICBtX2V4dGVuc2lvbkRpc3BhdGNoZXIucmVzZXQoKTsKIH0KIAotaW50IFdlYlNvY2tldEhhbmRz
aGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4p
CitpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IHVpbnQ4
X3QqIGhlYWRlciwgc2l6ZV90IGxlbikKIHsKICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwogICAg
IGludCBzdGF0dXNDb2RlOwpAQCAtMjQ1LDEyICsyNDUsMTIgQEAgaW50IFdlYlNvY2tldEhhbmRz
aGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4p
CiAgICAgICAgIHJldHVybiBsZW47CiAgICAgfQogICAgIG1fbW9kZSA9IE5vcm1hbDsKLSAgICBp
ZiAoIXN0cm5zdHIoaGVhZGVyLCAiXHJcblxyXG4iLCBsZW4pKSB7CisgICAgaWYgKCFtZW1tZW0o
aGVhZGVyLCBsZW4sICJcclxuXHJcbiIsIDQpKSB7CiAgICAgICAgIC8vIEp1c3QgaGFzbid0IGJl
ZW4gcmVjZWl2ZWQgZnVsbHkgeWV0LgogICAgICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwogICAg
ICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGNvbnN0IGNoYXIqIHAgPSByZWFkSFRUUEhlYWRl
cnMoaGVhZGVyICsgbGluZUxlbmd0aCwgaGVhZGVyICsgbGVuKTsKKyAgICBjb25zdCB1aW50OF90
KiBwID0gcmVhZEhUVFBIZWFkZXJzKGhlYWRlciArIGxpbmVMZW5ndGgsIGhlYWRlciArIGxlbik7
CiAgICAgaWYgKCFwKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0SGFuZHNoYWtl
ICVwIHJlYWRTZXJ2ZXJIYW5kc2hha2UoKSByZWFkSFRUUEhlYWRlcnMoKSBmYWlsZWQiLCB0aGlz
KTsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOyAvLyBtX2ZhaWx1cmVSZWFzb24gaXMgc2V0IGlu
c2lkZSByZWFkSFRUUEhlYWRlcnMoKS4KQEAgLTM2Miw3ICszNjIsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaGVhZGVySGFzVmFsaWRIVFRQVmVyc2lvbihTdHJpbmdWaWV3IGh0dHBTdGF0dXNMaW5l
KQogLy8gUmV0dXJucyB0aGUgaGVhZGVyIGxlbmd0aCAoaW5jbHVkaW5nICJcclxuIiksIG9yIC0x
IGlmIHdlIGhhdmUgbm90IHJlY2VpdmVkIGVub3VnaCBkYXRhIHlldC4KIC8vIElmIHRoZSBsaW5l
IGlzIG1hbGZvcm1lZCBvciB0aGUgc3RhdHVzIGNvZGUgaXMgbm90IGEgMy1kaWdpdCBudW1iZXIs
CiAvLyBzdGF0dXNDb2RlIGFuZCBzdGF0dXNUZXh0IHdpbGwgYmUgc2V0IHRvIC0xIGFuZCBhIG51
bGwgc3RyaW5nLCByZXNwZWN0aXZlbHkuCi1pbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3Rh
dHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsIGludCYgc3Rh
dHVzQ29kZSwgU3RyaW5nJiBzdGF0dXNUZXh0KQoraW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVh
ZFN0YXR1c0xpbmUoY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLCBp
bnQmIHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCkKIHsKICAgICAvLyBBcmJpdHJhcnkg
c2l6ZSBsaW1pdCB0byBwcmV2ZW50IHRoZSBzZXJ2ZXIgZnJvbSBzZW5kaW5nIGFuIHVuYm91bmRl
ZAogICAgIC8vIGFtb3VudCBvZiBkYXRhIHdpdGggbm8gbmV3bGluZXMgYW5kIGZvcmNpbmcgdXMg
dG8gYnVmZmVyIGl0IGFsbC4KQEAgLTM3MSw5ICszNzEsOSBAQCBpbnQgV2ViU29ja2V0SGFuZHNo
YWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5n
dGgsCiAgICAgc3RhdHVzQ29kZSA9IC0xOwogICAgIHN0YXR1c1RleHQgPSBTdHJpbmcoKTsKIAot
ICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IG51bGxwdHI7Ci0gICAgY29uc3QgY2hhciogc3BhY2Uy
ID0gbnVsbHB0cjsKLSAgICBjb25zdCBjaGFyKiBwOworICAgIGNvbnN0IHVpbnQ4X3QqIHNwYWNl
MSA9IG51bGxwdHI7CisgICAgY29uc3QgdWludDhfdCogc3BhY2UyID0gbnVsbHB0cjsKKyAgICBj
b25zdCB1aW50OF90KiBwOwogICAgIHNpemVfdCBjb25zdW1lZExlbmd0aDsKIAogICAgIGZvciAo
cCA9IGhlYWRlciwgY29uc3VtZWRMZW5ndGggPSAwOyBjb25zdW1lZExlbmd0aCA8IGhlYWRlckxl
bmd0aDsgcCsrLCBjb25zdW1lZExlbmd0aCsrKSB7CkBAIC0zOTcsNyArMzk3LDcgQEAgaW50IFdl
YlNvY2tldEhhbmRzaGFrZTo6cmVhZFN0YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXpl
X3QgaGVhZGVyTGVuZ3RoLAogICAgIGlmIChjb25zdW1lZExlbmd0aCA9PSBoZWFkZXJMZW5ndGgp
CiAgICAgICAgIHJldHVybiAtMTsgLy8gV2UgaGF2ZSBub3QgcmVjZWl2ZWQgJ1xuJyB5ZXQuCiAK
LSAgICBjb25zdCBjaGFyKiBlbmQgPSBwICsgMTsKKyAgICBjb25zdCB1aW50OF90KiBlbmQgPSBw
ICsgMTsKICAgICBpbnQgbGluZUxlbmd0aCA9IGVuZCAtIGhlYWRlcjsKICAgICBpZiAobGluZUxl
bmd0aCA+IG1heGltdW1MZW5ndGgpIHsKICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlN0YXR1
cyBsaW5lIGlzIHRvbyBsb25nIl9zOwpAQCAtNDE1LDEzICs0MTUsMTMgQEAgaW50IFdlYlNvY2tl
dEhhbmRzaGFrZTo6cmVhZFN0YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVh
ZGVyTGVuZ3RoLAogICAgICAgICByZXR1cm4gbGluZUxlbmd0aDsKICAgICB9CiAKLSAgICBTdHJp
bmdWaWV3IGh0dHBTdGF0dXNMaW5lKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihoZWFk
ZXIpLCBzcGFjZTEgLSBoZWFkZXIpOworICAgIFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUoaGVh
ZGVyLCBzcGFjZTEgLSBoZWFkZXIpOwogICAgIGlmICghaGVhZGVySGFzVmFsaWRIVFRQVmVyc2lv
bihodHRwU3RhdHVzTGluZSkpIHsKICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gbWFrZVN0cmlu
ZygiSW52YWxpZCBIVFRQIHZlcnNpb24gc3RyaW5nOiAiLCBodHRwU3RhdHVzTGluZSk7CiAgICAg
ICAgIHJldHVybiBsaW5lTGVuZ3RoOwogICAgIH0KIAotICAgIFN0cmluZ1ZpZXcgc3RhdHVzQ29k
ZVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oc3BhY2UxICsgMSksIHNwYWNl
MiAtIHNwYWNlMSAtIDEpOworICAgIFN0cmluZ1ZpZXcgc3RhdHVzQ29kZVN0cmluZyhzcGFjZTEg
KyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKICAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5n
dGgoKSAhPSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgog
ICAgICAgICByZXR1cm4gbGluZUxlbmd0aDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsr
aSkgewpAQCAtNDM2LDE0ICs0MzYsMTQgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFN0
YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLAogICAgIHJl
dHVybiBsaW5lTGVuZ3RoOwogfQogCi1jb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJl
YWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQorY29uc3Qg
dWludDhfdCogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgdWludDhf
dCogc3RhcnQsIGNvbnN0IHVpbnQ4X3QqIGVuZCkKIHsKICAgICBTdHJpbmdWaWV3IG5hbWU7CiAg
ICAgU3RyaW5nIHZhbHVlOwogICAgIGJvb2wgc2F3U2VjV2ViU29ja2V0RXh0ZW5zaW9uc0hlYWRl
ckZpZWxkID0gZmFsc2U7CiAgICAgYm9vbCBzYXdTZWNXZWJTb2NrZXRBY2NlcHRIZWFkZXJGaWVs
ZCA9IGZhbHNlOwogICAgIGJvb2wgc2F3U2VjV2ViU29ja2V0UHJvdG9jb2xIZWFkZXJGaWVsZCA9
IGZhbHNlOwotICAgIGNvbnN0IGNoYXIqIHAgPSBzdGFydDsKKyAgICBjb25zdCB1aW50OF90KiBw
ID0gc3RhcnQ7CiAgICAgZm9yICg7IHAgPCBlbmQ7IHArKykgewogICAgICAgICBzaXplX3QgY29u
c3VtZWRMZW5ndGggPSBwYXJzZUhUVFBIZWFkZXIocCwgZW5kIC0gcCwgbV9mYWlsdXJlUmVhc29u
LCBuYW1lLCB2YWx1ZSk7CiAgICAgICAgIGlmICghY29uc3VtZWRMZW5ndGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgK
aW5kZXggZWFmOGE1YzA2YWQyMDU4ZDNkMzg5NTEzNTIzOTk2ZjZiZTNlMGRkMy4uNWU2NGMxODM0
ZjZlODM2MTRkMzAxYzRmZWRkMzlkODgzY2FkN2MxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtNjgsNyAr
NjgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKLSAgICBpbnQgcmVhZFNlcnZl
ckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pOworICAgIGludCByZWFk
U2VydmVySGFuZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGhlYWRlciwgc2l6ZV90IGxlbik7CiAgICAg
TW9kZSBtb2RlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25zdDsgLy8g
UmV0dXJucyBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSByZWFzb24gb2YgZmFpbHVyZSBpZiBtb2Rl
KCkgPT0gRmFpbGVkLgogCkBAIC04NywxMCArODcsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgog
Ci0gICAgaW50IHJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRl
ckxlbmd0aCwgaW50JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpOworICAgIGludCBy
ZWFkU3RhdHVzTGluZShjb25zdCB1aW50OF90KiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgs
IGludCYgc3RhdHVzQ29kZSwgU3RyaW5nJiBzdGF0dXNUZXh0KTsKIAogICAgIC8vIFJlYWRzIGFs
bCBoZWFkZXJzIGV4Y2VwdCBmb3IgdGhlIHR3byBwcmVkZWZpbmVkIG9uZXMuCi0gICAgY29uc3Qg
Y2hhciogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQp
OworICAgIGNvbnN0IHVpbnQ4X3QqIHJlYWRIVFRQSGVhZGVycyhjb25zdCB1aW50OF90KiBzdGFy
dCwgY29uc3QgdWludDhfdCogZW5kKTsKICAgICB2b2lkIHByb2Nlc3NIZWFkZXJzKCk7CiAgICAg
Ym9vbCBjaGVja1Jlc3BvbnNlSGVhZGVycygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcAppbmRleCAwYmYyYWE5YTEwYjIyZTExNWEzMmYyNTE0YTdkN2ViNTA2
YjU5ODFhLi5iM2YzMTA5NWFhYTlhZTgzOTRmYjk4NTljNmRmNDhiMmNiOWYwODgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTQ0NywxMCArNDQ3LDEw
IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgaWYgKCFtX3BlZXIpCiAgICAgICAgIHJl
dHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZEZhaWw7CiAKLSAgICAvLyBBcnJh
eUJ1ZmZlciBpc24ndCB0aHJlYWQtc2FmZSwgaGVuY2UgdGhlIGNvbnRlbnQgb2YgQXJyYXlCdWZm
ZXIgaXMgY29waWVkIGludG8gVmVjdG9yPGNoYXI+LgotICAgIFZlY3RvcjxjaGFyPiBkYXRhKGJ5
dGVMZW5ndGgpOworICAgIC8vIEFycmF5QnVmZmVyIGlzbid0IHRocmVhZC1zYWZlLCBoZW5jZSB0
aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBpcyBjb3BpZWQgaW50byBWZWN0b3I8dWludDhfdD4u
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoYnl0ZUxlbmd0aCk7CiAgICAgaWYgKGJpbmFyeURh
dGEuYnl0ZUxlbmd0aCgpKQotICAgICAgICBtZW1jcHkoZGF0YS5kYXRhKCksIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3Ro
KTsKKyAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSgpLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgc2V0
TWV0aG9kTm90Q29tcGxldGVkKCk7CiAKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoW3BlZXIgPSBtX3BlZXIsIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1NlcmlhbGl6ZWRORkEuY3BwCmluZGV4IDI4MzdhY2Y5ZWVmOTRkYmM4YmY4YTAzMzkyMzcx
MjNjOWRlNmM1ZTIuLjk2ZjY1YmRkNGNlNzliYmE4ODZkOTlhMWM2NjI0ZmZiZTRmMTMwMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEu
Y3BwCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogYm9vbCB3cml0ZUFsbFRvRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgVCYgY29udGFpbmVyKQogewotICAgIGNvbnN0IGNoYXIq
IGJ5dGVzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29udGFpbmVyLmRhdGEoKSk7
CisgICAgY29uc3QgdWludDhfdCogYnl0ZXMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihjb250YWluZXIuZGF0YSgpKTsKICAgICBzaXplX3QgYnl0ZXNMZW5ndGggPSBjb250YWlu
ZXIuc2l6ZSgpICogc2l6ZW9mKGNvbnRhaW5lclswXSk7Ci0gICAgY29uc3QgY2hhciogZW5kID0g
Ynl0ZXMgKyBieXRlc0xlbmd0aDsKKyAgICBjb25zdCB1aW50OF90KiBlbmQgPSBieXRlcyArIGJ5
dGVzTGVuZ3RoOwogICAgIHdoaWxlIChieXRlcyA8IGVuZCkgewogICAgICAgICBhdXRvIHdyaXR0
ZW4gPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBieXRlcywgYnl0ZXNMZW5ndGgpOwog
ICAgICAgICBpZiAod3JpdHRlbiA9PSAtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9TdWJ0bGVDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0
by5jcHAKaW5kZXggNzY2NGMwNjlmMTQ5ZmJlZTZkMWI1NDcxNjI4NjE5ODJkNjE4OWE5OC4uODY0
Mzg3MGRkMGU4MTIyZGExODM4OWJiY2FlODU3ZGE3ZTMyZTMwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL1N1YnRsZUNyeXB0by5jcHAKQEAgLTExMjMsNyArMTEyMyw3IEBAIHZvaWQgU3VidGxlQ3J5
cHRvOjp1bndyYXBLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIEtleUZvcm1hdCBmb3Jt
YXQsIEJ1ZmZlCiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsKICAg
ICAgICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBqd2tTdHJpbmcocmVpbnRlcnByZXRfY2FzdF9w
dHI8Y29uc3QgY2hhcio+KGJ5dGVzLmRhdGEoKSksIGJ5dGVzLnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIFN0cmluZyBqd2tTdHJpbmcoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwog
ICAgICAgICAgICAgICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKICAgICAgICAgICAg
ICAgICAgICAgYXV0byBqd2tPYmplY3QgPSBKU09OUGFyc2UoJnN0YXRlLCBqd2tTdHJpbmcpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWp3a09iamVjdCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KaW5kZXgg
MmQyMTQ0ZjBhYzU5NmUzOTk2NDVkMTcwM2E4NjkyZWEzNWJhMzY0Ny4uZDI5OTA5YTM0OTdkYzRh
NDlhN2FmMGQ2ZDMyNDk0OThkMTcyNTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCkBAIC0xNjcsNyArMTY3
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBmaW5kTWFzdGVyS2V5
KCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4ga2V5RGF0YSA9IGFkb3B0Q0Yoa2V5RGF0YVJlZik7Ci0gICAgcmV0dXJuIGJhc2U2
NERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKGtl
eURhdGEuZ2V0KCkpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleURhdGEuZ2V0KCkpKTsKKyAgICByZXR1
cm4gYmFzZTY0RGVjb2RlKENGRGF0YUdldEJ5dGVQdHIoa2V5RGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChrZXlEYXRhLmdldCgpKSk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBkZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcAppbmRleCBlZDg1NjY0N2EzOTlkNjViMDgx
MTE3Yjg2OTA0MTVkMjQyOWFmNzcwLi43YjJiNDUwMzFjYjUwNTNjYjY0NTZkOGVjNjRkOGJjYzdl
MDY0ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVu
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQ
YXJzZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OkRl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogewogfQogCi12b2lk
IERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiB3
cml0ZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIERlY29kZWREYXRh
RG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiB3cml0ZXIsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURv
Y3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBh
cnNlci5oCmluZGV4IGJiYjA2YTNlOGE3ZGQwMWZkZjFkMmY5MWNmZjQ1MTBiZDRlNjdkMTYuLjk1
NTgyYTBkNjkzOTBiMmE1MTYyMzVlZTYzZmJmYmMzMGM1YmQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaApAQCAtNDMsNyArNDMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgYXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmKSBvdmVycmlkZSA9
IDA7CiAKICAgICAvLyBhcHBlbmRCeXRlcyBhbmQgZmx1c2ggYXJlIHVzZWQgYnkgRG9jdW1lbnRX
cml0ZXIgKHRoZSBsb2FkZXIpLgotICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIm
LCBjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBh
cHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3Qg
bGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoKERvY3VtZW50V3JpdGVyJikgb3ZlcnJp
ZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCmluZGV4IDljYmU5MmEzMjdm
ZDI1MmU4ZWUwMzI0OTkzZDc1MjQyYWU1ZjUwYzcuLjdjNGMzZDJlN2RjZThjOTk3NTAwYTRlNmRi
NTlkMDBkYmE2YTA3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBh
cnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0KFNlZ21lbnRlZFN0cmlu
ZyYmKSA9IDA7CiAKICAgICAvLyBhcHBlbmRCeXRlcyBhbmQgZmx1c2ggYXJlIHVzZWQgYnkgRG9j
dW1lbnRXcml0ZXIgKHRoZSBsb2FkZXIpLgotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRCeXRlcyhE
b2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhf
dCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2goRG9j
dW1lbnRXcml0ZXImKSA9IDA7CiAKICAgICAvLyBGSVhNRTogYXBwZW5kKCkgc2hvdWxkIGJlIHBy
aXZhdGUsIGJ1dCBEb2N1bWVudFdyaXRlcjo6cmVwbGFjZURvY3VtZW50IHVzZXMgaXQgZm9yIG5v
dy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaAppbmRleCAwOTRl
Yzg3ZjY1YWMyNzViNTdiMDgxZDBiYzIyZGU1ZmJiOWFkODk3Li5kZTM4OTkyMWFjNmRjMGUwMGNl
NDY5OWI0NzY4YmJhOGNlYWQ3YmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmF3
RGF0YURvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1
bWVudFBhcnNlci5oCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmbHVzaChE
b2N1bWVudFdyaXRlciYgd3JpdGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgLy8gTWFrZSBz
dXJlIGFwcGVuZEJ5dGVzIGlzIGNhbGxlZCBhdCBsZWFzdCBvbmNlLgotICAgICAgICBhcHBlbmRC
eXRlcyh3cml0ZXIsIDAsIDApOworICAgICAgICBhcHBlbmRCeXRlcyh3cml0ZXIsIG51bGxwdHIs
IDApOwogICAgIH0KIAogICAgIHZvaWQgaW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmKSBvdmVycmlk
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggNDUzOGNmNzY5MDUxMjA5
Y2EzOTkyNzJjMGQ5YWM4MjYzN2ZkMWY0ZS4uZmE5YmRhZjIyMTE3YTdjMTg3YWMwYmZmOGI2MzA3
MzE4MTA4NDdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC05Miw3
ICs5Miw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0
OwogCi0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBz
aXplX3QpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBj
b25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaCgpIG92ZXJy
aWRlOwogfTsKIApAQCAtMTg3LDcgKzE4Nyw3IEBAIGlubGluZSBJbWFnZURvY3VtZW50JiBJbWFn
ZURvY3VtZW50UGFyc2VyOjpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PElt
YWdlRG9jdW1lbnQ+KCpSYXdEYXRhRG9jdW1lbnRQYXJzZXI6OmRvY3VtZW50KCkpOwogfQogCi12
b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29u
c3QgY2hhciosIHNpemVfdCkKK3ZvaWQgSW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMo
RG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KQogewogICAgIGRvY3VtZW50
KCkudXBkYXRlRHVyaW5nUGFyc2luZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVu
dC5jcHAKaW5kZXggN2NiMzllZDU2Nzk4NmY5ODlkZjhmMmZmMDYwYTRiZTZiNTI5NTRlNS4uZTll
OTAzYWZlYjdlNDg3Y2RiMTI2ZWEyNzI5NzdjNmQ2NmJmZDQzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgewogICAg
IH0KIAotICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwg
c2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29u
c3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBjcmVhdGVEb2N1bWVudFN0cnVj
dHVyZSgpOwogCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQgeyBudWxscHRy
IH07CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVE
b2N1bWVudFN0cnVjdHVyZSgpCiAgICAgZnJhbWUtPmxvYWRlcigpLnNldE91dGdvaW5nUmVmZXJy
ZXIoZG9jdW1lbnQuY29tcGxldGVVUkwobV9vdXRnb2luZ1JlZmVycmVyKSk7CiB9CiAKLXZvaWQg
TWVkaWFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBj
aGFyKiwgc2l6ZV90KQordm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1
bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpCiB7CiAgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BsdWdpbkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQu
Y3BwCmluZGV4IGQ1ODgyZmIyODU1ZDk3OGQzNDE2MWI0NWNhZGZkMzEwYzYwMjBmYTAuLmUzYTNk
YTZmZjI0NzE5YmZjOTc1MmRmZTU1M2ExNjM3NjRkZTZhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UGx1Z2luRG9jdW1lbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgewogICAg
IH0KIAotICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwg
c2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29u
c3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBjcmVhdGVEb2N1bWVudFN0cnVj
dHVyZSgpOwogCiAgICAgSFRNTEVtYmVkRWxlbWVudCogbV9lbWJlZEVsZW1lbnQgeyBudWxscHRy
IH07CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRl
RG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIGRvY3VtZW50LnNldEhhc1Zpc3VhbGx5Tm9uRW1wdHlD
dXN0b21Db250ZW50KCk7CiB9CiAKLXZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5
dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVfdCkKK3ZvaWQgUGx1Z2luRG9j
dW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCos
IHNpemVfdCkKIHsKICAgICBpZiAobV9lbWJlZEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCmluZGV4IDEwZDcxODJl
MjI4YTE0YzhmNDJjNzJhNmRkMzcwMDYwMTk2MWViZmYuLmJiMTJjMTU5ZGU3NGY5Mjk0NTM2OTU0
MWQ3ODcyZTZjNWMxYWNiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlR2Vu
ZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiAgICAgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYpIG92ZXJyaWRl
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShj
b25zdCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpIG92
ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lkIHBhcnNlV2ViVlRUQ3Vl
RGF0YShJU09XZWJWVFRDdWUmJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
CiAgICAgTWVkaWFUaW1lIHN0YXJ0VGltZVZhcmlhbmNlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAK
aW5kZXggMDVkNzUxMDFiNWMxYjgxYmM2ZTlkNDIyM2Q1ODllMTcxMGY4ODAzYy4uYTIyMjhiYzE3
ZWEzNTZmNjA1MjI4YzU0ZWNlMzcwZGM0ZmNkNDk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtNTgsNyArNTgsNyBA
QCBXZWJWVFRQYXJzZXImIEluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKCkKICAgICByZXR1
cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCi12b2lkIEluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFy
c2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQg
SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHBhcnNlcigpLnBhcnNlQnl0ZXMoZGF0YSwg
bGVuZ3RoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
V2ViVlRUVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZU
VFRleHRUcmFjay5oCmluZGV4IDg0ZWUwZTU3NDBkYzYzNzczMmRlMzhhMjhjMzk5MmU3NjNhMmNm
NDkuLjMxNTIzNTcyOWI1ZmJkOTlmNjM0ZmE3ZDZjNzc2YzI3YmM2YzFjNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaApAQCAtNDMs
NyArNDMsNyBAQCBwcml2YXRlOgogICAgIEluYmFuZFdlYlZUVFRleHRUcmFjayhEb2N1bWVudCYs
IFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAogICAgIFdlYlZU
VFBhcnNlciYgcGFyc2VyKCk7Ci0gICAgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHBhcnNlV2ViVlRUQ3Vl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwogICAgIHZv
aWQgcGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYmKSBmaW5hbDsKIAogICAgIHZvaWQg
bmV3Q3Vlc1BhcnNlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuY3BwCmluZGV4IDlmMWQyZDRiYmI1ZjdkNzIzZTQyMzNhNWQxNmU0MjI3YzM5MTdiMTEu
LmQ1M2NhNmEzYjdlNmRlZDBkYzcxN2VmNWY1ODg1MDdhYzc1OTNhZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lk
IFdlYlZUVFBhcnNlcjo6cGFyc2VGaWxlSGVhZGVyKFN0cmluZyYmIGRhdGEpCiAgICAgcGFyc2Uo
KTsKIH0KIAotdm9pZCBXZWJWVFRQYXJzZXI6OnBhcnNlQnl0ZXMoY29uc3QgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQordm9pZCBXZWJWVFRQYXJzZXI6OnBhcnNlQnl0ZXMoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIG1fbGluZVJlYWRlci5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuZ3RoKSk7CiAgICAgcGFyc2UoKTsKQEAgLTIyNSw3
ICsyMjUsOCBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2UoKQogdm9pZCBXZWJWVFRQYXJzZXI6
OmZpbGVGaW5pc2hlZCgpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gRmluaXNoZWQpOwotICAg
IHBhcnNlQnl0ZXMoIlxuXG4iLCAyKTsKKyAgICBjb25zdCB1aW50OF90IGVuZExpbmVzW10gPSAi
XG5cbiI7CisgICAgcGFyc2VCeXRlcyhlbmRMaW5lcywgMik7CiAgICAgbV9zdGF0ZSA9IEZpbmlz
aGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaAppbmRleCBm
YTMzYTJjZjBlM2YwNjg0OWI3MGFmZWEzMDdiODM2OWZlMzFiYjZjLi4xMjg1NTIwOTE3NDM4NWQw
NTIwOGRjN2E0MDRkYmFhMzFmZjA2NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
cGFyc2VGbG9hdFBlcmNlbnRhZ2VWYWx1ZVBhaXIoVlRUU2Nhbm5lciYgdmFsdWVTY2FubmVyLCBj
aGFyLCBGbG9hdFBvaW50Jik7CiAKICAgICAvLyBJbnB1dCBkYXRhIHRvIHRoZSBwYXJzZXIgdG8g
cGFyc2UuCi0gICAgdm9pZCBwYXJzZUJ5dGVzKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CisgICAg
dm9pZCBwYXJzZUJ5dGVzKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCk7CiAgICAgdm9pZCBwYXJz
ZUZpbGVIZWFkZXIoU3RyaW5nJiYpOwogICAgIHZvaWQgcGFyc2VDdWVEYXRhKGNvbnN0IElTT1dl
YlZUVEN1ZSYpOwogICAgIHZvaWQgZmx1c2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuY3BwCmluZGV4IGJmZGMyYjJiMWQ3OTMyYjVlNGYwMDA4MzI4OWMwNTA0Nzc3ZWEy
NmYuLjBlNDBkOTUwYTI3ZDYzMmY0MjA5NDE0ZDJlYTA0N2I4NGIzMmExZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQg
RG9jdW1lbnRXcml0ZXI6OnJlcG9ydERhdGFSZWNlaXZlZCgpCiAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+cmVzb2x2ZVN0eWxlKERvY3VtZW50OjpSZXNvbHZlU3R5bGVUeXBlOjpSZWJ1aWxkKTsK
IH0KIAotdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6
ZV90IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRXcml0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBB
U1NFUlQgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0Mjcg
aGFzIGJlZW4gcmVzb2x2ZWQuCiAgICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6
Tm90U3RhcnRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRX
cml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCmluZGV4IDg1
YzBhMzg2Y2RjMjE0NzI3MDRhY2I5YzBmNGYyZDYwNDg5MTAyOWYuLjcwZmQyMGMxMzczYWMwZGM5
YjQ0NDk1NGMzYTIwNDA2ZjIxYjhjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5oCkBAIC00Nyw4ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW4oKTsKICAg
ICBib29sIGJlZ2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFi
bGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQg
YWRkRGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7Ci0gICAgdm9pZCBhZGRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKSB7IGFkZERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnl0ZXMpLCBsZW5ndGgpOyB9CisgICAgdm9pZCBhZGRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKICAgICB2b2lkIGluc2Vy
dERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4gaW50ZXJuYWwgdXNl
IG9ubHkgdG8gcHJldmVudCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBlbmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Np
bmtEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcApp
bmRleCBhNmMyNjg5MmRhNjE0YzUxMGY0MDVjNjg4ZGNhZmNlODgxMTM0ZDQyLi5hNjg3MTFmNmMy
MTlmN2E0OGFiM2E2ZTE2ZjU1ZWIwZTY0MDVmYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lu
a0RvY3VtZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIC8v
IElnbm9yZSBhbGwgZGF0YS4KLSAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwg
Y29uc3QgY2hhciosIHNpemVfdCkgb3ZlcnJpZGUKKyAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3Vt
ZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGUKICAgICB7CiAgICAg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggZGQ4
ODkzNWRhYjY0NWI1MGM5MDhhNTJmOWQ3ZjE4MGRiMWZlMjA5ZS4uOGNjM2M1NjhjNDM3OTZhYzYx
YjMwOTc1NDdhODllZjgxMmQ5OGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFj
a0xvYWRlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIAogICAgIHdoaWxlIChtX3Bh
cnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVy
LT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNl
Qnl0ZXMoZGF0YS5kYXRhQXNDaGFyUHRyKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQ
YXJzZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9w
YXJzZU9mZnNldCArPSBkYXRhLnNpemUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4
IGQ0Y2FmNGQ1ZjllYTc2NmM2MDAwZjhmZjczNmMyNDdjMTMyM2IzZDAuLmYyNjRmMWRkNzEyM2Q2
OTJjNjU3ZjFlY2UxNDk5NGM0MTk2MzM0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDYsNyAr
NjA2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5p
ZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRh
QXNDaGFyUHRyKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0
byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkws
IG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVz
b3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
TWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IGM4YTliYmRlM2UzN2RhMDU3N2U5MDQxZTE5OTYzZTQ0
ZjFhMjUzMmEuLmI4N2RkODM1MDYwN2MyNGJlMjU2ZTM0NDFiZWQyZDM3NjdlMDk1NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFu
aWZlc3RQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBj
YWNoZU1vZGVJZGVudGlmCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMg
Y29uc3RleHByIENoYXJhY3RlclR5cGUgZmFsbGJhY2tNb2RlSWRlbnRpZmllcltdID0geyAnRics
ICdBJywgJ0wnLCAnTCcsICdCJywgJ0EnLCAnQycsICdLJyB9OwogdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIG5ldHdvcmtNb2Rl
SWRlbnRpZmllcltdID0geyAnTicsICdFJywgJ1QnLCAnVycsICdPJywgJ1InLCAnSycgfTsKIAot
c3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZl
c3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0PiBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChj
b25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyIGNhY2hlTWFuaWZlc3RNSU1FVHlwZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3Qi
OwogICAgIGJvb2wgYWxsb3dGYWxsYmFja05hbWVzcGFjZU91dHNpZGVNYW5pZmVzdFBhdGggPSBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtYW5pZmVzdE1JTUVUeXBlLCBjYWNoZU1hbmlm
ZXN0TUlNRVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5oCmluZGV4IDBiZjlmOWYx
NmE1YWY2OWZjYWZhMDE2OWQ5ZTY2NDQxYjFmOWY4NjIuLjcwMGMxYmM4ZWNjY2U5OGQ4Mzg5MTA4
NDEyZDUzMTExZjE2ZDVmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmgKQEAgLTQx
LDYgKzQxLDYgQEAgc3RydWN0IEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCB7CiAgICAgYm9vbCBh
bGxvd0FsbE5ldHdvcmtSZXF1ZXN0cyB7IGZhbHNlIH07IC8vIFdpbGRjYXJkIGZvdW5kIGluIE5F
VFdPUksgc2VjdGlvbi4KIH07CiAKLXN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0PiBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJM
LCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpOworc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmlu
ZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKaW5kZXggNWNkZTliN2YxMWI4N2U5MDkzZGY4ZWRiNjFlYWVhZGRkMDBlYjg2NC4uN2RjMzFj
NzM5MmNjZWVlZWJiMjYzYjI0YTlhMzJkNzMxZGQwYTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEyMyw3ICsxMjMsNiBAQCBwdWJsaWM6CiAgICAgY2xhc3Mg
RGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKLSAgICAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAK
aW5kZXggNzkxMWNhMmI3NzU3NGRlZjlkYzRlMWMzMjIzNjBkMmY5NTM3YzIyOS4uOWFhZTllODFh
YjQxZDU0NzQ2ODE1NDAzNTE3ODYwZmFkMzNjZTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAKQEAgLTEw
Miw3ICsxMDIsNyBAQCBPU1N0YXR1cyBBdWRpb0ZpbGVSZWFkZXI6OnJlYWRQcm9jKHZvaWQqIGNs
aWVudERhdGEsIFNJbnQ2NCBwb3NpdGlvbiwgVUludDMyIHJlcQogICAgIGlmIChzdGF0aWNfY2Fz
dDxVSW50NjQ+KHBvc2l0aW9uKSA8IGRhdGFTaXplKSB7CiAgICAgICAgIHNpemVfdCBieXRlc0F2
YWlsYWJsZSA9IGRhdGFTaXplIC0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbik7CiAgICAg
ICAgIGJ5dGVzVG9SZWFkID0gcmVxdWVzdENvdW50IDw9IGJ5dGVzQXZhaWxhYmxlID8gcmVxdWVz
dENvdW50IDogYnl0ZXNBdmFpbGFibGU7Ci0gICAgICAgIG1lbWNweShidWZmZXIsIHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKSArIHBvc2l0aW9uLCBieXRlc1RvUmVhZCk7CisgICAgICAg
IG1lbWNweShidWZmZXIsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIHBvc2l0
aW9uLCBieXRlc1RvUmVhZCk7CiAgICAgfQogCiAgICAgaWYgKGFjdHVhbENvdW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcAppbmRleCA3NWNkYzBmYTgyMTQ0MDM5OGE3M2JhNzgyMTRlZjI2ZjYxNjAwZjM3Li41
YWE3ODlhMmNjNjJmZWJkYzAxY2MzNWEzZjdlNTY4MWUzN2UxOWI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBPU1N0YXR1cyBBdWRpb0ZpbGVSZWFkZXI6OnJlYWRQcm9jKHZv
aWQqIGNsaWVudERhdGEsIFNJbnQ2NCBwb3NpdGlvbiwgVUludDMyIHJlcQogICAgIGlmIChzdGF0
aWNfY2FzdDxVSW50NjQ+KHBvc2l0aW9uKSA8IGRhdGFTaXplKSB7CiAgICAgICAgIHNpemVfdCBi
eXRlc0F2YWlsYWJsZSA9IGRhdGFTaXplIC0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbik7
CiAgICAgICAgIGJ5dGVzVG9SZWFkID0gcmVxdWVzdENvdW50IDw9IGJ5dGVzQXZhaWxhYmxlID8g
cmVxdWVzdENvdW50IDogYnl0ZXNBdmFpbGFibGU7Ci0gICAgICAgIG1lbWNweShidWZmZXIsIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSArIHBvc2l0aW9uLCBieXRlc1RvUmVhZCk7Cisg
ICAgICAgIG1lbWNweShidWZmZXIsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSAr
IHBvc2l0aW9uLCBieXRlc1RvUmVhZCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJ5dGVzVG9SZWFk
ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCmluZGV4IDVlNWQzOTgwYjgwNGFm
NDJiODUwYzViZWYyODM0ZTUwMTZmZjFkZDkuLjk1NGU1NDFkMThmYjFhMzdmMmQwNzVmYzZmNGU4
ZWE5ZDhlM2MzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKQEAgLTU5LDcgKzU5
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdl
bmVyaWNDdWUmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVy
KFN0cmluZyYmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBh
cnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURh
dGEoSVNPV2ViVlRUQ3VlJiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oCmluZGV4IDA1MDIyNDQxZmZlMWYyNzU4ZGVmMzdkODRiNmJj
ODdlMTlmMjIwMTAuLjBkZDAxYmU3YTdmODM1MTY2MTFiMmJmMTM4YTZmMmYyMGY4NWE4NTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtODYs
NyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFy
cmF5UmVmLCBjb25zdCBNZWRpYVRpbWUmKTsKICAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZEN1ZXMo
KTsKIAotICAgIFZlY3RvcjxjaGFyPiBtX3NhbXBsZUlucHV0QnVmZmVyOworICAgIFZlY3Rvcjx1
aW50OF90PiBtX3NhbXBsZUlucHV0QnVmZmVyOwogCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCAw
ZGVhODBlMmJjYTQ3OGVkNGMwMmFlMWEwYjA1NjU0Yjg0ZDI5ZDUwLi5hMTYxYzQ3YzUwZGI4Mjg0
N2U2ZmYyZDY4NTI4YmQ4Y2NjNzIyZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcApAQCAtNDE3LDcgKzQxNyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVj
b2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiB2
b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZm
ZXIuZGF0YUFzQ2hhclB0cigpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRh
ID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5l
ckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0
aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0s
IFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
aAppbmRleCAxZDFmY2U2YWRjZDZiOWJlOTYzY2Y1MTRiZDEyNTFhOTY2ODk0NzA4Li41MmRhNzNk
OGJiYWNlY2UwNWViMjRkNTZjOGRjOGYxOTYyNmI1YzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVj
b2RlckdTdHJlYW1lci5oCkBAIC04NCwxMiArODQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElubmVy
RGVjb2Rlcik7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmUHRyPElubmVyRGVjb2Rl
cj4gY3JlYXRlKEltYWdlRGVjb2RlckdTdHJlYW1lciYgZGVjb2RlciwgY29uc3QgY2hhciogZGF0
YSwgZ3NzaXplIHNpemUpCisgICAgICAgIHN0YXRpYyBSZWZQdHI8SW5uZXJEZWNvZGVyPiBjcmVh
dGUoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyJiBkZWNvZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBn
c3NpemUgc2l6ZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW5uZXJEZWNvZGVyKGRlY29kZXIsIGRhdGEsIHNpemUpKTsKICAgICAgICAgfQogCi0gICAgICAg
IElubmVyRGVjb2RlcihJbWFnZURlY29kZXJHU3RyZWFtZXImIGRlY29kZXIsIGNvbnN0IGNoYXIq
IGRhdGEsIGdzc2l6ZSBzaXplKQorICAgICAgICBJbm5lckRlY29kZXIoSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyJiBkZWNvZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBnc3NpemUgc2l6ZSkKICAgICAg
ICAgICAgIDogbV9kZWNvZGVyKGRlY29kZXIpCiAgICAgICAgICAgICAsIG1fcnVuTG9vcChSdW5M
b29wOjpjdXJyZW50KCkpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBlYThlMTA3MmE5NzFmNzEyMTcxNzBi
NjEzZTdhZTc2OGJhZWRmZWM2Li40YzFjYjhhYzk2NjVhZWJjNzFjZDgyMGFiYWMzNGQ4ODcyNTQz
MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2FtcGxlKCkKIAogICAgICAgICBHU1RfSU5GTygiVHJh
Y2sgJWQgcGFyc2luZyBzYW1wbGU6ICUuKnMiLCBtX2luZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KG1h
cHBlZEJ1ZmZlci5zaXplKCkpLAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bWFwcGVkQnVmZmVyLmRhdGEoKSkpOwotICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1hcHBlZEJ1ZmZlci5kYXRhKCkpLCBtYXBwZWRC
dWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgY2xpZW50KCktPnBhcnNlV2ViVlRUQ3VlRGF0YShtYXBw
ZWRCdWZmZXIuZGF0YSgpLCBtYXBwZWRCdWZmZXIuc2l6ZSgpKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IGZlZjY2NTEyOGFjOTBjMWIwMGEz
N2I4ODg3M2VkNzExNzRiMDc3NzQuLjMzMDI4YTVlOTRjOWNlNzA0YTEzOGYwM2I5MzRkYzExZTI5
ZGUzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtMTE3LDcg
KzExNyw3IEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0
cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJl
c2V0KHNpemUsIG5hdGl2ZUltYWdlLT5oYXNBbHBoYSgpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9y
dHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CiAjaWYgVVNFKENBSVJPKQogICAgICAg
ICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2VEYXRhID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNl
KSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlRGF0YSA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnVw
ZGF0ZUNvbnRlbnRzKGltYWdlRGF0YSwgSW50UmVjdChJbnRQb2ludCgpLCBzaXplKSwgSW50UG9p
bnQoKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpKTsKICNlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5jcHAKaW5kZXggNGI4YWU2YTBjZDg1NDZkZWY2NmY3NGI5ZjY5NzYyM2FlMjRkNDBhMC4u
ZjRmZjI2M2NlNmMyNGQ0NTBkYjY3MWVmYzFkMzNlZWFiY2RlOTZmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNo
YXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJs
YXlECiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFu
ZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0
dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9y
PGNoYXI+JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4m
IHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9u
dERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5kYXRhKCkpOwpAQCAtNDE3LDcgKzQxNyw3
IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBT
dHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8Y2hhCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3Rh
bGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCiBSZWZQdHI8Rm9udE1lbW9yeVJl
c291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0
YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gcmV3cml0dGVu
Rm9udERhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlm
ICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggZGQyNzY5
MmNhNWQzZmU2Y2YxZTFjMjdkNzI1MmJjYzQ4YzVmZTgzNy4uZmNmMWYyNzIyZmI1MTc2MjdhZTZj
YzI3NzFmMjIwZDBmMjk3ODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC01NSw3
ICs1NSw3IEBAIHByaXZhdGU6CiB9OwogCiBib29sIGdldEVPVEhlYWRlcihTaGFyZWRCdWZmZXIq
IGZvbnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwgc2l6ZV90JiBvdmVybGF5RHN0LCBzaXpl
X3QmIG92ZXJsYXlTcmMsIHNpemVfdCYgb3ZlcmxheUxlbmd0aCk7Ci1ib29sIHJlbmFtZUZvbnQo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPGNoYXI+Jik7Citib29s
IHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVp
bnQ4X3Q+Jik7CiBSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKaW5kZXggMzYyYjY0MmU1MDhiODA3OTAxM2Vm
ZGFmZTBkNGE4MWVhYWExN2YxZi4uNjcwZTM3ZDNmYmQ3MzM3ODNiY2M4Zjc1OWI1ZDA3ZjY4YmVl
MmU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKQEAgLTEwNCw4ICsxMDQsOCBAQCB2b2lkIEJp
dG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCogc3JjRGF0YSwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0UgogICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9pZCk7
CiAKICAgICBjb25zdCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNDsKLSAgICBjb25zdCBjaGFy
KiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNyY0RhdGEpOwotICAgIFZlY3Rvcjxj
aGFyPiB0ZW1wb3JhcnlEYXRhOworICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oc3JjRGF0YSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRlbXBvcmFy
eURhdGE7CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRTb3VyY2VPZmZzZXQgPSBzb3VyY2VPZmZzZXQ7
CiAKICAgICAvLyBUZXh0dXJlIHVwbG9hZCByZXF1aXJlcyBzdWJpbWFnZSBidWZmZXIgaWYgZHJp
dmVyIGRvZXNuJ3Qgc3VwcG9ydCBzdWJpbWFnZSBhbmQgd2UgZG9uJ3QgaGF2ZSBmdWxsIGltYWdl
IHVwbG9hZC4KQEAgLTExNSwxMCArMTE1LDEwIEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRh
dGVDb250ZW50cyhjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSCiAg
ICAgLy8gcHJlcGFyZSB0ZW1wb3JhcnlEYXRhIGlmIG5lY2Vzc2FyeQogICAgIGlmIChyZXF1aXJl
U3ViSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgdGVtcG9yYXJ5RGF0YS5yZXNpemUodGFyZ2V0UmVj
dC53aWR0aCgpICogdGFyZ2V0UmVjdC5oZWlnaHQoKSAqIGJ5dGVzUGVyUGl4ZWwpOwotICAgICAg
ICBjaGFyKiBkc3QgPSB0ZW1wb3JhcnlEYXRhLmRhdGEoKTsKKyAgICAgICAgdWludDhfdCogZHN0
ID0gdGVtcG9yYXJ5RGF0YS5kYXRhKCk7CiAgICAgICAgIGRhdGEgPSBkc3Q7Ci0gICAgICAgIGNv
bnN0IGNoYXIqIGJpdHMgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc3JjRGF0YSk7Ci0gICAg
ICAgIGNvbnN0IGNoYXIqIHNyYyA9IGJpdHMgKyBzb3VyY2VPZmZzZXQueSgpICogYnl0ZXNQZXJM
aW5lICsgc291cmNlT2Zmc2V0LngoKSAqIGJ5dGVzUGVyUGl4ZWw7CisgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIGJpdHMgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc3JjRGF0YSk7CisgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIHNyYyA9IGJpdHMgKyBzb3VyY2VPZmZzZXQueSgpICogYnl0ZXNQ
ZXJMaW5lICsgc291cmNlT2Zmc2V0LngoKSAqIGJ5dGVzUGVyUGl4ZWw7CiAgICAgICAgIGNvbnN0
IGludCB0YXJnZXRCeXRlc1BlckxpbmUgPSB0YXJnZXRSZWN0LndpZHRoKCkgKiBieXRlc1BlclBp
eGVsOwogICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IHRhcmdldFJlY3QuaGVpZ2h0KCk7ICsr
eSkgewogICAgICAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCB0YXJnZXRCeXRlc1BlckxpbmUpOwpA
QCAtMTU3LDExICsxNTcsMTEgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRz
KEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICAgICAgcmV0
dXJuOwogCiAgICAgaW50IGJ5dGVzUGVyTGluZTsKLSAgICBjb25zdCBjaGFyKiBpbWFnZURhdGE7
CisgICAgY29uc3QgdWludDhfdCogaW1hZ2VEYXRhOwogCiAjaWYgVVNFKENBSVJPKQogICAgIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1lSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQo
KTsKLSAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKKyAgICBpbWFnZURhdGEgPSBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpOwogICAgIGJ5dGVzUGVyTGluZSA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKICNlbGlmIFVTRShESVJFQ1QyRCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5jcHAKaW5kZXggZWJh
ZGY0YzYwZDZkZWVlZTk1NTJiMDE5MWFmMWZkZDUyMjNjYTliYi4uMzc4ZjBmNjEwMjc2MjYzYzBi
OWE3YTMwZmE3MzZhYWUyYWUwMzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwCkBAIC0x
MTIsNyArMTEyLDcgQEAgSURXcml0ZUZvbnRDb2xsZWN0aW9uMSogd2ViUHJvY2Vzc0ZvbnRDb2xs
ZWN0aW9uKCkKICAgICByZXR1cm4gZm9udENvbGxlY3Rpb24uZ2V0KCk7CiB9CiAKLUhSRVNVTFQg
YWRkRm9udEZyb21EYXRhVG9Qcm9jZXNzQ29sbGVjdGlvbihjb25zdCBWZWN0b3I8Y2hhcj4mIGZv
bnREYXRhKQorSFJFU1VMVCBhZGRGb250RnJvbURhdGFUb1Byb2Nlc3NDb2xsZWN0aW9uKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZm9udERhdGEpCiB7CiAgICAgQ09NUHRyPElEV3JpdGVGb250Rmls
ZT4gZm9udEZpbGU7CiAgICAgSFJFU1VMVCBociA9IG1lbW9yeUZvbnRMb2FkZXIoKS0+Q3JlYXRl
SW5NZW1vcnlGb250RmlsZVJlZmVyZW5jZShmYWN0b3J5KCksIGZvbnREYXRhLmRhdGEoKSwgZm9u
dERhdGEuc2l6ZSgpLCBudWxscHRyLCAmZm9udEZpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaApp
bmRleCA3MmFjNjgxM2EyNjRiZmEzMmJmMDUxYjBkODA4MWVmNjgxNTExYzk5Li5hNjI3MTliMTcx
OWE3NGY5NzY5MjIxOWRmNWY3YWFlZGM0OTA2NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaApA
QCAtNTIsNyArNTIsNyBAQCBJRFdyaXRlR2RpSW50ZXJvcCogZ2RpSW50ZXJvcCgpOwogCiBJRFdy
aXRlRm9udENvbGxlY3Rpb24xKiB3ZWJQcm9jZXNzRm9udENvbGxlY3Rpb24oKTsKIAotSFJFU1VM
VCBhZGRGb250RnJvbURhdGFUb1Byb2Nlc3NDb2xsZWN0aW9uKGNvbnN0IFZlY3RvcjxjaGFyPiYg
Zm9udERhdGEpOworSFJFU1VMVCBhZGRGb250RnJvbURhdGFUb1Byb2Nlc3NDb2xsZWN0aW9uKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZm9udERhdGEpOwogQ09NUHRyPElEV3JpdGVGb250RmFtaWx5
PiBmb250RmFtaWx5Rm9yQ29sbGVjdGlvbihJRFdyaXRlRm9udENvbGxlY3Rpb24qLCBjb25zdCBW
ZWN0b3I8d2NoYXJfdD4mIGxvY2FsZU5hbWUsIGNvbnN0IExPR0ZPTlQmKTsKIENPTVB0cjxJRFdy
aXRlRm9udD4gY3JlYXRlV2l0aFBsYXRmb3JtRm9udChjb25zdCBMT0dGT05UJik7CiBWZWN0b3I8
d2NoYXJfdD4gZmFtaWx5TmFtZUZvckxvY2FsZShJRFdyaXRlRm9udEZhbWlseSosIGNvbnN0IFZl
Y3Rvcjx3Y2hhcl90PiYgbG9jYWxlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCA2ZDM5MTUwNzEwOGMxYmVlMjY1YTcxOGRhMDQ3NWIwNThmODIyNjgyLi5mZDM0NWJi
Nzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJr
ZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6
ZSksIG1hcmtlclNpemUpOworICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6
ZSk7CiAgICAgfQogCiAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKaW5kZXggNjRkZjc1MDJlMWIzMTViOWE4
ZGQyOTA4ZjI0OGNlYTE1YmYxMDY1OC4uYTE4NWMwN2RiMjdlZjE2MjNkMDM3Njc2MzRhM2QxNzJh
YWQwZGU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5oCkBAIC04Myw4ICs4Myw4IEBAIHByaXZhdGU6CiAgICAgQ01UaW1lIG1fY3VycmVudE91dHB1
dFByZXNlbnRhdGlvblRpbWVTdGFtcCB7IGtDTVRpbWVJbnZhbGlkIH07CiAgICAgQ01UaW1lIG1f
cmVtYWluaW5nUHJpbWVEdXJhdGlvbiB7IGtDTVRpbWVJbnZhbGlkIH07CiAKLSAgICBWZWN0b3I8
Y2hhcj4gbV9zb3VyY2VCdWZmZXI7Ci0gICAgVmVjdG9yPGNoYXI+IG1fZGVzdGluYXRpb25CdWZm
ZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fc291cmNlQnVmZmVyOworICAgIFZlY3Rvcjx1aW50
OF90PiBtX2Rlc3RpbmF0aW9uQnVmZmVyOwogCiAgICAgUmV0YWluUHRyPENNQmxvY2tCdWZmZXJS
ZWY+IG1fc2FtcGxlQmxvY2tCdWZmZXI7CiAgICAgc2l6ZV90IG1fc2FtcGxlQmxvY2tCdWZmZXJT
aXplIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaAppbmRleCAxM2EyMzJjMTI4YTk3NWUwY2IwYzM1NzliODUwZGMyODdmMmVkZWEw
Li5mNWY4NTU4NzFmYzcwODU2NmY3ZWY4YjlhMTYxZTI3YjhlNWQ4OWVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtNzUsNyAr
NzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAK
LSAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgdm9pZCBhcHBl
bmREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogCiAgICAgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGF1ZGlvQml0UmF0ZSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4
IGQ3MTA1YzJmYTQwMGNhZmU4ODNkMmI2Yjc1MWQ5NzI1YWZjZTk3YmQuLjYzYmQ2NTk4ZDAyYTVj
NzAwNmRhOTI5ZmM5NGYxZjVmNjZhNzE2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTc0LDE0ICs3NCwxNCBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyJil3cml0ZXIKIC0gKHZvaWQpYXNzZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3Nl
dFdyaXRlciBkaWRQcm9kdWNlRnJhZ21lbnRlZEhlYWRlckRhdGE6KE5TRGF0YSAqKWZyYWdtZW50
ZWRIZWFkZXJEYXRhCiB7CiAgICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKLSAgICBtX3dy
aXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFk
ZXJEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5ndGhdKTsKKyAgICBtX3dy
aXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2ZyYWdtZW50ZWRI
ZWFkZXJEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5ndGhdKTsKIH0KIAog
LSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1
Y2VGcmFnbWVudGVkTWVkaWFEYXRhOihOU0RhdGEgKilmcmFnbWVudGVkTWVkaWFEYXRhIGZyYWdt
ZW50ZWRNZWRpYURhdGFSZXBvcnQ6KEFWRnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCAqKWZyYWdt
ZW50ZWRNZWRpYURhdGFSZXBvcnQKIHsKICAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOwog
ICAgIFVOVVNFRF9QQVJBTShmcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0KTsKLSAgICBtX3dyaXRl
ci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURh
dGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSk7CisgICAgbV93cml0ZXIt
PmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtmcmFnbWVudGVkTWVkaWFE
YXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pOwogfQogCiAtICh2b2lk
KWNsb3NlCkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6Y29tcGxldGVGZXRjaERhdGEoKQogICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIo
dGFrZURhdGEoKSwgY3VycmVudFRpbWVDb2RlKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3Zv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsK
ICAgICBpZiAoIW1fZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNw
cAppbmRleCA0Mzg0MGEzZDYxZTk3ZWNkMWFjMTlmZTczNjViOThhY2Q3ZjE2NjQwLi41Y2I2MGI5
ZWY2ZWY1N2E0M2I0ZWVmNzJhMTM3Njc5YjFhZWJkNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIE1vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBw
YXJlbnQpCiAKIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjp+TW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChW
ZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQordm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0
ZTo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgbV9pbnB1dEJ1ZmZlci5h
cHBlbmRWZWN0b3IoZGF0YSk7CiAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5k
UmVzdWx0IHJlc3VsdCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6
QXBwZW5kU3VjY2VlZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4
IGRmYmYzNmExZWM2NzRmM2JkODBiMjhhYWU4MDE5ODllNTllNjE0NzQuLjE0ZjE1OGQ2MDMxYTY1
MWQ0MDI3MWFmNWViMDAzNjRiOGVjMzU5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7CiAKICAgICAvLyBTb3Vy
Y2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJikgZmlu
YWw7CiAgICAgdm9pZCBhYm9ydCgpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgp
IGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpAQCAtOTIs
NyArOTIsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBtX21pbmltdW1VcGNvbWluZ1ByZXNl
bnRhdGlvblRpbWU7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9lbnF1ZXVlZFNhbXBsZXM7CiAgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9tYXhRdWV1ZURlcHRoOwotICAgIFZlY3RvcjxjaGFy
PiBtX2lucHV0QnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2lucHV0QnVmZmVyOwogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmlu
ZGV4IDdhZGRjZTM5ODMwOTc4N2MzZDNhYWYwYzRlY2U0NDQ0MGI2OGE2MzYuLmI4YTE1M2ZjMWMx
OGUzN2E3ZDhiYTNjOGZlN2M4ZTBkZTdhM2VhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0zMTAsNyArMzEwLDggQEAgYm9vbCBp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICNlbmRpZgog
CiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heElucHV0U2FtcGxlU2l6ZSA9IDEyODsKLXN0YXRpYyBT
dHJpbmcgdHJpbUlucHV0U2FtcGxlKGNvbnN0IGNoYXIqIHAsIHNpemVfdCBsZW5ndGgpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRpYyBTdHJpbmcgdHJpbUlucHV0U2FtcGxlKENo
YXJUeXBlKiBwLCBzaXplX3QgbGVuZ3RoKQogewogICAgIFN0cmluZyBzID0gU3RyaW5nKHAsIHN0
ZDo6bWluPHNpemVfdD4obGVuZ3RoLCBtYXhJbnB1dFNhbXBsZVNpemUpKTsKICAgICBpZiAobGVu
Z3RoID4gbWF4SW5wdXRTYW1wbGVTaXplKQpAQCAtNjMxLDE0ICs2MzIsMTUgQEAgYm9vbCBwYXJz
ZVJhbmdlKGNvbnN0IFN0cmluZyYgcmFuZ2UsIGxvbmcgbG9uZyYgcmFuZ2VPZmZzZXQsIGxvbmcg
bG9uZyYgcmFuZ2VFbmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBib29s
IGlzVmFsaWRIZWFkZXJOYW1lQ2hhcmFjdGVyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcikKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhl
YWRlck5hbWVDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgLy8gaHR0
cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjIKICAgICAvLyBBIGhl
YWRlciBuYW1lIHNob3VsZCBvbmx5IGNvbnRhaW4gb25lIG9yIG1vcmUgb2YKICAgICAvLyBhbHBo
YW51bWVyaWMgb3IgISAjICQgJSAmICcgKiArIC0gLiBeIF8gYCB8IH4KLSAgICBpZiAoaXNBU0NJ
SUFscGhhbnVtZXJpYygqY2hhcmFjdGVyKSkKKyAgICBpZiAoaXNBU0NJSUFscGhhbnVtZXJpYyhj
aGFyYWN0ZXIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBzd2l0Y2ggKCpjaGFyYWN0ZXIp
IHsKKyAgICBzd2l0Y2ggKGNoYXJhY3RlcikgewogICAgIGNhc2UgJyEnOgogICAgIGNhc2UgJyMn
OgogICAgIGNhc2UgJyQnOgpAQCAtNjYwLDE2ICs2NjIsMTYgQEAgc3RhdGljIGlubGluZSBib29s
IGlzVmFsaWRIZWFkZXJOYW1lQ2hhcmFjdGVyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcikKICAgICB9
CiB9CiAKLXNpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIHNpemVfdCBs
ZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3RyaW5n
JiB2YWx1ZVN0ciwgYm9vbCBzdHJpY3QpCitzaXplX3QgcGFyc2VIVFRQSGVhZGVyKGNvbnN0IHVp
bnQ4X3QqIHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sIFN0cmlu
Z1ZpZXcmIG5hbWVTdHIsIFN0cmluZyYgdmFsdWVTdHIsIGJvb2wgc3RyaWN0KQogewotICAgIGNv
bnN0IGNoYXIqIHAgPSBzdGFydDsKLSAgICBjb25zdCBjaGFyKiBlbmQgPSBzdGFydCArIGxlbmd0
aDsKKyAgICBjb25zdCB1aW50OF90KiBwID0gc3RhcnQ7CisgICAgY29uc3QgdWludDhfdCogZW5k
ID0gc3RhcnQgKyBsZW5ndGg7CiAKLSAgICBWZWN0b3I8Y2hhcj4gbmFtZTsKLSAgICBWZWN0b3I8
Y2hhcj4gdmFsdWU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG5hbWU7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZhbHVlOwogCiAgICAgYm9vbCBmb3VuZEZpcnN0TmFtZUNoYXIgPSBmYWxzZTsKLSAgICBj
b25zdCBjaGFyKiBuYW1lUHRyID0gbnVsbHB0cjsKKyAgICBjb25zdCB1aW50OF90KiBuYW1lUHRy
ID0gbnVsbHB0cjsKICAgICBzaXplX3QgbmFtZVNpemUgPSAwOwogCiAgICAgbmFtZVN0ciA9IFN0
cmluZ1ZpZXcoKTsKQEAgLTY5Miw3ICs2OTQsNyBAQCBzaXplX3QgcGFyc2VIVFRQSGVhZGVyKGNv
bnN0IGNoYXIqIHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sCiAg
ICAgICAgIGNhc2UgJzonOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lQ2hhcmFjdGVyKHApKSB7CisgICAgICAg
ICAgICBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lQ2hhcmFjdGVyKCpwKSkgewogICAgICAgICAgICAg
ICAgIGlmIChuYW1lLnNpemUoKSA8IDEpCiAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVSZWFz
b24gPSAiVW5leHBlY3RlZCBzdGFydCBjaGFyYWN0ZXIgaW4gaGVhZGVyIG5hbWUiOwogICAgICAg
ICAgICAgICAgIGVsc2UKQEAgLTc0Nyw3ICs3NDksNyBAQCBzaXplX3QgcGFyc2VIVFRQSGVhZGVy
KGNvbnN0IGNoYXIqIHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24s
CiAgICAgcmV0dXJuIHAgLSBzdGFydDsKIH0KIAotc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYg
Ym9keSkKK3NpemVfdCBwYXJzZUhUVFBSZXF1ZXN0Qm9keShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBWZWN0b3I8dWludDhfdD4mIGJvZHkpCiB7CiAgICAgYm9keS5jbGVhcigp
OwogICAgIGJvZHkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKaW5kZXggYTg2OWVmNzliYjVkMjFiYTM5YmIyYzA2
ZTljZThjZjNkMzhmOTg0MC4uMWIxYTRkMGJhODM4YjJkMGEzMjU1NGM3MzlkODliNjFhYWM3ODVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaApA
QCAtOTEsOCArOTEsOCBAQCBXRUJDT1JFX0VYUE9SVCBib29sIHBhcnNlUmFuZ2UoY29uc3QgU3Ry
aW5nJiwgbG9uZyBsb25nJiByYW5nZU9mZnNldCwgbG9uZyBsb25nJgogQ29udGVudFR5cGVPcHRp
b25zRGlzcG9zaXRpb24gcGFyc2VDb250ZW50VHlwZU9wdGlvbnNIZWFkZXIoU3RyaW5nVmlldyBo
ZWFkZXIpOwogCiAvLyBQYXJzaW5nIENvbXBsZXRlIEhUVFAgTWVzc2FnZXMuCi1zaXplX3QgcGFy
c2VIVFRQSGVhZGVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFp
bHVyZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3RyaW5nJiB2YWx1ZVN0ciwgYm9vbCBz
dHJpY3QgPSB0cnVlKTsKLXNpemVfdCBwYXJzZUhUVFBSZXF1ZXN0Qm9keShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIGJvZHkpOworc2l6ZV90
IHBhcnNlSFRUUEhlYWRlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24sIFN0cmluZ1ZpZXcmIG5hbWVTdHIsIFN0cmluZyYgdmFsdWVTdHIs
IGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CitzaXplX3QgcGFyc2VIVFRQUmVxdWVzdEJvZHkoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yPHVpbnQ4X3Q+JiBib2R5KTsKIAog
Ly8gSFRUUCBIZWFkZXIgcm91dGluZSBhcyBwZXIgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5v
cmcvI3Rlcm1pbm9sb2d5LWhlYWRlcnMKIGJvb2wgaXNGb3JiaWRkZW5IZWFkZXJOYW1lKGNvbnN0
IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGUuY3BwCmluZGV4IGQ2YzhjYjkwMTcwZmVkZmMxYjU1Y2U1ZDdlY2Q4
MmY1Y2Y4MGEzOTIuLjZkZTFhM2Y4YTFmOWI2M2QxZTcxZmIzYWE3Y2U0MjUzNDFhNjUxZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZS5jcHAKQEAgLTUwLDExICs1MCwxMSBAQCBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tl
dFN0cmVhbVN0YXRlIFNvY2tldFN0cmVhbUhhbmRsZTo6c3RhdGUoKSBjb25zdAogICAgIHJldHVy
biBtX3N0YXRlOwogfQogCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6c2VuZERhdGEoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6c2VuZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ29ubmVjdGluZyB8fCBtX3N0YXRlID09IENs
b3NpbmcpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgcGxh
dGZvcm1TZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwbGF0Zm9ybVNlbmQoZGF0YSwgbGVu
Z3RoLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlOjpzZW5kSGFuZHNoYWtlKENTdHJpbmcmJiBoYW5kc2hha2UsIHN0ZDo6b3B0aW9uYWw8
Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiYgaGVhZGVyRmllbGRQcm94eSwgRnVuY3Rp
b248dm9pZChib29sLCBib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCBjYTEx
YTYxM2E2OTEwZDg2NmI4NTk3ZTJhMjgyMzQ0ZGQyZTBlNzUzLi4wYjk5M2Q3OGNkNGFlYWFiYjk0
ZjczMzk2OWNlZDg4ZmYyOTU5ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpID0gZGVmYXVsdDsKICAgICBTb2Nr
ZXRTdHJlYW1TdGF0ZSBzdGF0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBzZW5kRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPik7CisgICAgdm9p
ZCBzZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2
b2lkKGJvb2wpPik7CiAgICAgdm9pZCBzZW5kSGFuZHNoYWtlKENTdHJpbmcmJiBoYW5kc2hha2Us
IHN0ZDo6b3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiYsIEZ1bmN0aW9u
PHZvaWQoYm9vbCwgYm9vbCk+KTsKICAgICB2b2lkIGNsb3NlKCk7IC8vIERpc2Nvbm5lY3QgYWZ0
ZXIgYWxsIGRhdGEgaW4gYnVmZmVyIGFyZSBzZW50LgogICAgIHZvaWQgZGlzY29ubmVjdCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50LmgKaW5kZXggNjBhMjNkNWY0Nzc0OTYzNjdlMWI2MWI5ZmVjYTliZDFh
MDYyYmYyYS4uNWRlNTU5YzBhYmRlZDkxNTNjY2RmMDc3ZTdlMmI1NmU3Y2JlOGFjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJl
YW1IYW5kbGUmLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudChTb2NrZXRTdHJl
YW1IYW5kbGUmLCBzaXplX3QgYnVmZmVyZWRBbW91bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbFNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBTb2NrZXRTdHJl
YW1FcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRG93bmxvYWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvRG93bmxvYWRCdW5kbGUuaAppbmRleCA4ZGUyMjQ1YWEzZmNiMjUxMDBhZTkwYWU5ZmU2MDhj
NGRjODU0M2I2Li43MWY3ZWJiMGYzMjY0ZTY0MWU5N2ZmY2IxZjA0YmI2MDEyM2NiODU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Rvd25sb2FkQnVuZGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRs
ZS5oCkBAIC0zMSw4ICszMSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRG93
bmxvYWRCdW5kbGUgewogCi1ib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgY2hhciosIHVpbnQz
Ml90LCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpOwotYm9vbCBleHRyYWN0UmVzdW1lRGF0YShj
b25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgsIFZlY3RvcjxjaGFyPiYgcmVzdW1lRGF0YSk7Citib29s
IGFwcGVuZFJlc3VtZURhdGEoY29uc3QgdWludDhfdCosIHVpbnQzMl90LCBjb25zdCBTdHJpbmcm
IGJ1bmRsZVBhdGgpOworYm9vbCBleHRyYWN0UmVzdW1lRGF0YShjb25zdCBTdHJpbmcmIGJ1bmRs
ZVBhdGgsIFZlY3Rvcjx1aW50OF90PiYgcmVzdW1lRGF0YSk7CiBjb25zdCBTdHJpbmcmIGZpbGVF
eHRlbnNpb24oKTsKIAogfSAvLyBuYW1lc3BhY2UgRG93bmxvYWRCdW5kbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA2MjU0ODViZjFjMGU4ZTU4MTliZjY1NDA1NWJk
Mzg2NDM3MTgzYTQ4Li5kMTM3OTQ5OGFhYjgxZWUyY2E3YWEwODliMWI1MGY5OTVjMjgyOTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC02MDYsNyArNjA2LDcgQEAg
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2soQ0ZTdHJlYW1F
dmVudFR5cGUgdHlwZSkKICAgICAgICAgaWYgKGxlbmd0aCA9PSAtMSkKICAgICAgICAgICAgIG1f
Y2xpZW50LmRpZEZhaWxUb1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRo
aXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHB0ciksIGxlbmd0aCk7CisgICAgICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcywgcHRyLCBsZW5n
dGgpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA4NDgxMDdj
YzZhZGYwNThkYWE4OGQ4NDY4MDJhMzZmZDhkNzdkZTA1Li4wNWI0ZTI5YmM5MzFjMTQzNDViNDc5
NTk4YmFlZTY3ZWI0YjY4YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9v
bCBDdXJsQ2FjaGVFbnRyeTo6aXNDYWNoZWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlQ2FjaGVkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK2Jvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGlmICghb3BlbkNvbnRlbnRGaWxlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXggNDcyNzYyYzdmNTUyY2RjMGQ5NDRmOTkw
Y2FhMzBkMjZjODAyM2EyNS4uMjQ2MTQwOGJmYTYyMjRkZDE1MDhkMWM0M2YyNzZmNjIxZDZhMjcy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHNpemVfdCBlbnRy
eVNpemUoKTsKICAgICBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycygpIHsgcmV0dXJuIG1f
cmVxdWVzdEhlYWRlcnM7IH0KIAotICAgIGJvb2wgc2F2ZUNhY2hlZERhdGEoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90KTsKKyAgICBib29sIHNhdmVDYWNoZWREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCk7CiAgICAgYm9vbCByZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRsZSopOwog
CiAgICAgYm9vbCBzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmNwcAppbmRleCBlNjlmNmMzNTc3NWVkZWNjZWIyMmU4NTE1NDY1M2E5NDg2
MjZmYmNkLi43NTA0Yzk4ODZmYjhmMjVlZmU3OWE4MjYyNjI4MjA4OTgyNjc3Zjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCBDdXJsQ2FjaGVNYW5hZ2VyOjpn
ZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYgcmUK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
Cit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBq
b2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGlmIChtX2Rpc2Fi
bGVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaAppbmRleCA0ZTI0OWM5YzJiMGU5YWYx
YWUzYWE0OTNlODNiNTE4YTY1NDJjMzkyLi5jOWUyOWQ4MDk3MGM0MDQ2ZTc5NjE2MmJkOTgzMjkx
MWI2ZGVlNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IGJvb2wgZ2V0Q2FjaGVkUmVzcG9uc2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlJiwgUmVz
b3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUm
LCBjb25zdCBjaGFyKiwgc2l6ZV90KTsgLy8gU2F2ZSBkYXRhCisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZlIGRh
dGEKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUmKTsKICAgICB2b2lk
IGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHAKaW5kZXggYTMwOWMyNThjZDlmMTEyZDNiYmNlNmNhYTcxNDgxODM2YTFmYjAxMC4u
ZTU2NGEwY2U2NjYxNGE0OWExMDMxMzY4ODUxYzRkYTg4MjM1MmE2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBDdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBS
ZWY8U2hhcmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRh
KG1faGFuZGxlLCBidWZmZXItPmRhdGFBc0NoYXJQdHIoKSwgYnVmZmVyLT5zaXplKCkpOworICAg
IEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIGNsaWVudCgpLT5kaWRSZWNlaXZl
QnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFt
LmNwcAppbmRleCAxYjE1YWYwMWJjYzBlYWI5MTBmYzNiOWU4YThkNDYzYjdjNjY4NTE5Li5mZjU1
ZDM1MjM0Mjc4NmZjZGVhZWZjNjRmNmNjYmUwMTVmNGM1YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgICAgICBkZXN0cm95
SGFuZGxlKCk7CiAKICAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWluVGhyZWFkKG1fc3Ry
ZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFdURk1vdmUocmVjZWl2ZUJ1
ZmZlciksIGxlbmd0aCA9IGJ5dGVzUmVjZWl2ZWRdKENsaWVudCYgY2xpZW50KSBtdXRhYmxlIHsK
LSAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihidWZmZXIuZ2V0KCkpLCBsZW5ndGgpOworICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
dHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFt
LmgKaW5kZXggMzEzYjAxNzNkYTVjZDQwNGExZTNmY2FkOTU3M2I4ZmY3YzNhYmQ0Zi4uZTY0NjI5
ZmMyMmEyMDk3YTJhZjBiMGMwMTM5YjIzZDc5MDhjZjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKEN1cmxT
dHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVh
bUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1
cmxTdHJlYW1JRCwgY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUp
ID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRG93bmxvYWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Eb3dubG9hZEJ1bmRsZS5oCmluZGV4IGMxMjVkZWIxOGY4NjI1ZGM3NjE3NzI5M2Rm
MjcyMWI3YzI3MjMzZmEuLjZiOTc4YmU2Zjg0ZTZlOTM0NzRiZGIyM2RiNmJlYWIzZDU2ZmE2MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Eb3dubG9h
ZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Eb3du
bG9hZEJ1bmRsZS5oCkBAIC0zMCw4ICszMCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgRG93bmxvYWRCdW5kbGUgewogCi1ib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgY2hh
ciosIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpOwotYm9vbCBleHRyYWN0UmVz
dW1lRGF0YShjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgsIFZlY3RvcjxjaGFyPiYgcmVzdW1lRGF0
YSk7Citib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgdWludDhfdCosIHVpbnQzMl90LCBjb25z
dCBTdHJpbmcmIGJ1bmRsZVBhdGgpOworYm9vbCBleHRyYWN0UmVzdW1lRGF0YShjb25zdCBTdHJp
bmcmIGJ1bmRsZVBhdGgsIFZlY3Rvcjx1aW50OF90PiYgcmVzdW1lRGF0YSk7CiBjb25zdCBTdHJp
bmcmIGZpbGVFeHRlbnNpb24oKTsKIAogfSAvLyBuYW1lc3BhY2UgRG93bmxvYWRCdW5kbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IDJkMDU4NGRhYjVjZmY2ZDE0OTA2Mjk2NDJiYWVh
NjUyZmFlYTAwMzMuLmI4MDRmZGUwOTczYmJmYjI4MzMxY2Y3YzNhMWYyMGIwNDNlNzRmZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0
YShDdXJsU3RyZWFtSUQsIHNpemVfdCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShD
dXJsU3RyZWFtSUQsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSkgZmluYWw7CiAKICAgICBib29s
IGlzU3RyZWFtSW52YWxpZGF0ZWQoKSB7IHJldHVybiBtX3N0cmVhbUlEID09IGludmFsaWRDdXJs
U3RyZWFtSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCmluZGV4IDJm
ZWNlMDI4ZWZmZGJlODg1MThlYzdiOGJlMjU5YjBhMDkwODZjY2YuLjRiOTQ5MWMxMTU0M2YyYjYw
ZjEyZDM2ZTllNmEwY2JhYWUzNGE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
dXJsLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
ZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QgbGVuZ3RoKQogICAgIHNlbmRQZW5kaW5n
RGF0YSgpOwogfQogCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRh
KEN1cmxTdHJlYW1JRCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4p
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAppbmRleCA5MDFiMmI3MTBlNGY4MWEz
YzgwY2FiMDM5Mzg4NDdlYTE2NDFlMzI3Li5kODNjM2IyYTYzYjIyYzM5ZTE4YzEyOWU0NGJjOGYy
ZDM4YjhiMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dp
bi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGNvbnN0IFN0
cmluZyYgZmlsZUV4dGVuc2lvbigpCiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIAotYm9vbCBh
cHBlbmRSZXN1bWVEYXRhKGNvbnN0IGNoYXIqIHJlc3VtZUJ5dGVzLCB1aW50MzJfdCByZXN1bWVM
ZW5ndGgsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCkKK2Jvb2wgYXBwZW5kUmVzdW1lRGF0YShj
b25zdCB1aW50OF90KiByZXN1bWVCeXRlcywgdWludDMyX3QgcmVzdW1lTGVuZ3RoLCBjb25zdCBT
dHJpbmcmIGJ1bmRsZVBhdGgpCiB7CiAgICAgaWYgKCFyZXN1bWVCeXRlcyB8fCAhcmVzdW1lTGVu
Z3RoKSB7CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCByZXN1bWUgZGF0YSB0byB3cml0ZSB0
byBidW5kbGUgcGF0aCIpOwpAQCAtODksNyArODksNyBAQCBleGl0OgogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLWJvb2wgZXh0cmFjdFJlc3VtZURhdGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRo
LCBWZWN0b3I8Y2hhcj4mIHJlc3VtZURhdGEpCitib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0
IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bWVEYXRhKQogewogICAg
IGlmIChidW5kbGVQYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBj
cmVhdGUgcmVzdW1lIGRhdGEgZnJvbSBlbXB0eSBkb3dubG9hZCBidW5kbGUgcGF0aCIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3Bw
CmluZGV4IDhlZDU3MTc0Nzc4Y2I3YmRhZGNhMzY1MTdmZDc5NDQ1NzM4YzUyZDcuLmM5MjhiNjM3
MzQ1MGRhODE1YzkzZjg2N2NmYzhkOTk1OGIxZTM1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAKICAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQg
PSAwOwogICAgIHNzaXplX3QgYnl0ZXNSZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKaW5kZXggZWNiNmJhZTE2ODk1NjE2N2Y2MWZhZjNkY2EyOTM2NDZjZGNhZDQ4
Ni4uMDA5NGY0N2Q0NjQwMWQ1OWFjYjg1Zjc2NTQzZGE2MmQ3MzhjMGZlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVu
dExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAg
ICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJp
bWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAg
ICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgp
LT5kYXRhQXNDaGFyUHRyKCksIGRhdGEoKS0+c2l6ZSgpKTsKKyAgICAgICAgbG9hZGVyLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRhdGEo
KS0+c2l6ZSgpKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpLmVuZCgpOwogCiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAxZjViZWY3OWQxNmUyNzZkOWMxMDExMjhiODg5ZDdj
ZjFiYThmMDRhLi4xMjQ3ZGFhNjQ2MzlkNmU2ZWFjMTZkMTEyNjM4YjlmOWQ0YTc5NWUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAt
MTU5LDcgKzE1OSw3IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnVwZGF0ZUxlYWZUZXh0Tm9k
ZSgpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVGhpcyBvcGVyYXRpb24gbWlnaHQg
ZmlyZSBtdXRhdGlvbiBldmVudCwgc2VlIGJlbG93LgotICAgIG1fbGVhZlRleHROb2RlLT5hcHBl
bmREYXRhKFN0cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9i
dWZmZXJlZFRleHQuZGF0YSgpKSwgbV9idWZmZXJlZFRleHQuc2l6ZSgpKSk7CisgICAgbV9sZWFm
VGV4dE5vZGUtPmFwcGVuZERhdGEoU3RyaW5nOjpmcm9tVVRGOChtX2J1ZmZlcmVkVGV4dC5kYXRh
KCksIG1fYnVmZmVyZWRUZXh0LnNpemUoKSkpOwogICAgIG1fYnVmZmVyZWRUZXh0ID0geyB9Owog
CiAgICAgbV9sZWFmVGV4dE5vZGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggZWRmZjg0
NjRmZDUyOTAzNjg2OWRhMGM3ZTRlYjg0OGZhZjkwYmQzZC4uOWVjNTVmNjE2ZjU4NDNiNmM4MDI3
YmMxOWRhN2E2MDU4ZDRhYTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBA
QCB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5n
JiYgaGVhZGVyKQogICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UGFyc2VXZWJWVFRGaWxlSGVh
ZGVyKG1faWRlbnRpZmllciwgaGVhZGVyKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOwogfQog
Ci12b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFy
c2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsK
ICAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpQYXJzZVdlYlZUVEN1ZURhdGEobV9pZGVudGlmaWVy
LCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIGxlbmd0aCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpQYXJzZVdlYlZUVEN1ZURhdGEobV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZl
cmVuY2UoZGF0YSwgbGVuZ3RoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYm
IGN1ZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVUZXh0VHJhY2tQcm94eS5oCmluZGV4IGI3NGU4ODJiMTQwYzY2YWM4OTNjYmIyOTg5ZTEwOThi
NTAwZWQxOTYuLjc4YjRlODRlYzJmYmUxYjBjY2RmOTQ4MjBhNjM1ZjhkZDg2YWRkOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQ
cm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUdlbmVyaWNDdWUoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7Ci0gICAgdmlydHVhbCB2b2lkIHBh
cnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKFdlYkNv
cmU6OklTT1dlYlZUVEN1ZSYmKTsKIAogICAgIC8vIFRyYWNrUHJpdmF0ZUJhc2VDbGllbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2Iu
Y3BwCmluZGV4IDFiMzU3ZjY4ZmNhNDM5OWIzZDZhZTQxZWMzOGI4N2UzNDIzOWMxMmQuLjFiNjc0
ZTRmOGQ1NmM2Y2VlZjExZjY3NTBjMTZkOTdjZDdkN2MyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtMzQ0LDcg
KzM0NCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6cmVhZERhdGEoY29uc3QgQmxvYkRh
dGFJdGVtJiBpdGVtKQogICAgIGlmIChieXRlc1RvUmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXpl
KQogICAgICAgICBieXRlc1RvUmVhZCA9IG1fdG90YWxSZW1haW5pbmdTaXplOwogCi0gICAgYXV0
byogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGl0ZW0uZGF0YSgpLmRhdGEo
KS0+ZGF0YSgpKSArIGl0ZW0ub2Zmc2V0KCkgKyBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CisgICAg
YXV0byogZGF0YSA9IGl0ZW0uZGF0YSgpLmRhdGEoKS0+ZGF0YSgpICsgaXRlbS5vZmZzZXQoKSAr
IG1fY3VycmVudEl0ZW1SZWFkU2l6ZTsKICAgICBtX2N1cnJlbnRJdGVtUmVhZFNpemUgPSAwOwog
CiAgICAgY29uc3VtZURhdGEoZGF0YSwgc3RhdGljX2Nhc3Q8aW50PihieXRlc1RvUmVhZCkpOwpA
QCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkUmVhZChpbnQg
Ynl0ZXNSZWFkKQogICAgIGNvbnN1bWVEYXRhKG1fYnVmZmVyLmRhdGEoKSwgYnl0ZXNSZWFkKTsK
IH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgYnl0ZXNSZWFkKQordm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIG1fdG90YWxSZW1h
aW5pbmdTaXplIC09IGJ5dGVzUmVhZDsKIApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQoKQogICAgIHJlYWQoKTsKIH0KIAotYm9vbCBOZXR3b3Jr
RGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1Jl
YWQpCitib29sIE5ldHdvcmtEYXRhVGFza0Jsb2I6OndyaXRlRG93bmxvYWQoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGJ5dGVzUmVhZCkKIHsKICAgICBBU1NFUlQoaXNEb3dubG9hZCgpKTsKICAg
ICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZp
bGUsIGRhdGEsIGJ5dGVzUmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCmluZGV4IGZkOGNkZWYwMjQ4NmYxOWUzZTEwOTk1ZTRj
NTMyNWNhZTkwY2JiZDEuLmZkMTVlMjQ0MDRkOGFkOTQyMTQzMjY2NmM0NzBiNmYxZTQzYmRiYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5oCkBAIC04NSwxMiArODUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNpemVGb3JO
ZXh0KCk7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShFcnJvciA9IEVycm9y
OjpOb0Vycm9yKTsKICAgICB2b2lkIHNlZWsoKTsKLSAgICB2b2lkIGNvbnN1bWVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpOworICAgIHZvaWQgY29uc3VtZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGJ5dGVzUmVhZCk7CiAgICAgdm9pZCByZWFkKCk7CiAgICAgdm9p
ZCByZWFkRGF0YShjb25zdCBXZWJDb3JlOjpCbG9iRGF0YUl0ZW0mKTsKICAgICB2b2lkIHJlYWRG
aWxlKGNvbnN0IFdlYkNvcmU6OkJsb2JEYXRhSXRlbSYpOwogICAgIHZvaWQgZG93bmxvYWQoKTsK
LSAgICBib29sIHdyaXRlRG93bmxvYWQoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCk7
CisgICAgYm9vbCB3cml0ZURvd25sb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1Jl
YWQpOwogICAgIHZvaWQgY2xlYW5Eb3dubG9hZEZpbGVzKCk7CiAgICAgdm9pZCBkaWRGYWlsRG93
bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmluaXNo
RG93bmxvYWQoKTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdl
YkNvcmU6OkJsb2JEYXRhPiBtX2Jsb2JEYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpBc3luY0ZpbGVTdHJlYW0+IG1fc3RyZWFtOyAvLyBGb3IgYXN5bmNocm9ub3VzIGxvYWRpbmcu
Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZl
cjsKICAgICBWZWN0b3I8bG9uZyBsb25nPiBtX2l0ZW1MZW5ndGhMaXN0OwogICAgIFN0YXRlIG1f
c3RhdGUgeyBTdGF0ZTo6U3VzcGVuZGVkIH07CiAgICAgbG9uZyBsb25nIG1fcmFuZ2VPZmZzZXQg
eyBrUG9zaXRpb25Ob3RTcGVjaWZpZWQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCmluZGV4IDE1YTk5ZWNlMzRhYzE2MDM0
ZDZiYmM4ZTQ3YzI4OWUzOGI2YzkyYjUuLjUyZWI1YjA4ZjE2Y2JhMjMyMTQ5MDI4Y2RhYTgxNTBh
ZDA0ZTRhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0U3RyZWFtLmNwcApAQCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgTmV0d29ya1NvY2tl
dFN0cmVhbTo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUp
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRDbG9zZVNvY2tldFN0cmVh
bSgpKTsKIH0KIAotdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRSZWNlaXZlU29ja2V0U3Ry
ZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCkKK3ZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkUmVjZWl2ZVNvY2tldFN0
cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsICZoYW5kbGUgPT0g
bV9pbXBsLnB0cigpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2NrZXRTdHJlYW06OkRpZFJl
Y2VpdmVTb2NrZXRTdHJlYW1EYXRhKElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKSkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNvY2tldFN0cmVhbTo6RGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoSVBDOjpEYXRhUmVmZXJl
bmNlKGRhdGEsIGxlbmd0aCkpKTsKIH0KIAogdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRG
YWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUm
IGhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmgKaW5kZXggNjAwNmIyZTFiN2M2MzIxMjNkZjA4OWI5MjI3YjI2Zjc5MDY4Y2Uw
NC4uZTI1Njk4NDI2NmNlNWVlY2YxNTAyOGE1MjNmNmFhY2Q4M2E2YWViMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTU4
LDcgKzU4LDcgQEAgcHVibGljOgogICAgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudAogICAg
IHZvaWQgZGlkT3BlblNvY2tldFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmKSBm
aW5hbDsKICAgICB2b2lkIGRpZENsb3NlU29ja2V0U3RyZWFtKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGUmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxU
b1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYpIGZp
bmFsOwogICAgIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlJiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0o
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6U29ja2V0U3RyZWFt
RXJyb3ImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cAppbmRleCBjMjU3ZmExMWQ2MmEzMTRjMjg2MmRjZDczYjE2YTc4MmM4MTM1MjM2Li45NDZhZjQ3
ZGZiN2U2MTFmMWFiNDQxNzM0YTliMGUxNDE5ZmJlZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC0xNTMsOSArMTUzLDkgQEAgYm9vbCBTaGFyZWFi
bGVSZXNvdXJjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1jb25zdCBjaGFyKiBTaGFyZWFibGVSZXNvdXJjZTo6ZGF0YSgpIGNvbnN0Citjb25z
dCB1aW50OF90KiBTaGFyZWFibGVSZXNvdXJjZTo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIG1fb2Zm
c2V0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zaGFyZWRNZW1v
cnktPmRhdGEoKSkgKyBtX29mZnNldDsKIH0KIAogdW5zaWduZWQgU2hhcmVhYmxlUmVzb3VyY2U6
OnNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5k
ZXggNTM3NGQ3Yjk2Y2YyMjE5YTc2NmJiNzBhYjYwYWM4ODczNjZjMWY0MC4uN2I0N2Y1ZDY4NTFk
OWRlMzJkMWMzYTU0NzA1MTYwYWE0ZjdjNmNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIH5TaGFyZWFi
bGVSZXNvdXJjZSgpOwogCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7CiAgICAg
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggNWExODBiZWVkMTJmNWNkY2RmYmFlNjcwMmU2
OTNiOWVhNmUwYTg0NC4uM2M5NzFhMTNmNDljNWU3NDRkZTYwOWQ4NWRmYTdkZDNlYjVkMTUyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVEYXRh
VG9GaWxlKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBmaWxlRGF0YSwgUGxhdGZv
cm0KIHsKICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwogICAgIGZpbGVEYXRhLmFwcGx5KFtmZCwg
JnN1Y2Nlc3NdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgIGlm
ICh3cml0ZVRvRmlsZShmZCwgKGNvbnN0IGNoYXIqKWRhdGEsIHNpemUpID09IC0xKSB7CisgICAg
ICAgIGlmICh3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkgPT0gLTEpIHsKICAgICAgICAgICAg
IHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAK
aW5kZXggMmY0ODkzODc1MTE0OTkzMzZmYzYwMDFmNjExYWYwZWFiNWI5YzdmNy4uNWNjNDc0YzUz
ZTU0MWNhNzE2ZDNlYThhNTg5OWE1MDQ3MjQwMjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAg
VmVjdG9yPHVpbnQ4X3Q+IEljb25EYXRhYmFzZTo6aWNvbkRhdGEoaW50NjRfdCBpY29uSUQpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJh
c2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGlj
b25EYXRhKQorc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZEljb24oY29u
c3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGljb25EYXRhKQogewog
ICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKICAgICBBU1NFUlQobV9kYi5pc09wZW4oKSk7
CkBAIC02MDYsNyArNjA2LDcgQEAgU3RyaW5nIEljb25EYXRhYmFzZTo6aWNvblVSTEZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQogICAgIHJldHVybiBtX3BhZ2VVUkxUb0ljb25VUkxN
YXAuZ2V0KHBhZ2VVUkwpOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpY29uRGF0YSwg
c2l6ZV90IGljb25EYXRhU2l6ZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNl
V3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdWludDhfdCogaWNvbkRhdGEsIHNpemVfdCBp
Y29uRGF0YVNpemUsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFs
bG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIApAQCAtNjM4LDcg
KzYzOCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGljb25EYXRhKSwgaWNvbkRhdGFTaXplIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgeyBp
Y29uRGF0YSwgaWNvbkRhdGFTaXplIH07CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGljb25VUkwgPSBpY29uVVJMLmlzb2xh
dGVkQ29weSgpLCBpY29uRGF0YSA9IFdURk1vdmUoZGF0YSksIHBhZ2VVUkwgPSBwYWdlVVJMLmlz
b2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewogICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgICAgICBp
ZiAobV9kYi5pc09wZW4oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuaAppbmRleCAwZTdiY2M3ZWM2M2RmMjUyNzJmY2M1MTM4NjFmY2I5ODFj
ODRlYzczLi5kMDIxZTJjZDkwZDNjZTkzOWNmZTQ0MzgxZTZlZjAyY2YyYzY3Y2I2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDYs
NyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZO
ZWVkZWQoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93
RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBib29sKT4mJik7CiAg
ICAgdm9pZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdy
aXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImJik+
JiYpOwogICAgIFN0cmluZyBpY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKTsKLSAgICB2
b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWdu
ZWQgY2hhciosIHNpemVfdCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3Jp
dGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0SWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBj
b25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCiBwcml2YXRlOgpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
b3B0aW9uYWw8aW50NjRfdD4gaWNvbklERm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBib29sJiBl
eHBpcmVkKTsKICAgICBib29sIHNldEljb25JREZvclBhZ2VVUkwoaW50NjRfdCwgY29uc3QgU3Ry
aW5nJik7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGljb25EYXRhKGludDY0X3QpOwotICAgIHN0ZDo6
b3B0aW9uYWw8aW50NjRfdD4gYWRkSWNvbihjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8Y2hh
cj4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGFkZEljb24oY29uc3QgU3RyaW5nJiwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAgICAgdm9pZCB1cGRhdGVJY29uVGltZXN0YW1wKGlu
dDY0X3QgaWNvbklELCBpbnQ2NF90IHRpbWVzdGFtcCk7CiAgICAgdm9pZCBkZWxldGVJY29uKGlu
dDY0X3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCAwMmJjNzE2YmI1N2QyZjU4
ZjI4ZDU5ZTU4ODBjN2IyNGExMDBiMDYwLi5mN2Q3MjNjNjNiZmM2MmFjNTdhYWEwMzVhZjJlYzU4
ZGRmMTI0ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKICAgICBp
ZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+cGFyc2VX
ZWJWVFRDdWVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwg
ZGF0YS5zaXplKCkpOworICAgICAgICBjbGllbnQtPnBhcnNlV2ViVlRUQ3VlRGF0YShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBh
cnNlV2ViVlRUQ3VlRGF0YVN0cnVjdChJU09XZWJWVFRDdWUmJiBjdWVEYXRhKQpAQCAtMTQwLDcg
KzE0MCw3IEBAIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6YWRkRGF0YUN1ZShNZWRpYVRp
bWUmJiBzdGFydCwgTWVkaWFUaW1lJiYgZW5kLCBJUEM6CiB7CiAgICAgQVNTRVJUKGNsaWVudCgp
KTsKICAgICBpZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCi0gICAgICAgIGNsaWVu
dC0+YWRkRGF0YUN1ZShXVEZNb3ZlKHN0YXJ0KSwgV1RGTW92ZShlbmQpLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgY2xp
ZW50LT5hZGREYXRhQ3VlKFdURk1vdmUoc3RhcnQpLCBXVEZNb3ZlKGVuZCksIGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
aW5kZXggNzg0MWE4ZjNiNjk2YWNkNWQxYTkyNDBkN2QxYjUxM2ViOWFjNjkzMy4uZGQ1NmU3NGVl
ZWRjY2EzMDMwMjZjMjk1MzNhZjgzYTY5NzdlMTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgUmVmPFdlYlNvY2tldENoYW5uZWw+IFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm8KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJTb2NrZXRDaGFubmVsKHdlYlBhZ2VQcm94eUlELCBkb2N1bWVudCwgY2xpZW50KSk7CiB9CiAK
LXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpP
cENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENv
ZGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgV2ViU29ja2V0
RnJhbWUgZnJhbWUob3BDb2RlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZGF0YSwgbGVuZ3RoKTsKICAg
ICBtX2luc3BlY3Rvci5kaWRTZW5kV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgZnJh
bWUpOwpAQCAtNTYsMTAgKzU2LDEwIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5U2Vu
ZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyCiBOZXR3b3Jr
U2VuZFF1ZXVlIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWwmIGNoYW5uZWwpCiB7CiAgICAgcmV0dXJuIHsgZG9j
dW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0cmluZykgewotICAgICAgICBjaGFubmVsLm5v
dGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3Ry
aW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGNoYW5uZWwubm90aWZ5
U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5n
dGgoKSk7CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2Nr
ZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0
aCgpIH0gfSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CiAgICAgfSwgWyZjaGFubmVsXShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgewotICAgICAgICBjaGFubmVsLm5vdGlm
eVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBieXRlTGVuZ3RoKTsKKyAgICAgICAgY2hhbm5l
bC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCBk
YXRhLCBieXRlTGVuZ3RoKTsKICAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6
TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0
YSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwogICAgIH0sIFsmY2hhbm5lbF0oRXhjZXB0
aW9uQ29kZSBleGNlcHRpb25Db2RlKSB7CiAgICAgICAgIGF1dG8gY29kZSA9IHN0YXRpY19jYXN0
PGludD4oZXhjZXB0aW9uQ29kZSk7CkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpkaWRDb25uZWN0KFN0cmluZyYmIHN1YnByb3RvY29sLCBTdHJpbmcmJiBleHRlbnNp
b25zKQogICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgV2Vi
U29ja2V0RnJhbWUgY3JlYXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUpCitz
dGF0aWMgaW5saW5lIFdlYlNvY2tldEZyYW1lIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5z
cGVjdG9yKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYlNvY2tldEZyYW1l
OjpPcENvZGUgb3BDb2RlKQogewogICAgIC8vIFRoaXMgaXMgYW4gYXBwcm94aW1hdGlvbiBzaW5j
ZSBmcmFtZXMgY2FuIGJlIG1lcmdlZCBvbiBhIHNpbmdsZSBtZXNzYWdlLgogICAgIFdlYlNvY2tl
dEZyYW1lIGZyYW1lOwpAQCAtMjk0LDcgKzI5NCw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
ZGlkUmVjZWl2ZVRleHQoU3RyaW5nJiYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50Lmdl
dCgpLCBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3RvcihtZXNzYWdlLnV0ZjgoKS5k
YXRhKCksIG1lc3NhZ2UudXRmOCgpLmxlbmd0aCgpLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpP
cENvZGVUZXh0KSk7CisgICAgYXV0byB1dGY4TWVzc2FnZSA9IG1lc3NhZ2UudXRmOCgpOworICAg
IG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBj
cmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3RvcihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPih1dGY4TWVzc2FnZS5kYXRhKCkpLCB1dGY4TWVzc2FnZS5sZW5ndGgoKSwgV2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCkpOwogCiAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogfQpAQCAtMzE1LDcgKzMxNiw3IEBAIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlJiYgZGF0
YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVX
ZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldl
Ykluc3BlY3RvcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRh
dGEuc2l6ZSgpLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnkpKTsKKyAgICBt
X2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3Jl
YXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
LCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnkpKTsKIAogICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShkYXRhLnZlY3RvcigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCAwOTRi
YWY2MWY1NDQzYmYzZTliMjZlOTU0ZmFlOGQ2NTRjMGRlNWQ0Li43MjQxN2UyMzI2MjQxMjdjYzVk
YWVkMzQ1MTc2ZGZhM2ExZjRkOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIGZpbmFsIHsgcmVmKCk7
IH0KICAgICB2b2lkIGRlcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSBmaW5hbCB7IGRl
cmVmKCk7IH0KIAotICAgIHZvaWQgbm90aWZ5U2VuZEZyYW1lKFdlYkNvcmU6OldlYlNvY2tldEZy
YW1lOjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQg
bm90aWZ5U2VuZEZyYW1lKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogICAgIHZvaWQgbG9nRXJyb3JNZXNzYWdlKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgLy8gTWVzc2FnZSByZWNlaXZlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCmluZGV4IDNi
NGFjMjliMGRmNzY1YzI0OWY3NzI1NzFmNDk0NjZjNTg5ZTcxYTguLjA1YjRkNzU5Mjc2MjgyMjZl
YjQwNDY4ZTg1MWQwMzI2YTk1YTNiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZv
aWQgV2ViU29ja2V0U3RyZWFtOjpkaWRDbG9zZVNvY2tldFN0cmVhbSgpCiAKIHZvaWQgV2ViU29j
a2V0U3RyZWFtOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEpCiB7Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEo
KnRoaXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5z
aXplKCkpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFdlYlNvY2tldFN0cmVhbTo6ZGlk
RmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVy
cmlkZXMuY3BwCmluZGV4IDY5ZjBhZTgyNzk1MDdiNzI5NjVmNjVjMjE2ODczYzQ4MWFkZjRkNjAu
LjQ2NjkzOWVmMTg3YjRhNTBmNzMyMGVkZjJjNjE2YzJjZGNmZjU0OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJp
ZGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKQEAgLTk3LDE2ICs5Nyw0IEBAIGJvb2wgV2ViUGFzdGVi
b2FyZE92ZXJyaWRlczo6Z2V0RGF0YUZvck92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViUGFzdGVib2FyZE92ZXJy
aWRlczo6Z2V0RGF0YUZvck92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgdHlwZSwgVmVjdG9yPGNoYXI+JiBkYXRhKSBjb25zdAotewotICAgIFZlY3Rv
cjx1aW50OF90PiBmb3VuZEJ1ZmZlcjsKLSAgICBpZiAoIWdldERhdGFGb3JPdmVycmlkZShwYXN0
ZWJvYXJkTmFtZSwgdHlwZSwgZm91bmRCdWZmZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBkYXRhLnJlc2l6ZShmb3VuZEJ1ZmZlci5zaXplKCkpOwotICAgIG1lbWNweShkYXRhLmRh
dGEoKSwgZm91bmRCdWZmZXIuZGF0YSgpLCBmb3VuZEJ1ZmZlci5zaXplKCkpOwotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJk
T3ZlcnJpZGVzLmgKaW5kZXggZWMwOTMzZTUxMjVlNzk2MDQ0Y2I4MmMzOGIyNGM1YjIyZWRlYjZj
Ny4uYTg2NzdmZTU2ZmQ5YWMxMWMyNDljYWE4ZGZmODgwNTMwYjAzYWU3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVy
cmlkZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGFzdGVib2FyZE92ZXJyaWRlcy5oCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICBWZWN0
b3I8U3RyaW5nPiBvdmVycmlkZGVuVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAKICAgICBib29sIGdldERhdGFGb3JPdmVycmlkZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwotICAgIGJv
b2wgZ2V0RGF0YUZvck92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFN0cmluZyYgdHlwZSwgVmVjdG9yPGNoYXI+JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV2Vi
UGFzdGVib2FyZE92ZXJyaWRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCAyMGUxY2VkYjg5NzVkYjY0MDFmNGMxNDExZGVmYTFkZDkyOTlj
NThhLi5mMDAxYTZjY2ZhZDJkZThmNGRiMDViODE1ZTFlMTdiNTM4OTNmNjJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzYwOSw3ICs3NjA5
LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgo
Y29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVAKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0
U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFy
ZWRNZW1vcnktPnNpemUoKSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDog
U2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0
b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hh
cmVkTWVtb3J5LT5zaXplKCkpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6
IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDFkMjcwMmFkYjA4
Mjc3YzQ0NTA4ZDNkZmJkYzQyNzk4NmRjZmMyMmYuLmJlZjYzOWY1NzQ2OTY1Y2U2YTVlNTg4Y2M1
YWMzYjQ1YjgzNzlmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRv
d25sb2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2Fk
Q0ZOZXQuY3BwCkBAIC0xNjAsMTQgKzE2MCwxNCBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjppbml0
VG9SZXN1bWVXaXRoQnVuZGxlKF9Jbl8gQlNUUiBidW5kbGVQYXRoLCBfSW5fb3B0XyBJV2ViRAog
ewogICAgIExPRyhEb3dubG9hZCwgIkF0dGVtcHRpbmcgcmVzdW1lIG9mIGRvd25sb2FkIGJ1bmRs
ZSAlcyIsIFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lp
KCkuZGF0YSgpKTsKIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcjsKICAgICBpZiAoIURvd25sb2FkQnVuZGxlOjpleHRyYWN0UmVzdW1lRGF0YShT
dHJpbmcoYnVuZGxlUGF0aCwgU3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKSwgYnVmZmVyKSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIC8vIEl0IGlzIHBvc3NpYmxlIGJ5IHNvbWUgdHdp
c3Qgb2YgZmF0ZSB0aGUgYnVuZGxlIG1hZ2ljIG51bWJlciB3YXMgbmF0dXJhbGx5IGF0IHRoZSBl
bmQgb2YgdGhlIGZpbGUgYW5kIGl0cyBub3QgYWN0dWFsbHkgYSB2YWxpZCBidW5kbGUuCiAgICAg
Ly8gVGhhdCwgb3Igc29tZW9uZSBlbmdpbmVlcmVkIGl0IHRoYXQgd2F5IHRvIHRyeSB0byBhdHRh
Y2sgdXMuIEluIHRoYXQgY2F1c2UsIHRoaXMgQ0ZEYXRhIHdpbGwgc3VjY2Vzc2Z1bGx5IGNyZWF0
ZSBidXQgd2hlbiB3ZSBhY3R1YWxseQogICAgIC8vIHRyeSB0byBzdGFydCB0aGUgQ0ZVUkxEb3du
bG9hZCB1c2luZyB0aGlzIGJvZ3VzIGRhdGEsIGl0IHdpbGwgZmFpbCBhbmQgd2Ugd2lsbCBoYW5k
bGUgdGhhdCBncmFjZWZ1bGx5LgotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VtZURhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4o
YnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiByZXN1bWVEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSkpOwogCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cAppbmRleCBmYzczYmYyOGNhZWQwNjA2ODI0NDgwNTBkYzFjNmY4YzRhMzQ5OWFjLi41YzkxMjU3
NzI1MjY5ZWJiMzQyNTAzY2M3MTAzMTk0YzMxMTVlNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAg
SFJFU1VMVCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0SFRUUEJvZHkoX0luX29wdF8gSVN0cmVh
bSogZGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHNpemVfdCBsZW5ndGggPSBz
dGF0LmNiU2l6ZS5Mb3dQYXJ0OwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IobGVuZ3RoKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKGxlbmd0aCk7CiAgICAgVUxPTkcgYnl0ZXNSZWFkID0g
MDsKICAgICBpZiAoRkFJTEVEKGRhdGEtPlJlYWQodmVjdG9yLmRhdGEoKSwgc3RhdC5jYlNpemUu
TG93UGFydCwgJmJ5dGVzUmVhZCkpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBmNmQ1YjU2ZWJlNzlkZmUzNDAzOWI3YjVkMzlmOTVk
ZjE4ODQxMWE3Li5lY2U4NGY4ZTVlNTNiNzM5YWEzODc5N2VlNTlmZDg1MDY5NjUxNmNmIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMzEyLDggKzMxMiw4IEBAIHN0YXRpYyBK
U1ZhbHVlUmVmIHNldEF1ZGlvUmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0CiAgICAgSlNDOjpKU0FycmF5QnVmZmVyVmlldyoganNCdWZmZXJWaWV3
ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgdG9KUyh0
b0pTKGNvbnRleHQpLCBhcmd1bWVudHNbMF0pKTsKICAgICBBU1NFUlQoanNCdWZmZXJWaWV3KTsK
ICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IGJ1ZmZlclZpZXcgPSBqc0J1ZmZlclZp
ZXctPnVuc2hhcmVkSW1wbCgpOwotICAgIGNvbnN0IGNoYXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygpKTsKLSAgICBzdGQ6OnZlY3Rv
cjxjaGFyPiBhdWRpb0RhdGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3Ro
KCkpOworICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygpKTsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90
PiBhdWRpb0RhdGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwog
CiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwogICAgIGNvbnRyb2xsZXItPnNldEF1ZGlv
UmVzdWx0KGF1ZGlvRGF0YSk7CkBAIC0yMzY3LDggKzIzNjcsOCBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIG1lZAogICAgIEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqIGpzQnVmZmVyVmlldyA9IEpTQzo6
anNEeW5hbWljQ2FzdDxKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIHRvSlModG9KUyhjb250
ZXh0KSwgbWVkaWFJY29uKSk7CiAgICAgQVNTRVJUKGpzQnVmZmVyVmlldyk7CiAgICAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBidWZmZXJWaWV3ID0ganNCdWZmZXJWaWV3LT51bnNoYXJl
ZEltcGwoKTsKLSAgICBjb25zdCBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oYnVmZmVyVmlldy0+YmFzZUFkZHJlc3MoKSk7Ci0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbWVk
aWFJY29uRGF0YShidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSk7Cisg
ICAgY29uc3QgdWludDhfdCogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1
ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1lZGlh
SWNvbkRhdGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogICAg
IAogICAgIG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb24gPSBtZWRpYUljb25EYXRhOwogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDNlMGE2NzdlMDg3NDYyMWFiNTQ4Njg2M2QxMmU0
Nzg4Y2Y1NmVlNWYuLjJlMDQ5NGUzMGYzZjBiM2E3NDIyZWU3NTkzZjdlN2YzZDY1N2QwYzggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTI5OSw4ICsyOTksOCBAQCBwdWJsaWM6CiAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RVUkw7
IH0KICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhhc2goKSBjb25zdCB7IHJl
dHVybiBtX2V4cGVjdGVkUGl4ZWxIYXNoOyB9CiAKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxjaGFy
PiYgYXVkaW9SZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvUmVzdWx0OyB9Ci0gICAgdm9p
ZCBzZXRBdWRpb1Jlc3VsdChjb25zdCBzdGQ6OnZlY3RvcjxjaGFyPiYgYXVkaW9EYXRhKSB7IG1f
YXVkaW9SZXN1bHQgPSBhdWRpb0RhdGE7IH0KKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90
PiYgYXVkaW9SZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvUmVzdWx0OyB9CisgICAgdm9p
ZCBzZXRBdWRpb1Jlc3VsdChjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgYXVkaW9EYXRhKSB7
IG1fYXVkaW9SZXN1bHQgPSBhdWRpb0RhdGE7IH0KIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNz
QWxsb3dMaXN0RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0
aW5hdGlvblByb3RvY29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dM
aXN0RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlv
blByb3RvY29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dE9wZW5QYW5lbEZpbGVzKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNoYXI+JiBvcGVuUGFuZWxGaWxl
c01lZGlhSWNvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb247IH0K
KyAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgb3BlblBhbmVsRmlsZXNNZWRpYUljb24o
KSBjb25zdCB7IHJldHVybiBtX29wZW5QYW5lbEZpbGVzTWVkaWFJY29uOyB9CiAgICAgdm9pZCBz
ZXRPcGVuUGFuZWxGaWxlc01lZGlhSWNvbihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogI2Vu
ZGlmCiAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6c2V0PHN0ZDo6c3Ry
aW5nPiBtX3dpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyczsKICAgICBzdGQ6OnNldDxzdGQ6OnN0
cmluZz4gbV9hbGxvd2VkSG9zdHM7CiAKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBtX2F1ZGlvUmVz
dWx0OworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1fYXVkaW9SZXN1bHQ7CiAKICAgICBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG1fVVJMc1RvUmVkaXJlY3Q7CiAKQEAgLTQ4
Miw3ICs0ODIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1f
b3BlblBhbmVsRmlsZXM7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnZlY3Rv
cjxjaGFyPiBtX29wZW5QYW5lbEZpbGVzTWVkaWFJY29uOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4
X3Q+IG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb247CiAjZW5kaWYKIAogICAgIHN0YXRpYyBKU1Jl
dGFpblB0cjxKU0NsYXNzUmVmPiBjcmVhdGVKU0NsYXNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9VSURlbGVnYXRlLm1tCmluZGV4IGJiYTUzYmRiZjk0ZTE5YjNmNzU3MDBlY2FiYWExYzg3ZWY0
ZmMyZDguLjI3ZjI2MTQ0NWUyZWZlZDkzYTdiNTUzYmVhZDAzZTRlNDk1NGU4N2QgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCkBAIC0zOTYsNyArMzk2LDcgQEAgLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRo
UmVzdWx0TGlzdGVuZXI6KGkKICAgICBhdXRvJiBpY29uRGF0YSA9IGdUZXN0UnVubmVyLT5vcGVu
UGFuZWxGaWxlc01lZGlhSWNvbigpOwogICAgIENHSW1hZ2VSZWYgaW1hZ2VSZWYgPSBudWxscHRy
OwogICAgIGlmICghaWNvbkRhdGEuZW1wdHkoKSkgewotICAgICAgICBhdXRvIGRhdGFSZWYgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4
Kj4oaWNvbkRhdGEuZGF0YSgpKSwgaWNvbkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0
YVJlZiA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGljb25EYXRhLmRhdGEoKSwgaWNv
bkRhdGEuc2l6ZSgpKSk7CiAgICAgICAgIGF1dG8gaW1hZ2VQcm92aWRlclJlZiA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGFSZWYuZ2V0KCkpKTsKICAgICAgICAg
aW1hZ2VSZWYgPSBDR0ltYWdlQ3JlYXRlV2l0aEpQRUdEYXRhUHJvdmlkZXIoaW1hZ2VQcm92aWRl
clJlZi5nZXQoKSwgbnVsbHB0ciwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7CiAg
ICAgfQo=
</data>
<flag name="commit-queue"
          id="452201"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430663</attachid>
            <date>2021-06-05 16:35:52 -0700</date>
            <delta_ts>2021-06-05 17:41:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226688-20210605163551.patch</filename>
            <type>text/plain</type>
            <size>123652</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjViYzlhNjk5MTRjZTRh
Y2JjNmIwZDQ2NzdjNzVjMjYwNzY4OGMwYS4uODk5YTAxY2IwMjlmMjJiYjczMzc4YzUyN2RlZGM3
YjJmNjcxNDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wNi0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhf
dCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkgdG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNo
YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFN0cmVhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6
OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6
cGFyc2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRGcmFtZVBheWxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6OldlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaW1JbnB1
dFNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2
ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFk
U3RhdHVzTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRI
VFRQSGVhZGVycyk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9TZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
Ojp3cml0ZUFsbFRvRmlsZSk6CisgICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogY3J5
cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRNYXN0ZXJLZXkpOgorICAgICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZEJ5dGVzKToKKyAgICAgICAgKiBkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGRvbS9SYXdEYXRhRG9jdW1l
bnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAqIGh0
bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFj
ay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6ZmlsZUZpbmlzaGVkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1
bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltSW5wdXRTYW1wbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VIVFRQSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJl
cXVlc3RCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpkYXRhQ2hhbmdlZCk6CisKIDIwMjEtMDYtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBJbmxpbmVUZXh0Qm94IHRvIExlZ2FjeUlubGluZVRl
eHRCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNDkyOWU2M2M1NGVhN2I1NjVkM2RmMDQ3ZjFlYTA1MTdiNWY1NGIw
ZC4uYzNkYjA5NjdiNDUyZTk0ZTIzZDcwNWJhMTQ1NjgxOWM2M2QyYjMyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0wNi0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhfdCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkg
dG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRD
dWVEYXRhKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2Vi
VlRUQ3VlRGF0YSk6CisKIDIwMjEtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBPcHRpbWl6ZSBhIGZldyBjYWxsIHNpdGVzIGNyZWF0aW5nIFNoYXJlZEJ1
ZmZlciBvYmplY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oCmluZGV4IGRi
Nzg2ZDMyOTg1NjZjNGIwYmE3NzM5ODIzMDI5Zjg1NTYyMTc3MDMuLjViZTVhY2JiYTIzYzI0ODdj
ODNlN2EyNTI5ZGQ2NmNkYWY2MTY5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
U29ja2V0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVj
dGlvbi5oCkBAIC01OSw5ICs1OSw5IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHU29ja2V0Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIGNvbnN0IE1lc3NhZ2VIYW5kbGVycyYgbV9tZXNz
YWdlSGFuZGxlcnM7CiAgICAgZ3BvaW50ZXIgbV91c2VyRGF0YTsKLSAgICBWZWN0b3I8Y2hhcj4g
bV9yZWFkQnVmZmVyOworICAgIFZlY3RvcjxnY2hhcj4gbV9yZWFkQnVmZmVyOwogICAgIEdTb2Nr
ZXRNb25pdG9yIG1fcmVhZE1vbml0b3I7Ci0gICAgVmVjdG9yPGNoYXI+IG1fd3JpdGVCdWZmZXI7
CisgICAgVmVjdG9yPGdjaGFyPiBtX3dyaXRlQnVmZmVyOwogICAgIEdTb2NrZXRNb25pdG9yIG1f
d3JpdGVNb25pdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcAppbmRleCAxMGY4OGIxODhhMTYxZDgxZDYzMTdjMmY4YTQ2NWI1ZDgxNTk2YWI4Li4yNWY3
NmE1OTQyMTljOTYzZmMzMzY1YWEzNWI1Y2YyNThlNDQzNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0
YS0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1
bmstPnNpemUpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEs
IGNodW5rLT5zaXplKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBX
VEZNb3ZlKGRhdGEpKTsKICAgICAgICAgICAgIH0pOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQg
RE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJl
c3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRv
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNp
emUpOworICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSwgY2h1bmstPnNp
emUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCmluZGV4IDg4YTY3ZTM1NTRhYTQ4Y2MyM2IyMmM1MjEwNmNhZmMxODlmMWU5N2EuLjJh
YjBjYWYxMDBkMGMzMTM4YzJiNjI2NDNkNzNiMjFlYzZiZTllYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzYsNyAr
Mjc2LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICBkYXRhLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2h1bmstPmRh
dGEpLCBjaHVuay0+c2l6ZSk7CisgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5k
YXRhLCBjaHVuay0+c2l6ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YS0+ZGF0YSgpKSwgZGF0
YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiB7CiAgICAgaWYgKG1f
c291cmNlKSB7CiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoZGF0YSwgc2l6ZSkpOwpAQCAtMzM0LDExICszMzQsNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICBtX2J1ZmZl
ci0+YXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKLXsKLSAgICBhcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwotfQotCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIHJl
dHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAzN2QwNTRiMTBjZThkYmVkMTkxYzdiODVmODgx
ZGVlNDZlMDRiMGQyLi4xYjYyNzY2M2JkZDJhNTkwOWNlMWVjM2VmN2E5ODJiMjQ5ZDc1Y2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CkBAIC00Niw4ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1
bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9i
dWZmZXI7IH0KICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHAKaW5kZXggYjM5Nzg2OTVmZDdlZjE5MjE0YjZiOTAxYThmM2YxYTk2ZWUw
ZTBlYy4uZGUxM2MxNzRkMzAzMDk2ZmZlM2NiY2UwNDYwOWNjMjk0ZDBlZjUyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShj
b25zdCB3ZWJydGM6OkRhdGFCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9jbGllbnRMb2NrIH07CiAgICAgaWYgKCFtX2NsaWVudCkgewotICAgICAgICBjb25zdCBjaGFy
KiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEuZGF0YTxj
aGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci5kYXRhLmRhdGE8dWludDhfdD4o
KTsKICAgICAgICAgaWYgKGJ1ZmZlci5iaW5hcnkpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkTWVz
c2FnZXMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ1ZmZlci5zaXplKCkpKTsK
ICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDczZTEwNTAxOGQ4YTI2N2NhYmQ0MmY1MzFi
ZmY4NGU0MDM0ZTUwMWMuLmY4OTQ2MDg3N2RiZmYyMDZjMmViNGY3ZDYzZDI5NzJkZmYwYWE4NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVz
cwogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5l
bDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXIgJXAgYnl0ZU9mZnNldD0ldSBieXRl
TGVuZ3RoPSV1IiwgdGhpcywgJmJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwot
ICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxl
bmd0aCk7CisgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnks
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zm
c2V0LCBieXRlTGVuZ3RoKTsKICAgICBwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7CiAgICAg
cmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KQEAgLTE3
MCw5ICsxNzAsOSBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKEJsb2ImIGJpbmFyeURhdGEpCiAgICAgcmV0dXJuIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KIAotYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitib29sIFdlYlNvY2tldENo
YW5uZWw6OnNlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgY2hhciogZGF0YT0l
cCBsZW5ndGg9JWQiLCB0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBzZW5kKCkgU2VuZGluZyB1aW50OF90KiBkYXRhPSVwIGxlbmd0aD0l
ZCIsIHRoaXMsIGRhdGEsIGxlbmd0aCk7CiAgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGVCaW5hcnksIGRhdGEsIGxlbmd0aCk7CiAgICAgcHJvY2Vzc091dGdvaW5nRnJh
bWVRdWV1ZSgpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBo
YW5kbGUpCiAgICAgZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNl
aXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2
ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCkgUmVjZWl2ZWQgJXp1IGJ5dGVz
IiwgdGhpcywgbGVuZ3RoKTsKICAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxs
eSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsKEV4Y2VwdGlvbkNvZGUgZXJyb3JDb2RlKQogICAgIGRl
cmVmKCk7CiB9CiAKLWJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbikKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9C
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbikKIHsKICAgICBzaXplX3QgbmV3
QnVmZmVyU2l6ZSA9IG1fYnVmZmVyLnNpemUoKSArIGxlbjsKICAgICBpZiAobmV3QnVmZmVyU2l6
ZSA8IG1fYnVmZmVyLnNpemUoKSkgewpAQCAtNDg4LDE0ICs0ODgsMTQgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKIAotICAgIFZl
Y3RvcjxjaGFyPiBidWY7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZjsKICAgICBpZiAoIW1fcmVj
ZWl2ZWRDbG9zaW5nSGFuZHNoYWtlICYmIGNvZGUgIT0gQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZp
ZWQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0ZSA9IGNvZGUgPj4gODsKLSAgICAg
ICAgdW5zaWduZWQgY2hhciBsb3dCeXRlID0gY29kZTsKLSAgICAgICAgYnVmLmFwcGVuZChzdGF0
aWNfY2FzdDxjaGFyPihoaWdoQnl0ZSkpOwotICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0
PGNoYXI+KGxvd0J5dGUpKTsKKyAgICAgICAgdWludDhfdCBoaWdoQnl0ZSA9IGNvZGUgPj4gODsK
KyAgICAgICAgdWludDhfdCBsb3dCeXRlID0gY29kZTsKKyAgICAgICAgYnVmLmFwcGVuZChoaWdo
Qnl0ZSk7CisgICAgICAgIGJ1Zi5hcHBlbmQobG93Qnl0ZSk7CiAgICAgICAgIGF1dG8gcmVhc29u
VVRGOCA9IHJlYXNvbi51dGY4KCk7Ci0gICAgICAgIGJ1Zi5hcHBlbmQocmVhc29uVVRGOC5kYXRh
KCksIHJlYXNvblVURjgubGVuZ3RoKCkpOworICAgICAgICBidWYuYXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlYXNvblVURjguZGF0YSgpKSwgcmVhc29uVVRGOC5sZW5n
dGgoKSk7CiAgICAgfQogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2Rl
Q2xvc2UsIGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOwogICAgIFJlZjxXZWJTb2NrZXRDaGFubmVs
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFu
ZHNoYWtlIG1heSBmYWlsLCB3aGljaCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRl
cmVmZXJlbmNlZC4KQEAgLTUyNCw3ICs1MjQsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnBy
b2Nlc3NGcmFtZSgpCiAgICAgQVNTRVJUKCFtX2J1ZmZlci5pc0VtcHR5KCkpOwogCiAgICAgV2Vi
U29ja2V0RnJhbWUgZnJhbWU7Ci0gICAgY29uc3QgY2hhciogZnJhbWVFbmQ7CisgICAgY29uc3Qg
dWludDhfdCogZnJhbWVFbmQ7CiAgICAgU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIFdlYlNvY2tl
dEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IHJlc3VsdCA9IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZy
YW1lKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpLCBmcmFtZSwgZnJhbWVFbmQsIGVy
cm9yU3RyaW5nKTsKICAgICBpZiAocmVzdWx0ID09IFdlYlNvY2tldEZyYW1lOjpGcmFtZUluY29t
cGxldGUpCkBAIC02NTYsOCArNjU2LDggQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNz
RnJhbWUoKQogICAgICAgICAgICAgZmFpbCgiUmVjZWl2ZWQgYSBicm9rZW4gY2xvc2UgZnJhbWUg
Y29udGFpbmluZyBhbiBpbnZhbGlkIHNpemUgYm9keS4iKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5
dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihmcmFtZS5wYXlsb2FkWzBdKTsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgbG93Qnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGZyYW1lLnBheWxvYWRbMV0pOworICAgICAgICAgICAgYXV0byBoaWdoQnl0ZSA9IGZyYW1lLnBh
eWxvYWRbMF07CisgICAgICAgICAgICBhdXRvIGxvd0J5dGUgPSBmcmFtZS5wYXlsb2FkWzFdOwog
ICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IGhpZ2hCeXRlIDw8IDggfCBsb3dCeXRlOwog
ICAgICAgICAgICAgaWYgKG1fY2xvc2VFdmVudENvZGUgPT0gQ2xvc2VFdmVudENvZGVOb1N0YXR1
c1JjdmQgfHwgbV9jbG9zZUV2ZW50Q29kZSA9PSBDbG9zZUV2ZW50Q29kZUFibm9ybWFsQ2xvc3Vy
ZSB8fCBtX2Nsb3NlRXZlbnRDb2RlID09IENsb3NlRXZlbnRDb2RlVExTSGFuZHNoYWtlKSB7CiAg
ICAgICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IENsb3NlRXZlbnRDb2RlQWJub3JtYWxD
bG9zdXJlOwpAQCAtNzE0LDcgKzcxNCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1
ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgbV9vdXRnb2luZ0ZyYW1lUXVl
dWUuYXBwZW5kKFdURk1vdmUoZnJhbWUpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpl
bnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVl
UmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1
ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKICAgICBhdXRvIGZyYW1lID0gbWFr
ZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICBhdXRvIGZyYW1l
ID0gbV9vdXRnb2luZ0ZyYW1lUXVldWUudGFrZUZpcnN0KCk7CiAgICAgICAgIHN3aXRjaCAoZnJh
bWUtPmZyYW1lVHlwZSkgewogICAgICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZVN0cmluZzogewot
ICAgICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmRh
dGEoKSwgZnJhbWUtPnN0cmluZ0RhdGEubGVuZ3RoKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIHNlbmRGcmFtZShm
cmFtZS0+b3BDb2RlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZS0+c3Ry
aW5nRGF0YS5kYXRhKCkpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAgICAgICAg
ICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNl
bmQgV2ViU29ja2V0IGZyYW1lLiIpOwogICAgICAgICAgICAgfSk7CkBAIC03ODAsNyArNzgwLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAg
ICAgICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IG1fYmxvYkxvYWRlci0+
YXJyYXlCdWZmZXJSZXN1bHQoKTsKICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBudWxs
cHRyOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9IEJsb2JMb2FkZXJOb3RT
dGFydGVkOwotICAgICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2Vzcykgewor
ICAgICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBmYWls
KCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWUuIik7CiAgICAgICAgICAgICAgICAgfSk7
CkBAIC04MTMsNyArODEzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjphYm9ydE91dGdvaW5n
RnJhbWVRdWV1ZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2Rl
IG9wQ29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdURjo6RnVu
Y3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faGFu
ZGxlKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKQEAgLTgyNyw3ICs4MjcsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29k
ZSwgY29uc3QgY2hhciogZGF0YQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBmcmFtZURhdGE7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGZyYW1lRGF0YTsKICAgICBmcmFtZS5tYWtlRnJhbWVEYXRhKGZyYW1lRGF0YSk7CiAK
ICAgICBtX2hhbmRsZS0+c2VuZERhdGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRhLnNpemUo
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggYTQ2MmUzZTA4ZTA5
Mjc5ODcwMWUzN2IxYmM0MjEyZDE4NjlhMzE4MC4uMGQwZWQyNmZmNWYxY2YwYzAzNjRlMmY5MmVk
MjM2NjA2YTZlMTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdl
YlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCwgU29ja2V0UHJvdmlkZXImIHByb3ZpZGVyKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldENoYW5uZWwoZG9jdW1lbnQsIGNsaWVudCwg
cHJvdmlkZXIpKTsgfQogICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKIAotICAgIGJv
b2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICBib29sIHNlbmQoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAvLyBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbCBmdW5jdGlvbnMuCiAgICAgQ29ubmVjdFN0YXR1cyBjb25uZWN0KGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOwpAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IGZ1bmN0aW9ucy4KICAgICB2b2lk
IGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0
IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEoU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5k
bGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVh
bUhhbmRsZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
U29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9y
JikgZmluYWw7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZlRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVy
ZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCi0g
ICAgYm9vbCBhcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKTsKKyAg
ICBib29sIGFwcGVuZFRvQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW4pOwog
ICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsKICAgICBib29sIHByb2Nlc3NCdWZmZXIo
KTsKICAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoKTsKQEAgLTE2MCwxMSArMTYwLDExIEBAIHBy
aXZhdGU6CiAgICAgICAgIFF1ZXVlZEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgICAgIC8vIE9u
bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXRlbXMgaXMgdXNlZCwgYWNjb3JkaW5nIHRvIHRoZSB2
YWx1ZSBvZiBmcmFtZVR5cGUuCiAgICAgICAgIENTdHJpbmcgc3RyaW5nRGF0YTsKLSAgICAgICAg
VmVjdG9yPGNoYXI+IHZlY3RvckRhdGE7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JE
YXRhOwogICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYkRhdGE7CiAgICAgfTsKICAgICB2b2lkIGVu
cXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYpOwotICAgIHZvaWQgZW5xdWV1ZVJhd0ZyYW1l
KFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKTsKKyAgICB2b2lkIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBlbnF1ZXVl
QmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIEJsb2ImKTsKIAogICAgIHZvaWQgcHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBJZiB5b3UgYXJlIGdvaW5nIHRvIHNlbmQgYSBoeWJpLTEwIGZyYW1lLCB5b3UgbmVl
ZCB0byB1c2UgdGhlIG91dGdvaW5nIGZyYW1lIHF1ZXVlCiAgICAgLy8gaW5zdGVhZCBvZiBjYWxs
IHNlbmRGcmFtZSgpIGRpcmVjdGx5LgotICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNvY2tldEZyYW1l
OjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNlbmRGcmFtZShX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAg
ICBlbnVtIEJsb2JMb2FkZXJTdGF0dXMgewogICAgICAgICBCbG9iTG9hZGVyTm90U3RhcnRlZCwK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU29ja2V0Q2hhbm5l
bENsaWVudD4gbV9jbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEhhbmRzaGFr
ZT4gbV9oYW5kc2hha2U7CiAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9oYW5kbGU7
Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZl
cjsKIAogICAgIFRpbWVyIG1fcmVzdW1lVGltZXI7CiAgICAgYm9vbCBtX3N1c3BlbmRlZCB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVyLmNwcAppbmRleCAxNGFiODA5NWIyNWNmMTM5NGMwODQ5YTBiMTg3ODE3
NGM0NTczM2FkLi4xMTJlZDJlZTBlYTM2ZWE0YjNjNzA5NGQ3NTczOGEyZWRlM2MyN2ZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlci5jcHAKQEAgLTYzLDE1ICs2MywxNSBAQCBXZWJTb2NrZXREZWZsYXRlcjo6fldlYlNv
Y2tldERlZmxhdGVyKCkKICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXREZWZsYXRlciAl
cCBEZXN0cnVjdG9yIGRlZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIGlzIHJldHVybmVkIiwgdGhpcywg
cmVzdWx0KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtKiBz
dHJlYW0sIGNvbnN0IGNoYXIqIGlucHV0RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBv
dXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQorc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFy
YW1ldGVyKHpfc3RyZWFtKiBzdHJlYW0sIGNvbnN0IHVpbnQ4X3QqIGlucHV0RGF0YSwgc2l6ZV90
IGlucHV0TGVuZ3RoLCB1aW50OF90KiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQog
ewotICAgIHN0cmVhbS0+bmV4dF9pbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihjb25zdF9j
YXN0PGNoYXIqPihpbnB1dERhdGEpKTsKKyAgICBzdHJlYW0tPm5leHRfaW4gPSBjb25zdF9jYXN0
PHVpbnQ4X3QqPihpbnB1dERhdGEpOwogICAgIHN0cmVhbS0+YXZhaWxfaW4gPSBpbnB1dExlbmd0
aDsKLSAgICBzdHJlYW0tPm5leHRfb3V0ID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KG91dHB1
dERhdGEpOworICAgIHN0cmVhbS0+bmV4dF9vdXQgPSBvdXRwdXREYXRhOwogICAgIHN0cmVhbS0+
YXZhaWxfb3V0ID0gb3V0cHV0TGVuZ3RoOwogfQogCi1ib29sIFdlYlNvY2tldERlZmxhdGVyOjph
ZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9vbCBXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM3LDcgKzEzNyw3
IEBAIFdlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIoKQogICAgICAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldEluZmxhdGVyICVwIERlc3RydWN0b3IgaW5mbGF0ZUVuZCgpIGZh
aWxlZDogJWQgaXMgcmV0dXJuZWQiLCB0aGlzLCByZXN1bHQpOwogfQogCi1ib29sIFdlYlNvY2tl
dEluZmxhdGVyOjphZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTcwLDcgKzE3MCw3IEBAIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAKIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmZpbmlz
aCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlwcGVkRmllbGRzID0gIlwwXDBceGZm
XHhmZiI7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgc3RyaXBwZWRGaWVsZHNbXSA9ICJcMFww
XHhmZlx4ZmYiOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc3RyaXBwZWRMZW5ndGggPSA0Owog
CiAgICAgLy8gQXBwZW5kcyA0IG9jdGVzdHMgb2YgMHgwMCAweDAwIDB4ZmYgMHhmZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIu
aAppbmRleCBmNjJkYzU4NWE4M2JlM2ExMzk0MWI1N2JhZjcyOTY1NmMxMzA0OTJiLi44ZjQ1NGZi
M2I2OTZkOGJjNDNlZjJhYTU3YjFmN2IwOWNlMjYwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaApAQCAtNDksMTYg
KzQ5LDE2IEBAIHB1YmxpYzoKICAgICB+V2ViU29ja2V0RGVmbGF0ZXIoKTsKIAogICAgIGJvb2wg
aW5pdGlhbGl6ZSgpOwotICAgIGJvb2wgYWRkQnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7Cisg
ICAgYm9vbCBhZGRCeXRlcyhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBib29sIGZpbmlz
aCgpOwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0K
KyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KICAgICB2
b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6CiAgICAgaW50IG1fd2luZG93Qml0czsKICAgICBDb250
ZXh0VGFrZU92ZXJNb2RlIG1fY29udGV4dFRha2VPdmVyTW9kZTsKLSAgICBWZWN0b3I8Y2hhcj4g
bV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjx6X3N0cmVhbT4gbV9zdHJlYW07CiB9OwogCkBAIC02OSwxNSArNjksMTUgQEAgcHVibGlj
OgogICAgIH5XZWJTb2NrZXRJbmZsYXRlcigpOwogCiAgICAgYm9vbCBpbml0aWFsaXplKCk7Ci0g
ICAgYm9vbCBhZGRCeXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGFkZEJ5dGVz
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgZmluaXNoKCk7Ci0gICAgY29uc3Qg
Y2hhciogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQogICAgIHZvaWQgcmVzZXQoKTsKIAog
cHJpdmF0ZToKICAgICBpbnQgbV93aW5kb3dCaXRzOwotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZl
cjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHpf
c3RyZWFtPiBtX3N0cmVhbTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwCmluZGV4IGY3ZjM2NTc1YjI2NzU1Y2NiOWEy
MWU4OWU2YmIzZTRkMDJlNzA4YjkuLjYzZTI1NzMxMTM5NjcxNjgzYmM4ZWVjMmJmNWI2MWQxYjY1
N2VlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEZyYW1lLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIENvbnN0YW50cyBmb3IgaHliaS0xMCBmcmFtZSBmb3JtYXQuCi1jb25zdCB1bnNpZ25l
ZCBjaGFyIGZpbmFsQml0ID0gMHg4MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgY29tcHJlc3NCaXQg
PSAweDQwOwotY29uc3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDJCaXQgPSAweDIwOwotY29uc3Qg
dW5zaWduZWQgY2hhciByZXNlcnZlZDNCaXQgPSAweDEwOwotY29uc3QgdW5zaWduZWQgY2hhciBv
cENvZGVNYXNrID0gMHhGOwotY29uc3QgdW5zaWduZWQgY2hhciBtYXNrQml0ID0gMHg4MDsKLWNv
bnN0IHVuc2lnbmVkIGNoYXIgcGF5bG9hZExlbmd0aE1hc2sgPSAweDdGOworY29uc3QgdWludDhf
dCBmaW5hbEJpdCA9IDB4ODA7Citjb25zdCB1aW50OF90IGNvbXByZXNzQml0ID0gMHg0MDsKK2Nv
bnN0IHVpbnQ4X3QgcmVzZXJ2ZWQyQml0ID0gMHgyMDsKK2NvbnN0IHVpbnQ4X3QgcmVzZXJ2ZWQz
Qml0ID0gMHgxMDsKK2NvbnN0IHVpbnQ4X3Qgb3BDb2RlTWFzayA9IDB4RjsKK2NvbnN0IHVpbnQ4
X3QgbWFza0JpdCA9IDB4ODA7Citjb25zdCB1aW50OF90IHBheWxvYWRMZW5ndGhNYXNrID0gMHg3
RjsKIGNvbnN0IHNpemVfdCBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmll
bGQgPSAxMjU7CiBjb25zdCBzaXplX3QgcGF5bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRM
ZW5ndGhGaWVsZCA9IDEyNjsKIGNvbnN0IHNpemVfdCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0
ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjc7CkBAIC00NywyMiArNDcsMjIgQEAgYm9vbCBXZWJT
b2NrZXRGcmFtZTo6bmVlZHNFeHRlbmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3Ro
KQogICAgIHJldHVybiBwYXlsb2FkTGVuZ3RoID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRl
bmRlZExlbmd0aEZpZWxkOwogfQogCi1XZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBX
ZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
V2ViU29ja2V0RnJhbWUmIGZyYW1lLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQsIFN0cmluZyYgZXJy
b3JTdHJpbmcpCitXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFt
ZTo6cGFyc2VGcmFtZSh1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0
RnJhbWUmIGZyYW1lLCBjb25zdCB1aW50OF90KiYgZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJp
bmcpCiB7Ci0gICAgY2hhciogcCA9IGRhdGE7Ci0gICAgY29uc3QgY2hhciogYnVmZmVyRW5kID0g
ZGF0YSArIGRhdGFMZW5ndGg7CisgICAgdWludDhfdCogcCA9IGRhdGE7CisgICAgY29uc3QgdWlu
dDhfdCogYnVmZmVyRW5kID0gZGF0YSArIGRhdGFMZW5ndGg7CiAKICAgICBpZiAoZGF0YUxlbmd0
aCA8IDIpCiAgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CiAKLSAgICB1bnNpZ25lZCBj
aGFyIGZpcnN0Qnl0ZSA9ICpwKys7Ci0gICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnAr
KzsKKyAgICB1aW50OF90IGZpcnN0Qnl0ZSA9ICpwKys7CisgICAgdWludDhfdCBzZWNvbmRCeXRl
ID0gKnArKzsKIAogICAgIGJvb2wgZmluYWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKICAgICBi
b29sIGNvbXByZXNzID0gZmlyc3RCeXRlICYgY29tcHJlc3NCaXQ7CiAgICAgYm9vbCByZXNlcnZl
ZDIgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDJCaXQ7CiAgICAgYm9vbCByZXNlcnZlZDMgPSBmaXJz
dEJ5dGUgJiByZXNlcnZlZDNCaXQ7Ci0gICAgdW5zaWduZWQgY2hhciBvcENvZGUgPSBmaXJzdEJ5
dGUgJiBvcENvZGVNYXNrOworICAgIHVpbnQ4X3Qgb3BDb2RlID0gZmlyc3RCeXRlICYgb3BDb2Rl
TWFzazsKIAogICAgIGJvb2wgbWFza2VkID0gc2Vjb25kQnl0ZSAmIG1hc2tCaXQ7CiAgICAgdWlu
dDY0X3QgcGF5bG9hZExlbmd0aDY0ID0gc2Vjb25kQnl0ZSAmIHBheWxvYWRMZW5ndGhNYXNrOwpA
QCAtNzksNyArNzksNyBAQCBXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2Nr
ZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZAogICAgICAgICBwYXlsb2Fk
TGVuZ3RoNjQgPSAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuZGVkUGF5bG9h
ZExlbmd0aFNpemU7ICsraSkgewogICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IDw8PSA4Owot
ICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KCpwKyspOworICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KCpwKyspOwogICAgICAgICB9CiAgICAgICAgIGlmIChleHRlbmRlZFBheWxvYWRMZW5ndGhT
aXplID09IDIgJiYgcGF5bG9hZExlbmd0aDY0IDw9IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0
ZW5kZWRMZW5ndGhGaWVsZCkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVGhlIG1pbmlt
YWwgbnVtYmVyIG9mIGJ5dGVzIE1VU1QgYmUgdXNlZCB0byBlbmNvZGUgdGhlIGxlbmd0aCI7CkBA
IC0xMDMsOCArMTAzLDggQEAgV2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29j
a2V0RnJhbWU6OnBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGQKICAgICAgICAgcmV0dXJu
IEZyYW1lSW5jb21wbGV0ZTsKIAogICAgIGlmIChtYXNrZWQpIHsKLSAgICAgICAgY29uc3QgY2hh
ciogbWFza2luZ0tleSA9IHA7Ci0gICAgICAgIGNoYXIqIHBheWxvYWQgPSBwICsgbWFza2luZ0tl
eVdpZHRoSW5CeXRlczsKKyAgICAgICAgdWludDhfdCogbWFza2luZ0tleSA9IHA7CisgICAgICAg
IHVpbnQ4X3QqIHBheWxvYWQgPSBwICsgbWFza2luZ0tleVdpZHRoSW5CeXRlczsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBw
YXlsb2FkW2ldIF49IG1hc2tpbmdLZXlbaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNdOyAvLyBV
bm1hc2sgdGhlIHBheWxvYWQuCiAgICAgfQpAQCAtMTIxLDcgKzEyMSw3IEBAIFdlYlNvY2tldEZy
YW1lOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZyYW1lKGNoYXIqIGRh
dGEsIHNpemVfdCBkCiAgICAgcmV0dXJuIEZyYW1lT0s7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVu
ZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYg
ZnJhbWVEYXRhKQorc3RhdGljIHZvaWQgYXBwZW5kRnJhbWVQYXlsb2FkKGNvbnN0IFdlYlNvY2tl
dEZyYW1lJiBmcmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiBmcmFtZURhdGEpCiB7CiAgICAgc2l6ZV90
IG1hc2tpbmdLZXlTdGFydCA9IDA7CiAgICAgaWYgKGZyYW1lLm1hc2tlZCkgewpAQCAtMTM5LDcg
KzEzOSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRG
cmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVECiAgICAgfQogfQogCi12b2lkIFdlYlNv
Y2tldEZyYW1lOjptYWtlRnJhbWVEYXRhKFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQordm9pZCBX
ZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSkK
IHsKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhl
ciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogCkBAIC0xNTUsNyArMTU1
LDcgQEAgdm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hhcj4mIGZy
YW1lRGF0YSkKICAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChwYXlsb2FkTGVuZ3RoICYgMHhGRik7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgZnJhbWVEYXRhLmF0KDEpIHw9IHBheWxvYWRMZW5ndGhX
aXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZDsKLSAgICAgICAgY2hhciBleHRlbmRlZFBh
eWxvYWRMZW5ndGhbOF07CisgICAgICAgIHVpbnQ4X3QgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzhd
OwogICAgICAgICBzaXplX3QgcmVtYWluaW5nID0gcGF5bG9hZExlbmd0aDsKICAgICAgICAgLy8g
RmlsbCB0aGUgbGVuZ3RoIGludG8gZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoIGluIHRoZSBuZXR3b3Jr
IGJ5dGUgb3JkZXIuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CkBAIC0x
NjksNyArMTY5LDcgQEAgdm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8
Y2hhcj4mIGZyYW1lRGF0YSkKICAgICBhcHBlbmRGcmFtZVBheWxvYWQoKnRoaXMsIGZyYW1lRGF0
YSk7CiB9CiAKLVdlYlNvY2tldEZyYW1lOjpXZWJTb2NrZXRGcmFtZShPcENvZGUgb3BDb2RlLCBi
b29sIGZpbmFsLCBib29sIGNvbXByZXNzLCBib29sIG1hc2tlZCwgY29uc3QgY2hhciogcGF5bG9h
ZCwgc2l6ZV90IHBheWxvYWRMZW5ndGgpCitXZWJTb2NrZXRGcmFtZTo6V2ViU29ja2V0RnJhbWUo
T3BDb2RlIG9wQ29kZSwgYm9vbCBmaW5hbCwgYm9vbCBjb21wcmVzcywgYm9vbCBtYXNrZWQsIGNv
bnN0IHVpbnQ4X3QqIHBheWxvYWQsIHNpemVfdCBwYXlsb2FkTGVuZ3RoKQogICAgIDogb3BDb2Rl
KG9wQ29kZSkKICAgICAsIGZpbmFsKGZpbmFsKQogICAgICwgY29tcHJlc3MoY29tcHJlc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5o
CmluZGV4IGRiMTYwZGNmYjFlZTU5NTVhOWQ1N2ZkYzg3N2I0Zjk0NzNhNTczYTAuLmE3NGNiODI5
Yzc1YWVjYTE5MTNmOWY4NDJiYzM5M2E0N2FkZGMxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCkBAIC01NiwxMCArNTYsMTAg
QEAgc3RydWN0IFdlYlNvY2tldEZyYW1lIHsKICAgICBzdGF0aWMgYm9vbCBpc0NvbnRyb2xPcENv
ZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNsb3NlIHx8IG9wQ29k
ZSA9PSBPcENvZGVQaW5nIHx8IG9wQ29kZSA9PSBPcENvZGVQb25nOyB9CiAgICAgc3RhdGljIGJv
b2wgaXNSZXNlcnZlZE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiAhaXNOb25Db250cm9s
T3BDb2RlKG9wQ29kZSkgJiYgIWlzQ29udHJvbE9wQ29kZShvcENvZGUpOyB9CiAgICAgc3RhdGlj
IGJvb2wgbmVlZHNFeHRlbmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUGFyc2VGcmFtZVJlc3VsdCBwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBXZWJTb2NrZXRGcmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCwgU3RyaW5n
JiBlcnJvclN0cmluZyk7IC8vIE1heSBtb2RpZnkgcGFydCBvZiBkYXRhIHRvIHVubWFzayB0aGUg
ZnJhbWUuCisgICAgc3RhdGljIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZSh1aW50OF90KiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0RnJhbWUmLCBjb25zdCB1aW50OF90KiYg
ZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJpbmcpOyAvLyBNYXkgbW9kaWZ5IHBhcnQgb2YgZGF0
YSB0byB1bm1hc2sgdGhlIGZyYW1lLgogCi0gICAgV0VCQ09SRV9FWFBPUlQgV2ViU29ja2V0RnJh
bWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNvbXBy
ZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IGNoYXIqIHBheWxvYWQgPSBu
dWxscHRyLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApOwotICAgIHZvaWQgbWFrZUZyYW1lRGF0
YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViU29ja2V0
RnJhbWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNv
bXByZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IHVpbnQ4X3QqIHBheWxv
YWQgPSBudWxscHRyLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApOworICAgIHZvaWQgbWFrZUZy
YW1lRGF0YShWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSk7CiAKICAgICBPcENvZGUgb3BDb2Rl
OwogICAgIGJvb2wgZmluYWw7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFt
ZSB7CiAgICAgYm9vbCByZXNlcnZlZDI7CiAgICAgYm9vbCByZXNlcnZlZDM7CiAgICAgYm9vbCBt
YXNrZWQ7Ci0gICAgY29uc3QgY2hhciogcGF5bG9hZDsKKyAgICBjb25zdCB1aW50OF90KiBwYXls
b2FkOwogICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRl
eCA4NDljZjVmNjI0YmNjMjcyZWU1ZTdiYzYyNmRhN2U1MDNhZDQ0OTIyLi45ZDExNjk5ZjFhNGI2
YzU2NzY3NWI3MWEzMjgzMGMyNDJhMDU4MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtODQsNyAr
ODQsNyBAQCBzdGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNvbnN0IFVSTCYgdXJsLCBib29sIHNlY3Vy
ZSkKIH0KIAogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7Ci1z
dGF0aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShjb25zdCBjaGFyKiBwLCBzaXplX3QgbGVuKQor
c3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgdWludDhfdCogcCwgc2l6ZV90IGxl
bikKIHsKICAgICBTdHJpbmcgcyA9IFN0cmluZyhwLCBzdGQ6Om1pbjxzaXplX3Q+KGxlbiwgbWF4
SW5wdXRTYW1wbGVTaXplKSk7CiAgICAgaWYgKGxlbiA+IG1heElucHV0U2FtcGxlU2l6ZSkKQEAg
LTIyMSw3ICsyMjEsNyBAQCB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQogICAgIG1f
ZXh0ZW5zaW9uRGlzcGF0Y2hlci5yZXNldCgpOwogfQogCi1pbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKK2lu
dCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgdWludDhfdCog
aGVhZGVyLCBzaXplX3QgbGVuKQogewogICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgaW50
IHN0YXR1c0NvZGU7CkBAIC0yNDUsMTIgKzI0NSwxMiBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKICAg
ICAgICAgcmV0dXJuIGxlbjsKICAgICB9CiAgICAgbV9tb2RlID0gTm9ybWFsOwotICAgIGlmICgh
c3RybnN0cihoZWFkZXIsICJcclxuXHJcbiIsIGxlbikpIHsKKyAgICBpZiAoIW1lbW1lbShoZWFk
ZXIsIGxlbiwgIlxyXG5cclxuIiwgNCkpIHsKICAgICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiBy
ZWNlaXZlZCBmdWxseSB5ZXQuCiAgICAgICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgICAg
IHJldHVybiAtMTsKICAgICB9Ci0gICAgY29uc3QgY2hhciogcCA9IHJlYWRIVFRQSGVhZGVycyho
ZWFkZXIgKyBsaW5lTGVuZ3RoLCBoZWFkZXIgKyBsZW4pOworICAgIGNvbnN0IHVpbnQ4X3QqIHAg
PSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyICsgbGluZUxlbmd0aCwgaGVhZGVyICsgbGVuKTsKICAg
ICBpZiAoIXApIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRIYW5kc2hha2UgJXAg
cmVhZFNlcnZlckhhbmRzaGFrZSgpIHJlYWRIVFRQSGVhZGVycygpIGZhaWxlZCIsIHRoaXMpOwog
ICAgICAgICBtX21vZGUgPSBGYWlsZWQ7IC8vIG1fZmFpbHVyZVJlYXNvbiBpcyBzZXQgaW5zaWRl
IHJlYWRIVFRQSGVhZGVycygpLgpAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAv
LyBSZXR1cm5zIHRoZSBoZWFkZXIgbGVuZ3RoIChpbmNsdWRpbmcgIlxyXG4iKSwgb3IgLTEgaWYg
d2UgaGF2ZSBub3QgcmVjZWl2ZWQgZW5vdWdoIGRhdGEgeWV0LgogLy8gSWYgdGhlIGxpbmUgaXMg
bWFsZm9ybWVkIG9yIHRoZSBzdGF0dXMgY29kZSBpcyBub3QgYSAzLWRpZ2l0IG51bWJlciwKIC8v
IHN0YXR1c0NvZGUgYW5kIHN0YXR1c1RleHQgd2lsbCBiZSBzZXQgdG8gLTEgYW5kIGEgbnVsbCBz
dHJpbmcsIHJlc3BlY3RpdmVseS4KLWludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNM
aW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50JiBzdGF0dXND
b2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpCitpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3Rh
dHVzTGluZShjb25zdCB1aW50OF90KiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsIGludCYg
c3RhdHVzQ29kZSwgU3RyaW5nJiBzdGF0dXNUZXh0KQogewogICAgIC8vIEFyYml0cmFyeSBzaXpl
IGxpbWl0IHRvIHByZXZlbnQgdGhlIHNlcnZlciBmcm9tIHNlbmRpbmcgYW4gdW5ib3VuZGVkCiAg
ICAgLy8gYW1vdW50IG9mIGRhdGEgd2l0aCBubyBuZXdsaW5lcyBhbmQgZm9yY2luZyB1cyB0byBi
dWZmZXIgaXQgYWxsLgpAQCAtMzcxLDkgKzM3MSw5IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6
OnJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwK
ICAgICBzdGF0dXNDb2RlID0gLTE7CiAgICAgc3RhdHVzVGV4dCA9IFN0cmluZygpOwogCi0gICAg
Y29uc3QgY2hhciogc3BhY2UxID0gbnVsbHB0cjsKLSAgICBjb25zdCBjaGFyKiBzcGFjZTIgPSBu
dWxscHRyOwotICAgIGNvbnN0IGNoYXIqIHA7CisgICAgY29uc3QgdWludDhfdCogc3BhY2UxID0g
bnVsbHB0cjsKKyAgICBjb25zdCB1aW50OF90KiBzcGFjZTIgPSBudWxscHRyOworICAgIGNvbnN0
IHVpbnQ4X3QqIHA7CiAgICAgc2l6ZV90IGNvbnN1bWVkTGVuZ3RoOwogCiAgICAgZm9yIChwID0g
aGVhZGVyLCBjb25zdW1lZExlbmd0aCA9IDA7IGNvbnN1bWVkTGVuZ3RoIDwgaGVhZGVyTGVuZ3Ro
OyBwKyssIGNvbnN1bWVkTGVuZ3RoKyspIHsKQEAgLTM5Nyw3ICszOTcsNyBAQCBpbnQgV2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBo
ZWFkZXJMZW5ndGgsCiAgICAgaWYgKGNvbnN1bWVkTGVuZ3RoID09IGhlYWRlckxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIC0xOyAvLyBXZSBoYXZlIG5vdCByZWNlaXZlZCAnXG4nIHlldC4KIAotICAg
IGNvbnN0IGNoYXIqIGVuZCA9IHAgKyAxOworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHAgKyAx
OwogICAgIGludCBsaW5lTGVuZ3RoID0gZW5kIC0gaGVhZGVyOwogICAgIGlmIChsaW5lTGVuZ3Ro
ID4gbWF4aW11bUxlbmd0aCkgewogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU3RhdHVzIGxp
bmUgaXMgdG9vIGxvbmciX3M7CkBAIC00MTUsMTMgKzQxNSwxMyBAQCBpbnQgV2ViU29ja2V0SGFu
ZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJM
ZW5ndGgsCiAgICAgICAgIHJldHVybiBsaW5lTGVuZ3RoOwogICAgIH0KIAotICAgIFN0cmluZ1Zp
ZXcgaHR0cFN0YXR1c0xpbmUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGhlYWRlciks
IHNwYWNlMSAtIGhlYWRlcik7CisgICAgU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZShoZWFkZXIs
IHNwYWNlMSAtIGhlYWRlcik7CiAgICAgaWYgKCFoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKGh0
dHBTdGF0dXNMaW5lKSkgewogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBtYWtlU3RyaW5nKCJJ
bnZhbGlkIEhUVFAgdmVyc2lvbiBzdHJpbmc6ICIsIGh0dHBTdGF0dXNMaW5lKTsKICAgICAgICAg
cmV0dXJuIGxpbmVMZW5ndGg7CiAgICAgfQogCi0gICAgU3RyaW5nVmlldyBzdGF0dXNDb2RlU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzcGFjZTEgKyAxKSwgc3BhY2UyIC0g
c3BhY2UxIC0gMSk7CisgICAgU3RyaW5nVmlldyBzdGF0dXNDb2RlU3RyaW5nKHNwYWNlMSArIDEs
IHNwYWNlMiAtIHNwYWNlMSAtIDEpOwogICAgIGlmIChzdGF0dXNDb2RlU3RyaW5nLmxlbmd0aCgp
ICE9IDMpIC8vIFN0YXR1cyBjb2RlIG11c3QgY29uc2lzdCBvZiB0aHJlZSBkaWdpdHMuCiAgICAg
ICAgIHJldHVybiBsaW5lTGVuZ3RoOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7
CkBAIC00MzYsMTQgKzQzNiwxNCBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVz
TGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsCiAgICAgcmV0dXJu
IGxpbmVMZW5ndGg7CiB9CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCitjb25zdCB1aW50
OF90KiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCB1aW50OF90KiBz
dGFydCwgY29uc3QgdWludDhfdCogZW5kKQogewogICAgIFN0cmluZ1ZpZXcgbmFtZTsKICAgICBT
dHJpbmcgdmFsdWU7CiAgICAgYm9vbCBzYXdTZWNXZWJTb2NrZXRFeHRlbnNpb25zSGVhZGVyRmll
bGQgPSBmYWxzZTsKICAgICBib29sIHNhd1NlY1dlYlNvY2tldEFjY2VwdEhlYWRlckZpZWxkID0g
ZmFsc2U7CiAgICAgYm9vbCBzYXdTZWNXZWJTb2NrZXRQcm90b2NvbEhlYWRlckZpZWxkID0gZmFs
c2U7Ci0gICAgY29uc3QgY2hhciogcCA9IHN0YXJ0OworICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBz
dGFydDsKICAgICBmb3IgKDsgcCA8IGVuZDsgcCsrKSB7CiAgICAgICAgIHNpemVfdCBjb25zdW1l
ZExlbmd0aCA9IHBhcnNlSFRUUEhlYWRlcihwLCBlbmQgLSBwLCBtX2ZhaWx1cmVSZWFzb24sIG5h
bWUsIHZhbHVlKTsKICAgICAgICAgaWYgKCFjb25zdW1lZExlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAppbmRl
eCBlYWY4YTVjMDZhZDIwNThkM2QzODk1MTM1MjM5OTZmNmJlM2UwZGQzLi41ZTY0YzE4MzRmNmU4
MzYxNGQzMDFjNGZlZGQzOWQ4ODNjYWQ3YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC02OCw3ICs2OCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIGludCByZWFkU2VydmVySGFu
ZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbik7CisgICAgaW50IHJlYWRTZXJ2
ZXJIYW5kc2hha2UoY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgbGVuKTsKICAgICBNb2Rl
IG1vZGUoKSBjb25zdDsKICAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0OyAvLyBSZXR1
cm5zIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHJlYXNvbiBvZiBmYWlsdXJlIGlmIG1vZGUoKSA9
PSBGYWlsZWQuCiAKQEAgLTg3LDEwICs4NywxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAg
ICBpbnQgcmVhZFN0YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVu
Z3RoLCBpbnQmIHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCk7CisgICAgaW50IHJlYWRT
dGF0dXNMaW5lKGNvbnN0IHVpbnQ4X3QqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50
JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpOwogCiAgICAgLy8gUmVhZHMgYWxsIGhl
YWRlcnMgZXhjZXB0IGZvciB0aGUgdHdvIHByZWRlZmluZWQgb25lcy4KLSAgICBjb25zdCBjaGFy
KiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCk7Cisg
ICAgY29uc3QgdWludDhfdCogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IHVpbnQ4X3QqIHN0YXJ0LCBj
b25zdCB1aW50OF90KiBlbmQpOwogICAgIHZvaWQgcHJvY2Vzc0hlYWRlcnMoKTsKICAgICBib29s
IGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCmluZGV4IDBiZjJhYTlhMTBiMjJlMTE1YTMyZjI1MTRhN2Q3ZWI1MDZiNTk4
MWEuLmIzZjMxMDk1YWFhOWFlODM5NGZiOTg1OWM2ZGY0OGIyY2I5ZjA4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDQ3LDEwICs0NDcsMTAgQEAg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAgICBpZiAoIW1fcGVlcikKICAgICAgICAgcmV0dXJu
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKIAotICAgIC8vIEFycmF5QnVm
ZmVyIGlzbid0IHRocmVhZC1zYWZlLCBoZW5jZSB0aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBp
cyBjb3BpZWQgaW50byBWZWN0b3I8Y2hhcj4uCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEoYnl0ZUxl
bmd0aCk7CisgICAgLy8gQXJyYXlCdWZmZXIgaXNuJ3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRoZSBj
b250ZW50IG9mIEFycmF5QnVmZmVyIGlzIGNvcGllZCBpbnRvIFZlY3Rvcjx1aW50OF90Pi4KKyAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YShieXRlTGVuZ3RoKTsKICAgICBpZiAoYmluYXJ5RGF0YS5i
eXRlTGVuZ3RoKCkpCi0gICAgICAgIG1lbWNweShkYXRhLmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwor
ICAgICAgICBtZW1jcHkoZGF0YS5kYXRhKCksIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
aW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAgICBzZXRNZXRo
b2ROb3RDb21wbGV0ZWQoKTsKIAogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihb
cGVlciA9IG1fcGVlciwgZGF0YSA9IFdURk1vdmUoZGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
U2VyaWFsaXplZE5GQS5jcHAKaW5kZXggMjgzN2FjZjllZWY5NGRiYzhiZjhhMDMzOTIzNzEyM2M5
ZGU2YzVlMi4uOTZmNjViZGQ0Y2U3OWJiYTg4NmQ5OWExYzY2MjRmZmJlNGYxMzAzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAK
QEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBib29sIHdyaXRlQWxsVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlLCBjb25zdCBUJiBjb250YWluZXIpCiB7Ci0gICAgY29uc3QgY2hhciogYnl0
ZXMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb250YWluZXIuZGF0YSgpKTsKKyAg
ICBjb25zdCB1aW50OF90KiBieXRlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGNvbnRhaW5lci5kYXRhKCkpOwogICAgIHNpemVfdCBieXRlc0xlbmd0aCA9IGNvbnRhaW5lci5z
aXplKCkgKiBzaXplb2YoY29udGFpbmVyWzBdKTsKLSAgICBjb25zdCBjaGFyKiBlbmQgPSBieXRl
cyArIGJ5dGVzTGVuZ3RoOworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IGJ5dGVzICsgYnl0ZXNM
ZW5ndGg7CiAgICAgd2hpbGUgKGJ5dGVzIDwgZW5kKSB7CiAgICAgICAgIGF1dG8gd3JpdHRlbiA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIGJ5dGVzLCBieXRlc0xlbmd0aCk7CiAgICAg
ICAgIGlmICh3cml0dGVuID09IC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cAppbmRleCA3NjY0YzA2OWYxNDlmYmVlNmQxYjU0NzE2Mjg2MTk4MmQ2MTg5YTk4Li44NjQzODcw
ZGQwZTgxMjJkYTE4Mzg5YmJjYWU4NTdkYTdlMzJlMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcApAQCAtMTEyMyw3ICsxMTIzLDcgQEAgdm9pZCBTdWJ0bGVDcnlwdG86
OnVud3JhcEtleShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgS2V5Rm9ybWF0IGZvcm1hdCwg
QnVmZmUKICAgICAgICAgICAgICAgICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOwogICAgICAg
ICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nIGp3a1N0cmluZyhyZWludGVycHJldF9jYXN0X3B0cjxj
b25zdCBjaGFyKj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nIGp3a1N0cmluZyhieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvIGp3a09iamVjdCA9IEpTT05QYXJzZSgmc3RhdGUsIGp3a1N0cmluZyk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghandrT2JqZWN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCAyZDIx
NDRmMGFjNTk2ZTM5OTY0NWQxNzAzYTg2OTJlYTM1YmEzNjQ3Li5kMjk5MDlhMzQ5N2RjNGE0OWE3
YWYwZDZkMzI0OTQ5OGQxNzI1NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KQEAgLTE2Nyw3ICsxNjcsNyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGZpbmRNYXN0ZXJLZXkoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBrZXlEYXRhID0gYWRvcHRDRihrZXlEYXRhUmVmKTsKLSAgICByZXR1cm4gYmFzZTY0RGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoa2V5RGF0
YS5nZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5RGF0YS5nZXQoKSkpOworICAgIHJldHVybiBi
YXNlNjREZWNvZGUoQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKGtleURhdGEuZ2V0KCkpKTsKIH0KIAogc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGVkODU2NjQ3YTM5OWQ2NWIwODExMTdi
ODY5MDQxNWQyNDI5YWY3NzAuLjdiMmI0NTAzMWNiNTA1M2NiNjQ1NmQ4ZWM2NGQ4YmNjN2UwNjRl
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6RGVjb2Rl
ZERhdGFEb2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQgRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImIHdyaXRl
ciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRGVjb2RlZERhdGFEb2N1
bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImIHdyaXRlciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1l
bnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmgKaW5kZXggYmJiMDZhM2U4YTdkZDAxZmRmMWQyZjkxY2ZmNDUxMGJkNGU2N2QxNi4uOTU1ODJh
MGQ2OTM5MGIyYTUxNjIzNWVlNjNmYmZiYzMwYzViZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBhcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlID0gMDsK
IAogICAgIC8vIGFwcGVuZEJ5dGVzIGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVudFdyaXRl
ciAodGhlIGxvYWRlcikuCi0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGVu
ZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2goRG9jdW1lbnRXcml0ZXImKSBvdmVycmlkZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKaW5kZXggOWNiZTkyYTMyN2ZkMjUy
ZThlZTAzMjQ5OTNkNzUyNDJhZTVmNTBjNy4uN2M0YzNkMmU3ZGNlOGM5OTc1MDBhNGU2ZGI1OWQw
MGRiYTZhMDczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYp
ID0gMDsKIAogICAgIC8vIGFwcGVuZEJ5dGVzIGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVu
dFdyaXRlciAodGhlIGxvYWRlcikuCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3Vt
ZW50V3JpdGVyJiwgY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaChEb2N1bWVu
dFdyaXRlciYpID0gMDsKIAogICAgIC8vIEZJWE1FOiBhcHBlbmQoKSBzaG91bGQgYmUgcHJpdmF0
ZSwgYnV0IERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQgdXNlcyBpdCBmb3Igbm93Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCmluZGV4IDA5NGVjODdm
NjVhYzI3NWI1N2IwODFkMGJjMjJkZTVmYmI5YWQ4OTcuLmRlMzg5OTIxYWM2ZGMwZTAwY2U0Njk5
YjQ3NjhiYmE4Y2VhZDdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRh
RG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50
UGFyc2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoKERvY3Vt
ZW50V3JpdGVyJiB3cml0ZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICAvLyBNYWtlIHN1cmUg
YXBwZW5kQnl0ZXMgaXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UuCi0gICAgICAgIGFwcGVuZEJ5dGVz
KHdyaXRlciwgMCwgMCk7CisgICAgICAgIGFwcGVuZEJ5dGVzKHdyaXRlciwgbnVsbHB0ciwgMCk7
CiAgICAgfQogCiAgICAgdm9pZCBpbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYpIG92ZXJyaWRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0NTM4Y2Y3NjkwNTEyMDljYTM5
OTI3MmMwZDlhYzgyNjM3ZmQxZjRlLi5mYTliZGFmMjIxMTdhN2MxODdhYzBiZmY4YjYzMDczMTgx
MDg0N2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKIAogICAgIEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAK
LSAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVf
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGU7
CiB9OwogCkBAIC0xODcsNyArMTg3LDcgQEAgaW5saW5lIEltYWdlRG9jdW1lbnQmIEltYWdlRG9j
dW1lbnRQYXJzZXI6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VE
b2N1bWVudD4oKlJhd0RhdGFEb2N1bWVudFBhcnNlcjo6ZG9jdW1lbnQoKSk7CiB9CiAKLXZvaWQg
SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBj
aGFyKiwgc2l6ZV90KQordm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1
bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpCiB7CiAgICAgZG9jdW1lbnQoKS51
cGRhdGVEdXJpbmdQYXJzaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNw
cAppbmRleCA3Y2IzOWVkNTY3OTg2Zjk4OWRmOGYyZmYwNjBhNGJlNmI1Mjk1NGU1Li5lOWU5MDNh
ZmViN2U0ODdjZGIxMjZlYTI3Mjk3N2M2ZDY2YmZkNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFEb2N1bWVudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudCB7IG51bGxwdHIgfTsK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3Vt
ZW50U3RydWN0dXJlKCkKICAgICBmcmFtZS0+bG9hZGVyKCkuc2V0T3V0Z29pbmdSZWZlcnJlcihk
b2N1bWVudC5jb21wbGV0ZVVSTChtX291dGdvaW5nUmVmZXJyZXIpKTsKIH0KIAotdm9pZCBNZWRp
YURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIq
LCBzaXplX3QpCit2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50
V3JpdGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkKIHsKICAgICBpZiAobV9tZWRpYUVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAK
aW5kZXggZDU4ODJmYjI4NTVkOTc4ZDM0MTYxYjQ1Y2FkZmQzMTBjNjAyMGZhMC4uZTNhM2RhNmZm
MjQ3MTliZmM5NzUyZGZlNTUzYTE2Mzc2NGRlNmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCk7CiAKICAgICBIVE1MRW1iZWRFbGVtZW50KiBtX2VtYmVkRWxlbWVudCB7IG51bGxwdHIgfTsK
QEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSgpCiAgICAgZG9jdW1lbnQuc2V0SGFzVmlzdWFsbHlOb25FbXB0eUN1c3Rv
bUNvbnRlbnQoKTsKIH0KIAotdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMo
RG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KQordm9pZCBQbHVnaW5Eb2N1bWVu
dFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KQogewogICAgIGlmIChtX2VtYmVkRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggMTBkNzE4MmUyMjhh
MTRjOGY0MmM3MmE2ZGQzNzAwNjAxOTYxZWJmZi4uYmIxMmMxNTlkZTc0ZjkyOTQ1MzY5NTQxZDc4
NzJlNmM1YzFhY2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRU
cmFjay5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVHZW5lcmlj
Q3VlKEluYmFuZEdlbmVyaWNDdWUmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKICAgICB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJikgb3ZlcnJpZGUgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkgb3ZlcnJp
ZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRh
KElTT1dlYlZUVEN1ZSYmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRl
eCAwNWQ3NTEwMWI1YzFiODFiYzZlOWQ0MjIzZDU4OWUxNzEwZjg4MDNjLi5hMjIyOGJjMTdlYTM1
NmY2MDUyMjhjNTRlY2UzNzBkYzRmY2Q0OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdl
YlZUVFBhcnNlciYgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZXIoKQogICAgIHJldHVybiAq
bV93ZWJWVFRQYXJzZXI7CiB9CiAKLXZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZVdl
YlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBJbmJh
bmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgcGFyc2VyKCkucGFyc2VCeXRlcyhkYXRhLCBsZW5n
dGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJW
VFRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4
dFRyYWNrLmgKaW5kZXggODRlZTBlNTc0MGRjNjM3NzMyZGUzOGEyOGMzOTkyZTc2M2EyY2Y0OS4u
MzE1MjM1NzI5YjVmYmQ5OWY2MzRmYTdkNmM3NzZjMjdiYzZjMWM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCkBAIC00Myw3ICs0
Myw3IEBAIHByaXZhdGU6CiAgICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4
dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgV2ViVlRUUGFy
c2VyJiBwYXJzZXIoKTsKLSAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBw
YXJzZVdlYlZUVEN1ZURhdGEoSVNPV2ViVlRUQ3VlJiYpIGZpbmFsOwogCiAgICAgdm9pZCBuZXdD
dWVzUGFyc2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKaW5kZXggOWYxZDJkNGJiYjVmN2Q3MjNlNDIzM2E1ZDE2ZTQyMjdjMzkxN2IxMS4uZDUz
Y2E2YTNiN2U2ZGVkMGRjNzE3ZWY1ZjU4ODUwN2FjNzU5M2FlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV2Vi
VlRUUGFyc2VyOjpwYXJzZUZpbGVIZWFkZXIoU3RyaW5nJiYgZGF0YSkKICAgICBwYXJzZSgpOwog
fQogCi12b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCit2b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VCeXRlcyhjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgbV9saW5lUmVhZGVyLmFwcGVuZChtX2Rl
Y29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsKICAgICBwYXJzZSgpOwpAQCAtMjI1LDcgKzIy
NSw4IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpwYXJzZSgpCiB2b2lkIFdlYlZUVFBhcnNlcjo6Zmls
ZUZpbmlzaGVkKCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7Ci0gICAgcGFy
c2VCeXRlcygiXG5cbiIsIDIpOworICAgIGNvbnN0IHVpbnQ4X3QgZW5kTGluZXNbXSA9ICJcblxu
IjsKKyAgICBwYXJzZUJ5dGVzKGVuZExpbmVzLCAyKTsKICAgICBtX3N0YXRlID0gRmluaXNoZWQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCmluZGV4IGZhMzNh
MmNmMGUzZjA2ODQ5YjcwYWZlYTMwN2I4MzY5ZmUzMWJiNmMuLjEyODU1MjA5MTc0Mzg1ZDA1MjA4
ZGM3YTQwNGRiYWEzMWZmMDY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5uZXIsIGNoYXIs
IEZsb2F0UG9pbnQmKTsKIAogICAgIC8vIElucHV0IGRhdGEgdG8gdGhlIHBhcnNlciB0byBwYXJz
ZS4KLSAgICB2b2lkIHBhcnNlQnl0ZXMoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKyAgICB2b2lk
IHBhcnNlQnl0ZXMoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKTsKICAgICB2b2lkIHBhcnNlRmls
ZUhlYWRlcihTdHJpbmcmJik7CiAgICAgdm9pZCBwYXJzZUN1ZURhdGEoY29uc3QgSVNPV2ViVlRU
Q3VlJik7CiAgICAgdm9pZCBmbHVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKaW5kZXggYmZkYzJiMmIxZDc5MzJiNWU0ZjAwMDgzMjg5YzA1MDQ3NzdlYTI2Zi4u
MGU0MGQ5NTBhMjdkNjMyZjQyMDk0MTRkMmVhMDQ3Yjg0YjMyYTFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBEb2N1
bWVudFdyaXRlcjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQog
Ci12b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3Qg
bGVuZ3RoKQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VS
VCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQyNyBoYXMg
YmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpOb3RT
dGFydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggODVjMGEz
ODZjZGMyMTQ3MjcwNGFjYjljMGY0ZjJkNjA0ODkxMDI5Zi4uNzBmZDIwYzEzNzNhYzBkYzliNDQ0
OTU0YzNhMjA0MDZmMjFiOGM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmgKQEAgLTQ3LDggKzQ3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBiZWdpbigpOwogICAgIGJv
b2wgYmVnaW4oY29uc3QgVVJMJiwgYm9vbCBkaXNwYXRjaFdpbmRvd09iamVjdEF2YWlsYWJsZSA9
IHRydWUsIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gbnVsbHB0cik7Ci0gICAgdm9pZCBhZGRE
YXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKLSAgICB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpIHsgYWRkRGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcyksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogICAgIHZvaWQgaW5zZXJ0RGF0
YVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25s
eSB0byBwcmV2ZW50IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmluZGV4
IGE2YzI2ODkyZGE2MTRjNTEwZjQwNWM2ODhkY2FmY2U4ODExMzRkNDIuLmE2ODcxMWY2YzIxOWY3
YTQ4YWIzYTZlMTZmNTVlYjBlNjQwNWZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TaW5rRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9j
dW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgLy8gSWdu
b3JlIGFsbCBkYXRhLgotICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25z
dCBjaGFyKiwgc2l6ZV90KSBvdmVycmlkZQorICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRX
cml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZQogICAgIHsKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCBkZDg4OTM1
ZGFiNjQ1YjUwYzkwOGE1MmY5ZDdmMTgwZGIxZmUyMDllLi44Y2MzYzU2OGM0Mzc5NmFjNjFiMzA5
NzU0N2E4OWVmODEyZDk4ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05l
d0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiAgICAgd2hpbGUgKG1fcGFyc2VP
ZmZzZXQgPCBidWZmZXItPnNpemUoKSkgewogICAgICAgICBhdXRvIGRhdGEgPSBidWZmZXItPmdl
dFNvbWVEYXRhKG1fcGFyc2VPZmZzZXQpOwotICAgICAgICBtX2N1ZVBhcnNlci0+cGFyc2VCeXRl
cyhkYXRhLmRhdGFBc0NoYXJQdHIoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBtX2N1ZVBhcnNl
ci0+cGFyc2VCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX3BhcnNl
T2Zmc2V0ICs9IGRhdGEuc2l6ZSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZDRj
YWY0ZDVmOWVhNzY2YzYwMDBmOGZmNzM2YzI0N2MxMzIzYjNkMC4uZjI2NGYxZGQ3MTIzZDY5MmM2
NTdmMWVjZTE0OTk0YzQxOTYzMzQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNiw3ICs2MDYs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGFBc0No
YXJQdHIoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1h
bmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9t
YW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAg
ICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGlu
ZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24g
Zm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBE
b2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdFBhcnNlci5jcHAKaW5kZXggYzhhOWJiZGUzZTM3ZGEwNTc3ZTkwNDFlMTk5NjNlNDRmMWEy
NTMyYS4uYjg3ZGQ4MzUwNjA3YzI0YmUyNTZlMzQ0MWJlZDJkMzc2N2UwOTU1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGNhY2hl
TW9kZUlkZW50aWYKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25z
dGV4cHIgQ2hhcmFjdGVyVHlwZSBmYWxsYmFja01vZGVJZGVudGlmaWVyW10gPSB7ICdGJywgJ0En
LCAnTCcsICdMJywgJ0InLCAnQScsICdDJywgJ0snIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgbmV0d29ya01vZGVJZGVu
dGlmaWVyW10gPSB7ICdOJywgJ0UnLCAnVCcsICdXJywgJ08nLCAnUicsICdLJyB9OwogCi1zdGQ6
Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hl
TWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1J
TUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7CiAg
ICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmlmZXN0UGF0aCA9IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RN
SU1FVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmgKaW5kZXggMGJmOWY5ZjE2YTVh
ZjY5ZmNhZmEwMTY5ZDllNjY0NDFiMWY5Zjg2Mi4uNzAwYzFiYzhlY2NjZTk4ZDgzODkxMDg0MTJk
NTMxMTFmMTZkNWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuaApAQCAtNDEsNiAr
NDEsNiBAQCBzdHJ1Y3QgQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0IHsKICAgICBib29sIGFsbG93
QWxsTmV0d29ya1JlcXVlc3RzIHsgZmFsc2UgfTsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09S
SyBzZWN0aW9uLgogfTsKIAotc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+
IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNv
bnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7CitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBt
YW5pZmVzdE1JTUVUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApp
bmRleCA1Y2RlOWI3ZjExYjg3ZTkwOTNkZjhlZGI2MWVhZWFkZGQwMGViODY0Li43ZGMzMWM3Mzky
Y2NlZWVlYmIyNjNiMjRhOWEzMmQ3MzFkZDBhODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaApAQCAtMTIzLDcgKzEyMyw2IEBAIHB1YmxpYzoKICAgICBjbGFzcyBEYXRh
U2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogICAg
IHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0OwotICAgICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQogICAgICAgICBXRUJDT1JF
X0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRl
eCA3OTExY2EyYjc3NTc0ZGVmOWRjNGUxYzMyMjM2MGQyZjk1MzdjMjI5Li45YWFlOWU4MWFiNDFk
NTQ3NDY4MTU0MDM1MTc4NjBmYWQzM2NlN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcApAQCAtMTAyLDcg
KzEwMiw3IEBAIE9TU3RhdHVzIEF1ZGlvRmlsZVJlYWRlcjo6cmVhZFByb2Modm9pZCogY2xpZW50
RGF0YSwgU0ludDY0IHBvc2l0aW9uLCBVSW50MzIgcmVxCiAgICAgaWYgKHN0YXRpY19jYXN0PFVJ
bnQ2ND4ocG9zaXRpb24pIDwgZGF0YVNpemUpIHsKICAgICAgICAgc2l6ZV90IGJ5dGVzQXZhaWxh
YmxlID0gZGF0YVNpemUgLSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKTsKICAgICAgICAg
Ynl0ZXNUb1JlYWQgPSByZXF1ZXN0Q291bnQgPD0gYnl0ZXNBdmFpbGFibGUgPyByZXF1ZXN0Q291
bnQgOiBieXRlc0F2YWlsYWJsZTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKKyAgICAgICAgbWVt
Y3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgcG9zaXRpb24s
IGJ5dGVzVG9SZWFkKTsKICAgICB9CiAKICAgICBpZiAoYWN0dWFsQ291bnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwCmluZGV4IDc1Y2RjMGZhODIxNDQwMzk4YTczYmE3ODIxNGVmMjZmNjE2MDBmMzcuLjVhYTc4
OWEyY2M2MmZlYmRjMDFjYzM1YTNmN2U1NjgxZTM3ZTE5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBA
IC05OCw3ICs5OCw3IEBAIE9TU3RhdHVzIEF1ZGlvRmlsZVJlYWRlcjo6cmVhZFByb2Modm9pZCog
Y2xpZW50RGF0YSwgU0ludDY0IHBvc2l0aW9uLCBVSW50MzIgcmVxCiAgICAgaWYgKHN0YXRpY19j
YXN0PFVJbnQ2ND4ocG9zaXRpb24pIDwgZGF0YVNpemUpIHsKICAgICAgICAgc2l6ZV90IGJ5dGVz
QXZhaWxhYmxlID0gZGF0YVNpemUgLSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKTsKICAg
ICAgICAgYnl0ZXNUb1JlYWQgPSByZXF1ZXN0Q291bnQgPD0gYnl0ZXNBdmFpbGFibGUgPyByZXF1
ZXN0Q291bnQgOiBieXRlc0F2YWlsYWJsZTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKKyAgICAg
ICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgcG9z
aXRpb24sIGJ5dGVzVG9SZWFkKTsKICAgICB9IGVsc2UKICAgICAgICAgYnl0ZXNUb1JlYWQgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKaW5kZXggNWU1ZDM5ODBiODA0YWY0MmI4
NTBjNWJlZjI4MzRlNTAxNmZmMWRkOS4uOTU0ZTU0MWQxOGZiMWEzN2YyZDA3NWZjNmY0ZThlYTlk
OGUzYzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJp
Y0N1ZSYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3Ry
aW5nJiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VX
ZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJ
U09XZWJWVFRDdWUmJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggMDUwMjI0NDFmZmUxZjI3NThkZWYzN2Q4NGI2YmM4N2Ux
OWYyMjAxMC4uMGRkMDFiZTdhN2Y4MzUxNjYxMWIyYmYxMzhhNmYyZjIwZjg1YTg1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC04Niw3ICs4
Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHByb2Nlc3NOYXRpdmVTYW1wbGVzKENGQXJyYXlS
ZWYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkQ3VlcygpOwog
Ci0gICAgVmVjdG9yPGNoYXI+IG1fc2FtcGxlSW5wdXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fc2FtcGxlSW5wdXRCdWZmZXI7CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDBkZWE4
MGUyYmNhNDc4ZWQ0YzAyYWUxYTBiMDU2NTRiODRkMjlkNTAuLmExNjFjNDdjNTBkYjgyODQ3ZTZm
ZjJkNjg1MjhiZDhjY2M3MjJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVh
ZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5k
YXRhQXNDaGFyUHRyKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQg
PSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBi
dWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVj
b2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMs
IGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhy
ZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmlu
ZGV4IDFkMWZjZTZhZGNkNmI5YmU5NjNjZjUxNGJkMTI1MWE5NjY4OTQ3MDguLjUyZGE3M2Q4YmJh
Y2VjZTA1ZWIyNGQ1NmM4ZGM4ZjE5NjI2YjVjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKQEAgLTg0LDEyICs4NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5uZXJEZWNv
ZGVyKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWZQdHI8SW5uZXJEZWNvZGVyPiBj
cmVhdGUoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyJiBkZWNvZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBn
c3NpemUgc2l6ZSkKKyAgICAgICAgc3RhdGljIFJlZlB0cjxJbm5lckRlY29kZXI+IGNyZWF0ZShJ
bWFnZURlY29kZXJHU3RyZWFtZXImIGRlY29kZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGdzc2l6
ZSBzaXplKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbm5l
ckRlY29kZXIoZGVjb2RlciwgZGF0YSwgc2l6ZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgSW5u
ZXJEZWNvZGVyKEltYWdlRGVjb2RlckdTdHJlYW1lciYgZGVjb2RlciwgY29uc3QgY2hhciogZGF0
YSwgZ3NzaXplIHNpemUpCisgICAgICAgIElubmVyRGVjb2RlcihJbWFnZURlY29kZXJHU3RyZWFt
ZXImIGRlY29kZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGdzc2l6ZSBzaXplKQogICAgICAgICAg
ICAgOiBtX2RlY29kZXIoZGVjb2RlcikKICAgICAgICAgICAgICwgbV9ydW5Mb29wKFJ1bkxvb3A6
OmN1cnJlbnQoKSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGVhOGUxMDcyYTk3MWY3MTIxNzE3MGI2MTNl
N2FlNzY4YmFlZGZlYzYuLjRjMWNiOGFjOTY2NWFlYmM3MWNkODIwYWJhYzM0ZDg4NzI1NDMxMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUoKQogCiAgICAgICAgIEdTVF9JTkZPKCJUcmFjayAl
ZCBwYXJzaW5nIHNhbXBsZTogJS4qcyIsIG1faW5kZXgsIHN0YXRpY19jYXN0PGludD4obWFwcGVk
QnVmZmVyLnNpemUoKSksCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihtYXBw
ZWRCdWZmZXIuZGF0YSgpKSk7Ci0gICAgICAgIGNsaWVudCgpLT5wYXJzZVdlYlZUVEN1ZURhdGEo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwcGVkQnVmZmVyLmRhdGEoKSksIG1hcHBlZEJ1ZmZl
ci5zaXplKCkpOworICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKG1hcHBlZEJ1
ZmZlci5kYXRhKCksIG1hcHBlZEJ1ZmZlci5zaXplKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggZmVmNjY1MTI4YWM5MGMxYjAwYTM3Yjg4
ODczZWQ3MTE3NGIwNzc3NC4uMzMwMjhhNWU5NGM5Y2U3MDRhMTM4ZjAzYjkzNGRjMTFlMjlkZTM0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPElt
YWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQo
c2l6ZSwgbmF0aXZlSW1hZ2UtPmhhc0FscGhhKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0Fs
cGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICNpZiBVU0UoQ0FJUk8pCiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpOwotICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZURhdGEgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2VEYXRhID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShzdXJmYWNlKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+dXBkYXRl
Q29udGVudHMoaW1hZ2VEYXRhLCBJbnRSZWN0KEludFBvaW50KCksIHNpemUpLCBJbnRQb2ludCgp
LCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UKICAgICAg
ICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcAppbmRleCA0YjhhZTZhMGNkODU0NmRlZjY2Zjc0YjlmNjk3NjIzYWUyNGQ0MGEwLi42ZDAz
ODYzYjM2NmMyNDVmNDQyZjc0MzkzNzE5YWJlYWRhNWM0YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVk
QnVmZmVyKiBmb250RGF0YSwgRU9USGVhZGVyJiBlb3RIZWFkZXIsIHNpemVfdCYgb3ZlcmxheUQK
IAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdy
aXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5z
IHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFj
dGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBT
aGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8Y2hh
cj4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3
cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0
YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0zNzUsNyArMzc1LDcgQEAg
Ym9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmlu
ZyYgZm9udE5hbWUsIFZlY3RvcjxjaGEKICAgICBzaXplX3QgbmFtZVRhYmxlU2l6ZSA9ICgob2Zm
c2V0b2YobmFtZVRhYmxlLCBuYW1lUmVjb3JkcykgKyBuYW1lUmVjb3JkQ291bnQgKiBzaXplb2Yo
bmFtZVJlY29yZCkgKyBmb250TmFtZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpICYgfjMpICsg
NDsKIAogICAgIHJld3JpdHRlbkZvbnREYXRhLnJlc2l6ZShmb250RGF0YS5zaXplKCkgKyBuYW1l
VGFibGVTaXplKTsKLSAgICBjaGFyKiBkYXRhID0gcmV3cml0dGVuRm9udERhdGEuZGF0YSgpOwor
ICAgIGF1dG8qIGRhdGEgPSByZXdyaXR0ZW5Gb250RGF0YS5kYXRhKCk7CiAgICAgbWVtY3B5KGRh
dGEsIGZvbnREYXRhLmRhdGEoKSwgb3JpZ2luYWxEYXRhU2l6ZSk7CiAKICAgICAvLyBNYWtlIHRo
ZSB0YWJsZSBkaXJlY3RvcnkgZW50cnkgcG9pbnQgdG8gdGhlIG5ldyAnbmFtZScgdGFibGUuCkBA
IC00MTcsNyArNDE3LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3RvcjxjaGEKIC8vIFJlbmFtZSB0aGUg
Zm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KIFJlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewotICAgIFZlY3Rvcjxj
aGFyPiByZXdyaXR0ZW5Gb250RGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9u
dERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVu
Rm9udERhdGEpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aAppbmRleCBkZDI3NjkyY2E1ZDNmZTZjZjFlMWMyN2Q3MjUyYmNjNDhjNWZlODM3Li5mY2YxZjI3
MjJmYjUxNzYyN2FlNmNjMjc3MWYyMjBkMGYyOTc4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIH07CiAKIGJvb2wgZ2V0RU9USGVhZGVy
KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92
ZXJsYXlEc3QsIHNpemVfdCYgb3ZlcmxheVNyYywgc2l6ZV90JiBvdmVybGF5TGVuZ3RoKTsKLWJv
b2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8
Y2hhcj4mKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmLCBWZWN0b3I8dWludDhfdD4mKTsKIFJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCAzNjJiNjQy
ZTUwOGI4MDc5MDEzZWZkYWZlMGQ0YTgxZWFhYTE3ZjFmLi42NzBlMzdkM2ZiZDczMzc4M2JjYzhm
NzU5YjVkMDdmNjhiZWUyZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMTA0LDggKzEw
NCw4IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBz
cmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSCiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtX2lkKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0Owot
ICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc3JjRGF0YSk7
Ci0gICAgVmVjdG9yPGNoYXI+IHRlbXBvcmFyeURhdGE7CisgICAgY29uc3QgdWludDhfdCogZGF0
YSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzcmNEYXRhKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gdGVtcG9yYXJ5RGF0YTsKICAgICBJbnRQb2ludCBhZGp1c3RlZFNvdXJjZU9mZnNldCA9
IHNvdXJjZU9mZnNldDsKIAogICAgIC8vIFRleHR1cmUgdXBsb2FkIHJlcXVpcmVzIHN1YmltYWdl
IGJ1ZmZlciBpZiBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IHN1YmltYWdlIGFuZCB3ZSBkb24ndCBo
YXZlIGZ1bGwgaW1hZ2UgdXBsb2FkLgpAQCAtMTE1LDEwICsxMTUsMTAgQEAgdm9pZCBCaXRtYXBU
ZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJl
Y3QmIHRhcmdldFIKICAgICAvLyBwcmVwYXJlIHRlbXBvcmFyeURhdGEgaWYgbmVjZXNzYXJ5CiAg
ICAgaWYgKHJlcXVpcmVTdWJJbWFnZUJ1ZmZlcikgewogICAgICAgICB0ZW1wb3JhcnlEYXRhLnJl
c2l6ZSh0YXJnZXRSZWN0LndpZHRoKCkgKiB0YXJnZXRSZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQ
aXhlbCk7Ci0gICAgICAgIGNoYXIqIGRzdCA9IHRlbXBvcmFyeURhdGEuZGF0YSgpOworICAgICAg
ICB1aW50OF90KiBkc3QgPSB0ZW1wb3JhcnlEYXRhLmRhdGEoKTsKICAgICAgICAgZGF0YSA9IGRz
dDsKLSAgICAgICAgY29uc3QgY2hhciogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihz
cmNEYXRhKTsKLSAgICAgICAgY29uc3QgY2hhciogc3JjID0gYml0cyArIHNvdXJjZU9mZnNldC55
KCkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsKKyAg
ICAgICAgY29uc3QgdWludDhfdCogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
cmNEYXRhKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogc3JjID0gYml0cyArIHNvdXJjZU9mZnNl
dC55KCkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsK
ICAgICAgICAgY29uc3QgaW50IHRhcmdldEJ5dGVzUGVyTGluZSA9IHRhcmdldFJlY3Qud2lkdGgo
KSAqIGJ5dGVzUGVyUGl4ZWw7CiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGFyZ2V0UmVj
dC5oZWlnaHQoKTsgKyt5KSB7CiAgICAgICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIHRhcmdldEJ5
dGVzUGVyTGluZSk7CkBAIC0xNTcsMTEgKzE1NywxMSBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6
dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBj
bwogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgYnl0ZXNQZXJMaW5lOwotICAgIGNvbnN0IGNo
YXIqIGltYWdlRGF0YTsKKyAgICBjb25zdCB1aW50OF90KiBpbWFnZURhdGE7CiAKICNpZiBVU0Uo
Q0FJUk8pCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpOwotICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOworICAgIGltYWdl
RGF0YSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAgYnl0ZXNQ
ZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogI2VsaWYg
VVNFKERJUkVDVDJEKQogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVz
LmNwcAppbmRleCBlYmFkZjRjNjBkNmRlZWVlOTU1MmIwMTkxYWYxZmRkNTIyM2NhOWJiLi4zNzhm
MGY2MTAyNzYyNjNjMGI5YTdhMzBmYTczNmFhZTJhZTAzMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxp
dGllcy5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBJRFdyaXRlRm9udENvbGxlY3Rpb24xKiB3ZWJQ
cm9jZXNzRm9udENvbGxlY3Rpb24oKQogICAgIHJldHVybiBmb250Q29sbGVjdGlvbi5nZXQoKTsK
IH0KIAotSFJFU1VMVCBhZGRGb250RnJvbURhdGFUb1Byb2Nlc3NDb2xsZWN0aW9uKGNvbnN0IFZl
Y3RvcjxjaGFyPiYgZm9udERhdGEpCitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0Nv
bGxlY3Rpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmb250RGF0YSkKIHsKICAgICBDT01QdHI8
SURXcml0ZUZvbnRGaWxlPiBmb250RmlsZTsKICAgICBIUkVTVUxUIGhyID0gbWVtb3J5Rm9udExv
YWRlcigpLT5DcmVhdGVJbk1lbW9yeUZvbnRGaWxlUmVmZXJlbmNlKGZhY3RvcnkoKSwgZm9udERh
dGEuZGF0YSgpLCBmb250RGF0YS5zaXplKCksIG51bGxwdHIsICZmb250RmlsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0
ZVV0aWxpdGllcy5oCmluZGV4IDcyYWM2ODEzYTI2NGJmYTMyYmYwNTFiMGQ4MDgxZWY2ODE1MTFj
OTkuLmE2MjcxOWIxNzE5YTc0Zjk3NjkyMjE5ZGY1ZjdhYWVkYzQ5MDY0NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0
ZVV0aWxpdGllcy5oCkBAIC01Miw3ICs1Miw3IEBAIElEV3JpdGVHZGlJbnRlcm9wKiBnZGlJbnRl
cm9wKCk7CiAKIElEV3JpdGVGb250Q29sbGVjdGlvbjEqIHdlYlByb2Nlc3NGb250Q29sbGVjdGlv
bigpOwogCi1IUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0NvbGxlY3Rpb24oY29uc3Qg
VmVjdG9yPGNoYXI+JiBmb250RGF0YSk7CitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vz
c0NvbGxlY3Rpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmb250RGF0YSk7CiBDT01QdHI8SURX
cml0ZUZvbnRGYW1pbHk+IGZvbnRGYW1pbHlGb3JDb2xsZWN0aW9uKElEV3JpdGVGb250Q29sbGVj
dGlvbiosIGNvbnN0IFZlY3Rvcjx3Y2hhcl90PiYgbG9jYWxlTmFtZSwgY29uc3QgTE9HRk9OVCYp
OwogQ09NUHRyPElEV3JpdGVGb250PiBjcmVhdGVXaXRoUGxhdGZvcm1Gb250KGNvbnN0IExPR0ZP
TlQmKTsKIFZlY3Rvcjx3Y2hhcl90PiBmYW1pbHlOYW1lRm9yTG9jYWxlKElEV3JpdGVGb250RmFt
aWx5KiwgY29uc3QgVmVjdG9yPHdjaGFyX3Q+JiBsb2NhbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDZkMzkxNTA3MTA4YzFiZWUyNjVhNzE4ZGEwNDc1YjA1OGY4
MjI2ODIuLmZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBp
bmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFy
a2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBi
dWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtYXJrZXItPmRhdGEg
KyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNp
emUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCA2NGRm
NzUwMmUxYjMxNWI5YThkZDI5MDhmMjQ4Y2VhMTViZjEwNjU4Li5hMTg1YzA3ZGIyN2VmMTYyM2Qw
Mzc2NzYzNGEzZDE3MmFhZDBkZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmgKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICBDTVRpbWUg
bV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wIHsga0NNVGltZUludmFsaWQgfTsK
ICAgICBDTVRpbWUgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uIHsga0NNVGltZUludmFsaWQgfTsK
IAotICAgIFZlY3RvcjxjaGFyPiBtX3NvdXJjZUJ1ZmZlcjsKLSAgICBWZWN0b3I8Y2hhcj4gbV9k
ZXN0aW5hdGlvbkJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9zb3VyY2VCdWZmZXI7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGVzdGluYXRpb25CdWZmZXI7CiAKICAgICBSZXRhaW5QdHI8
Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKICAgICBzaXplX3QgbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDEzYTIzMmMxMjhhOTc1ZTBjYjBjMzU3OWI4
NTBkYzI4N2YyZWRlYTAuLmY1Zjg1NTg3MWZjNzA4NTY2ZjdlZjhiOWExNjFlMjdiOGU1ZDg5ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9p
ZCByZXN1bWUoKTsKIAotICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsK
KyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYXVkaW9CaXRSYXRlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KaW5kZXggZDcxMDVjMmZhNDAwY2FmZTg4M2QyYjZiNzUxZDk3MjVhZmNlOTdiZC4u
NjNiZDY1OThkMDJhNWM3MDA2ZGE5MjlmYzk0ZjFmNWY2NmE3MTZkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtNzQsMTQg
Kzc0LDE0IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXImKXdyaXRlcgogLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3Nl
dFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTooTlNE
YXRhICopZnJhZ21lbnRlZEhlYWRlckRhdGEKIHsKICAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0
ZXIpOwotICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihb
ZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0
aF0pOworICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxl
bmd0aF0pOwogfQogCiAtICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRX
cml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRNZWRpYURhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRN
ZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydDooQVZGcmFnbWVudGVkTWVkaWFEYXRh
UmVwb3J0ICopZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydAogewogICAgIFVOVVNFRF9QQVJBTShh
c3NldFdyaXRlcik7CiAgICAgVU5VU0VEX1BBUkFNKGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQp
OwotICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJh
Z21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKTsK
KyAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2Zy
YWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSk7
CiB9CiAKIC0gKHZvaWQpY2xvc2UKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiAgICAgbV9mZXRjaERhdGFDb21w
bGV0aW9uSGFuZGxlcih0YWtlRGF0YSgpLCBjdXJyZW50VGltZUNvZGUpOwogfQogCi12b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhTG9jayB9OwogICAgIGlmICghbV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCmluZGV4IDQzODQwYTNkNjFlOTdlY2QxYWMxOWZlNzM2NWI5OGFjZDdm
MTY2NDAuLjVjYjYwYjllZjZlZjU3YTQzYjRlZWY3MmExMzc2NzliMWFlYmQ2NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNv
dXJjZVByaXZhdGUqIHBhcmVudCkKIAogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6On5Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAotdm9pZCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBt
X2lucHV0QnVmZmVyLmFwcGVuZFZlY3RvcihkYXRhKTsKICAgICBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRSZXN1bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6
QXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmgKaW5kZXggZGZiZjM2YTFlYzY3NGYzYmQ4MGIyOGFhZTgwMTk4OWU1OWU2MTQ3NC4u
MTRmMTU4ZDYwMzFhNjUxZDQwMjcxYWY1ZWIwMDM2NGI4ZWMzNTk1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsK
IAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1
aW50OF90PiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNl
dFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkg
ZmluYWw7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIG1fbWluaW11
bVVwY29taW5nUHJlc2VudGF0aW9uVGltZTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2VucXVldWVk
U2FtcGxlczsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVwdGg7Ci0g
ICAgVmVjdG9yPGNoYXI+IG1faW5wdXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1faW5w
dXRCdWZmZXI7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKaW5kZXggN2FkZGNlMzk4MzA5Nzg3YzNkM2FhZjBjNGVjZTQ0NDQwYjY4YTYz
Ni4uYjhhMTUzZmMxYzE4ZTM3YTdkOGJhM2M4ZmU3YzhlMGRlN2EzZWFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTMxMCw3ICsz
MTAsOCBAQCBib29sIGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIHZh
bHVlKQogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0g
MTI4Owotc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciogcCwgc2l6ZV90
IGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIFN0cmluZyB0cmlt
SW5wdXRTYW1wbGUoQ2hhclR5cGUqIHAsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgU3RyaW5nIHMg
PSBTdHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW5ndGgsIG1heElucHV0U2FtcGxlU2l6ZSkp
OwogICAgIGlmIChsZW5ndGggPiBtYXhJbnB1dFNhbXBsZVNpemUpCkBAIC02MzEsMTQgKzYzMiwx
NSBAQCBib29sIHBhcnNlUmFuZ2UoY29uc3QgU3RyaW5nJiByYW5nZSwgbG9uZyBsb25nJiByYW5n
ZU9mZnNldCwgbG9uZyBsb25nJiByYW5nZUVuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hhciogY2hh
cmFjdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc1ZhbGlkSGVhZGVyTmFtZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikK
IHsKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMu
MgogICAgIC8vIEEgaGVhZGVyIG5hbWUgc2hvdWxkIG9ubHkgY29udGFpbiBvbmUgb3IgbW9yZSBv
ZgogICAgIC8vIGFscGhhbnVtZXJpYyBvciAhICMgJCAlICYgJyAqICsgLSAuIF4gXyBgIHwgfgot
ICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKCpjaGFyYWN0ZXIpKQorICAgIGlmIChpc0FTQ0lJ
QWxwaGFudW1lcmljKGNoYXJhY3RlcikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHN3aXRj
aCAoKmNoYXJhY3RlcikgeworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CiAgICAgY2FzZSAnISc6
CiAgICAgY2FzZSAnIyc6CiAgICAgY2FzZSAnJCc6CkBAIC02NjAsMTYgKzY2MiwxNiBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hhciogY2hh
cmFjdGVyKQogICAgIH0KIH0KIAotc2l6ZV90IHBhcnNlSFRUUEhlYWRlcihjb25zdCBjaGFyKiBz
dGFydCwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdWaWV3JiBu
YW1lU3RyLCBTdHJpbmcmIHZhbHVlU3RyLCBib29sIHN0cmljdCkKK3NpemVfdCBwYXJzZUhUVFBI
ZWFkZXIoY29uc3QgdWludDhfdCogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVy
ZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3RyaW5nJiB2YWx1ZVN0ciwgYm9vbCBzdHJp
Y3QpCiB7Ci0gICAgY29uc3QgY2hhciogcCA9IHN0YXJ0OwotICAgIGNvbnN0IGNoYXIqIGVuZCA9
IHN0YXJ0ICsgbGVuZ3RoOworICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBzdGFydDsKKyAgICBjb25z
dCB1aW50OF90KiBlbmQgPSBzdGFydCArIGxlbmd0aDsKIAotICAgIFZlY3RvcjxjaGFyPiBuYW1l
OwotICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICBWZWN0b3I8dWludDhfdD4gbmFtZTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gdmFsdWU7CiAKICAgICBib29sIGZvdW5kRmlyc3ROYW1lQ2hhciA9
IGZhbHNlOwotICAgIGNvbnN0IGNoYXIqIG5hbWVQdHIgPSBudWxscHRyOworICAgIGNvbnN0IHVp
bnQ4X3QqIG5hbWVQdHIgPSBudWxscHRyOwogICAgIHNpemVfdCBuYW1lU2l6ZSA9IDA7CiAKICAg
ICBuYW1lU3RyID0gU3RyaW5nVmlldygpOwpAQCAtNjkyLDcgKzY5NCw3IEBAIHNpemVfdCBwYXJz
ZUhUVFBIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFp
bHVyZVJlYXNvbiwKICAgICAgICAgY2FzZSAnOic6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIo
cCkpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoKnApKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG5hbWUuc2l6ZSgpIDwgMSkKICAgICAgICAgICAgICAgICAg
ICAgZmFpbHVyZVJlYXNvbiA9ICJVbmV4cGVjdGVkIHN0YXJ0IGNoYXJhY3RlciBpbiBoZWFkZXIg
bmFtZSI7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtNzQ3LDcgKzc0OSw3IEBAIHNpemVfdCBw
YXJzZUhUVFBIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYg
ZmFpbHVyZVJlYXNvbiwKICAgICByZXR1cm4gcCAtIHN0YXJ0OwogfQogCi1zaXplX3QgcGFyc2VI
VFRQUmVxdWVzdEJvZHkoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+JiBib2R5KQorc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5KGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1aW50OF90PiYgYm9keSkKIHsKICAg
ICBib2R5LmNsZWFyKCk7CiAgICAgYm9keS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCBhODY5ZWY3OWJi
NWQyMWJhMzliYjJjMDZlOWNlOGNmM2QzOGY5ODQwLi4xYjFhNGQwYmE4MzhiMmQwYTMyNTU0Yzcz
OWQ4OWI2MWFhYzc4NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oCkBAIC05MSw4ICs5MSw4IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFyc2VS
YW5nZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJhbmdlT2Zmc2V0LCBsb25nIGxvbmcmCiBD
b250ZW50VHlwZU9wdGlvbnNEaXNwb3NpdGlvbiBwYXJzZUNvbnRlbnRUeXBlT3B0aW9uc0hlYWRl
cihTdHJpbmdWaWV3IGhlYWRlcik7CiAKIC8vIFBhcnNpbmcgQ29tcGxldGUgSFRUUCBNZXNzYWdl
cy4KLXNpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdWaWV3JiBuYW1lU3RyLCBTdHJpbmcmIHZh
bHVlU3RyLCBib29sIHN0cmljdCA9IHRydWUpOwotc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYg
Ym9keSk7CitzaXplX3QgcGFyc2VIVFRQSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3Ry
aW5nJiB2YWx1ZVN0ciwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKK3NpemVfdCBwYXJzZUhUVFBSZXF1
ZXN0Qm9keShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBWZWN0b3I8dWludDhf
dD4mIGJvZHkpOwogCiAvLyBIVFRQIEhlYWRlciByb3V0aW5lIGFzIHBlciBodHRwczovL2ZldGNo
LnNwZWMud2hhdHdnLm9yZy8jdGVybWlub2xvZ3ktaGVhZGVycwogYm9vbCBpc0ZvcmJpZGRlbkhl
YWRlck5hbWUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKaW5kZXggZDZjOGNiOTAxNzBmZWRm
YzFiNTVjZTVkN2VjZDgyZjVjZjgwYTM5Mi4uNmRlMWEzZjhhMWY5YjYzZDFlNzFmYjNhYTdjZTQy
NTM0MWE2NTFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIFNvY2tldFN0cmVh
bUhhbmRsZTo6U29ja2V0U3RyZWFtU3RhdGUgU29ja2V0U3RyZWFtSGFuZGxlOjpzdGF0ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpz
ZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wp
PiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nIHx8
IG1fc3RhdGUgPT0gQ2xvc2luZykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKLSAgICBwbGF0Zm9ybVNlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIGxlbmd0aCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBsYXRmb3Jt
U2VuZChkYXRhLCBsZW5ndGgsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwg
c3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mJiBoZWFkZXJGaWVs
ZFByb3h5LCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZS5oCmluZGV4IGNhMTFhNjEzYTY5MTBkODY2Yjg1OTdlMmEyODIzNDRkZDJlMGU3NTMuLjBiOTkz
ZDc4Y2Q0YWVhYWJiOTRmNzMzOTY5Y2VkODhmZjI5NTk4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNTMsNyAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCkgPSBkZWZh
dWx0OwogICAgIFNvY2tldFN0cmVhbVN0YXRlIHN0YXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNl
bmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+KTsKKyAgICB2b2lkIHNlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+KTsKICAgICB2b2lkIHNlbmRIYW5kc2hha2UoQ1N0cmlu
ZyYmIGhhbmRzaGFrZSwgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eT4mJiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4pOwogICAgIHZvaWQgY2xvc2UoKTsgLy8g
RGlzY29ubmVjdCBhZnRlciBhbGwgZGF0YSBpbiBidWZmZXIgYXJlIHNlbnQuCiAgICAgdm9pZCBk
aXNjb25uZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAppbmRleCA2MGEyM2Q1ZjQ3NzQ5NjM2N2Ux
YjYxYjlmZWNhOWJkMWEwNjJiZjJhLi41ZGU1NTljMGFiZGVkOTE1M2NjZGYwNzdlN2UyYjU2ZTdj
YmU4YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJl
YW1IYW5kbGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0
U3RyZWFtSGFuZGxlJiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1v
dW50KFNvY2tldFN0cmVhbUhhbmRsZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNv
bnN0IFNvY2tldFN0cmVhbUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5oCmluZGV4IDhkZTIyNDVhYTNmY2IyNTEw
MGFlOTBhZTlmZTYwOGM0ZGM4NTQzYjYuLjcxZjdlYmIwZjMyNjRlNjQxZTk3ZmZjYjFmMDRiYjYw
MTIzY2I4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RG93bmxvYWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Rvd25sb2FkQnVuZGxlLmgKQEAgLTMxLDggKzMxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRsZSB7CiAKLWJvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25z
dCBjaGFyKiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Ci1ib29sIGV4dHJh
Y3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPGNoYXI+JiByZXN1
bWVEYXRhKTsKK2Jvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25zdCB1aW50OF90KiwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Citib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0
IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bWVEYXRhKTsKIGNvbnN0
IFN0cmluZyYgZmlsZUV4dGVuc2lvbigpOwogCiB9IC8vIG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4IDYyNTQ4NWJmMWMwZThl
NTgxOWJmNjU0MDU1YmQzODY0MzcxODNhNDguLmQxMzc5NDk4YWFiODFlZTJjYTdhYTA4OWIxYjUw
Zjk5NWMyODI5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTYw
Niw3ICs2MDYsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxs
YmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBlKQogICAgICAgICBpZiAobGVuZ3RoID09IC0xKQog
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRo
aXMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0
U3RyZWFtRGF0YSgqdGhpcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocHRyKSwgbGVu
Z3RoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0
aGlzLCBwdHIsIGxlbmd0aCk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3Bw
CmluZGV4IDg0ODEwN2NjNmFkZjA1OGRhYTg4ZDg0NjgwMmEzNmZkOGQ3N2RlMDUuLjA1YjRlMjli
YzkzMWMxNDM0NWI0Nzk1OThiYWVlNjdlYjRiNjhjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtOTgs
NyArOTgsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5Ojppc0NhY2hlZCgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZUNhY2hlZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFvcGVuQ29udGVu
dEZpbGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCA0NzI3NjJjN2Y1
NTJjZGMwZDk0NGY5OTBjYWEzMGQyNmM4MDIzYTI1Li4yNDYxNDA4YmZhNjIyNGRkMTUwOGQxYzQz
ZjI3NmY2MjFkNmEyNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgc2l6ZV90IGVudHJ5U2l6ZSgpOwogICAgIEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
KCkgeyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgYm9vbCBzYXZlQ2FjaGVkRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QpOworICAgIGJvb2wgc2F2ZUNhY2hlZERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICBib29sIHJlYWRDYWNoZWREYXRhKFJlc291
cmNlSGFuZGxlKik7CiAKICAgICBib29sIHNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGU2OWY2YzM1Nzc1ZWRlY2NlYjIy
ZTg1MTU0NjUzYTk0ODYyNmZiY2QuLjc1MDRjOTg4NmZiOGYyNWVmZTc5YTgyNjI2MjgyMDg5ODI2
NzdmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIEN1cmxD
YWNoZU1hbmFnZXI6OmdldENhY2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAg
ICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IDRl
MjQ5YzljMmIwZTlhZjFhZTNhYTQ5M2U4M2I1MThhNjU0MmMzOTIuLmM5ZTI5ZDgwOTcwYzQwNDZl
Nzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSYsIGNvbnN0IGNoYXIqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVf
dCk7IC8vIFNhdmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSYpOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCBhMzA5YzI1OGNkOWYxMTJkM2JiY2U2Y2FhNzE0
ODE4MzZhMWZiMDEwLi5lNTY0YTBjZTY2NjE0YTQ5YTEwMzEzNjg4NTFjNGRhODgyMzUyYTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBA
QCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCku
ZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YUFzQ2hhclB0cigpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURh
dGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgY2xpZW50
KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+
c2l6ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTdHJlYW0uY3BwCmluZGV4IDFiMTVhZjAxYmNjMGVhYjkxMGZjM2I5ZThhOGQ0NjNi
N2M2Njg1MTkuLmZmNTVkMzUyMzQyNzg2ZmNkZWFlZmM2NGY2Y2NiZTAxNWY0YzViNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5j
cHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEN1cmxTdHJlYW06OnRyeVRvUmVjZWl2ZSgpCiAg
ICAgICAgIGRlc3Ryb3lIYW5kbGUoKTsKIAogICAgIG1fc2NoZWR1bGVyLmNhbGxDbGllbnRPbk1h
aW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1JRCwgYnVmZmVyID0gV1RG
TW92ZShyZWNlaXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0ZXNSZWNlaXZlZF0oQ2xpZW50JiBjbGll
bnQpIG11dGFibGUgewotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5nZXQoKSksIGxlbmd0aCk7CisgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgYnVmZmVyLmdldCgpLCBsZW5ndGgp
OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTdHJlYW0uaAppbmRleCAzMTNiMDE3M2RhNWNkNDA0YTFlM2ZjYWQ5NTczYjhmZjdj
M2FiZDRmLi5lNjQ2MjlmYzIyYTIwOTdhMmFmMGIwYzAxMzliMjNkNzkwOGNmM2RjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZE9wZW4oQ3VybFN0cmVhbUlEKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YShDdXJsU3RyZWFtSUQsIHNpemVfdCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoQ3VybFN0cmVh
bUlELCBDVVJMY29kZSkgPSAwOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Eb3dubG9hZEJ1bmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Rvd25sb2FkQnVuZGxlLmgKaW5kZXggYzEyNWRlYjE4Zjg2
MjVkYzc2MTc3MjkzZGYyNzIxYjdjMjcyMzNmYS4uNmI5NzhiZTZmODRlNmU5MzQ3NGJkYjIzZGI2
YmVhYjNkNTZmYTYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Rvd25sb2FkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Rvd25sb2FkQnVuZGxlLmgKQEAgLTMwLDggKzMwLDggQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRsZSB7CiAKLWJvb2wgYXBwZW5kUmVzdW1l
RGF0YShjb25zdCBjaGFyKiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Ci1i
b29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPGNo
YXI+JiByZXN1bWVEYXRhKTsKK2Jvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25zdCB1aW50OF90Kiwg
dWludDMyX3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Citib29sIGV4dHJhY3RSZXN1bWVE
YXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bWVEYXRh
KTsKIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbigpOwogCiB9IC8vIG5hbWVzcGFjZSBEb3du
bG9hZEJ1bmRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggMmQwNTg0ZGFiNWNmZjZk
MTQ5MDYyOTY0MmJhZWE2NTJmYWVhMDAzMy4uYjgwNGZkZTA5NzNiYmZiMjgzMzFjZjdjM2ExZjIw
YjA0M2U3NGZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCkBAIC02MSw3ICs2MSw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGRpZE9wZW4oQ3VybFN0cmVhbUlEKSBmaW5hbDsKICAgICB2
b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90KSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChDdXJsU3RyZWFtSUQsIENVUkxjb2RlKSBmaW5h
bDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlkYXRlZCgpIHsgcmV0dXJuIG1fc3RyZWFtSUQg
PT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3Vy
bC5jcHAKaW5kZXggMmZlY2UwMjhlZmZkYmU4ODUxOGVjN2I4YmUyNTliMGEwOTA4NmNjZi4uNGI5
NDkxYzExNTQzZjJiNjBmMTJkMzZlOWU2YTBjYmFhZTM0YTcyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpkaWRTZW5kRGF0YShDdXJsU3RyZWFtSUQsIHNpemVfdCBsZW5ndGgpCiAg
ICAgc2VuZFBlbmRpbmdEYXRhKCk7CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
ZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKQordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3Ry
ZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKG1f
c3RhdGUgIT0gT3BlbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCmluZGV4IDkw
MWIyYjcxMGU0ZjgxYTNjODBjYWIwMzkzODg0N2VhMTY0MWUzMjcuLmQ4M2MzYjJhNjNiMjJjMzll
MThjMTI5ZTQ0YmM4ZjJkMzhiOGIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKCkKICAgICByZXR1cm4gZXh0ZW5zaW9u
OwogfQogCi1ib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgY2hhciogcmVzdW1lQnl0ZXMsIHVp
bnQzMl90IHJlc3VtZUxlbmd0aCwgY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoKQorYm9vbCBhcHBl
bmRSZXN1bWVEYXRhKGNvbnN0IHVpbnQ4X3QqIHJlc3VtZUJ5dGVzLCB1aW50MzJfdCByZXN1bWVM
ZW5ndGgsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCkKIHsKICAgICBpZiAoIXJlc3VtZUJ5dGVz
IHx8ICFyZXN1bWVMZW5ndGgpIHsKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIHJlc3VtZSBk
YXRhIHRvIHdyaXRlIHRvIGJ1bmRsZSBwYXRoIik7CkBAIC04OSw3ICs4OSw3IEBAIGV4aXQ6CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBleHRyYWN0UmVzdW1lRGF0YShjb25zdCBTdHJp
bmcmIGJ1bmRsZVBhdGgsIFZlY3RvcjxjaGFyPiYgcmVzdW1lRGF0YSkKK2Jvb2wgZXh0cmFjdFJl
c3VtZURhdGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0b3I8dWludDhfdD4mIHJlc3Vt
ZURhdGEpCiB7CiAgICAgaWYgKGJ1bmRsZVBhdGguaXNFbXB0eSgpKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ2Fubm90IGNyZWF0ZSByZXN1bWUgZGF0YSBmcm9tIGVtcHR5IGRvd25sb2FkIGJ1bmRs
ZSBwYXRoIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFy
ZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRC
dWZmZXJQT1NJWC5jcHAKaW5kZXggOGVkNTcxNzQ3NzhjYjdiZGFkY2EzNjUxN2ZkNzk0NDU3Mzhj
NTJkNy4uYzkyOGI2MzczNDUwZGE4MTVjOTNmODY3Y2ZjOGQ5OTU4YjFlMzU0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsK
KyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKIAogICAgIHNpemVfdCB0
b3RhbEJ5dGVzUmVhZCA9IDA7CiAgICAgc3NpemVfdCBieXRlc1JlYWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCBlY2I2YmFlMTY4OTU2MTY3ZjYxZmFmM2Rj
YTI5MzY0NmNkY2FkNDg2Li4wMDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1NDNkYTYyZDczOGMwZmU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0
NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KSk7IC8vIERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+
aW5pdCgpLgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
c2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBk
b2N1bWVudAotICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCku
YWRkRGF0YShkYXRhKCktPmRhdGFBc0NoYXJQdHIoKSwgZGF0YSgpLT5zaXplKCkpOworICAgICAg
ICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCkt
PmRhdGEoKSwgZGF0YSgpLT5zaXplKCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+d3JpdGVyKCkuZW5kKCk7CiAKICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDFmNWJlZjc5ZDE2ZTI3NmQ5
YzEwMTEyOGI4ODlkN2NmMWJhOGYwNGEuLjEyNDdkYWE2NDYzOWQ2ZTZlYWMxNmQxMTI2MzhiOWY5
ZDRhNzk1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6dXBk
YXRlTGVhZlRleHROb2RlKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIG9w
ZXJhdGlvbiBtaWdodCBmaXJlIG11dGF0aW9uIGV2ZW50LCBzZWUgYmVsb3cuCi0gICAgbV9sZWFm
VGV4dE5vZGUtPmFwcGVuZERhdGEoU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihtX2J1ZmZlcmVkVGV4dC5kYXRhKCkpLCBtX2J1ZmZlcmVkVGV4dC5zaXplKCkp
KTsKKyAgICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5kRGF0YShTdHJpbmc6OmZyb21VVEY4KG1fYnVm
ZmVyZWRUZXh0LmRhdGEoKSwgbV9idWZmZXJlZFRleHQuc2l6ZSgpKSk7CiAgICAgbV9idWZmZXJl
ZFRleHQgPSB7IH07CiAKICAgICBtX2xlYWZUZXh0Tm9kZSA9IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNw
cAppbmRleCBlZGZmODQ2NGZkNTI5MDM2ODY5ZGEwYzdlNGViODQ4ZmFmOTBiZDNkLi45ZWM1NWY2
MTZmNTg0M2I2YzgwMjdiYzE5ZGE3YTYwNThkNGFhNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKQEAgLTE3
NCwxMiArMTc0LDEyIEBAIHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRURmls
ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpQYXJz
ZVdlYlZUVEZpbGVIZWFkZXIobV9pZGVudGlmaWVyLCBoZWFkZXIpLCBtX21lZGlhUGxheWVySWRl
bnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRUQ3Vl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIFJlbW90ZVRleHRU
cmFja1Byb3h5OjpwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKQogewogICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlBhcnNlV2ViVlRUQ3VlRGF0
YShtX2lkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKKyAg
ICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlBhcnNlV2ViVlRUQ3VlRGF0YShtX2lkZW50aWZpZXIs
IElQQzo6RGF0YVJlZmVyZW5jZShkYXRhLCBsZW5ndGgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZp
ZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdlYlZUVEN1ZURhdGEo
SVNPV2ViVlRUQ3VlJiYgY3VlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKaW5kZXggYjc0ZTg4MmIxNDBjNjZhYzg5
M2NiYjI5ODllMTA5OGI1MDBlZDE5Ni4uNzhiNGU4NGVjMmZiZTFiMGNjZGY5NDgyMGE2MzVmOGRk
ODZhZGQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVRleHRUcmFja1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVRleHRUcmFja1Byb3h5LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlJik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZU
VEN1ZURhdGEoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlJiYpOwogCiAgICAgLy8gVHJhY2tQcml2YXRl
QmFzZUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggMWIzNTdmNjhmY2E0Mzk5YjNkNmFlNDFlYzM4Yjg3ZTM0
MjM5YzEyZC4uMWI2NzRlNGY4ZDU2YzZjZWVmMTFmNjc1MGMxNmQ5N2NkN2Q3YzIyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2Iu
Y3BwCkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpyZWFkRGF0
YShjb25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0pCiAgICAgaWYgKGJ5dGVzVG9SZWFkID4gbV90b3Rh
bFJlbWFpbmluZ1NpemUpCiAgICAgICAgIGJ5dGVzVG9SZWFkID0gbV90b3RhbFJlbWFpbmluZ1Np
emU7CiAKLSAgICBhdXRvKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaXRl
bS5kYXRhKCkuZGF0YSgpLT5kYXRhKCkpICsgaXRlbS5vZmZzZXQoKSArIG1fY3VycmVudEl0ZW1S
ZWFkU2l6ZTsKKyAgICBhdXRvKiBkYXRhID0gaXRlbS5kYXRhKCkuZGF0YSgpLT5kYXRhKCkgKyBp
dGVtLm9mZnNldCgpICsgbV9jdXJyZW50SXRlbVJlYWRTaXplOwogICAgIG1fY3VycmVudEl0ZW1S
ZWFkU2l6ZSA9IDA7CiAKICAgICBjb25zdW1lRGF0YShkYXRhLCBzdGF0aWNfY2FzdDxpbnQ+KGJ5
dGVzVG9SZWFkKSk7CkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9i
OjpkaWRSZWFkKGludCBieXRlc1JlYWQpCiAgICAgY29uc3VtZURhdGEobV9idWZmZXIuZGF0YSgp
LCBieXRlc1JlYWQpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmNvbnN1bWVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCit2b2lkIE5ldHdvcmtEYXRhVGFza0Js
b2I6OmNvbnN1bWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpCiB7CiAg
ICAgbV90b3RhbFJlbWFpbmluZ1NpemUgLT0gYnl0ZXNSZWFkOwogCkBAIC00NzUsNyArNDc1LDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAgICAgcmVhZCgpOwogfQog
Ci1ib29sIE5ldHdvcmtEYXRhVGFza0Jsb2I6OndyaXRlRG93bmxvYWQoY29uc3QgY2hhciogZGF0
YSwgaW50IGJ5dGVzUmVhZCkKK2Jvb2wgTmV0d29ya0RhdGFUYXNrQmxvYjo6d3JpdGVEb3dubG9h
ZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIEFTU0VSVChpc0Rv
d25sb2FkKCkpOwogICAgIGludCBieXRlc1dyaXR0ZW4gPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKaW5kZXggZmQ4Y2RlZjAyNDg2
ZjE5ZTNlMTA5OTVlNGM1MzI1Y2FlOTBjYmJkMS4uZmQxNWUyNDQwNGQ4YWQ5NDIxNDMyNjY2YzQ3
MGI2ZjFlNDNiZGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmgKQEAgLTg1LDEyICs4NSwxMiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ2V0U2l6ZUZvck5leHQoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KEVycm9yID0gRXJyb3I6Ok5vRXJyb3IpOwogICAgIHZvaWQgc2VlaygpOwotICAgIHZvaWQgY29u
c3VtZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCk7CisgICAgdm9pZCBjb25z
dW1lRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKTsKICAgICB2b2lkIHJl
YWQoKTsKICAgICB2b2lkIHJlYWREYXRhKGNvbnN0IFdlYkNvcmU6OkJsb2JEYXRhSXRlbSYpOwog
ICAgIHZvaWQgcmVhZEZpbGUoY29uc3QgV2ViQ29yZTo6QmxvYkRhdGFJdGVtJik7CiAgICAgdm9p
ZCBkb3dubG9hZCgpOwotICAgIGJvb2wgd3JpdGVEb3dubG9hZChjb25zdCBjaGFyKiBkYXRhLCBp
bnQgYnl0ZXNSZWFkKTsKKyAgICBib29sIHdyaXRlRG93bmxvYWQoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGJ5dGVzUmVhZCk7CiAgICAgdm9pZCBjbGVhbkRvd25sb2FkRmlsZXMoKTsKICAgICB2
b2lkIGRpZEZhaWxEb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRGaW5pc2hEb3dubG9hZCgpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGE+IG1fYmxvYkRhdGE7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbT4gbV9zdHJlYW07IC8vIEZvciBhc3luY2hy
b25vdXMgbG9hZGluZy4KLSAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IG1fYnVmZmVyOwogICAgIFZlY3Rvcjxsb25nIGxvbmc+IG1faXRlbUxlbmd0aExpc3Q7
CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdXNwZW5kZWQgfTsKICAgICBsb25nIGxvbmcg
bV9yYW5nZU9mZnNldCB7IGtQb3NpdGlvbk5vdFNwZWNpZmllZCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggMTVh
OTllY2UzNGFjMTYwMzRkNmJiYzhlNDdjMjg5ZTM4YjZjOTJiNS4uNTJlYjViMDhmMTZjYmEyMzIx
NDkwMjhjZGFhODE1MGFkMDRlNGE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC04NCwxMCArODQsMTAgQEAgdm9p
ZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1I
YW5kbGUmIGhhbmRsZSkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2NrZXRTdHJlYW06OkRpZENs
b3NlU29ja2V0U3RyZWFtKCkpOwogfQogCi12b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OmRpZFJl
Y2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRS
ZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRs
ZSwgJmhhbmRsZSA9PSBtX2ltcGwucHRyKCkpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tl
dFN0cmVhbTo6RGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShJ
UEM6OkRhdGFSZWZlcmVuY2UoZGF0YSwgbGVuZ3RoKSkpOwogfQogCiB2b2lkIE5ldHdvcmtTb2Nr
ZXRTdHJlYW06OmRpZEZhaWxUb1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZSYgaGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAppbmRleCA2MDA2YjJlMWI3YzYzMjEyM2RmMDg5Yjky
MjdiMjZmNzkwNjhjZTA0Li5lMjU2OTg0MjY2Y2U1ZWVjZjE1MDI4YTUyM2Y2YWFjZDgzYTZhZWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgLy8gU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50CiAgICAgdm9pZCBkaWRPcGVuU29ja2V0U3RyZWFtKFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xvc2VTb2NrZXRTdHJlYW0oV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU29ja2V0
U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBjaGFyKiwgc2l6
ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlJikgZmluYWw7CiAgICAgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bFNvY2tldFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1FcnJvciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwCmluZGV4IGMyNTdmYTExZDYyYTMxNGMyODYyZGNkNzNiMTZhNzgyYzgx
MzUyMzYuLjk0NmFmNDdkZmI3ZTYxMWYxYWI0NDE3MzRhOWIwZTE0MTlmYmVkODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTE1Myw5ICsxNTMsOSBA
QCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWNvbnN0IGNoYXIqIFNoYXJlYWJsZVJlc291cmNlOjpkYXRh
KCkgY29uc3QKK2NvbnN0IHVpbnQ4X3QqIFNoYXJlYWJsZVJlc291cmNlOjpkYXRhKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1fc2hhcmVkTWVtb3J5LT5k
YXRhKCkpICsgbV9vZmZzZXQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIG1fb2Zmc2V0OwogfQogCiB1bnNpZ25lZCBTaGFy
ZWFibGVSZXNvdXJjZTo6c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaAppbmRleCA1Mzc0ZDdiOTZjZjIyMTlhNzY2YmI3MGFiNjBhYzg4NzM2NmMxZjQw
Li43YjQ3ZjVkNjg1MWQ5ZGUzMmQxYzNhNTQ3MDUxNjBhYTRmN2M2Y2I3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
CiAgICAgflNoYXJlYWJsZVJlc291cmNlKCk7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29u
c3Q7CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHNpemUo
KSBjb25zdDsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA1YTE4MGJlZWQxMmY1
Y2RjZGZiYWU2NzAyZTY5M2I5ZWE2ZTBhODQ0Li4zYzk3MWExM2Y0OWM1ZTc0NGRlNjA5ZDg1ZGZh
N2RkM2ViNWQxNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMg
Ym9vbCB3cml0ZURhdGFUb0ZpbGUoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGZp
bGVEYXRhLCBQbGF0Zm9ybQogewogICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAgICAgZmlsZURh
dGEuYXBwbHkoW2ZkLCAmc3VjY2Vzc10oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
IHsKLSAgICAgICAgaWYgKHdyaXRlVG9GaWxlKGZkLCAoY29uc3QgY2hhciopZGF0YSwgc2l6ZSkg
PT0gLTEpIHsKKyAgICAgICAgaWYgKHdyaXRlVG9GaWxlKGZkLCBkYXRhLCBzaXplKSA9PSAtMSkg
ewogICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcAppbmRleCAyZjQ4OTM4NzUxMTQ5OTMzNmZjNjAwMWY2MTFhZjBlYWI1Yjlj
N2Y3Li41Y2M0NzRjNTNlNTQxY2E3MTZkM2VhOGE1ODk5YTUwNDcyNDAyMDZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTM2
Niw3ICszNjYsNyBAQCBWZWN0b3I8dWludDhfdD4gSWNvbkRhdGFiYXNlOjppY29uRGF0YShpbnQ2
NF90IGljb25JRCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDY0
X3Q+IEljb25EYXRhYmFzZTo6YWRkSWNvbihjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFZl
Y3RvcjxjaGFyPiYgaWNvbkRhdGEpCitzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IEljb25EYXRhYmFz
ZTo6YWRkSWNvbihjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aWNvbkRhdGEpCiB7CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogICAgIEFTU0VSVCht
X2RiLmlzT3BlbigpKTsKQEAgLTYwNiw3ICs2MDYsNyBAQCBTdHJpbmcgSWNvbkRhdGFiYXNlOjpp
Y29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCiAgICAgcmV0dXJuIG1fcGFn
ZVVSTFRvSWNvblVSTE1hcC5nZXQocGFnZVVSTCk7CiB9CiAKLXZvaWQgSWNvbkRhdGFiYXNlOjpz
ZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGljb25EYXRhLCBzaXplX3QgaWNvbkRhdGFTaXplLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkws
IEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEljb25EYXRhYmFzZTo6c2V0
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1aW50OF90KiBpY29u
RGF0YSwgc2l6ZV90IGljb25EYXRhU2l6ZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0Rh
dGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OwogCkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhcioKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBkYXRhIHsgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oaWNvbkRhdGEpLCBpY29uRGF0YVNpemUgfTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSB7IGljb25EYXRhLCBpY29uRGF0YVNpemUgfTsKICAgICBtX3dvcmtRdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWNvblVSTCA9
IGljb25VUkwuaXNvbGF0ZWRDb3B5KCksIGljb25EYXRhID0gV1RGTW92ZShkYXRhKSwgcGFnZVVS
TCA9IHBhZ2VVUkwuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7CiAgICAgICAgIGlmIChtX2RiLmlzT3BlbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCmluZGV4IDBlN2JjYzdlYzYzZGYyNTI3MmZj
YzUxMzg2MWZjYjk4MWM4NGVjNzMuLmQwMjFlMmNkOTBkM2NlOTM5Y2ZlNDQzODFlNmVmMDJjZjJj
NjdjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrSWNvblVSTEFu
ZFNldFBhZ2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYg
cGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2ws
IGJvb2wpPiYmKTsKICAgICB2b2lkIGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBB
bGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UGxhdGZv
cm1JbWFnZVB0ciYmKT4mJik7CiAgICAgU3RyaW5nIGljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYpOwotICAgIHZvaWQgc2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJM
LCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFs
bG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAg
dm9pZCBzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6CkBAIC02Miw3ICs2Miw3IEBAIHByaXZh
dGU6CiAgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBpY29uSURGb3JJY29uVVJMKGNvbnN0IFN0
cmluZyYsIGJvb2wmIGV4cGlyZWQpOwogICAgIGJvb2wgc2V0SWNvbklERm9yUGFnZVVSTChpbnQ2
NF90LCBjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8dWludDhfdD4gaWNvbkRhdGEoaW50NjRf
dCk7Ci0gICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBhZGRJY29uKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxjaGFyPiYpOworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gYWRkSWNvbihj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKICAgICB2b2lkIHVwZGF0ZUlj
b25UaW1lc3RhbXAoaW50NjRfdCBpY29uSUQsIGludDY0X3QgdGltZXN0YW1wKTsKICAgICB2b2lk
IGRlbGV0ZUljb24oaW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDAy
YmM3MTZiYjU3ZDJmNThmMjhkNTllNTg4MGM3YjI0YTEwMGIwNjAuLmY3ZDcyM2M2M2JmYzYyYWM1
N2FhYTAzNWFmMmVjNThkZGYxMjRmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAt
MTI2LDcgKzEyNiw3IEBAIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6cGFyc2VXZWJWVFRD
dWVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBBU1NFUlQoY2xp
ZW50KCkpOwogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKLSAgICAgICAg
Y2xpZW50LT5wYXJzZVdlYlZUVEN1ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGNsaWVudC0+cGFyc2VXZWJWVFRD
dWVEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZTo6cGFyc2VXZWJWVFRDdWVEYXRhU3RydWN0KElTT1dlYlZUVEN1ZSYmIGN1ZURh
dGEpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGRE
YXRhQ3VlKE1lZGlhVGltZSYmIHN0YXJ0LCBNZWRpYVRpbWUmJiBlbmQsIElQQzoKIHsKICAgICBB
U1NFUlQoY2xpZW50KCkpOwogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkK
LSAgICAgICAgY2xpZW50LT5hZGREYXRhQ3VlKFdURk1vdmUoc3RhcnQpLCBXVEZNb3ZlKGVuZCks
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
OworICAgICAgICBjbGllbnQtPmFkZERhdGFDdWUoV1RGTW92ZShzdGFydCksIFdURk1vdmUoZW5k
KSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZB
TFVFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCA3ODQxYThmM2I2OTZhY2Q1ZDFhOTI0MGQ3ZDFiNTEzZWI5YWM2
OTMzLi5kZDU2ZTc0ZWVlZGNjYTMwMzAyNmMyOTUzM2FmODNhNjk3N2UxNmI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gV2ViU29ja2V0Q2hhbm5l
bDo6Y3JlYXRlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBybwogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlNvY2tldENoYW5uZWwod2ViUGFnZVByb3h5SUQsIGRvY3VtZW50LCBj
bGllbnQpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpub3RpZnlTZW5kRnJhbWUoV2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6Om5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBXZWJTb2NrZXRGcmFtZSBmcmFtZShvcENvZGUsIHRydWUsIGZhbHNlLCB0cnVlLCBkYXRh
LCBsZW5ndGgpOwogICAgIG1faW5zcGVjdG9yLmRpZFNlbmRXZWJTb2NrZXRGcmFtZShtX2RvY3Vt
ZW50LmdldCgpLCBmcmFtZSk7CkBAIC01NiwxMCArNTYsMTAgQEAgdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0
IGNoYXIKIE5ldHdvcmtTZW5kUXVldWUgV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1
ZXVlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbCYgY2hhbm5lbCkKIHsKICAg
ICByZXR1cm4geyBkb2N1bWVudCwgWyZjaGFubmVsXShhdXRvJiB1dGY4U3RyaW5nKSB7Ci0gICAg
ICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29k
ZVRleHQsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAg
Y2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4
dCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1
dGY4U3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdl
czo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0
ZjhTdHJpbmcubGVuZ3RoKCkgfSB9LCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKICAgICB9LCBbJmNo
YW5uZWxdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKSB7Ci0gICAgICAg
IGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJp
bmFyeSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGJ5dGVMZW5ndGgpOwor
ICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpP
cENvZGVCaW5hcnksIGRhdGEsIGJ5dGVMZW5ndGgpOwogICAgICAgICBjaGFubmVsLnNlbmRNZXNz
YWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFS
ZWZlcmVuY2UgeyBkYXRhLCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CiAgICAgfSwgWyZj
aGFubmVsXShFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUpIHsKICAgICAgICAgYXV0byBjb2Rl
ID0gc3RhdGljX2Nhc3Q8aW50PihleGNlcHRpb25Db2RlKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENvbm5lY3QoU3RyaW5nJiYgc3VicHJvdG9jb2wsIFN0
cmluZyYmIGV4dGVuc2lvbnMpCiAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKIH0KIAotc3Rh
dGljIGlubGluZSBXZWJTb2NrZXRGcmFtZSBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3Bl
Y3Rvcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJTb2NrZXRGcmFtZTo6T3BD
b2RlIG9wQ29kZSkKK3N0YXRpYyBpbmxpbmUgV2ViU29ja2V0RnJhbWUgY3JlYXRlV2ViU29ja2V0
RnJhbWVGb3JXZWJJbnNwZWN0b3IoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
V2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUpCiB7CiAgICAgLy8gVGhpcyBpcyBhbiBhcHBy
b3hpbWF0aW9uIHNpbmNlIGZyYW1lcyBjYW4gYmUgbWVyZ2VkIG9uIGEgc2luZ2xlIG1lc3NhZ2Uu
CiAgICAgV2ViU29ja2V0RnJhbWUgZnJhbWU7CkBAIC0yOTQsNyArMjk0LDggQEAgdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlVGV4dChTdHJpbmcmJiBtZXNzYWdlKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9pbnNwZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1l
KG1fZG9jdW1lbnQuZ2V0KCksIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKG1l
c3NhZ2UudXRmOCgpLmRhdGEoKSwgbWVzc2FnZS51dGY4KCkubGVuZ3RoKCksIFdlYlNvY2tldEZy
YW1lOjpPcENvZGU6Ok9wQ29kZVRleHQpKTsKKyAgICBhdXRvIHV0ZjhNZXNzYWdlID0gbWVzc2Fn
ZS51dGY4KCk7CisgICAgbV9pbnNwZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9j
dW1lbnQuZ2V0KCksIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhNZXNzYWdlLmRhdGEoKSksIHV0ZjhNZXNzYWdl
Lmxlbmd0aCgpLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0KSk7CiAKICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiB9CkBAIC0zMTUsNyArMzE2LDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShJUEM6OkRhdGFS
ZWZlcmVuY2UmJiBkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbnNwZWN0
b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNyZWF0ZVdlYlNv
Y2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEuZGF0YSgpKSwgZGF0YS5zaXplKCksIFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJp
bmFyeSkpOworICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3Vt
ZW50LmdldCgpLCBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3RvcihkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCksIFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSkpOwog
CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKGRhdGEudmVjdG9yKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hh
bm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5oCmluZGV4IDA5NGJhZjYxZjU0NDNiZjNlOWIyNmU5NTRmYWU4ZDY1NGMwZGU1ZDQuLjcyNDE3
ZTIzMjYyNDEyN2NjNWRhZWQzNDUxNzZkZmEzYTFmNGQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTc3LDcgKzc3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkg
ZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgdm9pZCBub3RpZnlTZW5kRnJhbWUoV2ViQ29y
ZTo6V2ViU29ja2V0RnJhbWU6Ok9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCk7CisgICAgdm9pZCBub3RpZnlTZW5kRnJhbWUoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6Ok9w
Q29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CiAgICAgdm9pZCBsb2dF
cnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBNZXNzYWdlIHJlY2VpdmVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVh
bS5jcHAKaW5kZXggM2I0YWMyOWIwZGY3NjVjMjQ5Zjc3MjU3MWY0OTQ2NmM1ODllNzFhOC4uMDVi
NGQ3NTkyNzYyODIyNmViNDA0NjhlODUxZDAzMjZhOTVhM2I1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC0xNjQs
NyArMTY0LDcgQEAgdm9pZCBXZWJTb2NrZXRTdHJlYW06OmRpZENsb3NlU29ja2V0U3RyZWFtKCkK
IAogdm9pZCBXZWJTb2NrZXRTdHJlYW06OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29j
a2V0U3RyZWFtRGF0YSgqdGhpcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVh
bURhdGEoKnRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgV2ViU29j
a2V0U3RyZWFtOjpkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92
ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKaW5kZXggNjlmMGFlODI3OTUwN2I3Mjk2NWY2NWMyMTY4
NzNjNDgxYWRmNGQ2MC4uNDY2OTM5ZWYxODdiNGE1MGY3MzIwZWRmMmM2MTZjMmNkY2ZmNTQ5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBh
c3RlYm9hcmRPdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcApAQCAtOTcsMTYgKzk3LDQgQEAg
Ym9vbCBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpnZXREYXRhRm9yT3ZlcnJpZGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzOjpnZXREYXRhRm9yT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIGNvbnN0
Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGZvdW5kQnVmZmVyOwotICAgIGlmICghZ2V0RGF0YUZv
ck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBmb3VuZEJ1ZmZlcikpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGRhdGEucmVzaXplKGZvdW5kQnVmZmVyLnNpemUoKSk7Ci0gICAg
bWVtY3B5KGRhdGEuZGF0YSgpLCBmb3VuZEJ1ZmZlci5kYXRhKCksIGZvdW5kQnVmZmVyLnNpemUo
KSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuaAppbmRleCBlYzA5MzNlNTEyNWU3OTYwNDRjYjgyYzM4
YjI0YzViMjJlZGViNmM3Li5hODY3N2ZlNTZmZDlhYzExYzI0OWNhYThkZmY4ODA1MzBiMDNhZTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGFzdGVib2FyZE92ZXJyaWRlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmgKQEAgLTQzLDcgKzQzLDYgQEAgcHVi
bGljOgogICAgIFZlY3RvcjxTdHJpbmc+IG92ZXJyaWRkZW5UeXBlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKIAogICAgIGJvb2wgZ2V0RGF0YUZvck92ZXJyaWRlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgVmVjdG9yPHVpbnQ4X3Q+Jikg
Y29uc3Q7Ci0gICAgYm9vbCBnZXREYXRhRm9yT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBWZWN0b3I8Y2hhcj4mKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDIwZTFjZWRiODk3NWRiNjQwMWY0YzE0
MTFkZWZhMWRkOTI5OWM1OGEuLmYwMDFhNmNjZmFkMmRlOGY0ZGIwNWI4MTVlMWUxN2I1Mzg5M2Y2
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC03NjA5LDcgKzc2MDksNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5k
U2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAo
IXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50
LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzaGFyZWRNZW1vcnkt
PmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGln
aGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1bWVudC0+
YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2hhcmVkTWVtb3J5
LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hp
Z2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKICAgICAgICAgaSsrOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZO
ZXQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5k
ZXggMWQyNzAyYWRiMDgyNzdjNDQ1MDhkM2RmYmRjNDI3OTg2ZGNmYzIyZi4uYmVmNjM5ZjU3NDY5
NjVjZTZhNWU1ODhjYzVhYzNiNDViODM3OWY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTE2MCwxNCArMTYwLDE0IEBAIEhSRVNVTFQgV2Vi
RG93bmxvYWQ6OmluaXRUb1Jlc3VtZVdpdGhCdW5kbGUoX0luXyBCU1RSIGJ1bmRsZVBhdGgsIF9J
bl9vcHRfIElXZWJECiB7CiAgICAgTE9HKERvd25sb2FkLCAiQXR0ZW1wdGluZyByZXN1bWUgb2Yg
ZG93bmxvYWQgYnVuZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5k
bGVQYXRoKSkuYXNjaWkoKS5kYXRhKCkpOwogCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKKyAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgIGlmICghRG93bmxvYWRCdW5kbGU6OmV4dHJh
Y3RSZXN1bWVEYXRhKFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkp
LCBidWZmZXIpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgLy8gSXQgaXMgcG9zc2li
bGUgYnkgc29tZSB0d2lzdCBvZiBmYXRlIHRoZSBidW5kbGUgbWFnaWMgbnVtYmVyIHdhcyBuYXR1
cmFsbHkgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBhbmQgaXRzIG5vdCBhY3R1YWxseSBhIHZhbGlk
IGJ1bmRsZS4KICAgICAvLyBUaGF0LCBvciBzb21lb25lIGVuZ2luZWVyZWQgaXQgdGhhdCB3YXkg
dG8gdHJ5IHRvIGF0dGFjayB1cy4gSW4gdGhhdCBjYXVzZSwgdGhpcyBDRkRhdGEgd2lsbCBzdWNj
ZXNzZnVsbHkgY3JlYXRlIGJ1dCB3aGVuIHdlIGFjdHVhbGx5CiAgICAgLy8gdHJ5IHRvIHN0YXJ0
IHRoZSBDRlVSTERvd25sb2FkIHVzaW5nIHRoaXMgYm9ndXMgZGF0YSwgaXQgd2lsbCBmYWlsIGFu
ZCB3ZSB3aWxsIGhhbmRsZSB0aGF0IGdyYWNlZnVsbHkuCi0gICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSkpOworICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IHJlc3VtZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCBidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSk7CiAKICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJs
ZVVSTFJlcXVlc3QuY3BwCmluZGV4IGZjNzNiZjI4Y2FlZDA2MDY4MjQ0ODA1MGRjMWM2ZjhjNGEz
NDk5YWMuLjVjOTEyNTc3MjUyNjllYmIzNDI1MDNjYzcxMDMxOTRjMzExNWU1ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKQEAgLTI5
OCw3ICsyOTgsNyBAQCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRIVFRQQm9keShf
SW5fb3B0XyBJU3RyZWFtKiBkYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgc2l6
ZV90IGxlbmd0aCA9IHN0YXQuY2JTaXplLkxvd1BhcnQ7Ci0gICAgVmVjdG9yPGNoYXI+IHZlY3Rv
cihsZW5ndGgpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IobGVuZ3RoKTsKICAgICBVTE9O
RyBieXRlc1JlYWQgPSAwOwogICAgIGlmIChGQUlMRUQoZGF0YS0+UmVhZCh2ZWN0b3IuZGF0YSgp
LCBzdGF0LmNiU2l6ZS5Mb3dQYXJ0LCAmYnl0ZXNSZWFkKSkpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGY2ZDViNTZlYmU3OWRmZTM0
MDM5YjdiNWQzOWY5NWRmMTg4NDExYTcuLmVjZTg0ZjhlNWU1M2I3MzlhYTM4Nzk3ZWU1OWZkODUw
Njk2NTE2Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0zMTIsOCArMzEy
LDggQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QXVkaW9SZXN1bHRDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3QKICAgICBKU0M6OkpTQXJyYXlCdWZmZXJWaWV3
KiBqc0J1ZmZlclZpZXcgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU0FycmF5QnVmZmVyVmll
dyo+KHZtLCB0b0pTKHRvSlMoY29udGV4dCksIGFyZ3VtZW50c1swXSkpOwogICAgIEFTU0VSVChq
c0J1ZmZlclZpZXcpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmll
dyA9IGpzQnVmZmVyVmlldy0+dW5zaGFyZWRJbXBsKCk7Ci0gICAgY29uc3QgY2hhciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpOwot
ICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGF1ZGlvRGF0YShidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZp
ZXctPmJ5dGVMZW5ndGgoKSk7CisgICAgY29uc3QgdWludDhfdCogYnVmZmVyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpOworICAgIHN0ZDo6
dmVjdG9yPHVpbnQ4X3Q+IGF1ZGlvRGF0YShidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZpZXctPmJ5
dGVMZW5ndGgoKSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8
VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CiAgICAgY29udHJv
bGxlci0+c2V0QXVkaW9SZXN1bHQoYXVkaW9EYXRhKTsKQEAgLTIzNjcsOCArMjM2Nyw4IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXNNZWRpYUljb24oSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTVmFsdWVSZWYgbWVkCiAgICAgSlNDOjpKU0FycmF5QnVmZmVyVmlldyoganNCdWZm
ZXJWaWV3ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwg
dG9KUyh0b0pTKGNvbnRleHQpLCBtZWRpYUljb24pKTsKICAgICBBU1NFUlQoanNCdWZmZXJWaWV3
KTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IGJ1ZmZlclZpZXcgPSBqc0J1ZmZl
clZpZXctPnVuc2hhcmVkSW1wbCgpOwotICAgIGNvbnN0IGNoYXIqIGJ1ZmZlciA9IHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygpKTsKLSAgICBzdGQ6OnZl
Y3RvcjxjaGFyPiBtZWRpYUljb25EYXRhKGJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmlldy0+Ynl0
ZUxlbmd0aCgpKTsKKyAgICBjb25zdCB1aW50OF90KiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oYnVmZmVyVmlldy0+YmFzZUFkZHJlc3MoKSk7CisgICAgc3RkOjp2ZWN0b3I8
dWludDhfdD4gbWVkaWFJY29uRGF0YShidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZpZXctPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgCiAgICAgbV9vcGVuUGFuZWxGaWxlc01lZGlhSWNvbiA9IG1lZGlhSWNv
bkRhdGE7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKaW5kZXggM2UwYTY3N2UwODc0NjIx
YWI1NDg2ODYzZDEyZTQ3ODhjZjU2ZWU1Zi4uMmUwNDk0ZTMwZjNmMGIzYTc0MjJlZTc1OTNmN2U3
ZjNkNjU3ZDBjOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaApAQCAtMjk5LDggKzI5OSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFVSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGVzdFVSTDsgfQogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFz
aCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0ZWRQaXhlbEhhc2g7IH0KIAotICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPGNoYXI+JiBhdWRpb1Jlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9SZXN1
bHQ7IH0KLSAgICB2b2lkIHNldEF1ZGlvUmVzdWx0KGNvbnN0IHN0ZDo6dmVjdG9yPGNoYXI+JiBh
dWRpb0RhdGEpIHsgbV9hdWRpb1Jlc3VsdCA9IGF1ZGlvRGF0YTsgfQorICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHVpbnQ4X3Q+JiBhdWRpb1Jlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9SZXN1
bHQ7IH0KKyAgICB2b2lkIHNldEF1ZGlvUmVzdWx0KGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+
JiBhdWRpb0RhdGEpIHsgbV9hdWRpb1Jlc3VsdCA9IGF1ZGlvRGF0YTsgfQogCiAgICAgdm9pZCBh
ZGRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpT
U3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgdm9pZCByZW1vdmVPcmln
aW5BY2Nlc3NBbGxvd0xpc3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5n
UmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9v
bCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC0zNzcsNyArMzc3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0T3BlblBhbmVsRmlsZXMoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y2hhcj4m
IG9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKCkgY29uc3QgeyByZXR1cm4gbV9vcGVuUGFuZWxGaWxl
c01lZGlhSWNvbjsgfQorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBvcGVuUGFuZWxG
aWxlc01lZGlhSWNvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb247
IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZik7CiAjZW5kaWYKIApAQCAtNDY4LDcgKzQ2OCw3IEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpzZXQ8c3RkOjpzdHJpbmc+IG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzOwogICAgIHN0
ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtX2FsbG93ZWRIb3N0czsKIAotICAgIHN0ZDo6dmVjdG9yPGNo
YXI+IG1fYXVkaW9SZXN1bHQ7CisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gbV9hdWRpb1Jlc3Vs
dDsKIAogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbV9VUkxzVG9SZWRp
cmVjdDsKIApAQCAtNDgyLDcgKzQ4Miw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gbV9vcGVuUGFuZWxGaWxlczsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIHN0ZDo6dmVjdG9yPGNoYXI+IG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb247CisgICAgc3Rk
Ojp2ZWN0b3I8dWludDhfdD4gbV9vcGVuUGFuZWxGaWxlc01lZGlhSWNvbjsKICNlbmRpZgogCiAg
ICAgc3RhdGljIEpTUmV0YWluUHRyPEpTQ2xhc3NSZWY+IGNyZWF0ZUpTQ2xhc3MoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KaW5kZXggYmJhNTNiZGJmOTRlMTliM2Y3NTcw
MGVjYWJhYTFjODdlZjRmYzJkOC4uMjdmMjYxNDQ1ZTJlZmVkOTNhN2I1NTNiZWFkMDNlNGU0OTU0
ZTg3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KQEAgLTM5Niw3ICsz
OTYsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgcnVuT3BlblBhbmVsRm9y
RmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjooaQogICAgIGF1dG8mIGljb25EYXRhID0gZ1Rl
c3RSdW5uZXItPm9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKCk7CiAgICAgQ0dJbWFnZVJlZiBpbWFn
ZVJlZiA9IG51bGxwdHI7CiAgICAgaWYgKCFpY29uRGF0YS5lbXB0eSgpKSB7Ci0gICAgICAgIGF1
dG8gZGF0YVJlZiA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihpY29uRGF0YS5kYXRhKCkpLCBpY29uRGF0YS5zaXplKCkpKTsKKyAg
ICAgICAgYXV0byBkYXRhUmVmID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgaWNvbkRh
dGEuZGF0YSgpLCBpY29uRGF0YS5zaXplKCkpKTsKICAgICAgICAgYXV0byBpbWFnZVByb3ZpZGVy
UmVmID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YVJlZi5nZXQo
KSkpOwogICAgICAgICBpbWFnZVJlZiA9IENHSW1hZ2VDcmVhdGVXaXRoSlBFR0RhdGFQcm92aWRl
cihpbWFnZVByb3ZpZGVyUmVmLmdldCgpLCBudWxscHRyLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KTsKICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="452203"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430664</attachid>
            <date>2021-06-05 16:43:22 -0700</date>
            <delta_ts>2021-06-05 17:49:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226688-20210605164322.patch</filename>
            <type>text/plain</type>
            <size>125273</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjViYzlhNjk5MTRjZTRh
Y2JjNmIwZDQ2NzdjNzVjMjYwNzY4OGMwYS4uODk5YTAxY2IwMjlmMjJiYjczMzc4YzUyN2RlZGM3
YjJmNjcxNDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wNi0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhf
dCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkgdG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNo
YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFN0cmVhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6
OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6
cGFyc2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRGcmFtZVBheWxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6OldlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaW1JbnB1
dFNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2
ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFk
U3RhdHVzTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRI
VFRQSGVhZGVycyk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9TZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
Ojp3cml0ZUFsbFRvRmlsZSk6CisgICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogY3J5
cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRNYXN0ZXJLZXkpOgorICAgICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZEJ5dGVzKToKKyAgICAgICAgKiBkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGRvbS9SYXdEYXRhRG9jdW1l
bnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAqIGh0
bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFj
ay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6ZmlsZUZpbmlzaGVkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1
bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltSW5wdXRTYW1wbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VIVFRQSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJl
cXVlc3RCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpkYXRhQ2hhbmdlZCk6CisKIDIwMjEtMDYtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBJbmxpbmVUZXh0Qm94IHRvIExlZ2FjeUlubGluZVRl
eHRCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNDkyOWU2M2M1NGVhN2I1NjVkM2RmMDQ3ZjFlYTA1MTdiNWY1NGIw
ZC4uYzNkYjA5NjdiNDUyZTk0ZTIzZDcwNWJhMTQ1NjgxOWM2M2QyYjMyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0wNi0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhfdCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkg
dG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRD
dWVEYXRhKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2Vi
VlRUQ3VlRGF0YSk6CisKIDIwMjEtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBPcHRpbWl6ZSBhIGZldyBjYWxsIHNpdGVzIGNyZWF0aW5nIFNoYXJlZEJ1
ZmZlciBvYmplY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oCmluZGV4IGRi
Nzg2ZDMyOTg1NjZjNGIwYmE3NzM5ODIzMDI5Zjg1NTYyMTc3MDMuLjViZTVhY2JiYTIzYzI0ODdj
ODNlN2EyNTI5ZGQ2NmNkYWY2MTY5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
U29ja2V0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVj
dGlvbi5oCkBAIC01OSw5ICs1OSw5IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHU29ja2V0Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIGNvbnN0IE1lc3NhZ2VIYW5kbGVycyYgbV9tZXNz
YWdlSGFuZGxlcnM7CiAgICAgZ3BvaW50ZXIgbV91c2VyRGF0YTsKLSAgICBWZWN0b3I8Y2hhcj4g
bV9yZWFkQnVmZmVyOworICAgIFZlY3RvcjxnY2hhcj4gbV9yZWFkQnVmZmVyOwogICAgIEdTb2Nr
ZXRNb25pdG9yIG1fcmVhZE1vbml0b3I7Ci0gICAgVmVjdG9yPGNoYXI+IG1fd3JpdGVCdWZmZXI7
CisgICAgVmVjdG9yPGdjaGFyPiBtX3dyaXRlQnVmZmVyOwogICAgIEdTb2NrZXRNb25pdG9yIG1f
d3JpdGVNb25pdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcAppbmRleCAxMGY4OGIxODhhMTYxZDgxZDYzMTdjMmY4YTQ2NWI1ZDgxNTk2YWI4Li4yNWY3
NmE1OTQyMTljOTYzZmMzMzY1YWEzNWI1Y2YyNThlNDQzNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0
YS0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1
bmstPnNpemUpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEs
IGNodW5rLT5zaXplKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBX
VEZNb3ZlKGRhdGEpKTsKICAgICAgICAgICAgIH0pOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQg
RE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJl
c3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRv
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNp
emUpOworICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSwgY2h1bmstPnNp
emUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCmluZGV4IDg4YTY3ZTM1NTRhYTQ4Y2MyM2IyMmM1MjEwNmNhZmMxODlmMWU5N2EuLjJh
YjBjYWYxMDBkMGMzMTM4YzJiNjI2NDNkNzNiMjFlYzZiZTllYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzYsNyAr
Mjc2LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICBkYXRhLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2h1bmstPmRh
dGEpLCBjaHVuay0+c2l6ZSk7CisgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5k
YXRhLCBjaHVuay0+c2l6ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YS0+ZGF0YSgpKSwgZGF0
YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiB7CiAgICAgaWYgKG1f
c291cmNlKSB7CiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoZGF0YSwgc2l6ZSkpOwpAQCAtMzM0LDExICszMzQsNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICBtX2J1ZmZl
ci0+YXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKLXsKLSAgICBhcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwotfQotCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIHJl
dHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAzN2QwNTRiMTBjZThkYmVkMTkxYzdiODVmODgx
ZGVlNDZlMDRiMGQyLi4xYjYyNzY2M2JkZDJhNTkwOWNlMWVjM2VmN2E5ODJiMjQ5ZDc1Y2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CkBAIC00Niw4ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1
bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9i
dWZmZXI7IH0KICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHAKaW5kZXggYjM5Nzg2OTVmZDdlZjE5MjE0YjZiOTAxYThmM2YxYTk2ZWUw
ZTBlYy4uZGUxM2MxNzRkMzAzMDk2ZmZlM2NiY2UwNDYwOWNjMjk0ZDBlZjUyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShj
b25zdCB3ZWJydGM6OkRhdGFCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9jbGllbnRMb2NrIH07CiAgICAgaWYgKCFtX2NsaWVudCkgewotICAgICAgICBjb25zdCBjaGFy
KiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEuZGF0YTxj
aGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci5kYXRhLmRhdGE8dWludDhfdD4o
KTsKICAgICAgICAgaWYgKGJ1ZmZlci5iaW5hcnkpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkTWVz
c2FnZXMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ1ZmZlci5zaXplKCkpKTsK
ICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDczZTEwNTAxOGQ4YTI2N2NhYmQ0MmY1MzFi
ZmY4NGU0MDM0ZTUwMWMuLmY4OTQ2MDg3N2RiZmYyMDZjMmViNGY3ZDYzZDI5NzJkZmYwYWE4NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVz
cwogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5l
bDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXIgJXAgYnl0ZU9mZnNldD0ldSBieXRl
TGVuZ3RoPSV1IiwgdGhpcywgJmJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwot
ICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxl
bmd0aCk7CisgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnks
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zm
c2V0LCBieXRlTGVuZ3RoKTsKICAgICBwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7CiAgICAg
cmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KQEAgLTE3
MCw5ICsxNzAsOSBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKEJsb2ImIGJpbmFyeURhdGEpCiAgICAgcmV0dXJuIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KIAotYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitib29sIFdlYlNvY2tldENo
YW5uZWw6OnNlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgY2hhciogZGF0YT0l
cCBsZW5ndGg9JWQiLCB0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBzZW5kKCkgU2VuZGluZyB1aW50OF90KiBkYXRhPSVwIGxlbmd0aD0l
ZCIsIHRoaXMsIGRhdGEsIGxlbmd0aCk7CiAgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGVCaW5hcnksIGRhdGEsIGxlbmd0aCk7CiAgICAgcHJvY2Vzc091dGdvaW5nRnJh
bWVRdWV1ZSgpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBo
YW5kbGUpCiAgICAgZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNl
aXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2
ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCkgUmVjZWl2ZWQgJXp1IGJ5dGVz
IiwgdGhpcywgbGVuZ3RoKTsKICAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxs
eSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsKEV4Y2VwdGlvbkNvZGUgZXJyb3JDb2RlKQogICAgIGRl
cmVmKCk7CiB9CiAKLWJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbikKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9C
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbikKIHsKICAgICBzaXplX3QgbmV3
QnVmZmVyU2l6ZSA9IG1fYnVmZmVyLnNpemUoKSArIGxlbjsKICAgICBpZiAobmV3QnVmZmVyU2l6
ZSA8IG1fYnVmZmVyLnNpemUoKSkgewpAQCAtNDg4LDE0ICs0ODgsMTQgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKIAotICAgIFZl
Y3RvcjxjaGFyPiBidWY7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZjsKICAgICBpZiAoIW1fcmVj
ZWl2ZWRDbG9zaW5nSGFuZHNoYWtlICYmIGNvZGUgIT0gQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZp
ZWQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0ZSA9IGNvZGUgPj4gODsKLSAgICAg
ICAgdW5zaWduZWQgY2hhciBsb3dCeXRlID0gY29kZTsKLSAgICAgICAgYnVmLmFwcGVuZChzdGF0
aWNfY2FzdDxjaGFyPihoaWdoQnl0ZSkpOwotICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0
PGNoYXI+KGxvd0J5dGUpKTsKKyAgICAgICAgdWludDhfdCBoaWdoQnl0ZSA9IGNvZGUgPj4gODsK
KyAgICAgICAgdWludDhfdCBsb3dCeXRlID0gY29kZTsKKyAgICAgICAgYnVmLmFwcGVuZChoaWdo
Qnl0ZSk7CisgICAgICAgIGJ1Zi5hcHBlbmQobG93Qnl0ZSk7CiAgICAgICAgIGF1dG8gcmVhc29u
VVRGOCA9IHJlYXNvbi51dGY4KCk7Ci0gICAgICAgIGJ1Zi5hcHBlbmQocmVhc29uVVRGOC5kYXRh
KCksIHJlYXNvblVURjgubGVuZ3RoKCkpOworICAgICAgICBidWYuYXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlYXNvblVURjguZGF0YSgpKSwgcmVhc29uVVRGOC5sZW5n
dGgoKSk7CiAgICAgfQogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2Rl
Q2xvc2UsIGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOwogICAgIFJlZjxXZWJTb2NrZXRDaGFubmVs
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFu
ZHNoYWtlIG1heSBmYWlsLCB3aGljaCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRl
cmVmZXJlbmNlZC4KQEAgLTUyNCw3ICs1MjQsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnBy
b2Nlc3NGcmFtZSgpCiAgICAgQVNTRVJUKCFtX2J1ZmZlci5pc0VtcHR5KCkpOwogCiAgICAgV2Vi
U29ja2V0RnJhbWUgZnJhbWU7Ci0gICAgY29uc3QgY2hhciogZnJhbWVFbmQ7CisgICAgY29uc3Qg
dWludDhfdCogZnJhbWVFbmQ7CiAgICAgU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIFdlYlNvY2tl
dEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IHJlc3VsdCA9IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZy
YW1lKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpLCBmcmFtZSwgZnJhbWVFbmQsIGVy
cm9yU3RyaW5nKTsKICAgICBpZiAocmVzdWx0ID09IFdlYlNvY2tldEZyYW1lOjpGcmFtZUluY29t
cGxldGUpCkBAIC02NTYsOCArNjU2LDggQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNz
RnJhbWUoKQogICAgICAgICAgICAgZmFpbCgiUmVjZWl2ZWQgYSBicm9rZW4gY2xvc2UgZnJhbWUg
Y29udGFpbmluZyBhbiBpbnZhbGlkIHNpemUgYm9keS4iKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5
dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihmcmFtZS5wYXlsb2FkWzBdKTsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgbG93Qnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGZyYW1lLnBheWxvYWRbMV0pOworICAgICAgICAgICAgYXV0byBoaWdoQnl0ZSA9IGZyYW1lLnBh
eWxvYWRbMF07CisgICAgICAgICAgICBhdXRvIGxvd0J5dGUgPSBmcmFtZS5wYXlsb2FkWzFdOwog
ICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IGhpZ2hCeXRlIDw8IDggfCBsb3dCeXRlOwog
ICAgICAgICAgICAgaWYgKG1fY2xvc2VFdmVudENvZGUgPT0gQ2xvc2VFdmVudENvZGVOb1N0YXR1
c1JjdmQgfHwgbV9jbG9zZUV2ZW50Q29kZSA9PSBDbG9zZUV2ZW50Q29kZUFibm9ybWFsQ2xvc3Vy
ZSB8fCBtX2Nsb3NlRXZlbnRDb2RlID09IENsb3NlRXZlbnRDb2RlVExTSGFuZHNoYWtlKSB7CiAg
ICAgICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IENsb3NlRXZlbnRDb2RlQWJub3JtYWxD
bG9zdXJlOwpAQCAtNzE0LDcgKzcxNCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1
ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgbV9vdXRnb2luZ0ZyYW1lUXVl
dWUuYXBwZW5kKFdURk1vdmUoZnJhbWUpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpl
bnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVl
UmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1
ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKICAgICBhdXRvIGZyYW1lID0gbWFr
ZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICBhdXRvIGZyYW1l
ID0gbV9vdXRnb2luZ0ZyYW1lUXVldWUudGFrZUZpcnN0KCk7CiAgICAgICAgIHN3aXRjaCAoZnJh
bWUtPmZyYW1lVHlwZSkgewogICAgICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZVN0cmluZzogewot
ICAgICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmRh
dGEoKSwgZnJhbWUtPnN0cmluZ0RhdGEubGVuZ3RoKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIHNlbmRGcmFtZShm
cmFtZS0+b3BDb2RlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZS0+c3Ry
aW5nRGF0YS5kYXRhKCkpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAgICAgICAg
ICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNl
bmQgV2ViU29ja2V0IGZyYW1lLiIpOwogICAgICAgICAgICAgfSk7CkBAIC03ODAsNyArNzgwLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAg
ICAgICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IG1fYmxvYkxvYWRlci0+
YXJyYXlCdWZmZXJSZXN1bHQoKTsKICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBudWxs
cHRyOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9IEJsb2JMb2FkZXJOb3RT
dGFydGVkOwotICAgICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2Vzcykgewor
ICAgICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBmYWls
KCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWUuIik7CiAgICAgICAgICAgICAgICAgfSk7
CkBAIC04MTMsNyArODEzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjphYm9ydE91dGdvaW5n
RnJhbWVRdWV1ZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2Rl
IG9wQ29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdURjo6RnVu
Y3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faGFu
ZGxlKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKQEAgLTgyNyw3ICs4MjcsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29k
ZSwgY29uc3QgY2hhciogZGF0YQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBmcmFtZURhdGE7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGZyYW1lRGF0YTsKICAgICBmcmFtZS5tYWtlRnJhbWVEYXRhKGZyYW1lRGF0YSk7CiAK
ICAgICBtX2hhbmRsZS0+c2VuZERhdGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRhLnNpemUo
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggYTQ2MmUzZTA4ZTA5
Mjc5ODcwMWUzN2IxYmM0MjEyZDE4NjlhMzE4MC4uMGQwZWQyNmZmNWYxY2YwYzAzNjRlMmY5MmVk
MjM2NjA2YTZlMTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdl
YlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCwgU29ja2V0UHJvdmlkZXImIHByb3ZpZGVyKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldENoYW5uZWwoZG9jdW1lbnQsIGNsaWVudCwg
cHJvdmlkZXIpKTsgfQogICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKIAotICAgIGJv
b2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICBib29sIHNlbmQoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAvLyBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbCBmdW5jdGlvbnMuCiAgICAgQ29ubmVjdFN0YXR1cyBjb25uZWN0KGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOwpAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IGZ1bmN0aW9ucy4KICAgICB2b2lk
IGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0
IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEoU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5k
bGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVh
bUhhbmRsZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
U29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9y
JikgZmluYWw7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZlRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVy
ZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCi0g
ICAgYm9vbCBhcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKTsKKyAg
ICBib29sIGFwcGVuZFRvQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW4pOwog
ICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsKICAgICBib29sIHByb2Nlc3NCdWZmZXIo
KTsKICAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoKTsKQEAgLTE2MCwxMSArMTYwLDExIEBAIHBy
aXZhdGU6CiAgICAgICAgIFF1ZXVlZEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgICAgIC8vIE9u
bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXRlbXMgaXMgdXNlZCwgYWNjb3JkaW5nIHRvIHRoZSB2
YWx1ZSBvZiBmcmFtZVR5cGUuCiAgICAgICAgIENTdHJpbmcgc3RyaW5nRGF0YTsKLSAgICAgICAg
VmVjdG9yPGNoYXI+IHZlY3RvckRhdGE7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JE
YXRhOwogICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYkRhdGE7CiAgICAgfTsKICAgICB2b2lkIGVu
cXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYpOwotICAgIHZvaWQgZW5xdWV1ZVJhd0ZyYW1l
KFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKTsKKyAgICB2b2lkIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBlbnF1ZXVl
QmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIEJsb2ImKTsKIAogICAgIHZvaWQgcHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBJZiB5b3UgYXJlIGdvaW5nIHRvIHNlbmQgYSBoeWJpLTEwIGZyYW1lLCB5b3UgbmVl
ZCB0byB1c2UgdGhlIG91dGdvaW5nIGZyYW1lIHF1ZXVlCiAgICAgLy8gaW5zdGVhZCBvZiBjYWxs
IHNlbmRGcmFtZSgpIGRpcmVjdGx5LgotICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNvY2tldEZyYW1l
OjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNlbmRGcmFtZShX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAg
ICBlbnVtIEJsb2JMb2FkZXJTdGF0dXMgewogICAgICAgICBCbG9iTG9hZGVyTm90U3RhcnRlZCwK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU29ja2V0Q2hhbm5l
bENsaWVudD4gbV9jbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEhhbmRzaGFr
ZT4gbV9oYW5kc2hha2U7CiAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9oYW5kbGU7
Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZl
cjsKIAogICAgIFRpbWVyIG1fcmVzdW1lVGltZXI7CiAgICAgYm9vbCBtX3N1c3BlbmRlZCB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVyLmNwcAppbmRleCAxNGFiODA5NWIyNWNmMTM5NGMwODQ5YTBiMTg3ODE3
NGM0NTczM2FkLi4xMTJlZDJlZTBlYTM2ZWE0YjNjNzA5NGQ3NTczOGEyZWRlM2MyN2ZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlci5jcHAKQEAgLTYzLDE1ICs2MywxNSBAQCBXZWJTb2NrZXREZWZsYXRlcjo6fldlYlNv
Y2tldERlZmxhdGVyKCkKICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXREZWZsYXRlciAl
cCBEZXN0cnVjdG9yIGRlZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIGlzIHJldHVybmVkIiwgdGhpcywg
cmVzdWx0KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtKiBz
dHJlYW0sIGNvbnN0IGNoYXIqIGlucHV0RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBv
dXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQorc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFy
YW1ldGVyKHpfc3RyZWFtKiBzdHJlYW0sIGNvbnN0IHVpbnQ4X3QqIGlucHV0RGF0YSwgc2l6ZV90
IGlucHV0TGVuZ3RoLCB1aW50OF90KiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQog
ewotICAgIHN0cmVhbS0+bmV4dF9pbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihjb25zdF9j
YXN0PGNoYXIqPihpbnB1dERhdGEpKTsKKyAgICBzdHJlYW0tPm5leHRfaW4gPSBjb25zdF9jYXN0
PHVpbnQ4X3QqPihpbnB1dERhdGEpOwogICAgIHN0cmVhbS0+YXZhaWxfaW4gPSBpbnB1dExlbmd0
aDsKLSAgICBzdHJlYW0tPm5leHRfb3V0ID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KG91dHB1
dERhdGEpOworICAgIHN0cmVhbS0+bmV4dF9vdXQgPSBvdXRwdXREYXRhOwogICAgIHN0cmVhbS0+
YXZhaWxfb3V0ID0gb3V0cHV0TGVuZ3RoOwogfQogCi1ib29sIFdlYlNvY2tldERlZmxhdGVyOjph
ZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9vbCBXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM3LDcgKzEzNyw3
IEBAIFdlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIoKQogICAgICAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldEluZmxhdGVyICVwIERlc3RydWN0b3IgaW5mbGF0ZUVuZCgpIGZh
aWxlZDogJWQgaXMgcmV0dXJuZWQiLCB0aGlzLCByZXN1bHQpOwogfQogCi1ib29sIFdlYlNvY2tl
dEluZmxhdGVyOjphZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTcwLDcgKzE3MCw3IEBAIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAKIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmZpbmlz
aCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlwcGVkRmllbGRzID0gIlwwXDBceGZm
XHhmZiI7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgc3RyaXBwZWRGaWVsZHNbXSA9ICJcMFww
XHhmZlx4ZmYiOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc3RyaXBwZWRMZW5ndGggPSA0Owog
CiAgICAgLy8gQXBwZW5kcyA0IG9jdGVzdHMgb2YgMHgwMCAweDAwIDB4ZmYgMHhmZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIu
aAppbmRleCBmNjJkYzU4NWE4M2JlM2ExMzk0MWI1N2JhZjcyOTY1NmMxMzA0OTJiLi44ZjQ1NGZi
M2I2OTZkOGJjNDNlZjJhYTU3YjFmN2IwOWNlMjYwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaApAQCAtNDksMTYg
KzQ5LDE2IEBAIHB1YmxpYzoKICAgICB+V2ViU29ja2V0RGVmbGF0ZXIoKTsKIAogICAgIGJvb2wg
aW5pdGlhbGl6ZSgpOwotICAgIGJvb2wgYWRkQnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7Cisg
ICAgYm9vbCBhZGRCeXRlcyhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBib29sIGZpbmlz
aCgpOwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0K
KyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KICAgICB2
b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6CiAgICAgaW50IG1fd2luZG93Qml0czsKICAgICBDb250
ZXh0VGFrZU92ZXJNb2RlIG1fY29udGV4dFRha2VPdmVyTW9kZTsKLSAgICBWZWN0b3I8Y2hhcj4g
bV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjx6X3N0cmVhbT4gbV9zdHJlYW07CiB9OwogCkBAIC02OSwxNSArNjksMTUgQEAgcHVibGlj
OgogICAgIH5XZWJTb2NrZXRJbmZsYXRlcigpOwogCiAgICAgYm9vbCBpbml0aWFsaXplKCk7Ci0g
ICAgYm9vbCBhZGRCeXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGFkZEJ5dGVz
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgZmluaXNoKCk7Ci0gICAgY29uc3Qg
Y2hhciogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQogICAgIHZvaWQgcmVzZXQoKTsKIAog
cHJpdmF0ZToKICAgICBpbnQgbV93aW5kb3dCaXRzOwotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZl
cjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHpf
c3RyZWFtPiBtX3N0cmVhbTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwCmluZGV4IGY3ZjM2NTc1YjI2NzU1Y2NiOWEy
MWU4OWU2YmIzZTRkMDJlNzA4YjkuLjYzZTI1NzMxMTM5NjcxNjgzYmM4ZWVjMmJmNWI2MWQxYjY1
N2VlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEZyYW1lLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIENvbnN0YW50cyBmb3IgaHliaS0xMCBmcmFtZSBmb3JtYXQuCi1jb25zdCB1bnNpZ25l
ZCBjaGFyIGZpbmFsQml0ID0gMHg4MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgY29tcHJlc3NCaXQg
PSAweDQwOwotY29uc3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDJCaXQgPSAweDIwOwotY29uc3Qg
dW5zaWduZWQgY2hhciByZXNlcnZlZDNCaXQgPSAweDEwOwotY29uc3QgdW5zaWduZWQgY2hhciBv
cENvZGVNYXNrID0gMHhGOwotY29uc3QgdW5zaWduZWQgY2hhciBtYXNrQml0ID0gMHg4MDsKLWNv
bnN0IHVuc2lnbmVkIGNoYXIgcGF5bG9hZExlbmd0aE1hc2sgPSAweDdGOworY29uc3QgdWludDhf
dCBmaW5hbEJpdCA9IDB4ODA7Citjb25zdCB1aW50OF90IGNvbXByZXNzQml0ID0gMHg0MDsKK2Nv
bnN0IHVpbnQ4X3QgcmVzZXJ2ZWQyQml0ID0gMHgyMDsKK2NvbnN0IHVpbnQ4X3QgcmVzZXJ2ZWQz
Qml0ID0gMHgxMDsKK2NvbnN0IHVpbnQ4X3Qgb3BDb2RlTWFzayA9IDB4RjsKK2NvbnN0IHVpbnQ4
X3QgbWFza0JpdCA9IDB4ODA7Citjb25zdCB1aW50OF90IHBheWxvYWRMZW5ndGhNYXNrID0gMHg3
RjsKIGNvbnN0IHNpemVfdCBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmll
bGQgPSAxMjU7CiBjb25zdCBzaXplX3QgcGF5bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRM
ZW5ndGhGaWVsZCA9IDEyNjsKIGNvbnN0IHNpemVfdCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0
ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjc7CkBAIC00NywyMiArNDcsMjIgQEAgYm9vbCBXZWJT
b2NrZXRGcmFtZTo6bmVlZHNFeHRlbmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3Ro
KQogICAgIHJldHVybiBwYXlsb2FkTGVuZ3RoID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRl
bmRlZExlbmd0aEZpZWxkOwogfQogCi1XZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBX
ZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
V2ViU29ja2V0RnJhbWUmIGZyYW1lLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQsIFN0cmluZyYgZXJy
b3JTdHJpbmcpCitXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFt
ZTo6cGFyc2VGcmFtZSh1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0
RnJhbWUmIGZyYW1lLCBjb25zdCB1aW50OF90KiYgZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJp
bmcpCiB7Ci0gICAgY2hhciogcCA9IGRhdGE7Ci0gICAgY29uc3QgY2hhciogYnVmZmVyRW5kID0g
ZGF0YSArIGRhdGFMZW5ndGg7CisgICAgdWludDhfdCogcCA9IGRhdGE7CisgICAgY29uc3QgdWlu
dDhfdCogYnVmZmVyRW5kID0gZGF0YSArIGRhdGFMZW5ndGg7CiAKICAgICBpZiAoZGF0YUxlbmd0
aCA8IDIpCiAgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CiAKLSAgICB1bnNpZ25lZCBj
aGFyIGZpcnN0Qnl0ZSA9ICpwKys7Ci0gICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnAr
KzsKKyAgICB1aW50OF90IGZpcnN0Qnl0ZSA9ICpwKys7CisgICAgdWludDhfdCBzZWNvbmRCeXRl
ID0gKnArKzsKIAogICAgIGJvb2wgZmluYWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKICAgICBi
b29sIGNvbXByZXNzID0gZmlyc3RCeXRlICYgY29tcHJlc3NCaXQ7CiAgICAgYm9vbCByZXNlcnZl
ZDIgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDJCaXQ7CiAgICAgYm9vbCByZXNlcnZlZDMgPSBmaXJz
dEJ5dGUgJiByZXNlcnZlZDNCaXQ7Ci0gICAgdW5zaWduZWQgY2hhciBvcENvZGUgPSBmaXJzdEJ5
dGUgJiBvcENvZGVNYXNrOworICAgIHVpbnQ4X3Qgb3BDb2RlID0gZmlyc3RCeXRlICYgb3BDb2Rl
TWFzazsKIAogICAgIGJvb2wgbWFza2VkID0gc2Vjb25kQnl0ZSAmIG1hc2tCaXQ7CiAgICAgdWlu
dDY0X3QgcGF5bG9hZExlbmd0aDY0ID0gc2Vjb25kQnl0ZSAmIHBheWxvYWRMZW5ndGhNYXNrOwpA
QCAtNzksNyArNzksNyBAQCBXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2Nr
ZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZAogICAgICAgICBwYXlsb2Fk
TGVuZ3RoNjQgPSAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuZGVkUGF5bG9h
ZExlbmd0aFNpemU7ICsraSkgewogICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IDw8PSA4Owot
ICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KCpwKyspOworICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KCpwKyspOwogICAgICAgICB9CiAgICAgICAgIGlmIChleHRlbmRlZFBheWxvYWRMZW5ndGhT
aXplID09IDIgJiYgcGF5bG9hZExlbmd0aDY0IDw9IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0
ZW5kZWRMZW5ndGhGaWVsZCkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVGhlIG1pbmlt
YWwgbnVtYmVyIG9mIGJ5dGVzIE1VU1QgYmUgdXNlZCB0byBlbmNvZGUgdGhlIGxlbmd0aCI7CkBA
IC0xMDMsOCArMTAzLDggQEAgV2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29j
a2V0RnJhbWU6OnBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGQKICAgICAgICAgcmV0dXJu
IEZyYW1lSW5jb21wbGV0ZTsKIAogICAgIGlmIChtYXNrZWQpIHsKLSAgICAgICAgY29uc3QgY2hh
ciogbWFza2luZ0tleSA9IHA7Ci0gICAgICAgIGNoYXIqIHBheWxvYWQgPSBwICsgbWFza2luZ0tl
eVdpZHRoSW5CeXRlczsKKyAgICAgICAgdWludDhfdCogbWFza2luZ0tleSA9IHA7CisgICAgICAg
IHVpbnQ4X3QqIHBheWxvYWQgPSBwICsgbWFza2luZ0tleVdpZHRoSW5CeXRlczsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBw
YXlsb2FkW2ldIF49IG1hc2tpbmdLZXlbaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNdOyAvLyBV
bm1hc2sgdGhlIHBheWxvYWQuCiAgICAgfQpAQCAtMTIxLDcgKzEyMSw3IEBAIFdlYlNvY2tldEZy
YW1lOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZyYW1lKGNoYXIqIGRh
dGEsIHNpemVfdCBkCiAgICAgcmV0dXJuIEZyYW1lT0s7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVu
ZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYg
ZnJhbWVEYXRhKQorc3RhdGljIHZvaWQgYXBwZW5kRnJhbWVQYXlsb2FkKGNvbnN0IFdlYlNvY2tl
dEZyYW1lJiBmcmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiBmcmFtZURhdGEpCiB7CiAgICAgc2l6ZV90
IG1hc2tpbmdLZXlTdGFydCA9IDA7CiAgICAgaWYgKGZyYW1lLm1hc2tlZCkgewpAQCAtMTM5LDcg
KzEzOSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRG
cmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVECiAgICAgfQogfQogCi12b2lkIFdlYlNv
Y2tldEZyYW1lOjptYWtlRnJhbWVEYXRhKFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQordm9pZCBX
ZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSkK
IHsKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhl
ciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogCkBAIC0xNTUsNyArMTU1
LDcgQEAgdm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hhcj4mIGZy
YW1lRGF0YSkKICAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChwYXlsb2FkTGVuZ3RoICYgMHhGRik7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgZnJhbWVEYXRhLmF0KDEpIHw9IHBheWxvYWRMZW5ndGhX
aXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZDsKLSAgICAgICAgY2hhciBleHRlbmRlZFBh
eWxvYWRMZW5ndGhbOF07CisgICAgICAgIHVpbnQ4X3QgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzhd
OwogICAgICAgICBzaXplX3QgcmVtYWluaW5nID0gcGF5bG9hZExlbmd0aDsKICAgICAgICAgLy8g
RmlsbCB0aGUgbGVuZ3RoIGludG8gZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoIGluIHRoZSBuZXR3b3Jr
IGJ5dGUgb3JkZXIuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CkBAIC0x
NjksNyArMTY5LDcgQEAgdm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8
Y2hhcj4mIGZyYW1lRGF0YSkKICAgICBhcHBlbmRGcmFtZVBheWxvYWQoKnRoaXMsIGZyYW1lRGF0
YSk7CiB9CiAKLVdlYlNvY2tldEZyYW1lOjpXZWJTb2NrZXRGcmFtZShPcENvZGUgb3BDb2RlLCBi
b29sIGZpbmFsLCBib29sIGNvbXByZXNzLCBib29sIG1hc2tlZCwgY29uc3QgY2hhciogcGF5bG9h
ZCwgc2l6ZV90IHBheWxvYWRMZW5ndGgpCitXZWJTb2NrZXRGcmFtZTo6V2ViU29ja2V0RnJhbWUo
T3BDb2RlIG9wQ29kZSwgYm9vbCBmaW5hbCwgYm9vbCBjb21wcmVzcywgYm9vbCBtYXNrZWQsIGNv
bnN0IHVpbnQ4X3QqIHBheWxvYWQsIHNpemVfdCBwYXlsb2FkTGVuZ3RoKQogICAgIDogb3BDb2Rl
KG9wQ29kZSkKICAgICAsIGZpbmFsKGZpbmFsKQogICAgICwgY29tcHJlc3MoY29tcHJlc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5o
CmluZGV4IGRiMTYwZGNmYjFlZTU5NTVhOWQ1N2ZkYzg3N2I0Zjk0NzNhNTczYTAuLmE3NGNiODI5
Yzc1YWVjYTE5MTNmOWY4NDJiYzM5M2E0N2FkZGMxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCkBAIC01NiwxMCArNTYsMTAg
QEAgc3RydWN0IFdlYlNvY2tldEZyYW1lIHsKICAgICBzdGF0aWMgYm9vbCBpc0NvbnRyb2xPcENv
ZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNsb3NlIHx8IG9wQ29k
ZSA9PSBPcENvZGVQaW5nIHx8IG9wQ29kZSA9PSBPcENvZGVQb25nOyB9CiAgICAgc3RhdGljIGJv
b2wgaXNSZXNlcnZlZE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiAhaXNOb25Db250cm9s
T3BDb2RlKG9wQ29kZSkgJiYgIWlzQ29udHJvbE9wQ29kZShvcENvZGUpOyB9CiAgICAgc3RhdGlj
IGJvb2wgbmVlZHNFeHRlbmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUGFyc2VGcmFtZVJlc3VsdCBwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBXZWJTb2NrZXRGcmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCwgU3RyaW5n
JiBlcnJvclN0cmluZyk7IC8vIE1heSBtb2RpZnkgcGFydCBvZiBkYXRhIHRvIHVubWFzayB0aGUg
ZnJhbWUuCisgICAgc3RhdGljIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZSh1aW50OF90KiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0RnJhbWUmLCBjb25zdCB1aW50OF90KiYg
ZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJpbmcpOyAvLyBNYXkgbW9kaWZ5IHBhcnQgb2YgZGF0
YSB0byB1bm1hc2sgdGhlIGZyYW1lLgogCi0gICAgV0VCQ09SRV9FWFBPUlQgV2ViU29ja2V0RnJh
bWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNvbXBy
ZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IGNoYXIqIHBheWxvYWQgPSBu
dWxscHRyLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApOwotICAgIHZvaWQgbWFrZUZyYW1lRGF0
YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViU29ja2V0
RnJhbWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNv
bXByZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IHVpbnQ4X3QqIHBheWxv
YWQgPSBudWxscHRyLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApOworICAgIHZvaWQgbWFrZUZy
YW1lRGF0YShWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSk7CiAKICAgICBPcENvZGUgb3BDb2Rl
OwogICAgIGJvb2wgZmluYWw7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFt
ZSB7CiAgICAgYm9vbCByZXNlcnZlZDI7CiAgICAgYm9vbCByZXNlcnZlZDM7CiAgICAgYm9vbCBt
YXNrZWQ7Ci0gICAgY29uc3QgY2hhciogcGF5bG9hZDsKKyAgICBjb25zdCB1aW50OF90KiBwYXls
b2FkOwogICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRl
eCA4NDljZjVmNjI0YmNjMjcyZWU1ZTdiYzYyNmRhN2U1MDNhZDQ0OTIyLi45ZDExNjk5ZjFhNGI2
YzU2NzY3NWI3MWEzMjgzMGMyNDJhMDU4MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtODQsNyAr
ODQsNyBAQCBzdGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNvbnN0IFVSTCYgdXJsLCBib29sIHNlY3Vy
ZSkKIH0KIAogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7Ci1z
dGF0aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShjb25zdCBjaGFyKiBwLCBzaXplX3QgbGVuKQor
c3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgdWludDhfdCogcCwgc2l6ZV90IGxl
bikKIHsKICAgICBTdHJpbmcgcyA9IFN0cmluZyhwLCBzdGQ6Om1pbjxzaXplX3Q+KGxlbiwgbWF4
SW5wdXRTYW1wbGVTaXplKSk7CiAgICAgaWYgKGxlbiA+IG1heElucHV0U2FtcGxlU2l6ZSkKQEAg
LTIyMSw3ICsyMjEsNyBAQCB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQogICAgIG1f
ZXh0ZW5zaW9uRGlzcGF0Y2hlci5yZXNldCgpOwogfQogCi1pbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKK2lu
dCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgdWludDhfdCog
aGVhZGVyLCBzaXplX3QgbGVuKQogewogICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgaW50
IHN0YXR1c0NvZGU7CkBAIC0yNDUsMTIgKzI0NSwxMiBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKICAg
ICAgICAgcmV0dXJuIGxlbjsKICAgICB9CiAgICAgbV9tb2RlID0gTm9ybWFsOwotICAgIGlmICgh
c3RybnN0cihoZWFkZXIsICJcclxuXHJcbiIsIGxlbikpIHsKKyAgICBpZiAoIW1lbW1lbShoZWFk
ZXIsIGxlbiwgIlxyXG5cclxuIiwgNCkpIHsKICAgICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiBy
ZWNlaXZlZCBmdWxseSB5ZXQuCiAgICAgICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgICAg
IHJldHVybiAtMTsKICAgICB9Ci0gICAgY29uc3QgY2hhciogcCA9IHJlYWRIVFRQSGVhZGVycyho
ZWFkZXIgKyBsaW5lTGVuZ3RoLCBoZWFkZXIgKyBsZW4pOworICAgIGNvbnN0IHVpbnQ4X3QqIHAg
PSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyICsgbGluZUxlbmd0aCwgaGVhZGVyICsgbGVuKTsKICAg
ICBpZiAoIXApIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRIYW5kc2hha2UgJXAg
cmVhZFNlcnZlckhhbmRzaGFrZSgpIHJlYWRIVFRQSGVhZGVycygpIGZhaWxlZCIsIHRoaXMpOwog
ICAgICAgICBtX21vZGUgPSBGYWlsZWQ7IC8vIG1fZmFpbHVyZVJlYXNvbiBpcyBzZXQgaW5zaWRl
IHJlYWRIVFRQSGVhZGVycygpLgpAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAv
LyBSZXR1cm5zIHRoZSBoZWFkZXIgbGVuZ3RoIChpbmNsdWRpbmcgIlxyXG4iKSwgb3IgLTEgaWYg
d2UgaGF2ZSBub3QgcmVjZWl2ZWQgZW5vdWdoIGRhdGEgeWV0LgogLy8gSWYgdGhlIGxpbmUgaXMg
bWFsZm9ybWVkIG9yIHRoZSBzdGF0dXMgY29kZSBpcyBub3QgYSAzLWRpZ2l0IG51bWJlciwKIC8v
IHN0YXR1c0NvZGUgYW5kIHN0YXR1c1RleHQgd2lsbCBiZSBzZXQgdG8gLTEgYW5kIGEgbnVsbCBz
dHJpbmcsIHJlc3BlY3RpdmVseS4KLWludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNM
aW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50JiBzdGF0dXND
b2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpCitpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3Rh
dHVzTGluZShjb25zdCB1aW50OF90KiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsIGludCYg
c3RhdHVzQ29kZSwgU3RyaW5nJiBzdGF0dXNUZXh0KQogewogICAgIC8vIEFyYml0cmFyeSBzaXpl
IGxpbWl0IHRvIHByZXZlbnQgdGhlIHNlcnZlciBmcm9tIHNlbmRpbmcgYW4gdW5ib3VuZGVkCiAg
ICAgLy8gYW1vdW50IG9mIGRhdGEgd2l0aCBubyBuZXdsaW5lcyBhbmQgZm9yY2luZyB1cyB0byBi
dWZmZXIgaXQgYWxsLgpAQCAtMzcxLDkgKzM3MSw5IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6
OnJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwK
ICAgICBzdGF0dXNDb2RlID0gLTE7CiAgICAgc3RhdHVzVGV4dCA9IFN0cmluZygpOwogCi0gICAg
Y29uc3QgY2hhciogc3BhY2UxID0gbnVsbHB0cjsKLSAgICBjb25zdCBjaGFyKiBzcGFjZTIgPSBu
dWxscHRyOwotICAgIGNvbnN0IGNoYXIqIHA7CisgICAgY29uc3QgdWludDhfdCogc3BhY2UxID0g
bnVsbHB0cjsKKyAgICBjb25zdCB1aW50OF90KiBzcGFjZTIgPSBudWxscHRyOworICAgIGNvbnN0
IHVpbnQ4X3QqIHA7CiAgICAgc2l6ZV90IGNvbnN1bWVkTGVuZ3RoOwogCiAgICAgZm9yIChwID0g
aGVhZGVyLCBjb25zdW1lZExlbmd0aCA9IDA7IGNvbnN1bWVkTGVuZ3RoIDwgaGVhZGVyTGVuZ3Ro
OyBwKyssIGNvbnN1bWVkTGVuZ3RoKyspIHsKQEAgLTM5Nyw3ICszOTcsNyBAQCBpbnQgV2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBo
ZWFkZXJMZW5ndGgsCiAgICAgaWYgKGNvbnN1bWVkTGVuZ3RoID09IGhlYWRlckxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIC0xOyAvLyBXZSBoYXZlIG5vdCByZWNlaXZlZCAnXG4nIHlldC4KIAotICAg
IGNvbnN0IGNoYXIqIGVuZCA9IHAgKyAxOworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHAgKyAx
OwogICAgIGludCBsaW5lTGVuZ3RoID0gZW5kIC0gaGVhZGVyOwogICAgIGlmIChsaW5lTGVuZ3Ro
ID4gbWF4aW11bUxlbmd0aCkgewogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU3RhdHVzIGxp
bmUgaXMgdG9vIGxvbmciX3M7CkBAIC00MTUsMTMgKzQxNSwxMyBAQCBpbnQgV2ViU29ja2V0SGFu
ZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJM
ZW5ndGgsCiAgICAgICAgIHJldHVybiBsaW5lTGVuZ3RoOwogICAgIH0KIAotICAgIFN0cmluZ1Zp
ZXcgaHR0cFN0YXR1c0xpbmUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGhlYWRlciks
IHNwYWNlMSAtIGhlYWRlcik7CisgICAgU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZShoZWFkZXIs
IHNwYWNlMSAtIGhlYWRlcik7CiAgICAgaWYgKCFoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKGh0
dHBTdGF0dXNMaW5lKSkgewogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBtYWtlU3RyaW5nKCJJ
bnZhbGlkIEhUVFAgdmVyc2lvbiBzdHJpbmc6ICIsIGh0dHBTdGF0dXNMaW5lKTsKICAgICAgICAg
cmV0dXJuIGxpbmVMZW5ndGg7CiAgICAgfQogCi0gICAgU3RyaW5nVmlldyBzdGF0dXNDb2RlU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzcGFjZTEgKyAxKSwgc3BhY2UyIC0g
c3BhY2UxIC0gMSk7CisgICAgU3RyaW5nVmlldyBzdGF0dXNDb2RlU3RyaW5nKHNwYWNlMSArIDEs
IHNwYWNlMiAtIHNwYWNlMSAtIDEpOwogICAgIGlmIChzdGF0dXNDb2RlU3RyaW5nLmxlbmd0aCgp
ICE9IDMpIC8vIFN0YXR1cyBjb2RlIG11c3QgY29uc2lzdCBvZiB0aHJlZSBkaWdpdHMuCiAgICAg
ICAgIHJldHVybiBsaW5lTGVuZ3RoOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7
CkBAIC00MzYsMTQgKzQzNiwxNCBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVz
TGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsCiAgICAgcmV0dXJu
IGxpbmVMZW5ndGg7CiB9CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCitjb25zdCB1aW50
OF90KiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCB1aW50OF90KiBz
dGFydCwgY29uc3QgdWludDhfdCogZW5kKQogewogICAgIFN0cmluZ1ZpZXcgbmFtZTsKICAgICBT
dHJpbmcgdmFsdWU7CiAgICAgYm9vbCBzYXdTZWNXZWJTb2NrZXRFeHRlbnNpb25zSGVhZGVyRmll
bGQgPSBmYWxzZTsKICAgICBib29sIHNhd1NlY1dlYlNvY2tldEFjY2VwdEhlYWRlckZpZWxkID0g
ZmFsc2U7CiAgICAgYm9vbCBzYXdTZWNXZWJTb2NrZXRQcm90b2NvbEhlYWRlckZpZWxkID0gZmFs
c2U7Ci0gICAgY29uc3QgY2hhciogcCA9IHN0YXJ0OworICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBz
dGFydDsKICAgICBmb3IgKDsgcCA8IGVuZDsgcCsrKSB7CiAgICAgICAgIHNpemVfdCBjb25zdW1l
ZExlbmd0aCA9IHBhcnNlSFRUUEhlYWRlcihwLCBlbmQgLSBwLCBtX2ZhaWx1cmVSZWFzb24sIG5h
bWUsIHZhbHVlKTsKICAgICAgICAgaWYgKCFjb25zdW1lZExlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAppbmRl
eCBlYWY4YTVjMDZhZDIwNThkM2QzODk1MTM1MjM5OTZmNmJlM2UwZGQzLi41ZTY0YzE4MzRmNmU4
MzYxNGQzMDFjNGZlZGQzOWQ4ODNjYWQ3YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC02OCw3ICs2OCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIGludCByZWFkU2VydmVySGFu
ZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbik7CisgICAgaW50IHJlYWRTZXJ2
ZXJIYW5kc2hha2UoY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgbGVuKTsKICAgICBNb2Rl
IG1vZGUoKSBjb25zdDsKICAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0OyAvLyBSZXR1
cm5zIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHJlYXNvbiBvZiBmYWlsdXJlIGlmIG1vZGUoKSA9
PSBGYWlsZWQuCiAKQEAgLTg3LDEwICs4NywxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAg
ICBpbnQgcmVhZFN0YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVu
Z3RoLCBpbnQmIHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCk7CisgICAgaW50IHJlYWRT
dGF0dXNMaW5lKGNvbnN0IHVpbnQ4X3QqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50
JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpOwogCiAgICAgLy8gUmVhZHMgYWxsIGhl
YWRlcnMgZXhjZXB0IGZvciB0aGUgdHdvIHByZWRlZmluZWQgb25lcy4KLSAgICBjb25zdCBjaGFy
KiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCk7Cisg
ICAgY29uc3QgdWludDhfdCogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IHVpbnQ4X3QqIHN0YXJ0LCBj
b25zdCB1aW50OF90KiBlbmQpOwogICAgIHZvaWQgcHJvY2Vzc0hlYWRlcnMoKTsKICAgICBib29s
IGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCmluZGV4IDBiZjJhYTlhMTBiMjJlMTE1YTMyZjI1MTRhN2Q3ZWI1MDZiNTk4
MWEuLmIzZjMxMDk1YWFhOWFlODM5NGZiOTg1OWM2ZGY0OGIyY2I5ZjA4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDQ3LDEwICs0NDcsMTAgQEAg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAgICBpZiAoIW1fcGVlcikKICAgICAgICAgcmV0dXJu
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKIAotICAgIC8vIEFycmF5QnVm
ZmVyIGlzbid0IHRocmVhZC1zYWZlLCBoZW5jZSB0aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBp
cyBjb3BpZWQgaW50byBWZWN0b3I8Y2hhcj4uCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEoYnl0ZUxl
bmd0aCk7CisgICAgLy8gQXJyYXlCdWZmZXIgaXNuJ3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRoZSBj
b250ZW50IG9mIEFycmF5QnVmZmVyIGlzIGNvcGllZCBpbnRvIFZlY3Rvcjx1aW50OF90Pi4KKyAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YShieXRlTGVuZ3RoKTsKICAgICBpZiAoYmluYXJ5RGF0YS5i
eXRlTGVuZ3RoKCkpCi0gICAgICAgIG1lbWNweShkYXRhLmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwor
ICAgICAgICBtZW1jcHkoZGF0YS5kYXRhKCksIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
aW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAgICBzZXRNZXRo
b2ROb3RDb21wbGV0ZWQoKTsKIAogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihb
cGVlciA9IG1fcGVlciwgZGF0YSA9IFdURk1vdmUoZGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
U2VyaWFsaXplZE5GQS5jcHAKaW5kZXggMjgzN2FjZjllZWY5NGRiYzhiZjhhMDMzOTIzNzEyM2M5
ZGU2YzVlMi4uOTZmNjViZGQ0Y2U3OWJiYTg4NmQ5OWExYzY2MjRmZmJlNGYxMzAzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAK
QEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBib29sIHdyaXRlQWxsVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlLCBjb25zdCBUJiBjb250YWluZXIpCiB7Ci0gICAgY29uc3QgY2hhciogYnl0
ZXMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb250YWluZXIuZGF0YSgpKTsKKyAg
ICBjb25zdCB1aW50OF90KiBieXRlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGNvbnRhaW5lci5kYXRhKCkpOwogICAgIHNpemVfdCBieXRlc0xlbmd0aCA9IGNvbnRhaW5lci5z
aXplKCkgKiBzaXplb2YoY29udGFpbmVyWzBdKTsKLSAgICBjb25zdCBjaGFyKiBlbmQgPSBieXRl
cyArIGJ5dGVzTGVuZ3RoOworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IGJ5dGVzICsgYnl0ZXNM
ZW5ndGg7CiAgICAgd2hpbGUgKGJ5dGVzIDwgZW5kKSB7CiAgICAgICAgIGF1dG8gd3JpdHRlbiA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIGJ5dGVzLCBieXRlc0xlbmd0aCk7CiAgICAg
ICAgIGlmICh3cml0dGVuID09IC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cAppbmRleCA3NjY0YzA2OWYxNDlmYmVlNmQxYjU0NzE2Mjg2MTk4MmQ2MTg5YTk4Li44NjQzODcw
ZGQwZTgxMjJkYTE4Mzg5YmJjYWU4NTdkYTdlMzJlMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcApAQCAtMTEyMyw3ICsxMTIzLDcgQEAgdm9pZCBTdWJ0bGVDcnlwdG86
OnVud3JhcEtleShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgS2V5Rm9ybWF0IGZvcm1hdCwg
QnVmZmUKICAgICAgICAgICAgICAgICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOwogICAgICAg
ICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nIGp3a1N0cmluZyhyZWludGVycHJldF9jYXN0X3B0cjxj
b25zdCBjaGFyKj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nIGp3a1N0cmluZyhieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvIGp3a09iamVjdCA9IEpTT05QYXJzZSgmc3RhdGUsIGp3a1N0cmluZyk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghandrT2JqZWN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCAyZDIx
NDRmMGFjNTk2ZTM5OTY0NWQxNzAzYTg2OTJlYTM1YmEzNjQ3Li5kMjk5MDlhMzQ5N2RjNGE0OWE3
YWYwZDZkMzI0OTQ5OGQxNzI1NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KQEAgLTE2Nyw3ICsxNjcsNyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGZpbmRNYXN0ZXJLZXkoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBrZXlEYXRhID0gYWRvcHRDRihrZXlEYXRhUmVmKTsKLSAgICByZXR1cm4gYmFzZTY0RGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoa2V5RGF0
YS5nZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5RGF0YS5nZXQoKSkpOworICAgIHJldHVybiBi
YXNlNjREZWNvZGUoQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKGtleURhdGEuZ2V0KCkpKTsKIH0KIAogc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGVkODU2NjQ3YTM5OWQ2NWIwODExMTdi
ODY5MDQxNWQyNDI5YWY3NzAuLjdiMmI0NTAzMWNiNTA1M2NiNjQ1NmQ4ZWM2NGQ4YmNjN2UwNjRl
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6RGVjb2Rl
ZERhdGFEb2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQgRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImIHdyaXRl
ciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRGVjb2RlZERhdGFEb2N1
bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImIHdyaXRlciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1l
bnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmgKaW5kZXggYmJiMDZhM2U4YTdkZDAxZmRmMWQyZjkxY2ZmNDUxMGJkNGU2N2QxNi4uOTU1ODJh
MGQ2OTM5MGIyYTUxNjIzNWVlNjNmYmZiYzMwYzViZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBhcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlID0gMDsK
IAogICAgIC8vIGFwcGVuZEJ5dGVzIGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVudFdyaXRl
ciAodGhlIGxvYWRlcikuCi0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGVu
ZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2goRG9jdW1lbnRXcml0ZXImKSBvdmVycmlkZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKaW5kZXggOWNiZTkyYTMyN2ZkMjUy
ZThlZTAzMjQ5OTNkNzUyNDJhZTVmNTBjNy4uN2M0YzNkMmU3ZGNlOGM5OTc1MDBhNGU2ZGI1OWQw
MGRiYTZhMDczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYp
ID0gMDsKIAogICAgIC8vIGFwcGVuZEJ5dGVzIGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVu
dFdyaXRlciAodGhlIGxvYWRlcikuCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3Vt
ZW50V3JpdGVyJiwgY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaChEb2N1bWVu
dFdyaXRlciYpID0gMDsKIAogICAgIC8vIEZJWE1FOiBhcHBlbmQoKSBzaG91bGQgYmUgcHJpdmF0
ZSwgYnV0IERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQgdXNlcyBpdCBmb3Igbm93Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCmluZGV4IDA5NGVjODdm
NjVhYzI3NWI1N2IwODFkMGJjMjJkZTVmYmI5YWQ4OTcuLmRlMzg5OTIxYWM2ZGMwZTAwY2U0Njk5
YjQ3NjhiYmE4Y2VhZDdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRh
RG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50
UGFyc2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoKERvY3Vt
ZW50V3JpdGVyJiB3cml0ZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICAvLyBNYWtlIHN1cmUg
YXBwZW5kQnl0ZXMgaXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UuCi0gICAgICAgIGFwcGVuZEJ5dGVz
KHdyaXRlciwgMCwgMCk7CisgICAgICAgIGFwcGVuZEJ5dGVzKHdyaXRlciwgbnVsbHB0ciwgMCk7
CiAgICAgfQogCiAgICAgdm9pZCBpbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYpIG92ZXJyaWRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0NTM4Y2Y3NjkwNTEyMDljYTM5
OTI3MmMwZDlhYzgyNjM3ZmQxZjRlLi5mYTliZGFmMjIxMTdhN2MxODdhYzBiZmY4YjYzMDczMTgx
MDg0N2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKIAogICAgIEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAK
LSAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVf
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGU7
CiB9OwogCkBAIC0xODcsNyArMTg3LDcgQEAgaW5saW5lIEltYWdlRG9jdW1lbnQmIEltYWdlRG9j
dW1lbnRQYXJzZXI6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VE
b2N1bWVudD4oKlJhd0RhdGFEb2N1bWVudFBhcnNlcjo6ZG9jdW1lbnQoKSk7CiB9CiAKLXZvaWQg
SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBj
aGFyKiwgc2l6ZV90KQordm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1
bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpCiB7CiAgICAgZG9jdW1lbnQoKS51
cGRhdGVEdXJpbmdQYXJzaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNw
cAppbmRleCA3Y2IzOWVkNTY3OTg2Zjk4OWRmOGYyZmYwNjBhNGJlNmI1Mjk1NGU1Li5lOWU5MDNh
ZmViN2U0ODdjZGIxMjZlYTI3Mjk3N2M2ZDY2YmZkNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFEb2N1bWVudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudCB7IG51bGxwdHIgfTsK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3Vt
ZW50U3RydWN0dXJlKCkKICAgICBmcmFtZS0+bG9hZGVyKCkuc2V0T3V0Z29pbmdSZWZlcnJlcihk
b2N1bWVudC5jb21wbGV0ZVVSTChtX291dGdvaW5nUmVmZXJyZXIpKTsKIH0KIAotdm9pZCBNZWRp
YURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIq
LCBzaXplX3QpCit2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50
V3JpdGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkKIHsKICAgICBpZiAobV9tZWRpYUVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAK
aW5kZXggZDU4ODJmYjI4NTVkOTc4ZDM0MTYxYjQ1Y2FkZmQzMTBjNjAyMGZhMC4uZTNhM2RhNmZm
MjQ3MTliZmM5NzUyZGZlNTUzYTE2Mzc2NGRlNmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCk7CiAKICAgICBIVE1MRW1iZWRFbGVtZW50KiBtX2VtYmVkRWxlbWVudCB7IG51bGxwdHIgfTsK
QEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSgpCiAgICAgZG9jdW1lbnQuc2V0SGFzVmlzdWFsbHlOb25FbXB0eUN1c3Rv
bUNvbnRlbnQoKTsKIH0KIAotdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMo
RG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KQordm9pZCBQbHVnaW5Eb2N1bWVu
dFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KQogewogICAgIGlmIChtX2VtYmVkRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggMTBkNzE4MmUyMjhh
MTRjOGY0MmM3MmE2ZGQzNzAwNjAxOTYxZWJmZi4uYmIxMmMxNTlkZTc0ZjkyOTQ1MzY5NTQxZDc4
NzJlNmM1YzFhY2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRU
cmFjay5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVHZW5lcmlj
Q3VlKEluYmFuZEdlbmVyaWNDdWUmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKICAgICB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJikgb3ZlcnJpZGUgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkgb3ZlcnJp
ZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRh
KElTT1dlYlZUVEN1ZSYmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRl
eCAwNWQ3NTEwMWI1YzFiODFiYzZlOWQ0MjIzZDU4OWUxNzEwZjg4MDNjLi5hMjIyOGJjMTdlYTM1
NmY2MDUyMjhjNTRlY2UzNzBkYzRmY2Q0OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdl
YlZUVFBhcnNlciYgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZXIoKQogICAgIHJldHVybiAq
bV93ZWJWVFRQYXJzZXI7CiB9CiAKLXZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZVdl
YlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBJbmJh
bmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgcGFyc2VyKCkucGFyc2VCeXRlcyhkYXRhLCBsZW5n
dGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJW
VFRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4
dFRyYWNrLmgKaW5kZXggODRlZTBlNTc0MGRjNjM3NzMyZGUzOGEyOGMzOTkyZTc2M2EyY2Y0OS4u
MzE1MjM1NzI5YjVmYmQ5OWY2MzRmYTdkNmM3NzZjMjdiYzZjMWM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCkBAIC00Myw3ICs0
Myw3IEBAIHByaXZhdGU6CiAgICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4
dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgV2ViVlRUUGFy
c2VyJiBwYXJzZXIoKTsKLSAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBw
YXJzZVdlYlZUVEN1ZURhdGEoSVNPV2ViVlRUQ3VlJiYpIGZpbmFsOwogCiAgICAgdm9pZCBuZXdD
dWVzUGFyc2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKaW5kZXggOWYxZDJkNGJiYjVmN2Q3MjNlNDIzM2E1ZDE2ZTQyMjdjMzkxN2IxMS4uZDUz
Y2E2YTNiN2U2ZGVkMGRjNzE3ZWY1ZjU4ODUwN2FjNzU5M2FlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV2Vi
VlRUUGFyc2VyOjpwYXJzZUZpbGVIZWFkZXIoU3RyaW5nJiYgZGF0YSkKICAgICBwYXJzZSgpOwog
fQogCi12b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCit2b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VCeXRlcyhjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgbV9saW5lUmVhZGVyLmFwcGVuZChtX2Rl
Y29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsKICAgICBwYXJzZSgpOwpAQCAtMjI1LDcgKzIy
NSw4IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpwYXJzZSgpCiB2b2lkIFdlYlZUVFBhcnNlcjo6Zmls
ZUZpbmlzaGVkKCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7Ci0gICAgcGFy
c2VCeXRlcygiXG5cbiIsIDIpOworICAgIGNvbnN0IHVpbnQ4X3QgZW5kTGluZXNbXSA9ICJcblxu
IjsKKyAgICBwYXJzZUJ5dGVzKGVuZExpbmVzLCAyKTsKICAgICBtX3N0YXRlID0gRmluaXNoZWQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCmluZGV4IGZhMzNh
MmNmMGUzZjA2ODQ5YjcwYWZlYTMwN2I4MzY5ZmUzMWJiNmMuLjEyODU1MjA5MTc0Mzg1ZDA1MjA4
ZGM3YTQwNGRiYWEzMWZmMDY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5uZXIsIGNoYXIs
IEZsb2F0UG9pbnQmKTsKIAogICAgIC8vIElucHV0IGRhdGEgdG8gdGhlIHBhcnNlciB0byBwYXJz
ZS4KLSAgICB2b2lkIHBhcnNlQnl0ZXMoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKyAgICB2b2lk
IHBhcnNlQnl0ZXMoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKTsKICAgICB2b2lkIHBhcnNlRmls
ZUhlYWRlcihTdHJpbmcmJik7CiAgICAgdm9pZCBwYXJzZUN1ZURhdGEoY29uc3QgSVNPV2ViVlRU
Q3VlJik7CiAgICAgdm9pZCBmbHVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKaW5kZXggYmZkYzJiMmIxZDc5MzJiNWU0ZjAwMDgzMjg5YzA1MDQ3NzdlYTI2Zi4u
MGU0MGQ5NTBhMjdkNjMyZjQyMDk0MTRkMmVhMDQ3Yjg0YjMyYTFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBEb2N1
bWVudFdyaXRlcjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQog
Ci12b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3Qg
bGVuZ3RoKQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VS
VCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQyNyBoYXMg
YmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpOb3RT
dGFydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggODVjMGEz
ODZjZGMyMTQ3MjcwNGFjYjljMGY0ZjJkNjA0ODkxMDI5Zi4uNzBmZDIwYzEzNzNhYzBkYzliNDQ0
OTU0YzNhMjA0MDZmMjFiOGM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmgKQEAgLTQ3LDggKzQ3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBiZWdpbigpOwogICAgIGJv
b2wgYmVnaW4oY29uc3QgVVJMJiwgYm9vbCBkaXNwYXRjaFdpbmRvd09iamVjdEF2YWlsYWJsZSA9
IHRydWUsIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gbnVsbHB0cik7Ci0gICAgdm9pZCBhZGRE
YXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKLSAgICB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpIHsgYWRkRGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcyksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogICAgIHZvaWQgaW5zZXJ0RGF0
YVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25s
eSB0byBwcmV2ZW50IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmluZGV4
IGE2YzI2ODkyZGE2MTRjNTEwZjQwNWM2ODhkY2FmY2U4ODExMzRkNDIuLmE2ODcxMWY2YzIxOWY3
YTQ4YWIzYTZlMTZmNTVlYjBlNjQwNWZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TaW5rRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9j
dW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgLy8gSWdu
b3JlIGFsbCBkYXRhLgotICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25z
dCBjaGFyKiwgc2l6ZV90KSBvdmVycmlkZQorICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRX
cml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZQogICAgIHsKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCBkZDg4OTM1
ZGFiNjQ1YjUwYzkwOGE1MmY5ZDdmMTgwZGIxZmUyMDllLi44Y2MzYzU2OGM0Mzc5NmFjNjFiMzA5
NzU0N2E4OWVmODEyZDk4ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05l
d0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiAgICAgd2hpbGUgKG1fcGFyc2VP
ZmZzZXQgPCBidWZmZXItPnNpemUoKSkgewogICAgICAgICBhdXRvIGRhdGEgPSBidWZmZXItPmdl
dFNvbWVEYXRhKG1fcGFyc2VPZmZzZXQpOwotICAgICAgICBtX2N1ZVBhcnNlci0+cGFyc2VCeXRl
cyhkYXRhLmRhdGFBc0NoYXJQdHIoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBtX2N1ZVBhcnNl
ci0+cGFyc2VCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX3BhcnNl
T2Zmc2V0ICs9IGRhdGEuc2l6ZSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZDRj
YWY0ZDVmOWVhNzY2YzYwMDBmOGZmNzM2YzI0N2MxMzIzYjNkMC4uZjI2NGYxZGQ3MTIzZDY5MmM2
NTdmMWVjZTE0OTk0YzQxOTYzMzQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNiw3ICs2MDYs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGFBc0No
YXJQdHIoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1h
bmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9t
YW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAg
ICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGlu
ZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24g
Zm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBE
b2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdFBhcnNlci5jcHAKaW5kZXggYzhhOWJiZGUzZTM3ZGEwNTc3ZTkwNDFlMTk5NjNlNDRmMWEy
NTMyYS4uYjg3ZGQ4MzUwNjA3YzI0YmUyNTZlMzQ0MWJlZDJkMzc2N2UwOTU1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGNhY2hl
TW9kZUlkZW50aWYKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25z
dGV4cHIgQ2hhcmFjdGVyVHlwZSBmYWxsYmFja01vZGVJZGVudGlmaWVyW10gPSB7ICdGJywgJ0En
LCAnTCcsICdMJywgJ0InLCAnQScsICdDJywgJ0snIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgbmV0d29ya01vZGVJZGVu
dGlmaWVyW10gPSB7ICdOJywgJ0UnLCAnVCcsICdXJywgJ08nLCAnUicsICdLJyB9OwogCi1zdGQ6
Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hl
TWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1J
TUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7CiAg
ICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmlmZXN0UGF0aCA9IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RN
SU1FVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmgKaW5kZXggMGJmOWY5ZjE2YTVh
ZjY5ZmNhZmEwMTY5ZDllNjY0NDFiMWY5Zjg2Mi4uNzAwYzFiYzhlY2NjZTk4ZDgzODkxMDg0MTJk
NTMxMTFmMTZkNWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuaApAQCAtNDEsNiAr
NDEsNiBAQCBzdHJ1Y3QgQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0IHsKICAgICBib29sIGFsbG93
QWxsTmV0d29ya1JlcXVlc3RzIHsgZmFsc2UgfTsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09S
SyBzZWN0aW9uLgogfTsKIAotc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+
IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNv
bnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7CitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBt
YW5pZmVzdE1JTUVUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApp
bmRleCA1Y2RlOWI3ZjExYjg3ZTkwOTNkZjhlZGI2MWVhZWFkZGQwMGViODY0Li43ZGMzMWM3Mzky
Y2NlZWVlYmIyNjNiMjRhOWEzMmQ3MzFkZDBhODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaApAQCAtMTIzLDcgKzEyMyw2IEBAIHB1YmxpYzoKICAgICBjbGFzcyBEYXRh
U2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogICAg
IHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0OwotICAgICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQogICAgICAgICBXRUJDT1JF
X0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRl
eCA3OTExY2EyYjc3NTc0ZGVmOWRjNGUxYzMyMjM2MGQyZjk1MzdjMjI5Li45YWFlOWU4MWFiNDFk
NTQ3NDY4MTU0MDM1MTc4NjBmYWQzM2NlN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcApAQCAtMTAyLDcg
KzEwMiw3IEBAIE9TU3RhdHVzIEF1ZGlvRmlsZVJlYWRlcjo6cmVhZFByb2Modm9pZCogY2xpZW50
RGF0YSwgU0ludDY0IHBvc2l0aW9uLCBVSW50MzIgcmVxCiAgICAgaWYgKHN0YXRpY19jYXN0PFVJ
bnQ2ND4ocG9zaXRpb24pIDwgZGF0YVNpemUpIHsKICAgICAgICAgc2l6ZV90IGJ5dGVzQXZhaWxh
YmxlID0gZGF0YVNpemUgLSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKTsKICAgICAgICAg
Ynl0ZXNUb1JlYWQgPSByZXF1ZXN0Q291bnQgPD0gYnl0ZXNBdmFpbGFibGUgPyByZXF1ZXN0Q291
bnQgOiBieXRlc0F2YWlsYWJsZTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKKyAgICAgICAgbWVt
Y3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgcG9zaXRpb24s
IGJ5dGVzVG9SZWFkKTsKICAgICB9CiAKICAgICBpZiAoYWN0dWFsQ291bnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwCmluZGV4IDc1Y2RjMGZhODIxNDQwMzk4YTczYmE3ODIxNGVmMjZmNjE2MDBmMzcuLjVhYTc4
OWEyY2M2MmZlYmRjMDFjYzM1YTNmN2U1NjgxZTM3ZTE5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBA
IC05OCw3ICs5OCw3IEBAIE9TU3RhdHVzIEF1ZGlvRmlsZVJlYWRlcjo6cmVhZFByb2Modm9pZCog
Y2xpZW50RGF0YSwgU0ludDY0IHBvc2l0aW9uLCBVSW50MzIgcmVxCiAgICAgaWYgKHN0YXRpY19j
YXN0PFVJbnQ2ND4ocG9zaXRpb24pIDwgZGF0YVNpemUpIHsKICAgICAgICAgc2l6ZV90IGJ5dGVz
QXZhaWxhYmxlID0gZGF0YVNpemUgLSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKTsKICAg
ICAgICAgYnl0ZXNUb1JlYWQgPSByZXF1ZXN0Q291bnQgPD0gYnl0ZXNBdmFpbGFibGUgPyByZXF1
ZXN0Q291bnQgOiBieXRlc0F2YWlsYWJsZTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKKyAgICAg
ICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgcG9z
aXRpb24sIGJ5dGVzVG9SZWFkKTsKICAgICB9IGVsc2UKICAgICAgICAgYnl0ZXNUb1JlYWQgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKaW5kZXggNWU1ZDM5ODBiODA0YWY0MmI4
NTBjNWJlZjI4MzRlNTAxNmZmMWRkOS4uOTU0ZTU0MWQxOGZiMWEzN2YyZDA3NWZjNmY0ZThlYTlk
OGUzYzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJp
Y0N1ZSYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3Ry
aW5nJiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VX
ZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJ
U09XZWJWVFRDdWUmJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggMDUwMjI0NDFmZmUxZjI3NThkZWYzN2Q4NGI2YmM4N2Ux
OWYyMjAxMC4uMGRkMDFiZTdhN2Y4MzUxNjYxMWIyYmYxMzhhNmYyZjIwZjg1YTg1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC04Niw3ICs4
Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHByb2Nlc3NOYXRpdmVTYW1wbGVzKENGQXJyYXlS
ZWYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkQ3VlcygpOwog
Ci0gICAgVmVjdG9yPGNoYXI+IG1fc2FtcGxlSW5wdXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fc2FtcGxlSW5wdXRCdWZmZXI7CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDBkZWE4
MGUyYmNhNDc4ZWQ0YzAyYWUxYTBiMDU2NTRiODRkMjlkNTAuLmExNjFjNDdjNTBkYjgyODQ3ZTZm
ZjJkNjg1MjhiZDhjY2M3MjJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVh
ZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5k
YXRhQXNDaGFyUHRyKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQg
PSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBi
dWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVj
b2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMs
IGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhy
ZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmlu
ZGV4IDFkMWZjZTZhZGNkNmI5YmU5NjNjZjUxNGJkMTI1MWE5NjY4OTQ3MDguLjUyZGE3M2Q4YmJh
Y2VjZTA1ZWIyNGQ1NmM4ZGM4ZjE5NjI2YjVjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKQEAgLTg0LDEyICs4NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5uZXJEZWNv
ZGVyKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWZQdHI8SW5uZXJEZWNvZGVyPiBj
cmVhdGUoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyJiBkZWNvZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBn
c3NpemUgc2l6ZSkKKyAgICAgICAgc3RhdGljIFJlZlB0cjxJbm5lckRlY29kZXI+IGNyZWF0ZShJ
bWFnZURlY29kZXJHU3RyZWFtZXImIGRlY29kZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGdzc2l6
ZSBzaXplKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbm5l
ckRlY29kZXIoZGVjb2RlciwgZGF0YSwgc2l6ZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgSW5u
ZXJEZWNvZGVyKEltYWdlRGVjb2RlckdTdHJlYW1lciYgZGVjb2RlciwgY29uc3QgY2hhciogZGF0
YSwgZ3NzaXplIHNpemUpCisgICAgICAgIElubmVyRGVjb2RlcihJbWFnZURlY29kZXJHU3RyZWFt
ZXImIGRlY29kZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGdzc2l6ZSBzaXplKQogICAgICAgICAg
ICAgOiBtX2RlY29kZXIoZGVjb2RlcikKICAgICAgICAgICAgICwgbV9ydW5Mb29wKFJ1bkxvb3A6
OmN1cnJlbnQoKSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGVhOGUxMDcyYTk3MWY3MTIxNzE3MGI2MTNl
N2FlNzY4YmFlZGZlYzYuLjRjMWNiOGFjOTY2NWFlYmM3MWNkODIwYWJhYzM0ZDg4NzI1NDMxMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUoKQogCiAgICAgICAgIEdTVF9JTkZPKCJUcmFjayAl
ZCBwYXJzaW5nIHNhbXBsZTogJS4qcyIsIG1faW5kZXgsIHN0YXRpY19jYXN0PGludD4obWFwcGVk
QnVmZmVyLnNpemUoKSksCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihtYXBw
ZWRCdWZmZXIuZGF0YSgpKSk7Ci0gICAgICAgIGNsaWVudCgpLT5wYXJzZVdlYlZUVEN1ZURhdGEo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwcGVkQnVmZmVyLmRhdGEoKSksIG1hcHBlZEJ1ZmZl
ci5zaXplKCkpOworICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKG1hcHBlZEJ1
ZmZlci5kYXRhKCksIG1hcHBlZEJ1ZmZlci5zaXplKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggZmVmNjY1MTI4YWM5MGMxYjAwYTM3Yjg4
ODczZWQ3MTE3NGIwNzc3NC4uMzMwMjhhNWU5NGM5Y2U3MDRhMTM4ZjAzYjkzNGRjMTFlMjlkZTM0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPElt
YWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQo
c2l6ZSwgbmF0aXZlSW1hZ2UtPmhhc0FscGhhKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0Fs
cGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICNpZiBVU0UoQ0FJUk8pCiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpOwotICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZURhdGEgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2VEYXRhID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShzdXJmYWNlKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+dXBkYXRl
Q29udGVudHMoaW1hZ2VEYXRhLCBJbnRSZWN0KEludFBvaW50KCksIHNpemUpLCBJbnRQb2ludCgp
LCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UKICAgICAg
ICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcAppbmRleCA0YjhhZTZhMGNkODU0NmRlZjY2Zjc0YjlmNjk3NjIzYWUyNGQ0MGEwLi42ZDAz
ODYzYjM2NmMyNDVmNDQyZjc0MzkzNzE5YWJlYWRhNWM0YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVk
QnVmZmVyKiBmb250RGF0YSwgRU9USGVhZGVyJiBlb3RIZWFkZXIsIHNpemVfdCYgb3ZlcmxheUQK
IAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdy
aXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5z
IHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFj
dGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBT
aGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8Y2hh
cj4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3
cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0
YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0zNzUsNyArMzc1LDcgQEAg
Ym9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmlu
ZyYgZm9udE5hbWUsIFZlY3RvcjxjaGEKICAgICBzaXplX3QgbmFtZVRhYmxlU2l6ZSA9ICgob2Zm
c2V0b2YobmFtZVRhYmxlLCBuYW1lUmVjb3JkcykgKyBuYW1lUmVjb3JkQ291bnQgKiBzaXplb2Yo
bmFtZVJlY29yZCkgKyBmb250TmFtZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpICYgfjMpICsg
NDsKIAogICAgIHJld3JpdHRlbkZvbnREYXRhLnJlc2l6ZShmb250RGF0YS5zaXplKCkgKyBuYW1l
VGFibGVTaXplKTsKLSAgICBjaGFyKiBkYXRhID0gcmV3cml0dGVuRm9udERhdGEuZGF0YSgpOwor
ICAgIGF1dG8qIGRhdGEgPSByZXdyaXR0ZW5Gb250RGF0YS5kYXRhKCk7CiAgICAgbWVtY3B5KGRh
dGEsIGZvbnREYXRhLmRhdGEoKSwgb3JpZ2luYWxEYXRhU2l6ZSk7CiAKICAgICAvLyBNYWtlIHRo
ZSB0YWJsZSBkaXJlY3RvcnkgZW50cnkgcG9pbnQgdG8gdGhlIG5ldyAnbmFtZScgdGFibGUuCkBA
IC00MTcsNyArNDE3LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3RvcjxjaGEKIC8vIFJlbmFtZSB0aGUg
Zm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KIFJlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewotICAgIFZlY3Rvcjxj
aGFyPiByZXdyaXR0ZW5Gb250RGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9u
dERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVu
Rm9udERhdGEpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aAppbmRleCBkZDI3NjkyY2E1ZDNmZTZjZjFlMWMyN2Q3MjUyYmNjNDhjNWZlODM3Li5mY2YxZjI3
MjJmYjUxNzYyN2FlNmNjMjc3MWYyMjBkMGYyOTc4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIH07CiAKIGJvb2wgZ2V0RU9USGVhZGVy
KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92
ZXJsYXlEc3QsIHNpemVfdCYgb3ZlcmxheVNyYywgc2l6ZV90JiBvdmVybGF5TGVuZ3RoKTsKLWJv
b2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8
Y2hhcj4mKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmLCBWZWN0b3I8dWludDhfdD4mKTsKIFJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCAzNjJiNjQy
ZTUwOGI4MDc5MDEzZWZkYWZlMGQ0YTgxZWFhYTE3ZjFmLi42NzBlMzdkM2ZiZDczMzc4M2JjYzhm
NzU5YjVkMDdmNjhiZWUyZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMTA0LDggKzEw
NCw4IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBz
cmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSCiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtX2lkKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0Owot
ICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc3JjRGF0YSk7
Ci0gICAgVmVjdG9yPGNoYXI+IHRlbXBvcmFyeURhdGE7CisgICAgY29uc3QgdWludDhfdCogZGF0
YSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzcmNEYXRhKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gdGVtcG9yYXJ5RGF0YTsKICAgICBJbnRQb2ludCBhZGp1c3RlZFNvdXJjZU9mZnNldCA9
IHNvdXJjZU9mZnNldDsKIAogICAgIC8vIFRleHR1cmUgdXBsb2FkIHJlcXVpcmVzIHN1YmltYWdl
IGJ1ZmZlciBpZiBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IHN1YmltYWdlIGFuZCB3ZSBkb24ndCBo
YXZlIGZ1bGwgaW1hZ2UgdXBsb2FkLgpAQCAtMTE1LDEwICsxMTUsMTAgQEAgdm9pZCBCaXRtYXBU
ZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJl
Y3QmIHRhcmdldFIKICAgICAvLyBwcmVwYXJlIHRlbXBvcmFyeURhdGEgaWYgbmVjZXNzYXJ5CiAg
ICAgaWYgKHJlcXVpcmVTdWJJbWFnZUJ1ZmZlcikgewogICAgICAgICB0ZW1wb3JhcnlEYXRhLnJl
c2l6ZSh0YXJnZXRSZWN0LndpZHRoKCkgKiB0YXJnZXRSZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQ
aXhlbCk7Ci0gICAgICAgIGNoYXIqIGRzdCA9IHRlbXBvcmFyeURhdGEuZGF0YSgpOworICAgICAg
ICB1aW50OF90KiBkc3QgPSB0ZW1wb3JhcnlEYXRhLmRhdGEoKTsKICAgICAgICAgZGF0YSA9IGRz
dDsKLSAgICAgICAgY29uc3QgY2hhciogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihz
cmNEYXRhKTsKLSAgICAgICAgY29uc3QgY2hhciogc3JjID0gYml0cyArIHNvdXJjZU9mZnNldC55
KCkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsKKyAg
ICAgICAgY29uc3QgdWludDhfdCogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
cmNEYXRhKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogc3JjID0gYml0cyArIHNvdXJjZU9mZnNl
dC55KCkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsK
ICAgICAgICAgY29uc3QgaW50IHRhcmdldEJ5dGVzUGVyTGluZSA9IHRhcmdldFJlY3Qud2lkdGgo
KSAqIGJ5dGVzUGVyUGl4ZWw7CiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGFyZ2V0UmVj
dC5oZWlnaHQoKTsgKyt5KSB7CiAgICAgICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIHRhcmdldEJ5
dGVzUGVyTGluZSk7CkBAIC0xNTcsMTEgKzE1NywxMSBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6
dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBj
bwogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgYnl0ZXNQZXJMaW5lOwotICAgIGNvbnN0IGNo
YXIqIGltYWdlRGF0YTsKKyAgICBjb25zdCB1aW50OF90KiBpbWFnZURhdGE7CiAKICNpZiBVU0Uo
Q0FJUk8pCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpOwotICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOworICAgIGltYWdl
RGF0YSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAgYnl0ZXNQ
ZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogI2VsaWYg
VVNFKERJUkVDVDJEKQogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVz
LmNwcAppbmRleCBlYmFkZjRjNjBkNmRlZWVlOTU1MmIwMTkxYWYxZmRkNTIyM2NhOWJiLi4zNzhm
MGY2MTAyNzYyNjNjMGI5YTdhMzBmYTczNmFhZTJhZTAzMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxp
dGllcy5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBJRFdyaXRlRm9udENvbGxlY3Rpb24xKiB3ZWJQ
cm9jZXNzRm9udENvbGxlY3Rpb24oKQogICAgIHJldHVybiBmb250Q29sbGVjdGlvbi5nZXQoKTsK
IH0KIAotSFJFU1VMVCBhZGRGb250RnJvbURhdGFUb1Byb2Nlc3NDb2xsZWN0aW9uKGNvbnN0IFZl
Y3RvcjxjaGFyPiYgZm9udERhdGEpCitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0Nv
bGxlY3Rpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmb250RGF0YSkKIHsKICAgICBDT01QdHI8
SURXcml0ZUZvbnRGaWxlPiBmb250RmlsZTsKICAgICBIUkVTVUxUIGhyID0gbWVtb3J5Rm9udExv
YWRlcigpLT5DcmVhdGVJbk1lbW9yeUZvbnRGaWxlUmVmZXJlbmNlKGZhY3RvcnkoKSwgZm9udERh
dGEuZGF0YSgpLCBmb250RGF0YS5zaXplKCksIG51bGxwdHIsICZmb250RmlsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0
ZVV0aWxpdGllcy5oCmluZGV4IDcyYWM2ODEzYTI2NGJmYTMyYmYwNTFiMGQ4MDgxZWY2ODE1MTFj
OTkuLmE2MjcxOWIxNzE5YTc0Zjk3NjkyMjE5ZGY1ZjdhYWVkYzQ5MDY0NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0
ZVV0aWxpdGllcy5oCkBAIC01Miw3ICs1Miw3IEBAIElEV3JpdGVHZGlJbnRlcm9wKiBnZGlJbnRl
cm9wKCk7CiAKIElEV3JpdGVGb250Q29sbGVjdGlvbjEqIHdlYlByb2Nlc3NGb250Q29sbGVjdGlv
bigpOwogCi1IUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0NvbGxlY3Rpb24oY29uc3Qg
VmVjdG9yPGNoYXI+JiBmb250RGF0YSk7CitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vz
c0NvbGxlY3Rpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmb250RGF0YSk7CiBDT01QdHI8SURX
cml0ZUZvbnRGYW1pbHk+IGZvbnRGYW1pbHlGb3JDb2xsZWN0aW9uKElEV3JpdGVGb250Q29sbGVj
dGlvbiosIGNvbnN0IFZlY3Rvcjx3Y2hhcl90PiYgbG9jYWxlTmFtZSwgY29uc3QgTE9HRk9OVCYp
OwogQ09NUHRyPElEV3JpdGVGb250PiBjcmVhdGVXaXRoUGxhdGZvcm1Gb250KGNvbnN0IExPR0ZP
TlQmKTsKIFZlY3Rvcjx3Y2hhcl90PiBmYW1pbHlOYW1lRm9yTG9jYWxlKElEV3JpdGVGb250RmFt
aWx5KiwgY29uc3QgVmVjdG9yPHdjaGFyX3Q+JiBsb2NhbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDZkMzkxNTA3MTA4YzFiZWUyNjVhNzE4ZGEwNDc1YjA1OGY4
MjI2ODIuLmZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBp
bmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFy
a2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBi
dWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtYXJrZXItPmRhdGEg
KyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNp
emUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCA2NGRm
NzUwMmUxYjMxNWI5YThkZDI5MDhmMjQ4Y2VhMTViZjEwNjU4Li5hMTg1YzA3ZGIyN2VmMTYyM2Qw
Mzc2NzYzNGEzZDE3MmFhZDBkZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmgKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICBDTVRpbWUg
bV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wIHsga0NNVGltZUludmFsaWQgfTsK
ICAgICBDTVRpbWUgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uIHsga0NNVGltZUludmFsaWQgfTsK
IAotICAgIFZlY3RvcjxjaGFyPiBtX3NvdXJjZUJ1ZmZlcjsKLSAgICBWZWN0b3I8Y2hhcj4gbV9k
ZXN0aW5hdGlvbkJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9zb3VyY2VCdWZmZXI7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGVzdGluYXRpb25CdWZmZXI7CiAKICAgICBSZXRhaW5QdHI8
Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKICAgICBzaXplX3QgbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDEzYTIzMmMxMjhhOTc1ZTBjYjBjMzU3OWI4
NTBkYzI4N2YyZWRlYTAuLmY1Zjg1NTg3MWZjNzA4NTY2ZjdlZjhiOWExNjFlMjdiOGU1ZDg5ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9p
ZCByZXN1bWUoKTsKIAotICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsK
KyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYXVkaW9CaXRSYXRlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KaW5kZXggZDcxMDVjMmZhNDAwY2FmZTg4M2QyYjZiNzUxZDk3MjVhZmNlOTdiZC4u
NjNiZDY1OThkMDJhNWM3MDA2ZGE5MjlmYzk0ZjFmNWY2NmE3MTZkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtNzQsMTQg
Kzc0LDE0IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXImKXdyaXRlcgogLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3Nl
dFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTooTlNE
YXRhICopZnJhZ21lbnRlZEhlYWRlckRhdGEKIHsKICAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0
ZXIpOwotICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihb
ZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0
aF0pOworICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxl
bmd0aF0pOwogfQogCiAtICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRX
cml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRNZWRpYURhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRN
ZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydDooQVZGcmFnbWVudGVkTWVkaWFEYXRh
UmVwb3J0ICopZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydAogewogICAgIFVOVVNFRF9QQVJBTShh
c3NldFdyaXRlcik7CiAgICAgVU5VU0VEX1BBUkFNKGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQp
OwotICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJh
Z21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKTsK
KyAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2Zy
YWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSk7
CiB9CiAKIC0gKHZvaWQpY2xvc2UKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiAgICAgbV9mZXRjaERhdGFDb21w
bGV0aW9uSGFuZGxlcih0YWtlRGF0YSgpLCBjdXJyZW50VGltZUNvZGUpOwogfQogCi12b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhTG9jayB9OwogICAgIGlmICghbV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCmluZGV4IDQzODQwYTNkNjFlOTdlY2QxYWMxOWZlNzM2NWI5OGFjZDdm
MTY2NDAuLjVjYjYwYjllZjZlZjU3YTQzYjRlZWY3MmExMzc2NzliMWFlYmQ2NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNv
dXJjZVByaXZhdGUqIHBhcmVudCkKIAogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6On5Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAotdm9pZCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBt
X2lucHV0QnVmZmVyLmFwcGVuZFZlY3RvcihkYXRhKTsKICAgICBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRSZXN1bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6
QXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmgKaW5kZXggZGZiZjM2YTFlYzY3NGYzYmQ4MGIyOGFhZTgwMTk4OWU1OWU2MTQ3NC4u
MTRmMTU4ZDYwMzFhNjUxZDQwMjcxYWY1ZWIwMDM2NGI4ZWMzNTk1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsK
IAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1
aW50OF90PiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNl
dFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkg
ZmluYWw7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIG1fbWluaW11
bVVwY29taW5nUHJlc2VudGF0aW9uVGltZTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2VucXVldWVk
U2FtcGxlczsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVwdGg7Ci0g
ICAgVmVjdG9yPGNoYXI+IG1faW5wdXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1faW5w
dXRCdWZmZXI7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKaW5kZXggN2FkZGNlMzk4MzA5Nzg3YzNkM2FhZjBjNGVjZTQ0NDQwYjY4YTYz
Ni4uYjhhMTUzZmMxYzE4ZTM3YTdkOGJhM2M4ZmU3YzhlMGRlN2EzZWFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTMxMCw3ICsz
MTAsOCBAQCBib29sIGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIHZh
bHVlKQogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0g
MTI4Owotc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciogcCwgc2l6ZV90
IGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIFN0cmluZyB0cmlt
SW5wdXRTYW1wbGUoQ2hhclR5cGUqIHAsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgU3RyaW5nIHMg
PSBTdHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW5ndGgsIG1heElucHV0U2FtcGxlU2l6ZSkp
OwogICAgIGlmIChsZW5ndGggPiBtYXhJbnB1dFNhbXBsZVNpemUpCkBAIC02MzEsMTQgKzYzMiwx
NSBAQCBib29sIHBhcnNlUmFuZ2UoY29uc3QgU3RyaW5nJiByYW5nZSwgbG9uZyBsb25nJiByYW5n
ZU9mZnNldCwgbG9uZyBsb25nJiByYW5nZUVuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hhciogY2hh
cmFjdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc1ZhbGlkSGVhZGVyTmFtZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikK
IHsKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMu
MgogICAgIC8vIEEgaGVhZGVyIG5hbWUgc2hvdWxkIG9ubHkgY29udGFpbiBvbmUgb3IgbW9yZSBv
ZgogICAgIC8vIGFscGhhbnVtZXJpYyBvciAhICMgJCAlICYgJyAqICsgLSAuIF4gXyBgIHwgfgot
ICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKCpjaGFyYWN0ZXIpKQorICAgIGlmIChpc0FTQ0lJ
QWxwaGFudW1lcmljKGNoYXJhY3RlcikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHN3aXRj
aCAoKmNoYXJhY3RlcikgeworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CiAgICAgY2FzZSAnISc6
CiAgICAgY2FzZSAnIyc6CiAgICAgY2FzZSAnJCc6CkBAIC02NjAsMTYgKzY2MiwxNiBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hhciogY2hh
cmFjdGVyKQogICAgIH0KIH0KIAotc2l6ZV90IHBhcnNlSFRUUEhlYWRlcihjb25zdCBjaGFyKiBz
dGFydCwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdWaWV3JiBu
YW1lU3RyLCBTdHJpbmcmIHZhbHVlU3RyLCBib29sIHN0cmljdCkKK3NpemVfdCBwYXJzZUhUVFBI
ZWFkZXIoY29uc3QgdWludDhfdCogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVy
ZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3RyaW5nJiB2YWx1ZVN0ciwgYm9vbCBzdHJp
Y3QpCiB7Ci0gICAgY29uc3QgY2hhciogcCA9IHN0YXJ0OwotICAgIGNvbnN0IGNoYXIqIGVuZCA9
IHN0YXJ0ICsgbGVuZ3RoOworICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBzdGFydDsKKyAgICBjb25z
dCB1aW50OF90KiBlbmQgPSBzdGFydCArIGxlbmd0aDsKIAotICAgIFZlY3RvcjxjaGFyPiBuYW1l
OwotICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICBWZWN0b3I8dWludDhfdD4gbmFtZTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gdmFsdWU7CiAKICAgICBib29sIGZvdW5kRmlyc3ROYW1lQ2hhciA9
IGZhbHNlOwotICAgIGNvbnN0IGNoYXIqIG5hbWVQdHIgPSBudWxscHRyOworICAgIGNvbnN0IHVp
bnQ4X3QqIG5hbWVQdHIgPSBudWxscHRyOwogICAgIHNpemVfdCBuYW1lU2l6ZSA9IDA7CiAKICAg
ICBuYW1lU3RyID0gU3RyaW5nVmlldygpOwpAQCAtNjkyLDcgKzY5NCw3IEBAIHNpemVfdCBwYXJz
ZUhUVFBIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFp
bHVyZVJlYXNvbiwKICAgICAgICAgY2FzZSAnOic6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIo
cCkpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoKnApKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG5hbWUuc2l6ZSgpIDwgMSkKICAgICAgICAgICAgICAgICAg
ICAgZmFpbHVyZVJlYXNvbiA9ICJVbmV4cGVjdGVkIHN0YXJ0IGNoYXJhY3RlciBpbiBoZWFkZXIg
bmFtZSI7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtNzQ3LDcgKzc0OSw3IEBAIHNpemVfdCBw
YXJzZUhUVFBIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYg
ZmFpbHVyZVJlYXNvbiwKICAgICByZXR1cm4gcCAtIHN0YXJ0OwogfQogCi1zaXplX3QgcGFyc2VI
VFRQUmVxdWVzdEJvZHkoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+JiBib2R5KQorc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5KGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1aW50OF90PiYgYm9keSkKIHsKICAg
ICBib2R5LmNsZWFyKCk7CiAgICAgYm9keS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCBhODY5ZWY3OWJi
NWQyMWJhMzliYjJjMDZlOWNlOGNmM2QzOGY5ODQwLi4xYjFhNGQwYmE4MzhiMmQwYTMyNTU0Yzcz
OWQ4OWI2MWFhYzc4NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oCkBAIC05MSw4ICs5MSw4IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFyc2VS
YW5nZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJhbmdlT2Zmc2V0LCBsb25nIGxvbmcmCiBD
b250ZW50VHlwZU9wdGlvbnNEaXNwb3NpdGlvbiBwYXJzZUNvbnRlbnRUeXBlT3B0aW9uc0hlYWRl
cihTdHJpbmdWaWV3IGhlYWRlcik7CiAKIC8vIFBhcnNpbmcgQ29tcGxldGUgSFRUUCBNZXNzYWdl
cy4KLXNpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdWaWV3JiBuYW1lU3RyLCBTdHJpbmcmIHZh
bHVlU3RyLCBib29sIHN0cmljdCA9IHRydWUpOwotc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYg
Ym9keSk7CitzaXplX3QgcGFyc2VIVFRQSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3Ry
aW5nJiB2YWx1ZVN0ciwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKK3NpemVfdCBwYXJzZUhUVFBSZXF1
ZXN0Qm9keShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBWZWN0b3I8dWludDhf
dD4mIGJvZHkpOwogCiAvLyBIVFRQIEhlYWRlciByb3V0aW5lIGFzIHBlciBodHRwczovL2ZldGNo
LnNwZWMud2hhdHdnLm9yZy8jdGVybWlub2xvZ3ktaGVhZGVycwogYm9vbCBpc0ZvcmJpZGRlbkhl
YWRlck5hbWUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKaW5kZXggZDZjOGNiOTAxNzBmZWRm
YzFiNTVjZTVkN2VjZDgyZjVjZjgwYTM5Mi4uNmRlMWEzZjhhMWY5YjYzZDFlNzFmYjNhYTdjZTQy
NTM0MWE2NTFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIFNvY2tldFN0cmVh
bUhhbmRsZTo6U29ja2V0U3RyZWFtU3RhdGUgU29ja2V0U3RyZWFtSGFuZGxlOjpzdGF0ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpz
ZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wp
PiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nIHx8
IG1fc3RhdGUgPT0gQ2xvc2luZykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKLSAgICBwbGF0Zm9ybVNlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIGxlbmd0aCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBsYXRmb3Jt
U2VuZChkYXRhLCBsZW5ndGgsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwg
c3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mJiBoZWFkZXJGaWVs
ZFByb3h5LCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZS5oCmluZGV4IGNhMTFhNjEzYTY5MTBkODY2Yjg1OTdlMmEyODIzNDRkZDJlMGU3NTMuLjBiOTkz
ZDc4Y2Q0YWVhYWJiOTRmNzMzOTY5Y2VkODhmZjI5NTk4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNTMsNyAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCkgPSBkZWZh
dWx0OwogICAgIFNvY2tldFN0cmVhbVN0YXRlIHN0YXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNl
bmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+KTsKKyAgICB2b2lkIHNlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+KTsKICAgICB2b2lkIHNlbmRIYW5kc2hha2UoQ1N0cmlu
ZyYmIGhhbmRzaGFrZSwgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eT4mJiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4pOwogICAgIHZvaWQgY2xvc2UoKTsgLy8g
RGlzY29ubmVjdCBhZnRlciBhbGwgZGF0YSBpbiBidWZmZXIgYXJlIHNlbnQuCiAgICAgdm9pZCBk
aXNjb25uZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAppbmRleCA2MGEyM2Q1ZjQ3NzQ5NjM2N2Ux
YjYxYjlmZWNhOWJkMWEwNjJiZjJhLi41ZGU1NTljMGFiZGVkOTE1M2NjZGYwNzdlN2UyYjU2ZTdj
YmU4YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJl
YW1IYW5kbGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0
U3RyZWFtSGFuZGxlJiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1v
dW50KFNvY2tldFN0cmVhbUhhbmRsZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNv
bnN0IFNvY2tldFN0cmVhbUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5oCmluZGV4IDhkZTIyNDVhYTNmY2IyNTEw
MGFlOTBhZTlmZTYwOGM0ZGM4NTQzYjYuLjcxZjdlYmIwZjMyNjRlNjQxZTk3ZmZjYjFmMDRiYjYw
MTIzY2I4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RG93bmxvYWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Rvd25sb2FkQnVuZGxlLmgKQEAgLTMxLDggKzMxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRsZSB7CiAKLWJvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25z
dCBjaGFyKiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Ci1ib29sIGV4dHJh
Y3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPGNoYXI+JiByZXN1
bWVEYXRhKTsKK2Jvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25zdCB1aW50OF90KiwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Citib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0
IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bWVEYXRhKTsKIGNvbnN0
IFN0cmluZyYgZmlsZUV4dGVuc2lvbigpOwogCiB9IC8vIG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4IDYyNTQ4NWJmMWMwZThl
NTgxOWJmNjU0MDU1YmQzODY0MzcxODNhNDguLmQxMzc5NDk4YWFiODFlZTJjYTdhYTA4OWIxYjUw
Zjk5NWMyODI5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTYw
Niw3ICs2MDYsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxs
YmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBlKQogICAgICAgICBpZiAobGVuZ3RoID09IC0xKQog
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRo
aXMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0
U3RyZWFtRGF0YSgqdGhpcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocHRyKSwgbGVu
Z3RoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0
aGlzLCBwdHIsIGxlbmd0aCk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3Bw
CmluZGV4IDg0ODEwN2NjNmFkZjA1OGRhYTg4ZDg0NjgwMmEzNmZkOGQ3N2RlMDUuLjA1YjRlMjli
YzkzMWMxNDM0NWI0Nzk1OThiYWVlNjdlYjRiNjhjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtOTgs
NyArOTgsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5Ojppc0NhY2hlZCgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZUNhY2hlZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFvcGVuQ29udGVu
dEZpbGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCA0NzI3NjJjN2Y1
NTJjZGMwZDk0NGY5OTBjYWEzMGQyNmM4MDIzYTI1Li4yNDYxNDA4YmZhNjIyNGRkMTUwOGQxYzQz
ZjI3NmY2MjFkNmEyNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgc2l6ZV90IGVudHJ5U2l6ZSgpOwogICAgIEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
KCkgeyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgYm9vbCBzYXZlQ2FjaGVkRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QpOworICAgIGJvb2wgc2F2ZUNhY2hlZERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICBib29sIHJlYWRDYWNoZWREYXRhKFJlc291
cmNlSGFuZGxlKik7CiAKICAgICBib29sIHNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGU2OWY2YzM1Nzc1ZWRlY2NlYjIy
ZTg1MTU0NjUzYTk0ODYyNmZiY2QuLjc1MDRjOTg4NmZiOGYyNWVmZTc5YTgyNjI2MjgyMDg5ODI2
NzdmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIEN1cmxD
YWNoZU1hbmFnZXI6OmdldENhY2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAg
ICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IDRl
MjQ5YzljMmIwZTlhZjFhZTNhYTQ5M2U4M2I1MThhNjU0MmMzOTIuLmM5ZTI5ZDgwOTcwYzQwNDZl
Nzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSYsIGNvbnN0IGNoYXIqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVf
dCk7IC8vIFNhdmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSYpOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5jcHAKaW5kZXggZmU0MTA3NmQ3NmJhYWQyMWJjZGRjNGEwZTJhZDNiNzY3ZDUyMTU1MC4u
MGQxMzIxMzQzZWVkZDg4ZDM3MDQxZmRmOTcwMTM5YzU2MzFkYzM2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcApAQCAtMzE4LDEyICszMTgsMTIgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpwYXJzZUhlYWRlcnNJZlBvc3NpYmxlKCkKICAgICBpZiAoIWNvbnRlbnRMZW5ndGgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IGF1dG8gY29udGVudCA9IG1fYnVmZmVyLmRh
dGEoKTsKKyAgICBhdXRvKiBjb250ZW50ID0gbV9idWZmZXIuZGF0YSgpOwogCiAgICAgLy8gQ2hl
Y2sgaWYgd2UgaGF2ZSB0aGUgaGVhZGVyIGNsb3Npbmcgc3RyaW5ncy4KLSAgICBpZiAoIXN0cm5z
dHIoY29udGVudCwgIlxyXG5cclxuIiwgY29udGVudExlbmd0aCkpIHsKKyAgICBpZiAoIW1lbW1l
bShjb250ZW50LCBjb250ZW50TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSkgewogICAgICAgICAvLyBT
b21lIHNlcnZlcnMgY2xvc2VzIHRoZSBoZWFkZXJzIHdpdGggb25seSBcbi1zLgotICAgICAgICBp
ZiAoIXN0cm5zdHIoY29udGVudCwgIlxuXG4iLCBjb250ZW50TGVuZ3RoKSkgeworICAgICAgICBp
ZiAoIW1lbW1lbShjb250ZW50LCBjb250ZW50TGVuZ3RoLCAiXG5cbiIsIDIpKSB7CiAgICAgICAg
ICAgICAvLyBEb24ndCBoYXZlIHRoZSBoZWFkZXIgY2xvc2luZyBzdHJpbmcuIFdhaXQgZm9yIG1v
cmUgZGF0YS4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmgKaW5kZXggNmVkNTU2ZjQyYTA1OTAxYjE5YjBmMTAzYjIyYzZhNDlmMzI2MjFhZC4u
YmVjN2E1Mjk2ZmRhMTYxODhhMWFkNDE5YThhMzJhY2IxNjU5Zjg2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgQ3VybE11bHRpcGFydEhhbmRs
ZUNsaWVudCYgbV9jbGllbnQ7CiAKICAgICBTdHJpbmcgbV9ib3VuZGFyeTsKLSAgICBWZWN0b3I8
Y2hhcj4gbV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1faGVhZGVyczsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6Q2hlY2tC
b3VuZGFyeSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggYTMw
OWMyNThjZDlmMTEyZDNiYmNlNmNhYTcxNDgxODM2YTFmYjAxMC4uZTU2NGEwY2U2NjYxNGE0OWEx
MDMxMzY4ODUxYzRkYTg4MjM1MmE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnUKICAgICBp
ZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxD
YWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXIt
PmRhdGFBc0NoYXJQdHIoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6
OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOwogICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwg
V1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAppbmRleCAxYjE1YWYw
MWJjYzBlYWI5MTBmYzNiOWU4YThkNDYzYjdjNjY4NTE5Li5mZjU1ZDM1MjM0Mjc4NmZjZGVhZWZj
NjRmNmNjYmUwMTVmNGM1YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBDdXJs
U3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgICAgICBkZXN0cm95SGFuZGxlKCk7CiAKICAgICBt
X3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWluVGhyZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9
IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFdURk1vdmUocmVjZWl2ZUJ1ZmZlciksIGxlbmd0aCA9IGJ5
dGVzUmVjZWl2ZWRdKENsaWVudCYgY2xpZW50KSBtdXRhYmxlIHsKLSAgICAgICAgY2xpZW50LmRp
ZFJlY2VpdmVEYXRhKHN0cmVhbUlELCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZm
ZXIuZ2V0KCkpLCBsZW5ndGgpOworICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFt
SUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKaW5kZXggMzEzYjAxNzNk
YTVjZDQwNGExZTNmY2FkOTU3M2I4ZmY3YzNhYmQ0Zi4uZTY0NjI5ZmMyMmEyMDk3YTJhZjBiMGMw
MTM5YjIzZDc5MDhjZjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFN0cmVhbS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QpID0gMDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3Qg
Y2hhciosIHNpemVfdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Q3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUpID0gMDsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRG93bmxvYWRC
dW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Eb3dubG9hZEJ1
bmRsZS5oCmluZGV4IGMxMjVkZWIxOGY4NjI1ZGM3NjE3NzI5M2RmMjcyMWI3YzI3MjMzZmEuLjZi
OTc4YmU2Zjg0ZTZlOTM0NzRiZGIyM2RiNmJlYWIzZDU2ZmE2MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Eb3dubG9hZEJ1bmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Eb3dubG9hZEJ1bmRsZS5oCkBAIC0z
MCw4ICszMCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRG93bmxvYWRCdW5k
bGUgewogCi1ib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgY2hhciosIHVpbnQzMl90LCBjb25z
dCBTdHJpbmcmIGJ1bmRsZVBhdGgpOwotYm9vbCBleHRyYWN0UmVzdW1lRGF0YShjb25zdCBTdHJp
bmcmIGJ1bmRsZVBhdGgsIFZlY3RvcjxjaGFyPiYgcmVzdW1lRGF0YSk7Citib29sIGFwcGVuZFJl
c3VtZURhdGEoY29uc3QgdWludDhfdCosIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBh
dGgpOworYm9vbCBleHRyYWN0UmVzdW1lRGF0YShjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgsIFZl
Y3Rvcjx1aW50OF90PiYgcmVzdW1lRGF0YSk7CiBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24o
KTsKIAogfSAvLyBuYW1lc3BhY2UgRG93bmxvYWRCdW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5oCmluZGV4IDJkMDU4NGRhYjVjZmY2ZDE0OTA2Mjk2NDJiYWVhNjUyZmFlYTAwMzMuLmI4MDRm
ZGUwOTczYmJmYjI4MzMxY2Y3YzNhMWYyMGIwNDNlNzRmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRPcGVuKEN1
cmxTdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShDdXJsU3RyZWFtSUQsIHNp
emVfdCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0
IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVh
bUlELCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoQ3Vy
bFN0cmVhbUlELCBDVVJMY29kZSkgZmluYWw7CiAKICAgICBib29sIGlzU3RyZWFtSW52YWxpZGF0
ZWQoKSB7IHJldHVybiBtX3N0cmVhbUlEID09IGludmFsaWRDdXJsU3RyZWFtSUQ7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCmluZGV4IDJmZWNlMDI4ZWZmZGJlODg1MThl
YzdiOGJlMjU5YjBhMDkwODZjY2YuLjRiOTQ5MWMxMTU0M2YyYjYwZjEyZDM2ZTllNmEwY2JhYWUz
NGE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcApAQCAtMTA0LDcg
KzEwNCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkU2VuZERhdGEoQ3VybFN0
cmVhbUlELCBzaXplX3QgbGVuZ3RoKQogICAgIHNlbmRQZW5kaW5nRGF0YSgpOwogfQogCi12b2lk
IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6ZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2Fk
QnVuZGxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25s
b2FkQnVuZGxlV2luLmNwcAppbmRleCA5MDFiMmI3MTBlNGY4MWEzYzgwY2FiMDM5Mzg4NDdlYTE2
NDFlMzI3Li5kODNjM2IyYTYzYjIyYzM5ZTE4YzEyOWU0NGJjOGYyZDM4YjhiMmM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRC
dW5kbGVXaW4uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lv
bigpCiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIAotYm9vbCBhcHBlbmRSZXN1bWVEYXRhKGNv
bnN0IGNoYXIqIHJlc3VtZUJ5dGVzLCB1aW50MzJfdCByZXN1bWVMZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgYnVuZGxlUGF0aCkKK2Jvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25zdCB1aW50OF90KiByZXN1
bWVCeXRlcywgdWludDMyX3QgcmVzdW1lTGVuZ3RoLCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgp
CiB7CiAgICAgaWYgKCFyZXN1bWVCeXRlcyB8fCAhcmVzdW1lTGVuZ3RoKSB7CiAgICAgICAgIExP
R19FUlJPUigiSW52YWxpZCByZXN1bWUgZGF0YSB0byB3cml0ZSB0byBidW5kbGUgcGF0aCIpOwpA
QCAtODksNyArODksNyBAQCBleGl0OgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgZXh0
cmFjdFJlc3VtZURhdGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0b3I8Y2hhcj4mIHJl
c3VtZURhdGEpCitib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0
aCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bWVEYXRhKQogewogICAgIGlmIChidW5kbGVQYXRoLmlz
RW1wdHkoKSkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBjcmVhdGUgcmVzdW1lIGRhdGEg
ZnJvbSBlbXB0eSBkb3dubG9hZCBidW5kbGUgcGF0aCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDhlZDU3MTc0Nzc4
Y2I3YmRhZGNhMzY1MTdmZDc5NDQ1NzM4YzUyZDcuLmM5MjhiNjM3MzQ1MGRhODE1YzkzZjg2N2Nm
YzhkOTk1OGIxZTM1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgVmVjdG9yPGNo
YXI+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRl
c1RvUmVhZCk7CiAKICAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSAwOwogICAgIHNzaXplX3Qg
Ynl0ZXNSZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXgg
ZWNiNmJhZTE2ODk1NjE2N2Y2MWZhZjNkY2EyOTM2NDZjZGNhZDQ4Ni4uMDA5NGY0N2Q0NjQwMWQ1
OWFjYjg1Zjc2NTQzZGE2MmQ3MzhjMGZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1h
Z2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQobG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2
ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAg
ICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwo
KSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhQXNDaGFyUHRyKCks
IGRhdGEoKS0+c2l6ZSgpKTsKKyAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkt
PndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRhdGEoKS0+c2l6ZSgpKTsKICAgICAg
ICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOwogCiAgICAg
ICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cAppbmRleCAxZjViZWY3OWQxNmUyNzZkOWMxMDExMjhiODg5ZDdjZjFiYThmMDRhLi4xMjQ3ZGFh
NjQ2MzlkNmU2ZWFjMTZkMTEyNjM4YjlmOWQ0YTc5NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIGJv
b2wgWE1MRG9jdW1lbnRQYXJzZXI6OnVwZGF0ZUxlYWZUZXh0Tm9kZSgpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgLy8gVGhpcyBvcGVyYXRpb24gbWlnaHQgZmlyZSBtdXRhdGlvbiBldmVu
dCwgc2VlIGJlbG93LgotICAgIG1fbGVhZlRleHROb2RlLT5hcHBlbmREYXRhKFN0cmluZzo6ZnJv
bVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9idWZmZXJlZFRleHQuZGF0YSgp
KSwgbV9idWZmZXJlZFRleHQuc2l6ZSgpKSk7CisgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERh
dGEoU3RyaW5nOjpmcm9tVVRGOChtX2J1ZmZlcmVkVGV4dC5kYXRhKCksIG1fYnVmZmVyZWRUZXh0
LnNpemUoKSkpOwogICAgIG1fYnVmZmVyZWRUZXh0ID0geyB9OwogCiAgICAgbV9sZWFmVGV4dE5v
ZGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggZWRmZjg0NjRmZDUyOTAzNjg2OWRhMGM3
ZTRlYjg0OGZhZjkwYmQzZC4uOWVjNTVmNjE2ZjU4NDNiNmM4MDI3YmMxOWRhN2E2MDU4ZDRhYTYw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRU
cmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCB2b2lkIFJlbW90ZVRleHRU
cmFja1Byb3h5OjpwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogICAgIG1f
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6UGFyc2VXZWJWVFRGaWxlSGVhZGVyKG1faWRlbnRpZmllciwg
aGVhZGVyKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVRleHRU
cmFja1Byb3h5OjpwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKQordm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRDdWVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIW1fY29ubmVj
dGlvblRvV2ViUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpQYXJzZVdlYlZUVEN1ZURhdGEobV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpLCBtX21l
ZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpQYXJzZVdl
YlZUVEN1ZURhdGEobV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSwgbGVuZ3Ro
KSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0VHJhY2tQ
cm94eTo6cGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYmIGN1ZURhdGEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5o
CmluZGV4IGI3NGU4ODJiMTQwYzY2YWM4OTNjYmIyOTg5ZTEwOThiNTAwZWQxOTYuLjc4YjRlODRl
YzJmYmUxYjBjY2RmOTQ4MjBhNjM1ZjhkZDg2YWRkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCkBAIC03Nyw3ICs3
Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoV2ViQ29y
ZTo6SW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRURmls
ZUhlYWRlcihTdHJpbmcmJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKFdlYkNvcmU6OklTT1dlYlZUVEN1ZSYm
KTsKIAogICAgIC8vIFRyYWNrUHJpdmF0ZUJhc2VDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDFiMzU3ZjY4
ZmNhNDM5OWIzZDZhZTQxZWMzOGI4N2UzNDIzOWMxMmQuLjFiNjc0ZTRmOGQ1NmM2Y2VlZjExZjY3
NTBjMTZkOTdjZDdkN2MyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrQmxvYjo6cmVhZERhdGEoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtKQogICAg
IGlmIChieXRlc1RvUmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXplKQogICAgICAgICBieXRlc1Rv
UmVhZCA9IG1fdG90YWxSZW1haW5pbmdTaXplOwogCi0gICAgYXV0byogZGF0YSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGl0ZW0uZGF0YSgpLmRhdGEoKS0+ZGF0YSgpKSArIGl0ZW0u
b2Zmc2V0KCkgKyBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CisgICAgYXV0byogZGF0YSA9IGl0ZW0u
ZGF0YSgpLmRhdGEoKS0+ZGF0YSgpICsgaXRlbS5vZmZzZXQoKSArIG1fY3VycmVudEl0ZW1SZWFk
U2l6ZTsKICAgICBtX2N1cnJlbnRJdGVtUmVhZFNpemUgPSAwOwogCiAgICAgY29uc3VtZURhdGEo
ZGF0YSwgc3RhdGljX2Nhc3Q8aW50PihieXRlc1RvUmVhZCkpOwpAQCAtMzk5LDcgKzM5OSw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkUmVhZChpbnQgYnl0ZXNSZWFkKQogICAgIGNv
bnN1bWVEYXRhKG1fYnVmZmVyLmRhdGEoKSwgYnl0ZXNSZWFkKTsKIH0KIAotdm9pZCBOZXR3b3Jr
RGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFk
KQordm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIG1fdG90YWxSZW1haW5pbmdTaXplIC09IGJ5dGVz
UmVhZDsKIApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93
bmxvYWQoKQogICAgIHJlYWQoKTsKIH0KIAotYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0
ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCitib29sIE5ldHdvcmtE
YXRhVGFza0Jsb2I6OndyaXRlRG93bmxvYWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGJ5dGVz
UmVhZCkKIHsKICAgICBBU1NFUlQoaXNEb3dubG9hZCgpKTsKICAgICBpbnQgYnl0ZXNXcml0dGVu
ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGRhdGEsIGJ5dGVzUmVh
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5oCmluZGV4IGZkOGNkZWYwMjQ4NmYxOWUzZTEwOTk1ZTRjNTMyNWNhZTkwY2JiZDEuLmZk
MTVlMjQ0MDRkOGFkOTQyMTQzMjY2NmM0NzBiNmYxZTQzYmRiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCkBAIC04NSwxMiAr
ODUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNpemVGb3JOZXh0KCk7CiAgICAgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShFcnJvciA9IEVycm9yOjpOb0Vycm9yKTsKICAgICB2
b2lkIHNlZWsoKTsKLSAgICB2b2lkIGNvbnN1bWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBi
eXRlc1JlYWQpOworICAgIHZvaWQgY29uc3VtZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGJ5dGVzUmVhZCk7CiAgICAgdm9pZCByZWFkKCk7CiAgICAgdm9pZCByZWFkRGF0YShjb25zdCBX
ZWJDb3JlOjpCbG9iRGF0YUl0ZW0mKTsKICAgICB2b2lkIHJlYWRGaWxlKGNvbnN0IFdlYkNvcmU6
OkJsb2JEYXRhSXRlbSYpOwogICAgIHZvaWQgZG93bmxvYWQoKTsKLSAgICBib29sIHdyaXRlRG93
bmxvYWQoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCk7CisgICAgYm9vbCB3cml0ZURv
d25sb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpOwogICAgIHZvaWQgY2xl
YW5Eb3dubG9hZEZpbGVzKCk7CiAgICAgdm9pZCBkaWRGYWlsRG93bmxvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmluaXNoRG93bmxvYWQoKTsKQEAgLTEw
MSw3ICsxMDEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhPiBt
X2Jsb2JEYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW0+
IG1fc3RyZWFtOyAvLyBGb3IgYXN5bmNocm9ub3VzIGxvYWRpbmcuCi0gICAgVmVjdG9yPGNoYXI+
IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKICAgICBWZWN0b3I8bG9u
ZyBsb25nPiBtX2l0ZW1MZW5ndGhMaXN0OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3Vz
cGVuZGVkIH07CiAgICAgbG9uZyBsb25nIG1fcmFuZ2VPZmZzZXQgeyBrUG9zaXRpb25Ob3RTcGVj
aWZpZWQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0uY3BwCmluZGV4IDE1YTk5ZWNlMzRhYzE2MDM0ZDZiYmM4ZTQ3YzI4OWUzOGI2
YzkyYjUuLjUyZWI1YjA4ZjE2Y2JhMjMyMTQ5MDI4Y2RhYTgxNTBhZDA0ZTRhOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNw
cApAQCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkQ2xvc2VT
b2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUpCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViU29ja2V0U3RyZWFtOjpEaWRDbG9zZVNvY2tldFN0cmVhbSgpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJl
YW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQg
TmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3Ry
ZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsICZoYW5kbGUgPT0gbV9pbXBsLnB0cigpKTsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2NrZXRTdHJlYW06OkRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgbGVuZ3RoKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVhbTo6RGlk
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEsIGxlbmd0aCkp
KTsKIH0KIAogdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRGYWlsVG9SZWNlaXZlU29ja2V0
U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKaW5kZXgg
NjAwNmIyZTFiN2M2MzIxMjNkZjA4OWI5MjI3YjI2Zjc5MDY4Y2UwNC4uZTI1Njk4NDI2NmNlNWVl
Y2YxNTAyOGE1MjNmNmFhY2Q4M2E2YWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudAogICAgIHZvaWQgZGlkT3BlblNvY2tl
dFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZENsb3NlU29ja2V0U3RyZWFtKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlJiwgY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
U29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxUb1JlY2VpdmVTb2NrZXRTdHJl
YW1EYXRhKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFsOwogICAgIHZvaWQgZGlk
VXBkYXRlQnVmZmVyZWRBbW91bnQoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJiwgc2l6ZV90
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0oV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6U29ja2V0U3RyZWFtRXJyb3ImKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjMjU3ZmExMWQ2
MmEzMTRjMjg2MmRjZDczYjE2YTc4MmM4MTM1MjM2Li45NDZhZjQ3ZGZiN2U2MTFmMWFiNDQxNzM0
YTliMGUxNDE5ZmJlZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwCkBAIC0xNTMsOSArMTUzLDkgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRl
SGFuZGxlKEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1jb25zdCBjaGFy
KiBTaGFyZWFibGVSZXNvdXJjZTo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWFi
bGVSZXNvdXJjZTo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIG1fb2Zmc2V0OworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBtX29m
ZnNldDsKIH0KIAogdW5zaWduZWQgU2hhcmVhYmxlUmVzb3VyY2U6OnNpemUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggNTM3NGQ3Yjk2Y2YyMjE5
YTc2NmJiNzBhYjYwYWM4ODczNjZjMWY0MC4uN2I0N2Y1ZDY4NTFkOWRlMzJkMWMzYTU0NzA1MTYw
YWE0ZjdjNmNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBA
IC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIH5TaGFyZWFibGVSZXNvdXJjZSgpOwogCi0g
ICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHAKaW5kZXggNWExODBiZWVkMTJmNWNkY2RmYmFlNjcwMmU2OTNiOWVhNmUwYTg0NC4uM2M5
NzFhMTNmNDljNWU3NDRkZTYwOWQ4NWRmYTdkZDNlYjVkMTUyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBA
IC0yMjksNyArMjI5LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVEYXRhVG9GaWxlKGNvbnN0IFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhJiBmaWxlRGF0YSwgUGxhdGZvcm0KIHsKICAgICBib29sIHN1
Y2Nlc3MgPSB0cnVlOwogICAgIGZpbGVEYXRhLmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgIGlmICh3cml0ZVRvRmlsZShmZCwg
KGNvbnN0IGNoYXIqKWRhdGEsIHNpemUpID09IC0xKSB7CisgICAgICAgIGlmICh3cml0ZVRvRmls
ZShmZCwgZGF0YSwgc2l6ZSkgPT0gLTEpIHsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggMmY0ODkzODc1MTE0
OTkzMzZmYzYwMDFmNjExYWYwZWFiNWI5YzdmNy4uNWNjNDc0YzUzZTU0MWNhNzE2ZDNlYThhNTg5
OWE1MDQ3MjQwMjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IElj
b25EYXRhYmFzZTo6aWNvbkRhdGEoaW50NjRfdCBpY29uSUQpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZEljb24oY29uc3Qg
U3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGljb25EYXRhKQorc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBpY29uVVJM
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGljb25EYXRhKQogewogICAgIEFTU0VSVCghaXNNYWlu
UnVuTG9vcCgpKTsKICAgICBBU1NFUlQobV9kYi5pc09wZW4oKSk7CkBAIC02MDYsNyArNjA2LDcg
QEAgU3RyaW5nIEljb25EYXRhYmFzZTo6aWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBw
YWdlVVJMKQogICAgIHJldHVybiBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuZ2V0KHBhZ2VVUkwpOwog
fQogCi12b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBp
Y29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpY29uRGF0YSwgc2l6ZV90IGljb25EYXRhU2l6
ZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFz
ZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCwgY29uc3QgdWludDhfdCogaWNvbkRhdGEsIHNpemVfdCBpY29uRGF0YVNpemUsIGNvbnN0
IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIApAQCAtNjM4LDcgKzYzOCw3IEBAIHZvaWQgSWNv
bkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8Y2hh
cj4gZGF0YSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGljb25EYXRhKSwgaWNvbkRh
dGFTaXplIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgeyBpY29uRGF0YSwgaWNvbkRhdGFT
aXplIH07CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGljb25VUkwgPSBpY29uVVJMLmlzb2xhdGVkQ29weSgpLCBpY29uRGF0
YSA9IFdURk1vdmUoZGF0YSksIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVkQ29weSgpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewog
ICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgICAgICBpZiAobV9kYi5pc09wZW4oKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApp
bmRleCAwZTdiY2M3ZWM2M2RmMjUyNzJmY2M1MTM4NjFmY2I5ODFjODRlYzczLi5kMDIxZTJjZDkw
ZDNjZTkzOWNmZTQ0MzgxZTZlZjAyY2YyYzY3Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5n
JiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBib29sKT4mJik7CiAgICAgdm9pZCBsb2FkSWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImJik+JiYpOwogICAgIFN0cmluZyBp
Y29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNldEljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhciosIHNpemVfdCwg
Y29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmIHBhZ2VV
UkwsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiBwcml2YXRl
OgpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4g
aWNvbklERm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBib29sJiBleHBpcmVkKTsKICAgICBib29s
IHNldEljb25JREZvclBhZ2VVUkwoaW50NjRfdCwgY29uc3QgU3RyaW5nJik7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGljb25EYXRhKGludDY0X3QpOwotICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4g
YWRkSWNvbihjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8Y2hhcj4mKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPGludDY0X3Q+IGFkZEljb24oY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+Jik7CiAgICAgdm9pZCB1cGRhdGVJY29uVGltZXN0YW1wKGludDY0X3QgaWNvbklELCBpbnQ2
NF90IHRpbWVzdGFtcCk7CiAgICAgdm9pZCBkZWxldGVJY29uKGludDY0X3QpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQ
cml2YXRlUmVtb3RlLmNwcAppbmRleCAwMmJjNzE2YmI1N2QyZjU4ZjI4ZDU5ZTU4ODBjN2IyNGEx
MDBiMDYwLi5mN2Q3MjNjNjNiZmM2MmFjNTdhYWEwMzVhZjJlYzU4ZGRmMTI0ZjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFRleHRUcmFja1By
aXZhdGVSZW1vdGU6OnBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEpCiB7CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKICAgICBpZiAoYXV0byogY2xpZW50ID0g
dGhpcy0+Y2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+cGFyc2VXZWJWVFRDdWVEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAg
ICAgICBjbGllbnQtPnBhcnNlV2ViVlRUQ3VlRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogfQogCiB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2ViVlRUQ3VlRGF0YVN0
cnVjdChJU09XZWJWVFRDdWUmJiBjdWVEYXRhKQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZTo6YWRkRGF0YUN1ZShNZWRpYVRpbWUmJiBzdGFydCwgTWVkaWFU
aW1lJiYgZW5kLCBJUEM6CiB7CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKICAgICBpZiAoYXV0byog
Y2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+YWRkRGF0YUN1ZShXVEZN
b3ZlKHN0YXJ0KSwgV1RGTW92ZShlbmQpLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihk
YXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgY2xpZW50LT5hZGREYXRhQ3VlKFdU
Rk1vdmUoc3RhcnQpLCBXVEZNb3ZlKGVuZCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9
CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzg0MWE4ZjNiNjk2
YWNkNWQxYTkyNDBkN2QxYjUxM2ViOWFjNjkzMy4uZGQ1NmU3NGVlZWRjY2EzMDMwMjZjMjk1MzNh
ZjgzYTY5NzdlMTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgUmVmPFdlYlNvY2tl
dENoYW5uZWw+IFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm8KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVsKHdl
YlBhZ2VQcm94eUlELCBkb2N1bWVudCwgY2xpZW50KSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6bm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpub3Rp
ZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgV2ViU29ja2V0RnJhbWUgZnJhbWUob3BDb2Rl
LCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZGF0YSwgbGVuZ3RoKTsKICAgICBtX2luc3BlY3Rvci5kaWRT
ZW5kV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgZnJhbWUpOwpAQCAtNTYsMTAgKzU2
LDEwIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyCiBOZXR3b3JrU2VuZFF1ZXVlIFdlYlNvY2tl
dENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tl
dENoYW5uZWwmIGNoYW5uZWwpCiB7CiAgICAgcmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hhbm5lbF0o
YXV0byYgdXRmOFN0cmluZykgewotICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJT
b2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0
cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIGNo
YW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3Ry
aW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpIH0gfSwgdXRmOFN0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgfSwgWyZjaGFubmVsXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgYnl0ZUxlbmd0aCkgewotICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2Nr
ZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEpLCBieXRlTGVuZ3RoKTsKKyAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUo
V2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsK
ICAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5u
ZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgYnl0ZUxlbmd0aCB9IH0s
IGJ5dGVMZW5ndGgpOwogICAgIH0sIFsmY2hhbm5lbF0oRXhjZXB0aW9uQ29kZSBleGNlcHRpb25D
b2RlKSB7CiAgICAgICAgIGF1dG8gY29kZSA9IHN0YXRpY19jYXN0PGludD4oZXhjZXB0aW9uQ29k
ZSk7CkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDb25uZWN0
KFN0cmluZyYmIHN1YnByb3RvY29sLCBTdHJpbmcmJiBleHRlbnNpb25zKQogICAgIG1fY2xpZW50
LT5kaWRDb25uZWN0KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgV2ViU29ja2V0RnJhbWUgY3JlYXRl
V2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUpCitzdGF0aWMgaW5saW5lIFdlYlNv
Y2tldEZyYW1lIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlKQog
ewogICAgIC8vIFRoaXMgaXMgYW4gYXBwcm94aW1hdGlvbiBzaW5jZSBmcmFtZXMgY2FuIGJlIG1l
cmdlZCBvbiBhIHNpbmdsZSBtZXNzYWdlLgogICAgIFdlYlNvY2tldEZyYW1lIGZyYW1lOwpAQCAt
Mjk0LDcgKzI5NCw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVRleHQoU3Ry
aW5nJiYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5zcGVjdG9y
LmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBjcmVhdGVXZWJTb2Nr
ZXRGcmFtZUZvcldlYkluc3BlY3RvcihtZXNzYWdlLnV0ZjgoKS5kYXRhKCksIG1lc3NhZ2UudXRm
OCgpLmxlbmd0aCgpLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0KSk7CisgICAg
YXV0byB1dGY4TWVzc2FnZSA9IG1lc3NhZ2UudXRmOCgpOworICAgIG1faW5zcGVjdG9yLmRpZFJl
Y2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBjcmVhdGVXZWJTb2NrZXRGcmFt
ZUZvcldlYkluc3BlY3RvcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4TWVz
c2FnZS5kYXRhKCkpLCB1dGY4TWVzc2FnZS5sZW5ndGgoKSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZTo6T3BDb2RlVGV4dCkpOwogCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3Nh
Z2UpOwogfQpAQCAtMzE1LDcgKzMxNiw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVj
ZWl2ZUJpbmFyeURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlJiYgZGF0YSkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2Rv
Y3VtZW50LmdldCgpLCBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3RvcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpLCBXZWJTb2Nr
ZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnkpKTsKKyAgICBtX2luc3BlY3Rvci5kaWRSZWNl
aXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3JlYXRlV2ViU29ja2V0RnJhbWVG
b3JXZWJJbnNwZWN0b3IoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBXZWJTb2NrZXRGcmFtZTo6
T3BDb2RlOjpPcENvZGVCaW5hcnkpKTsKIAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5
RGF0YShkYXRhLnZlY3RvcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCAwOTRiYWY2MWY1NDQzYmYzZTliMjZl
OTU0ZmFlOGQ2NTRjMGRlNWQ0Li43MjQxN2UyMzI2MjQxMjdjYzVkYWVkMzQ1MTc2ZGZhM2ExZjRk
OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0Q2hhbm5lbC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVm
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIHZv
aWQgbm90aWZ5U2VuZEZyYW1lKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgbm90aWZ5U2VuZEZyYW1lKFdl
YkNvcmU6OldlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpOwogICAgIHZvaWQgbG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgLy8gTWVzc2FnZSByZWNlaXZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCmluZGV4IDNiNGFjMjliMGRmNzY1YzI0OWY3
NzI1NzFmNDk0NjZjNTg5ZTcxYTguLjA1YjRkNzU5Mjc2MjgyMjZlYjQwNDY4ZTg1MWQwMzI2YTk1
YTNiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0U3RyZWFtLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViU29ja2V0U3RyZWFt
OjpkaWRDbG9zZVNvY2tldFN0cmVhbSgpCiAKIHZvaWQgV2ViU29ja2V0U3RyZWFtOjpkaWRSZWNl
aXZlU29ja2V0U3RyZWFtRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0g
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOwogfQogCiB2b2lkIFdlYlNvY2tldFN0cmVhbTo6ZGlkRmFpbFRvUmVjZWl2ZVNvY2tl
dFN0cmVhbURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCmluZGV4IDY5
ZjBhZTgyNzk1MDdiNzI5NjVmNjVjMjE2ODczYzQ4MWFkZjRkNjAuLjQ2NjkzOWVmMTg3YjRhNTBm
NzMyMGVkZjJjNjE2YzJjZGNmZjU0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRl
cy5jcHAKQEAgLTk3LDE2ICs5Nyw0IEBAIGJvb2wgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6Z2V0
RGF0YUZvck92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6Z2V0RGF0YUZvck92
ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwg
VmVjdG9yPGNoYXI+JiBkYXRhKSBjb25zdAotewotICAgIFZlY3Rvcjx1aW50OF90PiBmb3VuZEJ1
ZmZlcjsKLSAgICBpZiAoIWdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgdHlwZSwg
Zm91bmRCdWZmZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBkYXRhLnJlc2l6ZShm
b3VuZEJ1ZmZlci5zaXplKCkpOwotICAgIG1lbWNweShkYXRhLmRhdGEoKSwgZm91bmRCdWZmZXIu
ZGF0YSgpLCBmb3VuZEJ1ZmZlci5zaXplKCkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmgKaW5kZXgg
ZWMwOTMzZTUxMjVlNzk2MDQ0Y2I4MmMzOGIyNGM1YjIyZWRlYjZjNy4uYTg2NzdmZTU2ZmQ5YWMx
MWMyNDljYWE4ZGZmODgwNTMwYjAzYWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRl
cy5oCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlk
ZGVuVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAKICAgICBib29sIGdldERh
dGFGb3JPdmVycmlkZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwotICAgIGJvb2wgZ2V0RGF0YUZvck92ZXJy
aWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgVmVj
dG9yPGNoYXI+JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV2ViUGFzdGVib2FyZE92ZXJyaWRl
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCAyMGUxY2VkYjg5NzVkYjY0MDFmNGMxNDExZGVmYTFkZDkyOTljNThhLi5mMDAxYTZjY2ZhZDJk
ZThmNGRiMDViODE1ZTFlMTdiNTM4OTNmNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzYwOSw3ICs3NjA5LDcgQEAgdm9pZCBXZWJQYWdl
OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFNoYXJl
ZE1lbW9yeTo6SVAKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVB
bmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSks
IGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6
Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5k
U2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkp
LCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0
OjpObyk7CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDFkMjcwMmFkYjA4Mjc3YzQ0NTA4ZDNkZmJkYzQy
Nzk4NmRjZmMyMmYuLmJlZjYzOWY1NzQ2OTY1Y2U2YTVlNTg4Y2M1YWMzYjQ1YjgzNzlmODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC0xNjAs
MTQgKzE2MCwxNCBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjppbml0VG9SZXN1bWVXaXRoQnVuZGxl
KF9Jbl8gQlNUUiBidW5kbGVQYXRoLCBfSW5fb3B0XyBJV2ViRAogewogICAgIExPRyhEb3dubG9h
ZCwgIkF0dGVtcHRpbmcgcmVzdW1lIG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5k
bGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKIAotICAg
IFZlY3RvcjxjaGFyPiBidWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICBp
ZiAoIURvd25sb2FkQnVuZGxlOjpleHRyYWN0UmVzdW1lRGF0YShTdHJpbmcoYnVuZGxlUGF0aCwg
U3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKSwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAogICAgIC8vIEl0IGlzIHBvc3NpYmxlIGJ5IHNvbWUgdHdpc3Qgb2YgZmF0ZSB0aGUgYnVu
ZGxlIG1hZ2ljIG51bWJlciB3YXMgbmF0dXJhbGx5IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgYW5k
IGl0cyBub3QgYWN0dWFsbHkgYSB2YWxpZCBidW5kbGUuCiAgICAgLy8gVGhhdCwgb3Igc29tZW9u
ZSBlbmdpbmVlcmVkIGl0IHRoYXQgd2F5IHRvIHRyeSB0byBhdHRhY2sgdXMuIEluIHRoYXQgY2F1
c2UsIHRoaXMgQ0ZEYXRhIHdpbGwgc3VjY2Vzc2Z1bGx5IGNyZWF0ZSBidXQgd2hlbiB3ZSBhY3R1
YWxseQogICAgIC8vIHRyeSB0byBzdGFydCB0aGUgQ0ZVUkxEb3dubG9hZCB1c2luZyB0aGlzIGJv
Z3VzIGRhdGEsIGl0IHdpbGwgZmFpbCBhbmQgd2Ugd2lsbCBoYW5kbGUgdGhhdCBncmFjZWZ1bGx5
LgotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VtZURhdGEgPSBhZG9wdENGKENGRGF0YUNy
ZWF0ZSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYnVmZmVyLmRhdGEoKSksIGJ1
ZmZlci5zaXplKCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1bWVEYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGUoMCwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpOwogCiAg
ICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCBmYzczYmYyOGNh
ZWQwNjA2ODI0NDgwNTBkYzFjNmY4YzRhMzQ5OWFjLi41YzkxMjU3NzI1MjY5ZWJiMzQyNTAzY2M3
MTAzMTk0YzMxMTVlNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0
YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgSFJFU1VMVCBXZWJNdXRhYmxl
VVJMUmVxdWVzdDo6c2V0SFRUUEJvZHkoX0luX29wdF8gSVN0cmVhbSogZGF0YSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAogICAgIHNpemVfdCBsZW5ndGggPSBzdGF0LmNiU2l6ZS5Mb3dQYXJ0
OwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IobGVuZ3RoKTsKKyAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yKGxlbmd0aCk7CiAgICAgVUxPTkcgYnl0ZXNSZWFkID0gMDsKICAgICBpZiAoRkFJTEVE
KGRhdGEtPlJlYWQodmVjdG9yLmRhdGEoKSwgc3RhdC5jYlNpemUuTG93UGFydCwgJmJ5dGVzUmVh
ZCkpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cAppbmRleCBmNmQ1YjU2ZWJlNzlkZmUzNDAzOWI3YjVkMzlmOTVkZjE4ODQxMWE3Li5lY2U4NGY4
ZTVlNTNiNzM5YWEzODc5N2VlNTlmZDg1MDY5NjUxNmNmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmNwcApAQCAtMzEyLDggKzMxMiw4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEF1ZGlv
UmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0CiAg
ICAgSlNDOjpKU0FycmF5QnVmZmVyVmlldyoganNCdWZmZXJWaWV3ID0gSlNDOjpqc0R5bmFtaWND
YXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgdG9KUyh0b0pTKGNvbnRleHQpLCBhcmd1
bWVudHNbMF0pKTsKICAgICBBU1NFUlQoanNCdWZmZXJWaWV3KTsKICAgICBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlclZpZXc+IGJ1ZmZlclZpZXcgPSBqc0J1ZmZlclZpZXctPnVuc2hhcmVkSW1wbCgp
OwotICAgIGNvbnN0IGNoYXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZm
ZXJWaWV3LT5iYXNlQWRkcmVzcygpKTsKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBhdWRpb0RhdGEo
YnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOworICAgIGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXJWaWV3LT5i
YXNlQWRkcmVzcygpKTsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBhdWRpb0RhdGEoYnVmZmVy
LCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogCiAgICAgVGVzdFJ1bm5lciog
Y29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOwogICAgIGNvbnRyb2xsZXItPnNldEF1ZGlvUmVzdWx0KGF1ZGlvRGF0YSk7
CkBAIC0yMzY3LDggKzIzNjcsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVz
TWVkaWFJY29uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG1lZAogICAgIEpTQzo6
SlNBcnJheUJ1ZmZlclZpZXcqIGpzQnVmZmVyVmlldyA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIHRvSlModG9KUyhjb250ZXh0KSwgbWVkaWFJY29uKSk7
CiAgICAgQVNTRVJUKGpzQnVmZmVyVmlldyk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJW
aWV3PiBidWZmZXJWaWV3ID0ganNCdWZmZXJWaWV3LT51bnNoYXJlZEltcGwoKTsKLSAgICBjb25z
dCBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyVmlldy0+YmFz
ZUFkZHJlc3MoKSk7Ci0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbWVkaWFJY29uRGF0YShidWZmZXIs
IGJ1ZmZlciArIGJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSk7CisgICAgY29uc3QgdWludDhfdCog
YnVmZmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRy
ZXNzKCkpOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1lZGlhSWNvbkRhdGEoYnVmZmVyLCBi
dWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogICAgIAogICAgIG1fb3BlblBhbmVs
RmlsZXNNZWRpYUljb24gPSBtZWRpYUljb25EYXRhOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5oCmluZGV4IDNlMGE2NzdlMDg3NDYyMWFiNTQ4Njg2M2QxMmU0Nzg4Y2Y1NmVlNWYuLjJlMDQ5
NGUzMGYzZjBiM2E3NDIyZWU3NTkzZjdlN2YzZDY1N2QwYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmgKQEAgLTI5OSw4ICsyOTksOCBAQCBwdWJsaWM6CiAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHRlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RVUkw7IH0KICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhhc2goKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkUGl4
ZWxIYXNoOyB9CiAKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxjaGFyPiYgYXVkaW9SZXN1bHQoKSBj
b25zdCB7IHJldHVybiBtX2F1ZGlvUmVzdWx0OyB9Ci0gICAgdm9pZCBzZXRBdWRpb1Jlc3VsdChj
b25zdCBzdGQ6OnZlY3RvcjxjaGFyPiYgYXVkaW9EYXRhKSB7IG1fYXVkaW9SZXN1bHQgPSBhdWRp
b0RhdGE7IH0KKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgYXVkaW9SZXN1bHQoKSBj
b25zdCB7IHJldHVybiBtX2F1ZGlvUmVzdWx0OyB9CisgICAgdm9pZCBzZXRBdWRpb1Jlc3VsdChj
b25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgYXVkaW9EYXRhKSB7IG1fYXVkaW9SZXN1bHQgPSBh
dWRpb0RhdGE7IH0KIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkoSlNT
dHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBK
U1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMpOwogICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkoSlNTdHJpbmdS
ZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBKU1N0cmlu
Z1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpA
QCAtMzc3LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPGNoYXI+JiBvcGVuUGFuZWxGaWxlc01lZGlhSWNvbigpIGNvbnN0
IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb247IH0KKyAgICBjb25zdCBzdGQ6OnZl
Y3Rvcjx1aW50OF90PiYgb3BlblBhbmVsRmlsZXNNZWRpYUljb24oKSBjb25zdCB7IHJldHVybiBt
X29wZW5QYW5lbEZpbGVzTWVkaWFJY29uOyB9CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlc01l
ZGlhSWNvbihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogI2VuZGlmCiAKQEAgLTQ2OCw3ICs0
NjgsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtX3dpbGxTZW5kUmVx
dWVzdENsZWFySGVhZGVyczsKICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gbV9hbGxvd2VkSG9z
dHM7CiAKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBtX2F1ZGlvUmVzdWx0OworICAgIHN0ZDo6dmVj
dG9yPHVpbnQ4X3Q+IG1fYXVkaW9SZXN1bHQ7CiAKICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywg
c3RkOjpzdHJpbmc+IG1fVVJMc1RvUmVkaXJlY3Q7CiAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBwcml2
YXRlOgogCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1fb3BlblBhbmVsRmlsZXM7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBtX29wZW5QYW5l
bEZpbGVzTWVkaWFJY29uOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1fb3BlblBhbmVsRmls
ZXNNZWRpYUljb247CiAjZW5kaWYKIAogICAgIHN0YXRpYyBKU1JldGFpblB0cjxKU0NsYXNzUmVm
PiBjcmVhdGVKU0NsYXNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCmlu
ZGV4IGJiYTUzYmRiZjk0ZTE5YjNmNzU3MDBlY2FiYWExYzg3ZWY0ZmMyZDguLjI3ZjI2MTQ0NWUy
ZWZlZDkzYTdiNTUzYmVhZDAzZTRlNDk1NGU4N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9V
SURlbGVnYXRlLm1tCkBAIC0zOTYsNyArMzk2LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGkK
ICAgICBhdXRvJiBpY29uRGF0YSA9IGdUZXN0UnVubmVyLT5vcGVuUGFuZWxGaWxlc01lZGlhSWNv
bigpOwogICAgIENHSW1hZ2VSZWYgaW1hZ2VSZWYgPSBudWxscHRyOwogICAgIGlmICghaWNvbkRh
dGEuZW1wdHkoKSkgewotICAgICAgICBhdXRvIGRhdGFSZWYgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZShudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oaWNvbkRhdGEuZGF0YSgp
KSwgaWNvbkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YVJlZiA9IGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlKG51bGxwdHIsIGljb25EYXRhLmRhdGEoKSwgaWNvbkRhdGEuc2l6ZSgpKSk7CiAg
ICAgICAgIGF1dG8gaW1hZ2VQcm92aWRlclJlZiA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVh
dGVXaXRoQ0ZEYXRhKGRhdGFSZWYuZ2V0KCkpKTsKICAgICAgICAgaW1hZ2VSZWYgPSBDR0ltYWdl
Q3JlYXRlV2l0aEpQRUdEYXRhUHJvdmlkZXIoaW1hZ2VQcm92aWRlclJlZi5nZXQoKSwgbnVsbHB0
ciwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="452204"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430666</attachid>
            <date>2021-06-05 17:31:07 -0700</date>
            <delta_ts>2021-06-05 18:25:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226688-20210605173106.patch</filename>
            <type>text/plain</type>
            <size>126425</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjViYzlhNjk5MTRjZTRh
Y2JjNmIwZDQ2NzdjNzVjMjYwNzY4OGMwYS4uODk5YTAxY2IwMjlmMjJiYjczMzc4YzUyN2RlZGM3
YjJmNjcxNDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wNi0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhf
dCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkgdG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNo
YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFN0cmVhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6
OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6
cGFyc2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRGcmFtZVBheWxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6OldlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaW1JbnB1
dFNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2
ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFk
U3RhdHVzTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRI
VFRQSGVhZGVycyk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9TZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
Ojp3cml0ZUFsbFRvRmlsZSk6CisgICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogY3J5
cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRNYXN0ZXJLZXkpOgorICAgICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZEJ5dGVzKToKKyAgICAgICAgKiBkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGRvbS9SYXdEYXRhRG9jdW1l
bnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAqIGh0
bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFj
ay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6ZmlsZUZpbmlzaGVkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1
bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltSW5wdXRTYW1wbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VIVFRQSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJl
cXVlc3RCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpkYXRhQ2hhbmdlZCk6CisKIDIwMjEtMDYtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBJbmxpbmVUZXh0Qm94IHRvIExlZ2FjeUlubGluZVRl
eHRCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNDkyOWU2M2M1NGVhN2I1NjVkM2RmMDQ3ZjFlYTA1MTdiNWY1NGIw
ZC4uYzNkYjA5NjdiNDUyZTk0ZTIzZDcwNWJhMTQ1NjgxOWM2M2QyYjMyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0wNi0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhfdCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkg
dG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRD
dWVEYXRhKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2Vi
VlRUQ3VlRGF0YSk6CisKIDIwMjEtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBPcHRpbWl6ZSBhIGZldyBjYWxsIHNpdGVzIGNyZWF0aW5nIFNoYXJlZEJ1
ZmZlciBvYmplY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oCmluZGV4IGRi
Nzg2ZDMyOTg1NjZjNGIwYmE3NzM5ODIzMDI5Zjg1NTYyMTc3MDMuLjViZTVhY2JiYTIzYzI0ODdj
ODNlN2EyNTI5ZGQ2NmNkYWY2MTY5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
U29ja2V0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVj
dGlvbi5oCkBAIC01OSw5ICs1OSw5IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHU29ja2V0Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIGNvbnN0IE1lc3NhZ2VIYW5kbGVycyYgbV9tZXNz
YWdlSGFuZGxlcnM7CiAgICAgZ3BvaW50ZXIgbV91c2VyRGF0YTsKLSAgICBWZWN0b3I8Y2hhcj4g
bV9yZWFkQnVmZmVyOworICAgIFZlY3RvcjxnY2hhcj4gbV9yZWFkQnVmZmVyOwogICAgIEdTb2Nr
ZXRNb25pdG9yIG1fcmVhZE1vbml0b3I7Ci0gICAgVmVjdG9yPGNoYXI+IG1fd3JpdGVCdWZmZXI7
CisgICAgVmVjdG9yPGdjaGFyPiBtX3dyaXRlQnVmZmVyOwogICAgIEdTb2NrZXRNb25pdG9yIG1f
d3JpdGVNb25pdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcAppbmRleCAxMGY4OGIxODhhMTYxZDgxZDYzMTdjMmY4YTQ2NWI1ZDgxNTk2YWI4Li4yNWY3
NmE1OTQyMTljOTYzZmMzMzY1YWEzNWI1Y2YyNThlNDQzNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0
YS0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1
bmstPnNpemUpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEs
IGNodW5rLT5zaXplKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBX
VEZNb3ZlKGRhdGEpKTsKICAgICAgICAgICAgIH0pOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQg
RE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJl
c3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRv
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNp
emUpOworICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSwgY2h1bmstPnNp
emUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCmluZGV4IDg4YTY3ZTM1NTRhYTQ4Y2MyM2IyMmM1MjEwNmNhZmMxODlmMWU5N2EuLjJh
YjBjYWYxMDBkMGMzMTM4YzJiNjI2NDNkNzNiMjFlYzZiZTllYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzYsNyAr
Mjc2LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICBkYXRhLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2h1bmstPmRh
dGEpLCBjaHVuay0+c2l6ZSk7CisgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5k
YXRhLCBjaHVuay0+c2l6ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YS0+ZGF0YSgpKSwgZGF0
YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiB7CiAgICAgaWYgKG1f
c291cmNlKSB7CiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoZGF0YSwgc2l6ZSkpOwpAQCAtMzM0LDExICszMzQsNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICBtX2J1ZmZl
ci0+YXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKLXsKLSAgICBhcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwotfQotCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIHJl
dHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAzN2QwNTRiMTBjZThkYmVkMTkxYzdiODVmODgx
ZGVlNDZlMDRiMGQyLi4xYjYyNzY2M2JkZDJhNTkwOWNlMWVjM2VmN2E5ODJiMjQ5ZDc1Y2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CkBAIC00Niw4ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1
bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9i
dWZmZXI7IH0KICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHAKaW5kZXggYjM5Nzg2OTVmZDdlZjE5MjE0YjZiOTAxYThmM2YxYTk2ZWUw
ZTBlYy4uZGUxM2MxNzRkMzAzMDk2ZmZlM2NiY2UwNDYwOWNjMjk0ZDBlZjUyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShj
b25zdCB3ZWJydGM6OkRhdGFCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9jbGllbnRMb2NrIH07CiAgICAgaWYgKCFtX2NsaWVudCkgewotICAgICAgICBjb25zdCBjaGFy
KiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEuZGF0YTxj
aGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci5kYXRhLmRhdGE8dWludDhfdD4o
KTsKICAgICAgICAgaWYgKGJ1ZmZlci5iaW5hcnkpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkTWVz
c2FnZXMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ1ZmZlci5zaXplKCkpKTsK
ICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDczZTEwNTAxOGQ4YTI2N2NhYmQ0MmY1MzFi
ZmY4NGU0MDM0ZTUwMWMuLmY4OTQ2MDg3N2RiZmYyMDZjMmViNGY3ZDYzZDI5NzJkZmYwYWE4NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVz
cwogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5l
bDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXIgJXAgYnl0ZU9mZnNldD0ldSBieXRl
TGVuZ3RoPSV1IiwgdGhpcywgJmJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwot
ICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxl
bmd0aCk7CisgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnks
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zm
c2V0LCBieXRlTGVuZ3RoKTsKICAgICBwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7CiAgICAg
cmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KQEAgLTE3
MCw5ICsxNzAsOSBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKEJsb2ImIGJpbmFyeURhdGEpCiAgICAgcmV0dXJuIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KIAotYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitib29sIFdlYlNvY2tldENo
YW5uZWw6OnNlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgY2hhciogZGF0YT0l
cCBsZW5ndGg9JWQiLCB0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBzZW5kKCkgU2VuZGluZyB1aW50OF90KiBkYXRhPSVwIGxlbmd0aD0l
ZCIsIHRoaXMsIGRhdGEsIGxlbmd0aCk7CiAgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGVCaW5hcnksIGRhdGEsIGxlbmd0aCk7CiAgICAgcHJvY2Vzc091dGdvaW5nRnJh
bWVRdWV1ZSgpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBo
YW5kbGUpCiAgICAgZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNl
aXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2
ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCkgUmVjZWl2ZWQgJXp1IGJ5dGVz
IiwgdGhpcywgbGVuZ3RoKTsKICAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxs
eSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsKEV4Y2VwdGlvbkNvZGUgZXJyb3JDb2RlKQogICAgIGRl
cmVmKCk7CiB9CiAKLWJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbikKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9C
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbikKIHsKICAgICBzaXplX3QgbmV3
QnVmZmVyU2l6ZSA9IG1fYnVmZmVyLnNpemUoKSArIGxlbjsKICAgICBpZiAobmV3QnVmZmVyU2l6
ZSA8IG1fYnVmZmVyLnNpemUoKSkgewpAQCAtNDg4LDE0ICs0ODgsMTQgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKIAotICAgIFZl
Y3RvcjxjaGFyPiBidWY7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZjsKICAgICBpZiAoIW1fcmVj
ZWl2ZWRDbG9zaW5nSGFuZHNoYWtlICYmIGNvZGUgIT0gQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZp
ZWQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0ZSA9IGNvZGUgPj4gODsKLSAgICAg
ICAgdW5zaWduZWQgY2hhciBsb3dCeXRlID0gY29kZTsKLSAgICAgICAgYnVmLmFwcGVuZChzdGF0
aWNfY2FzdDxjaGFyPihoaWdoQnl0ZSkpOwotICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0
PGNoYXI+KGxvd0J5dGUpKTsKKyAgICAgICAgdWludDhfdCBoaWdoQnl0ZSA9IGNvZGUgPj4gODsK
KyAgICAgICAgdWludDhfdCBsb3dCeXRlID0gY29kZTsKKyAgICAgICAgYnVmLmFwcGVuZChoaWdo
Qnl0ZSk7CisgICAgICAgIGJ1Zi5hcHBlbmQobG93Qnl0ZSk7CiAgICAgICAgIGF1dG8gcmVhc29u
VVRGOCA9IHJlYXNvbi51dGY4KCk7Ci0gICAgICAgIGJ1Zi5hcHBlbmQocmVhc29uVVRGOC5kYXRh
KCksIHJlYXNvblVURjgubGVuZ3RoKCkpOworICAgICAgICBidWYuYXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlYXNvblVURjguZGF0YSgpKSwgcmVhc29uVVRGOC5sZW5n
dGgoKSk7CiAgICAgfQogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2Rl
Q2xvc2UsIGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOwogICAgIFJlZjxXZWJTb2NrZXRDaGFubmVs
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFu
ZHNoYWtlIG1heSBmYWlsLCB3aGljaCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRl
cmVmZXJlbmNlZC4KQEAgLTUyNCw3ICs1MjQsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnBy
b2Nlc3NGcmFtZSgpCiAgICAgQVNTRVJUKCFtX2J1ZmZlci5pc0VtcHR5KCkpOwogCiAgICAgV2Vi
U29ja2V0RnJhbWUgZnJhbWU7Ci0gICAgY29uc3QgY2hhciogZnJhbWVFbmQ7CisgICAgY29uc3Qg
dWludDhfdCogZnJhbWVFbmQ7CiAgICAgU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIFdlYlNvY2tl
dEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IHJlc3VsdCA9IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZy
YW1lKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpLCBmcmFtZSwgZnJhbWVFbmQsIGVy
cm9yU3RyaW5nKTsKICAgICBpZiAocmVzdWx0ID09IFdlYlNvY2tldEZyYW1lOjpGcmFtZUluY29t
cGxldGUpCkBAIC02NTYsOCArNjU2LDggQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNz
RnJhbWUoKQogICAgICAgICAgICAgZmFpbCgiUmVjZWl2ZWQgYSBicm9rZW4gY2xvc2UgZnJhbWUg
Y29udGFpbmluZyBhbiBpbnZhbGlkIHNpemUgYm9keS4iKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5
dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihmcmFtZS5wYXlsb2FkWzBdKTsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgbG93Qnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGZyYW1lLnBheWxvYWRbMV0pOworICAgICAgICAgICAgYXV0byBoaWdoQnl0ZSA9IGZyYW1lLnBh
eWxvYWRbMF07CisgICAgICAgICAgICBhdXRvIGxvd0J5dGUgPSBmcmFtZS5wYXlsb2FkWzFdOwog
ICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IGhpZ2hCeXRlIDw8IDggfCBsb3dCeXRlOwog
ICAgICAgICAgICAgaWYgKG1fY2xvc2VFdmVudENvZGUgPT0gQ2xvc2VFdmVudENvZGVOb1N0YXR1
c1JjdmQgfHwgbV9jbG9zZUV2ZW50Q29kZSA9PSBDbG9zZUV2ZW50Q29kZUFibm9ybWFsQ2xvc3Vy
ZSB8fCBtX2Nsb3NlRXZlbnRDb2RlID09IENsb3NlRXZlbnRDb2RlVExTSGFuZHNoYWtlKSB7CiAg
ICAgICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IENsb3NlRXZlbnRDb2RlQWJub3JtYWxD
bG9zdXJlOwpAQCAtNzE0LDcgKzcxNCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1
ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgbV9vdXRnb2luZ0ZyYW1lUXVl
dWUuYXBwZW5kKFdURk1vdmUoZnJhbWUpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpl
bnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVl
UmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1
ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKICAgICBhdXRvIGZyYW1lID0gbWFr
ZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICBhdXRvIGZyYW1l
ID0gbV9vdXRnb2luZ0ZyYW1lUXVldWUudGFrZUZpcnN0KCk7CiAgICAgICAgIHN3aXRjaCAoZnJh
bWUtPmZyYW1lVHlwZSkgewogICAgICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZVN0cmluZzogewot
ICAgICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmRh
dGEoKSwgZnJhbWUtPnN0cmluZ0RhdGEubGVuZ3RoKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIHNlbmRGcmFtZShm
cmFtZS0+b3BDb2RlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZS0+c3Ry
aW5nRGF0YS5kYXRhKCkpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAgICAgICAg
ICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNl
bmQgV2ViU29ja2V0IGZyYW1lLiIpOwogICAgICAgICAgICAgfSk7CkBAIC03ODAsNyArNzgwLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAg
ICAgICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IG1fYmxvYkxvYWRlci0+
YXJyYXlCdWZmZXJSZXN1bHQoKTsKICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBudWxs
cHRyOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9IEJsb2JMb2FkZXJOb3RT
dGFydGVkOwotICAgICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2Vzcykgewor
ICAgICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBmYWls
KCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWUuIik7CiAgICAgICAgICAgICAgICAgfSk7
CkBAIC04MTMsNyArODEzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjphYm9ydE91dGdvaW5n
RnJhbWVRdWV1ZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2Rl
IG9wQ29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdURjo6RnVu
Y3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faGFu
ZGxlKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKQEAgLTgyNyw3ICs4MjcsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29k
ZSwgY29uc3QgY2hhciogZGF0YQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBmcmFtZURhdGE7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGZyYW1lRGF0YTsKICAgICBmcmFtZS5tYWtlRnJhbWVEYXRhKGZyYW1lRGF0YSk7CiAK
ICAgICBtX2hhbmRsZS0+c2VuZERhdGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRhLnNpemUo
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggYTQ2MmUzZTA4ZTA5
Mjc5ODcwMWUzN2IxYmM0MjEyZDE4NjlhMzE4MC4uMGQwZWQyNmZmNWYxY2YwYzAzNjRlMmY5MmVk
MjM2NjA2YTZlMTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdl
YlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCwgU29ja2V0UHJvdmlkZXImIHByb3ZpZGVyKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldENoYW5uZWwoZG9jdW1lbnQsIGNsaWVudCwg
cHJvdmlkZXIpKTsgfQogICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKIAotICAgIGJv
b2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICBib29sIHNlbmQoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAvLyBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbCBmdW5jdGlvbnMuCiAgICAgQ29ubmVjdFN0YXR1cyBjb25uZWN0KGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOwpAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IGZ1bmN0aW9ucy4KICAgICB2b2lk
IGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0
IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEoU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5k
bGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVh
bUhhbmRsZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
U29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9y
JikgZmluYWw7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZlRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVy
ZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCi0g
ICAgYm9vbCBhcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKTsKKyAg
ICBib29sIGFwcGVuZFRvQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW4pOwog
ICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsKICAgICBib29sIHByb2Nlc3NCdWZmZXIo
KTsKICAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoKTsKQEAgLTE2MCwxMSArMTYwLDExIEBAIHBy
aXZhdGU6CiAgICAgICAgIFF1ZXVlZEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgICAgIC8vIE9u
bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXRlbXMgaXMgdXNlZCwgYWNjb3JkaW5nIHRvIHRoZSB2
YWx1ZSBvZiBmcmFtZVR5cGUuCiAgICAgICAgIENTdHJpbmcgc3RyaW5nRGF0YTsKLSAgICAgICAg
VmVjdG9yPGNoYXI+IHZlY3RvckRhdGE7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JE
YXRhOwogICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYkRhdGE7CiAgICAgfTsKICAgICB2b2lkIGVu
cXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYpOwotICAgIHZvaWQgZW5xdWV1ZVJhd0ZyYW1l
KFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKTsKKyAgICB2b2lkIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBlbnF1ZXVl
QmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIEJsb2ImKTsKIAogICAgIHZvaWQgcHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBJZiB5b3UgYXJlIGdvaW5nIHRvIHNlbmQgYSBoeWJpLTEwIGZyYW1lLCB5b3UgbmVl
ZCB0byB1c2UgdGhlIG91dGdvaW5nIGZyYW1lIHF1ZXVlCiAgICAgLy8gaW5zdGVhZCBvZiBjYWxs
IHNlbmRGcmFtZSgpIGRpcmVjdGx5LgotICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNvY2tldEZyYW1l
OjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNlbmRGcmFtZShX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAg
ICBlbnVtIEJsb2JMb2FkZXJTdGF0dXMgewogICAgICAgICBCbG9iTG9hZGVyTm90U3RhcnRlZCwK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU29ja2V0Q2hhbm5l
bENsaWVudD4gbV9jbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEhhbmRzaGFr
ZT4gbV9oYW5kc2hha2U7CiAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9oYW5kbGU7
Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZl
cjsKIAogICAgIFRpbWVyIG1fcmVzdW1lVGltZXI7CiAgICAgYm9vbCBtX3N1c3BlbmRlZCB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVyLmNwcAppbmRleCAxNGFiODA5NWIyNWNmMTM5NGMwODQ5YTBiMTg3ODE3
NGM0NTczM2FkLi4xMTJlZDJlZTBlYTM2ZWE0YjNjNzA5NGQ3NTczOGEyZWRlM2MyN2ZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlci5jcHAKQEAgLTYzLDE1ICs2MywxNSBAQCBXZWJTb2NrZXREZWZsYXRlcjo6fldlYlNv
Y2tldERlZmxhdGVyKCkKICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXREZWZsYXRlciAl
cCBEZXN0cnVjdG9yIGRlZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIGlzIHJldHVybmVkIiwgdGhpcywg
cmVzdWx0KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtKiBz
dHJlYW0sIGNvbnN0IGNoYXIqIGlucHV0RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBv
dXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQorc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFy
YW1ldGVyKHpfc3RyZWFtKiBzdHJlYW0sIGNvbnN0IHVpbnQ4X3QqIGlucHV0RGF0YSwgc2l6ZV90
IGlucHV0TGVuZ3RoLCB1aW50OF90KiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQog
ewotICAgIHN0cmVhbS0+bmV4dF9pbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihjb25zdF9j
YXN0PGNoYXIqPihpbnB1dERhdGEpKTsKKyAgICBzdHJlYW0tPm5leHRfaW4gPSBjb25zdF9jYXN0
PHVpbnQ4X3QqPihpbnB1dERhdGEpOwogICAgIHN0cmVhbS0+YXZhaWxfaW4gPSBpbnB1dExlbmd0
aDsKLSAgICBzdHJlYW0tPm5leHRfb3V0ID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KG91dHB1
dERhdGEpOworICAgIHN0cmVhbS0+bmV4dF9vdXQgPSBvdXRwdXREYXRhOwogICAgIHN0cmVhbS0+
YXZhaWxfb3V0ID0gb3V0cHV0TGVuZ3RoOwogfQogCi1ib29sIFdlYlNvY2tldERlZmxhdGVyOjph
ZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9vbCBXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM3LDcgKzEzNyw3
IEBAIFdlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIoKQogICAgICAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldEluZmxhdGVyICVwIERlc3RydWN0b3IgaW5mbGF0ZUVuZCgpIGZh
aWxlZDogJWQgaXMgcmV0dXJuZWQiLCB0aGlzLCByZXN1bHQpOwogfQogCi1ib29sIFdlYlNvY2tl
dEluZmxhdGVyOjphZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTcwLDcgKzE3MCw3IEBAIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAKIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmZpbmlz
aCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlwcGVkRmllbGRzID0gIlwwXDBceGZm
XHhmZiI7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgc3RyaXBwZWRGaWVsZHNbXSA9ICJcMFww
XHhmZlx4ZmYiOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc3RyaXBwZWRMZW5ndGggPSA0Owog
CiAgICAgLy8gQXBwZW5kcyA0IG9jdGVzdHMgb2YgMHgwMCAweDAwIDB4ZmYgMHhmZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIu
aAppbmRleCBmNjJkYzU4NWE4M2JlM2ExMzk0MWI1N2JhZjcyOTY1NmMxMzA0OTJiLi44ZjQ1NGZi
M2I2OTZkOGJjNDNlZjJhYTU3YjFmN2IwOWNlMjYwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaApAQCAtNDksMTYg
KzQ5LDE2IEBAIHB1YmxpYzoKICAgICB+V2ViU29ja2V0RGVmbGF0ZXIoKTsKIAogICAgIGJvb2wg
aW5pdGlhbGl6ZSgpOwotICAgIGJvb2wgYWRkQnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7Cisg
ICAgYm9vbCBhZGRCeXRlcyhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBib29sIGZpbmlz
aCgpOwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0K
KyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KICAgICB2
b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6CiAgICAgaW50IG1fd2luZG93Qml0czsKICAgICBDb250
ZXh0VGFrZU92ZXJNb2RlIG1fY29udGV4dFRha2VPdmVyTW9kZTsKLSAgICBWZWN0b3I8Y2hhcj4g
bV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjx6X3N0cmVhbT4gbV9zdHJlYW07CiB9OwogCkBAIC02OSwxNSArNjksMTUgQEAgcHVibGlj
OgogICAgIH5XZWJTb2NrZXRJbmZsYXRlcigpOwogCiAgICAgYm9vbCBpbml0aWFsaXplKCk7Ci0g
ICAgYm9vbCBhZGRCeXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGFkZEJ5dGVz
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgZmluaXNoKCk7Ci0gICAgY29uc3Qg
Y2hhciogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQogICAgIHZvaWQgcmVzZXQoKTsKIAog
cHJpdmF0ZToKICAgICBpbnQgbV93aW5kb3dCaXRzOwotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZl
cjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHpf
c3RyZWFtPiBtX3N0cmVhbTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwCmluZGV4IGY3ZjM2NTc1YjI2NzU1Y2NiOWEy
MWU4OWU2YmIzZTRkMDJlNzA4YjkuLjYzZTI1NzMxMTM5NjcxNjgzYmM4ZWVjMmJmNWI2MWQxYjY1
N2VlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEZyYW1lLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIENvbnN0YW50cyBmb3IgaHliaS0xMCBmcmFtZSBmb3JtYXQuCi1jb25zdCB1bnNpZ25l
ZCBjaGFyIGZpbmFsQml0ID0gMHg4MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgY29tcHJlc3NCaXQg
PSAweDQwOwotY29uc3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDJCaXQgPSAweDIwOwotY29uc3Qg
dW5zaWduZWQgY2hhciByZXNlcnZlZDNCaXQgPSAweDEwOwotY29uc3QgdW5zaWduZWQgY2hhciBv
cENvZGVNYXNrID0gMHhGOwotY29uc3QgdW5zaWduZWQgY2hhciBtYXNrQml0ID0gMHg4MDsKLWNv
bnN0IHVuc2lnbmVkIGNoYXIgcGF5bG9hZExlbmd0aE1hc2sgPSAweDdGOworY29uc3QgdWludDhf
dCBmaW5hbEJpdCA9IDB4ODA7Citjb25zdCB1aW50OF90IGNvbXByZXNzQml0ID0gMHg0MDsKK2Nv
bnN0IHVpbnQ4X3QgcmVzZXJ2ZWQyQml0ID0gMHgyMDsKK2NvbnN0IHVpbnQ4X3QgcmVzZXJ2ZWQz
Qml0ID0gMHgxMDsKK2NvbnN0IHVpbnQ4X3Qgb3BDb2RlTWFzayA9IDB4RjsKK2NvbnN0IHVpbnQ4
X3QgbWFza0JpdCA9IDB4ODA7Citjb25zdCB1aW50OF90IHBheWxvYWRMZW5ndGhNYXNrID0gMHg3
RjsKIGNvbnN0IHNpemVfdCBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmll
bGQgPSAxMjU7CiBjb25zdCBzaXplX3QgcGF5bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRM
ZW5ndGhGaWVsZCA9IDEyNjsKIGNvbnN0IHNpemVfdCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0
ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjc7CkBAIC00NywyMiArNDcsMjIgQEAgYm9vbCBXZWJT
b2NrZXRGcmFtZTo6bmVlZHNFeHRlbmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3Ro
KQogICAgIHJldHVybiBwYXlsb2FkTGVuZ3RoID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRl
bmRlZExlbmd0aEZpZWxkOwogfQogCi1XZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBX
ZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
V2ViU29ja2V0RnJhbWUmIGZyYW1lLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQsIFN0cmluZyYgZXJy
b3JTdHJpbmcpCitXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFt
ZTo6cGFyc2VGcmFtZSh1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0
RnJhbWUmIGZyYW1lLCBjb25zdCB1aW50OF90KiYgZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJp
bmcpCiB7Ci0gICAgY2hhciogcCA9IGRhdGE7Ci0gICAgY29uc3QgY2hhciogYnVmZmVyRW5kID0g
ZGF0YSArIGRhdGFMZW5ndGg7CisgICAgdWludDhfdCogcCA9IGRhdGE7CisgICAgY29uc3QgdWlu
dDhfdCogYnVmZmVyRW5kID0gZGF0YSArIGRhdGFMZW5ndGg7CiAKICAgICBpZiAoZGF0YUxlbmd0
aCA8IDIpCiAgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CiAKLSAgICB1bnNpZ25lZCBj
aGFyIGZpcnN0Qnl0ZSA9ICpwKys7Ci0gICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnAr
KzsKKyAgICB1aW50OF90IGZpcnN0Qnl0ZSA9ICpwKys7CisgICAgdWludDhfdCBzZWNvbmRCeXRl
ID0gKnArKzsKIAogICAgIGJvb2wgZmluYWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKICAgICBi
b29sIGNvbXByZXNzID0gZmlyc3RCeXRlICYgY29tcHJlc3NCaXQ7CiAgICAgYm9vbCByZXNlcnZl
ZDIgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDJCaXQ7CiAgICAgYm9vbCByZXNlcnZlZDMgPSBmaXJz
dEJ5dGUgJiByZXNlcnZlZDNCaXQ7Ci0gICAgdW5zaWduZWQgY2hhciBvcENvZGUgPSBmaXJzdEJ5
dGUgJiBvcENvZGVNYXNrOworICAgIHVpbnQ4X3Qgb3BDb2RlID0gZmlyc3RCeXRlICYgb3BDb2Rl
TWFzazsKIAogICAgIGJvb2wgbWFza2VkID0gc2Vjb25kQnl0ZSAmIG1hc2tCaXQ7CiAgICAgdWlu
dDY0X3QgcGF5bG9hZExlbmd0aDY0ID0gc2Vjb25kQnl0ZSAmIHBheWxvYWRMZW5ndGhNYXNrOwpA
QCAtNzksNyArNzksNyBAQCBXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2Nr
ZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZAogICAgICAgICBwYXlsb2Fk
TGVuZ3RoNjQgPSAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuZGVkUGF5bG9h
ZExlbmd0aFNpemU7ICsraSkgewogICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IDw8PSA4Owot
ICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KCpwKyspOworICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KCpwKyspOwogICAgICAgICB9CiAgICAgICAgIGlmIChleHRlbmRlZFBheWxvYWRMZW5ndGhT
aXplID09IDIgJiYgcGF5bG9hZExlbmd0aDY0IDw9IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0
ZW5kZWRMZW5ndGhGaWVsZCkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVGhlIG1pbmlt
YWwgbnVtYmVyIG9mIGJ5dGVzIE1VU1QgYmUgdXNlZCB0byBlbmNvZGUgdGhlIGxlbmd0aCI7CkBA
IC0xMDMsOCArMTAzLDggQEAgV2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29j
a2V0RnJhbWU6OnBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGQKICAgICAgICAgcmV0dXJu
IEZyYW1lSW5jb21wbGV0ZTsKIAogICAgIGlmIChtYXNrZWQpIHsKLSAgICAgICAgY29uc3QgY2hh
ciogbWFza2luZ0tleSA9IHA7Ci0gICAgICAgIGNoYXIqIHBheWxvYWQgPSBwICsgbWFza2luZ0tl
eVdpZHRoSW5CeXRlczsKKyAgICAgICAgdWludDhfdCogbWFza2luZ0tleSA9IHA7CisgICAgICAg
IHVpbnQ4X3QqIHBheWxvYWQgPSBwICsgbWFza2luZ0tleVdpZHRoSW5CeXRlczsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBw
YXlsb2FkW2ldIF49IG1hc2tpbmdLZXlbaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNdOyAvLyBV
bm1hc2sgdGhlIHBheWxvYWQuCiAgICAgfQpAQCAtMTIxLDcgKzEyMSw3IEBAIFdlYlNvY2tldEZy
YW1lOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZyYW1lKGNoYXIqIGRh
dGEsIHNpemVfdCBkCiAgICAgcmV0dXJuIEZyYW1lT0s7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVu
ZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYg
ZnJhbWVEYXRhKQorc3RhdGljIHZvaWQgYXBwZW5kRnJhbWVQYXlsb2FkKGNvbnN0IFdlYlNvY2tl
dEZyYW1lJiBmcmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiBmcmFtZURhdGEpCiB7CiAgICAgc2l6ZV90
IG1hc2tpbmdLZXlTdGFydCA9IDA7CiAgICAgaWYgKGZyYW1lLm1hc2tlZCkgewpAQCAtMTM5LDcg
KzEzOSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRG
cmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVECiAgICAgfQogfQogCi12b2lkIFdlYlNv
Y2tldEZyYW1lOjptYWtlRnJhbWVEYXRhKFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQordm9pZCBX
ZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSkK
IHsKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhl
ciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogCkBAIC0xNTUsNyArMTU1
LDcgQEAgdm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hhcj4mIGZy
YW1lRGF0YSkKICAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChwYXlsb2FkTGVuZ3RoICYgMHhGRik7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgZnJhbWVEYXRhLmF0KDEpIHw9IHBheWxvYWRMZW5ndGhX
aXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZDsKLSAgICAgICAgY2hhciBleHRlbmRlZFBh
eWxvYWRMZW5ndGhbOF07CisgICAgICAgIHVpbnQ4X3QgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzhd
OwogICAgICAgICBzaXplX3QgcmVtYWluaW5nID0gcGF5bG9hZExlbmd0aDsKICAgICAgICAgLy8g
RmlsbCB0aGUgbGVuZ3RoIGludG8gZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoIGluIHRoZSBuZXR3b3Jr
IGJ5dGUgb3JkZXIuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CkBAIC0x
NjksNyArMTY5LDcgQEAgdm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8
Y2hhcj4mIGZyYW1lRGF0YSkKICAgICBhcHBlbmRGcmFtZVBheWxvYWQoKnRoaXMsIGZyYW1lRGF0
YSk7CiB9CiAKLVdlYlNvY2tldEZyYW1lOjpXZWJTb2NrZXRGcmFtZShPcENvZGUgb3BDb2RlLCBi
b29sIGZpbmFsLCBib29sIGNvbXByZXNzLCBib29sIG1hc2tlZCwgY29uc3QgY2hhciogcGF5bG9h
ZCwgc2l6ZV90IHBheWxvYWRMZW5ndGgpCitXZWJTb2NrZXRGcmFtZTo6V2ViU29ja2V0RnJhbWUo
T3BDb2RlIG9wQ29kZSwgYm9vbCBmaW5hbCwgYm9vbCBjb21wcmVzcywgYm9vbCBtYXNrZWQsIGNv
bnN0IHVpbnQ4X3QqIHBheWxvYWQsIHNpemVfdCBwYXlsb2FkTGVuZ3RoKQogICAgIDogb3BDb2Rl
KG9wQ29kZSkKICAgICAsIGZpbmFsKGZpbmFsKQogICAgICwgY29tcHJlc3MoY29tcHJlc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5o
CmluZGV4IGRiMTYwZGNmYjFlZTU5NTVhOWQ1N2ZkYzg3N2I0Zjk0NzNhNTczYTAuLmE3NGNiODI5
Yzc1YWVjYTE5MTNmOWY4NDJiYzM5M2E0N2FkZGMxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCkBAIC01NiwxMCArNTYsMTAg
QEAgc3RydWN0IFdlYlNvY2tldEZyYW1lIHsKICAgICBzdGF0aWMgYm9vbCBpc0NvbnRyb2xPcENv
ZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNsb3NlIHx8IG9wQ29k
ZSA9PSBPcENvZGVQaW5nIHx8IG9wQ29kZSA9PSBPcENvZGVQb25nOyB9CiAgICAgc3RhdGljIGJv
b2wgaXNSZXNlcnZlZE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiAhaXNOb25Db250cm9s
T3BDb2RlKG9wQ29kZSkgJiYgIWlzQ29udHJvbE9wQ29kZShvcENvZGUpOyB9CiAgICAgc3RhdGlj
IGJvb2wgbmVlZHNFeHRlbmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUGFyc2VGcmFtZVJlc3VsdCBwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBXZWJTb2NrZXRGcmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCwgU3RyaW5n
JiBlcnJvclN0cmluZyk7IC8vIE1heSBtb2RpZnkgcGFydCBvZiBkYXRhIHRvIHVubWFzayB0aGUg
ZnJhbWUuCisgICAgc3RhdGljIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZSh1aW50OF90KiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0RnJhbWUmLCBjb25zdCB1aW50OF90KiYg
ZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJpbmcpOyAvLyBNYXkgbW9kaWZ5IHBhcnQgb2YgZGF0
YSB0byB1bm1hc2sgdGhlIGZyYW1lLgogCi0gICAgV0VCQ09SRV9FWFBPUlQgV2ViU29ja2V0RnJh
bWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNvbXBy
ZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IGNoYXIqIHBheWxvYWQgPSBu
dWxscHRyLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApOwotICAgIHZvaWQgbWFrZUZyYW1lRGF0
YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViU29ja2V0
RnJhbWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNv
bXByZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IHVpbnQ4X3QqIHBheWxv
YWQgPSBudWxscHRyLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApOworICAgIHZvaWQgbWFrZUZy
YW1lRGF0YShWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSk7CiAKICAgICBPcENvZGUgb3BDb2Rl
OwogICAgIGJvb2wgZmluYWw7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFt
ZSB7CiAgICAgYm9vbCByZXNlcnZlZDI7CiAgICAgYm9vbCByZXNlcnZlZDM7CiAgICAgYm9vbCBt
YXNrZWQ7Ci0gICAgY29uc3QgY2hhciogcGF5bG9hZDsKKyAgICBjb25zdCB1aW50OF90KiBwYXls
b2FkOwogICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRl
eCA4NDljZjVmNjI0YmNjMjcyZWU1ZTdiYzYyNmRhN2U1MDNhZDQ0OTIyLi45ZDExNjk5ZjFhNGI2
YzU2NzY3NWI3MWEzMjgzMGMyNDJhMDU4MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtODQsNyAr
ODQsNyBAQCBzdGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNvbnN0IFVSTCYgdXJsLCBib29sIHNlY3Vy
ZSkKIH0KIAogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7Ci1z
dGF0aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShjb25zdCBjaGFyKiBwLCBzaXplX3QgbGVuKQor
c3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgdWludDhfdCogcCwgc2l6ZV90IGxl
bikKIHsKICAgICBTdHJpbmcgcyA9IFN0cmluZyhwLCBzdGQ6Om1pbjxzaXplX3Q+KGxlbiwgbWF4
SW5wdXRTYW1wbGVTaXplKSk7CiAgICAgaWYgKGxlbiA+IG1heElucHV0U2FtcGxlU2l6ZSkKQEAg
LTIyMSw3ICsyMjEsNyBAQCB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQogICAgIG1f
ZXh0ZW5zaW9uRGlzcGF0Y2hlci5yZXNldCgpOwogfQogCi1pbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKK2lu
dCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgdWludDhfdCog
aGVhZGVyLCBzaXplX3QgbGVuKQogewogICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgaW50
IHN0YXR1c0NvZGU7CkBAIC0yNDUsMTIgKzI0NSwxMiBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKICAg
ICAgICAgcmV0dXJuIGxlbjsKICAgICB9CiAgICAgbV9tb2RlID0gTm9ybWFsOwotICAgIGlmICgh
c3RybnN0cihoZWFkZXIsICJcclxuXHJcbiIsIGxlbikpIHsKKyAgICBpZiAoIW1lbW1lbShoZWFk
ZXIsIGxlbiwgIlxyXG5cclxuIiwgNCkpIHsKICAgICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiBy
ZWNlaXZlZCBmdWxseSB5ZXQuCiAgICAgICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgICAg
IHJldHVybiAtMTsKICAgICB9Ci0gICAgY29uc3QgY2hhciogcCA9IHJlYWRIVFRQSGVhZGVycyho
ZWFkZXIgKyBsaW5lTGVuZ3RoLCBoZWFkZXIgKyBsZW4pOworICAgIGNvbnN0IHVpbnQ4X3QqIHAg
PSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyICsgbGluZUxlbmd0aCwgaGVhZGVyICsgbGVuKTsKICAg
ICBpZiAoIXApIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRIYW5kc2hha2UgJXAg
cmVhZFNlcnZlckhhbmRzaGFrZSgpIHJlYWRIVFRQSGVhZGVycygpIGZhaWxlZCIsIHRoaXMpOwog
ICAgICAgICBtX21vZGUgPSBGYWlsZWQ7IC8vIG1fZmFpbHVyZVJlYXNvbiBpcyBzZXQgaW5zaWRl
IHJlYWRIVFRQSGVhZGVycygpLgpAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAv
LyBSZXR1cm5zIHRoZSBoZWFkZXIgbGVuZ3RoIChpbmNsdWRpbmcgIlxyXG4iKSwgb3IgLTEgaWYg
d2UgaGF2ZSBub3QgcmVjZWl2ZWQgZW5vdWdoIGRhdGEgeWV0LgogLy8gSWYgdGhlIGxpbmUgaXMg
bWFsZm9ybWVkIG9yIHRoZSBzdGF0dXMgY29kZSBpcyBub3QgYSAzLWRpZ2l0IG51bWJlciwKIC8v
IHN0YXR1c0NvZGUgYW5kIHN0YXR1c1RleHQgd2lsbCBiZSBzZXQgdG8gLTEgYW5kIGEgbnVsbCBz
dHJpbmcsIHJlc3BlY3RpdmVseS4KLWludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNM
aW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50JiBzdGF0dXND
b2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpCitpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3Rh
dHVzTGluZShjb25zdCB1aW50OF90KiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsIGludCYg
c3RhdHVzQ29kZSwgU3RyaW5nJiBzdGF0dXNUZXh0KQogewogICAgIC8vIEFyYml0cmFyeSBzaXpl
IGxpbWl0IHRvIHByZXZlbnQgdGhlIHNlcnZlciBmcm9tIHNlbmRpbmcgYW4gdW5ib3VuZGVkCiAg
ICAgLy8gYW1vdW50IG9mIGRhdGEgd2l0aCBubyBuZXdsaW5lcyBhbmQgZm9yY2luZyB1cyB0byBi
dWZmZXIgaXQgYWxsLgpAQCAtMzcxLDkgKzM3MSw5IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6
OnJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwK
ICAgICBzdGF0dXNDb2RlID0gLTE7CiAgICAgc3RhdHVzVGV4dCA9IFN0cmluZygpOwogCi0gICAg
Y29uc3QgY2hhciogc3BhY2UxID0gbnVsbHB0cjsKLSAgICBjb25zdCBjaGFyKiBzcGFjZTIgPSBu
dWxscHRyOwotICAgIGNvbnN0IGNoYXIqIHA7CisgICAgY29uc3QgdWludDhfdCogc3BhY2UxID0g
bnVsbHB0cjsKKyAgICBjb25zdCB1aW50OF90KiBzcGFjZTIgPSBudWxscHRyOworICAgIGNvbnN0
IHVpbnQ4X3QqIHA7CiAgICAgc2l6ZV90IGNvbnN1bWVkTGVuZ3RoOwogCiAgICAgZm9yIChwID0g
aGVhZGVyLCBjb25zdW1lZExlbmd0aCA9IDA7IGNvbnN1bWVkTGVuZ3RoIDwgaGVhZGVyTGVuZ3Ro
OyBwKyssIGNvbnN1bWVkTGVuZ3RoKyspIHsKQEAgLTM5Nyw3ICszOTcsNyBAQCBpbnQgV2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBo
ZWFkZXJMZW5ndGgsCiAgICAgaWYgKGNvbnN1bWVkTGVuZ3RoID09IGhlYWRlckxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIC0xOyAvLyBXZSBoYXZlIG5vdCByZWNlaXZlZCAnXG4nIHlldC4KIAotICAg
IGNvbnN0IGNoYXIqIGVuZCA9IHAgKyAxOworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHAgKyAx
OwogICAgIGludCBsaW5lTGVuZ3RoID0gZW5kIC0gaGVhZGVyOwogICAgIGlmIChsaW5lTGVuZ3Ro
ID4gbWF4aW11bUxlbmd0aCkgewogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU3RhdHVzIGxp
bmUgaXMgdG9vIGxvbmciX3M7CkBAIC00MTUsMTMgKzQxNSwxMyBAQCBpbnQgV2ViU29ja2V0SGFu
ZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJM
ZW5ndGgsCiAgICAgICAgIHJldHVybiBsaW5lTGVuZ3RoOwogICAgIH0KIAotICAgIFN0cmluZ1Zp
ZXcgaHR0cFN0YXR1c0xpbmUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGhlYWRlciks
IHNwYWNlMSAtIGhlYWRlcik7CisgICAgU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZShoZWFkZXIs
IHNwYWNlMSAtIGhlYWRlcik7CiAgICAgaWYgKCFoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKGh0
dHBTdGF0dXNMaW5lKSkgewogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBtYWtlU3RyaW5nKCJJ
bnZhbGlkIEhUVFAgdmVyc2lvbiBzdHJpbmc6ICIsIGh0dHBTdGF0dXNMaW5lKTsKICAgICAgICAg
cmV0dXJuIGxpbmVMZW5ndGg7CiAgICAgfQogCi0gICAgU3RyaW5nVmlldyBzdGF0dXNDb2RlU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzcGFjZTEgKyAxKSwgc3BhY2UyIC0g
c3BhY2UxIC0gMSk7CisgICAgU3RyaW5nVmlldyBzdGF0dXNDb2RlU3RyaW5nKHNwYWNlMSArIDEs
IHNwYWNlMiAtIHNwYWNlMSAtIDEpOwogICAgIGlmIChzdGF0dXNDb2RlU3RyaW5nLmxlbmd0aCgp
ICE9IDMpIC8vIFN0YXR1cyBjb2RlIG11c3QgY29uc2lzdCBvZiB0aHJlZSBkaWdpdHMuCiAgICAg
ICAgIHJldHVybiBsaW5lTGVuZ3RoOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7
CkBAIC00MzYsMTQgKzQzNiwxNCBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVz
TGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsCiAgICAgcmV0dXJu
IGxpbmVMZW5ndGg7CiB9CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCitjb25zdCB1aW50
OF90KiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCB1aW50OF90KiBz
dGFydCwgY29uc3QgdWludDhfdCogZW5kKQogewogICAgIFN0cmluZ1ZpZXcgbmFtZTsKICAgICBT
dHJpbmcgdmFsdWU7CiAgICAgYm9vbCBzYXdTZWNXZWJTb2NrZXRFeHRlbnNpb25zSGVhZGVyRmll
bGQgPSBmYWxzZTsKICAgICBib29sIHNhd1NlY1dlYlNvY2tldEFjY2VwdEhlYWRlckZpZWxkID0g
ZmFsc2U7CiAgICAgYm9vbCBzYXdTZWNXZWJTb2NrZXRQcm90b2NvbEhlYWRlckZpZWxkID0gZmFs
c2U7Ci0gICAgY29uc3QgY2hhciogcCA9IHN0YXJ0OworICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBz
dGFydDsKICAgICBmb3IgKDsgcCA8IGVuZDsgcCsrKSB7CiAgICAgICAgIHNpemVfdCBjb25zdW1l
ZExlbmd0aCA9IHBhcnNlSFRUUEhlYWRlcihwLCBlbmQgLSBwLCBtX2ZhaWx1cmVSZWFzb24sIG5h
bWUsIHZhbHVlKTsKICAgICAgICAgaWYgKCFjb25zdW1lZExlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAppbmRl
eCBlYWY4YTVjMDZhZDIwNThkM2QzODk1MTM1MjM5OTZmNmJlM2UwZGQzLi41ZTY0YzE4MzRmNmU4
MzYxNGQzMDFjNGZlZGQzOWQ4ODNjYWQ3YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC02OCw3ICs2OCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIGludCByZWFkU2VydmVySGFu
ZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbik7CisgICAgaW50IHJlYWRTZXJ2
ZXJIYW5kc2hha2UoY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgbGVuKTsKICAgICBNb2Rl
IG1vZGUoKSBjb25zdDsKICAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0OyAvLyBSZXR1
cm5zIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHJlYXNvbiBvZiBmYWlsdXJlIGlmIG1vZGUoKSA9
PSBGYWlsZWQuCiAKQEAgLTg3LDEwICs4NywxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAg
ICBpbnQgcmVhZFN0YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVu
Z3RoLCBpbnQmIHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCk7CisgICAgaW50IHJlYWRT
dGF0dXNMaW5lKGNvbnN0IHVpbnQ4X3QqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50
JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpOwogCiAgICAgLy8gUmVhZHMgYWxsIGhl
YWRlcnMgZXhjZXB0IGZvciB0aGUgdHdvIHByZWRlZmluZWQgb25lcy4KLSAgICBjb25zdCBjaGFy
KiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCk7Cisg
ICAgY29uc3QgdWludDhfdCogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IHVpbnQ4X3QqIHN0YXJ0LCBj
b25zdCB1aW50OF90KiBlbmQpOwogICAgIHZvaWQgcHJvY2Vzc0hlYWRlcnMoKTsKICAgICBib29s
IGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCmluZGV4IDBiZjJhYTlhMTBiMjJlMTE1YTMyZjI1MTRhN2Q3ZWI1MDZiNTk4
MWEuLmIzZjMxMDk1YWFhOWFlODM5NGZiOTg1OWM2ZGY0OGIyY2I5ZjA4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDQ3LDEwICs0NDcsMTAgQEAg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAgICBpZiAoIW1fcGVlcikKICAgICAgICAgcmV0dXJu
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKIAotICAgIC8vIEFycmF5QnVm
ZmVyIGlzbid0IHRocmVhZC1zYWZlLCBoZW5jZSB0aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBp
cyBjb3BpZWQgaW50byBWZWN0b3I8Y2hhcj4uCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEoYnl0ZUxl
bmd0aCk7CisgICAgLy8gQXJyYXlCdWZmZXIgaXNuJ3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRoZSBj
b250ZW50IG9mIEFycmF5QnVmZmVyIGlzIGNvcGllZCBpbnRvIFZlY3Rvcjx1aW50OF90Pi4KKyAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YShieXRlTGVuZ3RoKTsKICAgICBpZiAoYmluYXJ5RGF0YS5i
eXRlTGVuZ3RoKCkpCi0gICAgICAgIG1lbWNweShkYXRhLmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwor
ICAgICAgICBtZW1jcHkoZGF0YS5kYXRhKCksIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
aW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAgICBzZXRNZXRo
b2ROb3RDb21wbGV0ZWQoKTsKIAogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihb
cGVlciA9IG1fcGVlciwgZGF0YSA9IFdURk1vdmUoZGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
U2VyaWFsaXplZE5GQS5jcHAKaW5kZXggMjgzN2FjZjllZWY5NGRiYzhiZjhhMDMzOTIzNzEyM2M5
ZGU2YzVlMi4uOTZmNjViZGQ0Y2U3OWJiYTg4NmQ5OWExYzY2MjRmZmJlNGYxMzAzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAK
QEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBib29sIHdyaXRlQWxsVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlLCBjb25zdCBUJiBjb250YWluZXIpCiB7Ci0gICAgY29uc3QgY2hhciogYnl0
ZXMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb250YWluZXIuZGF0YSgpKTsKKyAg
ICBjb25zdCB1aW50OF90KiBieXRlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGNvbnRhaW5lci5kYXRhKCkpOwogICAgIHNpemVfdCBieXRlc0xlbmd0aCA9IGNvbnRhaW5lci5z
aXplKCkgKiBzaXplb2YoY29udGFpbmVyWzBdKTsKLSAgICBjb25zdCBjaGFyKiBlbmQgPSBieXRl
cyArIGJ5dGVzTGVuZ3RoOworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IGJ5dGVzICsgYnl0ZXNM
ZW5ndGg7CiAgICAgd2hpbGUgKGJ5dGVzIDwgZW5kKSB7CiAgICAgICAgIGF1dG8gd3JpdHRlbiA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIGJ5dGVzLCBieXRlc0xlbmd0aCk7CiAgICAg
ICAgIGlmICh3cml0dGVuID09IC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cAppbmRleCA3NjY0YzA2OWYxNDlmYmVlNmQxYjU0NzE2Mjg2MTk4MmQ2MTg5YTk4Li44NjQzODcw
ZGQwZTgxMjJkYTE4Mzg5YmJjYWU4NTdkYTdlMzJlMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcApAQCAtMTEyMyw3ICsxMTIzLDcgQEAgdm9pZCBTdWJ0bGVDcnlwdG86
OnVud3JhcEtleShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgS2V5Rm9ybWF0IGZvcm1hdCwg
QnVmZmUKICAgICAgICAgICAgICAgICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOwogICAgICAg
ICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nIGp3a1N0cmluZyhyZWludGVycHJldF9jYXN0X3B0cjxj
b25zdCBjaGFyKj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nIGp3a1N0cmluZyhieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvIGp3a09iamVjdCA9IEpTT05QYXJzZSgmc3RhdGUsIGp3a1N0cmluZyk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghandrT2JqZWN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCAyZDIx
NDRmMGFjNTk2ZTM5OTY0NWQxNzAzYTg2OTJlYTM1YmEzNjQ3Li5kMjk5MDlhMzQ5N2RjNGE0OWE3
YWYwZDZkMzI0OTQ5OGQxNzI1NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KQEAgLTE2Nyw3ICsxNjcsNyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGZpbmRNYXN0ZXJLZXkoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBrZXlEYXRhID0gYWRvcHRDRihrZXlEYXRhUmVmKTsKLSAgICByZXR1cm4gYmFzZTY0RGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoa2V5RGF0
YS5nZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5RGF0YS5nZXQoKSkpOworICAgIHJldHVybiBi
YXNlNjREZWNvZGUoQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKGtleURhdGEuZ2V0KCkpKTsKIH0KIAogc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGVkODU2NjQ3YTM5OWQ2NWIwODExMTdi
ODY5MDQxNWQyNDI5YWY3NzAuLjdiMmI0NTAzMWNiNTA1M2NiNjQ1NmQ4ZWM2NGQ4YmNjN2UwNjRl
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6RGVjb2Rl
ZERhdGFEb2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQgRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImIHdyaXRl
ciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRGVjb2RlZERhdGFEb2N1
bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImIHdyaXRlciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1l
bnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmgKaW5kZXggYmJiMDZhM2U4YTdkZDAxZmRmMWQyZjkxY2ZmNDUxMGJkNGU2N2QxNi4uOTU1ODJh
MGQ2OTM5MGIyYTUxNjIzNWVlNjNmYmZiYzMwYzViZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBhcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlID0gMDsK
IAogICAgIC8vIGFwcGVuZEJ5dGVzIGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVudFdyaXRl
ciAodGhlIGxvYWRlcikuCi0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGVu
ZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2goRG9jdW1lbnRXcml0ZXImKSBvdmVycmlkZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKaW5kZXggOWNiZTkyYTMyN2ZkMjUy
ZThlZTAzMjQ5OTNkNzUyNDJhZTVmNTBjNy4uN2M0YzNkMmU3ZGNlOGM5OTc1MDBhNGU2ZGI1OWQw
MGRiYTZhMDczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYp
ID0gMDsKIAogICAgIC8vIGFwcGVuZEJ5dGVzIGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVu
dFdyaXRlciAodGhlIGxvYWRlcikuCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3Vt
ZW50V3JpdGVyJiwgY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaChEb2N1bWVu
dFdyaXRlciYpID0gMDsKIAogICAgIC8vIEZJWE1FOiBhcHBlbmQoKSBzaG91bGQgYmUgcHJpdmF0
ZSwgYnV0IERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQgdXNlcyBpdCBmb3Igbm93Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCmluZGV4IDA5NGVjODdm
NjVhYzI3NWI1N2IwODFkMGJjMjJkZTVmYmI5YWQ4OTcuLmRlMzg5OTIxYWM2ZGMwZTAwY2U0Njk5
YjQ3NjhiYmE4Y2VhZDdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRh
RG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50
UGFyc2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoKERvY3Vt
ZW50V3JpdGVyJiB3cml0ZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICAvLyBNYWtlIHN1cmUg
YXBwZW5kQnl0ZXMgaXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UuCi0gICAgICAgIGFwcGVuZEJ5dGVz
KHdyaXRlciwgMCwgMCk7CisgICAgICAgIGFwcGVuZEJ5dGVzKHdyaXRlciwgbnVsbHB0ciwgMCk7
CiAgICAgfQogCiAgICAgdm9pZCBpbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYpIG92ZXJyaWRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0NTM4Y2Y3NjkwNTEyMDljYTM5
OTI3MmMwZDlhYzgyNjM3ZmQxZjRlLi5mYTliZGFmMjIxMTdhN2MxODdhYzBiZmY4YjYzMDczMTgx
MDg0N2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKIAogICAgIEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAK
LSAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVf
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGU7
CiB9OwogCkBAIC0xODcsNyArMTg3LDcgQEAgaW5saW5lIEltYWdlRG9jdW1lbnQmIEltYWdlRG9j
dW1lbnRQYXJzZXI6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VE
b2N1bWVudD4oKlJhd0RhdGFEb2N1bWVudFBhcnNlcjo6ZG9jdW1lbnQoKSk7CiB9CiAKLXZvaWQg
SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBj
aGFyKiwgc2l6ZV90KQordm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1
bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpCiB7CiAgICAgZG9jdW1lbnQoKS51
cGRhdGVEdXJpbmdQYXJzaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNw
cAppbmRleCA3Y2IzOWVkNTY3OTg2Zjk4OWRmOGYyZmYwNjBhNGJlNmI1Mjk1NGU1Li5lOWU5MDNh
ZmViN2U0ODdjZGIxMjZlYTI3Mjk3N2M2ZDY2YmZkNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFEb2N1bWVudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudCB7IG51bGxwdHIgfTsK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3Vt
ZW50U3RydWN0dXJlKCkKICAgICBmcmFtZS0+bG9hZGVyKCkuc2V0T3V0Z29pbmdSZWZlcnJlcihk
b2N1bWVudC5jb21wbGV0ZVVSTChtX291dGdvaW5nUmVmZXJyZXIpKTsKIH0KIAotdm9pZCBNZWRp
YURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIq
LCBzaXplX3QpCit2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50
V3JpdGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkKIHsKICAgICBpZiAobV9tZWRpYUVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAK
aW5kZXggZDU4ODJmYjI4NTVkOTc4ZDM0MTYxYjQ1Y2FkZmQzMTBjNjAyMGZhMC4uZTNhM2RhNmZm
MjQ3MTliZmM5NzUyZGZlNTUzYTE2Mzc2NGRlNmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCk7CiAKICAgICBIVE1MRW1iZWRFbGVtZW50KiBtX2VtYmVkRWxlbWVudCB7IG51bGxwdHIgfTsK
QEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSgpCiAgICAgZG9jdW1lbnQuc2V0SGFzVmlzdWFsbHlOb25FbXB0eUN1c3Rv
bUNvbnRlbnQoKTsKIH0KIAotdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMo
RG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KQordm9pZCBQbHVnaW5Eb2N1bWVu
dFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KQogewogICAgIGlmIChtX2VtYmVkRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggMTBkNzE4MmUyMjhh
MTRjOGY0MmM3MmE2ZGQzNzAwNjAxOTYxZWJmZi4uYmIxMmMxNTlkZTc0ZjkyOTQ1MzY5NTQxZDc4
NzJlNmM1YzFhY2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRU
cmFjay5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVHZW5lcmlj
Q3VlKEluYmFuZEdlbmVyaWNDdWUmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKICAgICB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJikgb3ZlcnJpZGUgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkgb3ZlcnJp
ZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRh
KElTT1dlYlZUVEN1ZSYmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRl
eCAwNWQ3NTEwMWI1YzFiODFiYzZlOWQ0MjIzZDU4OWUxNzEwZjg4MDNjLi5hMjIyOGJjMTdlYTM1
NmY2MDUyMjhjNTRlY2UzNzBkYzRmY2Q0OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdl
YlZUVFBhcnNlciYgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZXIoKQogICAgIHJldHVybiAq
bV93ZWJWVFRQYXJzZXI7CiB9CiAKLXZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZVdl
YlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBJbmJh
bmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgcGFyc2VyKCkucGFyc2VCeXRlcyhkYXRhLCBsZW5n
dGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJW
VFRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4
dFRyYWNrLmgKaW5kZXggODRlZTBlNTc0MGRjNjM3NzMyZGUzOGEyOGMzOTkyZTc2M2EyY2Y0OS4u
MzE1MjM1NzI5YjVmYmQ5OWY2MzRmYTdkNmM3NzZjMjdiYzZjMWM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCkBAIC00Myw3ICs0
Myw3IEBAIHByaXZhdGU6CiAgICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4
dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgV2ViVlRUUGFy
c2VyJiBwYXJzZXIoKTsKLSAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBw
YXJzZVdlYlZUVEN1ZURhdGEoSVNPV2ViVlRUQ3VlJiYpIGZpbmFsOwogCiAgICAgdm9pZCBuZXdD
dWVzUGFyc2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKaW5kZXggOWYxZDJkNGJiYjVmN2Q3MjNlNDIzM2E1ZDE2ZTQyMjdjMzkxN2IxMS4uZDUz
Y2E2YTNiN2U2ZGVkMGRjNzE3ZWY1ZjU4ODUwN2FjNzU5M2FlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV2Vi
VlRUUGFyc2VyOjpwYXJzZUZpbGVIZWFkZXIoU3RyaW5nJiYgZGF0YSkKICAgICBwYXJzZSgpOwog
fQogCi12b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCit2b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VCeXRlcyhjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgbV9saW5lUmVhZGVyLmFwcGVuZChtX2Rl
Y29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsKICAgICBwYXJzZSgpOwpAQCAtMjI1LDcgKzIy
NSw4IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpwYXJzZSgpCiB2b2lkIFdlYlZUVFBhcnNlcjo6Zmls
ZUZpbmlzaGVkKCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7Ci0gICAgcGFy
c2VCeXRlcygiXG5cbiIsIDIpOworICAgIGNvbnN0IHVpbnQ4X3QgZW5kTGluZXNbXSA9ICJcblxu
IjsKKyAgICBwYXJzZUJ5dGVzKGVuZExpbmVzLCAyKTsKICAgICBtX3N0YXRlID0gRmluaXNoZWQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCmluZGV4IGZhMzNh
MmNmMGUzZjA2ODQ5YjcwYWZlYTMwN2I4MzY5ZmUzMWJiNmMuLjEyODU1MjA5MTc0Mzg1ZDA1MjA4
ZGM3YTQwNGRiYWEzMWZmMDY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5uZXIsIGNoYXIs
IEZsb2F0UG9pbnQmKTsKIAogICAgIC8vIElucHV0IGRhdGEgdG8gdGhlIHBhcnNlciB0byBwYXJz
ZS4KLSAgICB2b2lkIHBhcnNlQnl0ZXMoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKyAgICB2b2lk
IHBhcnNlQnl0ZXMoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKTsKICAgICB2b2lkIHBhcnNlRmls
ZUhlYWRlcihTdHJpbmcmJik7CiAgICAgdm9pZCBwYXJzZUN1ZURhdGEoY29uc3QgSVNPV2ViVlRU
Q3VlJik7CiAgICAgdm9pZCBmbHVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKaW5kZXggYmZkYzJiMmIxZDc5MzJiNWU0ZjAwMDgzMjg5YzA1MDQ3NzdlYTI2Zi4u
MGU0MGQ5NTBhMjdkNjMyZjQyMDk0MTRkMmVhMDQ3Yjg0YjMyYTFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBEb2N1
bWVudFdyaXRlcjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQog
Ci12b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3Qg
bGVuZ3RoKQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VS
VCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQyNyBoYXMg
YmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpOb3RT
dGFydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggODVjMGEz
ODZjZGMyMTQ3MjcwNGFjYjljMGY0ZjJkNjA0ODkxMDI5Zi4uNzBmZDIwYzEzNzNhYzBkYzliNDQ0
OTU0YzNhMjA0MDZmMjFiOGM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmgKQEAgLTQ3LDggKzQ3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBiZWdpbigpOwogICAgIGJv
b2wgYmVnaW4oY29uc3QgVVJMJiwgYm9vbCBkaXNwYXRjaFdpbmRvd09iamVjdEF2YWlsYWJsZSA9
IHRydWUsIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gbnVsbHB0cik7Ci0gICAgdm9pZCBhZGRE
YXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKLSAgICB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpIHsgYWRkRGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcyksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogICAgIHZvaWQgaW5zZXJ0RGF0
YVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25s
eSB0byBwcmV2ZW50IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmluZGV4
IGE2YzI2ODkyZGE2MTRjNTEwZjQwNWM2ODhkY2FmY2U4ODExMzRkNDIuLmE2ODcxMWY2YzIxOWY3
YTQ4YWIzYTZlMTZmNTVlYjBlNjQwNWZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TaW5rRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9j
dW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgLy8gSWdu
b3JlIGFsbCBkYXRhLgotICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25z
dCBjaGFyKiwgc2l6ZV90KSBvdmVycmlkZQorICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRX
cml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZQogICAgIHsKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCBkZDg4OTM1
ZGFiNjQ1YjUwYzkwOGE1MmY5ZDdmMTgwZGIxZmUyMDllLi44Y2MzYzU2OGM0Mzc5NmFjNjFiMzA5
NzU0N2E4OWVmODEyZDk4ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05l
d0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiAgICAgd2hpbGUgKG1fcGFyc2VP
ZmZzZXQgPCBidWZmZXItPnNpemUoKSkgewogICAgICAgICBhdXRvIGRhdGEgPSBidWZmZXItPmdl
dFNvbWVEYXRhKG1fcGFyc2VPZmZzZXQpOwotICAgICAgICBtX2N1ZVBhcnNlci0+cGFyc2VCeXRl
cyhkYXRhLmRhdGFBc0NoYXJQdHIoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBtX2N1ZVBhcnNl
ci0+cGFyc2VCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX3BhcnNl
T2Zmc2V0ICs9IGRhdGEuc2l6ZSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZDRj
YWY0ZDVmOWVhNzY2YzYwMDBmOGZmNzM2YzI0N2MxMzIzYjNkMC4uZjI2NGYxZGQ3MTIzZDY5MmM2
NTdmMWVjZTE0OTk0YzQxOTYzMzQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNiw3ICs2MDYs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGFBc0No
YXJQdHIoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1h
bmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9t
YW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAg
ICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGlu
ZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24g
Zm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBE
b2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdFBhcnNlci5jcHAKaW5kZXggYzhhOWJiZGUzZTM3ZGEwNTc3ZTkwNDFlMTk5NjNlNDRmMWEy
NTMyYS4uYjg3ZGQ4MzUwNjA3YzI0YmUyNTZlMzQ0MWJlZDJkMzc2N2UwOTU1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGNhY2hl
TW9kZUlkZW50aWYKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25z
dGV4cHIgQ2hhcmFjdGVyVHlwZSBmYWxsYmFja01vZGVJZGVudGlmaWVyW10gPSB7ICdGJywgJ0En
LCAnTCcsICdMJywgJ0InLCAnQScsICdDJywgJ0snIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgbmV0d29ya01vZGVJZGVu
dGlmaWVyW10gPSB7ICdOJywgJ0UnLCAnVCcsICdXJywgJ08nLCAnUicsICdLJyB9OwogCi1zdGQ6
Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hl
TWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1J
TUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7CiAg
ICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmlmZXN0UGF0aCA9IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RN
SU1FVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmgKaW5kZXggMGJmOWY5ZjE2YTVh
ZjY5ZmNhZmEwMTY5ZDllNjY0NDFiMWY5Zjg2Mi4uNzAwYzFiYzhlY2NjZTk4ZDgzODkxMDg0MTJk
NTMxMTFmMTZkNWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuaApAQCAtNDEsNiAr
NDEsNiBAQCBzdHJ1Y3QgQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0IHsKICAgICBib29sIGFsbG93
QWxsTmV0d29ya1JlcXVlc3RzIHsgZmFsc2UgfTsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09S
SyBzZWN0aW9uLgogfTsKIAotc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+
IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNv
bnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7CitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBt
YW5pZmVzdE1JTUVUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApp
bmRleCA1Y2RlOWI3ZjExYjg3ZTkwOTNkZjhlZGI2MWVhZWFkZGQwMGViODY0Li43ZGMzMWM3Mzky
Y2NlZWVlYmIyNjNiMjRhOWEzMmQ3MzFkZDBhODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaApAQCAtMTIzLDcgKzEyMyw2IEBAIHB1YmxpYzoKICAgICBjbGFzcyBEYXRh
U2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogICAg
IHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0OwotICAgICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQogICAgICAgICBXRUJDT1JF
X0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRl
eCA3OTExY2EyYjc3NTc0ZGVmOWRjNGUxYzMyMjM2MGQyZjk1MzdjMjI5Li45YWFlOWU4MWFiNDFk
NTQ3NDY4MTU0MDM1MTc4NjBmYWQzM2NlN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcApAQCAtMTAyLDcg
KzEwMiw3IEBAIE9TU3RhdHVzIEF1ZGlvRmlsZVJlYWRlcjo6cmVhZFByb2Modm9pZCogY2xpZW50
RGF0YSwgU0ludDY0IHBvc2l0aW9uLCBVSW50MzIgcmVxCiAgICAgaWYgKHN0YXRpY19jYXN0PFVJ
bnQ2ND4ocG9zaXRpb24pIDwgZGF0YVNpemUpIHsKICAgICAgICAgc2l6ZV90IGJ5dGVzQXZhaWxh
YmxlID0gZGF0YVNpemUgLSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKTsKICAgICAgICAg
Ynl0ZXNUb1JlYWQgPSByZXF1ZXN0Q291bnQgPD0gYnl0ZXNBdmFpbGFibGUgPyByZXF1ZXN0Q291
bnQgOiBieXRlc0F2YWlsYWJsZTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKKyAgICAgICAgbWVt
Y3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgcG9zaXRpb24s
IGJ5dGVzVG9SZWFkKTsKICAgICB9CiAKICAgICBpZiAoYWN0dWFsQ291bnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwCmluZGV4IDc1Y2RjMGZhODIxNDQwMzk4YTczYmE3ODIxNGVmMjZmNjE2MDBmMzcuLjVhYTc4
OWEyY2M2MmZlYmRjMDFjYzM1YTNmN2U1NjgxZTM3ZTE5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBA
IC05OCw3ICs5OCw3IEBAIE9TU3RhdHVzIEF1ZGlvRmlsZVJlYWRlcjo6cmVhZFByb2Modm9pZCog
Y2xpZW50RGF0YSwgU0ludDY0IHBvc2l0aW9uLCBVSW50MzIgcmVxCiAgICAgaWYgKHN0YXRpY19j
YXN0PFVJbnQ2ND4ocG9zaXRpb24pIDwgZGF0YVNpemUpIHsKICAgICAgICAgc2l6ZV90IGJ5dGVz
QXZhaWxhYmxlID0gZGF0YVNpemUgLSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKTsKICAg
ICAgICAgYnl0ZXNUb1JlYWQgPSByZXF1ZXN0Q291bnQgPD0gYnl0ZXNBdmFpbGFibGUgPyByZXF1
ZXN0Q291bnQgOiBieXRlc0F2YWlsYWJsZTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKKyAgICAg
ICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgcG9z
aXRpb24sIGJ5dGVzVG9SZWFkKTsKICAgICB9IGVsc2UKICAgICAgICAgYnl0ZXNUb1JlYWQgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKaW5kZXggNWU1ZDM5ODBiODA0YWY0MmI4
NTBjNWJlZjI4MzRlNTAxNmZmMWRkOS4uOTU0ZTU0MWQxOGZiMWEzN2YyZDA3NWZjNmY0ZThlYTlk
OGUzYzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJp
Y0N1ZSYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3Ry
aW5nJiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VX
ZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJ
U09XZWJWVFRDdWUmJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggMDUwMjI0NDFmZmUxZjI3NThkZWYzN2Q4NGI2YmM4N2Ux
OWYyMjAxMC4uMGRkMDFiZTdhN2Y4MzUxNjYxMWIyYmYxMzhhNmYyZjIwZjg1YTg1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC04Niw3ICs4
Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHByb2Nlc3NOYXRpdmVTYW1wbGVzKENGQXJyYXlS
ZWYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkQ3VlcygpOwog
Ci0gICAgVmVjdG9yPGNoYXI+IG1fc2FtcGxlSW5wdXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fc2FtcGxlSW5wdXRCdWZmZXI7CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDBkZWE4
MGUyYmNhNDc4ZWQ0YzAyYWUxYTBiMDU2NTRiODRkMjlkNTAuLmExNjFjNDdjNTBkYjgyODQ3ZTZm
ZjJkNjg1MjhiZDhjY2M3MjJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVh
ZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5k
YXRhQXNDaGFyUHRyKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQg
PSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBi
dWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVj
b2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMs
IGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhy
ZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmlu
ZGV4IDFkMWZjZTZhZGNkNmI5YmU5NjNjZjUxNGJkMTI1MWE5NjY4OTQ3MDguLjUyZGE3M2Q4YmJh
Y2VjZTA1ZWIyNGQ1NmM4ZGM4ZjE5NjI2YjVjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKQEAgLTg0LDEyICs4NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5uZXJEZWNv
ZGVyKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWZQdHI8SW5uZXJEZWNvZGVyPiBj
cmVhdGUoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyJiBkZWNvZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBn
c3NpemUgc2l6ZSkKKyAgICAgICAgc3RhdGljIFJlZlB0cjxJbm5lckRlY29kZXI+IGNyZWF0ZShJ
bWFnZURlY29kZXJHU3RyZWFtZXImIGRlY29kZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGdzc2l6
ZSBzaXplKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbm5l
ckRlY29kZXIoZGVjb2RlciwgZGF0YSwgc2l6ZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgSW5u
ZXJEZWNvZGVyKEltYWdlRGVjb2RlckdTdHJlYW1lciYgZGVjb2RlciwgY29uc3QgY2hhciogZGF0
YSwgZ3NzaXplIHNpemUpCisgICAgICAgIElubmVyRGVjb2RlcihJbWFnZURlY29kZXJHU3RyZWFt
ZXImIGRlY29kZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGdzc2l6ZSBzaXplKQogICAgICAgICAg
ICAgOiBtX2RlY29kZXIoZGVjb2RlcikKICAgICAgICAgICAgICwgbV9ydW5Mb29wKFJ1bkxvb3A6
OmN1cnJlbnQoKSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGVhOGUxMDcyYTk3MWY3MTIxNzE3MGI2MTNl
N2FlNzY4YmFlZGZlYzYuLjRjMWNiOGFjOTY2NWFlYmM3MWNkODIwYWJhYzM0ZDg4NzI1NDMxMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUoKQogCiAgICAgICAgIEdTVF9JTkZPKCJUcmFjayAl
ZCBwYXJzaW5nIHNhbXBsZTogJS4qcyIsIG1faW5kZXgsIHN0YXRpY19jYXN0PGludD4obWFwcGVk
QnVmZmVyLnNpemUoKSksCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihtYXBw
ZWRCdWZmZXIuZGF0YSgpKSk7Ci0gICAgICAgIGNsaWVudCgpLT5wYXJzZVdlYlZUVEN1ZURhdGEo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwcGVkQnVmZmVyLmRhdGEoKSksIG1hcHBlZEJ1ZmZl
ci5zaXplKCkpOworICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKG1hcHBlZEJ1
ZmZlci5kYXRhKCksIG1hcHBlZEJ1ZmZlci5zaXplKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggZmVmNjY1MTI4YWM5MGMxYjAwYTM3Yjg4
ODczZWQ3MTE3NGIwNzc3NC4uMzMwMjhhNWU5NGM5Y2U3MDRhMTM4ZjAzYjkzNGRjMTFlMjlkZTM0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPElt
YWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQo
c2l6ZSwgbmF0aXZlSW1hZ2UtPmhhc0FscGhhKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0Fs
cGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICNpZiBVU0UoQ0FJUk8pCiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpOwotICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZURhdGEgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2VEYXRhID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShzdXJmYWNlKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+dXBkYXRl
Q29udGVudHMoaW1hZ2VEYXRhLCBJbnRSZWN0KEludFBvaW50KCksIHNpemUpLCBJbnRQb2ludCgp
LCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UKICAgICAg
ICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcAppbmRleCA0YjhhZTZhMGNkODU0NmRlZjY2Zjc0YjlmNjk3NjIzYWUyNGQ0MGEwLi42ZDAz
ODYzYjM2NmMyNDVmNDQyZjc0MzkzNzE5YWJlYWRhNWM0YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVk
QnVmZmVyKiBmb250RGF0YSwgRU9USGVhZGVyJiBlb3RIZWFkZXIsIHNpemVfdCYgb3ZlcmxheUQK
IAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdy
aXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5z
IHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFj
dGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBT
aGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8Y2hh
cj4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3
cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0
YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0zNzUsNyArMzc1LDcgQEAg
Ym9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmlu
ZyYgZm9udE5hbWUsIFZlY3RvcjxjaGEKICAgICBzaXplX3QgbmFtZVRhYmxlU2l6ZSA9ICgob2Zm
c2V0b2YobmFtZVRhYmxlLCBuYW1lUmVjb3JkcykgKyBuYW1lUmVjb3JkQ291bnQgKiBzaXplb2Yo
bmFtZVJlY29yZCkgKyBmb250TmFtZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpICYgfjMpICsg
NDsKIAogICAgIHJld3JpdHRlbkZvbnREYXRhLnJlc2l6ZShmb250RGF0YS5zaXplKCkgKyBuYW1l
VGFibGVTaXplKTsKLSAgICBjaGFyKiBkYXRhID0gcmV3cml0dGVuRm9udERhdGEuZGF0YSgpOwor
ICAgIGF1dG8qIGRhdGEgPSByZXdyaXR0ZW5Gb250RGF0YS5kYXRhKCk7CiAgICAgbWVtY3B5KGRh
dGEsIGZvbnREYXRhLmRhdGEoKSwgb3JpZ2luYWxEYXRhU2l6ZSk7CiAKICAgICAvLyBNYWtlIHRo
ZSB0YWJsZSBkaXJlY3RvcnkgZW50cnkgcG9pbnQgdG8gdGhlIG5ldyAnbmFtZScgdGFibGUuCkBA
IC00MTcsNyArNDE3LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3RvcjxjaGEKIC8vIFJlbmFtZSB0aGUg
Zm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KIFJlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewotICAgIFZlY3Rvcjxj
aGFyPiByZXdyaXR0ZW5Gb250RGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9u
dERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVu
Rm9udERhdGEpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aAppbmRleCBkZDI3NjkyY2E1ZDNmZTZjZjFlMWMyN2Q3MjUyYmNjNDhjNWZlODM3Li5mY2YxZjI3
MjJmYjUxNzYyN2FlNmNjMjc3MWYyMjBkMGYyOTc4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIH07CiAKIGJvb2wgZ2V0RU9USGVhZGVy
KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92
ZXJsYXlEc3QsIHNpemVfdCYgb3ZlcmxheVNyYywgc2l6ZV90JiBvdmVybGF5TGVuZ3RoKTsKLWJv
b2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8
Y2hhcj4mKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmLCBWZWN0b3I8dWludDhfdD4mKTsKIFJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCAzNjJiNjQy
ZTUwOGI4MDc5MDEzZWZkYWZlMGQ0YTgxZWFhYTE3ZjFmLi42NzBlMzdkM2ZiZDczMzc4M2JjYzhm
NzU5YjVkMDdmNjhiZWUyZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMTA0LDggKzEw
NCw4IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBz
cmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSCiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtX2lkKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0Owot
ICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc3JjRGF0YSk7
Ci0gICAgVmVjdG9yPGNoYXI+IHRlbXBvcmFyeURhdGE7CisgICAgY29uc3QgdWludDhfdCogZGF0
YSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzcmNEYXRhKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gdGVtcG9yYXJ5RGF0YTsKICAgICBJbnRQb2ludCBhZGp1c3RlZFNvdXJjZU9mZnNldCA9
IHNvdXJjZU9mZnNldDsKIAogICAgIC8vIFRleHR1cmUgdXBsb2FkIHJlcXVpcmVzIHN1YmltYWdl
IGJ1ZmZlciBpZiBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IHN1YmltYWdlIGFuZCB3ZSBkb24ndCBo
YXZlIGZ1bGwgaW1hZ2UgdXBsb2FkLgpAQCAtMTE1LDEwICsxMTUsMTAgQEAgdm9pZCBCaXRtYXBU
ZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJl
Y3QmIHRhcmdldFIKICAgICAvLyBwcmVwYXJlIHRlbXBvcmFyeURhdGEgaWYgbmVjZXNzYXJ5CiAg
ICAgaWYgKHJlcXVpcmVTdWJJbWFnZUJ1ZmZlcikgewogICAgICAgICB0ZW1wb3JhcnlEYXRhLnJl
c2l6ZSh0YXJnZXRSZWN0LndpZHRoKCkgKiB0YXJnZXRSZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQ
aXhlbCk7Ci0gICAgICAgIGNoYXIqIGRzdCA9IHRlbXBvcmFyeURhdGEuZGF0YSgpOworICAgICAg
ICB1aW50OF90KiBkc3QgPSB0ZW1wb3JhcnlEYXRhLmRhdGEoKTsKICAgICAgICAgZGF0YSA9IGRz
dDsKLSAgICAgICAgY29uc3QgY2hhciogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihz
cmNEYXRhKTsKLSAgICAgICAgY29uc3QgY2hhciogc3JjID0gYml0cyArIHNvdXJjZU9mZnNldC55
KCkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsKKyAg
ICAgICAgY29uc3QgdWludDhfdCogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
cmNEYXRhKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogc3JjID0gYml0cyArIHNvdXJjZU9mZnNl
dC55KCkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsK
ICAgICAgICAgY29uc3QgaW50IHRhcmdldEJ5dGVzUGVyTGluZSA9IHRhcmdldFJlY3Qud2lkdGgo
KSAqIGJ5dGVzUGVyUGl4ZWw7CiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGFyZ2V0UmVj
dC5oZWlnaHQoKTsgKyt5KSB7CiAgICAgICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIHRhcmdldEJ5
dGVzUGVyTGluZSk7CkBAIC0xNTcsMTEgKzE1NywxMSBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6
dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBj
bwogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgYnl0ZXNQZXJMaW5lOwotICAgIGNvbnN0IGNo
YXIqIGltYWdlRGF0YTsKKyAgICBjb25zdCB1aW50OF90KiBpbWFnZURhdGE7CiAKICNpZiBVU0Uo
Q0FJUk8pCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpOwotICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOworICAgIGltYWdl
RGF0YSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAgYnl0ZXNQ
ZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogI2VsaWYg
VVNFKERJUkVDVDJEKQogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVz
LmNwcAppbmRleCBlYmFkZjRjNjBkNmRlZWVlOTU1MmIwMTkxYWYxZmRkNTIyM2NhOWJiLi4zNzhm
MGY2MTAyNzYyNjNjMGI5YTdhMzBmYTczNmFhZTJhZTAzMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxp
dGllcy5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBJRFdyaXRlRm9udENvbGxlY3Rpb24xKiB3ZWJQ
cm9jZXNzRm9udENvbGxlY3Rpb24oKQogICAgIHJldHVybiBmb250Q29sbGVjdGlvbi5nZXQoKTsK
IH0KIAotSFJFU1VMVCBhZGRGb250RnJvbURhdGFUb1Byb2Nlc3NDb2xsZWN0aW9uKGNvbnN0IFZl
Y3RvcjxjaGFyPiYgZm9udERhdGEpCitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0Nv
bGxlY3Rpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmb250RGF0YSkKIHsKICAgICBDT01QdHI8
SURXcml0ZUZvbnRGaWxlPiBmb250RmlsZTsKICAgICBIUkVTVUxUIGhyID0gbWVtb3J5Rm9udExv
YWRlcigpLT5DcmVhdGVJbk1lbW9yeUZvbnRGaWxlUmVmZXJlbmNlKGZhY3RvcnkoKSwgZm9udERh
dGEuZGF0YSgpLCBmb250RGF0YS5zaXplKCksIG51bGxwdHIsICZmb250RmlsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0
ZVV0aWxpdGllcy5oCmluZGV4IDcyYWM2ODEzYTI2NGJmYTMyYmYwNTFiMGQ4MDgxZWY2ODE1MTFj
OTkuLmE2MjcxOWIxNzE5YTc0Zjk3NjkyMjE5ZGY1ZjdhYWVkYzQ5MDY0NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0
ZVV0aWxpdGllcy5oCkBAIC01Miw3ICs1Miw3IEBAIElEV3JpdGVHZGlJbnRlcm9wKiBnZGlJbnRl
cm9wKCk7CiAKIElEV3JpdGVGb250Q29sbGVjdGlvbjEqIHdlYlByb2Nlc3NGb250Q29sbGVjdGlv
bigpOwogCi1IUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0NvbGxlY3Rpb24oY29uc3Qg
VmVjdG9yPGNoYXI+JiBmb250RGF0YSk7CitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vz
c0NvbGxlY3Rpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmb250RGF0YSk7CiBDT01QdHI8SURX
cml0ZUZvbnRGYW1pbHk+IGZvbnRGYW1pbHlGb3JDb2xsZWN0aW9uKElEV3JpdGVGb250Q29sbGVj
dGlvbiosIGNvbnN0IFZlY3Rvcjx3Y2hhcl90PiYgbG9jYWxlTmFtZSwgY29uc3QgTE9HRk9OVCYp
OwogQ09NUHRyPElEV3JpdGVGb250PiBjcmVhdGVXaXRoUGxhdGZvcm1Gb250KGNvbnN0IExPR0ZP
TlQmKTsKIFZlY3Rvcjx3Y2hhcl90PiBmYW1pbHlOYW1lRm9yTG9jYWxlKElEV3JpdGVGb250RmFt
aWx5KiwgY29uc3QgVmVjdG9yPHdjaGFyX3Q+JiBsb2NhbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDZkMzkxNTA3MTA4YzFiZWUyNjVhNzE4ZGEwNDc1YjA1OGY4
MjI2ODIuLmZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBp
bmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFy
a2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBi
dWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtYXJrZXItPmRhdGEg
KyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNp
emUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCA2NGRm
NzUwMmUxYjMxNWI5YThkZDI5MDhmMjQ4Y2VhMTViZjEwNjU4Li5hMTg1YzA3ZGIyN2VmMTYyM2Qw
Mzc2NzYzNGEzZDE3MmFhZDBkZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmgKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICBDTVRpbWUg
bV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wIHsga0NNVGltZUludmFsaWQgfTsK
ICAgICBDTVRpbWUgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uIHsga0NNVGltZUludmFsaWQgfTsK
IAotICAgIFZlY3RvcjxjaGFyPiBtX3NvdXJjZUJ1ZmZlcjsKLSAgICBWZWN0b3I8Y2hhcj4gbV9k
ZXN0aW5hdGlvbkJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9zb3VyY2VCdWZmZXI7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGVzdGluYXRpb25CdWZmZXI7CiAKICAgICBSZXRhaW5QdHI8
Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKICAgICBzaXplX3QgbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDEzYTIzMmMxMjhhOTc1ZTBjYjBjMzU3OWI4
NTBkYzI4N2YyZWRlYTAuLmY1Zjg1NTg3MWZjNzA4NTY2ZjdlZjhiOWExNjFlMjdiOGU1ZDg5ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9p
ZCByZXN1bWUoKTsKIAotICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsK
KyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYXVkaW9CaXRSYXRlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KaW5kZXggZDcxMDVjMmZhNDAwY2FmZTg4M2QyYjZiNzUxZDk3MjVhZmNlOTdiZC4u
NjNiZDY1OThkMDJhNWM3MDA2ZGE5MjlmYzk0ZjFmNWY2NmE3MTZkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtNzQsMTQg
Kzc0LDE0IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXImKXdyaXRlcgogLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3Nl
dFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTooTlNE
YXRhICopZnJhZ21lbnRlZEhlYWRlckRhdGEKIHsKICAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0
ZXIpOwotICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihb
ZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0
aF0pOworICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxl
bmd0aF0pOwogfQogCiAtICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRX
cml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRNZWRpYURhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRN
ZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydDooQVZGcmFnbWVudGVkTWVkaWFEYXRh
UmVwb3J0ICopZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydAogewogICAgIFVOVVNFRF9QQVJBTShh
c3NldFdyaXRlcik7CiAgICAgVU5VU0VEX1BBUkFNKGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQp
OwotICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJh
Z21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKTsK
KyAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2Zy
YWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSk7
CiB9CiAKIC0gKHZvaWQpY2xvc2UKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiAgICAgbV9mZXRjaERhdGFDb21w
bGV0aW9uSGFuZGxlcih0YWtlRGF0YSgpLCBjdXJyZW50VGltZUNvZGUpOwogfQogCi12b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhTG9jayB9OwogICAgIGlmICghbV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCmluZGV4IDQzODQwYTNkNjFlOTdlY2QxYWMxOWZlNzM2NWI5OGFjZDdm
MTY2NDAuLjVjYjYwYjllZjZlZjU3YTQzYjRlZWY3MmExMzc2NzliMWFlYmQ2NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNv
dXJjZVByaXZhdGUqIHBhcmVudCkKIAogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6On5Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAotdm9pZCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBt
X2lucHV0QnVmZmVyLmFwcGVuZFZlY3RvcihkYXRhKTsKICAgICBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRSZXN1bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6
QXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmgKaW5kZXggZGZiZjM2YTFlYzY3NGYzYmQ4MGIyOGFhZTgwMTk4OWU1OWU2MTQ3NC4u
MTRmMTU4ZDYwMzFhNjUxZDQwMjcxYWY1ZWIwMDM2NGI4ZWMzNTk1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsK
IAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1
aW50OF90PiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNl
dFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkg
ZmluYWw7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIG1fbWluaW11
bVVwY29taW5nUHJlc2VudGF0aW9uVGltZTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2VucXVldWVk
U2FtcGxlczsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVwdGg7Ci0g
ICAgVmVjdG9yPGNoYXI+IG1faW5wdXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1faW5w
dXRCdWZmZXI7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKaW5kZXggN2FkZGNlMzk4MzA5Nzg3YzNkM2FhZjBjNGVjZTQ0NDQwYjY4YTYz
Ni4uYjhhMTUzZmMxYzE4ZTM3YTdkOGJhM2M4ZmU3YzhlMGRlN2EzZWFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTMxMCw3ICsz
MTAsOCBAQCBib29sIGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIHZh
bHVlKQogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0g
MTI4Owotc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciogcCwgc2l6ZV90
IGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIFN0cmluZyB0cmlt
SW5wdXRTYW1wbGUoQ2hhclR5cGUqIHAsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgU3RyaW5nIHMg
PSBTdHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW5ndGgsIG1heElucHV0U2FtcGxlU2l6ZSkp
OwogICAgIGlmIChsZW5ndGggPiBtYXhJbnB1dFNhbXBsZVNpemUpCkBAIC02MzEsMTQgKzYzMiwx
NSBAQCBib29sIHBhcnNlUmFuZ2UoY29uc3QgU3RyaW5nJiByYW5nZSwgbG9uZyBsb25nJiByYW5n
ZU9mZnNldCwgbG9uZyBsb25nJiByYW5nZUVuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hhciogY2hh
cmFjdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc1ZhbGlkSGVhZGVyTmFtZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikK
IHsKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMu
MgogICAgIC8vIEEgaGVhZGVyIG5hbWUgc2hvdWxkIG9ubHkgY29udGFpbiBvbmUgb3IgbW9yZSBv
ZgogICAgIC8vIGFscGhhbnVtZXJpYyBvciAhICMgJCAlICYgJyAqICsgLSAuIF4gXyBgIHwgfgot
ICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKCpjaGFyYWN0ZXIpKQorICAgIGlmIChpc0FTQ0lJ
QWxwaGFudW1lcmljKGNoYXJhY3RlcikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHN3aXRj
aCAoKmNoYXJhY3RlcikgeworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CiAgICAgY2FzZSAnISc6
CiAgICAgY2FzZSAnIyc6CiAgICAgY2FzZSAnJCc6CkBAIC02NjAsMTYgKzY2MiwxNiBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hhciogY2hh
cmFjdGVyKQogICAgIH0KIH0KIAotc2l6ZV90IHBhcnNlSFRUUEhlYWRlcihjb25zdCBjaGFyKiBz
dGFydCwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdWaWV3JiBu
YW1lU3RyLCBTdHJpbmcmIHZhbHVlU3RyLCBib29sIHN0cmljdCkKK3NpemVfdCBwYXJzZUhUVFBI
ZWFkZXIoY29uc3QgdWludDhfdCogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVy
ZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3RyaW5nJiB2YWx1ZVN0ciwgYm9vbCBzdHJp
Y3QpCiB7Ci0gICAgY29uc3QgY2hhciogcCA9IHN0YXJ0OwotICAgIGNvbnN0IGNoYXIqIGVuZCA9
IHN0YXJ0ICsgbGVuZ3RoOworICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBzdGFydDsKKyAgICBjb25z
dCB1aW50OF90KiBlbmQgPSBzdGFydCArIGxlbmd0aDsKIAotICAgIFZlY3RvcjxjaGFyPiBuYW1l
OwotICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICBWZWN0b3I8dWludDhfdD4gbmFtZTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gdmFsdWU7CiAKICAgICBib29sIGZvdW5kRmlyc3ROYW1lQ2hhciA9
IGZhbHNlOwotICAgIGNvbnN0IGNoYXIqIG5hbWVQdHIgPSBudWxscHRyOworICAgIGNvbnN0IHVp
bnQ4X3QqIG5hbWVQdHIgPSBudWxscHRyOwogICAgIHNpemVfdCBuYW1lU2l6ZSA9IDA7CiAKICAg
ICBuYW1lU3RyID0gU3RyaW5nVmlldygpOwpAQCAtNjkyLDcgKzY5NCw3IEBAIHNpemVfdCBwYXJz
ZUhUVFBIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFp
bHVyZVJlYXNvbiwKICAgICAgICAgY2FzZSAnOic6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIo
cCkpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoKnApKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG5hbWUuc2l6ZSgpIDwgMSkKICAgICAgICAgICAgICAgICAg
ICAgZmFpbHVyZVJlYXNvbiA9ICJVbmV4cGVjdGVkIHN0YXJ0IGNoYXJhY3RlciBpbiBoZWFkZXIg
bmFtZSI7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtNzQ3LDcgKzc0OSw3IEBAIHNpemVfdCBw
YXJzZUhUVFBIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYg
ZmFpbHVyZVJlYXNvbiwKICAgICByZXR1cm4gcCAtIHN0YXJ0OwogfQogCi1zaXplX3QgcGFyc2VI
VFRQUmVxdWVzdEJvZHkoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+JiBib2R5KQorc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5KGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1aW50OF90PiYgYm9keSkKIHsKICAg
ICBib2R5LmNsZWFyKCk7CiAgICAgYm9keS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCBhODY5ZWY3OWJi
NWQyMWJhMzliYjJjMDZlOWNlOGNmM2QzOGY5ODQwLi4xYjFhNGQwYmE4MzhiMmQwYTMyNTU0Yzcz
OWQ4OWI2MWFhYzc4NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oCkBAIC05MSw4ICs5MSw4IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFyc2VS
YW5nZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJhbmdlT2Zmc2V0LCBsb25nIGxvbmcmCiBD
b250ZW50VHlwZU9wdGlvbnNEaXNwb3NpdGlvbiBwYXJzZUNvbnRlbnRUeXBlT3B0aW9uc0hlYWRl
cihTdHJpbmdWaWV3IGhlYWRlcik7CiAKIC8vIFBhcnNpbmcgQ29tcGxldGUgSFRUUCBNZXNzYWdl
cy4KLXNpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdWaWV3JiBuYW1lU3RyLCBTdHJpbmcmIHZh
bHVlU3RyLCBib29sIHN0cmljdCA9IHRydWUpOwotc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYg
Ym9keSk7CitzaXplX3QgcGFyc2VIVFRQSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3Ry
aW5nJiB2YWx1ZVN0ciwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKK3NpemVfdCBwYXJzZUhUVFBSZXF1
ZXN0Qm9keShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBWZWN0b3I8dWludDhf
dD4mIGJvZHkpOwogCiAvLyBIVFRQIEhlYWRlciByb3V0aW5lIGFzIHBlciBodHRwczovL2ZldGNo
LnNwZWMud2hhdHdnLm9yZy8jdGVybWlub2xvZ3ktaGVhZGVycwogYm9vbCBpc0ZvcmJpZGRlbkhl
YWRlck5hbWUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKaW5kZXggZDZjOGNiOTAxNzBmZWRm
YzFiNTVjZTVkN2VjZDgyZjVjZjgwYTM5Mi4uNmRlMWEzZjhhMWY5YjYzZDFlNzFmYjNhYTdjZTQy
NTM0MWE2NTFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIFNvY2tldFN0cmVh
bUhhbmRsZTo6U29ja2V0U3RyZWFtU3RhdGUgU29ja2V0U3RyZWFtSGFuZGxlOjpzdGF0ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpz
ZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wp
PiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nIHx8
IG1fc3RhdGUgPT0gQ2xvc2luZykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKLSAgICBwbGF0Zm9ybVNlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIGxlbmd0aCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBsYXRmb3Jt
U2VuZChkYXRhLCBsZW5ndGgsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwg
c3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mJiBoZWFkZXJGaWVs
ZFByb3h5LCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZS5oCmluZGV4IGNhMTFhNjEzYTY5MTBkODY2Yjg1OTdlMmEyODIzNDRkZDJlMGU3NTMuLjBiOTkz
ZDc4Y2Q0YWVhYWJiOTRmNzMzOTY5Y2VkODhmZjI5NTk4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNTMsNyAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCkgPSBkZWZh
dWx0OwogICAgIFNvY2tldFN0cmVhbVN0YXRlIHN0YXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNl
bmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+KTsKKyAgICB2b2lkIHNlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+KTsKICAgICB2b2lkIHNlbmRIYW5kc2hha2UoQ1N0cmlu
ZyYmIGhhbmRzaGFrZSwgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eT4mJiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4pOwogICAgIHZvaWQgY2xvc2UoKTsgLy8g
RGlzY29ubmVjdCBhZnRlciBhbGwgZGF0YSBpbiBidWZmZXIgYXJlIHNlbnQuCiAgICAgdm9pZCBk
aXNjb25uZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAppbmRleCA2MGEyM2Q1ZjQ3NzQ5NjM2N2Ux
YjYxYjlmZWNhOWJkMWEwNjJiZjJhLi41ZGU1NTljMGFiZGVkOTE1M2NjZGYwNzdlN2UyYjU2ZTdj
YmU4YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJl
YW1IYW5kbGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0
U3RyZWFtSGFuZGxlJiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1v
dW50KFNvY2tldFN0cmVhbUhhbmRsZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNv
bnN0IFNvY2tldFN0cmVhbUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5oCmluZGV4IDhkZTIyNDVhYTNmY2IyNTEw
MGFlOTBhZTlmZTYwOGM0ZGM4NTQzYjYuLjcxZjdlYmIwZjMyNjRlNjQxZTk3ZmZjYjFmMDRiYjYw
MTIzY2I4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RG93bmxvYWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Rvd25sb2FkQnVuZGxlLmgKQEAgLTMxLDggKzMxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRsZSB7CiAKLWJvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25z
dCBjaGFyKiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Ci1ib29sIGV4dHJh
Y3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPGNoYXI+JiByZXN1
bWVEYXRhKTsKK2Jvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25zdCB1aW50OF90KiwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Citib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0
IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bWVEYXRhKTsKIGNvbnN0
IFN0cmluZyYgZmlsZUV4dGVuc2lvbigpOwogCiB9IC8vIG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4IDYyNTQ4NWJmMWMwZThl
NTgxOWJmNjU0MDU1YmQzODY0MzcxODNhNDguLmQxMzc5NDk4YWFiODFlZTJjYTdhYTA4OWIxYjUw
Zjk5NWMyODI5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTYw
Niw3ICs2MDYsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxs
YmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBlKQogICAgICAgICBpZiAobGVuZ3RoID09IC0xKQog
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRo
aXMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0
U3RyZWFtRGF0YSgqdGhpcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocHRyKSwgbGVu
Z3RoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0
aGlzLCBwdHIsIGxlbmd0aCk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3Bw
CmluZGV4IDg0ODEwN2NjNmFkZjA1OGRhYTg4ZDg0NjgwMmEzNmZkOGQ3N2RlMDUuLjA1YjRlMjli
YzkzMWMxNDM0NWI0Nzk1OThiYWVlNjdlYjRiNjhjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtOTgs
NyArOTgsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5Ojppc0NhY2hlZCgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZUNhY2hlZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFvcGVuQ29udGVu
dEZpbGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCA0NzI3NjJjN2Y1
NTJjZGMwZDk0NGY5OTBjYWEzMGQyNmM4MDIzYTI1Li4yNDYxNDA4YmZhNjIyNGRkMTUwOGQxYzQz
ZjI3NmY2MjFkNmEyNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgc2l6ZV90IGVudHJ5U2l6ZSgpOwogICAgIEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
KCkgeyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgYm9vbCBzYXZlQ2FjaGVkRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QpOworICAgIGJvb2wgc2F2ZUNhY2hlZERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICBib29sIHJlYWRDYWNoZWREYXRhKFJlc291
cmNlSGFuZGxlKik7CiAKICAgICBib29sIHNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGU2OWY2YzM1Nzc1ZWRlY2NlYjIy
ZTg1MTU0NjUzYTk0ODYyNmZiY2QuLjc1MDRjOTg4NmZiOGYyNWVmZTc5YTgyNjI2MjgyMDg5ODI2
NzdmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIEN1cmxD
YWNoZU1hbmFnZXI6OmdldENhY2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAg
ICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IDRl
MjQ5YzljMmIwZTlhZjFhZTNhYTQ5M2U4M2I1MThhNjU0MmMzOTIuLmM5ZTI5ZDgwOTcwYzQwNDZl
Nzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSYsIGNvbnN0IGNoYXIqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVf
dCk7IC8vIFNhdmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSYpOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5jcHAKaW5kZXggZmU0MTA3NmQ3NmJhYWQyMWJjZGRjNGEwZTJhZDNiNzY3ZDUyMTU1MC4u
YmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6
cHJvY2Vzc0NvbnRlbnQoKQogICAgICAgICBpZiAobV9idWZmZXIuc2l6ZSgpIDwgMikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBjb25zdCBjaGFyKiBjb250ZW50ID0gbV9i
dWZmZXIuZGF0YSgpOworICAgICAgICBhdXRvKiBjb250ZW50ID0gbV9idWZmZXIuZGF0YSgpOwog
ICAgICAgICAvLyBCeSBkZWZhdWx0IHdlJ2xsIHJlbW92ZSAyIGNoYXJhY3RlcnMgYXQgdGhlIGVu
ZC4KICAgICAgICAgLy8gVGhlIFxyIGFuZCBcbiBhcyBzdGF0ZWQgaW4gdGhlIG11bHRpcGFydCBS
RkMuCiAgICAgICAgIHNpemVfdCByZW1vdmVDb3VudCA9IDI7CkBAIC0yNTAsNyArMjUwLDcgQEAg
Ym9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIE5vdCBlbm91Z2ggZGF0YSB0byBjaGVjay4gUmV0dXJuIGxhdGVyIHdo
ZW4gdGhlcmUgaXMgbW9yZSBkYXRhLgogCiAgICAgICAgIC8vIFdlJ2xsIGRlY2lkZSBpZiB0aGlz
IGlzIGEgY2xvc2luZyBib3VuZGFyeSBvciBhbiBvcGVuaW5nIG9uZS4KLSAgICAgICAgY29uc3Qg
Y2hhciogY29udGVudCA9IG1fYnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXV0byogY29udGVudCA9
IG1fYnVmZmVyLmRhdGEoKTsKIAogICAgICAgICBpZiAoY29udGVudFswXSA9PSAnLScgJiYgY29u
dGVudFsxXSA9PSAnLScpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBjbG9zaW5nIGJvdW5k
YXJ5LiBDbG9zZSBkb3duIHRoZSBoYW5kbGVyLgpAQCAtMzAwLDcgKzMwMCw3IEBAIGJvb2wgQ3Vy
bE11bHRpcGFydEhhbmRsZTo6Y2hlY2tGb3JCb3VuZGFyeShzaXplX3QmIGJvdW5kYXJ5U3RhcnRQ
b3NpdGlvbiwgc2l6ZV90CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zaXplX3QgQ3VybE11bHRp
cGFydEhhbmRsZTo6bWF0Y2hlZExlbmd0aChjb25zdCBjaGFyKiBkYXRhKQorc2l6ZV90IEN1cmxN
dWx0aXBhcnRIYW5kbGU6Om1hdGNoZWRMZW5ndGgoY29uc3QgdWludDhfdCogZGF0YSkKIHsKICAg
ICBhdXRvIGxlbmd0aCA9IG1fYm91bmRhcnkubGVuZ3RoKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtMzE4LDEyICszMTgsMTIgQEAgYm9vbCBDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpwYXJzZUhlYWRlcnNJZlBvc3NpYmxlKCkKICAgICBpZiAoIWNvbnRlbnRM
ZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IGF1dG8gY29udGVudCA9
IG1fYnVmZmVyLmRhdGEoKTsKKyAgICBhdXRvKiBjb250ZW50ID0gbV9idWZmZXIuZGF0YSgpOwog
CiAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSB0aGUgaGVhZGVyIGNsb3Npbmcgc3RyaW5ncy4KLSAg
ICBpZiAoIXN0cm5zdHIoY29udGVudCwgIlxyXG5cclxuIiwgY29udGVudExlbmd0aCkpIHsKKyAg
ICBpZiAoIW1lbW1lbShjb250ZW50LCBjb250ZW50TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSkgewog
ICAgICAgICAvLyBTb21lIHNlcnZlcnMgY2xvc2VzIHRoZSBoZWFkZXJzIHdpdGggb25seSBcbi1z
LgotICAgICAgICBpZiAoIXN0cm5zdHIoY29udGVudCwgIlxuXG4iLCBjb250ZW50TGVuZ3RoKSkg
eworICAgICAgICBpZiAoIW1lbW1lbShjb250ZW50LCBjb250ZW50TGVuZ3RoLCAiXG5cbiIsIDIp
KSB7CiAgICAgICAgICAgICAvLyBEb24ndCBoYXZlIHRoZSBoZWFkZXIgY2xvc2luZyBzdHJpbmcu
IFdhaXQgZm9yIG1vcmUgZGF0YS4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggNmVkNTU2ZjQyYTA1OTAxYjE5YjBmMTAzYjIyYzZh
NDlmMzI2MjFhZC4uYmVjN2E1Mjk2ZmRhMTYxODhhMWFkNDE5YThhMzJhY2IxNjU5Zjg2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudCYgbV9jbGllbnQ7CiAKICAgICBTdHJpbmcgbV9ib3VuZGFyeTsK
LSAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVy
OwogICAgIFZlY3RvcjxTdHJpbmc+IG1faGVhZGVyczsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBT
dGF0ZTo6Q2hlY2tCb3VuZGFyeSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKaW5kZXggYTMwOWMyNThjZDlmMTEyZDNiYmNlNmNhYTcxNDgxODM2YTFmYjAxMC4uZTU2NGEw
Y2U2NjYxNGE0OWExMDMxMzY4ODUxYzRkYTg4MjM1MmE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBDdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hh
cmVkQnUKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFu
ZGxlLCBidWZmZXItPmRhdGFBc0NoYXJQdHIoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIEN1cmxD
YWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVy
KCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcApp
bmRleCAxYjE1YWYwMWJjYzBlYWI5MTBmYzNiOWU4YThkNDYzYjdjNjY4NTE5Li5mZjU1ZDM1MjM0
Mjc4NmZjZGVhZWZjNjRmNmNjYmUwMTVmNGM1YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC0xNDQsNyArMTQ0LDcg
QEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgICAgICBkZXN0cm95SGFuZGxl
KCk7CiAKICAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWluVGhyZWFkKG1fc3RyZWFtSUQs
IFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFdURk1vdmUocmVjZWl2ZUJ1ZmZlciks
IGxlbmd0aCA9IGJ5dGVzUmVjZWl2ZWRdKENsaWVudCYgY2xpZW50KSBtdXRhYmxlIHsKLSAgICAg
ICAgY2xpZW50LmRpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihidWZmZXIuZ2V0KCkpLCBsZW5ndGgpOworICAgICAgICBjbGllbnQuZGlkUmVjZWl2
ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKaW5k
ZXggMzEzYjAxNzNkYTVjZDQwNGExZTNmY2FkOTU3M2I4ZmY3YzNhYmQ0Zi4uZTY0NjI5ZmMyMmEy
MDk3YTJhZjBiMGMwMTM5YjIzZDc5MDhjZjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKEN1cmxTdHJlYW1J
RCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBz
aXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJl
YW1JRCwgY29uc3QgY2hhciosIHNpemVfdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUpID0gMDsK
ICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvRG93bmxvYWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Eb3dubG9hZEJ1bmRsZS5oCmluZGV4IGMxMjVkZWIxOGY4NjI1ZGM3NjE3NzI5M2RmMjcyMWI3
YzI3MjMzZmEuLjZiOTc4YmU2Zjg0ZTZlOTM0NzRiZGIyM2RiNmJlYWIzZDU2ZmE2MDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Eb3dubG9hZEJ1bmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Eb3dubG9hZEJ1
bmRsZS5oCkBAIC0zMCw4ICszMCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
RG93bmxvYWRCdW5kbGUgewogCi1ib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgY2hhciosIHVp
bnQzMl90LCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpOwotYm9vbCBleHRyYWN0UmVzdW1lRGF0
YShjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgsIFZlY3RvcjxjaGFyPiYgcmVzdW1lRGF0YSk7Citi
b29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgdWludDhfdCosIHVpbnQzMl90LCBjb25zdCBTdHJp
bmcmIGJ1bmRsZVBhdGgpOworYm9vbCBleHRyYWN0UmVzdW1lRGF0YShjb25zdCBTdHJpbmcmIGJ1
bmRsZVBhdGgsIFZlY3Rvcjx1aW50OF90PiYgcmVzdW1lRGF0YSk7CiBjb25zdCBTdHJpbmcmIGZp
bGVFeHRlbnNpb24oKTsKIAogfSAvLyBuYW1lc3BhY2UgRG93bmxvYWRCdW5kbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbC5oCmluZGV4IDJkMDU4NGRhYjVjZmY2ZDE0OTA2Mjk2NDJiYWVhNjUyZmFl
YTAwMzMuLmI4MDRmZGUwOTczYmJmYjI4MzMxY2Y3YzNhMWYyMGIwNDNlNzRmZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YShDdXJs
U3RyZWFtSUQsIHNpemVfdCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3Ry
ZWFtSUQsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lk
IGRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSkgZmluYWw7CiAKICAgICBib29sIGlzU3Ry
ZWFtSW52YWxpZGF0ZWQoKSB7IHJldHVybiBtX3N0cmVhbUlEID09IGludmFsaWRDdXJsU3RyZWFt
SUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCmluZGV4IDJmZWNlMDI4
ZWZmZGJlODg1MThlYzdiOGJlMjU5YjBhMDkwODZjY2YuLjRiOTQ5MWMxMTU0M2YyYjYwZjEyZDM2
ZTllNmEwY2JhYWUzNGE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNw
cApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkU2Vu
ZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QgbGVuZ3RoKQogICAgIHNlbmRQZW5kaW5nRGF0YSgp
OwogfQogCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxT
dHJlYW1JRCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbDo6ZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAppbmRleCA5MDFiMmI3MTBlNGY4MWEzYzgwY2Fi
MDM5Mzg4NDdlYTE2NDFlMzI3Li5kODNjM2IyYTYzYjIyYzM5ZTE4YzEyOWU0NGJjOGYyZDM4Yjhi
MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3du
bG9hZEJ1bmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93
aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGNvbnN0IFN0cmluZyYg
ZmlsZUV4dGVuc2lvbigpCiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIAotYm9vbCBhcHBlbmRS
ZXN1bWVEYXRhKGNvbnN0IGNoYXIqIHJlc3VtZUJ5dGVzLCB1aW50MzJfdCByZXN1bWVMZW5ndGgs
IGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCkKK2Jvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25zdCB1
aW50OF90KiByZXN1bWVCeXRlcywgdWludDMyX3QgcmVzdW1lTGVuZ3RoLCBjb25zdCBTdHJpbmcm
IGJ1bmRsZVBhdGgpCiB7CiAgICAgaWYgKCFyZXN1bWVCeXRlcyB8fCAhcmVzdW1lTGVuZ3RoKSB7
CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCByZXN1bWUgZGF0YSB0byB3cml0ZSB0byBidW5k
bGUgcGF0aCIpOwpAQCAtODksNyArODksNyBAQCBleGl0OgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLWJvb2wgZXh0cmFjdFJlc3VtZURhdGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0
b3I8Y2hhcj4mIHJlc3VtZURhdGEpCitib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0IFN0cmlu
ZyYgYnVuZGxlUGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bWVEYXRhKQogewogICAgIGlmIChi
dW5kbGVQYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBjcmVhdGUg
cmVzdW1lIGRhdGEgZnJvbSBlbXB0eSBkb3dubG9hZCBidW5kbGUgcGF0aCIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4
IDhlZDU3MTc0Nzc4Y2I3YmRhZGNhMzY1MTdmZDc5NDQ1NzM4YzUyZDcuLmM5MjhiNjM3MzQ1MGRh
ODE1YzkzZjg2N2NmYzhkOTk1OGIxZTM1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAKICAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSAwOwog
ICAgIHNzaXplX3QgYnl0ZXNSZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKaW5kZXggZWNiNmJhZTE2ODk1NjE2N2Y2MWZhZjNkY2EyOTM2NDZjZGNhZDQ4Ni4uMDA5
NGY0N2Q0NjQwMWQ1OWFjYjg1Zjc2NTQzZGE2MmQ3MzhjMGZlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFT
dGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAg
ICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRl
ciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9z
dmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIo
KS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRh
QXNDaGFyUHRyKCksIGRhdGEoKS0+c2l6ZSgpKTsKKyAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRhdGEoKS0+c2l6
ZSgpKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVu
ZCgpOwogCiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcAppbmRleCAxZjViZWY3OWQxNmUyNzZkOWMxMDExMjhiODg5ZDdjZjFiYThm
MDRhLi4xMjQ3ZGFhNjQ2MzlkNmU2ZWFjMTZkMTEyNjM4YjlmOWQ0YTc5NWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTU5LDcg
KzE1OSw3IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnVwZGF0ZUxlYWZUZXh0Tm9kZSgpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVGhpcyBvcGVyYXRpb24gbWlnaHQgZmlyZSBt
dXRhdGlvbiBldmVudCwgc2VlIGJlbG93LgotICAgIG1fbGVhZlRleHROb2RlLT5hcHBlbmREYXRh
KFN0cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9idWZmZXJl
ZFRleHQuZGF0YSgpKSwgbV9idWZmZXJlZFRleHQuc2l6ZSgpKSk7CisgICAgbV9sZWFmVGV4dE5v
ZGUtPmFwcGVuZERhdGEoU3RyaW5nOjpmcm9tVVRGOChtX2J1ZmZlcmVkVGV4dC5kYXRhKCksIG1f
YnVmZmVyZWRUZXh0LnNpemUoKSkpOwogICAgIG1fYnVmZmVyZWRUZXh0ID0geyB9OwogCiAgICAg
bV9sZWFmVGV4dE5vZGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggZWRmZjg0NjRmZDUy
OTAzNjg2OWRhMGM3ZTRlYjg0OGZhZjkwYmQzZC4uOWVjNTVmNjE2ZjU4NDNiNmM4MDI3YmMxOWRh
N2E2MDU4ZDRhYTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCB2b2lk
IFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYgaGVh
ZGVyKQogICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UGFyc2VXZWJWVFRGaWxlSGVhZGVyKG1f
aWRlbnRpZmllciwgaGVhZGVyKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOwogfQogCi12b2lk
IFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJW
VFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpQYXJzZVdlYlZUVEN1ZURhdGEobV9pZGVudGlmaWVyLCBJUEM6
OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxl
bmd0aCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpQYXJzZVdlYlZUVEN1ZURhdGEobV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2Uo
ZGF0YSwgbGVuZ3RoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1v
dGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYmIGN1ZURh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0
VHJhY2tQcm94eS5oCmluZGV4IGI3NGU4ODJiMTQwYzY2YWM4OTNjYmIyOTg5ZTEwOThiNTAwZWQx
OTYuLjc4YjRlODRlYzJmYmUxYjBjY2RmOTQ4MjBhNjM1ZjhkZDg2YWRkOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUdlbmVy
aWNDdWUoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlV2Vi
VlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHZpcnR1
YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZSYmKTsKIAogICAgIC8vIFRyYWNrUHJpdmF0ZUJhc2VDbGllbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmlu
ZGV4IDFiMzU3ZjY4ZmNhNDM5OWIzZDZhZTQxZWMzOGI4N2UzNDIzOWMxMmQuLjFiNjc0ZTRmOGQ1
NmM2Y2VlZjExZjY3NTBjMTZkOTdjZDdkN2MyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtMzQ0LDcgKzM0NCw3
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6cmVhZERhdGEoY29uc3QgQmxvYkRhdGFJdGVt
JiBpdGVtKQogICAgIGlmIChieXRlc1RvUmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXplKQogICAg
ICAgICBieXRlc1RvUmVhZCA9IG1fdG90YWxSZW1haW5pbmdTaXplOwogCi0gICAgYXV0byogZGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGl0ZW0uZGF0YSgpLmRhdGEoKS0+ZGF0
YSgpKSArIGl0ZW0ub2Zmc2V0KCkgKyBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CisgICAgYXV0byog
ZGF0YSA9IGl0ZW0uZGF0YSgpLmRhdGEoKS0+ZGF0YSgpICsgaXRlbS5vZmZzZXQoKSArIG1fY3Vy
cmVudEl0ZW1SZWFkU2l6ZTsKICAgICBtX2N1cnJlbnRJdGVtUmVhZFNpemUgPSAwOwogCiAgICAg
Y29uc3VtZURhdGEoZGF0YSwgc3RhdGljX2Nhc3Q8aW50PihieXRlc1RvUmVhZCkpOwpAQCAtMzk5
LDcgKzM5OSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkUmVhZChpbnQgYnl0ZXNS
ZWFkKQogICAgIGNvbnN1bWVEYXRhKG1fYnVmZmVyLmRhdGEoKSwgYnl0ZXNSZWFkKTsKIH0KIAot
dm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShjb25zdCBjaGFyKiBkYXRhLCBp
bnQgYnl0ZXNSZWFkKQordm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIG1fdG90YWxSZW1haW5pbmdT
aXplIC09IGJ5dGVzUmVhZDsKIApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrQmxvYjo6ZG93bmxvYWQoKQogICAgIHJlYWQoKTsKIH0KIAotYm9vbCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjp3cml0ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiti
b29sIE5ldHdvcmtEYXRhVGFza0Jsb2I6OndyaXRlRG93bmxvYWQoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGJ5dGVzUmVhZCkKIHsKICAgICBBU1NFUlQoaXNEb3dubG9hZCgpKTsKICAgICBpbnQg
Ynl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGRh
dGEsIGJ5dGVzUmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5oCmluZGV4IGZkOGNkZWYwMjQ4NmYxOWUzZTEwOTk1ZTRjNTMyNWNh
ZTkwY2JiZDEuLmZkMTVlMjQ0MDRkOGFkOTQyMTQzMjY2NmM0NzBiNmYxZTQzYmRiYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
CkBAIC04NSwxMiArODUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNpemVGb3JOZXh0KCk7
CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShFcnJvciA9IEVycm9yOjpOb0Vy
cm9yKTsKICAgICB2b2lkIHNlZWsoKTsKLSAgICB2b2lkIGNvbnN1bWVEYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBieXRlc1JlYWQpOworICAgIHZvaWQgY29uc3VtZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGJ5dGVzUmVhZCk7CiAgICAgdm9pZCByZWFkKCk7CiAgICAgdm9pZCByZWFk
RGF0YShjb25zdCBXZWJDb3JlOjpCbG9iRGF0YUl0ZW0mKTsKICAgICB2b2lkIHJlYWRGaWxlKGNv
bnN0IFdlYkNvcmU6OkJsb2JEYXRhSXRlbSYpOwogICAgIHZvaWQgZG93bmxvYWQoKTsKLSAgICBi
b29sIHdyaXRlRG93bmxvYWQoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCk7CisgICAg
Ym9vbCB3cml0ZURvd25sb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpOwog
ICAgIHZvaWQgY2xlYW5Eb3dubG9hZEZpbGVzKCk7CiAgICAgdm9pZCBkaWRGYWlsRG93bmxvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmluaXNoRG93bmxv
YWQoKTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYkNvcmU6
OkJsb2JEYXRhPiBtX2Jsb2JEYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpBc3lu
Y0ZpbGVTdHJlYW0+IG1fc3RyZWFtOyAvLyBGb3IgYXN5bmNocm9ub3VzIGxvYWRpbmcuCi0gICAg
VmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKICAg
ICBWZWN0b3I8bG9uZyBsb25nPiBtX2l0ZW1MZW5ndGhMaXN0OwogICAgIFN0YXRlIG1fc3RhdGUg
eyBTdGF0ZTo6U3VzcGVuZGVkIH07CiAgICAgbG9uZyBsb25nIG1fcmFuZ2VPZmZzZXQgeyBrUG9z
aXRpb25Ob3RTcGVjaWZpZWQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCmluZGV4IDE1YTk5ZWNlMzRhYzE2MDM0ZDZiYmM4
ZTQ3YzI4OWUzOGI2YzkyYjUuLjUyZWI1YjA4ZjE2Y2JhMjMyMTQ5MDI4Y2RhYTgxNTBhZDA0ZTRh
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmNwcApAQCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgTmV0d29ya1NvY2tldFN0cmVh
bTo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUpCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRDbG9zZVNvY2tldFN0cmVhbSgpKTsK
IH0KIAotdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0
YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCkKK3ZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsICZoYW5kbGUgPT0gbV9pbXBs
LnB0cigpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2NrZXRTdHJlYW06OkRpZFJlY2VpdmVT
b2NrZXRTdHJlYW1EYXRhKElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tl
dFN0cmVhbTo6RGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKGRh
dGEsIGxlbmd0aCkpKTsKIH0KIAogdm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRGYWlsVG9S
ZWNlaXZlU29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dFN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgKaW5kZXggNjAwNmIyZTFiN2M2MzIxMjNkZjA4OWI5MjI3YjI2Zjc5MDY4Y2UwNC4uZTI1
Njk4NDI2NmNlNWVlY2YxNTAyOGE1MjNmNmFhY2Q4M2E2YWViMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudAogICAgIHZvaWQg
ZGlkT3BlblNvY2tldFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZENsb3NlU29ja2V0U3RyZWFtKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUm
LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxUb1JlY2Vp
dmVTb2NrZXRTdHJlYW1EYXRhKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlJiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0oV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6U29ja2V0U3RyZWFtRXJyb3Im
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRl
eCBjMjU3ZmExMWQ2MmEzMTRjMjg2MmRjZDczYjE2YTc4MmM4MTM1MjM2Li45NDZhZjQ3ZGZiN2U2
MTFmMWFiNDQxNzM0YTliMGUxNDE5ZmJlZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuY3BwCkBAIC0xNTMsOSArMTUzLDkgQEAgYm9vbCBTaGFyZWFibGVSZXNv
dXJjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1jb25zdCBjaGFyKiBTaGFyZWFibGVSZXNvdXJjZTo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50
OF90KiBTaGFyZWFibGVSZXNvdXJjZTo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIG1fb2Zmc2V0Owor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRh
dGEoKSkgKyBtX29mZnNldDsKIH0KIAogdW5zaWduZWQgU2hhcmVhYmxlUmVzb3VyY2U6OnNpemUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggNTM3
NGQ3Yjk2Y2YyMjE5YTc2NmJiNzBhYjYwYWM4ODczNjZjMWY0MC4uN2I0N2Y1ZDY4NTFkOWRlMzJk
MWMzYTU0NzA1MTYwYWE0ZjdjNmNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIH5TaGFyZWFibGVSZXNv
dXJjZSgpOwogCi0gICAgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdDsKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7CiAgICAgCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggNWExODBiZWVkMTJmNWNkY2RmYmFlNjcwMmU2OTNiOWVh
NmUwYTg0NC4uM2M5NzFhMTNmNDljNWU3NDRkZTYwOWQ4NWRmYTdkZDNlYjVkMTUyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVEYXRhVG9GaWxl
KGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBmaWxlRGF0YSwgUGxhdGZvcm0KIHsK
ICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwogICAgIGZpbGVEYXRhLmFwcGx5KFtmZCwgJnN1Y2Nl
c3NdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgIGlmICh3cml0
ZVRvRmlsZShmZCwgKGNvbnN0IGNoYXIqKWRhdGEsIHNpemUpID09IC0xKSB7CisgICAgICAgIGlm
ICh3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkgPT0gLTEpIHsKICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXgg
MmY0ODkzODc1MTE0OTkzMzZmYzYwMDFmNjExYWYwZWFiNWI5YzdmNy4uNWNjNDc0YzUzZTU0MWNh
NzE2ZDNlYThhNTg5OWE1MDQ3MjQwMjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgVmVjdG9y
PHVpbnQ4X3Q+IEljb25EYXRhYmFzZTo6aWNvbkRhdGEoaW50NjRfdCBpY29uSUQpCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFk
ZEljb24oY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGljb25EYXRh
KQorc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZEljb24oY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGljb25EYXRhKQogewogICAgIEFT
U0VSVCghaXNNYWluUnVuTG9vcCgpKTsKICAgICBBU1NFUlQobV9kYi5pc09wZW4oKSk7CkBAIC02
MDYsNyArNjA2LDcgQEAgU3RyaW5nIEljb25EYXRhYmFzZTo6aWNvblVSTEZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiBwYWdlVVJMKQogICAgIHJldHVybiBtX3BhZ2VVUkxUb0ljb25VUkxNYXAuZ2V0
KHBhZ2VVUkwpOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpY29uRGF0YSwgc2l6ZV90
IGljb25EYXRhU2l6ZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUg
YWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdWludDhfdCogaWNvbkRhdGEsIHNpemVfdCBpY29uRGF0
YVNpemUsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0
YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIApAQCAtNjM4LDcgKzYzOCw3
IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGlj
b25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBWZWN0b3I8Y2hhcj4gZGF0YSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGljb25E
YXRhKSwgaWNvbkRhdGFTaXplIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgeyBpY29uRGF0
YSwgaWNvbkRhdGFTaXplIH07CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGljb25VUkwgPSBpY29uVVJMLmlzb2xhdGVkQ29w
eSgpLCBpY29uRGF0YSA9IFdURk1vdmUoZGF0YSksIHBhZ2VVUkwgPSBwYWdlVVJMLmlzb2xhdGVk
Q29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgICAgICBpZiAobV9k
Yi5pc09wZW4oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuaAppbmRleCAwZTdiY2M3ZWM2M2RmMjUyNzJmY2M1MTM4NjFmY2I5ODFjODRlYzcz
Li5kMDIxZTJjZDkwZDNjZTkzOWNmZTQ0MzgxZTZlZjAyY2YyYzY3Y2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja0ljb25VUkxBbmRTZXRQYWdlVVJMSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJh
c2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBib29sKT4mJik7CiAgICAgdm9p
ZCBsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgQWxsb3dEYXRhYmFzZVdyaXRlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImJik+JiYpOwog
ICAgIFN0cmluZyBpY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHNl
dEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hh
ciosIHNpemVfdCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0SWNvbkZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBT
dHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogCiBwcml2YXRlOgpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9u
YWw8aW50NjRfdD4gaWNvbklERm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBib29sJiBleHBpcmVk
KTsKICAgICBib29sIHNldEljb25JREZvclBhZ2VVUkwoaW50NjRfdCwgY29uc3QgU3RyaW5nJik7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGljb25EYXRhKGludDY0X3QpOwotICAgIHN0ZDo6b3B0aW9u
YWw8aW50NjRfdD4gYWRkSWNvbihjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8Y2hhcj4mKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGFkZEljb24oY29uc3QgU3RyaW5nJiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+Jik7CiAgICAgdm9pZCB1cGRhdGVJY29uVGltZXN0YW1wKGludDY0X3Qg
aWNvbklELCBpbnQ2NF90IHRpbWVzdGFtcCk7CiAgICAgdm9pZCBkZWxldGVJY29uKGludDY0X3Qp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRU
cmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCAwMmJjNzE2YmI1N2QyZjU4ZjI4ZDU5
ZTU4ODBjN2IyNGExMDBiMDYwLi5mN2Q3MjNjNjNiZmM2MmFjNTdhYWEwMzVhZjJlYzU4ZGRmMTI0
ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRU
cmFja1ByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lk
IFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKICAgICBpZiAoYXV0
byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+cGFyc2VXZWJWVFRD
dWVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5z
aXplKCkpOworICAgICAgICBjbGllbnQtPnBhcnNlV2ViVlRUQ3VlRGF0YShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2Vi
VlRUQ3VlRGF0YVN0cnVjdChJU09XZWJWVFRDdWUmJiBjdWVEYXRhKQpAQCAtMTQwLDcgKzE0MCw3
IEBAIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6YWRkRGF0YUN1ZShNZWRpYVRpbWUmJiBz
dGFydCwgTWVkaWFUaW1lJiYgZW5kLCBJUEM6CiB7CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKICAg
ICBpZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+YWRk
RGF0YUN1ZShXVEZNb3ZlKHN0YXJ0KSwgV1RGTW92ZShlbmQpLCByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgY2xpZW50LT5h
ZGREYXRhQ3VlKFdURk1vdmUoc3RhcnQpLCBXVEZNb3ZlKGVuZCksIGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXgg
Nzg0MWE4ZjNiNjk2YWNkNWQxYTkyNDBkN2QxYjUxM2ViOWFjNjkzMy4uZGQ1NmU3NGVlZWRjY2Ez
MDMwMjZjMjk1MzNhZjgzYTY5NzdlMTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
UmVmPFdlYlNvY2tldENoYW5uZWw+IFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm8KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2Nr
ZXRDaGFubmVsKHdlYlBhZ2VQcm94eUlELCBkb2N1bWVudCwgY2xpZW50KSk7CiB9CiAKLXZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUg
b3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgV2ViU29ja2V0RnJhbWUg
ZnJhbWUob3BDb2RlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZGF0YSwgbGVuZ3RoKTsKICAgICBtX2lu
c3BlY3Rvci5kaWRTZW5kV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgZnJhbWUpOwpA
QCAtNTYsMTAgKzU2LDEwIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5U2VuZEZyYW1l
KFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyCiBOZXR3b3JrU2VuZFF1
ZXVlIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlNvY2tldENoYW5uZWwmIGNoYW5uZWwpCiB7CiAgICAgcmV0dXJuIHsgZG9jdW1lbnQs
IFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0cmluZykgewotICAgICAgICBjaGFubmVsLm5vdGlmeVNl
bmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5nLmRh
dGEoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZy
YW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7
CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFu
bmVsOjpTZW5kU3RyaW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpIH0g
fSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CiAgICAgfSwgWyZjaGFubmVsXShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgYnl0ZUxlbmd0aCkgewotICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBieXRlTGVuZ3RoKTsKKyAgICAgICAgY2hhbm5lbC5ub3Rp
ZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBi
eXRlTGVuZ3RoKTsKICAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29y
a1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgYnl0
ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwogICAgIH0sIFsmY2hhbm5lbF0oRXhjZXB0aW9uQ29k
ZSBleGNlcHRpb25Db2RlKSB7CiAgICAgICAgIGF1dG8gY29kZSA9IHN0YXRpY19jYXN0PGludD4o
ZXhjZXB0aW9uQ29kZSk7CkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpkaWRDb25uZWN0KFN0cmluZyYmIHN1YnByb3RvY29sLCBTdHJpbmcmJiBleHRlbnNpb25zKQog
ICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgV2ViU29ja2V0
RnJhbWUgY3JlYXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUpCitzdGF0aWMg
aW5saW5lIFdlYlNvY2tldEZyYW1lIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9y
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYlNvY2tldEZyYW1lOjpPcENv
ZGUgb3BDb2RlKQogewogICAgIC8vIFRoaXMgaXMgYW4gYXBwcm94aW1hdGlvbiBzaW5jZSBmcmFt
ZXMgY2FuIGJlIG1lcmdlZCBvbiBhIHNpbmdsZSBtZXNzYWdlLgogICAgIFdlYlNvY2tldEZyYW1l
IGZyYW1lOwpAQCAtMjk0LDcgKzI5NCw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVj
ZWl2ZVRleHQoU3RyaW5nJiYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBj
cmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3RvcihtZXNzYWdlLnV0ZjgoKS5kYXRhKCks
IG1lc3NhZ2UudXRmOCgpLmxlbmd0aCgpLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVU
ZXh0KSk7CisgICAgYXV0byB1dGY4TWVzc2FnZSA9IG1lc3NhZ2UudXRmOCgpOworICAgIG1faW5z
cGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBjcmVhdGVX
ZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3RvcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPih1dGY4TWVzc2FnZS5kYXRhKCkpLCB1dGY4TWVzc2FnZS5sZW5ndGgoKSwgV2ViU29ja2V0
RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCkpOwogCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVN
ZXNzYWdlKG1lc3NhZ2UpOwogfQpAQCAtMzE1LDcgKzMxNiw3IEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlJiYgZGF0YSkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2Nr
ZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3Bl
Y3RvcihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnkpKTsKKyAgICBtX2luc3Bl
Y3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3JlYXRlV2Vi
U29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBXZWJT
b2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnkpKTsKIAogICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlQmluYXJ5RGF0YShkYXRhLnZlY3RvcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCAwOTRiYWY2MWY1
NDQzYmYzZTliMjZlOTU0ZmFlOGQ2NTRjMGRlNWQ0Li43MjQxN2UyMzI2MjQxMjdjYzVkYWVkMzQ1
MTc2ZGZhM2ExZjRkOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIGZpbmFsIHsgcmVmKCk7IH0KICAg
ICB2b2lkIGRlcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSBmaW5hbCB7IGRlcmVmKCk7
IH0KIAotICAgIHZvaWQgbm90aWZ5U2VuZEZyYW1lKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpP
cENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIHZvaWQgbm90aWZ5
U2VuZEZyYW1lKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpOwogICAgIHZvaWQgbG9nRXJyb3JNZXNzYWdlKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgLy8gTWVzc2FnZSByZWNlaXZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCmluZGV4IDNiNGFjMjli
MGRmNzY1YzI0OWY3NzI1NzFmNDk0NjZjNTg5ZTcxYTguLjA1YjRkNzU5Mjc2MjgyMjZlYjQwNDY4
ZTg1MWQwMzI2YTk1YTNiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2Vi
U29ja2V0U3RyZWFtOjpkaWRDbG9zZVNvY2tldFN0cmVhbSgpCiAKIHZvaWQgV2ViU29ja2V0U3Ry
ZWFtOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEpCiB7Ci0gICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkp
OworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFdlYlNvY2tldFN0cmVhbTo6ZGlkRmFpbFRv
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMu
Y3BwCmluZGV4IDY5ZjBhZTgyNzk1MDdiNzI5NjVmNjVjMjE2ODczYzQ4MWFkZjRkNjAuLjQ2Njkz
OWVmMTg3YjRhNTBmNzMyMGVkZjJjNjE2YzJjZGNmZjU0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5jcHAKQEAgLTk3LDE2ICs5Nyw0IEBAIGJvb2wgV2ViUGFzdGVib2FyZE92
ZXJyaWRlczo6Z2V0RGF0YUZvck92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6
Z2V0RGF0YUZvck92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgdHlwZSwgVmVjdG9yPGNoYXI+JiBkYXRhKSBjb25zdAotewotICAgIFZlY3Rvcjx1aW50
OF90PiBmb3VuZEJ1ZmZlcjsKLSAgICBpZiAoIWdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJk
TmFtZSwgdHlwZSwgZm91bmRCdWZmZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBk
YXRhLnJlc2l6ZShmb3VuZEJ1ZmZlci5zaXplKCkpOwotICAgIG1lbWNweShkYXRhLmRhdGEoKSwg
Zm91bmRCdWZmZXIuZGF0YSgpLCBmb3VuZEJ1ZmZlci5zaXplKCkpOwotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJp
ZGVzLmgKaW5kZXggZWMwOTMzZTUxMjVlNzk2MDQ0Y2I4MmMzOGIyNGM1YjIyZWRlYjZjNy4uYTg2
NzdmZTU2ZmQ5YWMxMWMyNDljYWE4ZGZmODgwNTMwYjAzYWU3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5oCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3Ry
aW5nPiBvdmVycmlkZGVuVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAKICAg
ICBib29sIGdldERhdGFGb3JPdmVycmlkZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwotICAgIGJvb2wgZ2V0
RGF0YUZvck92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgVmVjdG9yPGNoYXI+JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCAyMGUxY2VkYjg5NzVkYjY0MDFmNGMxNDExZGVmYTFkZDkyOTljNThhLi5m
MDAxYTZjY2ZhZDJkZThmNGRiMDViODE1ZTFlMTdiNTM4OTNmNjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzYwOSw3ICs3NjA5LDcgQEAg
dm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3Qg
VmVjdG9yPFNoYXJlZE1lbW9yeTo6SVAKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFn
ZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1v
cnktPnNpemUoKSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xs
VG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2Uo
KS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVt
b3J5LT5zaXplKCkpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9s
bFRvSGlnaGxpZ2h0OjpObyk7CiAgICAgICAgIGkrKzsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDFkMjcwMmFkYjA4Mjc3YzQ0
NTA4ZDNkZmJkYzQyNzk4NmRjZmMyMmYuLmJlZjYzOWY1NzQ2OTY1Y2U2YTVlNTg4Y2M1YWMzYjQ1
YjgzNzlmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2Fk
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQu
Y3BwCkBAIC0xNjAsMTQgKzE2MCwxNCBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjppbml0VG9SZXN1
bWVXaXRoQnVuZGxlKF9Jbl8gQlNUUiBidW5kbGVQYXRoLCBfSW5fb3B0XyBJV2ViRAogewogICAg
IExPRyhEb3dubG9hZCwgIkF0dGVtcHRpbmcgcmVzdW1lIG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIs
IFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0
YSgpKTsKIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcjsKICAgICBpZiAoIURvd25sb2FkQnVuZGxlOjpleHRyYWN0UmVzdW1lRGF0YShTdHJpbmco
YnVuZGxlUGF0aCwgU3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKSwgYnVmZmVyKSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAogICAgIC8vIEl0IGlzIHBvc3NpYmxlIGJ5IHNvbWUgdHdpc3Qgb2Yg
ZmF0ZSB0aGUgYnVuZGxlIG1hZ2ljIG51bWJlciB3YXMgbmF0dXJhbGx5IGF0IHRoZSBlbmQgb2Yg
dGhlIGZpbGUgYW5kIGl0cyBub3QgYWN0dWFsbHkgYSB2YWxpZCBidW5kbGUuCiAgICAgLy8gVGhh
dCwgb3Igc29tZW9uZSBlbmdpbmVlcmVkIGl0IHRoYXQgd2F5IHRvIHRyeSB0byBhdHRhY2sgdXMu
IEluIHRoYXQgY2F1c2UsIHRoaXMgQ0ZEYXRhIHdpbGwgc3VjY2Vzc2Z1bGx5IGNyZWF0ZSBidXQg
d2hlbiB3ZSBhY3R1YWxseQogICAgIC8vIHRyeSB0byBzdGFydCB0aGUgQ0ZVUkxEb3dubG9hZCB1
c2luZyB0aGlzIGJvZ3VzIGRhdGEsIGl0IHdpbGwgZmFpbCBhbmQgd2Ugd2lsbCBoYW5kbGUgdGhh
dCBncmFjZWZ1bGx5LgotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VtZURhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYnVmZmVy
LmRhdGEoKSksIGJ1ZmZlci5zaXplKCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1
bWVEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSkpOwogCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRl
eCBmYzczYmYyOGNhZWQwNjA2ODI0NDgwNTBkYzFjNmY4YzRhMzQ5OWFjLi41YzkxMjU3NzI1MjY5
ZWJiMzQyNTAzY2M3MTAzMTk0YzMxMTVlNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgSFJFU1VM
VCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6c2V0SFRUUEJvZHkoX0luX29wdF8gSVN0cmVhbSogZGF0
YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHNpemVfdCBsZW5ndGggPSBzdGF0LmNi
U2l6ZS5Mb3dQYXJ0OwotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3IobGVuZ3RoKTsKKyAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yKGxlbmd0aCk7CiAgICAgVUxPTkcgYnl0ZXNSZWFkID0gMDsKICAg
ICBpZiAoRkFJTEVEKGRhdGEtPlJlYWQodmVjdG9yLmRhdGEoKSwgc3RhdC5jYlNpemUuTG93UGFy
dCwgJmJ5dGVzUmVhZCkpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmNwcAppbmRleCBmNmQ1YjU2ZWJlNzlkZmUzNDAzOWI3YjVkMzlmOTVkZjE4ODQx
MWE3Li5lY2U4NGY4ZTVlNTNiNzM5YWEzODc5N2VlNTlmZDg1MDY5NjUxNmNmIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMzEyLDggKzMxMiw4IEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIHNldEF1ZGlvUmVzdWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0CiAgICAgSlNDOjpKU0FycmF5QnVmZmVyVmlldyoganNCdWZmZXJWaWV3ID0gSlND
Ojpqc0R5bmFtaWNDYXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgdG9KUyh0b0pTKGNv
bnRleHQpLCBhcmd1bWVudHNbMF0pKTsKICAgICBBU1NFUlQoanNCdWZmZXJWaWV3KTsKICAgICBS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IGJ1ZmZlclZpZXcgPSBqc0J1ZmZlclZpZXctPnVu
c2hhcmVkSW1wbCgpOwotICAgIGNvbnN0IGNoYXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygpKTsKLSAgICBzdGQ6OnZlY3RvcjxjaGFy
PiBhdWRpb0RhdGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwor
ICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
dWZmZXJWaWV3LT5iYXNlQWRkcmVzcygpKTsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBhdWRp
b0RhdGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogCiAgICAg
VGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOwogICAgIGNvbnRyb2xsZXItPnNldEF1ZGlvUmVzdWx0
KGF1ZGlvRGF0YSk7CkBAIC0yMzY3LDggKzIzNjcsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9w
ZW5QYW5lbEZpbGVzTWVkaWFJY29uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG1l
ZAogICAgIEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqIGpzQnVmZmVyVmlldyA9IEpTQzo6anNEeW5h
bWljQ2FzdDxKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Kj4odm0sIHRvSlModG9KUyhjb250ZXh0KSwg
bWVkaWFJY29uKSk7CiAgICAgQVNTRVJUKGpzQnVmZmVyVmlldyk7CiAgICAgUmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXJWaWV3PiBidWZmZXJWaWV3ID0ganNCdWZmZXJWaWV3LT51bnNoYXJlZEltcGwo
KTsKLSAgICBjb25zdCBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVm
ZmVyVmlldy0+YmFzZUFkZHJlc3MoKSk7Ci0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbWVkaWFJY29u
RGF0YShidWZmZXIsIGJ1ZmZlciArIGJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSk7CisgICAgY29u
c3QgdWludDhfdCogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlclZp
ZXctPmJhc2VBZGRyZXNzKCkpOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1lZGlhSWNvbkRh
dGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogICAgIAogICAg
IG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb24gPSBtZWRpYUljb25EYXRhOwogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5oCmluZGV4IDNlMGE2NzdlMDg3NDYyMWFiNTQ4Njg2M2QxMmU0Nzg4Y2Y1
NmVlNWYuLjJlMDQ5NGUzMGYzZjBiM2E3NDIyZWU3NTkzZjdlN2YzZDY1N2QwYzggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTI5OSw4ICsyOTksOCBAQCBwdWJsaWM6CiAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHRlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RVUkw7IH0KICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhhc2goKSBjb25zdCB7IHJldHVybiBt
X2V4cGVjdGVkUGl4ZWxIYXNoOyB9CiAKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxjaGFyPiYgYXVk
aW9SZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvUmVzdWx0OyB9Ci0gICAgdm9pZCBzZXRB
dWRpb1Jlc3VsdChjb25zdCBzdGQ6OnZlY3RvcjxjaGFyPiYgYXVkaW9EYXRhKSB7IG1fYXVkaW9S
ZXN1bHQgPSBhdWRpb0RhdGE7IH0KKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgYXVk
aW9SZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvUmVzdWx0OyB9CisgICAgdm9pZCBzZXRB
dWRpb1Jlc3VsdChjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgYXVkaW9EYXRhKSB7IG1fYXVk
aW9SZXN1bHQgPSBhdWRpb0RhdGE7IH0KIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzQWxsb3dM
aXN0RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlv
blByb3RvY29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpOwogICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50
cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9wZW5Q
YW5lbEZpbGVzKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNoYXI+JiBvcGVuUGFuZWxGaWxlc01lZGlh
SWNvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb247IH0KKyAgICBj
b25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgb3BlblBhbmVsRmlsZXNNZWRpYUljb24oKSBjb25z
dCB7IHJldHVybiBtX29wZW5QYW5lbEZpbGVzTWVkaWFJY29uOyB9CiAgICAgdm9pZCBzZXRPcGVu
UGFuZWxGaWxlc01lZGlhSWNvbihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogI2VuZGlmCiAK
QEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBt
X3dpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyczsKICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4g
bV9hbGxvd2VkSG9zdHM7CiAKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBtX2F1ZGlvUmVzdWx0Owor
ICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1fYXVkaW9SZXN1bHQ7CiAKICAgICBzdGQ6Om1hcDxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG1fVVJMc1RvUmVkaXJlY3Q7CiAKQEAgLTQ4Miw3ICs0
ODIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1fb3BlblBh
bmVsRmlsZXM7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnZlY3RvcjxjaGFy
PiBtX29wZW5QYW5lbEZpbGVzTWVkaWFJY29uOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1f
b3BlblBhbmVsRmlsZXNNZWRpYUljb247CiAjZW5kaWYKIAogICAgIHN0YXRpYyBKU1JldGFpblB0
cjxKU0NsYXNzUmVmPiBjcmVhdGVKU0NsYXNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURl
bGVnYXRlLm1tCmluZGV4IGJiYTUzYmRiZjk0ZTE5YjNmNzU3MDBlY2FiYWExYzg3ZWY0ZmMyZDgu
LjI3ZjI2MTQ0NWUyZWZlZDkzYTdiNTUzYmVhZDAzZTRlNDk1NGU4N2QgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCkBAIC0zOTYsNyArMzk2LDcgQEAgLSAodm9pZCl3ZWJW
aWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0
TGlzdGVuZXI6KGkKICAgICBhdXRvJiBpY29uRGF0YSA9IGdUZXN0UnVubmVyLT5vcGVuUGFuZWxG
aWxlc01lZGlhSWNvbigpOwogICAgIENHSW1hZ2VSZWYgaW1hZ2VSZWYgPSBudWxscHRyOwogICAg
IGlmICghaWNvbkRhdGEuZW1wdHkoKSkgewotICAgICAgICBhdXRvIGRhdGFSZWYgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZShudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oaWNv
bkRhdGEuZGF0YSgpKSwgaWNvbkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YVJlZiA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIGljb25EYXRhLmRhdGEoKSwgaWNvbkRhdGEu
c2l6ZSgpKSk7CiAgICAgICAgIGF1dG8gaW1hZ2VQcm92aWRlclJlZiA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGFSZWYuZ2V0KCkpKTsKICAgICAgICAgaW1hZ2VS
ZWYgPSBDR0ltYWdlQ3JlYXRlV2l0aEpQRUdEYXRhUHJvdmlkZXIoaW1hZ2VQcm92aWRlclJlZi5n
ZXQoKSwgbnVsbHB0ciwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="452206"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430667</attachid>
            <date>2021-06-05 17:42:18 -0700</date>
            <delta_ts>2021-06-05 21:25:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226688-20210605174217.patch</filename>
            <type>text/plain</type>
            <size>126681</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjViYzlhNjk5MTRjZTRh
Y2JjNmIwZDQ2NzdjNzVjMjYwNzY4OGMwYS4uODk5YTAxY2IwMjlmMjJiYjczMzc4YzUyN2RlZGM3
YjJmNjcxNDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wNi0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhf
dCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkgdG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNo
YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFN0cmVhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6
OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6
cGFyc2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRGcmFtZVBheWxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6OldlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaW1JbnB1
dFNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2
ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFk
U3RhdHVzTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRI
VFRQSGVhZGVycyk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9TZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
Ojp3cml0ZUFsbFRvRmlsZSk6CisgICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogY3J5
cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRNYXN0ZXJLZXkpOgorICAgICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZEJ5dGVzKToKKyAgICAgICAgKiBkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGRvbS9SYXdEYXRhRG9jdW1l
bnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAqIGh0
bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFj
ay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6ZmlsZUZpbmlzaGVkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1
bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltSW5wdXRTYW1wbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VIVFRQSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJl
cXVlc3RCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpkYXRhQ2hhbmdlZCk6CisKIDIwMjEtMDYtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBJbmxpbmVUZXh0Qm94IHRvIExlZ2FjeUlubGluZVRl
eHRCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNDkyOWU2M2M1NGVhN2I1NjVkM2RmMDQ3ZjFlYTA1MTdiNWY1NGIw
ZC4uYzNkYjA5NjdiNDUyZTk0ZTIzZDcwNWJhMTQ1NjgxOWM2M2QyYjMyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0wNi0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhfdCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkg
dG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRD
dWVEYXRhKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnBhcnNlV2Vi
VlRUQ3VlRGF0YSk6CisKIDIwMjEtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBPcHRpbWl6ZSBhIGZldyBjYWxsIHNpdGVzIGNyZWF0aW5nIFNoYXJlZEJ1
ZmZlciBvYmplY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oCmluZGV4IGRi
Nzg2ZDMyOTg1NjZjNGIwYmE3NzM5ODIzMDI5Zjg1NTYyMTc3MDMuLjViZTVhY2JiYTIzYzI0ODdj
ODNlN2EyNTI5ZGQ2NmNkYWY2MTY5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
U29ja2V0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVj
dGlvbi5oCkBAIC01OSw5ICs1OSw5IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHU29ja2V0Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIGNvbnN0IE1lc3NhZ2VIYW5kbGVycyYgbV9tZXNz
YWdlSGFuZGxlcnM7CiAgICAgZ3BvaW50ZXIgbV91c2VyRGF0YTsKLSAgICBWZWN0b3I8Y2hhcj4g
bV9yZWFkQnVmZmVyOworICAgIFZlY3RvcjxnY2hhcj4gbV9yZWFkQnVmZmVyOwogICAgIEdTb2Nr
ZXRNb25pdG9yIG1fcmVhZE1vbml0b3I7Ci0gICAgVmVjdG9yPGNoYXI+IG1fd3JpdGVCdWZmZXI7
CisgICAgVmVjdG9yPGdjaGFyPiBtX3dyaXRlQnVmZmVyOwogICAgIEdTb2NrZXRNb25pdG9yIG1f
d3JpdGVNb25pdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcAppbmRleCAxMGY4OGIxODhhMTYxZDgxZDYzMTdjMmY4YTQ2NWI1ZDgxNTk2YWI4Li4yNWY3
NmE1OTQyMTljOTYzZmMzMzY1YWEzNWI1Y2YyNThlNDQzNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0
YS0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1
bmstPnNpemUpOworICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEs
IGNodW5rLT5zaXplKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBX
VEZNb3ZlKGRhdGEpKTsKICAgICAgICAgICAgIH0pOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQg
RE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJl
c3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRv
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNp
emUpOworICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSwgY2h1bmstPnNp
emUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuY3BwCmluZGV4IDg4YTY3ZTM1NTRhYTQ4Y2MyM2IyMmM1MjEwNmNhZmMxODlmMWU5N2EuLjJh
YjBjYWYxMDBkMGMzMTM4YzJiNjI2NDNkNzNiMjFlYzZiZTllYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzYsNyAr
Mjc2LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICBkYXRhLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2h1bmstPmRh
dGEpLCBjaHVuay0+c2l6ZSk7CisgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5k
YXRhLCBjaHVuay0+c2l6ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YS0+ZGF0YSgpKSwgZGF0
YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChj
b25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiB7CiAgICAgaWYgKG1f
c291cmNlKSB7CiAgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoZGF0YSwgc2l6ZSkpOwpAQCAtMzM0LDExICszMzQsNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICBtX2J1ZmZl
ci0+YXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKLXsKLSAgICBhcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwotfQotCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIHJl
dHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAzN2QwNTRiMTBjZThkYmVkMTkxYzdiODVmODgx
ZGVlNDZlMDRiMGQyLi4xYjYyNzY2M2JkZDJhNTkwOWNlMWVjM2VmN2E5ODJiMjQ5ZDc1Y2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CkBAIC00Niw4ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1
bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9i
dWZmZXI7IH0KICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHAKaW5kZXggYjM5Nzg2OTVmZDdlZjE5MjE0YjZiOTAxYThmM2YxYTk2ZWUw
ZTBlYy4uZGUxM2MxNzRkMzAzMDk2ZmZlM2NiY2UwNDYwOWNjMjk0ZDBlZjUyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShj
b25zdCB3ZWJydGM6OkRhdGFCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9jbGllbnRMb2NrIH07CiAgICAgaWYgKCFtX2NsaWVudCkgewotICAgICAgICBjb25zdCBjaGFy
KiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEuZGF0YTxj
aGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0YSA9IGJ1ZmZlci5kYXRhLmRhdGE8dWludDhfdD4o
KTsKICAgICAgICAgaWYgKGJ1ZmZlci5iaW5hcnkpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkTWVz
c2FnZXMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ1ZmZlci5zaXplKCkpKTsK
ICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDczZTEwNTAxOGQ4YTI2N2NhYmQ0MmY1MzFi
ZmY4NGU0MDM0ZTUwMWMuLmY4OTQ2MDg3N2RiZmYyMDZjMmViNGY3ZDYzZDI5NzJkZmYwYWE4NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVz
cwogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5l
bDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXIgJXAgYnl0ZU9mZnNldD0ldSBieXRl
TGVuZ3RoPSV1IiwgdGhpcywgJmJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwot
ICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxl
bmd0aCk7CisgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnks
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zm
c2V0LCBieXRlTGVuZ3RoKTsKICAgICBwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7CiAgICAg
cmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KQEAgLTE3
MCw5ICsxNzAsOSBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKEJsb2ImIGJpbmFyeURhdGEpCiAgICAgcmV0dXJuIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KIAotYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitib29sIFdlYlNvY2tldENo
YW5uZWw6OnNlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgY2hhciogZGF0YT0l
cCBsZW5ndGg9JWQiLCB0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBzZW5kKCkgU2VuZGluZyB1aW50OF90KiBkYXRhPSVwIGxlbmd0aD0l
ZCIsIHRoaXMsIGRhdGEsIGxlbmd0aCk7CiAgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGVCaW5hcnksIGRhdGEsIGxlbmd0aCk7CiAgICAgcHJvY2Vzc091dGdvaW5nRnJh
bWVRdWV1ZSgpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBo
YW5kbGUpCiAgICAgZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNl
aXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2
ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCkgUmVjZWl2ZWQgJXp1IGJ5dGVz
IiwgdGhpcywgbGVuZ3RoKTsKICAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxs
eSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsKEV4Y2VwdGlvbkNvZGUgZXJyb3JDb2RlKQogICAgIGRl
cmVmKCk7CiB9CiAKLWJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbikKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9C
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbikKIHsKICAgICBzaXplX3QgbmV3
QnVmZmVyU2l6ZSA9IG1fYnVmZmVyLnNpemUoKSArIGxlbjsKICAgICBpZiAobmV3QnVmZmVyU2l6
ZSA8IG1fYnVmZmVyLnNpemUoKSkgewpAQCAtNDg4LDE0ICs0ODgsMTQgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKIAotICAgIFZl
Y3RvcjxjaGFyPiBidWY7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZjsKICAgICBpZiAoIW1fcmVj
ZWl2ZWRDbG9zaW5nSGFuZHNoYWtlICYmIGNvZGUgIT0gQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZp
ZWQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0ZSA9IGNvZGUgPj4gODsKLSAgICAg
ICAgdW5zaWduZWQgY2hhciBsb3dCeXRlID0gY29kZTsKLSAgICAgICAgYnVmLmFwcGVuZChzdGF0
aWNfY2FzdDxjaGFyPihoaWdoQnl0ZSkpOwotICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0
PGNoYXI+KGxvd0J5dGUpKTsKKyAgICAgICAgdWludDhfdCBoaWdoQnl0ZSA9IGNvZGUgPj4gODsK
KyAgICAgICAgdWludDhfdCBsb3dCeXRlID0gY29kZTsKKyAgICAgICAgYnVmLmFwcGVuZChoaWdo
Qnl0ZSk7CisgICAgICAgIGJ1Zi5hcHBlbmQobG93Qnl0ZSk7CiAgICAgICAgIGF1dG8gcmVhc29u
VVRGOCA9IHJlYXNvbi51dGY4KCk7Ci0gICAgICAgIGJ1Zi5hcHBlbmQocmVhc29uVVRGOC5kYXRh
KCksIHJlYXNvblVURjgubGVuZ3RoKCkpOworICAgICAgICBidWYuYXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlYXNvblVURjguZGF0YSgpKSwgcmVhc29uVVRGOC5sZW5n
dGgoKSk7CiAgICAgfQogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2Rl
Q2xvc2UsIGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOwogICAgIFJlZjxXZWJTb2NrZXRDaGFubmVs
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFu
ZHNoYWtlIG1heSBmYWlsLCB3aGljaCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRl
cmVmZXJlbmNlZC4KQEAgLTUyNCw3ICs1MjQsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnBy
b2Nlc3NGcmFtZSgpCiAgICAgQVNTRVJUKCFtX2J1ZmZlci5pc0VtcHR5KCkpOwogCiAgICAgV2Vi
U29ja2V0RnJhbWUgZnJhbWU7Ci0gICAgY29uc3QgY2hhciogZnJhbWVFbmQ7CisgICAgY29uc3Qg
dWludDhfdCogZnJhbWVFbmQ7CiAgICAgU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIFdlYlNvY2tl
dEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IHJlc3VsdCA9IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZy
YW1lKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpLCBmcmFtZSwgZnJhbWVFbmQsIGVy
cm9yU3RyaW5nKTsKICAgICBpZiAocmVzdWx0ID09IFdlYlNvY2tldEZyYW1lOjpGcmFtZUluY29t
cGxldGUpCkBAIC02NTYsOCArNjU2LDggQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNz
RnJhbWUoKQogICAgICAgICAgICAgZmFpbCgiUmVjZWl2ZWQgYSBicm9rZW4gY2xvc2UgZnJhbWUg
Y29udGFpbmluZyBhbiBpbnZhbGlkIHNpemUgYm9keS4iKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5
dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihmcmFtZS5wYXlsb2FkWzBdKTsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgbG93Qnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGZyYW1lLnBheWxvYWRbMV0pOworICAgICAgICAgICAgYXV0byBoaWdoQnl0ZSA9IGZyYW1lLnBh
eWxvYWRbMF07CisgICAgICAgICAgICBhdXRvIGxvd0J5dGUgPSBmcmFtZS5wYXlsb2FkWzFdOwog
ICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IGhpZ2hCeXRlIDw8IDggfCBsb3dCeXRlOwog
ICAgICAgICAgICAgaWYgKG1fY2xvc2VFdmVudENvZGUgPT0gQ2xvc2VFdmVudENvZGVOb1N0YXR1
c1JjdmQgfHwgbV9jbG9zZUV2ZW50Q29kZSA9PSBDbG9zZUV2ZW50Q29kZUFibm9ybWFsQ2xvc3Vy
ZSB8fCBtX2Nsb3NlRXZlbnRDb2RlID09IENsb3NlRXZlbnRDb2RlVExTSGFuZHNoYWtlKSB7CiAg
ICAgICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IENsb3NlRXZlbnRDb2RlQWJub3JtYWxD
bG9zdXJlOwpAQCAtNzE0LDcgKzcxNCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1
ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgbV9vdXRnb2luZ0ZyYW1lUXVl
dWUuYXBwZW5kKFdURk1vdmUoZnJhbWUpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpl
bnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVl
UmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1
ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKICAgICBhdXRvIGZyYW1lID0gbWFr
ZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICBhdXRvIGZyYW1l
ID0gbV9vdXRnb2luZ0ZyYW1lUXVldWUudGFrZUZpcnN0KCk7CiAgICAgICAgIHN3aXRjaCAoZnJh
bWUtPmZyYW1lVHlwZSkgewogICAgICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZVN0cmluZzogewot
ICAgICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmRh
dGEoKSwgZnJhbWUtPnN0cmluZ0RhdGEubGVuZ3RoKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIHNlbmRGcmFtZShm
cmFtZS0+b3BDb2RlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZS0+c3Ry
aW5nRGF0YS5kYXRhKCkpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAgICAgICAg
ICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNl
bmQgV2ViU29ja2V0IGZyYW1lLiIpOwogICAgICAgICAgICAgfSk7CkBAIC03ODAsNyArNzgwLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAg
ICAgICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IG1fYmxvYkxvYWRlci0+
YXJyYXlCdWZmZXJSZXN1bHQoKTsKICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBudWxs
cHRyOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9IEJsb2JMb2FkZXJOb3RT
dGFydGVkOwotICAgICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2Vzcykgewor
ICAgICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBmYWls
KCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWUuIik7CiAgICAgICAgICAgICAgICAgfSk7
CkBAIC04MTMsNyArODEzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjphYm9ydE91dGdvaW5n
RnJhbWVRdWV1ZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2Rl
IG9wQ29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdURjo6RnVu
Y3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faGFu
ZGxlKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKQEAgLTgyNyw3ICs4MjcsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29k
ZSwgY29uc3QgY2hhciogZGF0YQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBmcmFtZURhdGE7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGZyYW1lRGF0YTsKICAgICBmcmFtZS5tYWtlRnJhbWVEYXRhKGZyYW1lRGF0YSk7CiAK
ICAgICBtX2hhbmRsZS0+c2VuZERhdGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRhLnNpemUo
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggYTQ2MmUzZTA4ZTA5
Mjc5ODcwMWUzN2IxYmM0MjEyZDE4NjlhMzE4MC4uMGQwZWQyNmZmNWYxY2YwYzAzNjRlMmY5MmVk
MjM2NjA2YTZlMTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdl
YlNvY2tldENoYW5uZWxDbGllbnQmIGNsaWVudCwgU29ja2V0UHJvdmlkZXImIHByb3ZpZGVyKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldENoYW5uZWwoZG9jdW1lbnQsIGNsaWVudCwg
cHJvdmlkZXIpKTsgfQogICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKIAotICAgIGJv
b2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICBib29sIHNlbmQoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAvLyBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbCBmdW5jdGlvbnMuCiAgICAgQ29ubmVjdFN0YXR1cyBjb25uZWN0KGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOwpAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IGZ1bmN0aW9ucy4KICAgICB2b2lk
IGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0
IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEoU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5k
bGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVh
bUhhbmRsZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
U29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9y
JikgZmluYWw7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZlRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVy
ZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCi0g
ICAgYm9vbCBhcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKTsKKyAg
ICBib29sIGFwcGVuZFRvQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW4pOwog
ICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsKICAgICBib29sIHByb2Nlc3NCdWZmZXIo
KTsKICAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoKTsKQEAgLTE2MCwxMSArMTYwLDExIEBAIHBy
aXZhdGU6CiAgICAgICAgIFF1ZXVlZEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgICAgIC8vIE9u
bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXRlbXMgaXMgdXNlZCwgYWNjb3JkaW5nIHRvIHRoZSB2
YWx1ZSBvZiBmcmFtZVR5cGUuCiAgICAgICAgIENTdHJpbmcgc3RyaW5nRGF0YTsKLSAgICAgICAg
VmVjdG9yPGNoYXI+IHZlY3RvckRhdGE7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JE
YXRhOwogICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYkRhdGE7CiAgICAgfTsKICAgICB2b2lkIGVu
cXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYpOwotICAgIHZvaWQgZW5xdWV1ZVJhd0ZyYW1l
KFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKTsKKyAgICB2b2lkIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBlbnF1ZXVl
QmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIEJsb2ImKTsKIAogICAgIHZvaWQgcHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBJZiB5b3UgYXJlIGdvaW5nIHRvIHNlbmQgYSBoeWJpLTEwIGZyYW1lLCB5b3UgbmVl
ZCB0byB1c2UgdGhlIG91dGdvaW5nIGZyYW1lIHF1ZXVlCiAgICAgLy8gaW5zdGVhZCBvZiBjYWxs
IHNlbmRGcmFtZSgpIGRpcmVjdGx5LgotICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNvY2tldEZyYW1l
OjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNlbmRGcmFtZShX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAg
ICBlbnVtIEJsb2JMb2FkZXJTdGF0dXMgewogICAgICAgICBCbG9iTG9hZGVyTm90U3RhcnRlZCwK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU29ja2V0Q2hhbm5l
bENsaWVudD4gbV9jbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEhhbmRzaGFr
ZT4gbV9oYW5kc2hha2U7CiAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9oYW5kbGU7
Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZl
cjsKIAogICAgIFRpbWVyIG1fcmVzdW1lVGltZXI7CiAgICAgYm9vbCBtX3N1c3BlbmRlZCB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVyLmNwcAppbmRleCAxNGFiODA5NWIyNWNmMTM5NGMwODQ5YTBiMTg3ODE3
NGM0NTczM2FkLi4xMTJlZDJlZTBlYTM2ZWE0YjNjNzA5NGQ3NTczOGEyZWRlM2MyN2ZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlci5jcHAKQEAgLTYzLDE1ICs2MywxNSBAQCBXZWJTb2NrZXREZWZsYXRlcjo6fldlYlNv
Y2tldERlZmxhdGVyKCkKICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXREZWZsYXRlciAl
cCBEZXN0cnVjdG9yIGRlZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIGlzIHJldHVybmVkIiwgdGhpcywg
cmVzdWx0KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtKiBz
dHJlYW0sIGNvbnN0IGNoYXIqIGlucHV0RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBv
dXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQorc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFy
YW1ldGVyKHpfc3RyZWFtKiBzdHJlYW0sIGNvbnN0IHVpbnQ4X3QqIGlucHV0RGF0YSwgc2l6ZV90
IGlucHV0TGVuZ3RoLCB1aW50OF90KiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQog
ewotICAgIHN0cmVhbS0+bmV4dF9pbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihjb25zdF9j
YXN0PGNoYXIqPihpbnB1dERhdGEpKTsKKyAgICBzdHJlYW0tPm5leHRfaW4gPSBjb25zdF9jYXN0
PHVpbnQ4X3QqPihpbnB1dERhdGEpOwogICAgIHN0cmVhbS0+YXZhaWxfaW4gPSBpbnB1dExlbmd0
aDsKLSAgICBzdHJlYW0tPm5leHRfb3V0ID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KG91dHB1
dERhdGEpOworICAgIHN0cmVhbS0+bmV4dF9vdXQgPSBvdXRwdXREYXRhOwogICAgIHN0cmVhbS0+
YXZhaWxfb3V0ID0gb3V0cHV0TGVuZ3RoOwogfQogCi1ib29sIFdlYlNvY2tldERlZmxhdGVyOjph
ZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9vbCBXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM3LDcgKzEzNyw3
IEBAIFdlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIoKQogICAgICAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldEluZmxhdGVyICVwIERlc3RydWN0b3IgaW5mbGF0ZUVuZCgpIGZh
aWxlZDogJWQgaXMgcmV0dXJuZWQiLCB0aGlzLCByZXN1bHQpOwogfQogCi1ib29sIFdlYlNvY2tl
dEluZmxhdGVyOjphZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9v
bCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTcwLDcgKzE3MCw3IEBAIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAKIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmZpbmlz
aCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmlwcGVkRmllbGRzID0gIlwwXDBceGZm
XHhmZiI7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qgc3RyaXBwZWRGaWVsZHNbXSA9ICJcMFww
XHhmZlx4ZmYiOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc3RyaXBwZWRMZW5ndGggPSA0Owog
CiAgICAgLy8gQXBwZW5kcyA0IG9jdGVzdHMgb2YgMHgwMCAweDAwIDB4ZmYgMHhmZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIu
aAppbmRleCBmNjJkYzU4NWE4M2JlM2ExMzk0MWI1N2JhZjcyOTY1NmMxMzA0OTJiLi44ZjQ1NGZi
M2I2OTZkOGJjNDNlZjJhYTU3YjFmN2IwOWNlMjYwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaApAQCAtNDksMTYg
KzQ5LDE2IEBAIHB1YmxpYzoKICAgICB+V2ViU29ja2V0RGVmbGF0ZXIoKTsKIAogICAgIGJvb2wg
aW5pdGlhbGl6ZSgpOwotICAgIGJvb2wgYWRkQnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7Cisg
ICAgYm9vbCBhZGRCeXRlcyhjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBib29sIGZpbmlz
aCgpOwotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0K
KyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KICAgICB2
b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6CiAgICAgaW50IG1fd2luZG93Qml0czsKICAgICBDb250
ZXh0VGFrZU92ZXJNb2RlIG1fY29udGV4dFRha2VPdmVyTW9kZTsKLSAgICBWZWN0b3I8Y2hhcj4g
bV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYnVmZmVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjx6X3N0cmVhbT4gbV9zdHJlYW07CiB9OwogCkBAIC02OSwxNSArNjksMTUgQEAgcHVibGlj
OgogICAgIH5XZWJTb2NrZXRJbmZsYXRlcigpOwogCiAgICAgYm9vbCBpbml0aWFsaXplKCk7Ci0g
ICAgYm9vbCBhZGRCeXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGFkZEJ5dGVz
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgZmluaXNoKCk7Ci0gICAgY29uc3Qg
Y2hhciogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQogICAgIHZvaWQgcmVzZXQoKTsKIAog
cHJpdmF0ZToKICAgICBpbnQgbV93aW5kb3dCaXRzOwotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZl
cjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHpf
c3RyZWFtPiBtX3N0cmVhbTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwCmluZGV4IGY3ZjM2NTc1YjI2NzU1Y2NiOWEy
MWU4OWU2YmIzZTRkMDJlNzA4YjkuLjYzZTI1NzMxMTM5NjcxNjgzYmM4ZWVjMmJmNWI2MWQxYjY1
N2VlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEZyYW1lLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIENvbnN0YW50cyBmb3IgaHliaS0xMCBmcmFtZSBmb3JtYXQuCi1jb25zdCB1bnNpZ25l
ZCBjaGFyIGZpbmFsQml0ID0gMHg4MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgY29tcHJlc3NCaXQg
PSAweDQwOwotY29uc3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDJCaXQgPSAweDIwOwotY29uc3Qg
dW5zaWduZWQgY2hhciByZXNlcnZlZDNCaXQgPSAweDEwOwotY29uc3QgdW5zaWduZWQgY2hhciBv
cENvZGVNYXNrID0gMHhGOwotY29uc3QgdW5zaWduZWQgY2hhciBtYXNrQml0ID0gMHg4MDsKLWNv
bnN0IHVuc2lnbmVkIGNoYXIgcGF5bG9hZExlbmd0aE1hc2sgPSAweDdGOworY29uc3QgdWludDhf
dCBmaW5hbEJpdCA9IDB4ODA7Citjb25zdCB1aW50OF90IGNvbXByZXNzQml0ID0gMHg0MDsKK2Nv
bnN0IHVpbnQ4X3QgcmVzZXJ2ZWQyQml0ID0gMHgyMDsKK2NvbnN0IHVpbnQ4X3QgcmVzZXJ2ZWQz
Qml0ID0gMHgxMDsKK2NvbnN0IHVpbnQ4X3Qgb3BDb2RlTWFzayA9IDB4RjsKK2NvbnN0IHVpbnQ4
X3QgbWFza0JpdCA9IDB4ODA7Citjb25zdCB1aW50OF90IHBheWxvYWRMZW5ndGhNYXNrID0gMHg3
RjsKIGNvbnN0IHNpemVfdCBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmll
bGQgPSAxMjU7CiBjb25zdCBzaXplX3QgcGF5bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRM
ZW5ndGhGaWVsZCA9IDEyNjsKIGNvbnN0IHNpemVfdCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0
ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjc7CkBAIC00NywyMiArNDcsMjIgQEAgYm9vbCBXZWJT
b2NrZXRGcmFtZTo6bmVlZHNFeHRlbmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3Ro
KQogICAgIHJldHVybiBwYXlsb2FkTGVuZ3RoID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRl
bmRlZExlbmd0aEZpZWxkOwogfQogCi1XZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBX
ZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
V2ViU29ja2V0RnJhbWUmIGZyYW1lLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQsIFN0cmluZyYgZXJy
b3JTdHJpbmcpCitXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFt
ZTo6cGFyc2VGcmFtZSh1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0
RnJhbWUmIGZyYW1lLCBjb25zdCB1aW50OF90KiYgZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJp
bmcpCiB7Ci0gICAgY2hhciogcCA9IGRhdGE7Ci0gICAgY29uc3QgY2hhciogYnVmZmVyRW5kID0g
ZGF0YSArIGRhdGFMZW5ndGg7CisgICAgdWludDhfdCogcCA9IGRhdGE7CisgICAgY29uc3QgdWlu
dDhfdCogYnVmZmVyRW5kID0gZGF0YSArIGRhdGFMZW5ndGg7CiAKICAgICBpZiAoZGF0YUxlbmd0
aCA8IDIpCiAgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CiAKLSAgICB1bnNpZ25lZCBj
aGFyIGZpcnN0Qnl0ZSA9ICpwKys7Ci0gICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnAr
KzsKKyAgICB1aW50OF90IGZpcnN0Qnl0ZSA9ICpwKys7CisgICAgdWludDhfdCBzZWNvbmRCeXRl
ID0gKnArKzsKIAogICAgIGJvb2wgZmluYWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKICAgICBi
b29sIGNvbXByZXNzID0gZmlyc3RCeXRlICYgY29tcHJlc3NCaXQ7CiAgICAgYm9vbCByZXNlcnZl
ZDIgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDJCaXQ7CiAgICAgYm9vbCByZXNlcnZlZDMgPSBmaXJz
dEJ5dGUgJiByZXNlcnZlZDNCaXQ7Ci0gICAgdW5zaWduZWQgY2hhciBvcENvZGUgPSBmaXJzdEJ5
dGUgJiBvcENvZGVNYXNrOworICAgIHVpbnQ4X3Qgb3BDb2RlID0gZmlyc3RCeXRlICYgb3BDb2Rl
TWFzazsKIAogICAgIGJvb2wgbWFza2VkID0gc2Vjb25kQnl0ZSAmIG1hc2tCaXQ7CiAgICAgdWlu
dDY0X3QgcGF5bG9hZExlbmd0aDY0ID0gc2Vjb25kQnl0ZSAmIHBheWxvYWRMZW5ndGhNYXNrOwpA
QCAtNzksNyArNzksNyBAQCBXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2Nr
ZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZAogICAgICAgICBwYXlsb2Fk
TGVuZ3RoNjQgPSAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuZGVkUGF5bG9h
ZExlbmd0aFNpemU7ICsraSkgewogICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IDw8PSA4Owot
ICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KCpwKyspOworICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KCpwKyspOwogICAgICAgICB9CiAgICAgICAgIGlmIChleHRlbmRlZFBheWxvYWRMZW5ndGhT
aXplID09IDIgJiYgcGF5bG9hZExlbmd0aDY0IDw9IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0
ZW5kZWRMZW5ndGhGaWVsZCkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVGhlIG1pbmlt
YWwgbnVtYmVyIG9mIGJ5dGVzIE1VU1QgYmUgdXNlZCB0byBlbmNvZGUgdGhlIGxlbmd0aCI7CkBA
IC0xMDMsOCArMTAzLDggQEAgV2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29j
a2V0RnJhbWU6OnBhcnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGQKICAgICAgICAgcmV0dXJu
IEZyYW1lSW5jb21wbGV0ZTsKIAogICAgIGlmIChtYXNrZWQpIHsKLSAgICAgICAgY29uc3QgY2hh
ciogbWFza2luZ0tleSA9IHA7Ci0gICAgICAgIGNoYXIqIHBheWxvYWQgPSBwICsgbWFza2luZ0tl
eVdpZHRoSW5CeXRlczsKKyAgICAgICAgdWludDhfdCogbWFza2luZ0tleSA9IHA7CisgICAgICAg
IHVpbnQ4X3QqIHBheWxvYWQgPSBwICsgbWFza2luZ0tleVdpZHRoSW5CeXRlczsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBw
YXlsb2FkW2ldIF49IG1hc2tpbmdLZXlbaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNdOyAvLyBV
bm1hc2sgdGhlIHBheWxvYWQuCiAgICAgfQpAQCAtMTIxLDcgKzEyMSw3IEBAIFdlYlNvY2tldEZy
YW1lOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZyYW1lKGNoYXIqIGRh
dGEsIHNpemVfdCBkCiAgICAgcmV0dXJuIEZyYW1lT0s7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVu
ZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYg
ZnJhbWVEYXRhKQorc3RhdGljIHZvaWQgYXBwZW5kRnJhbWVQYXlsb2FkKGNvbnN0IFdlYlNvY2tl
dEZyYW1lJiBmcmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiBmcmFtZURhdGEpCiB7CiAgICAgc2l6ZV90
IG1hc2tpbmdLZXlTdGFydCA9IDA7CiAgICAgaWYgKGZyYW1lLm1hc2tlZCkgewpAQCAtMTM5LDcg
KzEzOSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRG
cmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVECiAgICAgfQogfQogCi12b2lkIFdlYlNv
Y2tldEZyYW1lOjptYWtlRnJhbWVEYXRhKFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQordm9pZCBX
ZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSkK
IHsKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhl
ciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogCkBAIC0xNTUsNyArMTU1
LDcgQEAgdm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hhcj4mIGZy
YW1lRGF0YSkKICAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChwYXlsb2FkTGVuZ3RoICYgMHhGRik7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgZnJhbWVEYXRhLmF0KDEpIHw9IHBheWxvYWRMZW5ndGhX
aXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZDsKLSAgICAgICAgY2hhciBleHRlbmRlZFBh
eWxvYWRMZW5ndGhbOF07CisgICAgICAgIHVpbnQ4X3QgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzhd
OwogICAgICAgICBzaXplX3QgcmVtYWluaW5nID0gcGF5bG9hZExlbmd0aDsKICAgICAgICAgLy8g
RmlsbCB0aGUgbGVuZ3RoIGludG8gZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoIGluIHRoZSBuZXR3b3Jr
IGJ5dGUgb3JkZXIuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CkBAIC0x
NjksNyArMTY5LDcgQEAgdm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8
Y2hhcj4mIGZyYW1lRGF0YSkKICAgICBhcHBlbmRGcmFtZVBheWxvYWQoKnRoaXMsIGZyYW1lRGF0
YSk7CiB9CiAKLVdlYlNvY2tldEZyYW1lOjpXZWJTb2NrZXRGcmFtZShPcENvZGUgb3BDb2RlLCBi
b29sIGZpbmFsLCBib29sIGNvbXByZXNzLCBib29sIG1hc2tlZCwgY29uc3QgY2hhciogcGF5bG9h
ZCwgc2l6ZV90IHBheWxvYWRMZW5ndGgpCitXZWJTb2NrZXRGcmFtZTo6V2ViU29ja2V0RnJhbWUo
T3BDb2RlIG9wQ29kZSwgYm9vbCBmaW5hbCwgYm9vbCBjb21wcmVzcywgYm9vbCBtYXNrZWQsIGNv
bnN0IHVpbnQ4X3QqIHBheWxvYWQsIHNpemVfdCBwYXlsb2FkTGVuZ3RoKQogICAgIDogb3BDb2Rl
KG9wQ29kZSkKICAgICAsIGZpbmFsKGZpbmFsKQogICAgICwgY29tcHJlc3MoY29tcHJlc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5o
CmluZGV4IGRiMTYwZGNmYjFlZTU5NTVhOWQ1N2ZkYzg3N2I0Zjk0NzNhNTczYTAuLmE3NGNiODI5
Yzc1YWVjYTE5MTNmOWY4NDJiYzM5M2E0N2FkZGMxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCkBAIC01NiwxMCArNTYsMTAg
QEAgc3RydWN0IFdlYlNvY2tldEZyYW1lIHsKICAgICBzdGF0aWMgYm9vbCBpc0NvbnRyb2xPcENv
ZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNsb3NlIHx8IG9wQ29k
ZSA9PSBPcENvZGVQaW5nIHx8IG9wQ29kZSA9PSBPcENvZGVQb25nOyB9CiAgICAgc3RhdGljIGJv
b2wgaXNSZXNlcnZlZE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiAhaXNOb25Db250cm9s
T3BDb2RlKG9wQ29kZSkgJiYgIWlzQ29udHJvbE9wQ29kZShvcENvZGUpOyB9CiAgICAgc3RhdGlj
IGJvb2wgbmVlZHNFeHRlbmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3RoKTsKLSAg
ICBzdGF0aWMgUGFyc2VGcmFtZVJlc3VsdCBwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBXZWJTb2NrZXRGcmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCwgU3RyaW5n
JiBlcnJvclN0cmluZyk7IC8vIE1heSBtb2RpZnkgcGFydCBvZiBkYXRhIHRvIHVubWFzayB0aGUg
ZnJhbWUuCisgICAgc3RhdGljIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZSh1aW50OF90KiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0RnJhbWUmLCBjb25zdCB1aW50OF90KiYg
ZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJpbmcpOyAvLyBNYXkgbW9kaWZ5IHBhcnQgb2YgZGF0
YSB0byB1bm1hc2sgdGhlIGZyYW1lLgogCi0gICAgV0VCQ09SRV9FWFBPUlQgV2ViU29ja2V0RnJh
bWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNvbXBy
ZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IGNoYXIqIHBheWxvYWQgPSBu
dWxscHRyLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApOwotICAgIHZvaWQgbWFrZUZyYW1lRGF0
YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViU29ja2V0
RnJhbWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNv
bXByZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IHVpbnQ4X3QqIHBheWxv
YWQgPSBudWxscHRyLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApOworICAgIHZvaWQgbWFrZUZy
YW1lRGF0YShWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSk7CiAKICAgICBPcENvZGUgb3BDb2Rl
OwogICAgIGJvb2wgZmluYWw7CkBAIC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFt
ZSB7CiAgICAgYm9vbCByZXNlcnZlZDI7CiAgICAgYm9vbCByZXNlcnZlZDM7CiAgICAgYm9vbCBt
YXNrZWQ7Ci0gICAgY29uc3QgY2hhciogcGF5bG9hZDsKKyAgICBjb25zdCB1aW50OF90KiBwYXls
b2FkOwogICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRl
eCA4NDljZjVmNjI0YmNjMjcyZWU1ZTdiYzYyNmRhN2U1MDNhZDQ0OTIyLi45ZDExNjk5ZjFhNGI2
YzU2NzY3NWI3MWEzMjgzMGMyNDJhMDU4MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtODQsNyAr
ODQsNyBAQCBzdGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNvbnN0IFVSTCYgdXJsLCBib29sIHNlY3Vy
ZSkKIH0KIAogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7Ci1z
dGF0aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShjb25zdCBjaGFyKiBwLCBzaXplX3QgbGVuKQor
c3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgdWludDhfdCogcCwgc2l6ZV90IGxl
bikKIHsKICAgICBTdHJpbmcgcyA9IFN0cmluZyhwLCBzdGQ6Om1pbjxzaXplX3Q+KGxlbiwgbWF4
SW5wdXRTYW1wbGVTaXplKSk7CiAgICAgaWYgKGxlbiA+IG1heElucHV0U2FtcGxlU2l6ZSkKQEAg
LTIyMSw3ICsyMjEsNyBAQCB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQogICAgIG1f
ZXh0ZW5zaW9uRGlzcGF0Y2hlci5yZXNldCgpOwogfQogCi1pbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKK2lu
dCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgdWludDhfdCog
aGVhZGVyLCBzaXplX3QgbGVuKQogewogICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgaW50
IHN0YXR1c0NvZGU7CkBAIC0yNDUsMTIgKzI0NSwxMiBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtl
OjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKICAg
ICAgICAgcmV0dXJuIGxlbjsKICAgICB9CiAgICAgbV9tb2RlID0gTm9ybWFsOwotICAgIGlmICgh
c3RybnN0cihoZWFkZXIsICJcclxuXHJcbiIsIGxlbikpIHsKKyAgICBpZiAoIW1lbW1lbShoZWFk
ZXIsIGxlbiwgIlxyXG5cclxuIiwgNCkpIHsKICAgICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiBy
ZWNlaXZlZCBmdWxseSB5ZXQuCiAgICAgICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgICAg
IHJldHVybiAtMTsKICAgICB9Ci0gICAgY29uc3QgY2hhciogcCA9IHJlYWRIVFRQSGVhZGVycyho
ZWFkZXIgKyBsaW5lTGVuZ3RoLCBoZWFkZXIgKyBsZW4pOworICAgIGNvbnN0IHVpbnQ4X3QqIHAg
PSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyICsgbGluZUxlbmd0aCwgaGVhZGVyICsgbGVuKTsKICAg
ICBpZiAoIXApIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRIYW5kc2hha2UgJXAg
cmVhZFNlcnZlckhhbmRzaGFrZSgpIHJlYWRIVFRQSGVhZGVycygpIGZhaWxlZCIsIHRoaXMpOwog
ICAgICAgICBtX21vZGUgPSBGYWlsZWQ7IC8vIG1fZmFpbHVyZVJlYXNvbiBpcyBzZXQgaW5zaWRl
IHJlYWRIVFRQSGVhZGVycygpLgpAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAv
LyBSZXR1cm5zIHRoZSBoZWFkZXIgbGVuZ3RoIChpbmNsdWRpbmcgIlxyXG4iKSwgb3IgLTEgaWYg
d2UgaGF2ZSBub3QgcmVjZWl2ZWQgZW5vdWdoIGRhdGEgeWV0LgogLy8gSWYgdGhlIGxpbmUgaXMg
bWFsZm9ybWVkIG9yIHRoZSBzdGF0dXMgY29kZSBpcyBub3QgYSAzLWRpZ2l0IG51bWJlciwKIC8v
IHN0YXR1c0NvZGUgYW5kIHN0YXR1c1RleHQgd2lsbCBiZSBzZXQgdG8gLTEgYW5kIGEgbnVsbCBz
dHJpbmcsIHJlc3BlY3RpdmVseS4KLWludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNM
aW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50JiBzdGF0dXND
b2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpCitpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3Rh
dHVzTGluZShjb25zdCB1aW50OF90KiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsIGludCYg
c3RhdHVzQ29kZSwgU3RyaW5nJiBzdGF0dXNUZXh0KQogewogICAgIC8vIEFyYml0cmFyeSBzaXpl
IGxpbWl0IHRvIHByZXZlbnQgdGhlIHNlcnZlciBmcm9tIHNlbmRpbmcgYW4gdW5ib3VuZGVkCiAg
ICAgLy8gYW1vdW50IG9mIGRhdGEgd2l0aCBubyBuZXdsaW5lcyBhbmQgZm9yY2luZyB1cyB0byBi
dWZmZXIgaXQgYWxsLgpAQCAtMzcxLDkgKzM3MSw5IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6
OnJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwK
ICAgICBzdGF0dXNDb2RlID0gLTE7CiAgICAgc3RhdHVzVGV4dCA9IFN0cmluZygpOwogCi0gICAg
Y29uc3QgY2hhciogc3BhY2UxID0gbnVsbHB0cjsKLSAgICBjb25zdCBjaGFyKiBzcGFjZTIgPSBu
dWxscHRyOwotICAgIGNvbnN0IGNoYXIqIHA7CisgICAgY29uc3QgdWludDhfdCogc3BhY2UxID0g
bnVsbHB0cjsKKyAgICBjb25zdCB1aW50OF90KiBzcGFjZTIgPSBudWxscHRyOworICAgIGNvbnN0
IHVpbnQ4X3QqIHA7CiAgICAgc2l6ZV90IGNvbnN1bWVkTGVuZ3RoOwogCiAgICAgZm9yIChwID0g
aGVhZGVyLCBjb25zdW1lZExlbmd0aCA9IDA7IGNvbnN1bWVkTGVuZ3RoIDwgaGVhZGVyTGVuZ3Ro
OyBwKyssIGNvbnN1bWVkTGVuZ3RoKyspIHsKQEAgLTM5Nyw3ICszOTcsNyBAQCBpbnQgV2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBo
ZWFkZXJMZW5ndGgsCiAgICAgaWYgKGNvbnN1bWVkTGVuZ3RoID09IGhlYWRlckxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIC0xOyAvLyBXZSBoYXZlIG5vdCByZWNlaXZlZCAnXG4nIHlldC4KIAotICAg
IGNvbnN0IGNoYXIqIGVuZCA9IHAgKyAxOworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHAgKyAx
OwogICAgIGludCBsaW5lTGVuZ3RoID0gZW5kIC0gaGVhZGVyOwogICAgIGlmIChsaW5lTGVuZ3Ro
ID4gbWF4aW11bUxlbmd0aCkgewogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU3RhdHVzIGxp
bmUgaXMgdG9vIGxvbmciX3M7CkBAIC00MTUsMTMgKzQxNSwxMyBAQCBpbnQgV2ViU29ja2V0SGFu
ZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJM
ZW5ndGgsCiAgICAgICAgIHJldHVybiBsaW5lTGVuZ3RoOwogICAgIH0KIAotICAgIFN0cmluZ1Zp
ZXcgaHR0cFN0YXR1c0xpbmUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGhlYWRlciks
IHNwYWNlMSAtIGhlYWRlcik7CisgICAgU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZShoZWFkZXIs
IHNwYWNlMSAtIGhlYWRlcik7CiAgICAgaWYgKCFoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKGh0
dHBTdGF0dXNMaW5lKSkgewogICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBtYWtlU3RyaW5nKCJJ
bnZhbGlkIEhUVFAgdmVyc2lvbiBzdHJpbmc6ICIsIGh0dHBTdGF0dXNMaW5lKTsKICAgICAgICAg
cmV0dXJuIGxpbmVMZW5ndGg7CiAgICAgfQogCi0gICAgU3RyaW5nVmlldyBzdGF0dXNDb2RlU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzcGFjZTEgKyAxKSwgc3BhY2UyIC0g
c3BhY2UxIC0gMSk7CisgICAgU3RyaW5nVmlldyBzdGF0dXNDb2RlU3RyaW5nKHNwYWNlMSArIDEs
IHNwYWNlMiAtIHNwYWNlMSAtIDEpOwogICAgIGlmIChzdGF0dXNDb2RlU3RyaW5nLmxlbmd0aCgp
ICE9IDMpIC8vIFN0YXR1cyBjb2RlIG11c3QgY29uc2lzdCBvZiB0aHJlZSBkaWdpdHMuCiAgICAg
ICAgIHJldHVybiBsaW5lTGVuZ3RoOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7
CkBAIC00MzYsMTQgKzQzNiwxNCBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVz
TGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsCiAgICAgcmV0dXJu
IGxpbmVMZW5ndGg7CiB9CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCitjb25zdCB1aW50
OF90KiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCB1aW50OF90KiBz
dGFydCwgY29uc3QgdWludDhfdCogZW5kKQogewogICAgIFN0cmluZ1ZpZXcgbmFtZTsKICAgICBT
dHJpbmcgdmFsdWU7CiAgICAgYm9vbCBzYXdTZWNXZWJTb2NrZXRFeHRlbnNpb25zSGVhZGVyRmll
bGQgPSBmYWxzZTsKICAgICBib29sIHNhd1NlY1dlYlNvY2tldEFjY2VwdEhlYWRlckZpZWxkID0g
ZmFsc2U7CiAgICAgYm9vbCBzYXdTZWNXZWJTb2NrZXRQcm90b2NvbEhlYWRlckZpZWxkID0gZmFs
c2U7Ci0gICAgY29uc3QgY2hhciogcCA9IHN0YXJ0OworICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBz
dGFydDsKICAgICBmb3IgKDsgcCA8IGVuZDsgcCsrKSB7CiAgICAgICAgIHNpemVfdCBjb25zdW1l
ZExlbmd0aCA9IHBhcnNlSFRUUEhlYWRlcihwLCBlbmQgLSBwLCBtX2ZhaWx1cmVSZWFzb24sIG5h
bWUsIHZhbHVlKTsKICAgICAgICAgaWYgKCFjb25zdW1lZExlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAppbmRl
eCBlYWY4YTVjMDZhZDIwNThkM2QzODk1MTM1MjM5OTZmNmJlM2UwZGQzLi41ZTY0YzE4MzRmNmU4
MzYxNGQzMDFjNGZlZGQzOWQ4ODNjYWQ3YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC02OCw3ICs2OCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIGludCByZWFkU2VydmVySGFu
ZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbik7CisgICAgaW50IHJlYWRTZXJ2
ZXJIYW5kc2hha2UoY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgbGVuKTsKICAgICBNb2Rl
IG1vZGUoKSBjb25zdDsKICAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0OyAvLyBSZXR1
cm5zIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHJlYXNvbiBvZiBmYWlsdXJlIGlmIG1vZGUoKSA9
PSBGYWlsZWQuCiAKQEAgLTg3LDEwICs4NywxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAg
ICBpbnQgcmVhZFN0YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVu
Z3RoLCBpbnQmIHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCk7CisgICAgaW50IHJlYWRT
dGF0dXNMaW5lKGNvbnN0IHVpbnQ4X3QqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50
JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpOwogCiAgICAgLy8gUmVhZHMgYWxsIGhl
YWRlcnMgZXhjZXB0IGZvciB0aGUgdHdvIHByZWRlZmluZWQgb25lcy4KLSAgICBjb25zdCBjaGFy
KiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCk7Cisg
ICAgY29uc3QgdWludDhfdCogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IHVpbnQ4X3QqIHN0YXJ0LCBj
b25zdCB1aW50OF90KiBlbmQpOwogICAgIHZvaWQgcHJvY2Vzc0hlYWRlcnMoKTsKICAgICBib29s
IGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCmluZGV4IDBiZjJhYTlhMTBiMjJlMTE1YTMyZjI1MTRhN2Q3ZWI1MDZiNTk4
MWEuLmIzZjMxMDk1YWFhOWFlODM5NGZiOTg1OWM2ZGY0OGIyY2I5ZjA4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDQ3LDEwICs0NDcsMTAgQEAg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAgICBpZiAoIW1fcGVlcikKICAgICAgICAgcmV0dXJu
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKIAotICAgIC8vIEFycmF5QnVm
ZmVyIGlzbid0IHRocmVhZC1zYWZlLCBoZW5jZSB0aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBp
cyBjb3BpZWQgaW50byBWZWN0b3I8Y2hhcj4uCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEoYnl0ZUxl
bmd0aCk7CisgICAgLy8gQXJyYXlCdWZmZXIgaXNuJ3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRoZSBj
b250ZW50IG9mIEFycmF5QnVmZmVyIGlzIGNvcGllZCBpbnRvIFZlY3Rvcjx1aW50OF90Pi4KKyAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YShieXRlTGVuZ3RoKTsKICAgICBpZiAoYmluYXJ5RGF0YS5i
eXRlTGVuZ3RoKCkpCi0gICAgICAgIG1lbWNweShkYXRhLmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwor
ICAgICAgICBtZW1jcHkoZGF0YS5kYXRhKCksIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
aW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAgICBzZXRNZXRo
b2ROb3RDb21wbGV0ZWQoKTsKIAogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihb
cGVlciA9IG1fcGVlciwgZGF0YSA9IFdURk1vdmUoZGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
U2VyaWFsaXplZE5GQS5jcHAKaW5kZXggMjgzN2FjZjllZWY5NGRiYzhiZjhhMDMzOTIzNzEyM2M5
ZGU2YzVlMi4uOTZmNjViZGQ0Y2U3OWJiYTg4NmQ5OWExYzY2MjRmZmJlNGYxMzAzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAK
QEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBib29sIHdyaXRlQWxsVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlLCBjb25zdCBUJiBjb250YWluZXIpCiB7Ci0gICAgY29uc3QgY2hhciogYnl0
ZXMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb250YWluZXIuZGF0YSgpKTsKKyAg
ICBjb25zdCB1aW50OF90KiBieXRlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGNvbnRhaW5lci5kYXRhKCkpOwogICAgIHNpemVfdCBieXRlc0xlbmd0aCA9IGNvbnRhaW5lci5z
aXplKCkgKiBzaXplb2YoY29udGFpbmVyWzBdKTsKLSAgICBjb25zdCBjaGFyKiBlbmQgPSBieXRl
cyArIGJ5dGVzTGVuZ3RoOworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IGJ5dGVzICsgYnl0ZXNM
ZW5ndGg7CiAgICAgd2hpbGUgKGJ5dGVzIDwgZW5kKSB7CiAgICAgICAgIGF1dG8gd3JpdHRlbiA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIGJ5dGVzLCBieXRlc0xlbmd0aCk7CiAgICAg
ICAgIGlmICh3cml0dGVuID09IC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cAppbmRleCA3NjY0YzA2OWYxNDlmYmVlNmQxYjU0NzE2Mjg2MTk4MmQ2MTg5YTk4Li44NjQzODcw
ZGQwZTgxMjJkYTE4Mzg5YmJjYWU4NTdkYTdlMzJlMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcApAQCAtMTEyMyw3ICsxMTIzLDcgQEAgdm9pZCBTdWJ0bGVDcnlwdG86
OnVud3JhcEtleShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgS2V5Rm9ybWF0IGZvcm1hdCwg
QnVmZmUKICAgICAgICAgICAgICAgICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOwogICAgICAg
ICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nIGp3a1N0cmluZyhyZWludGVycHJldF9jYXN0X3B0cjxj
b25zdCBjaGFyKj4oYnl0ZXMuZGF0YSgpKSwgYnl0ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nIGp3a1N0cmluZyhieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvIGp3a09iamVjdCA9IEpTT05QYXJzZSgmc3RhdGUsIGp3a1N0cmluZyk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghandrT2JqZWN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCAyZDIx
NDRmMGFjNTk2ZTM5OTY0NWQxNzAzYTg2OTJlYTM1YmEzNjQ3Li5kMjk5MDlhMzQ5N2RjNGE0OWE3
YWYwZDZkMzI0OTQ5OGQxNzI1NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KQEAgLTE2Nyw3ICsxNjcsNyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGZpbmRNYXN0ZXJLZXkoKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBrZXlEYXRhID0gYWRvcHRDRihrZXlEYXRhUmVmKTsKLSAgICByZXR1cm4gYmFzZTY0RGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoa2V5RGF0
YS5nZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5RGF0YS5nZXQoKSkpOworICAgIHJldHVybiBi
YXNlNjREZWNvZGUoQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKGtleURhdGEuZ2V0KCkpKTsKIH0KIAogc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGRlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rl
Y29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGVkODU2NjQ3YTM5OWQ2NWIwODExMTdi
ODY5MDQxNWQyNDI5YWY3NzAuLjdiMmI0NTAzMWNiNTA1M2NiNjQ1NmQ4ZWM2NGQ4YmNjN2UwNjRl
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6RGVjb2Rl
ZERhdGFEb2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQgRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImIHdyaXRl
ciwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRGVjb2RlZERhdGFEb2N1
bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImIHdyaXRlciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1l
bnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmgKaW5kZXggYmJiMDZhM2U4YTdkZDAxZmRmMWQyZjkxY2ZmNDUxMGJkNGU2N2QxNi4uOTU1ODJh
MGQ2OTM5MGIyYTUxNjIzNWVlNjNmYmZiYzMwYzViZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBhcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlID0gMDsK
IAogICAgIC8vIGFwcGVuZEJ5dGVzIGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVudFdyaXRl
ciAodGhlIGxvYWRlcikuCi0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGVu
ZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2goRG9jdW1lbnRXcml0ZXImKSBvdmVycmlkZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKaW5kZXggOWNiZTkyYTMyN2ZkMjUy
ZThlZTAzMjQ5OTNkNzUyNDJhZTVmNTBjNy4uN2M0YzNkMmU3ZGNlOGM5OTc1MDBhNGU2ZGI1OWQw
MGRiYTZhMDczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYp
ID0gMDsKIAogICAgIC8vIGFwcGVuZEJ5dGVzIGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVu
dFdyaXRlciAodGhlIGxvYWRlcikuCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3Vt
ZW50V3JpdGVyJiwgY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaChEb2N1bWVu
dFdyaXRlciYpID0gMDsKIAogICAgIC8vIEZJWE1FOiBhcHBlbmQoKSBzaG91bGQgYmUgcHJpdmF0
ZSwgYnV0IERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQgdXNlcyBpdCBmb3Igbm93Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCmluZGV4IDA5NGVjODdm
NjVhYzI3NWI1N2IwODFkMGJjMjJkZTVmYmI5YWQ4OTcuLmRlMzg5OTIxYWM2ZGMwZTAwY2U0Njk5
YjQ3NjhiYmE4Y2VhZDdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRh
RG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50
UGFyc2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoKERvY3Vt
ZW50V3JpdGVyJiB3cml0ZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICAvLyBNYWtlIHN1cmUg
YXBwZW5kQnl0ZXMgaXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UuCi0gICAgICAgIGFwcGVuZEJ5dGVz
KHdyaXRlciwgMCwgMCk7CisgICAgICAgIGFwcGVuZEJ5dGVzKHdyaXRlciwgbnVsbHB0ciwgMCk7
CiAgICAgfQogCiAgICAgdm9pZCBpbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYpIG92ZXJyaWRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0NTM4Y2Y3NjkwNTEyMDljYTM5
OTI3MmMwZDlhYzgyNjM3ZmQxZjRlLi5mYTliZGFmMjIxMTdhN2MxODdhYzBiZmY4YjYzMDczMTgx
MDg0N2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKIAogICAgIEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAK
LSAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVf
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGU7
CiB9OwogCkBAIC0xODcsNyArMTg3LDcgQEAgaW5saW5lIEltYWdlRG9jdW1lbnQmIEltYWdlRG9j
dW1lbnRQYXJzZXI6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VE
b2N1bWVudD4oKlJhd0RhdGFEb2N1bWVudFBhcnNlcjo6ZG9jdW1lbnQoKSk7CiB9CiAKLXZvaWQg
SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBj
aGFyKiwgc2l6ZV90KQordm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1
bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpCiB7CiAgICAgZG9jdW1lbnQoKS51
cGRhdGVEdXJpbmdQYXJzaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNw
cAppbmRleCA3Y2IzOWVkNTY3OTg2Zjk4OWRmOGYyZmYwNjBhNGJlNmI1Mjk1NGU1Li5lOWU5MDNh
ZmViN2U0ODdjZGIxMjZlYTI3Mjk3N2M2ZDY2YmZkNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFEb2N1bWVudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudCB7IG51bGxwdHIgfTsK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3Vt
ZW50U3RydWN0dXJlKCkKICAgICBmcmFtZS0+bG9hZGVyKCkuc2V0T3V0Z29pbmdSZWZlcnJlcihk
b2N1bWVudC5jb21wbGV0ZVVSTChtX291dGdvaW5nUmVmZXJyZXIpKTsKIH0KIAotdm9pZCBNZWRp
YURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIq
LCBzaXplX3QpCit2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50
V3JpdGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkKIHsKICAgICBpZiAobV9tZWRpYUVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAK
aW5kZXggZDU4ODJmYjI4NTVkOTc4ZDM0MTYxYjQ1Y2FkZmQzMTBjNjAyMGZhMC4uZTNhM2RhNmZm
MjQ3MTliZmM5NzUyZGZlNTUzYTE2Mzc2NGRlNmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCk7CiAKICAgICBIVE1MRW1iZWRFbGVtZW50KiBtX2VtYmVkRWxlbWVudCB7IG51bGxwdHIgfTsK
QEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSgpCiAgICAgZG9jdW1lbnQuc2V0SGFzVmlzdWFsbHlOb25FbXB0eUN1c3Rv
bUNvbnRlbnQoKTsKIH0KIAotdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMo
RG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KQordm9pZCBQbHVnaW5Eb2N1bWVu
dFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6
ZV90KQogewogICAgIGlmIChtX2VtYmVkRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggMTBkNzE4MmUyMjhh
MTRjOGY0MmM3MmE2ZGQzNzAwNjAxOTYxZWJmZi4uYmIxMmMxNTlkZTc0ZjkyOTQ1MzY5NTQxZDc4
NzJlNmM1YzFhY2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRU
cmFjay5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVHZW5lcmlj
Q3VlKEluYmFuZEdlbmVyaWNDdWUmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKICAgICB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJpbmcmJikgb3ZlcnJpZGUgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0
IGNoYXIqLCB1bnNpZ25lZCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkgb3ZlcnJp
ZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRh
KElTT1dlYlZUVEN1ZSYmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRl
eCAwNWQ3NTEwMWI1YzFiODFiYzZlOWQ0MjIzZDU4OWUxNzEwZjg4MDNjLi5hMjIyOGJjMTdlYTM1
NmY2MDUyMjhjNTRlY2UzNzBkYzRmY2Q0OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdl
YlZUVFBhcnNlciYgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZXIoKQogICAgIHJldHVybiAq
bV93ZWJWVFRQYXJzZXI7CiB9CiAKLXZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZVdl
YlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBJbmJh
bmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgcGFyc2VyKCkucGFyc2VCeXRlcyhkYXRhLCBsZW5n
dGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJW
VFRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4
dFRyYWNrLmgKaW5kZXggODRlZTBlNTc0MGRjNjM3NzMyZGUzOGEyOGMzOTkyZTc2M2EyY2Y0OS4u
MzE1MjM1NzI5YjVmYmQ5OWY2MzRmYTdkNmM3NzZjMjdiYzZjMWM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCkBAIC00Myw3ICs0
Myw3IEBAIHByaXZhdGU6CiAgICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4
dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgV2ViVlRUUGFy
c2VyJiBwYXJzZXIoKTsKLSAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBw
YXJzZVdlYlZUVEN1ZURhdGEoSVNPV2ViVlRUQ3VlJiYpIGZpbmFsOwogCiAgICAgdm9pZCBuZXdD
dWVzUGFyc2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKaW5kZXggOWYxZDJkNGJiYjVmN2Q3MjNlNDIzM2E1ZDE2ZTQyMjdjMzkxN2IxMS4uZDUz
Y2E2YTNiN2U2ZGVkMGRjNzE3ZWY1ZjU4ODUwN2FjNzU5M2FlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV2Vi
VlRUUGFyc2VyOjpwYXJzZUZpbGVIZWFkZXIoU3RyaW5nJiYgZGF0YSkKICAgICBwYXJzZSgpOwog
fQogCi12b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCit2b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VCeXRlcyhjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgbV9saW5lUmVhZGVyLmFwcGVuZChtX2Rl
Y29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsKICAgICBwYXJzZSgpOwpAQCAtMjI1LDcgKzIy
NSw4IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpwYXJzZSgpCiB2b2lkIFdlYlZUVFBhcnNlcjo6Zmls
ZUZpbmlzaGVkKCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7Ci0gICAgcGFy
c2VCeXRlcygiXG5cbiIsIDIpOworICAgIGNvbnN0IHVpbnQ4X3QgZW5kTGluZXNbXSA9ICJcblxu
IjsKKyAgICBwYXJzZUJ5dGVzKGVuZExpbmVzLCAyKTsKICAgICBtX3N0YXRlID0gRmluaXNoZWQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCmluZGV4IGZhMzNh
MmNmMGUzZjA2ODQ5YjcwYWZlYTMwN2I4MzY5ZmUzMWJiNmMuLjEyODU1MjA5MTc0Mzg1ZDA1MjA4
ZGM3YTQwNGRiYWEzMWZmMDY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYXJz
ZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5uZXIsIGNoYXIs
IEZsb2F0UG9pbnQmKTsKIAogICAgIC8vIElucHV0IGRhdGEgdG8gdGhlIHBhcnNlciB0byBwYXJz
ZS4KLSAgICB2b2lkIHBhcnNlQnl0ZXMoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKyAgICB2b2lk
IHBhcnNlQnl0ZXMoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKTsKICAgICB2b2lkIHBhcnNlRmls
ZUhlYWRlcihTdHJpbmcmJik7CiAgICAgdm9pZCBwYXJzZUN1ZURhdGEoY29uc3QgSVNPV2ViVlRU
Q3VlJik7CiAgICAgdm9pZCBmbHVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKaW5kZXggYmZkYzJiMmIxZDc5MzJiNWU0ZjAwMDgzMjg5YzA1MDQ3NzdlYTI2Zi4u
MGU0MGQ5NTBhMjdkNjMyZjQyMDk0MTRkMmVhMDQ3Yjg0YjMyYTFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBEb2N1
bWVudFdyaXRlcjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQog
Ci12b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3Qg
bGVuZ3RoKQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKIHsKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VS
VCBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQyNyBoYXMg
YmVlbiByZXNvbHZlZC4KICAgICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpOb3RT
dGFydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggODVjMGEz
ODZjZGMyMTQ3MjcwNGFjYjljMGY0ZjJkNjA0ODkxMDI5Zi4uNzBmZDIwYzEzNzNhYzBkYzliNDQ0
OTU0YzNhMjA0MDZmMjFiOGM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmgKQEAgLTQ3LDggKzQ3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBiZWdpbigpOwogICAgIGJv
b2wgYmVnaW4oY29uc3QgVVJMJiwgYm9vbCBkaXNwYXRjaFdpbmRvd09iamVjdEF2YWlsYWJsZSA9
IHRydWUsIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gbnVsbHB0cik7Ci0gICAgdm9pZCBhZGRE
YXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKLSAgICB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpIHsgYWRkRGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihieXRlcyksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogICAgIHZvaWQgaW5zZXJ0RGF0
YVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25s
eSB0byBwcmV2ZW50IHRoZSBwYXJzZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmluZGV4
IGE2YzI2ODkyZGE2MTRjNTEwZjQwNWM2ODhkY2FmY2U4ODExMzRkNDIuLmE2ODcxMWY2YzIxOWY3
YTQ4YWIzYTZlMTZmNTVlYjBlNjQwNWZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TaW5rRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9j
dW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgLy8gSWdu
b3JlIGFsbCBkYXRhLgotICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25z
dCBjaGFyKiwgc2l6ZV90KSBvdmVycmlkZQorICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRX
cml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZQogICAgIHsKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCBkZDg4OTM1
ZGFiNjQ1YjUwYzkwOGE1MmY5ZDdmMTgwZGIxZmUyMDllLi44Y2MzYzU2OGM0Mzc5NmFjNjFiMzA5
NzU0N2E4OWVmODEyZDk4ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05l
d0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiAgICAgd2hpbGUgKG1fcGFyc2VP
ZmZzZXQgPCBidWZmZXItPnNpemUoKSkgewogICAgICAgICBhdXRvIGRhdGEgPSBidWZmZXItPmdl
dFNvbWVEYXRhKG1fcGFyc2VPZmZzZXQpOwotICAgICAgICBtX2N1ZVBhcnNlci0+cGFyc2VCeXRl
cyhkYXRhLmRhdGFBc0NoYXJQdHIoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBtX2N1ZVBhcnNl
ci0+cGFyc2VCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX3BhcnNl
T2Zmc2V0ICs9IGRhdGEuc2l6ZSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZDRj
YWY0ZDVmOWVhNzY2YzYwMDBmOGZmNzM2YzI0N2MxMzIzYjNkMC4uZjI2NGYxZGQ3MTIzZDY5MmM2
NTdmMWVjZTE0OTk0YzQxOTYzMzQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNiw3ICs2MDYs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0
KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGFBc0No
YXJQdHIoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1h
bmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9t
YW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAg
ICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGlu
ZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24g
Zm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBE
b2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdFBhcnNlci5jcHAKaW5kZXggYzhhOWJiZGUzZTM3ZGEwNTc3ZTkwNDFlMTk5NjNlNDRmMWEy
NTMyYS4uYjg3ZGQ4MzUwNjA3YzI0YmUyNTZlMzQ0MWJlZDJkMzc2N2UwOTU1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGNhY2hl
TW9kZUlkZW50aWYKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25z
dGV4cHIgQ2hhcmFjdGVyVHlwZSBmYWxsYmFja01vZGVJZGVudGlmaWVyW10gPSB7ICdGJywgJ0En
LCAnTCcsICdMJywgJ0InLCAnQScsICdDJywgJ0snIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgbmV0d29ya01vZGVJZGVu
dGlmaWVyW10gPSB7ICdOJywgJ0UnLCAnVCcsICdXJywgJ08nLCAnUicsICdLJyB9OwogCi1zdGQ6
Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hl
TWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1J
TUVUeXBlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxBcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0
IGNoYXIgY2FjaGVNYW5pZmVzdE1JTUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7CiAg
ICAgYm9vbCBhbGxvd0ZhbGxiYWNrTmFtZXNwYWNlT3V0c2lkZU1hbmlmZXN0UGF0aCA9IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RN
SU1FVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmgKaW5kZXggMGJmOWY5ZjE2YTVh
ZjY5ZmNhZmEwMTY5ZDllNjY0NDFiMWY5Zjg2Mi4uNzAwYzFiYzhlY2NjZTk4ZDgzODkxMDg0MTJk
NTMxMTFmMTZkNWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuaApAQCAtNDEsNiAr
NDEsNiBAQCBzdHJ1Y3QgQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0IHsKICAgICBib29sIGFsbG93
QWxsTmV0d29ya1JlcXVlc3RzIHsgZmFsc2UgfTsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09S
SyBzZWN0aW9uLgogfTsKIAotc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+
IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNv
bnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCk7CitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBt
YW5pZmVzdE1JTUVUeXBlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApp
bmRleCA1Y2RlOWI3ZjExYjg3ZTkwOTNkZjhlZGI2MWVhZWFkZGQwMGViODY0Li43ZGMzMWM3Mzky
Y2NlZWVlYmIyNjNiMjRhOWEzMmQ3MzFkZDBhODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaApAQCAtMTIzLDcgKzEyMyw2IEBAIHB1YmxpYzoKICAgICBjbGFzcyBEYXRh
U2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogICAg
IHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0OwotICAgICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQogICAgICAgICBXRUJDT1JF
X0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRl
eCA3OTExY2EyYjc3NTc0ZGVmOWRjNGUxYzMyMjM2MGQyZjk1MzdjMjI5Li45YWFlOWU4MWFiNDFk
NTQ3NDY4MTU0MDM1MTc4NjBmYWQzM2NlN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcApAQCAtMTAyLDcg
KzEwMiw3IEBAIE9TU3RhdHVzIEF1ZGlvRmlsZVJlYWRlcjo6cmVhZFByb2Modm9pZCogY2xpZW50
RGF0YSwgU0ludDY0IHBvc2l0aW9uLCBVSW50MzIgcmVxCiAgICAgaWYgKHN0YXRpY19jYXN0PFVJ
bnQ2ND4ocG9zaXRpb24pIDwgZGF0YVNpemUpIHsKICAgICAgICAgc2l6ZV90IGJ5dGVzQXZhaWxh
YmxlID0gZGF0YVNpemUgLSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKTsKICAgICAgICAg
Ynl0ZXNUb1JlYWQgPSByZXF1ZXN0Q291bnQgPD0gYnl0ZXNBdmFpbGFibGUgPyByZXF1ZXN0Q291
bnQgOiBieXRlc0F2YWlsYWJsZTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKKyAgICAgICAgbWVt
Y3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgcG9zaXRpb24s
IGJ5dGVzVG9SZWFkKTsKICAgICB9CiAKICAgICBpZiAoYWN0dWFsQ291bnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMu
Y3BwCmluZGV4IDc1Y2RjMGZhODIxNDQwMzk4YTczYmE3ODIxNGVmMjZmNjE2MDBmMzcuLjVhYTc4
OWEyY2M2MmZlYmRjMDFjYzM1YTNmN2U1NjgxZTM3ZTE5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBA
IC05OCw3ICs5OCw3IEBAIE9TU3RhdHVzIEF1ZGlvRmlsZVJlYWRlcjo6cmVhZFByb2Modm9pZCog
Y2xpZW50RGF0YSwgU0ludDY0IHBvc2l0aW9uLCBVSW50MzIgcmVxCiAgICAgaWYgKHN0YXRpY19j
YXN0PFVJbnQ2ND4ocG9zaXRpb24pIDwgZGF0YVNpemUpIHsKICAgICAgICAgc2l6ZV90IGJ5dGVz
QXZhaWxhYmxlID0gZGF0YVNpemUgLSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKTsKICAg
ICAgICAgYnl0ZXNUb1JlYWQgPSByZXF1ZXN0Q291bnQgPD0gYnl0ZXNBdmFpbGFibGUgPyByZXF1
ZXN0Q291bnQgOiBieXRlc0F2YWlsYWJsZTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKKyAgICAg
ICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgcG9z
aXRpb24sIGJ5dGVzVG9SZWFkKTsKICAgICB9IGVsc2UKICAgICAgICAgYnl0ZXNUb1JlYWQgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKaW5kZXggNWU1ZDM5ODBiODA0YWY0MmI4
NTBjNWJlZjI4MzRlNTAxNmZmMWRkOS4uOTU0ZTU0MWQxOGZiMWEzN2YyZDA3NWZjNmY0ZThlYTlk
OGUzYzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJp
Y0N1ZSYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3Ry
aW5nJiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VX
ZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJ
U09XZWJWVFRDdWUmJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmgKaW5kZXggMDUwMjI0NDFmZmUxZjI3NThkZWYzN2Q4NGI2YmM4N2Ux
OWYyMjAxMC4uMGRkMDFiZTdhN2Y4MzUxNjYxMWIyYmYxMzhhNmYyZjIwZjg1YTg1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC04Niw3ICs4
Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHByb2Nlc3NOYXRpdmVTYW1wbGVzKENGQXJyYXlS
ZWYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkQ3VlcygpOwog
Ci0gICAgVmVjdG9yPGNoYXI+IG1fc2FtcGxlSW5wdXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fc2FtcGxlSW5wdXRCdWZmZXI7CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDBkZWE4
MGUyYmNhNDc4ZWQ0YzAyYWUxYTBiMDU2NTRiODRkMjlkNTAuLmExNjFjNDdjNTBkYjgyODQ3ZTZm
ZjJkNjg1MjhiZDhjY2M3MjJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVh
ZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5k
YXRhQXNDaGFyUHRyKCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQg
PSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBi
dWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVj
b2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMs
IGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhy
ZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmlu
ZGV4IDFkMWZjZTZhZGNkNmI5YmU5NjNjZjUxNGJkMTI1MWE5NjY4OTQ3MDguLjUyZGE3M2Q4YmJh
Y2VjZTA1ZWIyNGQ1NmM4ZGM4ZjE5NjI2YjVjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKQEAgLTg0LDEyICs4NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5uZXJEZWNv
ZGVyKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWZQdHI8SW5uZXJEZWNvZGVyPiBj
cmVhdGUoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyJiBkZWNvZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBn
c3NpemUgc2l6ZSkKKyAgICAgICAgc3RhdGljIFJlZlB0cjxJbm5lckRlY29kZXI+IGNyZWF0ZShJ
bWFnZURlY29kZXJHU3RyZWFtZXImIGRlY29kZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGdzc2l6
ZSBzaXplKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbm5l
ckRlY29kZXIoZGVjb2RlciwgZGF0YSwgc2l6ZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgSW5u
ZXJEZWNvZGVyKEltYWdlRGVjb2RlckdTdHJlYW1lciYgZGVjb2RlciwgY29uc3QgY2hhciogZGF0
YSwgZ3NzaXplIHNpemUpCisgICAgICAgIElubmVyRGVjb2RlcihJbWFnZURlY29kZXJHU3RyZWFt
ZXImIGRlY29kZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGdzc2l6ZSBzaXplKQogICAgICAgICAg
ICAgOiBtX2RlY29kZXIoZGVjb2RlcikKICAgICAgICAgICAgICwgbV9ydW5Mb29wKFJ1bkxvb3A6
OmN1cnJlbnQoKSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGVhOGUxMDcyYTk3MWY3MTIxNzE3MGI2MTNl
N2FlNzY4YmFlZGZlYzYuLjRjMWNiOGFjOTY2NWFlYmM3MWNkODIwYWJhYzM0ZDg4NzI1NDMxMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6Om5vdGlmeVRyYWNrT2ZTYW1wbGUoKQogCiAgICAgICAgIEdTVF9JTkZPKCJUcmFjayAl
ZCBwYXJzaW5nIHNhbXBsZTogJS4qcyIsIG1faW5kZXgsIHN0YXRpY19jYXN0PGludD4obWFwcGVk
QnVmZmVyLnNpemUoKSksCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihtYXBw
ZWRCdWZmZXIuZGF0YSgpKSk7Ci0gICAgICAgIGNsaWVudCgpLT5wYXJzZVdlYlZUVEN1ZURhdGEo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwcGVkQnVmZmVyLmRhdGEoKSksIG1hcHBlZEJ1ZmZl
ci5zaXplKCkpOworICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKG1hcHBlZEJ1
ZmZlci5kYXRhKCksIG1hcHBlZEJ1ZmZlci5zaXplKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VC
dWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggZmVmNjY1MTI4YWM5MGMxYjAwYTM3Yjg4
ODczZWQ3MTE3NGIwNzc3NC4uMzMwMjhhNWU5NGM5Y2U3MDRhMTM4ZjAzYjkzNGRjMTFlMjlkZTM0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPElt
YWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQo
c2l6ZSwgbmF0aXZlSW1hZ2UtPmhhc0FscGhhKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0Fs
cGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICNpZiBVU0UoQ0FJUk8pCiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdl
dCgpOwotICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZURhdGEgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2VEYXRhID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfZGF0YShzdXJmYWNlKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+dXBkYXRl
Q29udGVudHMoaW1hZ2VEYXRhLCBJbnRSZWN0KEludFBvaW50KCksIHNpemUpLCBJbnRQb2ludCgp
LCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UKICAgICAg
ICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmNwcAppbmRleCA0YjhhZTZhMGNkODU0NmRlZjY2Zjc0YjlmNjk3NjIzYWUyNGQ0MGEwLi42ZDAz
ODYzYjM2NmMyNDVmNDQyZjc0MzkzNzE5YWJlYWRhNWM0YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVk
QnVmZmVyKiBmb250RGF0YSwgRU9USGVhZGVyJiBlb3RIZWFkZXIsIHNpemVfdCYgb3ZlcmxheUQK
IAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdy
aXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5z
IHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFj
dGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBT
aGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8Y2hh
cj4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3
cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0
YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0zNzUsNyArMzc1LDcgQEAg
Ym9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmlu
ZyYgZm9udE5hbWUsIFZlY3RvcjxjaGEKICAgICBzaXplX3QgbmFtZVRhYmxlU2l6ZSA9ICgob2Zm
c2V0b2YobmFtZVRhYmxlLCBuYW1lUmVjb3JkcykgKyBuYW1lUmVjb3JkQ291bnQgKiBzaXplb2Yo
bmFtZVJlY29yZCkgKyBmb250TmFtZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpICYgfjMpICsg
NDsKIAogICAgIHJld3JpdHRlbkZvbnREYXRhLnJlc2l6ZShmb250RGF0YS5zaXplKCkgKyBuYW1l
VGFibGVTaXplKTsKLSAgICBjaGFyKiBkYXRhID0gcmV3cml0dGVuRm9udERhdGEuZGF0YSgpOwor
ICAgIGF1dG8qIGRhdGEgPSByZXdyaXR0ZW5Gb250RGF0YS5kYXRhKCk7CiAgICAgbWVtY3B5KGRh
dGEsIGZvbnREYXRhLmRhdGEoKSwgb3JpZ2luYWxEYXRhU2l6ZSk7CiAKICAgICAvLyBNYWtlIHRo
ZSB0YWJsZSBkaXJlY3RvcnkgZW50cnkgcG9pbnQgdG8gdGhlIG5ldyAnbmFtZScgdGFibGUuCkBA
IC00MTcsNyArNDE3LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3RvcjxjaGEKIC8vIFJlbmFtZSB0aGUg
Zm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KIFJlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewotICAgIFZlY3Rvcjxj
aGFyPiByZXdyaXR0ZW5Gb250RGF0YTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9u
dERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVu
Rm9udERhdGEpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aAppbmRleCBkZDI3NjkyY2E1ZDNmZTZjZjFlMWMyN2Q3MjUyYmNjNDhjNWZlODM3Li5mY2YxZjI3
MjJmYjUxNzYyN2FlNmNjMjc3MWYyMjBkMGYyOTc4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIH07CiAKIGJvb2wgZ2V0RU9USGVhZGVy
KFNoYXJlZEJ1ZmZlciogZm9udERhdGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92
ZXJsYXlEc3QsIHNpemVfdCYgb3ZlcmxheVNyYywgc2l6ZV90JiBvdmVybGF5TGVuZ3RoKTsKLWJv
b2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8
Y2hhcj4mKTsKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmLCBWZWN0b3I8dWludDhfdD4mKTsKIFJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCAzNjJiNjQy
ZTUwOGI4MDc5MDEzZWZkYWZlMGQ0YTgxZWFhYTE3ZjFmLi42NzBlMzdkM2ZiZDczMzc4M2JjYzhm
NzU5YjVkMDdmNjhiZWUyZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMTA0LDggKzEw
NCw4IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBz
cmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSCiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtX2lkKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0Owot
ICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc3JjRGF0YSk7
Ci0gICAgVmVjdG9yPGNoYXI+IHRlbXBvcmFyeURhdGE7CisgICAgY29uc3QgdWludDhfdCogZGF0
YSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzcmNEYXRhKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gdGVtcG9yYXJ5RGF0YTsKICAgICBJbnRQb2ludCBhZGp1c3RlZFNvdXJjZU9mZnNldCA9
IHNvdXJjZU9mZnNldDsKIAogICAgIC8vIFRleHR1cmUgdXBsb2FkIHJlcXVpcmVzIHN1YmltYWdl
IGJ1ZmZlciBpZiBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IHN1YmltYWdlIGFuZCB3ZSBkb24ndCBo
YXZlIGZ1bGwgaW1hZ2UgdXBsb2FkLgpAQCAtMTE1LDEwICsxMTUsMTAgQEAgdm9pZCBCaXRtYXBU
ZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJl
Y3QmIHRhcmdldFIKICAgICAvLyBwcmVwYXJlIHRlbXBvcmFyeURhdGEgaWYgbmVjZXNzYXJ5CiAg
ICAgaWYgKHJlcXVpcmVTdWJJbWFnZUJ1ZmZlcikgewogICAgICAgICB0ZW1wb3JhcnlEYXRhLnJl
c2l6ZSh0YXJnZXRSZWN0LndpZHRoKCkgKiB0YXJnZXRSZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQ
aXhlbCk7Ci0gICAgICAgIGNoYXIqIGRzdCA9IHRlbXBvcmFyeURhdGEuZGF0YSgpOworICAgICAg
ICB1aW50OF90KiBkc3QgPSB0ZW1wb3JhcnlEYXRhLmRhdGEoKTsKICAgICAgICAgZGF0YSA9IGRz
dDsKLSAgICAgICAgY29uc3QgY2hhciogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihz
cmNEYXRhKTsKLSAgICAgICAgY29uc3QgY2hhciogc3JjID0gYml0cyArIHNvdXJjZU9mZnNldC55
KCkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsKKyAg
ICAgICAgY29uc3QgdWludDhfdCogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
cmNEYXRhKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogc3JjID0gYml0cyArIHNvdXJjZU9mZnNl
dC55KCkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsK
ICAgICAgICAgY29uc3QgaW50IHRhcmdldEJ5dGVzUGVyTGluZSA9IHRhcmdldFJlY3Qud2lkdGgo
KSAqIGJ5dGVzUGVyUGl4ZWw7CiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGFyZ2V0UmVj
dC5oZWlnaHQoKTsgKyt5KSB7CiAgICAgICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIHRhcmdldEJ5
dGVzUGVyTGluZSk7CkBAIC0xNTcsMTEgKzE1NywxMSBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6
dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBj
bwogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgYnl0ZXNQZXJMaW5lOwotICAgIGNvbnN0IGNo
YXIqIGltYWdlRGF0YTsKKyAgICBjb25zdCB1aW50OF90KiBpbWFnZURhdGE7CiAKICNpZiBVU0Uo
Q0FJUk8pCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpOwotICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOworICAgIGltYWdl
RGF0YSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAgYnl0ZXNQ
ZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogI2VsaWYg
VVNFKERJUkVDVDJEKQogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVz
LmNwcAppbmRleCBlYmFkZjRjNjBkNmRlZWVlOTU1MmIwMTkxYWYxZmRkNTIyM2NhOWJiLi4zNzhm
MGY2MTAyNzYyNjNjMGI5YTdhMzBmYTczNmFhZTJhZTAzMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxp
dGllcy5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBJRFdyaXRlRm9udENvbGxlY3Rpb24xKiB3ZWJQ
cm9jZXNzRm9udENvbGxlY3Rpb24oKQogICAgIHJldHVybiBmb250Q29sbGVjdGlvbi5nZXQoKTsK
IH0KIAotSFJFU1VMVCBhZGRGb250RnJvbURhdGFUb1Byb2Nlc3NDb2xsZWN0aW9uKGNvbnN0IFZl
Y3RvcjxjaGFyPiYgZm9udERhdGEpCitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0Nv
bGxlY3Rpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmb250RGF0YSkKIHsKICAgICBDT01QdHI8
SURXcml0ZUZvbnRGaWxlPiBmb250RmlsZTsKICAgICBIUkVTVUxUIGhyID0gbWVtb3J5Rm9udExv
YWRlcigpLT5DcmVhdGVJbk1lbW9yeUZvbnRGaWxlUmVmZXJlbmNlKGZhY3RvcnkoKSwgZm9udERh
dGEuZGF0YSgpLCBmb250RGF0YS5zaXplKCksIG51bGxwdHIsICZmb250RmlsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0
ZVV0aWxpdGllcy5oCmluZGV4IDcyYWM2ODEzYTI2NGJmYTMyYmYwNTFiMGQ4MDgxZWY2ODE1MTFj
OTkuLmE2MjcxOWIxNzE5YTc0Zjk3NjkyMjE5ZGY1ZjdhYWVkYzQ5MDY0NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGll
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0
ZVV0aWxpdGllcy5oCkBAIC01Miw3ICs1Miw3IEBAIElEV3JpdGVHZGlJbnRlcm9wKiBnZGlJbnRl
cm9wKCk7CiAKIElEV3JpdGVGb250Q29sbGVjdGlvbjEqIHdlYlByb2Nlc3NGb250Q29sbGVjdGlv
bigpOwogCi1IUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0NvbGxlY3Rpb24oY29uc3Qg
VmVjdG9yPGNoYXI+JiBmb250RGF0YSk7CitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vz
c0NvbGxlY3Rpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmb250RGF0YSk7CiBDT01QdHI8SURX
cml0ZUZvbnRGYW1pbHk+IGZvbnRGYW1pbHlGb3JDb2xsZWN0aW9uKElEV3JpdGVGb250Q29sbGVj
dGlvbiosIGNvbnN0IFZlY3Rvcjx3Y2hhcl90PiYgbG9jYWxlTmFtZSwgY29uc3QgTE9HRk9OVCYp
OwogQ09NUHRyPElEV3JpdGVGb250PiBjcmVhdGVXaXRoUGxhdGZvcm1Gb250KGNvbnN0IExPR0ZP
TlQmKTsKIFZlY3Rvcjx3Y2hhcl90PiBmYW1pbHlOYW1lRm9yTG9jYWxlKElEV3JpdGVGb250RmFt
aWx5KiwgY29uc3QgVmVjdG9yPHdjaGFyX3Q+JiBsb2NhbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDZkMzkxNTA3MTA4YzFiZWUyNjVhNzE4ZGEwNDc1YjA1OGY4
MjI2ODIuLmZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBp
bmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFy
a2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBi
dWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtYXJrZXItPmRhdGEg
KyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNp
emUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCA2NGRm
NzUwMmUxYjMxNWI5YThkZDI5MDhmMjQ4Y2VhMTViZjEwNjU4Li5hMTg1YzA3ZGIyN2VmMTYyM2Qw
Mzc2NzYzNGEzZDE3MmFhZDBkZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmgKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICBDTVRpbWUg
bV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wIHsga0NNVGltZUludmFsaWQgfTsK
ICAgICBDTVRpbWUgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uIHsga0NNVGltZUludmFsaWQgfTsK
IAotICAgIFZlY3RvcjxjaGFyPiBtX3NvdXJjZUJ1ZmZlcjsKLSAgICBWZWN0b3I8Y2hhcj4gbV9k
ZXN0aW5hdGlvbkJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9zb3VyY2VCdWZmZXI7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGVzdGluYXRpb25CdWZmZXI7CiAKICAgICBSZXRhaW5QdHI8
Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKICAgICBzaXplX3QgbV9zYW1w
bGVCbG9ja0J1ZmZlclNpemUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDEzYTIzMmMxMjhhOTc1ZTBjYjBjMzU3OWI4
NTBkYzI4N2YyZWRlYTAuLmY1Zjg1NTg3MWZjNzA4NTY2ZjdlZjhiOWExNjFlMjdiOGU1ZDg5ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9p
ZCByZXN1bWUoKTsKIAotICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsK
KyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYXVkaW9CaXRSYXRlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KaW5kZXggZDcxMDVjMmZhNDAwY2FmZTg4M2QyYjZiNzUxZDk3MjVhZmNlOTdiZC4u
NjNiZDY1OThkMDJhNWM3MDA2ZGE5MjlmYzk0ZjFmNWY2NmE3MTZkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtNzQsMTQg
Kzc0LDE0IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXImKXdyaXRlcgogLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3Nl
dFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTooTlNE
YXRhICopZnJhZ21lbnRlZEhlYWRlckRhdGEKIHsKICAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0
ZXIpOwotICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihb
ZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0
aF0pOworICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxl
bmd0aF0pOwogfQogCiAtICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRX
cml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRNZWRpYURhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRN
ZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydDooQVZGcmFnbWVudGVkTWVkaWFEYXRh
UmVwb3J0ICopZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydAogewogICAgIFVOVVNFRF9QQVJBTShh
c3NldFdyaXRlcik7CiAgICAgVU5VU0VEX1BBUkFNKGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQp
OwotICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJh
Z21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKTsK
KyAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2Zy
YWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSk7
CiB9CiAKIC0gKHZvaWQpY2xvc2UKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiAgICAgbV9mZXRjaERhdGFDb21w
bGV0aW9uSGFuZGxlcih0YWtlRGF0YSgpLCBjdXJyZW50VGltZUNvZGUpOwogfQogCi12b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBzaXplKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhTG9jayB9OwogICAgIGlmICghbV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCmluZGV4IDQzODQwYTNkNjFlOTdlY2QxYWMxOWZlNzM2NWI5OGFjZDdm
MTY2NDAuLjVjYjYwYjllZjZlZjU3YTQzYjRlZWY3MmExMzc2NzliMWFlYmQ2NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNv
dXJjZVByaXZhdGUqIHBhcmVudCkKIAogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6On5Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAotdm9pZCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBt
X2lucHV0QnVmZmVyLmFwcGVuZFZlY3RvcihkYXRhKTsKICAgICBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRSZXN1bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6
QXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmgKaW5kZXggZGZiZjM2YTFlYzY3NGYzYmQ4MGIyOGFhZTgwMTk4OWU1OWU2MTQ3NC4u
MTRmMTU4ZDYwMzFhNjUxZDQwMjcxYWY1ZWIwMDM2NGI4ZWMzNTk1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsK
IAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1
aW50OF90PiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNl
dFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkg
ZmluYWw7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIG1fbWluaW11
bVVwY29taW5nUHJlc2VudGF0aW9uVGltZTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2VucXVldWVk
U2FtcGxlczsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVwdGg7Ci0g
ICAgVmVjdG9yPGNoYXI+IG1faW5wdXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1faW5w
dXRCdWZmZXI7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKaW5kZXggN2FkZGNlMzk4MzA5Nzg3YzNkM2FhZjBjNGVjZTQ0NDQwYjY4YTYz
Ni4uYjhhMTUzZmMxYzE4ZTM3YTdkOGJhM2M4ZmU3YzhlMGRlN2EzZWFmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTMxMCw3ICsz
MTAsOCBAQCBib29sIGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIHZh
bHVlKQogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0g
MTI4Owotc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciogcCwgc2l6ZV90
IGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIFN0cmluZyB0cmlt
SW5wdXRTYW1wbGUoQ2hhclR5cGUqIHAsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgU3RyaW5nIHMg
PSBTdHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW5ndGgsIG1heElucHV0U2FtcGxlU2l6ZSkp
OwogICAgIGlmIChsZW5ndGggPiBtYXhJbnB1dFNhbXBsZVNpemUpCkBAIC02MzEsMTQgKzYzMiwx
NSBAQCBib29sIHBhcnNlUmFuZ2UoY29uc3QgU3RyaW5nJiByYW5nZSwgbG9uZyBsb25nJiByYW5n
ZU9mZnNldCwgbG9uZyBsb25nJiByYW5nZUVuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hhciogY2hh
cmFjdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc1ZhbGlkSGVhZGVyTmFtZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikK
IHsKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMu
MgogICAgIC8vIEEgaGVhZGVyIG5hbWUgc2hvdWxkIG9ubHkgY29udGFpbiBvbmUgb3IgbW9yZSBv
ZgogICAgIC8vIGFscGhhbnVtZXJpYyBvciAhICMgJCAlICYgJyAqICsgLSAuIF4gXyBgIHwgfgot
ICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKCpjaGFyYWN0ZXIpKQorICAgIGlmIChpc0FTQ0lJ
QWxwaGFudW1lcmljKGNoYXJhY3RlcikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHN3aXRj
aCAoKmNoYXJhY3RlcikgeworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CiAgICAgY2FzZSAnISc6
CiAgICAgY2FzZSAnIyc6CiAgICAgY2FzZSAnJCc6CkBAIC02NjAsMTYgKzY2MiwxNiBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hhciogY2hh
cmFjdGVyKQogICAgIH0KIH0KIAotc2l6ZV90IHBhcnNlSFRUUEhlYWRlcihjb25zdCBjaGFyKiBz
dGFydCwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdWaWV3JiBu
YW1lU3RyLCBTdHJpbmcmIHZhbHVlU3RyLCBib29sIHN0cmljdCkKK3NpemVfdCBwYXJzZUhUVFBI
ZWFkZXIoY29uc3QgdWludDhfdCogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVy
ZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3RyaW5nJiB2YWx1ZVN0ciwgYm9vbCBzdHJp
Y3QpCiB7Ci0gICAgY29uc3QgY2hhciogcCA9IHN0YXJ0OwotICAgIGNvbnN0IGNoYXIqIGVuZCA9
IHN0YXJ0ICsgbGVuZ3RoOworICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBzdGFydDsKKyAgICBjb25z
dCB1aW50OF90KiBlbmQgPSBzdGFydCArIGxlbmd0aDsKIAotICAgIFZlY3RvcjxjaGFyPiBuYW1l
OwotICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICBWZWN0b3I8dWludDhfdD4gbmFtZTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gdmFsdWU7CiAKICAgICBib29sIGZvdW5kRmlyc3ROYW1lQ2hhciA9
IGZhbHNlOwotICAgIGNvbnN0IGNoYXIqIG5hbWVQdHIgPSBudWxscHRyOworICAgIGNvbnN0IHVp
bnQ4X3QqIG5hbWVQdHIgPSBudWxscHRyOwogICAgIHNpemVfdCBuYW1lU2l6ZSA9IDA7CiAKICAg
ICBuYW1lU3RyID0gU3RyaW5nVmlldygpOwpAQCAtNjkyLDcgKzY5NCw3IEBAIHNpemVfdCBwYXJz
ZUhUVFBIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFp
bHVyZVJlYXNvbiwKICAgICAgICAgY2FzZSAnOic6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIo
cCkpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoKnApKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG5hbWUuc2l6ZSgpIDwgMSkKICAgICAgICAgICAgICAgICAg
ICAgZmFpbHVyZVJlYXNvbiA9ICJVbmV4cGVjdGVkIHN0YXJ0IGNoYXJhY3RlciBpbiBoZWFkZXIg
bmFtZSI7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtNzQ3LDcgKzc0OSw3IEBAIHNpemVfdCBw
YXJzZUhUVFBIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYg
ZmFpbHVyZVJlYXNvbiwKICAgICByZXR1cm4gcCAtIHN0YXJ0OwogfQogCi1zaXplX3QgcGFyc2VI
VFRQUmVxdWVzdEJvZHkoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+JiBib2R5KQorc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5KGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1aW50OF90PiYgYm9keSkKIHsKICAg
ICBib2R5LmNsZWFyKCk7CiAgICAgYm9keS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCBhODY5ZWY3OWJi
NWQyMWJhMzliYjJjMDZlOWNlOGNmM2QzOGY5ODQwLi4xYjFhNGQwYmE4MzhiMmQwYTMyNTU0Yzcz
OWQ4OWI2MWFhYzc4NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oCkBAIC05MSw4ICs5MSw4IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFyc2VS
YW5nZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJhbmdlT2Zmc2V0LCBsb25nIGxvbmcmCiBD
b250ZW50VHlwZU9wdGlvbnNEaXNwb3NpdGlvbiBwYXJzZUNvbnRlbnRUeXBlT3B0aW9uc0hlYWRl
cihTdHJpbmdWaWV3IGhlYWRlcik7CiAKIC8vIFBhcnNpbmcgQ29tcGxldGUgSFRUUCBNZXNzYWdl
cy4KLXNpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdWaWV3JiBuYW1lU3RyLCBTdHJpbmcmIHZh
bHVlU3RyLCBib29sIHN0cmljdCA9IHRydWUpOwotc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYg
Ym9keSk7CitzaXplX3QgcGFyc2VIVFRQSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3Ry
aW5nJiB2YWx1ZVN0ciwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKK3NpemVfdCBwYXJzZUhUVFBSZXF1
ZXN0Qm9keShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBWZWN0b3I8dWludDhf
dD4mIGJvZHkpOwogCiAvLyBIVFRQIEhlYWRlciByb3V0aW5lIGFzIHBlciBodHRwczovL2ZldGNo
LnNwZWMud2hhdHdnLm9yZy8jdGVybWlub2xvZ3ktaGVhZGVycwogYm9vbCBpc0ZvcmJpZGRlbkhl
YWRlck5hbWUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKaW5kZXggZDZjOGNiOTAxNzBmZWRm
YzFiNTVjZTVkN2VjZDgyZjVjZjgwYTM5Mi4uNmRlMWEzZjhhMWY5YjYzZDFlNzFmYjNhYTdjZTQy
NTM0MWE2NTFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIFNvY2tldFN0cmVh
bUhhbmRsZTo6U29ja2V0U3RyZWFtU3RhdGUgU29ja2V0U3RyZWFtSGFuZGxlOjpzdGF0ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpz
ZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJv
b2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wp
PiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nIHx8
IG1fc3RhdGUgPT0gQ2xvc2luZykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKLSAgICBwbGF0Zm9ybVNlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIGxlbmd0aCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBsYXRmb3Jt
U2VuZChkYXRhLCBsZW5ndGgsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwg
c3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mJiBoZWFkZXJGaWVs
ZFByb3h5LCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZS5oCmluZGV4IGNhMTFhNjEzYTY5MTBkODY2Yjg1OTdlMmEyODIzNDRkZDJlMGU3NTMuLjBiOTkz
ZDc4Y2Q0YWVhYWJiOTRmNzMzOTY5Y2VkODhmZjI5NTk4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNTMsNyAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCkgPSBkZWZh
dWx0OwogICAgIFNvY2tldFN0cmVhbVN0YXRlIHN0YXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNl
bmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+KTsKKyAgICB2b2lkIHNlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+KTsKICAgICB2b2lkIHNlbmRIYW5kc2hha2UoQ1N0cmlu
ZyYmIGhhbmRzaGFrZSwgc3RkOjpvcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eT4mJiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4pOwogICAgIHZvaWQgY2xvc2UoKTsgLy8g
RGlzY29ubmVjdCBhZnRlciBhbGwgZGF0YSBpbiBidWZmZXIgYXJlIHNlbnQuCiAgICAgdm9pZCBk
aXNjb25uZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAppbmRleCA2MGEyM2Q1ZjQ3NzQ5NjM2N2Ux
YjYxYjlmZWNhOWJkMWEwNjJiZjJhLi41ZGU1NTljMGFiZGVkOTE1M2NjZGYwNzdlN2UyYjU2ZTdj
YmU4YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJl
YW1IYW5kbGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0
U3RyZWFtSGFuZGxlJiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1v
dW50KFNvY2tldFN0cmVhbUhhbmRsZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNv
bnN0IFNvY2tldFN0cmVhbUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5oCmluZGV4IDhkZTIyNDVhYTNmY2IyNTEw
MGFlOTBhZTlmZTYwOGM0ZGM4NTQzYjYuLjcxZjdlYmIwZjMyNjRlNjQxZTk3ZmZjYjFmMDRiYjYw
MTIzY2I4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RG93bmxvYWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Rvd25sb2FkQnVuZGxlLmgKQEAgLTMxLDggKzMxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRsZSB7CiAKLWJvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25z
dCBjaGFyKiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Ci1ib29sIGV4dHJh
Y3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPGNoYXI+JiByZXN1
bWVEYXRhKTsKK2Jvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25zdCB1aW50OF90KiwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Citib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0
IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bWVEYXRhKTsKIGNvbnN0
IFN0cmluZyYgZmlsZUV4dGVuc2lvbigpOwogCiB9IC8vIG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4IDYyNTQ4NWJmMWMwZThl
NTgxOWJmNjU0MDU1YmQzODY0MzcxODNhNDguLmQxMzc5NDk4YWFiODFlZTJjYTdhYTA4OWIxYjUw
Zjk5NWMyODI5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTYw
Niw3ICs2MDYsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxs
YmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBlKQogICAgICAgICBpZiAobGVuZ3RoID09IC0xKQog
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRo
aXMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0
U3RyZWFtRGF0YSgqdGhpcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocHRyKSwgbGVu
Z3RoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0
aGlzLCBwdHIsIGxlbmd0aCk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3Bw
CmluZGV4IDg0ODEwN2NjNmFkZjA1OGRhYTg4ZDg0NjgwMmEzNmZkOGQ3N2RlMDUuLjA1YjRlMjli
YzkzMWMxNDM0NWI0Nzk1OThiYWVlNjdlYjRiNjhjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtOTgs
NyArOTgsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5Ojppc0NhY2hlZCgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZUNhY2hlZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFvcGVuQ29udGVu
dEZpbGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCA0NzI3NjJjN2Y1
NTJjZGMwZDk0NGY5OTBjYWEzMGQyNmM4MDIzYTI1Li4yNDYxNDA4YmZhNjIyNGRkMTUwOGQxYzQz
ZjI3NmY2MjFkNmEyNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgc2l6ZV90IGVudHJ5U2l6ZSgpOwogICAgIEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
KCkgeyByZXR1cm4gbV9yZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgYm9vbCBzYXZlQ2FjaGVkRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QpOworICAgIGJvb2wgc2F2ZUNhY2hlZERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICBib29sIHJlYWRDYWNoZWREYXRhKFJlc291
cmNlSGFuZGxlKik7CiAKICAgICBib29sIHNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGU2OWY2YzM1Nzc1ZWRlY2NlYjIy
ZTg1MTU0NjUzYTk0ODYyNmZiY2QuLjc1MDRjOTg4NmZiOGYyNWVmZTc5YTgyNjI2MjgyMDg5ODI2
NzdmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIEN1cmxD
YWNoZU1hbmFnZXI6OmdldENhY2hlZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKK3ZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAg
ICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IDRl
MjQ5YzljMmIwZTlhZjFhZTNhYTQ5M2U4M2I1MThhNjU0MmMzOTIuLmM5ZTI5ZDgwOTcwYzQwNDZl
Nzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSYsIGNvbnN0IGNoYXIqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVf
dCk7IC8vIFNhdmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSYpOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5jcHAKaW5kZXggZmU0MTA3NmQ3NmJhYWQyMWJjZGRjNGEwZTJhZDNiNzY3ZDUyMTU1MC4u
YmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6
cHJvY2Vzc0NvbnRlbnQoKQogICAgICAgICBpZiAobV9idWZmZXIuc2l6ZSgpIDwgMikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBjb25zdCBjaGFyKiBjb250ZW50ID0gbV9i
dWZmZXIuZGF0YSgpOworICAgICAgICBhdXRvKiBjb250ZW50ID0gbV9idWZmZXIuZGF0YSgpOwog
ICAgICAgICAvLyBCeSBkZWZhdWx0IHdlJ2xsIHJlbW92ZSAyIGNoYXJhY3RlcnMgYXQgdGhlIGVu
ZC4KICAgICAgICAgLy8gVGhlIFxyIGFuZCBcbiBhcyBzdGF0ZWQgaW4gdGhlIG11bHRpcGFydCBS
RkMuCiAgICAgICAgIHNpemVfdCByZW1vdmVDb3VudCA9IDI7CkBAIC0yNTAsNyArMjUwLDcgQEAg
Ym9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIE5vdCBlbm91Z2ggZGF0YSB0byBjaGVjay4gUmV0dXJuIGxhdGVyIHdo
ZW4gdGhlcmUgaXMgbW9yZSBkYXRhLgogCiAgICAgICAgIC8vIFdlJ2xsIGRlY2lkZSBpZiB0aGlz
IGlzIGEgY2xvc2luZyBib3VuZGFyeSBvciBhbiBvcGVuaW5nIG9uZS4KLSAgICAgICAgY29uc3Qg
Y2hhciogY29udGVudCA9IG1fYnVmZmVyLmRhdGEoKTsKKyAgICAgICAgYXV0byogY29udGVudCA9
IG1fYnVmZmVyLmRhdGEoKTsKIAogICAgICAgICBpZiAoY29udGVudFswXSA9PSAnLScgJiYgY29u
dGVudFsxXSA9PSAnLScpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBjbG9zaW5nIGJvdW5k
YXJ5LiBDbG9zZSBkb3duIHRoZSBoYW5kbGVyLgpAQCAtMzAwLDcgKzMwMCw3IEBAIGJvb2wgQ3Vy
bE11bHRpcGFydEhhbmRsZTo6Y2hlY2tGb3JCb3VuZGFyeShzaXplX3QmIGJvdW5kYXJ5U3RhcnRQ
b3NpdGlvbiwgc2l6ZV90CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zaXplX3QgQ3VybE11bHRp
cGFydEhhbmRsZTo6bWF0Y2hlZExlbmd0aChjb25zdCBjaGFyKiBkYXRhKQorc2l6ZV90IEN1cmxN
dWx0aXBhcnRIYW5kbGU6Om1hdGNoZWRMZW5ndGgoY29uc3QgdWludDhfdCogZGF0YSkKIHsKICAg
ICBhdXRvIGxlbmd0aCA9IG1fYm91bmRhcnkubGVuZ3RoKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtMzE4LDEyICszMTgsMTIgQEAgYm9vbCBDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpwYXJzZUhlYWRlcnNJZlBvc3NpYmxlKCkKICAgICBpZiAoIWNvbnRlbnRM
ZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IGF1dG8gY29udGVudCA9
IG1fYnVmZmVyLmRhdGEoKTsKKyAgICBhdXRvKiBjb250ZW50ID0gbV9idWZmZXIuZGF0YSgpOwog
CiAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSB0aGUgaGVhZGVyIGNsb3Npbmcgc3RyaW5ncy4KLSAg
ICBpZiAoIXN0cm5zdHIoY29udGVudCwgIlxyXG5cclxuIiwgY29udGVudExlbmd0aCkpIHsKKyAg
ICBpZiAoIW1lbW1lbShjb250ZW50LCBjb250ZW50TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSkgewog
ICAgICAgICAvLyBTb21lIHNlcnZlcnMgY2xvc2VzIHRoZSBoZWFkZXJzIHdpdGggb25seSBcbi1z
LgotICAgICAgICBpZiAoIXN0cm5zdHIoY29udGVudCwgIlxuXG4iLCBjb250ZW50TGVuZ3RoKSkg
eworICAgICAgICBpZiAoIW1lbW1lbShjb250ZW50LCBjb250ZW50TGVuZ3RoLCAiXG5cbiIsIDIp
KSB7CiAgICAgICAgICAgICAvLyBEb24ndCBoYXZlIHRoZSBoZWFkZXIgY2xvc2luZyBzdHJpbmcu
IFdhaXQgZm9yIG1vcmUgZGF0YS4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggNmVkNTU2ZjQyYTA1OTAxYjE5YjBmMTAzYjIyYzZh
NDlmMzI2MjFhZC4uNWMwOGJjYzVlYjNlNGJiY2MwMjliNDc2Nzg2OGY0M2UyZjk1YzM0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5oCkBAIC02MiwxMyArNjIsMTMgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgcHJvY2Vzc0NvbnRlbnQoKTsKICAgICBib29sIGNoZWNrRm9yQm91bmRhcnkoc2l6ZV90JiBi
b3VuZGFyeVN0YXJ0UG9zaXRpb24sIHNpemVfdCYgbGFzdFBhcnRpYWxNYXRjaFBvc2l0aW9uKTsK
LSAgICBzaXplX3QgbWF0Y2hlZExlbmd0aChjb25zdCBjaGFyKiBkYXRhKTsKKyAgICBzaXplX3Qg
bWF0Y2hlZExlbmd0aChjb25zdCB1aW50OF90KiBkYXRhKTsKICAgICBib29sIHBhcnNlSGVhZGVy
c0lmUG9zc2libGUoKTsKIAogICAgIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIG1fY2xpZW50
OwogCiAgICAgU3RyaW5nIG1fYm91bmRhcnk7Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOwor
ICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2hlYWRl
cnM7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OkNoZWNrQm91bmRhcnkgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IGEzMDljMjU4Y2Q5ZjExMmQzYmJj
ZTZjYWE3MTQ4MTgzNmExZmIwMTAuLmU1NjRhMGNlNjY2MTRhNDlhMTAzMTM2ODg1MWM0ZGE4ODIz
NTJhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ4LDcg
KzE0OCw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xp
ZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5n
bGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRS
ZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwg
YnVmZmVyLT5zaXplKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKaW5kZXggMWIxNWFmMDFiY2MwZWFiOTEwZmMzYjll
OGE4ZDQ2M2I3YzY2ODUxOS4uZmY1NWQzNTIzNDI3ODZmY2RlYWVmYzY0ZjZjY2JlMDE1ZjRjNWI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
U3RyZWFtLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNl
aXZlKCkKICAgICAgICAgZGVzdHJveUhhbmRsZSgpOwogCiAgICAgbV9zY2hlZHVsZXIuY2FsbENs
aWVudE9uTWFpblRocmVhZChtX3N0cmVhbUlELCBbc3RyZWFtSUQgPSBtX3N0cmVhbUlELCBidWZm
ZXIgPSBXVEZNb3ZlKHJlY2VpdmVCdWZmZXIpLCBsZW5ndGggPSBieXRlc1JlY2VpdmVkXShDbGll
bnQmIGNsaWVudCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YShzdHJl
YW1JRCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmdldCgpKSwgbGVuZ3Ro
KTsKKyAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBidWZmZXIuZ2V0KCks
IGxlbmd0aCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCmluZGV4IDMxM2IwMTczZGE1Y2Q0MDRhMWUzZmNhZDk1
NzNiOGZmN2MzYWJkNGYuLmU2NDYyOWZjMjJhMjA5N2EyYWYwYjBjMDEzOWIyM2Q3OTA4Y2YzZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJl
YW0uaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkT3BlbihDdXJsU3RyZWFtSUQpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IGNoYXIqLCBzaXplX3QpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29u
c3QgdWludDhfdCosIHNpemVfdCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChD
dXJsU3RyZWFtSUQsIENVUkxjb2RlKSA9IDA7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Rvd25sb2FkQnVuZGxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRG93bmxvYWRCdW5kbGUuaAppbmRleCBjMTI1
ZGViMThmODYyNWRjNzYxNzcyOTNkZjI3MjFiN2MyNzIzM2ZhLi42Yjk3OGJlNmY4NGU2ZTkzNDc0
YmRiMjNkYjZiZWFiM2Q1NmZhNjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvRG93bmxvYWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvRG93bmxvYWRCdW5kbGUuaApAQCAtMzAsOCArMzAsOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERvd25sb2FkQnVuZGxlIHsKIAotYm9vbCBhcHBl
bmRSZXN1bWVEYXRhKGNvbnN0IGNoYXIqLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBidW5kbGVQ
YXRoKTsKLWJvb2wgZXh0cmFjdFJlc3VtZURhdGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBW
ZWN0b3I8Y2hhcj4mIHJlc3VtZURhdGEpOworYm9vbCBhcHBlbmRSZXN1bWVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoKTsKK2Jvb2wgZXh0cmFj
dFJlc3VtZURhdGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0b3I8dWludDhfdD4mIHJl
c3VtZURhdGEpOwogY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKCk7CiAKIH0gLy8gbmFtZXNw
YWNlIERvd25sb2FkQnVuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCAyZDA1ODRk
YWI1Y2ZmNmQxNDkwNjI5NjQyYmFlYTY1MmZhZWEwMDMzLi5iODA0ZmRlMDk3M2JiZmIyODMzMWNm
N2MzYTFmMjBiMDQzZTc0ZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTYxLDcg
KzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkT3BlbihDdXJsU3RyZWFtSUQpIGZpbmFs
OwogICAgIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBjaGFyKiwgc2l6ZV90KSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhf
dCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNv
ZGUpIGZpbmFsOwogCiAgICAgYm9vbCBpc1N0cmVhbUludmFsaWRhdGVkKCkgeyByZXR1cm4gbV9z
dHJlYW1JRCA9PSBpbnZhbGlkQ3VybFN0cmVhbUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDdXJsLmNwcAppbmRleCAyZmVjZTAyOGVmZmRiZTg4NTE4ZWM3YjhiZTI1OWIwYTA5MDg2
Y2NmLi40Yjk0OTFjMTE1NDNmMmI2MGYxMmQzNmU5ZTZhMGNiYWFlMzRhNzJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90IGxl
bmd0aCkKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0KIAotdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRh
KEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBpZiAobV9zdGF0ZSAhPSBPcGVuKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAK
aW5kZXggOTAxYjJiNzEwZTRmODFhM2M4MGNhYjAzOTM4ODQ3ZWExNjQxZTMyNy4uZDgzYzNiMmE2
M2IyMmMzOWUxOGMxMjllNDRiYzhmMmQzOGI4YjJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24oKQogICAgIHJldHVybiBl
eHRlbnNpb247CiB9CiAKLWJvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25zdCBjaGFyKiByZXN1bWVC
eXRlcywgdWludDMyX3QgcmVzdW1lTGVuZ3RoLCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpCiti
b29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgdWludDhfdCogcmVzdW1lQnl0ZXMsIHVpbnQzMl90
IHJlc3VtZUxlbmd0aCwgY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoKQogewogICAgIGlmICghcmVz
dW1lQnl0ZXMgfHwgIXJlc3VtZUxlbmd0aCkgewogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQg
cmVzdW1lIGRhdGEgdG8gd3JpdGUgdG8gYnVuZGxlIHBhdGgiKTsKQEAgLTg5LDcgKzg5LDcgQEAg
ZXhpdDoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNv
bnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPGNoYXI+JiByZXN1bWVEYXRhKQorYm9vbCBl
eHRyYWN0UmVzdW1lRGF0YShjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgsIFZlY3Rvcjx1aW50OF90
PiYgcmVzdW1lRGF0YSkKIHsKICAgICBpZiAoYnVuZGxlUGF0aC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDYW5ub3QgY3JlYXRlIHJlc3VtZSBkYXRhIGZyb20gZW1wdHkgZG93bmxv
YWQgYnVuZGxlIHBhdGgiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCA4ZWQ1NzE3NDc3OGNiN2JkYWRjYTM2NTE3ZmQ3
OTQ0NTczOGM1MmQ3Li5jOTI4YjYzNzM0NTBkYTgxNWM5M2Y4NjdjZmM4ZDk5NThiMWUzNTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJ
WC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9T
SVguY3BwCkBAIC01Niw3ICs1Niw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNU
b1JlYWQpOworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogCiAgICAg
c2l6ZV90IHRvdGFsQnl0ZXNSZWFkID0gMDsKICAgICBzc2l6ZV90IGJ5dGVzUmVhZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGVjYjZiYWUxNjg5NTYxNjdm
NjFmYWYzZGNhMjkzNjQ2Y2RjYWQ0ODYuLjAwOTRmNDdkNDY0MDFkNTlhY2I4NWY3NjU0M2RhNjJk
NzM4YzBmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAt
NDY2LDcgKzQ2Niw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVu
dExvYWRlcigpKTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5
IGZyYW1lLT5pbml0KCkuCiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5zZXRNSU1FVHlwZSgiaW1hZ2Uvc3ZnK3htbCIpOwogICAgICAgICBsb2FkZXIuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhl
IGVtcHR5IGRvY3VtZW50Ci0gICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53
cml0ZXIoKS5hZGREYXRhKGRhdGEoKS0+ZGF0YUFzQ2hhclB0cigpLCBkYXRhKCktPnNpemUoKSk7
CisgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRh
KGRhdGEoKS0+ZGF0YSgpLCBkYXRhKCktPnNpemUoKSk7CiAgICAgICAgIGxvYWRlci5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5lbmQoKTsKIAogICAgICAgICBmcmFtZS5kb2N1bWVu
dCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMWY1YmVmNzlk
MTZlMjc2ZDljMTAxMTI4Yjg4OWQ3Y2YxYmE4ZjA0YS4uMTI0N2RhYTY0NjM5ZDZlNmVhYzE2ZDEx
MjYzOGI5ZjlkNGE3OTVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIFhNTERvY3VtZW50UGFy
c2VyOjp1cGRhdGVMZWFmVGV4dE5vZGUoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IFRoaXMgb3BlcmF0aW9uIG1pZ2h0IGZpcmUgbXV0YXRpb24gZXZlbnQsIHNlZSBiZWxvdy4KLSAg
ICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5kRGF0YShTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KG1fYnVmZmVyZWRUZXh0LmRhdGEoKSksIG1fYnVmZmVyZWRUZXh0
LnNpemUoKSkpOworICAgIG1fbGVhZlRleHROb2RlLT5hcHBlbmREYXRhKFN0cmluZzo6ZnJvbVVU
RjgobV9idWZmZXJlZFRleHQuZGF0YSgpLCBtX2J1ZmZlcmVkVGV4dC5zaXplKCkpKTsKICAgICBt
X2J1ZmZlcmVkVGV4dCA9IHsgfTsKIAogICAgIG1fbGVhZlRleHROb2RlID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNr
UHJveHkuY3BwCmluZGV4IGVkZmY4NDY0ZmQ1MjkwMzY4NjlkYTBjN2U0ZWI4NDhmYWY5MGJkM2Qu
LjllYzU1ZjYxNmY1ODQzYjZjODAyN2JjMTlkYTdhNjA1OGQ0YWE2MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNw
cApAQCAtMTc0LDEyICsxNzQsMTIgQEAgdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VX
ZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKICAgICBtX2Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OlBhcnNlV2ViVlRURmlsZUhlYWRlcihtX2lkZW50aWZpZXIsIGhlYWRlciksIG1fbWVkaWFQ
bGF5ZXJJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VX
ZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgUmVt
b3RlVGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UGFyc2VXZWJW
VFRDdWVEYXRhKG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZp
ZXIpOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UGFyc2VXZWJWVFRDdWVEYXRhKG1faWRl
bnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEsIGxlbmd0aCkpLCBtX21lZGlhUGxheWVy
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRU
Q3VlRGF0YShJU09XZWJWVFRDdWUmJiBjdWVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCBiNzRlODgyYjE0
MGM2NmFjODkzY2JiMjk4OWUxMDk4YjUwMGVkMTk2Li43OGI0ZTg0ZWMyZmJlMWIwY2NkZjk0ODIw
YTYzNWY4ZGQ4NmFkZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVyaWND
dWUmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYp
OwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlV2ViVlRUQ3VlRGF0YShXZWJDb3JlOjpJU09XZWJWVFRDdWUmJik7CiAKICAgICAvLyBUcmFj
a1ByaXZhdGVCYXNlQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAppbmRleCAxYjM1N2Y2OGZjYTQzOTliM2Q2YWU0MWVj
MzhiODdlMzQyMzljMTJkLi4xYjY3NGU0ZjhkNTZjNmNlZWYxMWY2NzUwYzE2ZDk3Y2Q3ZDdjMjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6
OnJlYWREYXRhKGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSkKICAgICBpZiAoYnl0ZXNUb1JlYWQg
PiBtX3RvdGFsUmVtYWluaW5nU2l6ZSkKICAgICAgICAgYnl0ZXNUb1JlYWQgPSBtX3RvdGFsUmVt
YWluaW5nU2l6ZTsKIAotICAgIGF1dG8qIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihpdGVtLmRhdGEoKS5kYXRhKCktPmRhdGEoKSkgKyBpdGVtLm9mZnNldCgpICsgbV9jdXJy
ZW50SXRlbVJlYWRTaXplOworICAgIGF1dG8qIGRhdGEgPSBpdGVtLmRhdGEoKS5kYXRhKCktPmRh
dGEoKSArIGl0ZW0ub2Zmc2V0KCkgKyBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CiAgICAgbV9jdXJy
ZW50SXRlbVJlYWRTaXplID0gMDsKIAogICAgIGNvbnN1bWVEYXRhKGRhdGEsIHN0YXRpY19jYXN0
PGludD4oYnl0ZXNUb1JlYWQpKTsKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0Jsb2I6OmRpZFJlYWQoaW50IGJ5dGVzUmVhZCkKICAgICBjb25zdW1lRGF0YShtX2J1ZmZl
ci5kYXRhKCksIGJ5dGVzUmVhZCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6Y29u
c3VtZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCkKK3ZvaWQgTmV0d29ya0Rh
dGFUYXNrQmxvYjo6Y29uc3VtZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGJ5dGVzUmVh
ZCkKIHsKICAgICBtX3RvdGFsUmVtYWluaW5nU2l6ZSAtPSBieXRlc1JlYWQ7CiAKQEAgLTQ3NSw3
ICs0NzUsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKICAgICByZWFk
KCk7CiB9CiAKLWJvb2wgTmV0d29ya0RhdGFUYXNrQmxvYjo6d3JpdGVEb3dubG9hZChjb25zdCBj
aGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQorYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0
ZURvd25sb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpCiB7CiAgICAgQVNT
RVJUKGlzRG93bmxvYWQoKSk7CiAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlLCBkYXRhLCBieXRlc1JlYWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAppbmRleCBmZDhj
ZGVmMDI0ODZmMTllM2UxMDk5NWU0YzUzMjVjYWU5MGNiYmQxLi5mZDE1ZTI0NDA0ZDhhZDk0MjE0
MzI2NjZjNDcwYjZmMWU0M2JkYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaApAQCAtODUsMTIgKzg1LDEyIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBnZXRTaXplRm9yTmV4dCgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
UmVzcG9uc2UoRXJyb3IgPSBFcnJvcjo6Tm9FcnJvcik7CiAgICAgdm9pZCBzZWVrKCk7Ci0gICAg
dm9pZCBjb25zdW1lRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKTsKKyAgICB2
b2lkIGNvbnN1bWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpOwogICAg
IHZvaWQgcmVhZCgpOwogICAgIHZvaWQgcmVhZERhdGEoY29uc3QgV2ViQ29yZTo6QmxvYkRhdGFJ
dGVtJik7CiAgICAgdm9pZCByZWFkRmlsZShjb25zdCBXZWJDb3JlOjpCbG9iRGF0YUl0ZW0mKTsK
ICAgICB2b2lkIGRvd25sb2FkKCk7Ci0gICAgYm9vbCB3cml0ZURvd25sb2FkKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBieXRlc1JlYWQpOworICAgIGJvb2wgd3JpdGVEb3dubG9hZChjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKTsKICAgICB2b2lkIGNsZWFuRG93bmxvYWRGaWxlcygp
OwogICAgIHZvaWQgZGlkRmFpbERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2b2lkIGRpZEZpbmlzaERvd25sb2FkKCk7CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJp
dmF0ZToKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YT4gbV9ibG9iRGF0YTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3RyZWFtPiBtX3N0cmVhbTsgLy8gRm9y
IGFzeW5jaHJvbm91cyBsb2FkaW5nLgotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICBW
ZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiAgICAgVmVjdG9yPGxvbmcgbG9uZz4gbV9pdGVtTGVu
Z3RoTGlzdDsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9OwogICAgIGxv
bmcgbG9uZyBtX3JhbmdlT2Zmc2V0IHsga1Bvc2l0aW9uTm90U3BlY2lmaWVkIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcApp
bmRleCAxNWE5OWVjZTM0YWMxNjAzNGQ2YmJjOGU0N2MyODllMzhiNmM5MmI1Li41MmViNWIwOGYx
NmNiYTIzMjE0OTAyOGNkYWE4MTUwYWQwNGU0YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKQEAgLTg0LDEwICs4NCwx
MCBAQCB2b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OmRpZENsb3NlU29ja2V0U3RyZWFtKFNvY2tl
dFN0cmVhbUhhbmRsZSYgaGFuZGxlKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVh
bTo6RGlkQ2xvc2VTb2NrZXRTdHJlYW0oKSk7CiB9CiAKLXZvaWQgTmV0d29ya1NvY2tldFN0cmVh
bTo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUs
IGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIE5ldHdvcmtTb2NrZXRTdHJl
YW06OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxl
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVT
RUQoaGFuZGxlLCAmaGFuZGxlID09IG1faW1wbC5wdHIoKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViU29ja2V0U3RyZWFtOjpEaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShJUEM6OkRhdGFSZWZl
cmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2NrZXRTdHJlYW06OkRpZFJlY2VpdmVTb2NrZXRTdHJl
YW1EYXRhKElQQzo6RGF0YVJlZmVyZW5jZShkYXRhLCBsZW5ndGgpKSk7CiB9CiAKIHZvaWQgTmV0
d29ya1NvY2tldFN0cmVhbTo6ZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCmluZGV4IDYwMDZiMmUxYjdjNjMyMTIz
ZGYwODliOTIyN2IyNmY3OTA2OGNlMDQuLmUyNTY5ODQyNjZjZTVlZWNmMTUwMjhhNTIzZjZhYWNk
ODNhNmFlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldFN0cmVhbS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAvLyBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQKICAgICB2b2lkIGRpZE9wZW5Tb2NrZXRTdHJlYW0oV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVNvY2tldFN0cmVh
bShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTb2NrZXRTdHJlYW1EYXRhKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNo
YXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmlu
YWw7CiAgICAgdm9pZCBkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1v
dW50KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYsIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBkaWRGYWlsU29ja2V0U3RyZWFtKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0
IFdlYkNvcmU6OlNvY2tldFN0cmVhbUVycm9yJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzI1N2ZhMTFkNjJhMzE0YzI4NjJkY2Q3M2Ix
NmE3ODJjODEzNTIzNi4uOTQ2YWY0N2RmYjdlNjExZjFhYjQ0MTczNGE5YjBlMTQxOWZiZWQ4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtMTUzLDkg
KzE1Myw5IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhh
bmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3QgY2hhciogU2hhcmVhYmxlUmVzb3Vy
Y2U6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVhYmxlUmVzb3VyY2U6OmRhdGEo
KSBjb25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9zaGFyZWRN
ZW1vcnktPmRhdGEoKSkgKyBtX29mZnNldDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpICsgbV9vZmZzZXQ7CiB9CiAKIHVuc2ln
bmVkIFNoYXJlYWJsZVJlc291cmNlOjpzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IDUzNzRkN2I5NmNmMjIxOWE3NjZiYjcwYWI2MGFjODg3
MzY2YzFmNDAuLjdiNDdmNWQ2ODUxZDlkZTMyZDFjM2E1NDcwNTE2MGFhNGY3YzZjYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtNzUsNyArNzUsNyBAQCBw
dWJsaWM6CiAKICAgICB+U2hhcmVhYmxlUmVzb3VyY2UoKTsKIAotICAgIGNvbnN0IGNoYXIqIGRh
dGEoKSBjb25zdDsKKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CiAgICAgdW5zaWdu
ZWQgc2l6ZSgpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDVhMTgw
YmVlZDEyZjVjZGNkZmJhZTY3MDJlNjkzYjllYTZlMGE4NDQuLjNjOTcxYTEzZjQ5YzVlNzQ0ZGU2
MDlkODVkZmE3ZGQzZWI1ZDE1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMjI5LDcgKzIyOSw3IEBA
IHN0YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RGF0YSYgZmlsZURhdGEsIFBsYXRmb3JtCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAg
ICBmaWxlRGF0YS5hcHBseShbZmQsICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgewotICAgICAgICBpZiAod3JpdGVUb0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRh
LCBzaXplKSA9PSAtMSkgeworICAgICAgICBpZiAod3JpdGVUb0ZpbGUoZmQsIGRhdGEsIHNpemUp
ID09IC0xKSB7CiAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDJmNDg5Mzg3NTExNDk5MzM2ZmM2MDAxZjYxMWFm
MGVhYjViOWM3ZjcuLjVjYzQ3NGM1M2U1NDFjYTcxNmQzZWE4YTU4OTlhNTA0NzI0MDIwNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cApAQCAtMzY2LDcgKzM2Niw3IEBAIFZlY3Rvcjx1aW50OF90PiBJY29uRGF0YWJhc2U6Omljb25E
YXRhKGludDY0X3QgaWNvbklEKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjphZGRJY29uKGNvbnN0IFN0cmluZyYgaWNvblVSTCwg
Y29uc3QgVmVjdG9yPGNoYXI+JiBpY29uRGF0YSkKK3N0ZDo6b3B0aW9uYWw8aW50NjRfdD4gSWNv
bkRhdGFiYXNlOjphZGRJY29uKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBpY29uRGF0YSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAgICAg
QVNTRVJUKG1fZGIuaXNPcGVuKCkpOwpAQCAtNjA2LDcgKzYwNiw3IEBAIFN0cmluZyBJY29uRGF0
YWJhc2U6Omljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKICAgICByZXR1
cm4gbV9wYWdlVVJMVG9JY29uVVJMTWFwLmdldChwYWdlVVJMKTsKIH0KIAotdm9pZCBJY29uRGF0
YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5z
aWduZWQgY2hhciogaWNvbkRhdGEsIHNpemVfdCBpY29uRGF0YVNpemUsIGNvbnN0IFN0cmluZyYg
cGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgSWNvbkRhdGFi
YXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVpbnQ4
X3QqIGljb25EYXRhLCBzaXplX3QgaWNvbkRhdGFTaXplLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkws
IEFsbG93RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1
bkxvb3AoKSk7CiAKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEgeyByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihpY29uRGF0YSksIGljb25EYXRhU2l6ZSB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhIHsgaWNvbkRhdGEsIGljb25EYXRhU2l6ZSB9OwogICAgIG1fd29y
a1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBp
Y29uVVJMID0gaWNvblVSTC5pc29sYXRlZENvcHkoKSwgaWNvbkRhdGEgPSBXVEZNb3ZlKGRhdGEp
LCBwYWdlVVJMID0gcGFnZVVSTC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fZGIuaXNPcGVuKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKaW5kZXggMGU3YmNjN2VjNjNk
ZjI1MjcyZmNjNTEzODYxZmNiOTgxYzg0ZWM3My4uZDAyMWUyY2Q5MGQzY2U5MzljZmU0NDM4MWU2
ZWYwMmNmMmM2N2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tJ
Y29uVVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3Qg
U3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCwgYm9vbCk+JiYpOwogICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYsIEFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlUHRyJiYpPiYmKTsKICAgICBTdHJpbmcgaWNvblVSTEZvclBhZ2VVUkwo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
IGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QsIGNvbnN0IFN0cmluZyYgcGFn
ZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29u
c3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNl
V3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2xlYXIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKQEAgLTYyLDcgKzYyLDcg
QEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGljb25JREZvckljb25VUkwo
Y29uc3QgU3RyaW5nJiwgYm9vbCYgZXhwaXJlZCk7CiAgICAgYm9vbCBzZXRJY29uSURGb3JQYWdl
VVJMKGludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3Rvcjx1aW50OF90PiBpY29uRGF0
YShpbnQ2NF90KTsKLSAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGFkZEljb24oY29uc3QgU3Ry
aW5nJiwgY29uc3QgVmVjdG9yPGNoYXI+Jik7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBh
ZGRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogICAgIHZvaWQg
dXBkYXRlSWNvblRpbWVzdGFtcChpbnQ2NF90IGljb25JRCwgaW50NjRfdCB0aW1lc3RhbXApOwog
ICAgIHZvaWQgZGVsZXRlSWNvbihpbnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAK
aW5kZXggMDJiYzcxNmJiNTdkMmY1OGYyOGQ1OWU1ODgwYzdiMjRhMTAwYjA2MC4uZjdkNzIzYzYz
YmZjNjJhYzU3YWFhMDM1YWYyZWM1OGRkZjEyNGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUu
Y3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpwYXJz
ZVdlYlZUVEN1ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIEFT
U0VSVChjbGllbnQoKSk7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQot
ICAgICAgICBjbGllbnQtPnBhcnNlV2ViVlRUQ3VlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgY2xpZW50LT5wYXJz
ZVdlYlZUVEN1ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBUZXh0
VHJhY2tQcml2YXRlUmVtb3RlOjpwYXJzZVdlYlZUVEN1ZURhdGFTdHJ1Y3QoSVNPV2ViVlRUQ3Vl
JiYgY3VlRGF0YSkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1v
dGU6OmFkZERhdGFDdWUoTWVkaWFUaW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwgSVBDOgog
ewogICAgIEFTU0VSVChjbGllbnQoKSk7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNs
aWVudCgpKQotICAgICAgICBjbGllbnQtPmFkZERhdGFDdWUoV1RGTW92ZShzdGFydCksIFdURk1v
dmUoZW5kKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSk7CisgICAgICAgIGNsaWVudC0+YWRkRGF0YUN1ZShXVEZNb3ZlKHN0YXJ0KSwgV1RG
TW92ZShlbmQpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiAjaWYgRU5BQkxFKERB
VEFDVUVfVkFMVUUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDc4NDFhOGYzYjY5NmFjZDVkMWE5MjQwZDdkMWI1
MTNlYjlhYzY5MzMuLmRkNTZlNzRlZWVkY2NhMzAzMDI2YzI5NTMzYWY4M2E2OTc3ZTE2YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBXZWJTb2Nr
ZXRDaGFubmVsOjpjcmVhdGUoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJvCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0Q2hhbm5lbCh3ZWJQYWdlUHJveHlJRCwgZG9j
dW1lbnQsIGNsaWVudCkpOwogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6Om5vdGlmeVNlbmRG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5U2VuZEZyYW1lKFdlYlNv
Y2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoKQogewogICAgIFdlYlNvY2tldEZyYW1lIGZyYW1lKG9wQ29kZSwgdHJ1ZSwgZmFsc2UsIHRy
dWUsIGRhdGEsIGxlbmd0aCk7CiAgICAgbV9pbnNwZWN0b3IuZGlkU2VuZFdlYlNvY2tldEZyYW1l
KG1fZG9jdW1lbnQuZ2V0KCksIGZyYW1lKTsKQEAgLTU2LDEwICs1NiwxMCBAQCB2b2lkIFdlYlNv
Y2tldENoYW5uZWw6Om5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29k
ZSwgY29uc3QgY2hhcgogTmV0d29ya1NlbmRRdWV1ZSBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVN
ZXNzYWdlUXVldWUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsJiBjaGFubmVs
KQogewogICAgIHJldHVybiB7IGRvY3VtZW50LCBbJmNoYW5uZWxdKGF1dG8mIHV0ZjhTdHJpbmcp
IHsKLSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZTo6T3BDb2RlVGV4dCwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwor
ICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpP
cENvZGVUZXh0LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRh
dGEoKSksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdl
KE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQQzo6RGF0YVJl
ZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhTdHJpbmcuZGF0
YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAg
IH0sIFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsK
LSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6
T3BDb2RlQmluYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgYnl0ZUxl
bmd0aCk7CisgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpP
cENvZGU6Ok9wQ29kZUJpbmFyeSwgZGF0YSwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIGNoYW5uZWwu
c2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQ
Qzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKICAg
ICB9LCBbJmNoYW5uZWxdKEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZSkgewogICAgICAgICBh
dXRvIGNvZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4Y2VwdGlvbkNvZGUpOwpAQCAtMjYxLDcgKzI2
MSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ29ubmVjdChTdHJpbmcmJiBzdWJwcm90
b2NvbCwgU3RyaW5nJiYgZXh0ZW5zaW9ucykKICAgICBtX2NsaWVudC0+ZGlkQ29ubmVjdCgpOwog
fQogCi1zdGF0aWMgaW5saW5lIFdlYlNvY2tldEZyYW1lIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9y
V2ViSW5zcGVjdG9yKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYlNvY2tldEZy
YW1lOjpPcENvZGUgb3BDb2RlKQorc3RhdGljIGlubGluZSBXZWJTb2NrZXRGcmFtZSBjcmVhdGVX
ZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3Rvcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSkKIHsKICAgICAvLyBUaGlzIGlz
IGFuIGFwcHJveGltYXRpb24gc2luY2UgZnJhbWVzIGNhbiBiZSBtZXJnZWQgb24gYSBzaW5nbGUg
bWVzc2FnZS4KICAgICBXZWJTb2NrZXRGcmFtZSBmcmFtZTsKQEAgLTI5NCw3ICsyOTQsOCBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVUZXh0KFN0cmluZyYmIG1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29j
a2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3JlYXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNw
ZWN0b3IobWVzc2FnZS51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLnV0ZjgoKS5sZW5ndGgoKSwgV2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCkpOworICAgIGF1dG8gdXRmOE1lc3NhZ2Ug
PSBtZXNzYWdlLnV0ZjgoKTsKKyAgICBtX2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0RnJh
bWUobV9kb2N1bWVudC5nZXQoKSwgY3JlYXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3Io
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOE1lc3NhZ2UuZGF0YSgpKSwgdXRm
OE1lc3NhZ2UubGVuZ3RoKCksIFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQpKTsK
IAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKIH0KQEAgLTMxNSw3
ICszMTYsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKElQ
Qzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3Jl
YXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6
T3BDb2RlQmluYXJ5KSk7CisgICAgbV9pbnNwZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1l
KG1fZG9jdW1lbnQuZ2V0KCksIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmlu
YXJ5KSk7CiAKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoZGF0YS52ZWN0b3Io
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmgKaW5kZXggMDk0YmFmNjFmNTQ0M2JmM2U5YjI2ZTk1NGZhZThkNjU0YzBkZTVk
NC4uNzI0MTdlMjMyNjI0MTI3Y2M1ZGFlZDM0NTE3NmRmYTNhMWY0ZDlhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaApAQCAt
NzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZlRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsKCkgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICB2b2lkIG5vdGlmeVNlbmRGcmFt
ZShXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICB2b2lkIG5vdGlmeVNlbmRGcmFtZShXZWJDb3JlOjpXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKICAgICB2
b2lkIGxvZ0Vycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIE1lc3NhZ2UgcmVj
ZWl2ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0U3RyZWFtLmNwcAppbmRleCAzYjRhYzI5YjBkZjc2NWMyNDlmNzcyNTcxZjQ5NDY2YzU4OWU3
MWE4Li4wNWI0ZDc1OTI3NjI4MjI2ZWI0MDQ2OGU4NTFkMDMyNmE5NWEzYjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAK
QEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlNvY2tldFN0cmVhbTo6ZGlkQ2xvc2VTb2NrZXRT
dHJlYW0oKQogCiB2b2lkIFdlYlNvY2tldFN0cmVhbTo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29j
a2V0U3RyZWFtRGF0YSgqdGhpcywgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9p
ZCBXZWJTb2NrZXRTdHJlYW06OmRpZEZhaWxUb1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0
ZWJvYXJkT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAppbmRleCA2OWYwYWU4Mjc5NTA3YjcyOTY1
ZjY1YzIxNjg3M2M0ODFhZGY0ZDYwLi40NjY5MzllZjE4N2I0YTUwZjczMjBlZGYyYzYxNmMyY2Rj
ZmY1NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCkBAIC05NywxNiAr
OTcsNCBAQCBib29sIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OmdldERhdGFGb3JPdmVycmlkZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OmdldERhdGFGb3JPdmVycmlkZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFZlY3RvcjxjaGFyPiYgZGF0
YSkgY29uc3QKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gZm91bmRCdWZmZXI7Ci0gICAgaWYgKCFn
ZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHR5cGUsIGZvdW5kQnVmZmVyKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZGF0YS5yZXNpemUoZm91bmRCdWZmZXIuc2l6ZSgp
KTsKLSAgICBtZW1jcHkoZGF0YS5kYXRhKCksIGZvdW5kQnVmZmVyLmRhdGEoKSwgZm91bmRCdWZm
ZXIuc2l6ZSgpKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5oCmluZGV4IGVjMDkzM2U1MTI1ZTc5NjA0
NGNiODJjMzhiMjRjNWIyMmVkZWI2YzcuLmE4Njc3ZmU1NmZkOWFjMTFjMjQ5Y2FhOGRmZjg4MDUz
MGIwM2FlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuaApAQCAtNDMsNyArNDMs
NiBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0cmluZz4gb3ZlcnJpZGRlblR5cGVzKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpOwogCiAgICAgYm9vbCBnZXREYXRhRm9yT3ZlcnJpZGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBWZWN0b3I8dWlu
dDhfdD4mKSBjb25zdDsKLSAgICBib29sIGdldERhdGFGb3JPdmVycmlkZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFZlY3RvcjxjaGFyPiYpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjBlMWNlZGI4OTc1ZGI2
NDAxZjRjMTQxMWRlZmExZGQ5Mjk5YzU4YS4uZjAwMWE2Y2NmYWQyZGU4ZjRkYjA1YjgxNWUxZTE3
YjUzODkzZjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTc2MDksNyArNzYwOSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQCiAgICAg
ICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
ZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdo
bGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNoYXJl
ZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkpLCBpID09IGluZGV4ID8gU2Ny
b2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGRv
Y3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxp
Z2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFy
ZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSwgaSA9PSBpbmRleCA/IFNj
cm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBp
Kys7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0
LmNwcAppbmRleCAxZDI3MDJhZGIwODI3N2M0NDUwOGQzZGZiZGM0Mjc5ODZkY2ZjMjJmLi5iZWY2
MzlmNTc0Njk2NWNlNmE1ZTU4OGNjNWFjM2I0NWI4Mzc5Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcApAQCAtMTYwLDE0ICsxNjAsMTQgQEAgSFJF
U1VMVCBXZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZShfSW5fIEJTVFIgYnVuZGxl
UGF0aCwgX0luX29wdF8gSVdlYkQKIHsKICAgICBMT0coRG93bmxvYWQsICJBdHRlbXB0aW5nIHJl
c3VtZSBvZiBkb3dubG9hZCBidW5kbGUgJXMiLCBTdHJpbmcoYnVuZGxlUGF0aCwgU3lzU3RyaW5n
TGVuKGJ1bmRsZVBhdGgpKS5hc2NpaSgpLmRhdGEoKSk7CiAKLSAgICBWZWN0b3I8Y2hhcj4gYnVm
ZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgaWYgKCFEb3dubG9hZEJ1bmRs
ZTo6ZXh0cmFjdFJlc3VtZURhdGEoU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5k
bGVQYXRoKSksIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICAvLyBJdCBp
cyBwb3NzaWJsZSBieSBzb21lIHR3aXN0IG9mIGZhdGUgdGhlIGJ1bmRsZSBtYWdpYyBudW1iZXIg
d2FzIG5hdHVyYWxseSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlIGFuZCBpdHMgbm90IGFjdHVhbGx5
IGEgdmFsaWQgYnVuZGxlLgogICAgIC8vIFRoYXQsIG9yIHNvbWVvbmUgZW5naW5lZXJlZCBpdCB0
aGF0IHdheSB0byB0cnkgdG8gYXR0YWNrIHVzLiBJbiB0aGF0IGNhdXNlLCB0aGlzIENGRGF0YSB3
aWxsIHN1Y2Nlc3NmdWxseSBjcmVhdGUgYnV0IHdoZW4gd2UgYWN0dWFsbHkKICAgICAvLyB0cnkg
dG8gc3RhcnQgdGhlIENGVVJMRG93bmxvYWQgdXNpbmcgdGhpcyBib2d1cyBkYXRhLCBpdCB3aWxs
IGZhaWwgYW5kIHdlIHdpbGwgaGFuZGxlIHRoYXQgZ3JhY2VmdWxseS4KLSAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiByZXN1bWVEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpKSk7Cisg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KDAsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpKTsKIAogICAgIGlmICghZGVsZWdhdGUp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5kZXggZmM3M2JmMjhjYWVkMDYwNjgyNDQ4MDUwZGMx
YzZmOGM0YTM0OTlhYy4uNWM5MTI1NzcyNTI2OWViYjM0MjUwM2NjNzEwMzE5NGMzMTE1ZTVlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cApAQCAtMjk4LDcgKzI5OCw3IEBAIEhSRVNVTFQgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnNldEhU
VFBCb2R5KF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICBzaXplX3QgbGVuZ3RoID0gc3RhdC5jYlNpemUuTG93UGFydDsKLSAgICBWZWN0b3I8Y2hh
cj4gdmVjdG9yKGxlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcihsZW5ndGgpOwog
ICAgIFVMT05HIGJ5dGVzUmVhZCA9IDA7CiAgICAgaWYgKEZBSUxFRChkYXRhLT5SZWFkKHZlY3Rv
ci5kYXRhKCksIHN0YXQuY2JTaXplLkxvd1BhcnQsICZieXRlc1JlYWQpKSkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZjZkNWI1NmVi
ZTc5ZGZlMzQwMzliN2I1ZDM5Zjk1ZGYxODg0MTFhNy4uZWNlODRmOGU1ZTUzYjczOWFhMzg3OTdl
ZTU5ZmQ4NTA2OTY1MTZjZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTMx
Miw4ICszMTIsOCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRBdWRpb1Jlc3VsdENhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdAogICAgIEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXcqIGpzQnVmZmVyVmlldyA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3Kj4odm0sIHRvSlModG9KUyhjb250ZXh0KSwgYXJndW1lbnRzWzBdKSk7CiAgICAg
QVNTRVJUKGpzQnVmZmVyVmlldyk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBi
dWZmZXJWaWV3ID0ganNCdWZmZXJWaWV3LT51bnNoYXJlZEltcGwoKTsKLSAgICBjb25zdCBjaGFy
KiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyVmlldy0+YmFzZUFkZHJl
c3MoKSk7Ci0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gYXVkaW9EYXRhKGJ1ZmZlciwgYnVmZmVyICsg
YnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBjb25zdCB1aW50OF90KiBidWZmZXIgPSBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyVmlldy0+YmFzZUFkZHJlc3MoKSk7Cisg
ICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gYXVkaW9EYXRhKGJ1ZmZlciwgYnVmZmVyICsgYnVmZmVy
Vmlldy0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKICAg
ICBjb250cm9sbGVyLT5zZXRBdWRpb1Jlc3VsdChhdWRpb0RhdGEpOwpAQCAtMjM2Nyw4ICsyMzY3
LDggQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlc01lZGlhSWNvbihKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBtZWQKICAgICBKU0M6OkpTQXJyYXlCdWZmZXJWaWV3
KiBqc0J1ZmZlclZpZXcgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU0FycmF5QnVmZmVyVmll
dyo+KHZtLCB0b0pTKHRvSlMoY29udGV4dCksIG1lZGlhSWNvbikpOwogICAgIEFTU0VSVChqc0J1
ZmZlclZpZXcpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9
IGpzQnVmZmVyVmlldy0+dW5zaGFyZWRJbXBsKCk7Ci0gICAgY29uc3QgY2hhciogYnVmZmVyID0g
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpOwotICAg
IHN0ZDo6dmVjdG9yPGNoYXI+IG1lZGlhSWNvbkRhdGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJW
aWV3LT5ieXRlTGVuZ3RoKCkpOworICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciA9IHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygpKTsKKyAgICBzdGQ6
OnZlY3Rvcjx1aW50OF90PiBtZWRpYUljb25EYXRhKGJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmll
dy0+Ynl0ZUxlbmd0aCgpKTsKICAgICAKICAgICBtX29wZW5QYW5lbEZpbGVzTWVkaWFJY29uID0g
bWVkaWFJY29uRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCAzZTBhNjc3
ZTA4NzQ2MjFhYjU0ODY4NjNkMTJlNDc4OGNmNTZlZTVmLi4yZTA0OTRlMzBmM2YwYjNhNzQyMmVl
NzU5M2Y3ZTdmM2Q2NTdkMGM4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC0yOTks
OCArMjk5LDggQEAgcHVibGljOgogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0VVJMKCkgY29u
c3QgeyByZXR1cm4gbV90ZXN0VVJMOyB9CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVk
UGl4ZWxIYXNoKCkgY29uc3QgeyByZXR1cm4gbV9leHBlY3RlZFBpeGVsSGFzaDsgfQogCi0gICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8Y2hhcj4mIGF1ZGlvUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9h
dWRpb1Jlc3VsdDsgfQotICAgIHZvaWQgc2V0QXVkaW9SZXN1bHQoY29uc3Qgc3RkOjp2ZWN0b3I8
Y2hhcj4mIGF1ZGlvRGF0YSkgeyBtX2F1ZGlvUmVzdWx0ID0gYXVkaW9EYXRhOyB9CisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4mIGF1ZGlvUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9h
dWRpb1Jlc3VsdDsgfQorICAgIHZvaWQgc2V0QXVkaW9SZXN1bHQoY29uc3Qgc3RkOjp2ZWN0b3I8
dWludDhfdD4mIGF1ZGlvRGF0YSkgeyBtX2F1ZGlvUmVzdWx0ID0gYXVkaW9EYXRhOyB9CiAKICAg
ICB2b2lkIGFkZE9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9y
aWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGlu
YXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICB2b2lkIHJl
bW92ZU9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwg
SlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25I
b3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTM3Nyw3ICszNzcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlcyhKU0NvbnRleHRSZWYsIEpTVmFs
dWVSZWYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxjaGFyPiYgb3BlblBhbmVsRmlsZXNNZWRpYUljb24oKSBjb25zdCB7IHJldHVybiBtX29wZW5Q
YW5lbEZpbGVzTWVkaWFJY29uOyB9CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4mIG9w
ZW5QYW5lbEZpbGVzTWVkaWFJY29uKCkgY29uc3QgeyByZXR1cm4gbV9vcGVuUGFuZWxGaWxlc01l
ZGlhSWNvbjsgfQogICAgIHZvaWQgc2V0T3BlblBhbmVsRmlsZXNNZWRpYUljb24oSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmKTsKICNlbmRpZgogCkBAIC00NjgsNyArNDY4LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gbV93aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnM7
CiAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1fYWxsb3dlZEhvc3RzOwogCi0gICAgc3RkOjp2
ZWN0b3I8Y2hhcj4gbV9hdWRpb1Jlc3VsdDsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBtX2F1
ZGlvUmVzdWx0OwogCiAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBtX1VS
THNUb1JlZGlyZWN0OwogCkBAIC00ODIsNyArNDgyLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiBtX29wZW5QYW5lbEZpbGVzOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbV9vcGVuUGFuZWxGaWxlc01lZGlhSWNvbjsK
KyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBtX29wZW5QYW5lbEZpbGVzTWVkaWFJY29uOwogI2Vu
ZGlmCiAKICAgICBzdGF0aWMgSlNSZXRhaW5QdHI8SlNDbGFzc1JlZj4gY3JlYXRlSlNDbGFzcygp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQppbmRleCBiYmE1M2JkYmY5NGUx
OWIzZjc1NzAwZWNhYmFhMWM4N2VmNGZjMmQ4Li4yN2YyNjE0NDVlMmVmZWQ5M2E3YjU1M2JlYWQw
M2U0ZTQ5NTRlODdkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAt
Mzk2LDcgKzM5Niw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5PcGVu
UGFuZWxGb3JGaWxlQnV0dG9uV2l0aFJlc3VsdExpc3RlbmVyOihpCiAgICAgYXV0byYgaWNvbkRh
dGEgPSBnVGVzdFJ1bm5lci0+b3BlblBhbmVsRmlsZXNNZWRpYUljb24oKTsKICAgICBDR0ltYWdl
UmVmIGltYWdlUmVmID0gbnVsbHB0cjsKICAgICBpZiAoIWljb25EYXRhLmVtcHR5KCkpIHsKLSAg
ICAgICAgYXV0byBkYXRhUmVmID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGljb25EYXRhLmRhdGEoKSksIGljb25EYXRhLnNpemUo
KSkpOworICAgICAgICBhdXRvIGRhdGFSZWYgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRy
LCBpY29uRGF0YS5kYXRhKCksIGljb25EYXRhLnNpemUoKSkpOwogICAgICAgICBhdXRvIGltYWdl
UHJvdmlkZXJSZWYgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRh
UmVmLmdldCgpKSk7CiAgICAgICAgIGltYWdlUmVmID0gQ0dJbWFnZUNyZWF0ZVdpdGhKUEVHRGF0
YVByb3ZpZGVyKGltYWdlUHJvdmlkZXJSZWYuZ2V0KCksIG51bGxwdHIsIHRydWUsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpOwogICAgIH0K
</data>
<flag name="commit-queue"
          id="452213"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430671</attachid>
            <date>2021-06-05 20:32:32 -0700</date>
            <delta_ts>2021-06-05 21:12:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226688-20210605203231.patch</filename>
            <type>text/plain</type>
            <size>127201</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZkOWY1ZDhmM2EzMjQx
MWM5YTUzODM1NTU4YjFjMTRkMzBmOTE3ZS4uN2I2MTRjYWY3NmRkMmE4ZjJhODZhZmVmY2VkNmM0
M2UzNTFiNWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wNi0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhf
dCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkgdG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNo
YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVR
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNldFN0cmVhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRE
ZWZsYXRlcjo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6
OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6
cGFyc2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRGcmFtZVBheWxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6OldlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaW1JbnB1
dFNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2
ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFk
U3RhdHVzTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRI
VFRQSGVhZGVycyk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9TZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
Ojp3cml0ZUFsbFRvRmlsZSk6CisgICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogY3J5
cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRNYXN0ZXJLZXkpOgorICAgICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZEJ5dGVzKToKKyAgICAgICAgKiBkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGRvbS9SYXdEYXRhRG9jdW1l
bnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAqIGh0
bWwvTWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFy
c2VyOjphcHBlbmRCeXRlcyk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFj
ay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6ZmlsZUZpbmlzaGVkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1
bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltSW5wdXRTYW1wbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VIVFRQSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJl
cXVlc3RCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpkYXRhQ2hhbmdlZCk6CisKIDIwMjEtMDYtMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBNb3ZlIERhdGFEZXRlY3RvcnMgc29mdGxp
bmtpbmcgaW4gRGF0YURldGVjdG9yc1NQSS5oIG91dCBpbnRvIGEgc2VwYXJhdGUgUEFMIGhlYWRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBiMmZkNzU1Y2Q4MThiZTVlNDg3MDgwNmZmNjA1MWE4Y2M4MjMxNTVlLi41
OTU0NGEwMDc0ZDIzMDIzODg4ZmI2NmZjYTE3ZTQxOGFjM2YyZjBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDIxLTA2LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGBjb25zdCB1aW50OF90KmAgdHlwZSBtb3JlIGNvbnNpc3RlbnRseSB0byBz
dG9yZSBieXRlcyBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjY4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdlYlZUVEN1ZURh
dGEpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6cGFyc2VXZWJWVFRD
dWVEYXRhKToKKwogMjAyMS0wNi0wNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdIERpY3Rpb25hcnkgbG9va3VwIGhpZ2hsaWdodHMgaW4g
aW1hZ2Ugb3ZlcmxheXMgc2hvdWxkIGluY2x1ZGUgYmFja2dyb3VuZCBjb250ZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XVEYv
d3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oCmluZGV4IGRiNzg2ZDMyOTg1NjZjNGIwYmE3NzM5
ODIzMDI5Zjg1NTYyMTc3MDMuLjViZTVhY2JiYTIzYzI0ODdjODNlN2EyNTI5ZGQ2NmNkYWY2MTY5
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oCkBAIC01OSw5ICs1OSw5
IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHU29ja2V0Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OwogICAgIGNvbnN0IE1lc3NhZ2VIYW5kbGVycyYgbV9tZXNzYWdlSGFuZGxlcnM7CiAgICAgZ3Bv
aW50ZXIgbV91c2VyRGF0YTsKLSAgICBWZWN0b3I8Y2hhcj4gbV9yZWFkQnVmZmVyOworICAgIFZl
Y3RvcjxnY2hhcj4gbV9yZWFkQnVmZmVyOwogICAgIEdTb2NrZXRNb25pdG9yIG1fcmVhZE1vbml0
b3I7Ci0gICAgVmVjdG9yPGNoYXI+IG1fd3JpdGVCdWZmZXI7CisgICAgVmVjdG9yPGdjaGFyPiBt
X3dyaXRlQnVmZmVyOwogICAgIEdTb2NrZXRNb25pdG9yIG1fd3JpdGVNb25pdG9yOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAxMGY4OGIxODhh
MTYxZDgxZDYzMTdjMmY4YTQ2NWI1ZDgxNTk2YWI4Li4yNWY3NmE1OTQyMTljOTYzZmMzMzY1YWEz
NWI1Y2YyNThlNDQzNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVx
dWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0
dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNpemUpOworICAgICAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEsIGNodW5rLT5zaXplKTsKICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNw
b25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAg
ICAgICAgIH0pOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0
SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNpemUpOworICAgICAgICAgICAgICAg
IGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSwgY2h1bmstPnNpemUpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9t
aXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDg4YTY3ZTM1
NTRhYTQ4Y2MyM2IyMmM1MjEwNmNhZmMxODlmMWU5N2EuLjJhYjBjYWYxMDBkMGMzMTM4YzJiNjI2
NDNkNzNiMjFlYzZiZTllYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8gY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2h1bmstPmRhdGEpLCBjaHVuay0+c2l6ZSk7Cisg
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhLCBjaHVuay0+c2l6ZSk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShX
VEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9
CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBzaXplKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIHNpemUpCiB7CiAgICAgaWYgKG1fc291cmNlKSB7CiAgICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwpAQCAt
MzM0LDExICszMzQsNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUp
OwogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKLXsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwotfQotCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aAppbmRleCAzN2QwNTRiMTBjZThkYmVkMTkxYzdiODVmODgxZGVlNDZlMDRiMGQyLi4xYjYyNzY2
M2JkZDJhNTkwOWNlMWVjM2VmN2E5ODJiMjQ5ZDc1Y2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC00Niw4ICs0Niw3IEBAIHB1
YmxpYzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5
cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQp
OworICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXgg
YjM5Nzg2OTVmZDdlZjE5MjE0YjZiOTAxYThmM2YxYTk2ZWUwZTBlYy4uZGUxM2MxNzRkMzAzMDk2
ZmZlM2NiY2UwNDYwOWNjMjk0ZDBlZjUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBMaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRMb2NrIH07CiAgICAg
aWYgKCFtX2NsaWVudCkgewotICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEuZGF0YTxjaGFyPigpKTsKKyAgICAgICAgYXV0
byogZGF0YSA9IGJ1ZmZlci5kYXRhLmRhdGE8dWludDhfdD4oKTsKICAgICAgICAgaWYgKGJ1ZmZl
ci5iaW5hcnkpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkTWVzc2FnZXMuYXBwZW5kKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDczZTEwNTAxOGQ4YTI2N2NhYmQ0MmY1MzFiZmY4NGU0MDM0ZTUwMWMuLmY4OTQ2
MDg3N2RiZmYyMDZjMmViNGY3ZDYzZDI5NzJkZmYwYWE4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzcwogVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1
ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0
aCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRp
bmcgQXJyYXlCdWZmZXIgJXAgYnl0ZU9mZnNldD0ldSBieXRlTGVuZ3RoPSV1IiwgdGhpcywgJmJp
bmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwotICAgIGVucXVldWVSYXdGcmFtZShX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYmlu
YXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CisgICAgZW5xdWV1ZVJh
d0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAg
ICBwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7CiAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KQEAgLTE3MCw5ICsxNzAsOSBAQCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKEJs
b2ImIGJpbmFyeURhdGEpCiAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kU3VjY2VzczsKIH0KIAotYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgY2hhciogZGF0YT0lcCBsZW5ndGg9JWQiLCB0aGlzLCBk
YXRhLCBsZW5ndGgpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5k
KCkgU2VuZGluZyB1aW50OF90KiBkYXRhPSVwIGxlbmd0aD0lZCIsIHRoaXMsIGRhdGEsIGxlbmd0
aCk7CiAgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIGRh
dGEsIGxlbmd0aCk7CiAgICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwogICAgIHJldHVy
biB0cnVlOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xv
c2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUpCiAgICAgZGVyZWYoKTsK
IH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShT
b2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29j
a2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFJlY2VpdmVT
b2NrZXRTdHJlYW1EYXRhKCkgUmVjZWl2ZWQgJXp1IGJ5dGVzIiwgdGhpcywgbGVuZ3RoKTsKICAg
ICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIFRoZSBjbGll
bnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCBy
ZWZlcmVuY2UuCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRG
YWlsKEV4Y2VwdGlvbkNvZGUgZXJyb3JDb2RlKQogICAgIGRlcmVmKCk7CiB9CiAKLWJvb2wgV2Vi
U29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bikKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGxlbikKIHsKICAgICBzaXplX3QgbmV3QnVmZmVyU2l6ZSA9IG1fYnVmZmVy
LnNpemUoKSArIGxlbjsKICAgICBpZiAobmV3QnVmZmVyU2l6ZSA8IG1fYnVmZmVyLnNpemUoKSkg
ewpAQCAtNDg4LDE0ICs0ODgsMTQgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3Np
bmdIYW5kc2hha2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgICAgICByZXR1
cm47CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKIAotICAgIFZlY3RvcjxjaGFyPiBidWY7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZjsKICAgICBpZiAoIW1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtl
ICYmIGNvZGUgIT0gQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQpIHsKLSAgICAgICAgdW5zaWdu
ZWQgY2hhciBoaWdoQnl0ZSA9IGNvZGUgPj4gODsKLSAgICAgICAgdW5zaWduZWQgY2hhciBsb3dC
eXRlID0gY29kZTsKLSAgICAgICAgYnVmLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPihoaWdoQnl0
ZSkpOwotICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KGxvd0J5dGUpKTsKKyAg
ICAgICAgdWludDhfdCBoaWdoQnl0ZSA9IGNvZGUgPj4gODsKKyAgICAgICAgdWludDhfdCBsb3dC
eXRlID0gY29kZTsKKyAgICAgICAgYnVmLmFwcGVuZChoaWdoQnl0ZSk7CisgICAgICAgIGJ1Zi5h
cHBlbmQobG93Qnl0ZSk7CiAgICAgICAgIGF1dG8gcmVhc29uVVRGOCA9IHJlYXNvbi51dGY4KCk7
Ci0gICAgICAgIGJ1Zi5hcHBlbmQocmVhc29uVVRGOC5kYXRhKCksIHJlYXNvblVURjgubGVuZ3Ro
KCkpOworICAgICAgICBidWYuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHJlYXNvblVURjguZGF0YSgpKSwgcmVhc29uVVRGOC5sZW5ndGgoKSk7CiAgICAgfQogICAgIGVu
cXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQ2xvc2UsIGJ1Zi5kYXRhKCksIGJ1
Zi5zaXplKCkpOwogICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFuZHNoYWtlIG1heSBmYWlsLCB3aGlj
aCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KQEAgLTUyNCw3
ICs1MjQsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgQVNT
RVJUKCFtX2J1ZmZlci5pc0VtcHR5KCkpOwogCiAgICAgV2ViU29ja2V0RnJhbWUgZnJhbWU7Ci0g
ICAgY29uc3QgY2hhciogZnJhbWVFbmQ7CisgICAgY29uc3QgdWludDhfdCogZnJhbWVFbmQ7CiAg
ICAgU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIFdlYlNvY2tldEZyYW1lOjpQYXJzZUZyYW1lUmVz
dWx0IHJlc3VsdCA9IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZyYW1lKG1fYnVmZmVyLmRhdGEoKSwg
bV9idWZmZXIuc2l6ZSgpLCBmcmFtZSwgZnJhbWVFbmQsIGVycm9yU3RyaW5nKTsKICAgICBpZiAo
cmVzdWx0ID09IFdlYlNvY2tldEZyYW1lOjpGcmFtZUluY29tcGxldGUpCkBAIC02NTYsOCArNjU2
LDggQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAgICAgICAgICAg
ZmFpbCgiUmVjZWl2ZWQgYSBicm9rZW4gY2xvc2UgZnJhbWUgY29udGFpbmluZyBhbiBpbnZhbGlk
IHNpemUgYm9keS4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5dGUgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihmcmFtZS5wYXlsb2FkWzBdKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
bG93Qnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGZyYW1lLnBheWxvYWRbMV0pOwor
ICAgICAgICAgICAgYXV0byBoaWdoQnl0ZSA9IGZyYW1lLnBheWxvYWRbMF07CisgICAgICAgICAg
ICBhdXRvIGxvd0J5dGUgPSBmcmFtZS5wYXlsb2FkWzFdOwogICAgICAgICAgICAgbV9jbG9zZUV2
ZW50Q29kZSA9IGhpZ2hCeXRlIDw8IDggfCBsb3dCeXRlOwogICAgICAgICAgICAgaWYgKG1fY2xv
c2VFdmVudENvZGUgPT0gQ2xvc2VFdmVudENvZGVOb1N0YXR1c1JjdmQgfHwgbV9jbG9zZUV2ZW50
Q29kZSA9PSBDbG9zZUV2ZW50Q29kZUFibm9ybWFsQ2xvc3VyZSB8fCBtX2Nsb3NlRXZlbnRDb2Rl
ID09IENsb3NlRXZlbnRDb2RlVExTSGFuZHNoYWtlKSB7CiAgICAgICAgICAgICAgICAgbV9jbG9z
ZUV2ZW50Q29kZSA9IENsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlOwpAQCAtNzE0LDcgKzcx
NCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZShjb25zdCBDU3Ry
aW5nJiBzdHJpbmcpCiAgICAgbV9vdXRnb2luZ0ZyYW1lUXVldWUuYXBwZW5kKFdURk1vdmUoZnJh
bWUpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUoV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJh
bWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0Zy
YW1lUXVldWVPcGVuKTsKICAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4o
KTsKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRn
b2luZ0ZyYW1lUXVldWUoKQogICAgICAgICBhdXRvIGZyYW1lID0gbV9vdXRnb2luZ0ZyYW1lUXVl
dWUudGFrZUZpcnN0KCk7CiAgICAgICAgIHN3aXRjaCAoZnJhbWUtPmZyYW1lVHlwZSkgewogICAg
ICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZVN0cmluZzogewotICAgICAgICAgICAgc2VuZEZyYW1l
KGZyYW1lLT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmRhdGEoKSwgZnJhbWUtPnN0cmluZ0Rh
dGEubGVuZ3RoKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChib29s
IHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZS0+c3RyaW5nRGF0YS5kYXRhKCkpLCBmcmFt
ZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykKICAg
ICAgICAgICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lLiIp
OwogICAgICAgICAgICAgfSk7CkBAIC03ODAsNyArNzgwLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgICAgICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IHJlc3VsdCA9IG1fYmxvYkxvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsK
ICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBudWxscHRyOwogICAgICAgICAgICAgICAg
IG1fYmxvYkxvYWRlclN0YXR1cyA9IEJsb2JMb2FkZXJOb3RTdGFydGVkOwotICAgICAgICAgICAg
ICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocmVz
dWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgICAgIHNlbmRG
cmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0LT5k
YXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXN1
Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJT
b2NrZXQgZnJhbWUuIik7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC04MTMsNyArODEzLDcgQEAg
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjphYm9ydE91dGdvaW5nRnJhbWVRdWV1ZSgpCiAgICAgfQog
fQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BD
b2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdURjo6RnVu
Y3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKICAgICBBU1NFUlQoIW1f
c3VzcGVuZGVkKTsKQEAgLTgyNyw3ICs4MjcsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNl
bmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YQog
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgIH0KIAotICAgIFZl
Y3RvcjxjaGFyPiBmcmFtZURhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGZyYW1lRGF0YTsKICAg
ICBmcmFtZS5tYWtlRnJhbWVEYXRhKGZyYW1lRGF0YSk7CiAKICAgICBtX2hhbmRsZS0+c2VuZERh
dGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRhLnNpemUoKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggYTQ2MmUzZTA4ZTA5Mjc5ODcwMWUzN2IxYmM0MjEyZDE4
NjlhMzE4MC4uMGQwZWQyNmZmNWYxY2YwYzAzNjRlMmY5MmVkMjM2NjA2YTZlMTYwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNvY2tldENo
YW5uZWw+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQm
IGNsaWVudCwgU29ja2V0UHJvdmlkZXImIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlNvY2tldENoYW5uZWwoZG9jdW1lbnQsIGNsaWVudCwgcHJvdmlkZXIpKTsgfQogICAgIHZp
cnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKIAotICAgIGJvb2wgc2VuZChjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKTsKKyAgICBib29sIHNlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCk7CiAKICAgICAvLyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCBmdW5jdGlvbnMu
CiAgICAgQ29ubmVjdFN0YXR1cyBjb25uZWN0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpIGZpbmFsOwpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgLy8gU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50IGZ1bmN0aW9ucy4KICAgICB2b2lkIGRpZE9wZW5Tb2NrZXRTdHJlYW0o
U29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVNvY2tldFN0cmVh
bShTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTb2NrZXRT
dHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxl
JiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsVG9SZWNl
aXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVhbUhhbmRsZSYsIHNpemVfdCBidWZm
ZXJlZEFtb3VudCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tldFN0
cmVhbUhhbmRsZSYsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJikgZmluYWw7CkBAIC0xMzEsNyAr
MTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCi0gICAgYm9vbCBhcHBlbmRUb0J1ZmZl
cihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKTsKKyAgICBib29sIGFwcGVuZFRvQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW4pOwogICAgIHZvaWQgc2tpcEJ1ZmZlcihz
aXplX3QgbGVuKTsKICAgICBib29sIHByb2Nlc3NCdWZmZXIoKTsKICAgICB2b2lkIHJlc3VtZVRp
bWVyRmlyZWQoKTsKQEAgLTE2MCwxMSArMTYwLDExIEBAIHByaXZhdGU6CiAgICAgICAgIFF1ZXVl
ZEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgICAgIC8vIE9ubHkgb25lIG9mIHRoZSBmb2xsb3dp
bmcgaXRlbXMgaXMgdXNlZCwgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiBmcmFtZVR5cGUuCiAg
ICAgICAgIENTdHJpbmcgc3RyaW5nRGF0YTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IHZlY3RvckRh
dGE7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JEYXRhOwogICAgICAgICBSZWZQdHI8
QmxvYj4gYmxvYkRhdGE7CiAgICAgfTsKICAgICB2b2lkIGVucXVldWVUZXh0RnJhbWUoY29uc3Qg
Q1N0cmluZyYpOwotICAgIHZvaWQgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENv
ZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGVucXVl
dWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBlbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGUsIEJsb2ImKTsKIAogICAgIHZvaWQgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1
ZSgpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJZiB5b3UgYXJlIGdv
aW5nIHRvIHNlbmQgYSBoeWJpLTEwIGZyYW1lLCB5b3UgbmVlZCB0byB1c2UgdGhlIG91dGdvaW5n
IGZyYW1lIHF1ZXVlCiAgICAgLy8gaW5zdGVhZCBvZiBjYWxsIHNlbmRGcmFtZSgpIGRpcmVjdGx5
LgotICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNvbXBs
ZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2Rl
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBlbnVtIEJsb2JMb2FkZXJTdGF0
dXMgewogICAgICAgICBCbG9iTG9hZGVyTm90U3RhcnRlZCwKQEAgLTE5Nyw3ICsxOTcsNyBAQCBw
cml2YXRlOgogICAgIFdlYWtQdHI8V2ViU29ja2V0Q2hhbm5lbENsaWVudD4gbV9jbGllbnQ7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEhhbmRzaGFrZT4gbV9oYW5kc2hha2U7CiAgICAg
UmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9oYW5kbGU7Ci0gICAgVmVjdG9yPGNoYXI+IG1f
YnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKIAogICAgIFRpbWVyIG1fcmVz
dW1lVGltZXI7CiAgICAgYm9vbCBtX3N1c3BlbmRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcApp
bmRleCAxNGFiODA5NWIyNWNmMTM5NGMwODQ5YTBiMTg3ODE3NGM0NTczM2FkLi4xMTJlZDJlZTBl
YTM2ZWE0YjNjNzA5NGQ3NTczOGEyZWRlM2MyN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAgLTYzLDE1
ICs2MywxNSBAQCBXZWJTb2NrZXREZWZsYXRlcjo6fldlYlNvY2tldERlZmxhdGVyKCkKICAgICAg
ICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXREZWZsYXRlciAlcCBEZXN0cnVjdG9yIGRlZmxhdGVF
bmQoKSBmYWlsZWQ6ICVkIGlzIHJldHVybmVkIiwgdGhpcywgcmVzdWx0KTsKIH0KIAotc3RhdGlj
IHZvaWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGlu
cHV0RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0
cHV0TGVuZ3RoKQorc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtKiBzdHJl
YW0sIGNvbnN0IHVpbnQ4X3QqIGlucHV0RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCB1aW50OF90
KiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQogewotICAgIHN0cmVhbS0+bmV4dF9p
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihjb25zdF9jYXN0PGNoYXIqPihpbnB1dERhdGEp
KTsKKyAgICBzdHJlYW0tPm5leHRfaW4gPSBjb25zdF9jYXN0PHVpbnQ4X3QqPihpbnB1dERhdGEp
OwogICAgIHN0cmVhbS0+YXZhaWxfaW4gPSBpbnB1dExlbmd0aDsKLSAgICBzdHJlYW0tPm5leHRf
b3V0ID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KG91dHB1dERhdGEpOworICAgIHN0cmVhbS0+
bmV4dF9vdXQgPSBvdXRwdXREYXRhOwogICAgIHN0cmVhbS0+YXZhaWxfb3V0ID0gb3V0cHV0TGVu
Z3RoOwogfQogCi1ib29sIFdlYlNvY2tldERlZmxhdGVyOjphZGRCeXRlcyhjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQorYm9vbCBXZWJTb2NrZXREZWZsYXRlcjo6YWRkQnl0ZXMoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM3LDcgKzEzNyw3IEBAIFdlYlNvY2tldEluZmxhdGVy
Ojp+V2ViU29ja2V0SW5mbGF0ZXIoKQogICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldElu
ZmxhdGVyICVwIERlc3RydWN0b3IgaW5mbGF0ZUVuZCgpIGZhaWxlZDogJWQgaXMgcmV0dXJuZWQi
LCB0aGlzLCByZXN1bHQpOwogfQogCi1ib29sIFdlYlNvY2tldEluZmxhdGVyOjphZGRCeXRlcyhj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6
YWRkQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAo
IWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIGJvb2wg
V2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCiAKIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmZpbmlzaCgpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IGNoYXIqIHN0cmlwcGVkRmllbGRzID0gIlwwXDBceGZmXHhmZiI7CisgICAgc3RhdGljIGNv
bnN0IHVpbnQ4X3Qgc3RyaXBwZWRGaWVsZHNbXSA9ICJcMFwwXHhmZlx4ZmYiOwogICAgIHN0YXRp
YyBjb25zdCBzaXplX3Qgc3RyaXBwZWRMZW5ndGggPSA0OwogCiAgICAgLy8gQXBwZW5kcyA0IG9j
dGVzdHMgb2YgMHgwMCAweDAwIDB4ZmYgMHhmZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaAppbmRleCBmNjJkYzU4NWE4M2Jl
M2ExMzk0MWI1N2JhZjcyOTY1NmMxMzA0OTJiLi44ZjQ1NGZiM2I2OTZkOGJjNDNlZjJhYTU3YjFm
N2IwOWNlMjYwOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaApAQCAtNDksMTYgKzQ5LDE2IEBAIHB1YmxpYzoKICAg
ICB+V2ViU29ja2V0RGVmbGF0ZXIoKTsKIAogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwotICAgIGJv
b2wgYWRkQnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgYm9vbCBhZGRCeXRlcyhjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBib29sIGZpbmlzaCgpOwotICAgIGNvbnN0IGNoYXIq
IGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBjb25zdCB1aW50OF90KiBk
YXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KICAgICB2b2lkIHJlc2V0KCk7CiAKIHByaXZh
dGU6CiAgICAgaW50IG1fd2luZG93Qml0czsKICAgICBDb250ZXh0VGFrZU92ZXJNb2RlIG1fY29u
dGV4dFRha2VPdmVyTW9kZTsKLSAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IG1fYnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjx6X3N0cmVhbT4gbV9zdHJl
YW07CiB9OwogCkBAIC02OSwxNSArNjksMTUgQEAgcHVibGljOgogICAgIH5XZWJTb2NrZXRJbmZs
YXRlcigpOwogCiAgICAgYm9vbCBpbml0aWFsaXplKCk7Ci0gICAgYm9vbCBhZGRCeXRlcyhjb25z
dCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOwogICAgIGJvb2wgZmluaXNoKCk7Ci0gICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0dXJu
IG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSB7IHJldHVybiBt
X2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLnNpemUoKTsgfQogICAgIHZvaWQgcmVzZXQoKTsKIAogcHJpdmF0ZToKICAgICBpbnQgbV93
aW5kb3dCaXRzOwotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhf
dD4gbV9idWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHpfc3RyZWFtPiBtX3N0cmVhbTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RnJhbWUuY3BwCmluZGV4IGY3ZjM2NTc1YjI2NzU1Y2NiOWEyMWU4OWU2YmIzZTRkMDJlNzA4Yjku
LjYzZTI1NzMxMTM5NjcxNjgzYmM4ZWVjMmJmNWI2MWQxYjY1N2VlM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcApAQCAt
MzAsMTMgKzMwLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbnN0YW50cyBmb3Ig
aHliaS0xMCBmcmFtZSBmb3JtYXQuCi1jb25zdCB1bnNpZ25lZCBjaGFyIGZpbmFsQml0ID0gMHg4
MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgY29tcHJlc3NCaXQgPSAweDQwOwotY29uc3QgdW5zaWdu
ZWQgY2hhciByZXNlcnZlZDJCaXQgPSAweDIwOwotY29uc3QgdW5zaWduZWQgY2hhciByZXNlcnZl
ZDNCaXQgPSAweDEwOwotY29uc3QgdW5zaWduZWQgY2hhciBvcENvZGVNYXNrID0gMHhGOwotY29u
c3QgdW5zaWduZWQgY2hhciBtYXNrQml0ID0gMHg4MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgcGF5
bG9hZExlbmd0aE1hc2sgPSAweDdGOworY29uc3QgdWludDhfdCBmaW5hbEJpdCA9IDB4ODA7Citj
b25zdCB1aW50OF90IGNvbXByZXNzQml0ID0gMHg0MDsKK2NvbnN0IHVpbnQ4X3QgcmVzZXJ2ZWQy
Qml0ID0gMHgyMDsKK2NvbnN0IHVpbnQ4X3QgcmVzZXJ2ZWQzQml0ID0gMHgxMDsKK2NvbnN0IHVp
bnQ4X3Qgb3BDb2RlTWFzayA9IDB4RjsKK2NvbnN0IHVpbnQ4X3QgbWFza0JpdCA9IDB4ODA7Citj
b25zdCB1aW50OF90IHBheWxvYWRMZW5ndGhNYXNrID0gMHg3RjsKIGNvbnN0IHNpemVfdCBtYXhQ
YXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjU7CiBjb25zdCBzaXpl
X3QgcGF5bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCA9IDEyNjsKIGNv
bnN0IHNpemVfdCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQg
PSAxMjc7CkBAIC00NywyMiArNDcsMjIgQEAgYm9vbCBXZWJTb2NrZXRGcmFtZTo6bmVlZHNFeHRl
bmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3RoKQogICAgIHJldHVybiBwYXlsb2Fk
TGVuZ3RoID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkOwogfQog
Ci1XZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFtZTo6cGFyc2VG
cmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0RnJhbWUmIGZyYW1l
LCBjb25zdCBjaGFyKiYgZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJpbmcpCitXZWJTb2NrZXRG
cmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZSh1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0RnJhbWUmIGZyYW1lLCBjb25zdCB1
aW50OF90KiYgZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJpbmcpCiB7Ci0gICAgY2hhciogcCA9
IGRhdGE7Ci0gICAgY29uc3QgY2hhciogYnVmZmVyRW5kID0gZGF0YSArIGRhdGFMZW5ndGg7Cisg
ICAgdWludDhfdCogcCA9IGRhdGE7CisgICAgY29uc3QgdWludDhfdCogYnVmZmVyRW5kID0gZGF0
YSArIGRhdGFMZW5ndGg7CiAKICAgICBpZiAoZGF0YUxlbmd0aCA8IDIpCiAgICAgICAgIHJldHVy
biBGcmFtZUluY29tcGxldGU7CiAKLSAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9ICpwKys7
Ci0gICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnArKzsKKyAgICB1aW50OF90IGZpcnN0
Qnl0ZSA9ICpwKys7CisgICAgdWludDhfdCBzZWNvbmRCeXRlID0gKnArKzsKIAogICAgIGJvb2wg
ZmluYWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKICAgICBib29sIGNvbXByZXNzID0gZmlyc3RC
eXRlICYgY29tcHJlc3NCaXQ7CiAgICAgYm9vbCByZXNlcnZlZDIgPSBmaXJzdEJ5dGUgJiByZXNl
cnZlZDJCaXQ7CiAgICAgYm9vbCByZXNlcnZlZDMgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDNCaXQ7
Ci0gICAgdW5zaWduZWQgY2hhciBvcENvZGUgPSBmaXJzdEJ5dGUgJiBvcENvZGVNYXNrOworICAg
IHVpbnQ4X3Qgb3BDb2RlID0gZmlyc3RCeXRlICYgb3BDb2RlTWFzazsKIAogICAgIGJvb2wgbWFz
a2VkID0gc2Vjb25kQnl0ZSAmIG1hc2tCaXQ7CiAgICAgdWludDY0X3QgcGF5bG9hZExlbmd0aDY0
ID0gc2Vjb25kQnl0ZSAmIHBheWxvYWRMZW5ndGhNYXNrOwpAQCAtNzksNyArNzksNyBAQCBXZWJT
b2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZShj
aGFyKiBkYXRhLCBzaXplX3QgZAogICAgICAgICBwYXlsb2FkTGVuZ3RoNjQgPSAwOwogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemU7ICsraSkgewog
ICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IDw8PSA4OwotICAgICAgICAgICAgcGF5bG9hZExl
bmd0aDY0IHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpwKyspOworICAgICAgICAgICAg
cGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCpwKyspOwogICAgICAgICB9
CiAgICAgICAgIGlmIChleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplID09IDIgJiYgcGF5bG9hZExl
bmd0aDY0IDw9IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCkgewog
ICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVGhlIG1pbmltYWwgbnVtYmVyIG9mIGJ5dGVzIE1V
U1QgYmUgdXNlZCB0byBlbmNvZGUgdGhlIGxlbmd0aCI7CkBAIC0xMDMsOCArMTAzLDggQEAgV2Vi
U29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0RnJhbWU6OnBhcnNlRnJhbWUo
Y2hhciogZGF0YSwgc2l6ZV90IGQKICAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKIAog
ICAgIGlmIChtYXNrZWQpIHsKLSAgICAgICAgY29uc3QgY2hhciogbWFza2luZ0tleSA9IHA7Ci0g
ICAgICAgIGNoYXIqIHBheWxvYWQgPSBwICsgbWFza2luZ0tleVdpZHRoSW5CeXRlczsKKyAgICAg
ICAgdWludDhfdCogbWFza2luZ0tleSA9IHA7CisgICAgICAgIHVpbnQ4X3QqIHBheWxvYWQgPSBw
ICsgbWFza2luZ0tleVdpZHRoSW5CeXRlczsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwYXlsb2FkTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBwYXlsb2FkW2ldIF49IG1hc2tpbmdL
ZXlbaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNdOyAvLyBVbm1hc2sgdGhlIHBheWxvYWQuCiAg
ICAgfQpAQCAtMTIxLDcgKzEyMSw3IEBAIFdlYlNvY2tldEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0
IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBkCiAgICAgcmV0
dXJuIEZyYW1lT0s7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEZyYW1lUGF5bG9hZChjb25zdCBX
ZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQorc3RhdGljIHZv
aWQgYXBwZW5kRnJhbWVQYXlsb2FkKGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSwgVmVjdG9y
PHVpbnQ4X3Q+JiBmcmFtZURhdGEpCiB7CiAgICAgc2l6ZV90IG1hc2tpbmdLZXlTdGFydCA9IDA7
CiAgICAgaWYgKGZyYW1lLm1hc2tlZCkgewpAQCAtMTM5LDcgKzEzOSw3IEBAIHN0YXRpYyB2b2lk
IGFwcGVuZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3Rvcjxj
aGFyPiYgZnJhbWVECiAgICAgfQogfQogCi12b2lkIFdlYlNvY2tldEZyYW1lOjptYWtlRnJhbWVE
YXRhKFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQordm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZy
YW1lRGF0YShWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSkKIHsKICAgICBBU1NFUlQoIShvcENv
ZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBmaXRzIGluIHRo
ZSByYW5nZSBvZiBvcENvZGVzLgogCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJTb2NrZXRG
cmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSkKICAgICAgICAgZnJh
bWVEYXRhLmFwcGVuZChwYXlsb2FkTGVuZ3RoICYgMHhGRik7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgZnJhbWVEYXRhLmF0KDEpIHw9IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0ZW5kZWRM
ZW5ndGhGaWVsZDsKLSAgICAgICAgY2hhciBleHRlbmRlZFBheWxvYWRMZW5ndGhbOF07CisgICAg
ICAgIHVpbnQ4X3QgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzhdOwogICAgICAgICBzaXplX3QgcmVt
YWluaW5nID0gcGF5bG9hZExlbmd0aDsKICAgICAgICAgLy8gRmlsbCB0aGUgbGVuZ3RoIGludG8g
ZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoIGluIHRoZSBuZXR3b3JrIGJ5dGUgb3JkZXIuCiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgODsgKytpKSB7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBX
ZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSkKICAg
ICBhcHBlbmRGcmFtZVBheWxvYWQoKnRoaXMsIGZyYW1lRGF0YSk7CiB9CiAKLVdlYlNvY2tldEZy
YW1lOjpXZWJTb2NrZXRGcmFtZShPcENvZGUgb3BDb2RlLCBib29sIGZpbmFsLCBib29sIGNvbXBy
ZXNzLCBib29sIG1hc2tlZCwgY29uc3QgY2hhciogcGF5bG9hZCwgc2l6ZV90IHBheWxvYWRMZW5n
dGgpCitXZWJTb2NrZXRGcmFtZTo6V2ViU29ja2V0RnJhbWUoT3BDb2RlIG9wQ29kZSwgYm9vbCBm
aW5hbCwgYm9vbCBjb21wcmVzcywgYm9vbCBtYXNrZWQsIGNvbnN0IHVpbnQ4X3QqIHBheWxvYWQs
IHNpemVfdCBwYXlsb2FkTGVuZ3RoKQogICAgIDogb3BDb2RlKG9wQ29kZSkKICAgICAsIGZpbmFs
KGZpbmFsKQogICAgICwgY29tcHJlc3MoY29tcHJlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCmluZGV4IGRiMTYwZGNmYjFlZTU5
NTVhOWQ1N2ZkYzg3N2I0Zjk0NzNhNTczYTAuLmE3NGNiODI5Yzc1YWVjYTE5MTNmOWY4NDJiYzM5
M2E0N2FkZGMxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRGcmFtZS5oCkBAIC01NiwxMCArNTYsMTAgQEAgc3RydWN0IFdlYlNvY2tldEZy
YW1lIHsKICAgICBzdGF0aWMgYm9vbCBpc0NvbnRyb2xPcENvZGUoT3BDb2RlIG9wQ29kZSkgeyBy
ZXR1cm4gb3BDb2RlID09IE9wQ29kZUNsb3NlIHx8IG9wQ29kZSA9PSBPcENvZGVQaW5nIHx8IG9w
Q29kZSA9PSBPcENvZGVQb25nOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSZXNlcnZlZE9wQ29kZShP
cENvZGUgb3BDb2RlKSB7IHJldHVybiAhaXNOb25Db250cm9sT3BDb2RlKG9wQ29kZSkgJiYgIWlz
Q29udHJvbE9wQ29kZShvcENvZGUpOyB9CiAgICAgc3RhdGljIGJvb2wgbmVlZHNFeHRlbmRlZExl
bmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFyc2VGcmFtZVJl
c3VsdCBwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXZWJTb2NrZXRG
cmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCwgU3RyaW5nJiBlcnJvclN0cmluZyk7IC8vIE1h
eSBtb2RpZnkgcGFydCBvZiBkYXRhIHRvIHVubWFzayB0aGUgZnJhbWUuCisgICAgc3RhdGljIFBh
cnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZSh1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCwgV2ViU29ja2V0RnJhbWUmLCBjb25zdCB1aW50OF90KiYgZnJhbWVFbmQsIFN0cmluZyYgZXJy
b3JTdHJpbmcpOyAvLyBNYXkgbW9kaWZ5IHBhcnQgb2YgZGF0YSB0byB1bm1hc2sgdGhlIGZyYW1l
LgogCi0gICAgV0VCQ09SRV9FWFBPUlQgV2ViU29ja2V0RnJhbWUoT3BDb2RlID0gT3BDb2RlSW52
YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNvbXByZXNzID0gZmFsc2UsIGJvb2wgbWFz
a2VkID0gZmFsc2UsIGNvbnN0IGNoYXIqIHBheWxvYWQgPSBudWxscHRyLCBzaXplX3QgcGF5bG9h
ZExlbmd0aCA9IDApOwotICAgIHZvaWQgbWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hhcj4mIGZyYW1l
RGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgV2ViU29ja2V0RnJhbWUoT3BDb2RlID0gT3BDb2Rl
SW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNvbXByZXNzID0gZmFsc2UsIGJvb2wg
bWFza2VkID0gZmFsc2UsIGNvbnN0IHVpbnQ4X3QqIHBheWxvYWQgPSBudWxscHRyLCBzaXplX3Qg
cGF5bG9hZExlbmd0aCA9IDApOworICAgIHZvaWQgbWFrZUZyYW1lRGF0YShWZWN0b3I8dWludDhf
dD4mIGZyYW1lRGF0YSk7CiAKICAgICBPcENvZGUgb3BDb2RlOwogICAgIGJvb2wgZmluYWw7CkBA
IC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFtZSB7CiAgICAgYm9vbCByZXNlcnZl
ZDI7CiAgICAgYm9vbCByZXNlcnZlZDM7CiAgICAgYm9vbCBtYXNrZWQ7Ci0gICAgY29uc3QgY2hh
ciogcGF5bG9hZDsKKyAgICBjb25zdCB1aW50OF90KiBwYXlsb2FkOwogICAgIHNpemVfdCBwYXls
b2FkTGVuZ3RoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA4NDljZjVmNjI0YmNjMjcyZWU1
ZTdiYzYyNmRhN2U1MDNhZDQ0OTIyLi45ZDExNjk5ZjFhNGI2YzU2NzY3NWI3MWEzMjgzMGMyNDJh
MDU4MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgU3RyaW5n
IGhvc3ROYW1lKGNvbnN0IFVSTCYgdXJsLCBib29sIHNlY3VyZSkKIH0KIAogc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhJbnB1dFNhbXBsZVNpemUgPSAxMjg7Ci1zdGF0aWMgU3RyaW5nIHRyaW1JbnB1
dFNhbXBsZShjb25zdCBjaGFyKiBwLCBzaXplX3QgbGVuKQorc3RhdGljIFN0cmluZyB0cmltSW5w
dXRTYW1wbGUoY29uc3QgdWludDhfdCogcCwgc2l6ZV90IGxlbikKIHsKICAgICBTdHJpbmcgcyA9
IFN0cmluZyhwLCBzdGQ6Om1pbjxzaXplX3Q+KGxlbiwgbWF4SW5wdXRTYW1wbGVTaXplKSk7CiAg
ICAgaWYgKGxlbiA+IG1heElucHV0U2FtcGxlU2l6ZSkKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lk
IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQogICAgIG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5y
ZXNldCgpOwogfQogCi1pbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtl
KGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKK2ludCBXZWJTb2NrZXRIYW5kc2hha2U6
OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgbGVuKQog
ewogICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgaW50IHN0YXR1c0NvZGU7CkBAIC0yNDUs
MTIgKzI0NSwxMiBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtl
KGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKICAgICAgICAgcmV0dXJuIGxlbjsKICAg
ICB9CiAgICAgbV9tb2RlID0gTm9ybWFsOwotICAgIGlmICghc3RybnN0cihoZWFkZXIsICJcclxu
XHJcbiIsIGxlbikpIHsKKyAgICBpZiAoIW1lbW1lbShoZWFkZXIsIGxlbiwgIlxyXG5cclxuIiwg
NCkpIHsKICAgICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiByZWNlaXZlZCBmdWxseSB5ZXQuCiAg
ICAgICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0g
ICAgY29uc3QgY2hhciogcCA9IHJlYWRIVFRQSGVhZGVycyhoZWFkZXIgKyBsaW5lTGVuZ3RoLCBo
ZWFkZXIgKyBsZW4pOworICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSByZWFkSFRUUEhlYWRlcnMoaGVh
ZGVyICsgbGluZUxlbmd0aCwgaGVhZGVyICsgbGVuKTsKICAgICBpZiAoIXApIHsKICAgICAgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRIYW5kc2hha2UgJXAgcmVhZFNlcnZlckhhbmRzaGFrZSgp
IHJlYWRIVFRQSGVhZGVycygpIGZhaWxlZCIsIHRoaXMpOwogICAgICAgICBtX21vZGUgPSBGYWls
ZWQ7IC8vIG1fZmFpbHVyZVJlYXNvbiBpcyBzZXQgaW5zaWRlIHJlYWRIVFRQSGVhZGVycygpLgpA
QCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoZWFkZXJIYXNWYWxpZEhUVFBW
ZXJzaW9uKFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUpCiAvLyBSZXR1cm5zIHRoZSBoZWFkZXIg
bGVuZ3RoIChpbmNsdWRpbmcgIlxyXG4iKSwgb3IgLTEgaWYgd2UgaGF2ZSBub3QgcmVjZWl2ZWQg
ZW5vdWdoIGRhdGEgeWV0LgogLy8gSWYgdGhlIGxpbmUgaXMgbWFsZm9ybWVkIG9yIHRoZSBzdGF0
dXMgY29kZSBpcyBub3QgYSAzLWRpZ2l0IG51bWJlciwKIC8vIHN0YXR1c0NvZGUgYW5kIHN0YXR1
c1RleHQgd2lsbCBiZSBzZXQgdG8gLTEgYW5kIGEgbnVsbCBzdHJpbmcsIHJlc3BlY3RpdmVseS4K
LWludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRl
ciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1Rl
eHQpCitpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCB1aW50OF90
KiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsIGludCYgc3RhdHVzQ29kZSwgU3RyaW5nJiBz
dGF0dXNUZXh0KQogewogICAgIC8vIEFyYml0cmFyeSBzaXplIGxpbWl0IHRvIHByZXZlbnQgdGhl
IHNlcnZlciBmcm9tIHNlbmRpbmcgYW4gdW5ib3VuZGVkCiAgICAgLy8gYW1vdW50IG9mIGRhdGEg
d2l0aCBubyBuZXdsaW5lcyBhbmQgZm9yY2luZyB1cyB0byBidWZmZXIgaXQgYWxsLgpAQCAtMzcx
LDkgKzM3MSw5IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNMaW5lKGNvbnN0
IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwKICAgICBzdGF0dXNDb2RlID0gLTE7
CiAgICAgc3RhdHVzVGV4dCA9IFN0cmluZygpOwogCi0gICAgY29uc3QgY2hhciogc3BhY2UxID0g
bnVsbHB0cjsKLSAgICBjb25zdCBjaGFyKiBzcGFjZTIgPSBudWxscHRyOwotICAgIGNvbnN0IGNo
YXIqIHA7CisgICAgY29uc3QgdWludDhfdCogc3BhY2UxID0gbnVsbHB0cjsKKyAgICBjb25zdCB1
aW50OF90KiBzcGFjZTIgPSBudWxscHRyOworICAgIGNvbnN0IHVpbnQ4X3QqIHA7CiAgICAgc2l6
ZV90IGNvbnN1bWVkTGVuZ3RoOwogCiAgICAgZm9yIChwID0gaGVhZGVyLCBjb25zdW1lZExlbmd0
aCA9IDA7IGNvbnN1bWVkTGVuZ3RoIDwgaGVhZGVyTGVuZ3RoOyBwKyssIGNvbnN1bWVkTGVuZ3Ro
KyspIHsKQEAgLTM5Nyw3ICszOTcsNyBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3Rh
dHVzTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsCiAgICAgaWYg
KGNvbnN1bWVkTGVuZ3RoID09IGhlYWRlckxlbmd0aCkKICAgICAgICAgcmV0dXJuIC0xOyAvLyBX
ZSBoYXZlIG5vdCByZWNlaXZlZCAnXG4nIHlldC4KIAotICAgIGNvbnN0IGNoYXIqIGVuZCA9IHAg
KyAxOworICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHAgKyAxOwogICAgIGludCBsaW5lTGVuZ3Ro
ID0gZW5kIC0gaGVhZGVyOwogICAgIGlmIChsaW5lTGVuZ3RoID4gbWF4aW11bUxlbmd0aCkgewog
ICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU3RhdHVzIGxpbmUgaXMgdG9vIGxvbmciX3M7CkBA
IC00MTUsMTMgKzQxNSwxMyBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGlu
ZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsCiAgICAgICAgIHJldHVy
biBsaW5lTGVuZ3RoOwogICAgIH0KIAotICAgIFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGhlYWRlciksIHNwYWNlMSAtIGhlYWRlcik7Cisg
ICAgU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZShoZWFkZXIsIHNwYWNlMSAtIGhlYWRlcik7CiAg
ICAgaWYgKCFoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKGh0dHBTdGF0dXNMaW5lKSkgewogICAg
ICAgICBtX2ZhaWx1cmVSZWFzb24gPSBtYWtlU3RyaW5nKCJJbnZhbGlkIEhUVFAgdmVyc2lvbiBz
dHJpbmc6ICIsIGh0dHBTdGF0dXNMaW5lKTsKICAgICAgICAgcmV0dXJuIGxpbmVMZW5ndGg7CiAg
ICAgfQogCi0gICAgU3RyaW5nVmlldyBzdGF0dXNDb2RlU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihzcGFjZTEgKyAxKSwgc3BhY2UyIC0gc3BhY2UxIC0gMSk7CisgICAgU3Ry
aW5nVmlldyBzdGF0dXNDb2RlU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEp
OwogICAgIGlmIChzdGF0dXNDb2RlU3RyaW5nLmxlbmd0aCgpICE9IDMpIC8vIFN0YXR1cyBjb2Rl
IG11c3QgY29uc2lzdCBvZiB0aHJlZSBkaWdpdHMuCiAgICAgICAgIHJldHVybiBsaW5lTGVuZ3Ro
OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CkBAIC00MzYsMTQgKzQzNiwxNCBA
QCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFk
ZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsCiAgICAgcmV0dXJuIGxpbmVMZW5ndGg7CiB9CiAKLWNv
bnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCitjb25zdCB1aW50OF90KiBXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCB1aW50OF90KiBzdGFydCwgY29uc3QgdWludDhfdCog
ZW5kKQogewogICAgIFN0cmluZ1ZpZXcgbmFtZTsKICAgICBTdHJpbmcgdmFsdWU7CiAgICAgYm9v
bCBzYXdTZWNXZWJTb2NrZXRFeHRlbnNpb25zSGVhZGVyRmllbGQgPSBmYWxzZTsKICAgICBib29s
IHNhd1NlY1dlYlNvY2tldEFjY2VwdEhlYWRlckZpZWxkID0gZmFsc2U7CiAgICAgYm9vbCBzYXdT
ZWNXZWJTb2NrZXRQcm90b2NvbEhlYWRlckZpZWxkID0gZmFsc2U7Ci0gICAgY29uc3QgY2hhciog
cCA9IHN0YXJ0OworICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBzdGFydDsKICAgICBmb3IgKDsgcCA8
IGVuZDsgcCsrKSB7CiAgICAgICAgIHNpemVfdCBjb25zdW1lZExlbmd0aCA9IHBhcnNlSFRUUEhl
YWRlcihwLCBlbmQgLSBwLCBtX2ZhaWx1cmVSZWFzb24sIG5hbWUsIHZhbHVlKTsKICAgICAgICAg
aWYgKCFjb25zdW1lZExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAppbmRleCBlYWY4YTVjMDZhZDIwNThkM2Qz
ODk1MTM1MjM5OTZmNmJlM2UwZGQzLi41ZTY0YzE4MzRmNmU4MzYxNGQzMDFjNGZlZGQzOWQ4ODNj
YWQ3YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgcmVzZXQoKTsKIAotICAgIGludCByZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhl
YWRlciwgc2l6ZV90IGxlbik7CisgICAgaW50IHJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgdWlu
dDhfdCogaGVhZGVyLCBzaXplX3QgbGVuKTsKICAgICBNb2RlIG1vZGUoKSBjb25zdDsKICAgICBT
dHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0OyAvLyBSZXR1cm5zIGEgc3RyaW5nIGluZGljYXRp
bmcgdGhlIHJlYXNvbiBvZiBmYWlsdXJlIGlmIG1vZGUoKSA9PSBGYWlsZWQuCiAKQEAgLTg3LDEw
ICs4NywxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAgICBpbnQgcmVhZFN0YXR1c0xpbmUo
Y29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLCBpbnQmIHN0YXR1c0NvZGUs
IFN0cmluZyYgc3RhdHVzVGV4dCk7CisgICAgaW50IHJlYWRTdGF0dXNMaW5lKGNvbnN0IHVpbnQ4
X3QqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50JiBzdGF0dXNDb2RlLCBTdHJpbmcm
IHN0YXR1c1RleHQpOwogCiAgICAgLy8gUmVhZHMgYWxsIGhlYWRlcnMgZXhjZXB0IGZvciB0aGUg
dHdvIHByZWRlZmluZWQgb25lcy4KLSAgICBjb25zdCBjaGFyKiByZWFkSFRUUEhlYWRlcnMoY29u
c3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCk7CisgICAgY29uc3QgdWludDhfdCogcmVh
ZEhUVFBIZWFkZXJzKGNvbnN0IHVpbnQ4X3QqIHN0YXJ0LCBjb25zdCB1aW50OF90KiBlbmQpOwog
ICAgIHZvaWQgcHJvY2Vzc0hlYWRlcnMoKTsKICAgICBib29sIGNoZWNrUmVzcG9uc2VIZWFkZXJz
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDBi
ZjJhYTlhMTBiMjJlMTE1YTMyZjI1MTRhN2Q3ZWI1MDZiNTk4MWEuLmIzZjMxMDk1YWFhOWFlODM5
NGZiOTg1OWM2ZGY0OGIyY2I5ZjA4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtNDQ3LDEwICs0NDcsMTAgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZToKICAgICBpZiAoIW1fcGVlcikKICAgICAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kRmFpbDsKIAotICAgIC8vIEFycmF5QnVmZmVyIGlzbid0IHRocmVhZC1zYWZl
LCBoZW5jZSB0aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBpcyBjb3BpZWQgaW50byBWZWN0b3I8
Y2hhcj4uCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEoYnl0ZUxlbmd0aCk7CisgICAgLy8gQXJyYXlC
dWZmZXIgaXNuJ3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRoZSBjb250ZW50IG9mIEFycmF5QnVmZmVy
IGlzIGNvcGllZCBpbnRvIFZlY3Rvcjx1aW50OF90Pi4KKyAgICBWZWN0b3I8dWludDhfdD4gZGF0
YShieXRlTGVuZ3RoKTsKICAgICBpZiAoYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkpCi0gICAgICAg
IG1lbWNweShkYXRhLmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJpbmFyeURhdGEu
ZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOworICAgICAgICBtZW1jcHkoZGF0YS5k
YXRhKCksIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBi
eXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKIAog
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IG1fcGVlciwgZGF0YSA9
IFdURk1vdmUoZGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKaW5k
ZXggMjgzN2FjZjllZWY5NGRiYzhiZjhhMDMzOTIzNzEyM2M5ZGU2YzVlMi4uOTZmNjViZGQ0Y2U3
OWJiYTg4NmQ5OWExYzY2MjRmZmJlNGYxMzAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgbmFt
ZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBib29sIHdy
aXRlQWxsVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCBU
JiBjb250YWluZXIpCiB7Ci0gICAgY29uc3QgY2hhciogYnl0ZXMgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihjb250YWluZXIuZGF0YSgpKTsKKyAgICBjb25zdCB1aW50OF90KiBieXRl
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNvbnRhaW5lci5kYXRhKCkpOwog
ICAgIHNpemVfdCBieXRlc0xlbmd0aCA9IGNvbnRhaW5lci5zaXplKCkgKiBzaXplb2YoY29udGFp
bmVyWzBdKTsKLSAgICBjb25zdCBjaGFyKiBlbmQgPSBieXRlcyArIGJ5dGVzTGVuZ3RoOworICAg
IGNvbnN0IHVpbnQ4X3QqIGVuZCA9IGJ5dGVzICsgYnl0ZXNMZW5ndGg7CiAgICAgd2hpbGUgKGJ5
dGVzIDwgZW5kKSB7CiAgICAgICAgIGF1dG8gd3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKGZpbGUsIGJ5dGVzLCBieXRlc0xlbmd0aCk7CiAgICAgICAgIGlmICh3cml0dGVuID09IC0x
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAppbmRleCA3NjY0YzA2OWYxNDlm
YmVlNmQxYjU0NzE2Mjg2MTk4MmQ2MTg5YTk4Li44NjQzODcwZGQwZTgxMjJkYTE4Mzg5YmJjYWU4
NTdkYTdlMzJlMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5
cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcApAQCAt
MTEyMyw3ICsxMTIzLDcgQEAgdm9pZCBTdWJ0bGVDcnlwdG86OnVud3JhcEtleShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBzdGF0ZSwgS2V5Rm9ybWF0IGZvcm1hdCwgQnVmZmUKICAgICAgICAgICAgICAg
ICAgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIGp3a1N0cmluZyhyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBjaGFyKj4oYnl0ZXMuZGF0
YSgpKSwgYnl0ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGp3a1N0cmlu
ZyhieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGp3a09iamVjdCA9
IEpTT05QYXJzZSgmc3RhdGUsIGp3a1N0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
andrT2JqZWN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1Nlcmlh
bGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJp
YWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCAyZDIxNDRmMGFjNTk2ZTM5OTY0NWQxNzAz
YTg2OTJlYTM1YmEzNjQ3Li5kMjk5MDlhMzQ5N2RjNGE0OWE3YWYwZDZkMzI0OTQ5OGQxNzI1NmQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9L
ZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENy
eXB0b0tleVdyYXBNYWMubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGZpbmRNYXN0ZXJLZXkoKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBrZXlEYXRhID0gYWRvcHRD
RihrZXlEYXRhUmVmKTsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoa2V5RGF0YS5nZXQoKSkpLCBDRkRhdGFHZXRM
ZW5ndGgoa2V5RGF0YS5nZXQoKSkpOworICAgIHJldHVybiBiYXNlNjREZWNvZGUoQ0ZEYXRhR2V0
Qnl0ZVB0cihrZXlEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtleURhdGEuZ2V0KCkpKTsK
IH0KIAogc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRXZWJDcnlwdG9NYXN0
ZXJLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1l
bnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJz
ZXIuY3BwCmluZGV4IGVkODU2NjQ3YTM5OWQ2NWIwODExMTdiODY5MDQxNWQyNDI5YWY3NzAuLjdi
MmI0NTAzMWNiNTA1M2NiNjQ1NmQ4ZWM2NGQ4YmNjN2UwNjRlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6RGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcihE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAKLXZvaWQgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
cjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImIHdyaXRlciwgY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCkKK3ZvaWQgRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0
ZXMoRG9jdW1lbnRXcml0ZXImIHdyaXRlciwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmgKaW5kZXggYmJiMDZhM2U4YTdk
ZDAxZmRmMWQyZjkxY2ZmNDUxMGJkNGU2N2QxNi4uOTU1ODJhMGQ2OTM5MGIyYTUxNjIzNWVlNjNm
YmZiYzMwYzViZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRh
RG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1
bWVudFBhcnNlci5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmQo
UmVmUHRyPFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIGFwcGVuZEJ5dGVz
IGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVudFdyaXRlciAodGhlIGxvYWRlcikuCi0gICAg
dm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVy
JiwgY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZmx1c2goRG9jdW1lbnRXcml0ZXImKSBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50UGFyc2VyLmgKaW5kZXggOWNiZTkyYTMyN2ZkMjUyZThlZTAzMjQ5OTNkNzUyNDJhZTVm
NTBjNy4uN2M0YzNkMmU3ZGNlOGM5OTc1MDBhNGU2ZGI1OWQwMGRiYTZhMDczOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50UGFyc2VyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYpID0gMDsKIAogICAgIC8vIGFwcGVu
ZEJ5dGVzIGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVudFdyaXRlciAodGhlIGxvYWRlciku
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hh
ciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQnl0
ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaChEb2N1bWVudFdyaXRlciYpID0gMDsKIAogICAg
IC8vIEZJWE1FOiBhcHBlbmQoKSBzaG91bGQgYmUgcHJpdmF0ZSwgYnV0IERvY3VtZW50V3JpdGVy
OjpyZXBsYWNlRG9jdW1lbnQgdXNlcyBpdCBmb3Igbm93LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jh
d0RhdGFEb2N1bWVudFBhcnNlci5oCmluZGV4IDA5NGVjODdmNjVhYzI3NWI1N2IwODFkMGJjMjJk
ZTVmYmI5YWQ4OTcuLmRlMzg5OTIxYWM2ZGMwZTAwY2U0Njk5YjQ3NjhiYmE4Y2VhZDdiZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoKERvY3VtZW50V3JpdGVyJiB3cml0ZXIpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICAvLyBNYWtlIHN1cmUgYXBwZW5kQnl0ZXMgaXMgY2FsbGVk
IGF0IGxlYXN0IG9uY2UuCi0gICAgICAgIGFwcGVuZEJ5dGVzKHdyaXRlciwgMCwgMCk7CisgICAg
ICAgIGFwcGVuZEJ5dGVzKHdyaXRlciwgbnVsbHB0ciwgMCk7CiAgICAgfQogCiAgICAgdm9pZCBp
bnNlcnQoU2VnbWVudGVkU3RyaW5nJiYpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURv
Y3VtZW50LmNwcAppbmRleCA0NTM4Y2Y3NjkwNTEyMDljYTM5OTI3MmMwZDlhYzgyNjM3ZmQxZjRl
Li5mYTliZGFmMjIxMTdhN2MxODdhYzBiZmY4YjYzMDczMTgxMDg0N2VlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKIAogICAg
IEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIGFwcGVuZEJ5dGVz
KERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVfdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92
ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGU7CiB9OwogCkBAIC0xODcsNyArMTg3
LDcgQEAgaW5saW5lIEltYWdlRG9jdW1lbnQmIEltYWdlRG9jdW1lbnRQYXJzZXI6OmRvY3VtZW50
KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VEb2N1bWVudD4oKlJhd0RhdGFEb2N1
bWVudFBhcnNlcjo6ZG9jdW1lbnQoKSk7CiB9CiAKLXZvaWQgSW1hZ2VEb2N1bWVudFBhcnNlcjo6
YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KQordm9pZCBJ
bWFnZURvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpCiB7CiAgICAgZG9jdW1lbnQoKS51cGRhdGVEdXJpbmdQYXJzaW5nKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAppbmRleCA3Y2IzOWVkNTY3OTg2
Zjk4OWRmOGYyZmYwNjBhNGJlNmI1Mjk1NGU1Li5lOWU5MDNhZmViN2U0ODdjZGIxMjZlYTI3Mjk3
N2M2ZDY2YmZkNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTc1
LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmRCeXRl
cyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQg
YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5h
bDsKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCk7CiAKICAgICBIVE1MTWVkaWFF
bGVtZW50KiBtX21lZGlhRWxlbWVudCB7IG51bGxwdHIgfTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2
b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICBm
cmFtZS0+bG9hZGVyKCkuc2V0T3V0Z29pbmdSZWZlcnJlcihkb2N1bWVudC5jb21wbGV0ZVVSTCht
X291dGdvaW5nUmVmZXJyZXIpKTsKIH0KIAotdm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjphcHBl
bmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXplX3QpCit2b2lkIE1lZGlh
RG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhf
dCosIHNpemVfdCkKIHsKICAgICBpZiAobV9tZWRpYUVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggZDU4ODJmYjI4NTVkOTc4
ZDM0MTYxYjQ1Y2FkZmQzMTBjNjAyMGZhMC4uZTNhM2RhNmZmMjQ3MTliZmM5NzUyZGZlNTUzYTE2
Mzc2NGRlNmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmRCeXRl
cyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQg
YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5h
bDsKICAgICB2b2lkIGNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCk7CiAKICAgICBIVE1MRW1iZWRF
bGVtZW50KiBtX2VtYmVkRWxlbWVudCB7IG51bGxwdHIgfTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2
b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAg
ZG9jdW1lbnQuc2V0SGFzVmlzdWFsbHlOb25FbXB0eUN1c3RvbUNvbnRlbnQoKTsKIH0KIAotdm9p
ZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25z
dCBjaGFyKiwgc2l6ZV90KQordm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMo
RG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KQogewogICAgIGlmIChtX2Vt
YmVkRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggMTBkNzE4MmUyMjhhMTRjOGY0MmM3MmE2ZGQzNzAwNjAx
OTYxZWJmZi4uYmIxMmMxNTlkZTc0ZjkyOTQ1MzY5NTQxZDc4NzJlNmM1YzFhY2I0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCkBAIC04Miw3ICs4Miw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUm
KSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIHBhcnNlV2Vi
VlRURmlsZUhlYWRlcihTdHJpbmcmJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQotICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCkgb3Zl
cnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVE
YXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYmKSBvdmVy
cmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBNZWRpYVRpbWUgc3RhcnRUaW1l
VmFyaWFuY2UoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCAwNWQ3NTEwMWI1YzFiODFiYzZl
OWQ0MjIzZDU4OWUxNzEwZjg4MDNjLi5hMjIyOGJjMTdlYTM1NmY2MDUyMjhjNTRlY2UzNzBkYzRm
Y2Q0OTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZU
VFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJW
VFRUZXh0VHJhY2suY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYlZUVFBhcnNlciYgSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpwYXJzZXIoKQogICAgIHJldHVybiAqbV93ZWJWVFRQYXJzZXI7CiB9CiAK
LXZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OnBh
cnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7
CiAgICAgcGFyc2VyKCkucGFyc2VCeXRlcyhkYXRhLCBsZW5ndGgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgKaW5kZXggODRlZTBl
NTc0MGRjNjM3NzMyZGUzOGEyOGMzOTkyZTc2M2EyY2Y0OS4uMzE1MjM1NzI5YjVmYmQ5OWY2MzRm
YTdkNmM3NzZjMjdiYzZjMWM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFdlYlZUVFRleHRUcmFjay5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAg
SW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgV2ViVlRUUGFyc2VyJiBwYXJzZXIoKTsKLSAgICB2
b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
IGZpbmFsOworICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoSVNP
V2ViVlRUQ3VlJiYpIGZpbmFsOwogCiAgICAgdm9pZCBuZXdDdWVzUGFyc2VkKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggOWYxZDJkNGJi
YjVmN2Q3MjNlNDIzM2E1ZDE2ZTQyMjdjMzkxN2IxMS4uZDUzY2E2YTNiN2U2ZGVkMGRjNzE3ZWY1
ZjU4ODUwN2FjNzU5M2FlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFy
c2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpwYXJzZUZpbGVI
ZWFkZXIoU3RyaW5nJiYgZGF0YSkKICAgICBwYXJzZSgpOwogfQogCi12b2lkIFdlYlZUVFBhcnNl
cjo6cGFyc2VCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIFdl
YlZUVFBhcnNlcjo6cGFyc2VCeXRlcyhjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpCiB7CiAgICAgbV9saW5lUmVhZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBs
ZW5ndGgpKTsKICAgICBwYXJzZSgpOwpAQCAtMjI1LDcgKzIyNSw4IEBAIHZvaWQgV2ViVlRUUGFy
c2VyOjpwYXJzZSgpCiB2b2lkIFdlYlZUVFBhcnNlcjo6ZmlsZUZpbmlzaGVkKCkKIHsKICAgICBB
U1NFUlQobV9zdGF0ZSAhPSBGaW5pc2hlZCk7Ci0gICAgcGFyc2VCeXRlcygiXG5cbiIsIDIpOwor
ICAgIGNvbnN0IHVpbnQ4X3QgZW5kTGluZXNbXSA9ICJcblxuIjsKKyAgICBwYXJzZUJ5dGVzKGVu
ZExpbmVzLCAyKTsKICAgICBtX3N0YXRlID0gRmluaXNoZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCmluZGV4IGZhMzNhMmNmMGUzZjA2ODQ5YjcwYWZlYTMw
N2I4MzY5ZmUzMWJiNmMuLjEyODU1MjA5MTc0Mzg1ZDA1MjA4ZGM3YTQwNGRiYWEzMWZmMDY3NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaApAQCAtMTQzLDcgKzE0
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYXJzZUZsb2F0UGVyY2VudGFnZVZhbHVl
UGFpcihWVFRTY2FubmVyJiB2YWx1ZVNjYW5uZXIsIGNoYXIsIEZsb2F0UG9pbnQmKTsKIAogICAg
IC8vIElucHV0IGRhdGEgdG8gdGhlIHBhcnNlciB0byBwYXJzZS4KLSAgICB2b2lkIHBhcnNlQnl0
ZXMoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKKyAgICB2b2lkIHBhcnNlQnl0ZXMoY29uc3QgdWlu
dDhfdCosIHVuc2lnbmVkKTsKICAgICB2b2lkIHBhcnNlRmlsZUhlYWRlcihTdHJpbmcmJik7CiAg
ICAgdm9pZCBwYXJzZUN1ZURhdGEoY29uc3QgSVNPV2ViVlRUQ3VlJik7CiAgICAgdm9pZCBmbHVz
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXggYmZkYzJi
MmIxZDc5MzJiNWU0ZjAwMDgzMjg5YzA1MDQ3NzdlYTI2Zi4uMGU0MGQ5NTBhMjdkNjMyZjQyMDk0
MTRkMmVhMDQ3Yjg0YjMyYTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0
ZXIuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6cmVwb3J0RGF0
YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZXNvbHZlU3R5bGUoRG9jdW1l
bnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQogCi12b2lkIERvY3VtZW50V3JpdGVy
OjphZGREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVu
dFdyaXRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VSVCBvbmNlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQyNyBoYXMgYmVlbiByZXNvbHZlZC4KICAgICBS
RUxFQVNFX0FTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpOb3RTdGFydGVkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggODVjMGEzODZjZGMyMTQ3MjcwNGFjYjljMGY0
ZjJkNjA0ODkxMDI5Zi4uNzBmZDIwYzEzNzNhYzBkYzliNDQ0OTU0YzNhMjA0MDZmMjFiOGM4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTQ3LDggKzQ3LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBiZWdpbigpOwogICAgIGJvb2wgYmVnaW4oY29uc3QgVVJMJiwg
Ym9vbCBkaXNwYXRjaFdpbmRvd09iamVjdEF2YWlsYWJsZSA9IHRydWUsIERvY3VtZW50KiBvd25l
ckRvY3VtZW50ID0gbnVsbHB0cik7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGJ5dGVz
LCBzaXplX3QgbGVuZ3RoKTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMs
IHNpemVfdCBsZW5ndGgpIHsgYWRkRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihi
eXRlcyksIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMs
IHNpemVfdCBsZW5ndGgpOwogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHkoY29uc3Qg
U3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRoZSBwYXJz
ZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmluZGV4IGE2YzI2ODkyZGE2MTRjNTEwZjQw
NWM2ODhkY2FmY2U4ODExMzRkNDIuLmE2ODcxMWY2YzIxOWY3YTQ4YWIzYTZlMTZmNTVlYjBlNjQw
NWZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCkBAIC00OCw3ICs0
OCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgLy8gSWdub3JlIGFsbCBkYXRhLgotICAgIHZv
aWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KSBvdmVy
cmlkZQorICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSBvdmVycmlkZQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCBkZDg4OTM1ZGFiNjQ1YjUwYzkwOGE1MmY5ZDdm
MTgwZGIxZmUyMDllLi44Y2MzYzU2OGM0Mzc5NmFjNjFiMzA5NzU0N2E4OWVmODEyZDk4ZDRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtOTQsNyArOTQs
NyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlKQogCiAgICAgd2hpbGUgKG1fcGFyc2VPZmZzZXQgPCBidWZmZXItPnNpemUo
KSkgewogICAgICAgICBhdXRvIGRhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKG1fcGFyc2VPZmZz
ZXQpOwotICAgICAgICBtX2N1ZVBhcnNlci0+cGFyc2VCeXRlcyhkYXRhLmRhdGFBc0NoYXJQdHIo
KSwgZGF0YS5zaXplKCkpOworICAgICAgICBtX2N1ZVBhcnNlci0+cGFyc2VCeXRlcyhkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX3BhcnNlT2Zmc2V0ICs9IGRhdGEuc2l6ZSgp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZDRjYWY0ZDVmOWVhNzY2YzYwMDBmOGZm
NzM2YzI0N2MxMzIzYjNkMC4uZjI2NGYxZGQ3MTIzZDY5MmM2NTdmMWVjZTE0OTk0YzQxOTYzMzQ1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0K
ICAgICAKLSAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Qo
bV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCks
IG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGFBc0NoYXJQdHIoKSwgbV9tYW5pZmVzdFJl
c291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNw
b25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9t
YW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAg
ICAgICAgIC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFO
SUZFU1QiIHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8g
ZmFpbC4KICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBD
YWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FD
SEUgTUFOSUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKaW5kZXgg
YzhhOWJiZGUzZTM3ZGEwNTc3ZTkwNDFlMTk5NjNlNDRmMWEyNTMyYS4uYjg3ZGQ4MzUwNjA3YzI0
YmUyNTZlMzQ0MWJlZDJkMzc2N2UwOTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNl
ci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RhdGljIGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIGNhY2hlTW9kZUlkZW50aWYKIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBm
YWxsYmFja01vZGVJZGVudGlmaWVyW10gPSB7ICdGJywgJ0EnLCAnTCcsICdMJywgJ0InLCAnQScs
ICdDJywgJ0snIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29u
c3RleHByIENoYXJhY3RlclR5cGUgbmV0d29ya01vZGVJZGVudGlmaWVyW10gPSB7ICdOJywgJ0Un
LCAnVCcsICdXJywgJ08nLCAnUicsICdLJyB9OwogCi1zdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9u
Q2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBt
YW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+
IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNv
bnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIgY2FjaGVNYW5pZmVzdE1J
TUVUeXBlW10gPSAidGV4dC9jYWNoZS1tYW5pZmVzdCI7CiAgICAgYm9vbCBhbGxvd0ZhbGxiYWNr
TmFtZXNwYWNlT3V0c2lkZU1hbmlmZXN0UGF0aCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1hbmlmZXN0TUlNRVR5cGUsIGNhY2hlTWFuaWZlc3RNSU1FVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0UGFyc2VyLmgKaW5kZXggMGJmOWY5ZjE2YTVhZjY5ZmNhZmEwMTY5ZDllNjY0NDFi
MWY5Zjg2Mi4uNzAwYzFiYzhlY2NjZTk4ZDgzODkxMDg0MTJkNTMxMTFmMTZkNWZjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuaApAQCAtNDEsNiArNDEsNiBAQCBzdHJ1Y3QgQXBwbGlj
YXRpb25DYWNoZU1hbmlmZXN0IHsKICAgICBib29sIGFsbG93QWxsTmV0d29ya1JlcXVlc3RzIHsg
ZmFsc2UgfTsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09SSyBzZWN0aW9uLgogfTsKIAotc3Rk
OjpvcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RN
SU1FVHlwZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CitzdGQ6Om9wdGlvbmFsPEFw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29u
c3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgU3RyaW5nJiBtYW5pZmVzdE1JTUVUeXBlLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCA1Y2RlOWI3ZjExYjg3ZTkw
OTNkZjhlZGI2MWVhZWFkZGQwMGViODY0Li43ZGMzMWM3MzkyY2NlZWVlYmIyNjNiMjRhOWEzMmQ3
MzFkZDBhODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTIz
LDcgKzEyMyw2IEBAIHB1YmxpYzoKICAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogICAgIHB1YmxpYzoKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBjb25zdCBj
aGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSgpKTsgfQogICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgp
IGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcAppbmRleCA3OTExY2EyYjc3NTc0ZGVmOWRj
NGUxYzMyMjM2MGQyZjk1MzdjMjI5Li45YWFlOWU4MWFiNDFkNTQ3NDY4MTU0MDM1MTc4NjBmYWQz
M2NlN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9GaWxlUmVhZGVySU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9GaWxlUmVhZGVySU9TLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIE9TU3RhdHVzIEF1
ZGlvRmlsZVJlYWRlcjo6cmVhZFByb2Modm9pZCogY2xpZW50RGF0YSwgU0ludDY0IHBvc2l0aW9u
LCBVSW50MzIgcmVxCiAgICAgaWYgKHN0YXRpY19jYXN0PFVJbnQ2ND4ocG9zaXRpb24pIDwgZGF0
YVNpemUpIHsKICAgICAgICAgc2l6ZV90IGJ5dGVzQXZhaWxhYmxlID0gZGF0YVNpemUgLSBzdGF0
aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKTsKICAgICAgICAgYnl0ZXNUb1JlYWQgPSByZXF1ZXN0
Q291bnQgPD0gYnl0ZXNBdmFpbGFibGUgPyByZXF1ZXN0Q291bnQgOiBieXRlc0F2YWlsYWJsZTsK
LSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpICsg
cG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKICAgICB9
CiAKICAgICBpZiAoYWN0dWFsQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCmluZGV4IDc1Y2RjMGZhODIx
NDQwMzk4YTczYmE3ODIxNGVmMjZmNjE2MDBmMzcuLjVhYTc4OWEyY2M2MmZlYmRjMDFjYzM1YTNm
N2U1NjgxZTM3ZTE5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBAIC05OCw3ICs5OCw3IEBAIE9TU3Rh
dHVzIEF1ZGlvRmlsZVJlYWRlcjo6cmVhZFByb2Modm9pZCogY2xpZW50RGF0YSwgU0ludDY0IHBv
c2l0aW9uLCBVSW50MzIgcmVxCiAgICAgaWYgKHN0YXRpY19jYXN0PFVJbnQ2ND4ocG9zaXRpb24p
IDwgZGF0YVNpemUpIHsKICAgICAgICAgc2l6ZV90IGJ5dGVzQXZhaWxhYmxlID0gZGF0YVNpemUg
LSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKTsKICAgICAgICAgYnl0ZXNUb1JlYWQgPSBy
ZXF1ZXN0Q291bnQgPD0gYnl0ZXNBdmFpbGFibGUgPyByZXF1ZXN0Q291bnQgOiBieXRlc0F2YWls
YWJsZTsKLSAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpICsgcG9zaXRpb24sIGJ5dGVzVG9SZWFkKTsK
ICAgICB9IGVsc2UKICAgICAgICAgYnl0ZXNUb1JlYWQgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQ2xpZW50LmgKaW5kZXggNWU1ZDM5ODBiODA0YWY0MmI4NTBjNWJlZjI4MzRlNTAxNmZmMWRk
OS4uOTU0ZTU0MWQxOGZiMWEzN2YyZDA3NWZjNmY0ZThlYTlkOGUzYzMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRU
cmFja1ByaXZhdGVDbGllbnQuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdl
YlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJWVFRDdWUmJikgPSAwOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5k
ZXggMDUwMjI0NDFmZmUxZjI3NThkZWYzN2Q4NGI2YmM4N2UxOWYyMjAxMC4uMGRkMDFiZTdhN2Y4
MzUxNjYxMWIyYmYxMzhhNmYyZjIwZjg1YTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHByb2Nlc3NOYXRpdmVTYW1wbGVzKENGQXJyYXlSZWYsIGNvbnN0IE1lZGlhVGltZSYp
OwogICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkQ3VlcygpOwogCi0gICAgVmVjdG9yPGNoYXI+IG1f
c2FtcGxlSW5wdXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fc2FtcGxlSW5wdXRCdWZm
ZXI7CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDBkZWE4MGUyYmNhNDc4ZWQ0YzAyYWUxYTBi
MDU2NTRiODRkMjlkNTAuLmExNjFjNDdjNTBkYjgyODQ3ZTZmZjJkNjg1MjhiZDhjY2M3MjJkNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC00MTcsNyArNDE3
LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29k
ZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgbV9l
b3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29k
ZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhQXNDaGFyUHRyKCksIHNpemUg
PSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0g
YnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdT
dHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAg
ICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDFkMWZjZTZhZGNkNmI5YmU5
NjNjZjUxNGJkMTI1MWE5NjY4OTQ3MDguLjUyZGE3M2Q4YmJhY2VjZTA1ZWIyNGQ1NmM4ZGM4ZjE5
NjI2YjVjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAgLTg0LDEy
ICs4NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5uZXJEZWNvZGVyKTsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBSZWZQdHI8SW5uZXJEZWNvZGVyPiBjcmVhdGUoSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyJiBkZWNvZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBnc3NpemUgc2l6ZSkKKyAgICAgICAg
c3RhdGljIFJlZlB0cjxJbm5lckRlY29kZXI+IGNyZWF0ZShJbWFnZURlY29kZXJHU3RyZWFtZXIm
IGRlY29kZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGdzc2l6ZSBzaXplKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbm5lckRlY29kZXIoZGVjb2RlciwgZGF0
YSwgc2l6ZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgSW5uZXJEZWNvZGVyKEltYWdlRGVjb2Rl
ckdTdHJlYW1lciYgZGVjb2RlciwgY29uc3QgY2hhciogZGF0YSwgZ3NzaXplIHNpemUpCisgICAg
ICAgIElubmVyRGVjb2RlcihJbWFnZURlY29kZXJHU3RyZWFtZXImIGRlY29kZXIsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGdzc2l6ZSBzaXplKQogICAgICAgICAgICAgOiBtX2RlY29kZXIoZGVjb2Rl
cikKICAgICAgICAgICAgICwgbV9ydW5Mb29wKFJ1bkxvb3A6OmN1cnJlbnQoKSkKICAgICAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IGVhOGUxMDcyYTk3MWY3MTIxNzE3MGI2MTNlN2FlNzY4YmFlZGZlYzYuLjRjMWNi
OGFjOTY2NWFlYmM3MWNkODIwYWJhYzM0ZDg4NzI1NDMxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZT
YW1wbGUoKQogCiAgICAgICAgIEdTVF9JTkZPKCJUcmFjayAlZCBwYXJzaW5nIHNhbXBsZTogJS4q
cyIsIG1faW5kZXgsIHN0YXRpY19jYXN0PGludD4obWFwcGVkQnVmZmVyLnNpemUoKSksCiAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihtYXBwZWRCdWZmZXIuZGF0YSgpKSk7Ci0g
ICAgICAgIGNsaWVudCgpLT5wYXJzZVdlYlZUVEN1ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4obWFwcGVkQnVmZmVyLmRhdGEoKSksIG1hcHBlZEJ1ZmZlci5zaXplKCkpOworICAgICAgICBj
bGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKG1hcHBlZEJ1ZmZlci5kYXRhKCksIG1hcHBlZEJ1
ZmZlci5zaXplKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlw
ZS5jcHAKaW5kZXggZmVmNjY1MTI4YWM5MGMxYjAwYTM3Yjg4ODczZWQ3MTE3NGIwNzc3NC4uMzMw
MjhhNWU5NGM5Y2U3MDRhMTM4ZjAzYjkzNGRjMTFlMjlkZTM0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29z
aWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoc2l6ZSwgbmF0aXZlSW1hZ2UtPmhh
c0FscGhhKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6
Tm9GbGFnKTsKICNpZiBVU0UoQ0FJUk8pCiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZh
Y2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwotICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byogaW1hZ2VEYXRhID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKTsK
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2VEYXRhLCBJ
bnRSZWN0KEludFBvaW50KCksIHNpemUpLCBJbnRQb2ludCgpLCBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9zdHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCA0YjhhZTZhMGNk
ODU0NmRlZjY2Zjc0YjlmNjk3NjIzYWUyNGQ0MGEwLi42ZDAzODYzYjM2NmMyNDVmNDQyZjc0Mzkz
NzE5YWJlYWRhNWM0YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0zNDgs
NyArMzQ4LDcgQEAgYm9vbCBnZXRFT1RIZWFkZXIoU2hhcmVkQnVmZmVyKiBmb250RGF0YSwgRU9U
SGVhZGVyJiBlb3RIZWFkZXIsIHNpemVfdCYgb3ZlcmxheUQKIAogLy8gYWRkcyBmb250TmFtZSB0
byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFi
bGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1l
IHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24g
ZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRh
LCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8Y2hhcj4mIHJld3JpdHRlbkZvbnREYXRh
KQorYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0
cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAg
ICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qg
c2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZv
bnREYXRhLmRhdGEoKSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjxj
aGEKICAgICBzaXplX3QgbmFtZVRhYmxlU2l6ZSA9ICgob2Zmc2V0b2YobmFtZVRhYmxlLCBuYW1l
UmVjb3JkcykgKyBuYW1lUmVjb3JkQ291bnQgKiBzaXplb2YobmFtZVJlY29yZCkgKyBmb250TmFt
ZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpICYgfjMpICsgNDsKIAogICAgIHJld3JpdHRlbkZv
bnREYXRhLnJlc2l6ZShmb250RGF0YS5zaXplKCkgKyBuYW1lVGFibGVTaXplKTsKLSAgICBjaGFy
KiBkYXRhID0gcmV3cml0dGVuRm9udERhdGEuZGF0YSgpOworICAgIGF1dG8qIGRhdGEgPSByZXdy
aXR0ZW5Gb250RGF0YS5kYXRhKCk7CiAgICAgbWVtY3B5KGRhdGEsIGZvbnREYXRhLmRhdGEoKSwg
b3JpZ2luYWxEYXRhU2l6ZSk7CiAKICAgICAvLyBNYWtlIHRoZSB0YWJsZSBkaXJlY3RvcnkgZW50
cnkgcG9pbnQgdG8gdGhlIG5ldyAnbmFtZScgdGFibGUuCkBAIC00MTcsNyArNDE3LDcgQEAgYm9v
bCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYg
Zm9udE5hbWUsIFZlY3RvcjxjaGEKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUg
bmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KIFJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+
IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25z
dCBTdHJpbmcmIGZvbnROYW1lKQogewotICAgIFZlY3RvcjxjaGFyPiByZXdyaXR0ZW5Gb250RGF0
YTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5h
bWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQogICAgICAgICBy
ZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCBkZDI3NjkyY2E1ZDNm
ZTZjZjFlMWMyN2Q3MjUyYmNjNDhjNWZlODM3Li5mY2YxZjI3MjJmYjUxNzYyN2FlNmNjMjc3MWYy
MjBkMGYyOTc4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTU1LDcgKzU1LDcg
QEAgcHJpdmF0ZToKIH07CiAKIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERh
dGEsIEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlEc3QsIHNpemVfdCYgb3Zl
cmxheVNyYywgc2l6ZV90JiBvdmVybGF5TGVuZ3RoKTsKLWJvb2wgcmVuYW1lRm9udChjb25zdCBT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8Y2hhcj4mKTsKK2Jvb2wgcmVuYW1l
Rm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4m
KTsKIFJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25z
dCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCAzNjJiNjQyZTUwOGI4MDc5MDEzZWZkYWZlMGQ0
YTgxZWFhYTE3ZjFmLi42NzBlMzdkM2ZiZDczMzc4M2JjYzhmNzU5YjVkMDdmNjhiZWUyZTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtMTA0LDggKzEwNCw4IEBAIHZvaWQgQml0bWFwVGV4
dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0
JiB0YXJnZXRSCiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKTsKIAogICAg
IGNvbnN0IHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0OwotICAgIGNvbnN0IGNoYXIqIGRhdGEg
PSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc3JjRGF0YSk7Ci0gICAgVmVjdG9yPGNoYXI+IHRl
bXBvcmFyeURhdGE7CisgICAgY29uc3QgdWludDhfdCogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihzcmNEYXRhKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdGVtcG9yYXJ5RGF0YTsK
ICAgICBJbnRQb2ludCBhZGp1c3RlZFNvdXJjZU9mZnNldCA9IHNvdXJjZU9mZnNldDsKIAogICAg
IC8vIFRleHR1cmUgdXBsb2FkIHJlcXVpcmVzIHN1YmltYWdlIGJ1ZmZlciBpZiBkcml2ZXIgZG9l
c24ndCBzdXBwb3J0IHN1YmltYWdlIGFuZCB3ZSBkb24ndCBoYXZlIGZ1bGwgaW1hZ2UgdXBsb2Fk
LgpAQCAtMTE1LDEwICsxMTUsMTAgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRl
bnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFIKICAgICAvLyBw
cmVwYXJlIHRlbXBvcmFyeURhdGEgaWYgbmVjZXNzYXJ5CiAgICAgaWYgKHJlcXVpcmVTdWJJbWFn
ZUJ1ZmZlcikgewogICAgICAgICB0ZW1wb3JhcnlEYXRhLnJlc2l6ZSh0YXJnZXRSZWN0LndpZHRo
KCkgKiB0YXJnZXRSZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQaXhlbCk7Ci0gICAgICAgIGNoYXIq
IGRzdCA9IHRlbXBvcmFyeURhdGEuZGF0YSgpOworICAgICAgICB1aW50OF90KiBkc3QgPSB0ZW1w
b3JhcnlEYXRhLmRhdGEoKTsKICAgICAgICAgZGF0YSA9IGRzdDsKLSAgICAgICAgY29uc3QgY2hh
ciogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzcmNEYXRhKTsKLSAgICAgICAgY29u
c3QgY2hhciogc3JjID0gYml0cyArIHNvdXJjZU9mZnNldC55KCkgKiBieXRlc1BlckxpbmUgKyBz
b3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsKKyAgICAgICAgY29uc3QgdWludDhfdCog
Yml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzcmNEYXRhKTsKKyAgICAgICAgY29u
c3QgdWludDhfdCogc3JjID0gYml0cyArIHNvdXJjZU9mZnNldC55KCkgKiBieXRlc1BlckxpbmUg
KyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQaXhlbDsKICAgICAgICAgY29uc3QgaW50IHRh
cmdldEJ5dGVzUGVyTGluZSA9IHRhcmdldFJlY3Qud2lkdGgoKSAqIGJ5dGVzUGVyUGl4ZWw7CiAg
ICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGFyZ2V0UmVjdC5oZWlnaHQoKTsgKyt5KSB7CiAg
ICAgICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIHRhcmdldEJ5dGVzUGVyTGluZSk7CkBAIC0xNTcs
MTEgKzE1NywxMSBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2Uq
IGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjbwogICAgICAgICByZXR1cm47CiAK
ICAgICBpbnQgYnl0ZXNQZXJMaW5lOwotICAgIGNvbnN0IGNoYXIqIGltYWdlRGF0YTsKKyAgICBj
b25zdCB1aW50OF90KiBpbWFnZURhdGE7CiAKICNpZiBVU0UoQ0FJUk8pCiAgICAgY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwotICAg
IGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOworICAgIGltYWdlRGF0YSA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAgYnl0ZXNQZXJMaW5lID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogI2VsaWYgVVNFKERJUkVDVDJEKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmNwcAppbmRleCBlYmFkZjRjNjBk
NmRlZWVlOTU1MmIwMTkxYWYxZmRkNTIyM2NhOWJiLi4zNzhmMGY2MTAyNzYyNjNjMGI5YTdhMzBm
YTczNmFhZTJhZTAzMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBJRFdyaXRlRm9udENvbGxlY3Rpb24xKiB3ZWJQcm9jZXNzRm9udENvbGxlY3Rpb24o
KQogICAgIHJldHVybiBmb250Q29sbGVjdGlvbi5nZXQoKTsKIH0KIAotSFJFU1VMVCBhZGRGb250
RnJvbURhdGFUb1Byb2Nlc3NDb2xsZWN0aW9uKGNvbnN0IFZlY3RvcjxjaGFyPiYgZm9udERhdGEp
CitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0NvbGxlY3Rpb24oY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBmb250RGF0YSkKIHsKICAgICBDT01QdHI8SURXcml0ZUZvbnRGaWxlPiBmb250
RmlsZTsKICAgICBIUkVTVUxUIGhyID0gbWVtb3J5Rm9udExvYWRlcigpLT5DcmVhdGVJbk1lbW9y
eUZvbnRGaWxlUmVmZXJlbmNlKGZhY3RvcnkoKSwgZm9udERhdGEuZGF0YSgpLCBmb250RGF0YS5z
aXplKCksIG51bGxwdHIsICZmb250RmlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCmluZGV4IDcy
YWM2ODEzYTI2NGJmYTMyYmYwNTFiMGQ4MDgxZWY2ODE1MTFjOTkuLmE2MjcxOWIxNzE5YTc0Zjk3
NjkyMjE5ZGY1ZjdhYWVkYzQ5MDY0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCkBAIC01Miw3
ICs1Miw3IEBAIElEV3JpdGVHZGlJbnRlcm9wKiBnZGlJbnRlcm9wKCk7CiAKIElEV3JpdGVGb250
Q29sbGVjdGlvbjEqIHdlYlByb2Nlc3NGb250Q29sbGVjdGlvbigpOwogCi1IUkVTVUxUIGFkZEZv
bnRGcm9tRGF0YVRvUHJvY2Vzc0NvbGxlY3Rpb24oY29uc3QgVmVjdG9yPGNoYXI+JiBmb250RGF0
YSk7CitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0NvbGxlY3Rpb24oY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBmb250RGF0YSk7CiBDT01QdHI8SURXcml0ZUZvbnRGYW1pbHk+IGZvbnRG
YW1pbHlGb3JDb2xsZWN0aW9uKElEV3JpdGVGb250Q29sbGVjdGlvbiosIGNvbnN0IFZlY3Rvcjx3
Y2hhcl90PiYgbG9jYWxlTmFtZSwgY29uc3QgTE9HRk9OVCYpOwogQ09NUHRyPElEV3JpdGVGb250
PiBjcmVhdGVXaXRoUGxhdGZvcm1Gb250KGNvbnN0IExPR0ZPTlQmKTsKIFZlY3Rvcjx3Y2hhcl90
PiBmYW1pbHlOYW1lRm9yTG9jYWxlKElEV3JpdGVGb250RmFtaWx5KiwgY29uc3QgVmVjdG9yPHdj
aGFyX3Q+JiBsb2NhbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4
IDZkMzkxNTA3MTA4YzFiZWUyNjVhNzE4ZGEwNDc1YjA1OGY4MjI2ODIuLmZkMzQ1YmI3ODZmZjA4
ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
SUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0
YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFy
a2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAg
ICB9CiAKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCA2NGRmNzUwMmUxYjMxNWI5YThkZDI5MDhm
MjQ4Y2VhMTViZjEwNjU4Li5hMTg1YzA3ZGIyN2VmMTYyM2QwMzc2NzYzNGEzZDE3MmFhZDBkZThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAg
LTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICBDTVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2Vu
dGF0aW9uVGltZVN0YW1wIHsga0NNVGltZUludmFsaWQgfTsKICAgICBDTVRpbWUgbV9yZW1haW5p
bmdQcmltZUR1cmF0aW9uIHsga0NNVGltZUludmFsaWQgfTsKIAotICAgIFZlY3RvcjxjaGFyPiBt
X3NvdXJjZUJ1ZmZlcjsKLSAgICBWZWN0b3I8Y2hhcj4gbV9kZXN0aW5hdGlvbkJ1ZmZlcjsKKyAg
ICBWZWN0b3I8dWludDhfdD4gbV9zb3VyY2VCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
ZGVzdGluYXRpb25CdWZmZXI7CiAKICAgICBSZXRhaW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9z
YW1wbGVCbG9ja0J1ZmZlcjsKICAgICBzaXplX3QgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgeyAw
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5oCmluZGV4IDEzYTIzMmMxMjhhOTc1ZTBjYjBjMzU3OWI4NTBkYzI4N2YyZWRlYTAuLmY1Zjg1
NTg3MWZjNzA4NTY2ZjdlZjhiOWExNjFlMjdiOGU1ZDg5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKIAotICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZERhdGEo
Y29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkg
Y29uc3Q7CiAgICAgdW5zaWduZWQgYXVkaW9CaXRSYXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggZDcxMDVj
MmZhNDAwY2FmZTg4M2QyYjZiNzUxZDk3MjVhZmNlOTdiZC4uNjNiZDY1OThkMDJhNWM3MDA2ZGE5
MjlmYzk0ZjFmNWY2NmE3MTZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtNzQsMTQgKzc0LDE0IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIm
KXdyaXRlcgogLSAodm9pZClhc3NldFdyaXRlcjooQVZBc3NldFdyaXRlciAqKWFzc2V0V3JpdGVy
IGRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0YTooTlNEYXRhICopZnJhZ21lbnRlZEhlYWRl
ckRhdGEKIHsKICAgICBVTlVTRURfUEFSQU0oYXNzZXRXcml0ZXIpOwotICAgIG1fd3JpdGVyLT5h
cHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZEhlYWRlckRhdGEg
Ynl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pOworICAgIG1fd3JpdGVyLT5h
cHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZnJhZ21lbnRlZEhlYWRlckRh
dGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pOwogfQogCiAtICh2b2lk
KWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdt
ZW50ZWRNZWRpYURhdGE6KE5TRGF0YSAqKWZyYWdtZW50ZWRNZWRpYURhdGEgZnJhZ21lbnRlZE1l
ZGlhRGF0YVJlcG9ydDooQVZGcmFnbWVudGVkTWVkaWFEYXRhUmVwb3J0ICopZnJhZ21lbnRlZE1l
ZGlhRGF0YVJlcG9ydAogewogICAgIFVOVVNFRF9QQVJBTShhc3NldFdyaXRlcik7CiAgICAgVU5V
U0VEX1BBUkFNKGZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQpOwotICAgIG1fd3JpdGVyLT5hcHBl
bmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRl
c10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5ndGhdKTsKKyAgICBtX3dyaXRlci0+YXBwZW5k
RGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0
ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSk7CiB9CiAKIC0gKHZvaWQpY2xvc2UK
QEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21w
bGV0ZUZldGNoRGF0YSgpCiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcih0YWtlRGF0
YSgpLCBjdXJyZW50VGltZUNvZGUpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwogICAgIGlm
ICghbV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4
IDQzODQwYTNkNjFlOTdlY2QxYWMxOWZlNzM2NWI5OGFjZDdmMTY2NDAuLjVjYjYwYjllZjZlZjU3
YTQzYjRlZWY3MmExMzc2NzliMWFlYmQ2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkK
IAogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6On5Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZSgpID0g
ZGVmYXVsdDsKIAotdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1
bnNpZ25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBtX2lucHV0QnVmZmVyLmFwcGVuZFZl
Y3RvcihkYXRhKTsKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQg
cmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0OjpBcHBlbmRT
dWNjZWVkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggZGZiZjM2
YTFlYzY3NGYzYmQ4MGIyOGFhZTgwMTk4OWU1OWU2MTQ3NC4uMTRmMTU4ZDYwMzFhNjUxZDQwMjcx
YWY1ZWIwMDM2NGI4ZWMzNTk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUu
aApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZl
clByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+
JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKSBmaW5hbDsKICAg
ICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7
CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CkBAIC05Miw3ICs5Miw3
IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIG1fbWluaW11bVVwY29taW5nUHJlc2VudGF0aW9u
VGltZTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2VucXVldWVkU2FtcGxlczsKICAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVwdGg7Ci0gICAgVmVjdG9yPGNoYXI+IG1faW5w
dXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1faW5wdXRCdWZmZXI7CiAKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggN2Fk
ZGNlMzk4MzA5Nzg3YzNkM2FhZjBjNGVjZTQ0NDQwYjY4YTYzNi4uYjhhMTUzZmMxYzE4ZTM3YTdk
OGJhM2M4ZmU3YzhlMGRlN2EzZWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTMxMCw3ICszMTAsOCBAQCBib29sIGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogI2VuZGlmCiAKIHN0YXRp
YyBjb25zdCBzaXplX3QgbWF4SW5wdXRTYW1wbGVTaXplID0gMTI4Owotc3RhdGljIFN0cmluZyB0
cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciogcCwgc2l6ZV90IGxlbmd0aCkKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoQ2hhclR5cGUq
IHAsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgU3RyaW5nIHMgPSBTdHJpbmcocCwgc3RkOjptaW48
c2l6ZV90PihsZW5ndGgsIG1heElucHV0U2FtcGxlU2l6ZSkpOwogICAgIGlmIChsZW5ndGggPiBt
YXhJbnB1dFNhbXBsZVNpemUpCkBAIC02MzEsMTQgKzYzMiwxNSBAQCBib29sIHBhcnNlUmFuZ2Uo
Y29uc3QgU3RyaW5nJiByYW5nZSwgbG9uZyBsb25nJiByYW5nZU9mZnNldCwgbG9uZyBsb25nJiBy
YW5nZUVuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxp
ZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hhciogY2hhcmFjdGVyKQordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkSGVhZGVyTmFt
ZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAgICAvLyBodHRwczovL3Rv
b2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMgogICAgIC8vIEEgaGVhZGVyIG5h
bWUgc2hvdWxkIG9ubHkgY29udGFpbiBvbmUgb3IgbW9yZSBvZgogICAgIC8vIGFscGhhbnVtZXJp
YyBvciAhICMgJCAlICYgJyAqICsgLSAuIF4gXyBgIHwgfgotICAgIGlmIChpc0FTQ0lJQWxwaGFu
dW1lcmljKCpjaGFyYWN0ZXIpKQorICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3Rl
cikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHN3aXRjaCAoKmNoYXJhY3RlcikgeworICAg
IHN3aXRjaCAoY2hhcmFjdGVyKSB7CiAgICAgY2FzZSAnISc6CiAgICAgY2FzZSAnIyc6CiAgICAg
Y2FzZSAnJCc6CkBAIC02NjAsMTYgKzY2MiwxNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxp
ZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hhciogY2hhcmFjdGVyKQogICAgIH0KIH0KIAot
c2l6ZV90IHBhcnNlSFRUUEhlYWRlcihjb25zdCBjaGFyKiBzdGFydCwgc2l6ZV90IGxlbmd0aCwg
U3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdWaWV3JiBuYW1lU3RyLCBTdHJpbmcmIHZhbHVl
U3RyLCBib29sIHN0cmljdCkKK3NpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3QgdWludDhfdCog
c3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwgU3RyaW5nVmlldyYg
bmFtZVN0ciwgU3RyaW5nJiB2YWx1ZVN0ciwgYm9vbCBzdHJpY3QpCiB7Ci0gICAgY29uc3QgY2hh
ciogcCA9IHN0YXJ0OwotICAgIGNvbnN0IGNoYXIqIGVuZCA9IHN0YXJ0ICsgbGVuZ3RoOworICAg
IGNvbnN0IHVpbnQ4X3QqIHAgPSBzdGFydDsKKyAgICBjb25zdCB1aW50OF90KiBlbmQgPSBzdGFy
dCArIGxlbmd0aDsKIAotICAgIFZlY3RvcjxjaGFyPiBuYW1lOwotICAgIFZlY3RvcjxjaGFyPiB2
YWx1ZTsKKyAgICBWZWN0b3I8dWludDhfdD4gbmFtZTsKKyAgICBWZWN0b3I8dWludDhfdD4gdmFs
dWU7CiAKICAgICBib29sIGZvdW5kRmlyc3ROYW1lQ2hhciA9IGZhbHNlOwotICAgIGNvbnN0IGNo
YXIqIG5hbWVQdHIgPSBudWxscHRyOworICAgIGNvbnN0IHVpbnQ4X3QqIG5hbWVQdHIgPSBudWxs
cHRyOwogICAgIHNpemVfdCBuYW1lU2l6ZSA9IDA7CiAKICAgICBuYW1lU3RyID0gU3RyaW5nVmll
dygpOwpAQCAtNjkyLDcgKzY5NCw3IEBAIHNpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3QgY2hh
ciogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwKICAgICAgICAg
Y2FzZSAnOic6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGlmICghaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIocCkpIHsKKyAgICAgICAgICAgIGlm
ICghaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoKnApKSB7CiAgICAgICAgICAgICAgICAgaWYg
KG5hbWUuc2l6ZSgpIDwgMSkKICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZVJlYXNvbiA9ICJV
bmV4cGVjdGVkIHN0YXJ0IGNoYXJhY3RlciBpbiBoZWFkZXIgbmFtZSI7CiAgICAgICAgICAgICAg
ICAgZWxzZQpAQCAtNzQ3LDcgKzc0OSw3IEBAIHNpemVfdCBwYXJzZUhUVFBIZWFkZXIoY29uc3Qg
Y2hhciogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbiwKICAgICBy
ZXR1cm4gcCAtIHN0YXJ0OwogfQogCi1zaXplX3QgcGFyc2VIVFRQUmVxdWVzdEJvZHkoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBib2R5KQor
c2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgsIFZlY3Rvcjx1aW50OF90PiYgYm9keSkKIHsKICAgICBib2R5LmNsZWFyKCk7CiAgICAg
Ym9keS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCBhODY5ZWY3OWJiNWQyMWJhMzliYjJjMDZlOWNlOGNm
M2QzOGY5ODQwLi4xYjFhNGQwYmE4MzhiMmQwYTMyNTU0YzczOWQ4OWI2MWFhYzc4NWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCkBAIC05MSw4
ICs5MSw4IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFyc2VSYW5nZShjb25zdCBTdHJpbmcmLCBs
b25nIGxvbmcmIHJhbmdlT2Zmc2V0LCBsb25nIGxvbmcmCiBDb250ZW50VHlwZU9wdGlvbnNEaXNw
b3NpdGlvbiBwYXJzZUNvbnRlbnRUeXBlT3B0aW9uc0hlYWRlcihTdHJpbmdWaWV3IGhlYWRlcik7
CiAKIC8vIFBhcnNpbmcgQ29tcGxldGUgSFRUUCBNZXNzYWdlcy4KLXNpemVfdCBwYXJzZUhUVFBI
ZWFkZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVh
c29uLCBTdHJpbmdWaWV3JiBuYW1lU3RyLCBTdHJpbmcmIHZhbHVlU3RyLCBib29sIHN0cmljdCA9
IHRydWUpOwotc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5KGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgYm9keSk7CitzaXplX3QgcGFyc2VI
VFRQSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFp
bHVyZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3RyaW5nJiB2YWx1ZVN0ciwgYm9vbCBz
dHJpY3QgPSB0cnVlKTsKK3NpemVfdCBwYXJzZUhUVFBSZXF1ZXN0Qm9keShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBWZWN0b3I8dWludDhfdD4mIGJvZHkpOwogCiAvLyBIVFRQ
IEhlYWRlciByb3V0aW5lIGFzIHBlciBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jdGVy
bWlub2xvZ3ktaGVhZGVycwogYm9vbCBpc0ZvcmJpZGRlbkhlYWRlck5hbWUoY29uc3QgU3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZS5jcHAKaW5kZXggZDZjOGNiOTAxNzBmZWRmYzFiNTVjZTVkN2VjZDgyZjVjZjgw
YTM5Mi4uNmRlMWEzZjhhMWY5YjYzZDFlNzFmYjNhYTdjZTQyNTM0MWE2NTFkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxl
LmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIFNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFt
U3RhdGUgU29ja2V0U3RyZWFtSGFuZGxlOjpzdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3Rh
dGU7CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nIHx8IG1fc3RhdGUgPT0gQ2xvc2luZykK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICBwbGF0Zm9ybVNl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBsYXRmb3JtU2VuZChkYXRhLCBsZW5ndGgsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6
OnNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwgc3RkOjpvcHRpb25hbDxDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mJiBoZWFkZXJGaWVsZFByb3h5LCBGdW5jdGlvbjx2b2lk
KGJvb2wsIGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCmluZGV4IGNhMTFhNjEzYTY5
MTBkODY2Yjg1OTdlMmEyODIzNDRkZDJlMGU3NTMuLjBiOTkzZDc4Y2Q0YWVhYWJiOTRmNzMzOTY5
Y2VkODhmZjI5NTk4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCkgPSBkZWZhdWx0OwogICAgIFNvY2tldFN0cmVh
bVN0YXRlIHN0YXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNlbmREYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+KTsKKyAgICB2b2lkIHNlbmRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9v
bCk+KTsKICAgICB2b2lkIHNlbmRIYW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwgc3RkOjpv
cHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mJiwgRnVuY3Rpb248dm9pZChi
b29sLCBib29sKT4pOwogICAgIHZvaWQgY2xvc2UoKTsgLy8gRGlzY29ubmVjdCBhZnRlciBhbGwg
ZGF0YSBpbiBidWZmZXIgYXJlIHNlbnQuCiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQuaAppbmRleCA2MGEyM2Q1ZjQ3NzQ5NjM2N2UxYjYxYjlmZWNhOWJkMWEwNjJiZjJh
Li41ZGU1NTljMGFiZGVkOTE1M2NjZGYwNzdlN2UyYjU2ZTdjYmU4YWM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRs
ZSYsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVhbUhhbmRs
ZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
U29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9y
JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9E
b3dubG9hZEJ1bmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Eb3du
bG9hZEJ1bmRsZS5oCmluZGV4IDhkZTIyNDVhYTNmY2IyNTEwMGFlOTBhZTlmZTYwOGM0ZGM4NTQz
YjYuLjcxZjdlYmIwZjMyNjRlNjQxZTk3ZmZjYjFmMDRiYjYwMTIzY2I4NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRG93bmxvYWRCdW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Rvd25sb2FkQnVuZGxlLmgKQEAg
LTMxLDggKzMxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEb3dubG9hZEJ1
bmRsZSB7CiAKLWJvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25zdCBjaGFyKiwgdWludDMyX3QsIGNv
bnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Ci1ib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0IFN0
cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPGNoYXI+JiByZXN1bWVEYXRhKTsKK2Jvb2wgYXBwZW5k
UmVzdW1lRGF0YShjb25zdCB1aW50OF90KiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgYnVuZGxl
UGF0aCk7Citib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCwg
VmVjdG9yPHVpbnQ4X3Q+JiByZXN1bWVEYXRhKTsKIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lv
bigpOwogCiB9IC8vIG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsQ0ZOZXQuY3BwCmluZGV4IDYyNTQ4NWJmMWMwZThlNTgxOWJmNjU0MDU1YmQzODY0Mzcx
ODNhNDguLmQxMzc5NDk4YWFiODFlZTJjYTdhYTA4OWIxYjUwZjk5NWMyODI5NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayhDRlN0cmVhbUV2ZW50VHlw
ZSB0eXBlKQogICAgICAgICBpZiAobGVuZ3RoID09IC0xKQogICAgICAgICAgICAgbV9jbGllbnQu
ZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcywgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocHRyKSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBwdHIsIGxlbmd0aCk7CiAK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDg0ODEwN2NjNmFkZjA1
OGRhYTg4ZDg0NjgwMmEzNmZkOGQ3N2RlMDUuLjA1YjRlMjliYzkzMWMxNDM0NWI0Nzk1OThiYWVl
NjdlYjRiNjhjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEN1cmxD
YWNoZUVudHJ5Ojppc0NhY2hlZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ3VybENh
Y2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
Ym9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZUNhY2hlZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFvcGVuQ29udGVudEZpbGUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCA0NzI3NjJjN2Y1NTJjZGMwZDk0NGY5OTBjYWEzMGQy
NmM4MDIzYTI1Li4yNDYxNDA4YmZhNjIyNGRkMTUwOGQxYzQzZjI3NmY2MjFkNmEyNzI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGVudHJ5U2l6ZSgp
OwogICAgIEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKCkgeyByZXR1cm4gbV9yZXF1ZXN0
SGVhZGVyczsgfQogCi0gICAgYm9vbCBzYXZlQ2FjaGVkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QpOworICAgIGJvb2wgc2F2ZUNhY2hlZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90KTsKICAgICBib29sIHJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKik7CiAKICAgICBi
b29sIHNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IGU2OWY2YzM1Nzc1ZWRlY2NlYjIyZTg1MTU0NjUzYTk0ODYyNmZiY2Qu
Ljc1MDRjOTg4NmZiOGYyNWVmZTc5YTgyNjI2MjgyMDg5ODI2NzdmOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIEN1cmxDYWNoZU1hbmFnZXI6OmdldENhY2hl
ZFJlc3BvbnNlKGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiByZQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQg
Q3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IDRlMjQ5YzljMmIwZTlhZjFhZTNhYTQ5
M2U4M2I1MThhNjU0MmMzOTIuLmM5ZTI5ZDgwOTcwYzQwNDZlNzk2MTYyYmQ5ODMyOTExYjZkZWU2
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBn
ZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYpOwog
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmLCBSZXNvdXJjZVJl
c3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYsIGNvbnN0
IGNoYXIqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7IC8vIFNhdmUgZGF0YQogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSYpOwogICAgIHZvaWQgZGlkRmFp
bChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggZmU0MTA3
NmQ3NmJhYWQyMWJjZGRjNGEwZTJhZDNiNzY3ZDUyMTU1MC4uYmJkYTNmYmRhNzU4M2Q5OTE5MzFk
ZmUxNjlmN2IzYTkxMzNlNmRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTkwLDcg
KzE5MCw3IEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogICAg
ICAgICBpZiAobV9idWZmZXIuc2l6ZSgpIDwgMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBjb25zdCBjaGFyKiBjb250ZW50ID0gbV9idWZmZXIuZGF0YSgpOworICAgICAg
ICBhdXRvKiBjb250ZW50ID0gbV9idWZmZXIuZGF0YSgpOwogICAgICAgICAvLyBCeSBkZWZhdWx0
IHdlJ2xsIHJlbW92ZSAyIGNoYXJhY3RlcnMgYXQgdGhlIGVuZC4KICAgICAgICAgLy8gVGhlIFxy
IGFuZCBcbiBhcyBzdGF0ZWQgaW4gdGhlIG11bHRpcGFydCBSRkMuCiAgICAgICAgIHNpemVfdCBy
ZW1vdmVDb3VudCA9IDI7CkBAIC0yNTAsNyArMjUwLDcgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFu
ZGxlOjpwcm9jZXNzQ29udGVudCgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIE5vdCBl
bm91Z2ggZGF0YSB0byBjaGVjay4gUmV0dXJuIGxhdGVyIHdoZW4gdGhlcmUgaXMgbW9yZSBkYXRh
LgogCiAgICAgICAgIC8vIFdlJ2xsIGRlY2lkZSBpZiB0aGlzIGlzIGEgY2xvc2luZyBib3VuZGFy
eSBvciBhbiBvcGVuaW5nIG9uZS4KLSAgICAgICAgY29uc3QgY2hhciogY29udGVudCA9IG1fYnVm
ZmVyLmRhdGEoKTsKKyAgICAgICAgYXV0byogY29udGVudCA9IG1fYnVmZmVyLmRhdGEoKTsKIAog
ICAgICAgICBpZiAoY29udGVudFswXSA9PSAnLScgJiYgY29udGVudFsxXSA9PSAnLScpIHsKICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgYSBjbG9zaW5nIGJvdW5kYXJ5LiBDbG9zZSBkb3duIHRoZSBo
YW5kbGVyLgpAQCAtMzAwLDcgKzMwMCw3IEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6Y2hl
Y2tGb3JCb3VuZGFyeShzaXplX3QmIGJvdW5kYXJ5U3RhcnRQb3NpdGlvbiwgc2l6ZV90CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1zaXplX3QgQ3VybE11bHRpcGFydEhhbmRsZTo6bWF0Y2hlZExl
bmd0aChjb25zdCBjaGFyKiBkYXRhKQorc2l6ZV90IEN1cmxNdWx0aXBhcnRIYW5kbGU6Om1hdGNo
ZWRMZW5ndGgoY29uc3QgdWludDhfdCogZGF0YSkKIHsKICAgICBhdXRvIGxlbmd0aCA9IG1fYm91
bmRhcnkubGVuZ3RoKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewpAQCAtMzE4LDEyICszMTgsMTIgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwYXJzZUhl
YWRlcnNJZlBvc3NpYmxlKCkKICAgICBpZiAoIWNvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGNvbnN0IGF1dG8gY29udGVudCA9IG1fYnVmZmVyLmRhdGEoKTsKKyAg
ICBhdXRvKiBjb250ZW50ID0gbV9idWZmZXIuZGF0YSgpOwogCiAgICAgLy8gQ2hlY2sgaWYgd2Ug
aGF2ZSB0aGUgaGVhZGVyIGNsb3Npbmcgc3RyaW5ncy4KLSAgICBpZiAoIXN0cm5zdHIoY29udGVu
dCwgIlxyXG5cclxuIiwgY29udGVudExlbmd0aCkpIHsKKyAgICBpZiAoIW1lbW1lbShjb250ZW50
LCBjb250ZW50TGVuZ3RoLCAiXHJcblxyXG4iLCA0KSkgewogICAgICAgICAvLyBTb21lIHNlcnZl
cnMgY2xvc2VzIHRoZSBoZWFkZXJzIHdpdGggb25seSBcbi1zLgotICAgICAgICBpZiAoIXN0cm5z
dHIoY29udGVudCwgIlxuXG4iLCBjb250ZW50TGVuZ3RoKSkgeworICAgICAgICBpZiAoIW1lbW1l
bShjb250ZW50LCBjb250ZW50TGVuZ3RoLCAiXG5cbiIsIDIpKSB7CiAgICAgICAgICAgICAvLyBE
b24ndCBoYXZlIHRoZSBoZWFkZXIgY2xvc2luZyBzdHJpbmcuIFdhaXQgZm9yIG1vcmUgZGF0YS4K
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgK
aW5kZXggNmVkNTU2ZjQyYTA1OTAxYjE5YjBmMTAzYjIyYzZhNDlmMzI2MjFhZC4uNWMwOGJjYzVl
YjNlNGJiY2MwMjliNDc2Nzg2OGY0M2UyZjk1YzM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCkBA
IC02MiwxMyArNjIsMTMgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcHJvY2Vzc0NvbnRlbnQoKTsK
ICAgICBib29sIGNoZWNrRm9yQm91bmRhcnkoc2l6ZV90JiBib3VuZGFyeVN0YXJ0UG9zaXRpb24s
IHNpemVfdCYgbGFzdFBhcnRpYWxNYXRjaFBvc2l0aW9uKTsKLSAgICBzaXplX3QgbWF0Y2hlZExl
bmd0aChjb25zdCBjaGFyKiBkYXRhKTsKKyAgICBzaXplX3QgbWF0Y2hlZExlbmd0aChjb25zdCB1
aW50OF90KiBkYXRhKTsKICAgICBib29sIHBhcnNlSGVhZGVyc0lmUG9zc2libGUoKTsKIAogICAg
IEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIG1fY2xpZW50OwogCiAgICAgU3RyaW5nIG1fYm91
bmRhcnk7Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBt
X2J1ZmZlcjsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2hlYWRlcnM7CiAKICAgICBTdGF0ZSBtX3N0
YXRlIHsgU3RhdGU6OkNoZWNrQm91bmRhcnkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCmluZGV4IGEzMDljMjU4Y2Q5ZjExMmQzYmJjZTZjYWE3MTQ4MTgzNmExZmIwMTAu
LmU1NjRhMGNlNjY2MTRhNDlhMTAzMTM2ODg1MWM0ZGE4ODIzNTJhNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0Jiwg
UmVmPFNoYXJlZEJ1CiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0
YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhQXNDaGFyUHRyKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwg
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2
ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVh
bS5jcHAKaW5kZXggMWIxNWFmMDFiY2MwZWFiOTEwZmMzYjllOGE4ZDQ2M2I3YzY2ODUxOS4uZmY1
NWQzNTIzNDI3ODZmY2RlYWVmYzY0ZjZjY2JlMDE1ZjRjNWI1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcApAQCAtMTQ0LDcg
KzE0NCw3IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAgICAgICAgZGVzdHJv
eUhhbmRsZSgpOwogCiAgICAgbV9zY2hlZHVsZXIuY2FsbENsaWVudE9uTWFpblRocmVhZChtX3N0
cmVhbUlELCBbc3RyZWFtSUQgPSBtX3N0cmVhbUlELCBidWZmZXIgPSBXVEZNb3ZlKHJlY2VpdmVC
dWZmZXIpLCBsZW5ndGggPSBieXRlc1JlY2VpdmVkXShDbGllbnQmIGNsaWVudCkgbXV0YWJsZSB7
Ci0gICAgICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oYnVmZmVyLmdldCgpKSwgbGVuZ3RoKTsKKyAgICAgICAgY2xpZW50LmRp
ZFJlY2VpdmVEYXRhKHN0cmVhbUlELCBidWZmZXIuZ2V0KCksIGxlbmd0aCk7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVh
bS5oCmluZGV4IDMxM2IwMTczZGE1Y2Q0MDRhMWUzZmNhZDk1NzNiOGZmN2MzYWJkNGYuLmU2NDYy
OWZjMjJhMjA5N2EyYWYwYjBjMDEzOWIyM2Q3OTA4Y2YzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApAQCAtNDYsNyArNDYsNyBA
QCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbihDdXJs
U3RyZWFtSUQpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJl
YW1JRCwgc2l6ZV90KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShD
dXJsU3RyZWFtSUQsIGNvbnN0IGNoYXIqLCBzaXplX3QpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChDdXJsU3RyZWFtSUQsIENVUkxjb2Rl
KSA9IDA7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Rvd25sb2FkQnVuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvRG93bmxvYWRCdW5kbGUuaAppbmRleCBjMTI1ZGViMThmODYyNWRjNzYxNzcyOTNk
ZjI3MjFiN2MyNzIzM2ZhLi42Yjk3OGJlNmY4NGU2ZTkzNDc0YmRiMjNkYjZiZWFiM2Q1NmZhNjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRG93bmxv
YWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvRG93
bmxvYWRCdW5kbGUuaApAQCAtMzAsOCArMzAsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFt
ZXNwYWNlIERvd25sb2FkQnVuZGxlIHsKIAotYm9vbCBhcHBlbmRSZXN1bWVEYXRhKGNvbnN0IGNo
YXIqLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoKTsKLWJvb2wgZXh0cmFjdFJl
c3VtZURhdGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0b3I8Y2hhcj4mIHJlc3VtZURh
dGEpOworYm9vbCBhcHBlbmRSZXN1bWVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1aW50MzJfdCwgY29u
c3QgU3RyaW5nJiBidW5kbGVQYXRoKTsKK2Jvb2wgZXh0cmFjdFJlc3VtZURhdGEoY29uc3QgU3Ry
aW5nJiBidW5kbGVQYXRoLCBWZWN0b3I8dWludDhfdD4mIHJlc3VtZURhdGEpOwogY29uc3QgU3Ry
aW5nJiBmaWxlRXh0ZW5zaW9uKCk7CiAKIH0gLy8gbmFtZXNwYWNlIERvd25sb2FkQnVuZGxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCAyZDA1ODRkYWI1Y2ZmNmQxNDkwNjI5NjQyYmFl
YTY1MmZhZWEwMDMzLi5iODA0ZmRlMDk3M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQzZTc0ZmU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZGlkT3BlbihDdXJsU3RyZWFtSUQpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERh
dGEoQ3VybFN0cmVhbUlELCBzaXplX3QpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Q3VybFN0cmVhbUlELCBjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUpIGZpbmFsOwogCiAgICAgYm9v
bCBpc1N0cmVhbUludmFsaWRhdGVkKCkgeyByZXR1cm4gbV9zdHJlYW1JRCA9PSBpbnZhbGlkQ3Vy
bFN0cmVhbUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCAy
ZmVjZTAyOGVmZmRiZTg4NTE4ZWM3YjhiZTI1OWIwYTA5MDg2Y2NmLi40Yjk0OTFjMTE1NDNmMmI2
MGYxMmQzNmU5ZTZhMGNiYWFlMzRhNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q3VybC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90IGxlbmd0aCkKICAgICBzZW5kUGVuZGlu
Z0RhdGEoKTsKIH0KIAotdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0
YShDdXJsU3RyZWFtSUQsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBPcGVu
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKaW5kZXggOTAxYjJiNzEwZTRmODFh
M2M4MGNhYjAzOTM4ODQ3ZWExNjQxZTMyNy4uZDgzYzNiMmE2M2IyMmMzOWUxOGMxMjllNDRiYzhm
MmQzOGI4YjJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93
aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBT
dHJpbmcmIGZpbGVFeHRlbnNpb24oKQogICAgIHJldHVybiBleHRlbnNpb247CiB9CiAKLWJvb2wg
YXBwZW5kUmVzdW1lRGF0YShjb25zdCBjaGFyKiByZXN1bWVCeXRlcywgdWludDMyX3QgcmVzdW1l
TGVuZ3RoLCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpCitib29sIGFwcGVuZFJlc3VtZURhdGEo
Y29uc3QgdWludDhfdCogcmVzdW1lQnl0ZXMsIHVpbnQzMl90IHJlc3VtZUxlbmd0aCwgY29uc3Qg
U3RyaW5nJiBidW5kbGVQYXRoKQogewogICAgIGlmICghcmVzdW1lQnl0ZXMgfHwgIXJlc3VtZUxl
bmd0aCkgewogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgcmVzdW1lIGRhdGEgdG8gd3JpdGUg
dG8gYnVuZGxlIHBhdGgiKTsKQEAgLTg5LDcgKzg5LDcgQEAgZXhpdDoKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1ib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0
aCwgVmVjdG9yPGNoYXI+JiByZXN1bWVEYXRhKQorYm9vbCBleHRyYWN0UmVzdW1lRGF0YShjb25z
dCBTdHJpbmcmIGJ1bmRsZVBhdGgsIFZlY3Rvcjx1aW50OF90PiYgcmVzdW1lRGF0YSkKIHsKICAg
ICBpZiAoYnVuZGxlUGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3Qg
Y3JlYXRlIHJlc3VtZSBkYXRhIGZyb20gZW1wdHkgZG93bmxvYWQgYnVuZGxlIHBhdGgiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lY
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNw
cAppbmRleCA4ZWQ1NzE3NDc3OGNiN2JkYWRjYTM2NTE3ZmQ3OTQ0NTczOGM1MmQ3Li5jOTI4YjYz
NzM0NTBkYTgxNWM5M2Y4NjdjZmM4ZDk5NThiMWUzNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC01Niw3ICs1Niw3
IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOworICAgIFZlY3Rvcjx1
aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogCiAgICAgc2l6ZV90IHRvdGFsQnl0ZXNSZWFk
ID0gMDsKICAgICBzc2l6ZV90IGJ5dGVzUmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCmluZGV4IGVjYjZiYWUxNjg5NTYxNjdmNjFmYWYzZGNhMjkzNjQ2Y2RjYWQ0
ODYuLjAwOTRmNDdkNDY0MDFkNTlhY2I4NWY3NjU0M2RhNjJkNzM4YzBmZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIEVuY29k
ZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkK
ICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsgLy8gRG9jdW1l
bnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5pbml0KCkuCiAgICAg
ICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5zZXRNSU1FVHlwZSgi
aW1hZ2Uvc3ZnK3htbCIpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
d3JpdGVyKCkuYmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50Ci0gICAg
ICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRhdGEo
KS0+ZGF0YUFzQ2hhclB0cigpLCBkYXRhKCktPnNpemUoKSk7CisgICAgICAgIGxvYWRlci5hY3Rp
dmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRhdGEoKS0+ZGF0YSgpLCBkYXRh
KCktPnNpemUoKSk7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0
ZXIoKS5lbmQoKTsKIAogICAgICAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMWY1YmVmNzlkMTZlMjc2ZDljMTAxMTI4Yjg4OWQ3
Y2YxYmE4ZjA0YS4uMTI0N2RhYTY0NjM5ZDZlNmVhYzE2ZDExMjYzOGI5ZjlkNGE3OTVlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAg
LTE1OSw3ICsxNTksNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjp1cGRhdGVMZWFmVGV4dE5v
ZGUoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRoaXMgb3BlcmF0aW9uIG1pZ2h0
IGZpcmUgbXV0YXRpb24gZXZlbnQsIHNlZSBiZWxvdy4KLSAgICBtX2xlYWZUZXh0Tm9kZS0+YXBw
ZW5kRGF0YShTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1f
YnVmZmVyZWRUZXh0LmRhdGEoKSksIG1fYnVmZmVyZWRUZXh0LnNpemUoKSkpOworICAgIG1fbGVh
ZlRleHROb2RlLT5hcHBlbmREYXRhKFN0cmluZzo6ZnJvbVVURjgobV9idWZmZXJlZFRleHQuZGF0
YSgpLCBtX2J1ZmZlcmVkVGV4dC5zaXplKCkpKTsKICAgICBtX2J1ZmZlcmVkVGV4dCA9IHsgfTsK
IAogICAgIG1fbGVhZlRleHROb2RlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCmluZGV4IGVkZmY4
NDY0ZmQ1MjkwMzY4NjlkYTBjN2U0ZWI4NDhmYWY5MGJkM2QuLjllYzU1ZjYxNmY1ODQzYjZjODAy
N2JjMTlkYTdhNjA1OGQ0YWE2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcApAQCAtMTc0LDEyICsxNzQsMTIg
QEAgdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmlu
ZyYmIGhlYWRlcikKICAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlBhcnNlV2ViVlRURmlsZUhl
YWRlcihtX2lkZW50aWZpZXIsIGhlYWRlciksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0K
IAotdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnBh
cnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7
CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UGFyc2VXZWJWVFRDdWVEYXRhKG1faWRlbnRpZmll
ciwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBsZW5ndGgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlv
blRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6UGFyc2VXZWJWVFRDdWVEYXRhKG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVm
ZXJlbmNlKGRhdGEsIGxlbmd0aCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJWVFRDdWUm
JiBjdWVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCBiNzRlODgyYjE0MGM2NmFjODkzY2JiMjk4OWUxMDk4
YjUwMGVkMTk2Li43OGI0ZTg0ZWMyZmJlMWIwY2NkZjk0ODIwYTYzNWY4ZGQ4NmFkZDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNr
UHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNDdWUmKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHZpcnR1YWwgdm9pZCBw
YXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShXZWJD
b3JlOjpJU09XZWJWVFRDdWUmJik7CiAKICAgICAvLyBUcmFja1ByaXZhdGVCYXNlQ2xpZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Js
b2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9i
LmNwcAppbmRleCAxYjM1N2Y2OGZjYTQzOTliM2Q2YWU0MWVjMzhiODdlMzQyMzljMTJkLi4xYjY3
NGU0ZjhkNTZjNmNlZWYxMWY2NzUwYzE2ZDk3Y2Q3ZDdjMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTM0NCw3
ICszNDQsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnJlYWREYXRhKGNvbnN0IEJsb2JE
YXRhSXRlbSYgaXRlbSkKICAgICBpZiAoYnl0ZXNUb1JlYWQgPiBtX3RvdGFsUmVtYWluaW5nU2l6
ZSkKICAgICAgICAgYnl0ZXNUb1JlYWQgPSBtX3RvdGFsUmVtYWluaW5nU2l6ZTsKIAotICAgIGF1
dG8qIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihpdGVtLmRhdGEoKS5kYXRh
KCktPmRhdGEoKSkgKyBpdGVtLm9mZnNldCgpICsgbV9jdXJyZW50SXRlbVJlYWRTaXplOworICAg
IGF1dG8qIGRhdGEgPSBpdGVtLmRhdGEoKS5kYXRhKCktPmRhdGEoKSArIGl0ZW0ub2Zmc2V0KCkg
KyBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CiAgICAgbV9jdXJyZW50SXRlbVJlYWRTaXplID0gMDsK
IAogICAgIGNvbnN1bWVEYXRhKGRhdGEsIHN0YXRpY19jYXN0PGludD4oYnl0ZXNUb1JlYWQpKTsK
QEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZFJlYWQoaW50
IGJ5dGVzUmVhZCkKICAgICBjb25zdW1lRGF0YShtX2J1ZmZlci5kYXRhKCksIGJ5dGVzUmVhZCk7
CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6Y29uc3VtZURhdGEoY29uc3QgY2hhciog
ZGF0YSwgaW50IGJ5dGVzUmVhZCkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6Y29uc3VtZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGJ5dGVzUmVhZCkKIHsKICAgICBtX3RvdGFsUmVt
YWluaW5nU2l6ZSAtPSBieXRlc1JlYWQ7CiAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKICAgICByZWFkKCk7CiB9CiAKLWJvb2wgTmV0d29y
a0RhdGFUYXNrQmxvYjo6d3JpdGVEb3dubG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNS
ZWFkKQorYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBieXRlc1JlYWQpCiB7CiAgICAgQVNTRVJUKGlzRG93bmxvYWQoKSk7CiAg
ICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRG
aWxlLCBkYXRhLCBieXRlc1JlYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAppbmRleCBmZDhjZGVmMDI0ODZmMTllM2UxMDk5NWU0
YzUzMjVjYWU5MGNiYmQxLi5mZDE1ZTI0NDA0ZDhhZDk0MjE0MzI2NjZjNDcwYjZmMWU0M2JkYmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuaApAQCAtODUsMTIgKzg1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTaXplRm9y
TmV4dCgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRXJyb3IgPSBFcnJv
cjo6Tm9FcnJvcik7CiAgICAgdm9pZCBzZWVrKCk7Ci0gICAgdm9pZCBjb25zdW1lRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKTsKKyAgICB2b2lkIGNvbnN1bWVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpOwogICAgIHZvaWQgcmVhZCgpOwogICAgIHZv
aWQgcmVhZERhdGEoY29uc3QgV2ViQ29yZTo6QmxvYkRhdGFJdGVtJik7CiAgICAgdm9pZCByZWFk
RmlsZShjb25zdCBXZWJDb3JlOjpCbG9iRGF0YUl0ZW0mKTsKICAgICB2b2lkIGRvd25sb2FkKCk7
Ci0gICAgYm9vbCB3cml0ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQp
OworICAgIGJvb2wgd3JpdGVEb3dubG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgYnl0ZXNS
ZWFkKTsKICAgICB2b2lkIGNsZWFuRG93bmxvYWRGaWxlcygpOwogICAgIHZvaWQgZGlkRmFpbERv
d25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZpbmlz
aERvd25sb2FkKCk7CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxX
ZWJDb3JlOjpCbG9iRGF0YT4gbV9ibG9iRGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6QXN5bmNGaWxlU3RyZWFtPiBtX3N0cmVhbTsgLy8gRm9yIGFzeW5jaHJvbm91cyBsb2FkaW5n
LgotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9idWZm
ZXI7CiAgICAgVmVjdG9yPGxvbmcgbG9uZz4gbV9pdGVtTGVuZ3RoTGlzdDsKICAgICBTdGF0ZSBt
X3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9OwogICAgIGxvbmcgbG9uZyBtX3JhbmdlT2Zmc2V0
IHsga1Bvc2l0aW9uTm90U3BlY2lmaWVkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAppbmRleCAxNWE5OWVjZTM0YWMxNjAz
NGQ2YmJjOGU0N2MyODllMzhiNmM5MmI1Li41MmViNWIwOGYxNmNiYTIzMjE0OTAyOGNkYWE4MTUw
YWQwNGU0YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5jcHAKQEAgLTg0LDEwICs4NCwxMCBAQCB2b2lkIE5ldHdvcmtTb2Nr
ZXRTdHJlYW06OmRpZENsb3NlU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxl
KQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVhbTo6RGlkQ2xvc2VTb2NrZXRTdHJl
YW0oKSk7CiB9CiAKLXZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlkUmVjZWl2ZVNvY2tldFN0
cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCit2b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OmRpZFJlY2VpdmVTb2NrZXRT
dHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCAmaGFuZGxlID09
IG1faW1wbC5wdHIoKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRS
ZWNlaXZlU29ja2V0U3RyZWFtRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTb2NrZXRTdHJlYW06OkRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKElQQzo6RGF0YVJlZmVy
ZW5jZShkYXRhLCBsZW5ndGgpKSk7CiB9CiAKIHZvaWQgTmV0d29ya1NvY2tldFN0cmVhbTo6ZGlk
RmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxl
JiBoYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldFN0cmVhbS5oCmluZGV4IDYwMDZiMmUxYjdjNjMyMTIzZGYwODliOTIyN2IyNmY3OTA2OGNl
MDQuLmUyNTY5ODQyNjZjZTVlZWNmMTUwMjhhNTIzZjZhYWNkODNhNmFlYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCkBAIC01
OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAvLyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQKICAg
ICB2b2lkIGRpZE9wZW5Tb2NrZXRTdHJlYW0oV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVNvY2tldFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGUmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
VG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZSYsIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsU29ja2V0U3RyZWFt
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OlNvY2tldFN0cmVh
bUVycm9yJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5j
cHAKaW5kZXggYzI1N2ZhMTFkNjJhMzE0YzI4NjJkY2Q3M2IxNmE3ODJjODEzNTIzNi4uOTQ2YWY0
N2RmYjdlNjExZjFhYjQ0MTczNGE5YjBlMTQxOWZiZWQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtMTUzLDkgKzE1Myw5IEBAIGJvb2wgU2hhcmVh
YmxlUmVzb3VyY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotY29uc3QgY2hhciogU2hhcmVhYmxlUmVzb3VyY2U6OmRhdGEoKSBjb25zdAorY29u
c3QgdWludDhfdCogU2hhcmVhYmxlUmVzb3VyY2U6OmRhdGEoKSBjb25zdAogewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBtX29m
ZnNldDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fc2hhcmVkTWVt
b3J5LT5kYXRhKCkpICsgbV9vZmZzZXQ7CiB9CiAKIHVuc2lnbmVkIFNoYXJlYWJsZVJlc291cmNl
OjpzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmlu
ZGV4IDUzNzRkN2I5NmNmMjIxOWE3NjZiYjcwYWI2MGFjODg3MzY2YzFmNDAuLjdiNDdmNWQ2ODUx
ZDlkZTMyZDFjM2E1NDcwNTE2MGFhNGY3YzZjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAKICAgICB+U2hhcmVh
YmxlUmVzb3VyY2UoKTsKIAotICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OwogICAg
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDVhMTgwYmVlZDEyZjVjZGNkZmJhZTY3MDJl
NjkzYjllYTZlMGE4NDQuLjNjOTcxYTEzZjQ5YzVlNzQ0ZGU2MDlkODVkZmE3ZGQzZWI1ZDE1MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcApAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyBib29sIHdyaXRlRGF0
YVRvRmlsZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZmlsZURhdGEsIFBsYXRm
b3JtCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBmaWxlRGF0YS5hcHBseShbZmQs
ICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewotICAgICAgICBp
ZiAod3JpdGVUb0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRhLCBzaXplKSA9PSAtMSkgeworICAg
ICAgICBpZiAod3JpdGVUb0ZpbGUoZmQsIGRhdGEsIHNpemUpID09IC0xKSB7CiAgICAgICAgICAg
ICBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3Bw
CmluZGV4IDJmNDg5Mzg3NTExNDk5MzM2ZmM2MDAxZjYxMWFmMGVhYjViOWM3ZjcuLjVjYzQ3NGM1
M2U1NDFjYTcxNmQzZWE4YTU4OTlhNTA0NzI0MDIwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMzY2LDcgKzM2Niw3IEBA
IFZlY3Rvcjx1aW50OF90PiBJY29uRGF0YWJhc2U6Omljb25EYXRhKGludDY0X3QgaWNvbklEKQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFi
YXNlOjphZGRJY29uKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgVmVjdG9yPGNoYXI+JiBp
Y29uRGF0YSkKK3N0ZDo6b3B0aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjphZGRJY29uKGNv
bnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpY29uRGF0YSkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAgICAgQVNTRVJUKG1fZGIuaXNPcGVuKCkp
OwpAQCAtNjA2LDcgKzYwNiw3IEBAIFN0cmluZyBJY29uRGF0YWJhc2U6Omljb25VUkxGb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKICAgICByZXR1cm4gbV9wYWdlVVJMVG9JY29uVVJM
TWFwLmdldChwYWdlVVJMKTsKIH0KIAotdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhciogaWNvbkRhdGEs
IHNpemVfdCBpY29uRGF0YVNpemUsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFz
ZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVS
TChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVpbnQ4X3QqIGljb25EYXRhLCBzaXplX3Qg
aWNvbkRhdGFTaXplLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZSBh
bGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKQEAgLTYzOCw3
ICs2MzgsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEgeyByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihpY29uRGF0YSksIGljb25EYXRhU2l6ZSB9OworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsg
aWNvbkRhdGEsIGljb25EYXRhU2l6ZSB9OwogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpY29uVVJMID0gaWNvblVSTC5pc29s
YXRlZENvcHkoKSwgaWNvbkRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBwYWdlVVJMID0gcGFnZVVSTC5p
c29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICAgICAg
aWYgKG1fZGIuaXNPcGVuKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmgKaW5kZXggMGU3YmNjN2VjNjNkZjI1MjcyZmNjNTEzODYxZmNiOTgx
Yzg0ZWM3My4uZDAyMWUyY2Q5MGQzY2U5MzljZmU0NDM4MWU2ZWYwMmNmMmM2N2NiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tJY29uVVJMQW5kU2V0UGFnZVVSTElm
TmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxv
d0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgYm9vbCk+JiYpOwog
ICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIEFsbG93RGF0YWJhc2VX
cml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJiYp
PiYmKTsKICAgICBTdHJpbmcgaWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAg
dm9pZCBzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2ln
bmVkIGNoYXIqLCBzaXplX3QsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdy
aXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHNldEljb25G
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdWludDhfdCosIHNpemVfdCwg
Y29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIAogcHJpdmF0ZToKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
Om9wdGlvbmFsPGludDY0X3Q+IGljb25JREZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgYm9vbCYg
ZXhwaXJlZCk7CiAgICAgYm9vbCBzZXRJY29uSURGb3JQYWdlVVJMKGludDY0X3QsIGNvbnN0IFN0
cmluZyYpOwogICAgIFZlY3Rvcjx1aW50OF90PiBpY29uRGF0YShpbnQ2NF90KTsKLSAgICBzdGQ6
Om9wdGlvbmFsPGludDY0X3Q+IGFkZEljb24oY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPGNo
YXI+Jik7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBhZGRJY29uKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogICAgIHZvaWQgdXBkYXRlSWNvblRpbWVzdGFtcChp
bnQ2NF90IGljb25JRCwgaW50NjRfdCB0aW1lc3RhbXApOwogICAgIHZvaWQgZGVsZXRlSWNvbihp
bnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggMDJiYzcxNmJiNTdkMmY1
OGYyOGQ1OWU1ODgwYzdiMjRhMTAwYjA2MC4uZjdkNzIzYzYzYmZjNjJhYzU3YWFhMDM1YWYyZWM1
OGRkZjEyNGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC0xMjYsNyArMTI2LDcg
QEAgdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewogICAgIEFTU0VSVChjbGllbnQoKSk7CiAgICAg
aWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQotICAgICAgICBjbGllbnQtPnBhcnNl
V2ViVlRUQ3VlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgY2xpZW50LT5wYXJzZVdlYlZUVEN1ZURhdGEoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpw
YXJzZVdlYlZUVEN1ZURhdGFTdHJ1Y3QoSVNPV2ViVlRUQ3VlJiYgY3VlRGF0YSkKQEAgLTE0MCw3
ICsxNDAsNyBAQCB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OmFkZERhdGFDdWUoTWVkaWFU
aW1lJiYgc3RhcnQsIE1lZGlhVGltZSYmIGVuZCwgSVBDOgogewogICAgIEFTU0VSVChjbGllbnQo
KSk7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQotICAgICAgICBjbGll
bnQtPmFkZERhdGFDdWUoV1RGTW92ZShzdGFydCksIFdURk1vdmUoZW5kKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGNs
aWVudC0+YWRkRGF0YUN1ZShXVEZNb3ZlKHN0YXJ0KSwgV1RGTW92ZShlbmQpLCBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3Bw
CmluZGV4IDc4NDFhOGYzYjY5NmFjZDVkMWE5MjQwZDdkMWI1MTNlYjlhYzY5MzMuLmRkNTZlNzRl
ZWVkY2NhMzAzMDI2YzI5NTMzYWY4M2E2OTc3ZTE2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJvCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViU29ja2V0Q2hhbm5lbCh3ZWJQYWdlUHJveHlJRCwgZG9jdW1lbnQsIGNsaWVudCkpOwogfQog
Ci12b2lkIFdlYlNvY2tldENoYW5uZWw6Om5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6
T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6bm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BD
b2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIFdlYlNvY2tl
dEZyYW1lIGZyYW1lKG9wQ29kZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGRhdGEsIGxlbmd0aCk7CiAg
ICAgbV9pbnNwZWN0b3IuZGlkU2VuZFdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGZy
YW1lKTsKQEAgLTU2LDEwICs1NiwxMCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6Om5vdGlmeVNl
bmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhcgogTmV0d29y
a1NlbmRRdWV1ZSBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUoRG9jdW1lbnQm
IGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsJiBjaGFubmVsKQogewogICAgIHJldHVybiB7IGRv
Y3VtZW50LCBbJmNoYW5uZWxdKGF1dG8mIHV0ZjhTdHJpbmcpIHsKLSAgICAgICAgY2hhbm5lbC5u
b3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgdXRmOFN0
cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBjaGFubmVsLm5vdGlm
eVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVu
Z3RoKCkpOwogICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29j
a2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5n
dGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0sIFsmY2hhbm5lbF0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsKLSAgICAgICAgY2hhbm5lbC5ub3Rp
ZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGNoYW5u
ZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwg
ZGF0YSwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6
Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRh
dGEsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKICAgICB9LCBbJmNoYW5uZWxdKEV4Y2Vw
dGlvbkNvZGUgZXhjZXB0aW9uQ29kZSkgewogICAgICAgICBhdXRvIGNvZGUgPSBzdGF0aWNfY2Fz
dDxpbnQ+KGV4Y2VwdGlvbkNvZGUpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZGlkQ29ubmVjdChTdHJpbmcmJiBzdWJwcm90b2NvbCwgU3RyaW5nJiYgZXh0ZW5z
aW9ucykKICAgICBtX2NsaWVudC0+ZGlkQ29ubmVjdCgpOwogfQogCi1zdGF0aWMgaW5saW5lIFdl
YlNvY2tldEZyYW1lIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlKQor
c3RhdGljIGlubGluZSBXZWJTb2NrZXRGcmFtZSBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYklu
c3BlY3Rvcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlIG9wQ29kZSkKIHsKICAgICAvLyBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gc2lu
Y2UgZnJhbWVzIGNhbiBiZSBtZXJnZWQgb24gYSBzaW5nbGUgbWVzc2FnZS4KICAgICBXZWJTb2Nr
ZXRGcmFtZSBmcmFtZTsKQEAgLTI5NCw3ICsyOTQsOCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmRpZFJlY2VpdmVUZXh0KFN0cmluZyYmIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5n
ZXQoKSwgY3JlYXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IobWVzc2FnZS51dGY4KCku
ZGF0YSgpLCBtZXNzYWdlLnV0ZjgoKS5sZW5ndGgoKSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6
T3BDb2RlVGV4dCkpOworICAgIGF1dG8gdXRmOE1lc3NhZ2UgPSBtZXNzYWdlLnV0ZjgoKTsKKyAg
ICBtX2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwg
Y3JlYXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4odXRmOE1lc3NhZ2UuZGF0YSgpKSwgdXRmOE1lc3NhZ2UubGVuZ3RoKCksIFdl
YlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQpKTsKIAogICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKIH0KQEAgLTMxNSw3ICszMTYsNyBAQCB2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSYmIGRh
dGEpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luc3BlY3Rvci5kaWRSZWNlaXZl
V2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3JlYXRlV2ViU29ja2V0RnJhbWVGb3JX
ZWJJbnNwZWN0b3IocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5KSk7CisgICAg
bV9pbnNwZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNy
ZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5KSk7CiAKICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoZGF0YS52ZWN0b3IoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMDk0
YmFmNjFmNTQ0M2JmM2U5YjI2ZTk1NGZhZThkNjU0YzBkZTVkNC4uNzI0MTdlMjMyNjI0MTI3Y2M1
ZGFlZDM0NTE3NmRmYTNhMWY0ZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSBmaW5hbCB7IHJlZigp
OyB9CiAgICAgdm9pZCBkZXJlZlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgZmluYWwgeyBk
ZXJlZigpOyB9CiAKLSAgICB2b2lkIG5vdGlmeVNlbmRGcmFtZShXZWJDb3JlOjpXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICB2b2lk
IG5vdGlmeVNlbmRGcmFtZShXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKICAgICB2b2lkIGxvZ0Vycm9yTWVzc2FnZShj
b25zdCBTdHJpbmcmKTsKIAogICAgIC8vIE1lc3NhZ2UgcmVjZWl2ZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAppbmRleCAz
YjRhYzI5YjBkZjc2NWMyNDlmNzcyNTcxZjQ5NDY2YzU4OWU3MWE4Li4wNWI0ZDc1OTI3NjI4MjI2
ZWI0MDQ2OGU4NTFkMDMyNmE5NWEzYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2
b2lkIFdlYlNvY2tldFN0cmVhbTo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oKQogCiB2b2lkIFdlYlNv
Y2tldFN0cmVhbTo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKQogewotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRh
KCp0aGlzLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcywg
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXRTdHJlYW06OmRp
ZEZhaWxUb1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3Zl
cnJpZGVzLmNwcAppbmRleCA2OWYwYWU4Mjc5NTA3YjcyOTY1ZjY1YzIxNjg3M2M0ODFhZGY0ZDYw
Li40NjY5MzllZjE4N2I0YTUwZjczMjBlZGYyYzYxNmMyY2RjZmY1NDkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJy
aWRlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCkBAIC05NywxNiArOTcsNCBAQCBib29sIFdlYlBhc3Rl
Ym9hcmRPdmVycmlkZXM6OmdldERhdGFGb3JPdmVycmlkZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYlBhc3RlYm9hcmRPdmVy
cmlkZXM6OmdldERhdGFGb3JPdmVycmlkZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFZlY3RvcjxjaGFyPiYgZGF0YSkgY29uc3QKLXsKLSAgICBWZWN0
b3I8dWludDhfdD4gZm91bmRCdWZmZXI7Ci0gICAgaWYgKCFnZXREYXRhRm9yT3ZlcnJpZGUocGFz
dGVib2FyZE5hbWUsIHR5cGUsIGZvdW5kQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgZGF0YS5yZXNpemUoZm91bmRCdWZmZXIuc2l6ZSgpKTsKLSAgICBtZW1jcHkoZGF0YS5k
YXRhKCksIGZvdW5kQnVmZmVyLmRhdGEoKSwgZm91bmRCdWZmZXIuc2l6ZSgpKTsKLQotICAgIHJl
dHVybiB0cnVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVz
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2Fy
ZE92ZXJyaWRlcy5oCmluZGV4IGVjMDkzM2U1MTI1ZTc5NjA0NGNiODJjMzhiMjRjNWIyMmVkZWI2
YzcuLmE4Njc3ZmU1NmZkOWFjMTFjMjQ5Y2FhOGRmZjg4MDUzMGIwM2FlNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3Zl
cnJpZGVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBhc3RlYm9hcmRPdmVycmlkZXMuaApAQCAtNDMsNyArNDMsNiBAQCBwdWJsaWM6CiAgICAgVmVj
dG9yPFN0cmluZz4gb3ZlcnJpZGRlblR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwogCiAgICAgYm9vbCBnZXREYXRhRm9yT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdDsKLSAgICBi
b29sIGdldERhdGFGb3JPdmVycmlkZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFZlY3RvcjxjaGFyPiYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdl
YlBhc3RlYm9hcmRPdmVycmlkZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggMjBlMWNlZGI4OTc1ZGI2NDAxZjRjMTQxMWRlZmExZGQ5Mjk5
YzU4YS4uZjAwMWE2Y2NmYWQyZGU4ZjRkYjA1YjgxNWUxZTE3YjUzODkzZjYyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc2MDksNyArNzYw
OSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4
KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQCiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdo
dFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hh
cmVkTWVtb3J5LT5zaXplKCkpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6
IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRT
dG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNo
YXJlZE1lbW9yeS0+c2l6ZSgpKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMg
OiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwogICAgICAgICBpKys7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCAxZDI3MDJhZGIw
ODI3N2M0NDUwOGQzZGZiZGM0Mjc5ODZkY2ZjMjJmLi45NzA3ZmZhMWM2Nzc1OTM3MGFlZTIzMmQ4
ODEzMmY1MjUwM2E2YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
b3dubG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9h
ZENGTmV0LmNwcApAQCAtMTYwLDE0ICsxNjAsMTQgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6aW5p
dFRvUmVzdW1lV2l0aEJ1bmRsZShfSW5fIEJTVFIgYnVuZGxlUGF0aCwgX0luX29wdF8gSVdlYkQK
IHsKICAgICBMT0coRG93bmxvYWQsICJBdHRlbXB0aW5nIHJlc3VtZSBvZiBkb3dubG9hZCBidW5k
bGUgJXMiLCBTdHJpbmcoYnVuZGxlUGF0aCwgU3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKS5hc2Np
aSgpLmRhdGEoKSk7CiAKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgIFZlY3Rvcjx1aW50
OF90PiBidWZmZXI7CiAgICAgaWYgKCFEb3dubG9hZEJ1bmRsZTo6ZXh0cmFjdFJlc3VtZURhdGEo
U3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSksIGJ1ZmZlcikpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSBieSBzb21lIHR3
aXN0IG9mIGZhdGUgdGhlIGJ1bmRsZSBtYWdpYyBudW1iZXIgd2FzIG5hdHVyYWxseSBhdCB0aGUg
ZW5kIG9mIHRoZSBmaWxlIGFuZCBpdHMgbm90IGFjdHVhbGx5IGEgdmFsaWQgYnVuZGxlLgogICAg
IC8vIFRoYXQsIG9yIHNvbWVvbmUgZW5naW5lZXJlZCBpdCB0aGF0IHdheSB0byB0cnkgdG8gYXR0
YWNrIHVzLiBJbiB0aGF0IGNhdXNlLCB0aGlzIENGRGF0YSB3aWxsIHN1Y2Nlc3NmdWxseSBjcmVh
dGUgYnV0IHdoZW4gd2UgYWN0dWFsbHkKICAgICAvLyB0cnkgdG8gc3RhcnQgdGhlIENGVVJMRG93
bmxvYWQgdXNpbmcgdGhpcyBib2d1cyBkYXRhLCBpdCB3aWxsIGZhaWwgYW5kIHdlIHdpbGwgaGFu
ZGxlIHRoYXQgZ3JhY2VmdWxseS4KLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1bWVEYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpKSk7CisgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gcmVzdW1lRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpKTsKIAogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CkBAIC0yNTIsNyArMjUyLDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6Y2FuY2VsRm9yUmVz
dW1lKCkKICAgICAgICAgZ290byBleGl0OwogICAgIH0KIAotICAgIGNvbnN0IGNoYXIqIHJlc3Vt
ZUJ5dGVzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihy
ZXN1bWVEYXRhLmdldCgpKSk7CisgICAgYXV0byogcmVzdW1lQnl0ZXMgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihDRkRhdGFHZXRCeXRlUHRyKHJlc3VtZURhdGEuZ2V0KCkpKTsK
ICAgICB1aW50MzJfdCByZXN1bWVMZW5ndGggPSBDRkRhdGFHZXRMZW5ndGgocmVzdW1lRGF0YS5n
ZXQoKSk7CiAgICAgRG93bmxvYWRCdW5kbGU6OmFwcGVuZFJlc3VtZURhdGEocmVzdW1lQnl0ZXMs
IHJlc3VtZUxlbmd0aCwgbV9idW5kbGVQYXRoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCmluZGV4IGZjNzNiZjI4Y2FlZDA2MDY4MjQ0
ODA1MGRjMWM2ZjhjNGEzNDk5YWMuLjVjOTEyNTc3MjUyNjllYmIzNDI1MDNjYzcxMDMxOTRjMzEx
NWU1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVx
dWVzdC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0
OjpzZXRIVFRQQm9keShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCiAgICAgc2l6ZV90IGxlbmd0aCA9IHN0YXQuY2JTaXplLkxvd1BhcnQ7Ci0gICAgVmVj
dG9yPGNoYXI+IHZlY3RvcihsZW5ndGgpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IobGVu
Z3RoKTsKICAgICBVTE9ORyBieXRlc1JlYWQgPSAwOwogICAgIGlmIChGQUlMRUQoZGF0YS0+UmVh
ZCh2ZWN0b3IuZGF0YSgpLCBzdGF0LmNiU2l6ZS5Mb3dQYXJ0LCAmYnl0ZXNSZWFkKSkpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGY2
ZDViNTZlYmU3OWRmZTM0MDM5YjdiNWQzOWY5NWRmMTg4NDExYTcuLmVjZTg0ZjhlNWU1M2I3Mzlh
YTM4Nzk3ZWU1OWZkODUwNjk2NTE2Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3Bw
CkBAIC0zMTIsOCArMzEyLDggQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QXVkaW9SZXN1bHRDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3QKICAgICBKU0M6OkpT
QXJyYXlCdWZmZXJWaWV3KiBqc0J1ZmZlclZpZXcgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpK
U0FycmF5QnVmZmVyVmlldyo+KHZtLCB0b0pTKHRvSlMoY29udGV4dCksIGFyZ3VtZW50c1swXSkp
OwogICAgIEFTU0VSVChqc0J1ZmZlclZpZXcpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4gYnVmZmVyVmlldyA9IGpzQnVmZmVyVmlldy0+dW5zaGFyZWRJbXBsKCk7Ci0gICAgY29u
c3QgY2hhciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlclZpZXctPmJh
c2VBZGRyZXNzKCkpOwotICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGF1ZGlvRGF0YShidWZmZXIsIGJ1
ZmZlciArIGJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSk7CisgICAgY29uc3QgdWludDhfdCogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNz
KCkpOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGF1ZGlvRGF0YShidWZmZXIsIGJ1ZmZlciAr
IGJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVy
ID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7CiAgICAgY29udHJvbGxlci0+c2V0QXVkaW9SZXN1bHQoYXVkaW9EYXRhKTsKQEAgLTIzNjcs
OCArMjM2Nyw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXNNZWRpYUljb24o
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbWVkCiAgICAgSlNDOjpKU0FycmF5QnVm
ZmVyVmlldyoganNCdWZmZXJWaWV3ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXcqPih2bSwgdG9KUyh0b0pTKGNvbnRleHQpLCBtZWRpYUljb24pKTsKICAgICBBU1NF
UlQoanNCdWZmZXJWaWV3KTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IGJ1ZmZl
clZpZXcgPSBqc0J1ZmZlclZpZXctPnVuc2hhcmVkSW1wbCgpOwotICAgIGNvbnN0IGNoYXIqIGJ1
ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygp
KTsKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBtZWRpYUljb25EYXRhKGJ1ZmZlciwgYnVmZmVyICsg
YnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBjb25zdCB1aW50OF90KiBidWZmZXIgPSBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyVmlldy0+YmFzZUFkZHJlc3MoKSk7Cisg
ICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gbWVkaWFJY29uRGF0YShidWZmZXIsIGJ1ZmZlciArIGJ1
ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSk7CiAgICAgCiAgICAgbV9vcGVuUGFuZWxGaWxlc01lZGlh
SWNvbiA9IG1lZGlhSWNvbkRhdGE7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKaW5kZXgg
M2UwYTY3N2UwODc0NjIxYWI1NDg2ODYzZDEyZTQ3ODhjZjU2ZWU1Zi4uMmUwNDk0ZTMwZjNmMGIz
YTc0MjJlZTc1OTNmN2U3ZjNkNjU3ZDBjOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaApA
QCAtMjk5LDggKzI5OSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdFVSTDsgfQogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBl
eHBlY3RlZFBpeGVsSGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0ZWRQaXhlbEhhc2g7IH0K
IAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNoYXI+JiBhdWRpb1Jlc3VsdCgpIGNvbnN0IHsgcmV0
dXJuIG1fYXVkaW9SZXN1bHQ7IH0KLSAgICB2b2lkIHNldEF1ZGlvUmVzdWx0KGNvbnN0IHN0ZDo6
dmVjdG9yPGNoYXI+JiBhdWRpb0RhdGEpIHsgbV9hdWRpb1Jlc3VsdCA9IGF1ZGlvRGF0YTsgfQor
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBhdWRpb1Jlc3VsdCgpIGNvbnN0IHsgcmV0
dXJuIG1fYXVkaW9SZXN1bHQ7IH0KKyAgICB2b2lkIHNldEF1ZGlvUmVzdWx0KGNvbnN0IHN0ZDo6
dmVjdG9yPHVpbnQ4X3Q+JiBhdWRpb0RhdGEpIHsgbV9hdWRpb1Jlc3VsdCA9IGF1ZGlvRGF0YTsg
fQogCiAgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRyeShKU1N0cmluZ1JlZiBz
b3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEpTU3RyaW5nUmVm
IGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAg
dm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VP
cmlnaW4sIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEpTU3RyaW5nUmVmIGRlc3Rp
bmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC0zNzcsNyAr
Mzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3BlblBhbmVsRmlsZXMoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8Y2hhcj4mIG9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKCkgY29uc3QgeyByZXR1cm4g
bV9vcGVuUGFuZWxGaWxlc01lZGlhSWNvbjsgfQorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4
X3Q+JiBvcGVuUGFuZWxGaWxlc01lZGlhSWNvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVs
RmlsZXNNZWRpYUljb247IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAjZW5kaWYKIApAQCAtNDY4LDcgKzQ2OCw3IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJI
ZWFkZXJzOwogICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtX2FsbG93ZWRIb3N0czsKIAotICAg
IHN0ZDo6dmVjdG9yPGNoYXI+IG1fYXVkaW9SZXN1bHQ7CisgICAgc3RkOjp2ZWN0b3I8dWludDhf
dD4gbV9hdWRpb1Jlc3VsdDsKIAogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmlu
Zz4gbV9VUkxzVG9SZWRpcmVjdDsKIApAQCAtNDgyLDcgKzQ4Miw3IEBAIHByaXZhdGU6CiAKICAg
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbV9vcGVuUGFuZWxGaWxlczsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIHN0ZDo6dmVjdG9yPGNoYXI+IG1fb3BlblBhbmVsRmlsZXNNZWRp
YUljb247CisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gbV9vcGVuUGFuZWxGaWxlc01lZGlhSWNv
bjsKICNlbmRpZgogCiAgICAgc3RhdGljIEpTUmV0YWluUHRyPEpTQ2xhc3NSZWY+IGNyZWF0ZUpT
Q2xhc3MoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KaW5kZXggYmJhNTNi
ZGJmOTRlMTliM2Y3NTcwMGVjYWJhYTFjODdlZjRmYzJkOC4uMjdmMjYxNDQ1ZTJlZmVkOTNhN2I1
NTNiZWFkMDNlNGU0OTU0ZTg3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUu
bW0KQEAgLTM5Niw3ICszOTYsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIg
cnVuT3BlblBhbmVsRm9yRmlsZUJ1dHRvbldpdGhSZXN1bHRMaXN0ZW5lcjooaQogICAgIGF1dG8m
IGljb25EYXRhID0gZ1Rlc3RSdW5uZXItPm9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKCk7CiAgICAg
Q0dJbWFnZVJlZiBpbWFnZVJlZiA9IG51bGxwdHI7CiAgICAgaWYgKCFpY29uRGF0YS5lbXB0eSgp
KSB7Ci0gICAgICAgIGF1dG8gZGF0YVJlZiA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihpY29uRGF0YS5kYXRhKCkpLCBpY29uRGF0
YS5zaXplKCkpKTsKKyAgICAgICAgYXV0byBkYXRhUmVmID0gYWRvcHRDRihDRkRhdGFDcmVhdGUo
bnVsbHB0ciwgaWNvbkRhdGEuZGF0YSgpLCBpY29uRGF0YS5zaXplKCkpKTsKICAgICAgICAgYXV0
byBpbWFnZVByb3ZpZGVyUmVmID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRh
dGEoZGF0YVJlZi5nZXQoKSkpOwogICAgICAgICBpbWFnZVJlZiA9IENHSW1hZ2VDcmVhdGVXaXRo
SlBFR0RhdGFQcm92aWRlcihpbWFnZVByb3ZpZGVyUmVmLmdldCgpLCBudWxscHRyLCB0cnVlLCBr
Q0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430673</attachid>
            <date>2021-06-05 21:12:15 -0700</date>
            <delta_ts>2021-06-05 22:25:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226688-20210605211215.patch</filename>
            <type>text/plain</type>
            <size>128066</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZkOWY1ZDhmM2EzMjQx
MWM5YTUzODM1NTU4YjFjMTRkMzBmOTE3ZS4uNjk4YTQzMjcxYTQ0MTRjZWQ1YWVkNDE2MjY4YTUx
ZjYyNGI4MjE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wNi0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBgY29uc3QgdWludDhf
dCpgIHR5cGUgbW9yZSBjb25zaXN0ZW50bHkgdG8gc3RvcmUgYnl0ZXMgaW4gV2ViS2l0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2ODgKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
OjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpP
bk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNldFN0cmVhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZs
YXRlcjo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmFk
ZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0SW5mbGF0ZXI6OmRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6cGFy
c2VGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRGcmFtZVBheWxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0RnJhbWU6OldlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaW1JbnB1dFNh
bXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJI
YW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU3Rh
dHVzTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQ
SGVhZGVycyk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6QnJpZGdlOjpzZW5kKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9T
ZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjp3
cml0ZUFsbFRvRmlsZSk6CisgICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogY3J5cHRv
L21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRNYXN0ZXJLZXkpOgorICAgICAgICAqIGRvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5
dGVzKToKKyAgICAgICAgKiBkb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGRvbS9SYXdEYXRhRG9jdW1lbnRQ
YXJzZXIuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAgICAqIGh0bWwv
TWVkaWFEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURvY3VtZW50UGFyc2Vy
OjphcHBlbmRCeXRlcyk6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMpOgorICAgICAg
ICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9J
bmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRU
VGV4dFRyYWNrOjpwYXJzZVdlYlZUVEN1ZURhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5i
YW5kV2ViVlRUVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpwYXJzZUJ5dGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6ZmlsZUZpbmlzaGVkKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmg6CisgICAgICAgICogbG9hZGVyL1NpbmtEb2N1bWVu
dC5jcHA6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltSW5wdXRTYW1wbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyc2VIVFRQSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJlcXVl
c3RCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpk
YXRhQ2hhbmdlZCk6CisKIDIwMjEtMDYtMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBNb3ZlIERhdGFEZXRlY3RvcnMgc29mdGxpbmtp
bmcgaW4gRGF0YURldGVjdG9yc1NQSS5oIG91dCBpbnRvIGEgc2VwYXJhdGUgUEFMIGhlYWRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBiMmZkNzU1Y2Q4MThiZTVlNDg3MDgwNmZmNjA1MWE4Y2M4MjMxNTVlLi45ZTI2
NTM4MGFiZGNlNjRkZGI0MWIxNjM2NGUyZGIyMzQ1YTYwMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIxLTA2LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgVXNlIGBjb25zdCB1aW50OF90KmAgdHlwZSBtb3JlIGNvbnNpc3RlbnRseSB0byBzdG9y
ZSBieXRlcyBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjY4OAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdlYlZUVEN1ZURhdGEpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6cGFyc2VXZWJWVFRDdWVEYXRh
KToKKwogMjAyMS0wNi0wNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbbWFjT1NdIERpY3Rpb25hcnkgbG9va3VwIGhpZ2hsaWdodHMgaW4gaW1hZ2Ug
b3ZlcmxheXMgc2hvdWxkIGluY2x1ZGUgYmFja2dyb3VuZCBjb250ZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9nbGliL1NvY2tldENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL2ds
aWIvU29ja2V0Q29ubmVjdGlvbi5oCmluZGV4IGRiNzg2ZDMyOTg1NjZjNGIwYmE3NzM5ODIzMDI5
Zjg1NTYyMTc3MDMuLjViZTVhY2JiYTIzYzI0ODdjODNlN2EyNTI5ZGQ2NmNkYWY2MTY5ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2dsaWIvU29ja2V0Q29ubmVjdGlvbi5oCkBAIC01OSw5ICs1OSw5IEBAIHBy
aXZhdGU6CiAgICAgR1JlZlB0cjxHU29ja2V0Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAg
IGNvbnN0IE1lc3NhZ2VIYW5kbGVycyYgbV9tZXNzYWdlSGFuZGxlcnM7CiAgICAgZ3BvaW50ZXIg
bV91c2VyRGF0YTsKLSAgICBWZWN0b3I8Y2hhcj4gbV9yZWFkQnVmZmVyOworICAgIFZlY3Rvcjxn
Y2hhcj4gbV9yZWFkQnVmZmVyOwogICAgIEdTb2NrZXRNb25pdG9yIG1fcmVhZE1vbml0b3I7Ci0g
ICAgVmVjdG9yPGNoYXI+IG1fd3JpdGVCdWZmZXI7CisgICAgVmVjdG9yPGdjaGFyPiBtX3dyaXRl
QnVmZmVyOwogICAgIEdTb2NrZXRNb25pdG9yIG1fd3JpdGVNb25pdG9yOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAxMGY4OGIxODhhMTYxZDgx
ZDYzMTdjMmY4YTQ2NWI1ZDgxNTk2YWI4Li4yNWY3NmE1OTQyMTljOTYzZmMzMzY1YWEzNWI1Y2Yy
NThlNDQzNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApA
QCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdElu
Zm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFs
dWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNpemUpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEsIGNodW5rLT5zaXplKTsKICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYm
IGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVl
KCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNpemUpOworICAgICAgICAgICAgICAgIGRhdGEt
PmFwcGVuZChjaHVuay0+ZGF0YSwgY2h1bmstPnNpemUpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHsgV1RGTW92ZShkYXRhKSB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDg4YTY3ZTM1NTRhYTQ4
Y2MyM2IyMmM1MjEwNmNhZmMxODlmMWU5N2EuLjJhYjBjYWYxMDBkMGMzMTM4YzJiNjI2NDNkNzNi
MjFlYzZiZTllYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmlu
ZyYgY28KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1
bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oY2h1bmstPmRhdGEpLCBjaHVuay0+c2l6ZSk7CisgICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhLCBjaHVuay0+c2l6ZSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3Zl
KHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CkBA
IC0zMjEsNyArMzIxLDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICB9CiB9CiAKLXZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBz
aXplKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUpCiB7CiAgICAgaWYgKG1fc291cmNlKSB7CiAgICAgICAgIG1fc291cmNl
LT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwpAQCAtMzM0LDEx
ICszMzQsNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgdW5zaWduZWQgc2l6ZSkKICAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOwogfQog
Ci12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgc2l6ZSkKLXsKLSAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSksIHNpemUpOwotfQotCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRl
eCAzN2QwNTRiMTBjZThkYmVkMTkxYzdiODVmODgxZGVlNDZlMDRiMGQyLi4xYjYyNzY2M2JkZDJh
NTkwOWNlMWVjM2VmN2E5ODJiMjQ5ZDc1Y2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC00Niw4ICs0Niw3IEBAIHB1YmxpYzoK
IAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlw
ZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCk7Ci0g
ICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQpOworICAg
IHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wg
aGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggYjM5Nzg2
OTVmZDdlZjE5MjE0YjZiOTAxYThmM2YxYTk2ZWUwZTBlYy4uZGUxM2MxNzRkMzAzMDk2ZmZlM2Ni
Y2UwNDYwOWNjMjk0ZDBlZjUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRMb2NrIH07CiAgICAgaWYgKCFt
X2NsaWVudCkgewotICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oYnVmZmVyLmRhdGEuZGF0YTxjaGFyPigpKTsKKyAgICAgICAgYXV0byogZGF0
YSA9IGJ1ZmZlci5kYXRhLmRhdGE8dWludDhfdD4oKTsKICAgICAgICAgaWYgKGJ1ZmZlci5iaW5h
cnkpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkTWVzc2FnZXMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIGJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IDczZTEwNTAxOGQ4YTI2N2NhYmQ0MmY1MzFiZmY4NGU0MDM0ZTUwMWMuLjNlMjRlYTZmNjU0
ZjkyMWU0ODQxN2ZlMGVmYzRjMjhjNGMyNTc5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE1Nyw3ICsx
NTcsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRD
aGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzcwogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYg
YmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsK
ICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgQXJy
YXlCdWZmZXIgJXAgYnl0ZU9mZnNldD0ldSBieXRlTGVuZ3RoPSV1IiwgdGhpcywgJmJpbmFyeURh
dGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwotICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2Nr
ZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0
YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CisgICAgZW5xdWV1ZVJhd0ZyYW1l
KFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAgICBwcm9j
ZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7CiAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kU3VjY2VzczsKIH0KQEAgLTE3MCw5ICsxNzAsOSBAQCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKEJsb2ImIGJp
bmFyeURhdGEpCiAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3Vj
Y2VzczsKIH0KIAotYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgc2VuZCgpIFNlbmRpbmcgY2hhciogZGF0YT0lcCBsZW5ndGg9JWQiLCB0aGlzLCBkYXRhLCBs
ZW5ndGgpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kKCkgU2Vu
ZGluZyB1aW50OF90KiBkYXRhPSVwIGxlbmd0aD0lZCIsIHRoaXMsIGRhdGEsIGxlbmd0aCk7CiAg
ICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIGRhdGEsIGxl
bmd0aCk7CiAgICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwogICAgIHJldHVybiB0cnVl
OwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2Nr
ZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUpCiAgICAgZGVyZWYoKTsKIH0KIAot
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3Zv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3Ry
ZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7
CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFJlY2VpdmVTb2NrZXRT
dHJlYW1EYXRhKCkgUmVjZWl2ZWQgJXp1IGJ5dGVzIiwgdGhpcywgbGVuZ3RoKTsKICAgICBSZWY8
V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2Fu
IGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVu
Y2UuCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsKEV4
Y2VwdGlvbkNvZGUgZXJyb3JDb2RlKQogICAgIGRlcmVmKCk7CiB9CiAKLWJvb2wgV2ViU29ja2V0
Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbikKK2Jv
b2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGxlbikKIHsKICAgICBzaXplX3QgbmV3QnVmZmVyU2l6ZSA9IG1fYnVmZmVyLnNpemUo
KSArIGxlbjsKICAgICBpZiAobmV3QnVmZmVyU2l6ZSA8IG1fYnVmZmVyLnNpemUoKSkgewpAQCAt
NDg4LDE0ICs0ODgsMTQgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5k
c2hha2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogICAgICAgICByZXR1cm47CiAg
ICAgQVNTRVJUKG1faGFuZGxlKTsKIAotICAgIFZlY3RvcjxjaGFyPiBidWY7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZjsKICAgICBpZiAoIW1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlICYmIGNv
ZGUgIT0gQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hh
ciBoaWdoQnl0ZSA9IGNvZGUgPj4gODsKLSAgICAgICAgdW5zaWduZWQgY2hhciBsb3dCeXRlID0g
Y29kZTsKLSAgICAgICAgYnVmLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPihoaWdoQnl0ZSkpOwot
ICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KGxvd0J5dGUpKTsKKyAgICAgICAg
dWludDhfdCBoaWdoQnl0ZSA9IGNvZGUgPj4gODsKKyAgICAgICAgdWludDhfdCBsb3dCeXRlID0g
Y29kZTsKKyAgICAgICAgYnVmLmFwcGVuZChoaWdoQnl0ZSk7CisgICAgICAgIGJ1Zi5hcHBlbmQo
bG93Qnl0ZSk7CiAgICAgICAgIGF1dG8gcmVhc29uVVRGOCA9IHJlYXNvbi51dGY4KCk7Ci0gICAg
ICAgIGJ1Zi5hcHBlbmQocmVhc29uVVRGOC5kYXRhKCksIHJlYXNvblVURjgubGVuZ3RoKCkpOwor
ICAgICAgICBidWYuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlYXNv
blVURjguZGF0YSgpKSwgcmVhc29uVVRGOC5sZW5ndGgoKSk7CiAgICAgfQogICAgIGVucXVldWVS
YXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQ2xvc2UsIGJ1Zi5kYXRhKCksIGJ1Zi5zaXpl
KCkpOwogICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8g
QW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFuZHNoYWtlIG1heSBmYWlsLCB3aGljaCB3aWxs
IGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KQEAgLTUyNCw3ICs1MjQs
NyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgQVNTRVJUKCFt
X2J1ZmZlci5pc0VtcHR5KCkpOwogCiAgICAgV2ViU29ja2V0RnJhbWUgZnJhbWU7Ci0gICAgY29u
c3QgY2hhciogZnJhbWVFbmQ7CisgICAgY29uc3QgdWludDhfdCogZnJhbWVFbmQ7CiAgICAgU3Ry
aW5nIGVycm9yU3RyaW5nOwogICAgIFdlYlNvY2tldEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IHJl
c3VsdCA9IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZyYW1lKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZm
ZXIuc2l6ZSgpLCBmcmFtZSwgZnJhbWVFbmQsIGVycm9yU3RyaW5nKTsKICAgICBpZiAocmVzdWx0
ID09IFdlYlNvY2tldEZyYW1lOjpGcmFtZUluY29tcGxldGUpCkBAIC02NTYsOSArNjU2LDcgQEAg
Ym9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAgICAgICAgICAgZmFpbCgi
UmVjZWl2ZWQgYSBicm9rZW4gY2xvc2UgZnJhbWUgY29udGFpbmluZyBhbiBpbnZhbGlkIHNpemUg
Ym9keS4iKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihmcmFtZS5wYXlsb2FkWzBdKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbG93Qnl0
ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGZyYW1lLnBheWxvYWRbMV0pOwotICAgICAg
ICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IGhpZ2hCeXRlIDw8IDggfCBsb3dCeXRlOworICAgICAg
ICAgICAgbV9jbG9zZUV2ZW50Q29kZSA9IGZyYW1lLnBheWxvYWRbMF0gPDwgOCB8IGZyYW1lLnBh
eWxvYWRbMV07CiAgICAgICAgICAgICBpZiAobV9jbG9zZUV2ZW50Q29kZSA9PSBDbG9zZUV2ZW50
Q29kZU5vU3RhdHVzUmN2ZCB8fCBtX2Nsb3NlRXZlbnRDb2RlID09IENsb3NlRXZlbnRDb2RlQWJu
b3JtYWxDbG9zdXJlIHx8IG1fY2xvc2VFdmVudENvZGUgPT0gQ2xvc2VFdmVudENvZGVUTFNIYW5k
c2hha2UpIHsKICAgICAgICAgICAgICAgICBtX2Nsb3NlRXZlbnRDb2RlID0gQ2xvc2VFdmVudENv
ZGVBYm5vcm1hbENsb3N1cmU7CiAgICAgICAgICAgICAgICAgZmFpbCgiUmVjZWl2ZWQgYSBicm9r
ZW4gY2xvc2UgZnJhbWUgY29udGFpbmluZyBhIHJlc2VydmVkIHN0YXR1cyBjb2RlLiIpOwpAQCAt
NzE0LDcgKzcxMiw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZShj
b25zdCBDU3RyaW5nJiBzdHJpbmcpCiAgICAgbV9vdXRnb2luZ0ZyYW1lUXVldWUuYXBwZW5kKFdU
Rk1vdmUoZnJhbWUpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUoV2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBP
dXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKICAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1
ZWRGcmFtZT4oKTsKQEAgLTc0NSw3ICs3NDMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnBy
b2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICBhdXRvIGZyYW1lID0gbV9vdXRnb2lu
Z0ZyYW1lUXVldWUudGFrZUZpcnN0KCk7CiAgICAgICAgIHN3aXRjaCAoZnJhbWUtPmZyYW1lVHlw
ZSkgewogICAgICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZVN0cmluZzogewotICAgICAgICAgICAg
c2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmRhdGEoKSwgZnJhbWUt
PnN0cmluZ0RhdGEubGVuZ3RoKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2Rl
LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZS0+c3RyaW5nRGF0YS5kYXRh
KCkpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAgICAgICAgICAgIGlmICghc3Vj
Y2VzcykKICAgICAgICAgICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0
IGZyYW1lLiIpOwogICAgICAgICAgICAgfSk7CkBAIC03ODAsNyArNzc4LDcgQEAgdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgICAgICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IG1fYmxvYkxvYWRlci0+YXJyYXlCdWZmZXJS
ZXN1bHQoKTsKICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBudWxscHRyOwogICAgICAg
ICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9IEJsb2JMb2FkZXJOb3RTdGFydGVkOwotICAg
ICAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAg
ICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
cmVzdWx0LT5kYXRhKCkpLCByZXN1bHQtPmJ5dGVMZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKCJGYWlsZWQgdG8g
c2VuZCBXZWJTb2NrZXQgZnJhbWUuIik7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC04MTMsNyAr
ODExLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjphYm9ydE91dGdvaW5nRnJhbWVRdWV1ZSgp
CiAgICAgfQogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgs
IFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdURjo6RnVuY3Rpb248dm9pZChi
b29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKICAgICBB
U1NFUlQoIW1fc3VzcGVuZGVkKTsKQEAgLTgyNyw3ICs4MjUsNyBAQCB2b2lkIFdlYlNvY2tldENo
YW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hh
ciogZGF0YQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgIH0K
IAotICAgIFZlY3RvcjxjaGFyPiBmcmFtZURhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGZyYW1l
RGF0YTsKICAgICBmcmFtZS5tYWtlRnJhbWVEYXRhKGZyYW1lRGF0YSk7CiAKICAgICBtX2hhbmRs
ZS0+c2VuZERhdGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRhLnNpemUoKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggYTQ2MmUzZTA4ZTA5Mjc5ODcwMWUzN2Ix
YmM0MjEyZDE4NjlhMzE4MC4uMGQwZWQyNmZmNWYxY2YwYzAzNjRlMmY5MmVkMjM2NjA2YTZlMTYw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdl
YlNvY2tldENoYW5uZWw+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQmIGNsaWVudCwgU29ja2V0UHJvdmlkZXImIHByb3ZpZGVyKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlNvY2tldENoYW5uZWwoZG9jdW1lbnQsIGNsaWVudCwgcHJvdmlkZXIpKTsg
fQogICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKIAotICAgIGJvb2wgc2VuZChjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICBib29sIHNlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAvLyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCBm
dW5jdGlvbnMuCiAgICAgQ29ubmVjdFN0YXR1cyBjb25uZWN0KGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpIGZpbmFsOwpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgLy8g
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IGZ1bmN0aW9ucy4KICAgICB2b2lkIGRpZE9wZW5Tb2Nr
ZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVNv
Y2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqLCBzaXpl
X3QpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3Ry
ZWFtSGFuZGxlJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBkaWRG
YWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVhbUhhbmRsZSYsIHNp
emVfdCBidWZmZXJlZEFtb3VudCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsU29ja2V0U3RyZWFt
KFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJikgZmluYWw7CkBA
IC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZlRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsKCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCi0gICAgYm9vbCBhcHBl
bmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKTsKKyAgICBib29sIGFwcGVu
ZFRvQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW4pOwogICAgIHZvaWQgc2tp
cEJ1ZmZlcihzaXplX3QgbGVuKTsKICAgICBib29sIHByb2Nlc3NCdWZmZXIoKTsKICAgICB2b2lk
IHJlc3VtZVRpbWVyRmlyZWQoKTsKQEAgLTE2MCwxMSArMTYwLDExIEBAIHByaXZhdGU6CiAgICAg
ICAgIFF1ZXVlZEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgICAgIC8vIE9ubHkgb25lIG9mIHRo
ZSBmb2xsb3dpbmcgaXRlbXMgaXMgdXNlZCwgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiBmcmFt
ZVR5cGUuCiAgICAgICAgIENTdHJpbmcgc3RyaW5nRGF0YTsKLSAgICAgICAgVmVjdG9yPGNoYXI+
IHZlY3RvckRhdGE7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JEYXRhOwogICAgICAg
ICBSZWZQdHI8QmxvYj4gYmxvYkRhdGE7CiAgICAgfTsKICAgICB2b2lkIGVucXVldWVUZXh0RnJh
bWUoY29uc3QgQ1N0cmluZyYpOwotICAgIHZvaWQgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICB2
b2lkIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBlbnF1ZXVlQmxvYkZyYW1lKFdl
YlNvY2tldEZyYW1lOjpPcENvZGUsIEJsb2ImKTsKIAogICAgIHZvaWQgcHJvY2Vzc091dGdvaW5n
RnJhbWVRdWV1ZSgpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJZiB5
b3UgYXJlIGdvaW5nIHRvIHNlbmQgYSBoeWJpLTEwIGZyYW1lLCB5b3UgbmVlZCB0byB1c2UgdGhl
IG91dGdvaW5nIGZyYW1lIHF1ZXVlCiAgICAgLy8gaW5zdGVhZCBvZiBjYWxsIHNlbmRGcmFtZSgp
IGRpcmVjdGx5LgotICAgIHZvaWQgc2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9v
bCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHNlbmRGcmFtZShXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV1RGOjpG
dW5jdGlvbjx2b2lkKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBlbnVtIEJsb2JM
b2FkZXJTdGF0dXMgewogICAgICAgICBCbG9iTG9hZGVyTm90U3RhcnRlZCwKQEAgLTE5Nyw3ICsx
OTcsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8V2ViU29ja2V0Q2hhbm5lbENsaWVudD4gbV9j
bGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEhhbmRzaGFrZT4gbV9oYW5kc2hh
a2U7CiAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9oYW5kbGU7Ci0gICAgVmVjdG9y
PGNoYXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1ZmZlcjsKIAogICAgIFRp
bWVyIG1fcmVzdW1lVGltZXI7CiAgICAgYm9vbCBtX3N1c3BlbmRlZCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVyLmNwcAppbmRleCAxNGFiODA5NWIyNWNmMTM5NGMwODQ5YTBiMTg3ODE3NGM0NTczM2FkLi5l
NjM1ZTAzMjEzYWE1N2Q0NzYwNDVkNDIwZjIzYzA0MDJlNzM4ZjcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAK
QEAgLTYzLDE1ICs2MywxNSBAQCBXZWJTb2NrZXREZWZsYXRlcjo6fldlYlNvY2tldERlZmxhdGVy
KCkKICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXREZWZsYXRlciAlcCBEZXN0cnVjdG9y
IGRlZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIGlzIHJldHVybmVkIiwgdGhpcywgcmVzdWx0KTsKIH0K
IAotc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtKiBzdHJlYW0sIGNvbnN0
IGNoYXIqIGlucHV0RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBvdXRwdXREYXRhLCBz
aXplX3Qgb3V0cHV0TGVuZ3RoKQorc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3Ry
ZWFtKiBzdHJlYW0sIGNvbnN0IHVpbnQ4X3QqIGlucHV0RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3Ro
LCB1aW50OF90KiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQogewotICAgIHN0cmVh
bS0+bmV4dF9pbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihjb25zdF9jYXN0PGNoYXIqPihp
bnB1dERhdGEpKTsKKyAgICBzdHJlYW0tPm5leHRfaW4gPSBjb25zdF9jYXN0PHVpbnQ4X3QqPihp
bnB1dERhdGEpOwogICAgIHN0cmVhbS0+YXZhaWxfaW4gPSBpbnB1dExlbmd0aDsKLSAgICBzdHJl
YW0tPm5leHRfb3V0ID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KG91dHB1dERhdGEpOworICAg
IHN0cmVhbS0+bmV4dF9vdXQgPSBvdXRwdXREYXRhOwogICAgIHN0cmVhbS0+YXZhaWxfb3V0ID0g
b3V0cHV0TGVuZ3RoOwogfQogCi1ib29sIFdlYlNvY2tldERlZmxhdGVyOjphZGRCeXRlcyhjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9vbCBXZWJTb2NrZXREZWZsYXRlcjo6YWRk
Qnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM3LDcgKzEzNyw3IEBAIFdlYlNvY2tl
dEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIoKQogICAgICAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldEluZmxhdGVyICVwIERlc3RydWN0b3IgaW5mbGF0ZUVuZCgpIGZhaWxlZDogJWQgaXMg
cmV0dXJuZWQiLCB0aGlzLCByZXN1bHQpOwogfQogCi1ib29sIFdlYlNvY2tldEluZmxhdGVyOjph
ZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorYm9vbCBXZWJTb2NrZXRJ
bmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcwLDggKzE3MCw4
IEBAIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCiAKIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmZpbmlzaCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGNoYXIqIHN0cmlwcGVkRmllbGRzID0gIlwwXDBceGZmXHhmZiI7Ci0gICAg
c3RhdGljIGNvbnN0IHNpemVfdCBzdHJpcHBlZExlbmd0aCA9IDQ7CisgICAgY29uc3RleHByIHVp
bnQ4X3Qgc3RyaXBwZWRGaWVsZHNbXSA9IHsgMCwgMCwgMHhGRiwgMHhGRiB9OworICAgIGNvbnN0
ZXhwciBhdXRvIHN0cmlwcGVkTGVuZ3RoID0gc3RkOjpzaXplKHN0cmlwcGVkRmllbGRzKTsKIAog
ICAgIC8vIEFwcGVuZHMgNCBvY3Rlc3RzIG9mIDB4MDAgMHgwMCAweGZmIDB4ZmYKICAgICBzaXpl
X3QgY29uc3VtZWRTb0ZhciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oCmluZGV4IGY2MmRjNTg1YTgzYmUzYTEzOTQx
YjU3YmFmNzI5NjU2YzEzMDQ5MmIuLjhmNDU0ZmIzYjY5NmQ4YmM0M2VmMmFhNTdiMWY3YjA5Y2Uy
NjA5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXREZWZsYXRlci5oCkBAIC00OSwxNiArNDksMTYgQEAgcHVibGljOgogICAgIH5XZWJT
b2NrZXREZWZsYXRlcigpOwogCiAgICAgYm9vbCBpbml0aWFsaXplKCk7Ci0gICAgYm9vbCBhZGRC
eXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOwogICAgIGJvb2wgZmluaXNoKCk7Ci0gICAgY29uc3QgY2hhciogZGF0YSgp
IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSB7
IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLnNpemUoKTsgfQogICAgIHZvaWQgcmVzZXQoKTsKIAogcHJpdmF0ZToKICAg
ICBpbnQgbV93aW5kb3dCaXRzOwogICAgIENvbnRleHRUYWtlT3Zlck1vZGUgbV9jb250ZXh0VGFr
ZU92ZXJNb2RlOwotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhf
dD4gbV9idWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPHpfc3RyZWFtPiBtX3N0cmVhbTsKIH07
CiAKQEAgLTY5LDE1ICs2OSwxNSBAQCBwdWJsaWM6CiAgICAgfldlYlNvY2tldEluZmxhdGVyKCk7
CiAKICAgICBib29sIGluaXRpYWxpemUoKTsKLSAgICBib29sIGFkZEJ5dGVzKGNvbnN0IGNoYXIq
LCBzaXplX3QpOworICAgIGJvb2wgYWRkQnl0ZXMoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAg
ICAgYm9vbCBmaW5pc2goKTsKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9idWZm
ZXIuZGF0YSgpOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVy
LmRhdGEoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6
ZSgpOyB9CiAgICAgdm9pZCByZXNldCgpOwogCiBwcml2YXRlOgogICAgIGludCBtX3dpbmRvd0Jp
dHM7Ci0gICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2J1
ZmZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8el9zdHJlYW0+IG1fc3RyZWFtOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5j
cHAKaW5kZXggZjdmMzY1NzViMjY3NTVjY2I5YTIxZTg5ZTZiYjNlNGQwMmU3MDhiOS4uZTM5ZTAx
OWFlMDJkOTY3MjM4Zjk2NTcyZDUzZWUyM2MzNDU2ZjIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwCkBAIC0zMCwzOSAr
MzAsMzkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ29uc3RhbnRzIGZvciBoeWJpLTEw
IGZyYW1lIGZvcm1hdC4KLWNvbnN0IHVuc2lnbmVkIGNoYXIgZmluYWxCaXQgPSAweDgwOwotY29u
c3QgdW5zaWduZWQgY2hhciBjb21wcmVzc0JpdCA9IDB4NDA7Ci1jb25zdCB1bnNpZ25lZCBjaGFy
IHJlc2VydmVkMkJpdCA9IDB4MjA7Ci1jb25zdCB1bnNpZ25lZCBjaGFyIHJlc2VydmVkM0JpdCA9
IDB4MTA7Ci1jb25zdCB1bnNpZ25lZCBjaGFyIG9wQ29kZU1hc2sgPSAweEY7Ci1jb25zdCB1bnNp
Z25lZCBjaGFyIG1hc2tCaXQgPSAweDgwOwotY29uc3QgdW5zaWduZWQgY2hhciBwYXlsb2FkTGVu
Z3RoTWFzayA9IDB4N0Y7Ci1jb25zdCBzaXplX3QgbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRl
bmRlZExlbmd0aEZpZWxkID0gMTI1OwotY29uc3Qgc2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoVHdv
Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjY7Ci1jb25zdCBzaXplX3QgcGF5bG9hZExlbmd0
aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkID0gMTI3OwotY29uc3Qgc2l6ZV90IG1h
c2tpbmdLZXlXaWR0aEluQnl0ZXMgPSA0OworY29uc3RleHByIHVpbnQ4X3QgZmluYWxCaXQgPSAw
eDgwOworY29uc3RleHByIHVpbnQ4X3QgY29tcHJlc3NCaXQgPSAweDQwOworY29uc3RleHByIHVp
bnQ4X3QgcmVzZXJ2ZWQyQml0ID0gMHgyMDsKK2NvbnN0ZXhwciB1aW50OF90IHJlc2VydmVkM0Jp
dCA9IDB4MTA7Citjb25zdGV4cHIgdWludDhfdCBvcENvZGVNYXNrID0gMHhGOworY29uc3RleHBy
IHVpbnQ4X3QgbWFza0JpdCA9IDB4ODA7Citjb25zdGV4cHIgdWludDhfdCBwYXlsb2FkTGVuZ3Ro
TWFzayA9IDB4N0Y7Citjb25zdGV4cHIgc2l6ZV90IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0
ZW5kZWRMZW5ndGhGaWVsZCA9IDEyNTsKK2NvbnN0ZXhwciBzaXplX3QgcGF5bG9hZExlbmd0aFdp
dGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCA9IDEyNjsKK2NvbnN0ZXhwciBzaXplX3QgcGF5
bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkID0gMTI3OworY29uc3Rl
eHByIHNpemVfdCBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzID0gNDsKIAogYm9vbCBXZWJTb2NrZXRG
cmFtZTo6bmVlZHNFeHRlbmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3RoKQogewog
ICAgIHJldHVybiBwYXlsb2FkTGVuZ3RoID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRl
ZExlbmd0aEZpZWxkOwogfQogCi1XZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJT
b2NrZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2Vi
U29ja2V0RnJhbWUmIGZyYW1lLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JT
dHJpbmcpCitXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFtZTo6
cGFyc2VGcmFtZSh1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0RnJh
bWUmIGZyYW1lLCBjb25zdCB1aW50OF90KiYgZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJpbmcp
CiB7Ci0gICAgY2hhciogcCA9IGRhdGE7Ci0gICAgY29uc3QgY2hhciogYnVmZmVyRW5kID0gZGF0
YSArIGRhdGFMZW5ndGg7CisgICAgYXV0byBwID0gZGF0YTsKKyAgICBjb25zdCB1aW50OF90KiBi
dWZmZXJFbmQgPSBkYXRhICsgZGF0YUxlbmd0aDsKIAogICAgIGlmIChkYXRhTGVuZ3RoIDwgMikK
ICAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKIAotICAgIHVuc2lnbmVkIGNoYXIgZmly
c3RCeXRlID0gKnArKzsKLSAgICB1bnNpZ25lZCBjaGFyIHNlY29uZEJ5dGUgPSAqcCsrOworICAg
IGF1dG8gZmlyc3RCeXRlID0gKnArKzsKKyAgICBhdXRvIHNlY29uZEJ5dGUgPSAqcCsrOwogCiAg
ICAgYm9vbCBmaW5hbCA9IGZpcnN0Qnl0ZSAmIGZpbmFsQml0OwogICAgIGJvb2wgY29tcHJlc3Mg
PSBmaXJzdEJ5dGUgJiBjb21wcmVzc0JpdDsKICAgICBib29sIHJlc2VydmVkMiA9IGZpcnN0Qnl0
ZSAmIHJlc2VydmVkMkJpdDsKICAgICBib29sIHJlc2VydmVkMyA9IGZpcnN0Qnl0ZSAmIHJlc2Vy
dmVkM0JpdDsKLSAgICB1bnNpZ25lZCBjaGFyIG9wQ29kZSA9IGZpcnN0Qnl0ZSAmIG9wQ29kZU1h
c2s7CisgICAgYXV0byBvcENvZGUgPSBmaXJzdEJ5dGUgJiBvcENvZGVNYXNrOwogCiAgICAgYm9v
bCBtYXNrZWQgPSBzZWNvbmRCeXRlICYgbWFza0JpdDsKICAgICB1aW50NjRfdCBwYXlsb2FkTGVu
Z3RoNjQgPSBzZWNvbmRCeXRlICYgcGF5bG9hZExlbmd0aE1hc2s7CkBAIC03OSw3ICs3OSw3IEBA
IFdlYlNvY2tldEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZy
YW1lKGNoYXIqIGRhdGEsIHNpemVfdCBkCiAgICAgICAgIHBheWxvYWRMZW5ndGg2NCA9IDA7CiAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZTsgKytp
KSB7CiAgICAgICAgICAgICBwYXlsb2FkTGVuZ3RoNjQgPDw9IDg7Ci0gICAgICAgICAgICBwYXls
b2FkTGVuZ3RoNjQgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnArKyk7CisgICAgICAg
ICAgICBwYXlsb2FkTGVuZ3RoNjQgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKnArKyk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemUgPT0gMiAmJiBwYXls
b2FkTGVuZ3RoNjQgPD0gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxk
KSB7CiAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJUaGUgbWluaW1hbCBudW1iZXIgb2YgYnl0
ZXMgTVVTVCBiZSB1c2VkIHRvIGVuY29kZSB0aGUgbGVuZ3RoIjsKQEAgLTkxLDcgKzkxLDcgQEAg
V2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0RnJhbWU6OnBhcnNlRnJh
bWUoY2hhciogZGF0YSwgc2l6ZV90IGQKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRpYyBj
b25zdCB1aW50NjRfdCBtYXhQYXlsb2FkTGVuZ3RoID0gVUlOVDY0X0MoMHg3RkZGRkZGRkZGRkZG
RkZGKTsKKyAgICBjb25zdGV4cHIgdWludDY0X3QgbWF4UGF5bG9hZExlbmd0aCA9IFVJTlQ2NF9D
KDB4N0ZGRkZGRkZGRkZGRkZGRik7CiAgICAgc2l6ZV90IG1hc2tpbmdLZXlMZW5ndGggPSBtYXNr
ZWQgPyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzIDogMDsKICAgICBpZiAocGF5bG9hZExlbmd0aDY0
ID4gbWF4UGF5bG9hZExlbmd0aCB8fCBwYXlsb2FkTGVuZ3RoNjQgKyBtYXNraW5nS2V5TGVuZ3Ro
ID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgewogICAgICAgICBlcnJvclN0
cmluZyA9IG1ha2VTdHJpbmcoIldlYlNvY2tldCBmcmFtZSBsZW5ndGggdG9vIGxhcmdlOiAiLCBw
YXlsb2FkTGVuZ3RoNjQsICIgYnl0ZXMiKTsKQEAgLTEwMyw4ICsxMDMsOCBAQCBXZWJTb2NrZXRG
cmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBk
YXRhLCBzaXplX3QgZAogICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRlOwogCiAgICAgaWYg
KG1hc2tlZCkgewotICAgICAgICBjb25zdCBjaGFyKiBtYXNraW5nS2V5ID0gcDsKLSAgICAgICAg
Y2hhciogcGF5bG9hZCA9IHAgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzOworICAgICAgICBhdXRv
IG1hc2tpbmdLZXkgPSBwOworICAgICAgICBhdXRvIHBheWxvYWQgPSBwICsgbWFza2luZ0tleVdp
ZHRoSW5CeXRlczsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXlsb2FkTGVuZ3Ro
OyArK2kpCiAgICAgICAgICAgICBwYXlsb2FkW2ldIF49IG1hc2tpbmdLZXlbaSAlIG1hc2tpbmdL
ZXlXaWR0aEluQnl0ZXNdOyAvLyBVbm1hc2sgdGhlIHBheWxvYWQuCiAgICAgfQpAQCAtMTIxLDcg
KzEyMSw3IEBAIFdlYlNvY2tldEZyYW1lOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldEZyYW1l
OjpwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBkCiAgICAgcmV0dXJuIEZyYW1lT0s7CiB9
CiAKLXN0YXRpYyB2b2lkIGFwcGVuZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRGcmFtZSYg
ZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQorc3RhdGljIHZvaWQgYXBwZW5kRnJhbWVQ
YXlsb2FkKGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiBmcmFt
ZURhdGEpCiB7CiAgICAgc2l6ZV90IG1hc2tpbmdLZXlTdGFydCA9IDA7CiAgICAgaWYgKGZyYW1l
Lm1hc2tlZCkgewpAQCAtMTM5LDcgKzEzOSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEZyYW1lUGF5
bG9hZChjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVECiAg
ICAgfQogfQogCi12b2lkIFdlYlNvY2tldEZyYW1lOjptYWtlRnJhbWVEYXRhKFZlY3RvcjxjaGFy
PiYgZnJhbWVEYXRhKQordm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1lRGF0YShWZWN0b3I8
dWludDhfdD4mIGZyYW1lRGF0YSkKIHsKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFz
aykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENv
ZGVzLgogCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJTb2NrZXRGcmFtZTo6bWFrZUZyYW1l
RGF0YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSkKICAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChw
YXlsb2FkTGVuZ3RoICYgMHhGRik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZnJhbWVEYXRhLmF0
KDEpIHw9IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZDsKLSAg
ICAgICAgY2hhciBleHRlbmRlZFBheWxvYWRMZW5ndGhbOF07CisgICAgICAgIHVpbnQ4X3QgZXh0
ZW5kZWRQYXlsb2FkTGVuZ3RoWzhdOwogICAgICAgICBzaXplX3QgcmVtYWluaW5nID0gcGF5bG9h
ZExlbmd0aDsKICAgICAgICAgLy8gRmlsbCB0aGUgbGVuZ3RoIGludG8gZXh0ZW5kZWRQYXlsb2Fk
TGVuZ3RoIGluIHRoZSBuZXR3b3JrIGJ5dGUgb3JkZXIuCiAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgODsgKytpKSB7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBXZWJTb2NrZXRGcmFtZTo6
bWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSkKICAgICBhcHBlbmRGcmFtZVBh
eWxvYWQoKnRoaXMsIGZyYW1lRGF0YSk7CiB9CiAKLVdlYlNvY2tldEZyYW1lOjpXZWJTb2NrZXRG
cmFtZShPcENvZGUgb3BDb2RlLCBib29sIGZpbmFsLCBib29sIGNvbXByZXNzLCBib29sIG1hc2tl
ZCwgY29uc3QgY2hhciogcGF5bG9hZCwgc2l6ZV90IHBheWxvYWRMZW5ndGgpCitXZWJTb2NrZXRG
cmFtZTo6V2ViU29ja2V0RnJhbWUoT3BDb2RlIG9wQ29kZSwgYm9vbCBmaW5hbCwgYm9vbCBjb21w
cmVzcywgYm9vbCBtYXNrZWQsIGNvbnN0IHVpbnQ4X3QqIHBheWxvYWQsIHNpemVfdCBwYXlsb2Fk
TGVuZ3RoKQogICAgIDogb3BDb2RlKG9wQ29kZSkKICAgICAsIGZpbmFsKGZpbmFsKQogICAgICwg
Y29tcHJlc3MoY29tcHJlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRGcmFtZS5oCmluZGV4IGRiMTYwZGNmYjFlZTU5NTVhOWQ1N2ZkYzg3N2I0
Zjk0NzNhNTczYTAuLmE3NGNiODI5Yzc1YWVjYTE5MTNmOWY4NDJiYzM5M2E0N2FkZGMxOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFt
ZS5oCkBAIC01NiwxMCArNTYsMTAgQEAgc3RydWN0IFdlYlNvY2tldEZyYW1lIHsKICAgICBzdGF0
aWMgYm9vbCBpc0NvbnRyb2xPcENvZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09
IE9wQ29kZUNsb3NlIHx8IG9wQ29kZSA9PSBPcENvZGVQaW5nIHx8IG9wQ29kZSA9PSBPcENvZGVQ
b25nOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSZXNlcnZlZE9wQ29kZShPcENvZGUgb3BDb2RlKSB7
IHJldHVybiAhaXNOb25Db250cm9sT3BDb2RlKG9wQ29kZSkgJiYgIWlzQ29udHJvbE9wQ29kZShv
cENvZGUpOyB9CiAgICAgc3RhdGljIGJvb2wgbmVlZHNFeHRlbmRlZExlbmd0aEZpZWxkKHNpemVf
dCBwYXlsb2FkTGVuZ3RoKTsKLSAgICBzdGF0aWMgUGFyc2VGcmFtZVJlc3VsdCBwYXJzZUZyYW1l
KGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXZWJTb2NrZXRGcmFtZSYsIGNvbnN0IGNo
YXIqJiBmcmFtZUVuZCwgU3RyaW5nJiBlcnJvclN0cmluZyk7IC8vIE1heSBtb2RpZnkgcGFydCBv
ZiBkYXRhIHRvIHVubWFzayB0aGUgZnJhbWUuCisgICAgc3RhdGljIFBhcnNlRnJhbWVSZXN1bHQg
cGFyc2VGcmFtZSh1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0RnJh
bWUmLCBjb25zdCB1aW50OF90KiYgZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJpbmcpOyAvLyBN
YXkgbW9kaWZ5IHBhcnQgb2YgZGF0YSB0byB1bm1hc2sgdGhlIGZyYW1lLgogCi0gICAgV0VCQ09S
RV9FWFBPUlQgV2ViU29ja2V0RnJhbWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5h
bCA9IGZhbHNlLCBib29sIGNvbXByZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNv
bnN0IGNoYXIqIHBheWxvYWQgPSBudWxscHRyLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApOwot
ICAgIHZvaWQgbWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgV2ViU29ja2V0RnJhbWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBm
aW5hbCA9IGZhbHNlLCBib29sIGNvbXByZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2Us
IGNvbnN0IHVpbnQ4X3QqIHBheWxvYWQgPSBudWxscHRyLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9
IDApOworICAgIHZvaWQgbWFrZUZyYW1lRGF0YShWZWN0b3I8dWludDhfdD4mIGZyYW1lRGF0YSk7
CiAKICAgICBPcENvZGUgb3BDb2RlOwogICAgIGJvb2wgZmluYWw7CkBAIC02Nyw3ICs2Nyw3IEBA
IHN0cnVjdCBXZWJTb2NrZXRGcmFtZSB7CiAgICAgYm9vbCByZXNlcnZlZDI7CiAgICAgYm9vbCBy
ZXNlcnZlZDM7CiAgICAgYm9vbCBtYXNrZWQ7Ci0gICAgY29uc3QgY2hhciogcGF5bG9hZDsKKyAg
ICBjb25zdCB1aW50OF90KiBwYXlsb2FkOwogICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAppbmRleCA4NDljZjVmNjI0YmNjMjcyZWU1ZTdiYzYyNmRhN2U1MDNh
ZDQ0OTIyLi5iZTI0NDEyNTYwN2IxYmNjMzIyOTM0NzRkNTQ0ODYyYmI1NmFiNmU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNvbnN0
IFVSTCYgdXJsLCBib29sIHNlY3VyZSkKIH0KIAogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhJbnB1
dFNhbXBsZVNpemUgPSAxMjg7Ci1zdGF0aWMgU3RyaW5nIHRyaW1JbnB1dFNhbXBsZShjb25zdCBj
aGFyKiBwLCBzaXplX3QgbGVuKQorc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3Qg
dWludDhfdCogcCwgc2l6ZV90IGxlbikKIHsKICAgICBTdHJpbmcgcyA9IFN0cmluZyhwLCBzdGQ6
Om1pbjxzaXplX3Q+KGxlbiwgbWF4SW5wdXRTYW1wbGVTaXplKSk7CiAgICAgaWYgKGxlbiA+IG1h
eElucHV0U2FtcGxlU2l6ZSkKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFdlYlNvY2tldEhhbmRz
aGFrZTo6cmVzZXQoKQogICAgIG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5yZXNldCgpOwogfQogCi1p
bnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhl
YWRlciwgc2l6ZV90IGxlbikKK2ludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5k
c2hha2UoY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgbGVuKQogewogICAgIG1fbW9kZSA9
IEluY29tcGxldGU7CiAgICAgaW50IHN0YXR1c0NvZGU7CkBAIC0yNDUsMTIgKzI0NSwxMiBAQCBp
bnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhl
YWRlciwgc2l6ZV90IGxlbikKICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9CiAgICAgbV9tb2Rl
ID0gTm9ybWFsOwotICAgIGlmICghc3RybnN0cihoZWFkZXIsICJcclxuXHJcbiIsIGxlbikpIHsK
KyAgICBpZiAoIW1lbW1lbShoZWFkZXIsIGxlbiwgIlxyXG5cclxuIiwgNCkpIHsKICAgICAgICAg
Ly8gSnVzdCBoYXNuJ3QgYmVlbiByZWNlaXZlZCBmdWxseSB5ZXQuCiAgICAgICAgIG1fbW9kZSA9
IEluY29tcGxldGU7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgY29uc3QgY2hhciog
cCA9IHJlYWRIVFRQSGVhZGVycyhoZWFkZXIgKyBsaW5lTGVuZ3RoLCBoZWFkZXIgKyBsZW4pOwor
ICAgIGF1dG8gcCA9IHJlYWRIVFRQSGVhZGVycyhoZWFkZXIgKyBsaW5lTGVuZ3RoLCBoZWFkZXIg
KyBsZW4pOwogICAgIGlmICghcCkgewogICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldEhh
bmRzaGFrZSAlcCByZWFkU2VydmVySGFuZHNoYWtlKCkgcmVhZEhUVFBIZWFkZXJzKCkgZmFpbGVk
IiwgdGhpcyk7CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsgLy8gbV9mYWlsdXJlUmVhc29uIGlz
IHNldCBpbnNpZGUgcmVhZEhUVFBIZWFkZXJzKCkuCkBAIC0zNjIsNyArMzYyLDcgQEAgc3RhdGlj
IGlubGluZSBib29sIGhlYWRlckhhc1ZhbGlkSFRUUFZlcnNpb24oU3RyaW5nVmlldyBodHRwU3Rh
dHVzTGluZSkKIC8vIFJldHVybnMgdGhlIGhlYWRlciBsZW5ndGggKGluY2x1ZGluZyAiXHJcbiIp
LCBvciAtMSBpZiB3ZSBoYXZlIG5vdCByZWNlaXZlZCBlbm91Z2ggZGF0YSB5ZXQuCiAvLyBJZiB0
aGUgbGluZSBpcyBtYWxmb3JtZWQgb3IgdGhlIHN0YXR1cyBjb2RlIGlzIG5vdCBhIDMtZGlnaXQg
bnVtYmVyLAogLy8gc3RhdHVzQ29kZSBhbmQgc3RhdHVzVGV4dCB3aWxsIGJlIHNldCB0byAtMSBh
bmQgYSBudWxsIHN0cmluZywgcmVzcGVjdGl2ZWx5LgotaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6
cmVhZFN0YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLCBp
bnQmIHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCkKK2ludCBXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRTdGF0dXNMaW5lKGNvbnN0IHVpbnQ4X3QqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxl
bmd0aCwgaW50JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpCiB7CiAgICAgLy8gQXJi
aXRyYXJ5IHNpemUgbGltaXQgdG8gcHJldmVudCB0aGUgc2VydmVyIGZyb20gc2VuZGluZyBhbiB1
bmJvdW5kZWQKICAgICAvLyBhbW91bnQgb2YgZGF0YSB3aXRoIG5vIG5ld2xpbmVzIGFuZCBmb3Jj
aW5nIHVzIHRvIGJ1ZmZlciBpdCBhbGwuCkBAIC0zNzEsOSArMzcxLDkgQEAgaW50IFdlYlNvY2tl
dEhhbmRzaGFrZTo6cmVhZFN0YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVh
ZGVyTGVuZ3RoLAogICAgIHN0YXR1c0NvZGUgPSAtMTsKICAgICBzdGF0dXNUZXh0ID0gU3RyaW5n
KCk7CiAKLSAgICBjb25zdCBjaGFyKiBzcGFjZTEgPSBudWxscHRyOwotICAgIGNvbnN0IGNoYXIq
IHNwYWNlMiA9IG51bGxwdHI7Ci0gICAgY29uc3QgY2hhciogcDsKKyAgICBjb25zdCB1aW50OF90
KiBzcGFjZTEgPSBudWxscHRyOworICAgIGNvbnN0IHVpbnQ4X3QqIHNwYWNlMiA9IG51bGxwdHI7
CisgICAgY29uc3QgdWludDhfdCogcDsKICAgICBzaXplX3QgY29uc3VtZWRMZW5ndGg7CiAKICAg
ICBmb3IgKHAgPSBoZWFkZXIsIGNvbnN1bWVkTGVuZ3RoID0gMDsgY29uc3VtZWRMZW5ndGggPCBo
ZWFkZXJMZW5ndGg7IHArKywgY29uc3VtZWRMZW5ndGgrKykgewpAQCAtMzk3LDcgKzM5Nyw3IEBA
IGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRl
ciwgc2l6ZV90IGhlYWRlckxlbmd0aCwKICAgICBpZiAoY29uc3VtZWRMZW5ndGggPT0gaGVhZGVy
TGVuZ3RoKQogICAgICAgICByZXR1cm4gLTE7IC8vIFdlIGhhdmUgbm90IHJlY2VpdmVkICdcbicg
eWV0LgogCi0gICAgY29uc3QgY2hhciogZW5kID0gcCArIDE7CisgICAgYXV0byBlbmQgPSBwICsg
MTsKICAgICBpbnQgbGluZUxlbmd0aCA9IGVuZCAtIGhlYWRlcjsKICAgICBpZiAobGluZUxlbmd0
aCA+IG1heGltdW1MZW5ndGgpIHsKICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlN0YXR1cyBs
aW5lIGlzIHRvbyBsb25nIl9zOwpAQCAtNDE1LDEzICs0MTUsMTMgQEAgaW50IFdlYlNvY2tldEhh
bmRzaGFrZTo6cmVhZFN0YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVy
TGVuZ3RoLAogICAgICAgICByZXR1cm4gbGluZUxlbmd0aDsKICAgICB9CiAKLSAgICBTdHJpbmdW
aWV3IGh0dHBTdGF0dXNMaW5lKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihoZWFkZXIp
LCBzcGFjZTEgLSBoZWFkZXIpOworICAgIFN0cmluZ1ZpZXcgaHR0cFN0YXR1c0xpbmUoaGVhZGVy
LCBzcGFjZTEgLSBoZWFkZXIpOwogICAgIGlmICghaGVhZGVySGFzVmFsaWRIVFRQVmVyc2lvbiho
dHRwU3RhdHVzTGluZSkpIHsKICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gbWFrZVN0cmluZygi
SW52YWxpZCBIVFRQIHZlcnNpb24gc3RyaW5nOiAiLCBodHRwU3RhdHVzTGluZSk7CiAgICAgICAg
IHJldHVybiBsaW5lTGVuZ3RoOwogICAgIH0KIAotICAgIFN0cmluZ1ZpZXcgc3RhdHVzQ29kZVN0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oc3BhY2UxICsgMSksIHNwYWNlMiAt
IHNwYWNlMSAtIDEpOworICAgIFN0cmluZ1ZpZXcgc3RhdHVzQ29kZVN0cmluZyhzcGFjZTEgKyAx
LCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKICAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5ndGgo
KSAhPSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgogICAg
ICAgICByZXR1cm4gbGluZUxlbmd0aDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkg
ewpAQCAtNDM2LDE0ICs0MzYsMTQgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFN0YXR1
c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLAogICAgIHJldHVy
biBsaW5lTGVuZ3RoOwogfQogCi1jb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRI
VFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQorY29uc3QgdWlu
dDhfdCogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgdWludDhfdCog
c3RhcnQsIGNvbnN0IHVpbnQ4X3QqIGVuZCkKIHsKICAgICBTdHJpbmdWaWV3IG5hbWU7CiAgICAg
U3RyaW5nIHZhbHVlOwogICAgIGJvb2wgc2F3U2VjV2ViU29ja2V0RXh0ZW5zaW9uc0hlYWRlckZp
ZWxkID0gZmFsc2U7CiAgICAgYm9vbCBzYXdTZWNXZWJTb2NrZXRBY2NlcHRIZWFkZXJGaWVsZCA9
IGZhbHNlOwogICAgIGJvb2wgc2F3U2VjV2ViU29ja2V0UHJvdG9jb2xIZWFkZXJGaWVsZCA9IGZh
bHNlOwotICAgIGNvbnN0IGNoYXIqIHAgPSBzdGFydDsKKyAgICBhdXRvIHAgPSBzdGFydDsKICAg
ICBmb3IgKDsgcCA8IGVuZDsgcCsrKSB7CiAgICAgICAgIHNpemVfdCBjb25zdW1lZExlbmd0aCA9
IHBhcnNlSFRUUEhlYWRlcihwLCBlbmQgLSBwLCBtX2ZhaWx1cmVSZWFzb24sIG5hbWUsIHZhbHVl
KTsKICAgICAgICAgaWYgKCFjb25zdW1lZExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAppbmRleCBlYWY4YTVj
MDZhZDIwNThkM2QzODk1MTM1MjM5OTZmNmJlM2UwZGQzLi41ZTY0YzE4MzRmNmU4MzYxNGQzMDFj
NGZlZGQzOWQ4ODNjYWQ3YzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC02OCw3ICs2OCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIGludCByZWFkU2VydmVySGFuZHNoYWtlKGNv
bnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbik7CisgICAgaW50IHJlYWRTZXJ2ZXJIYW5kc2hh
a2UoY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgbGVuKTsKICAgICBNb2RlIG1vZGUoKSBj
b25zdDsKICAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0OyAvLyBSZXR1cm5zIGEgc3Ry
aW5nIGluZGljYXRpbmcgdGhlIHJlYXNvbiBvZiBmYWlsdXJlIGlmIG1vZGUoKSA9PSBGYWlsZWQu
CiAKQEAgLTg3LDEwICs4NywxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAgICBpbnQgcmVh
ZFN0YXR1c0xpbmUoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLCBpbnQm
IHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCk7CisgICAgaW50IHJlYWRTdGF0dXNMaW5l
KGNvbnN0IHVpbnQ4X3QqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50JiBzdGF0dXND
b2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpOwogCiAgICAgLy8gUmVhZHMgYWxsIGhlYWRlcnMgZXhj
ZXB0IGZvciB0aGUgdHdvIHByZWRlZmluZWQgb25lcy4KLSAgICBjb25zdCBjaGFyKiByZWFkSFRU
UEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCk7CisgICAgY29uc3Qg
dWludDhfdCogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IHVpbnQ4X3QqIHN0YXJ0LCBjb25zdCB1aW50
OF90KiBlbmQpOwogICAgIHZvaWQgcHJvY2Vzc0hlYWRlcnMoKTsKICAgICBib29sIGNoZWNrUmVz
cG9uc2VIZWFkZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDBiZjJhYTlhMTBiMjJlMTE1YTMyZjI1MTRhN2Q3ZWI1MDZiNTk4MWEuLmIzZjMx
MDk1YWFhOWFlODM5NGZiOTg1OWM2ZGY0OGIyY2I5ZjA4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDQ3LDEwICs0NDcsMTAgQEAgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OkJyaWRnZToKICAgICBpZiAoIW1fcGVlcikKICAgICAgICAgcmV0dXJuIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kRmFpbDsKIAotICAgIC8vIEFycmF5QnVmZmVyIGlzbid0
IHRocmVhZC1zYWZlLCBoZW5jZSB0aGUgY29udGVudCBvZiBBcnJheUJ1ZmZlciBpcyBjb3BpZWQg
aW50byBWZWN0b3I8Y2hhcj4uCi0gICAgVmVjdG9yPGNoYXI+IGRhdGEoYnl0ZUxlbmd0aCk7Cisg
ICAgLy8gQXJyYXlCdWZmZXIgaXNuJ3QgdGhyZWFkLXNhZmUsIGhlbmNlIHRoZSBjb250ZW50IG9m
IEFycmF5QnVmZmVyIGlzIGNvcGllZCBpbnRvIFZlY3Rvcjx1aW50OF90Pi4KKyAgICBWZWN0b3I8
dWludDhfdD4gZGF0YShieXRlTGVuZ3RoKTsKICAgICBpZiAoYmluYXJ5RGF0YS5ieXRlTGVuZ3Ro
KCkpCi0gICAgICAgIG1lbWNweShkYXRhLmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOworICAgICAgICBt
ZW1jcHkoZGF0YS5kYXRhKCksIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRh
LmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKICAgICBzZXRNZXRob2ROb3RDb21w
bGV0ZWQoKTsKIAogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciA9IG1f
cGVlciwgZGF0YSA9IFdURk1vdmUoZGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Nlcmlh
bGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXpl
ZE5GQS5jcHAKaW5kZXggMjgzN2FjZjllZWY5NGRiYzhiZjhhMDMzOTIzNzEyM2M5ZGU2YzVlMi4u
MGIzMzM4OWE3NjkyNTAwZjI0NGZlZjQ4YjcyMTcyNWMzZjdmYTEzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKQEAgLTM2LDkg
KzM2LDkgQEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiBib29sIHdyaXRlQWxsVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBm
aWxlLCBjb25zdCBUJiBjb250YWluZXIpCiB7Ci0gICAgY29uc3QgY2hhciogYnl0ZXMgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb250YWluZXIuZGF0YSgpKTsKKyAgICBhdXRvIGJ5
dGVzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY29udGFpbmVyLmRhdGEoKSk7
CiAgICAgc2l6ZV90IGJ5dGVzTGVuZ3RoID0gY29udGFpbmVyLnNpemUoKSAqIHNpemVvZihjb250
YWluZXJbMF0pOwotICAgIGNvbnN0IGNoYXIqIGVuZCA9IGJ5dGVzICsgYnl0ZXNMZW5ndGg7Cisg
ICAgYXV0byBlbmQgPSBieXRlcyArIGJ5dGVzTGVuZ3RoOwogICAgIHdoaWxlIChieXRlcyA8IGVu
ZCkgewogICAgICAgICBhdXRvIHdyaXR0ZW4gPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxl
LCBieXRlcywgYnl0ZXNMZW5ndGgpOwogICAgICAgICBpZiAod3JpdHRlbiA9PSAtMSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKaW5kZXggNzY2NGMwNjlmMTQ5ZmJlZTZkMWI1
NDcxNjI4NjE5ODJkNjE4OWE5OC4uODY0Mzg3MGRkMGU4MTIyZGExODM4OWJiY2FlODU3ZGE3ZTMy
ZTMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKQEAgLTExMjMsNyAr
MTEyMyw3IEBAIHZvaWQgU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoSlNDOjpKU0dsb2JhbE9iamVj
dCYgc3RhdGUsIEtleUZvcm1hdCBmb3JtYXQsIEJ1ZmZlCiAgICAgICAgICAgICAgICAgICAgIGF1
dG8mIHZtID0gc3RhdGUudm0oKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBqd2tT
dHJpbmcocmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgY2hhcio+KGJ5dGVzLmRhdGEoKSksIGJ5
dGVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBqd2tTdHJpbmcoYnl0ZXMu
ZGF0YSgpLCBieXRlcy5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBKU0xvY2tIb2xkZXIg
bG9ja2VyKHZtKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBqd2tPYmplY3QgPSBKU09OUGFy
c2UoJnN0YXRlLCBqd2tTdHJpbmcpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWp3a09iamVj
dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5
cHRvS2V5V3JhcE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENy
eXB0b0tleVdyYXBNYWMubW0KaW5kZXggMmQyMTQ0ZjBhYzU5NmUzOTk2NDVkMTcwM2E4NjkyZWEz
NWJhMzY0Ny4uZDI5OTA5YTM0OTdkYzRhNDlhN2FmMGQ2ZDMyNDk0OThkMTcyNTZkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlX
cmFwTWFjLm1tCkBAIC0xNjcsNyArMTY3LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBmaW5kTWFzdGVyS2V5KCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4ga2V5RGF0YSA9IGFkb3B0Q0Yoa2V5RGF0
YVJlZik7Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihDRkRhdGFHZXRCeXRlUHRyKGtleURhdGEuZ2V0KCkpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGtl
eURhdGEuZ2V0KCkpKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlKENGRGF0YUdldEJ5dGVQdHIo
a2V5RGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChrZXlEYXRhLmdldCgpKSk7CiB9CiAKIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcApp
bmRleCBlZDg1NjY0N2EzOTlkNjViMDgxMTE3Yjg2OTA0MTVkMjQyOWFmNzcwLi43YjJiNDUwMzFj
YjUwNTNjYjY0NTZkOGVjNjRkOGJjYzdlMDY0ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIERlY29k
ZWREYXRhRG9jdW1lbnRQYXJzZXI6OkRlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQm
IGRvY3VtZW50KQogewogfQogCi12b2lkIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZEJ5dGVzKERvY3VtZW50V3JpdGVyJiB3cml0ZXIsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCit2b2lkIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3Vt
ZW50V3JpdGVyJiB3cml0ZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7
CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oCmluZGV4IGJiYjA2YTNlOGE3ZGQwMWZkZjFk
MmY5MWNmZjQ1MTBiZDRlNjdkMTYuLjk1NTgyYTBkNjkzOTBiMmE1MTYyMzVlZTYzZmJmYmMzMGM1
YmQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50
UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJz
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kKFJlZlB0cjxT
dHJpbmdJbXBsPiYmKSBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBhcHBlbmRCeXRlcyBhbmQgZmx1
c2ggYXJlIHVzZWQgYnkgRG9jdW1lbnRXcml0ZXIgKHRoZSBsb2FkZXIpLgotICAgIHZvaWQgYXBw
ZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0
aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNo
KERvY3VtZW50V3JpdGVyJikgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBh
cnNlci5oCmluZGV4IDljYmU5MmEzMjdmZDI1MmU4ZWUwMzI0OTkzZDc1MjQyYWU1ZjUwYzcuLjdj
NGMzZDJlN2RjZThjOTk3NTAwYTRlNmRiNTlkMDBkYmE2YTA3MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFBhcnNlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgaW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmKSA9IDA7CiAKICAgICAvLyBhcHBlbmRCeXRlcyBh
bmQgZmx1c2ggYXJlIHVzZWQgYnkgRG9jdW1lbnRXcml0ZXIgKHRoZSBsb2FkZXIpLgotICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqIGJ5dGVz
LCBzaXplX3QgbGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3Vt
ZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZmx1c2goRG9jdW1lbnRXcml0ZXImKSA9IDA7CiAKICAgICAvLyBGSVhN
RTogYXBwZW5kKCkgc2hvdWxkIGJlIHByaXZhdGUsIGJ1dCBEb2N1bWVudFdyaXRlcjo6cmVwbGFj
ZURvY3VtZW50IHVzZXMgaXQgZm9yIG5vdy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9j
dW1lbnRQYXJzZXIuaAppbmRleCAwOTRlYzg3ZjY1YWMyNzViNTdiMDgxZDBiYzIyZGU1ZmJiOWFk
ODk3Li5kZTM4OTkyMWFjNmRjMGUwMGNlNDY5OWI0NzY4YmJhOGNlYWQ3YmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Jhd0RhdGFEb2N1bWVudFBhcnNlci5oCkBAIC00Niw3ICs0Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBmbHVzaChEb2N1bWVudFdyaXRlciYgd3JpdGVyKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIGFwcGVuZEJ5dGVzIGlzIGNhbGxlZCBhdCBsZWFz
dCBvbmNlLgotICAgICAgICBhcHBlbmRCeXRlcyh3cml0ZXIsIDAsIDApOworICAgICAgICBhcHBl
bmRCeXRlcyh3cml0ZXIsIG51bGxwdHIsIDApOwogICAgIH0KIAogICAgIHZvaWQgaW5zZXJ0KFNl
Z21lbnRlZFN0cmluZyYmKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKaW5kZXggNDUzOGNmNzY5MDUxMjA5Y2EzOTkyNzJjMGQ5YWM4MjYzN2ZkMWY0ZS4uZmE5YmRh
ZjIyMTE3YTdjMTg3YWMwYmZmOGI2MzA3MzE4MTA4NDdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRG9jdW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURv
Y3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwogCi0gICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVu
dFdyaXRlciYsIGNvbnN0IGNoYXIqLCBzaXplX3QpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5k
Qnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsK
ICAgICB2b2lkIGZpbmlzaCgpIG92ZXJyaWRlOwogfTsKIApAQCAtMTg3LDcgKzE4Nyw3IEBAIGlu
bGluZSBJbWFnZURvY3VtZW50JiBJbWFnZURvY3VtZW50UGFyc2VyOjpkb2N1bWVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIGRvd25jYXN0PEltYWdlRG9jdW1lbnQ+KCpSYXdEYXRhRG9jdW1lbnRQYXJz
ZXI6OmRvY3VtZW50KCkpOwogfQogCi12b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5
dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVfdCkKK3ZvaWQgSW1hZ2VEb2N1
bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KQogewogICAgIGRvY3VtZW50KCkudXBkYXRlRHVyaW5nUGFyc2luZygpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKaW5kZXggN2NiMzllZDU2Nzk4NmY5ODlkZjhm
MmZmMDYwYTRiZTZiNTI5NTRlNS4uZTllOTAzYWZlYjdlNDg3Y2RiMTI2ZWEyNzI5NzdjNmQ2NmJm
ZDQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1l
bnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZEJ5
dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogCiAgICAgSFRNTE1lZGlhRWxlbWVudCog
bV9tZWRpYUVsZW1lbnQgeyBudWxscHRyIH07CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBNZWRp
YURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgZnJhbWUtPmxv
YWRlcigpLnNldE91dGdvaW5nUmVmZXJyZXIoZG9jdW1lbnQuY29tcGxldGVVUkwobV9vdXRnb2lu
Z1JlZmVycmVyKSk7CiB9CiAKLXZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMo
RG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KQordm9pZCBNZWRpYURvY3VtZW50
UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpCiB7CiAgICAgaWYgKG1fbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IGQ1ODgyZmIyODU1ZDk3OGQzNDE2MWI0
NWNhZGZkMzEwYzYwMjBmYTAuLmUzYTNkYTZmZjI0NzE5YmZjOTc1MmRmZTU1M2ExNjM3NjRkZTZh
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBAIC01OCw3ICs1OCw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1l
bnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZEJ5
dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAg
dm9pZCBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogCiAgICAgSFRNTEVtYmVkRWxlbWVudCog
bV9lbWJlZEVsZW1lbnQgeyBudWxscHRyIH07CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBQbHVn
aW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIGRvY3VtZW50
LnNldEhhc1Zpc3VhbGx5Tm9uRW1wdHlDdXN0b21Db250ZW50KCk7CiB9CiAKLXZvaWQgUGx1Z2lu
RG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhcios
IHNpemVfdCkKK3ZvaWQgUGx1Z2luRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50
V3JpdGVyJiwgY29uc3QgdWludDhfdCosIHNpemVfdCkKIHsKICAgICBpZiAobV9lbWJlZEVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRl
eHRUcmFjay5oCmluZGV4IDEwZDcxODJlMjI4YTE0YzhmNDJjNzJhNmRkMzcwMDYwMTk2MWViZmYu
LmJiMTJjMTU5ZGU3NGY5Mjk0NTM2OTU0MWQ3ODcyZTZjNWMxYWNiNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaApAQCAtODIsNyArODIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgb3ZlcnJp
ZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBwYXJzZVdlYlZUVEZpbGVI
ZWFkZXIoU3RyaW5nJiYpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2
b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25z
dCB1aW50OF90KiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
ICAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJWVFRDdWUmJikgb3ZlcnJpZGUgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgTWVkaWFUaW1lIHN0YXJ0VGltZVZhcmlhbmNl
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggMDVkNzUxMDFiNWMxYjgxYmM2ZTlkNDIyM2Q1
ODllMTcxMGY4ODAzYy4uYTIyMjhiYzE3ZWEzNTZmNjA1MjI4YzU0ZWNlMzcwZGM0ZmNkNDk5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmNwcApAQCAtNTgsNyArNTgsNyBAQCBXZWJWVFRQYXJzZXImIEluYmFuZFdlYlZUVFRleHRU
cmFjazo6cGFyc2VyKCkKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCi12b2lkIElu
YmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKK3ZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZVdlYlZU
VEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIHBh
cnNlcigpLnBhcnNlQnl0ZXMoZGF0YSwgbGVuZ3RoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCmluZGV4IDg0ZWUwZTU3NDBkYzYz
NzczMmRlMzhhMjhjMzk5MmU3NjNhMmNmNDkuLjMxNTIzNTcyOWI1ZmJkOTlmNjM0ZmE3ZDZjNzc2
YzI3YmM2YzFjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
V2ViVlRUVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRX
ZWJWVFRUZXh0VHJhY2suaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIEluYmFuZFdl
YlZUVFRleHRUcmFjayhEb2N1bWVudCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFj
a1ByaXZhdGUmKTsKIAogICAgIFdlYlZUVFBhcnNlciYgcGFyc2VyKCk7Ci0gICAgdm9pZCBwYXJz
ZVdlYlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsK
KyAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1
ZSYmKSBmaW5hbDsKIAogICAgIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDlmMWQyZDRiYmI1ZjdkNzIz
ZTQyMzNhNWQxNmU0MjI3YzM5MTdiMTEuLjYyNGE5MDhmOTMxM2FlN2FiZWFjNWMwZjA1MTJiNGMx
NGI1YjcwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAK
QEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VGaWxlSGVhZGVyKFN0
cmluZyYmIGRhdGEpCiAgICAgcGFyc2UoKTsKIH0KIAotdm9pZCBXZWJWVFRQYXJzZXI6OnBhcnNl
Qnl0ZXMoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBXZWJWVFRQYXJz
ZXI6OnBhcnNlQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIG1fbGluZVJlYWRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuZ3RoKSk7
CiAgICAgcGFyc2UoKTsKQEAgLTIyNSw3ICsyMjUsOCBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6cGFy
c2UoKQogdm9pZCBXZWJWVFRQYXJzZXI6OmZpbGVGaW5pc2hlZCgpCiB7CiAgICAgQVNTRVJUKG1f
c3RhdGUgIT0gRmluaXNoZWQpOwotICAgIHBhcnNlQnl0ZXMoIlxuXG4iLCAyKTsKKyAgICBjb25z
dGV4cHIgdWludDhfdCBlbmRMaW5lc1tdID0geyAnXG4nLCAnXG4nIH07CisgICAgcGFyc2VCeXRl
cyhlbmRMaW5lcywgMik7CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGVkOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaAppbmRleCBmYTMzYTJjZjBlM2YwNjg0OWI3MGFm
ZWEzMDdiODM2OWZlMzFiYjZjLi4xMjg1NTIwOTE3NDM4NWQwNTIwOGRjN2E0MDRkYmFhMzFmZjA2
NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgKQEAgLTE0Myw3
ICsxNDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFyc2VGbG9hdFBlcmNlbnRhZ2VW
YWx1ZVBhaXIoVlRUU2Nhbm5lciYgdmFsdWVTY2FubmVyLCBjaGFyLCBGbG9hdFBvaW50Jik7CiAK
ICAgICAvLyBJbnB1dCBkYXRhIHRvIHRoZSBwYXJzZXIgdG8gcGFyc2UuCi0gICAgdm9pZCBwYXJz
ZUJ5dGVzKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7CisgICAgdm9pZCBwYXJzZUJ5dGVzKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCk7CiAgICAgdm9pZCBwYXJzZUZpbGVIZWFkZXIoU3RyaW5nJiYp
OwogICAgIHZvaWQgcGFyc2VDdWVEYXRhKGNvbnN0IElTT1dlYlZUVEN1ZSYpOwogICAgIHZvaWQg
Zmx1c2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IGJm
ZGMyYjJiMWQ3OTMyYjVlNGYwMDA4MzI4OWMwNTA0Nzc3ZWEyNmYuLjBlNDBkOTUwYTI3ZDYzMmY0
MjA5NDE0ZDJlYTA0N2I4NGIzMmExZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmNwcApAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OnJlcG9y
dERhdGFSZWNlaXZlZCgpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVzb2x2ZVN0eWxlKERv
Y3VtZW50OjpSZXNvbHZlU3R5bGVUeXBlOjpSZWJ1aWxkKTsKIH0KIAotdm9pZCBEb2N1bWVudFdy
aXRlcjo6YWRkRGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRG9j
dW1lbnRXcml0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgp
CiB7CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NFUlQgb25jZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFzIGJlZW4gcmVzb2x2ZWQuCiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90U3RhcnRlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCmluZGV4IDg1YzBhMzg2Y2RjMjE0NzI3MDRhY2I5
YzBmNGYyZDYwNDg5MTAyOWYuLjcwZmQyMGMxMzczYWMwZGM5YjQ0NDk1NGMzYTIwNDA2ZjIxYjhj
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oCkBAIC00Nyw4ICs0Nyw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW4oKTsKICAgICBib29sIGJlZ2luKGNvbnN0IFVS
TCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCog
b3duZXJEb2N1bWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBi
eXRlcywgc2l6ZV90IGxlbmd0aCk7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoKSB7IGFkZERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oYnl0ZXMpLCBsZW5ndGgpOyB9CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoKTsKICAgICB2b2lkIGluc2VydERhdGFTeW5jaHJvbm91c2x5KGNv
bnN0IFN0cmluZyYpOyAvLyBGb3IgYW4gaW50ZXJuYWwgdXNlIG9ubHkgdG8gcHJldmVudCB0aGUg
cGFyc2VyIGZyb20geWllbGRpbmcuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcAppbmRleCBhNmMyNjg5MmRhNjE0YzUx
MGY0MDVjNjg4ZGNhZmNlODgxMTM0ZDQyLi5hNjg3MTFmNmMyMTlmN2E0OGFiM2E2ZTE2ZjU1ZWIw
ZTY0MDVmYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcApAQCAtNDgs
NyArNDgsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIC8vIElnbm9yZSBhbGwgZGF0YS4KLSAg
ICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgY2hhciosIHNpemVfdCkg
b3ZlcnJpZGUKKyAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyJiwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggZGQ4ODkzNWRhYjY0NWI1MGM5MDhhNTJm
OWQ3ZjE4MGRiMWZlMjA5ZS4uOGNjM2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTk0LDcg
Kzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSkKIAogICAgIHdoaWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5z
aXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNl
T2Zmc2V0KTsKLSAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNlQnl0ZXMoZGF0YS5kYXRhQXNDaGFy
UHRyKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgbV9jdWVQYXJzZXItPnBhcnNlQnl0ZXMoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9wYXJzZU9mZnNldCArPSBkYXRhLnNp
emUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IGQ0Y2FmNGQ1ZjllYTc2NmM2MDAw
ZjhmZjczNmMyNDdjMTMyM2IzZDAuLmYyNjRmMWRkNzEyM2Q2OTJjNjU3ZjFlY2UxNDk5NGM0MTk2
MzM0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDYsNyArNjA2LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhQXNDaGFyUHRyKCksIG1fbWFuaWZl
c3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+
cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCks
IG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkg
ewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hF
IE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0
IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRp
b24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRo
IENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwCmlu
ZGV4IGM4YTliYmRlM2UzN2RhMDU3N2U5MDQxZTE5OTYzZTQ0ZjFhMjUzMmEuLmI4N2RkODM1MDYw
N2MyNGJlMjU2ZTM0NDFiZWQyZDM3NjdlMDk1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQ
YXJzZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0YXRpYyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBjYWNoZU1vZGVJZGVudGlmCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5
cGUgZmFsbGJhY2tNb2RlSWRlbnRpZmllcltdID0geyAnRicsICdBJywgJ0wnLCAnTCcsICdCJywg
J0EnLCAnQycsICdLJyB9OwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGlj
IGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIG5ldHdvcmtNb2RlSWRlbnRpZmllcltdID0geyAnTics
ICdFJywgJ1QnLCAnVycsICdPJywgJ1InLCAnSycgfTsKIAotc3RkOjpvcHRpb25hbDxBcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0PiBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJM
LCBjb25zdCBTdHJpbmcmIG1hbmlmZXN0TUlNRVR5cGUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyIGNhY2hlTWFuaWZl
c3RNSU1FVHlwZVtdID0gInRleHQvY2FjaGUtbWFuaWZlc3QiOwogICAgIGJvb2wgYWxsb3dGYWxs
YmFja05hbWVzcGFjZU91dHNpZGVNYW5pZmVzdFBhdGggPSBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShtYW5pZmVzdE1JTUVUeXBlLCBjYWNoZU1hbmlmZXN0TUlNRVR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVNYW5pZmVzdFBhcnNlci5oCmluZGV4IDBiZjlmOWYxNmE1YWY2OWZjYWZhMDE2OWQ5ZTY2
NDQxYjFmOWY4NjIuLjcwMGMxYmM4ZWNjY2U5OGQ4Mzg5MTA4NDEyZDUzMTExZjE2ZDVmYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
TWFuaWZlc3RQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmgKQEAgLTQxLDYgKzQxLDYgQEAgc3RydWN0IEFw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCB7CiAgICAgYm9vbCBhbGxvd0FsbE5ldHdvcmtSZXF1ZXN0
cyB7IGZhbHNlIH07IC8vIFdpbGRjYXJkIGZvdW5kIGluIE5FVFdPUksgc2VjdGlvbi4KIH07CiAK
LXN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0PiBwYXJzZUFwcGxpY2F0aW9u
Q2FjaGVNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBTdHJpbmcmIG1hbmlm
ZXN0TUlNRVR5cGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworc3RkOjpvcHRpb25h
bDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFN0cmluZyYgbWFuaWZlc3RNSU1FVHlwZSwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggNWNkZTliN2YxMWI4
N2U5MDkzZGY4ZWRiNjFlYWVhZGRkMDBlYjg2NC4uN2RjMzFjNzM5MmNjZWVlZWJiMjYzYjI0YTlh
MzJkNzMxZGQwYTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAg
LTEyMyw3ICsxMjMsNiBAQCBwdWJsaWM6CiAgICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgY29u
c3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNp
emUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0ZpbGVSZWFkZXJJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAKaW5kZXggNzkxMWNhMmI3NzU3NGRl
ZjlkYzRlMWMzMjIzNjBkMmY5NTM3YzIyOS4uOWFhZTllODFhYjQxZDU0NzQ2ODE1NDAzNTE3ODYw
ZmFkMzNjZTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvRmlsZVJlYWRlcklPUy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBPU1N0YXR1
cyBBdWRpb0ZpbGVSZWFkZXI6OnJlYWRQcm9jKHZvaWQqIGNsaWVudERhdGEsIFNJbnQ2NCBwb3Np
dGlvbiwgVUludDMyIHJlcQogICAgIGlmIChzdGF0aWNfY2FzdDxVSW50NjQ+KHBvc2l0aW9uKSA8
IGRhdGFTaXplKSB7CiAgICAgICAgIHNpemVfdCBieXRlc0F2YWlsYWJsZSA9IGRhdGFTaXplIC0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbik7CiAgICAgICAgIGJ5dGVzVG9SZWFkID0gcmVx
dWVzdENvdW50IDw9IGJ5dGVzQXZhaWxhYmxlID8gcmVxdWVzdENvdW50IDogYnl0ZXNBdmFpbGFi
bGU7Ci0gICAgICAgIG1lbWNweShidWZmZXIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KSArIHBvc2l0aW9uLCBieXRlc1RvUmVhZCk7CisgICAgICAgIG1lbWNweShidWZmZXIsIHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIHBvc2l0aW9uLCBieXRlc1RvUmVhZCk7CiAg
ICAgfQogCiAgICAgaWYgKGFjdHVhbENvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCA3NWNkYzBm
YTgyMTQ0MDM5OGE3M2JhNzgyMTRlZjI2ZjYxNjAwZjM3Li41YWE3ODlhMmNjNjJmZWJkYzAxY2Mz
NWEzZjdlNTY4MWUzN2UxOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtOTgsNyArOTgsNyBAQCBP
U1N0YXR1cyBBdWRpb0ZpbGVSZWFkZXI6OnJlYWRQcm9jKHZvaWQqIGNsaWVudERhdGEsIFNJbnQ2
NCBwb3NpdGlvbiwgVUludDMyIHJlcQogICAgIGlmIChzdGF0aWNfY2FzdDxVSW50NjQ+KHBvc2l0
aW9uKSA8IGRhdGFTaXplKSB7CiAgICAgICAgIHNpemVfdCBieXRlc0F2YWlsYWJsZSA9IGRhdGFT
aXplIC0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbik7CiAgICAgICAgIGJ5dGVzVG9SZWFk
ID0gcmVxdWVzdENvdW50IDw9IGJ5dGVzQXZhaWxhYmxlID8gcmVxdWVzdENvdW50IDogYnl0ZXNB
dmFpbGFibGU7Ci0gICAgICAgIG1lbWNweShidWZmZXIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihkYXRhKSArIHBvc2l0aW9uLCBieXRlc1RvUmVhZCk7CisgICAgICAgIG1lbWNweShidWZmZXIs
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSArIHBvc2l0aW9uLCBieXRlc1RvUmVh
ZCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJ5dGVzVG9SZWFkID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUNsaWVudC5oCmluZGV4IDVlNWQzOTgwYjgwNGFmNDJiODUwYzViZWYyODM0ZTUwMTZm
ZjFkZDkuLjk1NGU1NDFkMThmYjFhMzdmMmQwNzVmYzZmNGU4ZWE5ZDhlM2MzMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZh
dGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoSVNPV2ViVlRUQ3VlJiYpID0g
MDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5o
CmluZGV4IDA1MDIyNDQxZmZlMWYyNzU4ZGVmMzdkODRiNmJjODdlMTlmMjIwMTAuLjBkZDAxYmU3
YTdmODM1MTY2MTFiMmJmMTM4YTZmMmYyMGY4NWE4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRp
bWUmKTsKICAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZEN1ZXMoKTsKIAotICAgIFZlY3RvcjxjaGFy
PiBtX3NhbXBsZUlucHV0QnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX3NhbXBsZUlucHV0
QnVmZmVyOwogCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCAwZGVhODBlMmJjYTQ3OGVkNGMwMmFl
MWEwYjA1NjU0Yjg0ZDI5ZDUwLi5hMTYxYzQ3YzUwZGI4Mjg0N2U2ZmYyZDY4NTI4YmQ4Y2NjNzIy
ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDE3LDcg
KzQxNyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJE
ZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiB2b2lkIEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YUFzQ2hhclB0cigpLCBz
aXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUo
IkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6
ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAg
ICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCAxZDFmY2U2YWRjZDZi
OWJlOTYzY2Y1MTRiZDEyNTFhOTY2ODk0NzA4Li41MmRhNzNkOGJiYWNlY2UwNWViMjRkNTZjOGRj
OGYxOTYyNmI1YzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC04
NCwxMiArODQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElubmVyRGVjb2Rlcik7CiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUmVmUHRyPElubmVyRGVjb2Rlcj4gY3JlYXRlKEltYWdlRGVjb2Rl
ckdTdHJlYW1lciYgZGVjb2RlciwgY29uc3QgY2hhciogZGF0YSwgZ3NzaXplIHNpemUpCisgICAg
ICAgIHN0YXRpYyBSZWZQdHI8SW5uZXJEZWNvZGVyPiBjcmVhdGUoSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyJiBkZWNvZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBnc3NpemUgc2l6ZSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5uZXJEZWNvZGVyKGRlY29kZXIs
IGRhdGEsIHNpemUpKTsKICAgICAgICAgfQogCi0gICAgICAgIElubmVyRGVjb2RlcihJbWFnZURl
Y29kZXJHU3RyZWFtZXImIGRlY29kZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGdzc2l6ZSBzaXplKQor
ICAgICAgICBJbm5lckRlY29kZXIoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyJiBkZWNvZGVyLCBjb25z
dCB1aW50OF90KiBkYXRhLCBnc3NpemUgc2l6ZSkKICAgICAgICAgICAgIDogbV9kZWNvZGVyKGRl
Y29kZXIpCiAgICAgICAgICAgICAsIG1fcnVuTG9vcChSdW5Mb29wOjpjdXJyZW50KCkpCiAgICAg
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCBlYThlMTA3MmE5NzFmNzEyMTcxNzBiNjEzZTdhZTc2OGJhZWRmZWM2Li40
YzFjYjhhYzk2NjVhZWJjNzFjZDgyMGFiYWMzNGQ4ODcyNTQzMTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMjUsNyAr
MTI1LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFj
a09mU2FtcGxlKCkKIAogICAgICAgICBHU1RfSU5GTygiVHJhY2sgJWQgcGFyc2luZyBzYW1wbGU6
ICUuKnMiLCBtX2luZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KG1hcHBlZEJ1ZmZlci5zaXplKCkpLAog
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwcGVkQnVmZmVyLmRhdGEoKSkp
OwotICAgICAgICBjbGllbnQoKS0+cGFyc2VXZWJWVFRDdWVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KG1hcHBlZEJ1ZmZlci5kYXRhKCkpLCBtYXBwZWRCdWZmZXIuc2l6ZSgpKTsKKyAgICAg
ICAgY2xpZW50KCktPnBhcnNlV2ViVlRUQ3VlRGF0YShtYXBwZWRCdWZmZXIuZGF0YSgpLCBtYXBw
ZWRCdWZmZXIuc2l6ZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZl
clBpcGUuY3BwCmluZGV4IGZlZjY2NTEyOGFjOTBjMWIwMGEzN2I4ODg3M2VkNzExNzRiMDc3NzQu
LjMzMDI4YTVlOTRjOWNlNzA0YTEzOGYwM2I5MzRkYzExZTI5ZGUzNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVy
UGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTmljb3Np
YUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIG5hdGl2ZUltYWdl
LT5oYXNBbHBoYSgpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1
cmU6Ok5vRmxhZyk7CiAjaWYgVVNFKENBSVJPKQogICAgICAgICAgICAgICAgICAgICBhdXRvKiBz
dXJmYWNlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgYXV0byogaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8qIGltYWdlRGF0YSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFj
ZSk7CiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlRGF0
YSwgSW50UmVjdChJbnRQb2ludCgpLCBzaXplKSwgSW50UG9pbnQoKSwgY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpKTsKICNlbHNlCiAgICAgICAgICAgICAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggNGI4YWU2
YTBjZDg1NDZkZWY2NmY3NGI5ZjY5NzYyM2FlMjRkNDBhMC4uNmQwMzg2M2IzNjZjMjQ1ZjQ0MmY3
NDM5MzcxOWFiZWFkYTVjNGIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAt
MzQ4LDcgKzM0OCw3IEBAIGJvb2wgZ2V0RU9USGVhZGVyKFNoYXJlZEJ1ZmZlciogZm9udERhdGEs
IEVPVEhlYWRlciYgZW90SGVhZGVyLCBzaXplX3QmIG92ZXJsYXlECiAKIC8vIGFkZHMgZm9udE5h
bWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250
IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUg
bmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAw
IG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250
RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPGNoYXI+JiByZXdyaXR0ZW5Gb250
RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25z
dCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQog
ewogICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNv
bnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIq
Pihmb250RGF0YS5kYXRhKCkpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIGJvb2wgcmVuYW1lRm9udChj
b25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0
b3I8Y2hhCiAgICAgc2l6ZV90IG5hbWVUYWJsZVNpemUgPSAoKG9mZnNldG9mKG5hbWVUYWJsZSwg
bmFtZVJlY29yZHMpICsgbmFtZVJlY29yZENvdW50ICogc2l6ZW9mKG5hbWVSZWNvcmQpICsgZm9u
dE5hbWUubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKSAmIH4zKSArIDQ7CiAKICAgICByZXdyaXR0
ZW5Gb250RGF0YS5yZXNpemUoZm9udERhdGEuc2l6ZSgpICsgbmFtZVRhYmxlU2l6ZSk7Ci0gICAg
Y2hhciogZGF0YSA9IHJld3JpdHRlbkZvbnREYXRhLmRhdGEoKTsKKyAgICBhdXRvKiBkYXRhID0g
cmV3cml0dGVuRm9udERhdGEuZGF0YSgpOwogICAgIG1lbWNweShkYXRhLCBmb250RGF0YS5kYXRh
KCksIG9yaWdpbmFsRGF0YVNpemUpOwogCiAgICAgLy8gTWFrZSB0aGUgdGFibGUgZGlyZWN0b3J5
IGVudHJ5IHBvaW50IHRvIHRoZSBuZXcgJ25hbWUnIHRhYmxlLgpAQCAtNDE3LDcgKzQxNyw3IEBA
IGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJp
bmcmIGZvbnROYW1lLCBWZWN0b3I8Y2hhCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3RhbGwg
dGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCiBSZWZQdHI8Rm9udE1lbW9yeVJlc291
cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gcmV3cml0dGVuRm9u
dERhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZvbnREYXRhOwogICAgIGlmICgh
cmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRlbkZvbnREYXRhKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggZGQyNzY5MmNh
NWQzZmU2Y2YxZTFjMjdkNzI1MmJjYzQ4YzVmZTgzNy4uZmNmMWYyNzIyZmI1MTc2MjdhZTZjYzI3
NzFmMjIwZDBmMjk3ODc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC01NSw3ICs1
NSw3IEBAIHByaXZhdGU6CiB9OwogCiBib29sIGdldEVPVEhlYWRlcihTaGFyZWRCdWZmZXIqIGZv
bnREYXRhLCBFT1RIZWFkZXImIGVvdEhlYWRlciwgc2l6ZV90JiBvdmVybGF5RHN0LCBzaXplX3Qm
IG92ZXJsYXlTcmMsIHNpemVfdCYgb3ZlcmxheUxlbmd0aCk7Ci1ib29sIHJlbmFtZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPGNoYXI+Jik7Citib29sIHJl
bmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4
X3Q+Jik7CiBSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKaW5kZXggMzYyYjY0MmU1MDhiODA3OTAxM2VmZGFm
ZTBkNGE4MWVhYWExN2YxZi4uMGZmYmI3ODM5NWU1Y2UwYWI5M2U3NDI4M2U4YWI2MjhkNDU1ZTVj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKQEAgLTEwNCw4ICsxMDQsOCBAQCB2b2lkIEJpdG1h
cFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCogc3JjRGF0YSwgY29uc3QgSW50
UmVjdCYgdGFyZ2V0UgogICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9pZCk7CiAK
ICAgICBjb25zdCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNDsKLSAgICBjb25zdCBjaGFyKiBk
YXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNyY0RhdGEpOwotICAgIFZlY3RvcjxjaGFy
PiB0ZW1wb3JhcnlEYXRhOworICAgIGF1dG8gZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzcmNEYXRhKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdGVtcG9yYXJ5RGF0YTsKICAgICBJ
bnRQb2ludCBhZGp1c3RlZFNvdXJjZU9mZnNldCA9IHNvdXJjZU9mZnNldDsKIAogICAgIC8vIFRl
eHR1cmUgdXBsb2FkIHJlcXVpcmVzIHN1YmltYWdlIGJ1ZmZlciBpZiBkcml2ZXIgZG9lc24ndCBz
dXBwb3J0IHN1YmltYWdlIGFuZCB3ZSBkb24ndCBoYXZlIGZ1bGwgaW1hZ2UgdXBsb2FkLgpAQCAt
MTE1LDEwICsxMTUsMTAgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNv
bnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFIKICAgICAvLyBwcmVwYXJl
IHRlbXBvcmFyeURhdGEgaWYgbmVjZXNzYXJ5CiAgICAgaWYgKHJlcXVpcmVTdWJJbWFnZUJ1ZmZl
cikgewogICAgICAgICB0ZW1wb3JhcnlEYXRhLnJlc2l6ZSh0YXJnZXRSZWN0LndpZHRoKCkgKiB0
YXJnZXRSZWN0LmhlaWdodCgpICogYnl0ZXNQZXJQaXhlbCk7Ci0gICAgICAgIGNoYXIqIGRzdCA9
IHRlbXBvcmFyeURhdGEuZGF0YSgpOworICAgICAgICBhdXRvIGRzdCA9IHRlbXBvcmFyeURhdGEu
ZGF0YSgpOwogICAgICAgICBkYXRhID0gZHN0OwotICAgICAgICBjb25zdCBjaGFyKiBiaXRzID0g
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNyY0RhdGEpOwotICAgICAgICBjb25zdCBjaGFyKiBz
cmMgPSBiaXRzICsgc291cmNlT2Zmc2V0LnkoKSAqIGJ5dGVzUGVyTGluZSArIHNvdXJjZU9mZnNl
dC54KCkgKiBieXRlc1BlclBpeGVsOworICAgICAgICBhdXRvIGJpdHMgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oc3JjRGF0YSk7CisgICAgICAgIGF1dG8gc3JjID0gYml0cyArIHNvdXJj
ZU9mZnNldC55KCkgKiBieXRlc1BlckxpbmUgKyBzb3VyY2VPZmZzZXQueCgpICogYnl0ZXNQZXJQ
aXhlbDsKICAgICAgICAgY29uc3QgaW50IHRhcmdldEJ5dGVzUGVyTGluZSA9IHRhcmdldFJlY3Qu
d2lkdGgoKSAqIGJ5dGVzUGVyUGl4ZWw7CiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGFy
Z2V0UmVjdC5oZWlnaHQoKTsgKyt5KSB7CiAgICAgICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIHRh
cmdldEJ5dGVzUGVyTGluZSk7CkBAIC0xNTcsMTEgKzE1NywxMSBAQCB2b2lkIEJpdG1hcFRleHR1
cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRS
ZWN0LCBjbwogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgYnl0ZXNQZXJMaW5lOwotICAgIGNv
bnN0IGNoYXIqIGltYWdlRGF0YTsKKyAgICBjb25zdCB1aW50OF90KiBpbWFnZURhdGE7CiAKICNp
ZiBVU0UoQ0FJUk8pCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpOwotICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOworICAg
IGltYWdlRGF0YSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSk7CiAgICAg
Ynl0ZXNQZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwog
I2VsaWYgVVNFKERJUkVDVDJEKQogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRp
bGl0aWVzLmNwcAppbmRleCBlYmFkZjRjNjBkNmRlZWVlOTU1MmIwMTkxYWYxZmRkNTIyM2NhOWJi
Li4zNzhmMGY2MTAyNzYyNjNjMGI5YTdhMzBmYTczNmFhZTJhZTAzMWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0
ZVV0aWxpdGllcy5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBJRFdyaXRlRm9udENvbGxlY3Rpb24x
KiB3ZWJQcm9jZXNzRm9udENvbGxlY3Rpb24oKQogICAgIHJldHVybiBmb250Q29sbGVjdGlvbi5n
ZXQoKTsKIH0KIAotSFJFU1VMVCBhZGRGb250RnJvbURhdGFUb1Byb2Nlc3NDb2xsZWN0aW9uKGNv
bnN0IFZlY3RvcjxjaGFyPiYgZm9udERhdGEpCitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJv
Y2Vzc0NvbGxlY3Rpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmb250RGF0YSkKIHsKICAgICBD
T01QdHI8SURXcml0ZUZvbnRGaWxlPiBmb250RmlsZTsKICAgICBIUkVTVUxUIGhyID0gbWVtb3J5
Rm9udExvYWRlcigpLT5DcmVhdGVJbk1lbW9yeUZvbnRGaWxlUmVmZXJlbmNlKGZhY3RvcnkoKSwg
Zm9udERhdGEuZGF0YSgpLCBmb250RGF0YS5zaXplKCksIG51bGxwdHIsICZmb250RmlsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3Jp
dGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3RXcml0ZVV0aWxpdGllcy5oCmluZGV4IDcyYWM2ODEzYTI2NGJmYTMyYmYwNTFiMGQ4MDgxZWY2
ODE1MTFjOTkuLmE2MjcxOWIxNzE5YTc0Zjk3NjkyMjE5ZGY1ZjdhYWVkYzQ5MDY0NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3RXcml0ZVV0aWxpdGllcy5oCkBAIC01Miw3ICs1Miw3IEBAIElEV3JpdGVHZGlJbnRlcm9wKiBn
ZGlJbnRlcm9wKCk7CiAKIElEV3JpdGVGb250Q29sbGVjdGlvbjEqIHdlYlByb2Nlc3NGb250Q29s
bGVjdGlvbigpOwogCi1IUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRvUHJvY2Vzc0NvbGxlY3Rpb24o
Y29uc3QgVmVjdG9yPGNoYXI+JiBmb250RGF0YSk7CitIUkVTVUxUIGFkZEZvbnRGcm9tRGF0YVRv
UHJvY2Vzc0NvbGxlY3Rpb24oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmb250RGF0YSk7CiBDT01Q
dHI8SURXcml0ZUZvbnRGYW1pbHk+IGZvbnRGYW1pbHlGb3JDb2xsZWN0aW9uKElEV3JpdGVGb250
Q29sbGVjdGlvbiosIGNvbnN0IFZlY3Rvcjx3Y2hhcl90PiYgbG9jYWxlTmFtZSwgY29uc3QgTE9H
Rk9OVCYpOwogQ09NUHRyPElEV3JpdGVGb250PiBjcmVhdGVXaXRoUGxhdGZvcm1Gb250KGNvbnN0
IExPR0ZPTlQmKTsKIFZlY3Rvcjx3Y2hhcl90PiBmYW1pbHlOYW1lRm9yTG9jYWxlKElEV3JpdGVG
b250RmFtaWx5KiwgY29uc3QgVmVjdG9yPHdjaGFyX3Q+JiBsb2NhbGVOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IDZkMzkxNTA3MTA4YzFiZWUyNjVhNzE4ZGEwNDc1
YjA1OGY4MjI2ODIuLmZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3Ry
dWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWdu
ZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAg
ICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtYXJrZXIt
PmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci0+YXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hl
YWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRl
eCA2NGRmNzUwMmUxYjMxNWI5YThkZDI5MDhmMjQ4Y2VhMTViZjEwNjU4Li5hMTg1YzA3ZGIyN2Vm
MTYyM2QwMzc2NzYzNGEzZDE3MmFhZDBkZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICBD
TVRpbWUgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wIHsga0NNVGltZUludmFs
aWQgfTsKICAgICBDTVRpbWUgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uIHsga0NNVGltZUludmFs
aWQgfTsKIAotICAgIFZlY3RvcjxjaGFyPiBtX3NvdXJjZUJ1ZmZlcjsKLSAgICBWZWN0b3I8Y2hh
cj4gbV9kZXN0aW5hdGlvbkJ1ZmZlcjsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9zb3VyY2VCdWZm
ZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGVzdGluYXRpb25CdWZmZXI7CiAKICAgICBSZXRh
aW5QdHI8Q01CbG9ja0J1ZmZlclJlZj4gbV9zYW1wbGVCbG9ja0J1ZmZlcjsKICAgICBzaXplX3Qg
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDEzYTIzMmMxMjhhOTc1ZTBjYjBj
MzU3OWI4NTBkYzI4N2YyZWRlYTAuLmY1Zjg1NTg3MWZjNzA4NTY2ZjdlZjhiOWExNjFlMjdiOGU1
ZDg5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhdXNlKCk7CiAg
ICAgdm9pZCByZXN1bWUoKTsKIAotICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiwgc2l6
ZV90KTsKKyAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAg
ICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgYXVkaW9CaXRS
YXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KaW5kZXggZDcxMDVjMmZhNDAwY2FmZTg4M2QyYjZiNzUxZDk3MjVhZmNl
OTdiZC4uNjNiZDY1OThkMDJhNWM3MDA2ZGE5MjlmYzk0ZjFmNWY2NmE3MTZkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAt
NzQsMTQgKzc0LDE0IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdyaXRlcjooV2ViQ29yZTo6
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXImKXdyaXRlcgogLSAodm9pZClhc3NldFdyaXRlcjoo
QVZBc3NldFdyaXRlciAqKWFzc2V0V3JpdGVyIGRpZFByb2R1Y2VGcmFnbWVudGVkSGVhZGVyRGF0
YTooTlNEYXRhICopZnJhZ21lbnRlZEhlYWRlckRhdGEKIHsKICAgICBVTlVTRURfUEFSQU0oYXNz
ZXRXcml0ZXIpOwotICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJEYXRh
IGxlbmd0aF0pOworICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihbZnJhZ21lbnRlZEhlYWRlckRhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRIZWFkZXJE
YXRhIGxlbmd0aF0pOwogfQogCiAtICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0V3JpdGVyICop
YXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRNZWRpYURhdGE6KE5TRGF0YSAqKWZyYWdt
ZW50ZWRNZWRpYURhdGEgZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydDooQVZGcmFnbWVudGVkTWVk
aWFEYXRhUmVwb3J0ICopZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydAogewogICAgIFVOVVNFRF9Q
QVJBTShhc3NldFdyaXRlcik7CiAgICAgVU5VU0VEX1BBUkFNKGZyYWdtZW50ZWRNZWRpYURhdGFS
ZXBvcnQpOwotICAgIG1fd3JpdGVyLT5hcHBlbmREYXRhKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihbZnJhZ21lbnRlZE1lZGlhRGF0YSBieXRlc10pLCBbZnJhZ21lbnRlZE1lZGlhRGF0YSBsZW5n
dGhdKTsKKyAgICBtX3dyaXRlci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW2ZyYWdtZW50ZWRNZWRpYURhdGEgYnl0ZXNdKSwgW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVu
Z3RoXSk7CiB9CiAKIC0gKHZvaWQpY2xvc2UKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiAgICAgbV9mZXRjaERh
dGFDb21wbGV0aW9uSGFuZGxlcih0YWtlRGF0YSgpLCBjdXJyZW50VGltZUNvZGUpOwogfQogCi12
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5k
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9kYXRhTG9jayB9OwogICAgIGlmICghbV9kYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDQzODQwYTNkNjFlOTdlY2QxYWMxOWZlNzM2NWI5
OGFjZDdmMTY2NDAuLjVjYjYwYjllZjZlZjU3YTQzYjRlZWY3MmExMzc2NzliMWFlYmQ2NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xMzYsNyArMTM2LDcg
QEAgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tN
ZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKIAogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6On5N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAotdm9pZCBNb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCit2b2lkIE1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsK
ICAgICBtX2lucHV0QnVmZmVyLmFwcGVuZFZlY3RvcihkYXRhKTsKICAgICBTb3VyY2VCdWZmZXJQ
cml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQgcmVzdWx0ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6QXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VC
dWZmZXJQcml2YXRlLmgKaW5kZXggZGZiZjM2YTFlYzY3NGYzYmQ4MGIyOGFhZTgwMTk4OWU1OWU2
MTQ3NC4uMTRmMTU4ZDYwMzFhNjUxZDQwMjcxYWY1ZWIwMDM2NGI4ZWMzNTk1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZh
dGUqKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBh
cHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFZl
Y3Rvcjx1aW50OF90PiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9p
ZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291
cmNlKCkgZmluYWw7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUaW1lIG1f
bWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2Vu
cXVldWVkU2FtcGxlczsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVw
dGg7Ci0gICAgVmVjdG9yPGNoYXI+IG1faW5wdXRCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IG1faW5wdXRCdWZmZXI7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29u
c3QgTG9nZ2VyPiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggN2FkZGNlMzk4MzA5Nzg3YzNkM2FhZjBjNGVjZTQ0NDQw
YjY4YTYzNi4uZWI5MTE0MTI5YTM5NTdmNjk2MmQxMzhjZTRhYzA0NGU5OWIwM2Q3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTMx
MCw3ICszMTAsOCBAQCBib29sIGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZShjb25zdCBTdHJp
bmcmIHZhbHVlKQogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4SW5wdXRTYW1wbGVT
aXplID0gMTI4Owotc3RhdGljIFN0cmluZyB0cmltSW5wdXRTYW1wbGUoY29uc3QgY2hhciogcCwg
c2l6ZV90IGxlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgorc3RhdGljIFN0cmlu
ZyB0cmltSW5wdXRTYW1wbGUoQ2hhclR5cGUqIHAsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgU3Ry
aW5nIHMgPSBTdHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW5ndGgsIG1heElucHV0U2FtcGxl
U2l6ZSkpOwogICAgIGlmIChsZW5ndGggPiBtYXhJbnB1dFNhbXBsZVNpemUpCkBAIC02MzEsMTQg
KzYzMiwxNSBAQCBib29sIHBhcnNlUmFuZ2UoY29uc3QgU3RyaW5nJiByYW5nZSwgbG9uZyBsb25n
JiByYW5nZU9mZnNldCwgbG9uZyBsb25nJiByYW5nZUVuZAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hh
ciogY2hhcmFjdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBp
bmxpbmUgYm9vbCBpc1ZhbGlkSGVhZGVyTmFtZUNoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGNoYXJh
Y3RlcikKIHsKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0
aW9uLTMuMgogICAgIC8vIEEgaGVhZGVyIG5hbWUgc2hvdWxkIG9ubHkgY29udGFpbiBvbmUgb3Ig
bW9yZSBvZgogICAgIC8vIGFscGhhbnVtZXJpYyBvciAhICMgJCAlICYgJyAqICsgLSAuIF4gXyBg
IHwgfgotICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKCpjaGFyYWN0ZXIpKQorICAgIGlmIChp
c0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3RlcikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IHN3aXRjaCAoKmNoYXJhY3RlcikgeworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CiAgICAgY2Fz
ZSAnISc6CiAgICAgY2FzZSAnIyc6CiAgICAgY2FzZSAnJCc6CkBAIC02NjAsMTYgKzY2MiwxNiBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEhlYWRlck5hbWVDaGFyYWN0ZXIoY29uc3QgY2hh
ciogY2hhcmFjdGVyKQogICAgIH0KIH0KIAotc2l6ZV90IHBhcnNlSFRUUEhlYWRlcihjb25zdCBj
aGFyKiBzdGFydCwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCBTdHJpbmdW
aWV3JiBuYW1lU3RyLCBTdHJpbmcmIHZhbHVlU3RyLCBib29sIHN0cmljdCkKK3NpemVfdCBwYXJz
ZUhUVFBIZWFkZXIoY29uc3QgdWludDhfdCogc3RhcnQsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYg
ZmFpbHVyZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3RyaW5nJiB2YWx1ZVN0ciwgYm9v
bCBzdHJpY3QpCiB7Ci0gICAgY29uc3QgY2hhciogcCA9IHN0YXJ0OwotICAgIGNvbnN0IGNoYXIq
IGVuZCA9IHN0YXJ0ICsgbGVuZ3RoOworICAgIGF1dG8gcCA9IHN0YXJ0OworICAgIGF1dG8gZW5k
ID0gc3RhcnQgKyBsZW5ndGg7CiAKLSAgICBWZWN0b3I8Y2hhcj4gbmFtZTsKLSAgICBWZWN0b3I8
Y2hhcj4gdmFsdWU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG5hbWU7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZhbHVlOwogCiAgICAgYm9vbCBmb3VuZEZpcnN0TmFtZUNoYXIgPSBmYWxzZTsKLSAgICBj
b25zdCBjaGFyKiBuYW1lUHRyID0gbnVsbHB0cjsKKyAgICBjb25zdCB1aW50OF90KiBuYW1lUHRy
ID0gbnVsbHB0cjsKICAgICBzaXplX3QgbmFtZVNpemUgPSAwOwogCiAgICAgbmFtZVN0ciA9IFN0
cmluZ1ZpZXcoKTsKQEAgLTY5Miw3ICs2OTQsNyBAQCBzaXplX3QgcGFyc2VIVFRQSGVhZGVyKGNv
bnN0IGNoYXIqIHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sCiAg
ICAgICAgIGNhc2UgJzonOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lQ2hhcmFjdGVyKHApKSB7CisgICAgICAg
ICAgICBpZiAoIWlzVmFsaWRIZWFkZXJOYW1lQ2hhcmFjdGVyKCpwKSkgewogICAgICAgICAgICAg
ICAgIGlmIChuYW1lLnNpemUoKSA8IDEpCiAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmVSZWFz
b24gPSAiVW5leHBlY3RlZCBzdGFydCBjaGFyYWN0ZXIgaW4gaGVhZGVyIG5hbWUiOwogICAgICAg
ICAgICAgICAgIGVsc2UKQEAgLTc0Nyw3ICs3NDksNyBAQCBzaXplX3QgcGFyc2VIVFRQSGVhZGVy
KGNvbnN0IGNoYXIqIHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24s
CiAgICAgcmV0dXJuIHAgLSBzdGFydDsKIH0KIAotc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYg
Ym9keSkKK3NpemVfdCBwYXJzZUhUVFBSZXF1ZXN0Qm9keShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBWZWN0b3I8dWludDhfdD4mIGJvZHkpCiB7CiAgICAgYm9keS5jbGVhcigp
OwogICAgIGJvZHkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKaW5kZXggYTg2OWVmNzliYjVkMjFiYTM5YmIyYzA2
ZTljZThjZjNkMzhmOTg0MC4uMWIxYTRkMGJhODM4YjJkMGEzMjU1NGM3MzlkODliNjFhYWM3ODVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaApA
QCAtOTEsOCArOTEsOCBAQCBXRUJDT1JFX0VYUE9SVCBib29sIHBhcnNlUmFuZ2UoY29uc3QgU3Ry
aW5nJiwgbG9uZyBsb25nJiByYW5nZU9mZnNldCwgbG9uZyBsb25nJgogQ29udGVudFR5cGVPcHRp
b25zRGlzcG9zaXRpb24gcGFyc2VDb250ZW50VHlwZU9wdGlvbnNIZWFkZXIoU3RyaW5nVmlldyBo
ZWFkZXIpOwogCiAvLyBQYXJzaW5nIENvbXBsZXRlIEhUVFAgTWVzc2FnZXMuCi1zaXplX3QgcGFy
c2VIVFRQSGVhZGVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFp
bHVyZVJlYXNvbiwgU3RyaW5nVmlldyYgbmFtZVN0ciwgU3RyaW5nJiB2YWx1ZVN0ciwgYm9vbCBz
dHJpY3QgPSB0cnVlKTsKLXNpemVfdCBwYXJzZUhUVFBSZXF1ZXN0Qm9keShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIGJvZHkpOworc2l6ZV90
IHBhcnNlSFRUUEhlYWRlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24sIFN0cmluZ1ZpZXcmIG5hbWVTdHIsIFN0cmluZyYgdmFsdWVTdHIs
IGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CitzaXplX3QgcGFyc2VIVFRQUmVxdWVzdEJvZHkoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yPHVpbnQ4X3Q+JiBib2R5KTsKIAog
Ly8gSFRUUCBIZWFkZXIgcm91dGluZSBhcyBwZXIgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5v
cmcvI3Rlcm1pbm9sb2d5LWhlYWRlcnMKIGJvb2wgaXNGb3JiaWRkZW5IZWFkZXJOYW1lKGNvbnN0
IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGUuY3BwCmluZGV4IGQ2YzhjYjkwMTcwZmVkZmMxYjU1Y2U1ZDdlY2Q4
MmY1Y2Y4MGEzOTIuLjZkZTFhM2Y4YTFmOWI2M2QxZTcxZmIzYWE3Y2U0MjUzNDFhNjUxZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZS5jcHAKQEAgLTUwLDExICs1MCwxMSBAQCBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tl
dFN0cmVhbVN0YXRlIFNvY2tldFN0cmVhbUhhbmRsZTo6c3RhdGUoKSBjb25zdAogICAgIHJldHVy
biBtX3N0YXRlOwogfQogCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6c2VuZERhdGEoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6c2VuZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ29ubmVjdGluZyB8fCBtX3N0YXRlID09IENs
b3NpbmcpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgcGxh
dGZvcm1TZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwbGF0Zm9ybVNlbmQoZGF0YSwgbGVu
Z3RoLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlOjpzZW5kSGFuZHNoYWtlKENTdHJpbmcmJiBoYW5kc2hha2UsIHN0ZDo6b3B0aW9uYWw8
Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiYgaGVhZGVyRmllbGRQcm94eSwgRnVuY3Rp
b248dm9pZChib29sLCBib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCBjYTEx
YTYxM2E2OTEwZDg2NmI4NTk3ZTJhMjgyMzQ0ZGQyZTBlNzUzLi4wYjk5M2Q3OGNkNGFlYWFiYjk0
ZjczMzk2OWNlZDg4ZmYyOTU5ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpID0gZGVmYXVsdDsKICAgICBTb2Nr
ZXRTdHJlYW1TdGF0ZSBzdGF0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBzZW5kRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPik7CisgICAgdm9p
ZCBzZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2
b2lkKGJvb2wpPik7CiAgICAgdm9pZCBzZW5kSGFuZHNoYWtlKENTdHJpbmcmJiBoYW5kc2hha2Us
IHN0ZDo6b3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+JiYsIEZ1bmN0aW9u
PHZvaWQoYm9vbCwgYm9vbCk+KTsKICAgICB2b2lkIGNsb3NlKCk7IC8vIERpc2Nvbm5lY3QgYWZ0
ZXIgYWxsIGRhdGEgaW4gYnVmZmVyIGFyZSBzZW50LgogICAgIHZvaWQgZGlzY29ubmVjdCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50LmgKaW5kZXggNjBhMjNkNWY0Nzc0OTYzNjdlMWI2MWI5ZmVjYTliZDFh
MDYyYmYyYS4uNWRlNTU5YzBhYmRlZDkxNTNjY2RmMDc3ZTdlMmI1NmU3Y2JlOGFjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJl
YW1IYW5kbGUmLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudChTb2NrZXRTdHJl
YW1IYW5kbGUmLCBzaXplX3QgYnVmZmVyZWRBbW91bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbFNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBTb2NrZXRTdHJl
YW1FcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRG93bmxvYWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvRG93bmxvYWRCdW5kbGUuaAppbmRleCA4ZGUyMjQ1YWEzZmNiMjUxMDBhZTkwYWU5ZmU2MDhj
NGRjODU0M2I2Li43MWY3ZWJiMGYzMjY0ZTY0MWU5N2ZmY2IxZjA0YmI2MDEyM2NiODU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Rvd25sb2FkQnVuZGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRs
ZS5oCkBAIC0zMSw4ICszMSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRG93
bmxvYWRCdW5kbGUgewogCi1ib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgY2hhciosIHVpbnQz
Ml90LCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpOwotYm9vbCBleHRyYWN0UmVzdW1lRGF0YShj
b25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgsIFZlY3RvcjxjaGFyPiYgcmVzdW1lRGF0YSk7Citib29s
IGFwcGVuZFJlc3VtZURhdGEoY29uc3QgdWludDhfdCosIHVpbnQzMl90LCBjb25zdCBTdHJpbmcm
IGJ1bmRsZVBhdGgpOworYm9vbCBleHRyYWN0UmVzdW1lRGF0YShjb25zdCBTdHJpbmcmIGJ1bmRs
ZVBhdGgsIFZlY3Rvcjx1aW50OF90PiYgcmVzdW1lRGF0YSk7CiBjb25zdCBTdHJpbmcmIGZpbGVF
eHRlbnNpb24oKTsKIAogfSAvLyBuYW1lc3BhY2UgRG93bmxvYWRCdW5kbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA2MjU0ODViZjFjMGU4ZTU4MTliZjY1NDA1NWJk
Mzg2NDM3MTgzYTQ4Li5kMTM3OTQ5OGFhYjgxZWUyY2E3YWEwODliMWI1MGY5OTVjMjgyOTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC02MDYsNyArNjA2LDcgQEAg
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2soQ0ZTdHJlYW1F
dmVudFR5cGUgdHlwZSkKICAgICAgICAgaWYgKGxlbmd0aCA9PSAtMSkKICAgICAgICAgICAgIG1f
Y2xpZW50LmRpZEZhaWxUb1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRo
aXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHB0ciksIGxlbmd0aCk7CisgICAgICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcywgcHRyLCBsZW5n
dGgpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA4NDgxMDdj
YzZhZGYwNThkYWE4OGQ4NDY4MDJhMzZmZDhkNzdkZTA1Li4wNWI0ZTI5YmM5MzFjMTQzNDViNDc5
NTk4YmFlZTY3ZWI0YjY4YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9v
bCBDdXJsQ2FjaGVFbnRyeTo6aXNDYWNoZWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlQ2FjaGVkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK2Jvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGlmICghb3BlbkNvbnRlbnRGaWxlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXggNDcyNzYyYzdmNTUyY2RjMGQ5NDRmOTkw
Y2FhMzBkMjZjODAyM2EyNS4uMjQ2MTQwOGJmYTYyMjRkZDE1MDhkMWM0M2YyNzZmNjIxZDZhMjcy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHNpemVfdCBlbnRy
eVNpemUoKTsKICAgICBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycygpIHsgcmV0dXJuIG1f
cmVxdWVzdEhlYWRlcnM7IH0KIAotICAgIGJvb2wgc2F2ZUNhY2hlZERhdGEoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90KTsKKyAgICBib29sIHNhdmVDYWNoZWREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCk7CiAgICAgYm9vbCByZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRsZSopOwog
CiAgICAgYm9vbCBzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmNwcAppbmRleCBlNjlmNmMzNTc3NWVkZWNjZWIyMmU4NTE1NDY1M2E5NDg2
MjZmYmNkLi43NTA0Yzk4ODZmYjhmMjVlZmU3OWE4MjYyNjI4MjA4OTgyNjc3Zjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCBDdXJsQ2FjaGVNYW5hZ2VyOjpn
ZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYgcmUK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUp
Cit2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBq
b2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGlmIChtX2Rpc2Fi
bGVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaAppbmRleCA0ZTI0OWM5YzJiMGU5YWYx
YWUzYWE0OTNlODNiNTE4YTY1NDJjMzkyLi5jOWUyOWQ4MDk3MGM0MDQ2ZTc5NjE2MmJkOTgzMjkx
MWI2ZGVlNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IGJvb2wgZ2V0Q2FjaGVkUmVzcG9uc2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlJiwgUmVz
b3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUm
LCBjb25zdCBjaGFyKiwgc2l6ZV90KTsgLy8gU2F2ZSBkYXRhCisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZlIGRh
dGEKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUmKTsKICAgICB2b2lk
IGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4
IGZlNDEwNzZkNzZiYWFkMjFiY2RkYzRhMGUyYWQzYjc2N2Q1MjE1NTAuLmJiZGEzZmJkYTc1ODNk
OTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAg
LTE5MCw3ICsxOTAsNyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50
KCkKICAgICAgICAgaWYgKG1fYnVmZmVyLnNpemUoKSA8IDIpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgY29uc3QgY2hhciogY29udGVudCA9IG1fYnVmZmVyLmRhdGEoKTsK
KyAgICAgICAgYXV0byogY29udGVudCA9IG1fYnVmZmVyLmRhdGEoKTsKICAgICAgICAgLy8gQnkg
ZGVmYXVsdCB3ZSdsbCByZW1vdmUgMiBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQuCiAgICAgICAgIC8v
IFRoZSBcciBhbmQgXG4gYXMgc3RhdGVkIGluIHRoZSBtdWx0aXBhcnQgUkZDLgogICAgICAgICBz
aXplX3QgcmVtb3ZlQ291bnQgPSAyOwpAQCAtMjUwLDcgKzI1MCw3IEBAIGJvb2wgQ3VybE11bHRp
cGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAv
LyBOb3QgZW5vdWdoIGRhdGEgdG8gY2hlY2suIFJldHVybiBsYXRlciB3aGVuIHRoZXJlIGlzIG1v
cmUgZGF0YS4KIAogICAgICAgICAvLyBXZSdsbCBkZWNpZGUgaWYgdGhpcyBpcyBhIGNsb3Npbmcg
Ym91bmRhcnkgb3IgYW4gb3BlbmluZyBvbmUuCi0gICAgICAgIGNvbnN0IGNoYXIqIGNvbnRlbnQg
PSBtX2J1ZmZlci5kYXRhKCk7CisgICAgICAgIGF1dG8qIGNvbnRlbnQgPSBtX2J1ZmZlci5kYXRh
KCk7CiAKICAgICAgICAgaWYgKGNvbnRlbnRbMF0gPT0gJy0nICYmIGNvbnRlbnRbMV0gPT0gJy0n
KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgY2xvc2luZyBib3VuZGFyeS4gQ2xvc2UgZG93
biB0aGUgaGFuZGxlci4KQEAgLTMwMCw3ICszMDAsNyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmNoZWNrRm9yQm91bmRhcnkoc2l6ZV90JiBib3VuZGFyeVN0YXJ0UG9zaXRpb24sIHNpemVf
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc2l6ZV90IEN1cmxNdWx0aXBhcnRIYW5kbGU6Om1h
dGNoZWRMZW5ndGgoY29uc3QgY2hhciogZGF0YSkKK3NpemVfdCBDdXJsTXVsdGlwYXJ0SGFuZGxl
OjptYXRjaGVkTGVuZ3RoKGNvbnN0IHVpbnQ4X3QqIGRhdGEpCiB7CiAgICAgYXV0byBsZW5ndGgg
PSBtX2JvdW5kYXJ5Lmxlbmd0aCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKQEAgLTMxOCwxMiArMzE4LDEyIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6
cGFyc2VIZWFkZXJzSWZQb3NzaWJsZSgpCiAgICAgaWYgKCFjb250ZW50TGVuZ3RoKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBhdXRvIGNvbnRlbnQgPSBtX2J1ZmZlci5kYXRh
KCk7CisgICAgYXV0byogY29udGVudCA9IG1fYnVmZmVyLmRhdGEoKTsKIAogICAgIC8vIENoZWNr
IGlmIHdlIGhhdmUgdGhlIGhlYWRlciBjbG9zaW5nIHN0cmluZ3MuCi0gICAgaWYgKCFzdHJuc3Ry
KGNvbnRlbnQsICJcclxuXHJcbiIsIGNvbnRlbnRMZW5ndGgpKSB7CisgICAgaWYgKCFtZW1tZW0o
Y29udGVudCwgY29udGVudExlbmd0aCwgIlxyXG5cclxuIiwgNCkpIHsKICAgICAgICAgLy8gU29t
ZSBzZXJ2ZXJzIGNsb3NlcyB0aGUgaGVhZGVycyB3aXRoIG9ubHkgXG4tcy4KLSAgICAgICAgaWYg
KCFzdHJuc3RyKGNvbnRlbnQsICJcblxuIiwgY29udGVudExlbmd0aCkpIHsKKyAgICAgICAgaWYg
KCFtZW1tZW0oY29udGVudCwgY29udGVudExlbmd0aCwgIlxuXG4iLCAyKSkgewogICAgICAgICAg
ICAgLy8gRG9uJ3QgaGF2ZSB0aGUgaGVhZGVyIGNsb3Npbmcgc3RyaW5nLiBXYWl0IGZvciBtb3Jl
IGRhdGEuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5oCmluZGV4IDZlZDU1NmY0MmEwNTkwMWIxOWIwZjEwM2IyMmM2YTQ5ZjMyNjIxYWQuLjVj
MDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4NjhmNDNlMmY5NWMzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuaApAQCAtNjIsMTMgKzYyLDEzIEBAIHByaXZhdGU6CiAKICAgICBib29sIHByb2Nlc3NDb250
ZW50KCk7CiAgICAgYm9vbCBjaGVja0ZvckJvdW5kYXJ5KHNpemVfdCYgYm91bmRhcnlTdGFydFBv
c2l0aW9uLCBzaXplX3QmIGxhc3RQYXJ0aWFsTWF0Y2hQb3NpdGlvbik7Ci0gICAgc2l6ZV90IG1h
dGNoZWRMZW5ndGgoY29uc3QgY2hhciogZGF0YSk7CisgICAgc2l6ZV90IG1hdGNoZWRMZW5ndGgo
Y29uc3QgdWludDhfdCogZGF0YSk7CiAgICAgYm9vbCBwYXJzZUhlYWRlcnNJZlBvc3NpYmxlKCk7
CiAKICAgICBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBtX2NsaWVudDsKIAogICAgIFN0cmlu
ZyBtX2JvdW5kYXJ5OwotICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gbV9idWZmZXI7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9oZWFkZXJzOwogCiAgICAgU3Rh
dGUgbV9zdGF0ZSB7IFN0YXRlOjpDaGVja0JvdW5kYXJ5IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcAppbmRleCBhMzA5YzI1OGNkOWYxMTJkM2JiY2U2Y2FhNzE0ODE4MzZh
MWZiMDEwLi5lNTY0YTBjZTY2NjE0YTQ5YTEwMzEzNjg4NTFjNGRhODgyMzUyYTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lk
IEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVj
ZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YUFzQ2hhclB0cigpLCBidWZmZXItPnNpemUo
KSk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9o
YW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgY2xpZW50KCktPmRp
ZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW0uY3BwCmluZGV4IDFiMTVhZjAxYmNjMGVhYjkxMGZjM2I5ZThhOGQ0NjNiN2M2Njg1
MTkuLmZmNTVkMzUyMzQyNzg2ZmNkZWFlZmM2NGY2Y2NiZTAxNWY0YzViNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKQEAg
LTE0NCw3ICsxNDQsNyBAQCB2b2lkIEN1cmxTdHJlYW06OnRyeVRvUmVjZWl2ZSgpCiAgICAgICAg
IGRlc3Ryb3lIYW5kbGUoKTsKIAogICAgIG1fc2NoZWR1bGVyLmNhbGxDbGllbnRPbk1haW5UaHJl
YWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1JRCwgYnVmZmVyID0gV1RGTW92ZShy
ZWNlaXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0ZXNSZWNlaXZlZF0oQ2xpZW50JiBjbGllbnQpIG11
dGFibGUgewotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5nZXQoKSksIGxlbmd0aCk7CisgICAgICAgIGNs
aWVudC5kaWRSZWNlaXZlRGF0YShzdHJlYW1JRCwgYnVmZmVyLmdldCgpLCBsZW5ndGgpOwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW0uaAppbmRleCAzMTNiMDE3M2RhNWNkNDA0YTFlM2ZjYWQ5NTczYjhmZjdjM2FiZDRm
Li5lNjQ2MjlmYzIyYTIwOTdhMmFmMGIwYzAxMzliMjNkNzkwOGNmM2RjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9w
ZW4oQ3VybFN0cmVhbUlEKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShD
dXJsU3RyZWFtSUQsIHNpemVfdCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBjaGFyKiwgc2l6ZV90KSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoQ3VybFN0cmVhbUlELCBD
VVJMY29kZSkgPSAwOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Eb3dubG9hZEJ1bmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Rvd25sb2FkQnVuZGxlLmgKaW5kZXggYzEyNWRlYjE4Zjg2MjVkYzc2
MTc3MjkzZGYyNzIxYjdjMjcyMzNmYS4uNmI5NzhiZTZmODRlNmU5MzQ3NGJkYjIzZGI2YmVhYjNk
NTZmYTYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Rvd25sb2FkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Rvd25sb2FkQnVuZGxlLmgKQEAgLTMwLDggKzMwLDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBEb3dubG9hZEJ1bmRsZSB7CiAKLWJvb2wgYXBwZW5kUmVzdW1lRGF0YShj
b25zdCBjaGFyKiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Ci1ib29sIGV4
dHJhY3RSZXN1bWVEYXRhKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPGNoYXI+JiBy
ZXN1bWVEYXRhKTsKK2Jvb2wgYXBwZW5kUmVzdW1lRGF0YShjb25zdCB1aW50OF90KiwgdWludDMy
X3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7Citib29sIGV4dHJhY3RSZXN1bWVEYXRhKGNv
bnN0IFN0cmluZyYgYnVuZGxlUGF0aCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bWVEYXRhKTsKIGNv
bnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbigpOwogCiB9IC8vIG5hbWVzcGFjZSBEb3dubG9hZEJ1
bmRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggMmQwNTg0ZGFiNWNmZjZkMTQ5MDYy
OTY0MmJhZWE2NTJmYWVhMDAzMy4uYjgwNGZkZTA5NzNiYmZiMjgzMzFjZjdjM2ExZjIwYjA0M2U3
NGZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpZE9wZW4oQ3VybFN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmFpbChDdXJsU3RyZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAog
ICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlkYXRlZCgpIHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52
YWxpZEN1cmxTdHJlYW1JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAK
aW5kZXggMmZlY2UwMjhlZmZkYmU4ODUxOGVjN2I4YmUyNTliMGEwOTA4NmNjZi4uNGI5NDkxYzEx
NTQzZjJiNjBmMTJkMzZlOWU2YTBjYmFhZTM0YTcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbEN1cmwuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpkaWRTZW5kRGF0YShDdXJsU3RyZWFtSUQsIHNpemVfdCBsZW5ndGgpCiAgICAgc2Vu
ZFBlbmRpbmdEYXRhKCk7CiB9CiAKLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZGlkUmVj
ZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQor
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKG1fc3RhdGUg
IT0gT3BlbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCmluZGV4IDkwMWIyYjcx
MGU0ZjgxYTNjODBjYWIwMzkzODg0N2VhMTY0MWUzMjcuLmQ4M2MzYjJhNjNiMjJjMzllMThjMTI5
ZTQ0YmM4ZjJkMzhiOGIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
Y29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKCkKICAgICByZXR1cm4gZXh0ZW5zaW9uOwogfQog
Ci1ib29sIGFwcGVuZFJlc3VtZURhdGEoY29uc3QgY2hhciogcmVzdW1lQnl0ZXMsIHVpbnQzMl90
IHJlc3VtZUxlbmd0aCwgY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoKQorYm9vbCBhcHBlbmRSZXN1
bWVEYXRhKGNvbnN0IHVpbnQ4X3QqIHJlc3VtZUJ5dGVzLCB1aW50MzJfdCByZXN1bWVMZW5ndGgs
IGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCkKIHsKICAgICBpZiAoIXJlc3VtZUJ5dGVzIHx8ICFy
ZXN1bWVMZW5ndGgpIHsKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIHJlc3VtZSBkYXRhIHRv
IHdyaXRlIHRvIGJ1bmRsZSBwYXRoIik7CkBAIC04OSw3ICs4OSw3IEBAIGV4aXQ6CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBleHRyYWN0UmVzdW1lRGF0YShjb25zdCBTdHJpbmcmIGJ1
bmRsZVBhdGgsIFZlY3RvcjxjaGFyPiYgcmVzdW1lRGF0YSkKK2Jvb2wgZXh0cmFjdFJlc3VtZURh
dGEoY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoLCBWZWN0b3I8dWludDhfdD4mIHJlc3VtZURhdGEp
CiB7CiAgICAgaWYgKGJ1bmRsZVBhdGguaXNFbXB0eSgpKSB7CiAgICAgICAgIExPR19FUlJPUigi
Q2Fubm90IGNyZWF0ZSByZXN1bWUgZGF0YSBmcm9tIGVtcHR5IGRvd25sb2FkIGJ1bmRsZSBwYXRo
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZm
ZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQ
T1NJWC5jcHAKaW5kZXggOGVkNTcxNzQ3NzhjYjdiZGFkY2EzNjUxN2ZkNzk0NDU3MzhjNTJkNy4u
YzkyOGI2MzczNDUwZGE4MTVjOTNmODY3Y2ZjOGQ5OTU4YjFlMzU0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtNTYs
NyArNTYsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKIAogICAgIHNpemVfdCB0b3RhbEJ5
dGVzUmVhZCA9IDA7CiAgICAgc3NpemVfdCBieXRlc1JlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCBlY2I2YmFlMTY4OTU2MTY3ZjYxZmFmM2RjYTI5MzY0
NmNkY2FkNDg2Li4wMDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1NDNkYTYyZDczOGMwZmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8v
IERvY3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgp
LgogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlN
RVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVu
dAotICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0
YShkYXRhKCktPmRhdGFBc0NoYXJQdHIoKSwgZGF0YSgpLT5zaXplKCkpOworICAgICAgICBsb2Fk
ZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGEo
KSwgZGF0YSgpLT5zaXplKCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+d3JpdGVyKCkuZW5kKCk7CiAKICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDFmNWJlZjc5ZDE2ZTI3NmQ5YzEwMTEy
OGI4ODlkN2NmMWJhOGYwNGEuLjEyNDdkYWE2NDYzOWQ2ZTZlYWMxNmQxMTI2MzhiOWY5ZDRhNzk1
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6dXBkYXRlTGVh
ZlRleHROb2RlKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIG9wZXJhdGlv
biBtaWdodCBmaXJlIG11dGF0aW9uIGV2ZW50LCBzZWUgYmVsb3cuCi0gICAgbV9sZWFmVGV4dE5v
ZGUtPmFwcGVuZERhdGEoU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihtX2J1ZmZlcmVkVGV4dC5kYXRhKCkpLCBtX2J1ZmZlcmVkVGV4dC5zaXplKCkpKTsKKyAg
ICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5kRGF0YShTdHJpbmc6OmZyb21VVEY4KG1fYnVmZmVyZWRU
ZXh0LmRhdGEoKSwgbV9idWZmZXJlZFRleHQuc2l6ZSgpKSk7CiAgICAgbV9idWZmZXJlZFRleHQg
PSB7IH07CiAKICAgICBtX2xlYWZUZXh0Tm9kZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAppbmRl
eCBlZGZmODQ2NGZkNTI5MDM2ODY5ZGEwYzdlNGViODQ4ZmFmOTBiZDNkLi45ZWM1NWY2MTZmNTg0
M2I2YzgwMjdiYzE5ZGE3YTYwNThkNGFhNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKQEAgLTE3NCwxMiAr
MTc0LDEyIEBAIHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRURmlsZUhlYWRl
cihTdHJpbmcmJiBoZWFkZXIpCiAgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpQYXJzZVdlYlZU
VEZpbGVIZWFkZXIobV9pZGVudGlmaWVyLCBoZWFkZXIpLCBtX21lZGlhUGxheWVySWRlbnRpZmll
cik7CiB9CiAKLXZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRUQ3VlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIFJlbW90ZVRleHRUcmFja1By
b3h5OjpwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogewogICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlBhcnNlV2ViVlRUQ3VlRGF0YShtX2lk
ZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgbGVuZ3RoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKKyAgICBtX2Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OlBhcnNlV2ViVlRUQ3VlRGF0YShtX2lkZW50aWZpZXIsIElQQzo6
RGF0YVJlZmVyZW5jZShkYXRhLCBsZW5ndGgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOwog
fQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdlYlZUVEN1ZURhdGEoSVNPV2Vi
VlRUQ3VlJiYgY3VlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKaW5kZXggYjc0ZTg4MmIxNDBjNjZhYzg5M2NiYjI5
ODllMTA5OGI1MDBlZDE5Ni4uNzhiNGU4NGVjMmZiZTFiMGNjZGY5NDgyMGE2MzVmOGRkODZhZGQ5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRU
cmFja1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRl
eHRUcmFja1Byb3h5LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRHZW5lcmljQ3VlJik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURh
dGEoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlJiYpOwogCiAgICAgLy8gVHJhY2tQcml2YXRlQmFzZUNs
aWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAKaW5kZXggMWIzNTdmNjhmY2E0Mzk5YjNkNmFlNDFlYzM4Yjg3ZTM0MjM5YzEy
ZC4uMWI2NzRlNGY4ZDU2YzZjZWVmMTFmNjc1MGMxNmQ5N2NkN2Q3YzIyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBA
IC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpyZWFkRGF0YShjb25z
dCBCbG9iRGF0YUl0ZW0mIGl0ZW0pCiAgICAgaWYgKGJ5dGVzVG9SZWFkID4gbV90b3RhbFJlbWFp
bmluZ1NpemUpCiAgICAgICAgIGJ5dGVzVG9SZWFkID0gbV90b3RhbFJlbWFpbmluZ1NpemU7CiAK
LSAgICBhdXRvKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaXRlbS5kYXRh
KCkuZGF0YSgpLT5kYXRhKCkpICsgaXRlbS5vZmZzZXQoKSArIG1fY3VycmVudEl0ZW1SZWFkU2l6
ZTsKKyAgICBhdXRvKiBkYXRhID0gaXRlbS5kYXRhKCkuZGF0YSgpLT5kYXRhKCkgKyBpdGVtLm9m
ZnNldCgpICsgbV9jdXJyZW50SXRlbVJlYWRTaXplOwogICAgIG1fY3VycmVudEl0ZW1SZWFkU2l6
ZSA9IDA7CiAKICAgICBjb25zdW1lRGF0YShkYXRhLCBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzVG9S
ZWFkKSk7CkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRS
ZWFkKGludCBieXRlc1JlYWQpCiAgICAgY29uc3VtZURhdGEobV9idWZmZXIuZGF0YSgpLCBieXRl
c1JlYWQpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmNvbnN1bWVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCit2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmNv
bnN1bWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpCiB7CiAgICAgbV90
b3RhbFJlbWFpbmluZ1NpemUgLT0gYnl0ZXNSZWFkOwogCkBAIC00NzUsNyArNDc1LDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAgICAgcmVhZCgpOwogfQogCi1ib29s
IE5ldHdvcmtEYXRhVGFza0Jsb2I6OndyaXRlRG93bmxvYWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGJ5dGVzUmVhZCkKK2Jvb2wgTmV0d29ya0RhdGFUYXNrQmxvYjo6d3JpdGVEb3dubG9hZChjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIEFTU0VSVChpc0Rvd25sb2Fk
KCkpOwogICAgIGludCBieXRlc1dyaXR0ZW4gPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rv
d25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmgKaW5kZXggZmQ4Y2RlZjAyNDg2ZjE5ZTNl
MTA5OTVlNGM1MzI1Y2FlOTBjYmJkMS4uZmQxNWUyNDQwNGQ4YWQ5NDIxNDMyNjY2YzQ3MGI2ZjFl
NDNiZGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmgKQEAgLTg1LDEyICs4NSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0
U2l6ZUZvck5leHQoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKEVycm9y
ID0gRXJyb3I6Ok5vRXJyb3IpOwogICAgIHZvaWQgc2VlaygpOwotICAgIHZvaWQgY29uc3VtZURh
dGEoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCk7CisgICAgdm9pZCBjb25zdW1lRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKTsKICAgICB2b2lkIHJlYWQoKTsK
ICAgICB2b2lkIHJlYWREYXRhKGNvbnN0IFdlYkNvcmU6OkJsb2JEYXRhSXRlbSYpOwogICAgIHZv
aWQgcmVhZEZpbGUoY29uc3QgV2ViQ29yZTo6QmxvYkRhdGFJdGVtJik7CiAgICAgdm9pZCBkb3du
bG9hZCgpOwotICAgIGJvb2wgd3JpdGVEb3dubG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0
ZXNSZWFkKTsKKyAgICBib29sIHdyaXRlRG93bmxvYWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGJ5dGVzUmVhZCk7CiAgICAgdm9pZCBjbGVhbkRvd25sb2FkRmlsZXMoKTsKICAgICB2b2lkIGRp
ZEZhaWxEb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBk
aWRGaW5pc2hEb3dubG9hZCgpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGE+IG1fYmxvYkRhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbT4gbV9zdHJlYW07IC8vIEZvciBhc3luY2hyb25vdXMg
bG9hZGluZy4KLSAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IG1fYnVmZmVyOwogICAgIFZlY3Rvcjxsb25nIGxvbmc+IG1faXRlbUxlbmd0aExpc3Q7CiAgICAg
U3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdXNwZW5kZWQgfTsKICAgICBsb25nIGxvbmcgbV9yYW5n
ZU9mZnNldCB7IGtQb3NpdGlvbk5vdFNwZWNpZmllZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKaW5kZXggMTVhOTllY2Uz
NGFjMTYwMzRkNmJiYzhlNDdjMjg5ZTM4YjZjOTJiNS4uNTJlYjViMDhmMTZjYmEyMzIxNDkwMjhj
ZGFhODE1MGFkMDRlNGE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCkBAIC04NCwxMCArODQsMTAgQEAgdm9pZCBOZXR3
b3JrU29ja2V0U3RyZWFtOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUm
IGhhbmRsZSkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTb2NrZXRTdHJlYW06OkRpZENsb3NlU29j
a2V0U3RyZWFtKCkpOwogfQogCi12b2lkIE5ldHdvcmtTb2NrZXRTdHJlYW06OmRpZFJlY2VpdmVT
b2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBOZXR3b3JrU29ja2V0U3RyZWFtOjpkaWRSZWNlaXZl
U29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgJmhh
bmRsZSA9PSBtX2ltcGwucHRyKCkpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNvY2tldFN0cmVh
bTo6RGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViU29ja2V0U3RyZWFtOjpEaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShJUEM6OkRh
dGFSZWZlcmVuY2UoZGF0YSwgbGVuZ3RoKSkpOwogfQogCiB2b2lkIE5ldHdvcmtTb2NrZXRTdHJl
YW06OmRpZEZhaWxUb1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZSYgaGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRTdHJlYW0uaAppbmRleCA2MDA2YjJlMWI3YzYzMjEyM2RmMDg5YjkyMjdiMjZm
NzkwNjhjZTA0Li5lMjU2OTg0MjY2Y2U1ZWVjZjE1MDI4YTUyM2Y2YWFjZDgzYTZhZWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0u
aApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50CiAgICAgdm9pZCBkaWRPcGVuU29ja2V0U3RyZWFtKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhh
bmRsZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2xvc2VTb2NrZXRTdHJlYW0oV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU29ja2V0U3RyZWFt
RGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBjaGFyKiwgc2l6ZV90KSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbFRvUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlJikgZmluYWw7CiAgICAgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudChXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGUmLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbFNvY2tl
dFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1FcnJvciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwCmluZGV4IGMyNTdmYTExZDYyYTMxNGMyODYyZGNkNzNiMTZhNzgyYzgxMzUyMzYu
Ljk0NmFmNDdkZmI3ZTYxMWYxYWI0NDE3MzRhOWIwZTE0MTlmYmVkODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTE1Myw5ICsxNTMsOSBAQCBib29s
IFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWNvbnN0IGNoYXIqIFNoYXJlYWJsZVJlc291cmNlOjpkYXRhKCkgY29u
c3QKK2NvbnN0IHVpbnQ4X3QqIFNoYXJlYWJsZVJlc291cmNlOjpkYXRhKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkp
ICsgbV9vZmZzZXQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3No
YXJlZE1lbW9yeS0+ZGF0YSgpKSArIG1fb2Zmc2V0OwogfQogCiB1bnNpZ25lZCBTaGFyZWFibGVS
ZXNvdXJjZTo6c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaAppbmRleCA1Mzc0ZDdiOTZjZjIyMTlhNzY2YmI3MGFiNjBhYzg4NzM2NmMxZjQwLi43YjQ3
ZjVkNjg1MWQ5ZGUzMmQxYzNhNTQ3MDUxNjBhYTRmN2M2Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogCiAgICAg
flNoYXJlYWJsZVJlc291cmNlKCk7CiAKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7Cisg
ICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHNpemUoKSBjb25z
dDsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA1YTE4MGJlZWQxMmY1Y2RjZGZi
YWU2NzAyZTY5M2I5ZWE2ZTBhODQ0Li4zYzk3MWExM2Y0OWM1ZTc0NGRlNjA5ZDg1ZGZhN2RkM2Vi
NWQxNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgYm9vbCB3
cml0ZURhdGFUb0ZpbGUoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGZpbGVEYXRh
LCBQbGF0Zm9ybQogewogICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAgICAgZmlsZURhdGEuYXBw
bHkoW2ZkLCAmc3VjY2Vzc10oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAg
ICAgICAgaWYgKHdyaXRlVG9GaWxlKGZkLCAoY29uc3QgY2hhciopZGF0YSwgc2l6ZSkgPT0gLTEp
IHsKKyAgICAgICAgaWYgKHdyaXRlVG9GaWxlKGZkLCBkYXRhLCBzaXplKSA9PSAtMSkgewogICAg
ICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmNwcAppbmRleCAyZjQ4OTM4NzUxMTQ5OTMzNmZjNjAwMWY2MTFhZjBlYWI1YjljN2Y3Li41
Y2M0NzRjNTNlNTQxY2E3MTZkM2VhOGE1ODk5YTUwNDcyNDAyMDZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTM2Niw3ICsz
NjYsNyBAQCBWZWN0b3I8dWludDhfdD4gSWNvbkRhdGFiYXNlOjppY29uRGF0YShpbnQ2NF90IGlj
b25JRCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDY0X3Q+IElj
b25EYXRhYmFzZTo6YWRkSWNvbihjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgaWNvbkRhdGEpCitzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IEljb25EYXRhYmFzZTo6YWRk
SWNvbihjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaWNvbkRh
dGEpCiB7CiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogICAgIEFTU0VSVChtX2RiLmlz
T3BlbigpKTsKQEAgLTYwNiw3ICs2MDYsNyBAQCBTdHJpbmcgSWNvbkRhdGFiYXNlOjppY29uVVJM
Rm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCiAgICAgcmV0dXJuIG1fcGFnZVVSTFRv
SWNvblVSTE1hcC5nZXQocGFnZVVSTCk7CiB9CiAKLXZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29u
Rm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlj
b25EYXRhLCBzaXplX3QgaWNvbkRhdGFTaXplLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93
RGF0YWJhc2VXcml0ZSBhbGxvd0RhdGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1aW50OF90KiBpY29uRGF0YSwg
c2l6ZV90IGljb25EYXRhU2l6ZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNl
V3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCkBA
IC02MzgsNyArNjM4LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5zaWduZWQgY2hhcioKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBkYXRhIHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oaWNvbkRhdGEpLCBpY29uRGF0YVNpemUgfTsKKyAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YSB7IGljb25EYXRhLCBpY29uRGF0YVNpemUgfTsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWNvblVSTCA9IGljb25V
UkwuaXNvbGF0ZWRDb3B5KCksIGljb25EYXRhID0gV1RGTW92ZShkYXRhKSwgcGFnZVVSTCA9IHBh
Z2VVUkwuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAg
ICAgICAgIGlmIChtX2RiLmlzT3BlbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCmluZGV4IDBlN2JjYzdlYzYzZGYyNTI3MmZjYzUxMzg2
MWZjYjk4MWM4NGVjNzMuLmQwMjFlMmNkOTBkM2NlOTM5Y2ZlNDQzODFlNmVmMDJjZjJjNjdjYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrSWNvblVSTEFuZFNldFBh
Z2VVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgcGFnZVVS
TCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIGJvb2wp
PiYmKTsKICAgICB2b2lkIGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBBbGxvd0Rh
dGFiYXNlV3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UGxhdGZvcm1JbWFn
ZVB0ciYmKT4mJik7CiAgICAgU3RyaW5nIGljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYp
OwotICAgIHZvaWQgc2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90LCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0
YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBz
ZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBpY29uSURGb3JJY29uVVJMKGNvbnN0IFN0cmluZyYs
IGJvb2wmIGV4cGlyZWQpOwogICAgIGJvb2wgc2V0SWNvbklERm9yUGFnZVVSTChpbnQ2NF90LCBj
b25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8dWludDhfdD4gaWNvbkRhdGEoaW50NjRfdCk7Ci0g
ICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBhZGRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZl
Y3RvcjxjaGFyPiYpOworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gYWRkSWNvbihjb25zdCBT
dHJpbmcmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKICAgICB2b2lkIHVwZGF0ZUljb25UaW1l
c3RhbXAoaW50NjRfdCBpY29uSUQsIGludDY0X3QgdGltZXN0YW1wKTsKICAgICB2b2lkIGRlbGV0
ZUljb24oaW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDAyYmM3MTZi
YjU3ZDJmNThmMjhkNTllNTg4MGM3YjI0YTEwMGIwNjAuLmY3ZDcyM2M2M2JmYzYyYWM1N2FhYTAz
NWFmMmVjNThkZGYxMjRmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtMTI2LDcg
KzEyNiw3IEBAIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6cGFyc2VXZWJWVFRDdWVEYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBBU1NFUlQoY2xpZW50KCkp
OwogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKLSAgICAgICAgY2xpZW50
LT5wYXJzZVdlYlZUVEN1ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGNsaWVudC0+cGFyc2VXZWJWVFRDdWVEYXRh
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZTo6cGFyc2VXZWJWVFRDdWVEYXRhU3RydWN0KElTT1dlYlZUVEN1ZSYmIGN1ZURhdGEpCkBA
IC0xNDAsNyArMTQwLDcgQEAgdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGREYXRhQ3Vl
KE1lZGlhVGltZSYmIHN0YXJ0LCBNZWRpYVRpbWUmJiBlbmQsIElQQzoKIHsKICAgICBBU1NFUlQo
Y2xpZW50KCkpOwogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKLSAgICAg
ICAgY2xpZW50LT5hZGREYXRhQ3VlKFdURk1vdmUoc3RhcnQpLCBXVEZNb3ZlKGVuZCksIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOworICAg
ICAgICBjbGllbnQtPmFkZERhdGFDdWUoV1RGTW92ZShzdGFydCksIFdURk1vdmUoZW5kKSwgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hh
bm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcAppbmRleCA3ODQxYThmM2I2OTZhY2Q1ZDFhOTI0MGQ3ZDFiNTEzZWI5YWM2OTMzLi5k
ZDU2ZTc0ZWVlZGNjYTMwMzAyNmMyOTUzM2FmODNhNjk3N2UxNmI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gV2ViU29ja2V0Q2hhbm5lbDo6Y3Jl
YXRlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBybwogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlNvY2tldENoYW5uZWwod2ViUGFnZVByb3h5SUQsIGRvY3VtZW50LCBjbGllbnQp
KTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0
RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2
b2lkIFdlYlNvY2tldENoYW5uZWw6Om5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BD
b2RlIG9wQ29kZSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBX
ZWJTb2NrZXRGcmFtZSBmcmFtZShvcENvZGUsIHRydWUsIGZhbHNlLCB0cnVlLCBkYXRhLCBsZW5n
dGgpOwogICAgIG1faW5zcGVjdG9yLmRpZFNlbmRXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50Lmdl
dCgpLCBmcmFtZSk7CkBAIC01NiwxMCArNTYsMTAgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpu
b3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIK
IE5ldHdvcmtTZW5kUXVldWUgV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbCYgY2hhbm5lbCkKIHsKICAgICByZXR1
cm4geyBkb2N1bWVudCwgWyZjaGFubmVsXShhdXRvJiB1dGY4U3RyaW5nKSB7Ci0gICAgICAgIGNo
YW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQs
IHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgY2hhbm5l
bC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3Ry
aW5nLmxlbmd0aCgpKTsKICAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0
d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJp
bmcubGVuZ3RoKCkgfSB9LCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKICAgICB9LCBbJmNoYW5uZWxd
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKSB7Ci0gICAgICAgIGNoYW5u
ZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGJ5dGVMZW5ndGgpOworICAgICAg
ICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVC
aW5hcnksIGRhdGEsIGJ5dGVMZW5ndGgpOwogICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1l
c3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVu
Y2UgeyBkYXRhLCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CiAgICAgfSwgWyZjaGFubmVs
XShFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGUpIHsKICAgICAgICAgYXV0byBjb2RlID0gc3Rh
dGljX2Nhc3Q8aW50PihleGNlcHRpb25Db2RlKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdl
YlNvY2tldENoYW5uZWw6OmRpZENvbm5lY3QoU3RyaW5nJiYgc3VicHJvdG9jb2wsIFN0cmluZyYm
IGV4dGVuc2lvbnMpCiAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKIH0KIAotc3RhdGljIGlu
bGluZSBXZWJTb2NrZXRGcmFtZSBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3Rvcihj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9w
Q29kZSkKK3N0YXRpYyBpbmxpbmUgV2ViU29ja2V0RnJhbWUgY3JlYXRlV2ViU29ja2V0RnJhbWVG
b3JXZWJJbnNwZWN0b3IoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUpCiB7CiAgICAgLy8gVGhpcyBpcyBhbiBhcHByb3hpbWF0
aW9uIHNpbmNlIGZyYW1lcyBjYW4gYmUgbWVyZ2VkIG9uIGEgc2luZ2xlIG1lc3NhZ2UuCiAgICAg
V2ViU29ja2V0RnJhbWUgZnJhbWU7CkBAIC0yOTQsNyArMjk0LDggQEAgdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpkaWRSZWNlaXZlVGV4dChTdHJpbmcmJiBtZXNzYWdlKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9pbnNwZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9j
dW1lbnQuZ2V0KCksIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKG1lc3NhZ2Uu
dXRmOCgpLmRhdGEoKSwgbWVzc2FnZS51dGY4KCkubGVuZ3RoKCksIFdlYlNvY2tldEZyYW1lOjpP
cENvZGU6Ok9wQ29kZVRleHQpKTsKKyAgICBhdXRvIHV0ZjhNZXNzYWdlID0gbWVzc2FnZS51dGY4
KCk7CisgICAgbV9pbnNwZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQu
Z2V0KCksIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhNZXNzYWdlLmRhdGEoKSksIHV0ZjhNZXNzYWdlLmxlbmd0
aCgpLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0KSk7CiAKICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiB9CkBAIC0zMTUsNyArMzE2LDcgQEAgdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShJUEM6OkRhdGFSZWZlcmVu
Y2UmJiBkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbnNwZWN0b3IuZGlk
UmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNyZWF0ZVdlYlNvY2tldEZy
YW1lRm9yV2ViSW5zcGVjdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0
YSgpKSwgZGF0YS5zaXplKCksIFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSkp
OworICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50Lmdl
dCgpLCBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3RvcihkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCksIFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSkpOwogCiAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKGRhdGEudmVjdG9yKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCmlu
ZGV4IDA5NGJhZjYxZjU0NDNiZjNlOWIyNmU5NTRmYWU4ZDY1NGMwZGU1ZDQuLjcyNDE3ZTIzMjYy
NDEyN2NjNWRhZWQzNDUxNzZkZmEzYTFmNGQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTc3LDcgKzc3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlZlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgZmluYWwg
eyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIGZp
bmFsIHsgZGVyZWYoKTsgfQogCi0gICAgdm9pZCBub3RpZnlTZW5kRnJhbWUoV2ViQ29yZTo6V2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7Cisg
ICAgdm9pZCBub3RpZnlTZW5kRnJhbWUoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6Ok9wQ29kZSwg
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CiAgICAgdm9pZCBsb2dFcnJvck1l
c3NhZ2UoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBNZXNzYWdlIHJlY2VpdmVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAK
aW5kZXggM2I0YWMyOWIwZGY3NjVjMjQ5Zjc3MjU3MWY0OTQ2NmM1ODllNzFhOC4uMDViNGQ3NTky
NzYyODIyNmViNDA0NjhlODUxZDAzMjZhOTVhM2I1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0uY3BwCkBAIC0xNjQsNyArMTY0
LDcgQEAgdm9pZCBXZWJTb2NrZXRTdHJlYW06OmRpZENsb3NlU29ja2V0U3RyZWFtKCkKIAogdm9p
ZCBXZWJTb2NrZXRTdHJlYW06OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlU29ja2V0U3Ry
ZWFtRGF0YSgqdGhpcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkp
LCBkYXRhLnNpemUoKSk7CisgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEo
KnRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0U3Ry
ZWFtOjpkaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRl
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5jcHAKaW5kZXggNjlmMGFlODI3OTUwN2I3Mjk2NWY2NWMyMTY4NzNjNDgx
YWRmNGQ2MC4uNDY2OTM5ZWYxODdiNGE1MGY3MzIwZWRmMmM2MTZjMmNkY2ZmNTQ5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9h
cmRPdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcApAQCAtOTcsMTYgKzk3LDQgQEAgYm9vbCBX
ZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpnZXREYXRhRm9yT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJQYXN0ZWJv
YXJkT3ZlcnJpZGVzOjpnZXREYXRhRm9yT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIGNvbnN0Ci17Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IGZvdW5kQnVmZmVyOwotICAgIGlmICghZ2V0RGF0YUZvck92ZXJy
aWRlKHBhc3RlYm9hcmROYW1lLCB0eXBlLCBmb3VuZEJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGRhdGEucmVzaXplKGZvdW5kQnVmZmVyLnNpemUoKSk7Ci0gICAgbWVtY3B5
KGRhdGEuZGF0YSgpLCBmb3VuZEJ1ZmZlci5kYXRhKCksIGZvdW5kQnVmZmVyLnNpemUoKSk7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92
ZXJyaWRlcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBh
c3RlYm9hcmRPdmVycmlkZXMuaAppbmRleCBlYzA5MzNlNTEyNWU3OTYwNDRjYjgyYzM4YjI0YzVi
MjJlZGViNmM3Li5hODY3N2ZlNTZmZDlhYzExYzI0OWNhYThkZmY4ODA1MzBiMDNhZTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmgKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgog
ICAgIFZlY3RvcjxTdHJpbmc+IG92ZXJyaWRkZW5UeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKIAogICAgIGJvb2wgZ2V0RGF0YUZvck92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7
Ci0gICAgYm9vbCBnZXREYXRhRm9yT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBWZWN0b3I8Y2hhcj4mKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDIwZTFjZWRiODk3NWRiNjQwMWY0YzE0MTFkZWZh
MWRkOTI5OWM1OGEuLmYwMDFhNmNjZmFkMmRlOGY0ZGIwNWI4MTVlMWUxN2I1Mzg5M2Y2MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NjA5
LDcgKzc2MDksNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xs
VG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUAogICAgICAgICBpZiAoIXNoYXJl
ZE1lbW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRvY3VtZW50LT5hcHBI
aWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEo
KSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSwgaSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0
OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOworICAgICAgICBkb2N1bWVudC0+YXBwSGln
aGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc2hhcmVkTWVtb3J5LT5kYXRh
KCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSksIGkgPT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdo
dDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKICAgICAgICAgaSsrOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggMWQy
NzAyYWRiMDgyNzdjNDQ1MDhkM2RmYmRjNDI3OTg2ZGNmYzIyZi4uY2VmZjhjMTYxMTNmNGE5YmI4
YTkyOTYxYWUyZTk1MjBiMDU0OWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWRDRk5ldC5jcHAKQEAgLTE2MCwxNCArMTYwLDE0IEBAIEhSRVNVTFQgV2ViRG93bmxv
YWQ6OmluaXRUb1Jlc3VtZVdpdGhCdW5kbGUoX0luXyBCU1RSIGJ1bmRsZVBhdGgsIF9Jbl9vcHRf
IElXZWJECiB7CiAgICAgTE9HKERvd25sb2FkLCAiQXR0ZW1wdGluZyByZXN1bWUgb2YgZG93bmxv
YWQgYnVuZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRo
KSkuYXNjaWkoKS5kYXRhKCkpOwogCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKKyAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyOwogICAgIGlmICghRG93bmxvYWRCdW5kbGU6OmV4dHJhY3RSZXN1
bWVEYXRhKFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLCBidWZm
ZXIpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgLy8gSXQgaXMgcG9zc2libGUgYnkg
c29tZSB0d2lzdCBvZiBmYXRlIHRoZSBidW5kbGUgbWFnaWMgbnVtYmVyIHdhcyBuYXR1cmFsbHkg
YXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBhbmQgaXRzIG5vdCBhY3R1YWxseSBhIHZhbGlkIGJ1bmRs
ZS4KICAgICAvLyBUaGF0LCBvciBzb21lb25lIGVuZ2luZWVyZWQgaXQgdGhhdCB3YXkgdG8gdHJ5
IHRvIGF0dGFjayB1cy4gSW4gdGhhdCBjYXVzZSwgdGhpcyBDRkRhdGEgd2lsbCBzdWNjZXNzZnVs
bHkgY3JlYXRlIGJ1dCB3aGVuIHdlIGFjdHVhbGx5CiAgICAgLy8gdHJ5IHRvIHN0YXJ0IHRoZSBD
RlVSTERvd25sb2FkIHVzaW5nIHRoaXMgYm9ndXMgZGF0YSwgaXQgd2lsbCBmYWlsIGFuZCB3ZSB3
aWxsIGhhbmRsZSB0aGF0IGdyYWNlZnVsbHkuCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVz
dW1lRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUludDgqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSkpOworICAgIGF1dG8gcmVzdW1l
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpKTsKIAogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0y
NTIsNyArMjUyLDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6Y2FuY2VsRm9yUmVzdW1lKCkKICAg
ICAgICAgZ290byBleGl0OwogICAgIH0KIAotICAgIGNvbnN0IGNoYXIqIHJlc3VtZUJ5dGVzID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihyZXN1bWVEYXRh
LmdldCgpKSk7CisgICAgYXV0byogcmVzdW1lQnl0ZXMgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihDRkRhdGFHZXRCeXRlUHRyKHJlc3VtZURhdGEuZ2V0KCkpKTsKICAgICB1aW50
MzJfdCByZXN1bWVMZW5ndGggPSBDRkRhdGFHZXRMZW5ndGgocmVzdW1lRGF0YS5nZXQoKSk7CiAg
ICAgRG93bmxvYWRCdW5kbGU6OmFwcGVuZFJlc3VtZURhdGEocmVzdW1lQnl0ZXMsIHJlc3VtZUxl
bmd0aCwgbV9idW5kbGVQYXRoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TXV0YWJsZVVSTFJlcXVlc3QuY3BwCmluZGV4IGZjNzNiZjI4Y2FlZDA2MDY4MjQ0ODA1MGRjMWM2
ZjhjNGEzNDk5YWMuLjVjOTEyNTc3MjUyNjllYmIzNDI1MDNjYzcxMDMxOTRjMzExNWU1ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAK
QEAgLTI5OCw3ICsyOTgsNyBAQCBIUkVTVUxUIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpzZXRIVFRQ
Qm9keShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAg
ICAgc2l6ZV90IGxlbmd0aCA9IHN0YXQuY2JTaXplLkxvd1BhcnQ7Ci0gICAgVmVjdG9yPGNoYXI+
IHZlY3RvcihsZW5ndGgpOworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IobGVuZ3RoKTsKICAg
ICBVTE9ORyBieXRlc1JlYWQgPSAwOwogICAgIGlmIChGQUlMRUQoZGF0YS0+UmVhZCh2ZWN0b3Iu
ZGF0YSgpLCBzdGF0LmNiU2l6ZS5Mb3dQYXJ0LCAmYnl0ZXNSZWFkKSkpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGY2ZDViNTZlYmU3
OWRmZTM0MDM5YjdiNWQzOWY5NWRmMTg4NDExYTcuLmNkMzA1NmI5MTVhOTU1MjgwZDk0ZDM3NTA5
MjM3NzRmODZiMjgwYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0zMTIs
OCArMzEyLDggQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QXVkaW9SZXN1bHRDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3QKICAgICBKU0M6OkpTQXJyYXlCdWZm
ZXJWaWV3KiBqc0J1ZmZlclZpZXcgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU0FycmF5QnVm
ZmVyVmlldyo+KHZtLCB0b0pTKHRvSlMoY29udGV4dCksIGFyZ3VtZW50c1swXSkpOwogICAgIEFT
U0VSVChqc0J1ZmZlclZpZXcpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gYnVm
ZmVyVmlldyA9IGpzQnVmZmVyVmlldy0+dW5zaGFyZWRJbXBsKCk7Ci0gICAgY29uc3QgY2hhciog
YnVmZmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNz
KCkpOwotICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGF1ZGlvRGF0YShidWZmZXIsIGJ1ZmZlciArIGJ1
ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYnVmZmVyVmlldy0+YmFzZUFkZHJlc3MoKSk7CisgICAgc3RkOjp2ZWN0
b3IgYXVkaW9EYXRhKGJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKTsK
IAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKICAgICBjb250cm9sbGVyLT5zZXRBdWRp
b1Jlc3VsdChhdWRpb0RhdGEpOwpAQCAtMjM2Nyw4ICsyMzY3LDggQEAgdm9pZCBUZXN0UnVubmVy
OjpzZXRPcGVuUGFuZWxGaWxlc01lZGlhSWNvbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiBtZWQKICAgICBKU0M6OkpTQXJyYXlCdWZmZXJWaWV3KiBqc0J1ZmZlclZpZXcgPSBKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU0FycmF5QnVmZmVyVmlldyo+KHZtLCB0b0pTKHRvSlMoY29u
dGV4dCksIG1lZGlhSWNvbikpOwogICAgIEFTU0VSVChqc0J1ZmZlclZpZXcpOwogICAgIFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9IGpzQnVmZmVyVmlldy0+dW5zaGFy
ZWRJbXBsKCk7Ci0gICAgY29uc3QgY2hhciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpOwotICAgIHN0ZDo6dmVjdG9yPGNoYXI+IG1l
ZGlhSWNvbkRhdGEoYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwor
ICAgIGF1dG8gYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlclZpZXct
PmJhc2VBZGRyZXNzKCkpOworICAgIHN0ZDo6dmVjdG9yIG1lZGlhSWNvbkRhdGEoYnVmZmVyLCBi
dWZmZXIgKyBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogICAgIAogICAgIG1fb3BlblBhbmVs
RmlsZXNNZWRpYUljb24gPSBtZWRpYUljb25EYXRhOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5oCmluZGV4IDNlMGE2NzdlMDg3NDYyMWFiNTQ4Njg2M2QxMmU0Nzg4Y2Y1NmVlNWYuLjJlMDQ5
NGUzMGYzZjBiM2E3NDIyZWU3NTkzZjdlN2YzZDY1N2QwYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmgKQEAgLTI5OSw4ICsyOTksOCBAQCBwdWJsaWM6CiAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHRlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RVUkw7IH0KICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhhc2goKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkUGl4
ZWxIYXNoOyB9CiAKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxjaGFyPiYgYXVkaW9SZXN1bHQoKSBj
b25zdCB7IHJldHVybiBtX2F1ZGlvUmVzdWx0OyB9Ci0gICAgdm9pZCBzZXRBdWRpb1Jlc3VsdChj
b25zdCBzdGQ6OnZlY3RvcjxjaGFyPiYgYXVkaW9EYXRhKSB7IG1fYXVkaW9SZXN1bHQgPSBhdWRp
b0RhdGE7IH0KKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgYXVkaW9SZXN1bHQoKSBj
b25zdCB7IHJldHVybiBtX2F1ZGlvUmVzdWx0OyB9CisgICAgdm9pZCBzZXRBdWRpb1Jlc3VsdChj
b25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgYXVkaW9EYXRhKSB7IG1fYXVkaW9SZXN1bHQgPSBh
dWRpb0RhdGE7IH0KIAogICAgIHZvaWQgYWRkT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkoSlNT
dHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBK
U1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMpOwogICAgIHZvaWQgcmVtb3ZlT3JpZ2luQWNjZXNzQWxsb3dMaXN0RW50cnkoSlNTdHJpbmdS
ZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBKU1N0cmlu
Z1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpA
QCAtMzc3LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPGNoYXI+JiBvcGVuUGFuZWxGaWxlc01lZGlhSWNvbigpIGNvbnN0
IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZXNNZWRpYUljb247IH0KKyAgICBjb25zdCBzdGQ6OnZl
Y3Rvcjx1aW50OF90PiYgb3BlblBhbmVsRmlsZXNNZWRpYUljb24oKSBjb25zdCB7IHJldHVybiBt
X29wZW5QYW5lbEZpbGVzTWVkaWFJY29uOyB9CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlc01l
ZGlhSWNvbihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogI2VuZGlmCiAKQEAgLTQ2OCw3ICs0
NjgsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtX3dpbGxTZW5kUmVx
dWVzdENsZWFySGVhZGVyczsKICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gbV9hbGxvd2VkSG9z
dHM7CiAKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBtX2F1ZGlvUmVzdWx0OworICAgIHN0ZDo6dmVj
dG9yPHVpbnQ4X3Q+IG1fYXVkaW9SZXN1bHQ7CiAKICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywg
c3RkOjpzdHJpbmc+IG1fVVJMc1RvUmVkaXJlY3Q7CiAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBwcml2
YXRlOgogCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1fb3BlblBhbmVsRmlsZXM7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBtX29wZW5QYW5l
bEZpbGVzTWVkaWFJY29uOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1fb3BlblBhbmVsRmls
ZXNNZWRpYUljb247CiAjZW5kaWYKIAogICAgIHN0YXRpYyBKU1JldGFpblB0cjxKU0NsYXNzUmVm
PiBjcmVhdGVKU0NsYXNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCmlu
ZGV4IGJiYTUzYmRiZjk0ZTE5YjNmNzU3MDBlY2FiYWExYzg3ZWY0ZmMyZDguLjI3ZjI2MTQ0NWUy
ZWZlZDkzYTdiNTUzYmVhZDAzZTRlNDk1NGU4N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9V
SURlbGVnYXRlLm1tCkBAIC0zOTYsNyArMzk2LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIHJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0TGlzdGVuZXI6KGkK
ICAgICBhdXRvJiBpY29uRGF0YSA9IGdUZXN0UnVubmVyLT5vcGVuUGFuZWxGaWxlc01lZGlhSWNv
bigpOwogICAgIENHSW1hZ2VSZWYgaW1hZ2VSZWYgPSBudWxscHRyOwogICAgIGlmICghaWNvbkRh
dGEuZW1wdHkoKSkgewotICAgICAgICBhdXRvIGRhdGFSZWYgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZShudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oaWNvbkRhdGEuZGF0YSgp
KSwgaWNvbkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gZGF0YVJlZiA9IGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlKG51bGxwdHIsIGljb25EYXRhLmRhdGEoKSwgaWNvbkRhdGEuc2l6ZSgpKSk7CiAg
ICAgICAgIGF1dG8gaW1hZ2VQcm92aWRlclJlZiA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVh
dGVXaXRoQ0ZEYXRhKGRhdGFSZWYuZ2V0KCkpKTsKICAgICAgICAgaW1hZ2VSZWYgPSBDR0ltYWdl
Q3JlYXRlV2l0aEpQRUdEYXRhUHJvdmlkZXIoaW1hZ2VQcm92aWRlclJlZi5nZXQoKSwgbnVsbHB0
ciwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>