<?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>123446</bug_id>
          
          <creation_ts>2013-10-29 08:11:28 -0700</creation_ts>
          <short_desc>Multiple runs per line on simple line path</short_desc>
          <delta_ts>2013-10-29 09:59:27 -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>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>944431</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-29 08:11:28 -0700</bug_when>
    <thetext>More coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944433</commentid>
    <comment_count>1</comment_count>
      <attachid>215389</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-29 08:18:38 -0700</bug_when>
    <thetext>Created attachment 215389
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944434</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-29 08:19:12 -0700</bug_when>
    <thetext>Attachment 215389 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/rendering/SimpleLineLayout.cpp&apos;, u&apos;Source/WebCore/rendering/SimpleLineLayout.h&apos;, u&apos;Source/WebCore/rendering/SimpleLineLayoutFunctions.cpp&apos;, u&apos;Source/WebCore/rendering/SimpleLineLayoutResolver.h&apos;]&quot; exit_code: 1
Source/WebCore/rendering/SimpleLineLayoutResolver.h:98:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944438</commentid>
    <comment_count>3</comment_count>
      <attachid>215389</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-29 08:29:53 -0700</bug_when>
    <thetext>Comment on attachment 215389
patch

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

r=me.

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:263
&gt; +        Vector&lt;Run, 4&gt; lineRuns;
&gt; +        lineRuns.append(Run(lineStartOffset, 0));

This can be an uncheckedAppend() since we know there is space in the inline capacity here.

&gt; Source/WebCore/rendering/SimpleLineLayoutResolver.h:45
&gt; +        Run(const Iterator&amp;);

explicit

&gt;&gt; Source/WebCore/rendering/SimpleLineLayoutResolver.h:98
&gt;&gt; +        Iterator(RunResolver::Iterator&amp;&amp;);
&gt; 
&gt; Missing spaces around &amp;&amp;  [whitespace/operators] [3]

explicit

&gt; Source/WebCore/rendering/SimpleLineLayoutResolver.h:244
&gt; +    rect.unite((*it).rect());

No need to declare &quot;rect&quot; before this line.
LayoutRect rect = (*it).rect();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944455</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-29 09:59:27 -0700</bug_when>
    <thetext>https://trac.webkit.org/r158196</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215389</attachid>
            <date>2013-10-29 08:18:38 -0700</date>
            <delta_ts>2013-10-29 08:29:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>simple-line-runs-2.patch</filename>
            <type>text/plain</type>
            <size>23857</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODE5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDEzLTEwLTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNdWx0aXBsZSBydW5zIHBlciBs
aW5lIG9uIHNpbXBsZSBsaW5lIHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMzQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEJ5IGFsbG93aW5nIG11bHRpcGxlIHJ1bnMgcGVyIGxpbmUgd2UgY2Fu
IHN1cHBvcnQgdGV4dCBmbG93cyB3aXRoIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2VzIGluIHRoZSBt
aWRkbGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpjYW5Vc2VGb3IpOgorICAgICAgICAKKyAg
ICAgICAgICAgIFJlbW92ZSBzcGFjZSB0ZXN0LgorICAgICAgICAgICAgVGhlIGltcHJvdmVkIHRl
c3QgY292ZXJhZ2UgZm91bmQgYSBmZXcgbW9yZSBjYXNlcyB0aGF0IHdlIG5lZWQgdG8gZGlzYWxs
b3cuCisKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmFkanVzdFJ1bk9mZnNl
dHMpOgorICAgICAgICAgICAgCisgICAgICAgICAgICBSb3VuZCB0aGUgcnVuIHBvc2l0aW9ucyBh
bmQgd2lkdGhzIHNvIHRoZXkgbWF0Y2ggbGluZSBib3hlcy4KKyAgICAgICAgICAgIEFkanVzdCBm
b3IgdGV4dC1hbGlnbi4KKworICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y3Jl
YXRlKToKKyAgICAgICAgCisgICAgICAgICAgICBTcGxpdCBsaW5lcyB3aXRoIGNvbnNlY3V0aXZl
IHNwYWNlcyBpbnRvIHJ1bnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6UnVuOjpSdW4pOgorICAg
ICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmhpdFRlc3RGbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3RGbG93T3ZlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6Y29tcHV0ZVRleHRCb3VuZGluZ0JveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpyZXNvbHZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3I6
OmxpbmVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNv
bHZlcjo6UnVuOjpSdW4pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6UnVu
UmVzb2x2ZXI6OlJ1bjo6cmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpSdW5SZXNvbHZlcjo6UnVuOjpiYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6UnVuOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpSdW46OmxpbmVJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3I6Okl0ZXJhdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVy
YXRvcjo6b3BlcmF0b3IrKyk6CisgICAgICAgIAorICAgICAgICAgICAgUmVtb3ZlZCB1bm5lY2Vz
c2FyeSBvcGVyYXRvcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1
blJlc29sdmVyOjpJdGVyYXRvcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3I6Om9wZXJhdG9yIT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVy
YXRvciopOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6
Okl0ZXJhdG9yOjpzaW1wbGVSdW4pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91
dDo6UnVuUmVzb2x2ZXI6OlJ1blJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6ZW5kKToKKyAgICAgICAgCisgICAgICAgICAgICBSZXNv
bHZlciAtPiBSdW5SZXNvbHZlcgorCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpMaW5lUmVzb2x2ZXI6Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpMaW5lUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVSZXNvbHZlcjo6SXRlcmF0b3I6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGluZVJl
c29sdmVyOjpJdGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpMaW5lUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGluZVJlc29sdmVyOjpMaW5lUmVzb2x2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGluZVJlc29sdmVyOjpiZWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMaW5lUmVzb2x2ZXI6OmVuZCk6
CisgICAgICAgIAorICAgICAgICAgICAgQWRkIExpbmVSZXNvbHZlciBhcm91bmQgUnVuUmVzb2x2
ZXIuIEl0IHJlc29sdmVzIHRoZSBsaW5lIHJlY3RhbmdsZXMuCisKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OnJ1blJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OmxpbmVSZXNvbHZlcik6CisKIDIwMTMtMTAtMjkgIEppbndvbyBTb25nICA8
amlud29vNy5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlLWVuYWJsZSBzaW1wbGUgbGlu
ZSBsYXlvdXQgZm9yIEVGTApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gMTU4MTkwKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw4
IEBAIGJvb2wgY2FuVXNlRm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmwKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmIChmbG93LmlzUnVieVRleHQoKSB8fCBmbG93LmlzUnVieUJhc2Uo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChmbG93LnBhcmVudCgpLT5pc0RlcHJl
Y2F0ZWRGbGV4aWJsZUJveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gVGhlc2Ug
dGVzdHMgb25seSB3b3JrcyBkdXJpbmcgbGF5b3V0LiBPdXRzaWRlIGxheW91dCB0aGlzIGZ1bmN0
aW9uIG1heSBnaXZlIGZhbHNlIHBvc2l0aXZlcy4KICAgICBpZiAoZmxvdy52aWV3KCkubGF5b3V0
U3RhdGUoKSkgewogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQpAQCAtMTU0LDE4ICsxNTYsMTAgQEAg
Ym9vbCBjYW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0UmVuZGVyZXIudGV4dExlbmd0aCgp
OwotICAgIHVuc2lnbmVkIGNvbnNlY3V0aXZlU3BhY2VDb3VudCA9IDA7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIC8vIFRoaXMgcmVqZWN0cyBh
bnl0aGluZyB3aXRoIG1vcmUgdGhhbiBvbmUgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSwgZXhjZXB0
IGF0IHRoZSBiZWdpbm5pbmcgb3IgZW5kLgotICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2Ugd2Ug
ZG9uJ3QgY3VycmVudGx5IGRvIHN1YnJ1bnMgd2l0aGluIGxpbmVzLiBGaXhpbmcgdGhpcyB3b3Vs
ZCBpbXByb3ZlIGNvdmVyYWdlIHNpZ25pZmljYW50bHkuCiAgICAgICAgIFVDaGFyIGNoYXJhY3Rl
ciA9IHRleHRSZW5kZXJlci5jaGFyYWN0ZXJBdChpKTsKLSAgICAgICAgaWYgKGlzV2hpdGVzcGFj
ZShjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICArK2NvbnNlY3V0aXZlU3BhY2VDb3VudDsKKyAg
ICAgICAgaWYgKGNoYXJhY3RlciA9PSAnICcpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoY29uc2VjdXRpdmVTcGFjZUNvdW50ICE9IGkgJiYgY29uc2VjdXRp
dmVTcGFjZUNvdW50ID4gMSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29u
c2VjdXRpdmVTcGFjZUNvdW50ID0gMDsKIAogICAgICAgICAvLyBUaGVzZSB3b3VsZCBiZSBlYXN5
IHRvIHN1cHBvcnQuCiAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gbm9CcmVha1NwYWNlKQpAQCAt
MTczLDE0ICsxNjcsMTIgQEAgYm9vbCBjYW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBm
bAogICAgICAgICBpZiAoY2hhcmFjdGVyID09IHNvZnRIeXBoZW4pCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGxvd2VzdFJUTENoYXJhY3Rl
ciA9IDB4NTkwOwotICAgICAgICBpZiAoY2hhcmFjdGVyID49IGxvd2VzdFJUTENoYXJhY3Rlcikg
ewotICAgICAgICAgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uID0gdV9jaGFyRGlyZWN0aW9u
KGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVG
VCB8fCBkaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUX0FSQUJJQwotICAgICAgICAgICAgICAg
IHx8IGRpcmVjdGlvbiA9PSBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5HIHx8IGRpcmVjdGlvbiA9
PSBVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUKLSAgICAgICAgICAgICAgICB8fCBkaXJlY3Rpb24g
PT0gVV9MRUZUX1RPX1JJR0hUX0VNQkVERElORyB8fCBkaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJ
R0hUX09WRVJSSURFKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQor
ICAgICAgICBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rpb24gPSB1X2NoYXJEaXJlY3Rpb24oY2hhcmFj
dGVyKTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBVX1JJR0hUX1RPX0xFRlQgfHwgZGlyZWN0
aW9uID09IFVfUklHSFRfVE9fTEVGVF9BUkFCSUMKKyAgICAgICAgICAgIHx8IGRpcmVjdGlvbiA9
PSBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5HIHx8IGRpcmVjdGlvbiA9PSBVX1JJR0hUX1RPX0xF
RlRfT1ZFUlJJREUKKyAgICAgICAgICAgIHx8IGRpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFRf
RU1CRURESU5HIHx8IGRpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUKKyAgICAg
ICAgICAgIHx8IGRpcmVjdGlvbiA9PSBVX1BPUF9ESVJFQ1RJT05BTF9GT1JNQVQgfHwgZGlyZWN0
aW9uID09IFVfQk9VTkRBUllfTkVVVFJBTCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgICAgICBpZiAoIXByaW1hcnlGb250RGF0YS5nbHlwaEZvckNoYXJhY3RlcihjaGFyYWN0ZXIp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMxLDYgKzIyMywxOSBAQCBzdGF0aWMg
ZmxvYXQgY29tcHV0ZUxpbmVMZWZ0KEVUZXh0QWxpZ24gCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0
YXRpYyB2b2lkIGFkanVzdFJ1bk9mZnNldHMoVmVjdG9yPFJ1biwgND4mIGxpbmVSdW5zLCBFVGV4
dEFsaWduIHRleHRBbGlnbiwgZmxvYXQgbGluZVdpZHRoLCBmbG9hdCBhdmFpbGFibGVXaWR0aCkK
K3sKKyAgICBmbG9hdCBsaW5lTGVmdCA9IGNvbXB1dGVMaW5lTGVmdCh0ZXh0QWxpZ24sIGF2YWls
YWJsZVdpZHRoIC0gbGluZVdpZHRoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
aW5lUnVucy5zaXplKCk7ICsraSkgeworICAgICAgICBsaW5lUnVuc1tpXS5sZWZ0ICs9IGxpbmVM
ZWZ0OworCisgICAgICAgIGZsb2F0IHJpZ2h0ID0gbGluZVJ1bnNbaV0ubGVmdCArIGxpbmVSdW5z
W2ldLndpZHRoOworICAgICAgICBsaW5lUnVuc1tpXS5sZWZ0ID0gZmxvb3IobGluZVJ1bnNbaV0u
bGVmdCk7CisgICAgICAgIGxpbmVSdW5zW2ldLndpZHRoID0gY2VpbChyaWdodCkgLSBsaW5lUnVu
c1tpXS5sZWZ0OworICAgIH0KK30KKwogc3RkOjp1bmlxdWVfcHRyPExheW91dD4gY3JlYXRlKFJl
bmRlckJsb2NrRmxvdyYgZmxvdykKIHsKICAgICBhdXRvIGxheW91dCA9IHN0ZDo6bWFrZV91bmlx
dWU8TGF5b3V0PigpOwpAQCAtMjUxLDU0ICsyNTYsNzMgQEAgc3RkOjp1bmlxdWVfcHRyPExheW91
dD4gY3JlYXRlKFJlbmRlckJsbwogICAgIHdoaWxlIChsaW5lRW5kT2Zmc2V0IDwgdGV4dExlbmd0
aCkgewogICAgICAgICBsaW5lRW5kT2Zmc2V0ID0gc2tpcFdoaXRlc3BhY2VzKHRleHRSZW5kZXJl
ciwgbGluZUVuZE9mZnNldCwgdGV4dExlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGxpbmVTdGFy
dE9mZnNldCA9IGxpbmVFbmRPZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIHJ1bkVuZE9mZnNldCA9
IGxpbmVFbmRPZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIHdvcmRFbmRPZmZzZXQgPSBsaW5lRW5k
T2Zmc2V0OwogICAgICAgICBMaW5lV2lkdGggbGluZVdpZHRoKGZsb3csIGZhbHNlLCBEb05vdElu
ZGVudFRleHQpOwotICAgICAgICB3aGlsZSAocnVuRW5kT2Zmc2V0IDwgdGV4dExlbmd0aCkgewot
ICAgICAgICAgICAgQVNTRVJUKCFpc1doaXRlc3BhY2UodGV4dFJlbmRlcmVyLmNoYXJhY3RlckF0
KHJ1bkVuZE9mZnNldCkpKTsKIAotICAgICAgICAgICAgYm9vbCBwcmV2aW91c1dhc1NwYWNlQmV0
d2VlblJ1bnMgPSBydW5FbmRPZmZzZXQgPiBsaW5lU3RhcnRPZmZzZXQgJiYgaXNXaGl0ZXNwYWNl
KHRleHRSZW5kZXJlci5jaGFyYWN0ZXJBdChydW5FbmRPZmZzZXQgLSAxKSk7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBydW5TdGFydE9mZnNldCA9IHByZXZpb3VzV2FzU3BhY2VCZXR3ZWVuUnVucyA/
IHJ1bkVuZE9mZnNldCAtIDEgOiBydW5FbmRPZmZzZXQ7CisgICAgICAgIFZlY3RvcjxSdW4sIDQ+
IGxpbmVSdW5zOworICAgICAgICBsaW5lUnVucy5hcHBlbmQoUnVuKGxpbmVTdGFydE9mZnNldCwg
MCkpOworCisgICAgICAgIHdoaWxlICh3b3JkRW5kT2Zmc2V0IDwgdGV4dExlbmd0aCkgeworICAg
ICAgICAgICAgQVNTRVJUKCFpc1doaXRlc3BhY2UodGV4dFJlbmRlcmVyLmNoYXJhY3RlckF0KHdv
cmRFbmRPZmZzZXQpKSk7CiAKLSAgICAgICAgICAgICsrcnVuRW5kT2Zmc2V0OwotICAgICAgICAg
ICAgd2hpbGUgKHJ1bkVuZE9mZnNldCA8IHRleHRMZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBp
ZiAocnVuRW5kT2Zmc2V0ID4gbGluZVN0YXJ0T2Zmc2V0ICYmIGlzQnJlYWthYmxlKGxpbmVCcmVh
a0l0ZXJhdG9yLCBydW5FbmRPZmZzZXQsIG5leHRCcmVha2FibGUsIGZhbHNlKSkKKyAgICAgICAg
ICAgIGJvb2wgcHJldmlvdXNXYXNTcGFjZUJldHdlZW5Xb3JkcyA9IHdvcmRFbmRPZmZzZXQgPiBs
aW5lU3RhcnRPZmZzZXQgJiYgaXNXaGl0ZXNwYWNlKHRleHRSZW5kZXJlci5jaGFyYWN0ZXJBdCh3
b3JkRW5kT2Zmc2V0IC0gMSkpOworICAgICAgICAgICAgdW5zaWduZWQgd29yZFN0YXJ0T2Zmc2V0
ID0gcHJldmlvdXNXYXNTcGFjZUJldHdlZW5Xb3JkcyA/IHdvcmRFbmRPZmZzZXQgLSAxIDogd29y
ZEVuZE9mZnNldDsKKworICAgICAgICAgICAgKyt3b3JkRW5kT2Zmc2V0OworICAgICAgICAgICAg
d2hpbGUgKHdvcmRFbmRPZmZzZXQgPCB0ZXh0TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgaWYg
KHdvcmRFbmRPZmZzZXQgPiBsaW5lU3RhcnRPZmZzZXQgJiYgaXNCcmVha2FibGUobGluZUJyZWFr
SXRlcmF0b3IsIHdvcmRFbmRPZmZzZXQsIG5leHRCcmVha2FibGUsIGZhbHNlKSkKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgKytydW5FbmRPZmZzZXQ7CisgICAg
ICAgICAgICAgICAgKyt3b3JkRW5kT2Zmc2V0OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICB1bnNpZ25lZCBydW5MZW5ndGggPSBydW5FbmRPZmZzZXQgLSBydW5TdGFydE9mZnNldDsKLSAg
ICAgICAgICAgIGJvb2wgaW5jbHVkZUVuZFNwYWNlID0gcnVuRW5kT2Zmc2V0IDwgdGV4dExlbmd0
aCAmJiB0ZXh0UmVuZGVyZXIuY2hhcmFjdGVyQXQocnVuRW5kT2Zmc2V0KSA9PSAnICc7CisgICAg
ICAgICAgICB1bnNpZ25lZCB3b3JkTGVuZ3RoID0gd29yZEVuZE9mZnNldCAtIHdvcmRTdGFydE9m
ZnNldDsKKyAgICAgICAgICAgIGJvb2wgaW5jbHVkZUVuZFNwYWNlID0gd29yZEVuZE9mZnNldCA8
IHRleHRMZW5ndGggJiYgdGV4dFJlbmRlcmVyLmNoYXJhY3RlckF0KHdvcmRFbmRPZmZzZXQpID09
ICcgJzsKICAgICAgICAgICAgIGZsb2F0IHdvcmRXaWR0aDsKICAgICAgICAgICAgIGlmIChpbmNs
dWRlRW5kU3BhY2UpCi0gICAgICAgICAgICAgICAgd29yZFdpZHRoID0gdGV4dFdpZHRoKHRleHRS
ZW5kZXJlciwgcnVuU3RhcnRPZmZzZXQsIHJ1bkxlbmd0aCArIDEsIGxpbmVXaWR0aC5jb21taXR0
ZWRXaWR0aCgpLCBzdHlsZSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAgICAgICAgICAg
ICAgIHdvcmRXaWR0aCA9IHRleHRXaWR0aCh0ZXh0UmVuZGVyZXIsIHdvcmRTdGFydE9mZnNldCwg
d29yZExlbmd0aCArIDEsIGxpbmVXaWR0aC5jb21taXR0ZWRXaWR0aCgpLCBzdHlsZSkgLSB3b3Jk
VHJhaWxpbmdTcGFjZVdpZHRoOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdv
cmRXaWR0aCA9IHRleHRXaWR0aCh0ZXh0UmVuZGVyZXIsIHJ1blN0YXJ0T2Zmc2V0LCBydW5MZW5n
dGgsIGxpbmVXaWR0aC5jb21taXR0ZWRXaWR0aCgpLCBzdHlsZSk7CisgICAgICAgICAgICAgICAg
d29yZFdpZHRoID0gdGV4dFdpZHRoKHRleHRSZW5kZXJlciwgd29yZFN0YXJ0T2Zmc2V0LCB3b3Jk
TGVuZ3RoLCBsaW5lV2lkdGguY29tbWl0dGVkV2lkdGgoKSwgc3R5bGUpOwogCiAgICAgICAgICAg
ICBsaW5lV2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aCh3b3JkV2lkdGgpOwotICAgICAgICAgICAg
aWYgKCFsaW5lV2lkdGguZml0c09uTGluZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFsaW5l
V2lkdGguY29tbWl0dGVkV2lkdGgoKSkgewotICAgICAgICAgICAgICAgICAgICBsaW5lV2lkdGgu
Y29tbWl0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVFbmRPZmZzZXQgPSBydW5FbmRPZmZz
ZXQ7Ci0gICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0
IGxpbmUgaWYgdGhlIGN1cnJlbnQgb25lIGlzIGZ1bGwgYW5kIHdlIGhhdmUgc29tZXRoaW5nIG9u
IGl0LgorICAgICAgICAgICAgaWYgKCFsaW5lV2lkdGguZml0c09uTGluZSgpICYmIGxpbmVXaWR0
aC5jb21taXR0ZWRXaWR0aCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICBpZiAod29yZFN0YXJ0T2Zmc2V0ID4gbGluZUVuZE9mZnNldCkgeworICAgICAgICAgICAgICAg
IC8vIFRoZXJlIHdlcmUgbW9yZSB0aGFuIG9uZSBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlLgorICAg
ICAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c1dhc1NwYWNlQmV0d2VlbldvcmRzKTsKKyAgICAg
ICAgICAgICAgICAvLyBJbmNsdWRlIHNwYWNlIHRvIHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIHJ1
bi4KKyAgICAgICAgICAgICAgICBsaW5lUnVucy5sYXN0KCkudGV4dExlbmd0aCsrOworICAgICAg
ICAgICAgICAgIGxpbmVSdW5zLmxhc3QoKS53aWR0aCArPSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRo
OworICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGEgbmV3IHJ1biBvbiB0aGUgc2FtZSBsaW5lLgor
ICAgICAgICAgICAgICAgIGZsb2F0IHByZXZpb3VzUmlnaHQgPSBsaW5lUnVucy5sYXN0KCkubGVm
dCArIGxpbmVSdW5zLmxhc3QoKS53aWR0aDsKKyAgICAgICAgICAgICAgICBsaW5lUnVucy5hcHBl
bmQoUnVuKHdvcmRTdGFydE9mZnNldCArIDEsIHByZXZpb3VzUmlnaHQpKTsKICAgICAgICAgICAg
IH0KKwogICAgICAgICAgICAgbGluZVdpZHRoLmNvbW1pdCgpOwotICAgICAgICAgICAgbGluZUVu
ZE9mZnNldCA9IHJ1bkVuZE9mZnNldDsKLSAgICAgICAgICAgIHJ1bkVuZE9mZnNldCA9IHNraXBX
aGl0ZXNwYWNlcyh0ZXh0UmVuZGVyZXIsIHJ1bkVuZE9mZnNldCwgdGV4dExlbmd0aCk7CisKKyAg
ICAgICAgICAgIGxpbmVSdW5zLmxhc3QoKS53aWR0aCA9IGxpbmVXaWR0aC5jb21taXR0ZWRXaWR0
aCgpIC0gbGluZVJ1bnMubGFzdCgpLmxlZnQ7CisgICAgICAgICAgICBsaW5lUnVucy5sYXN0KCku
dGV4dExlbmd0aCA9IHdvcmRFbmRPZmZzZXQgLSBsaW5lUnVucy5sYXN0KCkudGV4dE9mZnNldDsK
KworICAgICAgICAgICAgbGluZUVuZE9mZnNldCA9IHdvcmRFbmRPZmZzZXQ7CisgICAgICAgICAg
ICB3b3JkRW5kT2Zmc2V0ID0gc2tpcFdoaXRlc3BhY2VzKHRleHRSZW5kZXJlciwgd29yZEVuZE9m
ZnNldCwgdGV4dExlbmd0aCk7CisKKyAgICAgICAgICAgIGlmICghbGluZVdpZHRoLmZpdHNPbkxp
bmUoKSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBydW4gb24gdGhlIGxpbmUgb3Zl
cmZsb3dzLgorICAgICAgICAgICAgICAgIEFTU0VSVChsaW5lUnVucy5zaXplKCkgPT0gMSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGxpbmVTdGFydE9mZnNldCA9PSBsaW5lRW5kT2Zmc2V0KQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgZmxvYXQgYWxpZ25lZExlZnQgPSBjb21wdXRlTGluZUxlZnQodGV4dEFs
aWduLCBsaW5lV2lkdGguYXZhaWxhYmxlV2lkdGgoKSAtIGxpbmVXaWR0aC5jb21taXR0ZWRXaWR0
aCgpKTsKLSAgICAgICAgZmxvYXQgYWxpZ25lZFJpZ2h0ID0gYWxpZ25lZExlZnQgKyBsaW5lV2lk
dGguY29tbWl0dGVkV2lkdGgoKTsKKyAgICAgICAgYWRqdXN0UnVuT2Zmc2V0cyhsaW5lUnVucywg
dGV4dEFsaWduLCBsaW5lV2lkdGguY29tbWl0dGVkV2lkdGgoKSwgbGluZVdpZHRoLmF2YWlsYWJs
ZVdpZHRoKCkpOwogCi0gICAgICAgIFJ1biBydW47Ci0gICAgICAgIHJ1bi50ZXh0T2Zmc2V0ID0g
bGluZVN0YXJ0T2Zmc2V0OwotICAgICAgICBydW4udGV4dExlbmd0aCA9IGxpbmVFbmRPZmZzZXQg
LSBsaW5lU3RhcnRPZmZzZXQ7Ci0gICAgICAgIHJ1bi5sZWZ0ID0gZmxvb3IoYWxpZ25lZExlZnQp
OwotICAgICAgICBydW4ud2lkdGggPSBjZWlsKGFsaWduZWRSaWdodCkgLSBydW4ubGVmdDsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpbmVSdW5zLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgbGF5b3V0LT5ydW5zLmFwcGVuZChsaW5lUnVuc1tpXSk7CiAKLSAgICAgICAgbGF5
b3V0LT5ydW5zLmFwcGVuZChydW4pOworICAgICAgICBsYXlvdXQtPnJ1bnMubGFzdCgpLmlzRW5k
T2ZMaW5lID0gdHJ1ZTsKICAgICAgICAgbGF5b3V0LT5saW5lQ291bnQrKzsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuaAkocmV2aXNp
b24gMTU4MTkwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsMTcgQEAgbmFtZXNwYWNlIFNpbXBsZUxpbmVM
YXlvdXQgewogYm9vbCBjYW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CiAKIHN0cnVj
dCBSdW4geworICAgIFJ1bih1bnNpZ25lZCB0ZXh0T2Zmc2V0LCBmbG9hdCBsZWZ0KQorICAgICAg
ICA6IHRleHRPZmZzZXQodGV4dE9mZnNldCkKKyAgICAgICAgLCB0ZXh0TGVuZ3RoKDApCisgICAg
ICAgICwgaXNFbmRPZkxpbmUoZmFsc2UpCisgICAgICAgICwgbGVmdChsZWZ0KQorICAgICAgICAs
IHdpZHRoKDApCisgICAgeyB9CisKICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0OwotICAgIHVuc2ln
bmVkIHRleHRMZW5ndGg7CisgICAgdW5zaWduZWQgdGV4dExlbmd0aCA6IDMxOworICAgIHVuc2ln
bmVkIGlzRW5kT2ZMaW5lIDogMTsKICAgICBmbG9hdCBsZWZ0OwogICAgIGZsb2F0IHdpZHRoOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDE1ODE5MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODUsOCArODUsNyBAQCBib29sIGhpdFRlc3RGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYg
CiAKICAgICBhdXRvIHJlc29sdmVyID0gbGluZVJlc29sdmVyKGZsb3csIGxheW91dCk7CiAgICAg
Zm9yIChhdXRvIGl0ID0gcmVzb2x2ZXIuYmVnaW4oKSwgZW5kID0gcmVzb2x2ZXIuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICBhdXRvIGxpbmUgPSAqaXQ7Ci0gICAgICAgIGF1dG8g
bGluZVJlY3QgPSBsaW5lLnJlY3QoKTsKKyAgICAgICAgYXV0byBsaW5lUmVjdCA9ICppdDsKICAg
ICAgICAgbGluZVJlY3QubW92ZUJ5KGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAgICAgICAgaWYgKCFs
b2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMobGluZVJlY3QpKQogICAgICAgICAgICAgY29u
dGludWU7CkBAIC0xMDIsOCArMTAxLDcgQEAgdm9pZCBjb2xsZWN0Rmxvd092ZXJmbG93KFJlbmRl
ckJsb2NrRmxvdwogewogICAgIGF1dG8gcmVzb2x2ZXIgPSBsaW5lUmVzb2x2ZXIoZmxvdywgbGF5
b3V0KTsKICAgICBmb3IgKGF1dG8gaXQgPSByZXNvbHZlci5iZWdpbigpLCBlbmQgPSByZXNvbHZl
ci5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGF1dG8gbGluZSA9ICppdDsKLSAg
ICAgICAgYXV0byByZWN0ID0gbGluZS5yZWN0KCk7CisgICAgICAgIGF1dG8gcmVjdCA9ICppdDsK
ICAgICAgICAgZmxvdy5hZGRMYXlvdXRPdmVyZmxvdyhyZWN0KTsKICAgICAgICAgZmxvdy5hZGRW
aXN1YWxPdmVyZmxvdyhyZWN0KTsKICAgICB9CkBAIC0xMTYsMjEgKzExNCwyMyBAQCBJbnRSZWN0
IGNvbXB1dGVUZXh0Qm91bmRpbmdCb3goY29uc3QgUmVuCiAgICAgYXV0byBlbmQgPSByZXNvbHZl
ci5lbmQoKTsKICAgICBpZiAoaXQgPT0gZW5kKQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwot
ICAgIGF1dG8gZmlyc3RMaW5lUmVjdCA9ICgqaXQpLnJlY3QoKTsKKyAgICBhdXRvIGZpcnN0TGlu
ZVJlY3QgPSAqaXQ7CiAgICAgZmxvYXQgbGVmdCA9IGZpcnN0TGluZVJlY3QueCgpOwogICAgIGZs
b2F0IHJpZ2h0ID0gZmlyc3RMaW5lUmVjdC5tYXhYKCk7CisgICAgZmxvYXQgYm90dG9tID0gZmly
c3RMaW5lUmVjdC5tYXhZKCk7CiAgICAgZm9yICgrK2l0OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgYXV0byBsaW5lID0gKml0OwotICAgICAgICBhdXRvIHJlY3QgPSBsaW5lLnJlY3QoKTsK
KyAgICAgICAgYXV0byByZWN0ID0gKml0OwogICAgICAgICBpZiAocmVjdC54KCkgPCBsZWZ0KQog
ICAgICAgICAgICAgbGVmdCA9IHJlY3QueCgpOwogICAgICAgICBpZiAocmVjdC5tYXhYKCkgPiBy
aWdodCkKICAgICAgICAgICAgIHJpZ2h0ID0gcmVjdC5tYXhYKCk7CisgICAgICAgIGlmIChyZWN0
Lm1heFkoKSA+IGJvdHRvbSkKKyAgICAgICAgICAgIGJvdHRvbSA9IHJlY3QubWF4WSgpOwogICAg
IH0KICAgICBmbG9hdCB4ID0gZmlyc3RMaW5lUmVjdC54KCk7CiAgICAgZmxvYXQgeSA9IGZpcnN0
TGluZVJlY3QueSgpOwogICAgIGZsb2F0IHdpZHRoID0gcmlnaHQgLSBsZWZ0OwotICAgIGZsb2F0
IGhlaWdodCA9ICgqcmVzb2x2ZXIubGFzdCgpKS5yZWN0KCkubWF4WSgpIC0geTsKKyAgICBmbG9h
dCBoZWlnaHQgPSBib3R0b20gLSB5OwogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0
UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgJKHJldmlzaW9uIDE1
ODE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNDcgKzM2LDQ4IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgU2ltcGxlTGluZUxheW91dCB7CiAKLWNsYXNzIFJlc29sdmVyIHsKK2Ns
YXNzIFJ1blJlc29sdmVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvcjsKIAogICAgIGNs
YXNzIFJ1biB7CiAgICAgcHVibGljOgotICAgICAgICBSdW4oY29uc3QgUmVzb2x2ZXImLCB1bnNp
Z25lZCBsaW5lSW5kZXgpOworICAgICAgICBSdW4oY29uc3QgSXRlcmF0b3ImKTsKIAogICAgICAg
ICBMYXlvdXRSZWN0IHJlY3QoKSBjb25zdDsKICAgICAgICAgTGF5b3V0UG9pbnQgYmFzZWxpbmUo
KSBjb25zdDsKICAgICAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsKIAorICAgICAgICB1bnNpZ25l
ZCBsaW5lSW5kZXgoKSBjb25zdDsKKwogICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IFJlc29s
dmVyJiBtX3Jlc29sdmVyOwotICAgICAgICB1bnNpZ25lZCBtX2xpbmVJbmRleDsKKyAgICAgICAg
Y29uc3QgSXRlcmF0b3ImIG1faXRlcmF0b3I7CiAgICAgfTsKIAogICAgIGNsYXNzIEl0ZXJhdG9y
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEl0ZXJhdG9yKGNvbnN0IFJlc29sdmVyJiwgdW5zaWdu
ZWQgbGluZUluZGV4KTsKKyAgICAgICAgSXRlcmF0b3IoY29uc3QgUnVuUmVzb2x2ZXImLCB1bnNp
Z25lZCBsaW5lSW5kZXgpOwogCiAgICAgICAgIEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7Ci0gICAg
ICAgIEl0ZXJhdG9yJiBvcGVyYXRvci0tKCk7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBJdGVyYXRvciYpIGNvbnN0OwogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0
b3ImKSBjb25zdDsKIAogICAgICAgICBSdW4gb3BlcmF0b3IqKCkgY29uc3Q7CiAKKyAgICAgICAg
Y29uc3QgUnVuUmVzb2x2ZXImIHJlc29sdmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlcjsg
fQorICAgICAgICBjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW4mIHNpbXBsZVJ1bigpIGNvbnN0
OworICAgICAgICB1bnNpZ25lZCBsaW5lSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmRl
eDsgfQorCiAgICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgUmVzb2x2ZXImIG1fcmVzb2x2ZXI7
CisgICAgICAgIGNvbnN0IFJ1blJlc29sdmVyJiBtX3Jlc29sdmVyOworICAgICAgICB1bnNpZ25l
ZCBtX3J1bkluZGV4OwogICAgICAgICB1bnNpZ25lZCBtX2xpbmVJbmRleDsKICAgICB9OwogCi0g
ICAgUmVzb2x2ZXIoY29uc3QgUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7Ci0KLSAg
ICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7CisgICAgUnVuUmVzb2x2ZXIoY29uc3QgUmVuZGVyQmxv
Y2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiAKICAgICBJdGVyYXRvciBiZWdpbigpIGNvbnN0Owog
ICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0OwotICAgIEl0ZXJhdG9yIGxhc3QoKSBjb25zdDsKLSAg
ICBJdGVyYXRvciBvcGVyYXRvcltdKHVuc2lnbmVkKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBj
b25zdCBMYXlvdXQmIG1fbGF5b3V0OwpAQCAtODgsNzMgKzg5LDExMCBAQCBwcml2YXRlOgogICAg
IGNvbnN0IExheW91dFBvaW50IG1fY29udGVudE9mZnNldDsKIH07CiAKLVJlc29sdmVyIHJ1blJl
c29sdmVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYpOwotUmVzb2x2ZXIg
bGluZVJlc29sdmVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYpOworY2xh
c3MgTGluZVJlc29sdmVyIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBJdGVyYXRvcjsKIAotaW5saW5l
IFJlc29sdmVyOjpSdW46OlJ1bihjb25zdCBSZXNvbHZlciYgcmVzb2x2ZXIsIHVuc2lnbmVkIGxp
bmVJbmRleCkKLSAgICA6IG1fcmVzb2x2ZXIocmVzb2x2ZXIpCi0gICAgLCBtX2xpbmVJbmRleChs
aW5lSW5kZXgpCisgICAgY2xhc3MgSXRlcmF0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgSXRl
cmF0b3IoUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yJiYpOworCisgICAgICAgIEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCk7CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYpIGNvbnN0
OworICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdDsKKworICAg
ICAgICBjb25zdCBMYXlvdXRSZWN0IG9wZXJhdG9yKigpIGNvbnN0OworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIG1fcnVuSXRlcmF0b3I7CisgICAgICAgIExh
eW91dFJlY3QgbV9yZWN0OworICAgIH07CisKKyAgICBMaW5lUmVzb2x2ZXIoY29uc3QgUmVuZGVy
QmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CisKKyAgICBJdGVyYXRvciBiZWdpbigpIGNvbnN0
OworICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJ1blJlc29sdmVy
IG1fcnVuUmVzb2x2ZXI7Cit9OworCitSdW5SZXNvbHZlciBydW5SZXNvbHZlcihjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQmKTsKK0xpbmVSZXNvbHZlciBsaW5lUmVzb2x2ZXIo
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CisKK2lubGluZSBSdW5SZXNv
bHZlcjo6UnVuOjpSdW4oY29uc3QgSXRlcmF0b3ImIGl0ZXJhdG9yKQorICAgIDogbV9pdGVyYXRv
cihpdGVyYXRvcikKIHsKIH0KIAotaW5saW5lIExheW91dFJlY3QgUmVzb2x2ZXI6OlJ1bjo6cmVj
dCgpIGNvbnN0CitpbmxpbmUgTGF5b3V0UmVjdCBSdW5SZXNvbHZlcjo6UnVuOjpyZWN0KCkgY29u
c3QKIHsKLSAgICBhdXRvJiBydW4gPSBtX3Jlc29sdmVyLm1fbGF5b3V0LnJ1bnNbbV9saW5lSW5k
ZXhdOworICAgIGF1dG8mIHJlc29sdmVyID0gbV9pdGVyYXRvci5yZXNvbHZlcigpOworICAgIGF1
dG8mIHJ1biA9IG1faXRlcmF0b3Iuc2ltcGxlUnVuKCk7CiAKLSAgICBMYXlvdXRQb2ludCBsaW5l
UG9zaXRpb24ocnVuLmxlZnQsIG1fcmVzb2x2ZXIubV9saW5lSGVpZ2h0ICogbV9saW5lSW5kZXgg
KyBtX3Jlc29sdmVyLm1fYmFzZWxpbmUgLSBtX3Jlc29sdmVyLm1fYXNjZW50KTsKLSAgICBMYXlv
dXRTaXplIGxpbmVTaXplKHJ1bi53aWR0aCwgbV9yZXNvbHZlci5tX2FzY2VudCArIG1fcmVzb2x2
ZXIubV9kZXNjZW50KTsKLSAgICByZXR1cm4gTGF5b3V0UmVjdChsaW5lUG9zaXRpb24gKyBtX3Jl
c29sdmVyLm1fY29udGVudE9mZnNldCwgbGluZVNpemUpOworICAgIExheW91dFBvaW50IGxpbmVQ
b3NpdGlvbihydW4ubGVmdCwgcmVzb2x2ZXIubV9saW5lSGVpZ2h0ICogbV9pdGVyYXRvci5saW5l
SW5kZXgoKSArIHJlc29sdmVyLm1fYmFzZWxpbmUgLSByZXNvbHZlci5tX2FzY2VudCk7CisgICAg
TGF5b3V0U2l6ZSBsaW5lU2l6ZShydW4ud2lkdGgsIHJlc29sdmVyLm1fYXNjZW50ICsgcmVzb2x2
ZXIubV9kZXNjZW50KTsKKyAgICByZXR1cm4gTGF5b3V0UmVjdChsaW5lUG9zaXRpb24gKyByZXNv
bHZlci5tX2NvbnRlbnRPZmZzZXQsIGxpbmVTaXplKTsKIH0KIAotaW5saW5lIExheW91dFBvaW50
IFJlc29sdmVyOjpSdW46OmJhc2VsaW5lKCkgY29uc3QKK2lubGluZSBMYXlvdXRQb2ludCBSdW5S
ZXNvbHZlcjo6UnVuOjpiYXNlbGluZSgpIGNvbnN0CiB7Ci0gICAgYXV0byYgcnVuID0gbV9yZXNv
bHZlci5tX2xheW91dC5ydW5zW21fbGluZUluZGV4XTsKKyAgICBhdXRvJiByZXNvbHZlciA9IG1f
aXRlcmF0b3IucmVzb2x2ZXIoKTsKKyAgICBhdXRvJiBydW4gPSBtX2l0ZXJhdG9yLnNpbXBsZVJ1
bigpOwogCi0gICAgZmxvYXQgYmFzZWxpbmVZID0gbV9yZXNvbHZlci5tX2xpbmVIZWlnaHQgKiBt
X2xpbmVJbmRleCArIG1fcmVzb2x2ZXIubV9iYXNlbGluZTsKLSAgICByZXR1cm4gTGF5b3V0UG9p
bnQocnVuLmxlZnQsIGJhc2VsaW5lWSkgKyBtX3Jlc29sdmVyLm1fY29udGVudE9mZnNldDsKKyAg
ICBmbG9hdCBiYXNlbGluZVkgPSByZXNvbHZlci5tX2xpbmVIZWlnaHQgKiBtX2l0ZXJhdG9yLmxp
bmVJbmRleCgpICsgcmVzb2x2ZXIubV9iYXNlbGluZTsKKyAgICByZXR1cm4gTGF5b3V0UG9pbnQo
cnVuLmxlZnQsIGJhc2VsaW5lWSkgKyByZXNvbHZlci5tX2NvbnRlbnRPZmZzZXQ7CiB9CiAKLWlu
bGluZSBTdHJpbmcgUmVzb2x2ZXI6OlJ1bjo6dGV4dCgpIGNvbnN0CitpbmxpbmUgU3RyaW5nIFJ1
blJlc29sdmVyOjpSdW46OnRleHQoKSBjb25zdAogewotICAgIGF1dG8mIHJ1biA9IG1fcmVzb2x2
ZXIubV9sYXlvdXQucnVuc1ttX2xpbmVJbmRleF07Ci0gICAgcmV0dXJuIG1fcmVzb2x2ZXIubV9z
dHJpbmcuc3Vic3RyaW5nU2hhcmluZ0ltcGwocnVuLnRleHRPZmZzZXQsIHJ1bi50ZXh0TGVuZ3Ro
KTsKKyAgICBhdXRvJiByZXNvbHZlciA9IG1faXRlcmF0b3IucmVzb2x2ZXIoKTsKKyAgICBhdXRv
JiBydW4gPSBtX2l0ZXJhdG9yLnNpbXBsZVJ1bigpOworICAgIHJldHVybiByZXNvbHZlci5tX3N0
cmluZy5zdWJzdHJpbmdTaGFyaW5nSW1wbChydW4udGV4dE9mZnNldCwgcnVuLnRleHRMZW5ndGgp
OwogfQogCi1pbmxpbmUgUmVzb2x2ZXI6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBSZXNvbHZl
ciYgcmVzb2x2ZXIsIHVuc2lnbmVkIGxpbmVJbmRleCkKLSAgICA6IG1fcmVzb2x2ZXIocmVzb2x2
ZXIpCi0gICAgLCBtX2xpbmVJbmRleChsaW5lSW5kZXgpCitpbmxpbmUgdW5zaWduZWQgUnVuUmVz
b2x2ZXI6OlJ1bjo6bGluZUluZGV4KCkgY29uc3QKIHsKKyAgICByZXR1cm4gbV9pdGVyYXRvci5s
aW5lSW5kZXgoKTsKIH0KIAotaW5saW5lIFJlc29sdmVyOjpJdGVyYXRvciYgUmVzb2x2ZXI6Okl0
ZXJhdG9yOjpvcGVyYXRvcisrKCkKK2lubGluZSBSdW5SZXNvbHZlcjo6SXRlcmF0b3I6Okl0ZXJh
dG9yKGNvbnN0IFJ1blJlc29sdmVyJiByZXNvbHZlciwgdW5zaWduZWQgcnVuSW5kZXgpCisgICAg
OiBtX3Jlc29sdmVyKHJlc29sdmVyKQorICAgICwgbV9ydW5JbmRleChydW5JbmRleCkKKyAgICAs
IG1fbGluZUluZGV4KDApCiB7Ci0gICAgKyttX2xpbmVJbmRleDsKLSAgICByZXR1cm4gKnRoaXM7
CiB9CiAKLWlubGluZSBSZXNvbHZlcjo6SXRlcmF0b3ImIFJlc29sdmVyOjpJdGVyYXRvcjo6b3Bl
cmF0b3ItLSgpCitpbmxpbmUgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yJiBSdW5SZXNvbHZlcjo6SXRl
cmF0b3I6Om9wZXJhdG9yKysoKQogewotICAgIC0tbV9saW5lSW5kZXg7CisgICAgaWYgKHNpbXBs
ZVJ1bigpLmlzRW5kT2ZMaW5lKQorICAgICAgICArK21fbGluZUluZGV4OworICAgICsrbV9ydW5J
bmRleDsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWlubGluZSBib29sIFJlc29sdmVyOjpJdGVy
YXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0CitpbmxpbmUgYm9v
bCBSdW5SZXNvbHZlcjo6SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVy
KSBjb25zdAogewogICAgIEFTU0VSVCgmbV9yZXNvbHZlciA9PSAmb3RoZXIubV9yZXNvbHZlcik7
Ci0gICAgcmV0dXJuIG1fbGluZUluZGV4ID09IG90aGVyLm1fbGluZUluZGV4OworICAgIHJldHVy
biBtX3J1bkluZGV4ID09IG90aGVyLm1fcnVuSW5kZXg7CiB9CiAKLWlubGluZSBib29sIFJlc29s
dmVyOjpJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0Citp
bmxpbmUgYm9vbCBSdW5SZXNvbHZlcjo6SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3QgSXRlcmF0
b3ImIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAot
aW5saW5lIFJlc29sdmVyOjpSdW4gUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvciooKSBjb25z
dAoraW5saW5lIFJ1blJlc29sdmVyOjpSdW4gUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRv
ciooKSBjb25zdAogewotICAgIHJldHVybiBSdW4obV9yZXNvbHZlciwgbV9saW5lSW5kZXgpOwor
ICAgIHJldHVybiBSdW4oKnRoaXMpOwogfQogCi1pbmxpbmUgUmVzb2x2ZXI6OlJlc29sdmVyKGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCitpbmxpbmUg
Y29uc3QgU2ltcGxlTGluZUxheW91dDo6UnVuJiBSdW5SZXNvbHZlcjo6SXRlcmF0b3I6OnNpbXBs
ZVJ1bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzb2x2ZXIubV9sYXlvdXQucnVuc1ttX3J1
bkluZGV4XTsKK30KKworaW5saW5lIFJ1blJlc29sdmVyOjpSdW5SZXNvbHZlcihjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQogICAgIDogbV9sYXlvdXQo
bGF5b3V0KQogICAgICwgbV9zdHJpbmcodG9SZW5kZXJUZXh0KCpmbG93LmZpcnN0Q2hpbGQoKSku
dGV4dCgpKQogICAgICwgbV9saW5lSGVpZ2h0KGxpbmVIZWlnaHRGcm9tRmxvdyhmbG93KSkKQEAg
LTE2NSw0MSArMjAzLDc0IEBAIGlubGluZSBSZXNvbHZlcjo6UmVzb2x2ZXIoY29uc3QgUmVuZGVy
QmwKIHsKIH0KIAotaW5saW5lIHVuc2lnbmVkIFJlc29sdmVyOjpzaXplKCkgY29uc3QKK2lubGlu
ZSBSdW5SZXNvbHZlcjo6SXRlcmF0b3IgUnVuUmVzb2x2ZXI6OmJlZ2luKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9sYXlvdXQucnVucy5zaXplKCk7CisgICAgcmV0dXJuIEl0ZXJhdG9yKCp0aGlz
LCAwKTsKIH0KIAotaW5saW5lIFJlc29sdmVyOjpJdGVyYXRvciBSZXNvbHZlcjo6YmVnaW4oKSBj
b25zdAoraW5saW5lIFJ1blJlc29sdmVyOjpJdGVyYXRvciBSdW5SZXNvbHZlcjo6ZW5kKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gSXRlcmF0b3IoKnRoaXMsIDApOworICAgIHJldHVybiBJdGVyYXRv
cigqdGhpcywgbV9sYXlvdXQucnVucy5zaXplKCkpOworfQorCitpbmxpbmUgTGluZVJlc29sdmVy
OjpJdGVyYXRvcjo6SXRlcmF0b3IoUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yJiYgcnVuSXRlcmF0b3Ip
CisgICAgOiBtX3J1bkl0ZXJhdG9yKHJ1bkl0ZXJhdG9yKQoreworfQorCitpbmxpbmUgTGluZVJl
c29sdmVyOjpJdGVyYXRvciYgTGluZVJlc29sdmVyOjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpCit7
CisgICAgdW5zaWduZWQgcHJldmlvdXNMaW5lID0gbV9ydW5JdGVyYXRvci5saW5lSW5kZXgoKTsK
KyAgICB3aGlsZSAoKCsrbV9ydW5JdGVyYXRvcikubGluZUluZGV4KCkgPT0gcHJldmlvdXNMaW5l
KSB7IH0KKworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIGJvb2wgTGluZVJlc29sdmVy
OjpJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcnVuSXRlcmF0b3IgPT0gb3RoZXIubV9ydW5JdGVyYXRvcjsKK30KKworaW5s
aW5lIGJvb2wgTGluZVJlc29sdmVyOjpJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRv
ciYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcnVuSXRlcmF0b3IgIT0gb3RoZXIubV9y
dW5JdGVyYXRvcjsKK30KKworaW5saW5lIGNvbnN0IExheW91dFJlY3QgTGluZVJlc29sdmVyOjpJ
dGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBMYXlvdXRSZWN0IHJlY3Q7CisgICAg
dW5zaWduZWQgY3VycmVudExpbmUgPSBtX3J1bkl0ZXJhdG9yLmxpbmVJbmRleCgpOworICAgIGF1
dG8gaXQgPSBtX3J1bkl0ZXJhdG9yOworICAgIHJlY3QudW5pdGUoKCppdCkucmVjdCgpKTsKKyAg
ICB3aGlsZSAoKCsraXQpLmxpbmVJbmRleCgpID09IGN1cnJlbnRMaW5lKQorICAgICAgICByZWN0
LnVuaXRlKCgqaXQpLnJlY3QoKSk7CisKKyAgICByZXR1cm4gcmVjdDsKIH0KIAotaW5saW5lIFJl
c29sdmVyOjpJdGVyYXRvciBSZXNvbHZlcjo6ZW5kKCkgY29uc3QKK2lubGluZSBMaW5lUmVzb2x2
ZXI6OkxpbmVSZXNvbHZlcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91
dCYgbGF5b3V0KQorICAgIDogbV9ydW5SZXNvbHZlcihmbG93LCBsYXlvdXQpCiB7Ci0gICAgcmV0
dXJuIEl0ZXJhdG9yKCp0aGlzLCBzaXplKCkpOwogfQogCi1pbmxpbmUgUmVzb2x2ZXI6Okl0ZXJh
dG9yIFJlc29sdmVyOjpsYXN0KCkgY29uc3QKK2lubGluZSBMaW5lUmVzb2x2ZXI6Okl0ZXJhdG9y
IExpbmVSZXNvbHZlcjo6YmVnaW4oKSBjb25zdAogewotICAgIEFTU0VSVChzaXplKCkpOwotICAg
IHJldHVybiBJdGVyYXRvcigqdGhpcywgc2l6ZSgpIC0gMSk7CisgICAgcmV0dXJuIEl0ZXJhdG9y
KG1fcnVuUmVzb2x2ZXIuYmVnaW4oKSk7CiB9CiAKLWlubGluZSBSZXNvbHZlcjo6SXRlcmF0b3Ig
UmVzb2x2ZXI6Om9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0CitpbmxpbmUgTGluZVJl
c29sdmVyOjpJdGVyYXRvciBMaW5lUmVzb2x2ZXI6OmVuZCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KGluZGV4IDwgc2l6ZSgpKTsKLSAgICByZXR1cm4gSXRlcmF0b3IoKnRoaXMsIGluZGV4KTsKKyAg
ICByZXR1cm4gSXRlcmF0b3IobV9ydW5SZXNvbHZlci5lbmQoKSk7CiB9CiAKLWlubGluZSBSZXNv
bHZlciBydW5SZXNvbHZlcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91
dCYgbGF5b3V0KQoraW5saW5lIFJ1blJlc29sdmVyIHJ1blJlc29sdmVyKGNvbnN0IFJlbmRlckJs
b2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiB7Ci0gICAgcmV0dXJuIFJlc29s
dmVyKGZsb3csIGxheW91dCk7CisgICAgcmV0dXJuIFJ1blJlc29sdmVyKGZsb3csIGxheW91dCk7
CiB9CiAKLWlubGluZSBSZXNvbHZlciBsaW5lUmVzb2x2ZXIoY29uc3QgUmVuZGVyQmxvY2tGbG93
JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCkKK2lubGluZSBMaW5lUmVzb2x2ZXIgbGluZVJl
c29sdmVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQp
CiB7Ci0gICAgcmV0dXJuIFJlc29sdmVyKGZsb3csIGxheW91dCk7CisgICAgcmV0dXJuIExpbmVS
ZXNvbHZlcihmbG93LCBsYXlvdXQpOwogfQogCiB9Cg==
</data>
<flag name="review"
          id="238100"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>