<?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>185806</bug_id>
          
          <creation_ts>2018-05-20 11:39:15 -0700</creation_ts>
          <short_desc>SVG2 Implement getBBox dictionary argument</short_desc>
          <delta_ts>2019-11-04 12:27:35 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>191292</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1425505</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2018-05-20 11:39:15 -0700</bug_when>
    <thetext>getBBox takes an dictionary argument in SVG2 to describe which box the user requests: https://svgwg.org/svg2-draft/types.html#__svg__SVGGraphicsElement__getBBox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584232</commentid>
    <comment_count>1</comment_count>
      <attachid>382013</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2019-10-26 07:16:00 -0700</bug_when>
    <thetext>Created attachment 382013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584260</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2019-10-26 11:29:42 -0700</bug_when>
    <thetext>Turns out that getBBox seems to be broken for foreignObject. I am not taking that on with the patch above but will create a new bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587083</commentid>
    <comment_count>3</comment_count>
      <attachid>382013</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-11-04 12:27:35 -0800</bug_when>
    <thetext>Comment on attachment 382013
Patch

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

Nice patch, I like this particular new SVG2 feature! Here&apos;s a first unofficial review:

&gt; Source/WebCore/ChangeLog:21
&gt; +                need the heuristics here to be as compatible with other implementations

other impls? Can you elaborate on this?

&gt; Source/WebCore/ChangeLog:22
&gt; +                as possible. (Algorithm is specified by CSS Masking)

Concrete link would be helpful.

&gt; Source/WebCore/rendering/RenderObject.cpp:1805
&gt; +FloatRect RenderObject::strokeBoundingBoxDOM() const

This name is confusing and not self-explanatory.

&gt; Source/WebCore/rendering/RenderObject.cpp:1811
&gt; +FloatRect RenderObject::getBBox(const SVGBoundingBoxFlags) const

Confusion++ - we should try hard to avoid adding new virtual functions to RenderObject.
The naming follows the SVG2 spec but we should avoid that, getBBox is a bad name.

I would prefer to see one function that unifies computing all the different bounding boxes that are needed for SVG...
FloatRect RenderObject::computeSVGBoundingBox(SVGBoundingBoxType)

&gt; Source/WebCore/rendering/RenderObject.h:369
&gt; +    // SVG 2 introduced one function to compute 

to compute what? The name sounds confusing

&gt; Source/WebCore/rendering/RenderObjectEnums.h:78
&gt; +typedef unsigned SVGBoundingBoxFlags;

This is using a legacy way to define flags. enum class + OptionSet seems the more modern choice, no?

&gt; Source/WebCore/rendering/svg/RenderSVGContainer.cpp:154
&gt; +    SVGRenderSupport::computeContainerBoundingBoxes(*this, m_objectBoundingBox, m_objectBoundingBoxValid, m_strokeBoundingBox, m_strokeBoundingBoxDOM, m_repaintBoundingBox);

This function should not be extended with another argument, but instead a helper struct/class holding the various bounding boxes could be introduced.

&gt; Source/WebCore/rendering/svg/RenderSVGShape.cpp:436
&gt; +    // https://drafts.fxtf.org/css-masking-1/#compute-stroke-bounding-box

Aha, here is the spec link I asked for in the ChangeLog :-)

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:177
&gt; +    const float sqrt2 = std::sqrt(2);

constexpr would make more sense, to avoid runtime computations (probably the compiler is clever enough in any way, but I did not verify this -- better use constexpr where it makes sense).

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:183
&gt; +            inflateDelta *= inflateDelta * inflateDelta;

std::pow(inflateDelta, 2) is superior to x*x on some platforms (but only the variant that uses integer exponents, std::pow(x, 2.0) is slower).

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:188
&gt; +FloatRect SVGRenderSupport::getBBox(const RenderElement&amp; element, const SVGBoundingBoxFlags options)

I do not see the need for the const.
But I&apos;d advice to avoid using &quot;unsigned&quot; as flag type, but use a type-safe way... OptionSet.

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:196
&gt; +        return box;

return {}, move FloatRect box below.

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:199
&gt; +        if (!is&lt;RenderElement&gt;(child))

Why branch here? You can ask for childrenOfType&lt;RenderElement&gt;.

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:201
&gt; +        box.unite(getBBox(downcast&lt;RenderElement&gt;(child), options));

What about empty child bounding boxes? Do we need to take special care here.

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:205
&gt; +    bool isNotAContainer = isShape || is&lt;RenderSVGShape&gt;(element) || is&lt;RenderSVGImage&gt;(element) || is&lt;RenderSVGForeignObject&gt;(element);

The second if condition is superfluous.
There are more cases that &quot;are not a container&quot; - the variable naming is confusing.

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:213
&gt; +        downcast&lt;RenderSVGShape&gt;(element).uniteRectWithMarkerRect(box);

This could be written in the same way as above, if we had proper accessors for the marker bounds.

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:360
&gt; +    if (RenderSVGResourceClipper* clipper = resources-&gt;clipper())

s/RenderSVGResourceClipper/auto/ ?

&gt; Source/WebCore/svg/SVGGraphicsElement.h:38
&gt; +    struct BoundingBoxOptions {

This is the recommended way to handle &quot;dict&quot; options exposed to the bindings?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382013</attachid>
            <date>2019-10-26 07:16:00 -0700</date>
            <delta_ts>2019-10-26 07:16:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185806-20191026161557.patch</filename>
            <type>text/plain</type>
            <size>62994</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNmYzQzNzM5YTE3MGRk
ODQ0MTkzODVjMDk1Yjk2YjFmYmRkOTI3Ni4uMzIwZDNlOGExNGZiZWI1ZmY4ZTUyNmVlZWEyYjM1
MDczOTZiZWE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE5LTEwLTI2ICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgU1ZHMiBJbXBsZW1lbnQgZ2V0
QkJveCBkaWN0aW9uYXJ5IGFyZ3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODU4MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbmV3IGdldEJCb3goKSBwYXJhbWV0ZXIg
U1ZHQm91bmRpbmdCb3hPcHRpb25zLAorICAgICAgICBhIGRpY3Rpb25hcnkgd2l0aCA0IGJvb2xl
YW5zIGZvcjogZmlsbCwgc3Ryb2tlLCBtYXJrZXJzIGFuZCBjbGlwcGluZy4KKyAgICAgICAgV2l0
aCB0aGUgZXhjZXB0aW9uIG9mIGNsaXBwaW5nLCBhbGwgb3RoZXIgYm94ZXMgYWRkIHVwLgorICAg
ICAgICAqIGZpbGw6IHJlcHJlc2VudHMgdGhlIG9iamVjdCBib3VuZGluZyBib3gKKyAgICAgICAg
KiBzdHJva2U6IHRoZSBoZXVyaXN0aWMgZm9yIHRoZSBzdHJva2UgYm91bmRpbmcgYm94IHcvbyBk
YXNoIGFycmF5cworICAgICAgICAqIG1hcmtlcnM6IFRoZSB2aXN1YWwgYm91bmRzIG9mIGV2ZW50
dWFsbHkgYXBwbGllZCBtYXJrZXJzCisgICAgICAgICogY2xpcHBpbmc6IEludGVyc2VjdCB0aGUg
Y29tYmluYXRpb24gb2YgcHJldmlvdXMgYm91bmRzIHdpdGggdGhlIGNsaXBwaW5nLgorCisgICAg
ICAgIFRlc3Q6IHN2Zy9jdXN0b20vZ2V0QkJveC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c3Ryb2tl
Qm91bmRpbmdCb3hET00gY29uc3QpOgorICAgICAgICAgICAgICAgIFRoZSBjdXJyZW50IHN0cm9r
ZUJvdW5kaW5nQm94IGZ1bmN0aW9uIHJldHVybnMgdGhlIHZpc3VhbCBib3VuZHMuIFdlCisgICAg
ICAgICAgICAgICAgbmVlZCB0aGUgaGV1cmlzdGljcyBoZXJlIHRvIGJlIGFzIGNvbXBhdGlibGUg
d2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgICAgICAgICBhcyBwb3NzaWJsZS4g
KEFsZ29yaXRobSBpcyBzcGVjaWZpZWQgYnkgQ1NTIE1hc2tpbmcpCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmdldEJCb3ggY29uc3QpOiBBIHZpcnR1YWwgZnVuY3Rpb24gdG8gY29t
cHV0ZSB0aGUgbmV3CisgICAgICAgICAgICAgICAgYm91bmRpbmcgYm94ZXMuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3RFbnVtcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnVwZGF0ZUNhY2hlZEJvdW5kYXJpZXMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpzdHJva2VCb3VuZGluZ0Jv
eERPTSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jvb3Q6OnVwZGF0ZUNhY2hlZEJvdW5kYXJpZXMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnVuaXRlUmVjdFdp
dGhNYXJrZXJSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpz
dHJva2VCb3VuZGluZ0JveERPTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdT
aGFwZTo6Y2FsY3VsYXRlU3Ryb2tlQm91bmRpbmdCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHU2hhcGU6Om1hcmtlclJlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6c3Ry
b2tlQm91bmRpbmdCb3hET00gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlQ29udGFpbmVyQm91
bmRpbmdCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjpnZXRCQm94
KToKKyAgICAgICAgICAgICAgICBBbGwgU1ZHIHJlbmRlcmVyIGNhbGwgdGhpcyBmdW5jdGlvbiB3
aGljaCB3aWxsIGRvIHRoZSBhY3R1YWwKKyAgICAgICAgICAgICAgICBjb21wdXRhdGlvbiBvZiB0
aGUgcmVxdWVzdGVkIGJvdW5kaW5nIGJveC4gQXQgdGhlIG1vbWVudCwgb25seQorICAgICAgICAg
ICAgICAgIHRoZSBvYmplY3QgYm91bmRpbmcgYm94IGdldHMgc2F2ZWQgZm9yIGFuIG9wdGltaXph
dGlvbiBzaW5jZSB3ZQorICAgICAgICAgICAgICAgIG5lZWQgaXQgaW4gbWFueSBwbGFjZXMuIEFs
bCBvdGhlciBib3hlcyBnZXQgY29tcHV0ZWQgYXMgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVuZGVyU3VwcG9ydDo6aW50ZXJzZWN0UmVjdFdpdGhDbGlwcGluZ0FyZWEpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oOgorICAgICAgICAqIHN2Zy9TVkdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmdldEJvdW5kaW5nQm94
KToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6Z2V0QkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OmdldEJCb3hGb3JCaW5kaW5ncyk6CisgICAgICAgICogc3ZnL1NWR0dy
YXBoaWNzRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaWRsOgor
ICAgICAgICAqIHN2Zy9TVkdMb2NhdGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTG9j
YXRhYmxlOjpnZXRCQm94KTogRGVsZXRlZC4KKyAgICAgICAgICAgICAgICBNb3ZlZCB0byBTVkdH
cmFwaGljc0VsZW1lbnQgYWNjb3JkaW5nIHRvIFNWRyAyLgorICAgICAgICAqIHN2Zy9TVkdMb2Nh
dGFibGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmdldEJCb3gpOiBEZWxldGVkLgorICAgICAgICAgICAgICAg
IE1vdmVkIHRvIFNWR0dyYXBoaWNzRWxlbWVudCBhY2NvcmRpbmcgdG8gU1ZHIDIuCisgICAgICAg
ICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisKIDIwMTktMTAtMjIgIHlvdWVubiBmYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENhcnJpYWdlIHJldHVybiBjaGFyYWN0ZXIgc29t
ZXRpbWVzIG1pc3NpbmcgaW4gU0RQIGMtbGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAppbmRleCA4ZmU3MDNhNDU3MmE5ZjczMzNjYjhkMmFhMDlmZmY5Yzk5OTk4
ZDJiLi45MGE4MzFkMDhjZjQ2MjFjNDMyNjI3NTJmNDMzYTdhNzk5NWMzZjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTgwMiw2ICsxODAyLDE4IEBA
IEZsb2F0UmVjdCBSZW5kZXJPYmplY3Q6OnN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QKICAgICBy
ZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKK0Zsb2F0UmVjdCBSZW5kZXJPYmplY3Q6OnN0cm9rZUJv
dW5kaW5nQm94RE9NKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gRmxvYXRSZWN0KCk7Cit9CisKK0Zsb2F0UmVjdCBSZW5kZXJPYmplY3Q6OmdldEJCb3go
Y29uc3QgU1ZHQm91bmRpbmdCb3hGbGFncykgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KCk7Cit9CisKIC8vIFJldHVybnMgdGhlIHNtYWxs
ZXN0IHJlY3RhbmdsZSBlbmNsb3NpbmcgYWxsIG9mIHRoZSBwYWludGVkIGNvbnRlbnQKIC8vIHJl
c3BlY3RpbmcgY2xpcHBpbmcsIG1hc2tpbmcsIGZpbHRlcnMsIG9wYWNpdHksIHN0cm9rZS13aWR0
aCBhbmQgbWFya2VycwogRmxvYXRSZWN0IFJlbmRlck9iamVjdDo6cmVwYWludFJlY3RJbkxvY2Fs
Q29vcmRpbmF0ZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDc2ZTI4ZDdkZjM0Mjk4MTM5YzI4ZDZiZTM3ZDY3M2I3M2YzYjczOWUuLjJkZGU0Y2Nk
ZmI4Y2ZiZTUzOTliN2Q2MTBhOGNkNmVmNWY2YmVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTM2Niw2ICszNjYsOSBAQCBwdWJsaWM6CiAgICAgLy8gVGhl
IG5hbWUgb2JqZWN0Qm91bmRpbmdCb3ggaXMgdGFrZW4gZnJvbSB0aGUgU1ZHIDEuMSBzcGVjLgog
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgdmly
dHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdDsKKyAgICAvLyBTVkcgMiBp
bnRyb2R1Y2VkIG9uZSBmdW5jdGlvbiB0byBjb21wdXRlIAorICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHN0cm9rZUJvdW5kaW5nQm94RE9NKCkgY29uc3Q7CisgICAgdmlydHVhbCBGbG9hdFJlY3QgZ2V0
QkJveChjb25zdCBTVkdCb3VuZGluZ0JveEZsYWdzID0gU1ZHQm91bmRpbmdCb3hPcHRpb25zOjpJ
bmNsdWRlRmlsbCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBzbWFsbGVzdCByZWN0YW5n
bGUgZW5jbG9zaW5nIGFsbCBvZiB0aGUgcGFpbnRlZCBjb250ZW50CiAgICAgLy8gcmVzcGVjdGlu
ZyBjbGlwcGluZywgbWFza2luZywgZmlsdGVycywgb3BhY2l0eSwgc3Ryb2tlLXdpZHRoIGFuZCBt
YXJrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
RW51bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RFbnVtcy5oCmlu
ZGV4IDE3YzQzNmMzOTZhMjBlMjJmMWQ4N2ZkNzEwOGMwNGE2MTZiMDA0NGMuLjRkMzc1MWQwN2Uz
Mzc3MGI2ZjYwN2MwMzZhZGJmN2VhZGRmNGIxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3RFbnVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3RFbnVtcy5oCkBAIC02OSw0ICs2OSwxMiBAQCBlbnVtIE1hcENvb3Jk
aW5hdGVzTW9kZSB7CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBNYXBDb29yZGluYXRlc0ZsYWdzOwog
CitlbnVtIFNWR0JvdW5kaW5nQm94T3B0aW9ucyB7CisgICAgSW5jbHVkZUZpbGwgPSAxIDw8IDAs
CisgICAgSW5jbHVkZVN0cm9rZSA9IDEgPDwgMSwKKyAgICBJbmNsdWRlTWFya2VycyA9IDEgPDwg
MiwKKyAgICBDbGlwVG9DbGlwUmVnaW9uID0gMSA8PCAzCit9OwordHlwZWRlZiB1bnNpZ25lZCBT
VkdCb3VuZGluZ0JveEZsYWdzOworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggZjhiZDNiMjE4YjA2YjVhNGYxZTBlNjY1NzViZmEyZGQ2
YmZkY2U3Ny4uYWY5NjUwOGY1ZTNiZDE1OWIyMmYxZjE3MGE1Y2FlNWY1NmE4OTc0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtMjEsNiAr
MjEsNyBAQAogCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCiAjaW5jbHVkZSAiU1ZHR3Jh
cGhpY3NFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTMxLDYgKzMyLDggQEAgY2xhc3MgUmVuZGVyU1ZHQmxvY2sgOiBw
dWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKICAgICBTVkdHcmFwaGljc0VsZW1lbnQm
IGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR0dyYXBoaWNzRWxl
bWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCisgICAgRmxvYXRSZWN0IGdldEJCb3go
Y29uc3QgU1ZHQm91bmRpbmdCb3hGbGFncyBvcHRpb25zID0gU1ZHQm91bmRpbmdCb3hPcHRpb25z
OjpJbmNsdWRlRmlsbCkgY29uc3QgZmluYWwgeyByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Z2V0
QkJveCgqdGhpcywgb3B0aW9ucyk7IH0KKwogcHJvdGVjdGVkOgogICAgIFJlbmRlclNWR0Jsb2Nr
KFNWR0dyYXBoaWNzRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggOThiMzE1ZDY3NDQzZTU2YmE0MDRjMjUxMmVj
MTI1YTQ1YTYwOGJkYy4uYTc0NWQ2ZTRlYzdmM2M2ZjEwYjU4M2RmMGE0ZjZiZjEzNDczYjM1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjphZGRG
b2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvCiAKIHZv
aWQgUmVuZGVyU1ZHQ29udGFpbmVyOjp1cGRhdGVDYWNoZWRCb3VuZGFyaWVzKCkKIHsKLSAgICBT
VkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlQ29udGFpbmVyQm91bmRpbmdCb3hlcygqdGhpcywgbV9v
YmplY3RCb3VuZGluZ0JveCwgbV9vYmplY3RCb3VuZGluZ0JveFZhbGlkLCBtX3N0cm9rZUJvdW5k
aW5nQm94LCBtX3JlcGFpbnRCb3VuZGluZ0JveCk7CisgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29t
cHV0ZUNvbnRhaW5lckJvdW5kaW5nQm94ZXMoKnRoaXMsIG1fb2JqZWN0Qm91bmRpbmdCb3gsIG1f
b2JqZWN0Qm91bmRpbmdCb3hWYWxpZCwgbV9zdHJva2VCb3VuZGluZ0JveCwgbV9zdHJva2VCb3Vu
ZGluZ0JveERPTSwgbV9yZXBhaW50Qm91bmRpbmdCb3gpOwogICAgIFNWR1JlbmRlclN1cHBvcnQ6
OmludGVyc2VjdFJlcGFpbnRSZWN0V2l0aFJlc291cmNlcygqdGhpcywgbV9yZXBhaW50Qm91bmRp
bmdCb3gpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdDb250YWluZXIuaAppbmRleCA4ZDczMDA1MTM1NTIzYmRhNDYyZTI5ZTg0NTE2YWVkYzJjZTYz
ODRjLi5hNGIwY2EzMGZkNTE1NzdhYmEwMGRmNWYxMWJiODc4NmU2NDY2YzgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTUy
LDYgKzUyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9vYmplY3RCb3VuZGluZ0JveDsgfQogICAgIEZsb2F0
UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc3Ryb2tlQm91
bmRpbmdCb3g7IH0KKyAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3hET00oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94RE9NOyB9CiAgICAgRmxvYXRSZWN0IHJl
cGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXBh
aW50Qm91bmRpbmdCb3g7IH0KIAogICAgIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFy
ZW50LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKQEAgLTc0LDYgKzc1LDcgQEAgcHJpdmF0ZToK
IAogICAgIEZsb2F0UmVjdCBtX29iamVjdEJvdW5kaW5nQm94OwogICAgIEZsb2F0UmVjdCBtX3N0
cm9rZUJvdW5kaW5nQm94OworICAgIEZsb2F0UmVjdCBtX3N0cm9rZUJvdW5kaW5nQm94RE9NOwog
ICAgIEZsb2F0UmVjdCBtX3JlcGFpbnRCb3VuZGluZ0JveDsKIAogICAgIGJvb2wgbV9vYmplY3RC
b3VuZGluZ0JveFZhbGlkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKaW5kZXggYzI4MWUxYzUyYWY4NDFi
MmQ3ZDBmMGM2YmE5YWQwMTJhZjEyY2QwZS4uNDFmZDQ5YmVkMDM1ZmFiZmI1NmJjNDAzZTE5YTYz
MDUxMDdlZDU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdGb3JlaWduT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogCiAgICAg
RmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9CiAgICAgRmxvYXRSZWN0
IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9CisgICAgRmxvYXRSZWN0IHN0cm9rZUJv
dW5kaW5nQm94RE9NKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5M
b2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9CiAKICAgICBib29sIG5vZGVBdEZsb2F0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CkBAIC03NSwzICs3Niw1
IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJTVkdGb3JlaWduT2JqZWN0LCBpc1NWR0Zv
cmVpZ25PYmplY3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0dyYWRpZW50U3RvcC5oCmluZGV4IDM1NTBlZDE1ZmIzZDM3ZTY1ZGE4MGE3YjE4NWUw
NmYwZmM0ZmQyMjQuLjkxNDUwMmRkNjMwZGRkNmM3YjA1ZDU4YjAzOGE0MGYyOWE4YjBkOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRT
dG9wLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVu
dFN0b3AuaApAQCAtNDgsNiArNDgsNyBAQCBwcml2YXRlOgogICAgIExheW91dFJlY3QgY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogICAgIEZsb2F0UmVjdCBvYmpl
Y3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CiAg
ICAgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
RmxvYXRSZWN0KCk7IH0KKyAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3hET00oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogICAgIEZsb2F0UmVjdCByZXBhaW50
UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVj
dCgpOyB9CiAgICAgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBIaXRUZXN0QWN0aW9uKSBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmgKaW5kZXggNzQxNDhjNTkwZTg1ODU3YWM5MTk1MGExNzg0Mzg4Y2Y4ZTFi
YTFkNi4uY2QzN2YxMGQ5NTg5ZWMxZjMzOGM4YjMwMjczMTVkYjEwMzQ0NDM4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtNjUsNiArNjUs
NyBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVPYmplY3RCb3VuZGluZ0JveCgp
IGNvbnN0OwogICAgIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KICAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91
bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9
CisgICAgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94RE9NKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9vYmplY3RCb3VuZGluZ0JveDsgfQogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdElu
TG9jYWxDb29yZGluYXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVwYWludEJvdW5k
aW5nQm94OyB9CiAKICAgICB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0
PiYsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lciA9IDApIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IGJhMWNkMDUy
ZGFkYWExY2UxODQxYzdjMjNjYWYzM2ZhYTRlMzQ3ZWIuLjgxYjhmZDc1YjVkN2NlMGJmZGM5NzZj
MDgzYzA5ZTZmMTFkZGYwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTYyLDYgKzYyLDE0IEBAIEZsb2F0UmVjdCBSZW5kZXJT
VkdJbmxpbmU6OnN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QKICAgICByZXR1cm4gRmxvYXRSZWN0
KCk7CiB9CiAKK0Zsb2F0UmVjdCBSZW5kZXJTVkdJbmxpbmU6OnN0cm9rZUJvdW5kaW5nQm94RE9N
KCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogdGV4dEFuY2VzdG9yID0gUmVuZGVyU1ZHVGV4dDo6
bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIHRleHRB
bmNlc3Rvci0+c3Ryb2tlQm91bmRpbmdCb3hET00oKTsKKworICAgIHJldHVybiBGbG9hdFJlY3Qo
KTsKK30KKwogRmxvYXRSZWN0IFJlbmRlclNWR0lubGluZTo6cmVwYWludFJlY3RJbkxvY2FsQ29v
cmRpbmF0ZXMoKSBjb25zdAogewogICAgIGlmIChhdXRvKiB0ZXh0QW5jZXN0b3IgPSBSZW5kZXJT
VkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IoKnRoaXMpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggNWJhNGI0N2Y5Mzll
M2IyNzAzNDMzYzUzNmEyM2Y0YmJiMGUwYzZiZC4uMmRlOTc4NGE4ZWNkMzg0ZmU1YzFjOTkwNjk0
YTQ1NTEzYzBlN2Q0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUu
aCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdSZW5kZXJT
dXBwb3J0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNyArNDksOSBAQCBwcml2
YXRlOgogICAgIC8vIHRoaXMgZWxlbWVudCwgc2luY2Ugd2UgbmVlZCBpdCBmb3IgZmlsdGVycy4K
ICAgICBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBmaW5hbDsKICAgICBGbG9h
dFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFJlY3Qgc3Ry
b2tlQm91bmRpbmdCb3hET00oKSBjb25zdCBmaW5hbDsKICAgICBGbG9hdFJlY3QgcmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFJlY3QgZ2V0QkJv
eChjb25zdCBTVkdCb3VuZGluZ0JveEZsYWdzIG9wdGlvbnMgPSBTVkdCb3VuZGluZ0JveE9wdGlv
bnM6OkluY2x1ZGVGaWxsKSBjb25zdCBmaW5hbCB7IHJldHVybiBTVkdSZW5kZXJTdXBwb3J0Ojpn
ZXRCQm94KCp0aGlzLCBvcHRpb25zKTsgfQogCiAgICAgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9h
dFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5oCmluZGV4IDRkNGY0NTNlMzE3ZTNhNTc5ZDc5ZTA1M2MwMWNmNzU0YTBlZDYxOTEuLjY1
ZmQyZjZkYTQyMzYwNzA2NjA4MWUwODE2YmI1MWYzNDVhMDYwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTU3LDYg
KzU3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwog
CisgICAgRmxvYXRSZWN0IGdldEJCb3goY29uc3QgU1ZHQm91bmRpbmdCb3hGbGFncyBvcHRpb25z
ID0gU1ZHQm91bmRpbmdCb3hPcHRpb25zOjpJbmNsdWRlRmlsbCkgY29uc3QgZmluYWwgeyByZXR1
cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Z2V0QkJveCgqdGhpcywgb3B0aW9ucyk7IH0KKwogICAgIHN0
YXRpYyBib29sIGNoZWNrSW50ZXJzZWN0aW9uKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFJl
Y3QmKTsKICAgICBzdGF0aWMgYm9vbCBjaGVja0VuY2xvc3VyZShSZW5kZXJFbGVtZW50KiwgY29u
c3QgRmxvYXRSZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwCmluZGV4IGRmMGVmNmY2ZjNlZDhlM2Q0MjEyOTk0YTllMDMzNzY0MjUxMGNi
NTkuLjcyZjJiNzMxM2Y3Nzk1YTBjMGFkZjljMGM1NzlhMTA0MzgyMzI2MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzkwLDcgKzM5
MCw3IEBAIGNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHUm9vdDo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsCiAKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6dXBk
YXRlQ2FjaGVkQm91bmRhcmllcygpCiB7Ci0gICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUNv
bnRhaW5lckJvdW5kaW5nQm94ZXMoKnRoaXMsIG1fb2JqZWN0Qm91bmRpbmdCb3gsIG1fb2JqZWN0
Qm91bmRpbmdCb3hWYWxpZCwgbV9zdHJva2VCb3VuZGluZ0JveCwgbV9yZXBhaW50Qm91bmRpbmdC
b3hFeGNsdWRpbmdTaGFkb3cpOworICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVDb250YWlu
ZXJCb3VuZGluZ0JveGVzKCp0aGlzLCBtX29iamVjdEJvdW5kaW5nQm94LCBtX29iamVjdEJvdW5k
aW5nQm94VmFsaWQsIG1fc3Ryb2tlQm91bmRpbmdCb3gsIG1fc3Ryb2tlQm91bmRpbmdCb3hET00s
IG1fcmVwYWludEJvdW5kaW5nQm94RXhjbHVkaW5nU2hhZG93KTsKICAgICBTVkdSZW5kZXJTdXBw
b3J0OjppbnRlcnNlY3RSZXBhaW50UmVjdFdpdGhSZXNvdXJjZXMoKnRoaXMsIG1fcmVwYWludEJv
dW5kaW5nQm94RXhjbHVkaW5nU2hhZG93KTsKICAgICBtX3JlcGFpbnRCb3VuZGluZ0JveEV4Y2x1
ZGluZ1NoYWRvdy5pbmZsYXRlKGhvcml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IGM3
NjM1YjdkYzU4OTcxNjk1MDM4YjQxYTc1YTVjOTNhZTgyYjhmMzIuLmI4YTk5YWZhYTc4OWYwNjgz
MTA3MWNlOGJlZjI2NjBjMjI3OTkxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC04Nyw3ICs4Nyw5IEBAIHByaXZhdGU6CiAKICAgICBGbG9h
dFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29iamVj
dEJvdW5kaW5nQm94OyB9CiAgICAgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zdHJva2VCb3VuZGluZ0JveDsgfQorICAgIEZsb2F0UmVjdCBz
dHJva2VCb3VuZGluZ0JveERPTSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3Ryb2tlQm91
bmRpbmdCb3hET007IH0KICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveDsgfQorICAg
IEZsb2F0UmVjdCBnZXRCQm94KGNvbnN0IFNWR0JvdW5kaW5nQm94RmxhZ3Mgb3B0aW9ucyA9IFNW
R0JvdW5kaW5nQm94T3B0aW9uczo6SW5jbHVkZUZpbGwpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNW
R1JlbmRlclN1cHBvcnQ6OmdldEJCb3goKnRoaXMsIG9wdGlvbnMpOyB9CiAKICAgICBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKIApAQCAtMTA4LDYgKzEx
MCw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fb2JqZWN0Qm91bmRpbmdCb3g7CiAgICAg
Ym9vbCBtX29iamVjdEJvdW5kaW5nQm94VmFsaWQ7CiAgICAgRmxvYXRSZWN0IG1fc3Ryb2tlQm91
bmRpbmdCb3g7CisgICAgRmxvYXRSZWN0IG1fc3Ryb2tlQm91bmRpbmdCb3hET007CiAgICAgRmxv
YXRSZWN0IG1fcmVwYWludEJvdW5kaW5nQm94OwogICAgIEZsb2F0UmVjdCBtX3JlcGFpbnRCb3Vu
ZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsKICAgICBtdXRhYmxlIEFmZmluZVRyYW5zZm9ybSBtX2xv
Y2FsVG9QYXJlbnRUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDZhNjcxMThmZjFiMjU4YjMwM2M5NTYzODU5M2Y0NzRl
ZTg5YmJlNzkuLjg5YmRjODgwMjYyOTBlZjEwMGIyZjg1MThhZWRkYjM1YTM1MTA5Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0z
OCw3ICszOCwxMCBAQAogI2luY2x1ZGUgIlBvaW50ZXJFdmVudHNIaXRSdWxlcy5oIgogI2luY2x1
ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3Vy
Y2VTb2xpZENvbG9yLmgiCisjaW5jbHVkZSAiU1ZHQ2lyY2xlRWxlbWVudC5oIgorI2luY2x1ZGUg
IlNWR0VsbGlwc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aERhdGEuaCIKKyNpbmNsdWRl
ICJTVkdSZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJTVkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZXNDYWNoZS5oIgpA
QCAtNDA1LDkgKzQwOCwxMCBAQCBzdGF0aWMgaW5saW5lIFJlbmRlclNWR1Jlc291cmNlTWFya2Vy
KiBtYXJrZXJGb3JUeXBlKFNWR01hcmtlclR5cGUgdHlwZSwgUmVuZGVyUwogICAgIHJldHVybiAw
OwogfQogCi1GbG9hdFJlY3QgUmVuZGVyU1ZHU2hhcGU6Om1hcmtlclJlY3QoZmxvYXQgc3Ryb2tl
V2lkdGgpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1NoYXBlOjp1bml0ZVJlY3RXaXRoTWFya2VyUmVj
dChGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFtX21hcmtlclBvc2l0aW9u
cy5pc0VtcHR5KCkpOworICAgIGlmIChtX21hcmtlclBvc2l0aW9ucy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8qIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpj
YWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcigqdGhpcyk7CiAgICAgQVNTRVJUKHJlc291cmNlcyk7
CkBAIC00MjEsOSArNDI1LDM1IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdTaGFwZTo6bWFya2VyUmVj
dChmbG9hdCBzdHJva2VXaWR0aCkgY29uc3QKICAgICB1bnNpZ25lZCBzaXplID0gbV9tYXJrZXJQ
b3NpdGlvbnMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKICAgICAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXIgPSBtYXJrZXJG
b3JUeXBlKG1fbWFya2VyUG9zaXRpb25zW2ldLnR5cGUsIG1hcmtlclN0YXJ0LCBtYXJrZXJNaWQs
IG1hcmtlckVuZCkpCi0gICAgICAgICAgICBib3VuZGFyaWVzLnVuaXRlKG1hcmtlci0+bWFya2Vy
Qm91bmRhcmllcyhtYXJrZXItPm1hcmtlclRyYW5zZm9ybWF0aW9uKG1fbWFya2VyUG9zaXRpb25z
W2ldLm9yaWdpbiwgbV9tYXJrZXJQb3NpdGlvbnNbaV0uYW5nbGUsIHN0cm9rZVdpZHRoKSkpOwor
ICAgICAgICAgICAgYm91bmRhcmllcy51bml0ZShtYXJrZXItPm1hcmtlckJvdW5kYXJpZXMobWFy
a2VyLT5tYXJrZXJUcmFuc2Zvcm1hdGlvbihtX21hcmtlclBvc2l0aW9uc1tpXS5vcmlnaW4sIG1f
bWFya2VyUG9zaXRpb25zW2ldLmFuZ2xlLCBzdHJva2VXaWR0aCgpKSkpOworICAgIH0KKworICAg
IHJlY3QudW5pdGUoYm91bmRhcmllcyk7Cit9CisKK0Zsb2F0UmVjdCBSZW5kZXJTVkdTaGFwZTo6
c3Ryb2tlQm91bmRpbmdCb3hET00oKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vZHJhZnRzLmZ4
dGYub3JnL2Nzcy1tYXNraW5nLTEvI2NvbXB1dGUtc3Ryb2tlLWJvdW5kaW5nLWJveAorICAgIGNv
bnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKKyAgICBp
ZiAoIXN2Z1N0eWxlLmhhc1N0cm9rZSgpKQorICAgICAgICByZXR1cm4gbV9maWxsQm91bmRpbmdC
b3g7CisKKyAgICBGbG9hdFJlY3Qgc3Ryb2tlQm94ID0gbV9maWxsQm91bmRpbmdCb3g7CisgICAg
ZmxvYXQgaW5mbGF0ZURlbHRhID0gdGhpcy0+c3Ryb2tlV2lkdGgoKSAvIDI7CisKKyAgICBhdXRv
JiBzdmdFbGVtZW50ID0gdGhpcy0+Z3JhcGhpY3NFbGVtZW50KCk7CisgICAgaWYgKGlzU1ZHSW1h
Z2UoKQorICAgICAgICB8fCBpczxTVkdDaXJjbGVFbGVtZW50PihzdmdFbGVtZW50KQorICAgICAg
ICB8fCBpczxTVkdSZWN0RWxlbWVudD4oc3ZnRWxlbWVudCkKKyAgICAgICAgfHwgaXM8U1ZHRWxs
aXBzZUVsZW1lbnQ+KHN2Z0VsZW1lbnQpKSB7CisgICAgICAgIHN0cm9rZUJveC5pbmZsYXRlKGlu
ZmxhdGVEZWx0YSk7CisgICAgICAgIHJldHVybiBzdHJva2VCb3g7CiAgICAgfQotICAgIHJldHVy
biBib3VuZGFyaWVzOworCisgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUluZmxhdGVkU3Ry
b2tlSGV1cmlzdGljKHN0eWxlKCksIGluZmxhdGVEZWx0YSk7CisKKyAgICBzdHJva2VCb3guaW5m
bGF0ZShpbmZsYXRlRGVsdGEpOworICAgIHJldHVybiBzdHJva2VCb3g7CiB9CiAKIEZsb2F0UmVj
dCBSZW5kZXJTVkdTaGFwZTo6Y2FsY3VsYXRlT2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdApAQCAt
NDUxLDggKzQ4MSw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdTaGFwZTo6Y2FsY3VsYXRlU3Ryb2tl
Qm91bmRpbmdCb3goKSBjb25zdAogICAgICAgICAgICAgc3Ryb2tlQm91bmRpbmdCb3gudW5pdGUo
cGF0aCgpLnN0cm9rZUJvdW5kaW5nUmVjdCgmc3Ryb2tlU3R5bGUpKTsKICAgICB9CiAKLSAgICBp
ZiAoIW1fbWFya2VyUG9zaXRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgc3Ryb2tlQm91bmRpbmdC
b3gudW5pdGUobWFya2VyUmVjdChzdHJva2VXaWR0aCgpKSk7CisgICAgdW5pdGVSZWN0V2l0aE1h
cmtlclJlY3Qoc3Ryb2tlQm91bmRpbmdCb3gpOwogCiAgICAgcmV0dXJuIHN0cm9rZUJvdW5kaW5n
Qm94OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5o
CmluZGV4IDY0NjNjZmM5NDk1NjFhZDdiZmIxZjc1ZmEzZTJmNzM0OTI0NTU4OWQuLjI3ODJhZTRi
NGZmZjQxYTZhZDE0NzljZTg5NTNiNzRlYzNhYmMyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3QgPSAwOworICAgIHZvaWQgdW5p
dGVSZWN0V2l0aE1hcmtlclJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CiAKICAgICBib29sIGlzUG9p
bnRJbkZpbGwoY29uc3QgRmxvYXRQb2ludCYpOwogICAgIGJvb2wgaXNQb2ludEluU3Ryb2tlKGNv
bnN0IEZsb2F0UG9pbnQmKTsKQEAgLTExNCw2ICsxMTUsNyBAQCBwcml2YXRlOgogCiAgICAgRmxv
YXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9maWxsQm91
bmRpbmdCb3g7IH0KICAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94OyB9CisgICAgRmxvYXRSZWN0IHN0cm9rZUJv
dW5kaW5nQm94RE9NKCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZU9iamVj
dEJvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVN0cm9rZUJvdW5k
aW5nQm94KCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVSZXBhaW50Qm91bmRpbmdCb3goKTsKQEAg
LTEyMSw3ICsxMjMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgc2V0dXBOb25TY2FsaW5nU3Ryb2tl
Q29udGV4dChBZmZpbmVUcmFuc2Zvcm0mLCBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyJik7CiAK
ICAgICBib29sIHNob3VsZEdlbmVyYXRlTWFya2VyUG9zaXRpb25zKCkgY29uc3Q7Ci0gICAgRmxv
YXRSZWN0IG1hcmtlclJlY3QoZmxvYXQgc3Ryb2tlV2lkdGgpIGNvbnN0OwogICAgIHZvaWQgcHJv
Y2Vzc01hcmtlclBvc2l0aW9ucygpOwogCiAgICAgdm9pZCBmaWxsU2hhcGUoY29uc3QgUmVuZGVy
U3R5bGUmLCBHcmFwaGljc0NvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IDBkMTQ2Y2RjMGZiMDNkYWUzNWY1OGVjMTdkZjg1
ZjY1MGZiYTI5NzQuLmU2NTg4MThkNzA4MWE0Y2VmYzUyN2U1NDdiZGQ3ZTg1MjQzNGQ3YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAt
NTA0LDYgKzUwNCwyMyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHVGV4dDo6c3Ryb2tlQm91bmRpbmdC
b3goKSBjb25zdAogICAgIHJldHVybiBzdHJva2VCb3VuZGFyaWVzOwogfQogCitGbG9hdFJlY3Qg
UmVuZGVyU1ZHVGV4dDo6c3Ryb2tlQm91bmRpbmdCb3hET00oKSBjb25zdAoreworICAgIC8vIGh0
dHBzOi8vZHJhZnRzLmZ4dGYub3JnL2Nzcy1tYXNraW5nLTEvI2NvbXB1dGUtc3Ryb2tlLWJvdW5k
aW5nLWJveAorICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCkuc3Zn
U3R5bGUoKTsKKworICAgIEZsb2F0UmVjdCBzdHJva2VCb3ggPSBvYmplY3RCb3VuZGluZ0JveCgp
OworICAgIGlmICghc3ZnU3R5bGUuaGFzU3Ryb2tlKCkpCisgICAgICAgIHJldHVybiBzdHJva2VC
b3g7CisKKyAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJnRleHRFbGVtZW50KCkp
OworICAgIGZsb2F0IGluZmxhdGVEZWx0YSA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS5zdHJva2VXaWR0aCgpKSAvIDI7CisgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0
ZUluZmxhdGVkU3Ryb2tlSGV1cmlzdGljKHN0eWxlKCksIGluZmxhdGVEZWx0YSk7CisKKyAgICBz
dHJva2VCb3guaW5mbGF0ZShpbmZsYXRlRGVsdGEpOworICAgIHJldHVybiBzdHJva2VCb3g7Cit9
CisKIEZsb2F0UmVjdCBSZW5kZXJTVkdUZXh0OjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gc3Ryb2tlQm91bmRpbmdC
b3goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5k
ZXggNmNiM2Q0YzdhNjA5N2QwMzI0OGJmMjc1ZDBiMDdjNTYwYmM3MGY3MS4uMWVlOWUzZWIyNjRl
MTE3NDMyYTE0YzJiMDBiMDE5YWNiZTRjZWVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogCiAgICAg
RmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZnJh
bWVSZWN0KCk7IH0KICAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3hET00oKSBjb25zdCBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBw
b3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAKaW5kZXggZWY0NmE1YTg1Y2U4MTgxZTNmZTBhYTUyODZlOWFhMTBlNWE4ZWU0MS4uYjU0ZmM4
NDU0MWJlZjE4MmI2YmNjNzg2YWEwNWUxY2I1YzRkNjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyR2VvbWV0cnlNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
aCIKQEAgLTEzOCwxMSArMTM5LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVPYmplY3RC
b3VuZGluZ0JveChGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW5nQm94LCBib29sJiBvCiAgICAgb2Jq
ZWN0Qm91bmRpbmdCb3gudW5pdGVFdmVuSWZFbXB0eShvdGhlckJvdW5kaW5nQm94KTsKIH0KIAot
dm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlQ29udGFpbmVyQm91bmRpbmdCb3hlcyhjb25z
dCBSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gs
IGJvb2wmIG9iamVjdEJvdW5kaW5nQm94VmFsaWQsIEZsb2F0UmVjdCYgc3Ryb2tlQm91bmRpbmdC
b3gsIEZsb2F0UmVjdCYgcmVwYWludEJvdW5kaW5nQm94KQordm9pZCBTVkdSZW5kZXJTdXBwb3J0
Ojpjb21wdXRlQ29udGFpbmVyQm91bmRpbmdCb3hlcyhjb25zdCBSZW5kZXJFbGVtZW50JiBjb250
YWluZXIsIEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gsIGJvb2wmIG9iamVjdEJvdW5kaW5n
Qm94VmFsaWQsIEZsb2F0UmVjdCYgc3Ryb2tlQm91bmRpbmdCb3gsIEZsb2F0UmVjdCYgc3Ryb2tl
Qm91bmRpbmdCb3hET00sIEZsb2F0UmVjdCYgcmVwYWludEJvdW5kaW5nQm94KQogewogICAgIG9i
amVjdEJvdW5kaW5nQm94ID0gRmxvYXRSZWN0KCk7CiAgICAgb2JqZWN0Qm91bmRpbmdCb3hWYWxp
ZCA9IGZhbHNlOwogICAgIHN0cm9rZUJvdW5kaW5nQm94ID0gRmxvYXRSZWN0KCk7CisgICAgc3Ry
b2tlQm91bmRpbmdCb3hET00gPSBGbG9hdFJlY3QoKTsKIAogICAgIC8vIFdoZW4gY29tcHV0aW5n
IHRoZSBzdHJva2VCb3VuZGluZ0JveCwgd2UgdXNlIHRoZSByZXBhaW50UmVjdHMgb2YgdGhlIGNv
bnRhaW5lcidzIGNoaWxkcmVuIHNvIHRoYXQgdGhlIGNvbnRhaW5lcidzIHN0cm9rZSBpbmNsdWRl
cwogICAgIC8vIHRoZSByZXNvdXJjZXMgYXBwbGllZCB0byB0aGUgY2hpbGRyZW4gKHN1Y2ggYXMg
Y2xpcHMgYW5kIGZpbHRlcnMpLiBUaGlzIGFsbG93cyBmaWx0ZXJzIGFwcGxpZWQgdG8gY29udGFp
bmVycyB0byBjb3JyZWN0bHkgYm91bmQKQEAgLTE1OCw5ICsxNjAsMTEgQEAgdm9pZCBTVkdSZW5k
ZXJTdXBwb3J0Ojpjb21wdXRlQ29udGFpbmVyQm91bmRpbmdCb3hlcyhjb25zdCBSZW5kZXJFbGVt
ZW50JiBjb250YWkKICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSBj
dXJyZW50LmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKTsKICAgICAgICAgaWYgKHRyYW5zZm9ybS5p
c0lkZW50aXR5KCkpIHsKICAgICAgICAgICAgIHVwZGF0ZU9iamVjdEJvdW5kaW5nQm94KG9iamVj
dEJvdW5kaW5nQm94LCBvYmplY3RCb3VuZGluZ0JveFZhbGlkLCAmY3VycmVudCwgY3VycmVudC5v
YmplY3RCb3VuZGluZ0JveCgpKTsKKyAgICAgICAgICAgIHVwZGF0ZU9iamVjdEJvdW5kaW5nQm94
KHN0cm9rZUJvdW5kaW5nQm94RE9NLCBvYmplY3RCb3VuZGluZ0JveFZhbGlkLCAmY3VycmVudCwg
Y3VycmVudC5zdHJva2VCb3VuZGluZ0JveERPTSgpKTsKICAgICAgICAgICAgIHN0cm9rZUJvdW5k
aW5nQm94LnVuaXRlKGN1cnJlbnQucmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB1cGRhdGVPYmplY3RCb3VuZGluZ0JveChvYmpl
Y3RCb3VuZGluZ0JveCwgb2JqZWN0Qm91bmRpbmdCb3hWYWxpZCwgJmN1cnJlbnQsIHRyYW5zZm9y
bS5tYXBSZWN0KGN1cnJlbnQub2JqZWN0Qm91bmRpbmdCb3goKSkpOworICAgICAgICAgICAgdXBk
YXRlT2JqZWN0Qm91bmRpbmdCb3goc3Ryb2tlQm91bmRpbmdCb3hET00sIG9iamVjdEJvdW5kaW5n
Qm94VmFsaWQsICZjdXJyZW50LCB0cmFuc2Zvcm0ubWFwUmVjdChjdXJyZW50LnN0cm9rZUJvdW5k
aW5nQm94RE9NKCkpKTsKICAgICAgICAgICAgIHN0cm9rZUJvdW5kaW5nQm94LnVuaXRlKHRyYW5z
Zm9ybS5tYXBSZWN0KGN1cnJlbnQucmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSkpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMTY4LDYgKzE3Miw1MiBAQCB2b2lkIFNWR1JlbmRlclN1cHBv
cnQ6OmNvbXB1dGVDb250YWluZXJCb3VuZGluZ0JveGVzKGNvbnN0IFJlbmRlckVsZW1lbnQmIGNv
bnRhaQogICAgIHJlcGFpbnRCb3VuZGluZ0JveCA9IHN0cm9rZUJvdW5kaW5nQm94OwogfQogCit2
b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVJbmZsYXRlZFN0cm9rZUhldXJpc3RpYyhjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGZsb2F0JiBpbmZsYXRlRGVsdGEpCit7CisgICAgY29uc3Qg
ZmxvYXQgc3FydDIgPSBzdGQ6OnNxcnQoMik7CisgICAgaWYgKHN0eWxlLmpvaW5TdHlsZSgpID09
IE1pdGVySm9pbikgeworICAgICAgICBmbG9hdCBtaXRlciA9IHN0eWxlLnN0cm9rZU1pdGVyTGlt
aXQoKTsKKyAgICAgICAgaWYgKG1pdGVyIDwgc3FydDIgJiYgc3R5bGUuY2FwU3R5bGUoKSA9PSBT
cXVhcmVDYXApCisgICAgICAgICAgICBpbmZsYXRlRGVsdGEgKj0gc3FydDI7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGluZmxhdGVEZWx0YSAqPSBpbmZsYXRlRGVsdGEgKiBpbmZsYXRlRGVs
dGE7CisgICAgfSBlbHNlIGlmIChzdHlsZS5jYXBTdHlsZSgpID09IFNxdWFyZUNhcCkKKyAgICAg
ICAgaW5mbGF0ZURlbHRhICo9IHNxcnQyOworfQorCitGbG9hdFJlY3QgU1ZHUmVuZGVyU3VwcG9y
dDo6Z2V0QkJveChjb25zdCBSZW5kZXJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTVkdCb3VuZGlu
Z0JveEZsYWdzIG9wdGlvbnMpCit7CisgICAgLy8gRmFzdCBwYXRoIGZvciBjb21tb24gb3V0cHV0
CisgICAgaWYgKChvcHRpb25zICYgSW5jbHVkZUZpbGwpICYmICEob3B0aW9ucyAmIEluY2x1ZGVT
dHJva2UpICYmICEob3B0aW9ucyAmIEluY2x1ZGVNYXJrZXJzKSAmJiAhKG9wdGlvbnMgJiBDbGlw
VG9DbGlwUmVnaW9uKSkKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQub2JqZWN0Qm91bmRpbmdCb3go
KTsKKworICAgIEZsb2F0UmVjdCBib3g7CisgICAgaWYgKGVsZW1lbnQuaXNTVkdIaWRkZW5Db250
YWluZXIoKSkKKyAgICAgICAgcmV0dXJuIGJveDsKKyAgICAKKyAgICBmb3IgKGF1dG8mIGNoaWxk
IDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2JqZWN0PihlbGVtZW50KSkgeworICAgICAgICBpZiAo
IWlzPFJlbmRlckVsZW1lbnQ+KGNoaWxkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBib3gudW5pdGUoZ2V0QkJveChkb3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZCksIG9wdGlv
bnMpKTsKKyAgICB9CisKKyAgICBib29sIGlzU2hhcGUgPSBpczxSZW5kZXJTVkdTaGFwZT4oZWxl
bWVudCk7CisgICAgYm9vbCBpc05vdEFDb250YWluZXIgPSBpc1NoYXBlIHx8IGlzPFJlbmRlclNW
R1NoYXBlPihlbGVtZW50KSB8fCBpczxSZW5kZXJTVkdJbWFnZT4oZWxlbWVudCkgfHwgaXM8UmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdD4oZWxlbWVudCk7CisgICAgaWYgKChvcHRpb25zICYgSW5jbHVk
ZUZpbGwpICYmIGlzTm90QUNvbnRhaW5lcikKKyAgICAgICAgYm94ID0gZWxlbWVudC5vYmplY3RC
b3VuZGluZ0JveCgpOworCisgICAgaWYgKChvcHRpb25zICYgSW5jbHVkZVN0cm9rZSkgJiYgaXNO
b3RBQ29udGFpbmVyKQorICAgICAgICBib3gudW5pdGUoZWxlbWVudC5zdHJva2VCb3VuZGluZ0Jv
eERPTSgpKTsKKworICAgIGlmICgob3B0aW9ucyAmIEluY2x1ZGVNYXJrZXJzKSAmJiBpc1NoYXBl
KQorICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdTaGFwZT4oZWxlbWVudCkudW5pdGVSZWN0V2l0
aE1hcmtlclJlY3QoYm94KTsKKworICAgIGlmIChvcHRpb25zICYgQ2xpcFRvQ2xpcFJlZ2lvbikK
KyAgICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6aW50ZXJzZWN0UmVjdFdpdGhDbGlwcGluZ0FyZWEo
ZWxlbWVudCwgYm94KTsKKworICAgIHJldHVybiBib3g7Cit9CisKIGJvb2wgU1ZHUmVuZGVyU3Vw
cG9ydDo6cGFpbnRJbmZvSW50ZXJzZWN0c1JlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbG9j
YWxSZXBhaW50UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRyYW5zZm9ybSwgY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiB7CiAgICAgaWYgKGxvY2FsVHJhbnNmb3JtLmlzSWRl
bnRpdHkoKSkKQEAgLTMwMSw2ICszNTEsMTYgQEAgYm9vbCBTVkdSZW5kZXJTdXBwb3J0Ojppc092
ZXJmbG93SGlkZGVuKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIHJldHVybiBy
ZW5kZXJlci5zdHlsZSgpLm92ZXJmbG93WCgpID09IE92ZXJmbG93OjpIaWRkZW4gfHwgcmVuZGVy
ZXIuc3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPdmVyZmxvdzo6U2Nyb2xsOwogfQogCit2b2lkIFNW
R1JlbmRlclN1cHBvcnQ6OmludGVyc2VjdFJlY3RXaXRoQ2xpcHBpbmdBcmVhKGNvbnN0IFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyLCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgYXV0byogcmVzb3Vy
Y2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlcmVyKHJlbmRl
cmVyKTsKKyAgICBpZiAoIXJlc291cmNlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IHJlc291cmNlcy0+Y2xpcHBlcigpKQor
ICAgICAgICByZWN0LmludGVyc2VjdChjbGlwcGVyLT5yZXNvdXJjZUJvdW5kaW5nQm94KHJlbmRl
cmVyKSk7Cit9CisKIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6aW50ZXJzZWN0UmVwYWludFJlY3RX
aXRoUmVzb3VyY2VzKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBGbG9hdFJlY3QmIHJl
cGFpbnRSZWN0KQogewogICAgIGF1dG8qIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpj
YWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcihyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCmluZGV4IGNjMzM2ZTdmY2Q4ZDA0YWQ5
YmU4ZDQ0ZTZiZTQ3ZTdjMzQwZjA1ZmMuLjA0YjQ2NGU5MTJmNjYxOTJiYTcwZGY5ZTQ4ZTk0Y2Vl
MjcwMmZiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
U3VwcG9ydC5oCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAvLyBIZWxwZXIgZnVuY3Rp
b24gZGV0ZXJtaW5pbmcgd2hldGVyIG92ZXJmbG93IGlzIGhpZGRlbgogICAgIHN0YXRpYyBib29s
IGlzT3ZlcmZsb3dIaWRkZW4oY29uc3QgUmVuZGVyRWxlbWVudCYpOwogCisgICAgc3RhdGljIHZv
aWQgaW50ZXJzZWN0UmVjdFdpdGhDbGlwcGluZ0FyZWEoY29uc3QgUmVuZGVyRWxlbWVudCYsIEZs
b2F0UmVjdCYpOworCiAgICAgLy8gQ2FsY3VsYXRlcyB0aGUgcmVwYWludFJlY3QgaW4gY29tYmlu
YXRpb24gd2l0aCBmaWx0ZXIsIGNsaXBwZXIgYW5kIG1hc2tlciBpbiBsb2NhbCBjb29yZGluYXRl
cy4KICAgICBzdGF0aWMgdm9pZCBpbnRlcnNlY3RSZXBhaW50UmVjdFdpdGhSZXNvdXJjZXMoY29u
c3QgUmVuZGVyRWxlbWVudCYsIEZsb2F0UmVjdCYpOwogCkBAIC02MCw4ICs2MiwxMCBAQCBwdWJs
aWM6CiAgICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXNzZWQgcG9pbnQgbGllcyBpbiBh
IGNsaXBwaW5nIGFyZWEKICAgICBzdGF0aWMgYm9vbCBwb2ludEluQ2xpcHBpbmdBcmVhKGNvbnN0
IFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFBvaW50Jik7CiAKLSAgICBzdGF0aWMgdm9pZCBj
b21wdXRlQ29udGFpbmVyQm91bmRpbmdCb3hlcyhjb25zdCBSZW5kZXJFbGVtZW50JiBjb250YWlu
ZXIsIEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gsIGJvb2wmIG9iamVjdEJvdW5kaW5nQm94
VmFsaWQsIEZsb2F0UmVjdCYgc3Ryb2tlQm91bmRpbmdCb3gsIEZsb2F0UmVjdCYgcmVwYWludEJv
dW5kaW5nQm94KTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQ29udGFpbmVyQm91bmRpbmdCb3hl
cyhjb25zdCBSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRp
bmdCb3gsIGJvb2wmIG9iamVjdEJvdW5kaW5nQm94VmFsaWQsIEZsb2F0UmVjdCYgc3Ryb2tlQm91
bmRpbmdCb3gsIEZsb2F0UmVjdCYgc3Ryb2tlQm91bmRpbmdCb3hET00sIEZsb2F0UmVjdCYgcmVw
YWludEJvdW5kaW5nQm94KTsKICAgICBzdGF0aWMgYm9vbCBwYWludEluZm9JbnRlcnNlY3RzUmVw
YWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiBsb2NhbFJlcGFpbnRSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGxvY2FsVHJhbnNmb3JtLCBjb25zdCBQYWludEluZm8mKTsKKyAgICBzdGF0aWMg
dm9pZCBjb21wdXRlSW5mbGF0ZWRTdHJva2VIZXVyaXN0aWMoY29uc3QgUmVuZGVyU3R5bGUmLCBm
bG9hdCYgaW5mbGF0ZURlbHRhKTsKKyAgICBzdGF0aWMgRmxvYXRSZWN0IGdldEJCb3goY29uc3Qg
UmVuZGVyRWxlbWVudCYsIGNvbnN0IFNWR0JvdW5kaW5nQm94RmxhZ3Mgb3B0aW9ucyk7CiAKICAg
ICAvLyBJbXBvcnRhbnQgZnVuY3Rpb25zIHVzZWQgYnkgbmVhcmx5IGFsbCBTVkcgcmVuZGVyZXJz
IGNlbnRyYWxpemluZyBjb29yZGluYXRlIHRyYW5zZm9ybWF0aW9ucyAvIHJlcGFpbnQgcmVjdCBj
YWxjdWxhdGlvbnMKICAgICBzdGF0aWMgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChjb25zdCBSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggYjkz
MmJlZjZjOGQ0OWYyNTY1OWJlZWE1ZTUyMjNkZjYyYTUzMzNmNC4uYTg2OGUzYzMxMmVlYmQ4MTIy
MGE4Y2E1YmNhNDNkYTVmZDkyZDcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAt
Mjk4LDcgKzI5OCw3IEBAIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudCo+JiBTVkdFbGVtZW50Ojpp
bnN0YW5jZXMoKSBjb25zdAogYm9vbCBTVkdFbGVtZW50OjpnZXRCb3VuZGluZ0JveChGbG9hdFJl
Y3QmIHJlY3QsIFNWR0xvY2F0YWJsZTo6U3R5bGVVcGRhdGVTdHJhdGVneSBzdHlsZVVwZGF0ZVN0
cmF0ZWd5KQogewogICAgIGlmIChpczxTVkdHcmFwaGljc0VsZW1lbnQ+KCp0aGlzKSkgewotICAg
ICAgICByZWN0ID0gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PigqdGhpcykuZ2V0QkJveChz
dHlsZVVwZGF0ZVN0cmF0ZWd5KTsKKyAgICAgICAgcmVjdCA9IGRvd25jYXN0PFNWR0dyYXBoaWNz
RWxlbWVudD4oKnRoaXMpLmdldEJCb3goU1ZHQm91bmRpbmdCb3hPcHRpb25zOjpJbmNsdWRlRmls
bCwgc3R5bGVVcGRhdGVTdHJhdGVneSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3Bw
CmluZGV4IDE5ZjAzN2UzMDFiM2IyZDIyOTIxNmZmNzA3ZjNmZTQ0YTJkM2M2NmQuLjAzY2M1M2Mw
MzU0N2EwNmE1MzYxMzAwMDUyYTI1MGE4YmNiMGM0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJSZW5kZXJP
YmplY3RFbnVtcy5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1BhdGguaCIKICNpbmNsdWRlICJSZW5k
ZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR01hdHJpeC5oIgpAQCAtMTY2LDE0ICsxNjcs
MzAgQEAgU1ZHRWxlbWVudCogU1ZHR3JhcGhpY3NFbGVtZW50OjpmYXJ0aGVzdFZpZXdwb3J0RWxl
bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmZhcnRoZXN0Vmlld3Bv
cnRFbGVtZW50KHRoaXMpOwogfQogCi1SZWY8U1ZHUmVjdD4gU1ZHR3JhcGhpY3NFbGVtZW50Ojpn
ZXRCQm94Rm9yQmluZGluZ3MoKQorRmxvYXRSZWN0IFNWR0dyYXBoaWNzRWxlbWVudDo6Z2V0QkJv
eChjb25zdCB1bnNpZ25lZCBzdmdCb3VuZGluZ0JveE9wdGlvbnMsIFN0eWxlVXBkYXRlU3RyYXRl
Z3kgc3R5bGVVcGRhdGVTdHJhdGVneSkKIHsKLSAgICByZXR1cm4gU1ZHUmVjdDo6Y3JlYXRlKGdl
dEJCb3goKSk7CisgICAgaWYgKHN0eWxlVXBkYXRlU3RyYXRlZ3kgPT0gQWxsb3dTdHlsZVVwZGF0
ZSkKKyAgICAgICAgdGhpcy0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKKworICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHNob3VsZCBzdXBwb3J0
IGdldEJCb3ggZm9yIGRldGFjaGVkIGVsZW1lbnRzLgorICAgIGlmICghcmVuZGVyZXIoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAKKyAgICByZXR1cm4gcmVuZGVyZXIoKS0+Z2V0QkJveChz
dmdCb3VuZGluZ0JveE9wdGlvbnMpOwogfQogCi1GbG9hdFJlY3QgU1ZHR3JhcGhpY3NFbGVtZW50
OjpnZXRCQm94KFN0eWxlVXBkYXRlU3RyYXRlZ3kgc3R5bGVVcGRhdGVTdHJhdGVneSkKK1JlZjxT
VkdSZWN0PiBTVkdHcmFwaGljc0VsZW1lbnQ6OmdldEJCb3hGb3JCaW5kaW5ncyhCb3VuZGluZ0Jv
eE9wdGlvbnMmJiBib3VuZGluZ0JveE9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIFNWR1RyYW5zZm9y
bWFibGU6OmdldEJCb3godGhpcywgc3R5bGVVcGRhdGVTdHJhdGVneSk7CisgICAgU1ZHQm91bmRp
bmdCb3hGbGFncyBzdmdCb3VuZGluZ0JveE9wdGlvbnMgeyAwIH07CisgICAgaWYgKGJvdW5kaW5n
Qm94T3B0aW9ucy5maWxsKQorICAgICAgICBzdmdCb3VuZGluZ0JveE9wdGlvbnMgfD0gU1ZHQm91
bmRpbmdCb3hPcHRpb25zOjpJbmNsdWRlRmlsbDsKKyAgICBpZiAoYm91bmRpbmdCb3hPcHRpb25z
LnN0cm9rZSkKKyAgICAgICAgc3ZnQm91bmRpbmdCb3hPcHRpb25zIHw9IFNWR0JvdW5kaW5nQm94
T3B0aW9uczo6SW5jbHVkZVN0cm9rZTsKKyAgICBpZiAoYm91bmRpbmdCb3hPcHRpb25zLm1hcmtl
cnMpCisgICAgICAgIHN2Z0JvdW5kaW5nQm94T3B0aW9ucyB8PSBTVkdCb3VuZGluZ0JveE9wdGlv
bnM6OkluY2x1ZGVNYXJrZXJzOworICAgIGlmIChib3VuZGluZ0JveE9wdGlvbnMuY2xpcHBlZCkK
KyAgICAgICAgc3ZnQm91bmRpbmdCb3hPcHRpb25zIHw9IFNWR0JvdW5kaW5nQm94T3B0aW9uczo6
Q2xpcFRvQ2xpcFJlZ2lvbjsKKyAgICByZXR1cm4gU1ZHUmVjdDo6Y3JlYXRlKGdldEJCb3goc3Zn
Qm91bmRpbmdCb3hPcHRpb25zKSk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdH
cmFwaGljc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNz
RWxlbWVudC5oCmluZGV4IDQyNWMzMjc0NjY5OGE1YWM0OTIzYTQ0YmE0ZDQxMzM1YzE0ZjlhMzYu
LmZhNDA2M2I2Njc1NTRkMjIyN2VkMmQ3YTFiZmE4MzQ0NjI4NjBjOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKQEAgLTM1LDYgKzM1LDEzIEBAIGNsYXNzIFNWR01h
dHJpeDsKIGNsYXNzIFNWR0dyYXBoaWNzRWxlbWVudCA6IHB1YmxpYyBTVkdFbGVtZW50LCBwdWJs
aWMgU1ZHVHJhbnNmb3JtYWJsZSwgcHVibGljIFNWR1Rlc3RzIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFNWR0dyYXBoaWNzRWxlbWVudCk7CiBwdWJsaWM6CisgICAgc3RydWN0IEJvdW5k
aW5nQm94T3B0aW9ucyB7CisgICAgICAgIGJvb2wgZmlsbCB7IHRydWUgfTsKKyAgICAgICAgYm9v
bCBzdHJva2UgeyBmYWxzZSB9OworICAgICAgICBib29sIG1hcmtlcnMgeyBmYWxzZSB9OworICAg
ICAgICBib29sIGNsaXBwZWQgeyBmYWxzZSB9OworICAgIH07CisKICAgICB2aXJ0dWFsIH5TVkdH
cmFwaGljc0VsZW1lbnQoKTsKIAogICAgIFJlZjxTVkdNYXRyaXg+IGdldENUTUZvckJpbmRpbmdz
KCk7CkBAIC01MCw4ICs1Nyw4IEBAIHB1YmxpYzoKICAgICBBZmZpbmVUcmFuc2Zvcm0gYW5pbWF0
ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFmZmluZVRyYW5zZm9ybSog
c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkgb3ZlcnJpZGU7CiAKLSAgICBSZWY8U1ZHUmVjdD4gZ2V0
QkJveEZvckJpbmRpbmdzKCk7Ci0gICAgRmxvYXRSZWN0IGdldEJCb3goU3R5bGVVcGRhdGVTdHJh
dGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIG92ZXJyaWRlOworICAgIFJlZjxTVkdSZWN0PiBnZXRC
Qm94Rm9yQmluZGluZ3MoQm91bmRpbmdCb3hPcHRpb25zJiYpOworICAgIEZsb2F0UmVjdCBnZXRC
Qm94KGNvbnN0IHVuc2lnbmVkIGJvdW5kaW5nQm94T3B0aW9ucywgU3R5bGVVcGRhdGVTdHJhdGVn
eSA9IEFsbG93U3R5bGVVcGRhdGUpOwogCiAgICAgYm9vbCBzaG91bGRJc29sYXRlQmxlbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElzb2xhdGVCbGVuZGluZzsgfQogICAgIHZvaWQgc2V0
U2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGJvb2wgaXNvbGF0ZSkgeyBtX3Nob3VsZElzb2xhdGVCbGVu
ZGluZyA9IGlzb2xhdGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5p
ZGwKaW5kZXggYzljZmQ3Mzg4YjFhZDE5MTgyMjYwNDc3MmJjOTViYzA3MzFlZjE4OC4uNjBhNDVm
ZTMxNTk5NTJhZTkzOTc1OGEwNDdjMWM1NWZlMjA2ZDY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYXBoaWNzRWxlbWVudC5pZGwKQEAgLTI5LDcgKzI5LDcgQEAgaW50ZXJmYWNlIFNWR0dy
YXBoaWNzRWxlbWVudCA6IFNWR0VsZW1lbnQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdF
bGVtZW50IG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNW
R0VsZW1lbnQgZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQ7CiAKLSAgICBbSW1wbGVtZW50ZWRBcz1n
ZXRCQm94Rm9yQmluZGluZ3MsIE5ld09iamVjdF0gU1ZHUmVjdCBnZXRCQm94KCk7CisgICAgW0lt
cGxlbWVudGVkQXM9Z2V0QkJveEZvckJpbmRpbmdzLCBOZXdPYmplY3RdIFNWR1JlY3QgZ2V0QkJv
eChvcHRpb25hbCBTVkdCb3VuZGluZ0JveE9wdGlvbnMgb3B0aW9ucyk7CiAgICAgW0ltcGxlbWVu
dGVkQXM9Z2V0Q1RNRm9yQmluZGluZ3MsIE5ld09iamVjdF0gU1ZHTWF0cml4IGdldENUTSgpOwog
ICAgIFtJbXBsZW1lbnRlZEFzPWdldFNjcmVlbkNUTUZvckJpbmRpbmdzLCBOZXdPYmplY3RdIFNW
R01hdHJpeCBnZXRTY3JlZW5DVE0oKTsKIApAQCAtMzcsNCArMzcsMTEgQEAgaW50ZXJmYWNlIFNW
R0dyYXBoaWNzRWxlbWVudCA6IFNWR0VsZW1lbnQgewogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
TmV3T2JqZWN0XSBTVkdNYXRyaXggZ2V0VHJhbnNmb3JtVG9FbGVtZW50KG9wdGlvbmFsIFNWR0Vs
ZW1lbnQ/IGVsZW1lbnQgPSBudWxsKTsKIH07CiAKK2RpY3Rpb25hcnkgU1ZHQm91bmRpbmdCb3hP
cHRpb25zIHsKKyAgICBib29sZWFuIGZpbGwgPSB0cnVlOworICAgIGJvb2xlYW4gc3Ryb2tlID0g
ZmFsc2U7CisgICAgYm9vbGVhbiBtYXJrZXJzID0gZmFsc2U7CisgICAgYm9vbGVhbiBjbGlwcGVk
ID0gZmFsc2U7Cit9OworCiBTVkdHcmFwaGljc0VsZW1lbnQgaW1wbGVtZW50cyBTVkdUZXN0czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKaW5kZXggNWY5OGNiZGQyYzQ0YWE0ZGIyZWQ0
YTU4ODZjNzFmYzEyNTYwNmM1OC4uY2U5NTY3NjkxMWU4NTFmMTc0MzFjZGQ5MjkxMWRlYmM2YTcw
NDY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKQEAgLTYxLDE5ICs2MSw2IEBA
IFNWR0VsZW1lbnQqIFNWR0xvY2F0YWJsZTo6ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoY29uc3Qg
U1ZHRWxlbWVudCogZWxlbWVudCkKICAgICByZXR1cm4gZmFydGhlc3Q7CiB9CiAKLUZsb2F0UmVj
dCBTVkdMb2NhdGFibGU6OmdldEJCb3goU1ZHRWxlbWVudCogZWxlbWVudCwgU3R5bGVVcGRhdGVT
dHJhdGVneSBzdHlsZVVwZGF0ZVN0cmF0ZWd5KQotewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAg
ICBpZiAoc3R5bGVVcGRhdGVTdHJhdGVneSA9PSBBbGxvd1N0eWxlVXBkYXRlKQotICAgICAgICBl
bGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwotCi0gICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2Ugc2hvdWxkIHN1cHBvcnQgZ2V0QkJveCBm
b3IgZGV0YWNoZWQgZWxlbWVudHMuCi0gICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKQotICAg
ICAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci0KLSAgICByZXR1cm4gZWxlbWVudC0+cmVuZGVyZXIo
KS0+b2JqZWN0Qm91bmRpbmdCb3goKTsKLX0KLQogQWZmaW5lVHJhbnNmb3JtIFNWR0xvY2F0YWJs
ZTo6Y29tcHV0ZUNUTShTVkdFbGVtZW50KiBlbGVtZW50LCBDVE1TY29wZSBtb2RlLCBTdHlsZVVw
ZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRlU3RyYXRlZ3kpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5oCmluZGV4IGI0YTFmYzllY2MxZmFmZmJiYWI0MmYw
Yzg3ZTE0ZTM0OTRkOTNlNTYuLjk3MTJjMjc5OTM2MjZmNjczZGZkOWY1M2Q3ZjVkN2Q5MjQwMzYz
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmgKQEAgLTQwLDcgKzQwLDYgQEAgcHVibGlj
OgogCiAgICAgZW51bSBTdHlsZVVwZGF0ZVN0cmF0ZWd5IHsgQWxsb3dTdHlsZVVwZGF0ZSwgRGlz
YWxsb3dTdHlsZVVwZGF0ZSB9OwogICAgIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3go
U3R5bGVVcGRhdGVTdHJhdGVneSkgPSAwOwogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdl
dENUTShTdHlsZVVwZGF0ZVN0cmF0ZWd5KSA9IDA7CiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zv
cm0gZ2V0U2NyZWVuQ1RNKFN0eWxlVXBkYXRlU3RyYXRlZ3kpID0gMDsKIApAQCAtNTcsNyArNTYs
NiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9j
YWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSkgY29uc3Qg
eyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7IH0KIAotICAgIHN0YXRpYyBGbG9hdFJlY3QgZ2V0
QkJveChTVkdFbGVtZW50KiwgU3R5bGVVcGRhdGVTdHJhdGVneSk7CiAgICAgc3RhdGljIEFmZmlu
ZVRyYW5zZm9ybSBjb21wdXRlQ1RNKFNWR0VsZW1lbnQqLCBDVE1TY29wZSwgU3R5bGVVcGRhdGVT
dHJhdGVneSk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCBl
MWNmZjVjZDkyOTQzZWUyNjQwMjkwMWE5MzE4ZmFiMWY4ODI1MjMxLi42NDI1YjhjZmUwYmQwMzBk
YjU2ODQ4NzUzMzMzY2Q4MjkwZDM5N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVu
dC5jcHAKQEAgLTEyNSwyMiArMTI1LDYgQEAgdW5zaWduZWQgU1ZHUGF0aEVsZW1lbnQ6OmdldFBh
dGhTZWdBdExlbmd0aChmbG9hdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJuIHBhdGhTZWc7CiB9
CiAKLUZsb2F0UmVjdCBTVkdQYXRoRWxlbWVudDo6Z2V0QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5
IHN0eWxlVXBkYXRlU3RyYXRlZ3kpCi17Ci0gICAgaWYgKHN0eWxlVXBkYXRlU3RyYXRlZ3kgPT0g
QWxsb3dTdHlsZVVwZGF0ZSkKLSAgICAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoKTsKLQotICAgIFJlbmRlclNWR1BhdGgqIHJlbmRlcmVyID0gZG93
bmNhc3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+cmVuZGVyZXIoKSk7Ci0KLSAgICAvLyBGSVhNRTog
RXZlbnR1YWxseSB3ZSBzaG91bGQgc3VwcG9ydCBnZXRCQm94IGZvciBkZXRhY2hlZCBlbGVtZW50
cy4KLSAgICAvLyBGSVhNRTogSWYgdGhlIHBhdGggaXMgbnVsbCBpdCBtZWFucyB3ZSdyZSBjYWxs
aW5nIGdldEJCb3goKSBiZWZvcmUgbGF5aW5nIG91dCB0aGlzIGVsZW1lbnQsCi0gICAgLy8gd2hp
Y2ggaXMgYW4gZXJyb3IuCi0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmhhc1BhdGgo
KSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIHJldHVybiByZW5kZXJlci0+cGF0aCgpLmJv
dW5kaW5nUmVjdCgpOwotfQotCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHUGF0aEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdQ
YXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAppbmRleCA5MTdlMzNiMTFlNmE5ZGI0OWYyNGIwMjliYjA3NTc2OWY4ZTQwNWY2Li4zMGIyZDM2
NTg4MWIwOTIwNzM4N2E0MzYwNTVlNTc4YTVlMDJjMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuaApAQCAtOTEsOCArOTEsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFNWR1BvaW50PiBn
ZXRQb2ludEF0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25l
ZCBnZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQgZGlzdGFuY2UpIGNvbnN0OwogCi0gICAgRmxvYXRS
ZWN0IGdldEJCb3goU3R5bGVVcGRhdGVTdHJhdGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIGZpbmFs
OwotCiAgICAgUmVmPFNWR1BhdGhTZWdMaXN0PiYgcGF0aFNlZ0xpc3QoKSB7IHJldHVybiBtX3Bh
dGhTZWdMaXN0LT5iYXNlVmFsKCk7IH0KICAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+JiBhbmlt
YXRlZFBhdGhTZWdMaXN0KCkgeyByZXR1cm4gbV9wYXRoU2VnTGlzdC0+YW5pbVZhbCgpOyB9CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMDUyZTAxMjkxZmYwNGYwN2YyMTRhZmQzODFjZTIwYmRiN2M1NWEyLi5mNjc1Nzcz
NGI4OWE2NTY2ZmUxYWM4MzE2OTZlOWNkMzc4ZmQxMGZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTktMTAtMjYgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBT
VkcyIEltcGxlbWVudCBnZXRCQm94IGRpY3Rpb25hcnkgYXJndW1lbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTgwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgZ2V0QkJveCgpIHdpdGggbmV3
IFNWR0JvdW5kaW5nQm94T3B0aW9ucyBkaWN0aW9uYXJ5IGZvciBmaWxsLCBzdHJva2UKKyAgICAg
ICAgbWFya2VycyBhbmQgY2xpcHBpbmcuCisKKyAgICAgICAgQWxsIHByZXZpb3VzIHRlc3RzIHNo
b3VsZCBjb250aW51ZSB0byB3b3JrIGFzIGV4cGVjdGVkIGFzIHRoZSBkZWZhdWx0IGlzCisgICAg
ICAgIGZpbGwgc2V0IHRvIHRydWUuCisKKyAgICAgICAgKiBzdmcvY3VzdG9tL2dldEJCb3gtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL2dldEJCb3guaHRtbDogQWRk
ZWQuCisKIDIwMTktMTAtMjIgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIENhcnJpYWdlIHJldHVybiBjaGFyYWN0ZXIgc29tZXRpbWVzIG1pc3NpbmcgaW4gU0RQ
IGMtbGluZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9nZXRCQm94LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vZ2V0QkJveC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzM5NjNkM2NmYjQwYjI0OGFjYmE5OTVmZTc5YTJmNDk1Y2NlZWFmNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vZ2V0QkJveC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzNjUgQEAKK1Rlc3QgZ2V0QkJveCB3aXRoIFNWR0JvdW5kaW5nQm94T3B0aW9u
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2dldEJCb3ggb3B0aW9uOiB7ImZp
bGwiOmZhbHNlLCJzdHJva2UiOmZhbHNlLCJtYXJrZXJzIjpmYWxzZSwiY2xpcHBlZCI6ZmFsc2V9
CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFT
UyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10K
K2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9rZSI6ZmFsc2UsIm1hcmtlcnMiOmZh
bHNlLCJjbGlwcGVkIjpmYWxzZX0KK1BBU1MgYmJveC54IGlzIHJlc3VsdFswXQorUEFTUyBiYm94
LnkgaXMgcmVzdWx0WzFdCitQQVNTIGJib3gud2lkdGggaXMgcmVzdWx0WzJdCitQQVNTIGJib3gu
aGVpZ2h0IGlzIHJlc3VsdFszXQorZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6ZmFsc2UsInN0cm9r
ZSI6dHJ1ZSwibWFya2VycyI6ZmFsc2UsImNsaXBwZWQiOmZhbHNlfQorUEFTUyBiYm94LnggaXMg
cmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyBy
ZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjog
eyJmaWxsIjpmYWxzZSwic3Ryb2tlIjpmYWxzZSwibWFya2VycyI6dHJ1ZSwiY2xpcHBlZCI6ZmFs
c2V9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQor
UEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRb
M10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOmZhbHNlLCJzdHJva2UiOmZhbHNlLCJtYXJrZXJz
IjpmYWxzZSwiY2xpcHBlZCI6dHJ1ZX0KK1BBU1MgYmJveC54IGlzIHJlc3VsdFswXQorUEFTUyBi
Ym94LnkgaXMgcmVzdWx0WzFdCitQQVNTIGJib3gud2lkdGggaXMgcmVzdWx0WzJdCitQQVNTIGJi
b3guaGVpZ2h0IGlzIHJlc3VsdFszXQorZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6dHJ1ZSwic3Ry
b2tlIjp0cnVlLCJtYXJrZXJzIjp0cnVlLCJjbGlwcGVkIjp0cnVlfQorUEFTUyBiYm94LnggaXMg
cmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyBy
ZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjog
eyJmaWxsIjpmYWxzZSwic3Ryb2tlIjp0cnVlLCJtYXJrZXJzIjp0cnVlLCJjbGlwcGVkIjp0cnVl
fQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BB
U1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNd
CitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjp0cnVlLCJzdHJva2UiOmZhbHNlLCJtYXJrZXJzIjp0
cnVlLCJjbGlwcGVkIjp0cnVlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gu
eSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5o
ZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjp0cnVlLCJzdHJva2Ui
OnRydWUsIm1hcmtlcnMiOmZhbHNlLCJjbGlwcGVkIjp0cnVlfQorUEFTUyBiYm94LnggaXMgcmVz
dWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyByZXN1
bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjogeyJm
aWxsIjp0cnVlLCJzdHJva2UiOnRydWUsIm1hcmtlcnMiOnRydWUsImNsaXBwZWQiOmZhbHNlfQor
UEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1Mg
YmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCisK
K2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOmZhbHNlLCJzdHJva2UiOmZhbHNlLCJtYXJrZXJzIjpm
YWxzZSwiY2xpcHBlZCI6ZmFsc2V9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJv
eC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94
LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9r
ZSI6ZmFsc2UsIm1hcmtlcnMiOmZhbHNlLCJjbGlwcGVkIjpmYWxzZX0KK1BBU1MgYmJveC54IGlz
IHJlc3VsdFswXQorUEFTUyBiYm94LnkgaXMgcmVzdWx0WzFdCitQQVNTIGJib3gud2lkdGggaXMg
cmVzdWx0WzJdCitQQVNTIGJib3guaGVpZ2h0IGlzIHJlc3VsdFszXQorZ2V0QkJveCBvcHRpb246
IHsiZmlsbCI6ZmFsc2UsInN0cm9rZSI6dHJ1ZSwibWFya2VycyI6ZmFsc2UsImNsaXBwZWQiOmZh
bHNlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0K
K1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0
WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjpmYWxzZSwic3Ryb2tlIjpmYWxzZSwibWFya2Vy
cyI6dHJ1ZSwiY2xpcHBlZCI6ZmFsc2V9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1Mg
YmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBi
Ym94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOmZhbHNlLCJz
dHJva2UiOmZhbHNlLCJtYXJrZXJzIjpmYWxzZSwiY2xpcHBlZCI6dHJ1ZX0KK1BBU1MgYmJveC54
IGlzIHJlc3VsdFswXQorUEFTUyBiYm94LnkgaXMgcmVzdWx0WzFdCitQQVNTIGJib3gud2lkdGgg
aXMgcmVzdWx0WzJdCitQQVNTIGJib3guaGVpZ2h0IGlzIHJlc3VsdFszXQorZ2V0QkJveCBvcHRp
b246IHsiZmlsbCI6dHJ1ZSwic3Ryb2tlIjp0cnVlLCJtYXJrZXJzIjp0cnVlLCJjbGlwcGVkIjp0
cnVlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0K
K1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0
WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjpmYWxzZSwic3Ryb2tlIjp0cnVlLCJtYXJrZXJz
Ijp0cnVlLCJjbGlwcGVkIjp0cnVlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJi
b3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJv
eC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjp0cnVlLCJzdHJv
a2UiOmZhbHNlLCJtYXJrZXJzIjp0cnVlLCJjbGlwcGVkIjp0cnVlfQorUEFTUyBiYm94LnggaXMg
cmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyBy
ZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjog
eyJmaWxsIjp0cnVlLCJzdHJva2UiOnRydWUsIm1hcmtlcnMiOnRydWUsImNsaXBwZWQiOnRydWV9
CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFT
UyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10K
K2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9rZSI6dHJ1ZSwibWFya2VycyI6dHJ1
ZSwiY2xpcHBlZCI6ZmFsc2V9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55
IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94Lmhl
aWdodCBpcyByZXN1bHRbM10KKworZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6ZmFsc2UsInN0cm9r
ZSI6ZmFsc2UsIm1hcmtlcnMiOmZhbHNlLCJjbGlwcGVkIjpmYWxzZX0KK1BBU1MgYmJveC54IGlz
IHJlc3VsdFswXQorUEFTUyBiYm94LnkgaXMgcmVzdWx0WzFdCitQQVNTIGJib3gud2lkdGggaXMg
cmVzdWx0WzJdCitQQVNTIGJib3guaGVpZ2h0IGlzIHJlc3VsdFszXQorZ2V0QkJveCBvcHRpb246
IHsiZmlsbCI6dHJ1ZSwic3Ryb2tlIjpmYWxzZSwibWFya2VycyI6ZmFsc2UsImNsaXBwZWQiOmZh
bHNlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0K
K1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0
WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjpmYWxzZSwic3Ryb2tlIjp0cnVlLCJtYXJrZXJz
IjpmYWxzZSwiY2xpcHBlZCI6ZmFsc2V9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1Mg
YmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBi
Ym94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOmZhbHNlLCJz
dHJva2UiOmZhbHNlLCJtYXJrZXJzIjp0cnVlLCJjbGlwcGVkIjpmYWxzZX0KK1BBU1MgYmJveC54
IGlzIHJlc3VsdFswXQorUEFTUyBiYm94LnkgaXMgcmVzdWx0WzFdCitQQVNTIGJib3gud2lkdGgg
aXMgcmVzdWx0WzJdCitQQVNTIGJib3guaGVpZ2h0IGlzIHJlc3VsdFszXQorZ2V0QkJveCBvcHRp
b246IHsiZmlsbCI6ZmFsc2UsInN0cm9rZSI6ZmFsc2UsIm1hcmtlcnMiOmZhbHNlLCJjbGlwcGVk
Ijp0cnVlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRb
MV0KK1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVz
dWx0WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjp0cnVlLCJzdHJva2UiOnRydWUsIm1hcmtl
cnMiOnRydWUsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1Mg
YmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBi
Ym94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOmZhbHNlLCJz
dHJva2UiOnRydWUsIm1hcmtlcnMiOnRydWUsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gueCBp
cyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlz
IHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9u
OiB7ImZpbGwiOnRydWUsInN0cm9rZSI6ZmFsc2UsIm1hcmtlcnMiOnRydWUsImNsaXBwZWQiOnRy
dWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQor
UEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRb
M10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9rZSI6dHJ1ZSwibWFya2VycyI6
ZmFsc2UsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJv
eC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94
LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9r
ZSI6dHJ1ZSwibWFya2VycyI6dHJ1ZSwiY2xpcHBlZCI6ZmFsc2V9CitQQVNTIGJib3gueCBpcyBy
ZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJl
c3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KKworZ2V0QkJveCBvcHRpb246
IHsiZmlsbCI6ZmFsc2UsInN0cm9rZSI6ZmFsc2UsIm1hcmtlcnMiOmZhbHNlLCJjbGlwcGVkIjpm
YWxzZX0KK1BBU1MgYmJveC54IGlzIHJlc3VsdFswXQorUEFTUyBiYm94LnkgaXMgcmVzdWx0WzFd
CitQQVNTIGJib3gud2lkdGggaXMgcmVzdWx0WzJdCitQQVNTIGJib3guaGVpZ2h0IGlzIHJlc3Vs
dFszXQorZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6dHJ1ZSwic3Ryb2tlIjpmYWxzZSwibWFya2Vy
cyI6ZmFsc2UsImNsaXBwZWQiOmZhbHNlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNT
IGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1Mg
YmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjpmYWxzZSwi
c3Ryb2tlIjp0cnVlLCJtYXJrZXJzIjpmYWxzZSwiY2xpcHBlZCI6ZmFsc2V9CitQQVNTIGJib3gu
eCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRo
IGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0
aW9uOiB7ImZpbGwiOmZhbHNlLCJzdHJva2UiOmZhbHNlLCJtYXJrZXJzIjp0cnVlLCJjbGlwcGVk
IjpmYWxzZX0KK1BBU1MgYmJveC54IGlzIHJlc3VsdFswXQorUEFTUyBiYm94LnkgaXMgcmVzdWx0
WzFdCitQQVNTIGJib3gud2lkdGggaXMgcmVzdWx0WzJdCitQQVNTIGJib3guaGVpZ2h0IGlzIHJl
c3VsdFszXQorZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6ZmFsc2UsInN0cm9rZSI6ZmFsc2UsIm1h
cmtlcnMiOmZhbHNlLCJjbGlwcGVkIjp0cnVlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQ
QVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BB
U1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjp0cnVl
LCJzdHJva2UiOnRydWUsIm1hcmtlcnMiOnRydWUsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gu
eCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRo
IGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0
aW9uOiB7ImZpbGwiOmZhbHNlLCJzdHJva2UiOnRydWUsIm1hcmtlcnMiOnRydWUsImNsaXBwZWQi
OnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsx
XQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1
bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9rZSI6ZmFsc2UsIm1hcmtl
cnMiOnRydWUsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1Mg
YmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBi
Ym94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUsInN0
cm9rZSI6dHJ1ZSwibWFya2VycyI6ZmFsc2UsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gueCBp
cyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlz
IHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9u
OiB7ImZpbGwiOnRydWUsInN0cm9rZSI6dHJ1ZSwibWFya2VycyI6dHJ1ZSwiY2xpcHBlZCI6ZmFs
c2V9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQor
UEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRb
M10KKworZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6ZmFsc2UsInN0cm9rZSI6ZmFsc2UsIm1hcmtl
cnMiOmZhbHNlLCJjbGlwcGVkIjpmYWxzZX0KK1BBU1MgYmJveC54IGlzIHJlc3VsdFswXQorUEFT
UyBiYm94LnkgaXMgcmVzdWx0WzFdCitQQVNTIGJib3gud2lkdGggaXMgcmVzdWx0WzJdCitQQVNT
IGJib3guaGVpZ2h0IGlzIHJlc3VsdFszXQorZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6dHJ1ZSwi
c3Ryb2tlIjpmYWxzZSwibWFya2VycyI6ZmFsc2UsImNsaXBwZWQiOmZhbHNlfQorUEFTUyBiYm94
LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0
aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9w
dGlvbjogeyJmaWxsIjpmYWxzZSwic3Ryb2tlIjp0cnVlLCJtYXJrZXJzIjpmYWxzZSwiY2xpcHBl
ZCI6ZmFsc2V9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3Vs
dFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyBy
ZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOmZhbHNlLCJzdHJva2UiOmZhbHNlLCJt
YXJrZXJzIjp0cnVlLCJjbGlwcGVkIjpmYWxzZX0KK1BBU1MgYmJveC54IGlzIHJlc3VsdFswXQor
UEFTUyBiYm94LnkgaXMgcmVzdWx0WzFdCitQQVNTIGJib3gud2lkdGggaXMgcmVzdWx0WzJdCitQ
QVNTIGJib3guaGVpZ2h0IGlzIHJlc3VsdFszXQorZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6ZmFs
c2UsInN0cm9rZSI6ZmFsc2UsIm1hcmtlcnMiOmZhbHNlLCJjbGlwcGVkIjp0cnVlfQorUEFTUyBi
Ym94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53
aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94
IG9wdGlvbjogeyJmaWxsIjp0cnVlLCJzdHJva2UiOnRydWUsIm1hcmtlcnMiOnRydWUsImNsaXBw
ZWQiOnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3Vs
dFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyBy
ZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOmZhbHNlLCJzdHJva2UiOnRydWUsIm1h
cmtlcnMiOnRydWUsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BB
U1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFT
UyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUs
InN0cm9rZSI6ZmFsc2UsIm1hcmtlcnMiOnRydWUsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gu
eCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRo
IGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0
aW9uOiB7ImZpbGwiOnRydWUsInN0cm9rZSI6dHJ1ZSwibWFya2VycyI6ZmFsc2UsImNsaXBwZWQi
OnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsx
XQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1
bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9rZSI6dHJ1ZSwibWFya2Vy
cyI6dHJ1ZSwiY2xpcHBlZCI6ZmFsc2V9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1Mg
YmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBi
Ym94LmhlaWdodCBpcyByZXN1bHRbM10KKworZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6ZmFsc2Us
InN0cm9rZSI6ZmFsc2UsIm1hcmtlcnMiOmZhbHNlLCJjbGlwcGVkIjpmYWxzZX0KK1BBU1MgYmJv
eC54IGlzIHJlc3VsdFswXQorUEFTUyBiYm94LnkgaXMgcmVzdWx0WzFdCitQQVNTIGJib3gud2lk
dGggaXMgcmVzdWx0WzJdCitQQVNTIGJib3guaGVpZ2h0IGlzIHJlc3VsdFszXQorZ2V0QkJveCBv
cHRpb246IHsiZmlsbCI6dHJ1ZSwic3Ryb2tlIjpmYWxzZSwibWFya2VycyI6ZmFsc2UsImNsaXBw
ZWQiOmZhbHNlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyByZXN1
bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQgaXMg
cmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjpmYWxzZSwic3Ryb2tlIjp0cnVlLCJt
YXJrZXJzIjpmYWxzZSwiY2xpcHBlZCI6ZmFsc2V9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0K
K1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQor
UEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOmZh
bHNlLCJzdHJva2UiOmZhbHNlLCJtYXJrZXJzIjp0cnVlLCJjbGlwcGVkIjpmYWxzZX0KK1BBU1Mg
YmJveC54IGlzIHJlc3VsdFswXQorUEFTUyBiYm94LnkgaXMgcmVzdWx0WzFdCitQQVNTIGJib3gu
d2lkdGggaXMgcmVzdWx0WzJdCitQQVNTIGJib3guaGVpZ2h0IGlzIHJlc3VsdFszXQorZ2V0QkJv
eCBvcHRpb246IHsiZmlsbCI6ZmFsc2UsInN0cm9rZSI6ZmFsc2UsIm1hcmtlcnMiOmZhbHNlLCJj
bGlwcGVkIjp0cnVlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBdCitQQVNTIGJib3gueSBpcyBy
ZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0KK1BBU1MgYmJveC5oZWlnaHQg
aXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjp0cnVlLCJzdHJva2UiOnRydWUs
Im1hcmtlcnMiOnRydWUsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0K
K1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQor
UEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOmZh
bHNlLCJzdHJva2UiOnRydWUsIm1hcmtlcnMiOnRydWUsImNsaXBwZWQiOnRydWV9CitQQVNTIGJi
b3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94Lndp
ZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3gg
b3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9rZSI6ZmFsc2UsIm1hcmtlcnMiOnRydWUsImNsaXBw
ZWQiOnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3Vs
dFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyBy
ZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9rZSI6dHJ1ZSwibWFy
a2VycyI6ZmFsc2UsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BB
U1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFT
UyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUs
InN0cm9rZSI6dHJ1ZSwibWFya2VycyI6dHJ1ZSwiY2xpcHBlZCI6ZmFsc2V9CitQQVNTIGJib3gu
eCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRo
IGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KKworZ2V0QkJveCBv
cHRpb246IHsiZmlsbCI6ZmFsc2UsInN0cm9rZSI6ZmFsc2UsIm1hcmtlcnMiOmZhbHNlLCJjbGlw
cGVkIjpmYWxzZX0KK1BBU1MgYmJveC54IGlzIHJlc3VsdFswXQorUEFTUyBiYm94LnkgaXMgcmVz
dWx0WzFdCitQQVNTIGJib3gud2lkdGggaXMgcmVzdWx0WzJdCitQQVNTIGJib3guaGVpZ2h0IGlz
IHJlc3VsdFszXQorZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6dHJ1ZSwic3Ryb2tlIjpmYWxzZSwi
bWFya2VycyI6ZmFsc2UsImNsaXBwZWQiOmZhbHNlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0WzBd
CitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRbMl0K
K1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxsIjpm
YWxzZSwic3Ryb2tlIjp0cnVlLCJtYXJrZXJzIjpmYWxzZSwiY2xpcHBlZCI6ZmFsc2V9CitQQVNT
IGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94
LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJC
b3ggb3B0aW9uOiB7ImZpbGwiOmZhbHNlLCJzdHJva2UiOmZhbHNlLCJtYXJrZXJzIjp0cnVlLCJj
bGlwcGVkIjpmYWxzZX0KK1BBU1MgYmJveC54IGlzIHJlc3VsdFswXQorUEFTUyBiYm94LnkgaXMg
cmVzdWx0WzFdCitQQVNTIGJib3gud2lkdGggaXMgcmVzdWx0WzJdCitQQVNTIGJib3guaGVpZ2h0
IGlzIHJlc3VsdFszXQorZ2V0QkJveCBvcHRpb246IHsiZmlsbCI6ZmFsc2UsInN0cm9rZSI6ZmFs
c2UsIm1hcmtlcnMiOmZhbHNlLCJjbGlwcGVkIjp0cnVlfQorUEFTUyBiYm94LnggaXMgcmVzdWx0
WzBdCitQQVNTIGJib3gueSBpcyByZXN1bHRbMV0KK1BBU1MgYmJveC53aWR0aCBpcyByZXN1bHRb
Ml0KK1BBU1MgYmJveC5oZWlnaHQgaXMgcmVzdWx0WzNdCitnZXRCQm94IG9wdGlvbjogeyJmaWxs
Ijp0cnVlLCJzdHJva2UiOnRydWUsIm1hcmtlcnMiOnRydWUsImNsaXBwZWQiOnRydWV9CitQQVNT
IGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94
LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJC
b3ggb3B0aW9uOiB7ImZpbGwiOmZhbHNlLCJzdHJva2UiOnRydWUsIm1hcmtlcnMiOnRydWUsImNs
aXBwZWQiOnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJl
c3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBp
cyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9rZSI6ZmFsc2Us
Im1hcmtlcnMiOnRydWUsImNsaXBwZWQiOnRydWV9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0K
K1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQor
UEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3ggb3B0aW9uOiB7ImZpbGwiOnRy
dWUsInN0cm9rZSI6dHJ1ZSwibWFya2VycyI6ZmFsc2UsImNsaXBwZWQiOnRydWV9CitQQVNTIGJi
b3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3VsdFsxXQorUEFTUyBiYm94Lndp
ZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyByZXN1bHRbM10KK2dldEJCb3gg
b3B0aW9uOiB7ImZpbGwiOnRydWUsInN0cm9rZSI6dHJ1ZSwibWFya2VycyI6dHJ1ZSwiY2xpcHBl
ZCI6ZmFsc2V9CitQQVNTIGJib3gueCBpcyByZXN1bHRbMF0KK1BBU1MgYmJveC55IGlzIHJlc3Vs
dFsxXQorUEFTUyBiYm94LndpZHRoIGlzIHJlc3VsdFsyXQorUEFTUyBiYm94LmhlaWdodCBpcyBy
ZXN1bHRbM10KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2dldEJCb3guaHRtbCBiL0xh
eW91dFRlc3RzL3N2Zy9jdXN0b20vZ2V0QkJveC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNzgyODI1ODU1
OTFhNzljYTM4MGI5NjE4ZmE4MjgwNWE5M2QxM2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL2dldEJCb3guaHRtbApAQCAtMCwwICsxLDE1OSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyogeyBmb250LXNpemU6IDE2cHg7IH0KK2RpdiB7IGZv
bnQtc2l6ZTogOHB4OyB9CitnLCBwYXRoLCBpbWFnZSAgeworICAgIHN0cm9rZTogZ3JlZW47Cisg
ICAgc3Ryb2tlLXdpZHRoOiAxMHB4OworICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMCAxMDA7Cisg
ICAgc3Ryb2tlLW1pdGVybGltaXQ6IDU7CisgICAgZmlsbDogbm9uZTsKKyAgICBtYXJrZXItc3Rh
cnQ6IHVybCgjc3F1YXJlKTsKKyAgICBtYXJrZXItbWlkOiB1cmwoI3NxdWFyZSk7CisgICAgbWFy
a2VyLWVuZDogdXJsKCNzcXVhcmUpOworICAgIGNsaXAtcGF0aDogdXJsKCNjbGlwKTsKK30KKzwv
c3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHN2ZyB3aWR0aD0iNTAwIiBoZWlnaHQ9Ijg1MCI+CisgICAgPGcgaWQ9
ImcxIj4KKyAgICAgICAgPCEtLSBUZXN0IHRoYXQgY2xpcFBhdGggYW5kIG1hcmtlciBkbyBub3Qg
Y29udHJpYnV0ZSB0byBnZXRCQm94LiAtLT4KKyAgICAgICAgPGNsaXBQYXRoIGlkPSJjbGlwIj4K
KyAgICAgICAgICAgIDxyZWN0IHg9IjgwIiB3aWR0aD0iMTYwIiBoZWlnaHQ9Ijg1MCIgc3R5bGU9
ImNsaXAtcGF0aDogbm9uZSIvPgorICAgICAgICA8L2NsaXBQYXRoPgorICAgICAgICA8bWFya2Vy
IGlkPSJzcXVhcmUiIHZpZXdCb3g9IjAgMCAyMCAyMCIgcmVmWD0iMTAiIHJlZlk9IjEwIiBtYXJr
ZXJXaWR0aD0iMTAiIG1hcmtlckhlaWdodD0iMTAiIG9yaWVudD0iMCI+CisgICAgICAgICAgICA8
cmVjdCB4PSI1IiB5PSI1IiB3aWR0aD0iMTAiIGhlaWdodD0iMTAiLz4KKyAgICAgICAgPC9tYXJr
ZXI+CisgICAgICAgIDxwYXRoIGlkPSJwYXRoMSIgZD0iTSA1MCAxMDAgTCAyNTAgMjAwIEwgNTAg
MzAwIiBzdHlsZT0ic3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7
Ii8+CisgICAgICAgIDxwYXRoIGlkPSJwYXRoMiIgZD0iTSA1MCAxMDAgTCAyNTAgMjAwIEwgNTAg
MzAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMCwgMCkiIHN0eWxlPSJzdHJva2UtbGluZWpvaW46
IHJvdW5kOyBzdHJva2UtbGluZWNhcDogYnV0dDsiLz4KKyAgICAgICAgPHBhdGggaWQ9InBhdGgz
IiBkPSJNIDUwIDEwMCBMIDI1MCAyMDAgTCA1MCAzMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYw
LCAwKSIgc3R5bGU9InN0cm9rZS1saW5lam9pbjogc3F1YXJlOyBzdHJva2UtbGluZWNhcDogc3F1
YXJlOyIvPgorICAgICAgICA8ZyBpZD0iZzIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkwLCAwKSIg
PgorICAgICAgICAgICAgPHBhdGggZD0iTSA1MCAxMDAgTCAyNTAgMjAwIEwgNTAgMzAwIiBzdHls
ZT0ic3Ryb2tlLWxpbmVqb2luOiBzcXVhcmU7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmU7Ii8+Cisg
ICAgICAgIDwvZz4KKyAgICAgICAgPGltYWdlIGlkPSJpbWFnZTEiIHg9IjUwIiB5PSIzNTAiIHdp
ZHRoPSIyMDAiIGhlaWdodD0iMjAwIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWw7dXRm
OCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzIwMCcgaGVp
Z2h0PScyMDAnPjxyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J2dyZWVuJy8+
PC9zdmc+Ii8+CisgICAgICAgIDxmb3JlaWduT2JqZWN0IGlkPSJmbzEiIHg9IjUwIiB5PSIzNTAi
IHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAyMDApIj4K
KyAgICAgICAgICAgIDxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0
eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyBtYXJn
aW46IDA7IHBhZGRpbmc6IDAiPjwvZGl2PgorICAgICAgICA8L2ZvcmVpZ25PYmplY3Q+CisgICAg
PC9nPgorPC9zdmc+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgZ2V0QkJveCB3aXRoIFNW
R0JvdW5kaW5nQm94T3B0aW9ucy4nKTsKKwordmFyIG9wdGlvbnMgPSBbCisgICAgeyBmaWxsOiBm
YWxzZSwgc3Ryb2tlOiBmYWxzZSwgbWFya2VyczogZmFsc2UsIGNsaXBwZWQ6IGZhbHNlIH0sCisg
ICAgeyBmaWxsOiB0cnVlLCBzdHJva2U6IGZhbHNlLCBtYXJrZXJzOiBmYWxzZSwgY2xpcHBlZDog
ZmFsc2UgfSwKKyAgICB7IGZpbGw6IGZhbHNlLCBzdHJva2U6IHRydWUsIG1hcmtlcnM6IGZhbHNl
LCBjbGlwcGVkOiBmYWxzZSB9LAorICAgIHsgZmlsbDogZmFsc2UsIHN0cm9rZTogZmFsc2UsIG1h
cmtlcnM6IHRydWUsIGNsaXBwZWQ6IGZhbHNlIH0sCisgICAgeyBmaWxsOiBmYWxzZSwgc3Ryb2tl
OiBmYWxzZSwgbWFya2VyczogZmFsc2UsIGNsaXBwZWQ6IHRydWUgfSwKKyAgICB7IGZpbGw6IHRy
dWUsIHN0cm9rZTogdHJ1ZSwgbWFya2VyczogdHJ1ZSwgY2xpcHBlZDogdHJ1ZSB9LAorICAgIHsg
ZmlsbDogZmFsc2UsIHN0cm9rZTogdHJ1ZSwgbWFya2VyczogdHJ1ZSwgY2xpcHBlZDogdHJ1ZSB9
LAorICAgIHsgZmlsbDogdHJ1ZSwgc3Ryb2tlOiBmYWxzZSwgbWFya2VyczogdHJ1ZSwgY2xpcHBl
ZDogdHJ1ZSB9LAorICAgIHsgZmlsbDogdHJ1ZSwgc3Ryb2tlOiB0cnVlLCBtYXJrZXJzOiBmYWxz
ZSwgY2xpcHBlZDogdHJ1ZSB9LAorICAgIHsgZmlsbDogdHJ1ZSwgc3Ryb2tlOiB0cnVlLCBtYXJr
ZXJzOiB0cnVlLCBjbGlwcGVkOiBmYWxzZSB9CitdOworCit2YXIgc2hvdWxkQmVCQm94ID0gZnVu
Y3Rpb24gKGFjdHVhbCwgb3B0aW9ucywgZXhwZWN0ZWQpIHsKKyAgICBiYm94ID0gYWN0dWFsOwor
ICAgIHJlc3VsdCA9IGV4cGVjdGVkOworICAgIGRlYnVnKCdnZXRCQm94IG9wdGlvbjogJyArIEpT
T04uc3RyaW5naWZ5KG9wdGlvbnMpKTsKKyAgICBzaG91bGRCZSgiYmJveC54IiwgInJlc3VsdFsw
XSIpOworICAgIHNob3VsZEJlKCJiYm94LnkiLCAicmVzdWx0WzFdIik7CisgICAgc2hvdWxkQmUo
ImJib3gud2lkdGgiLCAicmVzdWx0WzJdIik7CisgICAgc2hvdWxkQmUoImJib3guaGVpZ2h0Iiwg
InJlc3VsdFszXSIpOworfQorCit2YXIgZWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImcx
Iik7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1swXSksIG9wdGlvbnNbMF0sIFsw
LCAwLCAwLCAwXSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1sxXSksIG9wdGlv
bnNbMV0sIFs1MCwgMTAwLCAyOTAsIDY1MF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9w
dGlvbnNbMl0pLCBvcHRpb25zWzJdLCBbLTc1LCAtMjUsIDQ1MCwgNTc1XSk7CitzaG91bGRCZUJC
b3goZWxlLmdldEJCb3gob3B0aW9uc1szXSksIG9wdGlvbnNbM10sIFswLCA1MCwgMzAwLCAzMDBd
KTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25zWzRdKSwgb3B0aW9uc1s0XSwgWzAs
IDAsIDAsIDBdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25zWzVdKSwgb3B0aW9u
c1s1XSwgWzc1LCAtNSwgMTcwLCA1NTVdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRp
b25zWzZdKSwgb3B0aW9uc1s2XSwgWzc1LCAtNSwgMTcwLCA1NTVdKTsKK3Nob3VsZEJlQkJveChl
bGUuZ2V0QkJveChvcHRpb25zWzddKSwgb3B0aW9uc1s3XSwgWzc1LCAwLCAxNzAsIDU1MF0pOwor
c2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbOF0pLCBvcHRpb25zWzhdLCBbNzUsIC01
LCAxNzAsIDU1NV0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbOV0pLCBvcHRp
b25zWzldLCBbLTc1LCAtMjUsIDQ1MCwgNTc1XSk7CisKK2RlYnVnKCcnKTsKK2VsZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwYXRoMSIpOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9w
dGlvbnNbMF0pLCBvcHRpb25zWzBdLCBbMCwgMCwgMCwgMF0pOworc2hvdWxkQmVCQm94KGVsZS5n
ZXRCQm94KG9wdGlvbnNbMV0pLCBvcHRpb25zWzFdLCBbNTAsIDEwMCwgMjAwLCAyMDBdKTsKK3No
b3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25zWzJdKSwgb3B0aW9uc1syXSwgWy03NSwgLTI1
LCA0NTAsIDQ1MF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbM10pLCBvcHRp
b25zWzNdLCBbMCwgNTAsIDMwMCwgMzAwXSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0
aW9uc1s0XSksIG9wdGlvbnNbNF0sIFswLCAwLCAwLCAwXSk7CitzaG91bGRCZUJCb3goZWxlLmdl
dEJCb3gob3B0aW9uc1s1XSksIG9wdGlvbnNbNV0sIFs3NSwgLTUsIDE3MCwgNDMwXSk7CitzaG91
bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1s2XSksIG9wdGlvbnNbNl0sIFs3NSwgLTUsIDE3
MCwgNDMwXSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1s3XSksIG9wdGlvbnNb
N10sIFs3NSwgNTAsIDE3MCwgMzAwXSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9u
c1s1XSksIG9wdGlvbnNbNV0sIFs3NSwgLTUsIDE3MCwgNDMwXSk7CitzaG91bGRCZUJCb3goZWxl
LmdldEJCb3gob3B0aW9uc1s5XSksIG9wdGlvbnNbOV0sIFstNzUsIC0yNSwgNDUwLCA0NTBdKTsK
KworZGVidWcoJycpOworZWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhdGgyIik7Citz
aG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1swXSksIG9wdGlvbnNbMF0sIFswLCAwLCAw
LCAwXSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1sxXSksIG9wdGlvbnNbMV0s
IFs1MCwgMTAwLCAyMDAsIDIwMF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNb
Ml0pLCBvcHRpb25zWzJdLCBbNDUsIDk1LCAyMTAsIDIxMF0pOworc2hvdWxkQmVCQm94KGVsZS5n
ZXRCQm94KG9wdGlvbnNbM10pLCBvcHRpb25zWzNdLCBbMCwgNTAsIDMwMCwgMzAwXSk7CitzaG91
bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1s0XSksIG9wdGlvbnNbNF0sIFswLCAwLCAwLCAw
XSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1s1XSksIG9wdGlvbnNbNV0sIFs3
NSwgNTAsIDE3MCwgMzAwXSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1s2XSks
IG9wdGlvbnNbNl0sIFs3NSwgNTAsIDE3MCwgMzAwXSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJC
b3gob3B0aW9uc1s3XSksIG9wdGlvbnNbN10sIFs3NSwgNTAsIDE3MCwgMzAwXSk7CitzaG91bGRC
ZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1s4XSksIG9wdGlvbnNbOF0sIFs3NSwgOTUsIDE3MCwg
MjEwXSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1s5XSksIG9wdGlvbnNbOV0s
IFswLCA1MCwgMzAwLCAzMDBdKTsKKworZGVidWcoJycpOworZWxlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBhdGgzIik7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1swXSks
IG9wdGlvbnNbMF0sIFswLCAwLCAwLCAwXSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0
aW9uc1sxXSksIG9wdGlvbnNbMV0sIFs1MCwgMTAwLCAyMDAsIDIwMF0pOworc2hvdWxkQmVCQm94
KGVsZS5nZXRCQm94KG9wdGlvbnNbMl0pLCBvcHRpb25zWzJdLCBbLTc1LCAtMjUsIDQ1MCwgNDUw
XSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1szXSksIG9wdGlvbnNbM10sIFsw
LCA1MCwgMzAwLCAzMDBdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25zWzRdKSwg
b3B0aW9uc1s0XSwgWzAsIDAsIDAsIDBdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRp
b25zWzVdKSwgb3B0aW9uc1s1XSwgWzc1LCAtNSwgMTcwLCA0MzBdKTsKK3Nob3VsZEJlQkJveChl
bGUuZ2V0QkJveChvcHRpb25zWzZdKSwgb3B0aW9uc1s2XSwgWzc1LCAtNSwgMTcwLCA0MzBdKTsK
K3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25zWzddKSwgb3B0aW9uc1s3XSwgWzc1LCA1
MCwgMTcwLCAzMDBdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25zWzhdKSwgb3B0
aW9uc1s4XSwgWzc1LCAtNSwgMTcwLCA0MzBdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChv
cHRpb25zWzldKSwgb3B0aW9uc1s5XSwgWy03NSwgLTI1LCA0NTAsIDQ1MF0pOworCitkZWJ1Zygn
Jyk7CitlbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZzIiKTsKK3Nob3VsZEJlQkJveChl
bGUuZ2V0QkJveChvcHRpb25zWzBdKSwgb3B0aW9uc1swXSwgWzAsIDAsIDAsIDBdKTsKK3Nob3Vs
ZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25zWzFdKSwgb3B0aW9uc1sxXSwgWzUwLCAxMDAsIDIw
MCwgMjAwXSk7CitzaG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1syXSksIG9wdGlvbnNb
Ml0sIFstNzUsIC0yNSwgNDUwLCA0NTBdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRp
b25zWzNdKSwgb3B0aW9uc1szXSwgWzAsIDUwLCAzMDAsIDMwMF0pOworc2hvdWxkQmVCQm94KGVs
ZS5nZXRCQm94KG9wdGlvbnNbNF0pLCBvcHRpb25zWzRdLCBbMCwgMCwgMCwgMF0pOworc2hvdWxk
QmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbNV0pLCBvcHRpb25zWzVdLCBbNzUsIC01LCAxNzAs
IDQzMF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbNl0pLCBvcHRpb25zWzZd
LCBbNzUsIC01LCAxNzAsIDQzMF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNb
N10pLCBvcHRpb25zWzddLCBbNzUsIDUwLCAxNzAsIDMwMF0pOworc2hvdWxkQmVCQm94KGVsZS5n
ZXRCQm94KG9wdGlvbnNbOF0pLCBvcHRpb25zWzhdLCBbNzUsIC01LCAxNzAsIDQzMF0pOworc2hv
dWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbOV0pLCBvcHRpb25zWzldLCBbLTc1LCAtMjUs
IDQ1MCwgNDUwXSk7CisKK2RlYnVnKCcnKTsKK2VsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJpbWFnZTEiKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25zWzBdKSwgb3B0aW9u
c1swXSwgWzAsIDAsIDAsIDBdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25zWzFd
KSwgb3B0aW9uc1sxXSwgWzUwLCAzNTAsIDIwMCwgMjAwXSk7CitzaG91bGRCZUJCb3goZWxlLmdl
dEJCb3gob3B0aW9uc1syXSksIG9wdGlvbnNbMl0sIFs1MCwgMzUwLCAyMDAsIDIwMF0pOworc2hv
dWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbM10pLCBvcHRpb25zWzNdLCBbMCwgMCwgMCwg
MF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbNF0pLCBvcHRpb25zWzRdLCBb
MCwgMCwgMCwgMF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbNV0pLCBvcHRp
b25zWzVdLCBbNzUsIDM1MCwgMTcwLCAyMDBdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChv
cHRpb25zWzZdKSwgb3B0aW9uc1s2XSwgWzc1LCAzNTAsIDE3MCwgMjAwXSk7CitzaG91bGRCZUJC
b3goZWxlLmdldEJCb3gob3B0aW9uc1s3XSksIG9wdGlvbnNbN10sIFs3NSwgMzUwLCAxNzAsIDIw
MF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbOF0pLCBvcHRpb25zWzhdLCBb
NzUsIDM1MCwgMTcwLCAyMDBdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25zWzld
KSwgb3B0aW9uc1s5XSwgWzUwLCAzNTAsIDIwMCwgMjAwXSk7CisKK2RlYnVnKCcnKTsKK2VsZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbzEiKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJv
eChvcHRpb25zWzBdKSwgb3B0aW9uc1swXSwgWzAsIDAsIDAsIDBdKTsKK3Nob3VsZEJlQkJveChl
bGUuZ2V0QkJveChvcHRpb25zWzFdKSwgb3B0aW9uc1sxXSwgWzAsIDAsIDIwMCwgMjAwXSk7Citz
aG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1syXSksIG9wdGlvbnNbMl0sIFswLCAwLCAy
MDAsIDIwMF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbM10pLCBvcHRpb25z
WzNdLCBbMCwgMCwgMCwgMF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbNF0p
LCBvcHRpb25zWzRdLCBbMCwgMCwgMCwgMF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9w
dGlvbnNbNV0pLCBvcHRpb25zWzVdLCBbMCwgMCwgMjAwLCAyMDBdKTsKK3Nob3VsZEJlQkJveChl
bGUuZ2V0QkJveChvcHRpb25zWzZdKSwgb3B0aW9uc1s2XSwgWzAsIDAsIDIwMCwgMjAwXSk7Citz
aG91bGRCZUJCb3goZWxlLmdldEJCb3gob3B0aW9uc1s3XSksIG9wdGlvbnNbN10sIFswLCAwLCAy
MDAsIDIwMF0pOworc2hvdWxkQmVCQm94KGVsZS5nZXRCQm94KG9wdGlvbnNbOF0pLCBvcHRpb25z
WzhdLCBbMCwgMCwgMjAwLCAyMDBdKTsKK3Nob3VsZEJlQkJveChlbGUuZ2V0QkJveChvcHRpb25z
WzldKSwgb3B0aW9uc1s5XSwgWzAsIDAsIDIwMCwgMjAwXSk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>
<flag name="review"
          id="397749"
          type_id="1"
          status="?"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>