<?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>81387</bug_id>
          
          <creation_ts>2012-03-16 12:18:21 -0700</creation_ts>
          <short_desc>MathML internals - factor code for almost anonymous blocks</short_desc>
          <delta_ts>2012-03-16 19:17:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>MathML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dave Barton">dbarton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>leviw</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>580781</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-03-16 12:18:21 -0700</bug_when>
    <thetext>MathML internals - factor code for almost anonymous blocks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580802</commentid>
    <comment_count>1</comment_count>
      <attachid>132346</attachid>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-03-16 12:30:35 -0700</bug_when>
    <thetext>Created attachment 132346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580909</commentid>
    <comment_count>2</comment_count>
      <attachid>132346</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-16 13:48:52 -0700</bug_when>
    <thetext>Comment on attachment 132346
Patch

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

Nice to clean this up, thanks.

&gt; Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp:52
&gt; +RenderMathMLBlock* RenderMathMLBlock::createAlmostAnonymousBlock(EDisplay display)

Normally these sorts of functions would return PassOwnPtr, but the rendering tree code isn&apos;t very consistent about that, sadly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580946</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-03-16 14:20:55 -0700</bug_when>
    <thetext>Thanks for the review and the comment! I am learning. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580952</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-16 14:24:01 -0700</bug_when>
    <thetext>There is some documentation on PassRefPtr/RefPtr, PassOwnPtr/OwnPtr here:
http://www.webkit.org/coding/technical-articles.html
(in the RefPtr doc), but admittedly, WebKit&apos;s documentation (or even its own ability to follow it&apos;s own best practices) is limited.

The wiki (http://trac.webkit.org/wiki) also has more information.  I&apos;m currently working on trying to come up; with better documentation for some of the trickier parts, like the render tree.

Thanks for the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580959</commentid>
    <comment_count>5</comment_count>
      <attachid>132346</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-03-16 14:30:14 -0700</bug_when>
    <thetext>Comment on attachment 132346
Patch

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

A couple of comments too (mostly consistency questions). Not worth holding the change though.

&gt;&gt; Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp:52
&gt;&gt; +RenderMathMLBlock* RenderMathMLBlock::createAlmostAnonymousBlock(EDisplay display)
&gt; 
&gt; Normally these sorts of functions would return PassOwnPtr, but the rendering tree code isn&apos;t very consistent about that, sadly.

Unfortunately indeed. Shouldn&apos;t we name this function createAlmostAnonymousMathMLBlock? (at some point you will want to create anonymous RenderMathMLBlock not RenderBlock or am I missing something?)

&gt; Source/WebCore/rendering/mathml/RenderMathMLFraction.cpp:106
&gt; +    Length pad(static_cast&lt;int&gt;(style()-&gt;fontSize() * gHorizontalPad), Fixed);

I guess this is equivalent here but it used to be row-&gt;style()-&gt;fontSize().

&gt; Source/WebCore/rendering/mathml/RenderMathMLSubSup.cpp:87
&gt; +            RefPtr&lt;RenderStyle&gt; scriptsStyle = RenderStyle::createAnonymousStyle(style());
&gt;              scriptsStyle-&gt;setDisplay(INLINE_BLOCK);
&gt;              scriptsStyle-&gt;setVerticalAlign(TOP);
&gt;              scriptsStyle-&gt;setMarginLeft(Length(gSubsupScriptMargin, Fixed));
&gt;              scriptsStyle-&gt;setTextAlign(LEFT);
&gt;              // Set this wrapper&apos;s font-size for its line-height &amp; baseline position.
&gt;              scriptsStyle-&gt;setBlendedFontSize(static_cast&lt;int&gt;(0.75 * style()-&gt;fontSize()));
&gt; -            m_scripts-&gt;setStyle(scriptsStyle.release());
&gt; +            m_scripts = new (renderArena()) RenderMathMLBlock(node());
&gt; +            m_scripts-&gt;setStyle(scriptsStyle);

Shouldn&apos;t m_scripts also use createAlmostAnonymousBlock() or would you rather wait to do that?

&gt; Source/WebCore/rendering/mathml/RenderMathMLUnderOver.cpp:69
&gt; +    RenderBlock* row = createAnonymousBlock();

Shouldn&apos;t we add a new createAnonymousMathMLBlock() as you would rather keep it a MathML block if you want to add more logic into them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581013</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-03-16 15:16:51 -0700</bug_when>
    <thetext>Boy you guys are good (thorough).

I&apos;d read the technical articles, but it&apos;s good to read again. I&apos;d also be happy to read your (Eric) new wiki documentation, and give newbie comments to you if you want.

Actually I didn&apos;t realize RenderObject isn&apos;t reference counted, so I&apos;d originally coded using PassRefPtr&lt;&gt;. But none of the other functions use PassOwnPtr&lt;&gt; for RenderObjects, they just return a raw new pointer that ends up going to addChild(), so I did that.

Julien, soon we&apos;ll switch to an anonymous RenderBlock, I think. The best answer ultimately might be some new RenderPadded or RenderWrapped or whatever that might not even derive from RenderBlock, as we discussed. I think (though I might be proved wrong later) that these (almost) anonymous renderers that just add some padding or a vertical-align or whatever aren&apos;t specific to MathML, so shouldn&apos;t derive from RenderMathMLBlock. I only do that now to not change (almost) all the test dump tree output, to not change some broken code in RenderMathMLFraction.cpp in this patch, and so m_scripts in RenderMathMLSubSup could call this RenderMathMLBlock::createAlmostAnonymousBlock() member function (but in the end it doesn&apos;t - see below). We could make createAlmostAnonymousBlock() a member function of RenderBlock, but I didn&apos;t since this whole &quot;almost anonymous&quot; concept is a temporary hack just for MathML.

style()-&gt;fontSize() == row-&gt;style()-&gt;fontSize(), and the former seemed simpler and better to me with the new code.

I tried m_scripts-&gt;createAlmostAnonymousBlock() but tests failed. The problem is that the setStyle(), or some styleDidChange() or something, must happen *after* some of the style changes here (for scriptsStyle) that are more than just e.g. setting a padding. The code here seemed simplest.

Let me know if you still think I should change some of this in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581072</commentid>
    <comment_count>7</comment_count>
      <attachid>132346</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 16:12:54 -0700</bug_when>
    <thetext>Comment on attachment 132346
Patch

Clearing flags on attachment: 132346

Committed r111083: &lt;http://trac.webkit.org/changeset/111083&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581073</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 16:12:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581208</commentid>
    <comment_count>9</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-03-16 19:17:51 -0700</bug_when>
    <thetext>&gt; Julien, soon we&apos;ll switch to an anonymous RenderBlock, I think. The best answer ultimately might be some new RenderPadded or RenderWrapped or whatever that might not even derive from RenderBlock, as we discussed. 

I had in mind that RenderMathMLBlock would get this padding as this was the natural continuation of the existing code and would enable most wrappers to be anonymous. Adding new renderers for some intrinsic padding is definitely cleaner though. The other comments were mostly around this line of thoughts so likely off.

&gt; I tried m_scripts-&gt;createAlmostAnonymousBlock() but tests failed. The problem is that the setStyle(), or some styleDidChange() or something, must happen *after* some of the style changes here (for scriptsStyle) that are more than just e.g. setting a padding. The code here seemed simplest.

It&apos;s unfortunate indeed and I don&apos;t see any way around that as you need your style setup for styleDidChange.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132346</attachid>
            <date>2012-03-16 12:30:35 -0700</date>
            <delta_ts>2012-03-16 16:12:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81387-20120316123034.patch</filename>
            <type>text/plain</type>
            <size>37095</size>
            <attacher name="Dave Barton">dbarton</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTA0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAzLTE2ICBEYXZpZCBC
YXJ0b24gIDxkYmFydG9uQG1hdGhzY3JpYmUuY29tPgorCisgICAgICAgIE1hdGhNTCBpbnRlcm5h
bHMgLSBmYWN0b3IgY29kZSBmb3IgYWxtb3N0IGFub255bW91cyBibG9ja3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzg3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWF0aE1MIHVzZXMgImFsbW9zdCBh
bm9ueW1vdXMiIGJsb2NrcyB0byBsYXlvdXQgcGFydHMgb2YgbWF0aGVtYXRpY2FsIGV4cHJlc3Np
b25zLiBUaGVzZQorICAgICAgICB3aWxsIGJlIGNvbnZlcnRlZCB0byB0cnVlIGFub255bW91cyBi
bG9ja3MgaW4gYSBsYXRlciBwYXRjaC4gSGVyZSB3ZSBmYWN0b3Igb3V0IHRoZSBjb2RlCisgICAg
ICAgIHRvIGNyZWF0ZSB0aGVtIGludG8gUmVuZGVyTWF0aE1MQmxvY2s6OmNyZWF0ZUFsbW9zdEFu
b255bW91c0Jsb2NrKCkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBTb21lIHRyZWUgZHVtcCBv
dXRwdXQgaXMgbW9kaWZpZWQgZm9yIGV4aXN0aW5nIHRlc3RzLiA8bXVuZGVyPiwgPG1vdmVyPiwK
KyAgICAgICAgYW5kIDxtdW5kZXJvdmVyPiByZW5kZXJlcnMgYWxyZWFkeSB1c2VkIHRydWUgYW5v
bnltb3VzIGJsb2Nrcywgc28gd2UgY2hhbmdlIHRoZW0gdG8gY2FsbAorICAgICAgICBSZW5kZXJC
bG9jazo6Y3JlYXRlQW5vbnltb3VzQmxvY2soKS4gSW4gdGhlIG90aGVyIGRpcmVjdGlvbiwgPG1y
b290PidzIGFsbW9zdCBhbm9ueW1vdXMKKyAgICAgICAgYmxvY2tzIGFyZSBub3cgbWFkZSBSZW5k
ZXJNYXRoTUxCbG9jayBub3QganVzdCBSZW5kZXJCbG9jaywgaW4gYWdyZWVtZW50IHdpdGggb3Ro
ZXIKKyAgICAgICAgY3VycmVudCBNYXRoTUwgcmVuZGVyZXJzLgorCisgICAgICAgICogcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxCbG9jazo6Y3JlYXRlQWxtb3N0QW5vbnltb3VzQmxvY2spOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaDoKKyAgICAgICAgKFJlbmRlck1hdGhN
TEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpnZXRCb3hNb2Rl
bE9iamVjdFdpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZl
bmNlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6OmFkZENoaWxk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlbWVu
dCk6CisgICAgICAgICAgICAtIGltcHJvdmUgc29tZSB2YXJpYWJsZSBuYW1lcworICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MRnJhY3Rpb246OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TEZyYWN0aW9uOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9v
dDo6YWRkQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3Vi
U3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6YWRkQ2hpbGQp
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjphZGRDaGlsZCk6CisKIDIwMTItMDMt
MTYgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVwZGF0
ZSBMYXlvdXRVbml0IHVzYWdlIGluIFJlbmRlckxpc3RCb3gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCShyZXZp
c2lvbiAxMTEwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTIgKzQ5LDE0IEBAIGJvb2wgUmVu
ZGVyTWF0aE1MQmxvY2s6OmlzQ2hpbGRBbGxvd2VkKFIKICAgICByZXR1cm4gY2hpbGQtPm5vZGUo
KSAmJiBjaGlsZC0+bm9kZSgpLT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRfTk9ERTsKIH0K
IAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyTWF0aE1MQmxvY2s6OmNyZWF0ZUJsb2Nr
U3R5bGUoKQorUmVuZGVyTWF0aE1MQmxvY2sqIFJlbmRlck1hdGhNTEJsb2NrOjpjcmVhdGVBbG1v
c3RBbm9ueW1vdXNCbG9jayhFRGlzcGxheSBkaXNwbGF5KQogewotICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgbmV3U3R5bGUtPmlu
aGVyaXRGcm9tKHN0eWxlKCkpOwotICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKLSAg
ICByZXR1cm4gbmV3U3R5bGU7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZShzdHlsZSgpKTsKKyAgICBuZXdTdHlsZS0+
c2V0RGlzcGxheShkaXNwbGF5KTsKKyAgICAKKyAgICBSZW5kZXJNYXRoTUxCbG9jayogbmV3Qmxv
Y2sgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTEJsb2NrKG5vZGUoKSAvKiAiYWxt
b3N0IiBhbm9ueW1vdXMgYmxvY2sgKi8pOworICAgIG5ld0Jsb2NrLT5zZXRTdHlsZShuZXdTdHls
ZS5yZWxlYXNlKCkpOworICAgIHJldHVybiBuZXdCbG9jazsKIH0KIAogdm9pZCBSZW5kZXJNYXRo
TUxCbG9jazo6c3RyZXRjaFRvSGVpZ2h0KGludCBoZWlnaHQpIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAkocmV2aXNp
b24gMTExMDE4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAjZW5k
aWYKICAgICAKKyAgICAvLyBDcmVhdGUgYSBuZXcgUmVuZGVyQmxvY2ssIHdpdGggYSBuZXcgc3R5
bGUgaW5oZXJpdGluZyBmcm9tIHRoaXMtPnN0eWxlKCkuCisgICAgLy8gRklYTUU6IENyZWF0ZSBh
IHRydWUgYW5vbnltb3VzIGJsb2NrLCBsaWtlIFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXNC
bG9jaygpLgorICAgIFJlbmRlck1hdGhNTEJsb2NrKiBjcmVhdGVBbG1vc3RBbm9ueW1vdXNCbG9j
ayhFRGlzcGxheSA9IEJMT0NLKTsKKyAgICAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgTGF5b3V0
VW5pdCBnZXRCb3hNb2RlbE9iamVjdEhlaWdodChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkK
ICAgICB7CkBAIC03OSw3ICs4Myw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0
ZUJsb2NrU3R5bGUoKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJlbmRlck1hdGhNTEJsb2Nr
IChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxCbG9jayI7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAJ
KHJldmlzaW9uIDExMTAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRmVuY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDExICsxMzEsNyBAQCB2
b2lkIFJlbmRlck1hdGhNTEZlbmNlZDo6YWRkQ2hpbGQoUmVuZGVyCiAgICAgaWYgKGNoaWxkLT5p
c0Jsb2NrRmxvdygpICYmIGNoaWxkLT5zdHlsZSgpLT5kaXNwbGF5KCkgIT0gSU5MSU5FX0JMT0NL
KSB7CiAgICAgICAgIC8vIEJsb2NrIG9iamVjdHMgd3JhcHBlci4KIAotICAgICAgICBSZW5kZXJC
bG9jayogYmxvY2sgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKG5vZGUoKSk7Ci0g
ICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRl
KCk7Ci0gICAgICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKLSAgICAgICAgbmV3
U3R5bGUtPnNldERpc3BsYXkoSU5MSU5FX0JMT0NLKTsKLSAgICAgICAgYmxvY2stPnNldFN0eWxl
KG5ld1N0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIFJlbmRlckJsb2NrKiBibG9jayA9IGNyZWF0
ZUFsbW9zdEFub255bW91c0Jsb2NrKElOTElORV9CTE9DSyk7CiAgICAgICAgIAogICAgICAgICBS
ZW5kZXJCbG9jazo6YWRkQ2hpbGQoYmxvY2ssIGxhc3RDaGlsZCgpKTsKICAgICAgICAgYmxvY2st
PmFkZENoaWxkKGNoaWxkKTsgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAkocmV2aXNpb24gMTEx
MDE4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDI2ICs2MSwyNiBAQCB2b2lkIFJlbmRlck1h
dGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlCiAgICAgCiAgICAgRWxlbWVudCogZnJhY3Rpb24g
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKTsKICAgICAKLSAgICBSZW5kZXJPYmplY3Qq
IG51bWVyYXRvciA9IGZpcnN0Q2hpbGQoKTsKKyAgICBSZW5kZXJPYmplY3QqIG51bWVyYXRvcldy
YXBwZXIgPSBmaXJzdENoaWxkKCk7CiAgICAgU3RyaW5nIG5hbGlnbiA9IGZyYWN0aW9uLT5nZXRB
dHRyaWJ1dGUoTWF0aE1MTmFtZXM6Om51bWFsaWduQXR0cik7CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG5hbGlnbiwgImxlZnQiKSkKLSAgICAgICAgbnVtZXJhdG9yLT5zdHlsZSgpLT5zZXRU
ZXh0QWxpZ24oTEVGVCk7CisgICAgICAgIG51bWVyYXRvcldyYXBwZXItPnN0eWxlKCktPnNldFRl
eHRBbGlnbihMRUZUKTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYWxpZ24sICJy
aWdodCIpKQotICAgICAgICBudW1lcmF0b3ItPnN0eWxlKCktPnNldFRleHRBbGlnbihSSUdIVCk7
CisgICAgICAgIG51bWVyYXRvcldyYXBwZXItPnN0eWxlKCktPnNldFRleHRBbGlnbihSSUdIVCk7
CiAgICAgZWxzZQotICAgICAgICBudW1lcmF0b3ItPnN0eWxlKCktPnNldFRleHRBbGlnbihDRU5U
RVIpOworICAgICAgICBudW1lcmF0b3JXcmFwcGVyLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oQ0VO
VEVSKTsKICAgICAKLSAgICBSZW5kZXJPYmplY3QqIGRlbm9taW5hdG9yID0gbnVtZXJhdG9yLT5u
ZXh0U2libGluZygpOwotICAgIGlmICghZGVub21pbmF0b3IpCisgICAgUmVuZGVyT2JqZWN0KiBk
ZW5vbWluYXRvcldyYXBwZXIgPSBudW1lcmF0b3JXcmFwcGVyLT5uZXh0U2libGluZygpOworICAg
IGlmICghZGVub21pbmF0b3JXcmFwcGVyKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU3Ry
aW5nIGRhbGlnbiA9IGZyYWN0aW9uLT5nZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmRlbm9tYWxp
Z25BdHRyKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGFsaWduLCAibGVmdCIpKQotICAg
ICAgICBkZW5vbWluYXRvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKExFRlQpOworICAgICAgICBk
ZW5vbWluYXRvcldyYXBwZXItPnN0eWxlKCktPnNldFRleHRBbGlnbihMRUZUKTsKICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShkYWxpZ24sICJyaWdodCIpKQotICAgICAgICBkZW5vbWlu
YXRvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKFJJR0hUKTsKKyAgICAgICAgZGVub21pbmF0b3JX
cmFwcGVyLT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oUklHSFQpOwogICAgIGVsc2UKLSAgICAgICAg
ZGVub21pbmF0b3ItPnN0eWxlKCktPnNldFRleHRBbGlnbihDRU5URVIpOworICAgICAgICBkZW5v
bWluYXRvcldyYXBwZXItPnN0eWxlKCktPnNldFRleHRBbGlnbihDRU5URVIpOwogICAgIAogICAg
IC8vIEZJWE1FOiBwYXJzZSB1bml0cwogICAgIFN0cmluZyB0aGlja25lc3MgPSBmcmFjdGlvbi0+
Z2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjpsaW5ldGhpY2tuZXNzQXR0cik7CkBAIC0xMDAsMjAg
KzEwMCwxOCBAQCB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjp1cGRhdGVGcm9tRWxlCiAKIHZv
aWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJl
bmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7Ci0gICAgUmVuZGVyQmxvY2sqIHJvdyA9IG5ldyAo
cmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKLSAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHJvd1N0eWxlID0gY3JlYXRlQmxvY2tTdHlsZSgpOworICAgIFJlbmRlckJsb2Nr
KiByb3cgPSBjcmVhdGVBbG1vc3RBbm9ueW1vdXNCbG9jaygpOwogICAgIAotICAgIHJvd1N0eWxl
LT5zZXRUZXh0QWxpZ24oQ0VOVEVSKTsKLSAgICBMZW5ndGggcGFkKHN0YXRpY19jYXN0PGludD4o
cm93U3R5bGUtPmZvbnRTaXplKCkgKiBnSG9yaXpvbnRhbFBhZCksIEZpeGVkKTsKLSAgICByb3dT
dHlsZS0+c2V0UGFkZGluZ0xlZnQocGFkKTsKLSAgICByb3dTdHlsZS0+c2V0UGFkZGluZ1JpZ2h0
KHBhZCk7CisgICAgcm93LT5zdHlsZSgpLT5zZXRUZXh0QWxpZ24oQ0VOVEVSKTsKKyAgICBMZW5n
dGggcGFkKHN0YXRpY19jYXN0PGludD4oc3R5bGUoKS0+Zm9udFNpemUoKSAqIGdIb3Jpem9udGFs
UGFkKSwgRml4ZWQpOworICAgIHJvdy0+c3R5bGUoKS0+c2V0UGFkZGluZ0xlZnQocGFkKTsKKyAg
ICByb3ctPnN0eWxlKCktPnNldFBhZGRpbmdSaWdodChwYWQpOwogICAgIAogICAgIC8vIE9ubHkg
YWRkIHBhZGRpbmcgZm9yIHJvd3MgYXMgZGVub21pbmF0b3JzCiAgICAgYm9vbCBpc051bWVyYXRv
ciA9IGlzRW1wdHkoKTsKICAgICBpZiAoIWlzTnVtZXJhdG9yKSAKLSAgICAgICAgcm93U3R5bGUt
PnNldFBhZGRpbmdUb3AoTGVuZ3RoKDIsIEZpeGVkKSk7CisgICAgICAgIHJvdy0+c3R5bGUoKS0+
c2V0UGFkZGluZ1RvcChMZW5ndGgoMiwgRml4ZWQpKTsKICAgICAKLSAgICByb3ctPnNldFN0eWxl
KHJvd1N0eWxlLnJlbGVhc2UoKSk7CiAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJvdywgYmVm
b3JlQ2hpbGQpOwogICAgIHJvdy0+YWRkQ2hpbGQoY2hpbGQpOwogICAgIHVwZGF0ZUZyb21FbGVt
ZW50KCk7CkBAIC0xMzksNyArMTM3LDYgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6bGF5
b3V0KCkKICAgICAgICAgbV9saW5lVGhpY2tuZXNzICo9IGNlaWxmKGdGcmFjdGlvbkJhcldpZHRo
ICogc3R5bGUoKS0+Zm9udFNpemUoKSk7CiAKICAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7Ci0K
IH0KIAogdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCkBAIC0xNTcsNiArMTU0LDcgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQoUGFpbnRJbgogICAgICAgICBpbnQgYWRqdXN0Rm9y
VGhpY2tuZXNzID0gbV9saW5lVGhpY2tuZXNzID4gMSA/IGludChtX2xpbmVUaGlja25lc3MgLyAy
KSA6IDE7CiAgICAgICAgIGlmIChpbnQobV9saW5lVGhpY2tuZXNzKSAlIDIgPT0gMSkKICAgICAg
ICAgICAgIGFkanVzdEZvclRoaWNrbmVzcysrOworICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
dW1lcmF0b3JXcmFwcGVyLCBub3QgbnVtZXJhdG9yLgogICAgICAgICBSZW5kZXJNYXRoTUxCbG9j
ayogbnVtZXJhdG9yID0gdG9SZW5kZXJNYXRoTUxCbG9jayhmaXJzdENoaWxkKCkpOwogICAgICAg
ICBpZiAobnVtZXJhdG9yLT5pc1JlbmRlck1hdGhNTFJvdygpKQogICAgICAgICAgICAgdmVydGlj
YWxPZmZzZXQgPSBudW1lcmF0b3ItPnBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpICsgYWRqdXN0
Rm9yVGhpY2tuZXNzOwpAQCAtMTc5LDE0ICsxNzcsMTQgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFj
dGlvbjo6cGFpbnQoUGFpbnRJbgogTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6YmFz
ZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSBsaW5lRGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNv
bnN0CiB7CiAgICAgaWYgKGZpcnN0Q2hpbGQoKSAmJiBmaXJzdENoaWxkKCktPmlzUmVuZGVyTWF0
aE1MQmxvY2soKSkgewotICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayogbnVtZXJhdG9yID0gdG9S
ZW5kZXJNYXRoTUxCbG9jayhmaXJzdENoaWxkKCkpOworICAgICAgICBSZW5kZXJNYXRoTUxCbG9j
ayogbnVtZXJhdG9yV3JhcHBlciA9IHRvUmVuZGVyTWF0aE1MQmxvY2soZmlyc3RDaGlsZCgpKTsK
ICAgICAgICAgUmVuZGVyU3R5bGUqIHJlZlN0eWxlID0gc3R5bGUoKTsKICAgICAgICAgaWYgKHBy
ZXZpb3VzU2libGluZygpKQogICAgICAgICAgICAgcmVmU3R5bGUgPSBwcmV2aW91c1NpYmxpbmco
KS0+c3R5bGUoKTsKICAgICAgICAgZWxzZSBpZiAobmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAg
IHJlZlN0eWxlID0gbmV4dFNpYmxpbmcoKS0+c3R5bGUoKTsKICAgICAgICAgaW50IHNoaWZ0ID0g
aW50KGNlaWwoKHJlZlN0eWxlLT5mb250TWV0cmljcygpLnhIZWlnaHQoKSArIDEpIC8gMikpOwot
ICAgICAgICByZXR1cm4gbnVtZXJhdG9yLT5waXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSArIHNo
aWZ0OworICAgICAgICByZXR1cm4gbnVtZXJhdG9yV3JhcHBlci0+cGl4ZWxTbmFwcGVkT2Zmc2V0
SGVpZ2h0KCkgKyBzaGlmdDsKICAgICB9CiAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpiYXNlbGlu
ZVBvc2l0aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uLCBs
aW5lUG9zaXRpb25Nb2RlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAkocmV2aXNpb24gMTExMDE4KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsMjEgKzczLDE1IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6YWRk
Q2hpbGQoUmVuZGVyT2IKIHsKICAgICBpZiAoaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEFkZCBh
IGJsb2NrIGZvciB0aGUgaW5kZXgKLSAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gbmV3IChy
ZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhub2RlKCkpOwotICAgICAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IGluZGV4U3R5bGUgPSBjcmVhdGVCbG9ja1N0eWxlKCk7Ci0gICAgICAgIGluZGV4U3R5
bGUtPnNldERpc3BsYXkoSU5MSU5FX0JMT0NLKTsKLSAgICAgICAgYmxvY2stPnNldFN0eWxlKGlu
ZGV4U3R5bGUucmVsZWFzZSgpKTsKLSAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKGJsb2Nr
KTsKKyAgICAgICAgUmVuZGVyQmxvY2sqIGluZGV4V3JhcHBlciA9IGNyZWF0ZUFsbW9zdEFub255
bW91c0Jsb2NrKElOTElORV9CTE9DSyk7CisgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChp
bmRleFdyYXBwZXIpOwogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IHRoZSB3cmFwcGluZyBk
b2VzIG5vdCBzZWVtIHRvIGJlIG5lZWRlZCBhbnltb3JlLgogICAgICAgICAvLyB0aGlzIGlzIHRo
ZSBiYXNlLCBzbyB3cmFwIGl0IHNvIHdlIGNhbiBwYWQgaXQKLSAgICAgICAgYmxvY2sgPSBuZXcg
KHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKG5vZGUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gYmFzZVN0eWxlID0gY3JlYXRlQmxvY2tTdHlsZSgpOwotICAgICAgICBiYXNlU3R5
bGUtPnNldERpc3BsYXkoSU5MSU5FX0JMT0NLKTsKLSAgICAgICAgYmFzZVN0eWxlLT5zZXRQYWRk
aW5nTGVmdChMZW5ndGgoNSAqIGdSYWRpY2FsV2lkdGggLCBQZXJjZW50KSk7Ci0gICAgICAgIGJs
b2NrLT5zZXRTdHlsZShiYXNlU3R5bGUucmVsZWFzZSgpKTsKLSAgICAgICAgUmVuZGVyQmxvY2s6
OmFkZENoaWxkKGJsb2NrKTsKLSAgICAgICAgYmxvY2stPmFkZENoaWxkKGNoaWxkKTsKKyAgICAg
ICAgUmVuZGVyQmxvY2sqIGJhc2VXcmFwcGVyID0gY3JlYXRlQWxtb3N0QW5vbnltb3VzQmxvY2so
SU5MSU5FX0JMT0NLKTsKKyAgICAgICAgYmFzZVdyYXBwZXItPnN0eWxlKCktPnNldFBhZGRpbmdM
ZWZ0KExlbmd0aCg1ICogZ1JhZGljYWxXaWR0aCwgUGVyY2VudCkpOworICAgICAgICBSZW5kZXJC
bG9jazo6YWRkQ2hpbGQoYmFzZVdyYXBwZXIpOworICAgICAgICBiYXNlV3JhcHBlci0+YWRkQ2hp
bGQoY2hpbGQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIGFsd2F5cyBhZGQgdG8gdGhlIGlu
ZGV4CiAgICAgICAgIGZpcnN0Q2hpbGQoKS0+YWRkQ2hpbGQoY2hpbGQpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3Vw
LmNwcAkocmV2aXNpb24gMTExMDE4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTdWJTdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCwyNyArNzAsMjEg
QEAgdm9pZCBSZW5kZXJNYXRoTUxTdWJTdXA6OmFkZENoaWxkKFJlbmRlcgogCiAgICAgaWYgKGNo
aWxkRWxlbWVudCAmJiAhY2hpbGRFbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsK
ICAgICAgICAgLy8gUG9zaXRpb24gMSBpcyBhbHdheXMgdGhlIGJhc2Ugb2YgdGhlIG1zdWIvbXN1
cC9tc3Vic3VwLgotICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayogd3JhcHBlciA9IG5ldyAocmVu
ZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKLSAgICAgICAgUmVmUHRyPFJl
bmRlclN0eWxlPiB3cmFwcGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAgICAg
IHdyYXBwZXJTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7Ci0gICAgICAgIHdyYXBwZXJTdHls
ZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOwotICAgICAgICB3cmFwcGVyU3R5bGUtPnNldFZl
cnRpY2FsQWxpZ24oQkFTRUxJTkUpOwotICAgICAgICB3cmFwcGVyLT5zZXRTdHlsZSh3cmFwcGVy
U3R5bGUucmVsZWFzZSgpKTsKLSAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OmFkZENoaWxkKHdy
YXBwZXIsIGZpcnN0Q2hpbGQoKSk7Ci0gICAgICAgIHdyYXBwZXItPmFkZENoaWxkKGNoaWxkKTsK
KyAgICAgICAgUmVuZGVyQmxvY2sqIGJhc2VXcmFwcGVyID0gY3JlYXRlQWxtb3N0QW5vbnltb3Vz
QmxvY2soSU5MSU5FX0JMT0NLKTsKKyAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OmFkZENoaWxk
KGJhc2VXcmFwcGVyLCBmaXJzdENoaWxkKCkpOworICAgICAgICBiYXNlV3JhcHBlci0+YWRkQ2hp
bGQoY2hpbGQpOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEg
c2NyaXB0IGJsb2NrIGZvciByZW5kZXJpbmcuCiAgICAgICAgIGlmIChtX2tpbmQgPT0gU3ViU3Vw
ICYmICFtX3NjcmlwdHMpIHsKLSAgICAgICAgICAgIG1fc2NyaXB0cyA9IG5ldyAocmVuZGVyQXJl
bmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gc2NyaXB0c1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgc2NyaXB0c1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICAgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gc2NyaXB0c1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlKHN0eWxlKCkpOwogICAgICAgICAgICAgc2NyaXB0c1N0eWxlLT5zZXREaXNwbGF5KElO
TElORV9CTE9DSyk7CiAgICAgICAgICAgICBzY3JpcHRzU3R5bGUtPnNldFZlcnRpY2FsQWxpZ24o
VE9QKTsKICAgICAgICAgICAgIHNjcmlwdHNTdHlsZS0+c2V0TWFyZ2luTGVmdChMZW5ndGgoZ1N1
YnN1cFNjcmlwdE1hcmdpbiwgRml4ZWQpKTsKICAgICAgICAgICAgIHNjcmlwdHNTdHlsZS0+c2V0
VGV4dEFsaWduKExFRlQpOwogICAgICAgICAgICAgLy8gU2V0IHRoaXMgd3JhcHBlcidzIGZvbnQt
c2l6ZSBmb3IgaXRzIGxpbmUtaGVpZ2h0ICYgYmFzZWxpbmUgcG9zaXRpb24uCiAgICAgICAgICAg
ICBzY3JpcHRzU3R5bGUtPnNldEJsZW5kZWRGb250U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KDAuNzUg
KiBzdHlsZSgpLT5mb250U2l6ZSgpKSk7Ci0gICAgICAgICAgICBtX3NjcmlwdHMtPnNldFN0eWxl
KHNjcmlwdHNTdHlsZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgbV9zY3JpcHRzID0gbmV3IChy
ZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxCbG9jayhub2RlKCkpOworICAgICAgICAgICAgbV9z
Y3JpcHRzLT5zZXRTdHlsZShzY3JpcHRzU3R5bGUpOwogICAgICAgICAgICAgUmVuZGVyTWF0aE1M
QmxvY2s6OmFkZENoaWxkKG1fc2NyaXB0cywgYmVmb3JlQ2hpbGQpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKQEAgLTk5LDExICs5Myw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MU3ViU3VwOjphZGRD
aGlsZChSZW5kZXIKICAgICAgICAgICAgIGlmICghY2hpbGRFbGVtZW50KQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgUmVuZGVyQmxvY2sqIHNjcmlwdCA9IG5ldyAocmVu
ZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKLSAgICAgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gc2NyaXB0U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICBzY3JpcHRTdHlsZS0+aW5oZXJpdEZyb20obV9zY3JpcHRzLT5zdHlsZSgpKTsKLSAg
ICAgICAgICAgIHNjcmlwdFN0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKLSAgICAgICAgICAgIHNj
cmlwdC0+c2V0U3R5bGUoc2NyaXB0U3R5bGUucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIFJlbmRl
ckJsb2NrKiBzY3JpcHQgPSBtX3NjcmlwdHMtPmNyZWF0ZUFsbW9zdEFub255bW91c0Jsb2NrKCk7
CiAKICAgICAgICAgICAgIC8vIFRoZSBvcmRlciBpcyBhbHdheXMgYmFja3dhcmRzIHNvIHRoZSBm
aXJzdCBzY3JpcHQgaXMgdGhlIHN1YnNjcmlwdCBhbmQgdGhlIHN1cGVyc2NyaXB0IAogICAgICAg
ICAgICAgLy8gaXMgbGFzdC4gVGhhdCBtZWFucyB0aGUgc3VwZXJzY3JpcHQgaXMgdGhlIGZpcnN0
IHRvIHJlbmRlciB2ZXJ0aWNhbGx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCShyZXZpc2lvbiAxMTEwMTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgZW51bSBT
dWJTdXBUeXBlIHsgU3ViLCBTdXAsIFN1YlN1cCB9OwogICAgIFN1YlN1cFR5cGUgbV9raW5kOwot
ICAgIFJlbmRlckJsb2NrKiBtX3NjcmlwdHM7CisgICAgUmVuZGVyTWF0aE1MQmxvY2sqIG1fc2Ny
aXB0czsKIH07CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCShyZXZpc2lvbiAxMTEw
MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVy
T3Zlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIlJl
bmRlck1hdGhNTFVuZGVyT3Zlci5oIgogCi0jaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5j
bHVkZSAiTWF0aE1MTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjcsMTAgKzY2
LDcgQEAgUmVuZGVyQm94TW9kZWxPYmplY3QqIFJlbmRlck1hdGhNTFVuZGVyTwogCiB2b2lkIFJl
bmRlck1hdGhNTFVuZGVyT3Zlcjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsgICAgCi0gICAgUmVuZGVyTWF0aE1MQmxvY2sqIHJvdyA9
IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2sobm9kZSgpKTsKLSAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IHJvd1N0eWxlID0gY3JlYXRlQmxvY2tTdHlsZSgpOwotICAgIHJvdy0+
c2V0U3R5bGUocm93U3R5bGUucmVsZWFzZSgpKTsKLSAgICByb3ctPnNldElzQW5vbnltb3VzKHRy
dWUpOworICAgIFJlbmRlckJsb2NrKiByb3cgPSBjcmVhdGVBbm9ueW1vdXNCbG9jaygpOwogICAg
IAogICAgIC8vIGxvb2sgdGhyb3VnaCB0aGUgY2hpbGRyZW4gZm9yIHJlbmRlcmVkIGVsZW1lbnRz
IGNvdW50aW5nIHRoZSBibG9ja3Mgc28gd2Uga25vdyB3aGF0IGNoaWxkCiAgICAgLy8gd2UgYXJl
IGFkZGluZwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTExMDQwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDMtMTYgIERhdmlkIEJh
cnRvbiAgPGRiYXJ0b25AbWF0aHNjcmliZS5jb20+CisKKyAgICAgICAgTWF0aE1MIGludGVybmFs
cyAtIGZhY3RvciBjb2RlIGZvciBhbG1vc3QgYW5vbnltb3VzIGJsb2NrcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzODcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9tYXRobWwv
cHJlc2VudGF0aW9uL21vLXN0cmV0Y2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9tYXRobWwvcHJlc2VudGF0aW9uL292ZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9tYXRobWwvcHJlc2VudGF0aW9uL3Jvb3RzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvbWF0aG1sL3ByZXNlbnRhdGlvbi9yb3ctYWxpZ25tZW50LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRl
ci1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL21hdGhtbC9wcmVzZW50YXRp
b24vdW5kZXJvdmVyLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0wMy0xNiAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5lIHdpbmRvdy1wcm9wZXJ0aWVz
LWV4cGVjdGVkIG9uIEdUSzsgYWRkIHR3byBuZXcgdGVzdHMKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9tYXRobWwvcHJlc2VudGF0aW9uL21vLXN0cmV0Y2gtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tYXRobWwvcHJlc2VudGF0aW9u
L21vLXN0cmV0Y2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMTEwMTgpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvbWF0aG1sL3ByZXNlbnRhdGlvbi9tby1zdHJldGNoLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDE2ICsxMjIsMTYgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4MTA5CiAgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
NjogImEiCiAgICAgICAgICAgICBSZW5kZXJNYXRoTUxSb3cge21yb3d9IGF0ICgxNyw3KSBzaXpl
IDIxeDQ0CiAgICAgICAgICAgICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlciB7bXVuZGVyb3Zlcn0g
YXQgKDAsMCkgc2l6ZSAxN3g0NAotICAgICAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrIChh
bm9ueW1vdXMpIGF0ICgwLDApIHNpemUgMTd4MTYKKyAgICAgICAgICAgICAgICBSZW5kZXJCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDE3eDE2CiAgICAgICAgICAgICAgICAgICBSZW5k
ZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXplIDd4MTIKICAgICAgICAgICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICg1LDMpIHNpemUgN3gxMgogICAgICAgICAgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICg1LDMpIHdpZHRoIDc6ICJuIgotICAgICAgICAgICAgICAgIFJlbmRlck1h
dGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEyKSBzaXplIDE3eDE2CisgICAgICAgICAgICAg
ICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTIpIHNpemUgMTd4MTYKICAgICAgICAg
ICAgICAgICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yIHttb30gYXQgKDMsMCkgc2l6ZSAxMXgxNgog
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayB7bW99IGF0ICgwLDApIHNpemUg
MTF4MTYKICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHttb30gYXQgKDAsMCkgc2l6
ZSAxMXgxNgogICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTE6ICJceHsyMjExfSIKLSAgICAgICAgICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayAoYW5vbnlt
b3VzKSBhdCAoMCwyOCkgc2l6ZSAxN3gxNgorICAgICAgICAgICAgICAgIFJlbmRlckJsb2NrIChh
bm9ueW1vdXMpIGF0ICgwLDI4KSBzaXplIDE3eDE2CiAgICAgICAgICAgICAgICAgICBSZW5kZXJN
YXRoTUxSb3cge21yb3d9IGF0ICgwLDMpIHNpemUgMTd4MTIKICAgICAgICAgICAgICAgICAgICAg
UmVuZGVySW5saW5lIHttaX0gYXQgKDAsMCkgc2l6ZSAzeDEyCiAgICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgM3gxMgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL21hdGhtbC9wcmVzZW50YXRpb24vb3Zlci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21hdGhtbC9wcmVzZW50YXRpb24v
b3Zlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDExMTAxOCkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9tYXRobWwvcHJlc2VudGF0aW9uL292ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC04LDExICs4LDExIEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDI4NQogICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDkpIHdpZHRoIDM2OiAib3ZlcjogIgogICAgICAgICBSZW5kZXJN
YXRoTUxNYXRoIHttYXRofSBhdCAoMzYsMCkgc2l6ZSAxMngyOAogICAgICAgICAgIFJlbmRlck1h
dGhNTFVuZGVyT3ZlciB7bW92ZXJ9IGF0ICgxLDApIHNpemUgMTB4MjgKLSAgICAgICAgICAgIFJl
bmRlck1hdGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgMTB4MTYKKyAgICAgICAg
ICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgMTB4MTYKICAgICAgICAg
ICAgICAgUmVuZGVySW5saW5lIHttaX0gYXQgKDAsMCkgc2l6ZSA1eDEyCiAgICAgICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDMpIHNpemUgNXgxMgogICAgICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMykgd2lkdGggNTogIngiCi0gICAgICAgICAgICBSZW5kZXJNYXRo
TUxCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxMikgc2l6ZSAxMHgxNgorICAgICAgICAgICAgUmVu
ZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTIpIHNpemUgMTB4MTYKICAgICAgICAgICAgICAg
UmVuZGVySW5saW5lIHttaX0gYXQgKDAsMCkgc2l6ZSAxMHgxNgogICAgICAgICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEweDE2CiAgICAgICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMDogIkIiCkBAIC0yMiwxMSArMjIsMTEgQEAgbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4Mjg1CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsOSkgd2lkdGgg
MzY6ICJvdmVyOiAiCiAgICAgICAgIFJlbmRlck1hdGhNTE1hdGgge21hdGh9IGF0ICgzNiwwKSBz
aXplIDEyeDI4CiAgICAgICAgICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVyIHttb3Zlcn0gYXQgKDEs
MCkgc2l6ZSAxMHgyOAotICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91cykg
YXQgKDAsMCkgc2l6ZSAxMHgxNgorICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDAsMCkgc2l6ZSAxMHgxNgogICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAo
MCwwKSBzaXplIDV4MTIKICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
Mykgc2l6ZSA1eDEyCiAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzKSB3aWR0aCA1
OiAieSIKLSAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEy
KSBzaXplIDEweDE2CisgICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwx
Mikgc2l6ZSAxMHgxNgogICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBz
aXplIDEweDE2CiAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMTB4MTYKICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwOiAi
QiIKQEAgLTM2LDExICszNiwxMSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHgyODUKICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwxNSkgd2lkdGggMzY6ICJvdmVyOiAiCiAgICAgICAgIFJlbmRl
ck1hdGhNTE1hdGgge21hdGh9IGF0ICgzNiwwKSBzaXplIDE3eDM2CiAgICAgICAgICAgUmVuZGVy
TWF0aE1MVW5kZXJPdmVyIHttb3Zlcn0gYXQgKDEsMCkgc2l6ZSAxNXgzNgotICAgICAgICAgICAg
UmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSAxNXgxNgorICAgICAg
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSAxNXgxNgogICAgICAg
ICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXplIDV4MTIKICAgICAgICAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMykgc2l6ZSA1eDEyCiAgICAgICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwzKSB3aWR0aCA1OiAieSIKLSAgICAgICAgICAgIFJlbmRlck1h
dGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEyKSBzaXplIDE1eDI0CisgICAgICAgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxMikgc2l6ZSAxNXgyNAogICAgICAgICAgICAg
ICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXplIDE1eDI0CiAgICAgICAgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTV4MjQKICAgICAgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE1OiAiQiIKQEAgLTUwLDExICs1MCwxMSBAQCBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHgyODUKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNSkgd2lk
dGggMzY6ICJvdmVyOiAiCiAgICAgICAgIFJlbmRlck1hdGhNTE1hdGgge21hdGh9IGF0ICgzNiww
KSBzaXplIDE5eDM2CiAgICAgICAgICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVyIHttb3Zlcn0gYXQg
KDEsMCkgc2l6ZSAxN3gzNgotICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91
cykgYXQgKDAsMCkgc2l6ZSAxN3gxNgorICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91
cykgYXQgKDAsMCkgc2l6ZSAxN3gxNgogICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBh
dCAoMCwwKSBzaXplIDV4MTIKICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMykgc2l6ZSA1eDEyCiAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzKSB3aWR0
aCA1OiAieSIKLSAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgw
LDEyKSBzaXplIDE3eDI0CisgICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
MCwxMikgc2l6ZSAxN3gyNAogICAgICAgICAgICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciB7bW99
IGF0ICgwLDApIHNpemUgMTd4MjQKICAgICAgICAgICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayB7
bW99IGF0ICgwLDApIHNpemUgMTd4MjQKICAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQge21v
fSBhdCAoMCwwKSBzaXplIDE3eDI0CkBAIC02NSwxMSArNjUsMTEgQEAgbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4Mjg1CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjYpIHdpZHRoIDM2OiAib3Zl
cjogIgogICAgICAgICBSZW5kZXJNYXRoTUxNYXRoIHttYXRofSBhdCAoMzYsMCkgc2l6ZSA1Mng2
MQogICAgICAgICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlciB7bW92ZXJ9IGF0ICgxLDApIHNpemUg
MTB4NjEKLSAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDAp
IHNpemUgMTB4MTYKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDAp
IHNpemUgMTB4MTYKICAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHttaX0gYXQgKDAsMCkgc2l6
ZSA1eDEyCiAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDMpIHNpemUg
NXgxMgogICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMykgd2lkdGggNTogInkiCi0g
ICAgICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxMikgc2l6ZSAx
MHg0OQorICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTIpIHNpemUg
MTB4NDkKICAgICAgICAgICAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3Ige21vfSBhdCAoMCwwKSBz
aXplIDEweDQ5CiAgICAgICAgICAgUmVuZGVyQmxvY2sge2Rpdn0gYXQgKDExLDApIHNpemUgNDB4
NDAKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWF0aG1sL3ByZXNlbnRhdGlvbi9yb290cy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21hdGhtbC9wcmVz
ZW50YXRpb24vcm9vdHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMTEwMTgpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvbWF0aG1sL3ByZXNlbnRhdGlvbi9yb290cy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MSw4ICsxNzEsOCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg1MzcKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCiBsYXll
ciBhdCAoMTgyLDE4MCkgc2l6ZSAyMHgyMAogICBSZW5kZXJNYXRoTUxSb290IHttcm9vdH0gYXQg
KDEsMCkgc2l6ZSAyMHgyMAotICAgIFJlbmRlckJsb2NrIHttcm9vdH0gYXQgKDEyLDE1KSBzaXpl
IDB4MAotICAgIFJlbmRlckJsb2NrIHttcm9vdH0gYXQgKDEyLDQpIHNpemUgOHgxNgorICAgIFJl
bmRlck1hdGhNTEJsb2NrIHttcm9vdH0gYXQgKDEyLDE1KSBzaXplIDB4MAorICAgIFJlbmRlck1h
dGhNTEJsb2NrIHttcm9vdH0gYXQgKDEyLDQpIHNpemUgOHgxNgogICAgICAgUmVuZGVySW5saW5l
IHttbn0gYXQgKDAsMCkgc2l6ZSA4eDE2CiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDh4MTYKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA4OiAiMiIK
QEAgLTE4Miw4ICsxODIsOCBAQCBsYXllciBhdCAoMTgyLDE4MCkgc2l6ZSAxMngxNAogICAgICAg
dGV4dCBydW4gYXQgKDIsMCkgd2lkdGggNjogIjMiCiBsYXllciBhdCAoODQsMjE2KSBzaXplIDQ1
eDIyCiAgIFJlbmRlck1hdGhNTFJvb3Qge21yb290fSBhdCAoMSwwKSBzaXplIDQ1eDIyCi0gICAg
UmVuZGVyQmxvY2sge21yb290fSBhdCAoMzcsMTcpIHNpemUgMHgwCi0gICAgUmVuZGVyQmxvY2sg
e21yb290fSBhdCAoMzcsNikgc2l6ZSA4eDE2CisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290
fSBhdCAoMzcsMTcpIHNpemUgMHgwCisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAo
MzcsNikgc2l6ZSA4eDE2CiAgICAgICBSZW5kZXJJbmxpbmUge21ufSBhdCAoMCwwKSBzaXplIDh4
MTYKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOHgxNgogICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg6ICIyIgpAQCAtMjA4LDggKzIwOCw4IEBAIGxh
eWVyIGF0ICg4NCwyMTYpIHNpemUgMzd4MTYKICAgICAgICAgdGV4dCBydW4gYXQgKDI4LDApIHdp
ZHRoIDU6ICJ6IgogbGF5ZXIgYXQgKDE5NCwyNTQpIHNpemUgNzF4NDAKICAgUmVuZGVyTWF0aE1M
Um9vdCB7bXJvb3R9IGF0ICgxLDApIHNpemUgNzF4NDAKLSAgICBSZW5kZXJCbG9jayB7bXJvb3R9
IGF0ICgzOSwyNCkgc2l6ZSAweDAKLSAgICBSZW5kZXJCbG9jayB7bXJvb3R9IGF0ICgzOSwzKSBz
aXplIDMyeDM0CisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMzksMjQpIHNpemUg
MHgwCisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMzksMykgc2l6ZSAzMngzNAog
ICAgICAgUmVuZGVyTWF0aE1MRnJhY3Rpb24ge21mcmFjfSBhdCAoMSwwKSBzaXplIDMxeDM0CiAg
ICAgICAgIFJlbmRlck1hdGhNTEJsb2NrIHttZnJhY30gYXQgKDAsMCkgc2l6ZSAzMXgxNgogICAg
ICAgICAgIFJlbmRlck1hdGhNTFJvdyB7bXJvd30gYXQgKDMsMCkgc2l6ZSAyNXgxNgpAQCAtMjU2
LDggKzI1Niw4IEBAIGxheWVyIGF0ICgxOTQsMjYzKSBzaXplIDM3eDE2CiAgICAgICAgIHRleHQg
cnVuIGF0ICgyOCwwKSB3aWR0aCA1OiAieiIKIGxheWVyIGF0ICg4NCwzMTApIHNpemUgMjd4NDgK
ICAgUmVuZGVyTWF0aE1MUm9vdCB7bXJvb3R9IGF0ICgxLDApIHNpemUgMjd4NDgKLSAgICBSZW5k
ZXJCbG9jayB7bXJvb3R9IGF0ICgxOSw0Mykgc2l6ZSAweDAKLSAgICBSZW5kZXJCbG9jayB7bXJv
b3R9IGF0ICgxOSwzMikgc2l6ZSA4eDE2CisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBh
dCAoMTksNDMpIHNpemUgMHgwCisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTks
MzIpIHNpemUgOHgxNgogICAgICAgUmVuZGVySW5saW5lIHttbn0gYXQgKDAsMCkgc2l6ZSA4eDE2
CiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDh4MTYKICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA4OiAiMiIKQEAgLTI3OSw4ICsyNzksOCBAQCBsYXll
ciBhdCAoODQsMzEwKSBzaXplIDE5eDQyCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDQsMikgd2lk
dGggNTogInoiCiBsYXllciBhdCAoMTE5LDQ0NSkgc2l6ZSAzMjZ4NzYKICAgUmVuZGVyTWF0aE1M
Um9vdCB7bXJvb3R9IGF0ICgxLDApIHNpemUgMzI2eDc2Ci0gICAgUmVuZGVyQmxvY2sge21yb290
fSBhdCAoMTgsNTApIHNpemUgMHgwCi0gICAgUmVuZGVyQmxvY2sge21yb290fSBhdCAoMTgsMykg
c2l6ZSAzMDh4NzAKKyAgICBSZW5kZXJNYXRoTUxCbG9jayB7bXJvb3R9IGF0ICgxOCw1MCkgc2l6
ZSAweDAKKyAgICBSZW5kZXJNYXRoTUxCbG9jayB7bXJvb3R9IGF0ICgxOCwzKSBzaXplIDMwOHg3
MAogICAgICAgUmVuZGVyTWF0aE1MUm93IHttcm93fSBhdCAoMTEsMCkgc2l6ZSAyOTd4NzAKICAg
ICAgICAgUmVuZGVySW5saW5lIHttbn0gYXQgKDAsMCkgc2l6ZSA4eDE2CiAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDM2KSBzaXplIDh4MTYKQEAgLTI5NSw4ICsyOTUsOCBAQCBs
YXllciBhdCAoMTE5LDQ3OCkgc2l6ZSAxMngxNAogICAgICAgdGV4dCBydW4gYXQgKDIsMCkgd2lk
dGggNjogIjMiCiBsYXllciBhdCAoMTY2LDQ0OCkgc2l6ZSAyNzl4NzAKICAgUmVuZGVyTWF0aE1M
Um9vdCB7bXJvb3R9IGF0ICgxOCwwKSBzaXplIDI3OXg3MAotICAgIFJlbmRlckJsb2NrIHttcm9v
dH0gYXQgKDE4LDQ3KSBzaXplIDB4MAotICAgIFJlbmRlckJsb2NrIHttcm9vdH0gYXQgKDE4LDMp
IHNpemUgMjYxeDY0CisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTgsNDcpIHNp
emUgMHgwCisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTgsMykgc2l6ZSAyNjF4
NjQKICAgICAgIFJlbmRlck1hdGhNTFJvdyB7bXJvd30gYXQgKDksMCkgc2l6ZSAyNTJ4NjQKICAg
ICAgICAgUmVuZGVySW5saW5lIHttbn0gYXQgKDAsMCkgc2l6ZSA4eDE2CiAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDMzKSBzaXplIDh4MTYKQEAgLTMxMSw4ICszMTEsOCBAQCBs
YXllciBhdCAoMTY2LDQ3Nykgc2l6ZSAxMngxNAogICAgICAgdGV4dCBydW4gYXQgKDIsMCkgd2lk
dGggNjogIjQiCiBsYXllciBhdCAoMjExLDQ1MSkgc2l6ZSAyMzR4NjQKICAgUmVuZGVyTWF0aE1M
Um9vdCB7bXJvb3R9IGF0ICgxOCwwKSBzaXplIDIzNHg2NAotICAgIFJlbmRlckJsb2NrIHttcm9v
dH0gYXQgKDE4LDQ0KSBzaXplIDB4MAotICAgIFJlbmRlckJsb2NrIHttcm9vdH0gYXQgKDE4LDMp
IHNpemUgMjE2eDU4CisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTgsNDQpIHNp
emUgMHgwCisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTgsMykgc2l6ZSAyMTZ4
NTgKICAgICAgIFJlbmRlck1hdGhNTFJvdyB7bXJvd30gYXQgKDgsMCkgc2l6ZSAyMDh4NTgKICAg
ICAgICAgUmVuZGVySW5saW5lIHttbn0gYXQgKDAsMCkgc2l6ZSA4eDE2CiAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDMwKSBzaXplIDh4MTYKQEAgLTMyNyw4ICszMjcsOCBAQCBs
YXllciBhdCAoMjExLDQ3Nykgc2l6ZSAxMngxNAogICAgICAgdGV4dCBydW4gYXQgKDIsMCkgd2lk
dGggNjogIjUiCiBsYXllciBhdCAoMjU1LDQ1NCkgc2l6ZSAxOTB4NTgKICAgUmVuZGVyTWF0aE1M
Um9vdCB7bXJvb3R9IGF0ICgxOCwwKSBzaXplIDE5MHg1OAotICAgIFJlbmRlckJsb2NrIHttcm9v
dH0gYXQgKDE4LDQxKSBzaXplIDB4MAotICAgIFJlbmRlckJsb2NrIHttcm9vdH0gYXQgKDE4LDMp
IHNpemUgMTcyeDUyCisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTgsNDEpIHNp
emUgMHgwCisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTgsMykgc2l6ZSAxNzJ4
NTIKICAgICAgIFJlbmRlck1hdGhNTFJvdyB7bXJvd30gYXQgKDYsMCkgc2l6ZSAxNjZ4NTIKICAg
ICAgICAgUmVuZGVySW5saW5lIHttbn0gYXQgKDAsMCkgc2l6ZSA4eDE2CiAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDI3KSBzaXplIDh4MTYKQEAgLTM0Myw4ICszNDMsOCBAQCBs
YXllciBhdCAoMjU1LDQ3Nikgc2l6ZSAxMngxNAogICAgICAgdGV4dCBydW4gYXQgKDIsMCkgd2lk
dGggNjogIjYiCiBsYXllciBhdCAoMjk3LDQ1Nykgc2l6ZSAxNDh4NTIKICAgUmVuZGVyTWF0aE1M
Um9vdCB7bXJvb3R9IGF0ICgxOCwwKSBzaXplIDE0OHg1MgotICAgIFJlbmRlckJsb2NrIHttcm9v
dH0gYXQgKDE3LDM4KSBzaXplIDB4MAotICAgIFJlbmRlckJsb2NrIHttcm9vdH0gYXQgKDE3LDMp
IHNpemUgMTMxeDQ2CisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTcsMzgpIHNp
emUgMHgwCisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTcsMykgc2l6ZSAxMzF4
NDYKICAgICAgIFJlbmRlck1hdGhNTFJvdyB7bXJvd30gYXQgKDQsMCkgc2l6ZSAxMjd4NDYKICAg
ICAgICAgUmVuZGVySW5saW5lIHttbn0gYXQgKDAsMCkgc2l6ZSA4eDE2CiAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDI0KSBzaXplIDh4MTYKQEAgLTM1OSw4ICszNTksOCBAQCBs
YXllciBhdCAoMjk3LDQ3NSkgc2l6ZSAxMngxNAogICAgICAgdGV4dCBydW4gYXQgKDIsMCkgd2lk
dGggNjogIjciCiBsYXllciBhdCAoMzM2LDQ2MCkgc2l6ZSAxMDl4NDYKICAgUmVuZGVyTWF0aE1M
Um9vdCB7bXJvb3R9IGF0ICgxOCwwKSBzaXplIDEwOXg0NgotICAgIFJlbmRlckJsb2NrIHttcm9v
dH0gYXQgKDE2LDM1KSBzaXplIDB4MAotICAgIFJlbmRlckJsb2NrIHttcm9vdH0gYXQgKDE2LDMp
IHNpemUgOTN4NDAKKyAgICBSZW5kZXJNYXRoTUxCbG9jayB7bXJvb3R9IGF0ICgxNiwzNSkgc2l6
ZSAweDAKKyAgICBSZW5kZXJNYXRoTUxCbG9jayB7bXJvb3R9IGF0ICgxNiwzKSBzaXplIDkzeDQw
CiAgICAgICBSZW5kZXJNYXRoTUxSb3cge21yb3d9IGF0ICgzLDApIHNpemUgOTB4NDAKICAgICAg
ICAgUmVuZGVySW5saW5lIHttbn0gYXQgKDAsMCkgc2l6ZSA4eDE2CiAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDIxKSBzaXplIDh4MTYKQEAgLTM3NSw4ICszNzUsOCBAQCBsYXll
ciBhdCAoMzM2LDQ3NCkgc2l6ZSAxMngxNAogICAgICAgdGV4dCBydW4gYXQgKDIsMCkgd2lkdGgg
NjogIjgiCiBsYXllciBhdCAoMzczLDQ2Mykgc2l6ZSA3Mng0MAogICBSZW5kZXJNYXRoTUxSb290
IHttcm9vdH0gYXQgKDE4LDApIHNpemUgNzJ4NDAKLSAgICBSZW5kZXJCbG9jayB7bXJvb3R9IGF0
ICgxNCwzMikgc2l6ZSAweDAKLSAgICBSZW5kZXJCbG9jayB7bXJvb3R9IGF0ICgxNCwzKSBzaXpl
IDU4eDM0CisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTQsMzIpIHNpemUgMHgw
CisgICAgUmVuZGVyTWF0aE1MQmxvY2sge21yb290fSBhdCAoMTQsMykgc2l6ZSA1OHgzNAogICAg
ICAgUmVuZGVyTWF0aE1MUm93IHttcm93fSBhdCAoMiwwKSBzaXplIDU2eDM0CiAgICAgICAgIFJl
bmRlcklubGluZSB7bW59IGF0ICgwLDApIHNpemUgOHgxNgogICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwxOCkgc2l6ZSA4eDE2CkBAIC0zOTEsOCArMzkxLDggQEAgbGF5ZXIgYXQg
KDM3Myw0NzQpIHNpemUgMTJ4MTQKICAgICAgIHRleHQgcnVuIGF0ICgyLDApIHdpZHRoIDY6ICI5
IgogbGF5ZXIgYXQgKDQwNyw0NjYpIHNpemUgMzh4MzQKICAgUmVuZGVyTWF0aE1MUm9vdCB7bXJv
b3R9IGF0ICgxOCwwKSBzaXplIDM4eDM0Ci0gICAgUmVuZGVyQmxvY2sge21yb290fSBhdCAoMjgs
MjkpIHNpemUgMHgwCi0gICAgUmVuZGVyQmxvY2sge21yb290fSBhdCAoMjgsMTgpIHNpemUgMTB4
MTYKKyAgICBSZW5kZXJNYXRoTUxCbG9jayB7bXJvb3R9IGF0ICgyOCwyOSkgc2l6ZSAweDAKKyAg
ICBSZW5kZXJNYXRoTUxCbG9jayB7bXJvb3R9IGF0ICgyOCwxOCkgc2l6ZSAxMHgxNgogICAgICAg
UmVuZGVySW5saW5lIHttaX0gYXQgKDAsMCkgc2l6ZSAxMHgxNgogICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMHgxNgogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDEwOiAiQSIKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9tYXRobWwvcHJl
c2VudGF0aW9uL3Jvdy1hbGlnbm1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9tYXRobWwvcHJlc2VudGF0aW9uL3Jvdy1hbGlnbm1lbnQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxMTEwMTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
bWF0aG1sL3ByZXNlbnRhdGlvbi9yb3ctYWxpZ25tZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDExICsxMjIsMTEgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NTQ0CiAg
ICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMzgpIHdpZHRoIDc6ICJ5IgogICAgICAgICAg
ICAgUmVuZGVyTWF0aE1MT3BlcmF0b3Ige21vfSBhdCAoOCwwKSBzaXplIDZ4ODUKICAgICAgICAg
ICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlciB7bXVuZGVyfSBhdCAoMTQsMzgpIHNpemUgMTN4MjcK
LSAgICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6
ZSAxM3gxNgorICAgICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBz
aXplIDEzeDE2CiAgICAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHttaX0gYXQgKDAsMCkgc2l6
ZSAxM3gxNgogICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMTN4MTYKICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTM6
ICJceHsyMjBGfSIKLSAgICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91cykg
YXQgKDAsMTEpIHNpemUgMTN4MTYKKyAgICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91
cykgYXQgKDAsMTEpIHNpemUgMTN4MTYKICAgICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge21p
fSBhdCAoMCwwKSBzaXplIDV4MTIKICAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwzKSBzaXplIDV4MTIKICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
Mykgd2lkdGggNTogIngiCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWF0aG1sL3By
ZXNlbnRhdGlvbi91bmRlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL21hdGhtbC9wcmVzZW50YXRpb24vdW5kZXItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxMTEwMTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvbWF0aG1sL3ByZXNlbnRh
dGlvbi91bmRlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgsMTEgKzgsMTEgQEAg
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTA4CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggNDQ6ICJ1bmRlcjogIgogICAgICAgICBSZW5kZXJNYXRoTUxNYXRoIHttYXRofSBhdCAo
NDQsMykgc2l6ZSAxMngyNwogICAgICAgICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlciB7bXVuZGVy
fSBhdCAoMSwwKSBzaXplIDEweDI3Ci0gICAgICAgICAgICBSZW5kZXJNYXRoTUxCbG9jayAoYW5v
bnltb3VzKSBhdCAoMCwwKSBzaXplIDEweDE2CisgICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5v
bnltb3VzKSBhdCAoMCwwKSBzaXplIDEweDE2CiAgICAgICAgICAgICAgIFJlbmRlcklubGluZSB7
bWl9IGF0ICgwLDApIHNpemUgMTB4MTYKICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxMHgxNgogICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTA6ICJCIgotICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91
cykgYXQgKDAsMTEpIHNpemUgMTB4MTYKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1v
dXMpIGF0ICgwLDExKSBzaXplIDEweDE2CiAgICAgICAgICAgICAgIFJlbmRlcklubGluZSB7bWl9
IGF0ICgwLDApIHNpemUgNXgxMgogICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwzKSBzaXplIDV4MTIKICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDMpIHdp
ZHRoIDU6ICJ4IgpAQCAtMjIsMTEgKzIyLDExIEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDEw
OAogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ0OiAidW5kZXI6ICIKICAgICAg
ICAgUmVuZGVyTWF0aE1MTWF0aCB7bWF0aH0gYXQgKDQ0LDMpIHNpemUgMTJ4MjcKICAgICAgICAg
ICBSZW5kZXJNYXRoTUxVbmRlck92ZXIge211bmRlcn0gYXQgKDEsMCkgc2l6ZSAxMHgyNwotICAg
ICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSAxMHgx
NgorICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSAxMHgx
NgogICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXplIDEweDE2CiAg
ICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTB4MTYKICAg
ICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwOiAiQiIKLSAgICAgICAg
ICAgIFJlbmRlck1hdGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDExKSBzaXplIDEweDE2Cisg
ICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxMSkgc2l6ZSAxMHgxNgog
ICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXplIDd4MTIKICAgICAg
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMykgc2l6ZSA3eDEyCiAgICAgICAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzKSB3aWR0aCA3OiAiWCIKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9tYXRobWwvcHJlc2VudGF0aW9uL3VuZGVyb3Zlci1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL21hdGhtbC9wcmVzZW50
YXRpb24vdW5kZXJvdmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTExMDE4KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL21hdGhtbC9wcmVzZW50YXRpb24vdW5kZXJvdmVyLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtOCwxNSArOCwxNSBAQCBsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHgyNjIKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw5KSB3aWR0aCA5MjogInVuZGVyICYg
b3ZlcjogIgogICAgICAgICBSZW5kZXJNYXRoTUxNYXRoIHttYXRofSBhdCAoOTIsMCkgc2l6ZSAx
MngzOQogICAgICAgICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlciB7bXVuZGVyb3Zlcn0gYXQgKDEs
MCkgc2l6ZSAxMHgzOQotICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91cykg
YXQgKDAsMCkgc2l6ZSAxMHgxNgorICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDAsMCkgc2l6ZSAxMHgxNgogICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAo
MCwwKSBzaXplIDV4MTIKICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
Mykgc2l6ZSA1eDEyCiAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzKSB3aWR0aCA1
OiAieSIKLSAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEy
KSBzaXplIDEweDE2CisgICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwx
Mikgc2l6ZSAxMHgxNgogICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBz
aXplIDEweDE2CiAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMTB4MTYKICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwOiAi
QiIKLSAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDIzKSBz
aXplIDEweDE2CisgICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwyMykg
c2l6ZSAxMHgxNgogICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXpl
IDV4MTIKICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMykgc2l6ZSA1
eDEyCiAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzKSB3aWR0aCA1OiAieCIKQEAg
LTI2LDE1ICsyNiwxNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHgyNjIKICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCw5KSB3aWR0aCA5MjogInVuZGVyICYgb3ZlcjogIgogICAgICAgICBSZW5k
ZXJNYXRoTUxNYXRoIHttYXRofSBhdCAoOTIsMCkgc2l6ZSAxMngzOQogICAgICAgICAgIFJlbmRl
ck1hdGhNTFVuZGVyT3ZlciB7bXVuZGVyb3Zlcn0gYXQgKDEsMCkgc2l6ZSAxMHgzOQotICAgICAg
ICAgICAgUmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSAxMHgxNgor
ICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSAxMHgxNgog
ICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXplIDV4MTIKICAgICAg
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMykgc2l6ZSA1eDEyCiAgICAgICAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzKSB3aWR0aCA1OiAieSIKLSAgICAgICAgICAgIFJl
bmRlck1hdGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEyKSBzaXplIDEweDE2CisgICAgICAg
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxMikgc2l6ZSAxMHgxNgogICAgICAg
ICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXplIDEweDE2CiAgICAgICAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTB4MTYKICAgICAgICAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwOiAiQiIKLSAgICAgICAgICAgIFJlbmRl
ck1hdGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDIzKSBzaXplIDEweDE2CisgICAgICAgICAg
ICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwyMykgc2l6ZSAxMHgxNgogICAgICAgICAg
ICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXplIDd4MTIKICAgICAgICAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMykgc2l6ZSA3eDEyCiAgICAgICAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwzKSB3aWR0aCA3OiAiWCIKQEAgLTQ0LDcgKzQ0LDcgQEAgbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4MjYyCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTUpIHdpZHRo
IDkyOiAidW5kZXIgJiBvdmVyOiAiCiAgICAgICAgIFJlbmRlck1hdGhNTE1hdGgge21hdGh9IGF0
ICg5MiwwKSBzaXplIDIweDUyCiAgICAgICAgICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVyIHttdW5k
ZXJvdmVyfSBhdCAoMSwwKSBzaXplIDE4eDUyCi0gICAgICAgICAgICBSZW5kZXJNYXRoTUxCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDE4eDE2CisgICAgICAgICAgICBSZW5kZXJCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDE4eDE2CiAgICAgICAgICAgICAgIFJlbmRlck1h
dGhNTFJvdyB7bXJvd30gYXQgKDAsMykgc2l6ZSAxOHgxMgogICAgICAgICAgICAgICAgIFJlbmRl
cklubGluZSB7bWl9IGF0ICgwLDApIHNpemUgNXgxMgogICAgICAgICAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNXgxMgpAQCAtNTYsMTIgKzU2LDEyIEBAIGxheWVy
IGF0ICgwLDApIHNpemUgODAweDI2MgogICAgICAgICAgICAgICAgIFJlbmRlcklubGluZSB7bWl9
IGF0ICgwLDApIHNpemUgNXgxMgogICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxMywwKSBzaXplIDV4MTIKICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEz
LDApIHdpZHRoIDU6ICJ5IgotICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91
cykgYXQgKDAsMTIpIHNpemUgMTh4MjQKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1v
dXMpIGF0ICgwLDEyKSBzaXplIDE4eDI0CiAgICAgICAgICAgICAgIFJlbmRlck1hdGhNTE9wZXJh
dG9yIHttb30gYXQgKDAsMCkgc2l6ZSAxN3gyNAogICAgICAgICAgICAgICAgIFJlbmRlck1hdGhN
TEJsb2NrIHttb30gYXQgKDAsMCkgc2l6ZSAxN3gyNAogICAgICAgICAgICAgICAgICAgUmVuZGVy
VGV4dCB7bW99IGF0ICgwLDApIHNpemUgMTd4MjQKICAgICAgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMTc6ICJceHsyMjExfSIKLSAgICAgICAgICAgIFJlbmRlck1hdGhN
TEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM2KSBzaXplIDE4eDE2CisgICAgICAgICAgICBSZW5k
ZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNikgc2l6ZSAxOHgxNgogICAgICAgICAgICAgICBS
ZW5kZXJNYXRoTUxSb3cge21yb3d9IGF0ICgwLDMpIHNpemUgMTd4MTIKICAgICAgICAgICAgICAg
ICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXplIDN4MTIKICAgICAgICAgICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDN4MTIKQEAgLTc5LDcgKzc5LDcgQEAg
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MjYyCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTUp
IHdpZHRoIDkyOiAidW5kZXIgJiBvdmVyOiAiCiAgICAgICAgIFJlbmRlck1hdGhNTE1hdGgge21h
dGh9IGF0ICg5MiwwKSBzaXplIDIyeDUyCiAgICAgICAgICAgUmVuZGVyTWF0aE1MVW5kZXJPdmVy
IHttdW5kZXJvdmVyfSBhdCAoMSwwKSBzaXplIDIweDUyCi0gICAgICAgICAgICBSZW5kZXJNYXRo
TUxCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDIweDE2CisgICAgICAgICAgICBSZW5k
ZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDIweDE2CiAgICAgICAgICAgICAgIFJl
bmRlck1hdGhNTFJvdyB7bXJvd30gYXQgKDAsMykgc2l6ZSAyMHgxMgogICAgICAgICAgICAgICAg
IFJlbmRlcklubGluZSB7bWl9IGF0ICgwLDApIHNpemUgN3gxMgogICAgICAgICAgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgN3gxMgpAQCAtOTEsMTIgKzkxLDEyIEBA
IGxheWVyIGF0ICgwLDApIHNpemUgODAweDI2MgogICAgICAgICAgICAgICAgIFJlbmRlcklubGlu
ZSB7bWl9IGF0ICgwLDApIHNpemUgNXgxMgogICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgxNSwwKSBzaXplIDV4MTIKICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDE1LDApIHdpZHRoIDU6ICJ5IgotICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sgKGFu
b255bW91cykgYXQgKDAsMTIpIHNpemUgMjB4MjQKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIChh
bm9ueW1vdXMpIGF0ICgwLDEyKSBzaXplIDIweDI0CiAgICAgICAgICAgICAgIFJlbmRlck1hdGhN
TE9wZXJhdG9yIHttb30gYXQgKDAsMCkgc2l6ZSAxN3gyNAogICAgICAgICAgICAgICAgIFJlbmRl
ck1hdGhNTEJsb2NrIHttb30gYXQgKDAsMCkgc2l6ZSAxN3gyNAogICAgICAgICAgICAgICAgICAg
UmVuZGVyVGV4dCB7bW99IGF0ICgwLDApIHNpemUgMTd4MjQKICAgICAgICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTc6ICJceHsyMjExfSIKLSAgICAgICAgICAgIFJlbmRl
ck1hdGhNTEJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM2KSBzaXplIDIweDE2CisgICAgICAgICAg
ICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNikgc2l6ZSAyMHgxNgogICAgICAgICAg
ICAgICBSZW5kZXJNYXRoTUxSb3cge21yb3d9IGF0ICgwLDMpIHNpemUgMTh4MTIKICAgICAgICAg
ICAgICAgICBSZW5kZXJJbmxpbmUge21pfSBhdCAoMCwwKSBzaXplIDR4MTIKICAgICAgICAgICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDR4MTIK
</data>

          </attachment>
      

    </bug>

</bugzilla>