<?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>122722</bug_id>
          
          <creation_ts>2013-10-13 03:34:11 -0700</creation_ts>
          <short_desc>Make absoluteQuads/Rects functions return Vectors</short_desc>
          <delta_ts>2013-10-13 04:04:24 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mario</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>939237</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-13 03:34:11 -0700</bug_when>
    <thetext>instead of collecting to Vectors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939240</commentid>
    <comment_count>1</comment_count>
      <attachid>214095</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-13 03:48:15 -0700</bug_when>
    <thetext>Created attachment 214095
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939241</commentid>
    <comment_count>2</comment_count>
      <attachid>214095</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-13 03:55:40 -0700</bug_when>
    <thetext>Comment on attachment 214095
patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests (OOPS!).

OOPS!

&gt; Source/WebCore/dom/Range.cpp:1944
&gt; +                Vector&lt;FloatQuad&gt; textQuads = renderText.absoluteQuadsForRange(startOffset, endOffset);

Could use auto for this.

&gt; Source/WebCore/dom/Range.cpp:1947
&gt;                  quads.appendVector(textQuads);

Sidenote: I wonder if an appendVector(Vector&amp;&amp;) would be a useful optimization.

&gt; Source/WebCore/rendering/RenderText.cpp:261
&gt;  void RenderText::absoluteRects(Vector&lt;IntRect&gt;&amp; rects, const LayoutPoint&amp; accumulatedOffset) const

I wish this method were called collectAbsoluteRects() or something like that.
Same whine for the other similarly named ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939244</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-13 04:04:24 -0700</bug_when>
    <thetext>https://trac.webkit.org/r157366</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214095</attachid>
            <date>2013-10-13 03:48:15 -0700</date>
            <delta_ts>2013-10-13 03:55:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>absolutequad-no-out-arg.patch</filename>
            <type>text/plain</type>
            <size>19489</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzM2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEzLTEwLTEzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGFic29sdXRlUXVhZHMv
UmVjdHMgZnVuY3Rpb25zIHJldHVybiBWZWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRqdXN0Rmxv
YXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmFkanVzdEZsb2F0UmVjdEZvclNjcm9sbEFuZEFic29sdXRlWm9v
bUFuZEZyYW1lU2NhbGUpOgorICAgICAgICAgICAgCisgICAgICAgICAgICBUYWtlIFJlbmRlclN0
eWxlIGluc3RlYWQgb2YgUmVuZGVyT2JqZWN0CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpn
ZXRDbGllbnRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRCb3VuZGluZ0Ns
aWVudFJlY3QpOgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZTo6dGV4dFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjp0ZXh0UXVhZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmdldEJvcmRlckFuZFRleHRRdWFkcyk6CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIEFkYXB0IHRvIHRoZSBjaGFuZ2VzLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAKKyAgICAgICAgICAgIFJlbW92ZWQgdW5u
ZWNlc3NhcnkgYWRqdXN0RmxvYXRRdWFkL1JlY3RGb3JBYnNvbHV0ZVpvb20gZnVuY3Rpb25zLCBp
bmxpbmUgY29kZSB0bworICAgICAgICAgICAgYWRqdXN0RmxvYXRRdWFkcy9SZWN0Rm9yU2Nyb2xs
QW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUXVhZHNDbGlwcGVkVG9FbGxp
cHNpcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmFic29sdXRlUXVhZHNGb3JSYW5nZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGV4dExpbmVCb3hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVz
OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5lQm94ZXM6
OmFic29sdXRlUmVjdHNGb3JSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGlu
ZUJveGVzOjphYnNvbHV0ZVF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRMaW5l
Qm94ZXM6OmFic29sdXRlUXVhZHNGb3JSYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRMaW5lQm94ZXMuaDoKKyAgICAgICAgCisgICAgICAgICAgICBVc2UgcmV0dXJuIHZhbHVl
IGluc3RlYWQgb2YgYW4gb3V0LWFyZywgZXhjZXB0IGZvciB0aGUgdmlydHVhbCB2ZXJzaW9ucy4K
KwogMjAxMy0xMC0xMyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIGRlYWQgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykgY29kZS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTU3MzYyKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzkwLDcgKzc5MCw3IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym8K
ICAgICAgICAgaXNTVkdSb290ID0gdHJ1ZTsKICNlbmRpZgogICAgIGlmIChvYmotPmlzVGV4dCgp
KQotICAgICAgICB0b1JlbmRlclRleHQob2JqKS0+YWJzb2x1dGVRdWFkc0NsaXBwZWRUb0VsbGlw
c2lzKHF1YWRzKTsKKyAgICAgICAgcXVhZHMgPSB0b1JlbmRlclRleHQob2JqKS0+YWJzb2x1dGVR
dWFkc0NsaXBwZWRUb0VsbGlwc2lzKCk7CiAgICAgZWxzZSBpZiAoaXNXZWJBcmVhKCkgfHwgaXNT
ZWFtbGVzc1dlYkFyZWEoKSB8fCBpc1NWR1Jvb3QpCiAgICAgICAgIG9iai0+YWJzb2x1dGVRdWFk
cyhxdWFkcyk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxNTczNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NzM2LDExICs1NzM2LDEyIEBAIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZv
ckRvY3VtZW50KEQKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAotdm9pZCBEb2N1bWVudDo6YWRq
dXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBEb2N1bWVu
dDo6YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAg
ICAgaWYgKCF2aWV3KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGZsb2F0IHpvb20gPSBzdHls
ZS5lZmZlY3RpdmVab29tKCk7CiAgICAgZmxvYXQgaW52ZXJzZUZyYW1lU2NhbGUgPSAxOwogICAg
IGlmIChmcmFtZSgpKQogICAgICAgICBpbnZlcnNlRnJhbWVTY2FsZSA9IDEgLyBmcmFtZSgpLT5m
cmFtZVNjYWxlRmFjdG9yKCk7CkBAIC01NzQ4LDI0ICs1NzQ5LDI3IEBAIHZvaWQgRG9jdW1lbnQ6
OmFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGwKICAgICBMYXlvdXRSZWN0IHZpc2libGVDb250ZW50
UmVjdCA9IHZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkgewogICAgICAgICBxdWFkc1tpXS5tb3ZlKC12aXNp
YmxlQ29udGVudFJlY3QueCgpLCAtdmlzaWJsZUNvbnRlbnRSZWN0LnkoKSk7Ci0gICAgICAgIGFk
anVzdEZsb2F0UXVhZEZvckFic29sdXRlWm9vbShxdWFkc1tpXSwgcmVuZGVyZXIpOworICAgICAg
ICBpZiAoem9vbSAhPSAxKQorICAgICAgICAgICAgcXVhZHNbaV0uc2NhbGUoMSAvIHpvb20sIDEg
LyB6b29tKTsKICAgICAgICAgaWYgKGludmVyc2VGcmFtZVNjYWxlICE9IDEpCiAgICAgICAgICAg
ICBxdWFkc1tpXS5zY2FsZShpbnZlcnNlRnJhbWVTY2FsZSwgaW52ZXJzZUZyYW1lU2NhbGUpOwog
ICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudDo6YWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5kQWJz
b2x1dGVab29tQW5kRnJhbWVTY2FsZShGbG9hdFJlY3QmIHJlY3QsIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCit2b2lkIERvY3VtZW50OjphZGp1c3RGbG9hdFJlY3RGb3JTY3JvbGxBbmRBYnNvbHV0
ZVpvb21BbmRGcmFtZVNjYWxlKEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogewogICAgIGlmICghdmlldygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBmbG9hdCB6
b29tID0gc3R5bGUuZWZmZWN0aXZlWm9vbSgpOwogICAgIGZsb2F0IGludmVyc2VGcmFtZVNjYWxl
ID0gMTsKICAgICBpZiAoZnJhbWUoKSkKICAgICAgICAgaW52ZXJzZUZyYW1lU2NhbGUgPSAxIC8g
ZnJhbWUoKS0+ZnJhbWVTY2FsZUZhY3RvcigpOwogCiAgICAgTGF5b3V0UmVjdCB2aXNpYmxlQ29u
dGVudFJlY3QgPSB2aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOwogICAgIHJlY3QubW92ZSgt
dmlzaWJsZUNvbnRlbnRSZWN0LngoKSwgLXZpc2libGVDb250ZW50UmVjdC55KCkpOwotICAgIGFk
anVzdEZsb2F0UmVjdEZvckFic29sdXRlWm9vbShyZWN0LCByZW5kZXJlcik7CisgICAgaWYgKHpv
b20gIT0gMSkKKyAgICAgICAgcmVjdC5zY2FsZSgxIC8gem9vbSk7CiAgICAgaWYgKGludmVyc2VG
cmFtZVNjYWxlICE9IDEpCiAgICAgICAgIHJlY3Quc2NhbGUoaW52ZXJzZUZyYW1lU2NhbGUpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE1NzM2MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUwLDggKzExNTAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDcmVhdGVDdXN0b21FbGVtZW50KEVsZW1lbnQqLCBDdXN0
b21FbGVtZW50Q29uc3RydWN0b3IqKTsKICNlbmRpZgogCi0gICAgdm9pZCBhZGp1c3RGbG9hdFF1
YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShWZWN0b3I8RmxvYXRRdWFk
PiYsIFJlbmRlck9iamVjdCopOwotICAgIHZvaWQgYWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5k
QWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShGbG9hdFJlY3QmLCBSZW5kZXJPYmplY3QqKTsKKyAg
ICB2b2lkIGFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNj
YWxlKFZlY3RvcjxGbG9hdFF1YWQ+JiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKKyAgICB2b2lkIGFk
anVzdEZsb2F0UmVjdEZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoRmxvYXRS
ZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlUGFyc2VyKCk7
CiAgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVQYXJzZXJDb3VudCgpIHsgKyttX2FjdGl2ZVBhcnNl
ckNvdW50OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTczNjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2NCw3
ICs5NjQsNyBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBFbGVtZW50OjpnZXRDCiAKICAg
ICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKICAgICByZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJz
b2x1dGVRdWFkcyhxdWFkcyk7Ci0gICAgZG9jdW1lbnQoKS5hZGp1c3RGbG9hdFF1YWRzRm9yU2Ny
b2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShxdWFkcywgcmVuZGVyQm94TW9kZWxPYmpl
Y3QpOworICAgIGRvY3VtZW50KCkuYWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRl
Wm9vbUFuZEZyYW1lU2NhbGUocXVhZHMsICpyZW5kZXJCb3hNb2RlbE9iamVjdC0+c3R5bGUoKSk7
CiAgICAgcmV0dXJuIENsaWVudFJlY3RMaXN0OjpjcmVhdGUocXVhZHMpOwogfQogCkBAIC05OTUs
NyArOTk1LDcgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBFbGVtZW50OjpnZXRCb3VuZAogICAg
IGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlc3Vs
dC51bml0ZShxdWFkc1tpXS5ib3VuZGluZ0JveCgpKTsKIAotICAgIGRvY3VtZW50KCkuYWRqdXN0
RmxvYXRSZWN0Rm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShyZXN1bHQsIHJl
bmRlcmVyKCkpOworICAgIGRvY3VtZW50KCkuYWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5kQWJz
b2x1dGVab29tQW5kRnJhbWVTY2FsZShyZXN1bHQsICpyZW5kZXJlcigpLT5zdHlsZSgpKTsKICAg
ICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlc3VsdCk7CiB9CiAgICAgCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAJKHJldmlzaW9uIDE1NzM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MTQsNyArMTYxNCw3IEBAIHZvaWQgUmFuZ2U6OnRl
eHRSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHIKICAgICAgICAgZWxzZSBpZiAoci0+aXNUZXh0KCkp
IHsKICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IG5vZGUgPT0gc3RhcnRDb250YWluZXIg
PyBtX3N0YXJ0Lm9mZnNldCgpIDogMDsKICAgICAgICAgICAgIGludCBlbmRPZmZzZXQgPSBub2Rl
ID09IGVuZENvbnRhaW5lciA/IG1fZW5kLm9mZnNldCgpIDogbnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCk7Ci0gICAgICAgICAgICB0b1JlbmRlclRleHQociktPmFic29sdXRlUmVjdHNGb3JSYW5n
ZShyZWN0cywgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgdXNlU2VsZWN0aW9uSGVpZ2h0LCAmaXNG
aXhlZCk7CisgICAgICAgICAgICByZWN0cy5hcHBlbmRWZWN0b3IodG9SZW5kZXJUZXh0KHIpLT5h
YnNvbHV0ZVJlY3RzRm9yUmFuZ2Uoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgdXNlU2VsZWN0aW9u
SGVpZ2h0LCAmaXNGaXhlZCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBhbGxGaXhlZCAmPSBpc0ZpeGVkOwpAQCAtMTY1MCw3ICsxNjUwLDcgQEAgdm9p
ZCBSYW5nZTo6dGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JgogICAgICAgICBlbHNlIGlmIChy
LT5pc1RleHQoKSkgewogICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gbm9kZSA9PSBzdGFy
dENvbnRhaW5lciA/IG1fc3RhcnQub2Zmc2V0KCkgOiAwOwogICAgICAgICAgICAgaW50IGVuZE9m
ZnNldCA9IG5vZGUgPT0gZW5kQ29udGFpbmVyID8gbV9lbmQub2Zmc2V0KCkgOiBudW1lcmljX2xp
bWl0czxpbnQ+OjptYXgoKTsKLSAgICAgICAgICAgIHRvUmVuZGVyVGV4dChyKS0+YWJzb2x1dGVR
dWFkc0ZvclJhbmdlKHF1YWRzLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCB1c2VTZWxlY3Rpb25I
ZWlnaHQsICZpc0ZpeGVkKTsKKyAgICAgICAgICAgIHF1YWRzLmFwcGVuZFZlY3Rvcih0b1JlbmRl
clRleHQociktPmFic29sdXRlUXVhZHNGb3JSYW5nZShzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCB1
c2VTZWxlY3Rpb25IZWlnaHQsICZpc0ZpeGVkKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGFsbEZpeGVkICY9IGlzRml4ZWQ7CkBAIC0xOTMxLDE5ICsx
OTMxLDE4IEBAIHZvaWQgUmFuZ2U6OmdldEJvcmRlckFuZFRleHRRdWFkcyhWZWN0b3IKICAgICAg
ICAgICAgIGlmIChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyQm94TW9kZWxPYmplY3QgPSB0
b0VsZW1lbnQobm9kZSktPnJlbmRlckJveE1vZGVsT2JqZWN0KCkpIHsKICAgICAgICAgICAgICAg
ICBWZWN0b3I8RmxvYXRRdWFkPiBlbGVtZW50UXVhZHM7CiAgICAgICAgICAgICAgICAgcmVuZGVy
Qm94TW9kZWxPYmplY3QtPmFic29sdXRlUXVhZHMoZWxlbWVudFF1YWRzKTsKLSAgICAgICAgICAg
ICAgICBvd25lckRvY3VtZW50KCkuYWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRl
Wm9vbUFuZEZyYW1lU2NhbGUoZWxlbWVudFF1YWRzLCByZW5kZXJCb3hNb2RlbE9iamVjdCk7Cisg
ICAgICAgICAgICAgICAgb3duZXJEb2N1bWVudCgpLmFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxB
bmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKGVsZW1lbnRRdWFkcywgKnJlbmRlckJveE1vZGVs
T2JqZWN0LT5zdHlsZSgpKTsKIAogICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZFZlY3Rvcihl
bGVtZW50UXVhZHMpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlz
VGV4dE5vZGUoKSkgewogICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0
b1RleHQobm9kZSktPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJUZXh0KiBy
ZW5kZXJUZXh0ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICBjb25z
dCBSZW5kZXJUZXh0JiByZW5kZXJUZXh0ID0gdG9SZW5kZXJUZXh0KCpyZW5kZXJlcik7CiAgICAg
ICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gKG5vZGUgPT0gc3RhcnRDb250YWluZXIpID8g
bV9zdGFydC5vZmZzZXQoKSA6IDA7CiAgICAgICAgICAgICAgICAgaW50IGVuZE9mZnNldCA9IChu
b2RlID09IGVuZENvbnRhaW5lcikgPyBtX2VuZC5vZmZzZXQoKSA6IElOVF9NQVg7CiAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD4gdGV4dFF1YWRzOwot
ICAgICAgICAgICAgICAgIHJlbmRlclRleHQtPmFic29sdXRlUXVhZHNGb3JSYW5nZSh0ZXh0UXVh
ZHMsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwotICAgICAgICAgICAgICAgIG93bmVyRG9jdW1l
bnQoKS5hZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2Fs
ZSh0ZXh0UXVhZHMsIHJlbmRlclRleHQpOworICAgICAgICAgICAgICAgIFZlY3RvcjxGbG9hdFF1
YWQ+IHRleHRRdWFkcyA9IHJlbmRlclRleHQuYWJzb2x1dGVRdWFkc0ZvclJhbmdlKHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpOworICAgICAgICAgICAgICAgIG93bmVyRG9jdW1lbnQoKS5hZGp1c3RG
bG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSh0ZXh0UXVhZHMs
ICpyZW5kZXJUZXh0LnN0eWxlKCkpOwogCiAgICAgICAgICAgICAgICAgcXVhZHMuYXBwZW5kVmVj
dG9yKHRleHRRdWFkcyk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxNTczNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNzMsMjAgKzExNzMs
NiBAQCBpbmxpbmUgTGF5b3V0VW5pdCBhZGp1c3RMYXlvdXRVbml0Rm9yQWJzCiB9CiAjZW5kaWYK
IAotaW5saW5lIHZvaWQgYWRqdXN0RmxvYXRRdWFkRm9yQWJzb2x1dGVab29tKEZsb2F0UXVhZCYg
cXVhZCwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKLXsKLSAgICBmbG9hdCB6b29tID0gcmVuZGVy
ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKLSAgICBpZiAoem9vbSAhPSAxKQotICAgICAg
ICBxdWFkLnNjYWxlKDEgLyB6b29tLCAxIC8gem9vbSk7Ci19Ci0KLWlubGluZSB2b2lkIGFkanVz
dEZsb2F0UmVjdEZvckFic29sdXRlWm9vbShGbG9hdFJlY3QmIHJlY3QsIFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCi17Ci0gICAgZmxvYXQgem9vbSA9IHJlbmRlcmVyLT5zdHlsZSgpLT5lZmZlY3Rp
dmVab29tKCk7Ci0gICAgaWYgKHpvb20gIT0gMSkKLSAgICAgICAgcmVjdC5zY2FsZSgxIC8gem9v
bSwgMSAvIHpvb20pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRF
QlVHCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lv
biAxNTczNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2MCwxMSArMjYwLDEwIEBAIFN0cmluZyBSZW5kZXJUZXh0Ojpvcmln
aW5hbFRleHQoKSBjb25zdAogCiB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBj
b25zdAogewotICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmlyc3RUZXh0Qm94KCk7IGJv
eDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQotICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9z
aW5nSW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBib3gtPnRvcExlZnQoKSwg
Ym94LT5zaXplKCkpKSk7CisgICAgcmVjdHMuYXBwZW5kVmVjdG9yKG1fbGluZUJveGVzLmFic29s
dXRlUmVjdHMoYWNjdW11bGF0ZWRPZmZzZXQpKTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0OjphYnNv
bHV0ZVJlY3RzRm9yUmFuZ2UoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVkKQor
VmVjdG9yPEludFJlY3Q+IFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHNGb3JSYW5nZSh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCwgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gV29yayBhcm91bmQgc2lnbmVkL3Vuc2lnbmVkIGlzc3Vl
cy4gVGhpcyBmdW5jdGlvbiB0YWtlcyB1bnNpZ25lZHMsIGFuZCBpcyBvZnRlbiBwYXNzZWQgVUlO
VF9NQVgKICAgICAvLyB0byBtZWFuICJhbGwgdGhlIHdheSB0byB0aGUgZW5kIi4gSW5saW5lVGV4
dEJveCBjb29yZGluYXRlcyBhcmUgdW5zaWduZWRzLCBzbyBjaGFuZ2luZyB0aGlzIApAQCAtMjc2
LDIwICsyNzUsMjAgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoVgog
ICAgIHN0YXJ0ID0gbWluKHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkpOwog
ICAgIGVuZCA9IG1pbihlbmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7CiAgICAg
Ci0gICAgbV9saW5lQm94ZXMuYWJzb2x1dGVSZWN0c0ZvclJhbmdlKCp0aGlzLCByZWN0cywgc3Rh
cnQsIGVuZCwgdXNlU2VsZWN0aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CisgICAgcmV0dXJuIG1fbGlu
ZUJveGVzLmFic29sdXRlUmVjdHNGb3JSYW5nZSgqdGhpcywgc3RhcnQsIGVuZCwgdXNlU2VsZWN0
aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFk
c0NsaXBwZWRUb0VsbGlwc2lzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29uc3QKK1ZlY3Rv
cjxGbG9hdFF1YWQ+IFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHNDbGlwcGVkVG9FbGxpcHNpcygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbGluZUJveGVzLmFic29sdXRlUXVhZHMoKnRoaXMsIHF1
YWRzLCBudWxscHRyLCBSZW5kZXJUZXh0TGluZUJveGVzOjpDbGlwVG9FbGxpcHNpcyk7CisgICAg
cmV0dXJuIG1fbGluZUJveGVzLmFic29sdXRlUXVhZHMoKnRoaXMsIG51bGxwdHIsIFJlbmRlclRl
eHRMaW5lQm94ZXM6OkNsaXBUb0VsbGlwc2lzKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0OjphYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fbGluZUJveGVzLmFic29sdXRlUXVhZHMoKnRoaXMsIHF1YWRzLCB3
YXNGaXhlZCwgUmVuZGVyVGV4dExpbmVCb3hlczo6Tm9DbGlwcGluZyk7CisgICAgcXVhZHMuYXBw
ZW5kVmVjdG9yKG1fbGluZUJveGVzLmFic29sdXRlUXVhZHMoKnRoaXMsIHdhc0ZpeGVkLCBSZW5k
ZXJUZXh0TGluZUJveGVzOjpOb0NsaXBwaW5nKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dDo6YWJz
b2x1dGVRdWFkc0ZvclJhbmdlKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVk
KQorVmVjdG9yPEZsb2F0UXVhZD4gUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkc0ZvclJhbmdlKHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29s
KiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBXb3JrIGFyb3VuZCBzaWduZWQvdW5zaWduZWQg
aXNzdWVzLiBUaGlzIGZ1bmN0aW9uIHRha2VzIHVuc2lnbmVkcywgYW5kIGlzIG9mdGVuIHBhc3Nl
ZCBVSU5UX01BWAogICAgIC8vIHRvIG1lYW4gImFsbCB0aGUgd2F5IHRvIHRoZSBlbmQiLiBJbmxp
bmVUZXh0Qm94IGNvb3JkaW5hdGVzIGFyZSB1bnNpZ25lZHMsIHNvIGNoYW5naW5nIHRoaXMgCkBA
IC0zMDEsNyArMzAwLDcgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9yUmFuZ2Uo
VgogICAgIHN0YXJ0ID0gbWluKHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCkp
OwogICAgIGVuZCA9IG1pbihlbmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7CiAg
ICAgCi0gICAgbV9saW5lQm94ZXMuYWJzb2x1dGVRdWFkc0ZvclJhbmdlKCp0aGlzLCBxdWFkcywg
c3RhcnQsIGVuZCwgdXNlU2VsZWN0aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CisgICAgcmV0dXJuIG1f
bGluZUJveGVzLmFic29sdXRlUXVhZHNGb3JSYW5nZSgqdGhpcywgc3RhcnQsIGVuZCwgdXNlU2Vs
ZWN0aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0
Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gMTU3MzYyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIg
KzYzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91
dCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0IE9WRVJSSURFIEZJTkFM
OwotICAgIHZvaWQgYWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0PiYsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0gVUlOVF9NQVgsIGJvb2wg
dXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIGJvb2wqIHdhc0ZpeGVkID0gMCk7CisgICAgVmVj
dG9yPEludFJlY3Q+IGFic29sdXRlUmVjdHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydE9mZnNldCA9
IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdo
dCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qg
T1ZFUlJJREUgRklOQUw7Ci0gICAgdm9pZCBhYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoVmVjdG9yPEZs
b2F0UXVhZD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9
IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBib29sKiB3YXNGaXhl
ZCA9IDApOworICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFic29sdXRlUXVhZHNGb3JSYW5nZSh1bnNp
Z25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29s
IHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0Owog
Ci0gICAgdm9pZCBhYnNvbHV0ZVF1YWRzQ2xpcHBlZFRvRWxsaXBzaXMoVmVjdG9yPEZsb2F0UXVh
ZD4mKSBjb25zdDsKKyAgICBWZWN0b3I8RmxvYXRRdWFkPiBhYnNvbHV0ZVF1YWRzQ2xpcHBlZFRv
RWxsaXBzaXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAkocmV2aXNpb24g
MTU3MzYyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDcsMTAgKzQ0NywxMiBAQCBMYXlvdXRSZWN0IFJlbmRl
clRleHRMaW5lQm94ZXM6OnNlbGVjdGlvCiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKLXZvaWQgUmVu
ZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CitWZWN0b3I8SW50UmVj
dD4gUmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVSZWN0cyhjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7CisgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwog
ICAgIGZvciAoYXV0byBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3go
KSkKICAgICAgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3Vt
dWxhdGVkT2Zmc2V0ICsgYm94LT50b3BMZWZ0KCksIGJveC0+c2l6ZSgpKSkpOworICAgIHJldHVy
biByZWN0czsKIH0KIAogc3RhdGljIEZsb2F0UmVjdCBsb2NhbFF1YWRGb3JUZXh0Qm94KGNvbnN0
IElubGluZVRleHRCb3gmIGJveCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgYm9vbCB1
c2VTZWxlY3Rpb25IZWlnaHQpCkBAIC00NzMsOCArNDc1LDkgQEAgc3RhdGljIEZsb2F0UmVjdCBs
b2NhbFF1YWRGb3JUZXh0Qm94KGNvbgogICAgIHJldHVybiBib3hTZWxlY3Rpb25SZWN0OwogfQog
Ci12b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRlUmVjdHNGb3JSYW5nZShjb25zdCBS
ZW5kZXJUZXh0JiByZW5kZXJlciwgVmVjdG9yPEludFJlY3Q+JiByZWN0cywgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVk
KSBjb25zdAorVmVjdG9yPEludFJlY3Q+IFJlbmRlclRleHRMaW5lQm94ZXM6OmFic29sdXRlUmVj
dHNGb3JSYW5nZShjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dAogeworICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKICAgICBmb3IgKGF1dG8gYm94ID0gbV9m
aXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgLy8gTm90ZTog
Ym94LT5lbmQoKSByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIsIG5vdCB0
aGUgaW5kZXggcGFzdCBpdAogICAgICAgICBpZiAoc3RhcnQgPD0gYm94LT5zdGFydCgpICYmIGJv
eC0+ZW5kKCkgPCBlbmQpIHsKQEAgLTQ5NywxMCArNTAwLDEyIEBAIHZvaWQgUmVuZGVyVGV4dExp
bmVCb3hlczo6YWJzb2x1dGVSZWN0c0YKICAgICAgICAgaWYgKCFyZWN0LmlzWmVybygpKQogICAg
ICAgICAgICAgcmVjdHMuYXBwZW5kKHJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0ZVF1YWQocmVjdCwg
MCwgd2FzRml4ZWQpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCkpOwogICAgIH0KKyAgICByZXR1cm4g
cmVjdHM7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVRdWFkcyhjb25z
dCBSZW5kZXJUZXh0JiByZW5kZXJlciwgVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3
YXNGaXhlZCwgQ2xpcHBpbmdPcHRpb24gb3B0aW9uKSBjb25zdAorVmVjdG9yPEZsb2F0UXVhZD4g
UmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJUZXh0JiByZW5k
ZXJlciwgYm9vbCogd2FzRml4ZWQsIENsaXBwaW5nT3B0aW9uIG9wdGlvbikgY29uc3QKIHsKKyAg
ICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKICAgICBmb3IgKGF1dG8gYm94ID0gbV9maXJzdDsg
Ym94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKICAgICAgICAgRmxvYXRSZWN0IGJvdW5k
YXJpZXMgPSBib3gtPmNhbGN1bGF0ZUJvdW5kYXJpZXMoKTsKIApAQCAtNTE1LDEwICs1MjAsMTIg
QEAgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjphYnNvbHV0ZVF1YWRzKAogICAgICAgICB9CiAg
ICAgICAgIHF1YWRzLmFwcGVuZChyZW5kZXJlci5sb2NhbFRvQWJzb2x1dGVRdWFkKGJvdW5kYXJp
ZXMsIDAsIHdhc0ZpeGVkKSk7CiAgICAgfQorICAgIHJldHVybiBxdWFkczsKIH0KIAotdm9pZCBS
ZW5kZXJUZXh0TGluZUJveGVzOjphYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoY29uc3QgUmVuZGVyVGV4
dCYgcmVuZGVyZXIsIFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dAorVmVjdG9yPEZsb2F0UXVhZD4gUmVuZGVyVGV4dExpbmVCb3hlczo6YWJzb2x1dGVRdWFkc0Zv
clJhbmdlKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQgZW5kLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7
CisgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CiAgICAgZm9yIChhdXRvIGJveCA9IG1fZmly
c3Q7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CiAgICAgICAgIC8vIE5vdGU6IGJv
eC0+ZW5kKCkgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgY2hhcmFjdGVyLCBub3QgdGhl
IGluZGV4IHBhc3QgaXQKICAgICAgICAgaWYgKHN0YXJ0IDw9IGJveC0+c3RhcnQoKSAmJiBib3gt
PmVuZCgpIDwgZW5kKSB7CkBAIC01NDAsNiArNTQ3LDcgQEAgdm9pZCBSZW5kZXJUZXh0TGluZUJv
eGVzOjphYnNvbHV0ZVF1YWRzRgogICAgICAgICBpZiAoIXJlY3QuaXNaZXJvKCkpCiAgICAgICAg
ICAgICBxdWFkcy5hcHBlbmQocmVuZGVyZXIubG9jYWxUb0Fic29sdXRlUXVhZChyZWN0LCAwLCB3
YXNGaXhlZCkpOwogICAgIH0KKyAgICByZXR1cm4gcXVhZHM7CiB9CiAKIHZvaWQgUmVuZGVyVGV4
dExpbmVCb3hlczo6ZGlydHlBbGwoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRMaW5lQm94ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oCShyZXZpc2lvbiAxNTczNjIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NiwxMSArNjYsMTEgQEAgcHVibGljOgogICAgIEludFJlY3QgYm91bmRpbmdCb3goY29uc3QgUmVu
ZGVyVGV4dCYpIGNvbnN0OwogICAgIExheW91dFJlY3QgdmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0Jv
eChjb25zdCBSZW5kZXJUZXh0JikgY29uc3Q7CiAKLSAgICB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25z
dDsKLSAgICB2b2lkIGFic29sdXRlUmVjdHNGb3JSYW5nZShjb25zdCBSZW5kZXJUZXh0JiwgVmVj
dG9yPEludFJlY3Q+JiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxl
Y3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKKyAgICBWZWN0b3I8SW50UmVjdD4g
YWJzb2x1dGVSZWN0cyhjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0
OworICAgIFZlY3RvcjxJbnRSZWN0PiBhYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoY29uc3QgUmVuZGVy
VGV4dCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVp
Z2h0LCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAgZW51bSBDbGlwcGluZ09wdGlvbiB7IE5v
Q2xpcHBpbmcsIENsaXBUb0VsbGlwc2lzIH07Ci0gICAgdm9pZCBhYnNvbHV0ZVF1YWRzKGNvbnN0
IFJlbmRlclRleHQmLCBWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkLCBDbGlwcGlu
Z09wdGlvbikgY29uc3Q7Ci0gICAgdm9pZCBhYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoY29uc3QgUmVu
ZGVyVGV4dCYsIFZlY3RvcjxGbG9hdFF1YWQ+JiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVu
ZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKKyAgICBW
ZWN0b3I8RmxvYXRRdWFkPiBhYnNvbHV0ZVF1YWRzKGNvbnN0IFJlbmRlclRleHQmLCBib29sKiB3
YXNGaXhlZCwgQ2xpcHBpbmdPcHRpb24pIGNvbnN0OworICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFi
c29sdXRlUXVhZHNGb3JSYW5nZShjb25zdCBSZW5kZXJUZXh0JiwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dDsKIAogICAgIHZvaWQgZGlydHlBbGwoKTsKICAgICBib29sIGRpcnR5UmFuZ2UoUmVuZGVyVGV4
dCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGludCBsZW5ndGhEZWx0YSk7Cg==
</data>
<flag name="review"
          id="236599"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>