<?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>110817</bug_id>
          
          <creation_ts>2013-02-25 16:03:27 -0800</creation_ts>
          <short_desc>Create GraphicsContext3DState to aggregate state objects</short_desc>
          <delta_ts>2013-02-28 15:19:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>110883</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Bruno Abinader (history only)">bruno.abinader</reporter>
          <assigned_to name="Bruno Abinader (history only)">bruno.abinader</assigned_to>
          <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>kbr</cc>
    
    <cc>mifenton</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>841373</commentid>
    <comment_count>0</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-25 16:03:27 -0800</bug_when>
    <thetext>Aggregate context state-related objects on a GraphicsContext3DState struct, in a similar fashion as GraphicsContext does. This is useful to avoid duplicated values for platform-specific initialization lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841375</commentid>
    <comment_count>1</comment_count>
      <attachid>190145</attachid>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-25 16:05:13 -0800</bug_when>
    <thetext>Created attachment 190145
Patch

Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841949</commentid>
    <comment_count>2</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2013-02-26 06:34:13 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=190145) [details]
&gt; Patch
&gt; 
&gt; Proposed patch

LGTM, but I will defer to No&apos;am or Mrobinson a final word.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842009</commentid>
    <comment_count>3</comment_count>
      <attachid>190145</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-26 08:03:54 -0800</bug_when>
    <thetext>Comment on attachment 190145
Patch

I&apos;m not sure adding a new layer in an already byzantine class hierarchy is a good tradeoff for deleting six lines of code. I&apos;m not going to block this patch, but I thought I&apos;d mention that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842010</commentid>
    <comment_count>4</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-26 08:07:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 190145 [details])
&gt; I&apos;m not sure adding a new layer in an already byzantine class hierarchy is a good tradeoff for deleting six lines of code. I&apos;m not going to block this patch, but I thought I&apos;d mention that.

I agree - something about this seems like refactoring for the sake of refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842011</commentid>
    <comment_count>5</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-26 08:08:16 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 190145 [details])
&gt; I&apos;m not sure adding a new layer in an already byzantine class hierarchy is a good tradeoff for deleting six lines of code. I&apos;m not going to block this patch, but I thought I&apos;d mention that.

The GC3DState struct is also the baseline for an upcoming effort to add more state variables to avoid redundant state changes not covered by this patch (I&apos;ll create a bug related to this soon), so in fact the removal of the duplicated values is a plus, not the real goal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842023</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-02-26 08:17:32 -0800</bug_when>
    <thetext>(In reply to comment #5)
 
&gt; The GC3DState struct is also the baseline for an upcoming effort to add more state variables to avoid redundant state changes not covered by this patch (I&apos;ll create a bug related to this soon), so in fact the removal of the duplicated values is a plus, not the real goal.

Redundantly setting the bound texture, the active texture unit, or the FBO should be fast, unless you have some really poor drivers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842026</commentid>
    <comment_count>7</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-26 08:22:51 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; 
&gt; &gt; The GC3DState struct is also the baseline for an upcoming effort to add more state variables to avoid redundant state changes not covered by this patch (I&apos;ll create a bug related to this soon), so in fact the removal of the duplicated values is a plus, not the real goal.
&gt; 
&gt; Redundantly setting the bound texture, the active texture unit, or the FBO should be fast, unless you have some really poor drivers.

These are not the target of bug 110883. I&apos;ll cover for now just the bottlenecks I&apos;ve been detecting by profiling EFL&apos;s MiniBrowser under gDEBugger tool (so far: blend, stencil, scissor, depth mask-related functions). I&apos;ve moved these variables to GC3DState for readibility, but I can update the patch just to create GC3DState struct if that&apos;s the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842028</commentid>
    <comment_count>8</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-26 08:23:54 -0800</bug_when>
    <thetext>s/readibility/readability/ :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842038</commentid>
    <comment_count>9</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-26 08:31:34 -0800</bug_when>
    <thetext>I&apos;ve uploaded the proposed patch on bug 110883 for your appreciation (depends on the proposed patch from this bug, as it creates the GC3DState struct).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844086</commentid>
    <comment_count>10</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2013-02-28 08:04:02 -0800</bug_when>
    <thetext>@Martin, @Kenneth: I&apos;ve spoke w/ No&apos;am today about this, he seems fine with the changes (this patch and the complimentary in bug 110883). I agree these changes gives minimum or no optimization on well-implemented drivers, but for others, this could reduce the amount of redundant state changes (speaking of bug 110883). Speaking of which, I&apos;ve splitted the code in two for clarity, but if it makes more sense to aggregate both patches, please tell me so I can do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844463</commentid>
    <comment_count>11</comment_count>
      <attachid>190145</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-02-28 14:08:59 -0800</bug_when>
    <thetext>Comment on attachment 190145
Patch

This refactoring looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844531</commentid>
    <comment_count>12</comment_count>
      <attachid>190145</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 15:19:32 -0800</bug_when>
    <thetext>Comment on attachment 190145
Patch

Clearing flags on attachment: 190145

Committed r144378: &lt;http://trac.webkit.org/changeset/144378&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844532</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 15:19:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190145</attachid>
            <date>2013-02-25 16:05:13 -0800</date>
            <delta_ts>2013-02-28 15:19:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110817-20130225200127.patch</filename>
            <type>text/plain</type>
            <size>26694</size>
            <attacher name="Bruno Abinader (history only)">bruno.abinader</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYwOWUzYTJkNDVmMmYw
OTAzNmYyZjM0ZDNlZjg0NmUyOTdjMzE2MS4uNzllODdiZWRjYTY1NjU4ZTQxMjI5YTI1YWIwOGEw
OGNhY2ZmZGU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY0IEBACiAyMDEzLTAyLTI1ICBCcnVu
byBkZSBPbGl2ZWlyYSBBYmluYWRlciAgPGJydW5vLmFiaW5hZGVyQGJhc3lza29tLmNvbT4KIAor
ICAgICAgICBDcmVhdGUgR3JhcGhpY3NDb250ZXh0M0RTdGF0ZSB0byBhZ2dyZWdhdGUgc3RhdGUg
b2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTEwODE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWdncmVnYXRlIGNvbnRleHQgc3RhdGUtcmVsYXRlZCBvYmplY3RzIG9uIGEgR3JhcGhpY3NDb250
ZXh0M0RTdGF0ZQorICAgICAgICBzdHJ1Y3QsIGluIGEgc2ltaWxhciBmYXNoaW9uIGFzIEdyYXBo
aWNzQ29udGV4dCBkb2VzLiBUaGlzIGlzIHVzZWZ1bCB0bworICAgICAgICBhdm9pZCBkdXBsaWNh
dGVkIHZhbHVlcyBmb3IgcGxhdGZvcm0tc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gbGlzdHMuCisK
KyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlcywgdGh1cyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRFN0
YXRlOjpHcmFwaGljc0NvbnRleHQzRFN0YXRlKToKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNE
U3RhdGUpOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICBNb3ZlZCBtX2Jv
dW5kRkJPLCBtX2FjdGl2ZVRleHR1cmUgYW5kIG1fYm91bmRUZXh0dXJlMCB0byBHcmFwaGljc0Nv
bnRleHQzRFN0YXRlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9H
cmFwaGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpyZXNoYXBlRkJPcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y29weVRv
R3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVzaGFwZUZCT3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnJlYWRQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb3B5
VGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29weVRl
eFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0
ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxl
dGVUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVh
ZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZUZCT3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVPZmZzY3JlZW5CdWZmZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpibGl0TXVsdGlzYW1w
bGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIGxpc3QgdmFs
dWVzIG5vdCBuZWVkZWQgYW55bW9yZSBhbmQgcmVhc3NpZ25lZAorICAgICAgICBjYWxscyB0byBt
X2JvdW5kRkJPLCBtX2JvdW5kVGV4dHVyZTAgYW5kIG1fYWN0aXZlVGV4dHVyZSB0byBtX3N0YXRl
CisgICAgICAgIHJlc3BlY3RpdmVzLgorCisyMDEzLTAyLTI1ICBCcnVubyBkZSBPbGl2ZWlyYSBB
YmluYWRlciAgPGJydW5vLmFiaW5hZGVyQGJhc3lza29tLmNvbT4KKwogICAgICAgICBbdGV4bWFw
XSBEbyBub3QgYXBwbHkgY2xpcCBzdGF0ZSBpZiByZWR1bmRhbnQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDc5MAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCBhZWRl
NGZkODU1ZmM2YzRjNDZmODY2YmIwODlkYzQ0MmIyZWFjNTVlLi42NDlkNTA0MTgzOTM3ZDRkM2M4
OGFlYmUyNjlkYzA5NDFkNjBlODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTEwODEsMTAgKzEwODEsMTkgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkOwogICAgIEdDM0R1aW50IG1faW50
ZXJuYWxDb2xvckZvcm1hdDsKIAotICAgIC8vIEZvciB0cmFja2luZyB3aGljaCBGQk8vdGV4dHVy
ZSBpcyBib3VuZAotICAgIEdDM0R1aW50IG1fYm91bmRGQk87Ci0gICAgR0MzRGVudW0gbV9hY3Rp
dmVUZXh0dXJlOwotICAgIEdDM0R1aW50IG1fYm91bmRUZXh0dXJlMDsKKyAgICBzdHJ1Y3QgR3Jh
cGhpY3NDb250ZXh0M0RTdGF0ZSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEU3RhdGUoKQor
ICAgICAgICAgICAgOiBib3VuZEZCTygwKQorICAgICAgICAgICAgLCBhY3RpdmVUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkKKyAgICAgICAgICAgICwgYm91bmRUZXh0dXJlMCgw
KQorICAgICAgICB7IH0KKworICAgICAgICBHQzNEdWludCBib3VuZEZCTzsKKyAgICAgICAgR0Mz
RGVudW0gYWN0aXZlVGV4dHVyZTsKKyAgICAgICAgR0MzRHVpbnQgYm91bmRUZXh0dXJlMDsKKyAg
ICB9OworCisgICAgR3JhcGhpY3NDb250ZXh0M0RTdGF0ZSBtX3N0YXRlOwogCiAgICAgLy8gRm9y
IG11bHRpc2FtcGxpbmcKICAgICBHQzNEdWludCBtX211bHRpc2FtcGxlRkJPOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0Nv
bnRleHQzREJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwCmluZGV4IGVhNDgwYWYw
ZTk5ODM0MGVjOWY3ZTQ1MmZiYmIzNzBkNGZmYmQxMDkuLjRmMjExOTc5NDc2M2JiMDcyYjRkMmM0
Yjk1OGM1ZmVkN2ZjZmIxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4
dDNEQmxhY2tCZXJyeS5jcHAKQEAgLTYyLDkgKzYyLDYgQEAgR3JhcGhpY3NDb250ZXh0M0Q6Okdy
YXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2kKICAgICAsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX2xheWVyQ29tcG9zaXRl
ZChmYWxzZSkKICAgICAsIG1faW50ZXJuYWxDb2xvckZvcm1hdChHTF9SR0JBKQotICAgICwgbV9i
b3VuZEZCTygwKQotICAgICwgbV9hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKQotICAgICwgbV9i
b3VuZFRleHR1cmUwKDApCiAgICAgLCBtX2lzSW1hZ2luYXRpb25IYXJkd2FyZSgwKQogewogICAg
IGlmIChyZW5kZXJTdHlsZSAhPSBSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykgewpAQCAtODcs
NyArODQsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgICAgICA6OmdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgICAgIGlmIChtX2F0dHJzLnN0ZW5j
aWwgfHwgbV9hdHRycy5kZXB0aCkKICAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJzKDEs
ICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIG1fYm91bmRGQk8gPSBtX2ZibzsKKyAg
ICAgICAgbV9zdGF0ZS5ib3VuZEZCTyA9IG1fZmJvOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogICAgICAgICBzdGF0aWNfY2FzdDxXZWJHTExheWVyV2ViS2l0VGhyZWFkKj4o
bV9jb21wb3NpdGluZ0xheWVyLmdldCgpKS0+c2V0V2ViR0xDb250ZXh0KHRoaXMpOwpAQCAtMTg1
LDcgKzE4Miw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgfQogCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwot
ICAgIGlmIChtX2JvdW5kRkJPICE9IG1fZmJvKSB7CisgICAgaWYgKG1fc3RhdGUuYm91bmRGQk8g
IT0gbV9mYm8pIHsKICAgICAgICAgbXVzdFJlc3RvcmVGQk8gPSB0cnVlOwogICAgICAgICA6Omds
QmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggNmNmN2I4Nzg2
ZmQ0NmE2ZThkODM0NGFmZGIyODVlMmU3NjcwOGE2ZS4uYTZhMzA3NWY1ODFmZmEyZWQzNWQ1MmI1
NjU3NzZmOGZmOTJlNzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAg
LTc5LDkgKzc5LDYgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEgKICAgICAsIG1fdGV4dHVyZSgw
KQogICAgICwgbV9mYm8oMCkKICAgICAsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKDApCi0gICAgLCBt
X2JvdW5kRkJPKDApCi0gICAgLCBtX2FjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApCi0gICAgLCBt
X2JvdW5kVGV4dHVyZTAoMCkKICAgICAsIG1fbXVsdGlzYW1wbGVGQk8oMCkKICAgICAsIG1fbXVs
dGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fbXVsdGlzYW1wbGVDb2xvckJ1
ZmZlcigwKQpAQCAtMTA1LDcgKzEwMiw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBICiAgICAg
ICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKICAgICAgICAgOjpnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogCi0gICAgICAgIG1fYm91bmRGQk8gPSBt
X2ZibzsKKyAgICAgICAgbV9zdGF0ZS5ib3VuZEZCTyA9IG1fZmJvOwogICAgICAgICBpZiAoIW1f
YXR0cnMuYW50aWFsaWFzICYmIChtX2F0dHJzLnN0ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkpCiAg
ICAgICAgICAgICA6OmdsR2VuUmVuZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIp
OwogCkBAIC0xMTMsNyArMTEwLDcgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEgKICAgICAgICAg
aWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7CiAgICAgICAgICAgICA6OmdsR2VuRnJhbWVidWZmZXJz
KDEsICZtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwotICAgICAgICAgICAgbV9ib3VuZEZC
TyA9IG1fbXVsdGlzYW1wbGVGQk87CisgICAgICAgICAgICBtX3N0YXRlLmJvdW5kRkJPID0gbV9t
dWx0aXNhbXBsZUZCTzsKICAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX211
bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwogICAgICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8
fCBtX2F0dHJzLmRlcHRoKQogICAgICAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJzKDEs
ICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuY3BwCmluZGV4IGNkMGUwOWI4NGU3NWQxNDMxNmVjMzI3MzY3ODFkYjVhZWRl
Yjk2NTIuLjE5ZDJmYWQwNTEyNDMxZjhhMTdhYTE5YjBjYzBkYmQ4MWFiYTBmNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTI3LDEzICsxMjcsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICB9CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
Ci0gICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5hbnRpYWxpYXMgJiYgbV9jb250ZXh0LT5tX2Jv
dW5kRkJPID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgeworICAgIGlmIChtX2NvbnRl
eHQtPm1fYXR0cnMuYW50aWFsaWFzICYmIG1fY29udGV4dC0+bV9zdGF0ZS5ib3VuZEZCTyA9PSBt
X2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgR0xDb250ZXh0KiBwcmV2aW91
c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmdldEN1cnJlbnQoKTsKICAgICAgICAgaWYgKHBy
ZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dCkKICAgICAgICAgICAgIG1fY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVs
dGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fYm91bmRGQk8pOworICAg
ICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
bV9jb250ZXh0LT5tX3N0YXRlLmJvdW5kRkJPKTsKIAogICAgICAgICBpZiAocHJldmlvdXNBY3Rp
dmVDb250ZXh0ICYmIHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dCkKICAgICAg
ICAgICAgIHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250
ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNERWZsLmNwcAppbmRleCBiYTQ3M2FlNTgzN2NhMjc1MjhiYjk5YjA5MTAwOTFh
NzE0ZDQ0M2JmLi5lZTlhZDE4NDM3OTRhY2FiYzRkMGY0OGQ0NjgxZWY1OGFhOTljOGViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250
ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9H
cmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTU0LDkgKzU0LDYgQEAgR3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2kKICAgICAsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX2xheWVyQ29t
cG9zaXRlZChmYWxzZSkKICAgICAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCgwKQotICAgICwgbV9i
b3VuZEZCTygwKQotICAgICwgbV9hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKQotICAgICwgbV9i
b3VuZFRleHR1cmUwKDApCiAgICAgLCBtX211bHRpc2FtcGxlRkJPKDApCiAgICAgLCBtX211bHRp
c2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZm
ZXIoMCkKQEAgLTg0LDE0ICs4MSwxNCBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250
ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgICAg
ICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKICAgICAgICAgICAgIGdsR2VuRnJhbWVidWZmZXJz
KDEsICZtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAg
ICAgICBtX2JvdW5kRkJPID0gbV9tdWx0aXNhbXBsZUZCTzsKKyAgICAgICAgICAgIG1fc3RhdGUu
Ym91bmRGQk8gPSBtX211bHRpc2FtcGxlRkJPOwogICAgICAgICAgICAgZ2xHZW5SZW5kZXJidWZm
ZXJzKDEsICZtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwogICAgICAgICAgICAgaWYgKG1fYXR0
cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKQogICAgICAgICAgICAgICAgIGdsR2VuUmVuZGVy
YnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBCaW5kIGNhbnZhcyBGQk8uCiAgICAgICAgICAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKLSAg
ICAgICAgICAgIG1fYm91bmRGQk8gPSBtX2ZibzsKKyAgICAgICAgICAgIG1fc3RhdGUuYm91bmRG
Qk8gPSBtX2ZibzsKICNpZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAgICAgICAgICBpZiAobV9hdHRy
cy5kZXB0aCkKICAgICAgICAgICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhC
dWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCAzZDYwMWZlMmY4
NzY4NmMwMjU4YjJhMGNlNjc2NTExYmU2OTllODVlLi4zMDcxYzEwNDhmMjQ2YWQ4NjUwYzZmNjJi
MGU3MmI4NzgxYmI5NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAt
MjI1LDcgKzIyNSw3IEBAIHVpbnQzMl90IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y29weVRv
R3JhcGhpY3NTdXJmYWNlKCkKIAogICAgIG1fc2hhcmVkU3VyZmFjZS0+dXBkYXRlQ29udGVudHMo
bV9jb250ZXh0LT5tX3RleHR1cmUpOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgIG1fY29udGV4dC0+bV9zdGF0
ZS5ib3VuZEZCTyk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQpp
bmRleCA4MjUzODc3OWM1MjAwMTQyNDI2ZjUwZDQ4OWRkYWRkNWM2OWZlMzkzLi4zMzA1YTBiN2Jh
NmZhMTdiNDJiYzhlNjY0NGFjNzYyZGMyMzFmODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1t
CkBAIC0xMDcsOSArMTA3LDYgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNE
KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2kKICAgICAsIG1fZGVw
dGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX2xheWVyQ29tcG9zaXRlZChmYWxzZSkKICAgICAs
IG1faW50ZXJuYWxDb2xvckZvcm1hdCgwKQotICAgICwgbV9ib3VuZEZCTygwKQotICAgICwgbV9h
Y3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKQotICAgICwgbV9ib3VuZFRleHR1cmUwKDApCiAgICAg
LCBtX211bHRpc2FtcGxlRkJPKDApCiAgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVm
ZmVyKDApCiAgICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKQEAgLTE5NCw3ICsxOTEs
NyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnNFWFQo
MSwgJm1fZmJvKTsKICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VY
VCwgbV9mYm8pOwogICAgIAotICAgIG1fYm91bmRGQk8gPSBtX2ZibzsKKyAgICBtX3N0YXRlLmJv
dW5kRkJPID0gbV9mYm87CiAgICAgaWYgKCFtX2F0dHJzLmFudGlhbGlhcyAmJiAobV9hdHRycy5z
dGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpKQogICAgICAgICA6OmdsR2VuUmVuZGVyYnVmZmVyc0VY
VCgxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogCkBAIC0yMDIsNyArMTk5LDcgQEAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzIGF0dHJzLCBIb3N0V2kKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKICAgICAgICAg
OjpnbEdlbkZyYW1lYnVmZmVyc0VYVCgxLCAmbV9tdWx0aXNhbXBsZUZCTyk7CiAgICAgICAgIDo6
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJP
KTsKLSAgICAgICAgbV9ib3VuZEZCTyA9IG1fbXVsdGlzYW1wbGVGQk87CisgICAgICAgIG1fc3Rh
dGUuYm91bmRGQk8gPSBtX211bHRpc2FtcGxlRkJPOwogICAgICAgICA6OmdsR2VuUmVuZGVyYnVm
ZmVyc0VYVCgxLCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKICAgICAgICAgaWYgKG1fYXR0
cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKQogICAgICAgICAgICAgOjpnbEdlblJlbmRlcmJ1
ZmZlcnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggMzMyN2JkNWU5N2JmYzI0MTlhNzA4YmJk
MzI4Zjg1NTE3MTI4ZmMxYS4uNWMyZmFiYzFjYjkyNDJhMGMyMGJjNzVhN2UwMDIwYzc2YTc2NTY1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC05OCw3ICs5OCw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNp
emUpCiAgICAgICAgIEdMaW50IHNhbXBsZUNvdW50ID0gc3RkOjptaW4oOCwgbWF4U2FtcGxlQ291
bnQpOwogICAgICAgICBpZiAoc2FtcGxlQ291bnQgPiBtYXhTYW1wbGVDb3VudCkKICAgICAgICAg
ICAgIHNhbXBsZUNvdW50ID0gbWF4U2FtcGxlQ291bnQ7Ci0gICAgICAgIGlmIChtX2JvdW5kRkJP
ICE9IG1fbXVsdGlzYW1wbGVGQk8pIHsKKyAgICAgICAgaWYgKG1fc3RhdGUuYm91bmRGQk8gIT0g
bV9tdWx0aXNhbXBsZUZCTykgewogICAgICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAgICAgICAgICAgbXVzdFJl
c3RvcmVGQk8gPSB0cnVlOwogICAgICAgICB9CkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICB9CiAK
ICAgICAvLyByZXNpemUgcmVndWxhciBGQk8KLSAgICBpZiAobV9ib3VuZEZCTyAhPSBtX2Zibykg
eworICAgIGlmIChtX3N0YXRlLmJvdW5kRkJPICE9IG1fZmJvKSB7CiAgICAgICAgIG11c3RSZXN0
b3JlRkJPID0gdHJ1ZTsKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJV
RkZFUl9FWFQsIG1fZmJvKTsKICAgICB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgIGlmICht
X2F0dHJzLmFudGlhbGlhcykgewogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZS
QU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIGlmIChtX2JvdW5kRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pCisgICAgICAgIGlmIChtX3N0YXRlLmJvdW5kRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pCiAgICAgICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwogICAg
IH0KIApAQCAtMjg3LDEzICsyODcsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBp
eGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2kKICAgICAv
LyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFk
aW5nIHBpeGVscy4KICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsRmx1c2goKTsK
LSAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZCTyA9PSBtX211bHRpc2FtcGxl
RkJPKSB7CisgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmRGQk8gPT0g
bV9tdWx0aXNhbXBsZUZCTykgewogICAgICAgICByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNz
YXJ5KEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICA6OmdsQmluZEZyYW1l
YnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgICAg
ICA6OmdsRmx1c2goKTsKICAgICB9CiAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKLSAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYg
bV9ib3VuZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQorICAgIGlmIChtX2F0dHJzLmFudGlhbGlh
cyAmJiBtX3N0YXRlLmJvdW5kRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xC
aW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX211bHRp
c2FtcGxlRkJPKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggYzdkNzMzNTcwNjdmMGMzMmIxNDI4ZTY0ZTM5YWJmYmViZWY4ZjhlYi4u
Mzk2MWE1ZjdlZGFiZTQ0NDFmMTExNWE2ZTI2OWM4MDg0YWZjYTE0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNjksMTAgKzE2OSwxMCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwcmVwYXJlVGV4dHVyZSgpCiAgICAgOjpnbEFjdGl2
ZVRleHR1cmUoR0xfVEVYVFVSRTApOwogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICA6OmdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCAwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9j
dXJyZW50SGVpZ2h0LCAwKTsKLSAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9i
b3VuZFRleHR1cmUwKTsKLSAgICA6OmdsQWN0aXZlVGV4dHVyZShtX2FjdGl2ZVRleHR1cmUpOwot
ICAgIGlmIChtX2JvdW5kRkJPICE9IG1fZmJvKQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVy
RVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9ib3VuZEZCTyk7CisgICAgOjpn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fc3RhdGUuYm91bmRUZXh0dXJlMCk7CisgICAg
OjpnbEFjdGl2ZVRleHR1cmUobV9zdGF0ZS5hY3RpdmVUZXh0dXJlKTsKKyAgICBpZiAobV9zdGF0
ZS5ib3VuZEZCTyAhPSBtX2ZibykKKyAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fc3RhdGUuYm91bmRGQk8pOwogICAgIDo6Z2xG
aW5pc2goKTsKICAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CiB9CkBAIC0xOTEsNyArMTkx
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWdu
ZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2kKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZl
ckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICAgICAgbXVz
dFJlc3RvcmVGQk8gPSB0cnVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX2JvdW5kRkJP
ICE9IG1fZmJvKSB7CisgICAgICAgIGlmIChtX3N0YXRlLmJvdW5kRkJPICE9IG1fZmJvKSB7CiAg
ICAgICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7CiAgICAgICAgICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAg
ICAgICB9CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2kKICAgICAg
ICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCBwYWNrQWxpZ25tZW50KTsKIAog
ICAgIGlmIChtdXN0UmVzdG9yZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fYm91bmRGQk8pOworICAgICAgICA6Omds
QmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9zdGF0
ZS5ib3VuZEZCTyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgICAgICA6OmdsRGlzYWJsZShH
TF9ESVRIRVIpOwogCiAgICAgaWYgKG11c3RSZXN0b3JlRkJPKQotICAgICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9ib3VuZEZCTyk7
CisgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBtX3N0YXRlLmJvdW5kRkJPKTsKIAogICAgIDo6Z2xGbHVzaCgpOwogfQpAQCAtMzAx
LDcgKzMwMSw3IEBAIEludFNpemUgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVybmFsRnJhbWVi
dWZmZXJTaXplKCkgY29uc3QKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUo
R0MzRGVudW0gdGV4dHVyZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBtX2Fj
dGl2ZVRleHR1cmUgPSB0ZXh0dXJlOworICAgIG1fc3RhdGUuYWN0aXZlVGV4dHVyZSA9IHRleHR1
cmU7CiAgICAgOjpnbEFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CiB9CiAKQEAgLTMzOCw5ICszMzgs
OSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcgogI2Vsc2UKICAgICAgICAgZmJvID0gKG1fYXR0
cnMuYW50aWFsaWFzID8gbV9tdWx0aXNhbXBsZUZCTyA6IG1fZmJvKTsKICNlbmRpZgotICAgIGlm
IChmYm8gIT0gbV9ib3VuZEZCTykgeworICAgIGlmIChmYm8gIT0gbV9zdGF0ZS5ib3VuZEZCTykg
ewogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKHRhcmdldCwgZmJvKTsKLSAgICAgICAg
bV9ib3VuZEZCTyA9IGZibzsKKyAgICAgICAgbV9zdGF0ZS5ib3VuZEZCTyA9IGZibzsKICAgICB9
CiB9CiAKQEAgLTM1NCw4ICszNTQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVu
ZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCByZW5kZQogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgaWYgKG1f
YWN0aXZlVGV4dHVyZSA9PSBHTF9URVhUVVJFMCAmJiB0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkK
LSAgICAgICAgbV9ib3VuZFRleHR1cmUwID0gdGV4dHVyZTsKKyAgICBpZiAobV9zdGF0ZS5hY3Rp
dmVUZXh0dXJlID09IEdMX1RFWFRVUkUwICYmIHRhcmdldCA9PSBHTF9URVhUVVJFXzJEKQorICAg
ICAgICBtX3N0YXRlLmJvdW5kVGV4dHVyZTAgPSB0ZXh0dXJlOwogICAgIDo6Z2xCaW5kVGV4dHVy
ZSh0YXJnZXQsIHRleHR1cmUpOwogfQogCkBAIC00ODcsMTQgKzQ4NywxNCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAjaWYgIVBMQVRGT1JN
KEJMQUNLQkVSUlkpCi0gICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0g
bV9tdWx0aXNhbXBsZUZCTykgeworICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRl
LmJvdW5kRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2Ft
cGxpbmdJZk5lY2Vzc2FyeShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAg
OjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
ZmJvKTsKICAgICB9CiAjZW5kaWYKICAgICA6OmdsQ29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CiAjaWYgIVBM
QVRGT1JNKEJMQUNLQkVSUlkpCi0gICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRG
Qk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKKyAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9z
dGF0ZS5ib3VuZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmluZEZyYW1l
YnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZC
Tyk7CiAjZW5kaWYKIH0KQEAgLTUwMywxNCArNTAzLDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGluCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAjaWYgIVBMQVRGT1JNKEJMQUNLQkVS
UlkpCi0gICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0aXNh
bXBsZUZCTykgeworICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5l
Y2Vzc2FyeShJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgOjpnbEJpbmRG
cmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKICAg
ICB9CiAjZW5kaWYKICAgICA6OmdsQ29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAjaWYgIVBMQVRGT1JNKEJMQUNL
QkVSUlkpCi0gICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0
aXNhbXBsZUZCTykKKyAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZEZC
TyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CiAjZW5kaWYK
IH0KQEAgLTEzNzcsNyArMTM3Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1
ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRl
bGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgaWYgKGZyYW1lYnVmZmVyID09IG1fYm91bmRGQk8pIHsK
KyAgICBpZiAoZnJhbWVidWZmZXIgPT0gbV9zdGF0ZS5ib3VuZEZCTykgewogICAgICAgICAvLyBN
YWtlIHN1cmUgdGhlIGZyYW1lYnVmZmVyIGlzIG5vdCBnb2luZyB0byBiZSB1c2VkIGZvciBkcmF3
aW5nCiAgICAgICAgIC8vIG9wZXJhdGlvbnMgYWZ0ZXIgaXQgZ2V0cyBkZWxldGVkLgogICAgICAg
ICBiaW5kRnJhbWVidWZmZXIoRlJBTUVCVUZGRVIsIDApOwpAQCAtMTQwNiw4ICsxNDA2LDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hh
ZGVyKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgaWYgKG1fYm91
bmRUZXh0dXJlMCA9PSB0ZXh0dXJlKQotICAgICAgICBtX2JvdW5kVGV4dHVyZTAgPSAwOworICAg
IGlmIChtX3N0YXRlLmJvdW5kVGV4dHVyZTAgPT0gdGV4dHVyZSkKKyAgICAgICAgbV9zdGF0ZS5i
b3VuZFRleHR1cmUwID0gMDsKICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCmluZGV4IDk5MTU3MWQ0
MmFiYzMwYzk0NzJiNWI5ZWNjYzA4OTJjZWE3NTgzZmQuLmYzYmU5MjM3YjBlMDBhZDE2YzdlMjVh
OTdmMmVkMDYyOWZmOTQyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xF
Uy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVs
cyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2kKICAgICAvLyBh
bGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFkaW5n
IHBpeGVscy4KICAgICA6OmdsRmx1c2goKTsKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQotICAg
IGlmIChtX2lzSW1hZ2luYXRpb25IYXJkd2FyZSAmJiBtX2ZibyA9PSBtX2JvdW5kRkJPKSB7Cisg
ICAgaWYgKG1faXNJbWFnaW5hdGlvbkhhcmR3YXJlICYmIG1fZmJvID09IG1fc3RhdGUuYm91bmRG
Qk8pIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgd29ya2Fyb3VuZCBzaG91bGQgYWx3YXlzIGJl
IHVzZWQgdW50aWwgdGhlCiAgICAgICAgIC8vIGRyaXZlciBhbGlnbm1lbnQgYnVnIGlzIGZpeGVk
LCBldmVuIHdoZW4gd2UgYXJlbid0CiAgICAgICAgIC8vIGRyYXdpbmcgdG8gdGhlIGNhbnZhcy4K
QEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2kKICAgICB9IGVsc2UKICAg
ICAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBk
YXRhKTsKICNlbHNlCi0gICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0g
bV9tdWx0aXNhbXBsZUZCTykgeworICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX3N0YXRl
LmJvdW5kRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKICAgICAgICAgIHJlc29sdmVNdWx0aXNh
bXBsaW5nSWZOZWNlc3NhcnkoSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAg
IDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICAgICAgOjpn
bEZsdXNoKCk7CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQ
aXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpCiAKICAg
ICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEp
OwogCi0gICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0aXNh
bXBsZUZCTykKKyAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZEZCTyA9
PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKICNlbmRpZgogfQpAQCAtNzksNyArNzksNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVs
c0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQogewogI2lmIFBMQVRGT1JNKEJMQUNLQkVS
UlkpCi0gICAgaWYgKG1faXNJbWFnaW5hdGlvbkhhcmR3YXJlICYmIG1fZmJvID09IG1fYm91bmRG
Qk8pIHsKKyAgICBpZiAobV9pc0ltYWdpbmF0aW9uSGFyZHdhcmUgJiYgbV9mYm8gPT0gbV9zdGF0
ZS5ib3VuZEZCTykgewogICAgICAgICAvLyBGSVhNRTogVGhpcyB3b3JrYXJvdW5kIHNob3VsZCBh
bHdheXMgYmUgdXNlZCB1bnRpbCB0aGUKICAgICAgICAgLy8gZHJpdmVyIGFsaWdubWVudCBidWcg
aXMgZml4ZWQsIGV2ZW4gd2hlbiB3ZSBhcmVuJ3QKICAgICAgICAgLy8gZHJhd2luZyB0byB0aGUg
Y2FudmFzLgpAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hh
cGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBSZXNpemUgcmVndWxhciBGQk8u
CiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwotICAgIGlmIChtX2JvdW5kRkJPICE9
IG1fZmJvKSB7CisgICAgaWYgKG1fc3RhdGUuYm91bmRGQk8gIT0gbV9mYm8pIHsKICAgICAgICAg
bXVzdFJlc3RvcmVGQk8gPSB0cnVlOwogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCA2NmJk
ZWFlZDE4NWE1NGVlMzkzNTMwYWQ5YTA5ZmE2YzRhMzBmN2VhLi40NTYwY2NjNmU5ODFmODIyOTgw
NmI4YWQ2OGNiMTYxYzg2OThjYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMTU1LDE0
ICsxNTUsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZU9mZnNjcmVl
bkJ1ZmZlcnMoKQogICAgIGlmIChtX2NvbnRleHQtPm1fYXR0cnMuYW50aWFsaWFzKSB7CiAgICAg
ICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pOwog
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIG1fY29udGV4dC0+bV9ib3Vu
ZEZCTyA9IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTzsKKyAgICAgICAgbV9jb250ZXh0LT5t
X3N0YXRlLmJvdW5kRkJPID0gbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPOwogICAgICAgICBn
bEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVy
KTsKICAgICAgICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5zdGVuY2lsIHx8IG1fY29udGV4dC0+
bV9hdHRycy5kZXB0aCkKICAgICAgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbV9jb250
ZXh0LT5tX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBCaW5kIGNhbnZhcyBGQk8uCiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7Ci0gICAgICAgIG1f
Y29udGV4dC0+bV9ib3VuZEZCTyA9IG1fY29udGV4dC0+bV9mYm87CisgICAgICAgIG1fY29udGV4
dC0+bV9zdGF0ZS5ib3VuZEZCTyA9IG1fY29udGV4dC0+bV9mYm87CiAjaWYgVVNFKE9QRU5HTF9F
U18yKQogICAgICAgICBpZiAobV9jb250ZXh0LT5tX2F0dHJzLmRlcHRoKQogICAgICAgICAgICAg
Z2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX2NvbnRleHQtPm1fZGVwdGhCdWZmZXIpOwpAQCAtMjUy
LDcgKzI1Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAgbWFrZUN1cnJlbnRJZk5l
ZWRlZCgpOwogICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CiAgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyog
eSAqLyAwLCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKLSAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZC
Tyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2NvbnRleHQtPm1fc3RhdGUuYm91bmRGQk8pOwogCiAgICAgLy8gT3BlbkdMIGdpdmVzIHVz
IEFCR1Igb24gMzIgYml0cywgYW5kIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgYm90dG9tIGxlZnQK
ICAgICAvLyBXZSBuZWVkIFJHQjMyIG9yIEFSR0IzMl9QTSwgd2l0aCB0aGUgb3JpZ2luIGF0IHRo
ZSB0b3AgbGVmdC4KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6YmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXIoKSBjb25zdAogICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2NvbnRleHQtPm1fZmJvKTsKICAgICBn
bEJsaXRGcmFtZWJ1ZmZlcigwLCAwLCBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRl
eHQtPm1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9j
b250ZXh0LT5tX2N1cnJlbnRIZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7
CiAjZW5kaWYKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fc3RhdGUuYm91bmRGQk8p
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxpdE11bHRpc2FtcGxlRnJh
bWVidWZmZXJBbmRSZXN0b3JlQ29udGV4dCgpIGNvbnN0CkBAIC0zODQsOSArMzg0LDYgQEAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIGF0dHJzLCBIb3N0V2kKICAgICAsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAg
LCBtX2xheWVyQ29tcG9zaXRlZChmYWxzZSkKICAgICAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCgw
KQotICAgICwgbV9ib3VuZEZCTygwKQotICAgICwgbV9hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUw
KQotICAgICwgbV9ib3VuZFRleHR1cmUwKDApCiAgICAgLCBtX211bHRpc2FtcGxlRkJPKDApCiAg
ICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX211bHRpc2Ft
cGxlQ29sb3JCdWZmZXIoMCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>