<?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>197739</bug_id>
          
          <creation_ts>2019-05-09 07:32:40 -0700</creation_ts>
          <short_desc>Intent to implement intrinsicSize attribute</short_desc>
          <delta_ts>2019-11-28 19:09:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201641</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="cathiechen">cathiechen</reporter>
          <assigned_to name="cathiechen">cathiechen</assigned_to>
          <cc>dvoytenko</cc>
    
    <cc>emilio</cc>
    
    <cc>fred.wang</cc>
    
    <cc>koivisto</cc>
    
    <cc>rego</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoav</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1534731</commentid>
    <comment_count>0</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2019-05-09 07:32:40 -0700</bug_when>
    <thetext>https://github.com/WICG/intrinsicsize-attribute

IntrinsicSize make browser could determine the layout size of an image without waiting for it to load.

It could reduce layout times and user visible reflows. It seems good to have it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535483</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-12 15:02:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/50708394&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536056</commentid>
    <comment_count>2</comment_count>
      <attachid>369850</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2019-05-14 08:34:50 -0700</bug_when>
    <thetext>Created attachment 369850
WIP

Frederic Wang &lt;fwang@igalia.com&gt; has finished:
- imported the WPT tests
- implemented parsing
- made it work with &lt;video&gt;
- experimented with the SVG &lt;image&gt; tag

I&apos;m gonna work on it based Fred&apos;s patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536057</commentid>
    <comment_count>3</comment_count>
      <attachid>369851</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2019-05-14 08:36:05 -0700</bug_when>
    <thetext>Created attachment 369851
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536208</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-05-14 13:04:49 -0700</bug_when>
    <thetext>It&apos;s not clear that there&apos;s really consensus around this feature yet: https://github.com/mozilla/standards-positions/issues/129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536360</commentid>
    <comment_count>5</comment_count>
      <attachid>369851</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-05-14 23:51:06 -0700</bug_when>
    <thetext>Comment on attachment 369851
WIP

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

&gt; Source/WebCore/html/HTMLImageElement.idl:45
&gt; +    // github.com/ojanvafai/intrinsicsize-attribute/blob/master/README.md

The spec has moved to WICG.

&gt; Source/WebCore/html/HTMLVideoElement.idl:36
&gt; +    // github.com/ojanvafai/intrinsicsize-attribute/blob/master/README.md

ditto

&gt; Source/WebCore/html/parser/HTMLParserIdioms.h:176
&gt; +// https://github.com/ojanvafai/intrinsicsize-attribute

Ditto

&gt; Source/WebCore/page/RuntimeEnabledFeatures.h:360
&gt; +

This should be m_intrinsicSizeAttributeEnabled.

&gt; Source/WebCore/rendering/RenderImage.cpp:225
&gt; +

unnecessary whitespace change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536362</commentid>
    <comment_count>6</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-05-15 00:01:55 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; It&apos;s not clear that there&apos;s really consensus around this feature yet:
&gt; https://github.com/mozilla/standards-positions/issues/129

Right, this discussion ends up two months ago though. My understanding was that  recent agreement was to separate the CSS aspect-ratio discussion from the intrinsicsize attribute discussion and that we can at least start experimenting intrinsicsize in order to provide more feedback at the W3C ¿?

(cc&apos;ing people from Google/Mozilla who might know the latest status)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536515</commentid>
    <comment_count>7</comment_count>
      <attachid>369851</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-05-15 11:45:33 -0700</bug_when>
    <thetext>Comment on attachment 369851
WIP

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

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:504
&gt; +bool parseIntrinsicSizeAttribute(StringView input, IntSize&amp; intrinsicSize)
&gt; +{
&gt; +    unsigned newWidth = 0, newHeight = 0;
&gt; +    auto splitResult = input.split(&apos;x&apos;);
&gt; +    auto it = splitResult.begin();
&gt; +    if (it != splitResult.end()) {
&gt; +        if (auto parsedWidth = parseHTMLNonNegativeInteger(*it)) {
&gt; +            ++it;
&gt; +            if (it != splitResult.end()) {
&gt; +                if (auto parsedHeight = parseHTMLNonNegativeInteger(*it)) {
&gt; +                    ++it;
&gt; +                    if (it == splitResult.end()) {
&gt; +                        newWidth = parsedWidth.value();
&gt; +                        newHeight = parsedHeight.value();
&gt; +                    }
&gt; +                }
&gt; +            }
&gt; +        }
&gt; +    }
&gt; +    IntSize newSize(newWidth, newHeight);
&gt; +    if (intrinsicSize != newSize) {
&gt; +        intrinsicSize = newSize;
&gt; +        return true;
&gt; +    }
&gt; +    return false;
&gt; +}

This function does more than it says. It parses the string and sets intrinsicSize to newSize if they are different and return true or returns false is they are the same. At the same time when it returns false, it does not indicate whether there was an error in parsing the input string or newSize is the same as intrinsicSize. I would suggest the following:

Expected&lt;IntSize, HTMLIntegerParsingError&gt; parseIntrinsicSizeAttribute(StringView input)
{
    auto splitResult = input.split(&apos;x&apos;);
    if (splitResult.size() == 2) {
        auto newWidth = parseHTMLNonNegativeInteger(splitResult[0]);
        if (!newWidth)
            return newWidth.error();
        auto newHeight = parseHTMLNonNegativeInteger(splitResult[1]);
        if (!newHeight)
            return newHeight.error;
        return { newWidth.value(), newHeight.value() };
    }
    return makeUnexpected(HTMLIntegerParsingError::Other);
}

And the caller can be like this:

auto newSize = parseIntrinsicSizeAttribute(value);
if (newSize &amp;&amp; m_overriddenIntrinsicSize != newSize.value()) {
    m_overriddenIntrinsicSize = newSize.value();
    if (is&lt;RenderImage&gt;(renderer()))
        downcast&lt;RenderImage&gt;(*renderer()).intrinsicSizeChanged();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539937</commentid>
    <comment_count>8</comment_count>
      <attachid>370842</attachid>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2019-05-29 07:18:02 -0700</bug_when>
    <thetext>Created attachment 370842
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539938</commentid>
    <comment_count>9</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2019-05-29 07:22:00 -0700</bug_when>
    <thetext>Hi Fred &amp; Said,

Thanks for the review and sorry for the late reply. :)

PS: The latest patch fixed the code review issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539940</commentid>
    <comment_count>10</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2019-05-29 07:25:52 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #7)

&gt; This function does more than it says. It parses the string and sets
&gt; intrinsicSize to newSize if they are different and return true or returns
&gt; false is they are the same. At the same time when it returns false, it does
&gt; not indicate whether there was an error in parsing the input string or
&gt; newSize is the same as intrinsicSize. I would suggest the following:
&gt; 
&gt; Expected&lt;IntSize, HTMLIntegerParsingError&gt;
&gt; parseIntrinsicSizeAttribute(StringView input)
&gt; {
&gt;     auto splitResult = input.split(&apos;x&apos;);
&gt;     if (splitResult.size() == 2) {

It seems StringView::SplitResult don&apos;t provide size(). So we need to travel iterator one by one.

&gt;         auto newWidth = parseHTMLNonNegativeInteger(splitResult[0]);
&gt;         if (!newWidth)
&gt;             return newWidth.error();
&gt;         auto newHeight = parseHTMLNonNegativeInteger(splitResult[1]);
&gt;         if (!newHeight)
&gt;             return newHeight.error;
&gt;         return { newWidth.value(), newHeight.value() };
&gt;     }
&gt;     return makeUnexpected(HTMLIntegerParsingError::Other);
&gt; }
&gt; 
&gt; And the caller can be like this:
&gt; 

&gt; auto newSize = parseIntrinsicSizeAttribute(value);
&gt; if (newSize &amp;&amp; m_overriddenIntrinsicSize != newSize.value()) {
&gt;     m_overriddenIntrinsicSize = newSize.value();
&gt;     if (is&lt;RenderImage&gt;(renderer()))
&gt;         downcast&lt;RenderImage&gt;(*renderer()).intrinsicSizeChanged();
&gt; }

Done. Thanks:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541631</commentid>
    <comment_count>11</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2019-06-04 10:36:18 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; It&apos;s not clear that there&apos;s really consensus around this feature yet:
&gt; https://github.com/mozilla/standards-positions/issues/129

Hi Simon,

Thanks for the reply :)

Yes, it seems there are intrinsic size, aspect ratio and mapping aspect ratio in width/height. Intrinsic size somehow has some advantage to solving the content jumping problem.

The delay of calculating &lt;img&gt; size might cause the content jumping problem which effects user experience a lot.
Both web developers and browser try many ways to fix it.
For example, scroll anchoring, scroll the content back to the position.
Or web developers use a 1x1 image first, calculate the actual height in advance, then replace the actual image.

Intrinsic size makes us could calculate the layout size of &lt;img&gt; like other elements. It provides an easy way to solving this issue and also is good for performance.
Intrinsic size could get the info what image could provide. So it could fix more scenarios than aspect ratio or mapping aspect ratio in width/height.
  - For aspect ratio, we could calculate the size when &lt;img&gt; has auto width.
  - For mapping aspect ratio in width/height, we could not make it when &lt;img&gt; has percent width.

Intrinsic size and aspect ratio could work together like natural width/height with aspect ratio.

So in this aspect, I think intrinsic size is a good resolution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568590</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-09-06 11:02:31 -0700</bug_when>
    <thetext>Is this the same as https://groups.google.com/a/chromium.org/forum/m/#!topic/blink-dev/hbhKRuBzZ4o ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569142</commentid>
    <comment_count>13</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2019-09-09 08:39:22 -0700</bug_when>
    <thetext>Hi Simon,

Not the same, but they are trying to solve the same problem, i.e., calculating the layout size without waiting for image/video loading.
This approach adds a new attribute intrinsicSize to get the intrinsic size of image/video.
https://groups.google.com/a/chromium.org/forum/m/#!topic/blink-dev/hbhKRuBzZ4o is a new approach. It uses the width and height attribute to calculate the aspect ratio. For more details, see https://github.com/WICG/intrinsicsize-attribute/issues/16 .
Both approaches could get the layout size in advance. So maybe we could open new another bug for the aspect ratio approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569201</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-09-09 11:10:39 -0700</bug_when>
    <thetext>(In reply to cathiechen from comment #13)
&gt; Hi Simon,
&gt; 
&gt; Not the same, but they are trying to solve the same problem, i.e.,
&gt; calculating the layout size without waiting for image/video loading.
&gt; This approach adds a new attribute intrinsicSize to get the intrinsic size
&gt; of image/video.
&gt; https://groups.google.com/a/chromium.org/forum/m/#!topic/blink-dev/
&gt; hbhKRuBzZ4o is a new approach. It uses the width and height attribute to
&gt; calculate the aspect ratio. For more details, see
&gt; https://github.com/WICG/intrinsicsize-attribute/issues/16 .
&gt; Both approaches could get the layout size in advance. So maybe we could open
&gt; new another bug for the aspect ratio approach?

Yes, let&apos;s do that, and implement it first. It seems like a pretty safe change without having to add any new CSS properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569517</commentid>
    <comment_count>15</comment_count>
    <who name="cathiechen">cathiechen</who>
    <bug_when>2019-09-10 06:37:51 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #14)

&gt; Yes, let&apos;s do that, and implement it first. It seems like a pretty safe
&gt; change without having to add any new CSS properties.

Great! Done!
https://bugs.webkit.org/show_bug.cgi?id=201641</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593382</commentid>
    <comment_count>16</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-11-25 02:55:54 -0800</bug_when>
    <thetext>I think this can be closed as WONTFIX given the current discussions at W3C: 

https://github.com/WICG/intrinsicsize-attribute/#note-this-proposal-is-no-longer-active-instead-efforts-are-focused-on-the-alternate-approach-in-issue-16</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593532</commentid>
    <comment_count>17</comment_count>
    <who name="Dima Voytenko">dvoytenko</who>
    <bug_when>2019-11-25 16:38:14 -0800</bug_when>
    <thetext>It was resolved to instead modify spec to reuse width/height for this feature. Should we open a new bug for that? Otherwise, I believe, the behavior is mostly identical to intrinsicSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1593533</commentid>
    <comment_count>18</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-11-25 16:56:04 -0800</bug_when>
    <thetext>(In reply to Dima Voytenko from comment #17)
&gt; It was resolved to instead modify spec to reuse width/height for this
&gt; feature. Should we open a new bug for that? Otherwise, I believe, the
&gt; behavior is mostly identical to intrinsicSize.

Cathie had already opened bug 201641</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594113</commentid>
    <comment_count>19</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-28 14:09:12 -0800</bug_when>
    <thetext>(In reply to Dima Voytenko from comment #17)
&gt; It was resolved to instead modify spec to reuse width/height for this
&gt; feature. Should we open a new bug for that? Otherwise, I believe, the
&gt; behavior is mostly identical to intrinsicSize.

Is there some spec text somewhere that describes the whole image sizing algorithm? I looked and failed to find some.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594120</commentid>
    <comment_count>20</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-11-28 19:09:55 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #19)
&gt; (In reply to Dima Voytenko from comment #17)
&gt; &gt; It was resolved to instead modify spec to reuse width/height for this
&gt; &gt; feature. Should we open a new bug for that? Otherwise, I believe, the
&gt; &gt; behavior is mostly identical to intrinsicSize.
&gt; 
&gt; Is there some spec text somewhere that describes the whole image sizing
&gt; algorithm? I looked and failed to find some.

I&apos;m not sure if the changed ever happened in a spec, but discussion was https://github.com/WICG/intrinsicsize-attribute/issues/16

It seems chromium devs found more issues though, see https://bugs.webkit.org/show_bug.cgi?id=201641#c4</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369850</attachid>
            <date>2019-05-14 08:34:50 -0700</date>
            <delta_ts>2019-05-14 08:36:05 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>IS.diff</filename>
            <type>text/plain</type>
            <size>32268</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDc2NDE4MjNlMDEuLmNkMzE2ZDA0MTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtODg5LDcgKzg4OSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVsZW1lbnQvCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvdGhlLWltZy1lbGVtZW50L2ludmFsaWQtc3JjLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUt
aW1nLWVsZW1lbnQvcmVsZXZhbnQtbXV0YXRpb25zLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUt
b2JqZWN0LWVsZW1lbnQvb2JqZWN0LWV2ZW50cy5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLXZp
ZGVvLWVsZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRyaW5zaWNzaXplLXdpdGhvdXQtdW5zaXplZC1t
ZWRpYS50ZW50YXRpdmUuaHR0cHMuc3ViLmh0bWwgWyBTa2lwIF0KIAogIyBAc3VwcG9ydHMgVzND
IEZhaWx1cmVzCiB3ZWJraXQub3JnL2IvMTM3NTY4IGNzczMvY29uZGl0aW9uYWwvdzNjL2F0LXN1
cHBvcnRzLTAxNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2ljc2l6ZS13
aXRoLXJlc3BvbnNpdmUtaW1hZ2VzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2ljc2l6ZS13aXRo
LXJlc3BvbnNpdmUtaW1hZ2VzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggMDdjNTZmMGMx
ZC4uYzA0ZjVhNzk1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1pbWctZWxl
bWVudC9pbnRyaW5zaWNzaXplL2ludHJpbnNpY3NpemUtd2l0aC1yZXNwb25zaXZlLWltYWdlcy50
ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVs
ZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRyaW5zaWNzaXplLXdpdGgtcmVzcG9uc2l2ZS1pbWFnZXMu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwxMCBAQAogCiAKLUZBSUwgVGVzdCBp
bWFnZSAvaW1hZ2VzL2dyZWVuLnN2ZyB3aXRoIG5vIHNwZWNpZmllZCBzaXplcywgd2lkdGgsIG9y
IGhlaWdodCBhc3NlcnRfZXF1YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAzMwotRkFJ
TCBUZXN0IGltYWdlIC9pbWFnZXMvZ3JlZW4uc3ZnIHdpdGggd2lkdGggPSA4MDAsIG5vIHNwZWNp
ZmllZCBzaXplcywgb3IgaGVpZ2h0IGFzc2VydF9lcXVhbHM6IGhlaWdodCBleHBlY3RlZCAxMDAw
IGJ1dCBnb3QgNDAwCi1GQUlMIFRlc3QgaW1hZ2UgL2ltYWdlcy9ncmVlbi5zdmcgd2l0aCB3aWR0
aCA9IDgwMCwgaGVpZ2h0ID0gODAwLCBhbmQgbm8gc3BlY2lmaWVkIHNpemVzIGFzc2VydF9lcXVh
bHM6IG5hdHVyYWxXaWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCA4MDAKLUZBSUwgVGVzdCBpbWFn
ZSAvaW1hZ2VzL2dyZWVuLnBuZyB3aXRoIG5vIHNwZWNpZmllZCBzaXplcywgd2lkdGgsIG9yIGhl
aWdodCBhc3NlcnRfZXF1YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAzMwotRkFJTCBU
ZXN0IGltYWdlIC9pbWFnZXMvZ3JlZW4ucG5nIHdpdGggd2lkdGggPSA4MDAsIG5vIHNwZWNpZmll
ZCBzaXplcywgb3IgaGVpZ2h0IGFzc2VydF9lcXVhbHM6IGhlaWdodCBleHBlY3RlZCAxMDAwIGJ1
dCBnb3QgNDAwCi1GQUlMIFRlc3QgaW1hZ2UgL2ltYWdlcy9ncmVlbi5wbmcgd2l0aCB3aWR0aCA9
IDgwMCwgaGVpZ2h0ID0gODAwLCBhbmQgbm8gc3BlY2lmaWVkIHNpemVzIGFzc2VydF9lcXVhbHM6
IG5hdHVyYWxXaWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAxMDAKLUZBSUwgVGVzdCBpbWFnZSAo
MzIgeCAzMikgd2l0aCBzaXplcyA9IDEwMCBhbmQgc3Jjc2V0IGRlc2NyaXB0b3IgPSAzMncgYXNz
ZXJ0X2VxdWFsczogaGVpZ2h0IGV4cGVjdGVkIDEyNSBidXQgZ290IDEwMAorUEFTUyBUZXN0IGlt
YWdlIC9pbWFnZXMvZ3JlZW4uc3ZnIHdpdGggbm8gc3BlY2lmaWVkIHNpemVzLCB3aWR0aCwgb3Ig
aGVpZ2h0IAorUEFTUyBUZXN0IGltYWdlIC9pbWFnZXMvZ3JlZW4uc3ZnIHdpdGggd2lkdGggPSA4
MDAsIG5vIHNwZWNpZmllZCBzaXplcywgb3IgaGVpZ2h0IAorUEFTUyBUZXN0IGltYWdlIC9pbWFn
ZXMvZ3JlZW4uc3ZnIHdpdGggd2lkdGggPSA4MDAsIGhlaWdodCA9IDgwMCwgYW5kIG5vIHNwZWNp
ZmllZCBzaXplcyAKK1BBU1MgVGVzdCBpbWFnZSAvaW1hZ2VzL2dyZWVuLnBuZyB3aXRoIG5vIHNw
ZWNpZmllZCBzaXplcywgd2lkdGgsIG9yIGhlaWdodCAKK1BBU1MgVGVzdCBpbWFnZSAvaW1hZ2Vz
L2dyZWVuLnBuZyB3aXRoIHdpZHRoID0gODAwLCBubyBzcGVjaWZpZWQgc2l6ZXMsIG9yIGhlaWdo
dCAKK1BBU1MgVGVzdCBpbWFnZSAvaW1hZ2VzL2dyZWVuLnBuZyB3aXRoIHdpZHRoID0gODAwLCBo
ZWlnaHQgPSA4MDAsIGFuZCBubyBzcGVjaWZpZWQgc2l6ZXMgCitGQUlMIFRlc3QgaW1hZ2UgKDMy
IHggMzIpIHdpdGggc2l6ZXMgPSAxMDAgYW5kIHNyY3NldCBkZXNjcmlwdG9yID0gMzJ3IGFzc2Vy
dF9lcXVhbHM6IHdpZHRoIGV4cGVjdGVkIDEwMCBidXQgZ290IDQwMAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2lj
c2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEudGVudGF0aXZlLmh0dHBzLnN1Yi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50
cmluc2ljc2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEudGVudGF0aXZlLmh0dHBzLnN1Yi1leHBl
Y3RlZC50eHQKaW5kZXggZWEyZTk4NGM2My4uMWVlNGJiN2Q3OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L3RoZS1pbWctZWxlbWVudC9pbnRyaW5zaWNzaXplL2ludHJpbnNpY3NpemUt
d2l0aG91dC11bnNpemVkLW1lZGlhLnRlbnRhdGl2ZS5odHRwcy5zdWItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVsZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRy
aW5zaWNzaXplLXdpdGhvdXQtdW5zaXplZC1tZWRpYS50ZW50YXRpdmUuaHR0cHMuc3ViLWV4cGVj
dGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLSAgCisgCiAKLUZBSUwgVGVzdCBpbnRyaW5zaWNzaXpl
IGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2VzL2dyZWVuLnN2ZyBhc3NlcnRfZXF1
YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAxMDAKLUZBSUwgVGVzdCBpbnRyaW5zaWNz
aXplIGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2VzL2dyZWVuLnBuZyBhc3NlcnRf
ZXF1YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAxMDAKK1BBU1MgVGVzdCBpbnRyaW5z
aWNzaXplIGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2VzL2dyZWVuLnN2ZyAKK1BB
U1MgVGVzdCBpbnRyaW5zaWNzaXplIGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2Vz
L2dyZWVuLnBuZyAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1l
bGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2ljc2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEu
dGVudGF0aXZlLmh0dHBzLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhl
LXZpZGVvLWVsZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRyaW5zaWNzaXplLXdpdGhvdXQtdW5zaXpl
ZC1tZWRpYS50ZW50YXRpdmUuaHR0cHMuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwLi4zZTZkN2ZjODc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2lj
c2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEudGVudGF0aXZlLmh0dHBzLnN1Yi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFTUyBUZXN0IGludHJpbnNpY3NpemUgZm9yIGh0bWwg
dmlkZW8gZWxlbWVudCAKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgppbmRleCBjYTY0NDQ3MzEzLi5jMmQ0NGM0NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTQ4LDYgKzE0OCw3IEBAIGluY3JlbWVudGFsCiBpbmRl
dGVybWluYXRlCiBpbnB1dG1vZGUKIGludGVncml0eQoraW50cmluc2ljc2l6ZQogaXMKIGlzbWFw
CiBpdGVtaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGQw
NDc5NzhmYzguLmMzZjMxYTQyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcApAQCAtMjQzLDcgKzI0MywxMSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgogI2Vu
ZGlmCiAgICAgfSBlbHNlIGlmIChuYW1lID09IHhfYXBwbGVfZWRpdGFibGVfaW1hZ2VBdHRyKQog
ICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdlKCk7Ci0gICAgZWxzZSB7CisgICAgZWxzZSBpZiAo
bmFtZSA9PSBpbnRyaW5zaWNzaXplQXR0ciAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLmludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKCkpIHsKKyAgICAgICAg
Ym9vbCBpbnRyaW5zaWNTaXplQ2hhbmdlZCA9IHBhcnNlSW50cmluc2ljU2l6ZUF0dHJpYnV0ZSh2
YWx1ZSwgbV9vdmVycmlkZGVuSW50cmluc2ljU2l6ZSk7CisgICAgICAgIGlmIChpbnRyaW5zaWNT
aXplQ2hhbmdlZCAmJiByZW5kZXJlcigpICYmIGlzPFJlbmRlckltYWdlPihyZW5kZXJlcigpKSkK
KyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIoKSkuaW50cmluc2lj
U2l6ZUNoYW5nZWQoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBpZiAobmFtZSA9PSBuYW1lQXR0
cikgewogICAgICAgICAgICAgYm9vbCB3aWxsSGF2ZU5hbWUgPSAhdmFsdWUuaXNOdWxsKCk7CiAg
ICAgICAgICAgICBpZiAobV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hhbmdlZCAhPSB3aWxsSGF2
ZU5hbWUgJiYgaXNDb25uZWN0ZWQoKSAmJiAhaXNJblNoYWRvd1RyZWUoKSAmJiBpczxIVE1MRG9j
dW1lbnQ+KGRvY3VtZW50KCkpKSB7CkBAIC01MTEsNiArNTE1LDkgQEAgdW5zaWduZWQgSFRNTElt
YWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQogCiBpbnQg
SFRNTEltYWdlRWxlbWVudDo6bmF0dXJhbFdpZHRoKCkgY29uc3QKIHsKKyAgICBpZiAoIW1fb3Zl
cnJpZGRlbkludHJpbnNpY1NpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbV9vdmVycmlk
ZGVuSW50cmluc2ljU2l6ZS53aWR0aCgpOworCiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdl
KCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC01MTksNiArNTI2LDkgQEAgaW50IEhUTUxJbWFn
ZUVsZW1lbnQ6Om5hdHVyYWxXaWR0aCgpIGNvbnN0CiAKIGludCBIVE1MSW1hZ2VFbGVtZW50Ojpu
YXR1cmFsSGVpZ2h0KCkgY29uc3QKIHsKKyAgICBpZighbV9vdmVycmlkZGVuSW50cmluc2ljU2l6
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX292ZXJyaWRkZW5JbnRyaW5zaWNTaXplLmhl
aWdodCgpOworCiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdlKCkpCiAgICAgICAgIHJldHVy
biAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IGQyMGZhNzI3
NWEuLmRjZjg4ZmY3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBA
IC0zNiw2ICszNiw3IEBAIGNsYXNzIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2U7CiBjbGFzcyBIVE1M
QXR0YWNobWVudEVsZW1lbnQ7CiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFw
RWxlbWVudDsKK2NsYXNzIEludFNpemU7CiAKIHN0cnVjdCBJbWFnZUNhbmRpZGF0ZTsKIApAQCAt
ODQsNiArODUsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdpZHRo
KHVuc2lnbmVkKTsKIAorICAgIEludFNpemUgZ2V0T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKSBj
b25zdCB7IHJldHVybiBtX292ZXJyaWRkZW5JbnRyaW5zaWNTaXplOyB9CisKICAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgeCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCB5KCkgY29uc3Q7
CiAKQEAgLTE5MSw2ICsxOTQsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BlbmRpbmdDbG9u
ZWRBdHRhY2htZW50SUQ7CiAjZW5kaWYKIAorICAgIEludFNpemUgbV9vdmVycmlkZGVuSW50cmlu
c2ljU2l6ZTsKKwogICAgIGZyaWVuZCBjbGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAppbmRleCAwM2Q2ZTJjMDRiLi4z
ZmJmOWIxODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKQEAg
LTQyLDYgKzQyLDkgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyB3aWR0aDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGRlY29kaW5nOwogCisgICAgLy8gZ2l0aHViLmNvbS9vamFudmFm
YWkvaW50cmluc2ljc2l6ZS1hdHRyaWJ1dGUvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kCisgICAgW0Vu
YWJsZWRBdFJ1bnRpbWU9SW50cmluc2ljU2l6ZUF0dHJpYnV0ZSwgQ0VSZWFjdGlvbnMsIFJlZmxl
Y3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgaW50cmluc2ljU2l6ZTsKKwogICAgIFtDb25kaXRpb25h
bD1BVFRBQ0hNRU5UX0VMRU1FTlQsIEVuYWJsZWRBdFJ1bnRpbWU9QXR0YWNobWVudEVsZW1lbnRd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgYXR0YWNobWVudElkZW50aWZpZXI7CiAKICAg
ICAvLyBFeHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApp
bmRleCBmNDdkNDY3OGRlLi4wYmU0ZTljMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgorI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgpAQCAtMTMzLDYgKzEzNCwxMCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgogICAgICAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAg
ICByZW5kZXJlci0+aW1hZ2VSZXNvdXJjZSgpLnNldENhY2hlZEltYWdlKG51bGxwdHIpOwogICAg
ICAgICB9CisgICAgfSBlbHNlIGlmIChuYW1lID09IGludHJpbnNpY3NpemVBdHRyICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW50cmluc2ljU2l6ZUF0dHJpYnV0
ZUVuYWJsZWQoKSkgeworICAgICAgICBib29sIGludHJpbnNpY1NpemVDaGFuZ2VkID0gcGFyc2VJ
bnRyaW5zaWNTaXplQXR0cmlidXRlKHZhbHVlLCBtX292ZXJyaWRkZW5JbnRyaW5zaWNTaXplKTsK
KyAgICAgICAgaWYgKGludHJpbnNpY1NpemVDaGFuZ2VkICYmIHJlbmRlcmVyKCkpCisgICAgICAg
ICAgICByZW5kZXJlcigpLT5pbnRyaW5zaWNTaXplQ2hhbmdlZCgpOwogICAgIH0KICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGVsc2UgaWYgKG5hbWUgPT0gd2Via2l0
d2lyZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJsZWRBdHRyKQpAQCAtMjAxLDYgKzIwNiw4IEBAIHZv
aWQgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKQogCiB1bnNpZ25l
ZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRlb1dpZHRoKCkgY29uc3QKIHsKKyAgICBpZiAobV9vdmVy
cmlkZGVuSW50cmluc2ljU2l6ZS53aWR0aCgpID4gMCkKKyAgICAgICAgcmV0dXJuIG1fb3ZlcnJp
ZGRlbkludHJpbnNpY1NpemUud2lkdGgoKTsKICAgICBpZiAoIXBsYXllcigpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gY2xhbXBUb1Vuc2lnbmVkKHBsYXllcigpLT5uYXR1cmFsU2l6
ZSgpLndpZHRoKCkpOwpAQCAtMjA4LDYgKzIxNSw4IEBAIHVuc2lnbmVkIEhUTUxWaWRlb0VsZW1l
bnQ6OnZpZGVvV2lkdGgoKSBjb25zdAogCiB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRl
b0hlaWdodCgpIGNvbnN0CiB7CisgICAgaWYgKG1fb3ZlcnJpZGRlbkludHJpbnNpY1NpemUuaGVp
Z2h0KCkgPiAwKQorICAgICAgICByZXR1cm4gbV9vdmVycmlkZGVuSW50cmluc2ljU2l6ZS5oZWln
aHQoKTsKICAgICBpZiAoIXBsYXllcigpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4g
Y2xhbXBUb1Vuc2lnbmVkKHBsYXllcigpLT5uYXR1cmFsU2l6ZSgpLmhlaWdodCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggZDRiYTM3MGI0Mi4uNTY5NTIzZDk0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTMzLDYgKzMzLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEltYWdlTG9hZGVyOworY2xhc3Mg
SW50U2l6ZTsKIGNsYXNzIFJlbmRlclZpZGVvOwogCiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50IGZp
bmFsIDogcHVibGljIEhUTUxNZWRpYUVsZW1lbnQgewpAQCAtOTQsNiArOTUsOCBAQCBwdWJsaWM6
CiAKICAgICBSZW5kZXJWaWRlbyogcmVuZGVyZXIoKSBjb25zdDsKIAorICAgIEludFNpemUgZ2V0
T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRkZW5JbnRy
aW5zaWNTaXplOyB9CisKIHByaXZhdGU6CiAgICAgSFRNTFZpZGVvRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKQEAgLTEyMyw2
ICsxMjYsOCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9sYXN0UmVwb3J0ZWRWaWRlb1dp
ZHRoIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbGFzdFJlcG9ydGVkVmlkZW9IZWlnaHQgeyAwIH07
CisKKyAgICBJbnRTaXplIG1fb3ZlcnJpZGRlbkludHJpbnNpY1NpemU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbApp
bmRleCAxZjkzMTY4NWJjLi45NDY1OGJjN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5pZGwKQEAgLTMzLDYgKzMzLDkgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyB2aWRlb0hlaWdodDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0LCBVUkxdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcG9zdGVyOwogCisgICAgLy8gZ2l0aHVi
LmNvbS9vamFudmFmYWkvaW50cmluc2ljc2l6ZS1hdHRyaWJ1dGUvYmxvYi9tYXN0ZXIvUkVBRE1F
Lm1kCisgICAgW0VuYWJsZWRBdFJ1bnRpbWU9SW50cmluc2ljU2l6ZUF0dHJpYnV0ZSwgQ0VSZWFj
dGlvbnMsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgaW50cmluc2ljU2l6ZTsKKwogICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIHBsYXlz
SW5saW5lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdFN1cHBvcnRzRnVs
bHNjcmVlbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXREaXNwbGF5aW5n
RnVsbHNjcmVlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5jcHAKaW5kZXggMzk5MWU3NTQ2MS4uMTVlYzFjOTJkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTQ3Niw0ICs0NzYsMzEg
QEAgQXRvbWljU3RyaW5nIHBhcnNlSFRNTEhhc2hOYW1lUmVmZXJlbmNlKFN0cmluZ1ZpZXcgdXNl
bWFwKQogICAgIHJldHVybiB1c2VtYXAuc3Vic3RyaW5nKG51bWJlclNpZ25JbmRleCArIDEpLnRv
QXRvbWljU3RyaW5nKCk7CiB9CiAKK2Jvb2wgcGFyc2VJbnRyaW5zaWNTaXplQXR0cmlidXRlKFN0
cmluZ1ZpZXcgaW5wdXQsIEludFNpemUmIGludHJpbnNpY1NpemUpCit7CisgICAgdW5zaWduZWQg
bmV3V2lkdGggPSAwLCBuZXdIZWlnaHQgPSAwOworICAgIGF1dG8gc3BsaXRSZXN1bHQgPSBpbnB1
dC5zcGxpdCgneCcpOworICAgIGF1dG8gaXQgPSBzcGxpdFJlc3VsdC5iZWdpbigpOworICAgIGlm
IChpdCAhPSBzcGxpdFJlc3VsdC5lbmQoKSkgeworICAgICAgICBpZiAoYXV0byBwYXJzZWRXaWR0
aCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcigqaXQpKSB7CisgICAgICAgICAgICArK2l0
OworICAgICAgICAgICAgaWYgKGl0ICE9IHNwbGl0UmVzdWx0LmVuZCgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gcGFyc2VkSGVpZ2h0ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KCppdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgKytpdDsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ID09IHNwbGl0UmVzdWx0LmVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdXaWR0aCA9IHBhcnNlZFdpZHRoLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdIZWlnaHQgPSBwYXJzZWRIZWlnaHQudmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBJ
bnRTaXplIG5ld1NpemUobmV3V2lkdGgsIG5ld0hlaWdodCk7CisgICAgaWYgKGludHJpbnNpY1Np
emUgIT0gbmV3U2l6ZSkgeworICAgICAgICBpbnRyaW5zaWNTaXplID0gbmV3U2l6ZTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IDY5ZTg5NGQx
MDguLmQzMGFhMTZkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEZWNpbWFsOwogY2xhc3MgUXVhbGlmaWVkTmFtZTsKK2NsYXNzIEludFNpemU7CiAKIC8vIFNw
YWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBieSB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uLgogdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0hUTUxTcGFjZShDaGFyYWN0ZXJU
eXBlKTsKQEAgLTE3Miw0ICsxNzMsNyBAQCBpbmxpbmUgdW5zaWduZWQgY2xhbXBIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VyVG9SYW5nZShTdHJpbmdWaWV3IHN0cmluZ1ZhbHVlLCB1bnNpZwogICAgIHJl
dHVybiBvcHRpb25hbFZhbHVlLmVycm9yKCkgPT0gSFRNTEludGVnZXJQYXJzaW5nRXJyb3I6OlBv
c2l0aXZlT3ZlcmZsb3cgPyBtYXggOiBkZWZhdWx0VmFsdWU7CiB9CiAKKy8vIGh0dHBzOi8vZ2l0
aHViLmNvbS9vamFudmFmYWkvaW50cmluc2ljc2l6ZS1hdHRyaWJ1dGUKK2Jvb2wgcGFyc2VJbnRy
aW5zaWNTaXplQXR0cmlidXRlKFN0cmluZ1ZpZXcgaW5wdXQsIEludFNpemUmIGludHJpbnNpY1Np
emUpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDBlOWM4NmYzNWYuLmY1YzdmNjdkM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0zNTUsNiAr
MzU1LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGVFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeUF0dHJpYnV0ZUVuYWJsZWQ7IH0KICAg
ICB2b2lkIHNldFJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBtX3JlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogCisgICAg
Ym9vbCBpbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWRD
bGlja0F0dHJpYnV0aW9uRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW50cmluc2ljU2l6ZUF0dHJp
YnV0ZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9hZENsaWNrQXR0cmlidXRpb25FbmFibGVk
ID0gaXNFbmFibGVkOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUnVudGltZUVuYWJs
ZWRGZWF0dXJlcyYgc2hhcmVkRmVhdHVyZXMoKTsKIAogcHJpdmF0ZToKQEAgLTUzNCw2ICs1Mzcs
NyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgYm9vbCBtX21vdXNl
RXZlbnRzU2ltdWxhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCisgICAgYm9vbCBtX2lu
dHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9pc0lU
UERhdGFiYXNlRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzSVRQRmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggNTE2MmFjM2RiOC4uYmZjZTUyM2ZjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xNDAsMTIgKzE0MCwxNiBAQCBS
ZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgU3R5bGVJbWFnZSogc3R5bAogICAgIHVwZGF0ZUFsdFRleHQoKTsKICAgICBpZiAoaXM8
SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIG1faGFzU2hhZG93Q29udHJvbHMg
PSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KS5oYXNTaGFkb3dDb250cm9scygp
OworICAgIGlmICghZ2V0T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKS5pc0VtcHR5KCkpCisgICAg
ICAgIGludHJpbnNpY1NpemVDaGFuZ2VkKCk7CiB9CiAKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFn
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0
eWxlSW1hZ2UpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSks
IEludFNpemUoKSkKICAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogeworICAgIGlmICghZ2V0T3Zl
cnJpZGRlbkludHJpbnNpY1NpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIGludHJpbnNpY1NpemVD
aGFuZ2VkKCk7CiB9CiAKIFJlbmRlckltYWdlOjp+UmVuZGVySW1hZ2UoKQpAQCAtMjE4LDcgKzIy
Miw3IEBAIGJvb2wgUmVuZGVySW1hZ2U6OmlzRWRpdGFibGVJbWFnZSgpIGNvbnN0CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCgpKS0+aGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpOwogfQotICAgIAorCiBib29sIFJl
bmRlckltYWdlOjpyZXF1aXJlc0xheWVyKCkgY29uc3QKIHsKICAgICBpZiAoUmVuZGVyUmVwbGFj
ZWQ6OnJlcXVpcmVzTGF5ZXIoKSkKQEAgLTI2Nyw3ICsyNzEsNyBAQCB2b2lkIFJlbmRlckltYWdl
OjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIG5ld0ltYWdlLCBjb25zdCBJbnRSZWN0KiBy
ZWN0KQogICAgIGlmIChoYXNWaXNpYmxlQm94RGVjb3JhdGlvbnMoKSB8fCBoYXNNYXNrKCkgfHwg
aGFzU2hhcGVPdXRzaWRlKCkpCiAgICAgICAgIFJlbmRlclJlcGxhY2VkOjppbWFnZUNoYW5nZWQo
bmV3SW1hZ2UsIHJlY3QpOwogCi0gICAgaWYgKG5ld0ltYWdlICE9IGltYWdlUmVzb3VyY2UoKS5p
bWFnZVB0cigpIHx8ICFuZXdJbWFnZSkKKyAgICBpZiAoKG5ld0ltYWdlICE9IGltYWdlUmVzb3Vy
Y2UoKS5pbWFnZVB0cigpIHx8ICFuZXdJbWFnZSkgJiYgZ2V0T3ZlcnJpZGRlbkludHJpbnNpY1Np
emUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoIW1fZGlkSW5j
cmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQpIHsKQEAgLTI5Nyw3ICszMDEsNyBAQCB2
b2lkIFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIG5ld0ltYWdlLCBj
b25zdCBJbnRSZWN0KiByZWN0KQogCiB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbnRyaW5zaWNT
aXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYgbmV3U2l6ZSkKIHsKLSAgICBpZiAoaW1hZ2VS
ZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKSB8fCAhbV9pbWFnZVJlc291cmNlLT5jYWNoZWRJbWFn
ZSgpKQorICAgIGlmICgoaW1hZ2VSZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKSB8fCAhbV9pbWFn
ZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKSAmJiBnZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgp
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNldEludHJpbnNpY1NpemUobmV3U2l6
ZSk7CiB9CkBAIC0zMjYsNiArMzMwLDExIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnJlcGFpbnRPck1h
cmtGb3JMYXlvdXQoSW1hZ2VTaXplQ2hhbmdlVHlwZSBpbWFnZVNpemVDaGFuZ2UsIGNvCiAjZWxz
ZQogICAgIExheW91dFNpemUgbmV3SW50cmluc2ljU2l6ZSA9IGltYWdlUmVzb3VyY2UoKS5pbnRy
aW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKICNlbmRpZgorCisgICAgYXV0byBv
dmVycmlkZGVuSW50cmluc2ljU2l6ZSA9IGdldE92ZXJyaWRkZW5JbnRyaW5zaWNTaXplKCk7Cisg
ICAgaWYgKCFvdmVycmlkZGVuSW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG5ld0lu
dHJpbnNpY1NpemUgPSBMYXlvdXRTaXplKG92ZXJyaWRkZW5JbnRyaW5zaWNTaXplKTsKKwogICAg
IExheW91dFNpemUgb2xkSW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemUoKTsKIAogICAgIHVw
ZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChuZXdJbnRyaW5zaWNTaXplKTsKQEAgLTY5OSw2ICs3
MDgsMTAgQEAgYm9vbCBSZW5kZXJJbWFnZTo6Y29tcHV0ZUJhY2tncm91bmRJc0tub3duVG9CZU9i
c2N1cmVkKGNvbnN0IExheW91dFBvaW50JiBwYWludE8KIAogTGF5b3V0VW5pdCBSZW5kZXJJbWFn
ZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3QKIHsKKyAgICBhdXRvIG92ZXJyaWRkZW5J
bnRyaW5zaWNTaXplID0gZ2V0T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKTsKKyAgICBpZiAoIW92
ZXJyaWRkZW5JbnRyaW5zaWNTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRk
ZW5JbnRyaW5zaWNTaXplLmhlaWdodCgpOworCiAgICAgcmV0dXJuIGltYWdlUmVzb3VyY2UoKS5l
cnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwX2x1OwogfQogCkBA
IC04MjUsNyArODM4LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1JhdGlv
SW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3UKICAgICAgICAgfQogICAg
IH0KICAgICAvLyBEb24ndCBjb21wdXRlIGFuIGludHJpbnNpYyByYXRpbyB0byBwcmVzZXJ2ZSBo
aXN0b3JpY2FsIFdlYktpdCBiZWhhdmlvciBpZiB3ZSdyZSBwYWludGluZyBhbHQgdGV4dCBhbmQv
b3IgYSBicm9rZW4gaW1hZ2UuCi0gICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVk
KCkpIHsKKyAgICBpZiAoaW1hZ2VSZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKSAmJiBnZXRPdmVy
cmlkZGVuSW50cmluc2ljU2l6ZSgpLmlzRW1wdHkoKSkgewogICAgICAgICBpbnRyaW5zaWNSYXRp
byA9IDE7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04NDcsNCArODYwLDEyIEBAIFJlbmRl
ckJveCogUmVuZGVySW1hZ2U6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK0ludFNpemUgUmVuZGVySW1hZ2U6OmdldE92ZXJyaWRkZW5JbnRyaW5z
aWNTaXplKCkgY29uc3QKK3sKKyAgICBhdXRvKiBpbWFnZUVsZW1lbnQgPSBlbGVtZW50KCk7Cisg
ICAgaWYgKGltYWdlRWxlbWVudCAmJiBpczxIVE1MSW1hZ2VFbGVtZW50PihpbWFnZUVsZW1lbnQp
KQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oaW1hZ2VFbGVtZW50
KS0+Z2V0T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKTsKKyAgICByZXR1cm4gSW50U2l6ZSgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCmluZGV4IDgyY2M3NDE5ZmUuLmVhYzg3Y2QzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oCkBAIC03OCw2ICs3OCwxMyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzRWRpdGFibGVJbWFnZSgpIGNvbnN0OwogCisgICAgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdl
ZCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpbWFnZUNoYW5nZWQoaW1hZ2VSZXNvdXJjZSgp
LmltYWdlUHRyKCkpOworICAgIH0KKworICAgIEludFNpemUgZ2V0T3ZlcnJpZGRlbkludHJpbnNp
Y1NpemUoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkg
b3ZlcnJpZGU7CiAKQEAgLTk1LDExICsxMDIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0
KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGltYWdlQ2hhbmdlZChpbWFnZVJlc291cmNlKCkuaW1hZ2VQdHIoKSk7
Ci0gICAgfQotCiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVySW1hZ2UiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDNlNTY5NDYyODUuLjU1MTU4ZmE5MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMzQ1LDcg
KzM0NSw4IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6OnNldE5lZWRzTGF5b3V0SWZOZWVkZWRBZnRl
ckludHJpbnNpY1NpemVDaGFuZ2UoKQogdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVj
dFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIs
IEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBkb3VibGUmIGludHJpbnNpY1JhdGlvKSBjb25z
dAogewogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNTaXplOwotICAgIGlmIChjb250ZW50UmVuZGVy
ZXIpIHsKKyAgICBJbnRTaXplIG92ZXJyaWRkZW5JbnRyaW5zaWNTaXplID0gaXM8UmVuZGVySW1h
Z2U+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckltYWdlPigqdGhpcykuZ2V0T3ZlcnJpZGRlbklu
dHJpbnNpY1NpemUoKSA6IEludFNpemUoKTsKKyAgICBpZiAoY29udGVudFJlbmRlcmVyICYmIG92
ZXJyaWRkZW5JbnRyaW5zaWNTaXplLmlzRW1wdHkoKSkgewogICAgICAgICBjb250ZW50UmVuZGVy
ZXItPmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKGludHJpbnNpY1NpemUsIGludHJp
bnNpY1JhdGlvKTsKIAogICAgICAgICAvLyBIYW5kbGUgem9vbSAmIHZlcnRpY2FsIHdyaXRpbmcg
bW9kZXMgaGVyZSwgYXMgdGhlIGVtYmVkZGVkIGRvY3VtZW50IGRvZXNuJ3Qga25vdyBhYm91dCB0
aGVtLgpAQCAtNDIzLDcgKzQyNCw3IEBAIExheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OnJlcGxh
Y2VkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKIHZvaWQgUmVu
ZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYg
aW50cmluc2ljU2l6ZSwgZG91YmxlJiBpbnRyaW5zaWNSYXRpbykgY29uc3QKIHsKICAgICAvLyBJ
ZiB0aGVyZSdzIGFuIGVtYmVkZGVkQ29udGVudEJveCgpIG9mIGEgcmVtb3RlLCByZWZlcmVuY2Vk
IGRvY3VtZW50IGF2YWlsYWJsZSwgdGhpcyBjb2RlLXBhdGggc2hvdWxkIG5ldmVyIGJlIHVzZWQu
Ci0gICAgQVNTRVJUKCFlbWJlZGRlZENvbnRlbnRCb3goKSk7CisgICAgQVNTRVJUKCFlbWJlZGRl
ZENvbnRlbnRCb3goKSB8fCAoaXM8UmVuZGVySW1hZ2U+KCp0aGlzKSAmJiAhZG93bmNhc3Q8UmVu
ZGVySW1hZ2U+KCp0aGlzKS5nZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgpLmlzRW1wdHkoKSkp
OwogICAgIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUoaW50cmluc2ljTG9naWNhbFdpZHRoKCks
IGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7CiAKICAgICAvLyBGaWd1cmUgb3V0IGlmIHdlIG5l
ZWQgdG8gY29tcHV0ZSBhbiBpbnRyaW5zaWMgcmF0aW8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmNwcAppbmRleCAyZWVkOWM0NWIyLi5lYmYxZjFmZjFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CiAKQEAgLTEx
Miw2ICsxMTMsOSBAQCBib29sIFJlbmRlclZpZGVvOjp1cGRhdGVJbnRyaW5zaWNTaXplKCkKICAg
ICAKIExheW91dFNpemUgUmVuZGVyVmlkZW86OmNhbGN1bGF0ZUludHJpbnNpY1NpemUoKQogewor
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmludHJpbnNp
Y1NpemVBdHRyaWJ1dGVFbmFibGVkKCkgJiYgIXZpZGVvRWxlbWVudCgpLmdldE92ZXJyaWRkZW5J
bnRyaW5zaWNTaXplKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZSh2aWRl
b0VsZW1lbnQoKS5nZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgpKTsKKwogICAgIC8vIFNwZWMg
dGV4dCBmcm9tIDQuOC42CiAgICAgLy8KICAgICAvLyBUaGUgaW50cmluc2ljIHdpZHRoIG9mIGEg
dmlkZW8gZWxlbWVudCdzIHBsYXliYWNrIGFyZWEgaXMgdGhlIGludHJpbnNpYyB3aWR0aCAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggOGUyNWM2OGE1My4uYTAzZGRl
MzE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTUzLDExICs1
MywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgZmluYWw7CiAK
KyAgICB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgZmluYWw7CisKIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIG1lZGlhRWxlbWVudCgp
IGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIGZpbmFs
OwogICAgIExheW91dFNpemUgY2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpOwogICAgIGJvb2wgdXBk
YXRlSW50cmluc2ljU2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbAppbmRleCBkMmEzYmZkYWE0Li45NDEzNDBkZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTcwMiw2ICs3MDIsMTQgQEAgQW5pbWF0ZWRJbWFnZUFz
eW5jRGVjb2RpbmdFbmFibGVkOgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQog
CitJbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0
VmFsdWU6IHRydWUKKyAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMKKyAg
aHVtYW5SZWFkYWJsZU5hbWU6ICJpbnRyaW5zaWNzaXplIGF0dHJpYnV0ZSIKKyAgaHVtYW5SZWFk
YWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBpbnRyaW5zaWNzaXplIGF0
dHJpYnV0ZSIKKyAgY2F0ZWdvcnk6IGludGVybmFsCisKIEN1c3RvbUVsZW1lbnRzRW5hYmxlZDoK
ICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmlu
ZGV4IDdlMmQ5ODljMmMuLjkzNWE2NDgyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAtMTUz
LDYgKzE1Myw3IEBACiAjZGVmaW5lIFdlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
UHJlZmVyZW5jZUtleSBAIldlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIgogI2Rl
ZmluZSBXZWJLaXRMYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAi
V2ViS2l0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkIgogI2RlZmluZSBXZWJLaXRBbmlt
YXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QW5pbWF0
ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkIgorI2RlZmluZSBXZWJLaXRJbnRyaW5zaWNTaXpl
QXR0cmlidXRlRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRJbnRyaW5zaWNTaXplQXR0cmli
dXRlRW5hYmxlZCIKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAjZGVmaW5lIFdlYktpdEF1ZGlvU2Vz
c2lvbkNhdGVnb3J5T3ZlcnJpZGUgQCJXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRl
IgogI2RlZmluZSBXZWJLaXRBVktpdEVuYWJsZWQgQCJXZWJLaXRBVktpdEVuYWJsZWQiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRl
eCA5ZGE2MDBhNzdkLi42Y2Q5NTdjZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTUxOCw2ICs1MTgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICBXZWJLaXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkUHJl
ZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJL
aXRBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAorICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEludHJpbnNpY1NpemVBdHRy
aWJ1dGVFbmFibGVkUHJlZmVyZW5jZUtleSwKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnN0YXRpY19jYXN0PHVpbnQzMl90
PihGcmFtZUZsYXR0ZW5pbmc6OkZ1bGx5RW5hYmxlZCldLCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdQ
cmVmZXJlbmNlS2V5LAogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDMzNTZlZDk0MDcuLmViODNj
NTQ2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtNjAxLDYgKzYwMSw3IEBAIGV4dGVybiBOU1N0cmlu
ZyAqV2ViUHJlZmVyZW5jZXNDYWNoZU1vZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIFdF
QktJVF9ERVBSCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBDU1NPTVZpZXdTY3JvbGxpbmdB
UElFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgbGFyZ2VJbWFnZUFzeW5jRGVj
b2RpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYW5pbWF0ZWRJbWFnZUFz
eW5jRGVjb2RpbmdFbmFibGVkOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgSW50cmluc2lj
U2l6ZUF0dHJpYnV0ZUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBqYXZhU2Ny
aXB0TWFya3VwRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIG1lZGlhRGF0YUxv
YWRzQXV0b21hdGljYWxseTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGF0dGFjaG1lbnRF
bGVtZW50RW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQppbmRleCBjMTYwNjA1ZWI4Li5lNWMwMzM3OWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zMjE2LDYgKzMyMTYsNyBAQCBzdGF0aWMgYm9vbCBu
ZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiAKICAgICBzZXR0aW5ncy5zZXRMYXJn
ZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGxhcmdlSW1hZ2VBc3luY0Rl
Y29kaW5nRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLnNldEFuaW1hdGVkSW1hZ2VBc3luY0RlY29k
aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgYW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVk
XSk7CisgICAgc2V0dGluZ3Muc2V0SW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWQoW3ByZWZl
cmVuY2VzIEludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0
TWVkaWFDYXBhYmlsaXRpZXNFbmFibGVkKFtwcmVmZXJlbmNlcyBtZWRpYUNhcGFiaWxpdGllc0Vu
YWJsZWRdKTsKIAogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c2V0U2VydmVyVGltaW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgc2VydmVyVGltaW5nRW5hYmxlZF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJmYWNlcy9JV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmlkbCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ludGVyZmFjZXMv
SVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKaW5kZXggZWQ4YjFjY2FhOS4uYTBjM2RjMGY1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmlkbAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2Vz
L0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCkBAIC0yNDAsNCArMjQwLDYgQEAgaW50ZXJmYWNl
IElXZWJQcmVmZXJlbmNlc1ByaXZhdGU3IDogSVdlYlByZWZlcmVuY2VzUHJpdmF0ZTYKICAgICBI
UkVTVUxUIHNldENyb3NzT3JpZ2luV2luZG93UG9saWN5U3VwcG9ydEVuYWJsZWQoW2luXSBCT09M
IGVuYWJsZWQpOwogICAgIEhSRVNVTFQgcmVzaXplT2JzZXJ2ZXJFbmFibGVkKFtvdXQsIHJldHZh
bF0gQk9PTCopOwogICAgIEhSRVNVTFQgc2V0UmVzaXplT2JzZXJ2ZXJFbmFibGVkKFtpbl0gQk9P
TCBlbmFibGVkKTsKKyAgICBIUkVTVUxUIGludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKFtv
dXQsIHJldHZhbF0gQk9PTCopOworICAgIEhSRVNVTFQgc2V0SW50cmluc2ljU2l6ZUF0dHJpYnV0
ZUVuYWJsZWQoW2luXSBCT09MIGVuYWJsZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCA0MTNhNmZkZjI5Li4yMjZk
OWVhYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaApAQCAtMjA3LDMgKzIwNyw1IEBACiAjZGVmaW5lIFdlYktpdENTU09NVmll
d1Njcm9sbGluZ0FQSUVuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRDU1NPTVZpZXdTY3JvbGxp
bmdBUElFbmFibGVkIgogCiAjZGVmaW5lIFdlYktpdFJlc2l6ZU9ic2VydmVyRW5hYmxlZFByZWZl
cmVuY2VLZXkgIldlYktpdFJlc2l6ZU9ic2VydmVyRW5hYmxlZCIKKworI2RlZmluZSBXZWJLaXRJ
bnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdEludHJpbnNp
Y1NpemVBdHRyaWJ1dGVFbmFibGVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwCmluZGV4IDkwMjNlM2Y0MTUuLmVlN2Y3NGM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTMzMSw2ICszMzEsOCBAQCB2b2lkIFdl
YlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKIAogICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRSZXNpemVPYnNlcnZlckVuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAorICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRJbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworCiAgICAgZGVmYXVsdFNldHRpbmdzID0g
ZGVmYXVsdHM7CiB9CiAKQEAgLTIwNDksNiArMjA1MSwyMCBAQCBIUkVTVUxUIFdlYlByZWZlcmVu
Y2VzOjpzZXRDcm9zc09yaWdpbldpbmRvd1BvbGljeVN1cHBvcnRFbmFibGVkKEJPT0wpCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmludHJpbnNpY1NpemVB
dHRyaWJ1dGVFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCit7CisgICAgaWYgKCFlbmFibGVk
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9y
S2V5KFdlYktpdEludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkUHJlZmVyZW5jZUtleSk7Cisg
ICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEludHJpbnNp
Y1NpemVBdHRyaWJ1dGVFbmFibGVkKEJPT0wgZW5hYmxlZCkKK3sKKyAgICBzZXRCb29sVmFsdWUo
V2ViS2l0SW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVk
KTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0TW9k
ZXJuTWVkaWFDb250cm9sc0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewogICAgIHNldEJvb2xWYWx1
ZShXZWJLaXRNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgKaW5kZXggNmViYTE3YzNl
OC4uNWM3NWM3MDY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJl
ZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5o
CkBAIC0yODUsNiArMjg1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRDcm9zc09yaWdpbldpbmRvd1BvbGljeVN1cHBvcnRFbmFibGVkKEJPT0wp
OwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXNpemVPYnNlcnZlckVu
YWJsZWQoX091dF8gQk9PTCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRSZXNpemVPYnNlcnZlckVuYWJsZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKF9PdXRfIEJPT0wq
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SW50cmluc2ljU2l6
ZUF0dHJpYnV0ZUVuYWJsZWQoQk9PTCk7CiAKICAgICAvLyBXZWJQcmVmZXJlbmNlcwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDYzMTI1M2E0OWMuLjU5MmQ2ZjQyOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC01Mjk4LDYgKzUyOTgsMTEgQEAgSFJF
U1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm4gaHI7CiAgICAgc2V0dGluZ3Muc2V0Q1NTT01W
aWV3U2Nyb2xsaW5nQVBJRW5hYmxlZCghIWVuYWJsZWQpOwogCisgICAgaHIgPSBwcmVmc1ByaXZh
dGUtPkludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKCZlbmFibGVkKTsKKyAgICBpZiAoRkFJ
TEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGhyOworICAgIHNldHRpbmdzLnNldEludHJpbnNpY1Np
emVBdHRyaWJ1dGVFbmFibGVkKCEhZW5hYmxlZCk7CisKICAgICBociA9IHByZWZlcmVuY2VzLT5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAg
ICAgICAgcmV0dXJuIGhyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCmluZGV4IDc3
YTRhZmY3NzkuLjM0Y2FiZmJmMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RPcHRpb25zLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAK
QEAgLTExMyw2ICsxMTMsOCBAQCBUZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpz
dHJpbmcmIHBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGFic29sdQogICAgICAgICAgICAg
YWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2
YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZXhwZXJpbWVudGFsOlJlc2l6ZU9ic2Vy
dmVyRW5hYmxlZCIpCiAgICAgICAgICAgICBlbmFibGVSZXNpemVPYnNlcnZlciA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiaW50
ZXJuYWw6SW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWQiKQorICAgICAgICAgICAgaW50cmlu
c2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWQgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFs
dWUpOwogICAgICAgICBwYWlyU3RhcnQgPSBwYWlyRW5kICsgMTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdE9wdGlvbnMuaAppbmRleCBkODg1ZWRiZGViLi4zNGZjZDU5OTg0IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RydWN0IFRlc3RPcHRp
b25zIHsKICAgICBib29sIGVuYWJsZUNTU0xvZ2ljYWwgeyBmYWxzZSB9OwogICAgIGJvb2wgYWRD
bGlja0F0dHJpYnV0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBlbmFibGVSZXNpemVP
YnNlcnZlciB7IGZhbHNlIH07CisgICAgYm9vbCBpbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgc3RkOjpzdHJpbmcganNjT3B0aW9uczsKIAogICAgIFRlc3RPcHRp
b25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBhYnNv
bHV0ZVBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmlu
ZGV4IDY1ODcyNTNlOTQuLjI1ODM5ODM3YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KQEAgLTEwMjAsNiArMTAyMCw3IEBAIHN0YXRpYyB2b2lkIHNldFdl
YlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAg
ICAgcHJlZmVyZW5jZXMuQ1NTTG9naWNhbEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNTU0xvZ2lj
YWw7CiAgICAgcHJlZmVyZW5jZXMuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IG9wdGlvbnMu
YWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZDsKICAgICBwcmVmZXJlbmNlcy5yZXNpemVPYnNlcnZl
ckVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVJlc2l6ZU9ic2VydmVyOworICAgIHByZWZlcmVuY2Vz
LmludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkID0gb3B0aW9ucy5pbnRyaW5zaWNTaXplQXR0
cmlidXRlRW5hYmxlZDsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJlbmRlclRyZWUgc3Rh
cnR1cC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369851</attachid>
            <date>2019-05-14 08:36:05 -0700</date>
            <delta_ts>2019-05-29 07:18:02 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>IS.diff</filename>
            <type>text/plain</type>
            <size>32268</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDc2NDE4MjNlMDEuLmNkMzE2ZDA0MTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtODg5LDcgKzg4OSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVsZW1lbnQvCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvdGhlLWltZy1lbGVtZW50L2ludmFsaWQtc3JjLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUt
aW1nLWVsZW1lbnQvcmVsZXZhbnQtbXV0YXRpb25zLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUt
b2JqZWN0LWVsZW1lbnQvb2JqZWN0LWV2ZW50cy5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLXZp
ZGVvLWVsZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRyaW5zaWNzaXplLXdpdGhvdXQtdW5zaXplZC1t
ZWRpYS50ZW50YXRpdmUuaHR0cHMuc3ViLmh0bWwgWyBTa2lwIF0KIAogIyBAc3VwcG9ydHMgVzND
IEZhaWx1cmVzCiB3ZWJraXQub3JnL2IvMTM3NTY4IGNzczMvY29uZGl0aW9uYWwvdzNjL2F0LXN1
cHBvcnRzLTAxNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2ljc2l6ZS13
aXRoLXJlc3BvbnNpdmUtaW1hZ2VzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2ljc2l6ZS13aXRo
LXJlc3BvbnNpdmUtaW1hZ2VzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggMDdjNTZmMGMx
ZC4uYzA0ZjVhNzk1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1pbWctZWxl
bWVudC9pbnRyaW5zaWNzaXplL2ludHJpbnNpY3NpemUtd2l0aC1yZXNwb25zaXZlLWltYWdlcy50
ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVs
ZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRyaW5zaWNzaXplLXdpdGgtcmVzcG9uc2l2ZS1pbWFnZXMu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwxMCBAQAogCiAKLUZBSUwgVGVzdCBp
bWFnZSAvaW1hZ2VzL2dyZWVuLnN2ZyB3aXRoIG5vIHNwZWNpZmllZCBzaXplcywgd2lkdGgsIG9y
IGhlaWdodCBhc3NlcnRfZXF1YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAzMwotRkFJ
TCBUZXN0IGltYWdlIC9pbWFnZXMvZ3JlZW4uc3ZnIHdpdGggd2lkdGggPSA4MDAsIG5vIHNwZWNp
ZmllZCBzaXplcywgb3IgaGVpZ2h0IGFzc2VydF9lcXVhbHM6IGhlaWdodCBleHBlY3RlZCAxMDAw
IGJ1dCBnb3QgNDAwCi1GQUlMIFRlc3QgaW1hZ2UgL2ltYWdlcy9ncmVlbi5zdmcgd2l0aCB3aWR0
aCA9IDgwMCwgaGVpZ2h0ID0gODAwLCBhbmQgbm8gc3BlY2lmaWVkIHNpemVzIGFzc2VydF9lcXVh
bHM6IG5hdHVyYWxXaWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCA4MDAKLUZBSUwgVGVzdCBpbWFn
ZSAvaW1hZ2VzL2dyZWVuLnBuZyB3aXRoIG5vIHNwZWNpZmllZCBzaXplcywgd2lkdGgsIG9yIGhl
aWdodCBhc3NlcnRfZXF1YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAzMwotRkFJTCBU
ZXN0IGltYWdlIC9pbWFnZXMvZ3JlZW4ucG5nIHdpdGggd2lkdGggPSA4MDAsIG5vIHNwZWNpZmll
ZCBzaXplcywgb3IgaGVpZ2h0IGFzc2VydF9lcXVhbHM6IGhlaWdodCBleHBlY3RlZCAxMDAwIGJ1
dCBnb3QgNDAwCi1GQUlMIFRlc3QgaW1hZ2UgL2ltYWdlcy9ncmVlbi5wbmcgd2l0aCB3aWR0aCA9
IDgwMCwgaGVpZ2h0ID0gODAwLCBhbmQgbm8gc3BlY2lmaWVkIHNpemVzIGFzc2VydF9lcXVhbHM6
IG5hdHVyYWxXaWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAxMDAKLUZBSUwgVGVzdCBpbWFnZSAo
MzIgeCAzMikgd2l0aCBzaXplcyA9IDEwMCBhbmQgc3Jjc2V0IGRlc2NyaXB0b3IgPSAzMncgYXNz
ZXJ0X2VxdWFsczogaGVpZ2h0IGV4cGVjdGVkIDEyNSBidXQgZ290IDEwMAorUEFTUyBUZXN0IGlt
YWdlIC9pbWFnZXMvZ3JlZW4uc3ZnIHdpdGggbm8gc3BlY2lmaWVkIHNpemVzLCB3aWR0aCwgb3Ig
aGVpZ2h0IAorUEFTUyBUZXN0IGltYWdlIC9pbWFnZXMvZ3JlZW4uc3ZnIHdpdGggd2lkdGggPSA4
MDAsIG5vIHNwZWNpZmllZCBzaXplcywgb3IgaGVpZ2h0IAorUEFTUyBUZXN0IGltYWdlIC9pbWFn
ZXMvZ3JlZW4uc3ZnIHdpdGggd2lkdGggPSA4MDAsIGhlaWdodCA9IDgwMCwgYW5kIG5vIHNwZWNp
ZmllZCBzaXplcyAKK1BBU1MgVGVzdCBpbWFnZSAvaW1hZ2VzL2dyZWVuLnBuZyB3aXRoIG5vIHNw
ZWNpZmllZCBzaXplcywgd2lkdGgsIG9yIGhlaWdodCAKK1BBU1MgVGVzdCBpbWFnZSAvaW1hZ2Vz
L2dyZWVuLnBuZyB3aXRoIHdpZHRoID0gODAwLCBubyBzcGVjaWZpZWQgc2l6ZXMsIG9yIGhlaWdo
dCAKK1BBU1MgVGVzdCBpbWFnZSAvaW1hZ2VzL2dyZWVuLnBuZyB3aXRoIHdpZHRoID0gODAwLCBo
ZWlnaHQgPSA4MDAsIGFuZCBubyBzcGVjaWZpZWQgc2l6ZXMgCitGQUlMIFRlc3QgaW1hZ2UgKDMy
IHggMzIpIHdpdGggc2l6ZXMgPSAxMDAgYW5kIHNyY3NldCBkZXNjcmlwdG9yID0gMzJ3IGFzc2Vy
dF9lcXVhbHM6IHdpZHRoIGV4cGVjdGVkIDEwMCBidXQgZ290IDQwMAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2lj
c2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEudGVudGF0aXZlLmh0dHBzLnN1Yi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50
cmluc2ljc2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEudGVudGF0aXZlLmh0dHBzLnN1Yi1leHBl
Y3RlZC50eHQKaW5kZXggZWEyZTk4NGM2My4uMWVlNGJiN2Q3OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L3RoZS1pbWctZWxlbWVudC9pbnRyaW5zaWNzaXplL2ludHJpbnNpY3NpemUt
d2l0aG91dC11bnNpemVkLW1lZGlhLnRlbnRhdGl2ZS5odHRwcy5zdWItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVsZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRy
aW5zaWNzaXplLXdpdGhvdXQtdW5zaXplZC1tZWRpYS50ZW50YXRpdmUuaHR0cHMuc3ViLWV4cGVj
dGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLSAgCisgCiAKLUZBSUwgVGVzdCBpbnRyaW5zaWNzaXpl
IGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2VzL2dyZWVuLnN2ZyBhc3NlcnRfZXF1
YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAxMDAKLUZBSUwgVGVzdCBpbnRyaW5zaWNz
aXplIGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2VzL2dyZWVuLnBuZyBhc3NlcnRf
ZXF1YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAxMDAKK1BBU1MgVGVzdCBpbnRyaW5z
aWNzaXplIGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2VzL2dyZWVuLnN2ZyAKK1BB
U1MgVGVzdCBpbnRyaW5zaWNzaXplIGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2Vz
L2dyZWVuLnBuZyAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1l
bGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2ljc2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEu
dGVudGF0aXZlLmh0dHBzLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhl
LXZpZGVvLWVsZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRyaW5zaWNzaXplLXdpdGhvdXQtdW5zaXpl
ZC1tZWRpYS50ZW50YXRpdmUuaHR0cHMuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwLi4zZTZkN2ZjODc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2lj
c2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEudGVudGF0aXZlLmh0dHBzLnN1Yi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFTUyBUZXN0IGludHJpbnNpY3NpemUgZm9yIGh0bWwg
dmlkZW8gZWxlbWVudCAKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgppbmRleCBjYTY0NDQ3MzEzLi5jMmQ0NGM0NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTQ4LDYgKzE0OCw3IEBAIGluY3JlbWVudGFsCiBpbmRl
dGVybWluYXRlCiBpbnB1dG1vZGUKIGludGVncml0eQoraW50cmluc2ljc2l6ZQogaXMKIGlzbWFw
CiBpdGVtaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGQw
NDc5NzhmYzguLmMzZjMxYTQyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcApAQCAtMjQzLDcgKzI0MywxMSBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgogI2Vu
ZGlmCiAgICAgfSBlbHNlIGlmIChuYW1lID09IHhfYXBwbGVfZWRpdGFibGVfaW1hZ2VBdHRyKQog
ICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdlKCk7Ci0gICAgZWxzZSB7CisgICAgZWxzZSBpZiAo
bmFtZSA9PSBpbnRyaW5zaWNzaXplQXR0ciAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLmludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKCkpIHsKKyAgICAgICAg
Ym9vbCBpbnRyaW5zaWNTaXplQ2hhbmdlZCA9IHBhcnNlSW50cmluc2ljU2l6ZUF0dHJpYnV0ZSh2
YWx1ZSwgbV9vdmVycmlkZGVuSW50cmluc2ljU2l6ZSk7CisgICAgICAgIGlmIChpbnRyaW5zaWNT
aXplQ2hhbmdlZCAmJiByZW5kZXJlcigpICYmIGlzPFJlbmRlckltYWdlPihyZW5kZXJlcigpKSkK
KyAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIoKSkuaW50cmluc2lj
U2l6ZUNoYW5nZWQoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBpZiAobmFtZSA9PSBuYW1lQXR0
cikgewogICAgICAgICAgICAgYm9vbCB3aWxsSGF2ZU5hbWUgPSAhdmFsdWUuaXNOdWxsKCk7CiAg
ICAgICAgICAgICBpZiAobV9oYWROYW1lQmVmb3JlQXR0cmlidXRlQ2hhbmdlZCAhPSB3aWxsSGF2
ZU5hbWUgJiYgaXNDb25uZWN0ZWQoKSAmJiAhaXNJblNoYWRvd1RyZWUoKSAmJiBpczxIVE1MRG9j
dW1lbnQ+KGRvY3VtZW50KCkpKSB7CkBAIC01MTEsNiArNTE1LDkgQEAgdW5zaWduZWQgSFRNTElt
YWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQogCiBpbnQg
SFRNTEltYWdlRWxlbWVudDo6bmF0dXJhbFdpZHRoKCkgY29uc3QKIHsKKyAgICBpZiAoIW1fb3Zl
cnJpZGRlbkludHJpbnNpY1NpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbV9vdmVycmlk
ZGVuSW50cmluc2ljU2l6ZS53aWR0aCgpOworCiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdl
KCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC01MTksNiArNTI2LDkgQEAgaW50IEhUTUxJbWFn
ZUVsZW1lbnQ6Om5hdHVyYWxXaWR0aCgpIGNvbnN0CiAKIGludCBIVE1MSW1hZ2VFbGVtZW50Ojpu
YXR1cmFsSGVpZ2h0KCkgY29uc3QKIHsKKyAgICBpZighbV9vdmVycmlkZGVuSW50cmluc2ljU2l6
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX292ZXJyaWRkZW5JbnRyaW5zaWNTaXplLmhl
aWdodCgpOworCiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyLmltYWdlKCkpCiAgICAgICAgIHJldHVy
biAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IGQyMGZhNzI3
NWEuLmRjZjg4ZmY3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBA
IC0zNiw2ICszNiw3IEBAIGNsYXNzIEVkaXRhYmxlSW1hZ2VSZWZlcmVuY2U7CiBjbGFzcyBIVE1M
QXR0YWNobWVudEVsZW1lbnQ7CiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFw
RWxlbWVudDsKK2NsYXNzIEludFNpemU7CiAKIHN0cnVjdCBJbWFnZUNhbmRpZGF0ZTsKIApAQCAt
ODQsNiArODUsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdpZHRo
KHVuc2lnbmVkKTsKIAorICAgIEludFNpemUgZ2V0T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKSBj
b25zdCB7IHJldHVybiBtX292ZXJyaWRkZW5JbnRyaW5zaWNTaXplOyB9CisKICAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgeCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCB5KCkgY29uc3Q7
CiAKQEAgLTE5MSw2ICsxOTQsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BlbmRpbmdDbG9u
ZWRBdHRhY2htZW50SUQ7CiAjZW5kaWYKIAorICAgIEludFNpemUgbV9vdmVycmlkZGVuSW50cmlu
c2ljU2l6ZTsKKwogICAgIGZyaWVuZCBjbGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAppbmRleCAwM2Q2ZTJjMDRiLi4z
ZmJmOWIxODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKQEAg
LTQyLDYgKzQyLDkgQEAKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyB3aWR0aDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGRlY29kaW5nOwogCisgICAgLy8gZ2l0aHViLmNvbS9vamFudmFm
YWkvaW50cmluc2ljc2l6ZS1hdHRyaWJ1dGUvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kCisgICAgW0Vu
YWJsZWRBdFJ1bnRpbWU9SW50cmluc2ljU2l6ZUF0dHJpYnV0ZSwgQ0VSZWFjdGlvbnMsIFJlZmxl
Y3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgaW50cmluc2ljU2l6ZTsKKwogICAgIFtDb25kaXRpb25h
bD1BVFRBQ0hNRU5UX0VMRU1FTlQsIEVuYWJsZWRBdFJ1bnRpbWU9QXR0YWNobWVudEVsZW1lbnRd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgYXR0YWNobWVudElkZW50aWZpZXI7CiAKICAg
ICAvLyBFeHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApp
bmRleCBmNDdkNDY3OGRlLi4wYmU0ZTljMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgorI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgpAQCAtMTMzLDYgKzEzNCwxMCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgogICAgICAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAg
ICByZW5kZXJlci0+aW1hZ2VSZXNvdXJjZSgpLnNldENhY2hlZEltYWdlKG51bGxwdHIpOwogICAg
ICAgICB9CisgICAgfSBlbHNlIGlmIChuYW1lID09IGludHJpbnNpY3NpemVBdHRyICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW50cmluc2ljU2l6ZUF0dHJpYnV0
ZUVuYWJsZWQoKSkgeworICAgICAgICBib29sIGludHJpbnNpY1NpemVDaGFuZ2VkID0gcGFyc2VJ
bnRyaW5zaWNTaXplQXR0cmlidXRlKHZhbHVlLCBtX292ZXJyaWRkZW5JbnRyaW5zaWNTaXplKTsK
KyAgICAgICAgaWYgKGludHJpbnNpY1NpemVDaGFuZ2VkICYmIHJlbmRlcmVyKCkpCisgICAgICAg
ICAgICByZW5kZXJlcigpLT5pbnRyaW5zaWNTaXplQ2hhbmdlZCgpOwogICAgIH0KICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGVsc2UgaWYgKG5hbWUgPT0gd2Via2l0
d2lyZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJsZWRBdHRyKQpAQCAtMjAxLDYgKzIwNiw4IEBAIHZv
aWQgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKQogCiB1bnNpZ25l
ZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRlb1dpZHRoKCkgY29uc3QKIHsKKyAgICBpZiAobV9vdmVy
cmlkZGVuSW50cmluc2ljU2l6ZS53aWR0aCgpID4gMCkKKyAgICAgICAgcmV0dXJuIG1fb3ZlcnJp
ZGRlbkludHJpbnNpY1NpemUud2lkdGgoKTsKICAgICBpZiAoIXBsYXllcigpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gY2xhbXBUb1Vuc2lnbmVkKHBsYXllcigpLT5uYXR1cmFsU2l6
ZSgpLndpZHRoKCkpOwpAQCAtMjA4LDYgKzIxNSw4IEBAIHVuc2lnbmVkIEhUTUxWaWRlb0VsZW1l
bnQ6OnZpZGVvV2lkdGgoKSBjb25zdAogCiB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRl
b0hlaWdodCgpIGNvbnN0CiB7CisgICAgaWYgKG1fb3ZlcnJpZGRlbkludHJpbnNpY1NpemUuaGVp
Z2h0KCkgPiAwKQorICAgICAgICByZXR1cm4gbV9vdmVycmlkZGVuSW50cmluc2ljU2l6ZS5oZWln
aHQoKTsKICAgICBpZiAoIXBsYXllcigpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4g
Y2xhbXBUb1Vuc2lnbmVkKHBsYXllcigpLT5uYXR1cmFsU2l6ZSgpLmhlaWdodCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggZDRiYTM3MGI0Mi4uNTY5NTIzZDk0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTMzLDYgKzMzLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEltYWdlTG9hZGVyOworY2xhc3Mg
SW50U2l6ZTsKIGNsYXNzIFJlbmRlclZpZGVvOwogCiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50IGZp
bmFsIDogcHVibGljIEhUTUxNZWRpYUVsZW1lbnQgewpAQCAtOTQsNiArOTUsOCBAQCBwdWJsaWM6
CiAKICAgICBSZW5kZXJWaWRlbyogcmVuZGVyZXIoKSBjb25zdDsKIAorICAgIEludFNpemUgZ2V0
T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRkZW5JbnRy
aW5zaWNTaXplOyB9CisKIHByaXZhdGU6CiAgICAgSFRNTFZpZGVvRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKQEAgLTEyMyw2
ICsxMjYsOCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9sYXN0UmVwb3J0ZWRWaWRlb1dp
ZHRoIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbGFzdFJlcG9ydGVkVmlkZW9IZWlnaHQgeyAwIH07
CisKKyAgICBJbnRTaXplIG1fb3ZlcnJpZGRlbkludHJpbnNpY1NpemU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbApp
bmRleCAxZjkzMTY4NWJjLi45NDY1OGJjN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5pZGwKQEAgLTMzLDYgKzMzLDkgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyB2aWRlb0hlaWdodDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0LCBVUkxdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgcG9zdGVyOwogCisgICAgLy8gZ2l0aHVi
LmNvbS9vamFudmFmYWkvaW50cmluc2ljc2l6ZS1hdHRyaWJ1dGUvYmxvYi9tYXN0ZXIvUkVBRE1F
Lm1kCisgICAgW0VuYWJsZWRBdFJ1bnRpbWU9SW50cmluc2ljU2l6ZUF0dHJpYnV0ZSwgQ0VSZWFj
dGlvbnMsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgaW50cmluc2ljU2l6ZTsKKwogICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIHBsYXlz
SW5saW5lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdFN1cHBvcnRzRnVs
bHNjcmVlbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXREaXNwbGF5aW5n
RnVsbHNjcmVlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5jcHAKaW5kZXggMzk5MWU3NTQ2MS4uMTVlYzFjOTJkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTQ3Niw0ICs0NzYsMzEg
QEAgQXRvbWljU3RyaW5nIHBhcnNlSFRNTEhhc2hOYW1lUmVmZXJlbmNlKFN0cmluZ1ZpZXcgdXNl
bWFwKQogICAgIHJldHVybiB1c2VtYXAuc3Vic3RyaW5nKG51bWJlclNpZ25JbmRleCArIDEpLnRv
QXRvbWljU3RyaW5nKCk7CiB9CiAKK2Jvb2wgcGFyc2VJbnRyaW5zaWNTaXplQXR0cmlidXRlKFN0
cmluZ1ZpZXcgaW5wdXQsIEludFNpemUmIGludHJpbnNpY1NpemUpCit7CisgICAgdW5zaWduZWQg
bmV3V2lkdGggPSAwLCBuZXdIZWlnaHQgPSAwOworICAgIGF1dG8gc3BsaXRSZXN1bHQgPSBpbnB1
dC5zcGxpdCgneCcpOworICAgIGF1dG8gaXQgPSBzcGxpdFJlc3VsdC5iZWdpbigpOworICAgIGlm
IChpdCAhPSBzcGxpdFJlc3VsdC5lbmQoKSkgeworICAgICAgICBpZiAoYXV0byBwYXJzZWRXaWR0
aCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcigqaXQpKSB7CisgICAgICAgICAgICArK2l0
OworICAgICAgICAgICAgaWYgKGl0ICE9IHNwbGl0UmVzdWx0LmVuZCgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gcGFyc2VkSGVpZ2h0ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KCppdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgKytpdDsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ID09IHNwbGl0UmVzdWx0LmVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdXaWR0aCA9IHBhcnNlZFdpZHRoLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdIZWlnaHQgPSBwYXJzZWRIZWlnaHQudmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBJ
bnRTaXplIG5ld1NpemUobmV3V2lkdGgsIG5ld0hlaWdodCk7CisgICAgaWYgKGludHJpbnNpY1Np
emUgIT0gbmV3U2l6ZSkgeworICAgICAgICBpbnRyaW5zaWNTaXplID0gbmV3U2l6ZTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IDY5ZTg5NGQx
MDguLmQzMGFhMTZkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEZWNpbWFsOwogY2xhc3MgUXVhbGlmaWVkTmFtZTsKK2NsYXNzIEludFNpemU7CiAKIC8vIFNw
YWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBieSB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uLgogdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0hUTUxTcGFjZShDaGFyYWN0ZXJU
eXBlKTsKQEAgLTE3Miw0ICsxNzMsNyBAQCBpbmxpbmUgdW5zaWduZWQgY2xhbXBIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VyVG9SYW5nZShTdHJpbmdWaWV3IHN0cmluZ1ZhbHVlLCB1bnNpZwogICAgIHJl
dHVybiBvcHRpb25hbFZhbHVlLmVycm9yKCkgPT0gSFRNTEludGVnZXJQYXJzaW5nRXJyb3I6OlBv
c2l0aXZlT3ZlcmZsb3cgPyBtYXggOiBkZWZhdWx0VmFsdWU7CiB9CiAKKy8vIGh0dHBzOi8vZ2l0
aHViLmNvbS9vamFudmFmYWkvaW50cmluc2ljc2l6ZS1hdHRyaWJ1dGUKK2Jvb2wgcGFyc2VJbnRy
aW5zaWNTaXplQXR0cmlidXRlKFN0cmluZ1ZpZXcgaW5wdXQsIEludFNpemUmIGludHJpbnNpY1Np
emUpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDBlOWM4NmYzNWYuLmY1YzdmNjdkM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0zNTUsNiAr
MzU1LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGVFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeUF0dHJpYnV0ZUVuYWJsZWQ7IH0KICAg
ICB2b2lkIHNldFJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBtX3JlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogCisgICAg
Ym9vbCBpbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWRD
bGlja0F0dHJpYnV0aW9uRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW50cmluc2ljU2l6ZUF0dHJp
YnV0ZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9hZENsaWNrQXR0cmlidXRpb25FbmFibGVk
ID0gaXNFbmFibGVkOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUnVudGltZUVuYWJs
ZWRGZWF0dXJlcyYgc2hhcmVkRmVhdHVyZXMoKTsKIAogcHJpdmF0ZToKQEAgLTUzNCw2ICs1Mzcs
NyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgYm9vbCBtX21vdXNl
RXZlbnRzU2ltdWxhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCisgICAgYm9vbCBtX2lu
dHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9pc0lU
UERhdGFiYXNlRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzSVRQRmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbEVuYWJsZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggNTE2MmFjM2RiOC4uYmZjZTUyM2ZjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xNDAsMTIgKzE0MCwxNiBAQCBS
ZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgU3R5bGVJbWFnZSogc3R5bAogICAgIHVwZGF0ZUFsdFRleHQoKTsKICAgICBpZiAoaXM8
SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIG1faGFzU2hhZG93Q29udHJvbHMg
PSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KS5oYXNTaGFkb3dDb250cm9scygp
OworICAgIGlmICghZ2V0T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKS5pc0VtcHR5KCkpCisgICAg
ICAgIGludHJpbnNpY1NpemVDaGFuZ2VkKCk7CiB9CiAKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFn
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0
eWxlSW1hZ2UpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSks
IEludFNpemUoKSkKICAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogeworICAgIGlmICghZ2V0T3Zl
cnJpZGRlbkludHJpbnNpY1NpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIGludHJpbnNpY1NpemVD
aGFuZ2VkKCk7CiB9CiAKIFJlbmRlckltYWdlOjp+UmVuZGVySW1hZ2UoKQpAQCAtMjE4LDcgKzIy
Miw3IEBAIGJvb2wgUmVuZGVySW1hZ2U6OmlzRWRpdGFibGVJbWFnZSgpIGNvbnN0CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxl
bWVudCgpKS0+aGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpOwogfQotICAgIAorCiBib29sIFJl
bmRlckltYWdlOjpyZXF1aXJlc0xheWVyKCkgY29uc3QKIHsKICAgICBpZiAoUmVuZGVyUmVwbGFj
ZWQ6OnJlcXVpcmVzTGF5ZXIoKSkKQEAgLTI2Nyw3ICsyNzEsNyBAQCB2b2lkIFJlbmRlckltYWdl
OjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIG5ld0ltYWdlLCBjb25zdCBJbnRSZWN0KiBy
ZWN0KQogICAgIGlmIChoYXNWaXNpYmxlQm94RGVjb3JhdGlvbnMoKSB8fCBoYXNNYXNrKCkgfHwg
aGFzU2hhcGVPdXRzaWRlKCkpCiAgICAgICAgIFJlbmRlclJlcGxhY2VkOjppbWFnZUNoYW5nZWQo
bmV3SW1hZ2UsIHJlY3QpOwogCi0gICAgaWYgKG5ld0ltYWdlICE9IGltYWdlUmVzb3VyY2UoKS5p
bWFnZVB0cigpIHx8ICFuZXdJbWFnZSkKKyAgICBpZiAoKG5ld0ltYWdlICE9IGltYWdlUmVzb3Vy
Y2UoKS5pbWFnZVB0cigpIHx8ICFuZXdJbWFnZSkgJiYgZ2V0T3ZlcnJpZGRlbkludHJpbnNpY1Np
emUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoIW1fZGlkSW5j
cmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQpIHsKQEAgLTI5Nyw3ICszMDEsNyBAQCB2
b2lkIFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIG5ld0ltYWdlLCBj
b25zdCBJbnRSZWN0KiByZWN0KQogCiB2b2lkIFJlbmRlckltYWdlOjp1cGRhdGVJbnRyaW5zaWNT
aXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYgbmV3U2l6ZSkKIHsKLSAgICBpZiAoaW1hZ2VS
ZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKSB8fCAhbV9pbWFnZVJlc291cmNlLT5jYWNoZWRJbWFn
ZSgpKQorICAgIGlmICgoaW1hZ2VSZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKSB8fCAhbV9pbWFn
ZVJlc291cmNlLT5jYWNoZWRJbWFnZSgpKSAmJiBnZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgp
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHNldEludHJpbnNpY1NpemUobmV3U2l6
ZSk7CiB9CkBAIC0zMjYsNiArMzMwLDExIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnJlcGFpbnRPck1h
cmtGb3JMYXlvdXQoSW1hZ2VTaXplQ2hhbmdlVHlwZSBpbWFnZVNpemVDaGFuZ2UsIGNvCiAjZWxz
ZQogICAgIExheW91dFNpemUgbmV3SW50cmluc2ljU2l6ZSA9IGltYWdlUmVzb3VyY2UoKS5pbnRy
aW5zaWNTaXplKHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKICNlbmRpZgorCisgICAgYXV0byBv
dmVycmlkZGVuSW50cmluc2ljU2l6ZSA9IGdldE92ZXJyaWRkZW5JbnRyaW5zaWNTaXplKCk7Cisg
ICAgaWYgKCFvdmVycmlkZGVuSW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG5ld0lu
dHJpbnNpY1NpemUgPSBMYXlvdXRTaXplKG92ZXJyaWRkZW5JbnRyaW5zaWNTaXplKTsKKwogICAg
IExheW91dFNpemUgb2xkSW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemUoKTsKIAogICAgIHVw
ZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChuZXdJbnRyaW5zaWNTaXplKTsKQEAgLTY5OSw2ICs3
MDgsMTAgQEAgYm9vbCBSZW5kZXJJbWFnZTo6Y29tcHV0ZUJhY2tncm91bmRJc0tub3duVG9CZU9i
c2N1cmVkKGNvbnN0IExheW91dFBvaW50JiBwYWludE8KIAogTGF5b3V0VW5pdCBSZW5kZXJJbWFn
ZTo6bWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3QKIHsKKyAgICBhdXRvIG92ZXJyaWRkZW5J
bnRyaW5zaWNTaXplID0gZ2V0T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKTsKKyAgICBpZiAoIW92
ZXJyaWRkZW5JbnRyaW5zaWNTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRk
ZW5JbnRyaW5zaWNTaXplLmhlaWdodCgpOworCiAgICAgcmV0dXJuIGltYWdlUmVzb3VyY2UoKS5l
cnJvck9jY3VycmVkKCkgPyBpbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgOiAwX2x1OwogfQogCkBA
IC04MjUsNyArODM4LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1JhdGlv
SW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3UKICAgICAgICAgfQogICAg
IH0KICAgICAvLyBEb24ndCBjb21wdXRlIGFuIGludHJpbnNpYyByYXRpbyB0byBwcmVzZXJ2ZSBo
aXN0b3JpY2FsIFdlYktpdCBiZWhhdmlvciBpZiB3ZSdyZSBwYWludGluZyBhbHQgdGV4dCBhbmQv
b3IgYSBicm9rZW4gaW1hZ2UuCi0gICAgaWYgKGltYWdlUmVzb3VyY2UoKS5lcnJvck9jY3VycmVk
KCkpIHsKKyAgICBpZiAoaW1hZ2VSZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKSAmJiBnZXRPdmVy
cmlkZGVuSW50cmluc2ljU2l6ZSgpLmlzRW1wdHkoKSkgewogICAgICAgICBpbnRyaW5zaWNSYXRp
byA9IDE7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04NDcsNCArODYwLDEyIEBAIFJlbmRl
ckJveCogUmVuZGVySW1hZ2U6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK0ludFNpemUgUmVuZGVySW1hZ2U6OmdldE92ZXJyaWRkZW5JbnRyaW5z
aWNTaXplKCkgY29uc3QKK3sKKyAgICBhdXRvKiBpbWFnZUVsZW1lbnQgPSBlbGVtZW50KCk7Cisg
ICAgaWYgKGltYWdlRWxlbWVudCAmJiBpczxIVE1MSW1hZ2VFbGVtZW50PihpbWFnZUVsZW1lbnQp
KQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oaW1hZ2VFbGVtZW50
KS0+Z2V0T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKTsKKyAgICByZXR1cm4gSW50U2l6ZSgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCmluZGV4IDgyY2M3NDE5ZmUuLmVhYzg3Y2QzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oCkBAIC03OCw2ICs3OCwxMyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzRWRpdGFibGVJbWFnZSgpIGNvbnN0OwogCisgICAgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdl
ZCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpbWFnZUNoYW5nZWQoaW1hZ2VSZXNvdXJjZSgp
LmltYWdlUHRyKCkpOworICAgIH0KKworICAgIEludFNpemUgZ2V0T3ZlcnJpZGRlbkludHJpbnNp
Y1NpemUoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkg
b3ZlcnJpZGU7CiAKQEAgLTk1LDExICsxMDIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0
KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGltYWdlQ2hhbmdlZChpbWFnZVJlc291cmNlKCkuaW1hZ2VQdHIoKSk7
Ci0gICAgfQotCiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVySW1hZ2UiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDNlNTY5NDYyODUuLjU1MTU4ZmE5MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMzQ1LDcg
KzM0NSw4IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6OnNldE5lZWRzTGF5b3V0SWZOZWVkZWRBZnRl
ckludHJpbnNpY1NpemVDaGFuZ2UoKQogdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVj
dFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIs
IEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBkb3VibGUmIGludHJpbnNpY1JhdGlvKSBjb25z
dAogewogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNTaXplOwotICAgIGlmIChjb250ZW50UmVuZGVy
ZXIpIHsKKyAgICBJbnRTaXplIG92ZXJyaWRkZW5JbnRyaW5zaWNTaXplID0gaXM8UmVuZGVySW1h
Z2U+KCp0aGlzKSA/IGRvd25jYXN0PFJlbmRlckltYWdlPigqdGhpcykuZ2V0T3ZlcnJpZGRlbklu
dHJpbnNpY1NpemUoKSA6IEludFNpemUoKTsKKyAgICBpZiAoY29udGVudFJlbmRlcmVyICYmIG92
ZXJyaWRkZW5JbnRyaW5zaWNTaXplLmlzRW1wdHkoKSkgewogICAgICAgICBjb250ZW50UmVuZGVy
ZXItPmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKGludHJpbnNpY1NpemUsIGludHJp
bnNpY1JhdGlvKTsKIAogICAgICAgICAvLyBIYW5kbGUgem9vbSAmIHZlcnRpY2FsIHdyaXRpbmcg
bW9kZXMgaGVyZSwgYXMgdGhlIGVtYmVkZGVkIGRvY3VtZW50IGRvZXNuJ3Qga25vdyBhYm91dCB0
aGVtLgpAQCAtNDIzLDcgKzQyNCw3IEBAIExheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OnJlcGxh
Y2VkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKIHZvaWQgUmVu
ZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYg
aW50cmluc2ljU2l6ZSwgZG91YmxlJiBpbnRyaW5zaWNSYXRpbykgY29uc3QKIHsKICAgICAvLyBJ
ZiB0aGVyZSdzIGFuIGVtYmVkZGVkQ29udGVudEJveCgpIG9mIGEgcmVtb3RlLCByZWZlcmVuY2Vk
IGRvY3VtZW50IGF2YWlsYWJsZSwgdGhpcyBjb2RlLXBhdGggc2hvdWxkIG5ldmVyIGJlIHVzZWQu
Ci0gICAgQVNTRVJUKCFlbWJlZGRlZENvbnRlbnRCb3goKSk7CisgICAgQVNTRVJUKCFlbWJlZGRl
ZENvbnRlbnRCb3goKSB8fCAoaXM8UmVuZGVySW1hZ2U+KCp0aGlzKSAmJiAhZG93bmNhc3Q8UmVu
ZGVySW1hZ2U+KCp0aGlzKS5nZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgpLmlzRW1wdHkoKSkp
OwogICAgIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUoaW50cmluc2ljTG9naWNhbFdpZHRoKCks
IGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7CiAKICAgICAvLyBGaWd1cmUgb3V0IGlmIHdlIG5l
ZWQgdG8gY29tcHV0ZSBhbiBpbnRyaW5zaWMgcmF0aW8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZGVvLmNwcAppbmRleCAyZWVkOWM0NWIyLi5lYmYxZjFmZjFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CiAKQEAgLTEx
Miw2ICsxMTMsOSBAQCBib29sIFJlbmRlclZpZGVvOjp1cGRhdGVJbnRyaW5zaWNTaXplKCkKICAg
ICAKIExheW91dFNpemUgUmVuZGVyVmlkZW86OmNhbGN1bGF0ZUludHJpbnNpY1NpemUoKQogewor
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmludHJpbnNp
Y1NpemVBdHRyaWJ1dGVFbmFibGVkKCkgJiYgIXZpZGVvRWxlbWVudCgpLmdldE92ZXJyaWRkZW5J
bnRyaW5zaWNTaXplKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZSh2aWRl
b0VsZW1lbnQoKS5nZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgpKTsKKwogICAgIC8vIFNwZWMg
dGV4dCBmcm9tIDQuOC42CiAgICAgLy8KICAgICAvLyBUaGUgaW50cmluc2ljIHdpZHRoIG9mIGEg
dmlkZW8gZWxlbWVudCdzIHBsYXliYWNrIGFyZWEgaXMgdGhlIGludHJpbnNpYyB3aWR0aCAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggOGUyNWM2OGE1My4uYTAzZGRl
MzE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTUzLDExICs1
MywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgZmluYWw7CiAK
KyAgICB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkgZmluYWw7CisKIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIG1lZGlhRWxlbWVudCgp
IGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIGZpbmFs
OwogICAgIExheW91dFNpemUgY2FsY3VsYXRlSW50cmluc2ljU2l6ZSgpOwogICAgIGJvb2wgdXBk
YXRlSW50cmluc2ljU2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbAppbmRleCBkMmEzYmZkYWE0Li45NDEzNDBkZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTcwMiw2ICs3MDIsMTQgQEAgQW5pbWF0ZWRJbWFnZUFz
eW5jRGVjb2RpbmdFbmFibGVkOgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQog
CitJbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0
VmFsdWU6IHRydWUKKyAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMKKyAg
aHVtYW5SZWFkYWJsZU5hbWU6ICJpbnRyaW5zaWNzaXplIGF0dHJpYnV0ZSIKKyAgaHVtYW5SZWFk
YWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBpbnRyaW5zaWNzaXplIGF0
dHJpYnV0ZSIKKyAgY2F0ZWdvcnk6IGludGVybmFsCisKIEN1c3RvbUVsZW1lbnRzRW5hYmxlZDoK
ICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmlu
ZGV4IDdlMmQ5ODljMmMuLjkzNWE2NDgyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAtMTUz
LDYgKzE1Myw3IEBACiAjZGVmaW5lIFdlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
UHJlZmVyZW5jZUtleSBAIldlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIgogI2Rl
ZmluZSBXZWJLaXRMYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAi
V2ViS2l0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkIgogI2RlZmluZSBXZWJLaXRBbmlt
YXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QW5pbWF0
ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkIgorI2RlZmluZSBXZWJLaXRJbnRyaW5zaWNTaXpl
QXR0cmlidXRlRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRJbnRyaW5zaWNTaXplQXR0cmli
dXRlRW5hYmxlZCIKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAjZGVmaW5lIFdlYktpdEF1ZGlvU2Vz
c2lvbkNhdGVnb3J5T3ZlcnJpZGUgQCJXZWJLaXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRl
IgogI2RlZmluZSBXZWJLaXRBVktpdEVuYWJsZWQgQCJXZWJLaXRBVktpdEVuYWJsZWQiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRl
eCA5ZGE2MDBhNzdkLi42Y2Q5NTdjZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTUxOCw2ICs1MTgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICBXZWJLaXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkUHJl
ZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJL
aXRBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAorICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEludHJpbnNpY1NpemVBdHRy
aWJ1dGVFbmFibGVkUHJlZmVyZW5jZUtleSwKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OnN0YXRpY19jYXN0PHVpbnQzMl90
PihGcmFtZUZsYXR0ZW5pbmc6OkZ1bGx5RW5hYmxlZCldLCBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdQ
cmVmZXJlbmNlS2V5LAogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDMzNTZlZDk0MDcuLmViODNj
NTQ2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtNjAxLDYgKzYwMSw3IEBAIGV4dGVybiBOU1N0cmlu
ZyAqV2ViUHJlZmVyZW5jZXNDYWNoZU1vZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIFdF
QktJVF9ERVBSCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBDU1NPTVZpZXdTY3JvbGxpbmdB
UElFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgbGFyZ2VJbWFnZUFzeW5jRGVj
b2RpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYW5pbWF0ZWRJbWFnZUFz
eW5jRGVjb2RpbmdFbmFibGVkOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgSW50cmluc2lj
U2l6ZUF0dHJpYnV0ZUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBqYXZhU2Ny
aXB0TWFya3VwRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIG1lZGlhRGF0YUxv
YWRzQXV0b21hdGljYWxseTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGF0dGFjaG1lbnRF
bGVtZW50RW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQppbmRleCBjMTYwNjA1ZWI4Li5lNWMwMzM3OWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zMjE2LDYgKzMyMTYsNyBAQCBzdGF0aWMgYm9vbCBu
ZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiAKICAgICBzZXR0aW5ncy5zZXRMYXJn
ZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGxhcmdlSW1hZ2VBc3luY0Rl
Y29kaW5nRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLnNldEFuaW1hdGVkSW1hZ2VBc3luY0RlY29k
aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgYW5pbWF0ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVk
XSk7CisgICAgc2V0dGluZ3Muc2V0SW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWQoW3ByZWZl
cmVuY2VzIEludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0
TWVkaWFDYXBhYmlsaXRpZXNFbmFibGVkKFtwcmVmZXJlbmNlcyBtZWRpYUNhcGFiaWxpdGllc0Vu
YWJsZWRdKTsKIAogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c2V0U2VydmVyVGltaW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgc2VydmVyVGltaW5nRW5hYmxlZF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJmYWNlcy9JV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmlkbCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ludGVyZmFjZXMv
SVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKaW5kZXggZWQ4YjFjY2FhOS4uYTBjM2RjMGY1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmlkbAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2Vz
L0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCkBAIC0yNDAsNCArMjQwLDYgQEAgaW50ZXJmYWNl
IElXZWJQcmVmZXJlbmNlc1ByaXZhdGU3IDogSVdlYlByZWZlcmVuY2VzUHJpdmF0ZTYKICAgICBI
UkVTVUxUIHNldENyb3NzT3JpZ2luV2luZG93UG9saWN5U3VwcG9ydEVuYWJsZWQoW2luXSBCT09M
IGVuYWJsZWQpOwogICAgIEhSRVNVTFQgcmVzaXplT2JzZXJ2ZXJFbmFibGVkKFtvdXQsIHJldHZh
bF0gQk9PTCopOwogICAgIEhSRVNVTFQgc2V0UmVzaXplT2JzZXJ2ZXJFbmFibGVkKFtpbl0gQk9P
TCBlbmFibGVkKTsKKyAgICBIUkVTVUxUIGludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKFtv
dXQsIHJldHZhbF0gQk9PTCopOworICAgIEhSRVNVTFQgc2V0SW50cmluc2ljU2l6ZUF0dHJpYnV0
ZUVuYWJsZWQoW2luXSBCT09MIGVuYWJsZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCA0MTNhNmZkZjI5Li4yMjZk
OWVhYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaApAQCAtMjA3LDMgKzIwNyw1IEBACiAjZGVmaW5lIFdlYktpdENTU09NVmll
d1Njcm9sbGluZ0FQSUVuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRDU1NPTVZpZXdTY3JvbGxp
bmdBUElFbmFibGVkIgogCiAjZGVmaW5lIFdlYktpdFJlc2l6ZU9ic2VydmVyRW5hYmxlZFByZWZl
cmVuY2VLZXkgIldlYktpdFJlc2l6ZU9ic2VydmVyRW5hYmxlZCIKKworI2RlZmluZSBXZWJLaXRJ
bnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdEludHJpbnNp
Y1NpemVBdHRyaWJ1dGVFbmFibGVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwCmluZGV4IDkwMjNlM2Y0MTUuLmVlN2Y3NGM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTMzMSw2ICszMzEsOCBAQCB2b2lkIFdl
YlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKIAogICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRSZXNpemVPYnNlcnZlckVuYWJsZWRQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAorICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRJbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworCiAgICAgZGVmYXVsdFNldHRpbmdzID0g
ZGVmYXVsdHM7CiB9CiAKQEAgLTIwNDksNiArMjA1MSwyMCBAQCBIUkVTVUxUIFdlYlByZWZlcmVu
Y2VzOjpzZXRDcm9zc09yaWdpbldpbmRvd1BvbGljeVN1cHBvcnRFbmFibGVkKEJPT0wpCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmludHJpbnNpY1NpemVB
dHRyaWJ1dGVFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCit7CisgICAgaWYgKCFlbmFibGVk
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9y
S2V5KFdlYktpdEludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkUHJlZmVyZW5jZUtleSk7Cisg
ICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEludHJpbnNp
Y1NpemVBdHRyaWJ1dGVFbmFibGVkKEJPT0wgZW5hYmxlZCkKK3sKKyAgICBzZXRCb29sVmFsdWUo
V2ViS2l0SW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVk
KTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0TW9k
ZXJuTWVkaWFDb250cm9sc0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewogICAgIHNldEJvb2xWYWx1
ZShXZWJLaXRNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgKaW5kZXggNmViYTE3YzNl
OC4uNWM3NWM3MDY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJl
ZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5o
CkBAIC0yODUsNiArMjg1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRDcm9zc09yaWdpbldpbmRvd1BvbGljeVN1cHBvcnRFbmFibGVkKEJPT0wp
OwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXNpemVPYnNlcnZlckVu
YWJsZWQoX091dF8gQk9PTCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRSZXNpemVPYnNlcnZlckVuYWJsZWQoQk9PTCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKF9PdXRfIEJPT0wq
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0SW50cmluc2ljU2l6
ZUF0dHJpYnV0ZUVuYWJsZWQoQk9PTCk7CiAKICAgICAvLyBXZWJQcmVmZXJlbmNlcwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDYzMTI1M2E0OWMuLjU5MmQ2ZjQyOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC01Mjk4LDYgKzUyOTgsMTEgQEAgSFJF
U1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm4gaHI7CiAgICAgc2V0dGluZ3Muc2V0Q1NTT01W
aWV3U2Nyb2xsaW5nQVBJRW5hYmxlZCghIWVuYWJsZWQpOwogCisgICAgaHIgPSBwcmVmc1ByaXZh
dGUtPkludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKCZlbmFibGVkKTsKKyAgICBpZiAoRkFJ
TEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGhyOworICAgIHNldHRpbmdzLnNldEludHJpbnNpY1Np
emVBdHRyaWJ1dGVFbmFibGVkKCEhZW5hYmxlZCk7CisKICAgICBociA9IHByZWZlcmVuY2VzLT5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAg
ICAgICAgcmV0dXJuIGhyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCmluZGV4IDc3
YTRhZmY3NzkuLjM0Y2FiZmJmMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RPcHRpb25zLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAK
QEAgLTExMyw2ICsxMTMsOCBAQCBUZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpz
dHJpbmcmIHBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGFic29sdQogICAgICAgICAgICAg
YWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2
YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZXhwZXJpbWVudGFsOlJlc2l6ZU9ic2Vy
dmVyRW5hYmxlZCIpCiAgICAgICAgICAgICBlbmFibGVSZXNpemVPYnNlcnZlciA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiaW50
ZXJuYWw6SW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWQiKQorICAgICAgICAgICAgaW50cmlu
c2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWQgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFs
dWUpOwogICAgICAgICBwYWlyU3RhcnQgPSBwYWlyRW5kICsgMTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdE9wdGlvbnMuaAppbmRleCBkODg1ZWRiZGViLi4zNGZjZDU5OTg0IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RydWN0IFRlc3RPcHRp
b25zIHsKICAgICBib29sIGVuYWJsZUNTU0xvZ2ljYWwgeyBmYWxzZSB9OwogICAgIGJvb2wgYWRD
bGlja0F0dHJpYnV0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBlbmFibGVSZXNpemVP
YnNlcnZlciB7IGZhbHNlIH07CisgICAgYm9vbCBpbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxl
ZCB7IGZhbHNlIH07CiAgICAgc3RkOjpzdHJpbmcganNjT3B0aW9uczsKIAogICAgIFRlc3RPcHRp
b25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBhYnNv
bHV0ZVBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmlu
ZGV4IDY1ODcyNTNlOTQuLjI1ODM5ODM3YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KQEAgLTEwMjAsNiArMTAyMCw3IEBAIHN0YXRpYyB2b2lkIHNldFdl
YlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAg
ICAgcHJlZmVyZW5jZXMuQ1NTTG9naWNhbEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNTU0xvZ2lj
YWw7CiAgICAgcHJlZmVyZW5jZXMuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IG9wdGlvbnMu
YWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZDsKICAgICBwcmVmZXJlbmNlcy5yZXNpemVPYnNlcnZl
ckVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVJlc2l6ZU9ic2VydmVyOworICAgIHByZWZlcmVuY2Vz
LmludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkID0gb3B0aW9ucy5pbnRyaW5zaWNTaXplQXR0
cmlidXRlRW5hYmxlZDsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJlbmRlclRyZWUgc3Rh
cnR1cC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370842</attachid>
            <date>2019-05-29 07:18:02 -0700</date>
            <delta_ts>2019-05-29 07:18:02 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>IS_003.diff</filename>
            <type>text/plain</type>
            <size>32135</size>
            <attacher name="cathiechen">cathiechen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ3ZGMzN2M4ODUuLjIyY2VjN2IwM2YgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtODk1LDcgKzg5NSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVsZW1lbnQvCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvdGhlLWltZy1lbGVtZW50L2ludmFsaWQtc3JjLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUt
aW1nLWVsZW1lbnQvcmVsZXZhbnQtbXV0YXRpb25zLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUt
b2JqZWN0LWVsZW1lbnQvb2JqZWN0LWV2ZW50cy5odG1sIFsgU2tpcCBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLXZp
ZGVvLWVsZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRyaW5zaWNzaXplLXdpdGhvdXQtdW5zaXplZC1t
ZWRpYS50ZW50YXRpdmUuaHR0cHMuc3ViLmh0bWwgWyBTa2lwIF0KIAogIyBAc3VwcG9ydHMgVzND
IEZhaWx1cmVzCiB3ZWJraXQub3JnL2IvMTM3NTY4IGNzczMvY29uZGl0aW9uYWwvdzNjL2F0LXN1
cHBvcnRzLTAxNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2ljc2l6ZS13
aXRoLXJlc3BvbnNpdmUtaW1hZ2VzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2ljc2l6ZS13aXRo
LXJlc3BvbnNpdmUtaW1hZ2VzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggMDdjNTZmMGMx
ZC4uYzA0ZjVhNzk1NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1pbWctZWxl
bWVudC9pbnRyaW5zaWNzaXplL2ludHJpbnNpY3NpemUtd2l0aC1yZXNwb25zaXZlLWltYWdlcy50
ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVs
ZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRyaW5zaWNzaXplLXdpdGgtcmVzcG9uc2l2ZS1pbWFnZXMu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwxMCBAQAogCiAKLUZBSUwgVGVzdCBp
bWFnZSAvaW1hZ2VzL2dyZWVuLnN2ZyB3aXRoIG5vIHNwZWNpZmllZCBzaXplcywgd2lkdGgsIG9y
IGhlaWdodCBhc3NlcnRfZXF1YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAzMwotRkFJ
TCBUZXN0IGltYWdlIC9pbWFnZXMvZ3JlZW4uc3ZnIHdpdGggd2lkdGggPSA4MDAsIG5vIHNwZWNp
ZmllZCBzaXplcywgb3IgaGVpZ2h0IGFzc2VydF9lcXVhbHM6IGhlaWdodCBleHBlY3RlZCAxMDAw
IGJ1dCBnb3QgNDAwCi1GQUlMIFRlc3QgaW1hZ2UgL2ltYWdlcy9ncmVlbi5zdmcgd2l0aCB3aWR0
aCA9IDgwMCwgaGVpZ2h0ID0gODAwLCBhbmQgbm8gc3BlY2lmaWVkIHNpemVzIGFzc2VydF9lcXVh
bHM6IG5hdHVyYWxXaWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCA4MDAKLUZBSUwgVGVzdCBpbWFn
ZSAvaW1hZ2VzL2dyZWVuLnBuZyB3aXRoIG5vIHNwZWNpZmllZCBzaXplcywgd2lkdGgsIG9yIGhl
aWdodCBhc3NlcnRfZXF1YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAzMwotRkFJTCBU
ZXN0IGltYWdlIC9pbWFnZXMvZ3JlZW4ucG5nIHdpdGggd2lkdGggPSA4MDAsIG5vIHNwZWNpZmll
ZCBzaXplcywgb3IgaGVpZ2h0IGFzc2VydF9lcXVhbHM6IGhlaWdodCBleHBlY3RlZCAxMDAwIGJ1
dCBnb3QgNDAwCi1GQUlMIFRlc3QgaW1hZ2UgL2ltYWdlcy9ncmVlbi5wbmcgd2l0aCB3aWR0aCA9
IDgwMCwgaGVpZ2h0ID0gODAwLCBhbmQgbm8gc3BlY2lmaWVkIHNpemVzIGFzc2VydF9lcXVhbHM6
IG5hdHVyYWxXaWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAxMDAKLUZBSUwgVGVzdCBpbWFnZSAo
MzIgeCAzMikgd2l0aCBzaXplcyA9IDEwMCBhbmQgc3Jjc2V0IGRlc2NyaXB0b3IgPSAzMncgYXNz
ZXJ0X2VxdWFsczogaGVpZ2h0IGV4cGVjdGVkIDEyNSBidXQgZ290IDEwMAorUEFTUyBUZXN0IGlt
YWdlIC9pbWFnZXMvZ3JlZW4uc3ZnIHdpdGggbm8gc3BlY2lmaWVkIHNpemVzLCB3aWR0aCwgb3Ig
aGVpZ2h0IAorUEFTUyBUZXN0IGltYWdlIC9pbWFnZXMvZ3JlZW4uc3ZnIHdpdGggd2lkdGggPSA4
MDAsIG5vIHNwZWNpZmllZCBzaXplcywgb3IgaGVpZ2h0IAorUEFTUyBUZXN0IGltYWdlIC9pbWFn
ZXMvZ3JlZW4uc3ZnIHdpdGggd2lkdGggPSA4MDAsIGhlaWdodCA9IDgwMCwgYW5kIG5vIHNwZWNp
ZmllZCBzaXplcyAKK1BBU1MgVGVzdCBpbWFnZSAvaW1hZ2VzL2dyZWVuLnBuZyB3aXRoIG5vIHNw
ZWNpZmllZCBzaXplcywgd2lkdGgsIG9yIGhlaWdodCAKK1BBU1MgVGVzdCBpbWFnZSAvaW1hZ2Vz
L2dyZWVuLnBuZyB3aXRoIHdpZHRoID0gODAwLCBubyBzcGVjaWZpZWQgc2l6ZXMsIG9yIGhlaWdo
dCAKK1BBU1MgVGVzdCBpbWFnZSAvaW1hZ2VzL2dyZWVuLnBuZyB3aXRoIHdpZHRoID0gODAwLCBo
ZWlnaHQgPSA4MDAsIGFuZCBubyBzcGVjaWZpZWQgc2l6ZXMgCitGQUlMIFRlc3QgaW1hZ2UgKDMy
IHggMzIpIHdpdGggc2l6ZXMgPSAxMDAgYW5kIHNyY3NldCBkZXNjcmlwdG9yID0gMzJ3IGFzc2Vy
dF9lcXVhbHM6IHdpZHRoIGV4cGVjdGVkIDEwMCBidXQgZ290IDQwMAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2lj
c2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEudGVudGF0aXZlLmh0dHBzLnN1Yi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50
cmluc2ljc2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEudGVudGF0aXZlLmh0dHBzLnN1Yi1leHBl
Y3RlZC50eHQKaW5kZXggZWEyZTk4NGM2My4uMWVlNGJiN2Q3OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L3RoZS1pbWctZWxlbWVudC9pbnRyaW5zaWNzaXplL2ludHJpbnNpY3NpemUt
d2l0aG91dC11bnNpemVkLW1lZGlhLnRlbnRhdGl2ZS5odHRwcy5zdWItZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVsZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRy
aW5zaWNzaXplLXdpdGhvdXQtdW5zaXplZC1tZWRpYS50ZW50YXRpdmUuaHR0cHMuc3ViLWV4cGVj
dGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKLSAgCisgCiAKLUZBSUwgVGVzdCBpbnRyaW5zaWNzaXpl
IGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2VzL2dyZWVuLnN2ZyBhc3NlcnRfZXF1
YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAxMDAKLUZBSUwgVGVzdCBpbnRyaW5zaWNz
aXplIGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2VzL2dyZWVuLnBuZyBhc3NlcnRf
ZXF1YWxzOiB3aWR0aCBleHBlY3RlZCA0MDAgYnV0IGdvdCAxMDAKK1BBU1MgVGVzdCBpbnRyaW5z
aWNzaXplIGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2VzL2dyZWVuLnN2ZyAKK1BB
U1MgVGVzdCBpbnRyaW5zaWNzaXplIGZvciBodG1sIGltYWdlIGVsZW1lbnQsIHNyYz0vaW1hZ2Vz
L2dyZWVuLnBuZyAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1l
bGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2ljc2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEu
dGVudGF0aXZlLmh0dHBzLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhl
LXZpZGVvLWVsZW1lbnQvaW50cmluc2ljc2l6ZS9pbnRyaW5zaWNzaXplLXdpdGhvdXQtdW5zaXpl
ZC1tZWRpYS50ZW50YXRpdmUuaHR0cHMuc3ViLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwLi4zZTZkN2ZjODc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1lbGVtZW50L2ludHJpbnNpY3NpemUvaW50cmluc2lj
c2l6ZS13aXRob3V0LXVuc2l6ZWQtbWVkaWEudGVudGF0aXZlLmh0dHBzLnN1Yi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFTUyBUZXN0IGludHJpbnNpY3NpemUgZm9yIGh0bWwg
dmlkZW8gZWxlbWVudCAKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgppbmRleCAxZTlhODI2NTU5Li5iNjRjM2E3M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTUwLDYgKzE1MCw3IEBAIGluY3JlbWVudGFsCiBpbmRl
dGVybWluYXRlCiBpbnB1dG1vZGUKIGludGVncml0eQoraW50cmluc2ljc2l6ZQogaXMKIGlzbWFw
CiBpdGVtaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDVj
ZGM3MDkzOTkuLjdjNGFiYTU2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcApAQCAtMjQyLDcgKzI0MiwxNCBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgogI2Vu
ZGlmCiAgICAgfSBlbHNlIGlmIChuYW1lID09IHhfYXBwbGVfZWRpdGFibGVfaW1hZ2VBdHRyKQog
ICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdlKCk7Ci0gICAgZWxzZSB7CisgICAgZWxzZSBpZiAo
bmFtZSA9PSBpbnRyaW5zaWNzaXplQXR0ciAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLmludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKCkpIHsKKyAgICAgICAg
YXV0byBuZXdTaXplID0gcGFyc2VJbnRyaW5zaWNTaXplQXR0cmlidXRlKHZhbHVlKTsKKyAgICAg
ICAgaWYgKG5ld1NpemUgJiYgbV9vdmVycmlkZGVuSW50cmluc2ljU2l6ZSAhPSBuZXdTaXplLnZh
bHVlKCkpIHsKKyAgICAgICAgICAgIG1fb3ZlcnJpZGRlbkludHJpbnNpY1NpemUgPSBuZXdTaXpl
LnZhbHVlKCk7CisgICAgICAgICAgICBpZiAoaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKCkpKQor
ICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIoKSkuaW50cmlu
c2ljU2l6ZUNoYW5nZWQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChu
YW1lID09IG5hbWVBdHRyKSB7CiAgICAgICAgICAgICBib29sIHdpbGxIYXZlTmFtZSA9ICF2YWx1
ZS5pc051bGwoKTsKICAgICAgICAgICAgIGlmIChtX2hhZE5hbWVCZWZvcmVBdHRyaWJ1dGVDaGFu
Z2VkICE9IHdpbGxIYXZlTmFtZSAmJiBpc0Nvbm5lY3RlZCgpICYmICFpc0luU2hhZG93VHJlZSgp
ICYmIGlzPEhUTUxEb2N1bWVudD4oZG9jdW1lbnQoKSkpIHsKQEAgLTUxMCw2ICs1MTcsOSBAQCB1
bnNpZ25lZCBIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMpCiAKIGludCBIVE1MSW1hZ2VFbGVtZW50OjpuYXR1cmFsV2lkdGgoKSBjb25zdAogewor
ICAgIGlmICghbV9vdmVycmlkZGVuSW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBtX292ZXJyaWRkZW5JbnRyaW5zaWNTaXplLndpZHRoKCk7CisKICAgICBpZiAoIW1faW1h
Z2VMb2FkZXIuaW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTUxOCw2ICs1MjgsOSBA
QCBpbnQgSFRNTEltYWdlRWxlbWVudDo6bmF0dXJhbFdpZHRoKCkgY29uc3QKIAogaW50IEhUTUxJ
bWFnZUVsZW1lbnQ6Om5hdHVyYWxIZWlnaHQoKSBjb25zdAogeworICAgIGlmKCFtX292ZXJyaWRk
ZW5JbnRyaW5zaWNTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG1fb3ZlcnJpZGRlbklu
dHJpbnNpY1NpemUuaGVpZ2h0KCk7CisKICAgICBpZiAoIW1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgK
aW5kZXggMTg2OTg4MGRmMy4uZmQzMDgyNWZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgRWRpdGFibGVJbWFnZVJlZmVyZW5j
ZTsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudDsKIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsK
IGNsYXNzIEhUTUxNYXBFbGVtZW50OworY2xhc3MgSW50U2l6ZTsKIAogc3RydWN0IEltYWdlQ2Fu
ZGlkYXRlOwogCkBAIC04NCw2ICs4NSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0V2lkdGgodW5zaWduZWQpOwogCisgICAgSW50U2l6ZSBnZXRPdmVycmlkZGVuSW50
cmluc2ljU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGRlbkludHJpbnNpY1NpemU7IH0K
KwogICAgIFdFQkNPUkVfRVhQT1JUIGludCB4KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IHkoKSBjb25zdDsKIApAQCAtMTkxLDYgKzE5NCw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fcGVuZGluZ0Nsb25lZEF0dGFjaG1lbnRJRDsKICNlbmRpZgogCisgICAgSW50U2l6ZSBtX292
ZXJyaWRkZW5JbnRyaW5zaWNTaXplOworCiAgICAgZnJpZW5kIGNsYXNzIEhUTUxQaWN0dXJlRWxl
bWVudDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCmluZGV4
IDAzZDZlMmMwNGIuLjQxMGNjNGNhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmlkbApAQCAtNDIsNiArNDIsOSBAQAogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWRd
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgZGVjb2Rpbmc7CiAKKyAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vV0lDRy9pbnRyaW5zaWNzaXplLWF0dHJpYnV0ZQorICAgIFtFbmFibGVk
QXRSdW50aW1lPUludHJpbnNpY1NpemVBdHRyaWJ1dGUsIENFUmVhY3Rpb25zLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGludHJpbnNpY1NpemU7CisKICAgICBbQ29uZGl0aW9uYWw9QVRU
QUNITUVOVF9FTEVNRU5ULCBFbmFibGVkQXRSdW50aW1lPUF0dGFjaG1lbnRFbGVtZW50XSByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF0dGFjaG1lbnRJZGVudGlmaWVyOwogCiAgICAgLy8g
RXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXgg
YTZmMmY4MzViYi4uZDJhZDIxZjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKKyNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAg
LTEzMyw2ICsxMzQsMTMgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAgICAgICAgICAgIGlm
IChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgcmVu
ZGVyZXItPmltYWdlUmVzb3VyY2UoKS5zZXRDYWNoZWRJbWFnZShudWxscHRyKTsKICAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAobmFtZSA9PSBpbnRyaW5zaWNzaXplQXR0ciAmJiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFi
bGVkKCkpIHsKKyAgICAgICAgYXV0byBuZXdTaXplID0gcGFyc2VJbnRyaW5zaWNTaXplQXR0cmli
dXRlKHZhbHVlKTsKKyAgICAgICAgaWYgKG5ld1NpemUgJiYgbV9vdmVycmlkZGVuSW50cmluc2lj
U2l6ZSAhPSBuZXdTaXplLnZhbHVlKCkpIHsKKyAgICAgICAgICAgIG1fb3ZlcnJpZGRlbkludHJp
bnNpY1NpemUgPSBuZXdTaXplLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkK
KyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5pbnRyaW5zaWNTaXplQ2hhbmdlZCgpOworICAg
ICAgICB9CiAgICAgfQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAg
ZWxzZSBpZiAobmFtZSA9PSB3ZWJraXR3aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxlZEF0dHIp
CkBAIC0yMDEsNiArMjA5LDggQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRSZXF1ZXN0
RnVsbHNjcmVlbigpCiAKIHVuc2lnbmVkIEhUTUxWaWRlb0VsZW1lbnQ6OnZpZGVvV2lkdGgoKSBj
b25zdAogeworICAgIGlmIChtX292ZXJyaWRkZW5JbnRyaW5zaWNTaXplLndpZHRoKCkgPiAwKQor
ICAgICAgICByZXR1cm4gbV9vdmVycmlkZGVuSW50cmluc2ljU2l6ZS53aWR0aCgpOwogICAgIGlm
ICghcGxheWVyKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjbGFtcFRvVW5zaWdu
ZWQocGxheWVyKCktPm5hdHVyYWxTaXplKCkud2lkdGgoKSk7CkBAIC0yMDgsNiArMjE4LDggQEAg
dW5zaWduZWQgSFRNTFZpZGVvRWxlbWVudDo6dmlkZW9XaWR0aCgpIGNvbnN0CiAKIHVuc2lnbmVk
IEhUTUxWaWRlb0VsZW1lbnQ6OnZpZGVvSGVpZ2h0KCkgY29uc3QKIHsKKyAgICBpZiAobV9vdmVy
cmlkZGVuSW50cmluc2ljU2l6ZS5oZWlnaHQoKSA+IDApCisgICAgICAgIHJldHVybiBtX292ZXJy
aWRkZW5JbnRyaW5zaWNTaXplLmhlaWdodCgpOwogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHJldHVybiBjbGFtcFRvVW5zaWduZWQocGxheWVyKCktPm5hdHVyYWxT
aXplKCkuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRl
eCBkNGJhMzcwYjQyLi41Njk1MjNkOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBI
VE1MSW1hZ2VMb2FkZXI7CitjbGFzcyBJbnRTaXplOwogY2xhc3MgUmVuZGVyVmlkZW87CiAKIGNs
YXNzIEhUTUxWaWRlb0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTE1lZGlhRWxlbWVudCB7CkBA
IC05NCw2ICs5NSw4IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclZpZGVvKiByZW5kZXJlcigpIGNv
bnN0OwogCisgICAgSW50U2l6ZSBnZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb3ZlcnJpZGRlbkludHJpbnNpY1NpemU7IH0KKwogcHJpdmF0ZToKICAgICBIVE1M
VmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyKTsKIApAQCAtMTIzLDYgKzEyNiw4IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25l
ZCBtX2xhc3RSZXBvcnRlZFZpZGVvV2lkdGggeyAwIH07CiAgICAgdW5zaWduZWQgbV9sYXN0UmVw
b3J0ZWRWaWRlb0hlaWdodCB7IDAgfTsKKworICAgIEludFNpemUgbV9vdmVycmlkZGVuSW50cmlu
c2ljU2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaWRsCmluZGV4IDFmOTMxNjg1YmMuLjE4NmViYjNlMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbApAQCAtMzMsNiArMzMsOSBAQAog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHZpZGVvSGVpZ2h0OwogICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0cmluZyBw
b3N0ZXI7CiAKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vV0lDRy9pbnRyaW5zaWNzaXplLWF0
dHJpYnV0ZQorICAgIFtFbmFibGVkQXRSdW50aW1lPUludHJpbnNpY1NpemVBdHRyaWJ1dGUsIENF
UmVhY3Rpb25zLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGludHJpbnNpY1NpemU7CisK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBw
bGF5c0lubGluZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRTdXBwb3J0
c0Z1bGxzY3JlZW47CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0RGlzcGxh
eWluZ0Z1bGxzY3JlZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwCmluZGV4IDM5OTFlNzU0NjEuLjM1YTcwMjQyZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC00NzYsNCArNDc2
LDI1IEBAIEF0b21pY1N0cmluZyBwYXJzZUhUTUxIYXNoTmFtZVJlZmVyZW5jZShTdHJpbmdWaWV3
IHVzZW1hcCkKICAgICByZXR1cm4gdXNlbWFwLnN1YnN0cmluZyhudW1iZXJTaWduSW5kZXggKyAx
KS50b0F0b21pY1N0cmluZygpOwogfQogCitFeHBlY3RlZDxJbnRTaXplLCBIVE1MSW50ZWdlclBh
cnNpbmdFcnJvcj4gcGFyc2VJbnRyaW5zaWNTaXplQXR0cmlidXRlKFN0cmluZ1ZpZXcgaW5wdXQp
Cit7CisgICAgYXV0byBzcGxpdFJlc3VsdCA9IGlucHV0LnNwbGl0KCd4Jyk7CisgICAgYXV0byBp
dCA9IHNwbGl0UmVzdWx0LmJlZ2luKCk7CisgICAgaWYgKGl0ICE9IHNwbGl0UmVzdWx0LmVuZCgp
KSB7CisgICAgICAgIGF1dG8gbmV3V2lkdGggPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIo
Kml0KTsKKyAgICAgICAgaWYgKCFuZXdXaWR0aCkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChXVEZNb3ZlKG5ld1dpZHRoLmVycm9yKCkpKTsKKyAgICAgICAgKytpdDsKKyAgICAg
ICAgaWYgKGl0ICE9IHNwbGl0UmVzdWx0LmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvIG5ld0hl
aWdodCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcigqaXQpOworICAgICAgICAgICAgaWYg
KCFuZXdIZWlnaHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdURk1v
dmUobmV3SGVpZ2h0LmVycm9yKCkpKTsKKyAgICAgICAgICAgICsraXQ7CisgICAgICAgICAgICBp
ZiAoaXQgPT0gc3BsaXRSZXN1bHQuZW5kKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEludFNp
emUobmV3V2lkdGgudmFsdWUoKSwgbmV3SGVpZ2h0LnZhbHVlKCkpOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChIVE1MSW50ZWdlclBhcnNpbmdFcnJvcjo6T3Ro
ZXIpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmgKaW5kZXggNjllODk0ZDEwOC4uMzBmMzU0MmNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlY2ltYWw7CiBjbGFzcyBRdWFsaWZpZWROYW1lOworY2xh
c3MgSW50U2l6ZTsKIAogLy8gU3BhY2UgY2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBIVE1M
IHNwZWNpZmljYXRpb24uCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlz
SFRNTFNwYWNlKENoYXJhY3RlclR5cGUpOwpAQCAtMTcyLDQgKzE3Myw2IEBAIGlubGluZSB1bnNp
Z25lZCBjbGFtcEhUTUxOb25OZWdhdGl2ZUludGVnZXJUb1JhbmdlKFN0cmluZ1ZpZXcgc3RyaW5n
VmFsdWUsIHVuc2lnCiAgICAgcmV0dXJuIG9wdGlvbmFsVmFsdWUuZXJyb3IoKSA9PSBIVE1MSW50
ZWdlclBhcnNpbmdFcnJvcjo6UG9zaXRpdmVPdmVyZmxvdyA/IG1heCA6IGRlZmF1bHRWYWx1ZTsK
IH0KIAorLy8gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvaW50cmluc2ljc2l6ZS1hdHRyaWJ1dGUK
K0V4cGVjdGVkPEludFNpemUsIEhUTUxJbnRlZ2VyUGFyc2luZ0Vycm9yPiBwYXJzZUludHJpbnNp
Y1NpemVBdHRyaWJ1dGUoU3RyaW5nVmlldyBpbnB1dCk7CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IGE0
MGM3NjI0OTIuLjkyMWVlY2YzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCkBAIC0zNTYsNiArMzU2LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBw
YWdlQXRSdWxlU3VwcG9ydEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBdFJ1bGVTdXBw
b3J0RW5hYmxlZDsgfQogICAgIHZvaWQgc2V0UGFnZUF0UnVsZVN1cHBvcnRFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IG1fcGFnZUF0UnVsZVN1cHBvcnRFbmFibGVkID0gaXNFbmFibGVkOyB9Cisg
ICAgYm9vbCBpbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEludHJpbnNpY1Np
emVBdHRyaWJ1dGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faW50cmluc2ljU2l6ZUF0dHJp
YnV0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzJiBzaGFyZWRGZWF0dXJlcygpOwogCkBAIC01MzUsNiArNTM3
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbW91c2VFdmVudHNTaW11bGF0aW9uRW5hYmxlZCB7
IGZhbHNlIH07CiAgICAgT3B0aW9uYWw8Ym9vbD4gbV90b3VjaEV2ZW50c0VuYWJsZWQ7CiAjZW5k
aWYKKyAgICBib29sIG1faW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWQgeyBmYWxzZSB9Owog
CiAgICAgYm9vbCBtX2lzSVRQRGF0YWJhc2VFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aXNJVFBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRW5hYmxlZCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA0ZDZhYTc1N2VhLi4zMTQz
YWY1NTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTE0
MCwxMiArMTQwLDE2IEBAIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsCiAgICAgdXBkYXRlQWx0VGV4
dCgpOwogICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgbV9o
YXNTaGFkb3dDb250cm9scyA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpLmhh
c1NoYWRvd0NvbnRyb2xzKCk7CisgICAgaWYgKCFnZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgp
LmlzRW1wdHkoKSkKKyAgICAgICAgaW50cmluc2ljU2l6ZUNoYW5nZWQoKTsKIH0KIAogUmVuZGVy
SW1hZ2U6OlJlbmRlckltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGRvY3VtZW50
LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQogICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxl
SW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigq
c3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7
CisgICAgaWYgKCFnZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgaW50cmluc2ljU2l6ZUNoYW5nZWQoKTsKIH0KIAogUmVuZGVySW1hZ2U6On5SZW5kZXJJbWFn
ZSgpCkBAIC0yMTgsNyArMjIyLDcgQEAgYm9vbCBSZW5kZXJJbWFnZTo6aXNFZGl0YWJsZUltYWdl
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBkb3duY2FzdDxIVE1M
SW1hZ2VFbGVtZW50PihlbGVtZW50KCkpLT5oYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCk7CiB9
Ci0gICAgCisKIGJvb2wgUmVuZGVySW1hZ2U6OnJlcXVpcmVzTGF5ZXIoKSBjb25zdAogewogICAg
IGlmIChSZW5kZXJSZXBsYWNlZDo6cmVxdWlyZXNMYXllcigpKQpAQCAtMjY3LDcgKzI3MSw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2Us
IGNvbnN0IEludFJlY3QqIHJlY3QpCiAgICAgaWYgKGhhc1Zpc2libGVCb3hEZWNvcmF0aW9ucygp
IHx8IGhhc01hc2soKSB8fCBoYXNTaGFwZU91dHNpZGUoKSkKICAgICAgICAgUmVuZGVyUmVwbGFj
ZWQ6OmltYWdlQ2hhbmdlZChuZXdJbWFnZSwgcmVjdCk7CiAKLSAgICBpZiAobmV3SW1hZ2UgIT0g
aW1hZ2VSZXNvdXJjZSgpLmltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQorICAgIGlmICgobmV3SW1h
Z2UgIT0gaW1hZ2VSZXNvdXJjZSgpLmltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKSAmJiBnZXRPdmVy
cmlkZGVuSW50cmluc2ljU2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGlmICghbV9kaWRJbmNyZW1lbnRWaXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudCkgewpAQCAt
Mjk3LDcgKzMwMSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1h
Z2VQdHIgbmV3SW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiAKIHZvaWQgUmVuZGVySW1hZ2U6
OnVwZGF0ZUludHJpbnNpY1NpemVJZk5lZWRlZChjb25zdCBMYXlvdXRTaXplJiBuZXdTaXplKQog
ewotICAgIGlmIChpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpIHx8ICFtX2ltYWdlUmVz
b3VyY2UtPmNhY2hlZEltYWdlKCkpCisgICAgaWYgKChpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1
cnJlZCgpIHx8ICFtX2ltYWdlUmVzb3VyY2UtPmNhY2hlZEltYWdlKCkpICYmIGdldE92ZXJyaWRk
ZW5JbnRyaW5zaWNTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgc2V0SW50
cmluc2ljU2l6ZShuZXdTaXplKTsKIH0KQEAgLTMyNiw2ICszMzAsMTEgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6cmVwYWludE9yTWFya0ZvckxheW91dChJbWFnZVNpemVDaGFuZ2VUeXBlIGltYWdlU2l6
ZUNoYW5nZSwgY28KICNlbHNlCiAgICAgTGF5b3V0U2l6ZSBuZXdJbnRyaW5zaWNTaXplID0gaW1h
Z2VSZXNvdXJjZSgpLmludHJpbnNpY1NpemUoc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwogI2Vu
ZGlmCisKKyAgICBhdXRvIG92ZXJyaWRkZW5JbnRyaW5zaWNTaXplID0gZ2V0T3ZlcnJpZGRlbklu
dHJpbnNpY1NpemUoKTsKKyAgICBpZiAoIW92ZXJyaWRkZW5JbnRyaW5zaWNTaXplLmlzRW1wdHko
KSkKKyAgICAgICAgbmV3SW50cmluc2ljU2l6ZSA9IExheW91dFNpemUob3ZlcnJpZGRlbkludHJp
bnNpY1NpemUpOworCiAgICAgTGF5b3V0U2l6ZSBvbGRJbnRyaW5zaWNTaXplID0gaW50cmluc2lj
U2l6ZSgpOwogCiAgICAgdXBkYXRlSW50cmluc2ljU2l6ZUlmTmVlZGVkKG5ld0ludHJpbnNpY1Np
emUpOwpAQCAtNzAyLDYgKzcxMSwxMCBAQCBib29sIFJlbmRlckltYWdlOjpjb21wdXRlQmFja2dy
b3VuZElzS25vd25Ub0JlT2JzY3VyZWQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogCiBMYXlv
dXRVbml0IFJlbmRlckltYWdlOjptaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogeworICAg
IGF1dG8gb3ZlcnJpZGRlbkludHJpbnNpY1NpemUgPSBnZXRPdmVycmlkZGVuSW50cmluc2ljU2l6
ZSgpOworICAgIGlmICghb3ZlcnJpZGRlbkludHJpbnNpY1NpemUuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gb3ZlcnJpZGRlbkludHJpbnNpY1NpemUuaGVpZ2h0KCk7CisKICAgICByZXR1cm4g
aW1hZ2VSZXNvdXJjZSgpLmVycm9yT2NjdXJyZWQoKSA/IGludHJpbnNpY1NpemUoKS5oZWlnaHQo
KSA6IDBfbHU7CiB9CiAKQEAgLTgyOCw3ICs4NDEsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpjb21w
dXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRv
dQogICAgICAgICB9CiAgICAgfQogICAgIC8vIERvbid0IGNvbXB1dGUgYW4gaW50cmluc2ljIHJh
dGlvIHRvIHByZXNlcnZlIGhpc3RvcmljYWwgV2ViS2l0IGJlaGF2aW9yIGlmIHdlJ3JlIHBhaW50
aW5nIGFsdCB0ZXh0IGFuZC9vciBhIGJyb2tlbiBpbWFnZS4KLSAgICBpZiAoaW1hZ2VSZXNvdXJj
ZSgpLmVycm9yT2NjdXJyZWQoKSkgeworICAgIGlmIChpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1
cnJlZCgpICYmIGdldE92ZXJyaWRkZW5JbnRyaW5zaWNTaXplKCkuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGludHJpbnNpY1JhdGlvID0gMTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg1MCw0
ICs4NjMsMTIgQEAgUmVuZGVyQm94KiBSZW5kZXJJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94KCkg
Y29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorSW50U2l6ZSBSZW5kZXJJbWFnZTo6Z2V0
T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKSBjb25zdAoreworICAgIGF1dG8qIGltYWdlRWxlbWVu
dCA9IGVsZW1lbnQoKTsKKyAgICBpZiAoaW1hZ2VFbGVtZW50ICYmIGlzPEhUTUxJbWFnZUVsZW1l
bnQ+KGltYWdlRWxlbWVudCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW1hZ2VFbGVt
ZW50PihpbWFnZUVsZW1lbnQpLT5nZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgpOworICAgIHJl
dHVybiBJbnRTaXplKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggODJjYzc0MTlmZS4uZWFjODdjZDNmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTc4LDYgKzc4LDEzIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNFZGl0YWJsZUltYWdlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGlu
dHJpbnNpY1NpemVDaGFuZ2VkKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGltYWdlQ2hhbmdl
ZChpbWFnZVJlc291cmNlKCkuaW1hZ2VQdHIoKSk7CisgICAgfQorCisgICAgSW50U2l6ZSBnZXRP
dmVycmlkZGVuSW50cmluc2ljU2l6ZSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB3
aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIApAQCAtOTUsMTEgKzEwMiw2IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgZmluYWw7
CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgaW50cmluc2ljU2l6ZUNo
YW5nZWQoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaW1hZ2VDaGFuZ2VkKGltYWdlUmVzb3Vy
Y2UoKS5pbWFnZVB0cigpKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJJbWFnZSI7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZDFlMTQ0ZWIz
Zi4uZGJlYjRhNjA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCkBAIC0zNDUsNyArMzQ1LDggQEAgYm9vbCBSZW5kZXJSZXBsYWNlZDo6c2V0TmVlZHNM
YXlvdXRJZk5lZWRlZEFmdGVySW50cmluc2ljU2l6ZUNoYW5nZSgpCiB2b2lkIFJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJCb3gq
IGNvbnRlbnRSZW5kZXJlciwgRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIGRvdWJsZSYgaW50
cmluc2ljUmF0aW8pIGNvbnN0CiB7CiAgICAgRmxvYXRTaXplIGludHJpbnNpY1NpemU7Ci0gICAg
aWYgKGNvbnRlbnRSZW5kZXJlcikgeworICAgIEludFNpemUgb3ZlcnJpZGRlbkludHJpbnNpY1Np
emUgPSBpczxSZW5kZXJJbWFnZT4oKnRoaXMpID8gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCp0aGlz
KS5nZXRPdmVycmlkZGVuSW50cmluc2ljU2l6ZSgpIDogSW50U2l6ZSgpOworICAgIGlmIChjb250
ZW50UmVuZGVyZXIgJiYgb3ZlcnJpZGRlbkludHJpbnNpY1NpemUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGNvbnRlbnRSZW5kZXJlci0+Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oaW50
cmluc2ljU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAgICAgICAgIC8vIEhhbmRsZSB6b29tICYg
dmVydGljYWwgd3JpdGluZyBtb2RlcyBoZXJlLCBhcyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgZG9l
c24ndCBrbm93IGFib3V0IHRoZW0uCkBAIC00MjMsNyArNDI0LDcgQEAgTGF5b3V0UmVjdCBSZW5k
ZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5z
aWNTaXplKQogdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3Jt
YXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3VibGUmIGludHJpbnNpY1JhdGlvKSBj
b25zdAogewogICAgIC8vIElmIHRoZXJlJ3MgYW4gZW1iZWRkZWRDb250ZW50Qm94KCkgb2YgYSBy
ZW1vdGUsIHJlZmVyZW5jZWQgZG9jdW1lbnQgYXZhaWxhYmxlLCB0aGlzIGNvZGUtcGF0aCBzaG91
bGQgbmV2ZXIgYmUgdXNlZC4KLSAgICBBU1NFUlQoIWVtYmVkZGVkQ29udGVudEJveCgpKTsKKyAg
ICBBU1NFUlQoIWVtYmVkZGVkQ29udGVudEJveCgpIHx8IChpczxSZW5kZXJJbWFnZT4oKnRoaXMp
ICYmICFkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnRoaXMpLmdldE92ZXJyaWRkZW5JbnRyaW5zaWNT
aXplKCkuaXNFbXB0eSgpKSk7CiAgICAgaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZShpbnRyaW5z
aWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpKTsKIAogICAgIC8vIEZp
Z3VyZSBvdXQgaWYgd2UgbmVlZCB0byBjb21wdXRlIGFuIGludHJpbnNpYyByYXRpby4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4IDJlZWQ5YzQ1YjIuLmViZjFm
MWZmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNr
U3RhdHMuaD4KIApAQCAtMTEyLDYgKzExMyw5IEBAIGJvb2wgUmVuZGVyVmlkZW86OnVwZGF0ZUlu
dHJpbnNpY1NpemUoKQogICAgIAogTGF5b3V0U2l6ZSBSZW5kZXJWaWRlbzo6Y2FsY3VsYXRlSW50
cmluc2ljU2l6ZSgpCiB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuaW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWQoKSAmJiAhdmlkZW9FbGVtZW50
KCkuZ2V0T3ZlcnJpZGRlbkludHJpbnNpY1NpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBMYXlvdXRTaXplKHZpZGVvRWxlbWVudCgpLmdldE92ZXJyaWRkZW5JbnRyaW5zaWNTaXplKCkp
OworCiAgICAgLy8gU3BlYyB0ZXh0IGZyb20gNC44LjYKICAgICAvLwogICAgIC8vIFRoZSBpbnRy
aW5zaWMgd2lkdGggb2YgYSB2aWRlbyBlbGVtZW50J3MgcGxheWJhY2sgYXJlYSBpcyB0aGUgaW50
cmluc2ljIHdpZHRoIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZGVvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAppbmRleCA4
ZTI1YzY4YTUzLi5hMDNkZGUzMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlkZW8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlk
ZW8uaApAQCAtNTMsMTEgKzUzLDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlRnJvbUVs
ZW1lbnQoKSBmaW5hbDsKIAorICAgIHZvaWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKSBmaW5hbDsK
KwogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIHZv
aWQgbWVkaWFFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2b2lkIGludHJpbnNpY1Np
emVDaGFuZ2VkKCkgZmluYWw7CiAgICAgTGF5b3V0U2l6ZSBjYWxjdWxhdGVJbnRyaW5zaWNTaXpl
KCk7CiAgICAgYm9vbCB1cGRhdGVJbnRyaW5zaWNTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGU1OWVmYjgwMWMuLjMxYzlkYjNiM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtNzA2LDYgKzcwNiwxNCBA
QCBBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVm
YXVsdFZhbHVlOiB0cnVlCiAKK0ludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkOgorICB0eXBl
OiBib29sCisgIGRlZmF1bHRWYWx1ZTogdHJ1ZQorICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVu
YWJsZWRGZWF0dXJlcworICBodW1hblJlYWRhYmxlTmFtZTogImludHJpbnNpY3NpemUgYXR0cmli
dXRlIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgc3VwcG9ydCBmb3IgdGhl
IGludHJpbnNpY3NpemUgYXR0cmlidXRlIgorICBjYXRlZ29yeTogaW50ZXJuYWwKKwogQ3VzdG9t
RWxlbWVudHNFbmFibGVkOgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmgKaW5kZXggMWRjYmMyNWZmNS4uOTE1ZjI3ZGE3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCkBAIC0xNTIsNiArMTUyLDcgQEAKICNkZWZpbmUgV2ViS2l0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdExhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxl
ZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRMYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQiCiAj
ZGVmaW5lIFdlYktpdEFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZFByZWZlcmVuY2VL
ZXkgQCJXZWJLaXRBbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQiCisjZGVmaW5lIFdl
YktpdEludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdElu
dHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkIgogI2lmIFRBUkdFVF9PU19JUEhPTkUKICNkZWZp
bmUgV2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSBAIldlYktpdEF1ZGlvU2Vzc2lv
bkNhdGVnb3J5T3ZlcnJpZGUiCiAjZGVmaW5lIFdlYktpdEFWS2l0RW5hYmxlZCBAIldlYktpdEFW
S2l0RW5hYmxlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCmluZGV4IDlmMWMyMjZmYjkuLmJmZjM3ZWU0YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtNTE0LDYg
KzUxNCw3IEBAIHB1YmxpYzoKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwg
IFdlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRMYXJnZUltYWdlQXN5bmNE
ZWNvZGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6WUVTXSwgIFdlYktpdEFuaW1hdGVkSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZFByZWZl
cmVuY2VLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0
SW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWRQcmVmZXJlbmNlS2V5LAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6c3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KEZyYW1lRmxhdHRlbmluZzo6RnVsbHlFbmFibGVkKV0sIFdlYktp
dEZyYW1lRmxhdHRlbmluZ1ByZWZlcmVuY2VLZXksCiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXgg
NGM2NTgxZjk4ZS4uZjllYjA3ZmQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC02MTAsNiArNjEwLDcg
QEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJu
YWxOb3RpZmljYXRpb24gV0VCS0lUX0RFUFIKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIENT
U09NVmlld1Njcm9sbGluZ0FQSUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBs
YXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9P
TCBhbmltYXRlZEltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQ7CitAcHJvcGVydHkgKG5vbmF0b21p
YykgQk9PTCBJbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIGphdmFTY3JpcHRNYXJrdXBFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5OwogQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgYXR0YWNobWVudEVsZW1lbnRFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDlkNmVlYTQxYzUuLjE2ODhlZGM2MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTMyMzMsNiArMzIzMyw3
IEBAIHN0YXRpYyBib29sIG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJrKCkKIAogICAg
IHNldHRpbmdzLnNldExhcmdlSW1hZ2VBc3luY0RlY29kaW5nRW5hYmxlZChbcHJlZmVyZW5jZXMg
bGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0QW5pbWF0
ZWRJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBhbmltYXRlZEltYWdlQXN5
bmNEZWNvZGluZ0VuYWJsZWRdKTsKKyAgICBzZXR0aW5ncy5zZXRJbnRyaW5zaWNTaXplQXR0cmli
dXRlRW5hYmxlZChbcHJlZmVyZW5jZXMgSW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWRdKTsK
ICAgICBzZXR0aW5ncy5zZXRNZWRpYUNhcGFiaWxpdGllc0VuYWJsZWQoW3ByZWZlcmVuY2VzIG1l
ZGlhQ2FwYWJpbGl0aWVzRW5hYmxlZF0pOwogCiAgICAgc2V0dGluZ3Muc2V0Q29yZU1hdGhNTEVu
YWJsZWQoW3ByZWZlcmVuY2VzIGNvcmVNYXRoTUxFbmFibGVkXSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRs
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmlkbAppbmRleCBjYjhkZGE0YWVmLi5kOGUyZmM0ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJp
dmF0ZS5pZGwKQEAgLTI0Miw0ICsyNDIsNiBAQCBpbnRlcmZhY2UgSVdlYlByZWZlcmVuY2VzUHJp
dmF0ZTcgOiBJV2ViUHJlZmVyZW5jZXNQcml2YXRlNgogICAgIEhSRVNVTFQgc2V0UmVzaXplT2Jz
ZXJ2ZXJFbmFibGVkKFtpbl0gQk9PTCBlbmFibGVkKTsKICAgICBIUkVTVUxUIGNvcmVNYXRoTUxF
bmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCogZW5hYmxlZCk7CiAgICAgSFJFU1VMVCBzZXRDb3Jl
TWF0aE1MRW5hYmxlZChbaW5dIEJPT0wgZW5hYmxlZCk7CisgICAgSFJFU1VMVCBpbnRyaW5zaWNT
aXplQXR0cmlidXRlRW5hYmxlZChbb3V0LCByZXR2YWxdIEJPT0wqKTsKKyAgICBIUkVTVUxUIHNl
dEludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKFtpbl0gQk9PTCBlbmFibGVkKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgK
aW5kZXggYmE2NjI3MDNhYi4uMWFkNWNiMzAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTIwOSwzICsyMDksNCBAQAog
I2RlZmluZSBXZWJLaXRSZXNpemVPYnNlcnZlckVuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRS
ZXNpemVPYnNlcnZlckVuYWJsZWQiCiAKICNkZWZpbmUgV2ViS2l0Q29yZU1hdGhNTEVuYWJsZWRQ
cmVmZXJlbmNlS2V5ICJXZWJLaXRDb3JlTWF0aE1MRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0SW50
cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRJbnRyaW5zaWNT
aXplQXR0cmlidXRlRW5hYmxlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAppbmRleCAxMzk0ODY4NmJjLi4yMzE4MDgxZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0zMzMsNiArMzMzLDggQEAgdm9pZCBXZWJQ
cmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAKICAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q29yZU1hdGhNTEVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKIAorICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRJbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworCiAgICAgZGVmYXVsdFNldHRpbmdzID0gZGVmYXVs
dHM7CiB9CiAKQEAgLTIwNTEsNiArMjA1MywyMCBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpz
ZXRDcm9zc09yaWdpbldpbmRvd1BvbGljeVN1cHBvcnRFbmFibGVkKEJPT0wpCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmludHJpbnNpY1NpemVBdHRyaWJ1
dGVFbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCit7CisgICAgaWYgKCFlbmFibGVkKQorICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdl
YktpdEludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkUHJlZmVyZW5jZUtleSk7CisgICAgcmV0
dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEludHJpbnNpY1NpemVB
dHRyaWJ1dGVFbmFibGVkKEJPT0wgZW5hYmxlZCkKK3sKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0
SW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKKyAg
ICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0TW9kZXJuTWVk
aWFDb250cm9sc0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewogICAgIHNldEJvb2xWYWx1ZShXZWJL
aXRNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgKaW5kZXggNWVlNjQyN2IzNS4uYzA0
OTJhNzlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5j
ZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oCkBAIC0y
ODcsNiArMjg3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRSZXNpemVPYnNlcnZlckVuYWJsZWQoQk9PTCk7CiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNvcmVNYXRoTUxFbmFibGVkKF9PdXRfIEJPT0wqKTsKICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q29yZU1hdGhNTEVuYWJsZWQoQk9P
TCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGludHJpbnNpY1NpemVB
dHRyaWJ1dGVFbmFibGVkKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0SW50cmluc2ljU2l6ZUF0dHJpYnV0ZUVuYWJsZWQoQk9PTCk7CiAKICAg
ICAvLyBXZWJQcmVmZXJlbmNlcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4
IDc5ZmM0NmQwZmIuLmMwYjcyMWE4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
CkBAIC01Mjk3LDYgKzUyOTcsMTEgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm4g
aHI7CiAgICAgc2V0dGluZ3Muc2V0Q1NTT01WaWV3U2Nyb2xsaW5nQVBJRW5hYmxlZCghIWVuYWJs
ZWQpOwogCisgICAgaHIgPSBwcmVmc1ByaXZhdGUtPkludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFi
bGVkKCZlbmFibGVkKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGhyOwor
ICAgIHNldHRpbmdzLnNldEludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkKCEhZW5hYmxlZCk7
CisKICAgICBociA9IHByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCZlbmFibGVk
KTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE9wdGlvbnMuY3BwCmluZGV4IGFhYTVlNzJkNGUuLmYxZjE2MjNkNDIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAKQEAgLTExNyw2ICsxMTcsOCBAQCBUZXN0T3B0aW9u
czo6VGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVSTCwgY29uc3Qgc3RkOjpz
dHJpbmcmIGFic29sdQogICAgICAgICAgICAgZW5hYmxlUmVzaXplT2JzZXJ2ZXIgPSBwYXJzZUJv
b2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImV4
cGVyaW1lbnRhbDpDb3JlTWF0aE1MRW5hYmxlZCIpCiAgICAgICAgICAgICBlbmFibGVDb3JlTWF0
aE1MID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBp
ZiAoa2V5ID09ICJpbnRlcm5hbDpJbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZCIpCisgICAg
ICAgICAgICBpbnRyaW5zaWNTaXplQXR0cmlidXRlRW5hYmxlZCA9IHBhcnNlQm9vbGVhblRlc3RI
ZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHBhaXJTdGFydCA9IHBhaXJFbmQgKyAxOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCmluZGV4IGQxNmY3NThhMzYuLjVhMTZi
OWI4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaApAQCAtNDgsNiArNDgsNyBAQCBz
dHJ1Y3QgVGVzdE9wdGlvbnMgewogICAgIGJvb2wgYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCB7
IGZhbHNlIH07CiAgICAgYm9vbCBlbmFibGVSZXNpemVPYnNlcnZlciB7IGZhbHNlIH07CiAgICAg
Ym9vbCBlbmFibGVDb3JlTWF0aE1MIHsgZmFsc2UgfTsKKyAgICBib29sIGludHJpbnNpY1NpemVB
dHRyaWJ1dGVFbmFibGVkIHsgZmFsc2UgfTsKICAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zOwog
ICAgIHN0ZDo6c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggM2UwZDg5NTI1ZC4uNWRi
MDU0N2MwZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpA
QCAtMTAyMCw2ICsxMDIwLDcgQEAgc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0
T3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICBwcmVmZXJlbmNlcy5hZENs
aWNrQXR0cmlidXRpb25FbmFibGVkID0gb3B0aW9ucy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVk
OwogICAgIHByZWZlcmVuY2VzLnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
UmVzaXplT2JzZXJ2ZXI7CiAgICAgcHJlZmVyZW5jZXMuY29yZU1hdGhNTEVuYWJsZWQgPSBvcHRp
b25zLmVuYWJsZUNvcmVNYXRoTUw7CisgICAgcHJlZmVyZW5jZXMuaW50cmluc2ljU2l6ZUF0dHJp
YnV0ZUVuYWJsZWQgPSBvcHRpb25zLmludHJpbnNpY1NpemVBdHRyaWJ1dGVFbmFibGVkOwogfQog
CiAvLyBDYWxsZWQgb25jZSBvbiBEdW1wUmVuZGVyVHJlZSBzdGFydHVwLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>