<?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>130351</bug_id>
          
          <creation_ts>2014-03-17 10:59:00 -0700</creation_ts>
          <short_desc>LayoutBox is a terrible name</short_desc>
          <delta_ts>2014-03-31 13:41:55 -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>Layout and Rendering</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>
          
          <blocked>127982</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Bem Jones-Bey">bjonesbe</assigned_to>
          <cc>bjonesbe</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>krit</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>991307</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-17 10:59:00 -0700</bug_when>
    <thetext>We have LayoutUnit, LayoutPoint, LayoutSize, LayoutRect, and LayoutBox. Spot the odd one out.

Also LayoutBox is an enum, not a &quot;box&quot; in the CSS sense. It needs a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991320</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-17 11:25:41 -0700</bug_when>
    <thetext>Maybe &quot;CSSBoxType&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991330</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-03-17 11:56:10 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Maybe &quot;CSSBoxType&quot;
+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991410</commentid>
    <comment_count>3</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2014-03-17 14:58:35 -0700</bug_when>
    <thetext>I&apos;m fine with CSSBoxType. If you change it, don&apos;t forget to change LayoutBoxExtent.h too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991412</commentid>
    <comment_count>4</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-03-17 15:04:10 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m fine with CSSBoxType. If you change it, don&apos;t forget to change LayoutBoxExtent.h too.

Hrm. Does the name CSSBoxExtent actually make sense? I&apos;m not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991422</commentid>
    <comment_count>5</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2014-03-17 15:26:52 -0700</bug_when>
    <thetext>CSSBoxModelType and CSSBoxModelExtent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991430</commentid>
    <comment_count>6</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-03-17 15:53:47 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; CSSBoxModelType and CSSBoxModelExtent?

LayoutBoxExtent is more related to LayoutUnit than LayoutBox, so I don&apos;t think it needs to be renamed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991792</commentid>
    <comment_count>7</comment_count>
      <attachid>227088</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-03-18 12:30:13 -0700</bug_when>
    <thetext>Created attachment 227088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991795</commentid>
    <comment_count>8</comment_count>
      <attachid>227088</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-18 12:35:54 -0700</bug_when>
    <thetext>Comment on attachment 227088
Patch

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

&gt; Source/WebCore/rendering/shapes/Shape.h:72
&gt; -    static PassOwnPtr&lt;Shape&gt; createLayoutBoxShape(const RoundedRect&amp;, WritingMode, Length margin, Length padding);
&gt; +    static PassOwnPtr&lt;Shape&gt; createBoxShape(const RoundedRect&amp;, WritingMode, Length margin, Length padding);

Not sure that &quot;box shape&quot; makes sense here, since you&apos;re not passing a CSSBoxType parameter.

&gt; Source/WebCore/rendering/style/RenderStyleConstants.h:559
&gt; +enum CSSBoxType { BoxMissing = 0, MarginBox, BorderBox, PaddingBox, ContentBox, Fill, Stroke, ViewBox };

This patch makes me wonder if we should call this a CSSReferenceBox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991840</commentid>
    <comment_count>9</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-03-18 13:25:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 227088 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=227088&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/shapes/Shape.h:72
&gt; &gt; -    static PassOwnPtr&lt;Shape&gt; createLayoutBoxShape(const RoundedRect&amp;, WritingMode, Length margin, Length padding);
&gt; &gt; +    static PassOwnPtr&lt;Shape&gt; createBoxShape(const RoundedRect&amp;, WritingMode, Length margin, Length padding);
&gt; 
&gt; Not sure that &quot;box shape&quot; makes sense here, since you&apos;re not passing a CSSBoxType parameter.

The problem is that this never should have been called &quot;LayoutBoxShape&quot; in the first place, as it creates a BoxShape object. Also, since the Shape classes don&apos;t deal with renderers themselves, it expects the caller (ShapeInfo::computedShape) to look at the BoxTime and create a ReoundedRect with the proper dimensions. 

&gt; 
&gt; &gt; Source/WebCore/rendering/style/RenderStyleConstants.h:559
&gt; &gt; +enum CSSBoxType { BoxMissing = 0, MarginBox, BorderBox, PaddingBox, ContentBox, Fill, Stroke, ViewBox };
&gt; 
&gt; This patch makes me wonder if we should call this a CSSReferenceBox

Strictly speaking, it is only a Reference Box when it is specified with another shape. If the box is specified by itself, then the spec calls it a Box Shape, because in that case, it is the box that specifies the shape. I tried to change the names from layoutBox to cssBox when it isa a box shape, and to referenceBox when it applies to another shape, but there were a couple of places where that wouldn&apos;t have been possible without refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991865</commentid>
    <comment_count>10</comment_count>
      <attachid>227088</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-18 13:59:06 -0700</bug_when>
    <thetext>Comment on attachment 227088
Patch

Clearing flags on attachment: 227088

Committed r165843: &lt;http://trac.webkit.org/changeset/165843&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991866</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-18 13:59:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227088</attachid>
            <date>2014-03-18 12:30:13 -0700</date>
            <delta_ts>2014-03-18 13:59:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130351-20140318123342.patch</filename>
            <type>text/plain</type>
            <size>26573</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1ODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFjYTEyNTEyMDMyZWEw
YzJiZjk1ZjdkYzNjNDNjYjljYzE2ZDRmNy4uN2QyYTQxYjdmN2Q2OGRmYzI4OWZkMTQyY2JlNzli
YmFiMjYzNGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE0LTAzLTE4ICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIExheW91dEJveCBpcyBh
IHRlcnJpYmxlIG5hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMDM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbmFtZSBMYXlvdXRCb3ggdG8gQ1NTQm94VHlwZS4gQWxzbyByZW5hbWUgdGhlIGZ1
bmN0aW9ucyBhbmQgbWV0aG9kcworICAgICAgICB0aGF0IG1lbnRpb24gIkxheW91dEJveCIgdG8g
c29tZXRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgZm9yIGVhY2gKKyAgICAgICAgc3BlY2lmaWMgc2l0
dWF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgICogY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dmFsdWVGb3JCYXNpY1NoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhc2ljU2hhcGVGb3JWYWx1
ZSk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0Jhc2ljU2hhcGVDaXJjbGU6OmNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFz
aWNTaGFwZUNpcmNsZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVF
bGxpcHNlOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxpcHNl
OjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVBvbHlnb246OmNzc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVBvbHlnb246OmVxdWFscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlSW5zZXQ6OmNzc1RleHQpOgorICAgICAgICAq
IGNzcy9DU1NCYXNpY1NoYXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZTo6
cmVmZXJlbmNlQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGU6OnNldFJlZmVy
ZW5jZUJveCk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzaGFwZVByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIENTU0JveFR5cGUpOgorICAgICAgICAqIGNzcy9EZXByZWNhdGVk
U3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0
aDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5U2hhcGU6OmFw
cGx5VmFsdWUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6CisgICAgICAgICogcmVuZGVyaW5n
L0NsaXBQYXRoT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUNsaXBQYXRoT3Bl
cmF0aW9uOjpzZXRSZWZlcmVuY2VCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVDbGlwUGF0
aE9wZXJhdGlvbjo6cmVmZXJlbmNlQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkJveENsaXBQYXRo
T3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qm94Q2xpcFBhdGhPcGVyYXRp
b246OnJlZmVyZW5jZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpCb3hDbGlwUGF0aE9wZXJhdGlv
bjo6Qm94Q2xpcFBhdGhPcGVyYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZUJveFNoYXBlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVJbmZvPFJlbmRlclR5cGU+
Ojpjb21wdXRlZFNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGU6
OmNhbkJsZW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGU6OnJlZmVyZW5jZUJveCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlOjpzZXRSZWZlcmVuY2VCb3gpOgorICAgICAgICAoV2ViQ29yZTo6QmFz
aWNTaGFwZTo6QmFzaWNTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXBlVmFsdWU6OmNyZWF0ZVNoYXBlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6Y3JlYXRlQm94U2hhcGVWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFwZVZhbHVlOjpjc3NCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1
ZTo6U2hhcGVWYWx1ZSk6CisKIDIwMTQtMDMtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjU4MTUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKaW5kZXggY2I1ZjNl
OGZlZjEzNjk1NmVlMjkyNzYyYzIyNWY5MWFkM2JmNTJiZC4uNjMzOTM2MGIwYjA0ZTc1M2M0NDQz
ZDgxZmExM2U1MGM3NzhjOGIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2lj
U2hhcGVGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVu
Y3Rpb25zLmNwcApAQCAtMTI0LDggKzEyNCw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
Rm9yQmFzaWNTaGFwZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEJhc2ljU2hhCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmIChiYXNpY1NoYXBlLT5sYXlvdXRCb3goKSAh
PSBCb3hNaXNzaW5nKQotICAgICAgICBiYXNpY1NoYXBlVmFsdWUtPnNldExheW91dEJveChwb29s
LmNyZWF0ZVZhbHVlKGJhc2ljU2hhcGUtPmxheW91dEJveCgpKSk7CisgICAgaWYgKGJhc2ljU2hh
cGUtPnJlZmVyZW5jZUJveCgpICE9IEJveE1pc3NpbmcpCisgICAgICAgIGJhc2ljU2hhcGVWYWx1
ZS0+c2V0UmVmZXJlbmNlQm94KHBvb2wuY3JlYXRlVmFsdWUoYmFzaWNTaGFwZS0+cmVmZXJlbmNl
Qm94KCkpKTsKIAogICAgIHJldHVybiBwb29sLmNyZWF0ZVZhbHVlKGJhc2ljU2hhcGVWYWx1ZS5y
ZWxlYXNlKCkpOwogfQpAQCAtMjY0LDggKzI2NCw4IEBAIFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4g
YmFzaWNTaGFwZUZvclZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVy
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmIChiYXNpY1NoYXBlVmFsdWUtPmxheW91
dEJveCgpKQotICAgICAgICBiYXNpY1NoYXBlLT5zZXRMYXlvdXRCb3goTGF5b3V0Qm94KCpiYXNp
Y1NoYXBlVmFsdWUtPmxheW91dEJveCgpKSk7CisgICAgaWYgKGJhc2ljU2hhcGVWYWx1ZS0+cmVm
ZXJlbmNlQm94KCkpCisgICAgICAgIGJhc2ljU2hhcGUtPnNldFJlZmVyZW5jZUJveChDU1NCb3hU
eXBlKCpiYXNpY1NoYXBlVmFsdWUtPnJlZmVyZW5jZUJveCgpKSk7CiAKICAgICByZXR1cm4gYmFz
aWNTaGFwZS5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcApp
bmRleCA5MjNhYTc1YWNhOGQ0OTVmOTVhYThjYjE3NjRkNjRmMmM0MmIyOWEzLi5lZWI1NDI5Yjcw
MmQ5NjMyZmUwODgwZjAyOWE5MDJmMzgwOWE5NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNp
Y1NoYXBlcy5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNs
ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGJ1aWxkQ2lyY2xlU3RyaW5nKG1fcmFkaXVz
ID8gbV9yYWRpdXMtPmNzc1RleHQoKSA6IFN0cmluZygpLAogICAgICAgICBzZXJpYWxpemVQb3Np
dGlvbk9mZnNldCgqbm9ybWFsaXplZENYLT5nZXRQYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWS0+
Z2V0UGFpclZhbHVlKCkpLAogICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldCgqbm9ybWFs
aXplZENZLT5nZXRQYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWC0+Z2V0UGFpclZhbHVlKCkpLAot
ICAgICAgICBtX2xheW91dEJveCA/IG1fbGF5b3V0Qm94LT5jc3NUZXh0KCkgOiBTdHJpbmcoKSk7
CisgICAgICAgIG1fcmVmZXJlbmNlQm94ID8gbV9yZWZlcmVuY2VCb3gtPmNzc1RleHQoKSA6IFN0
cmluZygpKTsKIH0KIAogYm9vbCBDU1NCYXNpY1NoYXBlQ2lyY2xlOjplcXVhbHMoY29uc3QgQ1NT
QmFzaWNTaGFwZSYgc2hhcGUpIGNvbnN0CkBAIC0xMjgsNyArMTI4LDcgQEAgYm9vbCBDU1NCYXNp
Y1NoYXBlQ2lyY2xlOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgc2hhcGUpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2NlbnRlclgsIG90aGVyLm1fY2VudGVyWCkK
ICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fY2VudGVyWSwgb3RoZXIubV9jZW50ZXJZ
KQogICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV9yYWRpdXMsIG90aGVyLm1fcmFkaXVz
KQotICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV9sYXlvdXRCb3gsIG90aGVyLm1fbGF5
b3V0Qm94KTsKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fcmVmZXJlbmNlQm94LCBv
dGhlci5tX3JlZmVyZW5jZUJveCk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYnVpbGRFbGxpcHNlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgcmFkaXVzWCwgY29uc3QgU3RyaW5nJiByYWRpdXNZLCBjb25zdCBT
dHJpbmcmIGNlbnRlclgsIGNvbnN0IFN0cmluZyYgY2VudGVyWSwgY29uc3QgU3RyaW5nJiBib3gp
CkBAIC0xNzYsNyArMTc2LDcgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0
KCkgY29uc3QKICAgICAgICAgbV9yYWRpdXNZID8gbV9yYWRpdXNZLT5jc3NUZXh0KCkgOiBTdHJp
bmcoKSwKICAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRDWC0+Z2V0
UGFpclZhbHVlKCksICpub3JtYWxpemVkQ1ktPmdldFBhaXJWYWx1ZSgpKSwKICAgICAgICAgc2Vy
aWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRDWS0+Z2V0UGFpclZhbHVlKCksICpub3Jt
YWxpemVkQ1gtPmdldFBhaXJWYWx1ZSgpKSwKLSAgICAgICAgbV9sYXlvdXRCb3ggPyBtX2xheW91
dEJveC0+Y3NzVGV4dCgpIDogU3RyaW5nKCkpOworICAgICAgICBtX3JlZmVyZW5jZUJveCA/IG1f
cmVmZXJlbmNlQm94LT5jc3NUZXh0KCkgOiBTdHJpbmcoKSk7CiB9CiAKIGJvb2wgQ1NTQmFzaWNT
aGFwZUVsbGlwc2U6OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKQEAg
LTE4OSw3ICsxODksNyBAQCBib29sIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjplcXVhbHMoY29uc3Qg
Q1NTQmFzaWNTaGFwZSYgc2hhcGUpIGNvbnN0CiAgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0
cihtX2NlbnRlclksIG90aGVyLm1fY2VudGVyWSkKICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVl
UHRyKG1fcmFkaXVzWCwgb3RoZXIubV9yYWRpdXNYKQogICAgICAgICAmJiBjb21wYXJlQ1NTVmFs
dWVQdHIobV9yYWRpdXNZLCBvdGhlci5tX3JhZGl1c1kpCi0gICAgICAgICYmIGNvbXBhcmVDU1NW
YWx1ZVB0cihtX2xheW91dEJveCwgb3RoZXIubV9sYXlvdXRCb3gpOworICAgICAgICAmJiBjb21w
YXJlQ1NTVmFsdWVQdHIobV9yZWZlcmVuY2VCb3gsIG90aGVyLm1fcmVmZXJlbmNlQm94KTsKIH0K
IAogc3RhdGljIFN0cmluZyBidWlsZFBvbHlnb25TdHJpbmcoY29uc3QgV2luZFJ1bGUmIHdpbmRS
dWxlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcG9pbnRzLCBjb25zdCBTdHJpbmcmIGJveCkKQEAg
LTI0Nyw3ICsyNDcsNyBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZVBvbHlnb246OmNzc1RleHQoKSBj
b25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIHBvaW50cy5hcHBlbmQobV92YWx1ZXMuYXQoaSktPmNzc1RleHQoKSk7CiAKLSAgICBy
ZXR1cm4gYnVpbGRQb2x5Z29uU3RyaW5nKG1fd2luZFJ1bGUsIHBvaW50cywgbV9sYXlvdXRCb3gg
PyBtX2xheW91dEJveC0+Y3NzVGV4dCgpIDogU3RyaW5nKCkpOworICAgIHJldHVybiBidWlsZFBv
bHlnb25TdHJpbmcobV93aW5kUnVsZSwgcG9pbnRzLCBtX3JlZmVyZW5jZUJveCA/IG1fcmVmZXJl
bmNlQm94LT5jc3NUZXh0KCkgOiBTdHJpbmcoKSk7CiB9CiAKIGJvb2wgQ1NTQmFzaWNTaGFwZVBv
bHlnb246OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKQEAgLTI1Niw3
ICsyNTYsNyBAQCBib29sIENTU0Jhc2ljU2hhcGVQb2x5Z29uOjplcXVhbHMoY29uc3QgQ1NTQmFz
aWNTaGFwZSYgc2hhcGUpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNvbnN0
IENTU0Jhc2ljU2hhcGVQb2x5Z29uJiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1No
YXBlUG9seWdvbiY+KHNoYXBlKTsKLSAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRyKG1fbGF5
b3V0Qm94LCByaHMubV9sYXlvdXRCb3gpCisgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZVB0ciht
X3JlZmVyZW5jZUJveCwgcmhzLm1fcmVmZXJlbmNlQm94KQogICAgICAgICAmJiBjb21wYXJlQ1NT
VmFsdWVWZWN0b3I8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fdmFsdWVzLCByaHMubV92YWx1ZXMpOwog
fQogCkBAIC0zNTgsNyArMzU4LDcgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVJbnNldDo6Y3NzVGV4
dCgpIGNvbnN0CiAgICAgICAgIGJvdHRvbVJpZ2h0UmFkaXVzSGVpZ2h0LAogICAgICAgICBib3R0
b21MZWZ0UmFkaXVzV2lkdGgsCiAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXNIZWlnaHQsCi0gICAg
ICAgIG1fbGF5b3V0Qm94ID8gbV9sYXlvdXRCb3gtPmNzc1RleHQoKSA6IFN0cmluZygpKTsKKyAg
ICAgICAgbV9yZWZlcmVuY2VCb3ggPyBtX3JlZmVyZW5jZUJveC0+Y3NzVGV4dCgpIDogU3RyaW5n
KCkpOwogfQogCiBib29sIENTU0Jhc2ljU2hhcGVJbnNldDo6ZXF1YWxzKGNvbnN0IENTU0Jhc2lj
U2hhcGUmIHNoYXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jh
c2ljU2hhcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCBl
MzcyNDQyYTE4YmQyMWYzZDRjOTM1YzQwZThiMTFhOGEwYTExMmNmLi5jOTIxMGNmMmQ2YzY3NjIz
NDZkZjEwNTAyOTZlNWM3NGQxZWY1NTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMu
aApAQCAtNTEsMTUgKzUxLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFw
ZSYpIGNvbnN0ID0gMDsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBsYXlvdXRCb3goKSBjb25z
dCB7IHJldHVybiBtX2xheW91dEJveC5nZXQoKTsgfQotICAgIHZvaWQgc2V0TGF5b3V0Qm94KFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxheW91dEJveCkgeyBtX2xheW91dEJveCA9IGxh
eW91dEJveDsgfQorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByZWZlcmVuY2VCb3goKSBjb25zdCB7
IHJldHVybiBtX3JlZmVyZW5jZUJveC5nZXQoKTsgfQorICAgIHZvaWQgc2V0UmVmZXJlbmNlQm94
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlZmVyZW5jZUJveCkgeyBtX3JlZmVyZW5j
ZUJveCA9IHJlZmVyZW5jZUJveDsgfQogCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q1NTQmFzaWNT
aGFwZSgpIHsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ1NTQmFzaWNTaGFwZSgpIHsgfQotICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9sYXlvdXRCb3g7CisgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBtX3JlZmVyZW5jZUJveDsKIH07CiAKIGNsYXNzIENTU0Jhc2ljU2hhcGVJbnNl
dCA6IHB1YmxpYyBDU1NCYXNpY1NoYXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNTMyZTU1ZTlkMGZlMzAyYmNjMDg5
ZjRlMzBjMTliYTRmMzhjMjY3NC4uMDUzNDYzZmQ4ODNmNjg2ZTM2NzA1MjM4ODFlZjEyNTA5NTY2
MDMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAKQEAgLTE2MzAsNyArMTYzMCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBzaGFwZVByb3BlcnR5VmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBT
CiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVPdXRzaWRlU2hhcGUpOwogCiAgICAgaWYgKHNoYXBlVmFsdWUtPnR5cGUoKSA9PSBTaGFw
ZVZhbHVlOjpCb3gpCi0gICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShz
aGFwZVZhbHVlLT5sYXlvdXRCb3goKSk7CisgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZShzaGFwZVZhbHVlLT5jc3NCb3goKSk7CiAKICAgICBpZiAoc2hhcGVWYWx1ZS0+
dHlwZSgpID09IFNoYXBlVmFsdWU6OkltYWdlKQogICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+
aW1hZ2UoKSA/IHNoYXBlVmFsdWUtPmltYWdlKCktPmNzc1ZhbHVlKCkgOiBjc3NWYWx1ZVBvb2wo
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKQEAgLTE2MzksOCArMTYzOSw4
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBzaGFwZVByb3BlcnR5VmFsdWUoY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBTCiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGxpc3QtPmFw
cGVuZCh2YWx1ZUZvckJhc2ljU2hhcGUoc3R5bGUsIHNoYXBlVmFsdWUtPnNoYXBlKCkpKTsKLSAg
ICBpZiAoc2hhcGVWYWx1ZS0+bGF5b3V0Qm94KCkgIT0gQm94TWlzc2luZykKLSAgICAgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHNoYXBlVmFsdWUtPmxheW91dEJv
eCgpKSk7CisgICAgaWYgKHNoYXBlVmFsdWUtPmNzc0JveCgpICE9IEJveE1pc3NpbmcpCisgICAg
ICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzaGFwZVZhbHVlLT5j
c3NCb3goKSkpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggMjAyMTI0
OWEyMTI1NGI3MGEwZmJjMzYwMTcyOTZjOTVjMTg0ODFhMC4uY2MxNjJjOWFkNDg4YzU2YWJkYzkw
MDRkMWJkNDk1NjA5ZGZhOGIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWVNYXBwaW5ncy5oCkBAIC01MTYyLDExICs1MTYyLDExIEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBJbWFnZU9yaWVudGF0aW9uRW51bSgpIGNv
bnN0CiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogCi10ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGF5b3V0Qm94
IGxheW91dEJveCkKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZShDU1NCb3hUeXBlIGNzc0JveCkKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNs
YXNzKQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7Ci0gICAgc3dp
dGNoIChsYXlvdXRCb3gpIHsKKyAgICBzd2l0Y2ggKGNzc0JveCkgewogICAgIGNhc2UgTWFyZ2lu
Qm94OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU1hcmdpbkJveDsKICAgICAg
ICAgYnJlYWs7CkBAIC01MTk1LDcgKzUxOTUsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGF5b3V0Qm94IGxheW91dEJveCkKICAgICB9
CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMYXlv
dXRCb3goKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJh
dG9yIENTU0JveFR5cGUoKSBjb25zdAogewogICAgIHN3aXRjaCAoZ2V0VmFsdWVJRCgpKSB7CiAg
ICAgY2FzZSBDU1NWYWx1ZU1hcmdpbkJveDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNh
dGVkU3R5bGVCdWlsZGVyLmNwcAppbmRleCA2ZGNiOTE5YmIzZDYwMGUwMDdhN2EzNWI3NDE3M2Rm
ZGIxNmIwOWIxLi40ZGU4Nzg2YWNhOGE0NmRlYWU5NjhlMTQzN2VlZjI3ZTkzNzFkMjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCkBAIC0yMTQ0
LDcgKzIxNDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgaWYgKCF2YWx1ZS0+aXNW
YWx1ZUxpc3QoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgTGF5b3V0Qm94IHJlZmVy
ZW5jZUJveCA9IEJveE1pc3Npbmc7CisgICAgICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94ID0g
Qm94TWlzc2luZzsKICAgICAgICAgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBvcGVyYXRpb247
CiAgICAgICAgIGF1dG8mIHZhbHVlTGlzdCA9IHRvQ1NTVmFsdWVMaXN0KCp2YWx1ZSk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QubGVuZ3RoKCk7ICsraSkgewpA
QCAtMjE1OSw3ICsyMTU5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2
ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVN0cm9rZQogICAgICAgICAgICAgICAgIHx8
IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVZpZXdCb3gpCiAgICAgICAg
ICAgICAgICAgJiYgcmVmZXJlbmNlQm94ID09IEJveE1pc3NpbmcpCi0gICAgICAgICAgICAgICAg
cmVmZXJlbmNlQm94ID0gTGF5b3V0Qm94KHByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgICAg
ICByZWZlcmVuY2VCb3ggPSBDU1NCb3hUeXBlKHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxOTYsNyArMjE5
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxl
KCksIHNoYXBlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzVmFsdWVM
aXN0KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxCYXNpY1NoYXBlPiBzaGFwZTsKLSAgICAgICAg
ICAgIExheW91dEJveCBsYXlvdXRCb3ggPSBCb3hNaXNzaW5nOworICAgICAgICAgICAgQ1NTQm94
VHlwZSByZWZlcmVuY2VCb3ggPSBCb3hNaXNzaW5nOwogICAgICAgICAgICAgQ1NTVmFsdWVMaXN0
KiB2YWx1ZUxpc3QgPSB0b0NTU1ZhbHVlTGlzdCh2YWx1ZSk7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOwpAQCAtMjIwNiwxNSAr
MjIwNiwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVl
LT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3JkZXJCb3gKICAgICAgICAgICAgICAgICAgICAg
fHwgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVBhZGRpbmdCb3gKICAg
ICAgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU1hcmdpbkJveCkKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0Qm94ID0gTGF5b3V0Qm94
KCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZUJveCA9IENT
U0JveFR5cGUoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHNo
YXBlKQotICAgICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIFNo
YXBlVmFsdWU6OmNyZWF0ZVNoYXBlVmFsdWUoc2hhcGUucmVsZWFzZSgpLCBsYXlvdXRCb3gpKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveCAhPSBCb3hNaXNzaW5nKQotICAgICAgICAg
ICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIFNoYXBlVmFsdWU6OmNyZWF0
ZUxheW91dEJveFZhbHVlKGxheW91dEJveCkpOworICAgICAgICAgICAgICAgIHNldFZhbHVlKHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCksIFNoYXBlVmFsdWU6OmNyZWF0ZVNoYXBlVmFsdWUoc2hhcGUu
cmVsZWFzZSgpLCByZWZlcmVuY2VCb3gpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZmVyZW5j
ZUJveCAhPSBCb3hNaXNzaW5nKQorICAgICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2
ZXItPnN0eWxlKCksIFNoYXBlVmFsdWU6OmNyZWF0ZUJveFNoYXBlVmFsdWUocmVmZXJlbmNlQm94
KSk7CiAKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBjNjNmZjM1ZDUyMDI0ZTIx
MWZiMGJmYTQ1MDBhNDBjMWYwZGNkZTdhLi5jNTVlMDU5NzY3MjdhMjk3ZTlhNGU1YzNkN2QwZWQz
MDFmZDRiYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPFNoYXBlVmFsdWU+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwg
U2hhcGVWYWx1ZSoKICAgICBpZiAoZnJvbS0+dHlwZSgpICE9IFNoYXBlVmFsdWU6OlNoYXBlIHx8
IHRvLT50eXBlKCkgIT0gU2hhcGVWYWx1ZTo6U2hhcGUpCiAgICAgICAgIHJldHVybiB0bzsKIAot
ICAgIGlmIChmcm9tLT5sYXlvdXRCb3goKSAhPSB0by0+bGF5b3V0Qm94KCkpCisgICAgaWYgKGZy
b20tPmNzc0JveCgpICE9IHRvLT5jc3NCb3goKSkKICAgICAgICAgcmV0dXJuIHRvOwogCiAgICAg
Y29uc3QgQmFzaWNTaGFwZSogZnJvbVNoYXBlID0gZnJvbS0+c2hhcGUoKTsKQEAgLTE1Nyw3ICsx
NTcsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U2hhcGVWYWx1ZT4gYmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCBTaGFwZVZhbHVlKgogICAgIGlmICghZnJvbVNoYXBlLT5jYW5C
bGVuZCh0b1NoYXBlKSkKICAgICAgICAgcmV0dXJuIHRvOwogCi0gICAgcmV0dXJuIFNoYXBlVmFs
dWU6OmNyZWF0ZVNoYXBlVmFsdWUodG9TaGFwZS0+YmxlbmQoZnJvbVNoYXBlLCBwcm9ncmVzcyks
IHRvLT5sYXlvdXRCb3goKSk7CisgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZVNoYXBlVmFs
dWUodG9TaGFwZS0+YmxlbmQoZnJvbVNoYXBlLCBwcm9ncmVzcyksIHRvLT5jc3NCb3goKSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRo
T3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24u
aAppbmRleCA3ZDcxYzUxMDk0MzU3NTNjYzE3YjliNzYwOTdlMTM5YjA5MzNkZjYyLi42NTZlN2Zk
YTU2NjNkMWQ0NjBkNDAwMTVmYzU4ZWFjMjM4YWY3ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApAQCAtMTEyLDggKzExMiw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHBhdGg7CiAgICAgfQogCi0gICAgdm9pZCBzZXRSZWZlcmVuY2VCb3go
TGF5b3V0Qm94IHJlZmVyZW5jZUJveCkgeyBtX3JlZmVyZW5jZUJveCA9IHJlZmVyZW5jZUJveDsg
fQotICAgIExheW91dEJveCByZWZlcmVuY2VCb3goKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5j
ZUJveDsgfQorICAgIHZvaWQgc2V0UmVmZXJlbmNlQm94KENTU0JveFR5cGUgcmVmZXJlbmNlQm94
KSB7IG1fcmVmZXJlbmNlQm94ID0gcmVmZXJlbmNlQm94OyB9CisgICAgQ1NTQm94VHlwZSByZWZl
cmVuY2VCb3goKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUJveDsgfQogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBj
b25zdCBvdmVycmlkZQpAQCAtMTMyLDEyICsxMzIsMTIgQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICBSZWZQdHI8QmFzaWNTaGFwZT4gbV9zaGFwZTsKLSAgICBMYXlvdXRCb3ggbV9yZWZlcmVuY2VC
b3g7CisgICAgQ1NTQm94VHlwZSBtX3JlZmVyZW5jZUJveDsKIH07CiAKIGNsYXNzIEJveENsaXBQ
YXRoT3BlcmF0aW9uIDogcHVibGljIENsaXBQYXRoT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxCb3hDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRlKExheW91dEJveCBy
ZWZlcmVuY2VCb3gpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qm94Q2xpcFBhdGhPcGVyYXRpb24+
IGNyZWF0ZShDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQm94Q2xpcFBhdGhPcGVyYXRpb24ocmVmZXJlbmNlQm94KSk7CiAgICAgfQpA
QCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChi
b3VuZGluZ1JlY3QpOwogICAgICAgICByZXR1cm4gcGF0aDsKICAgICB9Ci0gICAgTGF5b3V0Qm94
IHJlZmVyZW5jZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlQm94OyB9CisgICAgQ1NT
Qm94VHlwZSByZWZlcmVuY2VCb3goKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUJveDsgfQog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaXBQYXRoT3Bl
cmF0aW9uJiBvKSBjb25zdCBvdmVycmlkZQpAQCAtMTU5LDEzICsxNTksMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIG1fcmVmZXJlbmNlQm94ID09IG90aGVyLT5tX3JlZmVyZW5jZUJveDsK
ICAgICB9CiAKLSAgICBleHBsaWNpdCBCb3hDbGlwUGF0aE9wZXJhdGlvbihMYXlvdXRCb3ggcmVm
ZXJlbmNlQm94KQorICAgIGV4cGxpY2l0IEJveENsaXBQYXRoT3BlcmF0aW9uKENTU0JveFR5cGUg
cmVmZXJlbmNlQm94KQogICAgICAgICA6IENsaXBQYXRoT3BlcmF0aW9uKEJveCkKICAgICAgICAg
LCBtX3JlZmVyZW5jZUJveChyZWZlcmVuY2VCb3gpCiAgICAgewogICAgIH0KIAotICAgIExheW91
dEJveCBtX3JlZmVyZW5jZUJveDsKKyAgICBDU1NCb3hUeXBlIG1fcmVmZXJlbmNlQm94OwogfTsK
IAogI2RlZmluZSBDTElQX1BBVEhfT1BFUkFUSU9OX0NBU1RTKFRvVmFsdWVUeXBlTmFtZSwgcHJl
ZGljYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4
IGFiODc0YjY2MDgxNGY0NTI5NzNmNDRjYTk1ZDJhMjE1NDdjMTA1MGIuLmNiZjM3Njg3YjVkM2M3
MDgzNDc1ZjgyNDVkODliNGZjZWFjNGVlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hh
cGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjb25z
dAogICAgIHJldHVybiByYXN0ZXJTaGFwZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8U2hh
cGU+IFNoYXBlOjpjcmVhdGVMYXlvdXRCb3hTaGFwZShjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRl
ZFJlY3QsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFk
ZGluZykKK1Bhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVCb3hTaGFwZShjb25zdCBSb3Vu
ZGVkUmVjdCYgcm91bmRlZFJlY3QsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFy
Z2luLCBMZW5ndGggcGFkZGluZykKIHsKICAgICBBU1NFUlQocm91bmRlZFJlY3QucmVjdCgpLndp
ZHRoKCkgPj0gMCAmJiByb3VuZGVkUmVjdC5yZWN0KCkuaGVpZ2h0KCkgPj0gMCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaAppbmRleCA2M2E5MzVmNTI3MmIwNWM5OGY2
NDAwNzNhMTY2NTNkYzkyYzE0ZTc3Li40ZTM3OTNmYzVjYjYzZGI3M2RlNTYyOTI2NDc0YjFlN2Zm
NmIwN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCkBAIC02OSw3
ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVT
aGFwZShjb25zdCBCYXNpY1NoYXBlKiwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUs
IFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiwgZmxvYXQgdGhyZXNo
b2xkLCBjb25zdCBMYXlvdXRSZWN0JiBkcmF3UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZUxheW91dEJveFNoYXBlKGNvbnN0IFJvdW5kZWRS
ZWN0JiwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlQm94U2hhcGUoY29uc3QgUm91bmRlZFJlY3Qm
LCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOwogCiAgICAgdmly
dHVhbCB+U2hhcGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZUluZm8uY3BwCmluZGV4IDgyYzFiMDhmOGJiYjlmODcwMDc1MmZlNjM5Zjg1ZmNhNTFjNTU5
NTUuLjM5MDEwNzBmNTFjZDQ3ZDJjNjA3YmQ5ZjZkODIwYTA4MmYwMzk4NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKQEAgLTE0NSw3ICsxNDUs
NyBAQCBjb25zdCBTaGFwZSYgU2hhcGVJbmZvPFJlbmRlclR5cGU+Ojpjb21wdXRlZFNoYXBlKCkg
Y29uc3QKICAgICAgICAgLy8gRklYTUUgVGhpcyBkb2VzIG5vdCBwcm9wZXJseSBjb21wdXRlIHRo
ZSByb3VuZGVkIGNvcm5lcnMgYXMgc3BlY2lmaWVkIGluIGFsbCBjb25kaXRpb25zLgogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3OTgyCiAgICAg
ICAgIGNvbnN0IFJvdW5kZWRSZWN0JiBzaGFwZVJlY3QgPSBtX3JlbmRlcmVyLnN0eWxlKCkuZ2V0
Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0KExheW91dFBvaW50KCksIG1fcmVmZXJlbmNlQm94
TG9naWNhbFNpemUpLCAmKG1fcmVuZGVyZXIudmlldygpKSk7Ci0gICAgICAgIG1fc2hhcGUgPSBT
aGFwZTo6Y3JlYXRlTGF5b3V0Qm94U2hhcGUoc2hhcGVSZWN0LCB3cml0aW5nTW9kZSwgbWFyZ2lu
LCBwYWRkaW5nKTsKKyAgICAgICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVCb3hTaGFwZShzaGFw
ZVJlY3QsIHdyaXRpbmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBTaGFwZVZhbHVlOjpPdXRzaWRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbmZvLmgKaW5kZXggZTc3ZWFlOGRiM2JhMTA1ZjAwNTJiNzgxNTdh
NjUwMjY4N2U1NDNkOS4uNzhjM2JhNDY2NWI1NGNlODk3NmNkZGJkNjUwMGI4YmY1MWRlMjRmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5oCkBAIC0xMzIs
NyArMTMyLDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIExheW91
dEJveCByZWZlcmVuY2VCb3goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBDU1NCb3hUeXBlIHJl
ZmVyZW5jZUJveCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY29tcHV0ZWRT
aGFwZUxvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFNoYXBlVmFs
dWUqIHNoYXBlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldEludGVydmFs
cyhMYXlvdXRVbml0LCBMYXlvdXRVbml0LCBTZWdtZW50TGlzdCYpIGNvbnN0ID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5oCmluZGV4
IDA2YjZiZWMxODQ3YzVlZjQ5OTQxOWUyZTM4ODE1MWYxYTM5ODI0NzQuLjFiYjA3ZmQ1NTJjZmFh
Yzk1NzVjNGJkMzE2YzI3NTZkZjE1YWU4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uaApAQCAtMTA3LDEyICsxMDcsMTIgQEAgcHVi
bGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgTGF5b3V0Qm94IHJlZmVyZW5j
ZUJveCgpIGNvbnN0IG92ZXJyaWRlCisgICAgdmlydHVhbCBDU1NCb3hUeXBlIHJlZmVyZW5jZUJv
eCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoc2hhcGVWYWx1ZSgpLT5sYXlv
dXRCb3goKSA9PSBCb3hNaXNzaW5nKQorICAgICAgICBpZiAoc2hhcGVWYWx1ZSgpLT5jc3NCb3go
KSA9PSBCb3hNaXNzaW5nKQogICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRCb3g7CiAKLSAgICAg
ICAgcmV0dXJuIHNoYXBlVmFsdWUoKS0+bGF5b3V0Qm94KCk7CisgICAgICAgIHJldHVybiBzaGFw
ZVZhbHVlKCktPmNzc0JveCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlRm9yV3JpdGluZ01vZGUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKaW5kZXggNjljMzc2
MzEwOWE2MWU4MWFkZTgxYzMwODVlMGRlYmY3NzRiNGE1Ni4uNDg4MWUwNmFiMGVhZmFiYTcxNjEz
NjkxNmRjZmEyY2VmYjc1YmExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKQEAgLTYzLDE0ICs2MywxNCBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBMYXlvdXRCb3ggcmVmZXJlbmNlQm94KCkg
Y29uc3Qgb3ZlcnJpZGUKKyAgICB2aXJ0dWFsIENTU0JveFR5cGUgcmVmZXJlbmNlQm94KCkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChzaGFwZVZhbHVlKCktPmxheW91dEJveCgp
ID09IEJveE1pc3NpbmcpIHsKKyAgICAgICAgaWYgKHNoYXBlVmFsdWUoKS0+Y3NzQm94KCkgPT0g
Qm94TWlzc2luZykgewogICAgICAgICAgICAgaWYgKHNoYXBlVmFsdWUoKS0+dHlwZSgpID09IFNo
YXBlVmFsdWU6OkltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBDb250ZW50Qm94OwogICAg
ICAgICAgICAgcmV0dXJuIE1hcmdpbkJveDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gc2hh
cGVWYWx1ZSgpLT5sYXlvdXRCb3goKTsKKyAgICAgICAgcmV0dXJuIHNoYXBlVmFsdWUoKS0+Y3Nz
Qm94KCk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMWVmN2NhNmIyM2M3YjNkN2E0ZTE5MzJhMTUyYmFm
NTZmMDMwMjE1Ni4uZDJhMGM0ZGY5NmY1N2U4YmQyNWU1MTE3YmQyZjhlZGE1OTczNTdmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC02
NSw3ICs2NSw3IEBAIGJvb2wgQmFzaWNTaGFwZTo6Y2FuQmxlbmQoY29uc3QgQmFzaWNTaGFwZSog
b3RoZXIpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEJvdGggc2hhcGVz
IG11c3QgdXNlIHRoZSBzYW1lIHJlZmVyZW5jZSBib3guCi0gICAgaWYgKGxheW91dEJveCgpICE9
IG90aGVyLT5sYXlvdXRCb3goKSkKKyAgICBpZiAocmVmZXJlbmNlQm94KCkgIT0gb3RoZXItPnJl
ZmVyZW5jZUJveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBKdXN0IHBvbHln
b25zIHdpdGggc2FtZSBudW1iZXIgb2YgdmVydGljZXMgY2FuIGJlIGFuaW1hdGVkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAppbmRleCAyMGFhNjI5Yzcy
MmY3MzBmZDc3ZDNhOWEzM2NhZmZjNjdiZmU4MzMxLi5mMmFiNGJkYjRlMTJmN2NlZjg5ODk1ZjBi
NjllMDljNDRkMjAwMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFz
aWNTaGFwZXMuaApAQCAtNjMsMTcgKzYzLDE3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgPSAwOwogCi0gICAgTGF5b3V0Qm94IGxheW91dEJveCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGF5b3V0Qm94OyB9Ci0gICAgdm9pZCBzZXRMYXlvdXRCb3goTGF5b3V0Qm94IGxh
eW91dEJveCkgeyBtX2xheW91dEJveCA9IGxheW91dEJveDsgfQorICAgIENTU0JveFR5cGUgcmVm
ZXJlbmNlQm94KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VCb3g7IH0KKyAgICB2b2lkIHNl
dFJlZmVyZW5jZUJveChDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCkgeyBtX3JlZmVyZW5jZUJveCA9
IHJlZmVyZW5jZUJveDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQmFzaWNTaGFwZSgpCi0gICAgICAg
IDogbV9sYXlvdXRCb3goQm94TWlzc2luZykKKyAgICAgICAgOiBtX3JlZmVyZW5jZUJveChCb3hN
aXNzaW5nKQogICAgIHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgTGF5b3V0Qm94IG1fbGF5b3V0
Qm94OworICAgIENTU0JveFR5cGUgbV9yZWZlcmVuY2VCb3g7CiB9OwogCiBjbGFzcyBCYXNpY1No
YXBlQ2VudGVyQ29vcmRpbmF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IDkzMDcwYjJkZTlmMTRlMmYxYjk3
NWMyZTVlMzUwMjVhZDIwNGVlNWEuLjNlMmU2NjFmNjFmMDEwODgzYThiMmQ1ZGMzNTcxNWNkMTFk
YjEzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZUNvbnN0YW50cy5oCkBAIC01NTYsNyArNTU2LDcgQEAgZW51bSBUZXh0SW5kZW50VHlw
ZSB7IFRleHRJbmRlbnROb3JtYWwsIFRleHRJbmRlbnRIYW5naW5nIH07CiBlbnVtIElzb2xhdGlv
biB7IElzb2xhdGlvbkF1dG8sIElzb2xhdGlvbklzb2xhdGUgfTsKIAogLy8gRmlsbCwgU3Ryb2tl
LCBWaWV3Qm94IGFyZSBqdXN0IHVzZWQgZm9yIFNWRy4KLWVudW0gTGF5b3V0Qm94IHsgQm94TWlz
c2luZyA9IDAsIE1hcmdpbkJveCwgQm9yZGVyQm94LCBQYWRkaW5nQm94LCBDb250ZW50Qm94LCBG
aWxsLCBTdHJva2UsIFZpZXdCb3ggfTsKK2VudW0gQ1NTQm94VHlwZSB7IEJveE1pc3NpbmcgPSAw
LCBNYXJnaW5Cb3gsIEJvcmRlckJveCwgUGFkZGluZ0JveCwgQ29udGVudEJveCwgRmlsbCwgU3Ry
b2tlLCBWaWV3Qm94IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKaW5kZXggNTNjMTFhN2U4Mjc4OTUwYzhk
ZjA0NWQwMTgwYmFiYzQ5MzMzNjk3ZS4uMTUzMTdkYTM5N2RmMzUzZjU3ODM2NjMzYzkwYWViYjQ2
MWU2OWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBl
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5o
CkBAIC00OCwxNCArNDgsMTQgQEAgcHVibGljOgogICAgICAgICBJbWFnZQogICAgIH07CiAKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFwZVZhbHVlPiBjcmVhdGVTaGFwZVZhbHVlKFBhc3NSZWZQ
dHI8QmFzaWNTaGFwZT4gc2hhcGUsIExheW91dEJveCBsYXlvdXRCb3gpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhcGVWYWx1ZT4gY3JlYXRlU2hhcGVWYWx1ZShQYXNzUmVmUHRyPEJhc2ljU2hh
cGU+IHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2hhcGVWYWx1ZShzaGFwZSwgbGF5b3V0Qm94KSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2hhcGVWYWx1ZShzaGFwZSwgY3NzQm94KSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2hhcGVWYWx1ZT4gY3JlYXRlTGF5b3V0Qm94VmFsdWUoTGF5b3V0Qm94
IGxheW91dEJveCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFwZVZhbHVlPiBjcmVhdGVCb3hT
aGFwZVZhbHVlKENTU0JveFR5cGUgYm94U2hhcGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNoYXBlVmFsdWUobGF5b3V0Qm94KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2hhcGVWYWx1ZShib3hTaGFwZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNoYXBlVmFsdWU+IGNyZWF0ZU91dHNpZGVWYWx1ZSgpCkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKIAogICAgIFNoYXBlVmFsdWVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KICAgICBCYXNpY1NoYXBlKiBzaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUuZ2V0KCk7
IH0KLSAgICBMYXlvdXRCb3ggbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3g7
IH0KKyAgICBDU1NCb3hUeXBlIGNzc0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fY3NzQm94OyB9CiAK
ICAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0K
ICAgICBib29sIGlzSW1hZ2VWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGltYWdlKCkgJiYgaW1hZ2Uo
KS0+Y2FjaGVkSW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpLT5oYXNJbWFnZSgpOyB9
CkBAIC04NCwzMyArODQsMzMgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
aGFwZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKTsg
fQogCiBwcml2YXRlOgotICAgIFNoYXBlVmFsdWUoUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBzaGFw
ZSwgTGF5b3V0Qm94IGxheW91dEJveCkKKyAgICBTaGFwZVZhbHVlKFBhc3NSZWZQdHI8QmFzaWNT
aGFwZT4gc2hhcGUsIENTU0JveFR5cGUgY3NzQm94KQogICAgICAgICA6IG1fdHlwZShTaGFwZSkK
ICAgICAgICAgLCBtX3NoYXBlKHNoYXBlKQotICAgICAgICAsIG1fbGF5b3V0Qm94KGxheW91dEJv
eCkKKyAgICAgICAgLCBtX2Nzc0JveChjc3NCb3gpCiAgICAgewogICAgIH0KICAgICBTaGFwZVZh
bHVlKFNoYXBlVmFsdWVUeXBlIHR5cGUpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgICAg
ICwgbV9sYXlvdXRCb3goQm94TWlzc2luZykKKyAgICAgICAgLCBtX2Nzc0JveChCb3hNaXNzaW5n
KQogICAgIHsKICAgICB9CiAgICAgU2hhcGVWYWx1ZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGlt
YWdlKQogICAgICAgICA6IG1fdHlwZShJbWFnZSkKICAgICAgICAgLCBtX2ltYWdlKGltYWdlKQot
ICAgICAgICAsIG1fbGF5b3V0Qm94KEJveE1pc3NpbmcpCisgICAgICAgICwgbV9jc3NCb3goQm94
TWlzc2luZykKICAgICB7CiAgICAgfQotICAgIFNoYXBlVmFsdWUoTGF5b3V0Qm94IGxheW91dEJv
eCkKKyAgICBTaGFwZVZhbHVlKENTU0JveFR5cGUgY3NzQm94KQogICAgICAgICA6IG1fdHlwZShC
b3gpCi0gICAgICAgICwgbV9sYXlvdXRCb3gobGF5b3V0Qm94KQorICAgICAgICAsIG1fY3NzQm94
KGNzc0JveCkKICAgICB7CiAgICAgfQogCiAgICAgU2hhcGVWYWx1ZVR5cGUgbV90eXBlOwogICAg
IFJlZlB0cjxCYXNpY1NoYXBlPiBtX3NoYXBlOwogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBtX2lt
YWdlOwotICAgIExheW91dEJveCBtX2xheW91dEJveDsKKyAgICBDU1NCb3hUeXBlIG1fY3NzQm94
OwogfTsKIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>