<?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>80175</bug_id>
          
          <creation_ts>2012-03-02 11:33:14 -0800</creation_ts>
          <short_desc>Revert borders to integers for subpixel layout</short_desc>
          <delta_ts>2012-03-02 17:48:15 -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>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>569793</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-02 11:33:14 -0800</bug_when>
    <thetext>Change border representation and calculation back to integers to ensure that borders given the same width are rendered with the same actual width. This also avoids unnecessary type conversions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569796</commentid>
    <comment_count>1</comment_count>
      <attachid>129931</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-02 11:37:18 -0800</bug_when>
    <thetext>Created attachment 129931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569929</commentid>
    <comment_count>2</comment_count>
      <attachid>129931</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-02 14:09:25 -0800</bug_when>
    <thetext>Comment on attachment 129931
Patch

hmm... So even table borders are not sub-pixel precise?  I know individual cell-layout for tables is done with integers... but I&apos;m surprised that borders around said table would be?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569935</commentid>
    <comment_count>3</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-02 14:14:45 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 129931 [details])
&gt; hmm... So even table borders are not sub-pixel precise?  I know individual cell-layout for tables is done with integers... but I&apos;m surprised that borders around said table would be?

Borders are aligned to device pixels to ensure that a box with border a style such as &quot;0.3ex solid black&quot; has all four borders rendered with the same width regardless of the offset. If we did this with subpixel precision the bottom/right border might be pained width a different width.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569950</commentid>
    <comment_count>4</comment_count>
      <attachid>129931</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 14:31:46 -0800</bug_when>
    <thetext>Comment on attachment 129931
Patch

Attachment 129931 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11799129

New failing tests:
editing/selection/select-line-break-with-opposite-directionality.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570062</commentid>
    <comment_count>5</comment_count>
      <attachid>129931</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 17:48:04 -0800</bug_when>
    <thetext>Comment on attachment 129931
Patch

Clearing flags on attachment: 129931

Committed r109642: &lt;http://trac.webkit.org/changeset/109642&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570063</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 17:48:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129931</attachid>
            <date>2012-03-02 11:37:18 -0800</date>
            <delta_ts>2012-03-02 17:48:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80175-20120302113717.patch</filename>
            <type>text/plain</type>
            <size>29381</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTU4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEyLTAzLTAyICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZlcnQgYm9yZGVycyB0byBp
bnRlZ2VycyBmb3Igc3VicGl4ZWwgbGF5b3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MDE3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENoYW5nZSBib3JkZXIgcmVwcmVzZW50YXRpb24gYW5kIGNhbGN1
bGF0aW9uIGJhY2sgdG8gaW50ZWdlcnMgdG8gZW5zdXJlCisgICAgICAgIHRoYXQgYm9yZGVycyBn
aXZlbiB0aGUgc2FtZSB3aWR0aCBhcmUgcmVuZGVyZWQgd2l0aCB0aGUgc2FtZSBhY3R1YWwgd2lk
dGguCisKKyAgICAgICAgVGhpcyB3aWxsIGFsc28gYXZvaWQgdW5uZWNlc3NhcnkgdHlwZSBjb252
ZXJzaW9ucyB3aGVuIHdlIHN3aXRjaCBvdmVyCisgICAgICAgIHRvIHN1YnBpeGVsIHByZWNpc2lv
bi4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvTGF5b3V0
VHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OnBpeGVsU25hcHBlZEludFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym9yZGVyVG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3JkZXJCb3R0b20pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmJvcmRlckxlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmJvcmRlclJpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3JkZXJCZWZvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmJvcmRlckFmdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3JkZXJTdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym9yZGVyRW5kKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbnZl
cnRTdHlsZUxvZ2ljYWxXaWR0aFRvQ29tcHV0ZWRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZTo6Y2FsY0JvcmRlclN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlOjpjYWxjQm9yZGVyRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpib3Jk
ZXJCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmJvcmRlckFmdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpvdXRlckJvcmRlckJlZm9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJBZnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJFbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmJvcmRlclN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpib3JkZXJFbmQpOgorICAgICAgICAoUmVu
ZGVyVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmJvcmRlckxlZnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmJvcmRlclJpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlOjpib3JkZXJUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGU6OmJvcmRlckJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6b3V0
ZXJCb3JkZXJMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpvdXRlckJvcmRl
clJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpvdXRlckJvcmRlclRvcCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJCb3R0b20pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckxlZnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGVDZWxsOjpib3JkZXJSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZUNlbGw6OmJvcmRlclRvcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNl
bGw6OmJvcmRlckJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmJv
cmRlclN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyRW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyQmVmb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyQWZ0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZSaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmQm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6Ym9yZGVySGFsZlN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlQ2VsbDo6Ym9yZGVySGFsZkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNl
bGw6OmJvcmRlckhhbGZCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxs
Ojpib3JkZXJIYWxmQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpw
YWludENvbGxhcHNlZEJvcmRlcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuaDoKKyAgICAgICAgKFJlbmRlclRhYmxlQ2VsbCk6CisKIDIwMTItMDMtMDIgIEp1bGllbiBD
aGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSB0aGUgJ292
ZXJmbG93JyBldmVudCBkaXNwYXRjaGluZyBsb2dpYyBvdXQgb2YgUmVuZGVyTGF5ZXIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCShyZXZpc2lvbiAxMDk0NTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0VHlwZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTgsNiArNTgsMTEgQEAgaW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50UmVjdChjb25z
dAogICAgIHJldHVybiByZWN0OwogfQogCitpbmxpbmUgSW50UmVjdCBwaXhlbFNuYXBwZWRJbnRS
ZWN0KExheW91dFVuaXQgbGVmdCwgTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgd2lkdGgsIExh
eW91dFVuaXQgaGVpZ2h0KQoreworICAgIHJldHVybiBJbnRSZWN0KGxlZnQsIHRvcCwgd2lkdGgs
IGhlaWdodCk7Cit9CisKIGlubGluZSBJbnRSZWN0IHBpeGVsU25hcHBlZEludFJlY3RGcm9tRWRn
ZXMoTGF5b3V0VW5pdCBsZWZ0LCBMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCByaWdodCwgTGF5
b3V0VW5pdCBib3R0b20pCiB7CiAgICAgcmV0dXJuIEludFJlY3QobGVmdCwgdG9wLCByaWdodCAt
IGxlZnQsIGJvdHRvbSAtIHRvcCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAkocmV2aXNpb24gMTA5NDU2KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDE0ICs4NywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdT
dGFydChib29sIGluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nID0gdHJ1ZSkgY29uc3Q7CiAgICAgdmly
dHVhbCBMYXlvdXRVbml0IHBhZGRpbmdFbmQoYm9vbCBpbmNsdWRlSW50cmluc2ljUGFkZGluZyA9
IHRydWUpIGNvbnN0OwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IGJvcmRlclRvcCgpIGNvbnN0
IHsgcmV0dXJuIHN0eWxlKCktPmJvcmRlclRvcFdpZHRoKCk7IH0KLSAgICB2aXJ0dWFsIExheW91
dFVuaXQgYm9yZGVyQm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyQm90dG9t
V2lkdGgoKTsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBib3JkZXJMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gc3R5bGUoKS0+Ym9yZGVyTGVmdFdpZHRoKCk7IH0KLSAgICB2aXJ0dWFsIExheW91dFVu
aXQgYm9yZGVyUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5ib3JkZXJSaWdodFdpZHRo
KCk7IH0KLSAgICB2aXJ0dWFsIExheW91dFVuaXQgYm9yZGVyQmVmb3JlKCkgY29uc3QgeyByZXR1
cm4gc3R5bGUoKS0+Ym9yZGVyQmVmb3JlV2lkdGgoKTsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBib3JkZXJBZnRlcigpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmJvcmRlckFmdGVyV2lkdGgo
KTsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBib3JkZXJTdGFydCgpIGNvbnN0IHsgcmV0dXJu
IHN0eWxlKCktPmJvcmRlclN0YXJ0V2lkdGgoKTsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBi
b3JkZXJFbmQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5ib3JkZXJFbmRXaWR0aCgpOyB9Cisg
ICAgdmlydHVhbCBpbnQgYm9yZGVyVG9wKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+Ym9yZGVy
VG9wV2lkdGgoKTsgfQorICAgIHZpcnR1YWwgaW50IGJvcmRlckJvdHRvbSgpIGNvbnN0IHsgcmV0
dXJuIHN0eWxlKCktPmJvcmRlckJvdHRvbVdpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIGludCBib3Jk
ZXJMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyTGVmdFdpZHRoKCk7IH0KKyAg
ICB2aXJ0dWFsIGludCBib3JkZXJSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmJvcmRl
clJpZ2h0V2lkdGgoKTsgfQorICAgIHZpcnR1YWwgaW50IGJvcmRlckJlZm9yZSgpIGNvbnN0IHsg
cmV0dXJuIHN0eWxlKCktPmJvcmRlckJlZm9yZVdpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIGludCBi
b3JkZXJBZnRlcigpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmJvcmRlckFmdGVyV2lkdGgoKTsg
fQorICAgIHZpcnR1YWwgaW50IGJvcmRlclN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+
Ym9yZGVyU3RhcnRXaWR0aCgpOyB9CisgICAgdmlydHVhbCBpbnQgYm9yZGVyRW5kKCkgY29uc3Qg
eyByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyRW5kV2lkdGgoKTsgfQogCiAgICAgTGF5b3V0VW5pdCBi
b3JkZXJBbmRQYWRkaW5nSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyVG9wKCkgKyBib3Jk
ZXJCb3R0b20oKSArIHBhZGRpbmdUb3AoKSArIHBhZGRpbmdCb3R0b20oKTsgfQogICAgIExheW91
dFVuaXQgYm9yZGVyQW5kUGFkZGluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyTGVmdCgp
ICsgYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdMZWZ0KCkgKyBwYWRkaW5nUmlnaHQoKTsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCShyZXZpc2lvbiAxMDk0
NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzAsMTEgKzI3MCwxMSBAQCB2b2lkIFJlbmRlclRhYmxlOjpjb21wdXRlTG9n
aWNhbFdpZHRoKCkKIExheW91dFVuaXQgUmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxX
aWR0aFRvQ29tcHV0ZWRXaWR0aChjb25zdCBMZW5ndGgmIHN0eWxlTG9naWNhbFdpZHRoLCBMYXlv
dXRVbml0IGF2YWlsYWJsZVdpZHRoKQogewogICAgIC8vIEhUTUwgdGFibGVzJyB3aWR0aCBzdHls
ZXMgYWxyZWFkeSBpbmNsdWRlIGJvcmRlcnMgYW5kIHBhZGRpbmdzLCBidXQgQ1NTIHRhYmxlcycg
d2lkdGggc3R5bGVzIGRvIG5vdC4KLSAgICBMYXlvdXRVbml0IGJvcmRlcnMgPSAwOworICAgIGlu
dCBib3JkZXJzID0gMDsKICAgICBib29sIGlzQ1NTVGFibGUgPSAhbm9kZSgpIHx8ICFub2RlKCkt
Pmhhc1RhZ05hbWUodGFibGVUYWcpOwogICAgIGlmIChpc0NTU1RhYmxlICYmIHN0eWxlTG9naWNh
bFdpZHRoLmlzRml4ZWQoKSAmJiBzdHlsZUxvZ2ljYWxXaWR0aC5pc1Bvc2l0aXZlKCkpIHsKICAg
ICAgICAgcmVjYWxjQm9yZGVyc0luUm93RGlyZWN0aW9uKCk7Ci0gICAgICAgIGJvcmRlcnMgPSBi
b3JkZXJTdGFydCgpICsgYm9yZGVyRW5kKCkgKyAoY29sbGFwc2VCb3JkZXJzKCkgPyB6ZXJvTGF5
b3V0VW5pdCA6IHBhZGRpbmdTdGFydCgpICsgcGFkZGluZ0VuZCgpKTsKKyAgICAgICAgYm9yZGVy
cyA9IGJvcmRlclN0YXJ0KCkgKyBib3JkZXJFbmQoKSArIChjb2xsYXBzZUJvcmRlcnMoKSA/IDAg
OiBwYWRkaW5nU3RhcnQoKSArIHBhZGRpbmdFbmQoKSk7CiAgICAgfQogICAgIHJldHVybiBzdHls
ZUxvZ2ljYWxXaWR0aC5jYWxjTWluVmFsdWUoYXZhaWxhYmxlV2lkdGgpICsgYm9yZGVyczsKIH0K
QEAgLTg0MCwxNCArODQwLDE0IEBAIHZvaWQgUmVuZGVyVGFibGU6OnJlY2FsY1NlY3Rpb25zKCkg
Y29uc3QKICAgICBtX25lZWRzU2VjdGlvblJlY2FsYyA9IGZhbHNlOwogfQogCi1MYXlvdXRVbml0
IFJlbmRlclRhYmxlOjpjYWxjQm9yZGVyU3RhcnQoKSBjb25zdAoraW50IFJlbmRlclRhYmxlOjpj
YWxjQm9yZGVyU3RhcnQoKSBjb25zdAogewogICAgIGlmIChjb2xsYXBzZUJvcmRlcnMoKSkgewog
ICAgICAgICAvLyBEZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBjZWxsIG9mIHRoZSBmaXJzdCByb3cu
IFNlZSB0aGUgQ1NTIDIuMSBzcGVjLCBzZWN0aW9uIDE3LjYuMi4KICAgICAgICAgaWYgKCFudW1F
ZmZDb2xzKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBMYXlvdXRVbml0IGJv
cmRlcldpZHRoID0gMDsKKyAgICAgICAgdW5zaWduZWQgYm9yZGVyV2lkdGggPSAwOwogCiAgICAg
ICAgIGNvbnN0IEJvcmRlclZhbHVlJiB0YiA9IHN0eWxlKCktPmJvcmRlclN0YXJ0KCk7CiAgICAg
ICAgIGlmICh0Yi5zdHlsZSgpID09IEJISURERU4pCkBAIC04NjAsNyArODYwLDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJUYWJsZTo6Y2FsY0JvcmRlclN0YXJ0KAogICAgICAgICAgICAgaWYgKGdiLnN0
eWxlKCkgPT0gQkhJRERFTikKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAg
IGlmIChnYi5zdHlsZSgpID4gQkhJRERFTikKLSAgICAgICAgICAgICAgICBib3JkZXJXaWR0aCA9
IG1heDxMYXlvdXRVbml0Pihib3JkZXJXaWR0aCwgZ2Iud2lkdGgoKSk7CisgICAgICAgICAgICAg
ICAgYm9yZGVyV2lkdGggPSBtYXgoYm9yZGVyV2lkdGgsIGdiLndpZHRoKCkpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAoY29uc3QgUmVuZGVyVGFibGVTZWN0aW9uKiB0b3BOb25F
bXB0eVNlY3Rpb24gPSB0aGlzLT50b3BOb25FbXB0eVNlY3Rpb24oKSkgewpAQCAtODY5LDcgKzg2
OSw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6OmNhbGNCb3JkZXJTdGFydCgKICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICAgICAgaWYgKHNiLnN0eWxlKCkgPiBCSElEREVO
KQotICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gbWF4PExheW91dFVuaXQ+KGJvcmRlcldp
ZHRoLCBzYi53aWR0aCgpKTsKKyAgICAgICAgICAgICAgICBib3JkZXJXaWR0aCA9IG1heChib3Jk
ZXJXaWR0aCwgc2Iud2lkdGgoKSk7CiAKICAgICAgICAgICAgIGNvbnN0IFJlbmRlclRhYmxlU2Vj
dGlvbjo6Q2VsbFN0cnVjdCYgY3MgPSB0b3BOb25FbXB0eVNlY3Rpb24tPmNlbGxBdCgwLCAwKTsK
ICAgICAgICAgICAgIApAQCAtODgzLDkgKzg4Myw5IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6
OmNhbGNCb3JkZXJTdGFydCgKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAg
ICAgICAgICAgICBpZiAoY2Iuc3R5bGUoKSA+IEJISURERU4pCi0gICAgICAgICAgICAgICAgICAg
IGJvcmRlcldpZHRoID0gbWF4PExheW91dFVuaXQ+KGJvcmRlcldpZHRoLCBjYi53aWR0aCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBtYXgoYm9yZGVyV2lkdGgsIGNiLndp
ZHRoKCkpOwogICAgICAgICAgICAgICAgIGlmIChyYi5zdHlsZSgpID4gQkhJRERFTikKLSAgICAg
ICAgICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oYm9yZGVyV2lkdGgs
IHJiLndpZHRoKCkpOworICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aCA9IG1heChib3Jk
ZXJXaWR0aCwgcmIud2lkdGgoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIChib3JkZXJXaWR0aCArIChzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
PyAwIDogMSkpIC8gMjsKQEAgLTg5MywxNCArODkzLDE0IEBAIExheW91dFVuaXQgUmVuZGVyVGFi
bGU6OmNhbGNCb3JkZXJTdGFydCgKICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmJvcmRlclN0YXJ0
KCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyVGFibGU6OmNhbGNCb3JkZXJFbmQoKSBjb25zdAor
aW50IFJlbmRlclRhYmxlOjpjYWxjQm9yZGVyRW5kKCkgY29uc3QKIHsKICAgICBpZiAoY29sbGFw
c2VCb3JkZXJzKCkpIHsKICAgICAgICAgLy8gRGV0ZXJtaW5lZCBieSB0aGUgbGFzdCBjZWxsIG9m
IHRoZSBmaXJzdCByb3cuIFNlZSB0aGUgQ1NTIDIuMSBzcGVjLCBzZWN0aW9uIDE3LjYuMi4KICAg
ICAgICAgaWYgKCFudW1FZmZDb2xzKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAg
ICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gMDsKKyAgICAgICAgdW5zaWduZWQgYm9yZGVyV2lk
dGggPSAwOwogCiAgICAgICAgIGNvbnN0IEJvcmRlclZhbHVlJiB0YiA9IHN0eWxlKCktPmJvcmRl
ckVuZCgpOwogICAgICAgICBpZiAodGIuc3R5bGUoKSA9PSBCSElEREVOKQpAQCAtOTE0LDcgKzkx
NCw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6OmNhbGNCb3JkZXJFbmQoKSAKICAgICAgICAg
ICAgIGlmIChnYi5zdHlsZSgpID09IEJISURERU4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgICAgICBpZiAoZ2Iuc3R5bGUoKSA+IEJISURERU4pCi0gICAgICAgICAgICAgICAg
Ym9yZGVyV2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oYm9yZGVyV2lkdGgsIGdiLndpZHRoKCkpOwor
ICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gbWF4KGJvcmRlcldpZHRoLCBnYi53aWR0aCgp
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb25zdCBSZW5kZXJUYWJsZVNlY3Rpb24qIHRv
cE5vbkVtcHR5U2VjdGlvbiA9IHRoaXMtPnRvcE5vbkVtcHR5U2VjdGlvbigpKSB7CkBAIC05MjMs
NyArOTIzLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y2FsY0JvcmRlckVuZCgpIAogICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgICAgICBpZiAoc2Iuc3R5bGUoKSA+IEJI
SURERU4pCi0gICAgICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oYm9y
ZGVyV2lkdGgsIHNiLndpZHRoKCkpOworICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gbWF4
KGJvcmRlcldpZHRoLCBzYi53aWR0aCgpKTsKIAogICAgICAgICAgICAgY29uc3QgUmVuZGVyVGFi
bGVTZWN0aW9uOjpDZWxsU3RydWN0JiBjcyA9IHRvcE5vbkVtcHR5U2VjdGlvbi0+Y2VsbEF0KDAs
IGVuZENvbHVtbik7CiAgICAgICAgICAgICAKQEAgLTkzNyw5ICs5MzcsOSBAQCBMYXlvdXRVbml0
IFJlbmRlclRhYmxlOjpjYWxjQm9yZGVyRW5kKCkgCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOwogCiAgICAgICAgICAgICAgICAgaWYgKGNiLnN0eWxlKCkgPiBCSElEREVOKQotICAgICAg
ICAgICAgICAgICAgICBib3JkZXJXaWR0aCA9IG1heDxMYXlvdXRVbml0Pihib3JkZXJXaWR0aCwg
Y2Iud2lkdGgoKSk7CisgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gbWF4KGJvcmRl
cldpZHRoLCBjYi53aWR0aCgpKTsKICAgICAgICAgICAgICAgICBpZiAocmIuc3R5bGUoKSA+IEJI
SURERU4pCi0gICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gbWF4PExheW91dFVuaXQ+
KGJvcmRlcldpZHRoLCByYi53aWR0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lk
dGggPSBtYXgoYm9yZGVyV2lkdGgsIHJiLndpZHRoKCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiAoYm9yZGVyV2lkdGggKyAoc3R5bGUoKS0+aXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpID8gMSA6IDApKSAvIDI7CkBAIC05NTMsNyArOTUzLDcgQEAgdm9pZCBSZW5k
ZXJUYWJsZTo6cmVjYWxjQm9yZGVyc0luUm93RGlyZQogICAgIG1fYm9yZGVyRW5kID0gY2FsY0Jv
cmRlckVuZCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlclRhYmxlOjpib3JkZXJCZWZvcmUoKSBj
b25zdAoraW50IFJlbmRlclRhYmxlOjpib3JkZXJCZWZvcmUoKSBjb25zdAogewogICAgIGlmIChj
b2xsYXBzZUJvcmRlcnMoKSkgewogICAgICAgICByZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7CkBA
IC05NjIsNyArOTYyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Ym9yZGVyQmVmb3JlKCkg
YwogICAgIHJldHVybiBSZW5kZXJCbG9jazo6Ym9yZGVyQmVmb3JlKCk7CiB9CiAKLUxheW91dFVu
aXQgUmVuZGVyVGFibGU6OmJvcmRlckFmdGVyKCkgY29uc3QKK2ludCBSZW5kZXJUYWJsZTo6Ym9y
ZGVyQWZ0ZXIoKSBjb25zdAogewogICAgIGlmIChjb2xsYXBzZUJvcmRlcnMoKSkgewogICAgICAg
ICByZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7CkBAIC05NzEsMTEgKzk3MSwxMSBAQCBMYXlvdXRV
bml0IFJlbmRlclRhYmxlOjpib3JkZXJBZnRlcigpIGNvCiAgICAgcmV0dXJuIFJlbmRlckJsb2Nr
Ojpib3JkZXJBZnRlcigpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlclRhYmxlOjpvdXRlckJvcmRl
ckJlZm9yZSgpIGNvbnN0CitpbnQgUmVuZGVyVGFibGU6Om91dGVyQm9yZGVyQmVmb3JlKCkgY29u
c3QKIHsKICAgICBpZiAoIWNvbGxhcHNlQm9yZGVycygpKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gMDsKKyAgICBpbnQgYm9yZGVyV2lkdGggPSAwOwog
ICAgIGlmIChSZW5kZXJUYWJsZVNlY3Rpb24qIHRvcFNlY3Rpb24gPSB0aGlzLT50b3BTZWN0aW9u
KCkpIHsKICAgICAgICAgYm9yZGVyV2lkdGggPSB0b3BTZWN0aW9uLT5vdXRlckJvcmRlckJlZm9y
ZSgpOwogICAgICAgICBpZiAoYm9yZGVyV2lkdGggPCAwKQpAQCAtOTg1LDE1ICs5ODUsMTUgQEAg
TGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJCZWZvcgogICAgIGlmICh0Yi5zdHls
ZSgpID09IEJISURERU4pCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICh0Yi5zdHlsZSgpID4g
QkhJRERFTikKLSAgICAgICAgYm9yZGVyV2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oYm9yZGVyV2lk
dGgsIHRiLndpZHRoKCkgLyAyKTsKKyAgICAgICAgYm9yZGVyV2lkdGggPSBtYXg8aW50Pihib3Jk
ZXJXaWR0aCwgdGIud2lkdGgoKSAvIDIpOwogICAgIHJldHVybiBib3JkZXJXaWR0aDsKIH0KIAot
TGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJBZnRlcigpIGNvbnN0CitpbnQgUmVu
ZGVyVGFibGU6Om91dGVyQm9yZGVyQWZ0ZXIoKSBjb25zdAogewogICAgIGlmICghY29sbGFwc2VC
b3JkZXJzKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGgg
PSAwOworICAgIGludCBib3JkZXJXaWR0aCA9IDA7CiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBi
b3R0b21TZWN0aW9uOwogICAgIGlmIChtX2Zvb3QpCiAgICAgICAgIGJvdHRvbVNlY3Rpb24gPSBt
X2Zvb3Q7CkBAIC0xMDExLDE2ICsxMDExLDE2IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6Om91
dGVyQm9yZGVyQWZ0ZXIKICAgICBpZiAodGIuc3R5bGUoKSA9PSBCSElEREVOKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICBpZiAodGIuc3R5bGUoKSA+IEJISURERU4pCi0gICAgICAgIGJvcmRlcldp
ZHRoID0gbWF4PExheW91dFVuaXQ+KGJvcmRlcldpZHRoLCAodGIud2lkdGgoKSArIDEpIC8gMik7
CisgICAgICAgIGJvcmRlcldpZHRoID0gbWF4PGludD4oYm9yZGVyV2lkdGgsICh0Yi53aWR0aCgp
ICsgMSkgLyAyKTsKICAgICByZXR1cm4gYm9yZGVyV2lkdGg7CiB9CiAKLUxheW91dFVuaXQgUmVu
ZGVyVGFibGU6Om91dGVyQm9yZGVyU3RhcnQoKSBjb25zdAoraW50IFJlbmRlclRhYmxlOjpvdXRl
ckJvcmRlclN0YXJ0KCkgY29uc3QKIHsKICAgICBpZiAoIWNvbGxhcHNlQm9yZGVycygpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSAwOworICAgIGlu
dCBib3JkZXJXaWR0aCA9IDA7CiAKICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgdGIgPSBzdHlsZSgp
LT5ib3JkZXJTdGFydCgpOwogICAgIGlmICh0Yi5zdHlsZSgpID09IEJISURERU4pCkBAIC0xMDMy
LDcgKzEwMzIsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpvdXRlckJvcmRlclN0YXJ0CiAg
ICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoIWNoaWxkLT5pc1RhYmxlU2Vj
dGlvbigpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIExheW91dFVuaXQgc3cgPSB0
b1JlbmRlclRhYmxlU2VjdGlvbihjaGlsZCktPm91dGVyQm9yZGVyU3RhcnQoKTsKKyAgICAgICAg
aW50IHN3ID0gdG9SZW5kZXJUYWJsZVNlY3Rpb24oY2hpbGQpLT5vdXRlckJvcmRlclN0YXJ0KCk7
CiAgICAgICAgIGlmIChzdyA8IDApCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYWxs
SGlkZGVuID0gZmFsc2U7CkBAIC0xMDQ0LDEyICsxMDQ0LDEyIEBAIExheW91dFVuaXQgUmVuZGVy
VGFibGU6Om91dGVyQm9yZGVyU3RhcnQKICAgICByZXR1cm4gYm9yZGVyV2lkdGg7CiB9CiAKLUxh
eW91dFVuaXQgUmVuZGVyVGFibGU6Om91dGVyQm9yZGVyRW5kKCkgY29uc3QKK2ludCBSZW5kZXJU
YWJsZTo6b3V0ZXJCb3JkZXJFbmQoKSBjb25zdAogewogICAgIGlmICghY29sbGFwc2VCb3JkZXJz
KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IDA7
CisgICAgaW50IGJvcmRlcldpZHRoID0gMDsKIAogICAgIGNvbnN0IEJvcmRlclZhbHVlJiB0YiA9
IHN0eWxlKCktPmJvcmRlckVuZCgpOwogICAgIGlmICh0Yi5zdHlsZSgpID09IEJISURERU4pCkBA
IC0xMDYxLDcgKzEwNjEsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpvdXRlckJvcmRlckVu
ZCgpCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoIWNoaWxkLT5pc1Rh
YmxlU2VjdGlvbigpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIExheW91dFVuaXQg
c3cgPSB0b1JlbmRlclRhYmxlU2VjdGlvbihjaGlsZCktPm91dGVyQm9yZGVyRW5kKCk7CisgICAg
ICAgIGludCBzdyA9IHRvUmVuZGVyVGFibGVTZWN0aW9uKGNoaWxkKS0+b3V0ZXJCb3JkZXJFbmQo
KTsKICAgICAgICAgaWYgKHN3IDwgMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBh
bGxIaWRkZW4gPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5oCShyZXZpc2lvbiAxMDk0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMzMgKzUyLDMzIEBAIHB1YmxpYzoKICAgICAK
ICAgICBib29sIGNvbGxhcHNlQm9yZGVycygpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmJvcmRl
ckNvbGxhcHNlKCk7IH0KIAotICAgIExheW91dFVuaXQgYm9yZGVyU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBtX2JvcmRlclN0YXJ0OyB9Ci0gICAgTGF5b3V0VW5pdCBib3JkZXJFbmQoKSBjb25zdCB7
IHJldHVybiBtX2JvcmRlckVuZDsgfQotICAgIExheW91dFVuaXQgYm9yZGVyQmVmb3JlKCkgY29u
c3Q7Ci0gICAgTGF5b3V0VW5pdCBib3JkZXJBZnRlcigpIGNvbnN0OworICAgIGludCBib3JkZXJT
dGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fYm9yZGVyU3RhcnQ7IH0KKyAgICBpbnQgYm9yZGVyRW5k
KCkgY29uc3QgeyByZXR1cm4gbV9ib3JkZXJFbmQ7IH0KKyAgICBpbnQgYm9yZGVyQmVmb3JlKCkg
Y29uc3Q7CisgICAgaW50IGJvcmRlckFmdGVyKCkgY29uc3Q7CiAKLSAgICBMYXlvdXRVbml0IGJv
cmRlckxlZnQoKSBjb25zdAorICAgIGludCBib3JkZXJMZWZ0KCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAg
cmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGJvcmRlclN0YXJ0KCkg
OiBib3JkZXJFbmQoKTsKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKCkgPyBib3JkZXJBZnRlcigpIDogYm9yZGVyQmVmb3JlKCk7CiAgICAgfQogCi0g
ICAgTGF5b3V0VW5pdCBib3JkZXJSaWdodCgpIGNvbnN0CisgICAgaW50IGJvcmRlclJpZ2h0KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSA/IGJvcmRlckVuZCgpIDogYm9yZGVyU3RhcnQoKTsKICAgICAgICAgcmV0dXJuIHN0eWxlKCkt
PmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBib3JkZXJCZWZvcmUoKSA6IGJvcmRlckFm
dGVyKCk7CiAgICAgfQogCi0gICAgTGF5b3V0VW5pdCBib3JkZXJUb3AoKSBjb25zdAorICAgIGlu
dCBib3JkZXJUb3AoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gc3R5bGUoKS0+aXNGbGlwcGVk
QmxvY2tzV3JpdGluZ01vZGUoKSA/IGJvcmRlckFmdGVyKCkgOiBib3JkZXJCZWZvcmUoKTsKICAg
ICAgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGJvcmRlclN0
YXJ0KCkgOiBib3JkZXJFbmQoKTsKICAgICB9CiAKLSAgICBMYXlvdXRVbml0IGJvcmRlckJvdHRv
bSgpIGNvbnN0CisgICAgaW50IGJvcmRlckJvdHRvbSgpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgICAgIHJldHVy
biBzdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gYm9yZGVyQmVmb3JlKCkg
OiBib3JkZXJBZnRlcigpOwpAQCAtODcsNDEgKzg3LDQxIEBAIHB1YmxpYzoKIAogICAgIENvbG9y
IGJnQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOyB9CiAKLSAgICBMYXlvdXRVbml0IG91dGVyQm9y
ZGVyQmVmb3JlKCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBvdXRlckJvcmRlckFmdGVyKCkgY29u
c3Q7Ci0gICAgTGF5b3V0VW5pdCBvdXRlckJvcmRlclN0YXJ0KCkgY29uc3Q7Ci0gICAgTGF5b3V0
VW5pdCBvdXRlckJvcmRlckVuZCgpIGNvbnN0OworICAgIGludCBvdXRlckJvcmRlckJlZm9yZSgp
IGNvbnN0OworICAgIGludCBvdXRlckJvcmRlckFmdGVyKCkgY29uc3Q7CisgICAgaW50IG91dGVy
Qm9yZGVyU3RhcnQoKSBjb25zdDsKKyAgICBpbnQgb3V0ZXJCb3JkZXJFbmQoKSBjb25zdDsKIAot
ICAgIExheW91dFVuaXQgb3V0ZXJCb3JkZXJMZWZ0KCkgY29uc3QKKyAgICBpbnQgb3V0ZXJCb3Jk
ZXJMZWZ0KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSA/IG91dGVyQm9yZGVyU3RhcnQoKSA6IG91dGVyQm9yZGVyRW5kKCk7CiAgICAg
ICAgIHJldHVybiBzdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gb3V0ZXJC
b3JkZXJBZnRlcigpIDogb3V0ZXJCb3JkZXJCZWZvcmUoKTsKICAgICB9CiAKLSAgICBMYXlvdXRV
bml0IG91dGVyQm9yZGVyUmlnaHQoKSBjb25zdAorICAgIGludCBvdXRlckJvcmRlclJpZ2h0KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSA/IG91dGVyQm9yZGVyRW5kKCkgOiBvdXRlckJvcmRlclN0YXJ0KCk7CiAgICAgICAgIHJldHVy
biBzdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gb3V0ZXJCb3JkZXJCZWZv
cmUoKSA6IG91dGVyQm9yZGVyQWZ0ZXIoKTsKICAgICB9CiAKLSAgICBMYXlvdXRVbml0IG91dGVy
Qm9yZGVyVG9wKCkgY29uc3QKKyAgICBpbnQgb3V0ZXJCb3JkZXJUb3AoKSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gc3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IG91dGVy
Qm9yZGVyQWZ0ZXIoKSA6IG91dGVyQm9yZGVyQmVmb3JlKCk7CiAgICAgICAgIHJldHVybiBzdHls
ZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBvdXRlckJvcmRlclN0YXJ0KCkgOiBvdXRl
ckJvcmRlckVuZCgpOwogICAgIH0KIAotICAgIExheW91dFVuaXQgb3V0ZXJCb3JkZXJCb3R0b20o
KSBjb25zdAorICAgIGludCBvdXRlckJvcmRlckJvdHRvbSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgICAgIHJl
dHVybiBzdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gb3V0ZXJCb3JkZXJC
ZWZvcmUoKSA6IG91dGVyQm9yZGVyQWZ0ZXIoKTsKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG91dGVyQm9yZGVyRW5kKCkgOiBvdXRlckJvcmRlclN0
YXJ0KCk7CiAgICAgfQogCi0gICAgTGF5b3V0VW5pdCBjYWxjQm9yZGVyU3RhcnQoKSBjb25zdDsK
LSAgICBMYXlvdXRVbml0IGNhbGNCb3JkZXJFbmQoKSBjb25zdDsKKyAgICBpbnQgY2FsY0JvcmRl
clN0YXJ0KCkgY29uc3Q7CisgICAgaW50IGNhbGNCb3JkZXJFbmQoKSBjb25zdDsKICAgICB2b2lk
IHJlY2FsY0JvcmRlcnNJblJvd0RpcmVjdGlvbigpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsK
QEAgLTI3MSw4ICsyNzEsOCBAQCBwcml2YXRlOgogICAgIAogICAgIHNob3J0IG1faFNwYWNpbmc7
CiAgICAgc2hvcnQgbV92U3BhY2luZzsKLSAgICBMYXlvdXRVbml0IG1fYm9yZGVyU3RhcnQ7Ci0g
ICAgTGF5b3V0VW5pdCBtX2JvcmRlckVuZDsKKyAgICBpbnQgbV9ib3JkZXJTdGFydDsKKyAgICBp
bnQgbV9ib3JkZXJFbmQ7CiB9OwogCiBpbmxpbmUgUmVuZGVyVGFibGVTZWN0aW9uKiBSZW5kZXJU
YWJsZTo6dG9wU2VjdGlvbigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gMTA5NDU2KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Nywx
MSArMjY3LDExIEBAIExheW91dFJlY3QgUmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmYKICAg
ICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChy
ZXBhaW50Q29udGFpbmVyKTsKIAogICAgIGJvb2wgcnRsID0gIXRhYmxlKCktPnN0eWxlKCktPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKLSAgICBMYXlvdXRVbml0IG91dGxpbmVTaXplID0gc3R5
bGUoKS0+b3V0bGluZVNpemUoKTsKLSAgICBMYXlvdXRVbml0IGxlZnQgPSBtYXgoYm9yZGVySGFs
ZkxlZnQodHJ1ZSksIG91dGxpbmVTaXplKTsKLSAgICBMYXlvdXRVbml0IHJpZ2h0ID0gbWF4KGJv
cmRlckhhbGZSaWdodCh0cnVlKSwgb3V0bGluZVNpemUpOwotICAgIExheW91dFVuaXQgdG9wID0g
bWF4KGJvcmRlckhhbGZUb3AodHJ1ZSksIG91dGxpbmVTaXplKTsKLSAgICBMYXlvdXRVbml0IGJv
dHRvbSA9IG1heChib3JkZXJIYWxmQm90dG9tKHRydWUpLCBvdXRsaW5lU2l6ZSk7CisgICAgaW50
IG91dGxpbmVTaXplID0gc3R5bGUoKS0+b3V0bGluZVNpemUoKTsKKyAgICBpbnQgbGVmdCA9IG1h
eChib3JkZXJIYWxmTGVmdCh0cnVlKSwgb3V0bGluZVNpemUpOworICAgIGludCByaWdodCA9IG1h
eChib3JkZXJIYWxmUmlnaHQodHJ1ZSksIG91dGxpbmVTaXplKTsKKyAgICBpbnQgdG9wID0gbWF4
KGJvcmRlckhhbGZUb3AodHJ1ZSksIG91dGxpbmVTaXplKTsKKyAgICBpbnQgYm90dG9tID0gbWF4
KGJvcmRlckhhbGZCb3R0b20odHJ1ZSksIG91dGxpbmVTaXplKTsKICAgICBpZiAoKGxlZnQgJiYg
IXJ0bCkgfHwgKHJpZ2h0ICYmIHJ0bCkpIHsKICAgICAgICAgaWYgKFJlbmRlclRhYmxlQ2VsbCog
YmVmb3JlID0gdGFibGUoKS0+Y2VsbEJlZm9yZSh0aGlzKSkgewogICAgICAgICAgICAgdG9wID0g
bWF4KHRvcCwgYmVmb3JlLT5ib3JkZXJIYWxmVG9wKHRydWUpKTsKQEAgLTc0Nyw0OSArNzQ3LDQ5
IEBAIGlubGluZSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUMKICAgICByZXR1cm4g
dGFibGVTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gc2VjdGlvbigpLT5jYWNoZWRD
b2xsYXBzZWRCb3JkZXIodGhpcywgQ0JTRW5kKSA6IHNlY3Rpb24oKS0+Y2FjaGVkQ29sbGFwc2Vk
Qm9yZGVyKHRoaXMsIENCU1N0YXJ0KTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6
OmJvcmRlckxlZnQoKSBjb25zdAoraW50IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyTGVmdCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHRhYmxlKCktPmNvbGxhcHNlQm9yZGVycygpID8gYm9yZGVySGFs
ZkxlZnQoZmFsc2UpIDogUmVuZGVyQmxvY2s6OmJvcmRlckxlZnQoKTsKIH0KIAotTGF5b3V0VW5p
dCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlclJpZ2h0KCkgY29uc3QKK2ludCBSZW5kZXJUYWJsZUNl
bGw6OmJvcmRlclJpZ2h0KCkgY29uc3QKIHsKICAgICByZXR1cm4gdGFibGUoKS0+Y29sbGFwc2VC
b3JkZXJzKCkgPyBib3JkZXJIYWxmUmlnaHQoZmFsc2UpIDogUmVuZGVyQmxvY2s6OmJvcmRlclJp
Z2h0KCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJUb3AoKSBjb25z
dAoraW50IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyVG9wKCkgY29uc3QKIHsKICAgICByZXR1cm4g
dGFibGUoKS0+Y29sbGFwc2VCb3JkZXJzKCkgPyBib3JkZXJIYWxmVG9wKGZhbHNlKSA6IFJlbmRl
ckJsb2NrOjpib3JkZXJUb3AoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmJv
cmRlckJvdHRvbSgpIGNvbnN0CitpbnQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJCb3R0b20oKSBj
b25zdAogewogICAgIHJldHVybiB0YWJsZSgpLT5jb2xsYXBzZUJvcmRlcnMoKSA/IGJvcmRlckhh
bGZCb3R0b20oZmFsc2UpIDogUmVuZGVyQmxvY2s6OmJvcmRlckJvdHRvbSgpOwogfQogCiAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MTkxLCBtYWtl
IHRoZSBjb2xsYXBzZWQgYm9yZGVyIGRyYXdpbmcKIC8vIHdvcmsgd2l0aCBkaWZmZXJlbnQgYmxv
Y2sgZmxvdyB2YWx1ZXMgaW5zdGVhZCBvZiBiZWluZyBoYXJkLWNvZGVkIHRvIHRvcC10by1ib3R0
b20uCi1MYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyU3RhcnQoKSBjb25zdAoraW50
IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyU3RhcnQoKSBjb25zdAogewogICAgIHJldHVybiB0YWJs
ZSgpLT5jb2xsYXBzZUJvcmRlcnMoKSA/IGJvcmRlckhhbGZTdGFydChmYWxzZSkgOiBSZW5kZXJC
bG9jazo6Ym9yZGVyU3RhcnQoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmJv
cmRlckVuZCgpIGNvbnN0CitpbnQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJFbmQoKSBjb25zdAog
ewogICAgIHJldHVybiB0YWJsZSgpLT5jb2xsYXBzZUJvcmRlcnMoKSA/IGJvcmRlckhhbGZFbmQo
ZmFsc2UpIDogUmVuZGVyQmxvY2s6OmJvcmRlckVuZCgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRl
clRhYmxlQ2VsbDo6Ym9yZGVyQmVmb3JlKCkgY29uc3QKK2ludCBSZW5kZXJUYWJsZUNlbGw6OmJv
cmRlckJlZm9yZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRhYmxlKCktPmNvbGxhcHNlQm9yZGVy
cygpID8gYm9yZGVySGFsZkJlZm9yZShmYWxzZSkgOiBSZW5kZXJCbG9jazo6Ym9yZGVyQmVmb3Jl
KCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJBZnRlcigpIGNvbnN0
CitpbnQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJBZnRlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHRhYmxlKCktPmNvbGxhcHNlQm9yZGVycygpID8gYm9yZGVySGFsZkFmdGVyKGZhbHNlKSA6IFJl
bmRlckJsb2NrOjpib3JkZXJBZnRlcigpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlclRhYmxlQ2Vs
bDo6Ym9yZGVySGFsZkxlZnQoYm9vbCBvdXRlcikgY29uc3QKK2ludCBSZW5kZXJUYWJsZUNlbGw6
OmJvcmRlckhhbGZMZWZ0KGJvb2wgb3V0ZXIpIGNvbnN0CiB7CiAgICAgUmVuZGVyU3R5bGUqIHRh
YmxlU3R5bGUgPSB0YWJsZSgpLT5zdHlsZSgpOwogICAgIGlmICh0YWJsZVN0eWxlLT5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQpAQCAtNzk3LDcgKzc5Nyw3IEBAIExheW91dFVuaXQgUmVuZGVy
VGFibGVDZWxsOjpib3JkZXJIYWxmTGUKICAgICByZXR1cm4gdGFibGVTdHlsZS0+aXNGbGlwcGVk
QmxvY2tzV3JpdGluZ01vZGUoKSA/IGJvcmRlckhhbGZBZnRlcihvdXRlcikgOiBib3JkZXJIYWxm
QmVmb3JlKG91dGVyKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhh
bGZSaWdodChib29sIG91dGVyKSBjb25zdAoraW50IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFs
ZlJpZ2h0KGJvb2wgb3V0ZXIpIGNvbnN0CiB7CiAgICAgUmVuZGVyU3R5bGUqIHRhYmxlU3R5bGUg
PSB0YWJsZSgpLT5zdHlsZSgpOwogICAgIGlmICh0YWJsZVN0eWxlLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKQpAQCAtODA1LDcgKzgwNSw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxs
Ojpib3JkZXJIYWxmUmkKICAgICByZXR1cm4gdGFibGVTdHlsZS0+aXNGbGlwcGVkQmxvY2tzV3Jp
dGluZ01vZGUoKSA/IGJvcmRlckhhbGZCZWZvcmUob3V0ZXIpIDogYm9yZGVySGFsZkFmdGVyKG91
dGVyKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZUb3AoYm9v
bCBvdXRlcikgY29uc3QKK2ludCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZUb3AoYm9vbCBv
dXRlcikgY29uc3QKIHsKICAgICBSZW5kZXJTdHlsZSogdGFibGVTdHlsZSA9IHRhYmxlKCktPnN0
eWxlKCk7CiAgICAgaWYgKHRhYmxlU3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCkBA
IC04MTMsNyArODEzLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZU
bwogICAgIHJldHVybiB0YWJsZVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBib3Jk
ZXJIYWxmU3RhcnQob3V0ZXIpIDogYm9yZGVySGFsZkVuZChvdXRlcik7CiB9CiAKLUxheW91dFVu
aXQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmQm90dG9tKGJvb2wgb3V0ZXIpIGNvbnN0Citp
bnQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmQm90dG9tKGJvb2wgb3V0ZXIpIGNvbnN0CiB7
CiAgICAgUmVuZGVyU3R5bGUqIHRhYmxlU3R5bGUgPSB0YWJsZSgpLT5zdHlsZSgpOwogICAgIGlm
ICh0YWJsZVN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQpAQCAtODIxLDcgKzgyMSw3
IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmQm8KICAgICByZXR1cm4g
dGFibGVTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYm9yZGVySGFsZkVuZChvdXRl
cikgOiBib3JkZXJIYWxmU3RhcnQob3V0ZXIpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlclRhYmxl
Q2VsbDo6Ym9yZGVySGFsZlN0YXJ0KGJvb2wgb3V0ZXIpIGNvbnN0CitpbnQgUmVuZGVyVGFibGVD
ZWxsOjpib3JkZXJIYWxmU3RhcnQoYm9vbCBvdXRlcikgY29uc3QKIHsKICAgICBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSBib3JkZXIgPSBjb2xsYXBzZWRTdGFydEJvcmRlcihEb05vdEluY2x1ZGVCb3Jk
ZXJDb2xvcik7CiAgICAgaWYgKGJvcmRlci5leGlzdHMoKSkKQEAgLTgyOSw3ICs4MjksNyBAQCBM
YXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZlN0CiAgICAgcmV0dXJuIDA7CiB9
CiAgICAgCi1MYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZkVuZChib29sIG91
dGVyKSBjb25zdAoraW50IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZkVuZChib29sIG91dGVy
KSBjb25zdAogewogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGJvcmRlciA9IGNvbGxhcHNlZEVu
ZEJvcmRlcihEb05vdEluY2x1ZGVCb3JkZXJDb2xvcik7CiAgICAgaWYgKGJvcmRlci5leGlzdHMo
KSkKQEAgLTgzNyw3ICs4MzcsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVy
SGFsZkVuCiAgICAgcmV0dXJuIDA7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpi
b3JkZXJIYWxmQmVmb3JlKGJvb2wgb3V0ZXIpIGNvbnN0CitpbnQgUmVuZGVyVGFibGVDZWxsOjpi
b3JkZXJIYWxmQmVmb3JlKGJvb2wgb3V0ZXIpIGNvbnN0CiB7CiAgICAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgYm9yZGVyID0gY29sbGFwc2VkQmVmb3JlQm9yZGVyKERvTm90SW5jbHVkZUJvcmRlckNv
bG9yKTsKICAgICBpZiAoYm9yZGVyLmV4aXN0cygpKQpAQCAtODQ1LDcgKzg0NSw3IEBAIExheW91
dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmQmUKICAgICByZXR1cm4gMDsKIH0KIAot
TGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZBZnRlcihib29sIG91dGVyKSBj
b25zdAoraW50IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZkFmdGVyKGJvb2wgb3V0ZXIpIGNv
bnN0CiB7CiAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgYm9yZGVyID0gY29sbGFwc2VkQWZ0ZXJC
b3JkZXIoRG9Ob3RJbmNsdWRlQm9yZGVyQ29sb3IpOwogICAgIGlmIChib3JkZXIuZXhpc3RzKCkp
CkBAIC05ODEsMTYgKzk4MSwxNiBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBz
ZWRCb3JkCiAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgYm90dG9tVmFsID0gY2FjaGVkQ29sbGFw
c2VkQm90dG9tQm9yZGVyKHRhYmxlU3R5bGUpOwogICAgICAKICAgICAvLyBBZGp1c3Qgb3VyIHgv
eS93aWR0aC9oZWlnaHQgc28gdGhhdCB3ZSBwYWludCB0aGUgY29sbGFwc2VkIGJvcmRlcnMgYXQg
dGhlIGNvcnJlY3QgbG9jYXRpb24uCi0gICAgTGF5b3V0VW5pdCB0b3BXaWR0aCA9IHRvcFZhbC53
aWR0aCgpOwotICAgIExheW91dFVuaXQgYm90dG9tV2lkdGggPSBib3R0b21WYWwud2lkdGgoKTsK
LSAgICBMYXlvdXRVbml0IGxlZnRXaWR0aCA9IGxlZnRWYWwud2lkdGgoKTsKLSAgICBMYXlvdXRV
bml0IHJpZ2h0V2lkdGggPSByaWdodFZhbC53aWR0aCgpOwotICAgIAotICAgIExheW91dFVuaXQg
eCA9IHBhaW50UmVjdC54KCkgLSBsZWZ0V2lkdGggLyAyOwotICAgIExheW91dFVuaXQgeSA9IHBh
aW50UmVjdC55KCkgLSB0b3BXaWR0aCAvIDI7Ci0gICAgTGF5b3V0VW5pdCB3ID0gcGFpbnRSZWN0
LndpZHRoKCkgKyBsZWZ0V2lkdGggLyAyICsgKHJpZ2h0V2lkdGggKyAxKSAvIDI7Ci0gICAgTGF5
b3V0VW5pdCBoID0gcGFpbnRSZWN0LmhlaWdodCgpICsgdG9wV2lkdGggLyAyICsgKGJvdHRvbVdp
ZHRoICsgMSkgLyAyOwotICAgIAorICAgIGludCB0b3BXaWR0aCA9IHRvcFZhbC53aWR0aCgpOwor
ICAgIGludCBib3R0b21XaWR0aCA9IGJvdHRvbVZhbC53aWR0aCgpOworICAgIGludCBsZWZ0V2lk
dGggPSBsZWZ0VmFsLndpZHRoKCk7CisgICAgaW50IHJpZ2h0V2lkdGggPSByaWdodFZhbC53aWR0
aCgpOworCisgICAgSW50UmVjdCBib3JkZXJSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwYWlu
dFJlY3QueCgpIC0gbGVmdFdpZHRoIC8gMiwKKyAgICAgICAgICAgIHBhaW50UmVjdC55KCkgLSB0
b3BXaWR0aCAvIDIsCisgICAgICAgICAgICBwYWludFJlY3Qud2lkdGgoKSArIGxlZnRXaWR0aCAv
IDIgKyAocmlnaHRXaWR0aCArIDEpIC8gMiwKKyAgICAgICAgICAgIHBhaW50UmVjdC5oZWlnaHQo
KSArIHRvcFdpZHRoIC8gMiArIChib3R0b21XaWR0aCArIDEpIC8gMik7CisKICAgICBFQm9yZGVy
U3R5bGUgdG9wU3R5bGUgPSBjb2xsYXBzZWRCb3JkZXJTdHlsZSh0b3BWYWwuc3R5bGUoKSk7CiAg
ICAgRUJvcmRlclN0eWxlIGJvdHRvbVN0eWxlID0gY29sbGFwc2VkQm9yZGVyU3R5bGUoYm90dG9t
VmFsLnN0eWxlKCkpOwogICAgIEVCb3JkZXJTdHlsZSBsZWZ0U3R5bGUgPSBjb2xsYXBzZWRCb3Jk
ZXJTdHlsZShsZWZ0VmFsLnN0eWxlKCkpOwpAQCAtMTAwNCwxMCArMTAwNCwxMCBAQCB2b2lkIFJl
bmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkCiAgICAgLy8gV2UgbmV2ZXIgcGFpbnQg
ZGlhZ29uYWxzIGF0IHRoZSBqb2lucy4gIFdlIHNpbXBseSBsZXQgdGhlIGJvcmRlciB3aXRoIHRo
ZSBoaWdoZXN0CiAgICAgLy8gcHJlY2VkZW5jZSBwYWludCBvbiB0b3Agb2YgYm9yZGVycyB3aXRo
IGxvd2VyIHByZWNlZGVuY2UuICAKICAgICBDb2xsYXBzZWRCb3JkZXJzIGJvcmRlcnM7Ci0gICAg
Ym9yZGVycy5hZGRCb3JkZXIodG9wVmFsLCBCU1RvcCwgcmVuZGVyVG9wLCB4LCB5LCB4ICsgdywg
eSArIHRvcFdpZHRoLCB0b3BTdHlsZSk7Ci0gICAgYm9yZGVycy5hZGRCb3JkZXIoYm90dG9tVmFs
LCBCU0JvdHRvbSwgcmVuZGVyQm90dG9tLCB4LCB5ICsgaCAtIGJvdHRvbVdpZHRoLCB4ICsgdywg
eSArIGgsIGJvdHRvbVN0eWxlKTsKLSAgICBib3JkZXJzLmFkZEJvcmRlcihsZWZ0VmFsLCBCU0xl
ZnQsIHJlbmRlckxlZnQsIHgsIHksIHggKyBsZWZ0V2lkdGgsIHkgKyBoLCBsZWZ0U3R5bGUpOwot
ICAgIGJvcmRlcnMuYWRkQm9yZGVyKHJpZ2h0VmFsLCBCU1JpZ2h0LCByZW5kZXJSaWdodCwgeCAr
IHcgLSByaWdodFdpZHRoLCB5LCB4ICsgdywgeSArIGgsIHJpZ2h0U3R5bGUpOworICAgIGJvcmRl
cnMuYWRkQm9yZGVyKHRvcFZhbCwgQlNUb3AsIHJlbmRlclRvcCwgYm9yZGVyUmVjdC54KCksIGJv
cmRlclJlY3QueSgpLCBib3JkZXJSZWN0Lm1heFgoKSwgYm9yZGVyUmVjdC55KCkgKyB0b3BXaWR0
aCwgdG9wU3R5bGUpOworICAgIGJvcmRlcnMuYWRkQm9yZGVyKGJvdHRvbVZhbCwgQlNCb3R0b20s
IHJlbmRlckJvdHRvbSwgYm9yZGVyUmVjdC54KCksIGJvcmRlclJlY3QubWF4WSgpIC0gYm90dG9t
V2lkdGgsIGJvcmRlclJlY3QubWF4WCgpLCBib3JkZXJSZWN0Lm1heFkoKSwgYm90dG9tU3R5bGUp
OworICAgIGJvcmRlcnMuYWRkQm9yZGVyKGxlZnRWYWwsIEJTTGVmdCwgcmVuZGVyTGVmdCwgYm9y
ZGVyUmVjdC54KCksIGJvcmRlclJlY3QueSgpLCBib3JkZXJSZWN0LngoKSArIGxlZnRXaWR0aCwg
Ym9yZGVyUmVjdC5tYXhZKCksIGxlZnRTdHlsZSk7CisgICAgYm9yZGVycy5hZGRCb3JkZXIocmln
aHRWYWwsIEJTUmlnaHQsIHJlbmRlclJpZ2h0LCBib3JkZXJSZWN0Lm1heFgoKSAtIHJpZ2h0V2lk
dGgsIGJvcmRlclJlY3QueSgpLCBib3JkZXJSZWN0Lm1heFgoKSwgYm9yZGVyUmVjdC5tYXhZKCks
IHJpZ2h0U3R5bGUpOwogCiAgICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5l
cyhncmFwaGljc0NvbnRleHQpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuaAkocmV2aXNpb24gMTA5NDU2KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSwxNCArOTEs
MTQgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoTGF5b3V0VW5pdCk7
CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgYm9yZGVyTGVmdCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBib3JkZXJSaWdodCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBib3JkZXJUb3AoKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgYm9yZGVyQm90dG9t
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IGJvcmRlclN0YXJ0KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBMYXlvdXRVbml0IGJvcmRlckVuZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBib3JkZXJCZWZvcmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgYm9y
ZGVyQWZ0ZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBib3JkZXJMZWZ0KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBpbnQgYm9yZGVyUmlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBib3Jk
ZXJUb3AoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBib3JkZXJCb3R0b20oKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGludCBib3JkZXJTdGFydCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IGJvcmRl
ckVuZCgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IGJvcmRlckJlZm9yZSgpIGNvbnN0OworICAg
IHZpcnR1YWwgaW50IGJvcmRlckFmdGVyKCkgY29uc3Q7CiAKICAgICB2b2lkIGNvbGxlY3RCb3Jk
ZXJWYWx1ZXMoUmVuZGVyVGFibGU6OkNvbGxhcHNlZEJvcmRlclZhbHVlcyYpIGNvbnN0OwogICAg
IHN0YXRpYyB2b2lkIHNvcnRCb3JkZXJWYWx1ZXMoUmVuZGVyVGFibGU6OkNvbGxhcHNlZEJvcmRl
clZhbHVlcyYpOwpAQCAtMTU5LDE1ICsxNTksMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIExh
eW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91
dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OwogCi0gICAgTGF5b3V0VW5pdCBib3Jk
ZXJIYWxmTGVmdChib29sIG91dGVyKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGJvcmRlckhhbGZS
aWdodChib29sIG91dGVyKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGJvcmRlckhhbGZUb3AoYm9v
bCBvdXRlcikgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBib3JkZXJIYWxmQm90dG9tKGJvb2wgb3V0
ZXIpIGNvbnN0OwotCi0gICAgTGF5b3V0VW5pdCBib3JkZXJIYWxmU3RhcnQoYm9vbCBvdXRlcikg
Y29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBib3JkZXJIYWxmRW5kKGJvb2wgb3V0ZXIpIGNvbnN0Owot
ICAgIExheW91dFVuaXQgYm9yZGVySGFsZkJlZm9yZShib29sIG91dGVyKSBjb25zdDsKLSAgICBM
YXlvdXRVbml0IGJvcmRlckhhbGZBZnRlcihib29sIG91dGVyKSBjb25zdDsKKyAgICBpbnQgYm9y
ZGVySGFsZkxlZnQoYm9vbCBvdXRlcikgY29uc3Q7CisgICAgaW50IGJvcmRlckhhbGZSaWdodChi
b29sIG91dGVyKSBjb25zdDsKKyAgICBpbnQgYm9yZGVySGFsZlRvcChib29sIG91dGVyKSBjb25z
dDsKKyAgICBpbnQgYm9yZGVySGFsZkJvdHRvbShib29sIG91dGVyKSBjb25zdDsKKworICAgIGlu
dCBib3JkZXJIYWxmU3RhcnQoYm9vbCBvdXRlcikgY29uc3Q7CisgICAgaW50IGJvcmRlckhhbGZF
bmQoYm9vbCBvdXRlcikgY29uc3Q7CisgICAgaW50IGJvcmRlckhhbGZCZWZvcmUoYm9vbCBvdXRl
cikgY29uc3Q7CisgICAgaW50IGJvcmRlckhhbGZBZnRlcihib29sIG91dGVyKSBjb25zdDsKIAog
ICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbGxhcHNlZFN0YXJ0Qm9yZGVyKEluY2x1ZGVCb3Jk
ZXJDb2xvck9yTm90ID0gSW5jbHVkZUJvcmRlckNvbG9yKSBjb25zdDsKICAgICBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSBjb2xsYXBzZWRFbmRCb3JkZXIoSW5jbHVkZUJvcmRlckNvbG9yT3JOb3QgPSBJ
bmNsdWRlQm9yZGVyQ29sb3IpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>