<?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>138537</bug_id>
          
          <creation_ts>2014-11-08 15:20:10 -0800</creation_ts>
          <short_desc>Implement round-rect clipping on video elements</short_desc>
          <delta_ts>2014-11-10 10:13:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1047318</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-11-08 15:20:10 -0800</bug_when>
    <thetext>Implement round-rect clipping on video elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047319</commentid>
    <comment_count>1</comment_count>
      <attachid>241237</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-11-08 15:31:15 -0800</bug_when>
    <thetext>Created attachment 241237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047320</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-11-08 15:33:37 -0800</bug_when>
    <thetext>rdar://problem/9534399</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047321</commentid>
    <comment_count>3</comment_count>
      <attachid>241237</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-08 15:47:32 -0800</bug_when>
    <thetext>Comment on attachment 241237
Patch

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

&gt; Source/WebCore/platform/graphics/FloatRoundedRect.h:70
&gt; +        bool isUniformCornerRadius() const; // Including no radius.

hasUniformCornerRadii?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047323</commentid>
    <comment_count>4</comment_count>
      <attachid>241238</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-11-08 15:53:13 -0800</bug_when>
    <thetext>Created attachment 241238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047330</commentid>
    <comment_count>5</comment_count>
      <attachid>241238</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-08 16:21:52 -0800</bug_when>
    <thetext>Comment on attachment 241238
Patch

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

&gt; Source/WebCore/platform/graphics/FloatRoundedRect.cpp:70
&gt; +    return m_topLeft.width() == m_topLeft.height()
&gt; +        &amp;&amp; m_topLeft == m_topRight
&gt; +        &amp;&amp; m_topLeft == m_bottomLeft
&gt; +        &amp;&amp; m_topLeft == m_bottomRight;

Given these are floats, I am not sure that == will give us the results we want. We might need smarter floating point number comparison.

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2091
&gt; +        auto end = m_contentsLayerClones-&gt;end();
&gt; +        for (auto it = m_contentsLayerClones-&gt;begin(); it != end; ++it) {
&gt;              it-&gt;value-&gt;setPosition(contentOrigin);
&gt;              it-&gt;value-&gt;setBounds(contentBounds);
&gt;          }

I think you can write this as a modern for loop:

    for (auto&amp; layer : m_contentsLayerClones-&gt;values()) {
        layer-&gt;setPosition(contentOrigin);
        layer-&gt;setBounds(contentBounds);
    }

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2096
&gt; +            m_shapeMaskLayerClones = adoptPtr(new LayerMap);

This should be std::make_unique, not adoptPtr(new).

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2099
&gt; +        auto end = m_contentsClippingLayerClones-&gt;end();
&gt; +        for (auto it = m_contentsClippingLayerClones-&gt;begin(); it != end; ++it) {

I think you can write this as a modern for loop:

    for (auto&amp; clone : *m_contentsClippingLayerClones) {
        CloneID cloneID = clone.key;
        ...

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2983
&gt;  
&gt; +
&gt; +static void dumpInnerLayer(TextStream&amp; textStream, String label, PlatformCALayer* layer, int indent, LayerTreeAsTextBehavior behavior)

Extra blank line here.

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:465
&gt; +    OwnPtr&lt;LayerMap&gt; m_shapeMaskLayerClones;

This should be std::unique_ptr, not OwnPtr.

&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.h:29
&gt; +#include &quot;FloatRoundedRect.h&quot;

Shouldn’t need to include here. A forward declaration should suffice for arguments and return values both.

&gt; Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm:515
&gt; +    [m_layer.get() setMask:layer ? layer-&gt;platformLayer() : nil];

Should not need the .get() here.

&gt; Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm:856
&gt; +    [static_cast&lt;CAShapeLayer *&gt;(m_layer.get()) setPath:shapePath.platformPath()];

It’s a little strange to use a C++ cast with the Objective-C type like this. I would have probably used a C-style cast.

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1618
&gt; +    m_graphicsLayer-&gt;setContentsClippingRect(FloatRoundedRect(destRect));

Do we need the explicit conversions on the various lines like these? Why?

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm:201
&gt; +        [static_cast&lt;CAShapeLayer *&gt;(layer) setPath:path.platformPath()];

It’s a little strange to use a C++ cast with the Objective-C type like this. I would have probably used a C-style cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047404</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-11-09 11:42:42 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/175794</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047554</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-11-10 10:13:42 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; https://trac.webkit.org/changeset/175794

This broke the iOS build. Dan Bernstein committed a build fix in &lt;http://trac.webkit.org/changeset/175811&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241237</attachid>
            <date>2014-11-08 15:31:15 -0800</date>
            <delta_ts>2014-11-08 15:53:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138537-20141108153114.patch</filename>
            <type>text/plain</type>
            <size>72156</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZjYjI5MWYyNGNiN2M3
OGNhMDJiOTYwZGRjOTY4NzQ2MGUzODY3Yy4uOTAzMzY4Nzk2MmM5YmEyN2YxODNlNDczNjc5ODc3
YjlhZmYyZmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE0LTExLTA4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBy
b3VuZC1yZWN0IGNsaXBwaW5nIG9uIHZpZGVvIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1MzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFN1cHBvcnQgYm9yZGVyLXJhZGl1
cyBvbiB2aWRlbyBhbmQgb3RoZXIgbGF5ZXJzIHdpdGggY29tcG9zaXRlZCBjb250ZW50cywKKyAg
ICAgICAgYnkgcHVzaGluZyBhIEZsb2F0Um91bmRlZFJlY3Qgb250byB0aGUgR3JhcGhpY3NMYXll
ciBhcyB0aGUgY29udGVudHNDbGlwcGluZ1JlY3QsCisgICAgICAgIGFuZCwgb24gTWFjLCB1c2lu
ZyBsYXllciBjb3JuZXItcmFkaXVzIG9yIGEgQ0FTaGFwZUxheWVyIG1hc2suCisKKyAgICAgICAg
VGVzdDogY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYm9yZGVyLXJhZGl1cy5odG1sCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJv
dW5kZWRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q6OlJhZGlp
Ojppc1VuaWZvcm1Db3JuZXJSYWRpdXMpOiBSZXR1cm5zIHRydWUgaWYgYWxsCisgICAgICAgIGNv
cm5lciByYWRpaSBhcmUgdGhlIHNhbWUsIGFuZCBoYXZlIGVxdWFsIHdpZHRocyBhbmQgaGVpZ2h0
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0Lmg6IEFsbG93
IGNvbnN0cnVjdGlvbiB3aXRob3V0IGFuIGV4cGxpY2l0CisgICAgICAgIHJlY3QuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpHcmFwaGljc0xheWVyKTogbnVsbHB0ciBnb29kbmVzcy4KKyAgICAg
ICAgKHNob3dHcmFwaGljc0xheWVyVHJlZSk6IFByaW50IGNvbnRlbnRzIGxheWVycyB3aGVuIGRl
YnVnZ2luZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpjb250ZW50c0NsaXBwaW5nUmVjdCk6IE1h
a2UgdGhpcyB0YWtlIGEgRmxvYXRSb3VuZGVkUmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRDb250ZW50c0NsaXBwaW5nUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJs
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDbGlwcGlu
Z1N0cmF0ZWd5KTogRGV0ZXJtaW5lcyB3aGV0aGVyIHdlIGNhbiBzaW1wbHkKKyAgICAgICAgdXNl
IGNvcm5lci1yYWRpdXMgb24gdGhlIGV4aXN0aW5nIGNvbnRlbnRzQ2xpcHBpbmdMYXllciwgb3Ig
d2hldGhlciB3ZSBoYXZlIHRvCisgICAgICAgIGNyZWF0ZSBhIHNoYXBlIGxheWVyIHRvIHVzZSBh
cyBhIG1hc2suCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRl
bnRzUmVjdHMpOiBXZSBoYXZlIHRvIGFkZC9yZW1vdmUgdGhlIHNoYXBlIGxheWVyCisgICAgICAg
IGJhc2VkIG9uIHRoZSByb3VuZGVkIHJlY3QgcmFkaWkuIENhbGxzIHVwZGF0ZUNsaXBwaW5nU3Ry
YXRlZ3koKSBvbiB0aGUgY2xpcHBpbmcgbGF5ZXIsCisgICAgICAgIGFuZCBhbHNvIHVwZGF0ZXMg
Y2xvbmVzIGFjY29yZGluZ2x5LgorICAgICAgICAoV2ViQ29yZTo6ZHVtcElubmVyTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpkdW1wQWRkaXRpb25hbFByb3BlcnRp
ZXMpOiBEdW1wIGFsbCB0aGUgaW5uZXIgbGF5ZXJzCisgICAgICAgIChyZXF1aXJpbmcgb24gdGVz
dCByZWJhc2VsaW5lKSwgaW5jbHVkaW5nIHRoZSBuZXcgc2hhcGUgYW5kIGJhY2tkcm9wIGxheWVy
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDogQWRkIGEgbmV3
IHNoYXBlIGxheWVyIHR5cGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1Bs
YXRmb3JtQ0FMYXllck1hYy5oOiBTdXBwb3J0IGZvciBjb3JuZXIgcmFkaXVzIGFuZAorICAgICAg
ICBhIHJvdW5kZWQgcmVjdCBzaGFwZSBtYXNrLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW06CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJN
YWM6OlBsYXRmb3JtQ0FMYXllck1hYyk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNs
b25lKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllck1hYzo6c2V0TWFzayk6CisgICAgICAgIChQ
bGF0Zm9ybUNBTGF5ZXJNYWM6OmNvcm5lclJhZGl1cyk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5
ZXJNYWM6OnNldENvcm5lclJhZGl1cyk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJNYWM6OnNo
YXBlUm91bmRlZFJlY3QpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyTWFjOjpzZXRTaGFwZVJv
dW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6Y29ybmVyUmFkaXVz
KToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0Q29ybmVyUmFkaXVzKToKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6c2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgIChQbGF0
Zm9ybUNBTGF5ZXJXaW46OnNldFNoYXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6cmVzZXRDb250ZW50c1JlY3QpOiBVc2UgZ2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KCkgdG8gZ2V0CisgICAgICAgIHRoZSByb3VuZGVkIHJlY3QgdXNlZCB0byBjbGlwIGNvbnRlbnRz
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwb3NpdGlvbk92ZXJmbG93
Q29udHJvbHNMYXllcnMpOiBQdXNoIGEgRmxvYXRSb3VuZGVkUmVjdCBmb3IgdGhlIGNvbnRlbnRz
IGNsaXAsCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURpcmVj
dGx5Q29tcG9zaXRlZEJhY2tncm91bmRDb2xvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVEaXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kSW1h
Z2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
SW1hZ2VDb250ZW50cyk6IEdldCB0aGUgcm91bmRlZCByZWN0IGNsaXAuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOiBudWxscHRyLgorCiAyMDE0LTExLTA3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IHRyeSB0
byBzY2hlZHVsZSBhIEdyYXBoaWNzTGF5ZXIgZmx1c2ggd2hlbiBwcm9wYWdhdGluZyBjaGFuZ2Vz
IHRvIHJlcGxpY2FzIGluc2lkZSBhIGZsdXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTU3YjcyMDQ0MWUzMGY5
MzFhODNkMjk2ZTFmNzRmZDQwMWIxNjVmNC4uZDEyNDNkNGE5NmFkOGZjZWY4ZTBiMGIwMDFhMTFi
NTFkMjU1ODg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE0LTExLTA4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBy
b3VuZC1yZWN0IGNsaXBwaW5nIG9uIHZpZGVvIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1MzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IGJvcmRlci1yYWRpdXMgb24gdmlk
ZW8gYW5kIG90aGVyIGxheWVycyB3aXRoIGNvbXBvc2l0ZWQgY29udGVudHMsCisgICAgICAgIGJ5
IHB1c2hpbmcgYSBGbG9hdFJvdW5kZWRSZWN0IG9udG8gdGhlIEdyYXBoaWNzTGF5ZXIgYXMgdGhl
IGNvbnRlbnRzQ2xpcHBpbmdSZWN0LAorICAgICAgICBhbmQsIG9uIE1hYywgdXNpbmcgbGF5ZXIg
Y29ybmVyLXJhZGl1cyBvciBhIENBU2hhcGVMYXllciBtYXNrLgorCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
RmxvYXRSb3VuZGVkUmVjdD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
RmxvYXRSb3VuZGVkUmVjdD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUubW06IE5ldyBzaGFwZSBsYXllciB0eXBlLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW06CisgICAgICAgIChXZWJLaXQ6OmFwcGx5UHJv
cGVydGllc1RvTGF5ZXIpOiBBcHBseSBjb3JuZXItcmFkaXVzIGFuZCBzaGFwZSBwYXRoLgorICAg
ICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDogUHJldHRpZnkg
dGhlIGZsYWdzLiBZZXMsIEkgcHJlZmVyIHRoaXMgc3R5bGUuCisgICAgICAgICogU2hhcmVkL21h
Yy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVy
dGllczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OmR1bXBDaGFu
Z2VkTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1JlbW90ZUxheWVyVHJlZUhv
c3RJT1MubW06CisgICAgICAgICgrW1dLU2hhcGVWaWV3IGxheWVyQ2xhc3NdKTogTWFrZSBVSVZp
ZXdzIHdpdGggYSBDQVNoYXBlTGF5ZXIgbGF5ZXIgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZUhvc3Q6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6dXBkYXRlQ2xvbmVkTGF5ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6
aXNFcXVpdmFsZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldE1hc2spOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dENsb25lZExheWVyKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpj
b3JuZXJSYWRpdXMpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dENvcm5lclJhZGl1cyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKwogMjAxNC0xMS0wNiAgQ29ucmFkIFNodWx0eiAg
PGNvbnJhZF9zaHVsdHpAYXBwbGUuY29tPgogCiAgICAgICAgIENsaWVudHMgc2hvdWxkIGJlIGFi
bGUgdG8gY3VzdG9taXplIHRoZSB2aWV3IHVzZWQgZm9yIHBhZ2UgcHJldmlld3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggMDUxODI2OWIzM2Y1OTdjMDJmM2YxMzk4ZGU5YTBjNDIyYTM4MWY3Zi4u
MDdjYzJlOGU2Y2FmZTg0NWVmZjIyMWYxZjBjNmQwY2E2N2JhNDYxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTU0OSw3ICs1NDksNiBAQCBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDl0
cmFuc2xhdGVFZmYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQK
IF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0RDFFdgogX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0xheWVyQ0ExMGluaXRpYWxpemVFdgotX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0ExOHNl
dEJhY2tkcm9wRmlsdGVyc0VSS05TXzE2RmlsdGVyT3BlcmF0aW9uc0UKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NMYXllckNBMTBzZXRGaWx0ZXJzRVJLTlNfMTZGaWx0ZXJPcGVyYXRpb25zRQogX19a
TjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0ExMHNldE9wYWNpdHlFZgogX19aTjdXZWJDb3JlMTVH
cmFwaGljc0xheWVyQ0ExMXNldENoaWxkcmVuRVJLTjNXVEY2VmVjdG9ySVBOU18xM0dyYXBoaWNz
TGF5ZXJFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQpAQCAtNTc5LDYgKzU3OCw3IEBAIF9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMTZzZXRNYXNrc1RvQm91bmRzRWIKIF9fWk43V2Vi
Q29yZTE1R3JhcGhpY3NMYXllckNBMTdzZXRDb250ZW50c09wYXF1ZUViCiBfX1pON1dlYkNvcmUx
NUdyYXBoaWNzTGF5ZXJDQTE3c2V0Q3VzdG9tQmVoYXZpb3JFTlNfMTNHcmFwaGljc0xheWVyMTRD
dXN0b21CZWhhdmlvckUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMTdzdXNwZW5kQW5p
bWF0aW9uc0VkCitfX1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTE4c2V0QmFja2Ryb3BGaWx0
ZXJzRVJLTlNfMTZGaWx0ZXJPcGVyYXRpb25zRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVy
Q0ExOHNldEJhY2tncm91bmRDb2xvckVSS05TXzVDb2xvckUKIF9fWk43V2ViQ29yZTE1R3JhcGhp
Y3NMYXllckNBMThzZXRDb250ZW50c1RvSW1hZ2VFUE5TXzVJbWFnZUUKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NMYXllckNBMThzZXRDb250ZW50c1Zpc2libGVFYgpAQCAtNTkzLDcgKzU5Myw3IEBA
IF9fWk43V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMjFzZXRBY2NlbGVyYXRlc0RyYXdpbmdFYgog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMXNldEJhY2tmYWNlVmlzaWJpbGl0eUViCiBf
X1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTIxc2V0TmVlZHNEaXNwbGF5SW5SZWN0RVJLTlNf
OUZsb2F0UmVjdEVOU18xM0dyYXBoaWNzTGF5ZXIxN1Nob3VsZENsaXBUb0xheWVyRQogX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMXNldFNob3dSZXBhaW50Q291bnRlckViCi1fX1pON1dl
YkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTIzc2V0Q29udGVudHNDbGlwcGluZ1JlY3RFUktOU185Rmxv
YXRSZWN0RQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyM3NldENvbnRlbnRzQ2xpcHBp
bmdSZWN0RVJLTlNfMTZGbG9hdFJvdW5kZWRSZWN0RQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xh
eWVyQ0EyM3NldENvbnRlbnRzTmVlZHNEaXNwbGF5RXYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NM
YXllckNBMjNzZXRDb250ZW50c1RvU29saWRDb2xvckVSS05TXzVDb2xvckUKIF9fWk43V2ViQ29y
ZTE1R3JhcGhpY3NMYXllckNBMjNzZXREZWJ1Z0JhY2tncm91bmRDb2xvckVSS05TXzVDb2xvckUK
QEAgLTY4Niw2ICs2ODYsNyBAQCBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGExMlJvdGF0
aW9uUmF0ZTZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGE2Y3Jl
YXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TMF8xMkFjY2VsZXJhdGlvbkVFRVM0X05TMl9JTlMwXzEy
Um90YXRpb25SYXRlRUVFYmQKIF9fWk43V2ViQ29yZTE2RmlsdGVyT3BlcmF0aW9uc0MxRXYKIF9f
Wk43V2ViQ29yZTE2RmlsdGVyT3BlcmF0aW9uc2FTRVJLUzBfCitfX1pON1dlYkNvcmUxNkZsb2F0
Um91bmRlZFJlY3RDMUVSS05TXzlGbG9hdFJlY3RFUktOUzBfNVJhZGlpRQogX19aTjdXZWJDb3Jl
MTZGb250UGxhdGZvcm1EYXRhRDFFdgogX19aTjdXZWJDb3JlMTZGcmFtZUxvYWRSZXF1ZXN0QzFF
UE5TXzVGcmFtZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTRTdWJzdGl0dXRlRGF0YUUK
IF9fWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDEzc2V0QXV0b2ZpbGxlZEViCkBAIC0xMTc4
LDYgKzExNzksNyBAQCBfX1pON1dlYkNvcmU0UGFnZThzZXRNdXRlZEViCiBfX1pON1dlYkNvcmU0
UGFnZTlpbml0R3JvdXBFdgogX19aTjdXZWJDb3JlNFBhZ2VDMUVSTlMwXzExUGFnZUNsaWVudHNF
CiBfX1pON1dlYkNvcmU0UGFnZUQxRXYKK19fWk43V2ViQ29yZTRQYXRoMTRhZGRSb3VuZGVkUmVj
dEVSS05TXzE2RmxvYXRSb3VuZGVkUmVjdEVOUzBfMTlSb3VuZGVkUmVjdFN0cmF0ZWd5RQogX19a
TjdXZWJDb3JlNFBhdGgxNGFkZFJvdW5kZWRSZWN0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzlGbG9h
dFNpemVFTlMwXzE5Um91bmRlZFJlY3RTdHJhdGVneUUKIF9fWk43V2ViQ29yZTRQYXRoQzFFdgog
X19aTjdXZWJDb3JlNFBhdGhEMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuY3BwCmluZGV4IDMxMjVkZmQ3MmJhOTI1MmE4ZjVh
MTg2MDI3MDI1OGQ2NTE3NDJhMmMuLmIwMjhhMTIzMGY2ZGYwOTQyNjhkYzY3YjQ3MjJjYTI1YzNh
NzE1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
Um91bmRlZFJlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0Um91bmRlZFJlY3QuY3BwCkBAIC02Miw2ICs2MiwxNCBAQCBib29sIEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpOjppc1plcm8oKSBjb25zdAogICAgIHJldHVybiBtX3RvcExlZnQuaXNaZXJvKCkg
JiYgbV90b3BSaWdodC5pc1plcm8oKSAmJiBtX2JvdHRvbUxlZnQuaXNaZXJvKCkgJiYgbV9ib3R0
b21SaWdodC5pc1plcm8oKTsKIH0KIAorYm9vbCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaTo6aXNV
bmlmb3JtQ29ybmVyUmFkaXVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90b3BMZWZ0LndpZHRo
KCkgPT0gbV90b3BMZWZ0LmhlaWdodCgpCisgICAgICAgICYmIG1fdG9wTGVmdCA9PSBtX3RvcFJp
Z2h0CisgICAgICAgICYmIG1fdG9wTGVmdCA9PSBtX2JvdHRvbUxlZnQKKyAgICAgICAgJiYgbV90
b3BMZWZ0ID09IG1fYm90dG9tUmlnaHQ7Cit9CisKIHZvaWQgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWk6OnNjYWxlKGZsb2F0IGZhY3RvcikKIHsKICAgICBzY2FsZShmYWN0b3IsIGZhY3Rvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRS
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0
LmgKaW5kZXggODAyMDI2YzgyYTUzOGNiMDllYjI1ZTY1ZThlOGNmMjVlZDU0YzU5Mi4uZTQzZWEx
YTIxMTQzYmNlMzk0NzQ3MDI2NzEzNjFiYTNlZGIyNTU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaApAQCAtNjcsNiArNjcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2JvdHRvbVJpZ2h0OyB9CiAKICAgICAgICAgYm9vbCBpc1plcm8oKSBjb25z
dDsKKyAgICAgICAgYm9vbCBpc1VuaWZvcm1Db3JuZXJSYWRpdXMoKSBjb25zdDsgLy8gSW5jbHVk
aW5nIG5vIHJhZGl1cy4KIAogICAgICAgICB2b2lkIHNjYWxlKGZsb2F0IGZhY3Rvcik7CiAgICAg
ICAgIHZvaWQgc2NhbGUoZmxvYXQgaG9yaXpvbnRhbEZhY3RvciwgZmxvYXQgdmVydGljYWxGYWN0
b3IpOwpAQCAtODIsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZsb2F0U2l6ZSBtX2JvdHRv
bVJpZ2h0OwogICAgIH07CiAKLSAgICBleHBsaWNpdCBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFJhZGlpJiA9IFJhZGlpKCkpOworICAgIGV4cGxpY2l0IEZsb2F0Um91
bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiA9IEZsb2F0UmVjdCgpLCBjb25zdCBSYWRpaSYgPSBS
YWRpaSgpKTsKICAgICBleHBsaWNpdCBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0
Jik7CiAgICAgRmxvYXRSb3VuZGVkUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KTsKICAgICBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0U2l6ZSYgdG9wTGVmdCwgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodCwgY29uc3Qg
RmxvYXRTaXplJiBib3R0b21MZWZ0LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAK
aW5kZXggM2Q3Y2Q4NTI3MWIyOTg2NDNjZDY1NWY2OTE4MTJiYmU1ODJkYjcxZC4uMzA3YTdjZmQ4
NTVmMDZmM2JlMTg2MzIzMGY3MzRhNTRjMDVhZWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTkzLDEwICs5MywxMCBA
QCBHcmFwaGljc0xheWVyOjpHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVu
dCkKICAgICAsIG1faXNNYXNrTGF5ZXIoZmFsc2UpCiAgICAgLCBtX3BhaW50aW5nUGhhc2UoR3Jh
cGhpY3NMYXllclBhaW50QWxsV2l0aE92ZXJmbG93Q2xpcCkKICAgICAsIG1fY29udGVudHNPcmll
bnRhdGlvbihDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bikKLSAgICAsIG1fcGFyZW50KDAp
Ci0gICAgLCBtX21hc2tMYXllcigwKQotICAgICwgbV9yZXBsaWNhTGF5ZXIoMCkKLSAgICAsIG1f
cmVwbGljYXRlZExheWVyKDApCisgICAgLCBtX3BhcmVudChudWxscHRyKQorICAgICwgbV9tYXNr
TGF5ZXIobnVsbHB0cikKKyAgICAsIG1fcmVwbGljYUxheWVyKG51bGxwdHIpCisgICAgLCBtX3Jl
cGxpY2F0ZWRMYXllcihudWxscHRyKQogICAgICwgbV9yZXBhaW50Q291bnQoMCkKICAgICAsIG1f
Y3VzdG9tQXBwZWFyYW5jZShOb0N1c3RvbUFwcGVhcmFuY2UpCiAgICAgLCBtX2N1c3RvbUJlaGF2
aW9yKE5vQ3VzdG9tQmVoYXZpb3IpCkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBzaG93R3JhcGhp
Y3NMYXllclRyZWUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgaWYg
KCFsYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIG91dHB1dCA9IGxheWVyLT5s
YXllclRyZWVBc1RleHQoV2ViQ29yZTo6TGF5ZXJUcmVlQXNUZXh0RGVidWcgfCBXZWJDb3JlOjpM
YXllclRyZWVBc1RleHRJbmNsdWRlVmlzaWJsZVJlY3RzIHwgV2ViQ29yZTo6TGF5ZXJUcmVlQXNU
ZXh0SW5jbHVkZVRpbGVDYWNoZXMpOworICAgIFN0cmluZyBvdXRwdXQgPSBsYXllci0+bGF5ZXJU
cmVlQXNUZXh0KFdlYkNvcmU6OkxheWVyVHJlZUFzVGV4dERlYnVnIHwgV2ViQ29yZTo6TGF5ZXJU
cmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0cyB8IFdlYkNvcmU6OkxheWVyVHJlZUFzVGV4dElu
Y2x1ZGVUaWxlQ2FjaGVzIHwgV2ViQ29yZTo6TGF5ZXJUcmVlQXNUZXh0SW5jbHVkZUNvbnRlbnRM
YXllcnMpOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG91dHB1dC51dGY4KCkuZGF0YSgp
KTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oCmluZGV4IDMyYWQzN2YxNzU4MzIzMjBkYmVlMmRmZGNlMzVhNzM3NjdhZDNl
NTIuLmNmYTFmMTA1MmY0MDgxMjkzNDI1YzlhYWEwODNiYmFlNmY0MTQzY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTMxLDcg
KzMxLDcgQEAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpA
QCAtMzgyLDggKzM4Miw4IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgY29udGVudHNSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50c1JlY3Q7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikgeyBtX2NvbnRlbnRzUmVjdCA9IHI7IH0KIAot
ICAgIEZsb2F0UmVjdCBjb250ZW50c0NsaXBwaW5nUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudHNDbGlwcGluZ1JlY3Q7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNDbGlwcGlu
Z1JlY3QoY29uc3QgRmxvYXRSZWN0JiByKSB7IG1fY29udGVudHNDbGlwcGluZ1JlY3QgPSByOyB9
CisgICAgRmxvYXRSb3VuZGVkUmVjdCBjb250ZW50c0NsaXBwaW5nUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudHNDbGlwcGluZ1JlY3Q7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNDbGlwcGluZ1JlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpIHsgbV9j
b250ZW50c0NsaXBwaW5nUmVjdCA9IHJvdW5kZWRSZWN0OyB9CiAKICAgICAvLyBUcmFuc2l0aW9u
cyBhcmUgaWRlbnRpZmllZCBieSBhIHNwZWNpYWwgYW5pbWF0aW9uIG5hbWUgdGhhdCBjYW5ub3Qg
Y2xhc2ggd2l0aCBhIGtleWZyYW1lIGlkZW50aWZpZXIuCiAgICAgc3RhdGljIFN0cmluZyBhbmlt
YXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5SUQpOwpAQCAtNjAyLDcgKzYw
Miw3IEBAIHByb3RlY3RlZDoKICAgICBGbG9hdFBvaW50IG1fcmVwbGljYXRlZExheWVyUG9zaXRp
b247IC8vIEZvciBhIHJlcGxpY2EgbGF5ZXIsIHRoZSBwb3NpdGlvbiBvZiB0aGUgcmVwbGljYS4K
IAogICAgIEZsb2F0UmVjdCBtX2NvbnRlbnRzUmVjdDsKLSAgICBGbG9hdFJlY3QgbV9jb250ZW50
c0NsaXBwaW5nUmVjdDsKKyAgICBGbG9hdFJvdW5kZWRSZWN0IG1fY29udGVudHNDbGlwcGluZ1Jl
Y3Q7CiAgICAgRmxvYXRQb2ludCBtX2NvbnRlbnRzVGlsZVBoYXNlOwogICAgIEZsb2F0U2l6ZSBt
X2NvbnRlbnRzVGlsZVNpemU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDA0OThiMzRkYzA5NzBlYzMy
NzNkNjFlMWZhYjlmMWM0MWJiN2UxOGQuLjM1ZDg3NjY0OWMzMDE2YzY2ZDljZDk3MGE3ZTQxZGRl
ZDY0M2Q5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtNzc4LDcgKzc3OCw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1JlY3RzQ2hhbmdlZCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c0NsaXBwaW5nUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNDbGlwcGluZ1JlY3QoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKIHsKICAgICBpZiAocmVjdCA9PSBtX2NvbnRlbnRz
Q2xpcHBpbmdSZWN0KQogICAgICAgICByZXR1cm47CkBAIC04ODMsNyArODgzLDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKICAgICB9IGVsc2UgewogICAgICAgICBjb250ZW50c0xheWVyQ2hhbmdlZCA9IG1fY29udGVu
dHNMYXllcjsKICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IE5vQ29udGVudHNMYXll
cjsKLSAgICAgICAgbV9jb250ZW50c0xheWVyID0gMDsKKyAgICAgICAgbV9jb250ZW50c0xheWVy
ID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoY29udGVudHNMYXllckNoYW5nZWQpCkBAIC05
MjIsOCArOTIyLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSogaW1hZ2UpCiAgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyKQogICAgICAgICAgICAg
bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX3VuY29ycmVj
dGVkQ29udGVudHNJbWFnZSA9IDA7Ci0gICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSAw
OworICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9IG51bGxwdHI7CisgICAgICAg
IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBudWxscHRyOwogICAgICAgICBtX2NvbnRlbnRzTGF5
ZXJQdXJwb3NlID0gTm9Db250ZW50c0xheWVyOwogICAgICAgICBpZiAobV9jb250ZW50c0xheWVy
KQogICAgICAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKQEAgLTk0NSw3ICs5NDUsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllciwgQwogICAgIC8vIHRoZSBjcmVhdG9yIG9mIHRoZSByYXcg
bGF5ZXIgaXMgdXNpbmcgaXQgZm9yIHNvbWUgb3RoZXIgcHVycG9zZS4KICAgICAvLyBGb3Igbm93
IHdlIGRvbid0IHN1cHBvcnQgc3VjaCBhIGNhc2UuCiAgICAgUGxhdGZvcm1DQUxheWVyKiBwbGF0
Zm9ybUNBTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxh
eWVyKTsKLSAgICBtX2NvbnRlbnRzTGF5ZXIgPSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FM
YXllciA/IHBsYXRmb3JtQ0FMYXllciA6IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxh
eWVyLCB0aGlzKSkgOiAwOworICAgIG1fY29udGVudHNMYXllciA9IHBsYXRmb3JtTGF5ZXIgPyAo
cGxhdGZvcm1DQUxheWVyID8gcGxhdGZvcm1DQUxheWVyIDogY3JlYXRlUGxhdGZvcm1DQUxheWVy
KHBsYXRmb3JtTGF5ZXIsIHRoaXMpKSA6IG51bGxwdHI7CiAgICAgbV9jb250ZW50c0xheWVyUHVy
cG9zZSA9IHBsYXRmb3JtTGF5ZXIgPyBwdXJwb3NlIDogTm9Db250ZW50c0xheWVyOwogCiAgICAg
bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKQEAgLTEzNTUsNyArMTM1NSw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoQ29tbWl0U3RhdGUm
IGNvbW1pdFN0YXRlCiAKICAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBWaXNpYmxlUmVj
dENoYW5nZWQpCiAgICAgICAgIHVwZGF0ZVZpc2libGVSZWN0KG9sZFZpc2libGVSZWN0KTsKLSAg
ICAKKwogICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFRpbGluZ0FyZWFDaGFuZ2VkKSAv
LyBOZWVkcyB0byBoYXBwZW4gYWZ0ZXIgVmlzaWJsZVJlY3RDaGFuZ2VkLCBDb250ZW50c1NjYWxl
Q2hhbmdlZAogICAgICAgICB1cGRhdGVUaWxlcygpOwogCkBAIC0xOTk1LDYgKzE5OTUsMzYgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzQ29sb3JMYXllcigpCiAgICAgfQog
fQogCisvLyBUaGUgY2xpcHBpbmcgc3RyYXRlZ3kgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSByb3Vu
ZGVkIHJlY3QgaGFzIGVxdWFsIGNvcm5lciByYWRpaS4KK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVDbGlwcGluZ1N0cmF0ZWd5KFBsYXRmb3JtQ0FMYXllciYgY2xpcHBpbmdMYXllciwgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4mIHNoYXBlTWFza0xheWVyLCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByb3VuZGVkUmVjdCkKK3sKKyAgICBpZiAocm91bmRlZFJlY3QucmFkaWkoKS5pc1VuaWZv
cm1Db3JuZXJSYWRpdXMoKSkgeworICAgICAgICBjbGlwcGluZ0xheWVyLnNldE1hc2sobnVsbHB0
cik7CisgICAgICAgIGlmIChzaGFwZU1hc2tMYXllcikgeworICAgICAgICAgICAgc2hhcGVNYXNr
TGF5ZXItPnNldE93bmVyKG51bGxwdHIpOworICAgICAgICAgICAgc2hhcGVNYXNrTGF5ZXIgPSBu
dWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgY2xpcHBpbmdMYXllci5zZXRNYXNrc1RvQm91
bmRzKHRydWUpOworICAgICAgICBjbGlwcGluZ0xheWVyLnNldENvcm5lclJhZGl1cyhyb3VuZGVk
UmVjdC5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghc2hhcGVNYXNrTGF5ZXIpIHsKKyAgICAgICAgc2hhcGVNYXNrTGF5ZXIgPSBj
cmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaGFwZUxheWVy
LCB0aGlzKTsKKyAgICAgICAgc2hhcGVNYXNrTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQzRCgpKTsKKyAgICB9CisgICAgCisgICAgc2hhcGVNYXNrTGF5ZXItPnNldFBvc2l0aW9uKEZs
b2F0UG9pbnQoKSk7CisgICAgc2hhcGVNYXNrTGF5ZXItPnNldEJvdW5kcyhjbGlwcGluZ0xheWVy
LmJvdW5kcygpKTsKKworICAgIGNsaXBwaW5nTGF5ZXIuc2V0Q29ybmVyUmFkaXVzKDApOworICAg
IGNsaXBwaW5nTGF5ZXIuc2V0TWFzayhzaGFwZU1hc2tMYXllci5nZXQoKSk7CisgICAgCisgICAg
RmxvYXRSb3VuZGVkUmVjdCBvZmZzZXRSb3VuZGVkUmVjdChjbGlwcGluZ0xheWVyLmJvdW5kcygp
LCByb3VuZGVkUmVjdC5yYWRpaSgpKTsKKyAgICBzaGFwZU1hc2tMYXllci0+c2V0U2hhcGVSb3Vu
ZGVkUmVjdChvZmZzZXRSb3VuZGVkUmVjdCk7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVDb250ZW50c1JlY3RzKCkKIHsKICAgICBpZiAoIW1fY29udGVudHNMYXllcikKQEAgLTIw
MDMsNDQgKzIwMzMsNDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUmVj
dHMoKQogICAgIEZsb2F0UG9pbnQgY29udGVudE9yaWdpbjsKICAgICBGbG9hdFJlY3QgY29udGVu
dEJvdW5kcygwLCAwLCBtX2NvbnRlbnRzUmVjdC53aWR0aCgpLCBtX2NvbnRlbnRzUmVjdC5oZWln
aHQoKSk7CiAKLSAgICBGbG9hdFBvaW50IGNsaXBwaW5nT3JpZ2luOwotICAgIEZsb2F0UmVjdCBj
bGlwcGluZ0JvdW5kczsKKyAgICBGbG9hdFBvaW50IGNsaXBwaW5nT3JpZ2luKG1fY29udGVudHND
bGlwcGluZ1JlY3QucmVjdCgpLmxvY2F0aW9uKCkpOworICAgIEZsb2F0UmVjdCBjbGlwcGluZ0Jv
dW5kcyhGbG9hdFBvaW50KCksIG1fY29udGVudHNDbGlwcGluZ1JlY3QucmVjdCgpLnNpemUoKSk7
CiAgICAgCiAgICAgYm9vbCBnYWluZWRPckxvc3RDbGlwcGluZ0xheWVyID0gZmFsc2U7Ci0gICAg
aWYgKCFtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0LmNvbnRhaW5zKG1fY29udGVudHNSZWN0KSkgewor
ICAgIGlmIChtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0LmlzUm91bmRlZCgpIHx8ICFtX2NvbnRlbnRz
Q2xpcHBpbmdSZWN0LnJlY3QoKS5jb250YWlucyhtX2NvbnRlbnRzUmVjdCkpIHsKICAgICAgICAg
aWYgKCFtX2NvbnRlbnRzQ2xpcHBpbmdMYXllcikgewogICAgICAgICAgICAgbV9jb250ZW50c0Ns
aXBwaW5nTGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVMYXllciwgdGhpcyk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllci0+
c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICAgICAgICAgIG1fY29udGVudHNDbGlwcGluZ0xh
eWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KCkpOwogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgICAgIG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5zZXROYW1lKCJDb250ZW50cyBDbGlwcGlu
ZyIpOwogI2VuZGlmCi0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnJlbW92ZUZyb21TdXBl
cmxheWVyKCk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllci0+YXBwZW5kU3Vi
bGF5ZXIoKm1fY29udGVudHNMYXllcik7CiAgICAgICAgICAgICBnYWluZWRPckxvc3RDbGlwcGlu
Z0xheWVyID0gdHJ1ZTsKICAgICAgICAgfQotICAgIAotICAgICAgICBjbGlwcGluZ09yaWdpbiA9
IG1fY29udGVudHNDbGlwcGluZ1JlY3QubG9jYXRpb24oKTsKLSAgICAgICAgY2xpcHBpbmdCb3Vu
ZHMuc2V0U2l6ZShtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0LnNpemUoKSk7Ci0KLSAgICAgICAgY29u
dGVudE9yaWdpbiA9IEZsb2F0UG9pbnQobV9jb250ZW50c1JlY3QubG9jYXRpb24oKSAtIG1fY29u
dGVudHNDbGlwcGluZ1JlY3QubG9jYXRpb24oKSk7CiAKICAgICAgICAgbV9jb250ZW50c0NsaXBw
aW5nTGF5ZXItPnNldFBvc2l0aW9uKGNsaXBwaW5nT3JpZ2luKTsKICAgICAgICAgbV9jb250ZW50
c0NsaXBwaW5nTGF5ZXItPnNldEJvdW5kcyhjbGlwcGluZ0JvdW5kcyk7CiAKLSAgICAgICAgbV9j
b250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihjb250ZW50T3JpZ2luKTsKLSAgICAgICAgbV9jb250
ZW50c0xheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CisgICAgICAgIHVwZGF0ZUNsaXBw
aW5nU3RyYXRlZ3koKm1fY29udGVudHNDbGlwcGluZ0xheWVyLCBtX3NoYXBlTWFza0xheWVyLCBt
X2NvbnRlbnRzQ2xpcHBpbmdSZWN0KTsKKworICAgICAgICBpZiAoZ2FpbmVkT3JMb3N0Q2xpcHBp
bmdMYXllcikgeworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5yZW1vdmVGcm9tU3VwZXJs
YXllcigpOworICAgICAgICAgICAgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXItPmFwcGVuZFN1Ymxh
eWVyKCptX2NvbnRlbnRzTGF5ZXIpOworICAgICAgICB9CiAgICAgCisgICAgICAgIGNvbnRlbnRP
cmlnaW4gPSBGbG9hdFBvaW50KG1fY29udGVudHNSZWN0LmxvY2F0aW9uKCkgLSBtX2NvbnRlbnRz
Q2xpcHBpbmdSZWN0LnJlY3QoKS5sb2NhdGlvbigpKTsKICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAobV9jb250ZW50c0NsaXBwaW5nTGF5ZXIpIHsKICAgICAgICAgICAgIG1fY29udGVudHNMYXll
ci0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKIAogICAgICAgICAgICAgbV9jb250ZW50c0NsaXBw
aW5nTGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRz
Q2xpcHBpbmdMYXllci0+c2V0T3duZXIoMCk7CisgICAgICAgICAgICBtX2NvbnRlbnRzQ2xpcHBp
bmdMYXllci0+c2V0T3duZXIobnVsbHB0cik7CisgICAgICAgICAgICBtX2NvbnRlbnRzQ2xpcHBp
bmdMYXllci0+c2V0TWFzayhudWxscHRyKTsKICAgICAgICAgICAgIG1fY29udGVudHNDbGlwcGlu
Z0xheWVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGdhaW5lZE9yTG9zdENsaXBwaW5nTGF5ZXIg
PSB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKG1fc2hhcGVNYXNrTGF5ZXIpIHsKKyAg
ICAgICAgICAgIG1fc2hhcGVNYXNrTGF5ZXItPnNldE93bmVyKG51bGxwdHIpOworICAgICAgICAg
ICAgbV9zaGFwZU1hc2tMYXllciA9IG51bGxwdHI7CisgICAgICAgIH0KKwogICAgICAgICBjb250
ZW50T3JpZ2luID0gbV9jb250ZW50c1JlY3QubG9jYXRpb24oKTsKICAgICB9CiAgICAgCkBAIC0y
MDUxLDE4ICsyMDg0LDMxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1Jl
Y3RzKCkKICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsKIAog
ICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJDbG9uZXMpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1fY29udGVudHNMYXllckNsb25lcy0+ZW5kKCk7Ci0gICAgICAgIGZv
ciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgYXV0byBlbmQgPSBtX2NvbnRlbnRz
TGF5ZXJDbG9uZXMtPmVuZCgpOworICAgICAgICBmb3IgKGF1dG8gaXQgPSBtX2NvbnRlbnRzTGF5
ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgaXQtPnZh
bHVlLT5zZXRQb3NpdGlvbihjb250ZW50T3JpZ2luKTsKICAgICAgICAgICAgIGl0LT52YWx1ZS0+
c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKG1f
Y29udGVudHNDbGlwcGluZ0xheWVyQ2xvbmVzKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllckNsb25lcy0+ZW5kKCk7Ci0gICAg
ICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb250ZW50c0NsaXBwaW5n
TGF5ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaXQt
PnZhbHVlLT5zZXRQb3NpdGlvbihjbGlwcGluZ09yaWdpbik7Ci0gICAgICAgICAgICBpdC0+dmFs
dWUtPnNldEJvdW5kcyhjbGlwcGluZ0JvdW5kcyk7CisgICAgICAgIGlmICghbV9zaGFwZU1hc2tM
YXllckNsb25lcyAmJiBtX3NoYXBlTWFza0xheWVyKQorICAgICAgICAgICAgbV9zaGFwZU1hc2tM
YXllckNsb25lcyA9IGFkb3B0UHRyKG5ldyBMYXllck1hcCk7CisKKyAgICAgICAgYXV0byBlbmQg
PSBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllckNsb25lcy0+ZW5kKCk7CisgICAgICAgIGZvciAoYXV0
byBpdCA9IG1fY29udGVudHNDbGlwcGluZ0xheWVyQ2xvbmVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgICAgIENsb25lSUQgY2xvbmVJRCA9IGl0LT5rZXk7CisgICAgICAg
ICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBzaGFwZU1hc2tMYXllckNsb25lOworICAgICAg
ICAgICAgaWYgKG1fc2hhcGVNYXNrTGF5ZXJDbG9uZXMpCisgICAgICAgICAgICAgICAgc2hhcGVN
YXNrTGF5ZXJDbG9uZSA9IG1fc2hhcGVNYXNrTGF5ZXJDbG9uZXMtPmdldChjbG9uZUlEKTsKKwor
ICAgICAgICAgICAgYm9vbCBoYWRTaGFwZU1hc2sgPSBzaGFwZU1hc2tMYXllckNsb25lOworICAg
ICAgICAgICAgdXBkYXRlQ2xpcHBpbmdTdHJhdGVneSgqaXQtPnZhbHVlLCBzaGFwZU1hc2tMYXll
ckNsb25lLCBtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0KTsKKworICAgICAgICAgICAgaWYgKCFzaGFw
ZU1hc2tMYXllckNsb25lICYmIG1fc2hhcGVNYXNrTGF5ZXJDbG9uZXMpCisgICAgICAgICAgICAg
ICAgbV9zaGFwZU1hc2tMYXllckNsb25lcy0+cmVtb3ZlKGNsb25lSUQpOworICAgICAgICAgICAg
ZWxzZSBpZiAoc2hhcGVNYXNrTGF5ZXJDbG9uZSAmJiAhaGFkU2hhcGVNYXNrKQorICAgICAgICAg
ICAgICAgIG1fc2hhcGVNYXNrTGF5ZXJDbG9uZXMtPmFkZChjbG9uZUlELCBzaGFwZU1hc2tMYXll
ckNsb25lKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI5MzMsNiArMjk3OSwyMCBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6Z2V0RGVidWdCb3JkZXJJbmZvKENvbG9yJiBjb2xvciwgZmxvYXQm
IHdpZHRoKSBjb25zdAogICAgIEdyYXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyhjb2xv
ciwgd2lkdGgpOwogfQogCisKK3N0YXRpYyB2b2lkIGR1bXBJbm5lckxheWVyKFRleHRTdHJlYW0m
IHRleHRTdHJlYW0sIFN0cmluZyBsYWJlbCwgUGxhdGZvcm1DQUxheWVyKiBsYXllciwgaW50IGlu
ZGVudCwgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpCit7CisgICAgaWYgKCFsYXll
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgd3JpdGVJbmRlbnQodGV4dFN0cmVhbSwgaW5kZW50
ICsgMSk7CisgICAgdGV4dFN0cmVhbSA8PCAiKCIgPDwgbGFiZWwgPDwgIiAiOworICAgIGlmIChi
ZWhhdmlvciAmIExheWVyVHJlZUFzVGV4dERlYnVnKQorICAgICAgICB0ZXh0U3RyZWFtIDw8ICJp
ZD0iIDw8IGxheWVyLT5sYXllcklEKCkgPDwgIiAiOworICAgIHRleHRTdHJlYW0gPDwgbGF5ZXIt
PnBvc2l0aW9uKCkueCgpIDw8ICIsICIgPDwgbGF5ZXItPnBvc2l0aW9uKCkueSgpCisgICAgICAg
IDw8ICIgIiA8PCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSA8PCAiIHggIiA8PCBsYXllci0+Ym91
bmRzKCkuaGVpZ2h0KCkgPDwgIilcbiI7Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpkdW1w
QWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgaW50IGluZGVudCwg
TGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgaWYgKGJlaGF2
aW9yICYgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0cykgewpAQCAtMjk2MywxNyAr
MzAyMywxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZHVtcEFkZGl0aW9uYWxQcm9wZXJ0aWVz
KFRleHRTdHJlYW0mIHRleHRTdHJlYW0sIGludCBpbmRlbgogICAgIH0KICAgICAKICAgICBpZiAo
YmVoYXZpb3IgJiBMYXllclRyZWVBc1RleHRJbmNsdWRlQ29udGVudExheWVycykgewotICAgICAg
ICBpZiAobV9jb250ZW50c0NsaXBwaW5nTGF5ZXIpIHsKLSAgICAgICAgICAgIHdyaXRlSW5kZW50
KHRleHRTdHJlYW0sIGluZGVudCArIDEpOwotICAgICAgICAgICAgdGV4dFN0cmVhbSA8PCAiKGNv
bnRlbnRzIGNsaXBwaW5nIGxheWVyICIgPDwgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXItPnBvc2l0
aW9uKCkueCgpIDw8ICIsICIgPDwgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXItPnBvc2l0aW9uKCku
eSgpCi0gICAgICAgICAgICAgICAgPDwgIiAiIDw8IG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5i
b3VuZHMoKS53aWR0aCgpIDw8ICIgeCAiIDw8IG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5ib3Vu
ZHMoKS5oZWlnaHQoKSA8PCAiKVxuIjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX2NvbnRl
bnRzTGF5ZXIpIHsKLSAgICAgICAgICAgIHdyaXRlSW5kZW50KHRleHRTdHJlYW0sIGluZGVudCAr
IDEpOwotICAgICAgICAgICAgdGV4dFN0cmVhbSA8PCAiKGNvbnRlbnRzIGxheWVyICIgPDwgbV9j
b250ZW50c0xheWVyLT5wb3NpdGlvbigpLngoKSA8PCAiLCAiIDw8IG1fY29udGVudHNMYXllci0+
cG9zaXRpb24oKS55KCkKLSAgICAgICAgICAgICAgICA8PCAiICIgPDwgbV9jb250ZW50c0xheWVy
LT5ib3VuZHMoKS53aWR0aCgpIDw8ICIgeCAiIDw8IG1fY29udGVudHNMYXllci0+Ym91bmRzKCku
aGVpZ2h0KCkgPDwgIilcbiI7Ci0gICAgICAgIH0KKyAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4
dFN0cmVhbSwgInN0cnVjdHVyYWwgbGF5ZXIiLCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgaW5k
ZW50LCBiZWhhdmlvcik7CisgICAgICAgIGR1bXBJbm5lckxheWVyKHRleHRTdHJlYW0sICJjb250
ZW50cyBjbGlwcGluZyBsYXllciIsIG1fY29udGVudHNDbGlwcGluZ0xheWVyLmdldCgpLCBpbmRl
bnQsIGJlaGF2aW9yKTsKKyAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgInNoYXBl
IG1hc2sgbGF5ZXIiLCBtX3NoYXBlTWFza0xheWVyLmdldCgpLCBpbmRlbnQsIGJlaGF2aW9yKTsK
KyAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImNvbnRlbnRzIGxheWVyIiwgbV9j
b250ZW50c0xheWVyLmdldCgpLCBpbmRlbnQsIGJlaGF2aW9yKTsKKyAgICAgICAgZHVtcElubmVy
TGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdldCgp
LCBpbmRlbnQsIGJlaGF2aW9yKTsKICAgICB9CiB9CiAKQEAgLTMxMzksMTAgKzMxOTMsMTAgQEAg
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNs
b25lKENsb25lSUQgY2xvbmVJRCwgUGwKIH0gICAKIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVu
c3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4m
IHByaW1hcnlMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHN0cnVjdHVyYWxMYXllciwK
LSAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNMYXllciwgUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4mIGNvbnRlbnRzQ2xpcHBpbmdMYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVs
KQorICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiYgY29udGVudHNDbGlwcGluZ0xheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiYgc2hhcGVNYXNrTGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKIHsKLSAgICBzdHJ1
Y3R1cmFsTGF5ZXIgPSAwOwotICAgIGNvbnRlbnRzTGF5ZXIgPSAwOworICAgIHN0cnVjdHVyYWxM
YXllciA9IG51bGxwdHI7CisgICAgY29udGVudHNMYXllciA9IG51bGxwdHI7CiAKICAgICBpZiAo
IW1fbGF5ZXJDbG9uZXMpCiAgICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBhZG9wdFB0cihuZXcgTGF5
ZXJNYXApOwpAQCAtMzE1NiwxMCArMzIxMCwxNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5z
dXJlQ2xvbmVMYXllcnMoQ2xvbmVJRCBjbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPgog
ICAgIGlmICghbV9jb250ZW50c0NsaXBwaW5nTGF5ZXJDbG9uZXMgJiYgbV9jb250ZW50c0NsaXBw
aW5nTGF5ZXIpCiAgICAgICAgIG1fY29udGVudHNDbGlwcGluZ0xheWVyQ2xvbmVzID0gYWRvcHRQ
dHIobmV3IExheWVyTWFwKTsKIAorICAgIGlmICghbV9zaGFwZU1hc2tMYXllckNsb25lcyAmJiBt
X3NoYXBlTWFza0xheWVyKQorICAgICAgICBtX3NoYXBlTWFza0xheWVyQ2xvbmVzID0gYWRvcHRQ
dHIobmV3IExheWVyTWFwKTsKKwogICAgIHByaW1hcnlMYXllciA9IGZpbmRPck1ha2VDbG9uZShj
bG9uZUlELCBtX2xheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsK
ICAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1
cmFsTGF5ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVs
KTsKICAgICBjb250ZW50c0xheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fY29udGVu
dHNMYXllci5nZXQoKSwgbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsK
ICAgICBjb250ZW50c0NsaXBwaW5nTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9j
b250ZW50c0NsaXBwaW5nTGF5ZXIuZ2V0KCksIG1fY29udGVudHNDbGlwcGluZ0xheWVyQ2xvbmVz
LmdldCgpLCBjbG9uZUxldmVsKTsKKyAgICBzaGFwZU1hc2tMYXllciA9IGZpbmRPck1ha2VDbG9u
ZShjbG9uZUlELCBtX3NoYXBlTWFza0xheWVyLmdldCgpLCBtX3NoYXBlTWFza0xheWVyQ2xvbmVz
LmdldCgpLCBjbG9uZUxldmVsKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUNs
b25lTGF5ZXJzKCkKQEAgLTMxOTksNyArMzI1Nyw4IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVw
CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gc3RydWN0dXJhbExheWVyOwogICAgIFJlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IGNvbnRlbnRzTGF5ZXI7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FM
YXllcj4gY29udGVudHNDbGlwcGluZ0xheWVyOwotICAgIGVuc3VyZUNsb25lTGF5ZXJzKHJlcGxp
Y2FTdGF0ZS5jbG9uZUlEKCksIHByaW1hcnlMYXllciwgc3RydWN0dXJhbExheWVyLCBjb250ZW50
c0xheWVyLCBjb250ZW50c0NsaXBwaW5nTGF5ZXIsIGNsb25lTGV2ZWwpOworICAgIFJlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IHNoYXBlTWFza0xheWVyOworICAgIGVuc3VyZUNsb25lTGF5ZXJzKHJl
cGxpY2FTdGF0ZS5jbG9uZUlEKCksIHByaW1hcnlMYXllciwgc3RydWN0dXJhbExheWVyLCBjb250
ZW50c0xheWVyLCBjb250ZW50c0NsaXBwaW5nTGF5ZXIsIHNoYXBlTWFza0xheWVyLCBjbG9uZUxl
dmVsKTsKIAogICAgIGlmIChtX21hc2tMYXllcikgewogICAgICAgICBSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiBtYXNrQ2xvbmUgPSBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KCptX21hc2tMYXll
cikuZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRlLCBJbnRlcm1lZGlh
dGVDbG9uZUxldmVsKTsKQEAgLTMyMzcsNiArMzI5Niw5IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciog
cmVwCiAgICAgICAgIEFTU0VSVChjb250ZW50c0xheWVyKTsKICAgICAgICAgY29udGVudHNDbGlw
cGluZ0xheWVyLT5hcHBlbmRTdWJsYXllcigqY29udGVudHNMYXllcik7CiAgICAgfQorCisgICAg
aWYgKHNoYXBlTWFza0xheWVyKQorICAgICAgICBjb250ZW50c0NsaXBwaW5nTGF5ZXItPnNldE1h
c2soc2hhcGVNYXNrTGF5ZXIuZ2V0KCkpOwogICAgIAogICAgIGlmIChyZXBsaWNhTGF5ZXIgfHwg
c3RydWN0dXJhbExheWVyIHx8IGNvbnRlbnRzTGF5ZXIgfHwgY29udGVudHNDbGlwcGluZ0xheWVy
IHx8IGNoaWxkTGF5ZXJzLnNpemUoKSA+IDApIHsKICAgICAgICAgaWYgKHN0cnVjdHVyYWxMYXll
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaAppbmRleCA5M2ZiODQ4ZGU0ZGRlZDQyNTY5NDE1ODEyNTIwNzVhZDcyN2Vi
OTkyLi4zNDQ2YTFhMTY1NDdjYjJiMjg3Yjc1YzM1OWI3YmEwNmQzODM2ZDhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aApAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZsb2F0
Um91bmRlZFJlY3Q7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwogCkBAIC0x
MTYsNyArMTE3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c05lZWRzRGlzcGxheSgpIG92ZXJyaWRlOwogICAgIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzQ2xpcHBpbmdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBzZXRDb250ZW50c0NsaXBwaW5nUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jikg
b3ZlcnJpZGU7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHN1c3BlbmRB
bmltYXRpb25zKGRvdWJsZSB0aW1lKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpIG92ZXJyaWRlOwpAQCAtMjY2LDYgKzI2Nyw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7
CiAgICAgUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZW50c0xheWVyLmdldCgpOyB9CiAKKyAgICB2b2lkIHVwZGF0ZUNsaXBwaW5nU3RyYXRlZ3ko
UGxhdGZvcm1DQUxheWVyJiwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHNoYXBlTWFza0xheWVy
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGdldERlYnVnQm9yZGVySW5mbyhDb2xvciYs
IGZsb2F0JiB3aWR0aCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zNDQsMTIgKzM0NywxMiBAQCBwcml2
YXRlOgogICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JNYWtlQ2xvbmUoQ2xv
bmVJRCwgUGxhdGZvcm1DQUxheWVyICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7CiAKICAgICB2
b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBw
cmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5ZXIsCi0g
ICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiYgY29udGVudHNDbGlwcGluZ0xheWVyLCBDbG9uZUxldmVsKTsKKyAgICAg
ICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzTGF5ZXIsIFJlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXI+JiBjb250ZW50c0NsaXBwaW5nTGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
JiBzaGFwZU1hc2tMYXllciwgQ2xvbmVMZXZlbCk7CiAKICAgICBib29sIGhhc0Nsb25lTGF5ZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllckNsb25lczsgfQogICAgIHZvaWQgcmVtb3ZlQ2xvbmVM
YXllcnMoKTsKICAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKSBjb25z
dDsKLSAgICAKKwogICAgIC8vIEFsbCB0aGVzZSAidXBkYXRlIiBtZXRob2RzIHdpbGwgYmUgY2Fs
bGVkIGluc2lkZSBhIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUy9FTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TIGJsb2NrLgogICAgIHZvaWQgdXBkYXRlTGF5ZXJOYW1lcygpOwogICAgIHZvaWQg
dXBkYXRlU3VibGF5ZXJMaXN0KGJvb2wgbWF4TGF5ZXJEZXB0aFJlYWNoZWQgPSBmYWxzZSk7CkBA
IC00NTAsNiArNDUzLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBt
X2xheWVyOyAvLyBUaGUgbWFpbiBsYXllcgogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1f
c3RydWN0dXJhbExheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9yIHN0cnVjdHVyYWwgcmVhc29ucywg
bGlrZSBwcmVzZXJ2ZXMtM2Qgb3IgcmVwbGljYS1mbGF0dGVuaW5nLiBJcyB0aGUgcGFyZW50IG9m
IG1fbGF5ZXIuCiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9jb250ZW50c0NsaXBwaW5n
TGF5ZXI7IC8vIEEgbGF5ZXIgdXNlZCB0byBjbGlwIGlubmVyIGNvbnRlbnQKKyAgICBSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBtX3NoYXBlTWFza0xheWVyOyAvLyBVc2VkIHRvIGNsaXAgd2l0aCBu
b24tdHJpdmlhbCBjb3JuZXIgcmFkaWkuCiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9j
b250ZW50c0xheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9yIGlubmVyIGNvbnRlbnQsIGxpa2UgaW1h
Z2UgYW5kIHZpZGVvCiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9iYWNrZHJvcExheWVy
OyAvLyBUaGUgbGF5ZXIgdXNlZCBmb3IgYmFja2Ryb3AgcmVuZGVyaW5nLCBpZiBuZWNlc3Nhcnku
CiAKQEAgLTQ1OCw2ICs0NjIsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxMYXllck1hcD4gbV9z
dHJ1Y3R1cmFsTGF5ZXJDbG9uZXM7CiAgICAgT3duUHRyPExheWVyTWFwPiBtX2NvbnRlbnRzTGF5
ZXJDbG9uZXM7CiAgICAgT3duUHRyPExheWVyTWFwPiBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllckNs
b25lczsKKyAgICBPd25QdHI8TGF5ZXJNYXA+IG1fc2hhcGVNYXNrTGF5ZXJDbG9uZXM7CiAKICNp
ZmRlZiBWSVNJQkxFX1RJTEVfV0FTSAogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fdmlz
aWJsZVRpbGVXYXNoTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IDg4OGQ4N2NiNWZhZjVlN2Y3NWMyZmQ5
NTRmZjE2NjE4NmU3YWM3NDEuLjcxZTRhNWJmZGNiMmI0MzkwMmE1NDQyODA4MmNiNzdmYTI0OGE3
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFBsYXRmb3JtQ0FMYXll
cl9oCiAjZGVmaW5lIFBsYXRmb3JtQ0FMYXllcl9oCiAKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRS
ZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ0FM
YXllckNsaWVudC5oIgogI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FCYXNlLmg+CkBAIC03OCw2ICs3
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgTGF5ZXJUeXBlQVZQbGF5ZXJMYXllciwKICAgICAgICAg
TGF5ZXJUeXBlV2ViR0xMYXllciwKICAgICAgICAgTGF5ZXJUeXBlQmFja2Ryb3BMYXllciwKKyAg
ICAgICAgTGF5ZXJUeXBlU2hhcGVMYXllciwKICAgICAgICAgTGF5ZXJUeXBlQ3VzdG9tCiAgICAg
fTsKICAgICBlbnVtIEZpbHRlclR5cGUgeyBMaW5lYXIsIE5lYXJlc3QsIFRyaWxpbmVhciB9OwpA
QCAtMTk5LDggKzIwMSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBmbG9hdCBjb250ZW50c1Nj
YWxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0
KSA9IDA7CiAKKyAgICB2aXJ0dWFsIGZsb2F0IGNvcm5lclJhZGl1cygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29ybmVyUmFkaXVzKGZsb2F0KSA9IDA7CisKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RWRnZUFudGlhbGlhc2luZ01hc2sodW5zaWduZWQpID0gMDsKICAgICAKKyAgICAv
LyBPbmx5IHVzZWQgYnkgTGF5ZXJUeXBlU2hhcGVMYXllci4KKyAgICB2aXJ0dWFsIEZsb2F0Um91
bmRlZFJlY3Qgc2hhcGVSb3VuZGVkUmVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0U2hhcGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JikgPSAwOworICAgIAog
ICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJh
bmNlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDdXN0b21BcHBlYXJhbmNl
KEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXll
ck1hYy5oCmluZGV4IDY2YWUyNzIxMjM4NmJjYTJmNzdjMTgxZmNlOWEyMDExMThjMmU1NjMuLmNk
MWQ1NmU0MTZiZGIxZjkzMjYyODRlN2VlNTY1MGNlOWViOWVjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxh
eWVyTWFjLmgKQEAgLTEzNCw4ICsxMzQsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQg
Y29udGVudHNTY2FsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1NjYWxlKGZsb2F0KSBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwgZmxvYXQgY29ybmVyUmFk
aXVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENvcm5lclJhZGl1cyhm
bG9hdCkgb3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRnZUFudGlhbGlhc2luZ01h
c2sodW5zaWduZWQpIG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBGbG9hdFJvdW5kZWRSZWN0IHNo
YXBlUm91bmRlZFJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hh
cGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jikgb3ZlcnJpZGU7CisKICAgICB2
aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgY3VzdG9tQXBwZWFyYW5jZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY3VzdG9tQXBwZWFyYW5jZTsgfQogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDdXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UpIG92ZXJyaWRlOwogCkBAIC0xNjQsNiArMTcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1DQUxheWVyTGlzdD4gbV9jdXN0b21TdWJsYXllcnM7CiAgICAg
R3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBtX2N1c3RvbUFwcGVhcmFuY2U7CiAgICAg
R3JhcGhpY3NMYXllcjo6Q3VzdG9tQmVoYXZpb3IgbV9jdXN0b21CZWhhdmlvcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RmxvYXRSb3VuZGVkUmVjdD4gbV9zaGFwZVJvdW5kZWRSZWN0OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KaW5kZXggZjY5
YjYyMGYyMzI5OTAzMGYwNjYzODEyNjk3ODc2MDkzM2Y0YTc0OC4uNzlkZGM0NTU4Y2RiY2QzMTky
YjdjODEzNmQ5ZGQ0YTNhYjUyZDRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCkBAIC0y
NTksMTMgKzI1OSwxNyBAQCBQbGF0Zm9ybUNBTGF5ZXJNYWM6OlBsYXRmb3JtQ0FMYXllck1hYyhM
YXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbgogICAgICAgICAvLyBXZSBk
b24ndCBjcmVhdGUgUGxhdGZvcm1DQUxheWVyTWFjcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVy
cy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTGF5ZXJUeXBlU2hhcGVMYXllcjoKKyAgICAgICAgbGF5ZXJDbGFzcyA9IFtDQVNoYXBlTGF5
ZXIgY2xhc3NdOworICAgICAgICAvLyBmaWxsQ29sb3IgZGVmYXVsdHMgdG8gb3BhcXVlIGJsYWNr
LgorICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZUN1c3RvbToKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgaWYgKGxheWVyQ2xhc3MpCiAgICAgICAgIG1fbGF5ZXIgPSBhZG9w
dE5TKFtbbGF5ZXJDbGFzcyBhbGxvY10gaW5pdF0pOwotICAgIAorCiAgICAgY29tbW9uSW5pdCgp
OwogfQogCkBAIC0zMTQsNiArMzE4LDkgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBs
YXRmb3JtQ0FMYXllck1hYzo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd24KICAgICBj
YXNlIExheWVyVHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgIHR5cGUgPSBMYXllclR5cGVBVlBs
YXllckxheWVyOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExheWVyVHlwZVNoYXBlTGF5ZXI6
CisgICAgICAgIHR5cGUgPSBMYXllclR5cGVTaGFwZUxheWVyOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIExheWVyVHlwZUxheWVyOgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHR5cGUgPSBMYXll
clR5cGVMYXllcjsKQEAgLTMzMiw2ICszMzksNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gUGxhdGZvcm1DQUxheWVyTWFjOjpjbG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bgog
ICAgIG5ld0xheWVyLT5zZXRPcGFxdWUoaXNPcGFxdWUoKSk7CiAgICAgbmV3TGF5ZXItPnNldEJh
Y2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgbmV3TGF5ZXItPnNldENvbnRl
bnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsKKyAgICBuZXdMYXllci0+c2V0Q29ybmVyUmFkaXVz
KGNvcm5lclJhZGl1cygpKTsKICAgICBuZXdMYXllci0+Y29weUZpbHRlcnNGcm9tKCp0aGlzKTsK
ICAgICBuZXdMYXllci0+dXBkYXRlQ3VzdG9tQXBwZWFyYW5jZShjdXN0b21BcHBlYXJhbmNlKCkp
OwogCkBAIC0zNDUsNiArMzUzLDkgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRm
b3JtQ0FMYXllck1hYzo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd24KICAgICAgICAg
ICAgIFtkZXN0aW5hdGlvblBsYXllckxheWVyIHNldFBsYXllcjpbc291cmNlUGxheWVyTGF5ZXIg
cGxheWVyXV07CiAgICAgICAgIH0pOwogICAgIH0KKyAgICAKKyAgICBpZiAodHlwZSA9PSBMYXll
clR5cGVTaGFwZUxheWVyKQorICAgICAgICBuZXdMYXllci0+c2V0U2hhcGVSb3VuZGVkUmVjdChz
aGFwZVJvdW5kZWRSZWN0KCkpOwogCiAgICAgcmV0dXJuIG5ld0xheWVyOwogfQpAQCAtNTAxLDcg
KzUxMiw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUxheWVy
TWFjOjphbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nCiB2b2lkIFBsYXRmb3JtQ0FMYXllck1h
Yzo6c2V0TWFzayhQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIFttX2xheWVyLmdldCgpIHNldE1hc2s6bGF5ZXIgPyBsYXllci0+
cGxhdGZvcm1MYXllcigpIDogMF07CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0TWFzazpsYXllciA/
IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBuaWxdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKIH0KIApAQCAtODA2LDYgKzgxNywxOCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllck1hYzo6
c2V0Q29udGVudHNTY2FsZShmbG9hdCB2YWx1ZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiB9CiAKK2Zsb2F0IFBsYXRmb3JtQ0FMYXllck1hYzo6Y29ybmVyUmFkaXVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgY29ybmVyUmFkaXVzXTsKK30KKwordm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJNYWM6OnNldENvcm5lclJhZGl1cyhmbG9hdCB2YWx1ZSkKK3sKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRDb3JuZXJS
YWRpdXM6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwogdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJNYWM6OnNldEVkZ2VBbnRpYWxpYXNpbmdNYXNrKHVuc2lnbmVkIG1hc2sp
CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC04MTMsNiArODM2LDI3IEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjpzZXRFZGdlQW50aWFsaWFzaW5nTWFzayh1bnNpZ25l
ZCBtYXNrKQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAorRmxvYXRSb3VuZGVk
UmVjdCBQbGF0Zm9ybUNBTGF5ZXJNYWM6OnNoYXBlUm91bmRlZFJlY3QoKSBjb25zdAoreworICAg
IEFTU0VSVChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTaGFwZUxheWVyKTsKKyAgICBpZiAobV9z
aGFwZVJvdW5kZWRSZWN0KQorICAgICAgICByZXR1cm4gKm1fc2hhcGVSb3VuZGVkUmVjdDsKKwor
ICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
TWFjOjpzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRS
ZWN0KQoreworICAgIEFTU0VSVChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTaGFwZUxheWVyKTsK
KyAgICBtX3NoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0Um91bmRlZFJl
Y3Q+KHJvdW5kZWRSZWN0KTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAg
IFBhdGggc2hhcGVQYXRoOworICAgIHNoYXBlUGF0aC5hZGRSb3VuZGVkUmVjdChyb3VuZGVkUmVj
dCk7CisgICAgW3N0YXRpY19jYXN0PENBU2hhcGVMYXllciAqPihtX2xheWVyLmdldCgpKSBzZXRQ
YXRoOnNoYXBlUGF0aC5wbGF0Zm9ybVBhdGgoKV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworfQorCiBib29sIFBsYXRmb3JtQ0FMYXllck1hYzo6cmVxdWlyZXNDdXN0b21BcHBlYXJh
bmNlVXBkYXRlT25Cb3VuZHNDaGFuZ2UoKSBjb25zdAogewogICAgIHJldHVybiBtX2N1c3RvbUFw
cGVhcmFuY2UgPT0gR3JhcGhpY3NMYXllcjo6U2Nyb2xsaW5nU2hhZG93OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmNwcAppbmRleCA2MzYzNWQ2ZmQ5ZDBmMWUwZjNmNDk2NjcyZDViNjk3YWIxMTFm
YzRmLi44OGIxOTAyNTljNjQ3YmEwMTAzZWY0MzliZmE5MDE5MzM1ZDZhNWQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luLmNwcApAQCAtNTgxLDYgKzU4MSwyNyBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllcldpbjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCkKIHsKIH0KIAorZmxvYXQgUGxhdGZvcm1D
QUxheWVyV2luOjpjb3JuZXJSYWRpdXMoKSBjb25zdAoreworICAgIHJldHVybiAwOyAvLyBGSVhN
RTogaW1wbGVtZW50LgorfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0Q29ybmVyUmFk
aXVzKGZsb2F0IHZhbHVlKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9CisKK0Zsb2F0
Um91bmRlZFJlY3QgUGxhdGZvcm1DQUxheWVyV2luOjpzaGFwZVJvdW5kZWRSZWN0KCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorICAgIHJldHVybiBGbG9hdFJvdW5kZWRSZWN0
KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjpzZXRTaGFwZVJvdW5kZWRSZWN0KGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9CisK
ICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgdm9pZCBwcmludEluZGVudChpbnQgaW5kZW50KQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5oCmluZGV4IGQwNjQ4ODA1YWMzM2Y1Yjk5ODU2MWZkYWFhMGVj
NGZhYzYwZWMwY2MuLjdkYWNlOGZjMGQzZmMxN2VmNzBhOTZkNGE3NzQzZjYyOTg2ODEyOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKQEAgLTEyMiw2ICsxMjIsMTIgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgZmxvYXQgY29udGVudHNTY2FsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KSBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwg
ZmxvYXQgY29ybmVyUmFkaXVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNl
dENvcm5lclJhZGl1cyhmbG9hdCkgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIEZsb2F0Um91bmRl
ZFJlY3Qgc2hhcGVSb3VuZGVkUmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKSBvdmVycmlkZTsK
KwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGdlQW50aWFsaWFzaW5nTWFzayh1bnNpZ25lZCkgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgY3Vz
dG9tQXBwZWFyYW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY3VzdG9tQXBwZWFyYW5j
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAppbmRleCA4NDViODUyOWM4YTdlOWU2ZjMzZGExODU0YzE0MjM5MTgyMDA3ZWEzLi5mM2FmM2M5
YTQ5OTFiMDhmMDdjODliMjU5NDE1YjNiNTUxMmY5MjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTA5NywxMiArMTA5NywxMiBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cmVzZXRDb250ZW50c1JlY3QoKQogewogICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0KHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQm94
KCkpKTsKICAgICAKLSAgICBMYXlvdXRSZWN0IGNvbnRlbnRzQ2xpcHBpbmdSZWN0OwotICAgIGlm
IChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQotICAgICAgICBjb250ZW50c0NsaXBwaW5nUmVj
dCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSkuY29udGVudEJveFJlY3QoKTsKLQot
ICAgIGNvbnRlbnRzQ2xpcHBpbmdSZWN0Lm1vdmUoY29udGVudE9mZnNldEluQ29tcG9zdGluZ0xh
eWVyKCkpOwotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3Qoc25h
cHBlZEludFJlY3QoY29udGVudHNDbGlwcGluZ1JlY3QpKTsKKyAgICBpZiAoaXM8UmVuZGVyQm94
PihyZW5kZXJlcigpKSkgeworICAgICAgICBMYXlvdXRSZWN0IGJveFJlY3QoTGF5b3V0UG9pbnQo
KSwgZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS5zaXplKCkpOworICAgICAgICBGbG9h
dFJvdW5kZWRSZWN0IGNvbnRlbnRzQ2xpcHBpbmdSZWN0ID0gcmVuZGVyZXIoKS5zdHlsZSgpLmdl
dFJvdW5kZWRJbm5lckJvcmRlckZvcihib3hSZWN0KS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZv
clBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICBjb250ZW50c0NsaXBwaW5n
UmVjdC5tb3ZlKGNvbnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdMYXllcigpKTsKKyAgICAgICAgbV9n
cmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChjb250ZW50c0NsaXBwaW5nUmVj
dCk7CisgICAgfQogCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVTaXplKElu
dFNpemUoKSk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVQaGFzZShJbnRQ
b2ludCgpKTsKQEAgLTEyNzAsNyArMTI3MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpw
b3NpdGlvbk92ZXJmbG93Q29udHJvbHNMYXllcnMoKQogICAgICAgICBpZiAobGF5ZXItPnVzZXND
b250ZW50c0xheWVyKCkpIHsKICAgICAgICAgICAgIEludFJlY3QgYmFyUmVjdCA9IEludFJlY3Qo
SW50UG9pbnQoKSwgaEJhclJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIGxheWVyLT5zZXRDb250
ZW50c1JlY3QoYmFyUmVjdCk7Ci0gICAgICAgICAgICBsYXllci0+c2V0Q29udGVudHNDbGlwcGlu
Z1JlY3QoYmFyUmVjdCk7CisgICAgICAgICAgICBsYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1Jl
Y3QoRmxvYXRSb3VuZGVkUmVjdChiYXJSZWN0KSk7CiAgICAgICAgIH0KICAgICAgICAgbGF5ZXIt
PnNldERyYXdzQ29udGVudChtX293bmluZ0xheWVyLmhvcml6b250YWxTY3JvbGxiYXIoKSAmJiAh
bGF5ZXItPnVzZXNDb250ZW50c0xheWVyKCkpOwogICAgIH0KQEAgLTEyODIsNyArMTI4Miw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHNMYXllcnMo
KQogICAgICAgICBpZiAobGF5ZXItPnVzZXNDb250ZW50c0xheWVyKCkpIHsKICAgICAgICAgICAg
IEludFJlY3QgYmFyUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgdkJhclJlY3Quc2l6ZSgpKTsK
ICAgICAgICAgICAgIGxheWVyLT5zZXRDb250ZW50c1JlY3QoYmFyUmVjdCk7Ci0gICAgICAgICAg
ICBsYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3QoYmFyUmVjdCk7CisgICAgICAgICAgICBs
YXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3QoRmxvYXRSb3VuZGVkUmVjdChiYXJSZWN0KSk7
CiAgICAgICAgIH0KICAgICAgICAgbGF5ZXItPnNldERyYXdzQ29udGVudChtX293bmluZ0xheWVy
LnZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgIWxheWVyLT51c2VzQ29udGVudHNMYXllcigpKTsKICAg
ICB9CkBAIC0xNTg3LDcgKzE1ODcsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
RGlyZWN0bHlDb21wb3NpdGVkQmFja2dyb3VuZENvbG9yKGJvb2wgaXNTaW1wbGVDbwogICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoYmFja2dyb3VuZENvbG9yKTsK
ICAgICBGbG9hdFJlY3QgY29udGVudHNSZWN0ID0gYmFja2dyb3VuZEJveEZvclBhaW50aW5nKCk7
CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1JlY3QoY29udGVudHNSZWN0KTsKLSAg
ICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KGNvbnRlbnRzUmVjdCk7
CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGNvbnRlbnRzUmVjdCkpOwogICAgIGRpZFVwZGF0ZUNvbnRlbnRzUmVjdCA9IHRydWU7
CiB9CiAKQEAgLTE2MTUsNyArMTYxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVEaXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kSW1hZ2UoYm9vbCBpc1NpbXBsZUNvCiAgICAg
bV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVTaXplKHRpbGVTaXplKTsKICAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVGlsZVBoYXNlKHBoYXNlKTsKICAgICBtX2dyYXBoaWNz
TGF5ZXItPnNldENvbnRlbnRzUmVjdChkZXN0UmVjdCk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5z
ZXRDb250ZW50c0NsaXBwaW5nUmVjdChkZXN0UmVjdCk7CisgICAgbV9ncmFwaGljc0xheWVyLT5z
ZXRDb250ZW50c0NsaXBwaW5nUmVjdChGbG9hdFJvdW5kZWRSZWN0KGRlc3RSZWN0KSk7CiAgICAg
bV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UuZ2V0KCkpOwogICAgIGRp
ZFVwZGF0ZUNvbnRlbnRzUmVjdCA9IHRydWU7CiB9CkBAIC0xOTA1LDkgKzE5MDUsMTAgQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQogICAgIC8vIFRoaXMg
aXMgYSBuby1vcCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBoYXZlIGFuIGlubmVyIGxheWVyIGZvciB0
aGUgaW1hZ2UuCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1JlY3Qoc25hcHBlZElu
dFJlY3QoY29udGVudHNCb3goKSkpOwogCi0gICAgTGF5b3V0UmVjdCBjb250ZW50c0NsaXBwaW5n
UmVjdCA9IGltYWdlUmVuZGVyZXIuY29udGVudEJveFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGJv
eFJlY3QoTGF5b3V0UG9pbnQoKSwgaW1hZ2VSZW5kZXJlci5zaXplKCkpOworICAgIEZsb2F0Um91
bmRlZFJlY3QgY29udGVudHNDbGlwcGluZ1JlY3QgPSByZW5kZXJlcigpLnN0eWxlKCkuZ2V0Um91
bmRlZElubmVyQm9yZGVyRm9yKGJveFJlY3QpLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFp
bnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgY29udGVudHNDbGlwcGluZ1JlY3QubW92
ZShjb250ZW50T2Zmc2V0SW5Db21wb3N0aW5nTGF5ZXIoKSk7Ci0gICAgbV9ncmFwaGljc0xheWVy
LT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChzbmFwcGVkSW50UmVjdChjb250ZW50c0NsaXBwaW5n
UmVjdCkpOworICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3QoY29u
dGVudHNDbGlwcGluZ1JlY3QpOwogCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1Rv
SW1hZ2UoaW1hZ2UpOwogICAgIGJvb2wgaXNTaW1wbGVDb250YWluZXIgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCAyN2ZmMTMx
NjY3MTgzODczOWNjYjc2NjVmNjBkZWI5MDkwMzk2ZDkwLi5iYTlhMWY5ZDc2OTc3NWRmODc4ZTA1
OThlZDBjNTE3NGQ5ZDc2NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5oCkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNo
b3VsZENsaXBDb21wb3NpdGVkQm91bmRzKCkgY29uc3Q7CiAKICAgICBib29sIGhhc1RpbGVkQmFj
a2luZ0ZsYXR0ZW5pbmdMYXllcigpIGNvbnN0IHsgcmV0dXJuIChtX2NoaWxkQ29udGFpbm1lbnRM
YXllciAmJiBtX3VzaW5nVGlsZWRDYWNoZUxheWVyKTsgfQotICAgIEdyYXBoaWNzTGF5ZXIqIHRp
bGVDYWNoZUZsYXR0ZW5pbmdMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNpbmdUaWxlZENhY2hl
TGF5ZXIgPyBtX2NoaWxkQ29udGFpbm1lbnRMYXllci5nZXQoKSA6IDA7IH0KKyAgICBHcmFwaGlj
c0xheWVyKiB0aWxlQ2FjaGVGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3VzaW5n
VGlsZWRDYWNoZUxheWVyID8gbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIuZ2V0KCkgOiBudWxscHRy
OyB9CiAKICAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlv
ciwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGU2MjFhZWFlNTA5NDJmMjQzZDAy
M2NmMTBlNjNiZjA5NDNiNDMyNjAuLjEyMTkyZmM2NzU4MWIwZTI3ODIyMTAzZDk3ZDZjNDUyNWU5
ZDBiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCkBAIC0yOTgsNiArMjk4LDE2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxGbG9hdFNpemU+
OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBGbG9hdFNpemUmIGZsb2F0CiB9CiAK
IAordm9pZCBBcmd1bWVudENvZGVyPEZsb2F0Um91bmRlZFJlY3Q+OjplbmNvZGUoQXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCkKK3sK
KyAgICBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0Um91bmRlZFJlY3Q+OjplbmNvZGUoZW5jb2Rl
ciwgcm91bmRlZFJlY3QpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8RmxvYXRSb3VuZGVkUmVj
dD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEZsb2F0Um91bmRlZFJlY3QmIHJv
dW5kZWRSZWN0KQoreworICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0Um91bmRl
ZFJlY3Q+OjpkZWNvZGUoZGVjb2Rlciwgcm91bmRlZFJlY3QpOworfQorCiAjaWYgUExBVEZPUk0o
SU9TKQogdm9pZCBBcmd1bWVudENvZGVyPEZsb2F0UXVhZD46OmVuY29kZShBcmd1bWVudEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IEZsb2F0UXVhZCYgZmxvYXRRdWFkKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGZlMDVhMDM5NzU1NTUy
Y2FjYjgzODRkZjVhY2MyN2M4MTUwZDY4M2YuLjU5OTVlNWFiMTBiNDYwZDZiOGY1OTZmM2I4NTRl
MjE2YjIyZmRiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNz
IEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFBvaW50M0Q7CiBjbGFzcyBGbG9hdFJlY3Q7CitjbGFz
cyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgRml4ZWRQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwpAQCAtMTYzLDYgKzE2
NCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZsb2F0U2l6
ZT4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpG
bG9hdFNpemUmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6RmxvYXRSb3VuZGVkUmVjdD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Jik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3QmKTsK
K307CisKICNpZiBQTEFURk9STShJT1MpCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkZsb2F0UXVhZD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IGJmOTgwMGU1
ZWEwZjJlNDBjNTdlZDQ4NWYzZmQ1NDZjNzlkOTBjNWEuLjMwODBlY2ZhYTk0YTliNDVlMjI2NzVk
MTYzNzJhMmY4YmU1OTljMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMzQ5LDYgKzM0OSw3IEBAIHZvaWQgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBDR0ltYWdlUmVmCiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxh
eWVyTGF5ZXI6CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkdMTGF5ZXI6
CiAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUJhY2tkcm9wTGF5ZXI6CisgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNoYXBlTGF5ZXI6CiAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQppbmRleCA4MDYxM2Y2NGQ1
N2IzYjg1ZDlkZTI1ZDE5NjJjMDYzOTVjNGZjNWI5Li4zYTY5YmRiNjMxODhhMjM2MmQ4YTlkMWEz
MzA3MzE0MDE5Zjc0MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQpAQCAtMjksNyArMjksNyBA
QAogI2ltcG9ydCAiUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oIgogI2ltcG9ydCAiUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVIb3N0LmgiCi0jaW1w
b3J0IDxRdWFydHpDb3JlL0NBTGF5ZXIuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29y
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9CbG9ja0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGxhdGZvcm1DQUZpbHRlcnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyVGhlbWVN
YWMuaD4KQEAgLTE5MCw2ICsxOTAsMTcgQEAgc3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0aWVzVG9M
YXllcihDQUxheWVyICpsYXllciwgUmVtb3RlTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmUKICAgICAg
ICAgbGF5ZXIucmFzdGVyaXphdGlvblNjYWxlID0gcHJvcGVydGllcy5jb250ZW50c1NjYWxlOwog
ICAgIH0KIAorICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkNvcm5lclJhZGl1c0NoYW5nZWQpCisgICAgICAgIGxheWVyLmNv
cm5lclJhZGl1cyA9IHByb3BlcnRpZXMuY29ybmVyUmFkaXVzOworCisgICAgaWYgKHByb3BlcnRp
ZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U2hhcGVS
b3VuZGVkUmVjdENoYW5nZWQpIHsKKyAgICAgICAgUGF0aCBwYXRoOworICAgICAgICBpZiAocHJv
cGVydGllcy5zaGFwZVJvdW5kZWRSZWN0KQorICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVj
dCgqcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0KTsKKyAgICAgICAgQVNTRVJUKFtsYXllciBp
c0tpbmRPZkNsYXNzOltDQVNoYXBlTGF5ZXIgY2xhc3NdXSk7CisgICAgICAgIFtzdGF0aWNfY2Fz
dDxDQVNoYXBlTGF5ZXIgKj4obGF5ZXIpIHNldFBhdGg6cGF0aC5wbGF0Zm9ybVBhdGgoKV07Cisg
ICAgfQorCiAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TWluaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCkKICAgICAgICAgbGF5
ZXIubWluaWZpY2F0aW9uRmlsdGVyID0gdG9DQUZpbHRlclR5cGUocHJvcGVydGllcy5taW5pZmlj
YXRpb25GaWx0ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKaW5kZXggNTA4MWIxMzk4NjMyYzdlMDFmYTIzYmFh
NmU3M2I5NTZmNTM0ZTlhZC4uMTc0ZjIzODkyNDllYzUzMjA2Mzg5YWViYWRkNTI4MTUxOGI5N2Mx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24uaApAQCAtNTAsNDAgKzUwLDQyIEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKIHB1YmxpYzoKICAg
ICBlbnVtIExheWVyQ2hhbmdlcyB7Ci0gICAgICAgIE5vQ2hhbmdlID0gMCwKLSAgICAgICAgTmFt
ZUNoYW5nZWQgPSAxIDw8IDEsCi0gICAgICAgIENoaWxkcmVuQ2hhbmdlZCA9IDEgPDwgMiwKLSAg
ICAgICAgUG9zaXRpb25DaGFuZ2VkID0gMSA8PCAzLAotICAgICAgICBCb3VuZHNDaGFuZ2VkID0g
MSA8PCA0LAotICAgICAgICBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkID0gMSA8PCA1LAotICAgICAg
ICBBbmNob3JQb2ludENoYW5nZWQgPSAxIDw8IDYsCi0gICAgICAgIEJvcmRlcldpZHRoQ2hhbmdl
ZCA9IDEgPDwgNywKLSAgICAgICAgQm9yZGVyQ29sb3JDaGFuZ2VkID0gMSA8PCA4LAotICAgICAg
ICBPcGFjaXR5Q2hhbmdlZCA9IDEgPDwgOSwKLSAgICAgICAgVHJhbnNmb3JtQ2hhbmdlZCA9IDEg
PDwgMTAsCi0gICAgICAgIFN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCA9IDEgPDwgMTEsCi0gICAg
ICAgIEhpZGRlbkNoYW5nZWQgPSAxIDw8IDEyLAotICAgICAgICBHZW9tZXRyeUZsaXBwZWRDaGFu
Z2VkID0gMSA8PCAxMywKLSAgICAgICAgRG91YmxlU2lkZWRDaGFuZ2VkID0gMSA8PCAxNCwKLSAg
ICAgICAgTWFza3NUb0JvdW5kc0NoYW5nZWQgPSAxIDw8IDE1LAotICAgICAgICBPcGFxdWVDaGFu
Z2VkID0gMSA8PCAxNiwKLSAgICAgICAgTWFza0xheWVyQ2hhbmdlZCA9IDEgPDwgMTcsCi0gICAg
ICAgIENsb25lZENvbnRlbnRzQ2hhbmdlZCA9IDEgPDwgMTgsCi0gICAgICAgIENvbnRlbnRzUmVj
dENoYW5nZWQgPSAxIDw8IDE5LAotICAgICAgICBDb250ZW50c1NjYWxlQ2hhbmdlZCA9IDEgPDwg
MjAsCi0gICAgICAgIE1pbmlmaWNhdGlvbkZpbHRlckNoYW5nZWQgPSAxIDw8IDIxLAotICAgICAg
ICBNYWduaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCA9IDEgPDwgMjIsCi0gICAgICAgIEJsZW5kTW9k
ZUNoYW5nZWQgPSAxIDw8IDIzLAotICAgICAgICBTcGVlZENoYW5nZWQgPSAxIDw8IDI0LAotICAg
ICAgICBUaW1lT2Zmc2V0Q2hhbmdlZCA9IDEgPDwgMjUsCi0gICAgICAgIEJhY2tpbmdTdG9yZUNo
YW5nZWQgPSAxIDw8IDI2LAotICAgICAgICBGaWx0ZXJzQ2hhbmdlZCA9IDEgPDwgMjcsCi0gICAg
ICAgIEFuaW1hdGlvbnNDaGFuZ2VkID0gMSA8PCAyOCwKLSAgICAgICAgRWRnZUFudGlhbGlhc2lu
Z01hc2tDaGFuZ2VkID0gMSA8PCAyOSwKLSAgICAgICAgQ3VzdG9tQXBwZWFyYW5jZUNoYW5nZWQg
PSAxIDw8IDMwLAotICAgICAgICBDdXN0b21CZWhhdmlvckNoYW5nZWQgPSAxIDw8IDMxCisgICAg
ICAgIE5vQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgPSAwLAorICAgICAgICBOYW1lQ2hh
bmdlZCAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxLAorICAgICAgICBDaGlsZHJlbkNo
YW5nZWQgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyLAorICAgICAgICBQb3NpdGlvbkNoYW5n
ZWQgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzLAorICAgICAgICBCb3VuZHNDaGFuZ2VkICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCA0LAorICAgICAgICBCYWNrZ3JvdW5kQ29sb3JDaGFu
Z2VkICAgICAgICAgID0gMUxMVSA8PCA1LAorICAgICAgICBBbmNob3JQb2ludENoYW5nZWQgICAg
ICAgICAgICAgID0gMUxMVSA8PCA2LAorICAgICAgICBCb3JkZXJXaWR0aENoYW5nZWQgICAgICAg
ICAgICAgID0gMUxMVSA8PCA3LAorICAgICAgICBCb3JkZXJDb2xvckNoYW5nZWQgICAgICAgICAg
ICAgID0gMUxMVSA8PCA4LAorICAgICAgICBPcGFjaXR5Q2hhbmdlZCAgICAgICAgICAgICAgICAg
ID0gMUxMVSA8PCA5LAorICAgICAgICBUcmFuc2Zvcm1DaGFuZ2VkICAgICAgICAgICAgICAgID0g
MUxMVSA8PCAxMCwKKyAgICAgICAgU3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkICAgICAgICA9IDFM
TFUgPDwgMTEsCisgICAgICAgIEhpZGRlbkNoYW5nZWQgICAgICAgICAgICAgICAgICAgPSAxTExV
IDw8IDEyLAorICAgICAgICBHZW9tZXRyeUZsaXBwZWRDaGFuZ2VkICAgICAgICAgID0gMUxMVSA8
PCAxMywKKyAgICAgICAgRG91YmxlU2lkZWRDaGFuZ2VkICAgICAgICAgICAgICA9IDFMTFUgPDwg
MTQsCisgICAgICAgIE1hc2tzVG9Cb3VuZHNDaGFuZ2VkICAgICAgICAgICAgPSAxTExVIDw8IDE1
LAorICAgICAgICBPcGFxdWVDaGFuZ2VkICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxNiwK
KyAgICAgICAgTWFza0xheWVyQ2hhbmdlZCAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTcsCisg
ICAgICAgIENsb25lZENvbnRlbnRzQ2hhbmdlZCAgICAgICAgICAgPSAxTExVIDw8IDE4LAorICAg
ICAgICBDb250ZW50c1JlY3RDaGFuZ2VkICAgICAgICAgICAgID0gMUxMVSA8PCAxOSwKKyAgICAg
ICAgQ29udGVudHNTY2FsZUNoYW5nZWQgICAgICAgICAgICA9IDFMTFUgPDwgMjAsCisgICAgICAg
IENvcm5lclJhZGl1c0NoYW5nZWQgICAgICAgICAgICAgPSAxTExVIDw8IDIxLAorICAgICAgICBT
aGFwZVJvdW5kZWRSZWN0Q2hhbmdlZCAgICAgICAgID0gMUxMVSA8PCAyMiwKKyAgICAgICAgTWlu
aWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCAgICAgICA9IDFMTFUgPDwgMjMsCisgICAgICAgIE1hZ25p
ZmljYXRpb25GaWx0ZXJDaGFuZ2VkICAgICAgPSAxTExVIDw8IDI0LAorICAgICAgICBCbGVuZE1v
ZGVDaGFuZ2VkICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNSwKKyAgICAgICAgU3BlZWRDaGFu
Z2VkICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjYsCisgICAgICAgIFRpbWVPZmZzZXRD
aGFuZ2VkICAgICAgICAgICAgICAgPSAxTExVIDw8IDI3LAorICAgICAgICBCYWNraW5nU3RvcmVD
aGFuZ2VkICAgICAgICAgICAgID0gMUxMVSA8PCAyOCwKKyAgICAgICAgRmlsdGVyc0NoYW5nZWQg
ICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjksCisgICAgICAgIEFuaW1hdGlvbnNDaGFuZ2Vk
ICAgICAgICAgICAgICAgPSAxTExVIDw8IDMwLAorICAgICAgICBFZGdlQW50aWFsaWFzaW5nTWFz
a0NoYW5nZWQgICAgID0gMUxMVSA8PCAzMSwKKyAgICAgICAgQ3VzdG9tQXBwZWFyYW5jZUNoYW5n
ZWQgICAgICAgICA9IDFMTFUgPDwgMzIsCisgICAgICAgIEN1c3RvbUJlaGF2aW9yQ2hhbmdlZCAg
ICAgICAgICAgPSAxTExVIDw8IDMzCiAgICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIExheWVy
Q2hhbmdlOworICAgIHR5cGVkZWYgdWludDY0X3QgTGF5ZXJDaGFuZ2U7CiAKICAgICBzdHJ1Y3Qg
TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMgewogICAgICAgICBMYXllckNyZWF0aW9uUHJvcGVydGll
cygpOwpAQCAtMTIyLDYgKzEyNCw4IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG5hbWU7CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gdHJh
bnNmb3JtOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXg+IHN1YmxheWVyVHJhbnNmb3JtOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6RmxvYXRSb3VuZGVkUmVjdD4gc2hhcGVSb3VuZGVkUmVjdDsKKwogICAgICAgICBWZWN0b3I8
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiBjaGlsZHJlbjsKIAogICAg
ICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6
UHJvcGVydGllcz4+IGFkZGVkQW5pbWF0aW9uczsKQEAgLTEzOCw2ICsxNDIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGRvdWJsZSB0aW1lT2Zmc2V0OwogICAgICAgICBmbG9hdCBzcGVlZDsKICAgICAg
ICAgZmxvYXQgY29udGVudHNTY2FsZTsKKyAgICAgICAgZmxvYXQgY29ybmVyUmFkaXVzOwogICAg
ICAgICBmbG9hdCBib3JkZXJXaWR0aDsKICAgICAgICAgZmxvYXQgb3BhY2l0eTsKICAgICAgICAg
V2ViQ29yZTo6Q29sb3IgYmFja2dyb3VuZENvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggMDBiODM1
NmMyNDUwOTAxNGU2NTAxOWQyZmJiYTlhZWFkNmEyOGUwOC4uN2JhNjg1MWU1OGViZDIzMmQ2NGJj
M2ZmMWIzZGM4ZTNlYzU5YTgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC04Niw2ICs4Niw3IEBAIFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGll
cygpCiAgICAgLCB0aW1lT2Zmc2V0KDApCiAgICAgLCBzcGVlZCgxKQogICAgICwgY29udGVudHNT
Y2FsZSgxKQorICAgICwgY29ybmVyUmFkaXVzKDApCiAgICAgLCBib3JkZXJXaWR0aCgwKQogICAg
ICwgb3BhY2l0eSgxKQogICAgICwgYmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCkK
QEAgLTEyMCw2ICsxMjEsNyBAQCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0aWVzOjpMYXllclByb3BlcnRpZXMoY29uc3QgTGF5ZXJQcm9wZXJ0aQogICAgICwgdGltZU9m
ZnNldChvdGhlci50aW1lT2Zmc2V0KQogICAgICwgc3BlZWQob3RoZXIuc3BlZWQpCiAgICAgLCBj
b250ZW50c1NjYWxlKG90aGVyLmNvbnRlbnRzU2NhbGUpCisgICAgLCBjb3JuZXJSYWRpdXMob3Ro
ZXIuY29ybmVyUmFkaXVzKQogICAgICwgYm9yZGVyV2lkdGgob3RoZXIuYm9yZGVyV2lkdGgpCiAg
ICAgLCBvcGFjaXR5KG90aGVyLm9wYWNpdHkpCiAgICAgLCBiYWNrZ3JvdW5kQ29sb3Iob3RoZXIu
YmFja2dyb3VuZENvbG9yKQpAQCAtMjE4LDYgKzIyMCwxMiBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2Rl
ciYgZQogICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcyAmIENvbnRlbnRzU2NhbGVDaGFuZ2VkKQog
ICAgICAgICBlbmNvZGVyIDw8IGNvbnRlbnRzU2NhbGU7CiAKKyAgICBpZiAoY2hhbmdlZFByb3Bl
cnRpZXMgJiBDb3JuZXJSYWRpdXNDaGFuZ2VkKQorICAgICAgICBlbmNvZGVyIDw8IGNvcm5lclJh
ZGl1czsKKworICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcyAmIFNoYXBlUm91bmRlZFJlY3RDaGFu
Z2VkKQorICAgICAgICBlbmNvZGVyIDw8ICpzaGFwZVJvdW5kZWRSZWN0OworCiAgICAgaWYgKGNo
YW5nZWRQcm9wZXJ0aWVzICYgTWluaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCkKICAgICAgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKG1pbmlmaWNhdGlvbkZpbHRlcik7CiAKQEAgLTM3Nyw2ICszODUsMTkg
QEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNv
ZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKKyAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgQ29ybmVyUmFkaXVzQ2hh
bmdlZCkgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb3JuZXJSYWRpdXMp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChyZXN1bHQuY2hh
bmdlZFByb3BlcnRpZXMgJiBTaGFwZVJvdW5kZWRSZWN0Q2hhbmdlZCkgeworICAgICAgICBGbG9h
dFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJv
dW5kZWRSZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAg
IHJlc3VsdC5zaGFwZVJvdW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRS
ZWN0Pihyb3VuZGVkUmVjdCk7CisgICAgfQorCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVy
dGllcyAmIE1pbmlmaWNhdGlvbkZpbHRlckNoYW5nZWQpIHsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUVudW0ocmVzdWx0Lm1pbmlmaWNhdGlvbkZpbHRlcikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC01OTksNiArNjIwLDcgQEAgcHVibGljOgogCiAgICAgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwog
ICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoUGxhdGZvcm1DQUxheWVy
OjpGaWx0ZXJUeXBlKTsKKyAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KEZsb2F0UG9pbnQzRCk7CiAgICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChDb2xvcik7CiAgICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChGbG9hdFJlY3QpOwpAQCAtNjUxLDYgKzY3MywyNSBAQCBSZW1vdGVMYXllclRyZWVU
ZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFRy
YW5zZm9ybQogICAgIHJldHVybiB0czsKIH0KIAorUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYg
UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByb3VuZGVkUmVjdCkKK3sKKyAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cyA9
ICp0aGlzOworICAgIHRzIDw8IHJvdW5kZWRSZWN0LnJlY3QoKS54KCkgPDwgIiAiIDw8IHJvdW5k
ZWRSZWN0LnJlY3QoKS55KCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0LnJlY3QoKS53aWR0aCgpIDw8
ICIgIiA8PCByb3VuZGVkUmVjdC5yZWN0KCkuaGVpZ2h0KCkgPDwgIlxuIjsKKworICAgIHRzLmlu
Y3JlYXNlSW5kZW50KCk7CisgICAgdHMud3JpdGVJbmRlbnQoKTsKKyAgICB0cyA8PCAidG9wTGVm
dD0iIDw8IHJvdW5kZWRSZWN0LnRvcExlZnRDb3JuZXIoKS53aWR0aCgpIDw8ICIgIiA8PCByb3Vu
ZGVkUmVjdC50b3BMZWZ0Q29ybmVyKCkuaGVpZ2h0KCkgPDwgIlxuIjsKKyAgICB0cy53cml0ZUlu
ZGVudCgpOworICAgIHRzIDw8ICJ0b3BSaWdodD0iIDw8IHJvdW5kZWRSZWN0LnRvcFJpZ2h0Q29y
bmVyKCkud2lkdGgoKSA8PCAiICIgPDwgcm91bmRlZFJlY3QudG9wUmlnaHRDb3JuZXIoKS5oZWln
aHQoKSA8PCAiXG4iOworICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwgImJvdHRvbUxl
ZnQ9IiA8PCByb3VuZGVkUmVjdC5ib3R0b21MZWZ0Q29ybmVyKCkud2lkdGgoKSA8PCAiICIgPDwg
cm91bmRlZFJlY3QuYm90dG9tTGVmdENvcm5lcigpLmhlaWdodCgpIDw8ICJcbiI7CisgICAgdHMu
d3JpdGVJbmRlbnQoKTsKKyAgICB0cyA8PCAiYm90dG9tUmlnaHQ9IiA8PCByb3VuZGVkUmVjdC5i
b3R0b21SaWdodENvcm5lcigpLndpZHRoKCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0LmJvdHRvbVJp
Z2h0Q29ybmVyKCkuaGVpZ2h0KCk7CisgICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsKKworICAgIHJl
dHVybiB0czsKK30KKwogUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVl
VGV4dFN0cmVhbTo6b3BlcmF0b3I8PChQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUgZmlsdGVy
VHlwZSkKIHsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwpAQCAt
MTA4Myw2ICsxMTI0LDEyIEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFuZ2VkTGF5ZXJzKFJlbW90ZUxh
eWVyVHJlZVRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW1vdGVMYXllclRyCiAgICAgICAgIGlmIChs
YXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6Q29udGVudHNTY2FsZUNoYW5nZWQpCiAgICAgICAgICAgICBkdW1wUHJvcGVydHkodHMs
ICJjb250ZW50c1NjYWxlIiwgbGF5ZXJQcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUpOwogCisgICAg
ICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6Q29ybmVyUmFkaXVzQ2hhbmdlZCkKKyAgICAgICAgICAgIGR1bXBQcm9w
ZXJ0eSh0cywgImNvcm5lclJhZGl1cyIsIGxheWVyUHJvcGVydGllcy5jb3JuZXJSYWRpdXMpOwor
CisgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6U2hhcGVSb3VuZGVkUmVjdENoYW5nZWQpCisgICAgICAgICAg
ICBkdW1wUHJvcGVydHkodHMsICJzaGFwZVJlY3QiLCBsYXllclByb3BlcnRpZXMuc2hhcGVSb3Vu
ZGVkUmVjdCA/ICpsYXllclByb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA6IEZsb2F0Um91bmRl
ZFJlY3QoKSk7CisKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGll
cyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpNaW5pZmljYXRpb25GaWx0ZXJDaGFuZ2Vk
KQogICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAibWluaWZpY2F0aW9uRmlsdGVyIiwgbGF5
ZXJQcm9wZXJ0aWVzLm1pbmlmaWNhdGlvbkZpbHRlcik7CiAKQEAgLTExODksNiArMTIzNiw5IEBA
IENTdHJpbmcgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QK
ICAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJHTExheWVyOgog
ICAgICAgICAgICAgICAgIHRzIDw8ICJ3ZWItZ2wtbGF5ZXIgKGNvbnRleHQtaWQgIiA8PCBjcmVh
dGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2hhcGVMYXllcjoK
KyAgICAgICAgICAgICAgICB0cyA8PCAic2hhcGUtbGF5ZXIiOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbToK
ICAgICAgICAgICAgICAgICB0cyA8PCAiY3VzdG9tLWxheWVyIChjb250ZXh0LWlkICIgPDwgY3Jl
YXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9SZW1vdGVMYXllclRy
ZWVIb3N0SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9SZW1vdGVMYXllclRy
ZWVIb3N0SU9TLm1tCmluZGV4IDhmN2RiYTllNjdjMzU2NTY1Nzg2NjNjNzIzMTEzYTEwMTY2NjQ2
NTIuLjMzYjA1OTk0YjlmZTg3ZWRkZWIxNDBhNTU1YzNhOTFiZDlhZGUyNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1Mu
bW0KQEAgLTgzLDYgKzgzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBAZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBXS0NvbXBvc2l0aW5nVmlldworCiAtIChVSVZpZXcgKiloaXRUZXN0OihD
R1BvaW50KXBvaW50IHdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50CiB7CiAgICAgcmV0dXJuIFtz
ZWxmIF9maW5kRGVzY2VuZGFudFZpZXdBdFBvaW50OnBvaW50IHdpdGhFdmVudDpldmVudF07CkBA
IC05NCwxMiArOTUsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgTlNTdHJpbmcg
KndlYktpdERldGFpbHMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiBsYXllcklEID0g
JWxsdSBcIiVAXCIiLCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6OmxheWVySUQoc2VsZi5s
YXllciksIHNlbGYubGF5ZXIubmFtZSA/IHNlbGYubGF5ZXIubmFtZSA6IEAiIl07CiAgICAgcmV0
dXJuIFt2aWV3RGVzY3JpcHRpb24gc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6d2ViS2l0RGV0YWls
c107CiB9CisKIEBlbmQKIAogQGludGVyZmFjZSBXS1RyYW5zZm9ybVZpZXcgOiBXS0NvbXBvc2l0
aW5nVmlldwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tUcmFuc2Zvcm1WaWV3CisKICsgKENs
YXNzKWxheWVyQ2xhc3MKIHsKICAgICByZXR1cm4gW0NBVHJhbnNmb3JtTGF5ZXIgc2VsZl07CkBA
IC0xMTgsMTAgKzEyMSwyMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGVuZAogCitA
aW50ZXJmYWNlIFdLU2hhcGVWaWV3IDogV0tDb21wb3NpdGluZ1ZpZXcKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdLU2hhcGVWaWV3CisKKysgKENsYXNzKWxheWVyQ2xhc3MKK3sKKyAgICByZXR1
cm4gW0NBU2hhcGVMYXllciBzZWxmXTsKK30KKworQGVuZAorCiBAaW50ZXJmYWNlIFdLUmVtb3Rl
VmlldyA6IFdLQ29tcG9zaXRpbmdWaWV3CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1JlbW90
ZVZpZXcKKwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb250
ZXh0SUQ6KHVpbnQzMl90KWNvbnRleHRJRCBob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3I6KGZsb2F0
KXNjYWxlRmFjdG9yCiB7CiAgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJh
bWVdKSkgewpAQCAtMTc5LDYgKzE5NSw5IEBAIExheWVyT3JWaWV3ICpSZW1vdGVMYXllclRyZWVI
b3N0OjpjcmVhdGVMYXllcihjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHZpZXcgPSBhZG9wdE5TKFtbV0tDb21wb3NpdGluZ1ZpZXcg
YWxsb2NdIGluaXRdKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVNpbXBsZUxheWVyOgorICAgICAgICB2aWV3ID0gYWRvcHROUyhbW1dLU2hhcGVW
aWV3IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCBmZTUwNjc5MDM0ZTZlZTg5
ODViMDg4ZDczMTAxOGRmZWY0N2Q2ZDNjLi4yODZhNjc1NjM5ZDYzMDMwMTQyODEwYTYzNjRlZDEx
ODE1MTMxZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90
ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1v
dGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yNDMsNiArMjQzLDkgQEAgTGF5ZXJPclZpZXcgKlJlbW90
ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXll
ciBhbGxvY10gaW5pdF0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlU2hhcGVMYXllcjoKKyAgICAgICAgbGF5ZXIgPSBhZG9wdE5TKFtbQ0FTaGFw
ZUxheWVyIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmNwcAppbmRleCA2M2Q0NzVmNDUxMTcwMTlkOTE3M2Q5NzA1NTY3NTcxMWI3MGRiMWY4Li4xOGIw
NGFiOTRkMTE0MzhhYzBiZjczMzJjNWMzN2M4MDdjYmE5OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUuY3BwCkBAIC0xMzIsOCArMTMyLDE0IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjp1cGRhdGVDbG9uZWRMYXllclByb3BlcnRpZXMoUGxhdGZvcm1DQUxheWVyUmVtb3RlJiBj
CiAgICAgY2xvbmUuc2V0T3BhcXVlKGlzT3BhcXVlKCkpOwogICAgIGNsb25lLnNldEJhY2tncm91
bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgY2xvbmUuc2V0Q29udGVudHNTY2FsZShj
b250ZW50c1NjYWxlKCkpOworICAgIGNsb25lLnNldENvcm5lclJhZGl1cyhjb3JuZXJSYWRpdXMo
KSk7CisKKyAgICBpZiAobV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QpCisgICAgICAgIGNs
b25lLnNldFNoYXBlUm91bmRlZFJlY3QoKm1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0KTsK
KwogICAgIGlmIChtX3Byb3BlcnRpZXMuZmlsdGVycykKICAgICAgICAgY2xvbmUuY29weUZpbHRl
cnNGcm9tKCp0aGlzKTsKKwogICAgIGNsb25lLnVwZGF0ZUN1c3RvbUFwcGVhcmFuY2UoY3VzdG9t
QXBwZWFyYW5jZSgpKTsKIH0KIApAQCAtMzYwLDYgKzM2NiwxMiBAQCBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YW5pbWF0aW9uRm9yS2V5KGNv
bnN0IFN0cgogICAgIHJldHVybiBtX2FuaW1hdGlvbnMuZ2V0KGtleSk7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgYm9vbCBpc0VxdWl2YWxlbnRMYXllcihjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVy
LCBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCkKK3sKKyAgICBHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbmV3TGF5ZXJJRCA9IGxheWVyID8gbGF5ZXItPmxheWVy
SUQoKSA6IDA7CisgICAgcmV0dXJuIGxheWVySUQgPT0gbmV3TGF5ZXJJRDsKK30KKwogdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgU3RyaW5nJiBrZXks
IENGVGltZUludGVydmFsIGJlZ2luVGltZSkKIHsKICAgICBhdXRvIGl0ID0gbV9hbmltYXRpb25z
LmZpbmQoa2V5KTsKQEAgLTM3OCw2ICszOTAsOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6YW5pbWF0aW9uRW5kZWQoY29uc3QgU3RyaW5nJiBrZXkpCiAKIHZvaWQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXRNYXNrKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCiB7CisgICAgaWYgKGlz
RXF1aXZhbGVudExheWVyKGxheWVyLCBtX3Byb3BlcnRpZXMubWFza0xheWVySUQpKQorICAgICAg
ICByZXR1cm47CisgICAgCiAgICAgaWYgKGxheWVyKSB7CiAgICAgICAgIG1fbWFza0xheWVyID0g
ZG93bmNhc3Q8UGxhdGZvcm1DQUxheWVyUmVtb3RlPihsYXllcik7CiAgICAgICAgIG1fcHJvcGVy
dGllcy5tYXNrTGF5ZXJJRCA9IG1fbWFza0xheWVyLT5sYXllcklEKCk7CkBAIC0zOTEsNiArNDA2
LDkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE1hc2soUGxhdGZvcm1DQUxheWVy
KiBsYXllcikKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldENsb25lZExheWVyKGNv
bnN0IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCiB7CisgICAgaWYgKGlzRXF1aXZhbGVudExheWVy
KGxheWVyLCBtX3Byb3BlcnRpZXMuY2xvbmVkTGF5ZXJJRCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGlmIChsYXllcikKICAgICAgICAgbV9wcm9wZXJ0aWVzLmNsb25lZExheWVySUQgPSBsYXll
ci0+bGF5ZXJJRCgpOwogICAgIGVsc2UKQEAgLTY1NiwxMiArNjc0LDQwIEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHZhbHVlKQogICAgIHVwZGF0
ZUJhY2tpbmdTdG9yZSgpOwogfQogCitmbG9hdCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNvcm5l
clJhZGl1cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvcGVydGllcy5jb3JuZXJSYWRpdXM7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb3JuZXJSYWRpdXMoZmxvYXQg
dmFsdWUpCit7CisgICAgaWYgKG1fcHJvcGVydGllcy5jb3JuZXJSYWRpdXMgPT0gdmFsdWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fcHJvcGVydGllcy5jb3JuZXJSYWRpdXMgPSB2YWx1ZTsK
KyAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpDb3JuZXJSYWRpdXNDaGFuZ2VkKTsKK30KKwogdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnNldEVkZ2VBbnRpYWxpYXNpbmdNYXNrKHVuc2lnbmVkIHZhbHVlKQogewogICAg
IG1fcHJvcGVydGllcy5lZGdlQW50aWFsaWFzaW5nTWFzayA9IHZhbHVlOwogICAgIG1fcHJvcGVy
dGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkVk
Z2VBbnRpYWxpYXNpbmdNYXNrQ2hhbmdlZCk7CiB9CiAKK0Zsb2F0Um91bmRlZFJlY3QgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzaGFwZVJvdW5kZWRSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPyAqbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRl
ZFJlY3QgOiBGbG9hdFJvdW5kZWRSZWN0KEZsb2F0UmVjdCgpKTsKK30KKwordm9pZCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcm91bmRlZFJlY3QpCit7CisgICAgaWYgKG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0
ICYmICptX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9PSByb3VuZGVkUmVjdCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICBtX3Byb3BlcnRp
ZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTaGFw
ZVJvdW5kZWRSZWN0Q2hhbmdlZCk7Cit9CisKIGJvb2wgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpy
ZXF1aXJlc0N1c3RvbUFwcGVhcmFuY2VVcGRhdGVPbkJvdW5kc0NoYW5nZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fcHJvcGVydGllcy5jdXN0b21BcHBlYXJhbmNlID09IEdyYXBoaWNzTGF5ZXI6
OlNjcm9sbGluZ1NoYWRvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ5Y2ZhOTE2
YTY2ZWFkYmUxYmU1ZDdlYWVmNTBjNTUwMTliYzBkZDIuLmQ2MGFjMzU0NGFiYzM4ZWViYWJjMjMx
OTE1YzI0ZjZlZjkwNmM5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMTM5LDgg
KzEzOSwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBmbG9hdCBjb250ZW50c1NjYWxlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpIG92
ZXJyaWRlOwogCisgICAgdmlydHVhbCBmbG9hdCBjb3JuZXJSYWRpdXMoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29ybmVyUmFkaXVzKGZsb2F0KSBvdmVycmlkZTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRFZGdlQW50aWFsaWFzaW5nTWFzayh1bnNpZ25lZCkgb3ZlcnJp
ZGU7CiAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Qgc2hhcGVSb3VuZGVk
UmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFwZVJvdW5kZWRS
ZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3QmKSBvdmVycmlkZTsKKwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBl
YXJhbmNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1c3RvbUFw
cGVhcmFuY2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBkY2FlMzMxZDE3ZGZhN2Q3ZDRmYmYwY2FmZDIzNDg3YWI0NDI5NGU3Li45
YzQ3MTk3OTUxN2M1OGVmM2M0MDcyZTllYTAyZjUyNTFjZWU3ODI4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTQtMTEtMDggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IHJvdW5kLXJlY3QgY2xpcHBpbmcgb24gdmlkZW8gZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODUz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgVGVzdCB0aGF0IHVzZXMgY2xpcCgpIHRvIGNvbXBhcmUgYSBiaXQgb2Ygcm91bmRlZC1yZWN0
IHZpZGVvIGluIHRoZSBjb3JuZXIuCisgICAgICAgIFJlYmFzZWxpbmVkIHRlc3QgdGhhdCBkdW1w
ZWQgY29udGVudHMgbGF5ZXJzLgorCisgICAgICAgICogY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8t
Ym9yZGVyLXJhZGl1cy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGlu
Zy92aWRlby92aWRlby1ib3JkZXItcmFkaXVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9kaXJlY3QtaW1hZ2Utb2JqZWN0LWZpdC1y
ZWZsZWN0ZWQtZXhwZWN0ZWQudHh0OgorCiAyMDE0LTExLTA2ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc1NTQ5KTogaHR0cC90ZXN0cy9t
dWx0aXBhcnQvc3RvcC1jcmFzaC5odG1sIGZhaWxpbmcgKGFzc2VydGlvbiBmYWlsdXJlIGluIENh
Y2hlZFJlc291cmNlOjpzZXRFbmNvZGVkU2l6ZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWJvcmRlci1yYWRpdXMtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWJvcmRlci1yYWRpdXMtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NWM2MTA1NjRjNDA1OTI4MDk0NWU3NjkwZjg1ZWZjMGNkYjA5ZWMxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYm9y
ZGVyLXJhZGl1cy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAud3JhcHBlciB7CisgICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgY2xpcDogcmVjdCgwLCAyMHB4LCA1MHB4LCAwKTsKKyAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICBoZWlnaHQ6IDI1MHB4OworICAgICAgICBtYXJnaW46IDVweDsKKyAgICAgICAgYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7CisgICAgICAgIC13ZWJraXQtYm94LXJlZmxlY3Q6IHJpZ2h0IDEw
cHg7CisgICAgfQorCisgICAgLndyYXBwZXIubm9uLXVuaWZvcm0geworICAgICAgICBjbGlwOiBy
ZWN0KDAsIDUwcHgsIDIwcHgsIDApOworICAgIH0KKworICAgIC53cmFwcGVyID4gLm9ic2N1cmVy
IHsKKyAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOworICAgIH0KKyAgICAubm9uLXVuaWZvcm0u
d3JhcHBlciA+IC5vYnNjdXJlciB7CisgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDMw
MHB4IDEwMHB4OworICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMjUwcHggMTBw
eDsKKyAgICB9CisgICAgCisgICAgLm9ic2N1cmVyIHsKKyAgICAgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgICAgICB3aWR0aDogMTAwJTsKKyAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9CisgICAgCisgICAgLmNvbXBvc2l0ZWQg
eworICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgfQorICAgIAor
ICAgIC5ib3ggeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMTAw
cHg7CisgICAgICAgIGxlZnQ6IDEwMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIAorICAgIDxkaXYgY2xhc3M9IndyYXBwZXIi
PgorICAgICAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIGJveCI+PC9kaXY+CisgICAgICAgIDxk
aXYgY2xhc3M9Im9ic2N1cmVyIj48L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9
IndyYXBwZXIgbm9uLXVuaWZvcm0iIHN0eWxlPSJ0b3A6IDEwMHB4OyI+CisgICAgICAgIDxkaXYg
Y2xhc3M9ImNvbXBvc2l0ZWQgYm94Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0ib2JzY3Vy
ZXIiPjwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYm9yZGVyLXJhZGl1cy5odG1sIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYm9yZGVyLXJhZGl1cy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFhMTA4NTA1NDU3ZWY3NmZhOWQ2MzcxNmZiMmNjMDQwOTYyNDk0OWIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aWRlby92aWRlby1ib3JkZXItcmFk
aXVzLmh0bWwKQEAgLTAsMCArMSw4NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHN0eWxlPgorICAgIC53cmFwcGVyIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgICAgICBjbGlwOiByZWN0KDAsIDIwcHgsIDUwcHgsIDApOworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmF5OworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMjUw
cHg7CisgICAgICAgIG1hcmdpbjogNXB4OworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFj
azsKKyAgICAgICAgLXdlYmtpdC1ib3gtcmVmbGVjdDogcmlnaHQgMTBweDsKKyAgICB9CisgICAg
CisgICAgLndyYXBwZXIubm9uLXVuaWZvcm0geworICAgICAgICBjbGlwOiByZWN0KDAsIDUwcHgs
IDIwcHgsIDApOworICAgIH0KKworICAgIHZpZGVvIHsKKyAgICAgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgICAgICB0b3A6IDFweDsgLyogaW5zZXQgc2xpZ2h0bHkgdG8gYXZvaWQgYW50aWFs
aWFzaW5nIGRpZmZzICovCisgICAgICAgIGxlZnQ6IDFweDsKKyAgICAgICAgd2lkdGg6IDI5OHB4
OworICAgICAgICBoZWlnaHQ6IDI0OHB4OworICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7Cisg
ICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgfQorICAgIAorICAgIC53cmFwcGVy
ID4gKiB7CisgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKKyAgICB9CisKKyAgICAubm9uLXVu
aWZvcm0ud3JhcHBlciA+ICogeworICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CisgICAgICAg
IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDMwMHB4IDEwMHB4OworICAgICAgICBib3JkZXItYm90
dG9tLXJpZ2h0LXJhZGl1czogMjUwcHggMTBweDsKKyAgICB9CisgICAgCisgICAgLm9ic2N1cmVy
IHsgLyogVGhpcyBzaG91bGQgY292ZXIgdGhlIHZpZGVvICovCisgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgIGhlaWdodDogMTAwJTsKKyAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorPC9zdHlsZT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9tZWRpYS9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKworICAgIGZ1bmN0aW9uIGluaXQoKQorICAgIHsKKyAgICAgICAgc2V0U3JjQnlUYWdOYW1l
KCJ2aWRlbyIsIGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uLy4uL21lZGlhL2NvbnRlbnQvY291
bnRpbmciKSk7CisKKyAgICAgICAgdmFyIHRvdGFsQ291bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgndmlkZW8nKS5sZW5ndGg7CisgICAgICAgIHZhciBjb3VudCA9IHRvdGFsQ291
bnQ7CisgICAgICAgIHdpbmRvdy5jb25zb2xlLmxvZygnbG9hZGluZyB2aWRlb3MnKQorICAgICAg
ICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjYW5wbGF5dGhyb3VnaCIsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHdpbmRvdy5jb25zb2xlLmxvZygnbG9hZGVkIHZpZGVvcyAnICsgY291
bnQpCisgICAgICAgICAgICBpZiAoIS0tY291bnQpIHsKKyAgICAgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSwgdG90YWxDb3VudCAqIDE1MCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0sIHRydWUpOworICAgIH0KKzwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9ImluaXQoKTsiPgorICAgIAorICAgIDxkaXYgY2xhc3M9IndyYXBwZXIiPgorICAgICAgICA8
dmlkZW8+PC92aWRlbz4KKyAgICAgICAgPGRpdiBjbGFzcz0ib2JzY3VyZXIiPjwvZGl2PgorICAg
IDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0id3JhcHBlciBub24tdW5pZm9ybSIgc3R5bGU9InRv
cDogMTAwcHg7Ij4KKyAgICAgICAgPHZpZGVvPjwvdmlkZW8+CisgICAgICAgIDxkaXYgY2xhc3M9
Im9ic2N1cmVyIj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9yZWZsZWN0aW9ucy9kaXJl
Y3QtaW1hZ2Utb2JqZWN0LWZpdC1yZWZsZWN0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2RpcmVjdC1pbWFnZS1vYmplY3Qt
Zml0LXJlZmxlY3RlZC1leHBlY3RlZC50eHQKaW5kZXggMjVjY2JhNTU2YzZkMWQyY2U4YmEyNTk2
YTBhMTg2MWVhYmM3NGJjOS4uMjQxM2FkMWQ5ZTViYzg2MGRkZmFiYTViMWZiZjlkYjllODUyNTRm
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlZmxl
Y3Rpb25zL2RpcmVjdC1pbWFnZS1vYmplY3QtZml0LXJlZmxlY3RlZC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2RpcmVj
dC1pbWFnZS1vYmplY3QtZml0LXJlZmxlY3RlZC1leHBlY3RlZC50eHQKQEAgLTE2LDYgKzE2LDcg
QEAKICAgICAgICAgICAgICAgKHRyYW5zZm9ybSBbMS4wMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAg
LTEuMDAgMC4wMCAwLjAwXSBbMC4wMCAwLjAwIDEuMDAgMC4wMF0gWzAuMDAgMTQwLjAwIDAuMDAg
MS4wMF0pCiAgICAgICAgICAgICAgIChyZXBsaWNhdGVkIGxheWVyKQogICAgICAgICAgICAgKQor
ICAgICAgICAgIChzdHJ1Y3R1cmFsIGxheWVyIDEyOC4wMCwgODguMDAgMjAwLjAwIHggMTIwLjAw
KQogICAgICAgICAgIChjb250ZW50cyBjbGlwcGluZyBsYXllciAwLjAwLCAwLjAwIDIwMC4wMCB4
IDEyMC4wMCkKICAgICAgICAgICAoY29udGVudHMgbGF5ZXIgLTIwLjAwLCAwLjAwIDI0MC4wMCB4
IDEyMC4wMCkKICAgICAgICAgKQpAQCAtMjgsNiArMjksNyBAQAogICAgICAgICAgICAgICAodHJh
bnNmb3JtIFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAtMS4wMCAwLjAwIDAuMDBdIFswLjAw
IDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAxNDAuMDAgMC4wMCAxLjAwXSkKICAgICAgICAgICAgICAg
KHJlcGxpY2F0ZWQgbGF5ZXIpCiAgICAgICAgICAgICApCisgICAgICAgICAgKHN0cnVjdHVyYWwg
bGF5ZXIgMzcyLjAwLCA4OC4wMCAyMDAuMDAgeCAxMjAuMDApCiAgICAgICAgICAgKGNvbnRlbnRz
IGxheWVyIDAuMDAsIDEwLjAwIDIwMC4wMCB4IDEwMC4wMCkKICAgICAgICAgKQogICAgICAgICAo
R3JhcGhpY3NMYXllcgpAQCAtMzksNiArNDEsNyBAQAogICAgICAgICAgICAgICAodHJhbnNmb3Jt
IFsxLjAwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAtMS4wMCAwLjAwIDAuMDBdIFswLjAwIDAuMDAg
MS4wMCAwLjAwXSBbMC4wMCAxNDAuMDAgMC4wMCAxLjAwXSkKICAgICAgICAgICAgICAgKHJlcGxp
Y2F0ZWQgbGF5ZXIpCiAgICAgICAgICAgICApCisgICAgICAgICAgKHN0cnVjdHVyYWwgbGF5ZXIg
NjE2LjAwLCA4OC4wMCAyMDAuMDAgeCAxMjAuMDApCiAgICAgICAgICAgKGNvbnRlbnRzIGNsaXBw
aW5nIGxheWVyIDAuMDAsIDAuMDAgMjAwLjAwIHggMTIwLjAwKQogICAgICAgICAgIChjb250ZW50
cyBsYXllciAtNDQuMDAsIC0xMi4wMCAyODguMDAgeCAxNDQuMDApCiAgICAgICAgICkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241238</attachid>
            <date>2014-11-08 15:53:13 -0800</date>
            <delta_ts>2014-11-08 16:21:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138537-20141108155312.patch</filename>
            <type>text/plain</type>
            <size>71147</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlkNzAwNTZlMWRjMGU1
MjM4YzFhNzRkOGVlYjhlNTY2YTNlYzJkYi4uZjlmM2UwYTUxN2NjMGZiMmE5MDYwYmE0Njc1M2Q5
ZmI4NzY3MTQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcyIEBACiAyMDE0LTExLTA4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBy
b3VuZC1yZWN0IGNsaXBwaW5nIG9uIHZpZGVvIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1MzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFN1cHBvcnQgYm9yZGVyLXJhZGl1
cyBvbiB2aWRlbyBhbmQgb3RoZXIgbGF5ZXJzIHdpdGggY29tcG9zaXRlZCBjb250ZW50cywKKyAg
ICAgICAgYnkgcHVzaGluZyBhIEZsb2F0Um91bmRlZFJlY3Qgb250byB0aGUgR3JhcGhpY3NMYXll
ciBhcyB0aGUgY29udGVudHNDbGlwcGluZ1JlY3QsCisgICAgICAgIGFuZCwgb24gTWFjLCB1c2lu
ZyBsYXllciBjb3JuZXItcmFkaXVzIG9yIGEgQ0FTaGFwZUxheWVyIG1hc2suCisKKyAgICAgICAg
VGVzdDogY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYm9yZGVyLXJhZGl1cy5odG1sCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJv
dW5kZWRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q6OlJhZGlp
Ojppc1VuaWZvcm1Db3JuZXJSYWRpdXMpOiBSZXR1cm5zIHRydWUgaWYgYWxsCisgICAgICAgIGNv
cm5lciByYWRpaSBhcmUgdGhlIHNhbWUsIGFuZCBoYXZlIGVxdWFsIHdpZHRocyBhbmQgaGVpZ2h0
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0Lmg6IEFsbG93
IGNvbnN0cnVjdGlvbiB3aXRob3V0IGFuIGV4cGxpY2l0CisgICAgICAgIHJlY3QuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpHcmFwaGljc0xheWVyKTogbnVsbHB0ciBnb29kbmVzcy4KKyAgICAg
ICAgKHNob3dHcmFwaGljc0xheWVyVHJlZSk6IFByaW50IGNvbnRlbnRzIGxheWVycyB3aGVuIGRl
YnVnZ2luZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpjb250ZW50c0NsaXBwaW5nUmVjdCk6IE1h
a2UgdGhpcyB0YWtlIGEgRmxvYXRSb3VuZGVkUmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRDb250ZW50c0NsaXBwaW5nUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJs
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDbGlwcGlu
Z1N0cmF0ZWd5KTogRGV0ZXJtaW5lcyB3aGV0aGVyIHdlIGNhbiBzaW1wbHkKKyAgICAgICAgdXNl
IGNvcm5lci1yYWRpdXMgb24gdGhlIGV4aXN0aW5nIGNvbnRlbnRzQ2xpcHBpbmdMYXllciwgb3Ig
d2hldGhlciB3ZSBoYXZlIHRvCisgICAgICAgIGNyZWF0ZSBhIHNoYXBlIGxheWVyIHRvIHVzZSBh
cyBhIG1hc2suCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRl
bnRzUmVjdHMpOiBXZSBoYXZlIHRvIGFkZC9yZW1vdmUgdGhlIHNoYXBlIGxheWVyCisgICAgICAg
IGJhc2VkIG9uIHRoZSByb3VuZGVkIHJlY3QgcmFkaWkuIENhbGxzIHVwZGF0ZUNsaXBwaW5nU3Ry
YXRlZ3koKSBvbiB0aGUgY2xpcHBpbmcgbGF5ZXIsCisgICAgICAgIGFuZCBhbHNvIHVwZGF0ZXMg
Y2xvbmVzIGFjY29yZGluZ2x5LgorICAgICAgICAoV2ViQ29yZTo6ZHVtcElubmVyTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpkdW1wQWRkaXRpb25hbFByb3BlcnRp
ZXMpOiBEdW1wIGFsbCB0aGUgaW5uZXIgbGF5ZXJzCisgICAgICAgIChyZXF1aXJpbmcgb24gdGVz
dCByZWJhc2VsaW5lKSwgaW5jbHVkaW5nIHRoZSBuZXcgc2hhcGUgYW5kIGJhY2tkcm9wIGxheWVy
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDogQWRkIGEgbmV3
IHNoYXBlIGxheWVyIHR5cGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1Bs
YXRmb3JtQ0FMYXllck1hYy5oOiBTdXBwb3J0IGZvciBjb3JuZXIgcmFkaXVzIGFuZAorICAgICAg
ICBhIHJvdW5kZWQgcmVjdCBzaGFwZSBtYXNrLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW06CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJN
YWM6OlBsYXRmb3JtQ0FMYXllck1hYyk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNs
b25lKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllck1hYzo6c2V0TWFzayk6CisgICAgICAgIChQ
bGF0Zm9ybUNBTGF5ZXJNYWM6OmNvcm5lclJhZGl1cyk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5
ZXJNYWM6OnNldENvcm5lclJhZGl1cyk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJNYWM6OnNo
YXBlUm91bmRlZFJlY3QpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyTWFjOjpzZXRTaGFwZVJv
dW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6Y29ybmVyUmFkaXVz
KToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0Q29ybmVyUmFkaXVzKToKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6c2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgIChQbGF0
Zm9ybUNBTGF5ZXJXaW46OnNldFNoYXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6cmVzZXRDb250ZW50c1JlY3QpOiBVc2UgZ2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KCkgdG8gZ2V0CisgICAgICAgIHRoZSByb3VuZGVkIHJlY3QgdXNlZCB0byBjbGlwIGNvbnRlbnRz
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwb3NpdGlvbk92ZXJmbG93
Q29udHJvbHNMYXllcnMpOiBQdXNoIGEgRmxvYXRSb3VuZGVkUmVjdCBmb3IgdGhlIGNvbnRlbnRz
IGNsaXAsCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURpcmVj
dGx5Q29tcG9zaXRlZEJhY2tncm91bmRDb2xvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVEaXJlY3RseUNvbXBvc2l0ZWRCYWNrZ3JvdW5kSW1h
Z2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
SW1hZ2VDb250ZW50cyk6IEdldCB0aGUgcm91bmRlZCByZWN0IGNsaXAuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOiBudWxscHRyLgorCisyMDE0LTExLTA4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAgIERvbid0IHRyeSB0
byBzY2hlZHVsZSBhIEdyYXBoaWNzTGF5ZXIgZmx1c2ggd2hlbiBwcm9wYWdhdGluZyBjaGFuZ2Vz
IHRvIHJlcGxpY2FzIGluc2lkZSBhIGZsdXNoCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1MzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYyMDI2NGY1YTk3Yzkx
M2Q4NmZjMWJhZjQ5ZmQyZDU2YzAwODBjMmYuLjIxZjViZDk2MDUwODVhODc1ZTk2ZGE4NmMwZjIy
MDcxNjRiYzBjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNC0xMS0wOCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
cm91bmQtcmVjdCBjbGlwcGluZyBvbiB2aWRlbyBlbGVtZW50cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBib3JkZXItcmFkaXVzIG9uIHZp
ZGVvIGFuZCBvdGhlciBsYXllcnMgd2l0aCBjb21wb3NpdGVkIGNvbnRlbnRzLAorICAgICAgICBi
eSBwdXNoaW5nIGEgRmxvYXRSb3VuZGVkUmVjdCBvbnRvIHRoZSBHcmFwaGljc0xheWVyIGFzIHRo
ZSBjb250ZW50c0NsaXBwaW5nUmVjdCwKKyAgICAgICAgYW5kLCBvbiBNYWMsIHVzaW5nIGxheWVy
IGNvcm5lci1yYWRpdXMgb3IgYSBDQVNoYXBlTGF5ZXIgbWFzay4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PEZsb2F0Um91bmRlZFJlY3Q+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PEZsb2F0Um91bmRlZFJlY3Q+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tOiBOZXcgc2hhcGUgbGF5ZXIgdHlwZS4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOgorICAgICAgICAoV2ViS2l0OjphcHBseVBy
b3BlcnRpZXNUb0xheWVyKTogQXBwbHkgY29ybmVyLXJhZGl1cyBhbmQgc2hhcGUgcGF0aC4KKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6IFByZXR0aWZ5
IHRoZSBmbGFncy4gWWVzLCBJIHByZWZlciB0aGlzIHN0eWxlLgorICAgICAgICAqIFNoYXJlZC9t
YWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViS2l0OjpkdW1wQ2hh
bmdlZExheWVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpkZXNjcmlwdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9SZW1vdGVMYXllclRyZWVI
b3N0SU9TLm1tOgorICAgICAgICAoK1tXS1NoYXBlVmlldyBsYXllckNsYXNzXSk6IE1ha2UgVUlW
aWV3cyB3aXRoIGEgQ0FTaGFwZUxheWVyIGxheWVyIGNsYXNzLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllcik6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVIb3N0OjpjcmVhdGVMYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnVwZGF0ZUNsb25lZExheWVyUHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6
OmlzRXF1aXZhbGVudExheWVyKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpzZXRNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXRDbG9uZWRMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
Y29ybmVyUmFkaXVzKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXRDb3JuZXJSYWRpdXMpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnNoYXBlUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldFNoYXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg6CisKIDIwMTQtMTEtMDggIEJldGggRGFraW4gIDxi
ZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdLQWN0aW9uTWVudUNvbnRyb2xsZXIgbWV0aG9k
cyBzaG91bGQgYmUgbW9yZSBjYXJlZnVsIHRvIHVzZSB0aGUgYmVzdCAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggYWRkMTZjM2U0NjYwNmUyM2ZjNGNkMmExZGM0YzYxMTJkMjI0MTA3ZC4uNWE0NjQx
NmE2YjM5OWYyNzVjYTg5NGIwNGY4ZTU1NzBlZDhjZDBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTU5NCw3ICs1OTQsNyBAQCBfX1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTIxc2V0QWNj
ZWxlcmF0ZXNEcmF3aW5nRWIKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMjFzZXRCYWNr
ZmFjZVZpc2liaWxpdHlFYgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMXNldE5lZWRz
RGlzcGxheUluUmVjdEVSS05TXzlGbG9hdFJlY3RFTlNfMTNHcmFwaGljc0xheWVyMTdTaG91bGRD
bGlwVG9MYXllckUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMjFzZXRTaG93UmVwYWlu
dENvdW50ZXJFYgotX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyM3NldENvbnRlbnRzQ2xp
cHBpbmdSZWN0RVJLTlNfOUZsb2F0UmVjdEUKK19fWk43V2ViQ29yZTE1R3JhcGhpY3NMYXllckNB
MjNzZXRDb250ZW50c0NsaXBwaW5nUmVjdEVSS05TXzE2RmxvYXRSb3VuZGVkUmVjdEUKIF9fWk43
V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMjNzZXRDb250ZW50c05lZWRzRGlzcGxheUV2CiBfX1pO
N1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTIzc2V0Q29udGVudHNUb1NvbGlkQ29sb3JFUktOU181
Q29sb3JFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTIzc2V0RGVidWdCYWNrZ3JvdW5k
Q29sb3JFUktOU181Q29sb3JFCkBAIC02ODcsNiArNjg3LDcgQEAgX19aTjdXZWJDb3JlMTZEZXZp
Y2VNb3Rpb25EYXRhMTJSb3RhdGlvblJhdGU2Y3JlYXRlRWJkYmRiZAogX19aTjdXZWJDb3JlMTZE
ZXZpY2VNb3Rpb25EYXRhNmNyZWF0ZUVOM1dURjEwUGFzc1JlZlB0cklOUzBfMTJBY2NlbGVyYXRp
b25FRUVTNF9OUzJfSU5TMF8xMlJvdGF0aW9uUmF0ZUVFRWJkCiBfX1pON1dlYkNvcmUxNkZpbHRl
ck9wZXJhdGlvbnNDMUV2CiBfX1pON1dlYkNvcmUxNkZpbHRlck9wZXJhdGlvbnNhU0VSS1MwXwor
X19aTjdXZWJDb3JlMTZGbG9hdFJvdW5kZWRSZWN0QzFFUktOU185RmxvYXRSZWN0RVJLTlMwXzVS
YWRpaUUKIF9fWk43V2ViQ29yZTE2Rm9udFBsYXRmb3JtRGF0YUQxRXYKIF9fWk43V2ViQ29yZTE2
RnJhbWVMb2FkUmVxdWVzdEMxRVBOU181RnJhbWVFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05T
XzE0U3Vic3RpdHV0ZURhdGFFCiBfX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQxM3NldEF1
dG9maWxsZWRFYgpAQCAtMTE3OSw2ICsxMTgwLDcgQEAgX19aTjdXZWJDb3JlNFBhZ2U4c2V0TXV0
ZWRFYgogX19aTjdXZWJDb3JlNFBhZ2U5aW5pdEdyb3VwRXYKIF9fWk43V2ViQ29yZTRQYWdlQzFF
Uk5TMF8xMVBhZ2VDbGllbnRzRQogX19aTjdXZWJDb3JlNFBhZ2VEMUV2CitfX1pON1dlYkNvcmU0
UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU18xNkZsb2F0Um91bmRlZFJlY3RFTlMwXzE5Um91bmRl
ZFJlY3RTdHJhdGVneUUKIF9fWk43V2ViQ29yZTRQYXRoMTRhZGRSb3VuZGVkUmVjdEVSS05TXzlG
bG9hdFJlY3RFUktOU185RmxvYXRTaXplRU5TMF8xOVJvdW5kZWRSZWN0U3RyYXRlZ3lFCiBfX1pO
N1dlYkNvcmU0UGF0aEMxRXYKIF9fWk43V2ViQ29yZTRQYXRoRDFFdgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmNwcAppbmRleCAz
MTI1ZGZkNzJiYTkyNTJhOGY1YTE4NjAyNzAyNThkNjUxNzQyYTJjLi5iMDI4YTEyMzBmNmRmMDk0
MjY4ZGM2N2I0NzIyY2EyNWMzYTcxNTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmNwcApAQCAtNjIsNiArNjIsMTQgQEAg
Ym9vbCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaTo6aXNaZXJvKCkgY29uc3QKICAgICByZXR1cm4g
bV90b3BMZWZ0LmlzWmVybygpICYmIG1fdG9wUmlnaHQuaXNaZXJvKCkgJiYgbV9ib3R0b21MZWZ0
LmlzWmVybygpICYmIG1fYm90dG9tUmlnaHQuaXNaZXJvKCk7CiB9CiAKK2Jvb2wgRmxvYXRSb3Vu
ZGVkUmVjdDo6UmFkaWk6OmlzVW5pZm9ybUNvcm5lclJhZGl1cygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fdG9wTGVmdC53aWR0aCgpID09IG1fdG9wTGVmdC5oZWlnaHQoKQorICAgICAgICAmJiBt
X3RvcExlZnQgPT0gbV90b3BSaWdodAorICAgICAgICAmJiBtX3RvcExlZnQgPT0gbV9ib3R0b21M
ZWZ0CisgICAgICAgICYmIG1fdG9wTGVmdCA9PSBtX2JvdHRvbVJpZ2h0OworfQorCiB2b2lkIEZs
b2F0Um91bmRlZFJlY3Q6OlJhZGlpOjpzY2FsZShmbG9hdCBmYWN0b3IpCiB7CiAgICAgc2NhbGUo
ZmFjdG9yLCBmYWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRSb3VuZGVkUmVjdC5oCmluZGV4IDgwMjAyNmM4MmE1MzhjYjA5ZWIyNWU2NWU4ZThj
ZjI1ZWQ1NGM1OTIuLmU0M2VhMWEyMTE0M2JjZTM5NDc0NzAyNjcxMzYxYmEzZWRiMjU1NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRS
ZWN0LmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBGbG9hdFNpemUm
IGJvdHRvbVJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21SaWdodDsgfQogCiAgICAgICAg
IGJvb2wgaXNaZXJvKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNVbmlmb3JtQ29ybmVyUmFkaXVz
KCkgY29uc3Q7IC8vIEluY2x1ZGluZyBubyByYWRpdXMuCiAKICAgICAgICAgdm9pZCBzY2FsZShm
bG9hdCBmYWN0b3IpOwogICAgICAgICB2b2lkIHNjYWxlKGZsb2F0IGhvcml6b250YWxGYWN0b3Is
IGZsb2F0IHZlcnRpY2FsRmFjdG9yKTsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAg
ICBGbG9hdFNpemUgbV9ib3R0b21SaWdodDsKICAgICB9OwogCi0gICAgZXhwbGljaXQgRmxvYXRS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSYWRpaSYgPSBSYWRpaSgpKTsKKyAg
ICBleHBsaWNpdCBGbG9hdFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgPSBGbG9hdFJlY3Qo
KSwgY29uc3QgUmFkaWkmID0gUmFkaWkoKSk7CiAgICAgZXhwbGljaXQgRmxvYXRSb3VuZGVkUmVj
dChjb25zdCBSb3VuZGVkUmVjdCYpOwogICAgIEZsb2F0Um91bmRlZFJlY3QoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CiAgICAgRmxvYXRSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExlZnQsIGNvbnN0IEZsb2F0U2l6
ZSYgdG9wUmlnaHQsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdCwgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21SaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDNkN2NkODUyNzFiMjk4NjQzY2Q2NTVmNjkxODEyYmJl
NTgyZGI3MWQuLjMwN2E3Y2ZkODU1ZjA2ZjNiZTE4NjMyMzBmNzM0YTU0YzA1YWVmOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
CkBAIC05MywxMCArOTMsMTAgQEAgR3JhcGhpY3NMYXllcjo6R3JhcGhpY3NMYXllcihHcmFwaGlj
c0xheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgLCBtX2lzTWFza0xheWVyKGZhbHNlKQogICAgICwg
bV9wYWludGluZ1BoYXNlKEdyYXBoaWNzTGF5ZXJQYWludEFsbFdpdGhPdmVyZmxvd0NsaXApCiAg
ICAgLCBtX2NvbnRlbnRzT3JpZW50YXRpb24oQ29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd24p
Ci0gICAgLCBtX3BhcmVudCgwKQotICAgICwgbV9tYXNrTGF5ZXIoMCkKLSAgICAsIG1fcmVwbGlj
YUxheWVyKDApCi0gICAgLCBtX3JlcGxpY2F0ZWRMYXllcigwKQorICAgICwgbV9wYXJlbnQobnVs
bHB0cikKKyAgICAsIG1fbWFza0xheWVyKG51bGxwdHIpCisgICAgLCBtX3JlcGxpY2FMYXllcihu
dWxscHRyKQorICAgICwgbV9yZXBsaWNhdGVkTGF5ZXIobnVsbHB0cikKICAgICAsIG1fcmVwYWlu
dENvdW50KDApCiAgICAgLCBtX2N1c3RvbUFwcGVhcmFuY2UoTm9DdXN0b21BcHBlYXJhbmNlKQog
ICAgICwgbV9jdXN0b21CZWhhdmlvcihOb0N1c3RvbUJlaGF2aW9yKQpAQCAtODA4LDcgKzgwOCw3
IEBAIHZvaWQgc2hvd0dyYXBoaWNzTGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqIGxheWVyKQogICAgIGlmICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmlu
ZyBvdXRwdXQgPSBsYXllci0+bGF5ZXJUcmVlQXNUZXh0KFdlYkNvcmU6OkxheWVyVHJlZUFzVGV4
dERlYnVnIHwgV2ViQ29yZTo6TGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0cyB8IFdl
YkNvcmU6OkxheWVyVHJlZUFzVGV4dEluY2x1ZGVUaWxlQ2FjaGVzKTsKKyAgICBTdHJpbmcgb3V0
cHV0ID0gbGF5ZXItPmxheWVyVHJlZUFzVGV4dChXZWJDb3JlOjpMYXllclRyZWVBc1RleHREZWJ1
ZyB8IFdlYkNvcmU6OkxheWVyVHJlZUFzVGV4dEluY2x1ZGVWaXNpYmxlUmVjdHMgfCBXZWJDb3Jl
OjpMYXllclRyZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hlcyB8IFdlYkNvcmU6OkxheWVyVHJlZUFz
VGV4dEluY2x1ZGVDb250ZW50TGF5ZXJzKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBv
dXRwdXQudXRmOCgpLmRhdGEoKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCAzMmFkMzdmMTc1ODMyMzIwZGJl
ZTJkZmRjZTM1YTczNzY3YWQzZTUyLi5jZmExZjEwNTJmNDA4MTI5MzQyNWM5YWFhMDgzYmJhZTZm
NDE0M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKLSNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5j
bHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKQEAgLTM4Miw4ICszODIsOCBAQCBwdWJsaWM6CiAgICAgRmxvYXRS
ZWN0IGNvbnRlbnRzUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNSZWN0OyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHIpIHsgbV9jb250
ZW50c1JlY3QgPSByOyB9CiAKLSAgICBGbG9hdFJlY3QgY29udGVudHNDbGlwcGluZ1JlY3QoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0OyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikgeyBtX2NvbnRlbnRz
Q2xpcHBpbmdSZWN0ID0gcjsgfQorICAgIEZsb2F0Um91bmRlZFJlY3QgY29udGVudHNDbGlwcGlu
Z1JlY3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0OyB9CisgICAgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IHJvdW5kZWRSZWN0KSB7IG1fY29udGVudHNDbGlwcGluZ1JlY3QgPSByb3VuZGVkUmVjdDsgfQog
CiAgICAgLy8gVHJhbnNpdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgYSBzcGVjaWFsIGFuaW1hdGlv
biBuYW1lIHRoYXQgY2Fubm90IGNsYXNoIHdpdGggYSBrZXlmcmFtZSBpZGVudGlmaWVyLgogICAg
IHN0YXRpYyBTdHJpbmcgYW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0
eUlEKTsKQEAgLTYwMiw3ICs2MDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRmxvYXRQb2ludCBtX3Jl
cGxpY2F0ZWRMYXllclBvc2l0aW9uOyAvLyBGb3IgYSByZXBsaWNhIGxheWVyLCB0aGUgcG9zaXRp
b24gb2YgdGhlIHJlcGxpY2EuCiAKICAgICBGbG9hdFJlY3QgbV9jb250ZW50c1JlY3Q7Ci0gICAg
RmxvYXRSZWN0IG1fY29udGVudHNDbGlwcGluZ1JlY3Q7CisgICAgRmxvYXRSb3VuZGVkUmVjdCBt
X2NvbnRlbnRzQ2xpcHBpbmdSZWN0OwogICAgIEZsb2F0UG9pbnQgbV9jb250ZW50c1RpbGVQaGFz
ZTsKICAgICBGbG9hdFNpemUgbV9jb250ZW50c1RpbGVTaXplOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCAwNDk4YjM0ZGMwOTcwZWMzMjczZDYxZTFmYWI5ZjFjNDFiYjdlMThkLi4zNWQ4NzY2NDljMzAx
NmM2NmQ5Y2Q5NzBhN2U0MWRkZWQ2NDNkOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTc3OCw3ICs3
NzgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNSZWN0c0No
YW5nZWQpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNDbGlwcGluZ1Jl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRl
bnRzQ2xpcHBpbmdSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QpCiB7CiAgICAgaWYg
KHJlY3QgPT0gbV9jb250ZW50c0NsaXBwaW5nUmVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtODgz
LDcgKzg4Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29saWRDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgfSBlbHNlIHsKICAgICAgICAgY29udGVudHNMYXll
ckNoYW5nZWQgPSBtX2NvbnRlbnRzTGF5ZXI7CiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBOb0NvbnRlbnRzTGF5ZXI7Ci0gICAgICAgIG1fY29udGVudHNMYXllciA9IDA7CisgICAg
ICAgIG1fY29udGVudHNMYXllciA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnRz
TGF5ZXJDaGFuZ2VkKQpAQCAtOTIyLDggKzkyMiw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgICAgICBpZiAoIW1fY29udGVudHNM
YXllcikKICAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPSAwOwotICAgICAgICBtX3BlbmRp
bmdDb250ZW50c0ltYWdlID0gMDsKKyAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2Ug
PSBudWxscHRyOworICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbnVsbHB0cjsKICAg
ICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IE5vQ29udGVudHNMYXllcjsKICAgICAgICAg
aWYgKG1fY29udGVudHNMYXllcikKICAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7
CkBAIC05NDUsNyArOTQ1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Q
bGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIsIEMKICAgICAvLyB0aGUg
Y3JlYXRvciBvZiB0aGUgcmF3IGxheWVyIGlzIHVzaW5nIGl0IGZvciBzb21lIG90aGVyIHB1cnBv
c2UuCiAgICAgLy8gRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IHN1Y2ggYSBjYXNlLgogICAgIFBs
YXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllcik7Ci0gICAgbV9jb250ZW50c0xheWVyID0gcGxhdGZvcm1M
YXllciA/IChwbGF0Zm9ybUNBTGF5ZXIgPyBwbGF0Zm9ybUNBTGF5ZXIgOiBjcmVhdGVQbGF0Zm9y
bUNBTGF5ZXIocGxhdGZvcm1MYXllciwgdGhpcykpIDogMDsKKyAgICBtX2NvbnRlbnRzTGF5ZXIg
PSBwbGF0Zm9ybUxheWVyID8gKHBsYXRmb3JtQ0FMYXllciA/IHBsYXRmb3JtQ0FMYXllciA6IGNy
ZWF0ZVBsYXRmb3JtQ0FMYXllcihwbGF0Zm9ybUxheWVyLCB0aGlzKSkgOiBudWxscHRyOwogICAg
IG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwbGF0Zm9ybUxheWVyID8gcHVycG9zZSA6IE5vQ29u
dGVudHNMYXllcjsKIAogICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CkBAIC0xMzU1LDcgKzEz
NTUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3Vi
bGF5ZXJzKENvbW1pdFN0YXRlJiBjb21taXRTdGF0ZQogCiAgICAgaWYgKG1fdW5jb21taXR0ZWRD
aGFuZ2VzICYgVmlzaWJsZVJlY3RDaGFuZ2VkKQogICAgICAgICB1cGRhdGVWaXNpYmxlUmVjdChv
bGRWaXNpYmxlUmVjdCk7Ci0gICAgCisKICAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBU
aWxpbmdBcmVhQ2hhbmdlZCkgLy8gTmVlZHMgdG8gaGFwcGVuIGFmdGVyIFZpc2libGVSZWN0Q2hh
bmdlZCwgQ29udGVudHNTY2FsZUNoYW5nZWQKICAgICAgICAgdXBkYXRlVGlsZXMoKTsKIApAQCAt
MTk5NSw2ICsxOTk1LDM2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0Nv
bG9yTGF5ZXIoKQogICAgIH0KIH0KIAorLy8gVGhlIGNsaXBwaW5nIHN0cmF0ZWd5IGRlcGVuZHMg
b24gd2hldGhlciB0aGUgcm91bmRlZCByZWN0IGhhcyBlcXVhbCBjb3JuZXIgcmFkaWkuCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ2xpcHBpbmdTdHJhdGVneShQbGF0Zm9ybUNBTGF5ZXIm
IGNsaXBwaW5nTGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzaGFwZU1hc2tMYXllciwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpCit7CisgICAgaWYgKHJvdW5kZWRS
ZWN0LnJhZGlpKCkuaXNVbmlmb3JtQ29ybmVyUmFkaXVzKCkpIHsKKyAgICAgICAgY2xpcHBpbmdM
YXllci5zZXRNYXNrKG51bGxwdHIpOworICAgICAgICBpZiAoc2hhcGVNYXNrTGF5ZXIpIHsKKyAg
ICAgICAgICAgIHNoYXBlTWFza0xheWVyLT5zZXRPd25lcihudWxscHRyKTsKKyAgICAgICAgICAg
IHNoYXBlTWFza0xheWVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIGNsaXBwaW5n
TGF5ZXIuc2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICAgICAgY2xpcHBpbmdMYXllci5zZXRD
b3JuZXJSYWRpdXMocm91bmRlZFJlY3QucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNoYXBlTWFza0xheWVyKSB7CisgICAgICAg
IHNoYXBlTWFza0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlU2hhcGVMYXllciwgdGhpcyk7CisgICAgICAgIHNoYXBlTWFza0xheWVyLT5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CisgICAgfQorICAgIAorICAgIHNoYXBlTWFza0xh
eWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkpOworICAgIHNoYXBlTWFza0xheWVyLT5zZXRC
b3VuZHMoY2xpcHBpbmdMYXllci5ib3VuZHMoKSk7CisKKyAgICBjbGlwcGluZ0xheWVyLnNldENv
cm5lclJhZGl1cygwKTsKKyAgICBjbGlwcGluZ0xheWVyLnNldE1hc2soc2hhcGVNYXNrTGF5ZXIu
Z2V0KCkpOworICAgIAorICAgIEZsb2F0Um91bmRlZFJlY3Qgb2Zmc2V0Um91bmRlZFJlY3QoY2xp
cHBpbmdMYXllci5ib3VuZHMoKSwgcm91bmRlZFJlY3QucmFkaWkoKSk7CisgICAgc2hhcGVNYXNr
TGF5ZXItPnNldFNoYXBlUm91bmRlZFJlY3Qob2Zmc2V0Um91bmRlZFJlY3QpOworfQorCiB2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNSZWN0cygpCiB7CiAgICAgaWYgKCFtX2Nv
bnRlbnRzTGF5ZXIpCkBAIC0yMDAzLDQ0ICsyMDMzLDQ3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNB
Ojp1cGRhdGVDb250ZW50c1JlY3RzKCkKICAgICBGbG9hdFBvaW50IGNvbnRlbnRPcmlnaW47CiAg
ICAgRmxvYXRSZWN0IGNvbnRlbnRCb3VuZHMoMCwgMCwgbV9jb250ZW50c1JlY3Qud2lkdGgoKSwg
bV9jb250ZW50c1JlY3QuaGVpZ2h0KCkpOwogCi0gICAgRmxvYXRQb2ludCBjbGlwcGluZ09yaWdp
bjsKLSAgICBGbG9hdFJlY3QgY2xpcHBpbmdCb3VuZHM7CisgICAgRmxvYXRQb2ludCBjbGlwcGlu
Z09yaWdpbihtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0LnJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICBG
bG9hdFJlY3QgY2xpcHBpbmdCb3VuZHMoRmxvYXRQb2ludCgpLCBtX2NvbnRlbnRzQ2xpcHBpbmdS
ZWN0LnJlY3QoKS5zaXplKCkpOwogICAgIAogICAgIGJvb2wgZ2FpbmVkT3JMb3N0Q2xpcHBpbmdM
YXllciA9IGZhbHNlOwotICAgIGlmICghbV9jb250ZW50c0NsaXBwaW5nUmVjdC5jb250YWlucyht
X2NvbnRlbnRzUmVjdCkpIHsKKyAgICBpZiAobV9jb250ZW50c0NsaXBwaW5nUmVjdC5pc1JvdW5k
ZWQoKSB8fCAhbV9jb250ZW50c0NsaXBwaW5nUmVjdC5yZWN0KCkuY29udGFpbnMobV9jb250ZW50
c1JlY3QpKSB7CiAgICAgICAgIGlmICghbV9jb250ZW50c0NsaXBwaW5nTGF5ZXIpIHsKICAgICAg
ICAgICAgIG1fY29udGVudHNDbGlwcGluZ0xheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIHRoaXMpOwotICAgICAgICAgICAgbV9jb250
ZW50c0NsaXBwaW5nTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAgICAgICAgICAgICBt
X2NvbnRlbnRzQ2xpcHBpbmdMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgpKTsKICNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllci0+c2V0TmFt
ZSgiQ29udGVudHMgQ2xpcHBpbmciKTsKICNlbmRpZgotICAgICAgICAgICAgbV9jb250ZW50c0xh
eWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwotICAgICAgICAgICAgbV9jb250ZW50c0NsaXBw
aW5nTGF5ZXItPmFwcGVuZFN1YmxheWVyKCptX2NvbnRlbnRzTGF5ZXIpOwogICAgICAgICAgICAg
Z2FpbmVkT3JMb3N0Q2xpcHBpbmdMYXllciA9IHRydWU7CiAgICAgICAgIH0KLSAgICAKLSAgICAg
ICAgY2xpcHBpbmdPcmlnaW4gPSBtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0LmxvY2F0aW9uKCk7Ci0g
ICAgICAgIGNsaXBwaW5nQm91bmRzLnNldFNpemUobV9jb250ZW50c0NsaXBwaW5nUmVjdC5zaXpl
KCkpOwotCi0gICAgICAgIGNvbnRlbnRPcmlnaW4gPSBGbG9hdFBvaW50KG1fY29udGVudHNSZWN0
LmxvY2F0aW9uKCkgLSBtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAg
ICAgIG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5zZXRQb3NpdGlvbihjbGlwcGluZ09yaWdpbik7
CiAgICAgICAgIG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5zZXRCb3VuZHMoY2xpcHBpbmdCb3Vu
ZHMpOwogCi0gICAgICAgIG1fY29udGVudHNMYXllci0+c2V0UG9zaXRpb24oY29udGVudE9yaWdp
bik7Ci0gICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwor
ICAgICAgICB1cGRhdGVDbGlwcGluZ1N0cmF0ZWd5KCptX2NvbnRlbnRzQ2xpcHBpbmdMYXllciwg
bV9zaGFwZU1hc2tMYXllciwgbV9jb250ZW50c0NsaXBwaW5nUmVjdCk7CisKKyAgICAgICAgaWYg
KGdhaW5lZE9yTG9zdENsaXBwaW5nTGF5ZXIpIHsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXll
ci0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICAgICAgICAgIG1fY29udGVudHNDbGlwcGlu
Z0xheWVyLT5hcHBlbmRTdWJsYXllcigqbV9jb250ZW50c0xheWVyKTsKKyAgICAgICAgfQogICAg
IAorICAgICAgICBjb250ZW50T3JpZ2luID0gRmxvYXRQb2ludChtX2NvbnRlbnRzUmVjdC5sb2Nh
dGlvbigpIC0gbV9jb250ZW50c0NsaXBwaW5nUmVjdC5yZWN0KCkubG9jYXRpb24oKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKG1fY29udGVudHNDbGlwcGluZ0xheWVyKSB7CiAgICAgICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CiAKICAgICAgICAg
ICAgIG1fY29udGVudHNDbGlwcGluZ0xheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwotICAg
ICAgICAgICAgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXItPnNldE93bmVyKDApOworICAgICAgICAg
ICAgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXItPnNldE93bmVyKG51bGxwdHIpOworICAgICAgICAg
ICAgbV9jb250ZW50c0NsaXBwaW5nTGF5ZXItPnNldE1hc2sobnVsbHB0cik7CiAgICAgICAgICAg
ICBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllciA9IG51bGxwdHI7CiAgICAgICAgICAgICBnYWluZWRP
ckxvc3RDbGlwcGluZ0xheWVyID0gdHJ1ZTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChtX3No
YXBlTWFza0xheWVyKSB7CisgICAgICAgICAgICBtX3NoYXBlTWFza0xheWVyLT5zZXRPd25lcihu
dWxscHRyKTsKKyAgICAgICAgICAgIG1fc2hhcGVNYXNrTGF5ZXIgPSBudWxscHRyOworICAgICAg
ICB9CisKICAgICAgICAgY29udGVudE9yaWdpbiA9IG1fY29udGVudHNSZWN0LmxvY2F0aW9uKCk7
CiAgICAgfQogICAgIApAQCAtMjA1MSwxOCArMjA4NCwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6dXBkYXRlQ29udGVudHNSZWN0cygpCiAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCb3VuZHMo
Y29udGVudEJvdW5kcyk7CiAKICAgICBpZiAobV9jb250ZW50c0xheWVyQ2xvbmVzKSB7Ci0gICAg
ICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMt
PmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29u
dGVudHNMYXllckNsb25lcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGF1
dG8gZW5kID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsKKyAgICAgICAgZm9yIChhdXRv
IGl0ID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
ICAgICAgICAgICAgIGl0LT52YWx1ZS0+c2V0UG9zaXRpb24oY29udGVudE9yaWdpbik7CiAgICAg
ICAgICAgICBpdC0+dmFsdWUtPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChtX2NvbnRlbnRzQ2xpcHBpbmdMYXllckNsb25lcykgewotICAgICAg
ICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jb250ZW50c0NsaXBwaW5nTGF5ZXJD
bG9uZXMtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fY29udGVudHNDbGlwcGluZ0xheWVyQ2xvbmVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+c2V0UG9zaXRpb24oY2xpcHBpbmdPcmlnaW4pOwot
ICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRCb3VuZHMoY2xpcHBpbmdCb3VuZHMpOworICAgICAg
ICBpZiAoIW1fc2hhcGVNYXNrTGF5ZXJDbG9uZXMgJiYgbV9zaGFwZU1hc2tMYXllcikKKyAgICAg
ICAgICAgIG1fc2hhcGVNYXNrTGF5ZXJDbG9uZXMgPSBhZG9wdFB0cihuZXcgTGF5ZXJNYXApOwor
CisgICAgICAgIGF1dG8gZW5kID0gbV9jb250ZW50c0NsaXBwaW5nTGF5ZXJDbG9uZXMtPmVuZCgp
OworICAgICAgICBmb3IgKGF1dG8gaXQgPSBtX2NvbnRlbnRzQ2xpcHBpbmdMYXllckNsb25lcy0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBDbG9uZUlEIGNsb25lSUQg
PSBpdC0+a2V5OworICAgICAgICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gc2hhcGVNYXNr
TGF5ZXJDbG9uZTsKKyAgICAgICAgICAgIGlmIChtX3NoYXBlTWFza0xheWVyQ2xvbmVzKQorICAg
ICAgICAgICAgICAgIHNoYXBlTWFza0xheWVyQ2xvbmUgPSBtX3NoYXBlTWFza0xheWVyQ2xvbmVz
LT5nZXQoY2xvbmVJRCk7CisKKyAgICAgICAgICAgIGJvb2wgaGFkU2hhcGVNYXNrID0gc2hhcGVN
YXNrTGF5ZXJDbG9uZTsKKyAgICAgICAgICAgIHVwZGF0ZUNsaXBwaW5nU3RyYXRlZ3koKml0LT52
YWx1ZSwgc2hhcGVNYXNrTGF5ZXJDbG9uZSwgbV9jb250ZW50c0NsaXBwaW5nUmVjdCk7CisKKyAg
ICAgICAgICAgIGlmICghc2hhcGVNYXNrTGF5ZXJDbG9uZSAmJiBtX3NoYXBlTWFza0xheWVyQ2xv
bmVzKQorICAgICAgICAgICAgICAgIG1fc2hhcGVNYXNrTGF5ZXJDbG9uZXMtPnJlbW92ZShjbG9u
ZUlEKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlTWFza0xheWVyQ2xvbmUgJiYgIWhhZFNo
YXBlTWFzaykKKyAgICAgICAgICAgICAgICBtX3NoYXBlTWFza0xheWVyQ2xvbmVzLT5hZGQoY2xv
bmVJRCwgc2hhcGVNYXNrTGF5ZXJDbG9uZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yOTMz
LDYgKzI5NzksMjAgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmdldERlYnVnQm9yZGVySW5mbyhD
b2xvciYgY29sb3IsIGZsb2F0JiB3aWR0aCkgY29uc3QKICAgICBHcmFwaGljc0xheWVyOjpnZXRE
ZWJ1Z0JvcmRlckluZm8oY29sb3IsIHdpZHRoKTsKIH0KIAorCitzdGF0aWMgdm9pZCBkdW1wSW5u
ZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBTdHJpbmcgbGFiZWwsIFBsYXRmb3JtQ0FM
YXllciogbGF5ZXIsIGludCBpbmRlbnQsIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9y
KQoreworICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHdyaXRlSW5kZW50
KHRleHRTdHJlYW0sIGluZGVudCArIDEpOworICAgIHRleHRTdHJlYW0gPDwgIigiIDw8IGxhYmVs
IDw8ICIgIjsKKyAgICBpZiAoYmVoYXZpb3IgJiBMYXllclRyZWVBc1RleHREZWJ1ZykKKyAgICAg
ICAgdGV4dFN0cmVhbSA8PCAiaWQ9IiA8PCBsYXllci0+bGF5ZXJJRCgpIDw8ICIgIjsKKyAgICB0
ZXh0U3RyZWFtIDw8IGxheWVyLT5wb3NpdGlvbigpLngoKSA8PCAiLCAiIDw8IGxheWVyLT5wb3Np
dGlvbigpLnkoKQorICAgICAgICA8PCAiICIgPDwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgPDwg
IiB4ICIgPDwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIDw8ICIpXG4iOworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6ZHVtcEFkZGl0aW9uYWxQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRleHRT
dHJlYW0sIGludCBpbmRlbnQsIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25z
dAogewogICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFzVGV4dEluY2x1ZGVWaXNpYmxlUmVj
dHMpIHsKQEAgLTI5NjMsMTcgKzMwMjMsMTEgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBpbnQgaW5kZW4KICAg
ICB9CiAgICAgCiAgICAgaWYgKGJlaGF2aW9yICYgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZUNvbnRl
bnRMYXllcnMpIHsKLSAgICAgICAgaWYgKG1fY29udGVudHNDbGlwcGluZ0xheWVyKSB7Ci0gICAg
ICAgICAgICB3cml0ZUluZGVudCh0ZXh0U3RyZWFtLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgICAg
IHRleHRTdHJlYW0gPDwgIihjb250ZW50cyBjbGlwcGluZyBsYXllciAiIDw8IG1fY29udGVudHND
bGlwcGluZ0xheWVyLT5wb3NpdGlvbigpLngoKSA8PCAiLCAiIDw8IG1fY29udGVudHNDbGlwcGlu
Z0xheWVyLT5wb3NpdGlvbigpLnkoKQotICAgICAgICAgICAgICAgIDw8ICIgIiA8PCBtX2NvbnRl
bnRzQ2xpcHBpbmdMYXllci0+Ym91bmRzKCkud2lkdGgoKSA8PCAiIHggIiA8PCBtX2NvbnRlbnRz
Q2xpcHBpbmdMYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgPDwgIilcbiI7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAgICAgICAgICB3cml0ZUluZGVudCh0
ZXh0U3RyZWFtLCBpbmRlbnQgKyAxKTsKLSAgICAgICAgICAgIHRleHRTdHJlYW0gPDwgIihjb250
ZW50cyBsYXllciAiIDw8IG1fY29udGVudHNMYXllci0+cG9zaXRpb24oKS54KCkgPDwgIiwgIiA8
PCBtX2NvbnRlbnRzTGF5ZXItPnBvc2l0aW9uKCkueSgpCi0gICAgICAgICAgICAgICAgPDwgIiAi
IDw8IG1fY29udGVudHNMYXllci0+Ym91bmRzKCkud2lkdGgoKSA8PCAiIHggIiA8PCBtX2NvbnRl
bnRzTGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIDw8ICIpXG4iOwotICAgICAgICB9CisgICAgICAg
IGR1bXBJbm5lckxheWVyKHRleHRTdHJlYW0sICJzdHJ1Y3R1cmFsIGxheWVyIiwgbV9zdHJ1Y3R1
cmFsTGF5ZXIuZ2V0KCksIGluZGVudCwgYmVoYXZpb3IpOworICAgICAgICBkdW1wSW5uZXJMYXll
cih0ZXh0U3RyZWFtLCAiY29udGVudHMgY2xpcHBpbmcgbGF5ZXIiLCBtX2NvbnRlbnRzQ2xpcHBp
bmdMYXllci5nZXQoKSwgaW5kZW50LCBiZWhhdmlvcik7CisgICAgICAgIGR1bXBJbm5lckxheWVy
KHRleHRTdHJlYW0sICJzaGFwZSBtYXNrIGxheWVyIiwgbV9zaGFwZU1hc2tMYXllci5nZXQoKSwg
aW5kZW50LCBiZWhhdmlvcik7CisgICAgICAgIGR1bXBJbm5lckxheWVyKHRleHRTdHJlYW0sICJj
b250ZW50cyBsYXllciIsIG1fY29udGVudHNMYXllci5nZXQoKSwgaW5kZW50LCBiZWhhdmlvcik7
CisgICAgICAgIGR1bXBJbm5lckxheWVyKHRleHRTdHJlYW0sICJiYWNrZHJvcCBsYXllciIsIG1f
YmFja2Ryb3BMYXllci5nZXQoKSwgaW5kZW50LCBiZWhhdmlvcik7CiAgICAgfQogfQogCkBAIC0z
MTM5LDEwICszMTkzLDEwIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xh
eWVyQ0E6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlEIGNsb25lSUQsIFBsCiB9ICAgCiAKIHZvaWQg
R3JhcGhpY3NMYXllckNBOjplbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIFJlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
JiBzdHJ1Y3R1cmFsTGF5ZXIsCi0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRz
TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0NsaXBwaW5nTGF5ZXIsIENs
b25lTGV2ZWwgY2xvbmVMZXZlbCkKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVu
dHNMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzQ2xpcHBpbmdMYXllciwg
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHNoYXBlTWFza0xheWVyLCBDbG9uZUxldmVsIGNsb25l
TGV2ZWwpCiB7Ci0gICAgc3RydWN0dXJhbExheWVyID0gMDsKLSAgICBjb250ZW50c0xheWVyID0g
MDsKKyAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBudWxscHRyOworICAgIGNvbnRlbnRzTGF5ZXIgPSBu
dWxscHRyOwogCiAgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQogICAgICAgICBtX2xheWVyQ2xvbmVz
ID0gYWRvcHRQdHIobmV3IExheWVyTWFwKTsKQEAgLTMxNTYsMTAgKzMyMTAsMTQgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4KICAgICBpZiAoIW1fY29udGVudHNDbGlwcGluZ0xheWVyQ2xvbmVz
ICYmIG1fY29udGVudHNDbGlwcGluZ0xheWVyKQogICAgICAgICBtX2NvbnRlbnRzQ2xpcHBpbmdM
YXllckNsb25lcyA9IGFkb3B0UHRyKG5ldyBMYXllck1hcCk7CiAKKyAgICBpZiAoIW1fc2hhcGVN
YXNrTGF5ZXJDbG9uZXMgJiYgbV9zaGFwZU1hc2tMYXllcikKKyAgICAgICAgbV9zaGFwZU1hc2tM
YXllckNsb25lcyA9IGFkb3B0UHRyKG5ldyBMYXllck1hcCk7CisKICAgICBwcmltYXJ5TGF5ZXIg
PSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9sYXllci5nZXQoKSwgbV9sYXllckNsb25lcy5n
ZXQoKSwgY2xvbmVMZXZlbCk7CiAgICAgc3RydWN0dXJhbExheWVyID0gZmluZE9yTWFrZUNsb25l
KGNsb25lSUQsIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX3N0cnVjdHVyYWxMYXllckNsb25l
cy5nZXQoKSwgY2xvbmVMZXZlbCk7CiAgICAgY29udGVudHNMYXllciA9IGZpbmRPck1ha2VDbG9u
ZShjbG9uZUlELCBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCksIG1fY29udGVudHNMYXllckNsb25lcy5n
ZXQoKSwgY2xvbmVMZXZlbCk7CiAgICAgY29udGVudHNDbGlwcGluZ0xheWVyID0gZmluZE9yTWFr
ZUNsb25lKGNsb25lSUQsIG1fY29udGVudHNDbGlwcGluZ0xheWVyLmdldCgpLCBtX2NvbnRlbnRz
Q2xpcHBpbmdMYXllckNsb25lcy5nZXQoKSwgY2xvbmVMZXZlbCk7CisgICAgc2hhcGVNYXNrTGF5
ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zaGFwZU1hc2tMYXllci5nZXQoKSwgbV9z
aGFwZU1hc2tMYXllckNsb25lcy5nZXQoKSwgY2xvbmVMZXZlbCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpyZW1vdmVDbG9uZUxheWVycygpCkBAIC0zMTk5LDcgKzMyNTcsOCBAQCBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5ZXJz
KEdyYXBoaWNzTGF5ZXIqIHJlcAogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHN0cnVjdHVy
YWxMYXllcjsKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjb250ZW50c0xheWVyOwogICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNvbnRlbnRzQ2xpcHBpbmdMYXllcjsKLSAgICBlbnN1
cmVDbG9uZUxheWVycyhyZXBsaWNhU3RhdGUuY2xvbmVJRCgpLCBwcmltYXJ5TGF5ZXIsIHN0cnVj
dHVyYWxMYXllciwgY29udGVudHNMYXllciwgY29udGVudHNDbGlwcGluZ0xheWVyLCBjbG9uZUxl
dmVsKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBzaGFwZU1hc2tMYXllcjsKKyAgICBl
bnN1cmVDbG9uZUxheWVycyhyZXBsaWNhU3RhdGUuY2xvbmVJRCgpLCBwcmltYXJ5TGF5ZXIsIHN0
cnVjdHVyYWxMYXllciwgY29udGVudHNMYXllciwgY29udGVudHNDbGlwcGluZ0xheWVyLCBzaGFw
ZU1hc2tMYXllciwgY2xvbmVMZXZlbCk7CiAKICAgICBpZiAobV9tYXNrTGF5ZXIpIHsKICAgICAg
ICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbWFza0Nsb25lID0gZG93bmNhc3Q8R3JhcGhpY3NM
YXllckNBPigqbV9tYXNrTGF5ZXIpLmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3QsIHJlcGxp
Y2FTdGF0ZSwgSW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCk7CkBAIC0zMjM3LDYgKzMyOTYsOSBAQCBQ
YXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5
ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcAogICAgICAgICBBU1NFUlQoY29udGVudHNMYXllcik7CiAg
ICAgICAgIGNvbnRlbnRzQ2xpcHBpbmdMYXllci0+YXBwZW5kU3VibGF5ZXIoKmNvbnRlbnRzTGF5
ZXIpOwogICAgIH0KKworICAgIGlmIChzaGFwZU1hc2tMYXllcikKKyAgICAgICAgY29udGVudHND
bGlwcGluZ0xheWVyLT5zZXRNYXNrKHNoYXBlTWFza0xheWVyLmdldCgpKTsKICAgICAKICAgICBp
ZiAocmVwbGljYUxheWVyIHx8IHN0cnVjdHVyYWxMYXllciB8fCBjb250ZW50c0xheWVyIHx8IGNv
bnRlbnRzQ2xpcHBpbmdMYXllciB8fCBjaGlsZExheWVycy5zaXplKCkgPiAwKSB7CiAgICAgICAg
IGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggOTNmYjg0OGRlNGRkZWQ0MjU2
OTQxNTgxMjUyMDc1YWQ3MjdlYjk5Mi4uMzQ0NmExYTE2NTQ3Y2IyYjI4N2I3NWMzNTliN2JhMDZk
MzgzNmQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBUcmFu
c2Zvcm1TdGF0ZTsKIApAQCAtMTE2LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKICAg
ICAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0
IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c0NsaXBwaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNDbGlwcGluZ1JlY3QoY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYpIG92ZXJyaWRlOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkgb3ZlcnJpZGU7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKSBvdmVycmlkZTsK
QEAgLTI2Niw2ICsyNjcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciopOwogICAgIFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllci5nZXQoKTsgfQogCisgICAgdm9pZCB1cGRh
dGVDbGlwcGluZ1N0cmF0ZWd5KFBsYXRmb3JtQ0FMYXllciYsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+JiBzaGFwZU1hc2tMYXllciwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOworCiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5
ZXIqKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBnZXREZWJ1
Z0JvcmRlckluZm8oQ29sb3ImLCBmbG9hdCYgd2lkdGgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzQ0
LDEyICszNDcsMTIgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
ZmluZE9yTWFrZUNsb25lKENsb25lSUQsIFBsYXRmb3JtQ0FMYXllciAqLCBMYXllck1hcCosIENs
b25lTGV2ZWwpOwogCiAgICAgdm9pZCBlbnN1cmVDbG9uZUxheWVycyhDbG9uZUlELCBSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiYgcHJpbWFyeUxheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYg
c3RydWN0dXJhbExheWVyLAotICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVu
dHNMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzQ2xpcHBpbmdMYXllciwg
Q2xvbmVMZXZlbCk7CisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xh
eWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNDbGlwcGluZ0xheWVyLCBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiYgc2hhcGVNYXNrTGF5ZXIsIENsb25lTGV2ZWwpOwogCiAgICAg
Ym9vbCBoYXNDbG9uZUxheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJDbG9uZXM7IH0KICAg
ICB2b2lkIHJlbW92ZUNsb25lTGF5ZXJzKCk7CiAgICAgRmxvYXRQb2ludCBwb3NpdGlvbkZvckNs
b25lUm9vdExheWVyKCkgY29uc3Q7Ci0gICAgCisKICAgICAvLyBBbGwgdGhlc2UgInVwZGF0ZSIg
bWV0aG9kcyB3aWxsIGJlIGNhbGxlZCBpbnNpZGUgYSBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMvRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUyBibG9jay4KICAgICB2b2lkIHVwZGF0ZUxheWVy
TmFtZXMoKTsKICAgICB2b2lkIHVwZGF0ZVN1YmxheWVyTGlzdChib29sIG1heExheWVyRGVwdGhS
ZWFjaGVkID0gZmFsc2UpOwpAQCAtNDUwLDYgKzQ1Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gbV9sYXllcjsgLy8gVGhlIG1haW4gbGF5ZXIKICAgICBSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBtX3N0cnVjdHVyYWxMYXllcjsgLy8gQSBsYXllciB1c2VkIGZvciBz
dHJ1Y3R1cmFsIHJlYXNvbnMsIGxpa2UgcHJlc2VydmVzLTNkIG9yIHJlcGxpY2EtZmxhdHRlbmlu
Zy4gSXMgdGhlIHBhcmVudCBvZiBtX2xheWVyLgogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
IG1fY29udGVudHNDbGlwcGluZ0xheWVyOyAvLyBBIGxheWVyIHVzZWQgdG8gY2xpcCBpbm5lciBj
b250ZW50CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9zaGFwZU1hc2tMYXllcjsgLy8g
VXNlZCB0byBjbGlwIHdpdGggbm9uLXRyaXZpYWwgY29ybmVyIHJhZGlpLgogICAgIFJlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IG1fY29udGVudHNMYXllcjsgLy8gQSBsYXllciB1c2VkIGZvciBpbm5l
ciBjb250ZW50LCBsaWtlIGltYWdlIGFuZCB2aWRlbwogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IG1fYmFja2Ryb3BMYXllcjsgLy8gVGhlIGxheWVyIHVzZWQgZm9yIGJhY2tkcm9wIHJlbmRl
cmluZywgaWYgbmVjZXNzYXJ5LgogCkBAIC00NTgsNiArNDYyLDcgQEAgcHJpdmF0ZToKICAgICBP
d25QdHI8TGF5ZXJNYXA+IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzOwogICAgIE93blB0cjxMYXll
ck1hcD4gbV9jb250ZW50c0xheWVyQ2xvbmVzOwogICAgIE93blB0cjxMYXllck1hcD4gbV9jb250
ZW50c0NsaXBwaW5nTGF5ZXJDbG9uZXM7CisgICAgT3duUHRyPExheWVyTWFwPiBtX3NoYXBlTWFz
a0xheWVyQ2xvbmVzOwogCiAjaWZkZWYgVklTSUJMRV9USUxFX1dBU0gKICAgICBSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBtX3Zpc2libGVUaWxlV2FzaExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA4ODhk
ODdjYjVmYWY1ZTdmNzVjMmZkOTU0ZmYxNjYxODZlN2FjNzQxLi43MWU0YTViZmRjYjJiNDM5MDJh
NTQ0MjgwODJjYjc3ZmEyNDhhNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2lm
bmRlZiBQbGF0Zm9ybUNBTGF5ZXJfaAogI2RlZmluZSBQbGF0Zm9ybUNBTGF5ZXJfaAogCisjaW5j
bHVkZSAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlIDxRdWFydHpDb3JlL0NB
QmFzZS5oPgpAQCAtNzgsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIExheWVyVHlwZUFWUGxh
eWVyTGF5ZXIsCiAgICAgICAgIExheWVyVHlwZVdlYkdMTGF5ZXIsCiAgICAgICAgIExheWVyVHlw
ZUJhY2tkcm9wTGF5ZXIsCisgICAgICAgIExheWVyVHlwZVNoYXBlTGF5ZXIsCiAgICAgICAgIExh
eWVyVHlwZUN1c3RvbQogICAgIH07CiAgICAgZW51bSBGaWx0ZXJUeXBlIHsgTGluZWFyLCBOZWFy
ZXN0LCBUcmlsaW5lYXIgfTsKQEAgLTE5OSw4ICsyMDEsMTUgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgZmxvYXQgY29udGVudHNTY2FsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNTY2FsZShmbG9hdCkgPSAwOwogCisgICAgdmlydHVhbCBmbG9hdCBjb3JuZXJSYWRp
dXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENvcm5lclJhZGl1cyhmbG9hdCkg
PSAwOworCiAgICAgdmlydHVhbCB2b2lkIHNldEVkZ2VBbnRpYWxpYXNpbmdNYXNrKHVuc2lnbmVk
KSA9IDA7CiAgICAgCisgICAgLy8gT25seSB1c2VkIGJ5IExheWVyVHlwZVNoYXBlTGF5ZXIuCisg
ICAgdmlydHVhbCBGbG9hdFJvdW5kZWRSZWN0IHNoYXBlUm91bmRlZFJlY3QoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYpID0gMDsKKyAgICAKICAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVh
cmFuY2UgY3VzdG9tQXBwZWFyYW5jZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ3VzdG9tQXBwZWFyYW5jZShHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlKSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9Q
bGF0Zm9ybUNBTGF5ZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMuaAppbmRleCA2NmFlMjcyMTIzODZiY2EyZjc3YzE4MWZj
ZTlhMjAxMTE4YzJlNTYzLi5jZDFkNTZlNDE2YmRiMWY5MzI2Mjg0ZTdlZTU2NTBjZTllYjllYzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxh
dGZvcm1DQUxheWVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5oCkBAIC0xMzQsOCArMTM0LDE0IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0
dWFsIGZsb2F0IGNvcm5lclJhZGl1cygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb3JuZXJSYWRpdXMoZmxvYXQpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCB2b2lkIHNl
dEVkZ2VBbnRpYWxpYXNpbmdNYXNrKHVuc2lnbmVkKSBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwg
RmxvYXRSb3VuZGVkUmVjdCBzaGFwZVJvdW5kZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYp
IG92ZXJyaWRlOworCiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNl
IGN1c3RvbUFwcGVhcmFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2N1c3RvbUFwcGVh
cmFuY2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ3VzdG9tQXBwZWFyYW5jZShHcmFwaGlj
c0xheWVyOjpDdXN0b21BcHBlYXJhbmNlKSBvdmVycmlkZTsKIApAQCAtMTY0LDYgKzE3MCw3IEBA
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ0FMYXllckxpc3Q+IG1fY3Vz
dG9tU3VibGF5ZXJzOwogICAgIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgbV9jdXN0
b21BcHBlYXJhbmNlOwogICAgIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUJlaGF2aW9yIG1fY3VzdG9t
QmVoYXZpb3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0Um91bmRlZFJlY3Q+IG1fc2hhcGVS
b3VuZGVkUmVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxh
eWVyTWFjLm1tCmluZGV4IGY2OWI2MjBmMjMyOTkwMzBmMDY2MzgxMjY5Nzg3NjA5MzNmNGE3NDgu
Ljc5ZGRjNDU1OGNkYmNkMzE5MmI3YzgxMzZkOWRkNGEzYWI1MmQ0YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3Jt
Q0FMYXllck1hYy5tbQpAQCAtMjU5LDEzICsyNTksMTcgQEAgUGxhdGZvcm1DQUxheWVyTWFjOjpQ
bGF0Zm9ybUNBTGF5ZXJNYWMoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xp
ZW4KICAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXllck1hY3Mgd3JhcHBl
ZCBhcm91bmQgV2ViR0xMYXllcnMuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIExheWVyVHlwZVNoYXBlTGF5ZXI6CisgICAgICAgIGxheWVy
Q2xhc3MgPSBbQ0FTaGFwZUxheWVyIGNsYXNzXTsKKyAgICAgICAgLy8gZmlsbENvbG9yIGRlZmF1
bHRzIHRvIG9wYXF1ZSBibGFjay4KKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5cGVD
dXN0b206CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGlmIChsYXllckNsYXNzKQogICAg
ICAgICBtX2xheWVyID0gYWRvcHROUyhbW2xheWVyQ2xhc3MgYWxsb2NdIGluaXRdKTsKLSAgICAK
KwogICAgIGNvbW1vbkluaXQoKTsKIH0KIApAQCAtMzE0LDYgKzMxOCw5IEBAIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNsb25lKFBsYXRmb3JtQ0FMYXll
ckNsaWVudCogb3duCiAgICAgY2FzZSBMYXllclR5cGVBVlBsYXllckxheWVyOgogICAgICAgICB0
eXBlID0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBM
YXllclR5cGVTaGFwZUxheWVyOgorICAgICAgICB0eXBlID0gTGF5ZXJUeXBlU2hhcGVMYXllcjsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMYXllclR5cGVMYXllcjoKICAgICBkZWZhdWx0Ogog
ICAgICAgICB0eXBlID0gTGF5ZXJUeXBlTGF5ZXI7CkBAIC0zMzIsNiArMzM5LDcgQEAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllck1hYzo6Y2xvbmUoUGxhdGZvcm1D
QUxheWVyQ2xpZW50KiBvd24KICAgICBuZXdMYXllci0+c2V0T3BhcXVlKGlzT3BhcXVlKCkpOwog
ICAgIG5ld0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKCkpOwogICAg
IG5ld0xheWVyLT5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CisgICAgbmV3TGF5
ZXItPnNldENvcm5lclJhZGl1cyhjb3JuZXJSYWRpdXMoKSk7CiAgICAgbmV3TGF5ZXItPmNvcHlG
aWx0ZXJzRnJvbSgqdGhpcyk7CiAgICAgbmV3TGF5ZXItPnVwZGF0ZUN1c3RvbUFwcGVhcmFuY2Uo
Y3VzdG9tQXBwZWFyYW5jZSgpKTsKIApAQCAtMzQ1LDYgKzM1Myw5IEBAIFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNsb25lKFBsYXRmb3JtQ0FMYXllckNs
aWVudCogb3duCiAgICAgICAgICAgICBbZGVzdGluYXRpb25QbGF5ZXJMYXllciBzZXRQbGF5ZXI6
W3NvdXJjZVBsYXllckxheWVyIHBsYXllcl1dOwogICAgICAgICB9KTsKICAgICB9CisgICAgCisg
ICAgaWYgKHR5cGUgPT0gTGF5ZXJUeXBlU2hhcGVMYXllcikKKyAgICAgICAgbmV3TGF5ZXItPnNl
dFNoYXBlUm91bmRlZFJlY3Qoc2hhcGVSb3VuZGVkUmVjdCgpKTsKIAogICAgIHJldHVybiBuZXdM
YXllcjsKIH0KQEAgLTUwMSw3ICs1MTIsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FMYXllck1hYzo6YW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZwogdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJNYWM6OnNldE1hc2soUGxhdGZvcm1DQUxheWVyKiBsYXllcikKIHsK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9sYXllci5nZXQoKSBzZXRN
YXNrOmxheWVyID8gbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDBdOworICAgIFttX2xheWVyLmdl
dCgpIHNldE1hc2s6bGF5ZXIgPyBsYXllci0+cGxhdGZvcm1MYXllcigpIDogbmlsXTsKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTgwNiw2ICs4MTcsMTggQEAgdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJNYWM6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgdmFsdWUpCiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCitmbG9hdCBQbGF0Zm9ybUNBTGF5ZXJNYWM6OmNv
cm5lclJhZGl1cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGNvcm5lclJh
ZGl1c107Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjpzZXRDb3JuZXJSYWRpdXMoZmxv
YXQgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5
ZXIuZ2V0KCkgc2V0Q29ybmVyUmFkaXVzOnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCit9CisKIHZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjpzZXRFZGdlQW50aWFsaWFzaW5n
TWFzayh1bnNpZ25lZCBtYXNrKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpA
QCAtODEzLDYgKzgzNiwyNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllck1hYzo6c2V0RWRnZUFudGlh
bGlhc2luZ01hc2sodW5zaWduZWQgbWFzaykKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiB9CiAKK0Zsb2F0Um91bmRlZFJlY3QgUGxhdGZvcm1DQUxheWVyTWFjOjpzaGFwZVJvdW5kZWRS
ZWN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2hhcGVM
YXllcik7CisgICAgaWYgKG1fc2hhcGVSb3VuZGVkUmVjdCkKKyAgICAgICAgcmV0dXJuICptX3No
YXBlUm91bmRlZFJlY3Q7CisKKyAgICByZXR1cm4gRmxvYXRSb3VuZGVkUmVjdCgpOworfQorCit2
b2lkIFBsYXRmb3JtQ0FMYXllck1hYzo6c2V0U2hhcGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiByb3VuZGVkUmVjdCkKK3sKKyAgICBBU1NFUlQobV9sYXllclR5cGUgPT0gTGF5
ZXJUeXBlU2hhcGVMYXllcik7CisgICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CisKKyAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKKyAgICBQYXRoIHNoYXBlUGF0aDsKKyAgICBzaGFwZVBhdGguYWRkUm91
bmRlZFJlY3Qocm91bmRlZFJlY3QpOworICAgIFtzdGF0aWNfY2FzdDxDQVNoYXBlTGF5ZXIgKj4o
bV9sYXllci5nZXQoKSkgc2V0UGF0aDpzaGFwZVBhdGgucGxhdGZvcm1QYXRoKCldOworICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwogYm9vbCBQbGF0Zm9ybUNBTGF5ZXJNYWM6OnJl
cXVpcmVzQ3VzdG9tQXBwZWFyYW5jZVVwZGF0ZU9uQm91bmRzQ2hhbmdlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9jdXN0b21BcHBlYXJhbmNlID09IEdyYXBoaWNzTGF5ZXI6OlNjcm9sbGluZ1No
YWRvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggNjM2MzVkNmZkOWQwZjFlMGYz
ZjQ5NjY3MmQ1YjY5N2FiMTExZmM0Zi4uODhiMTkwMjU5YzY0N2JhMDEwM2VmNDM5YmZhOTAxOTMz
NWQ2YTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTU4MSw2ICs1ODEsMjcg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OnNldENvbnRlbnRzU2NhbGUoZmxvYXQpCiB7CiB9
CiAKK2Zsb2F0IFBsYXRmb3JtQ0FMYXllcldpbjo6Y29ybmVyUmFkaXVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gMDsgLy8gRklYTUU6IGltcGxlbWVudC4KK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5
ZXJXaW46OnNldENvcm5lclJhZGl1cyhmbG9hdCB2YWx1ZSkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50LgorfQorCitGbG9hdFJvdW5kZWRSZWN0IFBsYXRmb3JtQ0FMYXllcldpbjo6c2hhcGVS
b3VuZGVkUmVjdCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudC4KKyAgICByZXR1
cm4gRmxvYXRSb3VuZGVkUmVjdCgpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbjo6c2V0
U2hhcGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JikKK3sKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50LgorfQorCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIHZvaWQgcHJpbnRJbmRl
bnQoaW50IGluZGVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAppbmRleCBkMDY0ODgwNWFj
MzNmNWI5OTg1NjFmZGFhYTBlYzRmYWM2MGVjMGNjLi43ZGFjZThmYzBkM2ZjMTdlZjcwYTk2ZDRh
Nzc0M2Y2Mjk4NjgxMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCkBAIC0xMjIsNiArMTIy
LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgb3ZlcnJp
ZGU7CiAKKyAgICB2aXJ0dWFsIGZsb2F0IGNvcm5lclJhZGl1cygpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb3JuZXJSYWRpdXMoZmxvYXQpIG92ZXJyaWRlOworCisgICAg
dmlydHVhbCBGbG9hdFJvdW5kZWRSZWN0IHNoYXBlUm91bmRlZFJlY3QoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hhcGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0Jikgb3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRnZUFudGlhbGlhc2lu
Z01hc2sodW5zaWduZWQpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpD
dXN0b21BcHBlYXJhbmNlIGN1c3RvbUFwcGVhcmFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2N1c3RvbUFwcGVhcmFuY2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggODQ1Yjg1MjljOGE3ZTllNmYzM2RhMTg1NGMxNDIz
OTE4MjAwN2VhMy4uZjNhZjNjOWE0OTkxYjA4ZjA3Yzg5YjI1OTQxNWIzYjU1MTJmOTI3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTEwOTcsMTIgKzEwOTcsMTIgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnJlc2V0Q29udGVu
dHNSZWN0KCkKIHsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzUmVjdChzbmFwcGVk
SW50UmVjdChjb250ZW50c0JveCgpKSk7CiAgICAgCi0gICAgTGF5b3V0UmVjdCBjb250ZW50c0Ns
aXBwaW5nUmVjdDsKLSAgICBpZiAoaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKLSAgICAgICAg
Y29udGVudHNDbGlwcGluZ1JlY3QgPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpLmNv
bnRlbnRCb3hSZWN0KCk7Ci0KLSAgICBjb250ZW50c0NsaXBwaW5nUmVjdC5tb3ZlKGNvbnRlbnRP
ZmZzZXRJbkNvbXBvc3RpbmdMYXllcigpKTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRl
bnRzQ2xpcHBpbmdSZWN0KHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQ2xpcHBpbmdSZWN0KSk7Cisg
ICAgaWYgKGlzPFJlbmRlckJveD4ocmVuZGVyZXIoKSkpIHsKKyAgICAgICAgTGF5b3V0UmVjdCBi
b3hSZWN0KExheW91dFBvaW50KCksIGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSkuc2l6
ZSgpKTsKKyAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCBjb250ZW50c0NsaXBwaW5nUmVjdCA9IHJl
bmRlcmVyKCkuc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm94UmVjdCkucGl4ZWxT
bmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAg
ICAgY29udGVudHNDbGlwcGluZ1JlY3QubW92ZShjb250ZW50T2Zmc2V0SW5Db21wb3N0aW5nTGF5
ZXIoKSk7CisgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3Qo
Y29udGVudHNDbGlwcGluZ1JlY3QpOworICAgIH0KIAogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
Q29udGVudHNUaWxlU2l6ZShJbnRTaXplKCkpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29u
dGVudHNUaWxlUGhhc2UoSW50UG9pbnQoKSk7CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCkKICAgICAg
ICAgaWYgKGxheWVyLT51c2VzQ29udGVudHNMYXllcigpKSB7CiAgICAgICAgICAgICBJbnRSZWN0
IGJhclJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGhCYXJSZWN0LnNpemUoKSk7CiAgICAgICAg
ICAgICBsYXllci0+c2V0Q29udGVudHNSZWN0KGJhclJlY3QpOwotICAgICAgICAgICAgbGF5ZXIt
PnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KGJhclJlY3QpOworICAgICAgICAgICAgbGF5ZXItPnNl
dENvbnRlbnRzQ2xpcHBpbmdSZWN0KEZsb2F0Um91bmRlZFJlY3QoYmFyUmVjdCkpOwogICAgICAg
ICB9CiAgICAgICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQobV9vd25pbmdMYXllci5ob3Jpem9u
dGFsU2Nyb2xsYmFyKCkgJiYgIWxheWVyLT51c2VzQ29udGVudHNMYXllcigpKTsKICAgICB9CkBA
IC0xMjgyLDcgKzEyODIsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cG9zaXRpb25PdmVy
Zmxvd0NvbnRyb2xzTGF5ZXJzKCkKICAgICAgICAgaWYgKGxheWVyLT51c2VzQ29udGVudHNMYXll
cigpKSB7CiAgICAgICAgICAgICBJbnRSZWN0IGJhclJlY3QgPSBJbnRSZWN0KEludFBvaW50KCks
IHZCYXJSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICBsYXllci0+c2V0Q29udGVudHNSZWN0KGJh
clJlY3QpOwotICAgICAgICAgICAgbGF5ZXItPnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KGJhclJl
Y3QpOworICAgICAgICAgICAgbGF5ZXItPnNldENvbnRlbnRzQ2xpcHBpbmdSZWN0KEZsb2F0Um91
bmRlZFJlY3QoYmFyUmVjdCkpOwogICAgICAgICB9CiAgICAgICAgIGxheWVyLT5zZXREcmF3c0Nv
bnRlbnQobV9vd25pbmdMYXllci52ZXJ0aWNhbFNjcm9sbGJhcigpICYmICFsYXllci0+dXNlc0Nv
bnRlbnRzTGF5ZXIoKSk7CiAgICAgfQpAQCAtMTU4Nyw3ICsxNTg3LDcgQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZURpcmVjdGx5Q29tcG9zaXRlZEJhY2tncm91bmRDb2xvcihib29s
IGlzU2ltcGxlQ28KICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9Tb2xpZENvbG9y
KGJhY2tncm91bmRDb2xvcik7CiAgICAgRmxvYXRSZWN0IGNvbnRlbnRzUmVjdCA9IGJhY2tncm91
bmRCb3hGb3JQYWludGluZygpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0
KGNvbnRlbnRzUmVjdCk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5n
UmVjdChjb250ZW50c1JlY3QpOworICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlw
cGluZ1JlY3QoRmxvYXRSb3VuZGVkUmVjdChjb250ZW50c1JlY3QpKTsKICAgICBkaWRVcGRhdGVD
b250ZW50c1JlY3QgPSB0cnVlOwogfQogCkBAIC0xNjE1LDcgKzE2MTUsNyBAQCB2b2lkIFJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlRGlyZWN0bHlDb21wb3NpdGVkQmFja2dyb3VuZEltYWdlKGJv
b2wgaXNTaW1wbGVDbwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUaWxlU2l6ZSh0
aWxlU2l6ZSk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVQaGFzZShwaGFz
ZSk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1JlY3QoZGVzdFJlY3QpOwotICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3QoZGVzdFJlY3QpOworICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3QoRmxvYXRSb3VuZGVkUmVj
dChkZXN0UmVjdCkpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGlt
YWdlLmdldCgpKTsKICAgICBkaWRVcGRhdGVDb250ZW50c1JlY3QgPSB0cnVlOwogfQpAQCAtMTkw
NSw5ICsxOTA1LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJbWFnZUNvbnRl
bnRzKCkKICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhlIGxheWVyIGRvZXNuJ3QgaGF2ZSBh
biBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29u
dGVudHNSZWN0KHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRzQm94KCkpKTsKIAotICAgIExheW91dFJl
Y3QgY29udGVudHNDbGlwcGluZ1JlY3QgPSBpbWFnZVJlbmRlcmVyLmNvbnRlbnRCb3hSZWN0KCk7
CisgICAgTGF5b3V0UmVjdCBib3hSZWN0KExheW91dFBvaW50KCksIGltYWdlUmVuZGVyZXIuc2l6
ZSgpKTsKKyAgICBGbG9hdFJvdW5kZWRSZWN0IGNvbnRlbnRzQ2xpcHBpbmdSZWN0ID0gcmVuZGVy
ZXIoKS5zdHlsZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihib3hSZWN0KS5waXhlbFNuYXBw
ZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgIGNvbnRl
bnRzQ2xpcHBpbmdSZWN0Lm1vdmUoY29udGVudE9mZnNldEluQ29tcG9zdGluZ0xheWVyKCkpOwot
ICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3Qoc25hcHBlZEludFJl
Y3QoY29udGVudHNDbGlwcGluZ1JlY3QpKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRl
bnRzQ2xpcHBpbmdSZWN0KGNvbnRlbnRzQ2xpcHBpbmdSZWN0KTsKIAogICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKICAgICBib29sIGlzU2ltcGxlQ29udGFp
bmVyID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmgKaW5kZXggMjdmZjEzMTY2NzE4Mzg3MzljY2I3NjY1ZjYwZGViOTA5MDM5NmQ5MC4uYmE5
YTFmOWQ3Njk3NzVkZjg3OGUwNTk4ZWQwYzUxNzRkOWQ3NjU3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMzE2LDcgKzMxNiw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBzaG91bGRDbGlwQ29tcG9zaXRlZEJvdW5kcygpIGNvbnN0OwogCiAg
ICAgYm9vbCBoYXNUaWxlZEJhY2tpbmdGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiAo
bV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgJiYgbV91c2luZ1RpbGVkQ2FjaGVMYXllcik7IH0KLSAg
ICBHcmFwaGljc0xheWVyKiB0aWxlQ2FjaGVGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX3VzaW5nVGlsZWRDYWNoZUxheWVyID8gbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIuZ2V0KCkg
OiAwOyB9CisgICAgR3JhcGhpY3NMYXllciogdGlsZUNhY2hlRmxhdHRlbmluZ0xheWVyKCkgY29u
c3QgeyByZXR1cm4gbV91c2luZ1RpbGVkQ2FjaGVMYXllciA/IG1fY2hpbGRDb250YWlubWVudExh
eWVyLmdldCgpIDogbnVsbHB0cjsgfQogCiAgICAgdm9pZCBwYWludEludG9MYXllcihjb25zdCBH
cmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0
eVJlY3QsIFBhaW50QmVoYXZpb3IsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBl
NjIxYWVhZTUwOTQyZjI0M2QwMjNjZjEwZTYzYmYwOTQzYjQzMjYwLi4xMjE5MmZjNjc1ODFiMGUy
NzgyMjEwM2Q5N2Q2YzQ1MjVlOWQwYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjk4LDYgKzI5OCwxNiBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8RmxvYXRTaXplPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgRmxv
YXRTaXplJiBmbG9hdAogfQogCiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxGbG9hdFJvdW5kZWRSZWN0
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcm91bmRlZFJlY3QpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFJvdW5kZWRS
ZWN0Pjo6ZW5jb2RlKGVuY29kZXIsIHJvdW5kZWRSZWN0KTsKK30KKworYm9vbCBBcmd1bWVudENv
ZGVyPEZsb2F0Um91bmRlZFJlY3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBG
bG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCkKK3sKKyAgICByZXR1cm4gU2ltcGxlQXJndW1l
bnRDb2RlcjxGbG9hdFJvdW5kZWRSZWN0Pjo6ZGVjb2RlKGRlY29kZXIsIHJvdW5kZWRSZWN0KTsK
K30KKwogI2lmIFBMQVRGT1JNKElPUykKIHZvaWQgQXJndW1lbnRDb2RlcjxGbG9hdFF1YWQ+Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGbG9hdFF1YWQmIGZsb2F0UXVh
ZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApp
bmRleCBmZTA1YTAzOTc1NTU1MmNhY2I4Mzg0ZGY1YWNjMjdjODE1MGQ2ODNmLi41OTk1ZTVhYjEw
YjQ2MGQ2YjhmNTk2ZjNiODU0ZTIxNmIyMmZkYjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEZpbHRl
ck9wZXJhdGlvbnM7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRQb2ludDNEOwogY2xh
c3MgRmxvYXRSZWN0OworY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIEZsb2F0U2l6ZTsK
IGNsYXNzIEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwogY2xhc3MgSFRUUEhlYWRl
ck1hcDsKQEAgLTE2Myw2ICsxNjQsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpGbG9hdFNpemU+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiwgV2ViQ29yZTo6RmxvYXRTaXplJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVj
dCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpG
bG9hdFJvdW5kZWRSZWN0Jik7Cit9OworCiAjaWYgUExBVEZPUk0oSU9TKQogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGbG9hdFF1YWQ+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQppbmRleCBiZjk4MDBlNWVhMGYyZTQwYzU3ZWQ0ODVmM2ZkNTQ2Yzc5ZDkwYzVhLi4zMDgw
ZWNmYWE5NGE5YjQ1ZTIyNjc1ZDE2MzcyYTJmOGJlNTk5YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTM0OSw2
ICszNDksNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVXZWJHTExheWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVC
YWNrZHJvcExheWVyOgorICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaGFwZUxh
eWVyOgogICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIu
bW0KaW5kZXggODA2MTNmNjRkNTdiM2I4NWQ5ZGUyNWQxOTYyYzA2Mzk1YzRmYzViOS4uM2E2OWJk
YjYzMTg4YTIzNjJkOGE5ZDFhMzMwNzMxNDAxOWY3NDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIu
bW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgIlBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUu
aCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllclJlbW90ZS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5
ZXJUcmVlSG9zdC5oIgotI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CisjaW1wb3J0IDxR
dWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25z
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FGaWx0ZXJzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Njcm9sbGJhclRoZW1lTWFjLmg+CkBAIC0xOTAsNiArMTkwLDE3IEBAIHN0YXRpYyB2b2lk
IGFwcGx5UHJvcGVydGllc1RvTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIFJlbW90ZUxheWVyVHJlZUhv
c3QqIGxheWVyVHJlCiAgICAgICAgIGxheWVyLnJhc3Rlcml6YXRpb25TY2FsZSA9IHByb3BlcnRp
ZXMuY29udGVudHNTY2FsZTsKICAgICB9CiAKKyAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJv
cGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDb3JuZXJSYWRpdXNDaGFuZ2Vk
KQorICAgICAgICBsYXllci5jb3JuZXJSYWRpdXMgPSBwcm9wZXJ0aWVzLmNvcm5lclJhZGl1czsK
KworICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OlNoYXBlUm91bmRlZFJlY3RDaGFuZ2VkKSB7CisgICAgICAgIFBhdGggcGF0
aDsKKyAgICAgICAgaWYgKHByb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCkKKyAgICAgICAgICAg
IHBhdGguYWRkUm91bmRlZFJlY3QoKnByb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCk7CisgICAg
ICAgIEFTU0VSVChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbQ0FTaGFwZUxheWVyIGNsYXNzXV0pOwor
ICAgICAgICBbc3RhdGljX2Nhc3Q8Q0FTaGFwZUxheWVyICo+KGxheWVyKSBzZXRQYXRoOnBhdGgu
cGxhdGZvcm1QYXRoKCldOworICAgIH0KKwogICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9w
ZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1pbmlmaWNhdGlvbkZpbHRlckNo
YW5nZWQpCiAgICAgICAgIGxheWVyLm1pbmlmaWNhdGlvbkZpbHRlciA9IHRvQ0FGaWx0ZXJUeXBl
KHByb3BlcnRpZXMubWluaWZpY2F0aW9uRmlsdGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCmluZGV4IDUwODFi
MTM5ODYzMmM3ZTAxZmEyM2JhYTZlNzNiOTU2ZjUzNGU5YWQuLjE3NGYyMzg5MjQ5ZWM1MzIwNjM4
OWFlYmFkZDUyODE1MThiOTdjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTUwLDQwICs1MCw0MiBAQCBj
bGFzcyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbiB7CiBwdWJsaWM6CiAgICAgZW51bSBMYXllckNoYW5nZXMgewotICAgICAgICBOb0NoYW5n
ZSA9IDAsCi0gICAgICAgIE5hbWVDaGFuZ2VkID0gMSA8PCAxLAotICAgICAgICBDaGlsZHJlbkNo
YW5nZWQgPSAxIDw8IDIsCi0gICAgICAgIFBvc2l0aW9uQ2hhbmdlZCA9IDEgPDwgMywKLSAgICAg
ICAgQm91bmRzQ2hhbmdlZCA9IDEgPDwgNCwKLSAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdl
ZCA9IDEgPDwgNSwKLSAgICAgICAgQW5jaG9yUG9pbnRDaGFuZ2VkID0gMSA8PCA2LAotICAgICAg
ICBCb3JkZXJXaWR0aENoYW5nZWQgPSAxIDw8IDcsCi0gICAgICAgIEJvcmRlckNvbG9yQ2hhbmdl
ZCA9IDEgPDwgOCwKLSAgICAgICAgT3BhY2l0eUNoYW5nZWQgPSAxIDw8IDksCi0gICAgICAgIFRy
YW5zZm9ybUNoYW5nZWQgPSAxIDw8IDEwLAotICAgICAgICBTdWJsYXllclRyYW5zZm9ybUNoYW5n
ZWQgPSAxIDw8IDExLAotICAgICAgICBIaWRkZW5DaGFuZ2VkID0gMSA8PCAxMiwKLSAgICAgICAg
R2VvbWV0cnlGbGlwcGVkQ2hhbmdlZCA9IDEgPDwgMTMsCi0gICAgICAgIERvdWJsZVNpZGVkQ2hh
bmdlZCA9IDEgPDwgMTQsCi0gICAgICAgIE1hc2tzVG9Cb3VuZHNDaGFuZ2VkID0gMSA8PCAxNSwK
LSAgICAgICAgT3BhcXVlQ2hhbmdlZCA9IDEgPDwgMTYsCi0gICAgICAgIE1hc2tMYXllckNoYW5n
ZWQgPSAxIDw8IDE3LAotICAgICAgICBDbG9uZWRDb250ZW50c0NoYW5nZWQgPSAxIDw8IDE4LAot
ICAgICAgICBDb250ZW50c1JlY3RDaGFuZ2VkID0gMSA8PCAxOSwKLSAgICAgICAgQ29udGVudHNT
Y2FsZUNoYW5nZWQgPSAxIDw8IDIwLAotICAgICAgICBNaW5pZmljYXRpb25GaWx0ZXJDaGFuZ2Vk
ID0gMSA8PCAyMSwKLSAgICAgICAgTWFnbmlmaWNhdGlvbkZpbHRlckNoYW5nZWQgPSAxIDw8IDIy
LAotICAgICAgICBCbGVuZE1vZGVDaGFuZ2VkID0gMSA8PCAyMywKLSAgICAgICAgU3BlZWRDaGFu
Z2VkID0gMSA8PCAyNCwKLSAgICAgICAgVGltZU9mZnNldENoYW5nZWQgPSAxIDw8IDI1LAotICAg
ICAgICBCYWNraW5nU3RvcmVDaGFuZ2VkID0gMSA8PCAyNiwKLSAgICAgICAgRmlsdGVyc0NoYW5n
ZWQgPSAxIDw8IDI3LAotICAgICAgICBBbmltYXRpb25zQ2hhbmdlZCA9IDEgPDwgMjgsCi0gICAg
ICAgIEVkZ2VBbnRpYWxpYXNpbmdNYXNrQ2hhbmdlZCA9IDEgPDwgMjksCi0gICAgICAgIEN1c3Rv
bUFwcGVhcmFuY2VDaGFuZ2VkID0gMSA8PCAzMCwKLSAgICAgICAgQ3VzdG9tQmVoYXZpb3JDaGFu
Z2VkID0gMSA8PCAzMQorICAgICAgICBOb0NoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgID0g
MCwKKyAgICAgICAgTmFtZUNoYW5nZWQgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMSwK
KyAgICAgICAgQ2hpbGRyZW5DaGFuZ2VkICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMiwKKyAg
ICAgICAgUG9zaXRpb25DaGFuZ2VkICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMywKKyAgICAg
ICAgQm91bmRzQ2hhbmdlZCAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgNCwKKyAgICAgICAg
QmFja2dyb3VuZENvbG9yQ2hhbmdlZCAgICAgICAgICA9IDFMTFUgPDwgNSwKKyAgICAgICAgQW5j
aG9yUG9pbnRDaGFuZ2VkICAgICAgICAgICAgICA9IDFMTFUgPDwgNiwKKyAgICAgICAgQm9yZGVy
V2lkdGhDaGFuZ2VkICAgICAgICAgICAgICA9IDFMTFUgPDwgNywKKyAgICAgICAgQm9yZGVyQ29s
b3JDaGFuZ2VkICAgICAgICAgICAgICA9IDFMTFUgPDwgOCwKKyAgICAgICAgT3BhY2l0eUNoYW5n
ZWQgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgOSwKKyAgICAgICAgVHJhbnNmb3JtQ2hhbmdl
ZCAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTAsCisgICAgICAgIFN1YmxheWVyVHJhbnNmb3Jt
Q2hhbmdlZCAgICAgICAgPSAxTExVIDw8IDExLAorICAgICAgICBIaWRkZW5DaGFuZ2VkICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAxMiwKKyAgICAgICAgR2VvbWV0cnlGbGlwcGVkQ2hhbmdl
ZCAgICAgICAgICA9IDFMTFUgPDwgMTMsCisgICAgICAgIERvdWJsZVNpZGVkQ2hhbmdlZCAgICAg
ICAgICAgICAgPSAxTExVIDw8IDE0LAorICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdlZCAgICAg
ICAgICAgID0gMUxMVSA8PCAxNSwKKyAgICAgICAgT3BhcXVlQ2hhbmdlZCAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgPDwgMTYsCisgICAgICAgIE1hc2tMYXllckNoYW5nZWQgICAgICAgICAgICAg
ICAgPSAxTExVIDw8IDE3LAorICAgICAgICBDbG9uZWRDb250ZW50c0NoYW5nZWQgICAgICAgICAg
ID0gMUxMVSA8PCAxOCwKKyAgICAgICAgQ29udGVudHNSZWN0Q2hhbmdlZCAgICAgICAgICAgICA9
IDFMTFUgPDwgMTksCisgICAgICAgIENvbnRlbnRzU2NhbGVDaGFuZ2VkICAgICAgICAgICAgPSAx
TExVIDw8IDIwLAorICAgICAgICBDb3JuZXJSYWRpdXNDaGFuZ2VkICAgICAgICAgICAgID0gMUxM
VSA8PCAyMSwKKyAgICAgICAgU2hhcGVSb3VuZGVkUmVjdENoYW5nZWQgICAgICAgICA9IDFMTFUg
PDwgMjIsCisgICAgICAgIE1pbmlmaWNhdGlvbkZpbHRlckNoYW5nZWQgICAgICAgPSAxTExVIDw8
IDIzLAorICAgICAgICBNYWduaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCAgICAgID0gMUxMVSA8PCAy
NCwKKyAgICAgICAgQmxlbmRNb2RlQ2hhbmdlZCAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjUs
CisgICAgICAgIFNwZWVkQ2hhbmdlZCAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI2LAor
ICAgICAgICBUaW1lT2Zmc2V0Q2hhbmdlZCAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNywKKyAg
ICAgICAgQmFja2luZ1N0b3JlQ2hhbmdlZCAgICAgICAgICAgICA9IDFMTFUgPDwgMjgsCisgICAg
ICAgIEZpbHRlcnNDaGFuZ2VkICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI5LAorICAgICAg
ICBBbmltYXRpb25zQ2hhbmdlZCAgICAgICAgICAgICAgID0gMUxMVSA8PCAzMCwKKyAgICAgICAg
RWRnZUFudGlhbGlhc2luZ01hc2tDaGFuZ2VkICAgICA9IDFMTFUgPDwgMzEsCisgICAgICAgIEN1
c3RvbUFwcGVhcmFuY2VDaGFuZ2VkICAgICAgICAgPSAxTExVIDw8IDMyLAorICAgICAgICBDdXN0
b21CZWhhdmlvckNoYW5nZWQgICAgICAgICAgID0gMUxMVSA8PCAzMwogICAgIH07Ci0gICAgdHlw
ZWRlZiB1bnNpZ25lZCBMYXllckNoYW5nZTsKKyAgICB0eXBlZGVmIHVpbnQ2NF90IExheWVyQ2hh
bmdlOwogCiAgICAgc3RydWN0IExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzIHsKICAgICAgICAgTGF5
ZXJDcmVhdGlvblByb3BlcnRpZXMoKTsKQEAgLTEyMiw2ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIFN0cmluZyBuYW1lOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXg+IHRyYW5zZm9ybTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4PiBzdWJsYXllclRyYW5zZm9ybTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+IHNoYXBlUm91bmRlZFJlY3Q7
CisKICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RD4gY2hpbGRyZW47CiAKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFBsYXRmb3Jt
Q0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXM+PiBhZGRlZEFuaW1hdGlvbnM7CkBAIC0xMzgs
NiArMTQyLDcgQEAgcHVibGljOgogICAgICAgICBkb3VibGUgdGltZU9mZnNldDsKICAgICAgICAg
ZmxvYXQgc3BlZWQ7CiAgICAgICAgIGZsb2F0IGNvbnRlbnRzU2NhbGU7CisgICAgICAgIGZsb2F0
IGNvcm5lclJhZGl1czsKICAgICAgICAgZmxvYXQgYm9yZGVyV2lkdGg7CiAgICAgICAgIGZsb2F0
IG9wYWNpdHk7CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGJhY2tncm91bmRDb2xvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tCmluZGV4IDAwYjgzNTZjMjQ1MDkwMTRlNjUwMTlkMmZiYmE5YWVhZDZhMjhlMDguLjdi
YTY4NTFlNThlYmQyMzJkNjRiYzNmZjFiM2RjOGUzZWM1OWE4MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpA
QCAtODYsNiArODYsNyBAQCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0
aWVzOjpMYXllclByb3BlcnRpZXMoKQogICAgICwgdGltZU9mZnNldCgwKQogICAgICwgc3BlZWQo
MSkKICAgICAsIGNvbnRlbnRzU2NhbGUoMSkKKyAgICAsIGNvcm5lclJhZGl1cygwKQogICAgICwg
Ym9yZGVyV2lkdGgoMCkKICAgICAsIG9wYWNpdHkoMSkKICAgICAsIGJhY2tncm91bmRDb2xvcihD
b2xvcjo6dHJhbnNwYXJlbnQpCkBAIC0xMjAsNiArMTIxLDcgQEAgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJv
cGVydGkKICAgICAsIHRpbWVPZmZzZXQob3RoZXIudGltZU9mZnNldCkKICAgICAsIHNwZWVkKG90
aGVyLnNwZWVkKQogICAgICwgY29udGVudHNTY2FsZShvdGhlci5jb250ZW50c1NjYWxlKQorICAg
ICwgY29ybmVyUmFkaXVzKG90aGVyLmNvcm5lclJhZGl1cykKICAgICAsIGJvcmRlcldpZHRoKG90
aGVyLmJvcmRlcldpZHRoKQogICAgICwgb3BhY2l0eShvdGhlci5vcGFjaXR5KQogICAgICwgYmFj
a2dyb3VuZENvbG9yKG90aGVyLmJhY2tncm91bmRDb2xvcikKQEAgLTIxOCw2ICsyMjAsMTIgQEAg
dm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjplbmNvZGUo
SVBDOjpBcmd1bWVudEVuY29kZXImIGUKICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMgJiBDb250
ZW50c1NjYWxlQ2hhbmdlZCkKICAgICAgICAgZW5jb2RlciA8PCBjb250ZW50c1NjYWxlOwogCisg
ICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzICYgQ29ybmVyUmFkaXVzQ2hhbmdlZCkKKyAgICAgICAg
ZW5jb2RlciA8PCBjb3JuZXJSYWRpdXM7CisKKyAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMgJiBT
aGFwZVJvdW5kZWRSZWN0Q2hhbmdlZCkKKyAgICAgICAgZW5jb2RlciA8PCAqc2hhcGVSb3VuZGVk
UmVjdDsKKwogICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcyAmIE1pbmlmaWNhdGlvbkZpbHRlckNo
YW5nZWQpCiAgICAgICAgIGVuY29kZXIuZW5jb2RlRW51bShtaW5pZmljYXRpb25GaWx0ZXIpOwog
CkBAIC0zNzcsNiArMzg1LDE5IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Okxh
eWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGll
cyAmIENvcm5lclJhZGl1c0NoYW5nZWQpIHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuY29ybmVyUmFkaXVzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgU2hhcGVSb3VuZGVkUmVjdENoYW5n
ZWQpIHsKKyAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCByb3VuZGVkUmVjdDsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyb3VuZGVkUmVjdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAorICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91
bmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgIH0KKwogICAgIGlmIChy
ZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBNaW5pZmljYXRpb25GaWx0ZXJDaGFuZ2VkKSB7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5taW5pZmljYXRpb25GaWx0ZXIp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTk5LDYgKzYyMCw3IEBAIHB1YmxpYzoK
IAogICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSk7CisgICAgUmVtb3RlTGF5ZXJUcmVlVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgUmVtb3Rl
TGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChGbG9hdFBvaW50M0QpOwogICAgIFJlbW90
ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoQ29sb3IpOwogICAgIFJlbW90ZUxheWVy
VHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoRmxvYXRSZWN0KTsKQEAgLTY1MSw2ICs2NzMsMjUg
QEAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6
b3BlcmF0b3I8PChjb25zdCBUcmFuc2Zvcm0KICAgICByZXR1cm4gdHM7CiB9CiAKK1JlbW90ZUxh
eWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwo
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpCit7CisgICAgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKKyAgICB0cyA8PCByb3VuZGVkUmVjdC5yZWN0KCku
eCgpIDw8ICIgIiA8PCByb3VuZGVkUmVjdC5yZWN0KCkueSgpIDw8ICIgIiA8PCByb3VuZGVkUmVj
dC5yZWN0KCkud2lkdGgoKSA8PCAiICIgPDwgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpIDw8
ICJcbiI7CisKKyAgICB0cy5pbmNyZWFzZUluZGVudCgpOworICAgIHRzLndyaXRlSW5kZW50KCk7
CisgICAgdHMgPDwgInRvcExlZnQ9IiA8PCByb3VuZGVkUmVjdC50b3BMZWZ0Q29ybmVyKCkud2lk
dGgoKSA8PCAiICIgPDwgcm91bmRlZFJlY3QudG9wTGVmdENvcm5lcigpLmhlaWdodCgpIDw8ICJc
biI7CisgICAgdHMud3JpdGVJbmRlbnQoKTsKKyAgICB0cyA8PCAidG9wUmlnaHQ9IiA8PCByb3Vu
ZGVkUmVjdC50b3BSaWdodENvcm5lcigpLndpZHRoKCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0LnRv
cFJpZ2h0Q29ybmVyKCkuaGVpZ2h0KCkgPDwgIlxuIjsKKyAgICB0cy53cml0ZUluZGVudCgpOwor
ICAgIHRzIDw8ICJib3R0b21MZWZ0PSIgPDwgcm91bmRlZFJlY3QuYm90dG9tTGVmdENvcm5lcigp
LndpZHRoKCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0LmJvdHRvbUxlZnRDb3JuZXIoKS5oZWlnaHQo
KSA8PCAiXG4iOworICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwgImJvdHRvbVJpZ2h0
PSIgPDwgcm91bmRlZFJlY3QuYm90dG9tUmlnaHRDb3JuZXIoKS53aWR0aCgpIDw8ICIgIiA8PCBy
b3VuZGVkUmVjdC5ib3R0b21SaWdodENvcm5lcigpLmhlaWdodCgpOworICAgIHRzLmRlY3JlYXNl
SW5kZW50KCk7CisKKyAgICByZXR1cm4gdHM7Cit9CisKIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoUGxhdGZvcm1DQUxheWVy
OjpGaWx0ZXJUeXBlIGZpbHRlclR5cGUpCiB7CiAgICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVh
bSYgdHMgPSAqdGhpczsKQEAgLTEwODMsNiArMTEyNCwxMiBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hh
bmdlZExheWVycyhSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVtb3RlTGF5
ZXJUcgogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkNvbnRlbnRzU2NhbGVDaGFuZ2VkKQogICAgICAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCAiY29udGVudHNTY2FsZSIsIGxheWVyUHJvcGVydGllcy5jb250
ZW50c1NjYWxlKTsKIAorICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0
aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkNvcm5lclJhZGl1c0NoYW5nZWQpCisg
ICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJjb3JuZXJSYWRpdXMiLCBsYXllclByb3BlcnRp
ZXMuY29ybmVyUmFkaXVzKTsKKworICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQ
cm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlNoYXBlUm91bmRlZFJlY3RD
aGFuZ2VkKQorICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAic2hhcGVSZWN0IiwgbGF5ZXJQ
cm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPyAqbGF5ZXJQcm9wZXJ0aWVzLnNoYXBlUm91bmRl
ZFJlY3QgOiBGbG9hdFJvdW5kZWRSZWN0KCkpOworCiAgICAgICAgIGlmIChsYXllclByb3BlcnRp
ZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TWluaWZp
Y2F0aW9uRmlsdGVyQ2hhbmdlZCkKICAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgIm1pbmlm
aWNhdGlvbkZpbHRlciIsIGxheWVyUHJvcGVydGllcy5taW5pZmljYXRpb25GaWx0ZXIpOwogCkBA
IC0xMTg5LDYgKzEyMzYsOSBAQCBDU3RyaW5nIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpk
ZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlV2ViR0xMYXllcjoKICAgICAgICAgICAgICAgICB0cyA8PCAid2ViLWdsLWxheWVyIChj
b250ZXh0LWlkICIgPDwgY3JlYXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVNoYXBlTGF5ZXI6CisgICAgICAgICAgICAgICAgdHMgPDwgInNoYXBlLWxheWVyIjsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVDdXN0b206CiAgICAgICAgICAgICAgICAgdHMgPDwgImN1c3RvbS1sYXllciAo
Y29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKICAg
ICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRleCA4ZjdkYmE5ZTY3YzM1NjU2NTc4
NjYzYzcyMzExM2ExMDE2NjY0NjUyLi4zM2IwNTk5NGI5ZmU4N2VkZGViMTQwYTU1NWMzYTkxYmQ5
YWRlMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9SZW1v
dGVMYXllclRyZWVIb3N0SU9TLm1tCkBAIC04Myw2ICs4Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tDb21wb3NpdGluZ1ZpZXcKKwogLSAo
VUlWaWV3ICopaGl0VGVzdDooQ0dQb2ludClwb2ludCB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVu
dAogewogICAgIHJldHVybiBbc2VsZiBfZmluZERlc2NlbmRhbnRWaWV3QXRQb2ludDpwb2ludCB3
aXRoRXZlbnQ6ZXZlbnRdOwpAQCAtOTQsMTIgKzk1LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogICAgIE5TU3RyaW5nICp3ZWJLaXREZXRhaWxzID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIgbGF5ZXJJRCA9ICVsbHUgXCIlQFwiIiwgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVI
b3N0OjpsYXllcklEKHNlbGYubGF5ZXIpLCBzZWxmLmxheWVyLm5hbWUgPyBzZWxmLmxheWVyLm5h
bWUgOiBAIiJdOwogICAgIHJldHVybiBbdmlld0Rlc2NyaXB0aW9uIHN0cmluZ0J5QXBwZW5kaW5n
U3RyaW5nOndlYktpdERldGFpbHNdOwogfQorCiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tUcmFuc2Zv
cm1WaWV3IDogV0tDb21wb3NpdGluZ1ZpZXcKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLVHJh
bnNmb3JtVmlldworCiArIChDbGFzcylsYXllckNsYXNzCiB7CiAgICAgcmV0dXJuIFtDQVRyYW5z
Zm9ybUxheWVyIHNlbGZdOwpAQCAtMTE4LDEwICsxMjEsMjMgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIEBlbmQKIAorQGludGVyZmFjZSBXS1NoYXBlVmlldyA6IFdLQ29tcG9zaXRpbmdW
aWV3CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1NoYXBlVmlldworCisrIChDbGFzcylsYXll
ckNsYXNzCit7CisgICAgcmV0dXJuIFtDQVNoYXBlTGF5ZXIgc2VsZl07Cit9CisKK0BlbmQKKwog
QGludGVyZmFjZSBXS1JlbW90ZVZpZXcgOiBXS0NvbXBvc2l0aW5nVmlldwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV0tSZW1vdGVWaWV3CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1l
OihDR1JlY3QpZnJhbWUgY29udGV4dElEOih1aW50MzJfdCljb250ZXh0SUQgaG9zdGluZ0Rldmlj
ZVNjYWxlRmFjdG9yOihmbG9hdClzY2FsZUZhY3RvcgogewogICAgIGlmICgoc2VsZiA9IFtzdXBl
ciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpIHsKQEAgLTE3OSw2ICsxOTUsOSBAQCBMYXllck9yVmll
dyAqUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OgogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2aWV3ID0gYWRvcHROUyhb
W1dLQ29tcG9zaXRpbmdWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaW1wbGVMYXllcjoKKyAgICAgICAgdmlldyA9
IGFkb3B0TlMoW1tXS1NoYXBlVmlldyBhbGxvY10gaW5pdF0pOworICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5k
ZXggZmU1MDY3OTAzNGU2ZWU4OTg1YjA4OGQ3MzEwMThkZmVmNDdkNmQzYy4uMjg2YTY3NTYzOWQ2
MzAzMDE0MjgxMGE2MzY0ZWQxMTgxNTEzMWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjQzLDYgKzI0Myw5IEBA
IExheWVyT3JWaWV3ICpSZW1vdGVMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllcihjb25zdCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxheWVy
ID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNoYXBlTGF5ZXI6CisgICAgICAgIGxheWVy
ID0gYWRvcHROUyhbW0NBU2hhcGVMYXllciBhbGxvY10gaW5pdF0pOworICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNjNkNDc1ZjQ1MTE3MDE5ZDkxNzNkOTcwNTU2
NzU3MTFiNzBkYjFmOC4uMThiMDRhYjk0ZDExNDM4YWMwYmY3MzMyYzVjMzdjODA3Y2JhOThjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMTMyLDggKzEzMiwxNCBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6dXBkYXRlQ2xvbmVkTGF5ZXJQcm9wZXJ0aWVzKFBsYXRm
b3JtQ0FMYXllclJlbW90ZSYgYwogICAgIGNsb25lLnNldE9wYXF1ZShpc09wYXF1ZSgpKTsKICAg
ICBjbG9uZS5zZXRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKCkpOwogICAgIGNsb25l
LnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsKKyAgICBjbG9uZS5zZXRDb3JuZXJS
YWRpdXMoY29ybmVyUmFkaXVzKCkpOworCisgICAgaWYgKG1fcHJvcGVydGllcy5zaGFwZVJvdW5k
ZWRSZWN0KQorICAgICAgICBjbG9uZS5zZXRTaGFwZVJvdW5kZWRSZWN0KCptX3Byb3BlcnRpZXMu
c2hhcGVSb3VuZGVkUmVjdCk7CisKICAgICBpZiAobV9wcm9wZXJ0aWVzLmZpbHRlcnMpCiAgICAg
ICAgIGNsb25lLmNvcHlGaWx0ZXJzRnJvbSgqdGhpcyk7CisKICAgICBjbG9uZS51cGRhdGVDdXN0
b21BcHBlYXJhbmNlKGN1c3RvbUFwcGVhcmFuY2UoKSk7CiB9CiAKQEAgLTM2MCw2ICszNjYsMTIg
QEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OmFuaW1hdGlvbkZvcktleShjb25zdCBTdHIKICAgICByZXR1cm4gbV9hbmltYXRpb25zLmdldChr
ZXkpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNFcXVpdmFsZW50TGF5ZXIoY29uc3QgUGxh
dGZvcm1DQUxheWVyKiBsYXllciwgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVy
SUQpCit7CisgICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIG5ld0xheWVySUQgPSBs
YXllciA/IGxheWVyLT5sYXllcklEKCkgOiAwOworICAgIHJldHVybiBsYXllcklEID09IG5ld0xh
eWVySUQ7Cit9CisKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjphbmltYXRpb25TdGFydGVk
KGNvbnN0IFN0cmluZyYga2V5LCBDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpCiB7CiAgICAgYXV0
byBpdCA9IG1fYW5pbWF0aW9ucy5maW5kKGtleSk7CkBAIC0zNzgsNiArMzkwLDkgQEAgdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmFuaW1hdGlvbkVuZGVkKGNvbnN0IFN0cmluZyYga2V5KQog
CiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0TWFzayhQbGF0Zm9ybUNBTGF5ZXIqIGxh
eWVyKQogeworICAgIGlmIChpc0VxdWl2YWxlbnRMYXllcihsYXllciwgbV9wcm9wZXJ0aWVzLm1h
c2tMYXllcklEKSkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIGlmIChsYXllcikgewogICAg
ICAgICBtX21hc2tMYXllciA9IGRvd25jYXN0PFBsYXRmb3JtQ0FMYXllclJlbW90ZT4obGF5ZXIp
OwogICAgICAgICBtX3Byb3BlcnRpZXMubWFza0xheWVySUQgPSBtX21hc2tMYXllci0+bGF5ZXJJ
RCgpOwpAQCAtMzkxLDYgKzQwNiw5IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRN
YXNrKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpzZXRDbG9uZWRMYXllcihjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQogeworICAgIGlm
IChpc0VxdWl2YWxlbnRMYXllcihsYXllciwgbV9wcm9wZXJ0aWVzLmNsb25lZExheWVySUQpKQor
ICAgICAgICByZXR1cm47CisKICAgICBpZiAobGF5ZXIpCiAgICAgICAgIG1fcHJvcGVydGllcy5j
bG9uZWRMYXllcklEID0gbGF5ZXItPmxheWVySUQoKTsKICAgICBlbHNlCkBAIC02NTYsMTIgKzY3
NCw0MCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0Q29udGVudHNTY2FsZShmbG9h
dCB2YWx1ZSkKICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKIH0KIAorZmxvYXQgUGxhdGZvcm1D
QUxheWVyUmVtb3RlOjpjb3JuZXJSYWRpdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX3Byb3Bl
cnRpZXMuY29ybmVyUmFkaXVzOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0
Q29ybmVyUmFkaXVzKGZsb2F0IHZhbHVlKQoreworICAgIGlmIChtX3Byb3BlcnRpZXMuY29ybmVy
UmFkaXVzID09IHZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb3BlcnRpZXMuY29y
bmVyUmFkaXVzID0gdmFsdWU7CisgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdl
ZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q29ybmVyUmFkaXVzQ2hhbmdlZCk7Cit9CisK
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRFZGdlQW50aWFsaWFzaW5nTWFzayh1bnNp
Z25lZCB2YWx1ZSkKIHsKICAgICBtX3Byb3BlcnRpZXMuZWRnZUFudGlhbGlhc2luZ01hc2sgPSB2
YWx1ZTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpFZGdlQW50aWFsaWFzaW5nTWFza0NoYW5nZWQpOwogfQogCitGbG9h
dFJvdW5kZWRSZWN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2hhcGVSb3VuZGVkUmVjdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID8gKm1fcHJv
cGVydGllcy5zaGFwZVJvdW5kZWRSZWN0IDogRmxvYXRSb3VuZGVkUmVjdChGbG9hdFJlY3QoKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRSZWN0KGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0KQoreworICAgIGlmIChtX3Byb3BlcnRp
ZXMuc2hhcGVSb3VuZGVkUmVjdCAmJiAqbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPT0g
cm91bmRlZFJlY3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvcGVydGllcy5zaGFwZVJv
dW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVj
dCk7CisgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6U2hhcGVSb3VuZGVkUmVjdENoYW5nZWQpOworfQorCiBib29sIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6cmVxdWlyZXNDdXN0b21BcHBlYXJhbmNlVXBkYXRlT25Cb3VuZHND
aGFuZ2UoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3BlcnRpZXMuY3VzdG9tQXBwZWFyYW5j
ZSA9PSBHcmFwaGljc0xheWVyOjpTY3JvbGxpbmdTaGFkb3c7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaAppbmRleCA0OWNmYTkxNmE2NmVhZGJlMWJlNWQ3ZWFlZjUwYzU1MDE5YmMwZGQyLi5kNjBh
YzM1NDRhYmMzOGVlYmFiYzIzMTkxNWMyNGY2ZWY5MDZjOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmgKQEAgLTEzOSw4ICsxMzksMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQg
Y29udGVudHNTY2FsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1NjYWxlKGZsb2F0KSBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwgZmxvYXQgY29ybmVyUmFk
aXVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldENvcm5lclJhZGl1cyhm
bG9hdCkgb3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRnZUFudGlhbGlhc2luZ01h
c2sodW5zaWduZWQpIG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJvdW5k
ZWRSZWN0IHNoYXBlUm91bmRlZFJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2hhcGVSb3VuZGVkUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Jikg
b3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFw
cGVhcmFuY2UgY3VzdG9tQXBwZWFyYW5jZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDdXN0b21BcHBlYXJhbmNlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkN1c3Rv
bUFwcGVhcmFuY2UpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjQ1YTQxMjE1YWYzZmJmZjI0NWZmOGZl
MDE1MmM2YmY3YTc1NDYxNS4uYTcxYTcyZjBjYmIyNTA3YmQ4M2VhOTJkYWI2MTAwMGQxNmUwMTk5
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTExLTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByb3VuZC1yZWN0IGNsaXBw
aW5nIG9uIHZpZGVvIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzg1MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIFRlc3QgdGhhdCB1c2VzIGNsaXAoKSB0byBjb21wYXJlIGEg
Yml0IG9mIHJvdW5kZWQtcmVjdCB2aWRlbyBpbiB0aGUgY29ybmVyLgorICAgICAgICBSZWJhc2Vs
aW5lZCB0ZXN0IHRoYXQgZHVtcGVkIGNvbnRlbnRzIGxheWVycy4KKworICAgICAgICAqIGNvbXBv
c2l0aW5nL3ZpZGVvL3ZpZGVvLWJvcmRlci1yYWRpdXMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYm9yZGVyLXJhZGl1cy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvZGlyZWN0
LWltYWdlLW9iamVjdC1maXQtcmVmbGVjdGVkLWV4cGVjdGVkLnR4dDoKKwogMjAxNC0xMS0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgJ3dlYmtpdC1j
bGlwLXBhdGgnIENTUyBwcm9wZXJ0eSB0byB0aGUgbmV3IFN0eWxlQnVpbGRlcgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYm9yZGVyLXJhZGl1cy1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYm9yZGVyLXJh
ZGl1cy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1YzYxMDU2NGM0MDU5MjgwOTQ1ZTc2OTBm
ODVlZmMwY2RiMDllYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy92aWRlby92aWRlby1ib3JkZXItcmFkaXVzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw2MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgIC53cmFwcGVy
IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBjbGlwOiByZWN0KDAsIDIw
cHgsIDUwcHgsIDApOworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmF5OworICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMjUwcHg7CisgICAgICAgIG1hcmdpbjogNXB4
OworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgLXdlYmtpdC1ib3gt
cmVmbGVjdDogcmlnaHQgMTBweDsKKyAgICB9CisKKyAgICAud3JhcHBlci5ub24tdW5pZm9ybSB7
CisgICAgICAgIGNsaXA6IHJlY3QoMCwgNTBweCwgMjBweCwgMCk7CisgICAgfQorCisgICAgLndy
YXBwZXIgPiAub2JzY3VyZXIgeworICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CisgICAgfQor
ICAgIC5ub24tdW5pZm9ybS53cmFwcGVyID4gLm9ic2N1cmVyIHsKKyAgICAgICAgYm9yZGVyLXRv
cC1sZWZ0LXJhZGl1czogMzAwcHggMTAwcHg7CisgICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQt
cmFkaXVzOiAyNTBweCAxMHB4OworICAgIH0KKyAgICAKKyAgICAub2JzY3VyZXIgeworICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICBoZWln
aHQ6IDEwMCU7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKyAgICAK
KyAgICAuY29tcG9zaXRlZCB7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigw
KTsKKyAgICB9CisgICAgCisgICAgLmJveCB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICAgICAgdG9wOiAxMDBweDsKKyAgICAgICAgbGVmdDogMTAwcHg7CisgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjogYmx1ZTsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgCisgICAgPGRp
diBjbGFzcz0id3JhcHBlciI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgYm94Ij48
L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0ib2JzY3VyZXIiPjwvZGl2PgorICAgIDwvZGl2Pgor
CisgICAgPGRpdiBjbGFzcz0id3JhcHBlciBub24tdW5pZm9ybSIgc3R5bGU9InRvcDogMTAwcHg7
Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCBib3giPjwvZGl2PgorICAgICAgICA8
ZGl2IGNsYXNzPSJvYnNjdXJlciI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aWRlby92aWRlby1ib3JkZXIt
cmFkaXVzLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy92aWRlby92aWRlby1ib3JkZXIt
cmFkaXVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWExMDg1MDU0NTdlZjc2ZmE5ZDYzNzE2ZmIyY2MwNDA5
NjI0OTQ5YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3ZpZGVv
L3ZpZGVvLWJvcmRlci1yYWRpdXMuaHRtbApAQCAtMCwwICsxLDg0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgLndyYXBwZXIgeworICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICAgIGNsaXA6IHJlY3QoMCwgMjBweCwgNTBweCwgMCk7Cisg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyYXk7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNTBweDsKKyAgICAgICAgbWFyZ2luOiA1cHg7CisgICAgICAgIGJvcmRl
cjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgICAtd2Via2l0LWJveC1yZWZsZWN0OiByaWdodCAx
MHB4OworICAgIH0KKyAgICAKKyAgICAud3JhcHBlci5ub24tdW5pZm9ybSB7CisgICAgICAgIGNs
aXA6IHJlY3QoMCwgNTBweCwgMjBweCwgMCk7CisgICAgfQorCisgICAgdmlkZW8geworICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMXB4OyAvKiBpbnNldCBzbGlnaHRs
eSB0byBhdm9pZCBhbnRpYWxpYXNpbmcgZGlmZnMgKi8KKyAgICAgICAgbGVmdDogMXB4OworICAg
ICAgICB3aWR0aDogMjk4cHg7CisgICAgICAgIGhlaWdodDogMjQ4cHg7CisgICAgICAgIGJvcmRl
ci1yYWRpdXM6IDUwJTsKKyAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICB9Cisg
ICAgCisgICAgLndyYXBwZXIgPiAqIHsKKyAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOworICAg
IH0KKworICAgIC5ub24tdW5pZm9ybS53cmFwcGVyID4gKiB7CisgICAgICAgIGJvcmRlci1yYWRp
dXM6IDUwJTsKKyAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMzAwcHggMTAwcHg7Cisg
ICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAyNTBweCAxMHB4OworICAgIH0KKyAg
ICAKKyAgICAub2JzY3VyZXIgeyAvKiBUaGlzIHNob3VsZCBjb3ZlciB0aGUgdmlkZW8gKi8KKyAg
ICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMTAwJTsKKyAgICAgICAg
aGVpZ2h0OiAxMDAlOworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8
L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL21lZGlhL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgZnVuY3Rpb24gaW5pdCgpCisgICAgeworICAgICAg
ICBzZXRTcmNCeVRhZ05hbWUoInZpZGVvIiwgZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vLi4v
bWVkaWEvY29udGVudC9jb3VudGluZyIpKTsKKworICAgICAgICB2YXIgdG90YWxDb3VudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpLmxlbmd0aDsKKyAgICAgICAgdmFy
IGNvdW50ID0gdG90YWxDb3VudDsKKyAgICAgICAgd2luZG93LmNvbnNvbGUubG9nKCdsb2FkaW5n
IHZpZGVvcycpCisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNhbnBsYXl0aHJv
dWdoIiwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgd2luZG93LmNvbnNvbGUubG9nKCdsb2Fk
ZWQgdmlkZW9zICcgKyBjb3VudCkKKyAgICAgICAgICAgIGlmICghLS1jb3VudCkgeworICAgICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9LCB0b3RhbENvdW50ICogMTUwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwgdHJ1ZSk7CisgICAgfQorPC9zY3JpcHQ+CisKKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpOyI+CisgICAgCisgICAgPGRpdiBjbGFzcz0id3Jh
cHBlciI+CisgICAgICAgIDx2aWRlbz48L3ZpZGVvPgorICAgICAgICA8ZGl2IGNsYXNzPSJvYnNj
dXJlciI+PC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJ3cmFwcGVyIG5vbi11
bmlmb3JtIiBzdHlsZT0idG9wOiAxMDBweDsiPgorICAgICAgICA8dmlkZW8+PC92aWRlbz4KKyAg
ICAgICAgPGRpdiBjbGFzcz0ib2JzY3VyZXIiPjwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5n
L3JlZmxlY3Rpb25zL2RpcmVjdC1pbWFnZS1vYmplY3QtZml0LXJlZmxlY3RlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvZGly
ZWN0LWltYWdlLW9iamVjdC1maXQtcmVmbGVjdGVkLWV4cGVjdGVkLnR4dAppbmRleCAyNWNjYmE1
NTZjNmQxZDJjZThiYTI1OTZhMGExODYxZWFiYzc0YmM5Li4yNDEzYWQxZDllNWJjODYwZGRmYWJh
NWIxZmJmOWRiOWU4NTI1NGZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvZGlyZWN0LWltYWdlLW9iamVjdC1maXQtcmVmbGVjdGVk
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcv
cmVmbGVjdGlvbnMvZGlyZWN0LWltYWdlLW9iamVjdC1maXQtcmVmbGVjdGVkLWV4cGVjdGVkLnR4
dApAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgICAgICAodHJhbnNmb3JtIFsxLjAwIDAuMDAg
MC4wMCAwLjAwXSBbMC4wMCAtMS4wMCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBb
MC4wMCAxNDAuMDAgMC4wMCAxLjAwXSkKICAgICAgICAgICAgICAgKHJlcGxpY2F0ZWQgbGF5ZXIp
CiAgICAgICAgICAgICApCisgICAgICAgICAgKHN0cnVjdHVyYWwgbGF5ZXIgMTI4LjAwLCA4OC4w
MCAyMDAuMDAgeCAxMjAuMDApCiAgICAgICAgICAgKGNvbnRlbnRzIGNsaXBwaW5nIGxheWVyIDAu
MDAsIDAuMDAgMjAwLjAwIHggMTIwLjAwKQogICAgICAgICAgIChjb250ZW50cyBsYXllciAtMjAu
MDAsIDAuMDAgMjQwLjAwIHggMTIwLjAwKQogICAgICAgICApCkBAIC0yOCw2ICsyOSw3IEBACiAg
ICAgICAgICAgICAgICh0cmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIC0xLjAw
IDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDE0MC4wMCAwLjAwIDEuMDBd
KQogICAgICAgICAgICAgICAocmVwbGljYXRlZCBsYXllcikKICAgICAgICAgICAgICkKKyAgICAg
ICAgICAoc3RydWN0dXJhbCBsYXllciAzNzIuMDAsIDg4LjAwIDIwMC4wMCB4IDEyMC4wMCkKICAg
ICAgICAgICAoY29udGVudHMgbGF5ZXIgMC4wMCwgMTAuMDAgMjAwLjAwIHggMTAwLjAwKQogICAg
ICAgICApCiAgICAgICAgIChHcmFwaGljc0xheWVyCkBAIC0zOSw2ICs0MSw3IEBACiAgICAgICAg
ICAgICAgICh0cmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIC0xLjAwIDAuMDAg
MC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDE0MC4wMCAwLjAwIDEuMDBdKQogICAg
ICAgICAgICAgICAocmVwbGljYXRlZCBsYXllcikKICAgICAgICAgICAgICkKKyAgICAgICAgICAo
c3RydWN0dXJhbCBsYXllciA2MTYuMDAsIDg4LjAwIDIwMC4wMCB4IDEyMC4wMCkKICAgICAgICAg
ICAoY29udGVudHMgY2xpcHBpbmcgbGF5ZXIgMC4wMCwgMC4wMCAyMDAuMDAgeCAxMjAuMDApCiAg
ICAgICAgICAgKGNvbnRlbnRzIGxheWVyIC00NC4wMCwgLTEyLjAwIDI4OC4wMCB4IDE0NC4wMCkK
ICAgICAgICAgKQo=
</data>
<flag name="review"
          id="266074"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>