<?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>68129</bug_id>
          
          <creation_ts>2011-09-14 15:40:08 -0700</creation_ts>
          <short_desc>change RenderFlexibleBox to act on logical coordinates</short_desc>
          <delta_ts>2011-09-20 15:45:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>hyatt</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>467423</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-14 15:40:08 -0700</bug_when>
    <thetext>change RenderFlexibleBox to act on logical coordinates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467432</commentid>
    <comment_count>1</comment_count>
      <attachid>107413</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-14 15:46:26 -0700</bug_when>
    <thetext>Created attachment 107413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467453</commentid>
    <comment_count>2</comment_count>
      <attachid>107413</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-09-14 16:09:34 -0700</bug_when>
    <thetext>Comment on attachment 107413
Patch

LGTM.  May want to wait a day or two to see if Hyatt has any suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467479</commentid>
    <comment_count>3</comment_count>
      <attachid>107413</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-09-14 16:53:23 -0700</bug_when>
    <thetext>Comment on attachment 107413
Patch

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

In general I have two high level concerns:

(1) Make sure your function names don&apos;t just drop &quot;Horizontal&quot; and not replace it with anything. You should have &quot;InlineAxis&quot; or &quot;InlineDirection&quot; in those names.

(2) You need to make use of more helpers to deal with flex item children that have orthogonal writing modes.

(3) It looks like RTL behavior isn&apos;t right. Remember that converting left to start and right to end is not the same thing for RTL. start is on the right for RTL. You need to decide if you&apos;re writing the code to go from &quot;line left&quot; to &quot;line right&quot; in which case you use logicalLeft and logicalRight, or if you really are trying to write the code to go from the start edge to the end edge, i.e., to be directionally abstract.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:102
&gt; +    layoutFlexibleBlock(relayoutChildren);

Maybe you want to call this layoutInlineDirection or something? The old code used the term &quot;Horizontal&quot; and if you convert to logical the equivalent term would be &quot;inline direction.&quot;

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:116
&gt; +static LayoutUnit preferredFlexItemLogicalContentWidth(RenderBox* child)

preferredLogicalContentWidthForFlexItem perhaps? This is a mouthful heh.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:119
&gt; +    if (child-&gt;style()-&gt;logicalWidth().isAuto())
&gt; +        return child-&gt;maxPreferredLogicalWidth() - child-&gt;borderStart() - child-&gt;borderEnd() - child-&gt;scrollbarLogicalHeight() - child-&gt;paddingStart() - child-&gt;paddingEnd();

I don&apos;t completely understand this. Remember the child&apos;s writing mode can be different from the parent&apos;s, and so what the child thinks are its start and end may be along the opposite axis to the one you&apos;re laying out children along. In general if you find yourself directly accessing child border and padding values like this, you&apos;re probably doing something wrong. (I say probably, since there may be a few cases where it&apos;s ok.)

If you look at RenderBlock there are helper functions to get the margins for a child along the correct axis, e.g., marginLogicalTopForChild, to handle the case where the child&apos;s writing mode may be different. You may need something like that here.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:123
&gt; -void RenderFlexibleBox::layoutHorizontalBlock(bool relayoutChildren)
&gt; +void RenderFlexibleBox::layoutFlexibleBlock(bool relayoutChildren)

As stated above, I think you need to work &quot;inline direction&quot; into this function name, since that is what it&apos;s doing.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:135
&gt; -    while (!runFreeSpaceAllocationAlgorithmHorizontal(availableFreeSpace, totalPositiveFlexibility, totalNegativeFlexibility, inflexibleItems, childSizes)) {
&gt; +    while (!runFreeSpaceAllocationAlgorithm(availableFreeSpace, totalPositiveFlexibility, totalNegativeFlexibility, inflexibleItems, childSizes)) {

Same here. Seems like you need &quot;inline direction&quot; in here.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:172
&gt; +        preferredLogicalWidth += child-&gt;style()-&gt;marginStart().calcMinValue(flexboxAvailableLogicalWidth);
&gt; +        preferredLogicalWidth += child-&gt;style()-&gt;marginEnd().calcMinValue(flexboxAvailableLogicalWidth);
&gt; +        preferredLogicalWidth += child-&gt;style()-&gt;paddingStart().calcMinValue(flexboxAvailableLogicalWidth);
&gt; +        preferredLogicalWidth += child-&gt;style()-&gt;paddingEnd().calcMinValue(flexboxAvailableLogicalWidth);

Seems like you should be using the helper functions here in case the child has an orthogonal writing mode.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:174
&gt; -        if (child-&gt;style()-&gt;marginLeft().isAuto())
&gt; +        if (child-&gt;style()-&gt;marginStart().isAuto())

Same.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:176
&gt; -        if (child-&gt;style()-&gt;marginRight().isAuto())
&gt; +        if (child-&gt;style()-&gt;marginEnd().isAuto())

Same.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:179
&gt; +        preferredLogicalWidth += child-&gt;borderStart() + child-&gt;borderEnd();

Same.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:183
&gt; +        totalPositiveFlexibility += logicalPositiveFlexForChild(child);
&gt; +        totalNegativeFlexibility += logicalNegativeFlexForChild(child);

Helpers. Yay! This should be correct.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:188
&gt; -bool RenderFlexibleBox::runFreeSpaceAllocationAlgorithmHorizontal(LayoutUnit&amp; availableFreeSpace, float&amp; totalPositiveFlexibility, float&amp; totalNegativeFlexibility, InflexibleFlexItemSize&amp; inflexibleItems, WTF::Vector&lt;LayoutUnit&gt;&amp; childSizes)
&gt; +bool RenderFlexibleBox::runFreeSpaceAllocationAlgorithm(LayoutUnit&amp; availableFreeSpace, float&amp; totalPositiveFlexibility, float&amp; totalNegativeFlexibility, InflexibleFlexItemSize&amp; inflexibleItems, WTF::Vector&lt;LayoutUnit&gt;&amp; childSizes)

Include &quot;inline direction &quot; or &quot;inline axis&quot; in the name.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:203
&gt; +                Length childLogicalMaxWidth = child-&gt;style()-&gt;logicalMaxWidth();

Need a helper here. The child might be orthogonal, in which case getting its logical width isn&apos;t correct.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:215
&gt; +                Length childLogicalMinWidth = child-&gt;style()-&gt;logicalMinWidth();

Same here.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:245
&gt; -    LayoutUnit xOffset = borderLeft() + paddingLeft();
&gt; +    LayoutUnit logicalXOffset = borderStart() + paddingStart();

This seems suspicious for RTL that you&apos;re operating from the right edge, but I didn&apos;t look closely enough to tell for sure. We have stuff like logicalLeftOffsetForContent() to help you get the left edge and move from there.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:271
&gt; +        child-&gt;setLogicalLocation(IntPoint(logicalXOffset, logicalYOffset));

This seems wrong for RTL. Logical location is just flipping x and y for horizontal vs. vertical. It doesn&apos;t deal with directions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469182</commentid>
    <comment_count>4</comment_count>
      <attachid>107793</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-18 13:20:16 -0700</bug_when>
    <thetext>Created attachment 107793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469184</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-18 13:24:11 -0700</bug_when>
    <thetext>I think this addresses all your comments. I also added a test for various writing-modes/directions. They all seem to do the right thing except the vertical-rl and horizontal-bt ones don&apos;t pass due to https://bugs.webkit.org/show_bug.cgi?id=68304.

I added the following helper methods to RenderFlexibleBox. I wasn&apos;t sure if you&apos;d rather I add some of these to RenderBlock. It&apos;s not clear to me how generically useful they are.

LayoutUnit logicalBorderWidthForChild(RenderBox* child);
LayoutUnit logicalPaddingWidthForChild(RenderBox* child);
LayoutUnit logicalScrollbarHeightForChild(RenderBox* child);
Length marginStartStyleForChild(RenderBox* child);
Length marginEndStyleForChild(RenderBox* child);
void setLogicalOverrideSize(RenderBox* child, LayoutUnit childPreferredSize);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469185</commentid>
    <comment_count>6</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-18 13:25:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 107413 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107413&amp;action=review
&gt; (3) It looks like RTL behavior isn&apos;t right. Remember that converting left to start and right to end is not the same thing for RTL. start is on the right for RTL. You need to decide if you&apos;re writing the code to go from &quot;line left&quot; to &quot;line right&quot; in which case you use logicalLeft and logicalRight, or if you really are trying to write the code to go from the start edge to the end edge, i.e., to be directionally abstract.

I went with startEdge and then convert it to logicalLeft right before the setLogicalLocationForChild call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469584</commentid>
    <comment_count>7</comment_count>
      <attachid>107899</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-19 11:57:44 -0700</bug_when>
    <thetext>Created attachment 107899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470222</commentid>
    <comment_count>8</comment_count>
      <attachid>107899</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-09-20 11:41:07 -0700</bug_when>
    <thetext>Comment on attachment 107899
Patch

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

Switch all the queries of writing mode to use isHorizontalWritingMode() instead of style()-&gt;isHorizontalWritingMode().

The one other observation I have is make your helper functions do as much work as possible to avoid switching on writing mode too much. For example if you only ever look at border and padding together, then combine those into a single helper rather than calling two functions, one for border and one for padding.

Things mostly look correct to me except for the orthogonal case mentioned below.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:155
&gt; +        return child-&gt;maxPreferredLogicalWidth() - logicalBorderWidthForChild(child) - logicalScrollbarHeightForChild(child) - logicalPaddingWidthForChild(child);

You can&apos;t use maxPreferredLogicalWidth if your writing mode is orthogonal to your parent&apos;s. I&apos;m not sure what you should be using, since I can&apos;t remember what the writing-mode spec said. It&apos;s either 0 or the height of the viewport or something. I can&apos;t recall, but should be in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470302</commentid>
    <comment_count>9</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-20 13:40:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 107899 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107899&amp;action=review
&gt; The one other observation I have is make your helper functions do as much work as possible to avoid switching on writing mode too much. For example if you only ever look at border and padding together, then combine those into a single helper rather than calling two functions, one for border and one for padding.

There is a case where we get borderWidth, but not paddingWidth. Although, there&apos;s no case where we get paddingWidth without borderWidth, so I could have borderWidth/borderAndPaddingWidth instead of borderWidth/paddingWidth.

&gt; &gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:155
&gt; &gt; +        return child-&gt;maxPreferredLogicalWidth() - logicalBorderWidthForChild(child) - logicalScrollbarHeightForChild(child) - logicalPaddingWidthForChild(child);
&gt; 
&gt; You can&apos;t use maxPreferredLogicalWidth if your writing mode is orthogonal to your parent&apos;s. I&apos;m not sure what you should be using, since I can&apos;t remember what the writing-mode spec said. It&apos;s either 0 or the height of the viewport or something. I can&apos;t recall, but should be in the spec.

Looks like shrink-to-fit is the correct behavior: http://dev.w3.org/csswg/css3-writing-modes/#orthogonal-auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470396</commentid>
    <comment_count>10</comment_count>
      <attachid>108063</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-20 15:22:55 -0700</bug_when>
    <thetext>Created attachment 108063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470404</commentid>
    <comment_count>11</comment_count>
      <attachid>108063</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-09-20 15:33:25 -0700</bug_when>
    <thetext>Comment on attachment 108063
Patch

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

r=me

&gt; Source/WebCore/rendering/RenderBlock.h:214
&gt; +    void setLogicalLocationForChild(RenderBox* child, const LayoutPoint&amp;);
&gt;      void setLogicalLeftForChild(RenderBox* child, LayoutUnit logicalLeft, ApplyLayoutDeltaMode = DoNotApplyLayoutDelta);
&gt;      void setLogicalTopForChild(RenderBox* child, LayoutUnit logicalTop, ApplyLayoutDeltaMode = DoNotApplyLayoutDelta);

Ultimately you&apos;ll probably want to support layout deltas for flexible box children. You should file a followup bug about this.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:324
&gt; +        setLogicalLocationForChild(child, IntPoint(logicalLeft, logicalTop));

You should probably have a placeChild method like the old flexible box did that handles repainting. Right now you&apos;re moving without repainting, which will result in repaint issues if the child moves without having to get a layout again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470421</commentid>
    <comment_count>12</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-20 15:45:22 -0700</bug_when>
    <thetext>Committed r95577: &lt;http://trac.webkit.org/changeset/95577&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107413</attachid>
            <date>2011-09-14 15:46:26 -0700</date>
            <delta_ts>2011-09-18 13:20:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68129-20110914154625.patch</filename>
            <type>text/plain</type>
            <size>18048</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUxMTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMzkxODdlZmJmNjE1ZWRj
N2JmYTBkZmIyMTM5MjkyNDI2MDFhM2Y0Li5iOGU3NzUzM2JiMDdkYWI3M2IyMmQxODFlYmFhMGFl
OWRmMGU4ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDktMTQgIE9qYW4g
VmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBjaGFuZ2UgUmVuZGVyRmxleGli
bGVCb3ggdG8gYWN0IG9uIGxvZ2ljYWwgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MTI5CisKKyAgICAgICAgQXMgcGVyIEh5YXR0
LCB3ZSBzaG91bGQgYmUgdXNpbmcgbG9naWNhbCBjb29yZGluYXRlcyBmb3IgZXZlcnl0aGluZy4K
KyAgICAgICAgRXhpc3RpbmcgZmxleGJveCB0ZXN0cyBwYXNzLiBXaWxsIGFkZCBuZXcgdGVzdHMg
Zm9yIHJ0bAorICAgICAgICBhbmQgdmVydGljYWwgd3JpdGluZyBtb2RlcyBpbiBhIHNlcGFyYXRl
IHBhdGNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJy
ZWRGbGV4SXRlbUxvZ2ljYWxDb250ZW50V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RmxleGlibGVCb3g6OmxheW91dEZsZXhpYmxlQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbE5lZ2F0aXZlRmxleEZvckNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVl
U3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhp
YmxlQm94OjpzZXRMb2dpY2FsT3ZlcnJpZGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guaDoKKwogMjAxMS0wOS0xNCAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtza2lhXSBmYXN0L2NhbnZhcy9zZXRXaWR0
aFJlc2V0QWZ0ZXJGb3JjZWRSZW5kZXIgaXMgZmxha3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDBhNDA0ZGE0ZjE3ZTFhYjhjODcwOTFl
OTk4MmUwMmQ0MDI3MmRmNWMuLjE4NjY1M2I3ODZhOTk5Njc2OTZiMWMxMGE5MzY2ZjJjMWM0Zjdm
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cApAQCAtOTksOCArOTksNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIGludCwgQmxvY2tMYXlvdXRQYXNzKQogCiAgICAgbV9vdmVy
Zmxvdy5jbGVhcigpOwogCi0gICAgLy8gRklYTUU6IEFzc3VtZSBob3Jpem9udGFsIGxheW91dCB1
bnRpbCBmbGV4LWZsb3cgaXMgYWRkZWQuCi0gICAgbGF5b3V0SG9yaXpvbnRhbEJsb2NrKHJlbGF5
b3V0Q2hpbGRyZW4pOworICAgIGxheW91dEZsZXhpYmxlQmxvY2socmVsYXlvdXRDaGlsZHJlbik7
CiAKICAgICBjb21wdXRlTG9naWNhbEhlaWdodCgpOwogCkBAIC0xMTQsNDcgKzExMyw1MCBAQCB2
b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4s
IGludCwgQmxvY2tMYXlvdXRQYXNzKQogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAot
c3RhdGljIExheW91dFVuaXQgcHJlZmVycmVkRmxleEl0ZW1Db250ZW50V2lkdGgoUmVuZGVyQm94
KiBjaGlsZCkKK3N0YXRpYyBMYXlvdXRVbml0IHByZWZlcnJlZEZsZXhJdGVtTG9naWNhbENvbnRl
bnRXaWR0aChSZW5kZXJCb3gqIGNoaWxkKQogewotICAgIC8vIEZJWE1FOiBIYW5kbGUgdmVydGlj
YWwgd3JpdGluZyBtb2RlcyB3aXRoIGhvcml6b250YWwgZmxleGluZy4KLSAgICBpZiAoY2hpbGQt
PnN0eWxlKCktPndpZHRoKCkuaXNBdXRvKCkpCi0gICAgICAgIHJldHVybiBjaGlsZC0+bWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoKCkgLSBjaGlsZC0+Ym9yZGVyTGVmdCgpIC0gY2hpbGQtPmJvcmRl
clJpZ2h0KCkgLSBjaGlsZC0+dmVydGljYWxTY3JvbGxiYXJXaWR0aCgpIC0gY2hpbGQtPnBhZGRp
bmdMZWZ0KCkgLSBjaGlsZC0+cGFkZGluZ1JpZ2h0KCk7Ci0gICAgcmV0dXJuIGNoaWxkLT5jb250
ZW50V2lkdGgoKTsKKyAgICBpZiAoY2hpbGQtPnN0eWxlKCktPmxvZ2ljYWxXaWR0aCgpLmlzQXV0
bygpKQorICAgICAgICByZXR1cm4gY2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0g
Y2hpbGQtPmJvcmRlclN0YXJ0KCkgLSBjaGlsZC0+Ym9yZGVyRW5kKCkgLSBjaGlsZC0+c2Nyb2xs
YmFyTG9naWNhbEhlaWdodCgpIC0gY2hpbGQtPnBhZGRpbmdTdGFydCgpIC0gY2hpbGQtPnBhZGRp
bmdFbmQoKTsKKyAgICByZXR1cm4gY2hpbGQtPmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKIH0KIAot
dm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJsb2NrKGJvb2wgcmVsYXlv
dXRDaGlsZHJlbikKK3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEZsZXhpYmxlQmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuKQogewotICAgIExheW91dFVuaXQgcHJlZmVycmVkU2l6ZTsK
KyAgICBMYXlvdXRVbml0IHByZWZlcnJlZExvZ2ljYWxXaWR0aDsKICAgICBmbG9hdCB0b3RhbFBv
c2l0aXZlRmxleGliaWxpdHk7CiAgICAgZmxvYXQgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5Owog
ICAgIEZsZXhpYmxlQm94SXRlcmF0b3IgaXRlcmF0b3IodGhpcyk7CiAKLSAgICBjb21wdXRlUHJl
ZmVycmVkU2l6ZUhvcml6b250YWwocmVsYXlvdXRDaGlsZHJlbiwgaXRlcmF0b3IsIHByZWZlcnJl
ZFNpemUsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5
KTsKLSAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSA9IGNvbnRlbnRXaWR0aCgpIC0g
cHJlZmVycmVkU2l6ZTsKKyAgICBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRoKHJlbGF5b3V0
Q2hpbGRyZW4sIGl0ZXJhdG9yLCBwcmVmZXJyZWRMb2dpY2FsV2lkdGgsIHRvdGFsUG9zaXRpdmVG
bGV4aWJpbGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KTsKKyAgICBMYXlvdXRVbml0IGF2
YWlsYWJsZUZyZWVTcGFjZSA9IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSAtIHByZWZlcnJlZExvZ2lj
YWxXaWR0aDsKIAogICAgIEluZmxleGlibGVGbGV4SXRlbVNpemUgaW5mbGV4aWJsZUl0ZW1zOwog
ICAgIFdURjo6VmVjdG9yPExheW91dFVuaXQ+IGNoaWxkU2l6ZXM7Ci0gICAgd2hpbGUgKCFydW5G
cmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtSG9yaXpvbnRhbChhdmFpbGFibGVGcmVlU3BhY2Us
IHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBpbmZs
ZXhpYmxlSXRlbXMsIGNoaWxkU2l6ZXMpKSB7CisgICAgd2hpbGUgKCFydW5GcmVlU3BhY2VBbGxv
Y2F0aW9uQWxnb3JpdGhtKGF2YWlsYWJsZUZyZWVTcGFjZSwgdG90YWxQb3NpdGl2ZUZsZXhpYmls
aXR5LCB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIGluZmxleGlibGVJdGVtcywgY2hpbGRTaXpl
cykpIHsKICAgICAgICAgQVNTRVJUKHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSA+PSAwICYmIHRv
dGFsTmVnYXRpdmVGbGV4aWJpbGl0eSA+PSAwKTsKICAgICAgICAgQVNTRVJUKGluZmxleGlibGVJ
dGVtcy5zaXplKCkgPiAwKTsKICAgICB9CiAKLSAgICBsYXlvdXRBbmRQbGFjZUNoaWxkcmVuSG9y
aXpvbnRhbChjaGlsZFNpemVzLCBhdmFpbGFibGVGcmVlU3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4
aWJpbGl0eSk7CisgICAgbGF5b3V0QW5kUGxhY2VDaGlsZHJlbihjaGlsZFNpemVzLCBhdmFpbGFi
bGVGcmVlU3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSk7CiAKLSAgICAvLyBGSVhNRTog
SGFuZGxlIGRpc3RyaWJ1dGlvbiBvZiB2ZXJ0aWNhbCBzcGFjZSAodGhpcmQgZGlzdHJpYnV0aW9u
IHJvdW5kKS4KKyAgICAvLyBGSVhNRTogSGFuZGxlIGRpc3RyaWJ1dGlvbiBvZiBjcm9zcy1heGlz
IHNwYWNlICh0aGlyZCBkaXN0cmlidXRpb24gcm91bmQpLgogfQogCi1zdGF0aWMgTGF5b3V0VW5p
dCBwcmVmZXJyZWRTaXplRm9yTWFyZ2luc0FuZFBhZGRpbmcoTGVuZ3RoIGxlbmd0aCwgTGF5b3V0
VW5pdCBjb250YWluZXJMZW5ndGgpCitmbG9hdCBSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbFBv
c2l0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCiB7Ci0gICAgcmV0dXJuIGxlbmd0
aC5jYWxjTWluVmFsdWUoY29udGFpbmVyTGVuZ3RoKTsKKyAgICByZXR1cm4gc3R5bGUoKS0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhQb3Np
dGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94SGVpZ2h0UG9zaXRpdmVGbGV4KCk7
CiB9CiAKLXZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRTaXplSG9yaXpv
bnRhbChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIEZsZXhpYmxlQm94SXRlcmF0b3ImIGl0ZXJhdG9y
LCBMYXlvdXRVbml0JiBwcmVmZXJyZWRTaXplLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmls
aXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KQorZmxvYXQgUmVuZGVyRmxleGli
bGVCb3g6OmxvZ2ljYWxOZWdhdGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewot
ICAgIHByZWZlcnJlZFNpemUgPSAwOworICAgIHJldHVybiBzdHlsZSgpLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID8gY2hpbGQtPnN0eWxlKCktPmZsZXhib3hXaWR0aE5lZ2F0aXZlRmxleCgp
IDogY2hpbGQtPnN0eWxlKCktPmZsZXhib3hIZWlnaHROZWdhdGl2ZUZsZXgoKTsKK30KKyAgICAK
K3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGgoYm9v
bCByZWxheW91dENoaWxkcmVuLCBGbGV4aWJsZUJveEl0ZXJhdG9yJiBpdGVyYXRvciwgTGF5b3V0
VW5pdCYgcHJlZmVycmVkTG9naWNhbFdpZHRoLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmls
aXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KQoreworICAgIHByZWZlcnJlZExv
Z2ljYWxXaWR0aCA9IDA7CiAgICAgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5ID0gdG90YWxOZWdh
dGl2ZUZsZXhpYmlsaXR5ID0gMDsKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUgdmVydGljYWwgd3Jp
dGluZyBtb2RlcyB3aXRoIGhvcml6b250YWwgZmxleGluZy4KICAgICBMYXlvdXRVbml0IGZsZXhi
b3hBdmFpbGFibGVMb2dpY2FsV2lkdGggPSBhdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKICAgICBm
b3IgKFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBp
dGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAgLy8gV2UgYWx3YXlzIGhhdmUgdG8gbGF5IG91dCBm
bGV4aWJsZSBvYmplY3RzIGFnYWluLCBzaW5jZSB0aGUgZmxleCBkaXN0cmlidXRpb24KQEAgLTE2
NCw0NyArMTY2LDQ1IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRT
aXplSG9yaXpvbnRhbChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIEZsCiAgICAgICAgICAgICBjaGls
ZC0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKICAgICAgICAgY2hpbGQtPmxheW91dElmTmVl
ZGVkKCk7CiAKLSAgICAgICAgcHJlZmVycmVkU2l6ZSArPSBwcmVmZXJyZWRTaXplRm9yTWFyZ2lu
c0FuZFBhZGRpbmcoY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKSwgZmxleGJveEF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIHByZWZlcnJlZFNpemUgKz0gcHJlZmVycmVkU2l6ZUZv
ck1hcmdpbnNBbmRQYWRkaW5nKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLCBmbGV4Ym94
QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKLSAgICAgICAgcHJlZmVycmVkU2l6ZSArPSBwcmVmZXJy
ZWRTaXplRm9yTWFyZ2luc0FuZFBhZGRpbmcoY2hpbGQtPnN0eWxlKCktPnBhZGRpbmdMZWZ0KCks
IGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOwotICAgICAgICBwcmVmZXJyZWRTaXplICs9
IHByZWZlcnJlZFNpemVGb3JNYXJnaW5zQW5kUGFkZGluZyhjaGlsZC0+c3R5bGUoKS0+cGFkZGlu
Z1JpZ2h0KCksIGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICBwcmVmZXJy
ZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1hcmdpblN0YXJ0KCkuY2FsY01pblZh
bHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICBwcmVmZXJyZWRMb2dp
Y2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1hcmdpbkVuZCgpLmNhbGNNaW5WYWx1ZShmbGV4
Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRo
ICs9IGNoaWxkLT5zdHlsZSgpLT5wYWRkaW5nU3RhcnQoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBj
aGlsZC0+c3R5bGUoKS0+cGFkZGluZ0VuZCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxl
TG9naWNhbFdpZHRoKTsKIAotICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQo
KS5pc0F1dG8oKSkKKyAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5TdGFydCgpLmlz
QXV0bygpKQogICAgICAgICAgICAgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5ICs9IDE7Ci0gICAg
ICAgIGlmIChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luUmlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAg
aWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5FbmQoKS5pc0F1dG8oKSkKICAgICAgICAgICAgIHRv
dGFsUG9zaXRpdmVGbGV4aWJpbGl0eSArPSAxOwogCi0gICAgICAgIHByZWZlcnJlZFNpemUgKz0g
Y2hpbGQtPmJvcmRlckxlZnQoKSArIGNoaWxkLT5ib3JkZXJSaWdodCgpOwotCi0gICAgICAgIHBy
ZWZlcnJlZFNpemUgKz0gcHJlZmVycmVkRmxleEl0ZW1Db250ZW50V2lkdGgoY2hpbGQpOworICAg
ICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPmJvcmRlclN0YXJ0KCkgKyBjaGls
ZC0+Ym9yZGVyRW5kKCk7CisgICAgICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBwcmVmZXJy
ZWRGbGV4SXRlbUxvZ2ljYWxDb250ZW50V2lkdGgoY2hpbGQpOwogCi0gICAgICAgIHRvdGFsUG9z
aXRpdmVGbGV4aWJpbGl0eSArPSBjaGlsZC0+c3R5bGUoKS0+ZmxleGJveFdpZHRoUG9zaXRpdmVG
bGV4KCk7Ci0gICAgICAgIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSArPSBjaGlsZC0+c3R5bGUo
KS0+ZmxleGJveFdpZHRoTmVnYXRpdmVGbGV4KCk7CisgICAgICAgIHRvdGFsUG9zaXRpdmVGbGV4
aWJpbGl0eSArPSBsb2dpY2FsUG9zaXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpOworICAgICAgICB0
b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgKz0gbG9naWNhbE5lZ2F0aXZlRmxleEZvckNoaWxkKGNo
aWxkKTsKICAgICB9CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzdWNjZXNzZnVsbHkgcmFu
IHRoZSBhbGdvcml0aG0gYW5kIHNpemVkIHRoZSBmbGV4IGl0ZW1zLgotYm9vbCBSZW5kZXJGbGV4
aWJsZUJveDo6cnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRobUhvcml6b250YWwoTGF5b3V0
VW5pdCYgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5
LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBJbmZsZXhpYmxlRmxleEl0ZW1TaXpl
JiBpbmZsZXhpYmxlSXRlbXMsIFdURjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzKQor
Ym9vbCBSZW5kZXJGbGV4aWJsZUJveDo6cnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRobShM
YXlvdXRVbml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGli
aWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxleGlibGVGbGV4SXRl
bVNpemUmIGluZmxleGlibGVJdGVtcywgV1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6
ZXMpCiB7CiAgICAgRmxleGlibGVCb3hJdGVyYXRvciBpdGVyYXRvcih0aGlzKTsKICAgICBjaGls
ZFNpemVzLmNsZWFyKCk7CiAKLSAgICAvLyBGSVhNRTogSGFuZGxlIHZlcnRpY2FsIHdyaXRpbmcg
bW9kZXMgd2l0aCBob3Jpem9udGFsIGZsZXhpbmcuCiAgICAgTGF5b3V0VW5pdCBmbGV4Ym94QXZh
aWxhYmxlTG9naWNhbFdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAgICAgZm9yIChS
ZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gaXRlcmF0
b3IubmV4dCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgY2hpbGRQcmVmZXJyZWRTaXplOwogICAg
ICAgICBpZiAoaW5mbGV4aWJsZUl0ZW1zLmNvbnRhaW5zKGNoaWxkKSkKICAgICAgICAgICAgIGNo
aWxkUHJlZmVycmVkU2l6ZSA9IGluZmxleGlibGVJdGVtcy5nZXQoY2hpbGQpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9IHByZWZlcnJlZEZsZXhJdGVt
Q29udGVudFdpZHRoKGNoaWxkKTsKKyAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9IHBy
ZWZlcnJlZEZsZXhJdGVtTG9naWNhbENvbnRlbnRXaWR0aChjaGlsZCk7CiAgICAgICAgICAgICBp
ZiAoYXZhaWxhYmxlRnJlZVNwYWNlID4gMCAmJiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgPiAw
KSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9IGxyb3VuZGYoYXZhaWxh
YmxlRnJlZVNwYWNlICogY2hpbGQtPnN0eWxlKCktPmZsZXhib3hXaWR0aFBvc2l0aXZlRmxleCgp
IC8gdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KTsKKyAgICAgICAgICAgICAgICBjaGlsZFByZWZl
cnJlZFNpemUgKz0gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgKiBsb2dpY2FsUG9zaXRpdmVG
bGV4Rm9yQ2hpbGQoY2hpbGQpIC8gdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KTsKIAotICAgICAg
ICAgICAgICAgIExlbmd0aCBjaGlsZE1heFdpZHRoID0gY2hpbGQtPnN0eWxlKCktPm1heFdpZHRo
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZE1heFdpZHRoLmlzVW5kZWZpbmVkKCkgJiYg
Y2hpbGRNYXhXaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA+IGNoaWxk
TWF4V2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9IGNoaWxkTWF4V2lkdGguY2FsY1Zh
bHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgICAgICAgICBh
dmFpbGFibGVGcmVlU3BhY2UgLT0gY2hpbGRQcmVmZXJyZWRTaXplIC0gcHJlZmVycmVkRmxleEl0
ZW1Db250ZW50V2lkdGgoY2hpbGQpOwotICAgICAgICAgICAgICAgICAgICB0b3RhbFBvc2l0aXZl
RmxleGliaWxpdHkgLT0gY2hpbGQtPnN0eWxlKCktPmZsZXhib3hXaWR0aFBvc2l0aXZlRmxleCgp
OworICAgICAgICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2ljYWxNYXhXaWR0aCA9IGNoaWxkLT5z
dHlsZSgpLT5sb2dpY2FsTWF4V2lkdGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTG9n
aWNhbE1heFdpZHRoLmlzVW5kZWZpbmVkKCkgJiYgY2hpbGRMb2dpY2FsTWF4V2lkdGguaXNTcGVj
aWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPiBjaGlsZExvZ2ljYWxNYXhXaWR0aC5jYWxj
VmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGRMb2dpY2FsTWF4V2lkdGguY2FsY1ZhbHVlKGZs
ZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgICAgICAgICBhdmFpbGFi
bGVGcmVlU3BhY2UgLT0gY2hpbGRQcmVmZXJyZWRTaXplIC0gcHJlZmVycmVkRmxleEl0ZW1Mb2dp
Y2FsQ29udGVudFdpZHRoKGNoaWxkKTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxQb3NpdGl2
ZUZsZXhpYmlsaXR5IC09IGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CiAKICAg
ICAgICAgICAgICAgICAgICAgaW5mbGV4aWJsZUl0ZW1zLnNldChjaGlsZCwgY2hpbGRQcmVmZXJy
ZWRTaXplKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjEyLDExICsy
MTIsMTEgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6cnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFs
Z29yaXRobUhvcml6b250YWwoTGF5b3V0VW5pdCYgYXYKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
YXZhaWxhYmxlRnJlZVNwYWNlIDwgMCAmJiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgPiAwKSB7
CiAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9IGxyb3VuZGYoYXZhaWxhYmxl
RnJlZVNwYWNlICogY2hpbGQtPnN0eWxlKCktPmZsZXhib3hXaWR0aE5lZ2F0aXZlRmxleCgpIC8g
dG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KTsKIAotICAgICAgICAgICAgICAgIExlbmd0aCBjaGls
ZE1pbldpZHRoID0gY2hpbGQtPnN0eWxlKCktPm1pbldpZHRoKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjaGlsZE1pbldpZHRoLmlzVW5kZWZpbmVkKCkgJiYgY2hpbGRNaW5XaWR0aC5pc1NwZWNp
ZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA8IGNoaWxkTWluV2lkdGguY2FsY1ZhbHVlKGZs
ZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxk
UHJlZmVycmVkU2l6ZSA9IGNoaWxkTWluV2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVM
b2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVGcmVlU3BhY2UgKz0g
cHJlZmVycmVkRmxleEl0ZW1Db250ZW50V2lkdGgoY2hpbGQpIC0gY2hpbGRQcmVmZXJyZWRTaXpl
OwotICAgICAgICAgICAgICAgICAgICB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgLT0gY2hpbGQt
PnN0eWxlKCktPmZsZXhib3hXaWR0aE5lZ2F0aXZlRmxleCgpOworICAgICAgICAgICAgICAgIExl
bmd0aCBjaGlsZExvZ2ljYWxNaW5XaWR0aCA9IGNoaWxkLT5zdHlsZSgpLT5sb2dpY2FsTWluV2lk
dGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTG9naWNhbE1pbldpZHRoLmlzVW5kZWZp
bmVkKCkgJiYgY2hpbGRMb2dpY2FsTWluV2lkdGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZl
cnJlZFNpemUgPCBjaGlsZExvZ2ljYWxNaW5XaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXpl
ID0gY2hpbGRMb2dpY2FsTWluV2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2Fs
V2lkdGgpOworICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVGcmVlU3BhY2UgKz0gcHJlZmVy
cmVkRmxleEl0ZW1Mb2dpY2FsQ29udGVudFdpZHRoKGNoaWxkKSAtIGNoaWxkUHJlZmVycmVkU2l6
ZTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5IC09IGxvZ2lj
YWxOZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CiAKICAgICAgICAgICAgICAgICAgICAgaW5m
bGV4aWJsZUl0ZW1zLnNldChjaGlsZCwgY2hpbGRQcmVmZXJyZWRTaXplKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMzLDQyICsyMzMsNDYgQEAgc3RhdGljIGJvb2wg
aGFzUGFja2luZ1NwYWNlKExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCB0b3Rh
bFBvc2l0aXZlRmwKICAgICByZXR1cm4gYXZhaWxhYmxlRnJlZVNwYWNlID4gMCAmJiAhdG90YWxQ
b3NpdGl2ZUZsZXhpYmlsaXR5OwogfQogCi12b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRB
bmRQbGFjZUNoaWxkcmVuSG9yaXpvbnRhbChjb25zdCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYg
Y2hpbGRTaXplcywgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0IHRvdGFsUG9z
aXRpdmVGbGV4aWJpbGl0eSkKK3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnNldExvZ2ljYWxPdmVy
cmlkZVNpemUoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZFByZWZlcnJlZFNpemUp
Cit7CisgICAgc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zZXRP
dmVycmlkZVdpZHRoKGNoaWxkUHJlZmVycmVkU2l6ZSkgOiBjaGlsZC0+c2V0T3ZlcnJpZGVIZWln
aHQoY2hpbGRQcmVmZXJyZWRTaXplKTsKK30KKwordm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5
b3V0QW5kUGxhY2VDaGlsZHJlbihjb25zdCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRT
aXplcywgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0IHRvdGFsUG9zaXRpdmVG
bGV4aWJpbGl0eSkKIHsKICAgICBGbGV4aWJsZUJveEl0ZXJhdG9yIGl0ZXJhdG9yKHRoaXMpOwog
ICAgIC8vIE5vdyB0aGF0IHdlIGtub3cgdGhlIHNpemVzLCBsYXlvdXQgYW5kIHBvc2l0aW9uIHRo
ZSBmbGV4IGl0ZW1zLgotICAgIExheW91dFVuaXQgeE9mZnNldCA9IGJvcmRlckxlZnQoKSArIHBh
ZGRpbmdMZWZ0KCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsWE9mZnNldCA9IGJvcmRlclN0YXJ0
KCkgKyBwYWRkaW5nU3RhcnQoKTsKIAogICAgIGlmIChoYXNQYWNraW5nU3BhY2UoYXZhaWxhYmxl
RnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpKSB7CiAgICAgICAgIGlmIChzdHls
ZSgpLT5mbGV4UGFjaygpID09IFBhY2tFbmQpCi0gICAgICAgICAgICB4T2Zmc2V0ICs9IGF2YWls
YWJsZUZyZWVTcGFjZTsKKyAgICAgICAgICAgIGxvZ2ljYWxYT2Zmc2V0ICs9IGF2YWlsYWJsZUZy
ZWVTcGFjZTsKICAgICAgICAgZWxzZSBpZiAoc3R5bGUoKS0+ZmxleFBhY2soKSA9PSBQYWNrQ2Vu
dGVyKQotICAgICAgICAgICAgeE9mZnNldCArPSBhdmFpbGFibGVGcmVlU3BhY2UgLyAyOworICAg
ICAgICAgICAgbG9naWNhbFhPZmZzZXQgKz0gYXZhaWxhYmxlRnJlZVNwYWNlIC8gMjsKICAgICB9
CiAKLSAgICBMYXlvdXRVbml0IHlPZmZzZXQgPSBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKTsK
LSAgICBzZXRIZWlnaHQoMCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsWU9mZnNldCA9IGJvcmRl
ckJlZm9yZSgpICsgcGFkZGluZ0JlZm9yZSgpOworICAgIHNldExvZ2ljYWxIZWlnaHQoMCk7CiAg
ICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZp
cnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSwgKytpKSB7Ci0gICAgICAgIExh
eW91dFVuaXQgY2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGQtPmJvcmRlckxlZnQoKSArIGNoaWxk
LT5wYWRkaW5nTGVmdCgpICsgY2hpbGRTaXplc1tpXSArIGNoaWxkLT5wYWRkaW5nUmlnaHQoKSAr
IGNoaWxkLT5ib3JkZXJSaWdodCgpOwotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHZlcnRpY2Fs
IHdyaXRpbmcgbW9kZXMgd2l0aCBob3Jpem9udGFsIGZsZXhpbmcuCi0gICAgICAgIGNoaWxkLT5z
ZXRPdmVycmlkZVdpZHRoKGNoaWxkUHJlZmVycmVkU2l6ZSk7CisgICAgICAgIExheW91dFVuaXQg
Y2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGQtPmJvcmRlclN0YXJ0KCkgKyBjaGlsZC0+cGFkZGlu
Z1N0YXJ0KCkgKyBjaGlsZFNpemVzW2ldICsgY2hpbGQtPnBhZGRpbmdFbmQoKSArIGNoaWxkLT5i
b3JkZXJFbmQoKTsKKyAgICAgICAgc2V0TG9naWNhbE92ZXJyaWRlU2l6ZShjaGlsZCwgY2hpbGRQ
cmVmZXJyZWRTaXplKTsKICAgICAgICAgY2hpbGQtPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7
CiAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogCi0gICAgICAgIHNldEhlaWdodChz
dGQ6Om1heChoZWlnaHQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyBjaGlsZC0+bWFy
Z2luVG9wKCkgKyBjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkgKyBwYWRk
aW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20oKSArIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQo
KSkpOworICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQoKSwg
Ym9yZGVyQmVmb3JlKCkgKyBwYWRkaW5nQmVmb3JlKCkgKyBjaGlsZC0+bWFyZ2luQmVmb3JlKCkg
KyBjaGlsZC0+bG9naWNhbEhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkFmdGVyKCkgKyBwYWRkaW5n
QWZ0ZXIoKSArIGJvcmRlckFmdGVyKCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpKTsKIAot
ICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSkKLSAgICAg
ICAgICAgIGNoaWxkLT5zZXRNYXJnaW5MZWZ0KGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgPyBscm91
bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkgOiAwKTsK
LSAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpKQotICAg
ICAgICAgICAgY2hpbGQtPnNldE1hcmdpblJpZ2h0KGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgPyBs
cm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkgOiAw
KTsKKyAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5TdGFydCgpLmlzQXV0bygpKQor
ICAgICAgICAgICAgY2hpbGQtPnNldE1hcmdpblN0YXJ0KGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAg
PyBscm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkg
OiAwKTsKKyAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5FbmQoKS5pc0F1dG8oKSkK
KyAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5FbmQoYXZhaWxhYmxlRnJlZVNwYWNlID4gMCA/
IGxyb3VuZGYoYXZhaWxhYmxlRnJlZVNwYWNlIC8gdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KSA6
IDApOwogCi0gICAgICAgIHhPZmZzZXQgKz0gY2hpbGQtPm1hcmdpbkxlZnQoKTsKLSAgICAgICAg
Y2hpbGQtPnNldExvY2F0aW9uKEludFBvaW50KHhPZmZzZXQsIHlPZmZzZXQpKTsKLSAgICAgICAg
eE9mZnNldCArPSBjaGlsZC0+d2lkdGgoKSArIGNoaWxkLT5tYXJnaW5SaWdodCgpOworICAgICAg
ICBsb2dpY2FsWE9mZnNldCArPSBjaGlsZC0+bWFyZ2luU3RhcnQoKTsKKyAgICAgICAgY2hpbGQt
PnNldExvZ2ljYWxMb2NhdGlvbihJbnRQb2ludChsb2dpY2FsWE9mZnNldCwgbG9naWNhbFlPZmZz
ZXQpKTsKKyAgICAgICAgbG9naWNhbFhPZmZzZXQgKz0gY2hpbGQtPmxvZ2ljYWxXaWR0aCgpICsg
Y2hpbGQtPm1hcmdpbkVuZCgpOwogCiAgICAgICAgIGlmIChoYXNQYWNraW5nU3BhY2UoYXZhaWxh
YmxlRnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpICYmIHN0eWxlKCktPmZsZXhQ
YWNrKCkgPT0gUGFja0p1c3RpZnkgJiYgY2hpbGRTaXplcy5zaXplKCkgPiAxKQotICAgICAgICAg
ICAgeE9mZnNldCArPSBhdmFpbGFibGVGcmVlU3BhY2UgLyAoY2hpbGRTaXplcy5zaXplKCkgLSAx
KTsKKyAgICAgICAgICAgIGxvZ2ljYWxYT2Zmc2V0ICs9IGF2YWlsYWJsZUZyZWVTcGFjZSAvIChj
aGlsZFNpemVzLnNpemUoKSAtIDEpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCAzNjEzZTIwNmU2MTEzMTk2YTVlYjM5MjEw
NWEzYWY3Y2ZhOWU1NjNjLi5iMjM3OGFiYmQyMzIyYmNmMmExNjUyZTU3OGY4ZjM5YzIzYWY0NmNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAt
NTIsMTEgKzUyLDE1IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRmxleGlibGVCb3hJdGVyYXRvcjsK
ICAgICB0eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0PiBJ
bmZsZXhpYmxlRmxleEl0ZW1TaXplOwogCi0gICAgdm9pZCBsYXlvdXRIb3Jpem9udGFsQmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuKTsKKyAgICB2b2lkIGxheW91dEZsZXhpYmxlQmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuKTsKIAotICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZFNpemVIb3Jp
em9udGFsKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgRmxleGlibGVCb3hJdGVyYXRvciYsIExheW91
dFVuaXQmLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdh
dGl2ZUZsZXhpYmlsaXR5KTsKLSAgICBib29sIHJ1bkZyZWVTcGFjZUFsbG9jYXRpb25BbGdvcml0
aG1Ib3Jpem9udGFsKExheW91dFVuaXQmIGF2YWlsYWJsZUZyZWVTcGFjZSwgZmxvYXQmIHRvdGFs
UG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSwgSW5m
bGV4aWJsZUZsZXhJdGVtU2l6ZSYsIFdURjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVz
KTsKLSAgICB2b2lkIGxheW91dEFuZFBsYWNlQ2hpbGRyZW5Ib3Jpem9udGFsKGNvbnN0IFdURjo6
VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVT
cGFjZSwgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KTsKKyAgICBmbG9hdCBsb2dpY2Fs
UG9zaXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCk7CisgICAgZmxvYXQgbG9naWNh
bE5lZ2F0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpOworICAgIHZvaWQgc2V0TG9n
aWNhbE92ZXJyaWRlU2l6ZShSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGNoaWxkUHJlZmVy
cmVkU2l6ZSk7CisKKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGgoYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBGbGV4aWJsZUJveEl0ZXJhdG9yJiwgTGF5b3V0VW5pdCYsIGZsb2F0
JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxp
dHkpOworICAgIGJvb2wgcnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRobShMYXlvdXRVbml0
JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZs
b2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxleGlibGVGbGV4SXRlbVNpemUmLCBX
VEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcyk7CisgICAgdm9pZCBsYXlvdXRBbmRQ
bGFjZUNoaWxkcmVuKGNvbnN0IFdURjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzLCBM
YXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSwgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmls
aXR5KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107793</attachid>
            <date>2011-09-18 13:20:16 -0700</date>
            <delta_ts>2011-09-19 11:57:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68129-20110918132015.patch</filename>
            <type>text/plain</type>
            <size>34001</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUzMDYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZWJjOGUwNWVhZDQxMTI1YzlmYTc4
MzYyZDlhZjRlOWI0ZTYyZjlhLi40NDNlMTAzYjMyNDgxODE2MzFhM2I2NTk1NjU3NmY1ODA1ZDFi
M2I5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMTggIE9qYW4gVmFmYWkgIDxvamFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBjaGFuZ2UgUmVuZGVyRmxleGlibGVCb3ggdG8gYWN0
IG9uIGxvZ2ljYWwgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY4MTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBjc3MzL2ZsZXhib3gvcmVzb3VyY2VzL2ZsZXhib3guanM6CisgICAg
ICAgICogY3NzMy9mbGV4Ym94L3dyaXRpbmctbW9kZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rlcy5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OS0xNiAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
Rml4IEhUTUw1IHBhcnNlcidzIGFkb3B0aW9uIGFnZW5jeSBhbGdvcml0aG0gdG8gcmVwYXJlbnQg
Y29ycmVjdGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvcmVzb3VyY2Vz
L2ZsZXhib3guanMgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvcmVzb3VyY2VzL2ZsZXhib3gu
anMKaW5kZXggOGRmOTE1YzBlYzAxYTNjOTc1YmM1ZDYwNGExOTM3MWM0ZWFkMDhjOS4uN2U4NzMx
Y2YyOGQ2MWNiNTI5MWFiZjc0YTI1ODdiMjU3MzA5YjUyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvY3NzMy9mbGV4Ym94L3Jlc291cmNlcy9mbGV4Ym94LmpzCisrKyBiL0xheW91dFRlc3RzL2Nz
czMvZmxleGJveC9yZXNvdXJjZXMvZmxleGJveC5qcwpAQCAtMTQsMTEgKzE0LDIzIEBAIGZ1bmN0
aW9uIGNoZWNrRXhwZWN0ZWRWYWx1ZXMobm9kZSwgZmFpbHVyZXMpCiAgICAgICAgICAgICBmYWls
dXJlcy5wdXNoKCJFeHBlY3RlZCAiICsgZXhwZWN0ZWRXaWR0aCArICIgZm9yIHdpZHRoLCBidXQg
Z290ICIgKyBub2RlLm9mZnNldFdpZHRoICsgIi4gIik7CiAgICAgfQogCisgICAgdmFyIGV4cGVj
dGVkSGVpZ2h0ID0gbm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoImRhdGEt
ZXhwZWN0ZWQtaGVpZ2h0Iik7CisgICAgaWYgKGV4cGVjdGVkSGVpZ2h0KSB7CisgICAgICAgIGlm
IChub2RlLm9mZnNldEhlaWdodCAhPSBwYXJzZUludChleHBlY3RlZEhlaWdodCkpCisgICAgICAg
ICAgICBmYWlsdXJlcy5wdXNoKCJFeHBlY3RlZCAiICsgZXhwZWN0ZWRIZWlnaHQgKyAiIGZvciBo
ZWlnaHQsIGJ1dCBnb3QgIiArIG5vZGUub2Zmc2V0SGVpZ2h0ICsgIi4gIik7CisgICAgfQorCiAg
ICAgdmFyIGV4cGVjdGVkT2Zmc2V0ID0gbm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9kZS5nZXRBdHRy
aWJ1dGUoImRhdGEtb2Zmc2V0LXgiKTsKICAgICBpZiAoZXhwZWN0ZWRPZmZzZXQpIHsKICAgICAg
ICAgaWYgKG5vZGUub2Zmc2V0TGVmdCAhPSBwYXJzZUludChleHBlY3RlZE9mZnNldCkpCiAgICAg
ICAgICAgICBmYWlsdXJlcy5wdXNoKCJFeHBlY3RlZCAiICsgZXhwZWN0ZWRPZmZzZXQgKyAiIGZv
ciBvZmZzZXRMZWZ0LCBidXQgZ290ICIgKyBub2RlLm9mZnNldExlZnQgKyAiLiAiKTsKICAgICB9
CisKKyAgICB2YXIgZXhwZWN0ZWRPZmZzZXQgPSBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdl
dEF0dHJpYnV0ZSgiZGF0YS1vZmZzZXQteSIpOworICAgIGlmIChleHBlY3RlZE9mZnNldCkgewor
ICAgICAgICBpZiAobm9kZS5vZmZzZXRUb3AgIT0gcGFyc2VJbnQoZXhwZWN0ZWRPZmZzZXQpKQor
ICAgICAgICAgICAgZmFpbHVyZXMucHVzaCgiRXhwZWN0ZWQgIiArIGV4cGVjdGVkT2Zmc2V0ICsg
IiBmb3Igb2Zmc2V0VG9wLCBidXQgZ290ICIgKyBub2RlLm9mZnNldFRvcCArICIuICIpOworICAg
IH0KIH0KIAogZnVuY3Rpb24gY2hlY2tIb3Jpem9udGFsQm94ZW4oKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzMy9mbGV4Ym94L3dyaXRpbmctbW9kZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvY3NzMy9mbGV4Ym94L3dyaXRpbmctbW9kZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTQ4MDlkMjMyOTU4ODkwNzdhNGM0MjZlMThlODVjMzY5NjRmMDMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rlcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFT
UworUEFTUworUEFTUworUEFTUworUEFTUworRXhwZWN0ZWQgNTgwIGZvciBvZmZzZXRMZWZ0LCBi
dXQgZ290IDAuIEV4cGVjdGVkIDU4MCBmb3Igb2Zmc2V0TGVmdCwgYnV0IGdvdCAwLiBFeHBlY3Rl
ZCA1ODAgZm9yIG9mZnNldExlZnQsIGJ1dCBnb3QgMC4KK0V4cGVjdGVkIDU4MCBmb3Igb2Zmc2V0
TGVmdCwgYnV0IGdvdCAwLiBFeHBlY3RlZCAxODAgZm9yIG9mZnNldFRvcCwgYnV0IGdvdCAwLiBF
eHBlY3RlZCA1ODAgZm9yIG9mZnNldExlZnQsIGJ1dCBnb3QgMTUwLiBFeHBlY3RlZCAxODAgZm9y
IG9mZnNldFRvcCwgYnV0IGdvdCAwLiBFeHBlY3RlZCA1ODAgZm9yIG9mZnNldExlZnQsIGJ1dCBn
b3QgNDUwLiBFeHBlY3RlZCAxODAgZm9yIG9mZnNldFRvcCwgYnV0IGdvdCAwLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rlcy5odG1sIGIvTGF5b3V0
VGVzdHMvY3NzMy9mbGV4Ym94L3dyaXRpbmctbW9kZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmU1NGNl
YWEwYzdkZjI4ZGYzMzczMmExOTU5MWQwNzM3MmMxMGYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY3NzMy9mbGV4Ym94L3dyaXRpbmctbW9kZXMuaHRtbApAQCAtMCwwICsxLDE2MCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KK2JvZHkgeworICAgIG1hcmdpbjog
MDsKK30KKworLmhvcml6b250YWwtYm94IHsKKyAgICB3aWR0aDogNjAwcHg7CisgICAgZGlzcGxh
eTogLXdlYmtpdC1mbGV4Ym94OworfQorLmhvcml6b250YWwtYm94IGRpdiB7CisgICAgaGVpZ2h0
OiAyMHB4OworICAgIGJvcmRlcjogMDsKK30KKworLnJ0bCB7CisgICAgZGlyZWN0aW9uOiBydGw7
Cit9CisKKy5idCB7CisgICAgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7Cit9
CisKKy52ZXJ0aWNhbC1ybCwgLnZlcnRpY2FsLWxyIHsKKyAgICBoZWlnaHQ6IDYwMHB4OworfQor
Cis6LXdlYmtpdC1hbnkoLnZlcnRpY2FsLXJsLCAudmVydGljYWwtbHIpIGRpdiB7CisgICAgd2lk
dGg6IDIwcHg7Cit9CisKKy52ZXJ0aWNhbC1ybCB7CisgICAgLXdlYmtpdC13cml0aW5nLW1vZGU6
IHZlcnRpY2FsLXJsOworfQorCisudmVydGljYWwtbHIgeworICAgIC13ZWJraXQtd3JpdGluZy1t
b2RlOiB2ZXJ0aWNhbC1scjsKK30KKworLmhvcml6b250YWwtYm94IDpudGgtY2hpbGQoMSkgewor
ICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Cit9CisuaG9yaXpvbnRhbC1ib3ggOm50aC1jaGls
ZCgyKSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cit9CisuaG9yaXpvbnRhbC1ib3gg
Om50aC1jaGlsZCgzKSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworfQorPC9zdHlsZT4K
KzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9mbGV4Ym94LmpzIj48L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0iY2hlY2tIb3Jpem9udGFs
Qm94ZW4oKSI+ICAgICAgICAKKworPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggcnRsIj4KKyAg
PGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1vZmZzZXQteD0iNTAwIiBzdHlsZT0i
d2lkdGg6IC13ZWJraXQtZmxleCgxIDAgMCk7IG1hcmdpbjogMCBhdXRvOyI+PC9kaXY+CisgIDxk
aXYgZGF0YS1leHBlY3RlZC13aWR0aD0iMzAwIiBkYXRhLW9mZnNldC14PSIxNTAiIHN0eWxlPSJ3
aWR0aDogLXdlYmtpdC1mbGV4KDIgMCAwKTsgcGFkZGluZzogMCAxMDBweDsiPjwvZGl2PgorICA8
ZGl2IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjUwIiBkYXRhLW9mZnNldC14PSIxMDAiIHN0eWxlPSJ3
aWR0aDogLXdlYmtpdC1mbGV4KDEgMCAwKTsgbWFyZ2luLWxlZnQ6IDEwMHB4OyI+PC9kaXY+Cis8
L2Rpdj4KKworPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggcnRsIj4KKyAgPGRpdiBkYXRhLWV4
cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1vZmZzZXQteD0iNTAwIiBzdHlsZT0id2lkdGg6IC13ZWJr
aXQtZmxleCgxIDAgMCk7IG1hcmdpbjogMCBhdXRvOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBl
Y3RlZC13aWR0aD0iMzAwIiBkYXRhLW9mZnNldC14PSIxNTAiIHN0eWxlPSJ3aWR0aDogLXdlYmtp
dC1mbGV4KDIgMCAwKTsgcGFkZGluZzogMCAxMDBweDsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9IjUwIiBkYXRhLW9mZnNldC14PSIwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQt
ZmxleCgxIDAgMCk7IC13ZWJraXQtbWFyZ2luLXN0YXJ0OiAxMDBweDsiPjwvZGl2PgorPC9kaXY+
CisKKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94IHJ0bCIgc3R5bGU9Ii13ZWJraXQtbWFyZ2lu
LXN0YXJ0OiAyMHB4Oy13ZWJraXQtbWFyZ2luLWVuZDogNTBweDsiPgorICA8ZGl2IGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9IjUwIiBkYXRhLW9mZnNldC14PSI1NTAiIHN0eWxlPSJ3aWR0aDogLXdlYmtp
dC1mbGV4KDEgMCAwKTsgbWFyZ2luOiAwIGF1dG87Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVj
dGVkLXdpZHRoPSIzMDAiIGRhdGEtb2Zmc2V0LXg9IjIwMCIgc3R5bGU9IndpZHRoOiAtd2Via2l0
LWZsZXgoMiAwIDApOyBwYWRkaW5nOiAwIDEwMHB4OyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBl
Y3RlZC13aWR0aD0iNTAiIGRhdGEtb2Zmc2V0LXg9IjUwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQt
ZmxleCgxIDAgMCk7IC13ZWJraXQtbWFyZ2luLXN0YXJ0OiAxMDBweDsiPjwvZGl2PgorPC9kaXY+
CisKKzxkaXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250
YWwtYm94IHZlcnRpY2FsLWxyIj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTUwIiBk
YXRhLW9mZnNldC15PSIwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMSAwIDApOyI+PC9k
aXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwMCIgZGF0YS1vZmZzZXQteT0iMTUw
IiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMiAwIDApOyI+PC9kaXY+CisgIDxkaXYgZGF0
YS1leHBlY3RlZC1oZWlnaHQ9IjE1MCIgZGF0YS1vZmZzZXQteT0iNDUwIiBzdHlsZT0iaGVpZ2h0
OiAtd2Via2l0LWZsZXgoMSAwIDApOyI+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0
eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZSI+Cis8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWJveCB2ZXJ0
aWNhbC1sciI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE1MCIgZGF0YS1vZmZzZXQt
eT0iMCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAwKTsiPjwvZGl2PgorICA8ZGl2
IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMDAiIGRhdGEtb2Zmc2V0LXk9IjE1MCIgY2xhc3M9ImJ0
IiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMiAwIDApOyI+PC9kaXY+CisgIDxkaXYgZGF0
YS1leHBlY3RlZC1oZWlnaHQ9IjE1MCIgZGF0YS1vZmZzZXQteT0iNDUwIiBzdHlsZT0iaGVpZ2h0
OiAtd2Via2l0LWZsZXgoMSAwIDApOyI+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0
eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZSI+Cis8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWJveCB2ZXJ0
aWNhbC1sciI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjQ1MCIgZGF0YS1vZmZzZXQt
eT0iMCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAwKTstd2Via2l0LXBhZGRpbmct
c3RhcnQ6MjAwcHg7LXdlYmtpdC1wYWRkaW5nLWVuZDoyMDBweDstd2Via2l0LXBhZGRpbmctYmVm
b3JlOjEwMHB4Oy13ZWJraXQtcGFkZGluZy1hZnRlcjoxMDBweDsiPjwvZGl2PgorICA8ZGl2IGRh
dGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiIGRhdGEtb2Zmc2V0LXk9IjQ1MCIgc3R5bGU9ImhlaWdo
dDogLXdlYmtpdC1mbGV4KDIgMCAwKTsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVp
Z2h0PSI1MCIgZGF0YS1vZmZzZXQteT0iNTUwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgo
MSAwIDApOyI+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSJwb3NpdGlvbjpy
ZWxhdGl2ZSI+Cis8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWJveCB2ZXJ0aWNhbC1sciI+CisgIDxk
aXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwMCIgZGF0YS1vZmZzZXQteT0iMCIgY2xhc3M9ImJ0
IiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMSAwIDApOy13ZWJraXQtcGFkZGluZy1zdGFy
dDoyMDBweDstd2Via2l0LXBhZGRpbmctZW5kOjIwMHB4Oy13ZWJraXQtcGFkZGluZy1iZWZvcmU6
MTAwcHg7LXdlYmtpdC1wYWRkaW5nLWFmdGVyOjEwMHB4OyI+PC9kaXY+CisgIDxkaXYgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjIwMCIgZGF0YS1vZmZzZXQteT0iMzAwIiBzdHlsZT0iaGVpZ2h0OiAt
d2Via2l0LWZsZXgoMiAwIDApOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9
IjEwMCIgZGF0YS1vZmZzZXQteT0iNTAwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMSAw
IDApOyI+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorCisKKzxkaXYgc3R5bGU9InBvc2l0aW9uOnJl
bGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94IHZlcnRpY2FsLWxyIj4KKyAgPGRp
diBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTAwIiBkYXRhLW9mZnNldC15PSIxMDAiIHN0eWxlPSJo
ZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7IG1hcmdpbjogYXV0byAwOyI+PC9kaXY+CisgIDxk
aXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCIgZGF0YS1vZmZzZXQteT0iMzAwIiBzdHlsZT0i
aGVpZ2h0OiAtd2Via2l0LWZsZXgoMiAwIDApOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3Rl
ZC1oZWlnaHQ9IjEwMCIgZGF0YS1vZmZzZXQteT0iNTAwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0
LWZsZXgoMSAwIDApOyI+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSJwb3Np
dGlvbjpyZWxhdGl2ZSI+Cis8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWJveCB2ZXJ0aWNhbC1sciI+
CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCIgZGF0YS1vZmZzZXQteT0iMTAwIiBz
dHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMSAwIDApOy13ZWJraXQtbWFyZ2luLXN0YXJ0OmF1
dG87LXdlYmtpdC1tYXJnaW4tZW5kOmF1dG87LXdlYmtpdC1tYXJnaW4tYmVmb3JlOjA7LXdlYmtp
dC1tYXJnaW4tYWZ0ZXI6MDs7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
MjAwIiBkYXRhLW9mZnNldC15PSIzMDAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgyIDAg
MCk7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTAwIiBkYXRhLW9mZnNl
dC15PSI1MDAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwv
ZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xh
c3M9Imhvcml6b250YWwtYm94IHZlcnRpY2FsLWxyIj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhl
aWdodD0iMTUwIiBkYXRhLW9mZnNldC15PSIwIiBjbGFzcz0iYnQiIHN0eWxlPSJoZWlnaHQ6IC13
ZWJraXQtZmxleCgxIDAgMCk7LXdlYmtpdC1tYXJnaW4tc3RhcnQ6YXV0bzstd2Via2l0LW1hcmdp
bi1lbmQ6YXV0bzstd2Via2l0LW1hcmdpbi1iZWZvcmU6MDstd2Via2l0LW1hcmdpbi1hZnRlcjow
OzsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMDAiIGRhdGEtb2Zmc2V0
LXk9IjE1MCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDIgMCAwKTsiPjwvZGl2PgorICA8
ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxNTAiIGRhdGEtb2Zmc2V0LXk9IjQ1MCIgc3R5bGU9
ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAwKTsiPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKwor
PGRpdiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmUiPgorPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1i
b3ggdmVydGljYWwtbHIgcnRsIj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNTAiIGRh
dGEtb2Zmc2V0LXk9IjUwMCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAwKTsgbWFy
Z2luOiBhdXRvIDA7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAwIiBk
YXRhLW9mZnNldC15PSIxNTAiIGNsYXNzPSJidCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4
KDIgMCAwKTsgcGFkZGluZzogMTAwcHggMDsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQt
aGVpZ2h0PSI1MCIgZGF0YS1vZmZzZXQteT0iMCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4
KDEgMCAwKTsgLXdlYmtpdC1tYXJnaW4tc3RhcnQ6IDEwMHB4OyI+PC9kaXY+Cis8L2Rpdj4KKzwv
ZGl2PgorCis8IS0tIEZJWE1FOiBUaGVyZSdzIGEgYnVnIHdoZXJlIG9mZnNldExlZnQgcmVwb3J0
cyB0aGUgd3JvbmcgdmFsdWUgaW4gdmVydGljYWwtcmwgd3JpdGluZy1tb2RlLi0tPgorPGRpdiBz
dHlsZT0icG9zaXRpb246cmVsYXRpdmUiPgorPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggdmVy
dGljYWwtcmwiPgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxNTAiIGRhdGEtb2Zmc2V0
LXk9IjAiIGRhdGEtb2Zmc2V0LXg9IjU4MCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDEg
MCAwKTsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMDAiIGRhdGEtb2Zm
c2V0LXk9IjE1MCIgZGF0YS1vZmZzZXQteD0iNTgwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZs
ZXgoMiAwIDApOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE1MCIgZGF0
YS1vZmZzZXQteT0iNDUwIiBkYXRhLW9mZnNldC14PSI1ODAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJr
aXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKzwhLS0gRklYTUU6IFRo
ZXJlJ3MgYSBidWcgd2hlcmUgb2Zmc2V0VG9wIHJlcG9ydHMgdGhlIHdyb25nIHZhbHVlIGluIGhv
cml6b250YWwtYnQgd3JpdGluZy1tb2RlLi0tPgorPGRpdiBzdHlsZT0icG9zaXRpb246cmVsYXRp
dmUiPgorPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggYnQiIHN0eWxlPSJoZWlnaHQ6MjAwcHgi
PgorICA8ZGl2IGRhdGEtb2Zmc2V0LXk9IjE4MCIgZGF0YS1vZmZzZXQteD0iNTgwIiBzdHlsZT0i
d2lkdGg6IC13ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLW9mZnNldC15
PSIxODAiIGRhdGEtb2Zmc2V0LXg9IjU4MCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMiAw
IDApOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1vZmZzZXQteT0iMTgwIiBkYXRhLW9mZnNldC14PSI1
ODAiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4KDEgMCAwKTsiPjwvZGl2PgorPC9kaXY+Cis8
L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBkMDNmMjllNGY3NTQ0MDY3ZWQ4ZTJkM2VmM2E2ZjQ2NGE4NTg0ZDlkLi5iM2I2
MWQ3Njk4NDI1NGY4OTQ3ZTg2OTIxNGQ4ZWZiNWQzMjUyZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTEtMDktMTggIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBjaGFuZ2UgUmVuZGVyRmxleGlibGVCb3ggdG8gYWN0IG9uIGxvZ2ljYWwgY29vcmRp
bmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
MTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBtYWtlcyBSZW5kZXJGbGV4aWJsZUJveCByZXNwZWN0IGRpcmVjdGlvbiBhbmQgd3JpdGluZy1t
b2RlLgorICAgICAgICBXZSBub3cgcHJvcGVybHkgc3VwcG9ydCB0aGUgZGVmYXVsdCBmbGV4LWZs
b3cgdmFsdWUgb2YgInJvdyIuCisKKyAgICAgICAgVGVzdDogY3NzMy9mbGV4Ym94L3dyaXRpbmct
bW9kZXMuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzZXRMb2dpY2FsTG9jYXRpb25Gb3JDaGlsZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94
OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bG9n
aWNhbEJvcmRlcldpZHRoRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGli
bGVCb3g6OmxvZ2ljYWxQYWRkaW5nV2lkdGhGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbFNjcm9sbGJhckhlaWdodEZvckNoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5TdGFydFN0eWxlRm9yQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkVuZFN0eWxlRm9y
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZExv
Z2ljYWxDb250ZW50V2lkdGhGb3JGbGV4SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6bGF5b3V0SW5saW5lRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsUG9zaXRpdmVGbGV4Rm9yQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxOZWdhdGl2ZUZsZXhGb3JDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cnVuRnJl
ZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRobUlubGluZURpcmVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6c2V0TG9naWNhbE92ZXJyaWRlU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QW5kUGxhY2VDaGlsZHJlbklubGlu
ZURpcmVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisK
IDIwMTEtMDktMTYgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEZpeCBIVE1MNSBwYXJzZXIncyBhZG9wdGlvbiBhZ2VuY3kgYWxnb3JpdGhtIHRvIHJl
cGFyZW50IGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggMmFkMzg4MDg0ZjM0MjNiMjNmMTk2OWQxMDlhZDg2YjVlZWM5ODU1ZC4uNjBlYTg4OGQ1
YzBlNTVlZTlhOWU0OWMxNjRhYjA4NWJjNTY4ZDNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xODY5LDYgKzE4NjksMTQgQEAgdm9pZCBSZW5kZXJCbG9j
azo6aGFuZGxlQWZ0ZXJTaWRlT2ZCbG9jayhMYXlvdXRVbml0IGJlZm9yZVNpZGUsIExheW91dFVu
aXQgYWZ0ZXIKICAgICBzZXRDb2xsYXBzZWRCb3R0b21NYXJnaW4obWFyZ2luSW5mbyk7CiB9CiAK
K3ZvaWQgUmVuZGVyQmxvY2s6OnNldExvZ2ljYWxMb2NhdGlvbkZvckNoaWxkKFJlbmRlckJveCog
Y2hpbGQsIGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbikKK3sKKyAgICBpZiAoc3R5bGUoKS0+
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgY2hpbGQtPnNldExvY2F0aW9uKGxv
Y2F0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbihsb2NhdGlvbi50
cmFuc3Bvc2VkUG9pbnQoKSk7Cit9CisKIHZvaWQgUmVuZGVyQmxvY2s6OnNldExvZ2ljYWxMZWZ0
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgQXBwbHlM
YXlvdXREZWx0YU1vZGUgYXBwbHlEZWx0YSkKIHsKICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBkYTI5
ZDRhNWIyNDE0MzUwOGJiNmM1N2ZlNzE2NzJkYTg4MWM1N2ZjLi44ZTU4ODdlMGIxOTZiNTViYzhh
YTliNDRlYjc1MmM2ZGU4ZDhkOTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaApAQCAtMjA5LDYgKzIwOSw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSB7IHJldHVybiBpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gY2hpbGQtPmhlaWdodCgpIDogY2hpbGQtPndpZHRoKCk7IH0KICAgICBMYXlv
dXRVbml0IGxvZ2ljYWxUb3BGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSB7IHJldHVybiBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPnkoKSA6IGNoaWxkLT54KCk7IH0KICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxMZWZ0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgeyByZXR1cm4g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT54KCkgOiBjaGlsZC0+eSgpOyB9Cisg
ICAgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBjb25z
dCBMYXlvdXRQb2ludCYpOwogICAgIHZvaWQgc2V0TG9naWNhbExlZnRGb3JDaGlsZChSZW5kZXJC
b3gqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBBcHBseUxheW91dERlbHRhTW9kZSA9
IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgdm9pZCBzZXRMb2dpY2FsVG9wRm9yQ2hpbGQo
UmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBBcHBseUxheW91dERlbHRh
TW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZv
cmVGb3JDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCogY2hpbGQpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggMGE0MDRkYTRm
MTdlMWFiOGM4NzA5MWU5OTgyZTAyZDQwMjcyZGY1Yy4uMWE2M2IwODY1ZDI4NzlkNzkxNzVkYzg3
ZDYwNzgyYjhkZjVhNDFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwCkBAIC05OSw4ICs5OSw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6
OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgaW50LCBCbG9ja0xheW91dFBhc3Mp
CiAKICAgICBtX292ZXJmbG93LmNsZWFyKCk7CiAKLSAgICAvLyBGSVhNRTogQXNzdW1lIGhvcml6
b250YWwgbGF5b3V0IHVudGlsIGZsZXgtZmxvdyBpcyBhZGRlZC4KLSAgICBsYXlvdXRIb3Jpem9u
dGFsQmxvY2socmVsYXlvdXRDaGlsZHJlbik7CisgICAgbGF5b3V0SW5saW5lRGlyZWN0aW9uKHJl
bGF5b3V0Q2hpbGRyZW4pOwogCiAgICAgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoKTsKIApAQCAtMTE0
LDQ3ICsxMTMsODYgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBpbnQsIEJsb2NrTGF5b3V0UGFzcykKICAgICBzZXROZWVkc0xheW91
dChmYWxzZSk7CiB9CiAKLXN0YXRpYyBMYXlvdXRVbml0IHByZWZlcnJlZEZsZXhJdGVtQ29udGVu
dFdpZHRoKFJlbmRlckJveCogY2hpbGQpCitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojps
b2dpY2FsQm9yZGVyV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewotICAgIC8vIEZJ
WE1FOiBIYW5kbGUgdmVydGljYWwgd3JpdGluZyBtb2RlcyB3aXRoIGhvcml6b250YWwgZmxleGlu
Zy4KLSAgICBpZiAoY2hpbGQtPnN0eWxlKCktPndpZHRoKCkuaXNBdXRvKCkpCi0gICAgICAgIHJl
dHVybiBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgLSBjaGlsZC0+Ym9yZGVyTGVm
dCgpIC0gY2hpbGQtPmJvcmRlclJpZ2h0KCkgLSBjaGlsZC0+dmVydGljYWxTY3JvbGxiYXJXaWR0
aCgpIC0gY2hpbGQtPnBhZGRpbmdMZWZ0KCkgLSBjaGlsZC0+cGFkZGluZ1JpZ2h0KCk7Ci0gICAg
cmV0dXJuIGNoaWxkLT5jb250ZW50V2lkdGgoKTsKKyAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIGNoaWxkLT5ib3JkZXJMZWZ0KCkgKyBj
aGlsZC0+Ym9yZGVyUmlnaHQoKTsKKyAgICByZXR1cm4gY2hpbGQtPmJvcmRlclRvcCgpICsgY2hp
bGQtPmJvcmRlckJvdHRvbSgpOwogfQogCi12b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRI
b3Jpem9udGFsQmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuKQorTGF5b3V0VW5pdCBSZW5kZXJG
bGV4aWJsZUJveDo6bG9naWNhbFBhZGRpbmdXaWR0aEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQp
CiB7Ci0gICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRTaXplOworICAgIGlmIChzdHlsZSgpLT5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4gY2hpbGQtPnBhZGRpbmdMZWZ0
KCkgKyBjaGlsZC0+cGFkZGluZ1JpZ2h0KCk7CisgICAgcmV0dXJuIGNoaWxkLT5wYWRkaW5nVG9w
KCkgKyBjaGlsZC0+cGFkZGluZ0JvdHRvbSgpOworfQorCitMYXlvdXRVbml0IFJlbmRlckZsZXhp
YmxlQm94Ojpsb2dpY2FsU2Nyb2xsYmFySGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkK
K3sKKyAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAg
cmV0dXJuIGNoaWxkLT5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KCk7CisgICAgcmV0dXJuIGNo
aWxkLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCk7Cit9CisKK0xlbmd0aCBSZW5kZXJGbGV4aWJs
ZUJveDo6bWFyZ2luU3RhcnRTdHlsZUZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCit7CisgICAg
aWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVybiBz
dHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFyZ2lu
TGVmdCgpIDogY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCk7CisgICAgcmV0dXJuIHN0eWxl
KCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Ub3Ao
KSA6IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20oKTsKK30KKworTGVuZ3RoIFJlbmRlckZs
ZXhpYmxlQm94OjptYXJnaW5FbmRTdHlsZUZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCit7Cisg
ICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVy
biBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFy
Z2luUmlnaHQoKSA6IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCk7CisgICAgcmV0dXJuIHN0
eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5C
b3R0b20oKSA6IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Ub3AoKTsKK30KKworTGF5b3V0VW5pdCBS
ZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJdGVt
KFJlbmRlckJveCogY2hpbGQpCit7CisgICAgTGVuZ3RoIHdpZHRoID0gc3R5bGUoKS0+aXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zdHlsZSgpLT53aWR0aCgpIDogY2hpbGQtPnN0
eWxlKCktPmhlaWdodCgpOworICAgIGlmICh3aWR0aC5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJu
IGNoaWxkLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSAtIGxvZ2ljYWxCb3JkZXJXaWR0aEZv
ckNoaWxkKGNoaWxkKSAtIGxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZChjaGlsZCkgLSBs
b2dpY2FsUGFkZGluZ1dpZHRoRm9yQ2hpbGQoY2hpbGQpOworICAgIHJldHVybiBzdHlsZSgpLT5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPmNvbnRlbnRXaWR0aCgpIDogY2hpbGQt
PmNvbnRlbnRIZWlnaHQoKTsKK30KKwordm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0SW5s
aW5lRGlyZWN0aW9uKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKK3sKKyAgICBMYXlvdXRVbml0IHBy
ZWZlcnJlZExvZ2ljYWxXaWR0aDsKICAgICBmbG9hdCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHk7
CiAgICAgZmxvYXQgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5OwogICAgIEZsZXhpYmxlQm94SXRl
cmF0b3IgaXRlcmF0b3IodGhpcyk7CiAKLSAgICBjb21wdXRlUHJlZmVycmVkU2l6ZUhvcml6b250
YWwocmVsYXlvdXRDaGlsZHJlbiwgaXRlcmF0b3IsIHByZWZlcnJlZFNpemUsIHRvdGFsUG9zaXRp
dmVGbGV4aWJpbGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KTsKLSAgICBMYXlvdXRVbml0
IGF2YWlsYWJsZUZyZWVTcGFjZSA9IGNvbnRlbnRXaWR0aCgpIC0gcHJlZmVycmVkU2l6ZTsKKyAg
ICBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRoKHJlbGF5b3V0Q2hpbGRyZW4sIGl0ZXJhdG9y
LCBwcmVmZXJyZWRMb2dpY2FsV2lkdGgsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgdG90YWxO
ZWdhdGl2ZUZsZXhpYmlsaXR5KTsKKyAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSA9
IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSAtIHByZWZlcnJlZExvZ2ljYWxXaWR0aDsKIAogICAgIElu
ZmxleGlibGVGbGV4SXRlbVNpemUgaW5mbGV4aWJsZUl0ZW1zOwogICAgIFdURjo6VmVjdG9yPExh
eW91dFVuaXQ+IGNoaWxkU2l6ZXM7Ci0gICAgd2hpbGUgKCFydW5GcmVlU3BhY2VBbGxvY2F0aW9u
QWxnb3JpdGhtSG9yaXpvbnRhbChhdmFpbGFibGVGcmVlU3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4
aWJpbGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBpbmZsZXhpYmxlSXRlbXMsIGNoaWxk
U2l6ZXMpKSB7CisgICAgd2hpbGUgKCFydW5GcmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtSW5s
aW5lRGlyZWN0aW9uKGF2YWlsYWJsZUZyZWVTcGFjZSwgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5
LCB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIGluZmxleGlibGVJdGVtcywgY2hpbGRTaXplcykp
IHsKICAgICAgICAgQVNTRVJUKHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSA+PSAwICYmIHRvdGFs
TmVnYXRpdmVGbGV4aWJpbGl0eSA+PSAwKTsKICAgICAgICAgQVNTRVJUKGluZmxleGlibGVJdGVt
cy5zaXplKCkgPiAwKTsKICAgICB9CiAKLSAgICBsYXlvdXRBbmRQbGFjZUNoaWxkcmVuSG9yaXpv
bnRhbChjaGlsZFNpemVzLCBhdmFpbGFibGVGcmVlU3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4aWJp
bGl0eSk7CisgICAgbGF5b3V0QW5kUGxhY2VDaGlsZHJlbklubGluZURpcmVjdGlvbihjaGlsZFNp
emVzLCBhdmFpbGFibGVGcmVlU3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSk7CiAKLSAg
ICAvLyBGSVhNRTogSGFuZGxlIGRpc3RyaWJ1dGlvbiBvZiB2ZXJ0aWNhbCBzcGFjZSAodGhpcmQg
ZGlzdHJpYnV0aW9uIHJvdW5kKS4KKyAgICAvLyBGSVhNRTogSGFuZGxlIGRpc3RyaWJ1dGlvbiBv
ZiBjcm9zcy1heGlzIHNwYWNlICh0aGlyZCBkaXN0cmlidXRpb24gcm91bmQpLgorfQorCitmbG9h
dCBSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbFBvc2l0aXZlRmxleEZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQpCit7CisgICAgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBjaGlsZC0+c3R5bGUoKS0+ZmxleGJveFdpZHRoUG9zaXRpdmVGbGV4KCkgOiBjaGlsZC0+
c3R5bGUoKS0+ZmxleGJveEhlaWdodFBvc2l0aXZlRmxleCgpOwogfQogCi1zdGF0aWMgTGF5b3V0
VW5pdCBwcmVmZXJyZWRTaXplRm9yTWFyZ2luc0FuZFBhZGRpbmcoTGVuZ3RoIGxlbmd0aCwgTGF5
b3V0VW5pdCBjb250YWluZXJMZW5ndGgpCitmbG9hdCBSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNh
bE5lZ2F0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCiB7Ci0gICAgcmV0dXJuIGxl
bmd0aC5jYWxjTWluVmFsdWUoY29udGFpbmVyTGVuZ3RoKTsKKyAgICByZXR1cm4gc3R5bGUoKS0+
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhO
ZWdhdGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94SGVpZ2h0TmVnYXRpdmVGbGV4
KCk7CiB9CiAKLXZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRTaXplSG9y
aXpvbnRhbChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIEZsZXhpYmxlQm94SXRlcmF0b3ImIGl0ZXJh
dG9yLCBMYXlvdXRVbml0JiBwcmVmZXJyZWRTaXplLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhp
YmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KQordm9pZCBSZW5kZXJGbGV4
aWJsZUJveDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aChib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIEZsZXhpYmxlQm94SXRlcmF0b3ImIGl0ZXJhdG9yLCBMYXlvdXRVbml0JiBwcmVmZXJyZWRM
b2dpY2FsV2lkdGgsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3Rh
bE5lZ2F0aXZlRmxleGliaWxpdHkpCiB7Ci0gICAgcHJlZmVycmVkU2l6ZSA9IDA7CisgICAgcHJl
ZmVycmVkTG9naWNhbFdpZHRoID0gMDsKICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgPSB0
b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgPSAwOwogCi0gICAgLy8gRklYTUU6IEhhbmRsZSB2ZXJ0
aWNhbCB3cml0aW5nIG1vZGVzIHdpdGggaG9yaXpvbnRhbCBmbGV4aW5nLgogICAgIExheW91dFVu
aXQgZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgp
OwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBj
aGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICAvLyBXZSBhbHdheXMgaGF2ZSB0byBs
YXkgb3V0IGZsZXhpYmxlIG9iamVjdHMgYWdhaW4sIHNpbmNlIHRoZSBmbGV4IGRpc3RyaWJ1dGlv
bgpAQCAtMTY0LDU5ICsyMDIsNjQgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZVBy
ZWZlcnJlZFNpemVIb3Jpem9udGFsKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgRmwKICAgICAgICAg
ICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOwogICAgICAgICBjaGlsZC0+bGF5
b3V0SWZOZWVkZWQoKTsKIAotICAgICAgICBwcmVmZXJyZWRTaXplICs9IHByZWZlcnJlZFNpemVG
b3JNYXJnaW5zQW5kUGFkZGluZyhjaGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVmdCgpLCBmbGV4Ym94
QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKLSAgICAgICAgcHJlZmVycmVkU2l6ZSArPSBwcmVmZXJy
ZWRTaXplRm9yTWFyZ2luc0FuZFBhZGRpbmcoY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCks
IGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOwotICAgICAgICBwcmVmZXJyZWRTaXplICs9
IHByZWZlcnJlZFNpemVGb3JNYXJnaW5zQW5kUGFkZGluZyhjaGlsZC0+c3R5bGUoKS0+cGFkZGlu
Z0xlZnQoKSwgZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIHByZWZlcnJl
ZFNpemUgKz0gcHJlZmVycmVkU2l6ZUZvck1hcmdpbnNBbmRQYWRkaW5nKGNoaWxkLT5zdHlsZSgp
LT5wYWRkaW5nUmlnaHQoKSwgZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAg
IGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CisgICAgICAgICAgICBw
cmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKS5jYWxj
TWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBwcmVm
ZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCkuY2FsY01p
blZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgcHJlZmVy
cmVkTG9naWNhbFdpZHRoICs9IGNoaWxkLT5zdHlsZSgpLT5wYWRkaW5nTGVmdCgpLmNhbGNNaW5W
YWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIHByZWZlcnJl
ZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+c3R5bGUoKS0+cGFkZGluZ1JpZ2h0KCkuY2FsY01pblZh
bHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5U
b3AoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAg
ICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1hcmdpbkJvdHRv
bSgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAg
ICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+c3R5bGUoKS0+cGFkZGluZ1RvcCgp
LmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAg
IHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+c3R5bGUoKS0+cGFkZGluZ0JvdHRvbSgp
LmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgfQog
Ci0gICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpKQorICAg
ICAgICBpZiAobWFyZ2luU3RhcnRTdHlsZUZvckNoaWxkKGNoaWxkKS5pc0F1dG8oKSkKICAgICAg
ICAgICAgIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSArPSAxOwotICAgICAgICBpZiAoY2hpbGQt
PnN0eWxlKCktPm1hcmdpblJpZ2h0KCkuaXNBdXRvKCkpCisgICAgICAgIGlmIChtYXJnaW5FbmRT
dHlsZUZvckNoaWxkKGNoaWxkKS5pc0F1dG8oKSkKICAgICAgICAgICAgIHRvdGFsUG9zaXRpdmVG
bGV4aWJpbGl0eSArPSAxOwogCi0gICAgICAgIHByZWZlcnJlZFNpemUgKz0gY2hpbGQtPmJvcmRl
ckxlZnQoKSArIGNoaWxkLT5ib3JkZXJSaWdodCgpOwotCi0gICAgICAgIHByZWZlcnJlZFNpemUg
Kz0gcHJlZmVycmVkRmxleEl0ZW1Db250ZW50V2lkdGgoY2hpbGQpOworICAgICAgICBwcmVmZXJy
ZWRMb2dpY2FsV2lkdGggKz0gbG9naWNhbEJvcmRlcldpZHRoRm9yQ2hpbGQoY2hpbGQpOworICAg
ICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gcHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0
aEZvckZsZXhJdGVtKGNoaWxkKTsKIAotICAgICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkg
Kz0gY2hpbGQtPnN0eWxlKCktPmZsZXhib3hXaWR0aFBvc2l0aXZlRmxleCgpOwotICAgICAgICB0
b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgKz0gY2hpbGQtPnN0eWxlKCktPmZsZXhib3hXaWR0aE5l
Z2F0aXZlRmxleCgpOworICAgICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgKz0gbG9naWNh
bFBvc2l0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKKyAgICAgICAgdG90YWxOZWdhdGl2ZUZsZXhp
YmlsaXR5ICs9IGxvZ2ljYWxOZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7CiAgICAgfQogfQog
CiAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugc3VjY2Vzc2Z1bGx5IHJhbiB0aGUgYWxnb3JpdGhtIGFu
ZCBzaXplZCB0aGUgZmxleCBpdGVtcy4KLWJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnJ1bkZyZWVT
cGFjZUFsbG9jYXRpb25BbGdvcml0aG1Ib3Jpem9udGFsKExheW91dFVuaXQmIGF2YWlsYWJsZUZy
ZWVTcGFjZSwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVn
YXRpdmVGbGV4aWJpbGl0eSwgSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZSYgaW5mbGV4aWJsZUl0ZW1z
LCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcykKK2Jvb2wgUmVuZGVyRmxleGli
bGVCb3g6OnJ1bkZyZWVTcGFjZUFsbG9jYXRpb25BbGdvcml0aG1JbmxpbmVEaXJlY3Rpb24oTGF5
b3V0VW5pdCYgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmls
aXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBJbmZsZXhpYmxlRmxleEl0ZW1T
aXplJiBpbmZsZXhpYmxlSXRlbXMsIFdURjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVz
KQogewogICAgIEZsZXhpYmxlQm94SXRlcmF0b3IgaXRlcmF0b3IodGhpcyk7CiAgICAgY2hpbGRT
aXplcy5jbGVhcigpOwogCi0gICAgLy8gRklYTUU6IEhhbmRsZSB2ZXJ0aWNhbCB3cml0aW5nIG1v
ZGVzIHdpdGggaG9yaXpvbnRhbCBmbGV4aW5nLgogICAgIExheW91dFVuaXQgZmxleGJveEF2YWls
YWJsZUxvZ2ljYWxXaWR0aCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogICAgIGZvciAoUmVu
ZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9y
Lm5leHQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGNoaWxkUHJlZmVycmVkU2l6ZTsKICAgICAg
ICAgaWYgKGluZmxleGlibGVJdGVtcy5jb250YWlucyhjaGlsZCkpCiAgICAgICAgICAgICBjaGls
ZFByZWZlcnJlZFNpemUgPSBpbmZsZXhpYmxlSXRlbXMuZ2V0KGNoaWxkKTsKICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBwcmVmZXJyZWRGbGV4SXRlbUNv
bnRlbnRXaWR0aChjaGlsZCk7CisgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBwcmVm
ZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0oY2hpbGQpOwogICAgICAgICAgICAg
aWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgJiYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5ID4g
MCkgewotICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSArPSBscm91bmRmKGF2YWls
YWJsZUZyZWVTcGFjZSAqIGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhQb3NpdGl2ZUZsZXgo
KSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSk7CisgICAgICAgICAgICAgICAgY2hpbGRQcmVm
ZXJyZWRTaXplICs9IGxyb3VuZGYoYXZhaWxhYmxlRnJlZVNwYWNlICogbG9naWNhbFBvc2l0aXZl
RmxleEZvckNoaWxkKGNoaWxkKSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSk7CiAKLSAgICAg
ICAgICAgICAgICBMZW5ndGggY2hpbGRNYXhXaWR0aCA9IGNoaWxkLT5zdHlsZSgpLT5tYXhXaWR0
aCgpOwotICAgICAgICAgICAgICAgIGlmICghY2hpbGRNYXhXaWR0aC5pc1VuZGVmaW5lZCgpICYm
IGNoaWxkTWF4V2lkdGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPiBjaGls
ZE1heFdpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSkgewotICAg
ICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZE1heFdpZHRoLmNhbGNW
YWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAg
YXZhaWxhYmxlRnJlZVNwYWNlIC09IGNoaWxkUHJlZmVycmVkU2l6ZSAtIHByZWZlcnJlZEZsZXhJ
dGVtQ29udGVudFdpZHRoKGNoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxQb3NpdGl2
ZUZsZXhpYmlsaXR5IC09IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhQb3NpdGl2ZUZsZXgo
KTsKKyAgICAgICAgICAgICAgICBMZW5ndGggY2hpbGRMb2dpY2FsTWF4V2lkdGggPSBzdHlsZSgp
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPnN0eWxlKCktPmxvZ2ljYWxNYXhX
aWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPmxvZ2ljYWxNYXhIZWlnaHQoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWNoaWxkTG9naWNhbE1heFdpZHRoLmlzVW5kZWZpbmVkKCkgJiYgY2hpbGRMb2dp
Y2FsTWF4V2lkdGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPiBjaGlsZExv
Z2ljYWxNYXhXaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGRMb2dpY2FsTWF4
V2lkdGguY2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICAg
ICAgICAgICAgICBhdmFpbGFibGVGcmVlU3BhY2UgLT0gY2hpbGRQcmVmZXJyZWRTaXplIC0gcHJl
ZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJdGVtKGNoaWxkKTsKKyAgICAgICAgICAg
ICAgICAgICAgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5IC09IGxvZ2ljYWxQb3NpdGl2ZUZsZXhG
b3JDaGlsZChjaGlsZCk7CiAKICAgICAgICAgICAgICAgICAgICAgaW5mbGV4aWJsZUl0ZW1zLnNl
dChjaGlsZCwgY2hpbGRQcmVmZXJyZWRTaXplKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXZhaWxh
YmxlRnJlZVNwYWNlIDwgMCAmJiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgPiAwKSB7Ci0gICAg
ICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9IGxyb3VuZGYoYXZhaWxhYmxlRnJlZVNw
YWNlICogY2hpbGQtPnN0eWxlKCktPmZsZXhib3hXaWR0aE5lZ2F0aXZlRmxleCgpIC8gdG90YWxO
ZWdhdGl2ZUZsZXhpYmlsaXR5KTsKKyAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUg
Kz0gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgKiBsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hp
bGQoY2hpbGQpIC8gdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KTsKIAotICAgICAgICAgICAgICAg
IExlbmd0aCBjaGlsZE1pbldpZHRoID0gY2hpbGQtPnN0eWxlKCktPm1pbldpZHRoKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjaGlsZE1pbldpZHRoLmlzVW5kZWZpbmVkKCkgJiYgY2hpbGRNaW5X
aWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA8IGNoaWxkTWluV2lkdGgu
Y2FsY1ZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9IGNoaWxkTWluV2lkdGguY2FsY1ZhbHVlKGZsZXhi
b3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVG
cmVlU3BhY2UgKz0gcHJlZmVycmVkRmxleEl0ZW1Db250ZW50V2lkdGgoY2hpbGQpIC0gY2hpbGRQ
cmVmZXJyZWRTaXplOwotICAgICAgICAgICAgICAgICAgICB0b3RhbE5lZ2F0aXZlRmxleGliaWxp
dHkgLT0gY2hpbGQtPnN0eWxlKCktPmZsZXhib3hXaWR0aE5lZ2F0aXZlRmxleCgpOworICAgICAg
ICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2ljYWxNaW5XaWR0aCA9IHN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+c3R5bGUoKS0+bG9naWNhbE1pbldpZHRoKCkgOiBj
aGlsZC0+c3R5bGUoKS0+bG9naWNhbE1pbkhlaWdodCgpOworICAgICAgICAgICAgICAgIGlmICgh
Y2hpbGRMb2dpY2FsTWluV2lkdGguaXNVbmRlZmluZWQoKSAmJiBjaGlsZExvZ2ljYWxNaW5XaWR0
aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA8IGNoaWxkTG9naWNhbE1pbldp
ZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSkgeworICAgICAgICAg
ICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZExvZ2ljYWxNaW5XaWR0aC5jYWxj
VmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICAgICAgICAg
IGF2YWlsYWJsZUZyZWVTcGFjZSArPSBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxl
eEl0ZW0oY2hpbGQpIC0gY2hpbGRQcmVmZXJyZWRTaXplOworICAgICAgICAgICAgICAgICAgICB0
b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgLT0gbG9naWNhbE5lZ2F0aXZlRmxleEZvckNoaWxkKGNo
aWxkKTsKIAogICAgICAgICAgICAgICAgICAgICBpbmZsZXhpYmxlSXRlbXMuc2V0KGNoaWxkLCBj
aGlsZFByZWZlcnJlZFNpemUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yMzMsNDIgKzI3Niw1NCBAQCBzdGF0aWMgYm9vbCBoYXNQYWNraW5nU3BhY2UoTGF5b3V0VW5p
dCBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0IHRvdGFsUG9zaXRpdmVGbAogICAgIHJldHVybiBh
dmFpbGFibGVGcmVlU3BhY2UgPiAwICYmICF0b3RhbFBvc2l0aXZlRmxleGliaWxpdHk7CiB9CiAK
LXZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW5Ib3Jpem9udGFs
KGNvbnN0IFdURjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRVbml0IGF2
YWlsYWJsZUZyZWVTcGFjZSwgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KQordm9pZCBS
ZW5kZXJGbGV4aWJsZUJveDo6c2V0TG9naWNhbE92ZXJyaWRlU2l6ZShSZW5kZXJCb3gqIGNoaWxk
LCBMYXlvdXRVbml0IGNoaWxkUHJlZmVycmVkU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogUmVuYW1l
IHNldE92ZXJyaWRlV2lkdGgvc2V0T3ZlcnJpZGVIZWlnaHQgdG8gc2V0T3ZlcnJpZGVMb2dpY2Fs
V2lkdGgvc2V0T3ZlcnJpZGVMb2dpY2FsSGVpZ2h0LgorICAgIGlmIChzdHlsZSgpLT5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICBjaGlsZC0+c3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zZXRPdmVycmlkZVdpZHRoKGNoaWxkUHJlZmVycmVkU2l6
ZSkgOiBjaGlsZC0+c2V0T3ZlcnJpZGVIZWlnaHQoY2hpbGRQcmVmZXJyZWRTaXplKTsKKyAgICBl
bHNlCisgICAgICAgIGNoaWxkLT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
Y2hpbGQtPnNldE92ZXJyaWRlSGVpZ2h0KGNoaWxkUHJlZmVycmVkU2l6ZSkgOiBjaGlsZC0+c2V0
T3ZlcnJpZGVXaWR0aChjaGlsZFByZWZlcnJlZFNpemUpOworfQorCit2b2lkIFJlbmRlckZsZXhp
YmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuSW5saW5lRGlyZWN0aW9uKGNvbnN0IFdURjo6
VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVT
cGFjZSwgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KQogewogICAgIEZsZXhpYmxlQm94
SXRlcmF0b3IgaXRlcmF0b3IodGhpcyk7Ci0gICAgLy8gTm93IHRoYXQgd2Uga25vdyB0aGUgc2l6
ZXMsIGxheW91dCBhbmQgcG9zaXRpb24gdGhlIGZsZXggaXRlbXMuCi0gICAgTGF5b3V0VW5pdCB4
T2Zmc2V0ID0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKKyAgICBMYXlvdXRVbml0IHN0
YXJ0RWRnZSA9IGJvcmRlclN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQoKTsKIAogICAgIGlmIChoYXNQ
YWNraW5nU3BhY2UoYXZhaWxhYmxlRnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkp
KSB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5mbGV4UGFjaygpID09IFBhY2tFbmQpCi0gICAgICAg
ICAgICB4T2Zmc2V0ICs9IGF2YWlsYWJsZUZyZWVTcGFjZTsKKyAgICAgICAgICAgIHN0YXJ0RWRn
ZSArPSBhdmFpbGFibGVGcmVlU3BhY2U7CiAgICAgICAgIGVsc2UgaWYgKHN0eWxlKCktPmZsZXhQ
YWNrKCkgPT0gUGFja0NlbnRlcikKLSAgICAgICAgICAgIHhPZmZzZXQgKz0gYXZhaWxhYmxlRnJl
ZVNwYWNlIC8gMjsKKyAgICAgICAgICAgIHN0YXJ0RWRnZSArPSBhdmFpbGFibGVGcmVlU3BhY2Ug
LyAyOwogICAgIH0KIAotICAgIExheW91dFVuaXQgeU9mZnNldCA9IGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpOwotICAgIHNldEhlaWdodCgwKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3Ag
PSBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKTsKKyAgICBMYXlvdXRVbml0IHRvdGFs
QXZhaWxhYmxlTG9naWNhbFdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CisgICAgc2V0
TG9naWNhbEhlaWdodCgwKTsKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChSZW5kZXJCb3gq
IGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gaXRlcmF0b3IubmV4dCgp
LCArK2kpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBjaGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZC0+
Ym9yZGVyTGVmdCgpICsgY2hpbGQtPnBhZGRpbmdMZWZ0KCkgKyBjaGlsZFNpemVzW2ldICsgY2hp
bGQtPnBhZGRpbmdSaWdodCgpICsgY2hpbGQtPmJvcmRlclJpZ2h0KCk7Ci0gICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgdmVydGljYWwgd3JpdGluZyBtb2RlcyB3aXRoIGhvcml6b250YWwgZmxleGlu
Zy4KLSAgICAgICAgY2hpbGQtPnNldE92ZXJyaWRlV2lkdGgoY2hpbGRQcmVmZXJyZWRTaXplKTsK
KyAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBuZWVkIHRvIHRha2UgdGhlIHNjcm9sbGJhciB3
aWR0aCBpbnRvIGFjY291bnQ/CisgICAgICAgIExheW91dFVuaXQgY2hpbGRQcmVmZXJyZWRTaXpl
ID0gY2hpbGRTaXplc1tpXSArIGxvZ2ljYWxCb3JkZXJXaWR0aEZvckNoaWxkKGNoaWxkKSArIGxv
Z2ljYWxQYWRkaW5nV2lkdGhGb3JDaGlsZChjaGlsZCk7CisgICAgICAgIHNldExvZ2ljYWxPdmVy
cmlkZVNpemUoY2hpbGQsIGNoaWxkUHJlZmVycmVkU2l6ZSk7CiAgICAgICAgIGNoaWxkLT5zZXRD
aGlsZE5lZWRzTGF5b3V0KHRydWUpOwogICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVkZWQoKTsK
IAotICAgICAgICBzZXRIZWlnaHQoc3RkOjptYXgoaGVpZ2h0KCksIGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpICsgY2hpbGQtPm1hcmdpblRvcCgpICsgY2hpbGQtPmhlaWdodCgpICsgY2hpbGQt
Pm1hcmdpbkJvdHRvbSgpICsgcGFkZGluZ0JvdHRvbSgpICsgYm9yZGVyQm90dG9tKCkgKyBob3Jp
em9udGFsU2Nyb2xsYmFySGVpZ2h0KCkpKTsKKyAgICAgICAgc2V0TG9naWNhbEhlaWdodChzdGQ6
Om1heChsb2dpY2FsSGVpZ2h0KCksIGJvcmRlckJlZm9yZSgpICsgcGFkZGluZ0JlZm9yZSgpICsg
bWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGQpICsgbG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxk
KSArIG1hcmdpbkFmdGVyRm9yQ2hpbGQoY2hpbGQpICsgcGFkZGluZ0FmdGVyKCkgKyBib3JkZXJB
ZnRlcigpICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKSk7CisKKyAgICAgICAgaWYgKG1hcmdp
blN0YXJ0U3R5bGVGb3JDaGlsZChjaGlsZCkuaXNBdXRvKCkpCisgICAgICAgICAgICBzZXRNYXJn
aW5TdGFydEZvckNoaWxkKGNoaWxkLCBhdmFpbGFibGVGcmVlU3BhY2UgPiAwID8gbHJvdW5kZihh
dmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpIDogMCk7CisgICAg
ICAgIGlmIChtYXJnaW5FbmRTdHlsZUZvckNoaWxkKGNoaWxkKS5pc0F1dG8oKSkKKyAgICAgICAg
ICAgIHNldE1hcmdpbkVuZEZvckNoaWxkKGNoaWxkLCBhdmFpbGFibGVGcmVlU3BhY2UgPiAwID8g
bHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpIDog
MCk7CiAKLSAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkp
Ci0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChhdmFpbGFibGVGcmVlU3BhY2UgPiAw
ID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkp
IDogMCk7Ci0gICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luUmlnaHQoKS5pc0F1dG8o
KSkKLSAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5SaWdodChhdmFpbGFibGVGcmVlU3BhY2Ug
PiAwID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0aXZlRmxleGliaWxp
dHkpIDogMCk7CisgICAgICAgIHN0YXJ0RWRnZSArPSBtYXJnaW5TdGFydEZvckNoaWxkKGNoaWxk
KTsKIAotICAgICAgICB4T2Zmc2V0ICs9IGNoaWxkLT5tYXJnaW5MZWZ0KCk7Ci0gICAgICAgIGNo
aWxkLT5zZXRMb2NhdGlvbihJbnRQb2ludCh4T2Zmc2V0LCB5T2Zmc2V0KSk7Ci0gICAgICAgIHhP
ZmZzZXQgKz0gY2hpbGQtPndpZHRoKCkgKyBjaGlsZC0+bWFyZ2luUmlnaHQoKTsKKyAgICAgICAg
TGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxXaWR0aEZvckNoaWxkKGNoaWxk
KTsKKyAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IHN0eWxlKCktPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSA/IHN0YXJ0RWRnZSA6IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRoIC0g
c3RhcnRFZGdlIC0gY2hpbGRMb2dpY2FsV2lkdGg7CisgICAgICAgIHNldExvZ2ljYWxMb2NhdGlv
bkZvckNoaWxkKGNoaWxkLCBJbnRQb2ludChsb2dpY2FsTGVmdCwgbG9naWNhbFRvcCkpOworICAg
ICAgICBzdGFydEVkZ2UgKz0gY2hpbGRMb2dpY2FsV2lkdGggKyBtYXJnaW5FbmRGb3JDaGlsZChj
aGlsZCk7CiAKICAgICAgICAgaWYgKGhhc1BhY2tpbmdTcGFjZShhdmFpbGFibGVGcmVlU3BhY2Us
IHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkgJiYgc3R5bGUoKS0+ZmxleFBhY2soKSA9PSBQYWNr
SnVzdGlmeSAmJiBjaGlsZFNpemVzLnNpemUoKSA+IDEpCi0gICAgICAgICAgICB4T2Zmc2V0ICs9
IGF2YWlsYWJsZUZyZWVTcGFjZSAvIChjaGlsZFNpemVzLnNpemUoKSAtIDEpOworICAgICAgICAg
ICAgc3RhcnRFZGdlICs9IGF2YWlsYWJsZUZyZWVTcGFjZSAvIChjaGlsZFNpemVzLnNpemUoKSAt
IDEpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guaAppbmRleCAzNjEzZTIwNmU2MTEzMTk2YTVlYjM5MjEwNWEzYWY3Y2ZhOWU1NjNjLi5j
YTU5MDI3OTVkODUwMzQzZWY4NGY4ZjUyMWU4ZTUwMWJlNTY0NjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtNTIsMTEgKzUyLDIyIEBAIHBy
aXZhdGU6CiAgICAgY2xhc3MgRmxleGlibGVCb3hJdGVyYXRvcjsKICAgICB0eXBlZGVmIFdURjo6
SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0PiBJbmZsZXhpYmxlRmxleEl0ZW1T
aXplOwogCi0gICAgdm9pZCBsYXlvdXRIb3Jpem9udGFsQmxvY2soYm9vbCByZWxheW91dENoaWxk
cmVuKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3JkZXJXaWR0aEZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQpOworICAgIExheW91dFVuaXQgbG9naWNhbFBhZGRpbmdXaWR0aEZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpOworICAgIExheW91dFVuaXQgbG9naWNhbFNjcm9sbGJhckhlaWdodEZv
ckNoaWxkKFJlbmRlckJveCogY2hpbGQpOworICAgIExlbmd0aCBtYXJnaW5TdGFydFN0eWxlRm9y
Q2hpbGQoUmVuZGVyQm94KiBjaGlsZCk7CisgICAgTGVuZ3RoIG1hcmdpbkVuZFN0eWxlRm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCk7CisgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRMb2dpY2FsQ29u
dGVudFdpZHRoRm9yRmxleEl0ZW0oUmVuZGVyQm94KiBjaGlsZCk7CiAKLSAgICB2b2lkIGNvbXB1
dGVQcmVmZXJyZWRTaXplSG9yaXpvbnRhbChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIEZsZXhpYmxl
Qm94SXRlcmF0b3ImLCBMYXlvdXRVbml0JiwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0
eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSk7Ci0gICAgYm9vbCBydW5GcmVlU3Bh
Y2VBbGxvY2F0aW9uQWxnb3JpdGhtSG9yaXpvbnRhbChMYXlvdXRVbml0JiBhdmFpbGFibGVGcmVl
U3BhY2UsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0
aXZlRmxleGliaWxpdHksIEluZmxleGlibGVGbGV4SXRlbVNpemUmLCBXVEY6OlZlY3RvcjxMYXlv
dXRVbml0PiYgY2hpbGRTaXplcyk7Ci0gICAgdm9pZCBsYXlvdXRBbmRQbGFjZUNoaWxkcmVuSG9y
aXpvbnRhbChjb25zdCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcywgTGF5b3V0
VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0IHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSk7
CisgICAgdm9pZCBsYXlvdXRJbmxpbmVEaXJlY3Rpb24oYm9vbCByZWxheW91dENoaWxkcmVuKTsK
KworICAgIGZsb2F0IGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxk
KTsKKyAgICBmbG9hdCBsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGls
ZCk7CisKKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGgoYm9vbCByZWxheW91
dENoaWxkcmVuLCBGbGV4aWJsZUJveEl0ZXJhdG9yJiwgTGF5b3V0VW5pdCYsIGZsb2F0JiB0b3Rh
bFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkpOwor
ICAgIGJvb2wgcnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRobUlubGluZURpcmVjdGlvbihM
YXlvdXRVbml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGli
aWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxleGlibGVGbGV4SXRl
bVNpemUmLCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcyk7CisgICAgdm9pZCBz
ZXRMb2dpY2FsT3ZlcnJpZGVTaXplKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgY2hpbGRQ
cmVmZXJyZWRTaXplKTsKKyAgICB2b2lkIGxheW91dEFuZFBsYWNlQ2hpbGRyZW5JbmxpbmVEaXJl
Y3Rpb24oY29uc3QgV1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMsIExheW91dFVu
aXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107899</attachid>
            <date>2011-09-19 11:57:44 -0700</date>
            <delta_ts>2011-09-20 15:22:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68129-20110919115743.patch</filename>
            <type>text/plain</type>
            <size>34292</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUzOTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNDk4NmMwY2ZmOWVjNjNmNjE5MzAz
ZmQ0NzQyNmEzZDAxYWI3NTI0Li40OTc5MDMxMWU3MzEzMWZhY2YwNWQ3MWFmYzQ5YTc4YjU3ZTlj
YmJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMTggIE9qYW4gVmFmYWkgIDxvamFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBjaGFuZ2UgUmVuZGVyRmxleGlibGVCb3ggdG8gYWN0
IG9uIGxvZ2ljYWwgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY4MTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBjc3MzL2ZsZXhib3gvcmVzb3VyY2VzL2ZsZXhib3guanM6CisgICAg
ICAgICogY3NzMy9mbGV4Ym94L3dyaXRpbmctbW9kZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rlcy5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OS0xOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83ODYwMjgxPiBEZWNvbXBvc2VkIHRleHQgaXMgZGlzcGxheWVkIGluY29ycmVjdGx5
IHdoZW4gVmVyZGFuYSBpcyBzcGVjaWZpZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
ZmxleGJveC9yZXNvdXJjZXMvZmxleGJveC5qcyBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9y
ZXNvdXJjZXMvZmxleGJveC5qcwppbmRleCA4ZGY5MTVjMGVjMDFhM2M5NzViYzVkNjA0YTE5Mzcx
YzRlYWQwOGM5Li43ZTg3MzFjZjI4ZDYxY2I1MjkxYWJmNzRhMjU4N2IyNTczMDliNTJjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvcmVzb3VyY2VzL2ZsZXhib3guanMKKysr
IGIvTGF5b3V0VGVzdHMvY3NzMy9mbGV4Ym94L3Jlc291cmNlcy9mbGV4Ym94LmpzCkBAIC0xNCwx
MSArMTQsMjMgQEAgZnVuY3Rpb24gY2hlY2tFeHBlY3RlZFZhbHVlcyhub2RlLCBmYWlsdXJlcykK
ICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goIkV4cGVjdGVkICIgKyBleHBlY3RlZFdpZHRoICsg
IiBmb3Igd2lkdGgsIGJ1dCBnb3QgIiArIG5vZGUub2Zmc2V0V2lkdGggKyAiLiAiKTsKICAgICB9
CiAKKyAgICB2YXIgZXhwZWN0ZWRIZWlnaHQgPSBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdl
dEF0dHJpYnV0ZSgiZGF0YS1leHBlY3RlZC1oZWlnaHQiKTsKKyAgICBpZiAoZXhwZWN0ZWRIZWln
aHQpIHsKKyAgICAgICAgaWYgKG5vZGUub2Zmc2V0SGVpZ2h0ICE9IHBhcnNlSW50KGV4cGVjdGVk
SGVpZ2h0KSkKKyAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goIkV4cGVjdGVkICIgKyBleHBlY3Rl
ZEhlaWdodCArICIgZm9yIGhlaWdodCwgYnV0IGdvdCAiICsgbm9kZS5vZmZzZXRIZWlnaHQgKyAi
LiAiKTsKKyAgICB9CisKICAgICB2YXIgZXhwZWN0ZWRPZmZzZXQgPSBub2RlLmdldEF0dHJpYnV0
ZSAmJiBub2RlLmdldEF0dHJpYnV0ZSgiZGF0YS1vZmZzZXQteCIpOwogICAgIGlmIChleHBlY3Rl
ZE9mZnNldCkgewogICAgICAgICBpZiAobm9kZS5vZmZzZXRMZWZ0ICE9IHBhcnNlSW50KGV4cGVj
dGVkT2Zmc2V0KSkKICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goIkV4cGVjdGVkICIgKyBleHBl
Y3RlZE9mZnNldCArICIgZm9yIG9mZnNldExlZnQsIGJ1dCBnb3QgIiArIG5vZGUub2Zmc2V0TGVm
dCArICIuICIpOwogICAgIH0KKworICAgIHZhciBleHBlY3RlZE9mZnNldCA9IG5vZGUuZ2V0QXR0
cmlidXRlICYmIG5vZGUuZ2V0QXR0cmlidXRlKCJkYXRhLW9mZnNldC15Iik7CisgICAgaWYgKGV4
cGVjdGVkT2Zmc2V0KSB7CisgICAgICAgIGlmIChub2RlLm9mZnNldFRvcCAhPSBwYXJzZUludChl
eHBlY3RlZE9mZnNldCkpCisgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKCJFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRPZmZzZXQgKyAiIGZvciBvZmZzZXRUb3AsIGJ1dCBnb3QgIiArIG5vZGUub2Zmc2V0
VG9wICsgIi4gIik7CisgICAgfQogfQogCiBmdW5jdGlvbiBjaGVja0hvcml6b250YWxCb3hlbigp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rlcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2QzYjk0Yzg3N2JiNThkMTVmOGM4YmI5ZmI3ZDYyOWFhYWI2NTBh
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC93cml0aW5nLW1v
ZGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitQQVNTCitQQVNTCitQQVNTCitQQVNT
CitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitFeHBlY3Rl
ZCA1ODAgZm9yIG9mZnNldExlZnQsIGJ1dCBnb3QgMC4gRXhwZWN0ZWQgNTgwIGZvciBvZmZzZXRM
ZWZ0LCBidXQgZ290IDAuIEV4cGVjdGVkIDU4MCBmb3Igb2Zmc2V0TGVmdCwgYnV0IGdvdCAwLgor
RXhwZWN0ZWQgNTgwIGZvciBvZmZzZXRMZWZ0LCBidXQgZ290IDAuIEV4cGVjdGVkIDE4MCBmb3Ig
b2Zmc2V0VG9wLCBidXQgZ290IDAuIEV4cGVjdGVkIDU4MCBmb3Igb2Zmc2V0TGVmdCwgYnV0IGdv
dCAxNTAuIEV4cGVjdGVkIDE4MCBmb3Igb2Zmc2V0VG9wLCBidXQgZ290IDAuIEV4cGVjdGVkIDU4
MCBmb3Igb2Zmc2V0TGVmdCwgYnV0IGdvdCA0NTAuIEV4cGVjdGVkIDE4MCBmb3Igb2Zmc2V0VG9w
LCBidXQgZ290IDAuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmxleGJveC93cml0
aW5nLW1vZGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rlcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM0ZDI0MmVmNTg3ZTA1ODYyMWQ1OTUzMmY1YjA5NTk1MWFlNmM2ZTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rl
cy5odG1sCkBAIC0wLDAgKzEsMTY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxl
PgorYm9keSB7CisgICAgbWFyZ2luOiAwOworfQorLyogRklYTUU6IGZsZXhib3guanMgaXRlcmF0
ZXMgb3ZlciBob3Jpem9udGFsLWJveCBlbGVtZW50cy4gUmVuYW1lIHRoaXMgdG8gZmxleGJveC4g
Ki8KKy5ob3Jpem9udGFsLWJveCB7CisgICAgd2lkdGg6IDYwMHB4OworICAgIGRpc3BsYXk6IC13
ZWJraXQtZmxleGJveDsKK30KKy5ob3Jpem9udGFsLWJveCBkaXYgeworICAgIGhlaWdodDogMjBw
eDsKKyAgICBib3JkZXI6IDA7Cit9CisKKy5ydGwgeworICAgIGRpcmVjdGlvbjogcnRsOworfQor
CisuYnQgeworICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLWJ0OworfQorCisu
dmVydGljYWwtcmwsIC52ZXJ0aWNhbC1sciB7CisgICAgaGVpZ2h0OiA2MDBweDsKK30KKworOi13
ZWJraXQtYW55KC52ZXJ0aWNhbC1ybCwgLnZlcnRpY2FsLWxyKSBkaXYgeworICAgIHdpZHRoOiAy
MHB4OworfQorCisudmVydGljYWwtcmwgeworICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0
aWNhbC1ybDsKK30KKworLnZlcnRpY2FsLWxyIHsKKyAgICAtd2Via2l0LXdyaXRpbmctbW9kZTog
dmVydGljYWwtbHI7Cit9CisKKy5ob3Jpem9udGFsLWJveCA6bnRoLWNoaWxkKDEpIHsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBibHVlOworfQorLmhvcml6b250YWwtYm94IDpudGgtY2hpbGQoMikg
eworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorLmhvcml6b250YWwtYm94IDpudGgt
Y2hpbGQoMykgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZmxleGJveC5qcyI+PC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9ImNoZWNrSG9yaXpvbnRhbEJveGVu
KCkiPiAgICAgICAgCisKKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94IHJ0bCI+CisgIDxkaXYg
ZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtb2Zmc2V0LXg9IjUwMCIgc3R5bGU9IndpZHRo
OiAtd2Via2l0LWZsZXgoMSAwIDApOyBtYXJnaW46IDAgYXV0bzsiPjwvZGl2PgorICA8ZGl2IGRh
dGEtZXhwZWN0ZWQtd2lkdGg9IjMwMCIgZGF0YS1vZmZzZXQteD0iMTUwIiBzdHlsZT0id2lkdGg6
IC13ZWJraXQtZmxleCgyIDAgMCk7IHBhZGRpbmc6IDAgMTAwcHg7Ij48L2Rpdj4KKyAgPGRpdiBk
YXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1vZmZzZXQteD0iMTAwIiBzdHlsZT0id2lkdGg6
IC13ZWJraXQtZmxleCgxIDAgMCk7IG1hcmdpbi1sZWZ0OiAxMDBweDsiPjwvZGl2PgorPC9kaXY+
CisKKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94IHJ0bCI+CisgIDxkaXYgZGF0YS1leHBlY3Rl
ZC13aWR0aD0iNTAiIGRhdGEtb2Zmc2V0LXg9IjUwMCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZs
ZXgoMSAwIDApOyBtYXJnaW46IDAgYXV0bzsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQt
d2lkdGg9IjMwMCIgZGF0YS1vZmZzZXQteD0iMTUwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxl
eCgyIDAgMCk7IHBhZGRpbmc6IDAgMTAwcHg7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVk
LXdpZHRoPSI1MCIgZGF0YS1vZmZzZXQteD0iMCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZsZXgo
MSAwIDApOyAtd2Via2l0LW1hcmdpbi1zdGFydDogMTAwcHg7Ij48L2Rpdj4KKzwvZGl2PgorCis8
ZGl2IGNsYXNzPSJob3Jpem9udGFsLWJveCBydGwiIHN0eWxlPSItd2Via2l0LW1hcmdpbi1zdGFy
dDogMjBweDstd2Via2l0LW1hcmdpbi1lbmQ6IDUwcHg7Ij4KKyAgPGRpdiBkYXRhLWV4cGVjdGVk
LXdpZHRoPSI1MCIgZGF0YS1vZmZzZXQteD0iNTUwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxl
eCgxIDAgMCk7IG1hcmdpbjogMCBhdXRvOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC13
aWR0aD0iMzAwIiBkYXRhLW9mZnNldC14PSIyMDAiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4
KDIgMCAwKTsgcGFkZGluZzogMCAxMDBweDsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQt
d2lkdGg9IjUwIiBkYXRhLW9mZnNldC14PSI1MCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZsZXgo
MSAwIDApOyAtd2Via2l0LW1hcmdpbi1zdGFydDogMTAwcHg7Ij48L2Rpdj4KKzwvZGl2PgorCis8
ZGl2IHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZSI+Cis8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWJv
eCB2ZXJ0aWNhbC1sciI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE1MCIgZGF0YS1v
ZmZzZXQteT0iMCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAwKTsiPjwvZGl2Pgor
ICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMDAiIGRhdGEtb2Zmc2V0LXk9IjE1MCIgc3R5
bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDIgMCAwKTsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhw
ZWN0ZWQtaGVpZ2h0PSIxNTAiIGRhdGEtb2Zmc2V0LXk9IjQ1MCIgc3R5bGU9ImhlaWdodDogLXdl
YmtpdC1mbGV4KDEgMCAwKTsiPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0i
cG9zaXRpb246cmVsYXRpdmUiPgorPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggdmVydGljYWwt
bHIiPgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxNTAiIGRhdGEtb2Zmc2V0LXk9IjAi
IHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKyAgPGRpdiBkYXRh
LWV4cGVjdGVkLWhlaWdodD0iMzAwIiBkYXRhLW9mZnNldC15PSIxNTAiIGNsYXNzPSJidCIgc3R5
bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDIgMCAwKTsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhw
ZWN0ZWQtaGVpZ2h0PSIxNTAiIGRhdGEtb2Zmc2V0LXk9IjQ1MCIgc3R5bGU9ImhlaWdodDogLXdl
YmtpdC1mbGV4KDEgMCAwKTsiPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0i
cG9zaXRpb246cmVsYXRpdmUiPgorPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggdmVydGljYWwt
bHIiPgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI0NTAiIGRhdGEtb2Zmc2V0LXk9IjAi
IHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7LXdlYmtpdC1wYWRkaW5nLXN0YXJ0
OjIwMHB4Oy13ZWJraXQtcGFkZGluZy1lbmQ6MjAwcHg7LXdlYmtpdC1wYWRkaW5nLWJlZm9yZTox
MDBweDstd2Via2l0LXBhZGRpbmctYWZ0ZXI6MTAwcHg7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4
cGVjdGVkLWhlaWdodD0iMTAwIiBkYXRhLW9mZnNldC15PSI0NTAiIHN0eWxlPSJoZWlnaHQ6IC13
ZWJraXQtZmxleCgyIDAgMCk7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
NTAiIGRhdGEtb2Zmc2V0LXk9IjU1MCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAw
KTsiPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0icG9zaXRpb246cmVsYXRp
dmUiPgorPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggdmVydGljYWwtbHIiPgorICA8ZGl2IGRh
dGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMDAiIGRhdGEtb2Zmc2V0LXk9IjAiIGNsYXNzPSJidCIgc3R5
bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAwKTstd2Via2l0LXBhZGRpbmctc3RhcnQ6MjAw
cHg7LXdlYmtpdC1wYWRkaW5nLWVuZDoyMDBweDstd2Via2l0LXBhZGRpbmctYmVmb3JlOjEwMHB4
Oy13ZWJraXQtcGFkZGluZy1hZnRlcjoxMDBweDsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0
ZWQtaGVpZ2h0PSIyMDAiIGRhdGEtb2Zmc2V0LXk9IjMwMCIgc3R5bGU9ImhlaWdodDogLXdlYmtp
dC1mbGV4KDIgMCAwKTsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAi
IGRhdGEtb2Zmc2V0LXk9IjUwMCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAwKTsi
PjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKworCis8ZGl2IHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2
ZSI+Cis8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWJveCB2ZXJ0aWNhbC1sciI+CisgIDxkaXYgZGF0
YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCIgZGF0YS1vZmZzZXQteT0iMTAwIiBzdHlsZT0iaGVpZ2h0
OiAtd2Via2l0LWZsZXgoMSAwIDApOyBtYXJnaW46IGF1dG8gMDsiPjwvZGl2PgorICA8ZGl2IGRh
dGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMDAiIGRhdGEtb2Zmc2V0LXk9IjMwMCIgc3R5bGU9ImhlaWdo
dDogLXdlYmtpdC1mbGV4KDIgMCAwKTsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVp
Z2h0PSIxMDAiIGRhdGEtb2Zmc2V0LXk9IjUwMCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4
KDEgMCAwKTsiPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0icG9zaXRpb246
cmVsYXRpdmUiPgorPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggdmVydGljYWwtbHIiPgorICA8
ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiIGRhdGEtb2Zmc2V0LXk9IjEwMCIgc3R5bGU9
ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAwKTstd2Via2l0LW1hcmdpbi1zdGFydDphdXRvOy13
ZWJraXQtbWFyZ2luLWVuZDphdXRvOy13ZWJraXQtbWFyZ2luLWJlZm9yZTowOy13ZWJraXQtbWFy
Z2luLWFmdGVyOjA7OyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCIg
ZGF0YS1vZmZzZXQteT0iMzAwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMiAwIDApOyI+
PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCIgZGF0YS1vZmZzZXQteT0i
NTAwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMSAwIDApOyI+PC9kaXY+Cis8L2Rpdj4K
KzwvZGl2PgorCis8ZGl2IHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZSI+Cis8ZGl2IGNsYXNzPSJo
b3Jpem9udGFsLWJveCB2ZXJ0aWNhbC1sciI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9
IjE1MCIgZGF0YS1vZmZzZXQteT0iMCIgY2xhc3M9ImJ0IiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0
LWZsZXgoMSAwIDApOy13ZWJraXQtbWFyZ2luLXN0YXJ0OmF1dG87LXdlYmtpdC1tYXJnaW4tZW5k
OmF1dG87LXdlYmtpdC1tYXJnaW4tYmVmb3JlOjA7LXdlYmtpdC1tYXJnaW4tYWZ0ZXI6MDs7Ij48
L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAwIiBkYXRhLW9mZnNldC15PSIx
NTAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgyIDAgMCk7Ij48L2Rpdj4KKyAgPGRpdiBk
YXRhLWV4cGVjdGVkLWhlaWdodD0iMTUwIiBkYXRhLW9mZnNldC15PSI0NTAiIHN0eWxlPSJoZWln
aHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKzxkaXYg
c3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94IHZl
cnRpY2FsLWxyIHJ0bCI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjUwIiBkYXRhLW9m
ZnNldC15PSI1MDAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7IG1hcmdpbjog
YXV0byAwOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwMCIgZGF0YS1v
ZmZzZXQteT0iMTUwIiBjbGFzcz0iYnQiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgyIDAg
MCk7IHBhZGRpbmc6IDEwMHB4IDA7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdo
dD0iNTAiIGRhdGEtb2Zmc2V0LXk9IjAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAg
MCk7IC13ZWJraXQtbWFyZ2luLXN0YXJ0OiAxMDBweDsiPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4K
KworPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggdmVydGljYWwtbHIiPgorICA8ZGl2IGRhdGEt
ZXhwZWN0ZWQtaGVpZ2h0PSIzNTAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDEgNDAw
cHgpOyBtaW4taGVpZ2h0OiAzNTBweDsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVp
Z2h0PSIyNTAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDEgNDAwcHgpOyI+PC9kaXY+
Cis8L2Rpdj4KKworPCEtLSBGSVhNRTogVGhlcmUncyBhIGJ1ZyB3aGVyZSBvZmZzZXRMZWZ0IHJl
cG9ydHMgdGhlIHdyb25nIHZhbHVlIGluIHZlcnRpY2FsLXJsIHdyaXRpbmctbW9kZS4tLT4KKzxk
aXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94
IHZlcnRpY2FsLXJsIj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTUwIiBkYXRhLW9m
ZnNldC15PSIwIiBkYXRhLW9mZnNldC14PSI1ODAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxl
eCgxIDAgMCk7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAwIiBkYXRh
LW9mZnNldC15PSIxNTAiIGRhdGEtb2Zmc2V0LXg9IjU4MCIgc3R5bGU9ImhlaWdodDogLXdlYmtp
dC1mbGV4KDIgMCAwKTsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxNTAi
IGRhdGEtb2Zmc2V0LXk9IjQ1MCIgZGF0YS1vZmZzZXQteD0iNTgwIiBzdHlsZT0iaGVpZ2h0OiAt
d2Via2l0LWZsZXgoMSAwIDApOyI+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorCis8IS0tIEZJWE1F
OiBUaGVyZSdzIGEgYnVnIHdoZXJlIG9mZnNldFRvcCByZXBvcnRzIHRoZSB3cm9uZyB2YWx1ZSBp
biBob3Jpem9udGFsLWJ0IHdyaXRpbmctbW9kZS4tLT4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOnJl
bGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94IGJ0IiBzdHlsZT0iaGVpZ2h0OjIw
MHB4Ij4KKyAgPGRpdiBkYXRhLW9mZnNldC15PSIxODAiIGRhdGEtb2Zmc2V0LXg9IjU4MCIgc3R5
bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMSAwIDApOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1vZmZz
ZXQteT0iMTgwIiBkYXRhLW9mZnNldC14PSI1ODAiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4
KDIgMCAwKTsiPjwvZGl2PgorICA8ZGl2IGRhdGEtb2Zmc2V0LXk9IjE4MCIgZGF0YS1vZmZzZXQt
eD0iNTgwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2
PgorPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNzUxZDRjOTcyZjlhOWUzZDEzYzMyMmQzODZmNTJjMTc2YmIwZDljYS4u
NGExOWQwYmJhYTE1MmY3YzY0OTNlY2U0ZmQyZmFmYTFlZDk3NjcyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM1IEBACisyMDExLTA5LTE4ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgY2hhbmdlIFJlbmRlckZsZXhpYmxlQm94IHRvIGFjdCBvbiBsb2dpY2FsIGNv
b3JkaW5hdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgbWFrZXMgUmVuZGVyRmxleGlibGVCb3ggcmVzcGVjdCBkaXJlY3Rpb24gYW5kIHdyaXRp
bmctbW9kZS4KKyAgICAgICAgV2Ugbm93IHByb3Blcmx5IHN1cHBvcnQgdGhlIGRlZmF1bHQgZmxl
eC1mbG93IHZhbHVlIG9mICJyb3ciLgorCisgICAgICAgIFRlc3Q6IGNzczMvZmxleGJveC93cml0
aW5nLW1vZGVzLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2V0TG9naWNhbExvY2F0aW9uRm9yQ2hpbGQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJs
ZUJveDo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
OmxvZ2ljYWxCb3JkZXJXaWR0aEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
ZXhpYmxlQm94Ojpsb2dpY2FsUGFkZGluZ1dpZHRoRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luU3RhcnRTdHlsZUZvckNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5FbmRTdHls
ZUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJy
ZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmxheW91dElubGluZURpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbFBvc2l0aXZlRmxleEZvckNoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnJ1
bkZyZWVTcGFjZUFsbG9jYXRpb25BbGdvcml0aG1JbmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnNldExvZ2ljYWxPdmVycmlkZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW5J
bmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
OgorCiAyMDExLTA5LTE4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJ5IHRvIGZpeCB0aGUgQ2hyb21pdW0gTWFjIGJ1aWxkIGFmdGVyIHI5NTM5MS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDJhZDM4ODA4NGYzNDIzYjIz
ZjE5NjlkMTA5YWQ4NmI1ZWVjOTg1NWQuLjYwZWE4ODhkNWMwZTU1ZWU5YTllNDljMTY0YWIwODVi
YzU2OGQzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAt
MTg2OSw2ICsxODY5LDE0IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmhhbmRsZUFmdGVyU2lkZU9mQmxv
Y2soTGF5b3V0VW5pdCBiZWZvcmVTaWRlLCBMYXlvdXRVbml0IGFmdGVyCiAgICAgc2V0Q29sbGFw
c2VkQm90dG9tTWFyZ2luKG1hcmdpbkluZm8pOwogfQogCit2b2lkIFJlbmRlckJsb2NrOjpzZXRM
b2dpY2FsTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRQb2lu
dCYgbG9jYXRpb24pCit7CisgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpCisgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbihsb2NhdGlvbik7CisgICAgZWxzZQorICAg
ICAgICBjaGlsZC0+c2V0TG9jYXRpb24obG9jYXRpb24udHJhbnNwb3NlZFBvaW50KCkpOworfQor
CiB2b2lkIFJlbmRlckJsb2NrOjpzZXRMb2dpY2FsTGVmdEZvckNoaWxkKFJlbmRlckJveCogY2hp
bGQsIExheW91dFVuaXQgbG9naWNhbExlZnQsIEFwcGx5TGF5b3V0RGVsdGFNb2RlIGFwcGx5RGVs
dGEpCiB7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZGEyOWQ0YTViMjQxNDM1MDhiYjZjNTdmZTcx
NjcyZGE4ODFjNTdmYy4uOGU1ODg3ZTBiMTk2YjU1YmM4YWE5YjQ0ZWI3NTJjNmRlOGQ4ZDkyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTIwOSw2ICsyMDksNyBA
QCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94
KiBjaGlsZCkgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5oZWln
aHQoKSA6IGNoaWxkLT53aWR0aCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCkgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IGNoaWxkLT55KCkgOiBjaGlsZC0+eCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdEZv
ckNoaWxkKFJlbmRlckJveCogY2hpbGQpIHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBjaGlsZC0+eCgpIDogY2hpbGQtPnkoKTsgfQorICAgIHZvaWQgc2V0TG9naWNhbExvY2F0
aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2
b2lkIHNldExvZ2ljYWxMZWZ0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCwgQXBwbHlMYXlvdXREZWx0YU1vZGUgPSBEb05vdEFwcGx5TGF5b3V0RGVsdGEp
OwogICAgIHZvaWQgc2V0TG9naWNhbFRvcEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91
dFVuaXQgbG9naWNhbFRvcCwgQXBwbHlMYXlvdXREZWx0YU1vZGUgPSBEb05vdEFwcGx5TGF5b3V0
RGVsdGEpOwogICAgIExheW91dFVuaXQgbWFyZ2luQmVmb3JlRm9yQ2hpbGQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGNoaWxkKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDBhNDA0ZGE0ZjE3ZTFhYjhjODcwOTFlOTk4MmUwMmQ0
MDI3MmRmNWMuLjk4MGFlOTRkNzZlYTBhYTkxNDFlZDUzZTIxYmZjMmVjNDhiZWU2YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtOTks
OCArOTksNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIGludCwgQmxvY2tMYXlvdXRQYXNzKQogCiAgICAgbV9vdmVyZmxvdy5jbGVh
cigpOwogCi0gICAgLy8gRklYTUU6IEFzc3VtZSBob3Jpem9udGFsIGxheW91dCB1bnRpbCBmbGV4
LWZsb3cgaXMgYWRkZWQuCi0gICAgbGF5b3V0SG9yaXpvbnRhbEJsb2NrKHJlbGF5b3V0Q2hpbGRy
ZW4pOworICAgIGxheW91dElubGluZURpcmVjdGlvbihyZWxheW91dENoaWxkcmVuKTsKIAogICAg
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTExNCw0NyArMTEzLDg2IEBAIHZvaWQgUmVu
ZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgaW50LCBC
bG9ja0xheW91dFBhc3MpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCi1zdGF0aWMg
TGF5b3V0VW5pdCBwcmVmZXJyZWRGbGV4SXRlbUNvbnRlbnRXaWR0aChSZW5kZXJCb3gqIGNoaWxk
KQorTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbEJvcmRlcldpZHRoRm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCkKIHsKLSAgICAvLyBGSVhNRTogSGFuZGxlIHZlcnRpY2FsIHdy
aXRpbmcgbW9kZXMgd2l0aCBob3Jpem9udGFsIGZsZXhpbmcuCi0gICAgaWYgKGNoaWxkLT5zdHls
ZSgpLT53aWR0aCgpLmlzQXV0bygpKQotICAgICAgICByZXR1cm4gY2hpbGQtPm1heFByZWZlcnJl
ZExvZ2ljYWxXaWR0aCgpIC0gY2hpbGQtPmJvcmRlckxlZnQoKSAtIGNoaWxkLT5ib3JkZXJSaWdo
dCgpIC0gY2hpbGQtPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSAtIGNoaWxkLT5wYWRkaW5nTGVm
dCgpIC0gY2hpbGQtPnBhZGRpbmdSaWdodCgpOwotICAgIHJldHVybiBjaGlsZC0+Y29udGVudFdp
ZHRoKCk7CisgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAg
ICAgIHJldHVybiBjaGlsZC0+Ym9yZGVyTGVmdCgpICsgY2hpbGQtPmJvcmRlclJpZ2h0KCk7Cisg
ICAgcmV0dXJuIGNoaWxkLT5ib3JkZXJUb3AoKSArIGNoaWxkLT5ib3JkZXJCb3R0b20oKTsKIH0K
IAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbikKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxQYWRk
aW5nV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewotICAgIExheW91dFVuaXQgcHJl
ZmVycmVkU2l6ZTsKKyAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkK
KyAgICAgICAgcmV0dXJuIGNoaWxkLT5wYWRkaW5nTGVmdCgpICsgY2hpbGQtPnBhZGRpbmdSaWdo
dCgpOworICAgIHJldHVybiBjaGlsZC0+cGFkZGluZ1RvcCgpICsgY2hpbGQtPnBhZGRpbmdCb3R0
b20oKTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbFNjcm9sbGJh
ckhlaWdodEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCit7CisgICAgaWYgKHN0eWxlKCktPmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVybiBjaGlsZC0+aG9yaXpvbnRh
bFNjcm9sbGJhckhlaWdodCgpOworICAgIHJldHVybiBjaGlsZC0+dmVydGljYWxTY3JvbGxiYXJX
aWR0aCgpOworfQorCitMZW5ndGggUmVuZGVyRmxleGlibGVCb3g6Om1hcmdpblN0YXJ0U3R5bGVG
b3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQoreworICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpID8gY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKSA6IGNoaWxkLT5zdHlsZSgp
LT5tYXJnaW5SaWdodCgpOworICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luVG9wKCkgOiBjaGlsZC0+c3R5bGUoKS0+bWFy
Z2luQm90dG9tKCk7Cit9CisKK0xlbmd0aCBSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luRW5kU3R5
bGVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQoreworICAgIGlmIChzdHlsZSgpLT5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4gc3R5bGUoKS0+aXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpID8gY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCkgOiBjaGlsZC0+c3R5
bGUoKS0+bWFyZ2luTGVmdCgpOworICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luQm90dG9tKCkgOiBjaGlsZC0+c3R5bGUo
KS0+bWFyZ2luVG9wKCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OnByZWZl
cnJlZExvZ2ljYWxDb250ZW50V2lkdGhGb3JGbGV4SXRlbShSZW5kZXJCb3gqIGNoaWxkKQorewor
ICAgIExlbmd0aCB3aWR0aCA9IHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBj
aGlsZC0+c3R5bGUoKS0+d2lkdGgoKSA6IGNoaWxkLT5zdHlsZSgpLT5oZWlnaHQoKTsKKyAgICBp
ZiAod2lkdGguaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBjaGlsZC0+bWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoKCkgLSBsb2dpY2FsQm9yZGVyV2lkdGhGb3JDaGlsZChjaGlsZCkgLSBsb2dpY2Fs
U2Nyb2xsYmFySGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpIC0gbG9naWNhbFBhZGRpbmdXaWR0aEZvckNo
aWxkKGNoaWxkKTsKKyAgICByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IGNoaWxkLT5jb250ZW50V2lkdGgoKSA6IGNoaWxkLT5jb250ZW50SGVpZ2h0KCk7Cit9CisK
K3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dElubGluZURpcmVjdGlvbihib29sIHJlbGF5
b3V0Q2hpbGRyZW4pCit7CisgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRMb2dpY2FsV2lkdGg7CiAg
ICAgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5OwogICAgIGZsb2F0IHRvdGFsTmVnYXRp
dmVGbGV4aWJpbGl0eTsKICAgICBGbGV4aWJsZUJveEl0ZXJhdG9yIGl0ZXJhdG9yKHRoaXMpOwog
Ci0gICAgY29tcHV0ZVByZWZlcnJlZFNpemVIb3Jpem9udGFsKHJlbGF5b3V0Q2hpbGRyZW4sIGl0
ZXJhdG9yLCBwcmVmZXJyZWRTaXplLCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIHRvdGFsTmVn
YXRpdmVGbGV4aWJpbGl0eSk7Ci0gICAgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UgPSBj
b250ZW50V2lkdGgoKSAtIHByZWZlcnJlZFNpemU7CisgICAgY29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aChyZWxheW91dENoaWxkcmVuLCBpdGVyYXRvciwgcHJlZmVycmVkTG9naWNhbFdpZHRo
LCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSk7Cisg
ICAgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UgPSBjb250ZW50TG9naWNhbFdpZHRoKCkg
LSBwcmVmZXJyZWRMb2dpY2FsV2lkdGg7CiAKICAgICBJbmZsZXhpYmxlRmxleEl0ZW1TaXplIGlu
ZmxleGlibGVJdGVtczsKICAgICBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiBjaGlsZFNpemVzOwot
ICAgIHdoaWxlICghcnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRobUhvcml6b250YWwoYXZh
aWxhYmxlRnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIHRvdGFsTmVnYXRpdmVG
bGV4aWJpbGl0eSwgaW5mbGV4aWJsZUl0ZW1zLCBjaGlsZFNpemVzKSkgeworICAgIHdoaWxlICgh
cnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRobUlubGluZURpcmVjdGlvbihhdmFpbGFibGVG
cmVlU3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhpYmls
aXR5LCBpbmZsZXhpYmxlSXRlbXMsIGNoaWxkU2l6ZXMpKSB7CiAgICAgICAgIEFTU0VSVCh0b3Rh
bFBvc2l0aXZlRmxleGliaWxpdHkgPj0gMCAmJiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgPj0g
MCk7CiAgICAgICAgIEFTU0VSVChpbmZsZXhpYmxlSXRlbXMuc2l6ZSgpID4gMCk7CiAgICAgfQog
Ci0gICAgbGF5b3V0QW5kUGxhY2VDaGlsZHJlbkhvcml6b250YWwoY2hpbGRTaXplcywgYXZhaWxh
YmxlRnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpOworICAgIGxheW91dEFuZFBs
YWNlQ2hpbGRyZW5JbmxpbmVEaXJlY3Rpb24oY2hpbGRTaXplcywgYXZhaWxhYmxlRnJlZVNwYWNl
LCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpOwogCi0gICAgLy8gRklYTUU6IEhhbmRsZSBkaXN0
cmlidXRpb24gb2YgdmVydGljYWwgc3BhY2UgKHRoaXJkIGRpc3RyaWJ1dGlvbiByb3VuZCkuCisg
ICAgLy8gRklYTUU6IEhhbmRsZSBkaXN0cmlidXRpb24gb2YgY3Jvc3MtYXhpcyBzcGFjZSAodGhp
cmQgZGlzdHJpYnV0aW9uIHJvdW5kKS4KK30KKworZmxvYXQgUmVuZGVyRmxleGlibGVCb3g6Omxv
Z2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQoreworICAgIHJldHVy
biBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPnN0eWxlKCktPmZs
ZXhib3hXaWR0aFBvc2l0aXZlRmxleCgpIDogY2hpbGQtPnN0eWxlKCktPmZsZXhib3hIZWlnaHRQ
b3NpdGl2ZUZsZXgoKTsKIH0KIAotc3RhdGljIExheW91dFVuaXQgcHJlZmVycmVkU2l6ZUZvck1h
cmdpbnNBbmRQYWRkaW5nKExlbmd0aCBsZW5ndGgsIExheW91dFVuaXQgY29udGFpbmVyTGVuZ3Ro
KQorZmxvYXQgUmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxOZWdhdGl2ZUZsZXhGb3JDaGlsZChS
ZW5kZXJCb3gqIGNoaWxkKQogewotICAgIHJldHVybiBsZW5ndGguY2FsY01pblZhbHVlKGNvbnRh
aW5lckxlbmd0aCk7CisgICAgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBjaGlsZC0+c3R5bGUoKS0+ZmxleGJveFdpZHRoTmVnYXRpdmVGbGV4KCkgOiBjaGlsZC0+
c3R5bGUoKS0+ZmxleGJveEhlaWdodE5lZ2F0aXZlRmxleCgpOwogfQogCi12b2lkIFJlbmRlckZs
ZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkU2l6ZUhvcml6b250YWwoYm9vbCByZWxheW91dENo
aWxkcmVuLCBGbGV4aWJsZUJveEl0ZXJhdG9yJiBpdGVyYXRvciwgTGF5b3V0VW5pdCYgcHJlZmVy
cmVkU2l6ZSwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVn
YXRpdmVGbGV4aWJpbGl0eSkKK3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGgoYm9vbCByZWxheW91dENoaWxkcmVuLCBGbGV4aWJsZUJveEl0ZXJhdG9y
JiBpdGVyYXRvciwgTGF5b3V0VW5pdCYgcHJlZmVycmVkTG9naWNhbFdpZHRoLCBmbG9hdCYgdG90
YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KQog
ewotICAgIHByZWZlcnJlZFNpemUgPSAwOworICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IDA7
CiAgICAgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5ID0gdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5
ID0gMDsKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUgdmVydGljYWwgd3JpdGluZyBtb2RlcyB3aXRo
IGhvcml6b250YWwgZmxleGluZy4KICAgICBMYXlvdXRVbml0IGZsZXhib3hBdmFpbGFibGVMb2dp
Y2FsV2lkdGggPSBhdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKICAgICBmb3IgKFJlbmRlckJveCog
Y2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkp
IHsKICAgICAgICAgLy8gV2UgYWx3YXlzIGhhdmUgdG8gbGF5IG91dCBmbGV4aWJsZSBvYmplY3Rz
IGFnYWluLCBzaW5jZSB0aGUgZmxleCBkaXN0cmlidXRpb24KQEAgLTE2NCw1OSArMjAyLDY0IEBA
IHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRTaXplSG9yaXpvbnRhbChi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIEZsCiAgICAgICAgICAgICBjaGlsZC0+c2V0Q2hpbGROZWVk
c0xheW91dCh0cnVlKTsKICAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7CiAKLSAgICAg
ICAgcHJlZmVycmVkU2l6ZSArPSBwcmVmZXJyZWRTaXplRm9yTWFyZ2luc0FuZFBhZGRpbmcoY2hp
bGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKSwgZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7
Ci0gICAgICAgIHByZWZlcnJlZFNpemUgKz0gcHJlZmVycmVkU2l6ZUZvck1hcmdpbnNBbmRQYWRk
aW5nKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLCBmbGV4Ym94QXZhaWxhYmxlTG9naWNh
bFdpZHRoKTsKLSAgICAgICAgcHJlZmVycmVkU2l6ZSArPSBwcmVmZXJyZWRTaXplRm9yTWFyZ2lu
c0FuZFBhZGRpbmcoY2hpbGQtPnN0eWxlKCktPnBhZGRpbmdMZWZ0KCksIGZsZXhib3hBdmFpbGFi
bGVMb2dpY2FsV2lkdGgpOwotICAgICAgICBwcmVmZXJyZWRTaXplICs9IHByZWZlcnJlZFNpemVG
b3JNYXJnaW5zQW5kUGFkZGluZyhjaGlsZC0+c3R5bGUoKS0+cGFkZGluZ1JpZ2h0KCksIGZsZXhi
b3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSkgeworICAgICAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9
IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFi
bGVMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGNo
aWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxl
TG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGls
ZC0+c3R5bGUoKS0+cGFkZGluZ0xlZnQoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCk7CisgICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQt
PnN0eWxlKCktPnBhZGRpbmdSaWdodCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByZWZlcnJlZExvZ2lj
YWxXaWR0aCArPSBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luVG9wKCkuY2FsY01pblZhbHVlKGZsZXhi
b3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgcHJlZmVycmVkTG9naWNhbFdp
ZHRoICs9IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20oKS5jYWxjTWluVmFsdWUoZmxleGJv
eEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lk
dGggKz0gY2hpbGQtPnN0eWxlKCktPnBhZGRpbmdUb3AoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGgg
Kz0gY2hpbGQtPnN0eWxlKCktPnBhZGRpbmdCb3R0b20oKS5jYWxjTWluVmFsdWUoZmxleGJveEF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIH0KIAotICAgICAgICBpZiAoY2hpbGQtPnN0
eWxlKCktPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSkKKyAgICAgICAgaWYgKG1hcmdpblN0YXJ0U3R5
bGVGb3JDaGlsZChjaGlsZCkuaXNBdXRvKCkpCiAgICAgICAgICAgICB0b3RhbFBvc2l0aXZlRmxl
eGliaWxpdHkgKz0gMTsKLSAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgp
LmlzQXV0bygpKQorICAgICAgICBpZiAobWFyZ2luRW5kU3R5bGVGb3JDaGlsZChjaGlsZCkuaXNB
dXRvKCkpCiAgICAgICAgICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgKz0gMTsKIAotICAg
ICAgICBwcmVmZXJyZWRTaXplICs9IGNoaWxkLT5ib3JkZXJMZWZ0KCkgKyBjaGlsZC0+Ym9yZGVy
UmlnaHQoKTsKLQotICAgICAgICBwcmVmZXJyZWRTaXplICs9IHByZWZlcnJlZEZsZXhJdGVtQ29u
dGVudFdpZHRoKGNoaWxkKTsKKyAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGxvZ2lj
YWxCb3JkZXJXaWR0aEZvckNoaWxkKGNoaWxkKTsKKyAgICAgICAgcHJlZmVycmVkTG9naWNhbFdp
ZHRoICs9IHByZWZlcnJlZExvZ2ljYWxDb250ZW50V2lkdGhGb3JGbGV4SXRlbShjaGlsZCk7CiAK
LSAgICAgICAgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5ICs9IGNoaWxkLT5zdHlsZSgpLT5mbGV4
Ym94V2lkdGhQb3NpdGl2ZUZsZXgoKTsKLSAgICAgICAgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5
ICs9IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhOZWdhdGl2ZUZsZXgoKTsKKyAgICAgICAg
dG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5ICs9IGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChj
aGlsZCk7CisgICAgICAgIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSArPSBsb2dpY2FsTmVnYXRp
dmVGbGV4Rm9yQ2hpbGQoY2hpbGQpOwogICAgIH0KIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIHdl
IHN1Y2Nlc3NmdWxseSByYW4gdGhlIGFsZ29yaXRobSBhbmQgc2l6ZWQgdGhlIGZsZXggaXRlbXMu
Ci1ib29sIFJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGht
SG9yaXpvbnRhbChMYXlvdXRVbml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBv
c2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxl
eGlibGVGbGV4SXRlbVNpemUmIGluZmxleGlibGVJdGVtcywgV1RGOjpWZWN0b3I8TGF5b3V0VW5p
dD4mIGNoaWxkU2l6ZXMpCitib29sIFJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxv
Y2F0aW9uQWxnb3JpdGhtSW5saW5lRGlyZWN0aW9uKExheW91dFVuaXQmIGF2YWlsYWJsZUZyZWVT
cGFjZSwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRp
dmVGbGV4aWJpbGl0eSwgSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZSYgaW5mbGV4aWJsZUl0ZW1zLCBX
VEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcykKIHsKICAgICBGbGV4aWJsZUJveEl0
ZXJhdG9yIGl0ZXJhdG9yKHRoaXMpOwogICAgIGNoaWxkU2l6ZXMuY2xlYXIoKTsKIAotICAgIC8v
IEZJWE1FOiBIYW5kbGUgdmVydGljYWwgd3JpdGluZyBtb2RlcyB3aXRoIGhvcml6b250YWwgZmxl
eGluZy4KICAgICBMYXlvdXRVbml0IGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGggPSBhdmFp
bGFibGVMb2dpY2FsV2lkdGgoKTsKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRv
ci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAgTGF5
b3V0VW5pdCBjaGlsZFByZWZlcnJlZFNpemU7CiAgICAgICAgIGlmIChpbmZsZXhpYmxlSXRlbXMu
Y29udGFpbnMoY2hpbGQpKQogICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gaW5mbGV4
aWJsZUl0ZW1zLmdldChjaGlsZCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2hpbGRQ
cmVmZXJyZWRTaXplID0gcHJlZmVycmVkRmxleEl0ZW1Db250ZW50V2lkdGgoY2hpbGQpOworICAg
ICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gcHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0
aEZvckZsZXhJdGVtKGNoaWxkKTsKICAgICAgICAgICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2Ug
PiAwICYmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSA+IDApIHsKLSAgICAgICAgICAgICAgICBj
aGlsZFByZWZlcnJlZFNpemUgKz0gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgKiBjaGlsZC0+
c3R5bGUoKS0+ZmxleGJveFdpZHRoUG9zaXRpdmVGbGV4KCkgLyB0b3RhbFBvc2l0aXZlRmxleGli
aWxpdHkpOworICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSArPSBscm91bmRmKGF2
YWlsYWJsZUZyZWVTcGFjZSAqIGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0
b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpOwogCi0gICAgICAgICAgICAgICAgTGVuZ3RoIGNoaWxk
TWF4V2lkdGggPSBjaGlsZC0+c3R5bGUoKS0+bWF4V2lkdGgoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNoaWxkTWF4V2lkdGguaXNVbmRlZmluZWQoKSAmJiBjaGlsZE1heFdpZHRoLmlzU3BlY2lm
aWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplID4gY2hpbGRNYXhXaWR0aC5jYWxjVmFsdWUoZmxl
eGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRQ
cmVmZXJyZWRTaXplID0gY2hpbGRNYXhXaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAtPSBj
aGlsZFByZWZlcnJlZFNpemUgLSBwcmVmZXJyZWRGbGV4SXRlbUNvbnRlbnRXaWR0aChjaGlsZCk7
Ci0gICAgICAgICAgICAgICAgICAgIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSAtPSBjaGlsZC0+
c3R5bGUoKS0+ZmxleGJveFdpZHRoUG9zaXRpdmVGbGV4KCk7CisgICAgICAgICAgICAgICAgTGVu
Z3RoIGNoaWxkTG9naWNhbE1heFdpZHRoID0gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1heEhl
aWdodCgpOworICAgICAgICAgICAgICAgIGlmICghY2hpbGRMb2dpY2FsTWF4V2lkdGguaXNVbmRl
ZmluZWQoKSAmJiBjaGlsZExvZ2ljYWxNYXhXaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJl
ZmVycmVkU2l6ZSA+IGNoaWxkTG9naWNhbE1heFdpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxh
YmxlTG9naWNhbFdpZHRoKSkgeworICAgICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNp
emUgPSBjaGlsZExvZ2ljYWxNYXhXaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCk7CisgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAtPSBjaGls
ZFByZWZlcnJlZFNpemUgLSBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0o
Y2hpbGQpOworICAgICAgICAgICAgICAgICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgLT0g
bG9naWNhbFBvc2l0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKIAogICAgICAgICAgICAgICAgICAg
ICBpbmZsZXhpYmxlSXRlbXMuc2V0KGNoaWxkLCBjaGlsZFByZWZlcnJlZFNpemUpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSBlbHNlIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPCAwICYmIHRvdGFsTmVnYXRpdmVGbGV4
aWJpbGl0eSA+IDApIHsKLSAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgKz0gbHJv
dW5kZihhdmFpbGFibGVGcmVlU3BhY2UgKiBjaGlsZC0+c3R5bGUoKS0+ZmxleGJveFdpZHRoTmVn
YXRpdmVGbGV4KCkgLyB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkpOworICAgICAgICAgICAgICAg
IGNoaWxkUHJlZmVycmVkU2l6ZSArPSBscm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAqIGxvZ2lj
YWxOZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkp
OwogCi0gICAgICAgICAgICAgICAgTGVuZ3RoIGNoaWxkTWluV2lkdGggPSBjaGlsZC0+c3R5bGUo
KS0+bWluV2lkdGgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTWluV2lkdGguaXNVbmRl
ZmluZWQoKSAmJiBjaGlsZE1pbldpZHRoLmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRT
aXplIDwgY2hpbGRNaW5XaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGRNaW5X
aWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSArPSBwcmVmZXJyZWRGbGV4SXRlbUNvbnRlbnRX
aWR0aChjaGlsZCkgLSBjaGlsZFByZWZlcnJlZFNpemU7Ci0gICAgICAgICAgICAgICAgICAgIHRv
dGFsTmVnYXRpdmVGbGV4aWJpbGl0eSAtPSBjaGlsZC0+c3R5bGUoKS0+ZmxleGJveFdpZHRoTmVn
YXRpdmVGbGV4KCk7CisgICAgICAgICAgICAgICAgTGVuZ3RoIGNoaWxkTG9naWNhbE1pbldpZHRo
ID0gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zdHlsZSgpLT5t
aW5XaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1pbkhlaWdodCgpOworICAgICAgICAgICAgICAg
IGlmICghY2hpbGRMb2dpY2FsTWluV2lkdGguaXNVbmRlZmluZWQoKSAmJiBjaGlsZExvZ2ljYWxN
aW5XaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA8IGNoaWxkTG9naWNh
bE1pbldpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSkgeworICAg
ICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZExvZ2ljYWxNaW5XaWR0
aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICAg
ICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSArPSBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRo
Rm9yRmxleEl0ZW0oY2hpbGQpIC0gY2hpbGRQcmVmZXJyZWRTaXplOworICAgICAgICAgICAgICAg
ICAgICB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgLT0gbG9naWNhbE5lZ2F0aXZlRmxleEZvckNo
aWxkKGNoaWxkKTsKIAogICAgICAgICAgICAgICAgICAgICBpbmZsZXhpYmxlSXRlbXMuc2V0KGNo
aWxkLCBjaGlsZFByZWZlcnJlZFNpemUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yMzMsNDIgKzI3Niw1NCBAQCBzdGF0aWMgYm9vbCBoYXNQYWNraW5nU3BhY2UoTGF5
b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0IHRvdGFsUG9zaXRpdmVGbAogICAgIHJl
dHVybiBhdmFpbGFibGVGcmVlU3BhY2UgPiAwICYmICF0b3RhbFBvc2l0aXZlRmxleGliaWxpdHk7
CiB9CiAKLXZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW5Ib3Jp
em9udGFsKGNvbnN0IFdURjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRV
bml0IGF2YWlsYWJsZUZyZWVTcGFjZSwgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KQor
dm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6c2V0TG9naWNhbE92ZXJyaWRlU2l6ZShSZW5kZXJCb3gq
IGNoaWxkLCBMYXlvdXRVbml0IGNoaWxkUHJlZmVycmVkU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTog
UmVuYW1lIHNldE92ZXJyaWRlV2lkdGgvc2V0T3ZlcnJpZGVIZWlnaHQgdG8gc2V0T3ZlcnJpZGVM
b2dpY2FsV2lkdGgvc2V0T3ZlcnJpZGVMb2dpY2FsSGVpZ2h0LgorICAgIGlmIChzdHlsZSgpLT5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICBjaGlsZC0+c3R5bGUoKS0+aXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zZXRPdmVycmlkZVdpZHRoKGNoaWxkUHJlZmVy
cmVkU2l6ZSkgOiBjaGlsZC0+c2V0T3ZlcnJpZGVIZWlnaHQoY2hpbGRQcmVmZXJyZWRTaXplKTsK
KyAgICBlbHNlCisgICAgICAgIGNoaWxkLT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gY2hpbGQtPnNldE92ZXJyaWRlSGVpZ2h0KGNoaWxkUHJlZmVycmVkU2l6ZSkgOiBjaGls
ZC0+c2V0T3ZlcnJpZGVXaWR0aChjaGlsZFByZWZlcnJlZFNpemUpOworfQorCit2b2lkIFJlbmRl
ckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuSW5saW5lRGlyZWN0aW9uKGNvbnN0
IFdURjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRVbml0IGF2YWlsYWJs
ZUZyZWVTcGFjZSwgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KQogewogICAgIEZsZXhp
YmxlQm94SXRlcmF0b3IgaXRlcmF0b3IodGhpcyk7Ci0gICAgLy8gTm93IHRoYXQgd2Uga25vdyB0
aGUgc2l6ZXMsIGxheW91dCBhbmQgcG9zaXRpb24gdGhlIGZsZXggaXRlbXMuCi0gICAgTGF5b3V0
VW5pdCB4T2Zmc2V0ID0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKKyAgICBMYXlvdXRV
bml0IHN0YXJ0RWRnZSA9IGJvcmRlclN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQoKTsKIAogICAgIGlm
IChoYXNQYWNraW5nU3BhY2UoYXZhaWxhYmxlRnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZlRmxleGli
aWxpdHkpKSB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5mbGV4UGFjaygpID09IFBhY2tFbmQpCi0g
ICAgICAgICAgICB4T2Zmc2V0ICs9IGF2YWlsYWJsZUZyZWVTcGFjZTsKKyAgICAgICAgICAgIHN0
YXJ0RWRnZSArPSBhdmFpbGFibGVGcmVlU3BhY2U7CiAgICAgICAgIGVsc2UgaWYgKHN0eWxlKCkt
PmZsZXhQYWNrKCkgPT0gUGFja0NlbnRlcikKLSAgICAgICAgICAgIHhPZmZzZXQgKz0gYXZhaWxh
YmxlRnJlZVNwYWNlIC8gMjsKKyAgICAgICAgICAgIHN0YXJ0RWRnZSArPSBhdmFpbGFibGVGcmVl
U3BhY2UgLyAyOwogICAgIH0KIAotICAgIExheW91dFVuaXQgeU9mZnNldCA9IGJvcmRlclRvcCgp
ICsgcGFkZGluZ1RvcCgpOwotICAgIHNldEhlaWdodCgwKTsKKyAgICBMYXlvdXRVbml0IGxvZ2lj
YWxUb3AgPSBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKTsKKyAgICBMYXlvdXRVbml0
IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Cisg
ICAgc2V0TG9naWNhbEhlaWdodCgwKTsKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChSZW5k
ZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gaXRlcmF0b3Iu
bmV4dCgpLCArK2kpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBjaGlsZFByZWZlcnJlZFNpemUgPSBj
aGlsZC0+Ym9yZGVyTGVmdCgpICsgY2hpbGQtPnBhZGRpbmdMZWZ0KCkgKyBjaGlsZFNpemVzW2ld
ICsgY2hpbGQtPnBhZGRpbmdSaWdodCgpICsgY2hpbGQtPmJvcmRlclJpZ2h0KCk7Ci0gICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgdmVydGljYWwgd3JpdGluZyBtb2RlcyB3aXRoIGhvcml6b250YWwg
ZmxleGluZy4KLSAgICAgICAgY2hpbGQtPnNldE92ZXJyaWRlV2lkdGgoY2hpbGRQcmVmZXJyZWRT
aXplKTsKKyAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBuZWVkIHRvIHRha2UgdGhlIHNjcm9s
bGJhciB3aWR0aCBpbnRvIGFjY291bnQ/CisgICAgICAgIExheW91dFVuaXQgY2hpbGRQcmVmZXJy
ZWRTaXplID0gY2hpbGRTaXplc1tpXSArIGxvZ2ljYWxCb3JkZXJXaWR0aEZvckNoaWxkKGNoaWxk
KSArIGxvZ2ljYWxQYWRkaW5nV2lkdGhGb3JDaGlsZChjaGlsZCk7CisgICAgICAgIHNldExvZ2lj
YWxPdmVycmlkZVNpemUoY2hpbGQsIGNoaWxkUHJlZmVycmVkU2l6ZSk7CiAgICAgICAgIGNoaWxk
LT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOwogICAgICAgICBjaGlsZC0+bGF5b3V0SWZOZWVk
ZWQoKTsKIAotICAgICAgICBzZXRIZWlnaHQoc3RkOjptYXgoaGVpZ2h0KCksIGJvcmRlclRvcCgp
ICsgcGFkZGluZ1RvcCgpICsgY2hpbGQtPm1hcmdpblRvcCgpICsgY2hpbGQtPmhlaWdodCgpICsg
Y2hpbGQtPm1hcmdpbkJvdHRvbSgpICsgcGFkZGluZ0JvdHRvbSgpICsgYm9yZGVyQm90dG9tKCkg
KyBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KCkpKTsKKyAgICAgICAgc2V0TG9naWNhbEhlaWdo
dChzdGQ6Om1heChsb2dpY2FsSGVpZ2h0KCksIGJvcmRlckJlZm9yZSgpICsgcGFkZGluZ0JlZm9y
ZSgpICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGQpICsgbG9naWNhbEhlaWdodEZvckNoaWxk
KGNoaWxkKSArIG1hcmdpbkFmdGVyRm9yQ2hpbGQoY2hpbGQpICsgcGFkZGluZ0FmdGVyKCkgKyBi
b3JkZXJBZnRlcigpICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKSk7CisKKyAgICAgICAgaWYg
KG1hcmdpblN0YXJ0U3R5bGVGb3JDaGlsZChjaGlsZCkuaXNBdXRvKCkpCisgICAgICAgICAgICBz
ZXRNYXJnaW5TdGFydEZvckNoaWxkKGNoaWxkLCBhdmFpbGFibGVGcmVlU3BhY2UgPiAwID8gbHJv
dW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpIDogMCk7
CisgICAgICAgIGlmIChtYXJnaW5FbmRTdHlsZUZvckNoaWxkKGNoaWxkKS5pc0F1dG8oKSkKKyAg
ICAgICAgICAgIHNldE1hcmdpbkVuZEZvckNoaWxkKGNoaWxkLCBhdmFpbGFibGVGcmVlU3BhY2Ug
PiAwID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0aXZlRmxleGliaWxp
dHkpIDogMCk7CiAKLSAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCkuaXNB
dXRvKCkpCi0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChhdmFpbGFibGVGcmVlU3Bh
Y2UgPiAwID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0aXZlRmxleGli
aWxpdHkpIDogMCk7Ci0gICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS0+bWFyZ2luUmlnaHQoKS5p
c0F1dG8oKSkKLSAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5SaWdodChhdmFpbGFibGVGcmVl
U3BhY2UgPiAwID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0aXZlRmxl
eGliaWxpdHkpIDogMCk7CisgICAgICAgIHN0YXJ0RWRnZSArPSBtYXJnaW5TdGFydEZvckNoaWxk
KGNoaWxkKTsKIAotICAgICAgICB4T2Zmc2V0ICs9IGNoaWxkLT5tYXJnaW5MZWZ0KCk7Ci0gICAg
ICAgIGNoaWxkLT5zZXRMb2NhdGlvbihJbnRQb2ludCh4T2Zmc2V0LCB5T2Zmc2V0KSk7Ci0gICAg
ICAgIHhPZmZzZXQgKz0gY2hpbGQtPndpZHRoKCkgKyBjaGlsZC0+bWFyZ2luUmlnaHQoKTsKKyAg
ICAgICAgTGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxXaWR0aEZvckNoaWxk
KGNoaWxkKTsKKyAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IHN0eWxlKCktPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSA/IHN0YXJ0RWRnZSA6IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdp
ZHRoIC0gc3RhcnRFZGdlIC0gY2hpbGRMb2dpY2FsV2lkdGg7CisgICAgICAgIHNldExvZ2ljYWxM
b2NhdGlvbkZvckNoaWxkKGNoaWxkLCBJbnRQb2ludChsb2dpY2FsTGVmdCwgbG9naWNhbFRvcCkp
OworICAgICAgICBzdGFydEVkZ2UgKz0gY2hpbGRMb2dpY2FsV2lkdGggKyBtYXJnaW5FbmRGb3JD
aGlsZChjaGlsZCk7CiAKICAgICAgICAgaWYgKGhhc1BhY2tpbmdTcGFjZShhdmFpbGFibGVGcmVl
U3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkgJiYgc3R5bGUoKS0+ZmxleFBhY2soKSA9
PSBQYWNrSnVzdGlmeSAmJiBjaGlsZFNpemVzLnNpemUoKSA+IDEpCi0gICAgICAgICAgICB4T2Zm
c2V0ICs9IGF2YWlsYWJsZUZyZWVTcGFjZSAvIChjaGlsZFNpemVzLnNpemUoKSAtIDEpOworICAg
ICAgICAgICAgc3RhcnRFZGdlICs9IGF2YWlsYWJsZUZyZWVTcGFjZSAvIChjaGlsZFNpemVzLnNp
emUoKSAtIDEpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guaAppbmRleCAzNjEzZTIwNmU2MTEzMTk2YTVlYjM5MjEwNWEzYWY3Y2ZhOWU1
NjNjLi5jYTU5MDI3OTVkODUwMzQzZWY4NGY4ZjUyMWU4ZTUwMWJlNTY0NjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtNTIsMTEgKzUyLDIy
IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRmxleGlibGVCb3hJdGVyYXRvcjsKICAgICB0eXBlZGVm
IFdURjo6SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0PiBJbmZsZXhpYmxlRmxl
eEl0ZW1TaXplOwogCi0gICAgdm9pZCBsYXlvdXRIb3Jpem9udGFsQmxvY2soYm9vbCByZWxheW91
dENoaWxkcmVuKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3JkZXJXaWR0aEZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpOworICAgIExheW91dFVuaXQgbG9naWNhbFBhZGRpbmdXaWR0aEZvckNo
aWxkKFJlbmRlckJveCogY2hpbGQpOworICAgIExheW91dFVuaXQgbG9naWNhbFNjcm9sbGJhckhl
aWdodEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpOworICAgIExlbmd0aCBtYXJnaW5TdGFydFN0
eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCk7CisgICAgTGVuZ3RoIG1hcmdpbkVuZFN0eWxl
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCk7CisgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRMb2dp
Y2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0oUmVuZGVyQm94KiBjaGlsZCk7CiAKLSAgICB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRTaXplSG9yaXpvbnRhbChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIEZs
ZXhpYmxlQm94SXRlcmF0b3ImLCBMYXlvdXRVbml0JiwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4
aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSk7Ci0gICAgYm9vbCBydW5G
cmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtSG9yaXpvbnRhbChMYXlvdXRVbml0JiBhdmFpbGFi
bGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3Rh
bE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxleGlibGVGbGV4SXRlbVNpemUmLCBXVEY6OlZlY3Rv
cjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcyk7Ci0gICAgdm9pZCBsYXlvdXRBbmRQbGFjZUNoaWxk
cmVuSG9yaXpvbnRhbChjb25zdCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcywg
TGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0IHRvdGFsUG9zaXRpdmVGbGV4aWJp
bGl0eSk7CisgICAgdm9pZCBsYXlvdXRJbmxpbmVEaXJlY3Rpb24oYm9vbCByZWxheW91dENoaWxk
cmVuKTsKKworICAgIGZsb2F0IGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJCb3gq
IGNoaWxkKTsKKyAgICBmbG9hdCBsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94
KiBjaGlsZCk7CisKKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGgoYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBGbGV4aWJsZUJveEl0ZXJhdG9yJiwgTGF5b3V0VW5pdCYsIGZsb2F0
JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxp
dHkpOworICAgIGJvb2wgcnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRobUlubGluZURpcmVj
dGlvbihMYXlvdXRVbml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBvc2l0aXZl
RmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxleGlibGVG
bGV4SXRlbVNpemUmLCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcyk7CisgICAg
dm9pZCBzZXRMb2dpY2FsT3ZlcnJpZGVTaXplKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQg
Y2hpbGRQcmVmZXJyZWRTaXplKTsKKyAgICB2b2lkIGxheW91dEFuZFBsYWNlQ2hpbGRyZW5Jbmxp
bmVEaXJlY3Rpb24oY29uc3QgV1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMsIExh
eW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCB0b3RhbFBvc2l0aXZlRmxleGliaWxp
dHkpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108063</attachid>
            <date>2011-09-20 15:22:55 -0700</date>
            <delta_ts>2011-09-20 15:33:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68129-20110920152254.patch</filename>
            <type>text/plain</type>
            <size>35273</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUzOTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNDk4NmMwY2ZmOWVjNjNmNjE5MzAz
ZmQ0NzQyNmEzZDAxYWI3NTI0Li40OTc5MDMxMWU3MzEzMWZhY2YwNWQ3MWFmYzQ5YTc4YjU3ZTlj
YmJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMTggIE9qYW4gVmFmYWkgIDxvamFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBjaGFuZ2UgUmVuZGVyRmxleGlibGVCb3ggdG8gYWN0
IG9uIGxvZ2ljYWwgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY4MTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBjc3MzL2ZsZXhib3gvcmVzb3VyY2VzL2ZsZXhib3guanM6CisgICAg
ICAgICogY3NzMy9mbGV4Ym94L3dyaXRpbmctbW9kZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rlcy5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OS0xOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83ODYwMjgxPiBEZWNvbXBvc2VkIHRleHQgaXMgZGlzcGxheWVkIGluY29ycmVjdGx5
IHdoZW4gVmVyZGFuYSBpcyBzcGVjaWZpZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
ZmxleGJveC9yZXNvdXJjZXMvZmxleGJveC5qcyBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9y
ZXNvdXJjZXMvZmxleGJveC5qcwppbmRleCA4ZGY5MTVjMGVjMDFhM2M5NzViYzVkNjA0YTE5Mzcx
YzRlYWQwOGM5Li43ZTg3MzFjZjI4ZDYxY2I1MjkxYWJmNzRhMjU4N2IyNTczMDliNTJjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvcmVzb3VyY2VzL2ZsZXhib3guanMKKysr
IGIvTGF5b3V0VGVzdHMvY3NzMy9mbGV4Ym94L3Jlc291cmNlcy9mbGV4Ym94LmpzCkBAIC0xNCwx
MSArMTQsMjMgQEAgZnVuY3Rpb24gY2hlY2tFeHBlY3RlZFZhbHVlcyhub2RlLCBmYWlsdXJlcykK
ICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goIkV4cGVjdGVkICIgKyBleHBlY3RlZFdpZHRoICsg
IiBmb3Igd2lkdGgsIGJ1dCBnb3QgIiArIG5vZGUub2Zmc2V0V2lkdGggKyAiLiAiKTsKICAgICB9
CiAKKyAgICB2YXIgZXhwZWN0ZWRIZWlnaHQgPSBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdl
dEF0dHJpYnV0ZSgiZGF0YS1leHBlY3RlZC1oZWlnaHQiKTsKKyAgICBpZiAoZXhwZWN0ZWRIZWln
aHQpIHsKKyAgICAgICAgaWYgKG5vZGUub2Zmc2V0SGVpZ2h0ICE9IHBhcnNlSW50KGV4cGVjdGVk
SGVpZ2h0KSkKKyAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goIkV4cGVjdGVkICIgKyBleHBlY3Rl
ZEhlaWdodCArICIgZm9yIGhlaWdodCwgYnV0IGdvdCAiICsgbm9kZS5vZmZzZXRIZWlnaHQgKyAi
LiAiKTsKKyAgICB9CisKICAgICB2YXIgZXhwZWN0ZWRPZmZzZXQgPSBub2RlLmdldEF0dHJpYnV0
ZSAmJiBub2RlLmdldEF0dHJpYnV0ZSgiZGF0YS1vZmZzZXQteCIpOwogICAgIGlmIChleHBlY3Rl
ZE9mZnNldCkgewogICAgICAgICBpZiAobm9kZS5vZmZzZXRMZWZ0ICE9IHBhcnNlSW50KGV4cGVj
dGVkT2Zmc2V0KSkKICAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goIkV4cGVjdGVkICIgKyBleHBl
Y3RlZE9mZnNldCArICIgZm9yIG9mZnNldExlZnQsIGJ1dCBnb3QgIiArIG5vZGUub2Zmc2V0TGVm
dCArICIuICIpOwogICAgIH0KKworICAgIHZhciBleHBlY3RlZE9mZnNldCA9IG5vZGUuZ2V0QXR0
cmlidXRlICYmIG5vZGUuZ2V0QXR0cmlidXRlKCJkYXRhLW9mZnNldC15Iik7CisgICAgaWYgKGV4
cGVjdGVkT2Zmc2V0KSB7CisgICAgICAgIGlmIChub2RlLm9mZnNldFRvcCAhPSBwYXJzZUludChl
eHBlY3RlZE9mZnNldCkpCisgICAgICAgICAgICBmYWlsdXJlcy5wdXNoKCJFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRPZmZzZXQgKyAiIGZvciBvZmZzZXRUb3AsIGJ1dCBnb3QgIiArIG5vZGUub2Zmc2V0
VG9wICsgIi4gIik7CisgICAgfQogfQogCiBmdW5jdGlvbiBjaGVja0hvcml6b250YWxCb3hlbigp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvd3JpdGluZy1tb2Rlcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTRhNWI4ZjM0ZWViMGMwNGZiYTliMWFiN2VjMjI5YzU0YTExMGEx
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC93cml0aW5nLW1v
ZGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitQQVNTCitQQVNTCitQQVNTCitQQVNT
CitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQ
QVNTCitFeHBlY3RlZCA1ODAgZm9yIG9mZnNldExlZnQsIGJ1dCBnb3QgMC4gRXhwZWN0ZWQgNTgw
IGZvciBvZmZzZXRMZWZ0LCBidXQgZ290IDAuIEV4cGVjdGVkIDU4MCBmb3Igb2Zmc2V0TGVmdCwg
YnV0IGdvdCAwLgorRXhwZWN0ZWQgNTgwIGZvciBvZmZzZXRMZWZ0LCBidXQgZ290IDAuIEV4cGVj
dGVkIDE4MCBmb3Igb2Zmc2V0VG9wLCBidXQgZ290IDAuIEV4cGVjdGVkIDU4MCBmb3Igb2Zmc2V0
TGVmdCwgYnV0IGdvdCAxNTAuIEV4cGVjdGVkIDE4MCBmb3Igb2Zmc2V0VG9wLCBidXQgZ290IDAu
IEV4cGVjdGVkIDU4MCBmb3Igb2Zmc2V0TGVmdCwgYnV0IGdvdCA0NTAuIEV4cGVjdGVkIDE4MCBm
b3Igb2Zmc2V0VG9wLCBidXQgZ290IDAuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
ZmxleGJveC93cml0aW5nLW1vZGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvd3Jp
dGluZy1tb2Rlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMmFiOGU3ZmRkYzgyODZmYzMzY2NlNzVhMDg2
NDRiYmRjMjc4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gv
d3JpdGluZy1tb2Rlcy5odG1sCkBAIC0wLDAgKzEsMTgxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPHN0eWxlPgorYm9keSB7CisgICAgbWFyZ2luOiAwOworfQorLyogRklYTUU6IGZsZXhi
b3guanMgaXRlcmF0ZXMgb3ZlciBob3Jpem9udGFsLWJveCBlbGVtZW50cy4gUmVuYW1lIHRoaXMg
dG8gZmxleGJveC4gKi8KKy5ob3Jpem9udGFsLWJveCB7CisgICAgd2lkdGg6IDYwMHB4OworICAg
IGRpc3BsYXk6IC13ZWJraXQtZmxleGJveDsKK30KKy5ob3Jpem9udGFsLWJveCBkaXYgeworICAg
IGhlaWdodDogMjBweDsKKyAgICBib3JkZXI6IDA7Cit9CisKKy5ydGwgeworICAgIGRpcmVjdGlv
bjogcnRsOworfQorCisuYnQgeworICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFs
LWJ0OworfQorCisudmVydGljYWwtcmwsIC52ZXJ0aWNhbC1sciB7CisgICAgaGVpZ2h0OiA2MDBw
eDsKK30KKworOi13ZWJraXQtYW55KC52ZXJ0aWNhbC1ybCwgLnZlcnRpY2FsLWxyKSBkaXYgewor
ICAgIHdpZHRoOiAyMHB4OworfQorCisudmVydGljYWwtcmwgeworICAgIC13ZWJraXQtd3JpdGlu
Zy1tb2RlOiB2ZXJ0aWNhbC1ybDsKK30KKworLnZlcnRpY2FsLWxyIHsKKyAgICAtd2Via2l0LXdy
aXRpbmctbW9kZTogdmVydGljYWwtbHI7Cit9CisKKy5ob3Jpem9udGFsLWJveCA+IDpudGgtY2hp
bGQoMSkgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Cit9CisuaG9yaXpvbnRhbC1ib3gg
PiA6bnRoLWNoaWxkKDIpIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KKy5ob3Jp
em9udGFsLWJveCA+IDpudGgtY2hpbGQoMykgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsK
K30KKzwvc3R5bGU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvZmxleGJveC5qcyI+PC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9ImNo
ZWNrSG9yaXpvbnRhbEJveGVuKCkiPgorCis8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWJveCBydGwi
PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjUwIiBkYXRhLW9mZnNldC14PSI1MDAiIHN0
eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4KDEgMCAwKTsgbWFyZ2luOiAwIGF1dG87Ij48L2Rpdj4K
KyAgPGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzMDAiIGRhdGEtb2Zmc2V0LXg9IjE1MCIgc3R5
bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMiAwIDApOyBwYWRkaW5nOiAwIDEwMHB4OyI+PC9kaXY+
CisgIDxkaXYgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtb2Zmc2V0LXg9IjEwMCIgc3R5
bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMSAwIDApOyBtYXJnaW4tbGVmdDogMTAwcHg7Ij48L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWJveCBydGwiPgorICA8ZGl2IGRh
dGEtZXhwZWN0ZWQtd2lkdGg9IjUwIiBkYXRhLW9mZnNldC14PSI1MDAiIHN0eWxlPSJ3aWR0aDog
LXdlYmtpdC1mbGV4KDEgMCAwKTsgbWFyZ2luOiAwIGF1dG87Ij48L2Rpdj4KKyAgPGRpdiBkYXRh
LWV4cGVjdGVkLXdpZHRoPSIzMDAiIGRhdGEtb2Zmc2V0LXg9IjE1MCIgc3R5bGU9IndpZHRoOiAt
d2Via2l0LWZsZXgoMiAwIDApOyBwYWRkaW5nOiAwIDEwMHB4OyI+PC9kaXY+CisgIDxkaXYgZGF0
YS1leHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtb2Zmc2V0LXg9IjAiIHN0eWxlPSJ3aWR0aDogLXdl
YmtpdC1mbGV4KDEgMCAwKTsgLXdlYmtpdC1tYXJnaW4tc3RhcnQ6IDEwMHB4OyI+PC9kaXY+Cis8
L2Rpdj4KKworPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggcnRsIiBzdHlsZT0iLXdlYmtpdC1t
YXJnaW4tc3RhcnQ6IDIwcHg7LXdlYmtpdC1tYXJnaW4tZW5kOiA1MHB4OyI+CisgIDxkaXYgZGF0
YS1leHBlY3RlZC13aWR0aD0iNTAiIGRhdGEtb2Zmc2V0LXg9IjU1MCIgc3R5bGU9IndpZHRoOiAt
d2Via2l0LWZsZXgoMSAwIDApOyBtYXJnaW46IDAgYXV0bzsiPjwvZGl2PgorICA8ZGl2IGRhdGEt
ZXhwZWN0ZWQtd2lkdGg9IjMwMCIgZGF0YS1vZmZzZXQteD0iMjAwIiBzdHlsZT0id2lkdGg6IC13
ZWJraXQtZmxleCgyIDAgMCk7IHBhZGRpbmc6IDAgMTAwcHg7Ij48L2Rpdj4KKyAgPGRpdiBkYXRh
LWV4cGVjdGVkLXdpZHRoPSI1MCIgZGF0YS1vZmZzZXQteD0iNTAiIHN0eWxlPSJ3aWR0aDogLXdl
YmtpdC1mbGV4KDEgMCAwKTsgLXdlYmtpdC1tYXJnaW4tc3RhcnQ6IDEwMHB4OyI+PC9kaXY+Cis8
L2Rpdj4KKworPGRpdiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmUiPgorPGRpdiBjbGFzcz0iaG9y
aXpvbnRhbC1ib3ggdmVydGljYWwtbHIiPgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIx
NTAiIGRhdGEtb2Zmc2V0LXk9IjAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7
Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAwIiBkYXRhLW9mZnNldC15
PSIxNTAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgyIDAgMCk7Ij48L2Rpdj4KKyAgPGRp
diBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTUwIiBkYXRhLW9mZnNldC15PSI0NTAiIHN0eWxlPSJo
ZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKzxk
aXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94
IHZlcnRpY2FsLWxyIj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTUwIiBkYXRhLW9m
ZnNldC15PSIwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMSAwIDApOyI+PC9kaXY+Cisg
IDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwMCIgZGF0YS1vZmZzZXQteT0iMTUwIiBjbGFz
cz0iYnQiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgyIDAgMCk7Ij48L2Rpdj4KKyAgPGRp
diBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTUwIiBkYXRhLW9mZnNldC15PSI0NTAiIHN0eWxlPSJo
ZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKzxk
aXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94
IHZlcnRpY2FsLWxyIj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNDUwIiBkYXRhLW9m
ZnNldC15PSIwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMSAwIDApOy13ZWJraXQtcGFk
ZGluZy1zdGFydDoyMDBweDstd2Via2l0LXBhZGRpbmctZW5kOjIwMHB4Oy13ZWJraXQtcGFkZGlu
Zy1iZWZvcmU6MTAwcHg7LXdlYmtpdC1wYWRkaW5nLWFmdGVyOjEwMHB4OyI+PC9kaXY+CisgIDxk
aXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCIgZGF0YS1vZmZzZXQteT0iNDUwIiBzdHlsZT0i
aGVpZ2h0OiAtd2Via2l0LWZsZXgoMiAwIDApOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3Rl
ZC1oZWlnaHQ9IjUwIiBkYXRhLW9mZnNldC15PSI1NTAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQt
ZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9InBvc2l0
aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94IHZlcnRpY2FsLWxyIj4K
KyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAwIiBkYXRhLW9mZnNldC15PSIwIiBjbGFz
cz0iYnQiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7LXdlYmtpdC1wYWRkaW5n
LXN0YXJ0OjIwMHB4Oy13ZWJraXQtcGFkZGluZy1lbmQ6MjAwcHg7LXdlYmtpdC1wYWRkaW5nLWJl
Zm9yZToxMDBweDstd2Via2l0LXBhZGRpbmctYWZ0ZXI6MTAwcHg7Ij48L2Rpdj4KKyAgPGRpdiBk
YXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIiBkYXRhLW9mZnNldC15PSIzMDAiIHN0eWxlPSJoZWln
aHQ6IC13ZWJraXQtZmxleCgyIDAgMCk7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhl
aWdodD0iMTAwIiBkYXRhLW9mZnNldC15PSI1MDAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxl
eCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKworPGRpdiBzdHlsZT0icG9zaXRp
b246cmVsYXRpdmUiPgorPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggdmVydGljYWwtbHIiPgor
ICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiIGRhdGEtb2Zmc2V0LXk9IjEwMCIgc3R5
bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAwKTsgbWFyZ2luOiBhdXRvIDA7Ij48L2Rpdj4K
KyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjAwIiBkYXRhLW9mZnNldC15PSIzMDAiIHN0
eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgyIDAgMCk7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4
cGVjdGVkLWhlaWdodD0iMTAwIiBkYXRhLW9mZnNldC15PSI1MDAiIHN0eWxlPSJoZWlnaHQ6IC13
ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9
InBvc2l0aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94IHZlcnRpY2Fs
LWxyIj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNTAiIGRhdGEtb2Zmc2V0LXk9IjUw
IiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMSAwIDApO21hcmdpbjogYXV0byAwOyI+PC9k
aXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjQwMCIgZGF0YS1vZmZzZXQteT0iMTUw
IiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMiAwIGF1dG8pOyI+PGRpdiBzdHlsZT0id2lk
dGg6MjAwcHg7aGVpZ2h0OjMwMHB4O2JhY2tncm91bmQtY29sb3I6b3JhbmdlOyI+PC9kaXY+PC9k
aXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjUwIiBkYXRhLW9mZnNldC15PSI1NTAi
IHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2PgorPC9k
aXY+CisKKzxkaXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6
b250YWwtYm94IHZlcnRpY2FsLWxyIj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNTAi
IGRhdGEtb2Zmc2V0LXk9IjUwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMSAwIDApO21h
cmdpbjogYXV0byAwOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjQwMCIg
ZGF0YS1vZmZzZXQteT0iMTUwIiBjbGFzcz0iYnQiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxl
eCgyIDAgYXV0byk7Ij48ZGl2IHN0eWxlPSJ3aWR0aDoyMDBweDtoZWlnaHQ6MzAwcHg7YmFja2dy
b3VuZC1jb2xvcjpvcmFuZ2U7Ij48L2Rpdj48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhl
aWdodD0iNTAiIGRhdGEtb2Zmc2V0LXk9IjU1MCIgc3R5bGU9ImhlaWdodDogLXdlYmtpdC1mbGV4
KDEgMCAwKTsiPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0icG9zaXRpb246
cmVsYXRpdmUiPgorPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggdmVydGljYWwtbHIiPgorICA8
ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiIGRhdGEtb2Zmc2V0LXk9IjEwMCIgc3R5bGU9
ImhlaWdodDogLXdlYmtpdC1mbGV4KDEgMCAwKTstd2Via2l0LW1hcmdpbi1zdGFydDphdXRvOy13
ZWJraXQtbWFyZ2luLWVuZDphdXRvOy13ZWJraXQtbWFyZ2luLWJlZm9yZTowOy13ZWJraXQtbWFy
Z2luLWFmdGVyOjA7OyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIwMCIg
ZGF0YS1vZmZzZXQteT0iMzAwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMiAwIDApOyI+
PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwMCIgZGF0YS1vZmZzZXQteT0i
NTAwIiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0LWZsZXgoMSAwIDApOyI+PC9kaXY+Cis8L2Rpdj4K
KzwvZGl2PgorCis8ZGl2IHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZSI+Cis8ZGl2IGNsYXNzPSJo
b3Jpem9udGFsLWJveCB2ZXJ0aWNhbC1sciI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9
IjE1MCIgZGF0YS1vZmZzZXQteT0iMCIgY2xhc3M9ImJ0IiBzdHlsZT0iaGVpZ2h0OiAtd2Via2l0
LWZsZXgoMSAwIDApOy13ZWJraXQtbWFyZ2luLXN0YXJ0OmF1dG87LXdlYmtpdC1tYXJnaW4tZW5k
OmF1dG87LXdlYmtpdC1tYXJnaW4tYmVmb3JlOjA7LXdlYmtpdC1tYXJnaW4tYWZ0ZXI6MDs7Ij48
L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAwIiBkYXRhLW9mZnNldC15PSIx
NTAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgyIDAgMCk7Ij48L2Rpdj4KKyAgPGRpdiBk
YXRhLWV4cGVjdGVkLWhlaWdodD0iMTUwIiBkYXRhLW9mZnNldC15PSI0NTAiIHN0eWxlPSJoZWln
aHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2PgorPC9kaXY+CisKKzxkaXYg
c3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94IHZl
cnRpY2FsLWxyIHJ0bCI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjUwIiBkYXRhLW9m
ZnNldC15PSI1MDAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAgMCk7IG1hcmdpbjog
YXV0byAwOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwMCIgZGF0YS1v
ZmZzZXQteT0iMTUwIiBjbGFzcz0iYnQiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgyIDAg
MCk7IHBhZGRpbmc6IDEwMHB4IDA7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdo
dD0iNTAiIGRhdGEtb2Zmc2V0LXk9IjAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDAg
MCk7IC13ZWJraXQtbWFyZ2luLXN0YXJ0OiAxMDBweDsiPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4K
KworPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1ib3ggdmVydGljYWwtbHIiPgorICA8ZGl2IGRhdGEt
ZXhwZWN0ZWQtaGVpZ2h0PSIzNTAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDEgNDAw
cHgpOyBtaW4taGVpZ2h0OiAzNTBweDsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVp
Z2h0PSIyNTAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxleCgxIDEgNDAwcHgpOyI+PC9kaXY+
Cis8L2Rpdj4KKworPCEtLSBGSVhNRTogVGhlcmUncyBhIGJ1ZyB3aGVyZSBvZmZzZXRMZWZ0IHJl
cG9ydHMgdGhlIHdyb25nIHZhbHVlIGluIHZlcnRpY2FsLXJsIHdyaXRpbmctbW9kZS4tLT4KKzxk
aXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94
IHZlcnRpY2FsLXJsIj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTUwIiBkYXRhLW9m
ZnNldC15PSIwIiBkYXRhLW9mZnNldC14PSI1ODAiIHN0eWxlPSJoZWlnaHQ6IC13ZWJraXQtZmxl
eCgxIDAgMCk7Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAwIiBkYXRh
LW9mZnNldC15PSIxNTAiIGRhdGEtb2Zmc2V0LXg9IjU4MCIgc3R5bGU9ImhlaWdodDogLXdlYmtp
dC1mbGV4KDIgMCAwKTsiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxNTAi
IGRhdGEtb2Zmc2V0LXk9IjQ1MCIgZGF0YS1vZmZzZXQteD0iNTgwIiBzdHlsZT0iaGVpZ2h0OiAt
d2Via2l0LWZsZXgoMSAwIDApOyI+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorCis8IS0tIEZJWE1F
OiBUaGVyZSdzIGEgYnVnIHdoZXJlIG9mZnNldFRvcCByZXBvcnRzIHRoZSB3cm9uZyB2YWx1ZSBp
biBob3Jpem9udGFsLWJ0IHdyaXRpbmctbW9kZS4tLT4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOnJl
bGF0aXZlIj4KKzxkaXYgY2xhc3M9Imhvcml6b250YWwtYm94IGJ0IiBzdHlsZT0iaGVpZ2h0OjIw
MHB4Ij4KKyAgPGRpdiBkYXRhLW9mZnNldC15PSIxODAiIGRhdGEtb2Zmc2V0LXg9IjU4MCIgc3R5
bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMSAwIDApOyI+PC9kaXY+CisgIDxkaXYgZGF0YS1vZmZz
ZXQteT0iMTgwIiBkYXRhLW9mZnNldC14PSI1ODAiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4
KDIgMCAwKTsiPjwvZGl2PgorICA8ZGl2IGRhdGEtb2Zmc2V0LXk9IjE4MCIgZGF0YS1vZmZzZXQt
eD0iNTgwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxleCgxIDAgMCk7Ij48L2Rpdj4KKzwvZGl2
PgorPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNzUxZDRjOTcyZjlhOWUzZDEzYzMyMmQzODZmNTJjMTc2YmIwZDljYS4u
NGExOWQwYmJhYTE1MmY3YzY0OTNlY2U0ZmQyZmFmYTFlZDk3NjcyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM1IEBACisyMDExLTA5LTE4ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgY2hhbmdlIFJlbmRlckZsZXhpYmxlQm94IHRvIGFjdCBvbiBsb2dpY2FsIGNv
b3JkaW5hdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgbWFrZXMgUmVuZGVyRmxleGlibGVCb3ggcmVzcGVjdCBkaXJlY3Rpb24gYW5kIHdyaXRp
bmctbW9kZS4KKyAgICAgICAgV2Ugbm93IHByb3Blcmx5IHN1cHBvcnQgdGhlIGRlZmF1bHQgZmxl
eC1mbG93IHZhbHVlIG9mICJyb3ciLgorCisgICAgICAgIFRlc3Q6IGNzczMvZmxleGJveC93cml0
aW5nLW1vZGVzLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2V0TG9naWNhbExvY2F0aW9uRm9yQ2hpbGQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJs
ZUJveDo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
OmxvZ2ljYWxCb3JkZXJXaWR0aEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
ZXhpYmxlQm94Ojpsb2dpY2FsUGFkZGluZ1dpZHRoRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luU3RhcnRTdHlsZUZvckNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5FbmRTdHls
ZUZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJy
ZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmxheW91dElubGluZURpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbFBvc2l0aXZlRmxleEZvckNoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnJ1
bkZyZWVTcGFjZUFsbG9jYXRpb25BbGdvcml0aG1JbmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnNldExvZ2ljYWxPdmVycmlkZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW5J
bmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
OgorCiAyMDExLTA5LTE4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVHJ5IHRvIGZpeCB0aGUgQ2hyb21pdW0gTWFjIGJ1aWxkIGFmdGVyIHI5NTM5MS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDJhZDM4ODA4NGYzNDIzYjIz
ZjE5NjlkMTA5YWQ4NmI1ZWVjOTg1NWQuLjYwZWE4ODhkNWMwZTU1ZWU5YTllNDljMTY0YWIwODVi
YzU2OGQzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAt
MTg2OSw2ICsxODY5LDE0IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmhhbmRsZUFmdGVyU2lkZU9mQmxv
Y2soTGF5b3V0VW5pdCBiZWZvcmVTaWRlLCBMYXlvdXRVbml0IGFmdGVyCiAgICAgc2V0Q29sbGFw
c2VkQm90dG9tTWFyZ2luKG1hcmdpbkluZm8pOwogfQogCit2b2lkIFJlbmRlckJsb2NrOjpzZXRM
b2dpY2FsTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRQb2lu
dCYgbG9jYXRpb24pCit7CisgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpCisgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbihsb2NhdGlvbik7CisgICAgZWxzZQorICAg
ICAgICBjaGlsZC0+c2V0TG9jYXRpb24obG9jYXRpb24udHJhbnNwb3NlZFBvaW50KCkpOworfQor
CiB2b2lkIFJlbmRlckJsb2NrOjpzZXRMb2dpY2FsTGVmdEZvckNoaWxkKFJlbmRlckJveCogY2hp
bGQsIExheW91dFVuaXQgbG9naWNhbExlZnQsIEFwcGx5TGF5b3V0RGVsdGFNb2RlIGFwcGx5RGVs
dGEpCiB7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZGEyOWQ0YTViMjQxNDM1MDhiYjZjNTdmZTcx
NjcyZGE4ODFjNTdmYy4uOGU1ODg3ZTBiMTk2YjU1YmM4YWE5YjQ0ZWI3NTJjNmRlOGQ4ZDkyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTIwOSw2ICsyMDksNyBA
QCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94
KiBjaGlsZCkgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5oZWln
aHQoKSA6IGNoaWxkLT53aWR0aCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCkgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IGNoaWxkLT55KCkgOiBjaGlsZC0+eCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdEZv
ckNoaWxkKFJlbmRlckJveCogY2hpbGQpIHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBjaGlsZC0+eCgpIDogY2hpbGQtPnkoKTsgfQorICAgIHZvaWQgc2V0TG9naWNhbExvY2F0
aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2
b2lkIHNldExvZ2ljYWxMZWZ0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCwgQXBwbHlMYXlvdXREZWx0YU1vZGUgPSBEb05vdEFwcGx5TGF5b3V0RGVsdGEp
OwogICAgIHZvaWQgc2V0TG9naWNhbFRvcEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91
dFVuaXQgbG9naWNhbFRvcCwgQXBwbHlMYXlvdXREZWx0YU1vZGUgPSBEb05vdEFwcGx5TGF5b3V0
RGVsdGEpOwogICAgIExheW91dFVuaXQgbWFyZ2luQmVmb3JlRm9yQ2hpbGQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGNoaWxkKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDBhNDA0ZGE0ZjE3ZTFhYjhjODcwOTFlOTk4MmUwMmQ0
MDI3MmRmNWMuLjhiYjFiZGY2MTRiNWE1NzBhZjgyM2ZlNjJhNDFiOTliZjAwMGRmMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtOTks
OCArOTksNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIGludCwgQmxvY2tMYXlvdXRQYXNzKQogCiAgICAgbV9vdmVyZmxvdy5jbGVh
cigpOwogCi0gICAgLy8gRklYTUU6IEFzc3VtZSBob3Jpem9udGFsIGxheW91dCB1bnRpbCBmbGV4
LWZsb3cgaXMgYWRkZWQuCi0gICAgbGF5b3V0SG9yaXpvbnRhbEJsb2NrKHJlbGF5b3V0Q2hpbGRy
ZW4pOworICAgIGxheW91dElubGluZURpcmVjdGlvbihyZWxheW91dENoaWxkcmVuKTsKIAogICAg
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7CiAKQEAgLTExNCw0NyArMTEzLDg4IEBAIHZvaWQgUmVu
ZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgaW50LCBC
bG9ja0xheW91dFBhc3MpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCi1zdGF0aWMg
TGF5b3V0VW5pdCBwcmVmZXJyZWRGbGV4SXRlbUNvbnRlbnRXaWR0aChSZW5kZXJCb3gqIGNoaWxk
KQorTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbEJvcmRlcldpZHRoRm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCkKIHsKLSAgICAvLyBGSVhNRTogSGFuZGxlIHZlcnRpY2FsIHdy
aXRpbmcgbW9kZXMgd2l0aCBob3Jpem9udGFsIGZsZXhpbmcuCi0gICAgaWYgKGNoaWxkLT5zdHls
ZSgpLT53aWR0aCgpLmlzQXV0bygpKQotICAgICAgICByZXR1cm4gY2hpbGQtPm1heFByZWZlcnJl
ZExvZ2ljYWxXaWR0aCgpIC0gY2hpbGQtPmJvcmRlckxlZnQoKSAtIGNoaWxkLT5ib3JkZXJSaWdo
dCgpIC0gY2hpbGQtPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSAtIGNoaWxkLT5wYWRkaW5nTGVm
dCgpIC0gY2hpbGQtPnBhZGRpbmdSaWdodCgpOwotICAgIHJldHVybiBjaGlsZC0+Y29udGVudFdp
ZHRoKCk7CisgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVy
biBjaGlsZC0+Ym9yZGVyTGVmdCgpICsgY2hpbGQtPmJvcmRlclJpZ2h0KCk7CisgICAgcmV0dXJu
IGNoaWxkLT5ib3JkZXJUb3AoKSArIGNoaWxkLT5ib3JkZXJCb3R0b20oKTsKIH0KIAotdm9pZCBS
ZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJsb2NrKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbikKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxQYWRkaW5nV2lkdGhG
b3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewotICAgIExheW91dFVuaXQgcHJlZmVycmVkU2l6
ZTsKKyAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIGNo
aWxkLT5wYWRkaW5nTGVmdCgpICsgY2hpbGQtPnBhZGRpbmdSaWdodCgpOworICAgIHJldHVybiBj
aGlsZC0+cGFkZGluZ1RvcCgpICsgY2hpbGQtPnBhZGRpbmdCb3R0b20oKTsKK30KKworTGF5b3V0
VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbFNjcm9sbGJhckhlaWdodEZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpCit7CisgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisg
ICAgICAgIHJldHVybiBjaGlsZC0+aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCgpOworICAgIHJl
dHVybiBjaGlsZC0+dmVydGljYWxTY3JvbGxiYXJXaWR0aCgpOworfQorCitMZW5ndGggUmVuZGVy
RmxleGlibGVCb3g6Om1hcmdpblN0YXJ0U3R5bGVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQor
eworICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4gc3R5
bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxl
ZnQoKSA6IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpOworICAgIHJldHVybiBzdHlsZSgp
LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luVG9wKCkg
OiBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luQm90dG9tKCk7Cit9CisKK0xlbmd0aCBSZW5kZXJGbGV4
aWJsZUJveDo6bWFyZ2luRW5kU3R5bGVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQoreworICAg
IGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4gc3R5bGUoKS0+
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCkg
OiBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVmdCgpOworICAgIHJldHVybiBzdHlsZSgpLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luQm90dG9tKCkgOiBj
aGlsZC0+c3R5bGUoKS0+bWFyZ2luVG9wKCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGli
bGVCb3g6OnByZWZlcnJlZExvZ2ljYWxDb250ZW50V2lkdGhGb3JGbGV4SXRlbShSZW5kZXJCb3gq
IGNoaWxkKQoreworICAgIExlbmd0aCB3aWR0aCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBjaGlsZC0+c3R5bGUoKS0+d2lkdGgoKSA6IGNoaWxkLT5zdHlsZSgpLT5oZWlnaHQoKTsKKyAg
ICBpZiAod2lkdGguaXNBdXRvKCkpIHsKKyAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgg
PSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09IGNoaWxkLT5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gY2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIDogY2hpbGQtPmxvZ2lj
YWxIZWlnaHQoKTsKKyAgICAgICAgcmV0dXJuIGxvZ2ljYWxXaWR0aCAtIGxvZ2ljYWxCb3JkZXJX
aWR0aEZvckNoaWxkKGNoaWxkKSAtIGxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZChjaGls
ZCkgLSBsb2dpY2FsUGFkZGluZ1dpZHRoRm9yQ2hpbGQoY2hpbGQpOworICAgIH0KKyAgICByZXR1
cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5jb250ZW50V2lkdGgoKSA6IGNo
aWxkLT5jb250ZW50SGVpZ2h0KCk7Cit9CisKK3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91
dElubGluZURpcmVjdGlvbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pCit7CisgICAgTGF5b3V0VW5p
dCBwcmVmZXJyZWRMb2dpY2FsV2lkdGg7CiAgICAgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmls
aXR5OwogICAgIGZsb2F0IHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eTsKICAgICBGbGV4aWJsZUJv
eEl0ZXJhdG9yIGl0ZXJhdG9yKHRoaXMpOwogCi0gICAgY29tcHV0ZVByZWZlcnJlZFNpemVIb3Jp
em9udGFsKHJlbGF5b3V0Q2hpbGRyZW4sIGl0ZXJhdG9yLCBwcmVmZXJyZWRTaXplLCB0b3RhbFBv
c2l0aXZlRmxleGliaWxpdHksIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSk7Ci0gICAgTGF5b3V0
VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UgPSBjb250ZW50V2lkdGgoKSAtIHByZWZlcnJlZFNpemU7
CisgICAgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aChyZWxheW91dENoaWxkcmVuLCBpdGVy
YXRvciwgcHJlZmVycmVkTG9naWNhbFdpZHRoLCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIHRv
dGFsTmVnYXRpdmVGbGV4aWJpbGl0eSk7CisgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3Bh
Y2UgPSBjb250ZW50TG9naWNhbFdpZHRoKCkgLSBwcmVmZXJyZWRMb2dpY2FsV2lkdGg7CiAKICAg
ICBJbmZsZXhpYmxlRmxleEl0ZW1TaXplIGluZmxleGlibGVJdGVtczsKICAgICBXVEY6OlZlY3Rv
cjxMYXlvdXRVbml0PiBjaGlsZFNpemVzOwotICAgIHdoaWxlICghcnVuRnJlZVNwYWNlQWxsb2Nh
dGlvbkFsZ29yaXRobUhvcml6b250YWwoYXZhaWxhYmxlRnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZl
RmxleGliaWxpdHksIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSwgaW5mbGV4aWJsZUl0ZW1zLCBj
aGlsZFNpemVzKSkgeworICAgIHdoaWxlICghcnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRo
bUlubGluZURpcmVjdGlvbihhdmFpbGFibGVGcmVlU3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4aWJp
bGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBpbmZsZXhpYmxlSXRlbXMsIGNoaWxkU2l6
ZXMpKSB7CiAgICAgICAgIEFTU0VSVCh0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgPj0gMCAmJiB0
b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgPj0gMCk7CiAgICAgICAgIEFTU0VSVChpbmZsZXhpYmxl
SXRlbXMuc2l6ZSgpID4gMCk7CiAgICAgfQogCi0gICAgbGF5b3V0QW5kUGxhY2VDaGlsZHJlbkhv
cml6b250YWwoY2hpbGRTaXplcywgYXZhaWxhYmxlRnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZlRmxl
eGliaWxpdHkpOworICAgIGxheW91dEFuZFBsYWNlQ2hpbGRyZW5JbmxpbmVEaXJlY3Rpb24oY2hp
bGRTaXplcywgYXZhaWxhYmxlRnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpOwog
Ci0gICAgLy8gRklYTUU6IEhhbmRsZSBkaXN0cmlidXRpb24gb2YgdmVydGljYWwgc3BhY2UgKHRo
aXJkIGRpc3RyaWJ1dGlvbiByb3VuZCkuCisgICAgLy8gRklYTUU6IEhhbmRsZSBkaXN0cmlidXRp
b24gb2YgY3Jvc3MtYXhpcyBzcGFjZSAodGhpcmQgZGlzdHJpYnV0aW9uIHJvdW5kKS4KK30KKwor
ZmxvYXQgUmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChSZW5k
ZXJCb3gqIGNoaWxkKQoreworICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
Y2hpbGQtPnN0eWxlKCktPmZsZXhib3hXaWR0aFBvc2l0aXZlRmxleCgpIDogY2hpbGQtPnN0eWxl
KCktPmZsZXhib3hIZWlnaHRQb3NpdGl2ZUZsZXgoKTsKIH0KIAotc3RhdGljIExheW91dFVuaXQg
cHJlZmVycmVkU2l6ZUZvck1hcmdpbnNBbmRQYWRkaW5nKExlbmd0aCBsZW5ndGgsIExheW91dFVu
aXQgY29udGFpbmVyTGVuZ3RoKQorZmxvYXQgUmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxOZWdh
dGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewotICAgIHJldHVybiBsZW5ndGgu
Y2FsY01pblZhbHVlKGNvbnRhaW5lckxlbmd0aCk7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBjaGlsZC0+c3R5bGUoKS0+ZmxleGJveFdpZHRoTmVnYXRpdmVGbGV4KCkg
OiBjaGlsZC0+c3R5bGUoKS0+ZmxleGJveEhlaWdodE5lZ2F0aXZlRmxleCgpOwogfQogCi12b2lk
IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkU2l6ZUhvcml6b250YWwoYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBGbGV4aWJsZUJveEl0ZXJhdG9yJiBpdGVyYXRvciwgTGF5b3V0VW5p
dCYgcHJlZmVycmVkU2l6ZSwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQm
IHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSkKK3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGgoYm9vbCByZWxheW91dENoaWxkcmVuLCBGbGV4aWJsZUJv
eEl0ZXJhdG9yJiBpdGVyYXRvciwgTGF5b3V0VW5pdCYgcHJlZmVycmVkTG9naWNhbFdpZHRoLCBm
bG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhp
YmlsaXR5KQogewotICAgIHByZWZlcnJlZFNpemUgPSAwOworICAgIHByZWZlcnJlZExvZ2ljYWxX
aWR0aCA9IDA7CiAgICAgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5ID0gdG90YWxOZWdhdGl2ZUZs
ZXhpYmlsaXR5ID0gMDsKIAotICAgIC8vIEZJWE1FOiBIYW5kbGUgdmVydGljYWwgd3JpdGluZyBt
b2RlcyB3aXRoIGhvcml6b250YWwgZmxleGluZy4KICAgICBMYXlvdXRVbml0IGZsZXhib3hBdmFp
bGFibGVMb2dpY2FsV2lkdGggPSBhdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKICAgICBmb3IgKFJl
bmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRv
ci5uZXh0KCkpIHsKICAgICAgICAgLy8gV2UgYWx3YXlzIGhhdmUgdG8gbGF5IG91dCBmbGV4aWJs
ZSBvYmplY3RzIGFnYWluLCBzaW5jZSB0aGUgZmxleCBkaXN0cmlidXRpb24KQEAgLTE2NCw1OSAr
MjA0LDY0IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRTaXplSG9y
aXpvbnRhbChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIEZsCiAgICAgICAgICAgICBjaGlsZC0+c2V0
Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKICAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7
CiAKLSAgICAgICAgcHJlZmVycmVkU2l6ZSArPSBwcmVmZXJyZWRTaXplRm9yTWFyZ2luc0FuZFBh
ZGRpbmcoY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKSwgZmxleGJveEF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCk7Ci0gICAgICAgIHByZWZlcnJlZFNpemUgKz0gcHJlZmVycmVkU2l6ZUZvck1hcmdp
bnNBbmRQYWRkaW5nKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLCBmbGV4Ym94QXZhaWxh
YmxlTG9naWNhbFdpZHRoKTsKLSAgICAgICAgcHJlZmVycmVkU2l6ZSArPSBwcmVmZXJyZWRTaXpl
Rm9yTWFyZ2luc0FuZFBhZGRpbmcoY2hpbGQtPnN0eWxlKCktPnBhZGRpbmdMZWZ0KCksIGZsZXhi
b3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOwotICAgICAgICBwcmVmZXJyZWRTaXplICs9IHByZWZl
cnJlZFNpemVGb3JNYXJnaW5zQW5kUGFkZGluZyhjaGlsZC0+c3R5bGUoKS0+cGFkZGluZ1JpZ2h0
KCksIGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICBpZiAoaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSkgeworICAgICAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9
IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFi
bGVMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGNo
aWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxl
TG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGls
ZC0+c3R5bGUoKS0+cGFkZGluZ0xlZnQoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCk7CisgICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQt
PnN0eWxlKCktPnBhZGRpbmdSaWdodCgpLmNhbGNNaW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9n
aWNhbFdpZHRoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByZWZlcnJlZExvZ2lj
YWxXaWR0aCArPSBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luVG9wKCkuY2FsY01pblZhbHVlKGZsZXhi
b3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgcHJlZmVycmVkTG9naWNhbFdp
ZHRoICs9IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5Cb3R0b20oKS5jYWxjTWluVmFsdWUoZmxleGJv
eEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lk
dGggKz0gY2hpbGQtPnN0eWxlKCktPnBhZGRpbmdUb3AoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGgg
Kz0gY2hpbGQtPnN0eWxlKCktPnBhZGRpbmdCb3R0b20oKS5jYWxjTWluVmFsdWUoZmxleGJveEF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgIH0KIAotICAgICAgICBpZiAoY2hpbGQtPnN0
eWxlKCktPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSkKKyAgICAgICAgaWYgKG1hcmdpblN0YXJ0U3R5
bGVGb3JDaGlsZChjaGlsZCkuaXNBdXRvKCkpCiAgICAgICAgICAgICB0b3RhbFBvc2l0aXZlRmxl
eGliaWxpdHkgKz0gMTsKLSAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5SaWdodCgp
LmlzQXV0bygpKQorICAgICAgICBpZiAobWFyZ2luRW5kU3R5bGVGb3JDaGlsZChjaGlsZCkuaXNB
dXRvKCkpCiAgICAgICAgICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgKz0gMTsKIAotICAg
ICAgICBwcmVmZXJyZWRTaXplICs9IGNoaWxkLT5ib3JkZXJMZWZ0KCkgKyBjaGlsZC0+Ym9yZGVy
UmlnaHQoKTsKLQotICAgICAgICBwcmVmZXJyZWRTaXplICs9IHByZWZlcnJlZEZsZXhJdGVtQ29u
dGVudFdpZHRoKGNoaWxkKTsKKyAgICAgICAgcHJlZmVycmVkTG9naWNhbFdpZHRoICs9IGxvZ2lj
YWxCb3JkZXJXaWR0aEZvckNoaWxkKGNoaWxkKTsKKyAgICAgICAgcHJlZmVycmVkTG9naWNhbFdp
ZHRoICs9IHByZWZlcnJlZExvZ2ljYWxDb250ZW50V2lkdGhGb3JGbGV4SXRlbShjaGlsZCk7CiAK
LSAgICAgICAgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5ICs9IGNoaWxkLT5zdHlsZSgpLT5mbGV4
Ym94V2lkdGhQb3NpdGl2ZUZsZXgoKTsKLSAgICAgICAgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5
ICs9IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhOZWdhdGl2ZUZsZXgoKTsKKyAgICAgICAg
dG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5ICs9IGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChj
aGlsZCk7CisgICAgICAgIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSArPSBsb2dpY2FsTmVnYXRp
dmVGbGV4Rm9yQ2hpbGQoY2hpbGQpOwogICAgIH0KIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIHdl
IHN1Y2Nlc3NmdWxseSByYW4gdGhlIGFsZ29yaXRobSBhbmQgc2l6ZWQgdGhlIGZsZXggaXRlbXMu
Ci1ib29sIFJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGht
SG9yaXpvbnRhbChMYXlvdXRVbml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBv
c2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxl
eGlibGVGbGV4SXRlbVNpemUmIGluZmxleGlibGVJdGVtcywgV1RGOjpWZWN0b3I8TGF5b3V0VW5p
dD4mIGNoaWxkU2l6ZXMpCitib29sIFJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxv
Y2F0aW9uQWxnb3JpdGhtSW5saW5lRGlyZWN0aW9uKExheW91dFVuaXQmIGF2YWlsYWJsZUZyZWVT
cGFjZSwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRp
dmVGbGV4aWJpbGl0eSwgSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZSYgaW5mbGV4aWJsZUl0ZW1zLCBX
VEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcykKIHsKICAgICBGbGV4aWJsZUJveEl0
ZXJhdG9yIGl0ZXJhdG9yKHRoaXMpOwogICAgIGNoaWxkU2l6ZXMuY2xlYXIoKTsKIAotICAgIC8v
IEZJWE1FOiBIYW5kbGUgdmVydGljYWwgd3JpdGluZyBtb2RlcyB3aXRoIGhvcml6b250YWwgZmxl
eGluZy4KICAgICBMYXlvdXRVbml0IGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGggPSBhdmFp
bGFibGVMb2dpY2FsV2lkdGgoKTsKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRv
ci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAgTGF5
b3V0VW5pdCBjaGlsZFByZWZlcnJlZFNpemU7CiAgICAgICAgIGlmIChpbmZsZXhpYmxlSXRlbXMu
Y29udGFpbnMoY2hpbGQpKQogICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gaW5mbGV4
aWJsZUl0ZW1zLmdldChjaGlsZCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2hpbGRQ
cmVmZXJyZWRTaXplID0gcHJlZmVycmVkRmxleEl0ZW1Db250ZW50V2lkdGgoY2hpbGQpOworICAg
ICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gcHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0
aEZvckZsZXhJdGVtKGNoaWxkKTsKICAgICAgICAgICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2Ug
PiAwICYmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSA+IDApIHsKLSAgICAgICAgICAgICAgICBj
aGlsZFByZWZlcnJlZFNpemUgKz0gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgKiBjaGlsZC0+
c3R5bGUoKS0+ZmxleGJveFdpZHRoUG9zaXRpdmVGbGV4KCkgLyB0b3RhbFBvc2l0aXZlRmxleGli
aWxpdHkpOworICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSArPSBscm91bmRmKGF2
YWlsYWJsZUZyZWVTcGFjZSAqIGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0
b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpOwogCi0gICAgICAgICAgICAgICAgTGVuZ3RoIGNoaWxk
TWF4V2lkdGggPSBjaGlsZC0+c3R5bGUoKS0+bWF4V2lkdGgoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWNoaWxkTWF4V2lkdGguaXNVbmRlZmluZWQoKSAmJiBjaGlsZE1heFdpZHRoLmlzU3BlY2lm
aWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplID4gY2hpbGRNYXhXaWR0aC5jYWxjVmFsdWUoZmxl
eGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRQ
cmVmZXJyZWRTaXplID0gY2hpbGRNYXhXaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAtPSBj
aGlsZFByZWZlcnJlZFNpemUgLSBwcmVmZXJyZWRGbGV4SXRlbUNvbnRlbnRXaWR0aChjaGlsZCk7
Ci0gICAgICAgICAgICAgICAgICAgIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSAtPSBjaGlsZC0+
c3R5bGUoKS0+ZmxleGJveFdpZHRoUG9zaXRpdmVGbGV4KCk7CisgICAgICAgICAgICAgICAgTGVu
Z3RoIGNoaWxkTG9naWNhbE1heFdpZHRoID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNo
aWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1heEhlaWdodCgpOwor
ICAgICAgICAgICAgICAgIGlmICghY2hpbGRMb2dpY2FsTWF4V2lkdGguaXNVbmRlZmluZWQoKSAm
JiBjaGlsZExvZ2ljYWxNYXhXaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6
ZSA+IGNoaWxkTG9naWNhbE1heFdpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNh
bFdpZHRoKSkgeworICAgICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBjaGls
ZExvZ2ljYWxNYXhXaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7
CisgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAtPSBjaGlsZFByZWZlcnJl
ZFNpemUgLSBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0oY2hpbGQpOwor
ICAgICAgICAgICAgICAgICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgLT0gbG9naWNhbFBv
c2l0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKIAogICAgICAgICAgICAgICAgICAgICBpbmZsZXhp
YmxlSXRlbXMuc2V0KGNoaWxkLCBjaGlsZFByZWZlcnJlZFNpemUpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
IGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPCAwICYmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSA+
IDApIHsKLSAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgKz0gbHJvdW5kZihhdmFp
bGFibGVGcmVlU3BhY2UgKiBjaGlsZC0+c3R5bGUoKS0+ZmxleGJveFdpZHRoTmVnYXRpdmVGbGV4
KCkgLyB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkpOworICAgICAgICAgICAgICAgIGNoaWxkUHJl
ZmVycmVkU2l6ZSArPSBscm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAqIGxvZ2ljYWxOZWdhdGl2
ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkpOwogCi0gICAg
ICAgICAgICAgICAgTGVuZ3RoIGNoaWxkTWluV2lkdGggPSBjaGlsZC0+c3R5bGUoKS0+bWluV2lk
dGgoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTWluV2lkdGguaXNVbmRlZmluZWQoKSAm
JiBjaGlsZE1pbldpZHRoLmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplIDwgY2hp
bGRNaW5XaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGRNaW5XaWR0aC5jYWxj
VmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgICAgICAgICAgICAg
IGF2YWlsYWJsZUZyZWVTcGFjZSArPSBwcmVmZXJyZWRGbGV4SXRlbUNvbnRlbnRXaWR0aChjaGls
ZCkgLSBjaGlsZFByZWZlcnJlZFNpemU7Ci0gICAgICAgICAgICAgICAgICAgIHRvdGFsTmVnYXRp
dmVGbGV4aWJpbGl0eSAtPSBjaGlsZC0+c3R5bGUoKS0+ZmxleGJveFdpZHRoTmVnYXRpdmVGbGV4
KCk7CisgICAgICAgICAgICAgICAgTGVuZ3RoIGNoaWxkTG9naWNhbE1pbldpZHRoID0gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgpIDogY2hpbGQt
PnN0eWxlKCktPm1pbkhlaWdodCgpOworICAgICAgICAgICAgICAgIGlmICghY2hpbGRMb2dpY2Fs
TWluV2lkdGguaXNVbmRlZmluZWQoKSAmJiBjaGlsZExvZ2ljYWxNaW5XaWR0aC5pc1NwZWNpZmll
ZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA8IGNoaWxkTG9naWNhbE1pbldpZHRoLmNhbGNWYWx1
ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKSkgeworICAgICAgICAgICAgICAgICAgICBj
aGlsZFByZWZlcnJlZFNpemUgPSBjaGlsZExvZ2ljYWxNaW5XaWR0aC5jYWxjVmFsdWUoZmxleGJv
eEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZy
ZWVTcGFjZSArPSBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0oY2hpbGQp
IC0gY2hpbGRQcmVmZXJyZWRTaXplOworICAgICAgICAgICAgICAgICAgICB0b3RhbE5lZ2F0aXZl
RmxleGliaWxpdHkgLT0gbG9naWNhbE5lZ2F0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKIAogICAg
ICAgICAgICAgICAgICAgICBpbmZsZXhpYmxlSXRlbXMuc2V0KGNoaWxkLCBjaGlsZFByZWZlcnJl
ZFNpemUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzMsNDIgKzI3
OCw1NCBAQCBzdGF0aWMgYm9vbCBoYXNQYWNraW5nU3BhY2UoTGF5b3V0VW5pdCBhdmFpbGFibGVG
cmVlU3BhY2UsIGZsb2F0IHRvdGFsUG9zaXRpdmVGbAogICAgIHJldHVybiBhdmFpbGFibGVGcmVl
U3BhY2UgPiAwICYmICF0b3RhbFBvc2l0aXZlRmxleGliaWxpdHk7CiB9CiAKLXZvaWQgUmVuZGVy
RmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW5Ib3Jpem9udGFsKGNvbnN0IFdURjo6
VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVT
cGFjZSwgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KQordm9pZCBSZW5kZXJGbGV4aWJs
ZUJveDo6c2V0TG9naWNhbE92ZXJyaWRlU2l6ZShSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0
IGNoaWxkUHJlZmVycmVkU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogUmVuYW1lIHNldE92ZXJyaWRl
V2lkdGgvc2V0T3ZlcnJpZGVIZWlnaHQgdG8gc2V0T3ZlcnJpZGVMb2dpY2FsV2lkdGgvc2V0T3Zl
cnJpZGVMb2dpY2FsSGVpZ2h0LgorICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQor
ICAgICAgICBjaGlsZC0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zZXRPdmVy
cmlkZVdpZHRoKGNoaWxkUHJlZmVycmVkU2l6ZSkgOiBjaGlsZC0+c2V0T3ZlcnJpZGVIZWlnaHQo
Y2hpbGRQcmVmZXJyZWRTaXplKTsKKyAgICBlbHNlCisgICAgICAgIGNoaWxkLT5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPnNldE92ZXJyaWRlSGVpZ2h0KGNoaWxkUHJlZmVycmVk
U2l6ZSkgOiBjaGlsZC0+c2V0T3ZlcnJpZGVXaWR0aChjaGlsZFByZWZlcnJlZFNpemUpOworfQor
Cit2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuSW5saW5lRGly
ZWN0aW9uKGNvbnN0IFdURjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRV
bml0IGF2YWlsYWJsZUZyZWVTcGFjZSwgZmxvYXQgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KQog
ewogICAgIEZsZXhpYmxlQm94SXRlcmF0b3IgaXRlcmF0b3IodGhpcyk7Ci0gICAgLy8gTm93IHRo
YXQgd2Uga25vdyB0aGUgc2l6ZXMsIGxheW91dCBhbmQgcG9zaXRpb24gdGhlIGZsZXggaXRlbXMu
Ci0gICAgTGF5b3V0VW5pdCB4T2Zmc2V0ID0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsK
KyAgICBMYXlvdXRVbml0IHN0YXJ0RWRnZSA9IGJvcmRlclN0YXJ0KCkgKyBwYWRkaW5nU3RhcnQo
KTsKIAogICAgIGlmIChoYXNQYWNraW5nU3BhY2UoYXZhaWxhYmxlRnJlZVNwYWNlLCB0b3RhbFBv
c2l0aXZlRmxleGliaWxpdHkpKSB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5mbGV4UGFjaygpID09
IFBhY2tFbmQpCi0gICAgICAgICAgICB4T2Zmc2V0ICs9IGF2YWlsYWJsZUZyZWVTcGFjZTsKKyAg
ICAgICAgICAgIHN0YXJ0RWRnZSArPSBhdmFpbGFibGVGcmVlU3BhY2U7CiAgICAgICAgIGVsc2Ug
aWYgKHN0eWxlKCktPmZsZXhQYWNrKCkgPT0gUGFja0NlbnRlcikKLSAgICAgICAgICAgIHhPZmZz
ZXQgKz0gYXZhaWxhYmxlRnJlZVNwYWNlIC8gMjsKKyAgICAgICAgICAgIHN0YXJ0RWRnZSArPSBh
dmFpbGFibGVGcmVlU3BhY2UgLyAyOwogICAgIH0KIAotICAgIExheW91dFVuaXQgeU9mZnNldCA9
IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpOwotICAgIHNldEhlaWdodCgwKTsKKyAgICBMYXlv
dXRVbml0IGxvZ2ljYWxUb3AgPSBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKTsKKyAg
ICBMYXlvdXRVbml0IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRoID0gYXZhaWxhYmxlTG9naWNh
bFdpZHRoKCk7CisgICAgc2V0TG9naWNhbEhlaWdodCgwKTsKICAgICBzaXplX3QgaSA9IDA7CiAg
ICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7IGNoaWxk
ID0gaXRlcmF0b3IubmV4dCgpLCArK2kpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBjaGlsZFByZWZl
cnJlZFNpemUgPSBjaGlsZC0+Ym9yZGVyTGVmdCgpICsgY2hpbGQtPnBhZGRpbmdMZWZ0KCkgKyBj
aGlsZFNpemVzW2ldICsgY2hpbGQtPnBhZGRpbmdSaWdodCgpICsgY2hpbGQtPmJvcmRlclJpZ2h0
KCk7Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgdmVydGljYWwgd3JpdGluZyBtb2RlcyB3aXRo
IGhvcml6b250YWwgZmxleGluZy4KLSAgICAgICAgY2hpbGQtPnNldE92ZXJyaWRlV2lkdGgoY2hp
bGRQcmVmZXJyZWRTaXplKTsKKyAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBuZWVkIHRvIHRh
a2UgdGhlIHNjcm9sbGJhciB3aWR0aCBpbnRvIGFjY291bnQ/CisgICAgICAgIExheW91dFVuaXQg
Y2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGRTaXplc1tpXSArIGxvZ2ljYWxCb3JkZXJXaWR0aEZv
ckNoaWxkKGNoaWxkKSArIGxvZ2ljYWxQYWRkaW5nV2lkdGhGb3JDaGlsZChjaGlsZCk7CisgICAg
ICAgIHNldExvZ2ljYWxPdmVycmlkZVNpemUoY2hpbGQsIGNoaWxkUHJlZmVycmVkU2l6ZSk7CiAg
ICAgICAgIGNoaWxkLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOwogICAgICAgICBjaGlsZC0+
bGF5b3V0SWZOZWVkZWQoKTsKIAotICAgICAgICBzZXRIZWlnaHQoc3RkOjptYXgoaGVpZ2h0KCks
IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpICsgY2hpbGQtPm1hcmdpblRvcCgpICsgY2hpbGQt
PmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpICsgcGFkZGluZ0JvdHRvbSgpICsgYm9y
ZGVyQm90dG9tKCkgKyBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KCkpKTsKKyAgICAgICAgc2V0
TG9naWNhbEhlaWdodChzdGQ6Om1heChsb2dpY2FsSGVpZ2h0KCksIGJvcmRlckJlZm9yZSgpICsg
cGFkZGluZ0JlZm9yZSgpICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGQpICsgbG9naWNhbEhl
aWdodEZvckNoaWxkKGNoaWxkKSArIG1hcmdpbkFmdGVyRm9yQ2hpbGQoY2hpbGQpICsgcGFkZGlu
Z0FmdGVyKCkgKyBib3JkZXJBZnRlcigpICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKSk7CisK
KyAgICAgICAgaWYgKG1hcmdpblN0YXJ0U3R5bGVGb3JDaGlsZChjaGlsZCkuaXNBdXRvKCkpCisg
ICAgICAgICAgICBzZXRNYXJnaW5TdGFydEZvckNoaWxkKGNoaWxkLCBhdmFpbGFibGVGcmVlU3Bh
Y2UgPiAwID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0aXZlRmxleGli
aWxpdHkpIDogMCk7CisgICAgICAgIGlmIChtYXJnaW5FbmRTdHlsZUZvckNoaWxkKGNoaWxkKS5p
c0F1dG8oKSkKKyAgICAgICAgICAgIHNldE1hcmdpbkVuZEZvckNoaWxkKGNoaWxkLCBhdmFpbGFi
bGVGcmVlU3BhY2UgPiAwID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0
aXZlRmxleGliaWxpdHkpIDogMCk7CiAKLSAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLT5tYXJn
aW5MZWZ0KCkuaXNBdXRvKCkpCi0gICAgICAgICAgICBjaGlsZC0+c2V0TWFyZ2luTGVmdChhdmFp
bGFibGVGcmVlU3BhY2UgPiAwID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBv
c2l0aXZlRmxleGliaWxpdHkpIDogMCk7Ci0gICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS0+bWFy
Z2luUmlnaHQoKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIGNoaWxkLT5zZXRNYXJnaW5SaWdodChh
dmFpbGFibGVGcmVlU3BhY2UgPiAwID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3Rh
bFBvc2l0aXZlRmxleGliaWxpdHkpIDogMCk7CisgICAgICAgIHN0YXJ0RWRnZSArPSBtYXJnaW5T
dGFydEZvckNoaWxkKGNoaWxkKTsKIAotICAgICAgICB4T2Zmc2V0ICs9IGNoaWxkLT5tYXJnaW5M
ZWZ0KCk7Ci0gICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbihJbnRQb2ludCh4T2Zmc2V0LCB5T2Zm
c2V0KSk7Ci0gICAgICAgIHhPZmZzZXQgKz0gY2hpbGQtPndpZHRoKCkgKyBjaGlsZC0+bWFyZ2lu
UmlnaHQoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxX
aWR0aEZvckNoaWxkKGNoaWxkKTsKKyAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IHN0
eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHN0YXJ0RWRnZSA6IHRvdGFsQXZhaWxh
YmxlTG9naWNhbFdpZHRoIC0gc3RhcnRFZGdlIC0gY2hpbGRMb2dpY2FsV2lkdGg7CisgICAgICAg
IHNldExvZ2ljYWxMb2NhdGlvbkZvckNoaWxkKGNoaWxkLCBJbnRQb2ludChsb2dpY2FsTGVmdCwg
bG9naWNhbFRvcCkpOworICAgICAgICBzdGFydEVkZ2UgKz0gY2hpbGRMb2dpY2FsV2lkdGggKyBt
YXJnaW5FbmRGb3JDaGlsZChjaGlsZCk7CiAKICAgICAgICAgaWYgKGhhc1BhY2tpbmdTcGFjZShh
dmFpbGFibGVGcmVlU3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkgJiYgc3R5bGUoKS0+
ZmxleFBhY2soKSA9PSBQYWNrSnVzdGlmeSAmJiBjaGlsZFNpemVzLnNpemUoKSA+IDEpCi0gICAg
ICAgICAgICB4T2Zmc2V0ICs9IGF2YWlsYWJsZUZyZWVTcGFjZSAvIChjaGlsZFNpemVzLnNpemUo
KSAtIDEpOworICAgICAgICAgICAgc3RhcnRFZGdlICs9IGF2YWlsYWJsZUZyZWVTcGFjZSAvIChj
aGlsZFNpemVzLnNpemUoKSAtIDEpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAppbmRleCAzNjEzZTIwNmU2MTEzMTk2YTVlYjM5MjEw
NWEzYWY3Y2ZhOWU1NjNjLi5jYTU5MDI3OTVkODUwMzQzZWY4NGY4ZjUyMWU4ZTUwMWJlNTY0Njhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAt
NTIsMTEgKzUyLDIyIEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRmxleGlibGVCb3hJdGVyYXRvcjsK
ICAgICB0eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0PiBJ
bmZsZXhpYmxlRmxleEl0ZW1TaXplOwogCi0gICAgdm9pZCBsYXlvdXRIb3Jpem9udGFsQmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3JkZXJXaWR0
aEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpOworICAgIExheW91dFVuaXQgbG9naWNhbFBhZGRp
bmdXaWR0aEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpOworICAgIExheW91dFVuaXQgbG9naWNh
bFNjcm9sbGJhckhlaWdodEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpOworICAgIExlbmd0aCBt
YXJnaW5TdGFydFN0eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCk7CisgICAgTGVuZ3RoIG1h
cmdpbkVuZFN0eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCk7CisgICAgTGF5b3V0VW5pdCBw
cmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0oUmVuZGVyQm94KiBjaGlsZCk7
CiAKLSAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRTaXplSG9yaXpvbnRhbChib29sIHJlbGF5b3V0
Q2hpbGRyZW4sIEZsZXhpYmxlQm94SXRlcmF0b3ImLCBMYXlvdXRVbml0JiwgZmxvYXQmIHRvdGFs
UG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSk7Ci0g
ICAgYm9vbCBydW5GcmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtSG9yaXpvbnRhbChMYXlvdXRV
bml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHks
IGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxleGlibGVGbGV4SXRlbVNpemUm
LCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcyk7Ci0gICAgdm9pZCBsYXlvdXRB
bmRQbGFjZUNoaWxkcmVuSG9yaXpvbnRhbChjb25zdCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYg
Y2hpbGRTaXplcywgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0IHRvdGFsUG9z
aXRpdmVGbGV4aWJpbGl0eSk7CisgICAgdm9pZCBsYXlvdXRJbmxpbmVEaXJlY3Rpb24oYm9vbCBy
ZWxheW91dENoaWxkcmVuKTsKKworICAgIGZsb2F0IGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGls
ZChSZW5kZXJCb3gqIGNoaWxkKTsKKyAgICBmbG9hdCBsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCk7CisKKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGgoYm9vbCByZWxheW91dENoaWxkcmVuLCBGbGV4aWJsZUJveEl0ZXJhdG9yJiwgTGF5b3V0
VW5pdCYsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0
aXZlRmxleGliaWxpdHkpOworICAgIGJvb2wgcnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRo
bUlubGluZURpcmVjdGlvbihMYXlvdXRVbml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0
b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHks
IEluZmxleGlibGVGbGV4SXRlbVNpemUmLCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRT
aXplcyk7CisgICAgdm9pZCBzZXRMb2dpY2FsT3ZlcnJpZGVTaXplKFJlbmRlckJveCogY2hpbGQs
IExheW91dFVuaXQgY2hpbGRQcmVmZXJyZWRTaXplKTsKKyAgICB2b2lkIGxheW91dEFuZFBsYWNl
Q2hpbGRyZW5JbmxpbmVEaXJlY3Rpb24oY29uc3QgV1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNo
aWxkU2l6ZXMsIExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCB0b3RhbFBvc2l0
aXZlRmxleGliaWxpdHkpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="104927"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>