<?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>204680</bug_id>
          
          <creation_ts>2019-11-28 06:07:01 -0800</creation_ts>
          <short_desc>[LFC][IFC] Vector allocate InlineItemRuns</short_desc>
          <delta_ts>2019-11-28 08:07:22 -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>WebKit 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>InRadar</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>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1594022</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-28 06:07:01 -0800</bug_when>
    <thetext>For performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594029</commentid>
    <comment_count>1</comment_count>
      <attachid>384452</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-28 06:27:45 -0800</bug_when>
    <thetext>Created attachment 384452
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594031</commentid>
    <comment_count>2</comment_count>
      <attachid>384453</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-28 06:35:43 -0800</bug_when>
    <thetext>Created attachment 384453
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594036</commentid>
    <comment_count>3</comment_count>
      <attachid>384453</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-28 06:58:25 -0800</bug_when>
    <thetext>Comment on attachment 384453
patch

Rejecting attachment 384453 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 384453, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=384453&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=204680&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 384453 from bug 204680.
Fetching: https://bugs.webkit.org/attachment.cgi?id=384453
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Zalan Bujtas&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 3 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp
Hunk #4 succeeded at 215 (offset 1 line).
Hunk #6 succeeded at 448 with fuzz 2 (offset 25 lines).
Hunk #7 succeeded at 485 (offset 23 lines).
Hunk #8 FAILED at 502.
Hunk #9 succeeded at 529 with fuzz 2 (offset 25 lines).
Hunk #10 FAILED at 548.
Hunk #11 succeeded at 687 with fuzz 1 (offset 54 lines).
Hunk #12 succeeded at 714 (offset 54 lines).
2 out of 12 hunks FAILED -- saving rejects to file Source/WebCore/layout/inlineformatting/InlineLineBuilder.cpp.rej
patching file Source/WebCore/layout/inlineformatting/InlineLineBuilder.h
Hunk #3 succeeded at 150 with fuzz 1 (offset 2 lines).
Hunk #4 succeeded at 213 (offset 3 lines).

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Zalan Bujtas&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/13282252</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594039</commentid>
    <comment_count>4</comment_count>
      <attachid>384456</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-28 07:22:13 -0800</bug_when>
    <thetext>Created attachment 384456
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594052</commentid>
    <comment_count>5</comment_count>
      <attachid>384456</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-28 08:06:18 -0800</bug_when>
    <thetext>Comment on attachment 384456
patch

Clearing flags on attachment: 384456

Committed r252928: &lt;https://trac.webkit.org/changeset/252928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594053</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-28 08:06:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594054</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-28 08:07:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/57521063&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384452</attachid>
            <date>2019-11-28 06:27:45 -0800</date>
            <delta_ts>2019-11-28 06:35:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-vector-allocate-inlineitemruns.patch</filename>
            <type>text/plain</type>
            <size>19935</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzY2ZjYWViNmEzMy4uYTQ5ODQwZDFlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MiBAQAorMjAxOS0xMS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSUZDXSBWZWN0b3IgYWxsb2NhdGUgSW5saW5lSXRlbVJ1bnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY4MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBoZWFw
IGFsbG9jYXRpb25zIGR1cmluZyBpbmxpbmUgbGF5b3V0LgorCisgICAgICAgIFRoaXMgaXMgfjE1
JSBzcGVlZHVwIGluIFBlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xpbmUtbGF5b3V0LXNpbXBsZS5o
dG1sIHdpdGggTEZDLWluLXJlbmRlci10cmVlIGVuYWJsZWQuCisgICAgICAgIFdpdGggb3RoZXIg
aW1wcm92ZW1lbnRzIGl0IG1ha2VzIExGQyBwYXRoIGZhc3RlciB0aGFuIHNpbXBsZSBsaW5lIGxh
eW91dCBpbiB0aGlzIHRlc3QuCisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpDb250aW5vdXNDb250ZW50OjpDb250aW5vdXNDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OkNvbnRpbm91c0NvbnRlbnQ6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpDb250aW5vdXNDb250ZW50OjpjbG9z
ZSk6CisKKyAgICAgICAgTW92ZSB0byBMaW5lQnVpbGRlciBuYW1lc3BhY2UuCisKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUJ1aWxkZXI6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmROb25CcmVha2FibGVT
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmRUZXh0
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmRO
b25SZXBsYWNlZElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjphcHBlbmRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6VHJpbW1hYmxlQ29udGVudDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJ1aWxkZXI6OmZvcm1hdHRpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OklubGluZUl0ZW1SdW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6c2V0
Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lSXRlbVJ1bjo6bGF5b3V0Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lSXRlbVJ1bjo6bG9naWNhbFJlY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtUnVuOjp0ZXh0Q29udGV4dCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46Omlz
VGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0
ZW1SdW46OmlzQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lSXRlbVJ1bjo6aXNDb250YWluZXJTdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46OmlzQ29udGFpbmVyRW5kIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lSXRlbVJ1bjo6aXNGb3Jj
ZWRMaW5lQnJlYWsgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVJdGVtUnVuOjp0eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lSXRlbVJ1bjo6c2V0SXNDb2xsYXBzZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtUnVuOjppc0NvbGxhcHNlZCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46OmlzQ29sbGFwc2Vk
VG9aZXJvQWR2YW5jZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lSXRlbVJ1bjo6aXNDb2xsYXBzaWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46OmlzV2hpdGVzcGFjZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46Omhhc0V4
cGFuc2lvbk9wcG9ydHVuaXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lSXRlbVJ1bjo6SW5saW5lSXRlbVJ1bik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46OnNldENvbGxhcHNlc1RvWmVyb0FkdmFuY2VX
aWR0aCk6IERlbGV0ZWQuCisKKyAgICAgICAgTW92ZSBJbmxpbmVJdGVtUnVuIHRvIGhlYWRlciBp
biBMaW5lQnVpbGRlciBuYW1lc3BhY2Ugc28gd2UgY2FuIHVzZSBkaXJlY3RseSBpbiBtX2lubGlu
ZUl0ZW1SdW5zIHZlY3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW5vdXND
b250ZW50OjpjYW5CZUV4cGFuZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Q29udGlub3VzQ29udGVudDo6Y2FuQmVNZXJnZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW5vdXNDb250ZW50OjpDb250aW5vdXNDb250ZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGlub3VzQ29udGVudDo6YXBw
ZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGlub3VzQ29udGVu
dDo6Y2xvc2UpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVy
OjpJbmxpbmVJdGVtUnVuOjpsYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6bG9naWNhbFJlY3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6dGV4dENv
bnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5s
aW5lSXRlbVJ1bjo6aXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OmlzQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OmlzQ29udGFpbmVyU3RhcnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1
bjo6aXNDb250YWluZXJFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6aXNGb3JjZWRMaW5lQnJlYWsgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6dHlwZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVu
OjpzZXRJc0NvbGxhcHNlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVy
OjpJbmxpbmVJdGVtUnVuOjppc0NvbGxhcHNlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjppc0NvbGxhcHNlZFRvWmVyb0FkdmFu
Y2VXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpJ
bmxpbmVJdGVtUnVuOjppc0NvbGxhcHNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OmlzV2hpdGVzcGFjZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjpoYXNF
eHBhbnNpb25PcHBvcnR1bml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmVCdWlsZGVyOjpUcmltbWFibGVDb250ZW50OjpydW5JbmRleGVzKToKKworICAgICAgICBNYWtl
IFRyaW1tYWJsZUNvbnRlbnQgY29sbGVjdCBpbmRleGVzIHRvIElubGluZUl0ZW1SdW4gdmVjdG9y
IGluc3RlYWQgb2YgcG9pbnRlci4KKyAgICAgICAgV2Ugb25seSBldmVyIGFwcGVuZCB0byB0aGUg
dmVjdG9yIHNvIHRoZSBpbmRleGVzIHN0YXkgdmFsaWQgZm9yIFRyaW1tYWJsZUNvbnRlbnQgbGlm
ZXRpbWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OlRyaW1tYWJs
ZUNvbnRlbnQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6VHJpbW1hYmxlQ29udGVudDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6VHJpbW1hYmxlQ29udGVudDo6cnVucyk6IERlbGV0ZWQuCisKIDIw
MTktMTEtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHU3RyZWFtZXJdIE1vdmUgR0wgdmlkZW8gc2luayB0byBpdHMgb3duIEdzdEJpbiBzdWIt
Y2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCBhN2M3ZTE2MTNiMy4uM2MwNGE3NjM2
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTM1LDU1ICszNSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotY2xhc3MgSW5saW5lSXRlbVJ1biB7
Ci1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lOTElORShJbmxpbmVJdGVtUnVuKTsKLXB1YmxpYzoK
LSAgICBJbmxpbmVJdGVtUnVuKGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBEaXNwbGF5OjpSZWN0
JiwgV1RGOjpPcHRpb25hbDxEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0PiA9IFdURjo6bnVsbG9w
dCk7Ci0KLSAgICBjb25zdCBCb3gmIGxheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5l
SXRlbS5sYXlvdXRCb3goKTsgfQotICAgIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2ljYWxSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdDsgfQotICAgIGNvbnN0IE9wdGlvbmFsPERp
c3BsYXk6OlJ1bjo6VGV4dENvbnRleHQ+JiB0ZXh0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dENvbnRleHQ7IH0KLQotICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxp
bmVJdGVtLmlzVGV4dCgpOyB9Ci0gICAgYm9vbCBpc0JveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5s
aW5lSXRlbS5pc0JveCgpOyB9Ci0gICAgYm9vbCBpc0NvbnRhaW5lclN0YXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmxpbmVJdGVtLmlzQ29udGFpbmVyU3RhcnQoKTsgfQotICAgIGJvb2wgaXNDb250
YWluZXJFbmQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW0uaXNDb250YWluZXJFbmQoKTsg
fQotICAgIGJvb2wgaXNGb3JjZWRMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0
ZW0uaXNGb3JjZWRMaW5lQnJlYWsoKTsgfQotICAgIElubGluZUl0ZW06OlR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbS50eXBlKCk7IH0KLQotICAgIHZvaWQgc2V0SXNDb2xs
YXBzZWQoKSB7IG1faXNDb2xsYXBzZWQgPSB0cnVlOyB9Ci0gICAgYm9vbCBpc0NvbGxhcHNlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsYXBzZWQ7IH0KLQotICAgIHZvaWQgc2V0Q29sbGFwc2Vz
VG9aZXJvQWR2YW5jZVdpZHRoKCk7Ci0gICAgYm9vbCBpc0NvbGxhcHNlZFRvWmVyb0FkdmFuY2VX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRoOyB9Ci0K
LSAgICBib29sIGlzQ29sbGFwc2libGUoKSBjb25zdCB7IHJldHVybiBpczxJbmxpbmVUZXh0SXRl
bT4obV9pbmxpbmVJdGVtKSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVt
KS5pc0NvbGxhcHNpYmxlKCk7IH0KLSAgICBib29sIGlzV2hpdGVzcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIGlzPElubGluZVRleHRJdGVtPihtX2lubGluZUl0ZW0pICYmIGRvd25jYXN0PElubGluZVRl
eHRJdGVtPihtX2lubGluZUl0ZW0pLmlzV2hpdGVzcGFjZSgpOyB9Ci0KLSAgICBib29sIGhhc0V4
cGFuc2lvbk9wcG9ydHVuaXR5KCkgY29uc3QgeyByZXR1cm4gaXNXaGl0ZXNwYWNlKCkgJiYgIWlz
Q29sbGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRoKCk7IH0KLQotcHJpdmF0ZToKLSAgICBjb25zdCBJ
bmxpbmVJdGVtJiBtX2lubGluZUl0ZW07Ci0gICAgRGlzcGxheTo6UmVjdCBtX2xvZ2ljYWxSZWN0
OwotICAgIGNvbnN0IE9wdGlvbmFsPERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQ+IG1fdGV4dENv
bnRleHQ7Ci0gICAgYm9vbCBtX2lzQ29sbGFwc2VkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fY29s
bGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRoIHsgZmFsc2UgfTsKLX07Ci0KLUlubGluZUl0ZW1SdW46
OklubGluZUl0ZW1SdW4oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgRGlzcGxh
eTo6UmVjdCYgbG9naWNhbFJlY3QsIFdURjo6T3B0aW9uYWw8RGlzcGxheTo6UnVuOjpUZXh0Q29u
dGV4dD4gdGV4dENvbnRleHQpCi0gICAgOiBtX2lubGluZUl0ZW0oaW5saW5lSXRlbSkKLSAgICAs
IG1fbG9naWNhbFJlY3QobG9naWNhbFJlY3QpCi0gICAgLCBtX3RleHRDb250ZXh0KHRleHRDb250
ZXh0KQotewotfQotCi12b2lkIElubGluZUl0ZW1SdW46OnNldENvbGxhcHNlc1RvWmVyb0FkdmFu
Y2VXaWR0aCgpCi17Ci0gICAgbV9jb2xsYXBzZWRUb1plcm9BZHZhbmNlV2lkdGggPSB0cnVlOwot
ICAgIG1fbG9naWNhbFJlY3Quc2V0V2lkdGgoeyB9KTsKLX0KLQotc3RydWN0IENvbnRpbm91c0Nv
bnRlbnQgeworc3RydWN0IExpbmVCdWlsZGVyOjpDb250aW5vdXNDb250ZW50IHsKIHB1YmxpYzoK
ICAgICBDb250aW5vdXNDb250ZW50KGNvbnN0IElubGluZUl0ZW1SdW4mLCBib29sIHRleHRJc0Fs
aWduSnVzdGlmeSk7CiAKQEAgLTEwMywxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgeyAwIH07CiB9OwogCi1Db250aW5vdXNDb250
ZW50OjpDb250aW5vdXNDb250ZW50KGNvbnN0IElubGluZUl0ZW1SdW4mIGluaXRpYWxJbmxpbmVS
dW4sIGJvb2wgdGV4dElzQWxpZ25KdXN0aWZ5KQorTGluZUJ1aWxkZXI6OkNvbnRpbm91c0NvbnRl
bnQ6OkNvbnRpbm91c0NvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJ1biYgaW5pdGlhbElubGluZVJ1
biwgYm9vbCB0ZXh0SXNBbGlnbkp1c3RpZnkpCiAgICAgOiBtX2luaXRpYWxJbmxpbmVSdW4oaW5p
dGlhbElubGluZVJ1bikKICAgICAsIG1fdGV4dElzQWxpZ25KdXN0aWZ5KHRleHRJc0FsaWduSnVz
dGlmeSkKICAgICAsIG1fdHJhaWxpbmdSdW5DYW5CZUV4cGFuZGVkKGNhbkJlRXhwYW5kZWQoaW5p
dGlhbElubGluZVJ1bikpCiB7CiB9CiAKLWJvb2wgQ29udGlub3VzQ29udGVudDo6YXBwZW5kKGNv
bnN0IElubGluZUl0ZW1SdW4mIGlubGluZUl0ZW1SdW4pCitib29sIExpbmVCdWlsZGVyOjpDb250
aW5vdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbVJ1biYgaW5saW5lSXRlbVJ1bikK
IHsKICAgICAvLyBNZXJnZWQgY29udGVudCBuZWVkcyB0byBiZSBjb250aW51b3VzLgogICAgIGlm
ICghbV90cmFpbGluZ1J1bkNhbkJlRXhwYW5kZWQpCkBAIC0xMzIsNyArODQsNyBAQCBib29sIENv
bnRpbm91c0NvbnRlbnQ6OmFwcGVuZChjb25zdCBJbmxpbmVJdGVtUnVuJiBpbmxpbmVJdGVtUnVu
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1MaW5lQnVpbGRlcjo6UnVuIENvbnRpbm91c0NvbnRl
bnQ6OmNsb3NlKCkKK0xpbmVCdWlsZGVyOjpSdW4gTGluZUJ1aWxkZXI6OkNvbnRpbm91c0NvbnRl
bnQ6OmNsb3NlKCkKIHsKICAgICBpZiAoIW1fZXhwYW5kZWRMZW5ndGgpCiAgICAgICAgIHJldHVy
biB7IG1faW5pdGlhbElubGluZVJ1biB9OwpAQCAtMjYyLDkgKzIxNCw5IEBAIExpbmVCdWlsZGVy
OjpSdW5MaXN0IExpbmVCdWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQg
aXNMYXN0TGluZVdpCiAgICAgdW5zaWduZWQgcnVuSW5kZXggPSAwOwogICAgIHdoaWxlIChydW5J
bmRleCA8IG1faW5saW5lSXRlbVJ1bnMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIE1lcmdlIGVsaWdp
YmxlIHJ1bnMuCi0gICAgICAgIGF1dG8gY29udGlub3VzQ29udGVudCA9IENvbnRpbm91c0NvbnRl
bnQgeyAqbV9pbmxpbmVJdGVtUnVuc1tydW5JbmRleF0sIGlzVGV4dEFsaWduSnVzdGlmeSgpIH07
CisgICAgICAgIGF1dG8gY29udGlub3VzQ29udGVudCA9IENvbnRpbm91c0NvbnRlbnQgeyBtX2lu
bGluZUl0ZW1SdW5zW3J1bkluZGV4XSwgaXNUZXh0QWxpZ25KdXN0aWZ5KCkgfTsKICAgICAgICAg
d2hpbGUgKCsrcnVuSW5kZXggPCBtX2lubGluZUl0ZW1SdW5zLnNpemUoKSkgewotICAgICAgICAg
ICAgaWYgKCFjb250aW5vdXNDb250ZW50LmFwcGVuZCgqbV9pbmxpbmVJdGVtUnVuc1tydW5JbmRl
eF0pKQorICAgICAgICAgICAgaWYgKCFjb250aW5vdXNDb250ZW50LmFwcGVuZChtX2lubGluZUl0
ZW1SdW5zW3J1bkluZGV4XSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgcnVuTGlzdC5hcHBlbmQoY29udGlub3VzQ29udGVudC5jbG9zZSgpKTsKQEAgLTQyOSwx
MCArMzgxLDExIEBAIHZvaWQgTGluZUJ1aWxkZXI6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29u
dGVudCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENvbGxhcHNlIHRyaW1tYWJsZSB0cmFp
bGluZyBjb250ZW50Ci0gICAgZm9yIChhdXRvKiB0cmltbWFibGVSdW4gOiBtX3RyaW1tYWJsZUNv
bnRlbnQucnVucygpKSB7Ci0gICAgICAgIEFTU0VSVCh0cmltbWFibGVSdW4tPmlzVGV4dCgpKTsK
KyAgICBmb3IgKGF1dG8gdHJpbW1hYmxlUnVuSW5kZXggOiBtX3RyaW1tYWJsZUNvbnRlbnQucnVu
SW5kZXhlcygpKSB7CisgICAgICAgIGF1dG8mIHRyaW1tYWJsZVJ1biA9IG1faW5saW5lSXRlbVJ1
bnNbdHJpbW1hYmxlUnVuSW5kZXhdOworICAgICAgICBBU1NFUlQodHJpbW1hYmxlUnVuLmlzVGV4
dCgpKTsKICAgICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQgdG8gYmUgYWJsZSB0byBkaWZm
ZXJlbnRpYXRlIGJldHdlZW4gdHJpbW1lZCBhbmQgY29sbGFwc2VkIHJ1bnMuCi0gICAgICAgIHRy
aW1tYWJsZVJ1bi0+c2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCk7CisgICAgICAgIHRy
aW1tYWJsZVJ1bi5zZXRDb2xsYXBzZXNUb1plcm9BZHZhbmNlV2lkdGgoKTsKICAgICB9CiAgICAg
bV9saW5lQm94LnNocmlua0hvcml6b250YWxseShtX3RyaW1tYWJsZUNvbnRlbnQud2lkdGgoKSk7
CiAgICAgbV90cmltbWFibGVDb250ZW50LmNsZWFyKCk7CkBAIC00NzAsNyArNDIzLDcgQEAgdm9p
ZCBMaW5lQnVpbGRlcjo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91
dFVuaXQgbG9naWNhbFdpZHRoKQogCiB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmROb25CcmVha2Fi
bGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBEaXNwbGF5OjpSZWN0
JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2lubGluZUl0ZW1SdW5zLmFwcGVuZChtYWtlVW5pcXVl
PElubGluZUl0ZW1SdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9pbmxpbmVJ
dGVtUnVucy5hcHBlbmQoeyBpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCB9KTsKICAgICBtX2xpbmVC
b3guZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOwogICAgIGlmIChsb2dp
Y2FsUmVjdC53aWR0aCgpKQogICAgICAgICBtX2xpbmVCb3guc2V0SXNDb25zaWRlcmVkTm9uRW1w
dHkoKTsKQEAgLTUwOSwxNiArNDYyLDE2IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFwcGVuZFRleHRD
b250ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0CiAgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGl0ZW0gaXMgY29sbGFwc2VkIGFzIHdlbGwuCiAgICAg
ICAgIGZvciAoYXV0byBpID0gbV9pbmxpbmVJdGVtUnVucy5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgICAgIGF1dG8mIHJ1biA9IG1faW5saW5lSXRlbVJ1bnNbaV07Ci0gICAgICAgICAgICBpZiAo
cnVuLT5pc0JveCgpKQorICAgICAgICAgICAgaWYgKHJ1bi5pc0JveCgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3MtdGV4dC0zLyN3aGl0ZS1zcGFjZS1waGFzZS0xCiAgICAgICAgICAgICAvLyBBbnkgY29s
bGFwc2libGUgc3BhY2UgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGFub3RoZXIgY29sbGFwc2libGUg
c3BhY2XigJRldmVuIG9uZSBvdXRzaWRlIHRoZSBib3VuZGFyeSBvZiB0aGUgaW5saW5lIGNvbnRh
aW5pbmcgdGhhdCBzcGFjZSwKICAgICAgICAgICAgIC8vIHByb3ZpZGVkIGJvdGggc3BhY2VzIGFy
ZSB3aXRoaW4gdGhlIHNhbWUgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dOKAlGlzIGNvbGxhcHNl
ZCB0byBoYXZlIHplcm8gYWR2YW5jZSB3aWR0aC4KICAgICAgICAgICAgIC8vIDogIjxzcGFuPiAg
PC9zcGFuPiAiIDwtIHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGNvbGxhcHNlcyBjb21wbGV0ZWx5
LgogICAgICAgICAgICAgLy8gTm90IHRoYXQgd2hlbiB0aGUgaW5saW5lIGNvbnRhaW5lciBoYXMg
cHJlc2VydmUgd2hpdGVzcGFjZSBzdHlsZSwgIjxzcGFuIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJl
Ij4gIDwvc3Bhbj4gIiA8LSB0aGlzIHdoaXRlc3BhY2Ugc3RheXMgYXJvdW5kLgotICAgICAgICAg
ICAgaWYgKHJ1bi0+aXNUZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bi0+aXNDb2xs
YXBzaWJsZSgpOwotICAgICAgICAgICAgQVNTRVJUKHJ1bi0+aXNDb250YWluZXJTdGFydCgpIHx8
IHJ1bi0+aXNDb250YWluZXJFbmQoKSk7CisgICAgICAgICAgICBpZiAocnVuLmlzVGV4dCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBydW4uaXNDb2xsYXBzaWJsZSgpOworICAgICAgICAgICAg
QVNTRVJUKHJ1bi5pc0NvbnRhaW5lclN0YXJ0KCkgfHwgcnVuLmlzQ29udGFpbmVyRW5kKCkpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CkBAIC01MjYsMjEgKzQ3OSwy
MSBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0
SXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdAogICAgIGF1dG8gY29sbGFwc2VkUnVuID0gaW5s
aW5lSXRlbS5pc0NvbGxhcHNpYmxlKCkgJiYgaW5saW5lSXRlbS5sZW5ndGgoKSA+IDE7CiAgICAg
YXV0byBjb250ZW50U3RhcnQgPSBpbmxpbmVJdGVtLnN0YXJ0KCk7CiAgICAgYXV0byBjb250ZW50
TGVuZ3RoID0gIGNvbGxhcHNlZFJ1biA/IDEgOiBpbmxpbmVJdGVtLmxlbmd0aCgpOwotICAgIGF1
dG8gbGluZVJ1biA9IG1ha2VVbmlxdWU8SW5saW5lSXRlbVJ1bj4oaW5saW5lSXRlbSwgRGlzcGxh
eTo6UmVjdCB7IDAsIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSwgbG9naWNhbFdpZHRoLCB7IH0gfSwK
LSAgICAgICAgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IGNvbnRlbnRTdGFydCwgY29udGVu
dExlbmd0aCwgaW5saW5lSXRlbS5sYXlvdXRCb3goKS50ZXh0Q29udGV4dCgpLT5jb250ZW50IH0p
OworICAgIGF1dG8gbGluZVJ1biA9IElubGluZUl0ZW1SdW4geyBpbmxpbmVJdGVtLCBEaXNwbGF5
OjpSZWN0IHsgMCwgY29udGVudExvZ2ljYWxXaWR0aCgpLCBsb2dpY2FsV2lkdGgsIHsgfSB9LAor
ICAgICAgICBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgY29udGVudFN0YXJ0LCBjb250ZW50
TGVuZ3RoLCBpbmxpbmVJdGVtLmxheW91dEJveCgpLnRleHRDb250ZXh0KCktPmNvbnRlbnQgfSB9
OwogCiAgICAgYXV0byBjb2xsYXBzZXNUb1plcm9BZHZhbmNlV2lkdGggPSB3aWxsQ29sbGFwc2VD
b21wbGV0ZWx5KCk7CiAgICAgaWYgKGNvbGxhcHNlc1RvWmVyb0FkdmFuY2VXaWR0aCkKLSAgICAg
ICAgbGluZVJ1bi0+c2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCk7CisgICAgICAgIGxp
bmVSdW4uc2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCk7CiAgICAgZWxzZQogICAgICAg
ICBtX2xpbmVCb3guc2V0SXNDb25zaWRlcmVkTm9uRW1wdHkoKTsKIAogICAgIGlmIChjb2xsYXBz
ZWRSdW4pCi0gICAgICAgIGxpbmVSdW4tPnNldElzQ29sbGFwc2VkKCk7CisgICAgICAgIGxpbmVS
dW4uc2V0SXNDb2xsYXBzZWQoKTsKICAgICBpZiAoaXNUcmltbWFibGUpCi0gICAgICAgIG1fdHJp
bW1hYmxlQ29udGVudC5hcHBlbmQoKmxpbmVSdW4pOworICAgICAgICBtX3RyaW1tYWJsZUNvbnRl
bnQuYXBwZW5kKGxpbmVSdW4sIG1faW5saW5lSXRlbVJ1bnMuc2l6ZSgpKTsKIAotICAgIG1fbGlu
ZUJveC5leHBhbmRIb3Jpem9udGFsbHkobGluZVJ1bi0+bG9naWNhbFJlY3QoKS53aWR0aCgpKTsK
KyAgICBtX2xpbmVCb3guZXhwYW5kSG9yaXpvbnRhbGx5KGxpbmVSdW4ubG9naWNhbFJlY3QoKS53
aWR0aCgpKTsKICAgICBtX2lubGluZUl0ZW1SdW5zLmFwcGVuZChXVEZNb3ZlKGxpbmVSdW4pKTsK
IH0KIApAQCAtNTQ5LDcgKzUwMiw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFwcGVuZE5vblJlcGxh
Y2VkSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91CiAgICAgYXV0
byYgbGF5b3V0Qm94ID0gaW5saW5lSXRlbS5sYXlvdXRCb3goKTsKICAgICBhdXRvJiBib3hHZW9t
ZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAg
ICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBib3hHZW9tZXRyeS5ob3Jpem9udGFsTWFyZ2luKCk7
Ci0gICAgbV9pbmxpbmVJdGVtUnVucy5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVJdGVtUnVuPihp
bmxpbmVJdGVtLCBEaXNwbGF5OjpSZWN0IHsgMCwgY29udGVudExvZ2ljYWxXaWR0aCgpICsgaG9y
aXpvbnRhbE1hcmdpbi5zdGFydCwgbG9naWNhbFdpZHRoLCB7IH0gfSkpOworICAgIG1faW5saW5l
SXRlbVJ1bnMuYXBwZW5kKHsgaW5saW5lSXRlbSwgRGlzcGxheTo6UmVjdCB7IDAsIGNvbnRlbnRM
b2dpY2FsV2lkdGgoKSArIGhvcml6b250YWxNYXJnaW4uc3RhcnQsIGxvZ2ljYWxXaWR0aCwgeyB9
IH0gfSk7CiAgICAgbV9saW5lQm94LmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsV2lkdGggKyBo
b3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgaG9yaXpvbnRhbE1hcmdpbi5lbmQpOwogICAgIG1fbGlu
ZUJveC5zZXRJc0NvbnNpZGVyZWROb25FbXB0eSgpOwogICAgIG1fdHJpbW1hYmxlQ29udGVudC5j
bGVhcigpOwpAQCAtNTY4LDcgKzUyMSw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFwcGVuZFJlcGxh
Y2VkSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuCiB2b2lk
IExpbmVCdWlsZGVyOjphcHBlbmRMaW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRl
bSkKIHsKICAgICBtX2xpbmVCb3guc2V0SXNDb25zaWRlcmVkTm9uRW1wdHkoKTsKLSAgICBtX2lu
bGluZUl0ZW1SdW5zLmFwcGVuZChtYWtlVW5pcXVlPElubGluZUl0ZW1SdW4+KGlubGluZUl0ZW0s
IERpc3BsYXk6OlJlY3QgeyAwLCBjb250ZW50TG9naWNhbFdpZHRoKCksIHsgfSwgeyB9IH0pKTsK
KyAgICBtX2lubGluZUl0ZW1SdW5zLmFwcGVuZCh7IGlubGluZUl0ZW0sIERpc3BsYXk6OlJlY3Qg
eyAwLCBjb250ZW50TG9naWNhbFdpZHRoKCksIHsgfSwgeyB9IH0gfSk7CiB9CiAKIHZvaWQgTGlu
ZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBSdW4mIHJ1bikKQEAg
LTY3OCwxMSArNjMxLDExIEBAIExheW91dFVuaXQgTGluZUJ1aWxkZXI6OnJ1bkNvbnRlbnRIZWln
aHQoY29uc3QgUnVuJiBydW4pIGNvbnN0CiAgICAgcmV0dXJuIGJveEdlb21ldHJ5Lm1hcmdpbkJv
eEhlaWdodCgpOwogfQogCi12b2lkIExpbmVCdWlsZGVyOjpUcmltbWFibGVDb250ZW50OjphcHBl
bmQoSW5saW5lSXRlbVJ1biYgaW5saW5lSXRlbVJ1bikKK3ZvaWQgTGluZUJ1aWxkZXI6OlRyaW1t
YWJsZUNvbnRlbnQ6OmFwcGVuZChJbmxpbmVJdGVtUnVuJiBpbmxpbmVJdGVtUnVuLCBzaXplX3Qg
cnVuSW5kZXgpCiB7CiAgICAgQVNTRVJUKGlubGluZUl0ZW1SdW4ubG9naWNhbFJlY3QoKS53aWR0
aCgpID49IDApOwogICAgIG1fd2lkdGggKz0gaW5saW5lSXRlbVJ1bi5sb2dpY2FsUmVjdCgpLndp
ZHRoKCk7Ci0gICAgbV9pbmxpbmVJdGVtUnVucy5hcHBlbmQoJmlubGluZUl0ZW1SdW4pOworICAg
IG1fcnVuSW5kZXhlcy5hcHBlbmQocnVuSW5kZXgpOwogfQogCiBMaW5lQm94OjpCYXNlbGluZSBM
aW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcywgTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCkKQEAgLTcwNSw3ICs2NTgsMjAgQEAg
TGF5b3V0U3RhdGUmIExpbmVCdWlsZGVyOjpsYXlvdXRTdGF0ZSgpIGNvbnN0CiBjb25zdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYgTGluZUJ1aWxkZXI6OmZvcm1hdHRpbmdDb250ZXh0KCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKLX0gCit9CisKK0xp
bmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjpJbmxpbmVJdGVtUnVuKGNvbnN0IElubGluZUl0ZW0m
IGlubGluZUl0ZW0sIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2ljYWxSZWN0LCBXVEY6Ok9wdGlv
bmFsPERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQ+IHRleHRDb250ZXh0KQorICAgIDogbV9pbmxp
bmVJdGVtKGlubGluZUl0ZW0pCisgICAgLCBtX2xvZ2ljYWxSZWN0KGxvZ2ljYWxSZWN0KQorICAg
ICwgbV90ZXh0Q29udGV4dCh0ZXh0Q29udGV4dCkKK3sKK30KKwordm9pZCBMaW5lQnVpbGRlcjo6
SW5saW5lSXRlbVJ1bjo6c2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCkKK3sKKyAgICBt
X2NvbGxhcHNlZFRvWmVyb0FkdmFuY2VXaWR0aCA9IHRydWU7CisgICAgbV9sb2dpY2FsUmVjdC5z
ZXRXaWR0aCh7IH0pOworfQogCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCAzMWYyYWMy
ZDNjYi4uNDhkOTk5ZGVmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaApAQCAtMzUsMTEgKzM1LDEy
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotc3RydWN0IENv
bnRpbm91c0NvbnRlbnQ7CiBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKLWNsYXNzIElu
bGluZUl0ZW1SdW47CiAKIGNsYXNzIExpbmVCdWlsZGVyIHsKKyAgICBjbGFzcyBJbmxpbmVJdGVt
UnVuOworICAgIHN0cnVjdCBDb250aW5vdXNDb250ZW50OworCiBwdWJsaWM6CiAgICAgc3RydWN0
IENvbnN0cmFpbnRzIHsKICAgICAgICAgTGF5b3V0UG9pbnQgbG9naWNhbFRvcExlZnQ7CkBAIC01
Miw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfTsKICAgICAgICAgT3B0aW9uYWw8SGVpZ2h0
QW5kQmFzZWxpbmU+IGhlaWdodEFuZEJhc2VsaW5lOwogICAgIH07CisKICAgICBlbnVtIGNsYXNz
IFNraXBBbGlnbm1lbnQgeyBObywgWWVzIH07CiAgICAgTGluZUJ1aWxkZXIoY29uc3QgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQmLCBPcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiwgU2tpcEFsaWdubWVu
dCk7CiAgICAgfkxpbmVCdWlsZGVyKCk7CkBAIC0xNDYsMjMgKzE0OCw1NyBAQCBwcml2YXRlOgog
ICAgIHZvaWQganVzdGlmeVJ1bnMoUnVuTGlzdCYpIGNvbnN0OwogCiAgICAgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlKCkgY29uc3Q7Ci0gICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQm
IGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Q7IAorICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0OworCisgICAgY2xhc3MgSW5saW5lSXRl
bVJ1biB7CisgICAgcHVibGljOgorICAgICAgICBJbmxpbmVJdGVtUnVuKGNvbnN0IElubGluZUl0
ZW0mLCBjb25zdCBEaXNwbGF5OjpSZWN0JiwgV1RGOjpPcHRpb25hbDxEaXNwbGF5OjpSdW46OlRl
eHRDb250ZXh0PiA9IFdURjo6bnVsbG9wdCk7CisKKyAgICAgICAgY29uc3QgQm94JiBsYXlvdXRC
b3goKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW0ubGF5b3V0Qm94KCk7IH0KKyAgICAgICAg
Y29uc3QgRGlzcGxheTo6UmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xvZ2lj
YWxSZWN0OyB9CisgICAgICAgIGNvbnN0IE9wdGlvbmFsPERpc3BsYXk6OlJ1bjo6VGV4dENvbnRl
eHQ+JiB0ZXh0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dENvbnRleHQ7IH0KKworICAg
ICAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbS5pc1RleHQoKTsg
fQorICAgICAgICBib29sIGlzQm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVtLmlzQm94
KCk7IH0KKyAgICAgICAgYm9vbCBpc0NvbnRhaW5lclN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9p
bmxpbmVJdGVtLmlzQ29udGFpbmVyU3RhcnQoKTsgfQorICAgICAgICBib29sIGlzQ29udGFpbmVy
RW5kKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVtLmlzQ29udGFpbmVyRW5kKCk7IH0KKyAg
ICAgICAgYm9vbCBpc0ZvcmNlZExpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRl
bS5pc0ZvcmNlZExpbmVCcmVhaygpOyB9CisgICAgICAgIElubGluZUl0ZW06OlR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbS50eXBlKCk7IH0KKworICAgICAgICB2b2lkIHNl
dElzQ29sbGFwc2VkKCkgeyBtX2lzQ29sbGFwc2VkID0gdHJ1ZTsgfQorICAgICAgICBib29sIGlz
Q29sbGFwc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbGxhcHNlZDsgfQorCisgICAgICAgIHZv
aWQgc2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCk7CisgICAgICAgIGJvb2wgaXNDb2xs
YXBzZWRUb1plcm9BZHZhbmNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhcHNlZFRvWmVy
b0FkdmFuY2VXaWR0aDsgfQorCisgICAgICAgIGJvb2wgaXNDb2xsYXBzaWJsZSgpIGNvbnN0IHsg
cmV0dXJuIGlzPElubGluZVRleHRJdGVtPihtX2lubGluZUl0ZW0pICYmIGRvd25jYXN0PElubGlu
ZVRleHRJdGVtPihtX2lubGluZUl0ZW0pLmlzQ29sbGFwc2libGUoKTsgfQorICAgICAgICBib29s
IGlzV2hpdGVzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIGlzPElubGluZVRleHRJdGVtPihtX2lubGlu
ZUl0ZW0pICYmIGRvd25jYXN0PElubGluZVRleHRJdGVtPihtX2lubGluZUl0ZW0pLmlzV2hpdGVz
cGFjZSgpOyB9CisKKyAgICAgICAgYm9vbCBoYXNFeHBhbnNpb25PcHBvcnR1bml0eSgpIGNvbnN0
IHsgcmV0dXJuIGlzV2hpdGVzcGFjZSgpICYmICFpc0NvbGxhcHNlZFRvWmVyb0FkdmFuY2VXaWR0
aCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBJbmxpbmVJdGVtJiBtX2lubGlu
ZUl0ZW07CisgICAgICAgIERpc3BsYXk6OlJlY3QgbV9sb2dpY2FsUmVjdDsKKyAgICAgICAgY29u
c3QgT3B0aW9uYWw8RGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dD4gbV90ZXh0Q29udGV4dDsKKyAg
ICAgICAgYm9vbCBtX2lzQ29sbGFwc2VkIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBtX2NvbGxh
cHNlZFRvWmVyb0FkdmFuY2VXaWR0aCB7IGZhbHNlIH07CisgICAgfTsKIAotICAgIGNvbnN0IElu
bGluZUZvcm1hdHRpbmdDb250ZXh0JiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OwotICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lSXRlbVJ1bj4sIDUwPiBtX2lubGluZUl0ZW1SdW5z
OwogICAgIHN0cnVjdCBUcmltbWFibGVDb250ZW50IHsKLSAgICAgICAgdm9pZCBhcHBlbmQoSW5s
aW5lSXRlbVJ1biYpOworICAgICAgICB2b2lkIGFwcGVuZChJbmxpbmVJdGVtUnVuJiwgc2l6ZV90
IHJ1bkluZGV4KTsKICAgICAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgICAgIExheW91dFVuaXQg
d2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9Ci0gICAgICAgIHVzaW5nIFRyaW1tYWJs
ZUxpc3QgPSBWZWN0b3I8SW5saW5lSXRlbVJ1biosIDU+OwotICAgICAgICBUcmltbWFibGVMaXN0
JiBydW5zKCkgeyByZXR1cm4gbV9pbmxpbmVJdGVtUnVuczsgfQotICAgICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW1SdW5zLmlzRW1wdHkoKTsgfQorICAgICAg
ICBWZWN0b3I8c2l6ZV90LCA1PiYgcnVuSW5kZXhlcygpIHsgcmV0dXJuIG1fcnVuSW5kZXhlczsg
fQorICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3J1bkluZGV4ZXMuaXNF
bXB0eSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBUcmltbWFibGVMaXN0IG1faW5saW5l
SXRlbVJ1bnM7CisgICAgICAgIFZlY3RvcjxzaXplX3QsIDU+IG1fcnVuSW5kZXhlczsKICAgICAg
ICAgTGF5b3V0VW5pdCBtX3dpZHRoOwogICAgIH07CisKKyAgICBjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKKyAgICBWZWN0b3I8SW5saW5l
SXRlbVJ1biwgNTA+IG1faW5saW5lSXRlbVJ1bnM7CiAgICAgVHJpbW1hYmxlQ29udGVudCBtX3Ry
aW1tYWJsZUNvbnRlbnQ7CiAgICAgT3B0aW9uYWw8TGluZUJveDo6QmFzZWxpbmU+IG1faW5pdGlh
bFN0cnV0OwogICAgIExheW91dFVuaXQgbV9saW5lTG9naWNhbFdpZHRoOwpAQCAtMTc0LDcgKzIx
MCw3IEBAIHByaXZhdGU6CiAKIGlubGluZSB2b2lkIExpbmVCdWlsZGVyOjpUcmltbWFibGVDb250
ZW50OjpjbGVhcigpCiB7Ci0gICAgbV9pbmxpbmVJdGVtUnVucy5jbGVhcigpOworICAgIG1fcnVu
SW5kZXhlcy5jbGVhcigpOwogICAgIG1fd2lkdGggPSB7IH07CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384453</attachid>
            <date>2019-11-28 06:35:43 -0800</date>
            <delta_ts>2019-11-28 07:22:13 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-vector-allocate-inlineitemruns-2.patch</filename>
            <type>text/plain</type>
            <size>20047</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzY2ZjYWViNmEzMy4uYTQ5ODQwZDFlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MiBAQAorMjAxOS0xMS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSUZDXSBWZWN0b3IgYWxsb2NhdGUgSW5saW5lSXRlbVJ1bnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY4MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBoZWFw
IGFsbG9jYXRpb25zIGR1cmluZyBpbmxpbmUgbGF5b3V0LgorCisgICAgICAgIFRoaXMgaXMgfjE1
JSBzcGVlZHVwIGluIFBlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xpbmUtbGF5b3V0LXNpbXBsZS5o
dG1sIHdpdGggTEZDLWluLXJlbmRlci10cmVlIGVuYWJsZWQuCisgICAgICAgIFdpdGggb3RoZXIg
aW1wcm92ZW1lbnRzIGl0IG1ha2VzIExGQyBwYXRoIGZhc3RlciB0aGFuIHNpbXBsZSBsaW5lIGxh
eW91dCBpbiB0aGlzIHRlc3QuCisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpDb250aW5vdXNDb250ZW50OjpDb250aW5vdXNDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OkNvbnRpbm91c0NvbnRlbnQ6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpDb250aW5vdXNDb250ZW50OjpjbG9z
ZSk6CisKKyAgICAgICAgTW92ZSB0byBMaW5lQnVpbGRlciBuYW1lc3BhY2UuCisKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUJ1aWxkZXI6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmROb25CcmVha2FibGVT
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmRUZXh0
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmRO
b25SZXBsYWNlZElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjphcHBlbmRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6VHJpbW1hYmxlQ29udGVudDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJ1aWxkZXI6OmZvcm1hdHRpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OklubGluZUl0ZW1SdW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6c2V0
Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lSXRlbVJ1bjo6bGF5b3V0Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lSXRlbVJ1bjo6bG9naWNhbFJlY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtUnVuOjp0ZXh0Q29udGV4dCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46Omlz
VGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0
ZW1SdW46OmlzQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lSXRlbVJ1bjo6aXNDb250YWluZXJTdGFydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46OmlzQ29udGFpbmVyRW5kIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lSXRlbVJ1bjo6aXNGb3Jj
ZWRMaW5lQnJlYWsgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVJdGVtUnVuOjp0eXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lSXRlbVJ1bjo6c2V0SXNDb2xsYXBzZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtUnVuOjppc0NvbGxhcHNlZCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46OmlzQ29sbGFwc2Vk
VG9aZXJvQWR2YW5jZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lSXRlbVJ1bjo6aXNDb2xsYXBzaWJsZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46OmlzV2hpdGVzcGFjZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46Omhhc0V4
cGFuc2lvbk9wcG9ydHVuaXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lSXRlbVJ1bjo6SW5saW5lSXRlbVJ1bik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46OnNldENvbGxhcHNlc1RvWmVyb0FkdmFuY2VX
aWR0aCk6IERlbGV0ZWQuCisKKyAgICAgICAgTW92ZSBJbmxpbmVJdGVtUnVuIHRvIGhlYWRlciBp
biBMaW5lQnVpbGRlciBuYW1lc3BhY2Ugc28gd2UgY2FuIHVzZSBkaXJlY3RseSBpbiBtX2lubGlu
ZUl0ZW1SdW5zIHZlY3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW5vdXND
b250ZW50OjpjYW5CZUV4cGFuZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Q29udGlub3VzQ29udGVudDo6Y2FuQmVNZXJnZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW5vdXNDb250ZW50OjpDb250aW5vdXNDb250ZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGlub3VzQ29udGVudDo6YXBw
ZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGlub3VzQ29udGVu
dDo6Y2xvc2UpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVy
OjpJbmxpbmVJdGVtUnVuOjpsYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6bG9naWNhbFJlY3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6dGV4dENv
bnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5s
aW5lSXRlbVJ1bjo6aXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OmlzQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OmlzQ29udGFpbmVyU3RhcnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1
bjo6aXNDb250YWluZXJFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6aXNGb3JjZWRMaW5lQnJlYWsgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6dHlwZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVu
OjpzZXRJc0NvbGxhcHNlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVy
OjpJbmxpbmVJdGVtUnVuOjppc0NvbGxhcHNlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjppc0NvbGxhcHNlZFRvWmVyb0FkdmFu
Y2VXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpJ
bmxpbmVJdGVtUnVuOjppc0NvbGxhcHNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OmlzV2hpdGVzcGFjZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjpoYXNF
eHBhbnNpb25PcHBvcnR1bml0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmVCdWlsZGVyOjpUcmltbWFibGVDb250ZW50OjpydW5JbmRleGVzKToKKworICAgICAgICBNYWtl
IFRyaW1tYWJsZUNvbnRlbnQgY29sbGVjdCBpbmRleGVzIHRvIElubGluZUl0ZW1SdW4gdmVjdG9y
IGluc3RlYWQgb2YgcG9pbnRlci4KKyAgICAgICAgV2Ugb25seSBldmVyIGFwcGVuZCB0byB0aGUg
dmVjdG9yIHNvIHRoZSBpbmRleGVzIHN0YXkgdmFsaWQgZm9yIFRyaW1tYWJsZUNvbnRlbnQgbGlm
ZXRpbWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OlRyaW1tYWJs
ZUNvbnRlbnQ6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6VHJpbW1hYmxlQ29udGVudDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6VHJpbW1hYmxlQ29udGVudDo6cnVucyk6IERlbGV0ZWQuCisKIDIw
MTktMTEtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHU3RyZWFtZXJdIE1vdmUgR0wgdmlkZW8gc2luayB0byBpdHMgb3duIEdzdEJpbiBzdWIt
Y2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCBhN2M3ZTE2MTNiMy4uZGVhNzIwMTVl
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTM1LDU1ICszNSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotY2xhc3MgSW5saW5lSXRlbVJ1biB7
Ci1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lOTElORShJbmxpbmVJdGVtUnVuKTsKLXB1YmxpYzoK
LSAgICBJbmxpbmVJdGVtUnVuKGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBEaXNwbGF5OjpSZWN0
JiwgV1RGOjpPcHRpb25hbDxEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0PiA9IFdURjo6bnVsbG9w
dCk7Ci0KLSAgICBjb25zdCBCb3gmIGxheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5l
SXRlbS5sYXlvdXRCb3goKTsgfQotICAgIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2ljYWxSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdDsgfQotICAgIGNvbnN0IE9wdGlvbmFsPERp
c3BsYXk6OlJ1bjo6VGV4dENvbnRleHQ+JiB0ZXh0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dENvbnRleHQ7IH0KLQotICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxp
bmVJdGVtLmlzVGV4dCgpOyB9Ci0gICAgYm9vbCBpc0JveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5s
aW5lSXRlbS5pc0JveCgpOyB9Ci0gICAgYm9vbCBpc0NvbnRhaW5lclN0YXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmxpbmVJdGVtLmlzQ29udGFpbmVyU3RhcnQoKTsgfQotICAgIGJvb2wgaXNDb250
YWluZXJFbmQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW0uaXNDb250YWluZXJFbmQoKTsg
fQotICAgIGJvb2wgaXNGb3JjZWRMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0
ZW0uaXNGb3JjZWRMaW5lQnJlYWsoKTsgfQotICAgIElubGluZUl0ZW06OlR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbS50eXBlKCk7IH0KLQotICAgIHZvaWQgc2V0SXNDb2xs
YXBzZWQoKSB7IG1faXNDb2xsYXBzZWQgPSB0cnVlOyB9Ci0gICAgYm9vbCBpc0NvbGxhcHNlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsYXBzZWQ7IH0KLQotICAgIHZvaWQgc2V0Q29sbGFwc2Vz
VG9aZXJvQWR2YW5jZVdpZHRoKCk7Ci0gICAgYm9vbCBpc0NvbGxhcHNlZFRvWmVyb0FkdmFuY2VX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRoOyB9Ci0K
LSAgICBib29sIGlzQ29sbGFwc2libGUoKSBjb25zdCB7IHJldHVybiBpczxJbmxpbmVUZXh0SXRl
bT4obV9pbmxpbmVJdGVtKSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVt
KS5pc0NvbGxhcHNpYmxlKCk7IH0KLSAgICBib29sIGlzV2hpdGVzcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIGlzPElubGluZVRleHRJdGVtPihtX2lubGluZUl0ZW0pICYmIGRvd25jYXN0PElubGluZVRl
eHRJdGVtPihtX2lubGluZUl0ZW0pLmlzV2hpdGVzcGFjZSgpOyB9Ci0KLSAgICBib29sIGhhc0V4
cGFuc2lvbk9wcG9ydHVuaXR5KCkgY29uc3QgeyByZXR1cm4gaXNXaGl0ZXNwYWNlKCkgJiYgIWlz
Q29sbGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRoKCk7IH0KLQotcHJpdmF0ZToKLSAgICBjb25zdCBJ
bmxpbmVJdGVtJiBtX2lubGluZUl0ZW07Ci0gICAgRGlzcGxheTo6UmVjdCBtX2xvZ2ljYWxSZWN0
OwotICAgIGNvbnN0IE9wdGlvbmFsPERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQ+IG1fdGV4dENv
bnRleHQ7Ci0gICAgYm9vbCBtX2lzQ29sbGFwc2VkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fY29s
bGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRoIHsgZmFsc2UgfTsKLX07Ci0KLUlubGluZUl0ZW1SdW46
OklubGluZUl0ZW1SdW4oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgRGlzcGxh
eTo6UmVjdCYgbG9naWNhbFJlY3QsIFdURjo6T3B0aW9uYWw8RGlzcGxheTo6UnVuOjpUZXh0Q29u
dGV4dD4gdGV4dENvbnRleHQpCi0gICAgOiBtX2lubGluZUl0ZW0oaW5saW5lSXRlbSkKLSAgICAs
IG1fbG9naWNhbFJlY3QobG9naWNhbFJlY3QpCi0gICAgLCBtX3RleHRDb250ZXh0KHRleHRDb250
ZXh0KQotewotfQotCi12b2lkIElubGluZUl0ZW1SdW46OnNldENvbGxhcHNlc1RvWmVyb0FkdmFu
Y2VXaWR0aCgpCi17Ci0gICAgbV9jb2xsYXBzZWRUb1plcm9BZHZhbmNlV2lkdGggPSB0cnVlOwot
ICAgIG1fbG9naWNhbFJlY3Quc2V0V2lkdGgoeyB9KTsKLX0KLQotc3RydWN0IENvbnRpbm91c0Nv
bnRlbnQgeworc3RydWN0IExpbmVCdWlsZGVyOjpDb250aW5vdXNDb250ZW50IHsKIHB1YmxpYzoK
ICAgICBDb250aW5vdXNDb250ZW50KGNvbnN0IElubGluZUl0ZW1SdW4mLCBib29sIHRleHRJc0Fs
aWduSnVzdGlmeSk7CiAKQEAgLTEwMywxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgeyAwIH07CiB9OwogCi1Db250aW5vdXNDb250
ZW50OjpDb250aW5vdXNDb250ZW50KGNvbnN0IElubGluZUl0ZW1SdW4mIGluaXRpYWxJbmxpbmVS
dW4sIGJvb2wgdGV4dElzQWxpZ25KdXN0aWZ5KQorTGluZUJ1aWxkZXI6OkNvbnRpbm91c0NvbnRl
bnQ6OkNvbnRpbm91c0NvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJ1biYgaW5pdGlhbElubGluZVJ1
biwgYm9vbCB0ZXh0SXNBbGlnbkp1c3RpZnkpCiAgICAgOiBtX2luaXRpYWxJbmxpbmVSdW4oaW5p
dGlhbElubGluZVJ1bikKICAgICAsIG1fdGV4dElzQWxpZ25KdXN0aWZ5KHRleHRJc0FsaWduSnVz
dGlmeSkKICAgICAsIG1fdHJhaWxpbmdSdW5DYW5CZUV4cGFuZGVkKGNhbkJlRXhwYW5kZWQoaW5p
dGlhbElubGluZVJ1bikpCiB7CiB9CiAKLWJvb2wgQ29udGlub3VzQ29udGVudDo6YXBwZW5kKGNv
bnN0IElubGluZUl0ZW1SdW4mIGlubGluZUl0ZW1SdW4pCitib29sIExpbmVCdWlsZGVyOjpDb250
aW5vdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbVJ1biYgaW5saW5lSXRlbVJ1bikK
IHsKICAgICAvLyBNZXJnZWQgY29udGVudCBuZWVkcyB0byBiZSBjb250aW51b3VzLgogICAgIGlm
ICghbV90cmFpbGluZ1J1bkNhbkJlRXhwYW5kZWQpCkBAIC0xMzIsNyArODQsNyBAQCBib29sIENv
bnRpbm91c0NvbnRlbnQ6OmFwcGVuZChjb25zdCBJbmxpbmVJdGVtUnVuJiBpbmxpbmVJdGVtUnVu
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1MaW5lQnVpbGRlcjo6UnVuIENvbnRpbm91c0NvbnRl
bnQ6OmNsb3NlKCkKK0xpbmVCdWlsZGVyOjpSdW4gTGluZUJ1aWxkZXI6OkNvbnRpbm91c0NvbnRl
bnQ6OmNsb3NlKCkKIHsKICAgICBpZiAoIW1fZXhwYW5kZWRMZW5ndGgpCiAgICAgICAgIHJldHVy
biB7IG1faW5pdGlhbElubGluZVJ1biB9OwpAQCAtMjYyLDkgKzIxNCw5IEBAIExpbmVCdWlsZGVy
OjpSdW5MaXN0IExpbmVCdWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQg
aXNMYXN0TGluZVdpCiAgICAgdW5zaWduZWQgcnVuSW5kZXggPSAwOwogICAgIHdoaWxlIChydW5J
bmRleCA8IG1faW5saW5lSXRlbVJ1bnMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIE1lcmdlIGVsaWdp
YmxlIHJ1bnMuCi0gICAgICAgIGF1dG8gY29udGlub3VzQ29udGVudCA9IENvbnRpbm91c0NvbnRl
bnQgeyAqbV9pbmxpbmVJdGVtUnVuc1tydW5JbmRleF0sIGlzVGV4dEFsaWduSnVzdGlmeSgpIH07
CisgICAgICAgIGF1dG8gY29udGlub3VzQ29udGVudCA9IENvbnRpbm91c0NvbnRlbnQgeyBtX2lu
bGluZUl0ZW1SdW5zW3J1bkluZGV4XSwgaXNUZXh0QWxpZ25KdXN0aWZ5KCkgfTsKICAgICAgICAg
d2hpbGUgKCsrcnVuSW5kZXggPCBtX2lubGluZUl0ZW1SdW5zLnNpemUoKSkgewotICAgICAgICAg
ICAgaWYgKCFjb250aW5vdXNDb250ZW50LmFwcGVuZCgqbV9pbmxpbmVJdGVtUnVuc1tydW5JbmRl
eF0pKQorICAgICAgICAgICAgaWYgKCFjb250aW5vdXNDb250ZW50LmFwcGVuZChtX2lubGluZUl0
ZW1SdW5zW3J1bkluZGV4XSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgcnVuTGlzdC5hcHBlbmQoY29udGlub3VzQ29udGVudC5jbG9zZSgpKTsKQEAgLTQyOSwx
MCArMzgxLDExIEBAIHZvaWQgTGluZUJ1aWxkZXI6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29u
dGVudCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENvbGxhcHNlIHRyaW1tYWJsZSB0cmFp
bGluZyBjb250ZW50Ci0gICAgZm9yIChhdXRvKiB0cmltbWFibGVSdW4gOiBtX3RyaW1tYWJsZUNv
bnRlbnQucnVucygpKSB7Ci0gICAgICAgIEFTU0VSVCh0cmltbWFibGVSdW4tPmlzVGV4dCgpKTsK
KyAgICBmb3IgKGF1dG8gdHJpbW1hYmxlUnVuSW5kZXggOiBtX3RyaW1tYWJsZUNvbnRlbnQucnVu
SW5kZXhlcygpKSB7CisgICAgICAgIGF1dG8mIHRyaW1tYWJsZVJ1biA9IG1faW5saW5lSXRlbVJ1
bnNbdHJpbW1hYmxlUnVuSW5kZXhdOworICAgICAgICBBU1NFUlQodHJpbW1hYmxlUnVuLmlzVGV4
dCgpKTsKICAgICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQgdG8gYmUgYWJsZSB0byBkaWZm
ZXJlbnRpYXRlIGJldHdlZW4gdHJpbW1lZCBhbmQgY29sbGFwc2VkIHJ1bnMuCi0gICAgICAgIHRy
aW1tYWJsZVJ1bi0+c2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCk7CisgICAgICAgIHRy
aW1tYWJsZVJ1bi5zZXRDb2xsYXBzZXNUb1plcm9BZHZhbmNlV2lkdGgoKTsKICAgICB9CiAgICAg
bV9saW5lQm94LnNocmlua0hvcml6b250YWxseShtX3RyaW1tYWJsZUNvbnRlbnQud2lkdGgoKSk7
CiAgICAgbV90cmltbWFibGVDb250ZW50LmNsZWFyKCk7CkBAIC00NzAsNyArNDIzLDcgQEAgdm9p
ZCBMaW5lQnVpbGRlcjo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91
dFVuaXQgbG9naWNhbFdpZHRoKQogCiB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmROb25CcmVha2Fi
bGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBEaXNwbGF5OjpSZWN0
JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2lubGluZUl0ZW1SdW5zLmFwcGVuZChtYWtlVW5pcXVl
PElubGluZUl0ZW1SdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9pbmxpbmVJ
dGVtUnVucy5hcHBlbmQoeyBpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCB9KTsKICAgICBtX2xpbmVC
b3guZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOwogICAgIGlmIChsb2dp
Y2FsUmVjdC53aWR0aCgpKQogICAgICAgICBtX2xpbmVCb3guc2V0SXNDb25zaWRlcmVkTm9uRW1w
dHkoKTsKQEAgLTUwOSwxNiArNDYyLDE2IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFwcGVuZFRleHRD
b250ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0CiAgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGl0ZW0gaXMgY29sbGFwc2VkIGFzIHdlbGwuCiAgICAg
ICAgIGZvciAoYXV0byBpID0gbV9pbmxpbmVJdGVtUnVucy5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgICAgIGF1dG8mIHJ1biA9IG1faW5saW5lSXRlbVJ1bnNbaV07Ci0gICAgICAgICAgICBpZiAo
cnVuLT5pc0JveCgpKQorICAgICAgICAgICAgaWYgKHJ1bi5pc0JveCgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3MtdGV4dC0zLyN3aGl0ZS1zcGFjZS1waGFzZS0xCiAgICAgICAgICAgICAvLyBBbnkgY29s
bGFwc2libGUgc3BhY2UgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGFub3RoZXIgY29sbGFwc2libGUg
c3BhY2XigJRldmVuIG9uZSBvdXRzaWRlIHRoZSBib3VuZGFyeSBvZiB0aGUgaW5saW5lIGNvbnRh
aW5pbmcgdGhhdCBzcGFjZSwKICAgICAgICAgICAgIC8vIHByb3ZpZGVkIGJvdGggc3BhY2VzIGFy
ZSB3aXRoaW4gdGhlIHNhbWUgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dOKAlGlzIGNvbGxhcHNl
ZCB0byBoYXZlIHplcm8gYWR2YW5jZSB3aWR0aC4KICAgICAgICAgICAgIC8vIDogIjxzcGFuPiAg
PC9zcGFuPiAiIDwtIHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGNvbGxhcHNlcyBjb21wbGV0ZWx5
LgogICAgICAgICAgICAgLy8gTm90IHRoYXQgd2hlbiB0aGUgaW5saW5lIGNvbnRhaW5lciBoYXMg
cHJlc2VydmUgd2hpdGVzcGFjZSBzdHlsZSwgIjxzcGFuIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJl
Ij4gIDwvc3Bhbj4gIiA8LSB0aGlzIHdoaXRlc3BhY2Ugc3RheXMgYXJvdW5kLgotICAgICAgICAg
ICAgaWYgKHJ1bi0+aXNUZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bi0+aXNDb2xs
YXBzaWJsZSgpOwotICAgICAgICAgICAgQVNTRVJUKHJ1bi0+aXNDb250YWluZXJTdGFydCgpIHx8
IHJ1bi0+aXNDb250YWluZXJFbmQoKSk7CisgICAgICAgICAgICBpZiAocnVuLmlzVGV4dCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBydW4uaXNDb2xsYXBzaWJsZSgpOworICAgICAgICAgICAg
QVNTRVJUKHJ1bi5pc0NvbnRhaW5lclN0YXJ0KCkgfHwgcnVuLmlzQ29udGFpbmVyRW5kKCkpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CkBAIC01MjYsMjEgKzQ3OSwy
MyBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0
SXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdAogICAgIGF1dG8gY29sbGFwc2VkUnVuID0gaW5s
aW5lSXRlbS5pc0NvbGxhcHNpYmxlKCkgJiYgaW5saW5lSXRlbS5sZW5ndGgoKSA+IDE7CiAgICAg
YXV0byBjb250ZW50U3RhcnQgPSBpbmxpbmVJdGVtLnN0YXJ0KCk7CiAgICAgYXV0byBjb250ZW50
TGVuZ3RoID0gIGNvbGxhcHNlZFJ1biA/IDEgOiBpbmxpbmVJdGVtLmxlbmd0aCgpOwotICAgIGF1
dG8gbGluZVJ1biA9IG1ha2VVbmlxdWU8SW5saW5lSXRlbVJ1bj4oaW5saW5lSXRlbSwgRGlzcGxh
eTo6UmVjdCB7IDAsIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSwgbG9naWNhbFdpZHRoLCB7IH0gfSwK
LSAgICAgICAgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IGNvbnRlbnRTdGFydCwgY29udGVu
dExlbmd0aCwgaW5saW5lSXRlbS5sYXlvdXRCb3goKS50ZXh0Q29udGV4dCgpLT5jb250ZW50IH0p
OworICAgIGF1dG8gbGluZVJ1biA9IElubGluZUl0ZW1SdW4geyBpbmxpbmVJdGVtLCBEaXNwbGF5
OjpSZWN0IHsgMCwgY29udGVudExvZ2ljYWxXaWR0aCgpLCBsb2dpY2FsV2lkdGgsIHsgfSB9LAor
ICAgICAgICBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgY29udGVudFN0YXJ0LCBjb250ZW50
TGVuZ3RoLCBpbmxpbmVJdGVtLmxheW91dEJveCgpLnRleHRDb250ZXh0KCktPmNvbnRlbnQgfSB9
OwogCiAgICAgYXV0byBjb2xsYXBzZXNUb1plcm9BZHZhbmNlV2lkdGggPSB3aWxsQ29sbGFwc2VD
b21wbGV0ZWx5KCk7CiAgICAgaWYgKGNvbGxhcHNlc1RvWmVyb0FkdmFuY2VXaWR0aCkKLSAgICAg
ICAgbGluZVJ1bi0+c2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCk7CisgICAgICAgIGxp
bmVSdW4uc2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCk7CiAgICAgZWxzZQogICAgICAg
ICBtX2xpbmVCb3guc2V0SXNDb25zaWRlcmVkTm9uRW1wdHkoKTsKIAogICAgIGlmIChjb2xsYXBz
ZWRSdW4pCi0gICAgICAgIGxpbmVSdW4tPnNldElzQ29sbGFwc2VkKCk7CisgICAgICAgIGxpbmVS
dW4uc2V0SXNDb2xsYXBzZWQoKTsKKworICAgIGF1dG8gbGluZVJ1bldpZHRoID0gbGluZVJ1bi5s
b2dpY2FsUmVjdCgpLndpZHRoKCk7CiAgICAgaWYgKGlzVHJpbW1hYmxlKQotICAgICAgICBtX3Ry
aW1tYWJsZUNvbnRlbnQuYXBwZW5kKCpsaW5lUnVuKTsKKyAgICAgICAgbV90cmltbWFibGVDb250
ZW50LmFwcGVuZChsaW5lUnVuV2lkdGgsIG1faW5saW5lSXRlbVJ1bnMuc2l6ZSgpKTsKIAotICAg
IG1fbGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobGluZVJ1bi0+bG9naWNhbFJlY3QoKS53aWR0
aCgpKTsKKyAgICBtX2xpbmVCb3guZXhwYW5kSG9yaXpvbnRhbGx5KGxpbmVSdW5XaWR0aCk7CiAg
ICAgbV9pbmxpbmVJdGVtUnVucy5hcHBlbmQoV1RGTW92ZShsaW5lUnVuKSk7CiB9CiAKQEAgLTU0
OSw3ICs1MDQsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmROb25SZXBsYWNlZElubGluZUJv
eChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdQogICAgIGF1dG8mIGxheW91dEJv
eCA9IGlubGluZUl0ZW0ubGF5b3V0Qm94KCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3Jt
YXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgYXV0byBob3Jp
em9udGFsTWFyZ2luID0gYm94R2VvbWV0cnkuaG9yaXpvbnRhbE1hcmdpbigpOwotICAgIG1faW5s
aW5lSXRlbVJ1bnMuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lSXRlbVJ1bj4oaW5saW5lSXRlbSwg
RGlzcGxheTo6UmVjdCB7IDAsIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSArIGhvcml6b250YWxNYXJn
aW4uc3RhcnQsIGxvZ2ljYWxXaWR0aCwgeyB9IH0pKTsKKyAgICBtX2lubGluZUl0ZW1SdW5zLmFw
cGVuZCh7IGlubGluZUl0ZW0sIERpc3BsYXk6OlJlY3QgeyAwLCBjb250ZW50TG9naWNhbFdpZHRo
KCkgKyBob3Jpem9udGFsTWFyZ2luLnN0YXJ0LCBsb2dpY2FsV2lkdGgsIHsgfSB9IH0pOwogICAg
IG1fbGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1h
cmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kKTsKICAgICBtX2xpbmVCb3guc2V0SXND
b25zaWRlcmVkTm9uRW1wdHkoKTsKICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuY2xlYXIoKTsKQEAg
LTU2OCw3ICs1MjMsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRSZXBsYWNlZElubGluZUJv
eChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbgogdm9pZCBMaW5lQnVpbGRl
cjo6YXBwZW5kTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiB7CiAgICAg
bV9saW5lQm94LnNldElzQ29uc2lkZXJlZE5vbkVtcHR5KCk7Ci0gICAgbV9pbmxpbmVJdGVtUnVu
cy5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVJdGVtUnVuPihpbmxpbmVJdGVtLCBEaXNwbGF5OjpS
ZWN0IHsgMCwgY29udGVudExvZ2ljYWxXaWR0aCgpLCB7IH0sIHsgfSB9KSk7CisgICAgbV9pbmxp
bmVJdGVtUnVucy5hcHBlbmQoeyBpbmxpbmVJdGVtLCBEaXNwbGF5OjpSZWN0IHsgMCwgY29udGVu
dExvZ2ljYWxXaWR0aCgpLCB7IH0sIHsgfSB9IH0pOwogfQogCiB2b2lkIExpbmVCdWlsZGVyOjph
ZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVuJiBydW4pCkBAIC02NzgsMTEgKzYz
MywxMSBAQCBMYXlvdXRVbml0IExpbmVCdWlsZGVyOjpydW5Db250ZW50SGVpZ2h0KGNvbnN0IFJ1
biYgcnVuKSBjb25zdAogICAgIHJldHVybiBib3hHZW9tZXRyeS5tYXJnaW5Cb3hIZWlnaHQoKTsK
IH0KIAotdm9pZCBMaW5lQnVpbGRlcjo6VHJpbW1hYmxlQ29udGVudDo6YXBwZW5kKElubGluZUl0
ZW1SdW4mIGlubGluZUl0ZW1SdW4pCit2b2lkIExpbmVCdWlsZGVyOjpUcmltbWFibGVDb250ZW50
OjphcHBlbmQoTGF5b3V0VW5pdCBpdGVtUnVuV2lkdGgsIHNpemVfdCBydW5JbmRleCkKIHsKLSAg
ICBBU1NFUlQoaW5saW5lSXRlbVJ1bi5sb2dpY2FsUmVjdCgpLndpZHRoKCkgPj0gMCk7Ci0gICAg
bV93aWR0aCArPSBpbmxpbmVJdGVtUnVuLmxvZ2ljYWxSZWN0KCkud2lkdGgoKTsKLSAgICBtX2lu
bGluZUl0ZW1SdW5zLmFwcGVuZCgmaW5saW5lSXRlbVJ1bik7CisgICAgQVNTRVJUKGl0ZW1SdW5X
aWR0aCA+PSAwKTsKKyAgICBtX3dpZHRoICs9IGl0ZW1SdW5XaWR0aDsKKyAgICBtX3J1bkluZGV4
ZXMuYXBwZW5kKHJ1bkluZGV4KTsKIH0KIAogTGluZUJveDo6QmFzZWxpbmUgTGluZUJ1aWxkZXI6
OmhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIExheW91
dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpCkBAIC03MDUsNyArNjYwLDIwIEBAIExheW91dFN0YXRl
JiBMaW5lQnVpbGRlcjo6bGF5b3V0U3RhdGUoKSBjb25zdAogY29uc3QgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQmIExpbmVCdWlsZGVyOjpmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7Ci19IAorfQorCitMaW5lQnVpbGRlcjo6
SW5saW5lSXRlbVJ1bjo6SW5saW5lSXRlbVJ1bihjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVt
LCBjb25zdCBEaXNwbGF5OjpSZWN0JiBsb2dpY2FsUmVjdCwgV1RGOjpPcHRpb25hbDxEaXNwbGF5
OjpSdW46OlRleHRDb250ZXh0PiB0ZXh0Q29udGV4dCkKKyAgICA6IG1faW5saW5lSXRlbShpbmxp
bmVJdGVtKQorICAgICwgbV9sb2dpY2FsUmVjdChsb2dpY2FsUmVjdCkKKyAgICAsIG1fdGV4dENv
bnRleHQodGV4dENvbnRleHQpCit7Cit9CisKK3ZvaWQgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1S
dW46OnNldENvbGxhcHNlc1RvWmVyb0FkdmFuY2VXaWR0aCgpCit7CisgICAgbV9jb2xsYXBzZWRU
b1plcm9BZHZhbmNlV2lkdGggPSB0cnVlOworICAgIG1fbG9naWNhbFJlY3Quc2V0V2lkdGgoeyB9
KTsKK30KIAogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKaW5kZXggMzFmMmFjMmQzY2IuLjIxNjFj
NmQzMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTM1LDExICszNSwxMiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXN0cnVjdCBDb250aW5vdXNDb250
ZW50OwogY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7Ci1jbGFzcyBJbmxpbmVJdGVtUnVu
OwogCiBjbGFzcyBMaW5lQnVpbGRlciB7CisgICAgY2xhc3MgSW5saW5lSXRlbVJ1bjsKKyAgICBz
dHJ1Y3QgQ29udGlub3VzQ29udGVudDsKKwogcHVibGljOgogICAgIHN0cnVjdCBDb25zdHJhaW50
cyB7CiAgICAgICAgIExheW91dFBvaW50IGxvZ2ljYWxUb3BMZWZ0OwpAQCAtNTIsNiArNTMsNyBA
QCBwdWJsaWM6CiAgICAgICAgIH07CiAgICAgICAgIE9wdGlvbmFsPEhlaWdodEFuZEJhc2VsaW5l
PiBoZWlnaHRBbmRCYXNlbGluZTsKICAgICB9OworCiAgICAgZW51bSBjbGFzcyBTa2lwQWxpZ25t
ZW50IHsgTm8sIFllcyB9OwogICAgIExpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiwgT3B0aW9uYWw8VGV4dEFsaWduTW9kZT4sIFNraXBBbGlnbm1lbnQpOwogICAgIH5M
aW5lQnVpbGRlcigpOwpAQCAtMTQ2LDIzICsxNDgsNTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGp1
c3RpZnlSdW5zKFJ1bkxpc3QmKSBjb25zdDsKIAogICAgIExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSgpIGNvbnN0OwotICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5n
Q29udGV4dCgpIGNvbnN0OyAKKyAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9y
bWF0dGluZ0NvbnRleHQoKSBjb25zdDsKKworICAgIGNsYXNzIElubGluZUl0ZW1SdW4geworICAg
IHB1YmxpYzoKKyAgICAgICAgSW5saW5lSXRlbVJ1bihjb25zdCBJbmxpbmVJdGVtJiwgY29uc3Qg
RGlzcGxheTo6UmVjdCYsIFdURjo6T3B0aW9uYWw8RGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dD4g
PSBXVEY6Om51bGxvcHQpOworCisgICAgICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmxpbmVJdGVtLmxheW91dEJveCgpOyB9CisgICAgICAgIGNvbnN0IERpc3Bs
YXk6OlJlY3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdDsgfQor
ICAgICAgICBjb25zdCBPcHRpb25hbDxEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0PiYgdGV4dENv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHRDb250ZXh0OyB9CisKKyAgICAgICAgYm9vbCBp
c1RleHQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW0uaXNUZXh0KCk7IH0KKyAgICAgICAg
Ym9vbCBpc0JveCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbS5pc0JveCgpOyB9CisgICAg
ICAgIGJvb2wgaXNDb250YWluZXJTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbS5p
c0NvbnRhaW5lclN0YXJ0KCk7IH0KKyAgICAgICAgYm9vbCBpc0NvbnRhaW5lckVuZCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5saW5lSXRlbS5pc0NvbnRhaW5lckVuZCgpOyB9CisgICAgICAgIGJvb2wg
aXNGb3JjZWRMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW0uaXNGb3JjZWRM
aW5lQnJlYWsoKTsgfQorICAgICAgICBJbmxpbmVJdGVtOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2lubGluZUl0ZW0udHlwZSgpOyB9CisKKyAgICAgICAgdm9pZCBzZXRJc0NvbGxhcHNl
ZCgpIHsgbV9pc0NvbGxhcHNlZCA9IHRydWU7IH0KKyAgICAgICAgYm9vbCBpc0NvbGxhcHNlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsYXBzZWQ7IH0KKworICAgICAgICB2b2lkIHNldENvbGxh
cHNlc1RvWmVyb0FkdmFuY2VXaWR0aCgpOworICAgICAgICBib29sIGlzQ29sbGFwc2VkVG9aZXJv
QWR2YW5jZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWRUb1plcm9BZHZhbmNlV2lk
dGg7IH0KKworICAgICAgICBib29sIGlzQ29sbGFwc2libGUoKSBjb25zdCB7IHJldHVybiBpczxJ
bmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtKSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4o
bV9pbmxpbmVJdGVtKS5pc0NvbGxhcHNpYmxlKCk7IH0KKyAgICAgICAgYm9vbCBpc1doaXRlc3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBpczxJbmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtKSAmJiBk
b3duY2FzdDxJbmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtKS5pc1doaXRlc3BhY2UoKTsgfQor
CisgICAgICAgIGJvb2wgaGFzRXhwYW5zaW9uT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVybiBp
c1doaXRlc3BhY2UoKSAmJiAhaXNDb2xsYXBzZWRUb1plcm9BZHZhbmNlV2lkdGgoKTsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgY29uc3QgSW5saW5lSXRlbSYgbV9pbmxpbmVJdGVtOworICAg
ICAgICBEaXNwbGF5OjpSZWN0IG1fbG9naWNhbFJlY3Q7CisgICAgICAgIGNvbnN0IE9wdGlvbmFs
PERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQ+IG1fdGV4dENvbnRleHQ7CisgICAgICAgIGJvb2wg
bV9pc0NvbGxhcHNlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9jb2xsYXBzZWRUb1plcm9B
ZHZhbmNlV2lkdGggeyBmYWxzZSB9OworICAgIH07CiAKLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKLSAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPElubGluZUl0ZW1SdW4+LCA1MD4gbV9pbmxpbmVJdGVtUnVuczsKICAgICBzdHJ1
Y3QgVHJpbW1hYmxlQ29udGVudCB7Ci0gICAgICAgIHZvaWQgYXBwZW5kKElubGluZUl0ZW1SdW4m
KTsKKyAgICAgICAgdm9pZCBhcHBlbmQoTGF5b3V0VW5pdCBpdGVtUnVuV2lkdGgsIHNpemVfdCBy
dW5JbmRleCk7CiAgICAgICAgIHZvaWQgY2xlYXIoKTsKIAogICAgICAgICBMYXlvdXRVbml0IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQotICAgICAgICB1c2luZyBUcmltbWFibGVM
aXN0ID0gVmVjdG9yPElubGluZUl0ZW1SdW4qLCA1PjsKLSAgICAgICAgVHJpbW1hYmxlTGlzdCYg
cnVucygpIHsgcmV0dXJuIG1faW5saW5lSXRlbVJ1bnM7IH0KLSAgICAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVtUnVucy5pc0VtcHR5KCk7IH0KKyAgICAgICAg
VmVjdG9yPHNpemVfdCwgNT4mIHJ1bkluZGV4ZXMoKSB7IHJldHVybiBtX3J1bkluZGV4ZXM7IH0K
KyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9ydW5JbmRleGVzLmlzRW1w
dHkoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgVHJpbW1hYmxlTGlzdCBtX2lubGluZUl0
ZW1SdW5zOworICAgICAgICBWZWN0b3I8c2l6ZV90LCA1PiBtX3J1bkluZGV4ZXM7CiAgICAgICAg
IExheW91dFVuaXQgbV93aWR0aDsKICAgICB9OworCisgICAgY29uc3QgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CisgICAgVmVjdG9yPElubGluZUl0
ZW1SdW4sIDUwPiBtX2lubGluZUl0ZW1SdW5zOwogICAgIFRyaW1tYWJsZUNvbnRlbnQgbV90cmlt
bWFibGVDb250ZW50OwogICAgIE9wdGlvbmFsPExpbmVCb3g6OkJhc2VsaW5lPiBtX2luaXRpYWxT
dHJ1dDsKICAgICBMYXlvdXRVbml0IG1fbGluZUxvZ2ljYWxXaWR0aDsKQEAgLTE3NCw3ICsyMTAs
NyBAQCBwcml2YXRlOgogCiBpbmxpbmUgdm9pZCBMaW5lQnVpbGRlcjo6VHJpbW1hYmxlQ29udGVu
dDo6Y2xlYXIoKQogewotICAgIG1faW5saW5lSXRlbVJ1bnMuY2xlYXIoKTsKKyAgICBtX3J1bklu
ZGV4ZXMuY2xlYXIoKTsKICAgICBtX3dpZHRoID0geyB9OwogfQogCg==
</data>
<flag name="review"
          id="400258"
          type_id="1"
          status="+"
          setter="zalan"
    />
    <flag name="commit-queue"
          id="400260"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384456</attachid>
            <date>2019-11-28 07:22:13 -0800</date>
            <delta_ts>2019-11-28 08:06:18 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-vector-allocate-inlineitemruns-3.patch</filename>
            <type>text/plain</type>
            <size>20932</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MjY2N2I2MTQ3ZS4uYTIyNDgwZjI3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MiBAQAorMjAxOS0xMS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSUZDXSBWZWN0b3IgYWxsb2NhdGUgSW5saW5lSXRlbVJ1bnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY4MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICBSZWR1Y2UgaGVhcCBh
bGxvY2F0aW9ucyBkdXJpbmcgaW5saW5lIGxheW91dC4KKworICAgICAgICBUaGlzIGlzIH4xNSUg
c3BlZWR1cCBpbiBQZXJmb3JtYW5jZVRlc3RzL0xheW91dC9saW5lLWxheW91dC1zaW1wbGUuaHRt
bCB3aXRoIExGQy1pbi1yZW5kZXItdHJlZSBlbmFibGVkLgorICAgICAgICBXaXRoIG90aGVyIGlt
cHJvdmVtZW50cyBpdCBtYWtlcyBMRkMgcGF0aCBmYXN0ZXIgdGhhbiBzaW1wbGUgbGluZSBsYXlv
dXQgaW4gdGhpcyB0ZXN0LgorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRl
cjo6Q29udGlub3VzQ29udGVudDo6Q29udGlub3VzQ29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpDb250aW5vdXNDb250ZW50OjphcHBlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Q29udGlub3VzQ29udGVudDo6Y2xvc2Up
OgorCisgICAgICAgIE1vdmUgdG8gTGluZUJ1aWxkZXIgbmFtZXNwYWNlLgorCisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCdWlsZGVyOjpyZW1vdmVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YXBwZW5kTm9uQnJlYWthYmxlU3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YXBwZW5kVGV4dENv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YXBwZW5kTm9u
UmVwbGFjZWRJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRl
cjo6YXBwZW5kTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OlRyaW1tYWJsZUNvbnRlbnQ6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxpbmVCdWlsZGVyOjpmb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjpJbmxpbmVJdGVtUnVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OnNldENv
bGxhcHNlc1RvWmVyb0FkdmFuY2VXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUl0ZW1SdW46OmxheW91dEJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUl0ZW1SdW46OmxvZ2ljYWxSZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lSXRlbVJ1bjo6dGV4dENvbnRleHQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtUnVuOjppc1Rl
eHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVt
UnVuOjppc0JveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUl0ZW1SdW46OmlzQ29udGFpbmVyU3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtUnVuOjppc0NvbnRhaW5lckVuZCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1SdW46OmlzRm9yY2Vk
TGluZUJyZWFrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lSXRlbVJ1bjo6dHlwZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUl0ZW1SdW46OnNldElzQ29sbGFwc2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lSXRlbVJ1bjo6aXNDb2xsYXBzZWQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtUnVuOjppc0NvbGxhcHNlZFRv
WmVyb0FkdmFuY2VXaWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUl0ZW1SdW46OmlzQ29sbGFwc2libGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtUnVuOjppc1doaXRlc3BhY2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtUnVuOjpoYXNFeHBh
bnNpb25PcHBvcnR1bml0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUl0ZW1SdW46OklubGluZUl0ZW1SdW4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtUnVuOjpzZXRDb2xsYXBzZXNUb1plcm9BZHZhbmNlV2lk
dGgpOiBEZWxldGVkLgorCisgICAgICAgIE1vdmUgSW5saW5lSXRlbVJ1biB0byBoZWFkZXIgaW4g
TGluZUJ1aWxkZXIgbmFtZXNwYWNlIHNvIHdlIGNhbiB1c2UgZGlyZWN0bHkgaW4gbV9pbmxpbmVJ
dGVtUnVucyB2ZWN0b3IuCisKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGlub3VzQ29u
dGVudDo6Y2FuQmVFeHBhbmRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkNvbnRpbm91c0NvbnRlbnQ6OmNhbkJlTWVyZ2VkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Q29udGlub3VzQ29udGVudDo6Q29udGlub3VzQ29udGVudCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6OmFwcGVu
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbm91c0NvbnRlbnQ6
OmNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6
SW5saW5lSXRlbVJ1bjo6bGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OmxvZ2ljYWxSZWN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OnRleHRDb250
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OklubGlu
ZUl0ZW1SdW46OmlzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
dWlsZGVyOjpJbmxpbmVJdGVtUnVuOjppc0JveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjppc0NvbnRhaW5lclN0YXJ0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46
OmlzQ29udGFpbmVyRW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1
aWxkZXI6OklubGluZUl0ZW1SdW46OmlzRm9yY2VkTGluZUJyZWFrIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SdW46OnR5cGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6
c2V0SXNDb2xsYXBzZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6
SW5saW5lSXRlbVJ1bjo6aXNDb2xsYXBzZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6aXNDb2xsYXBzZWRUb1plcm9BZHZhbmNl
V2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5s
aW5lSXRlbVJ1bjo6aXNDb2xsYXBzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjppc1doaXRlc3BhY2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJ1bjo6aGFzRXhw
YW5zaW9uT3Bwb3J0dW5pdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6VHJpbW1hYmxlQ29udGVudDo6cnVuSW5kZXhlcyk6CisKKyAgICAgICAgTWFrZSBU
cmltbWFibGVDb250ZW50IGNvbGxlY3QgaW5kZXhlcyB0byBJbmxpbmVJdGVtUnVuIHZlY3RvciBp
bnN0ZWFkIG9mIHBvaW50ZXIuCisgICAgICAgIFdlIG9ubHkgZXZlciBhcHBlbmQgdG8gdGhlIHZl
Y3RvciBzbyB0aGUgaW5kZXhlcyBzdGF5IHZhbGlkIGZvciBUcmltbWFibGVDb250ZW50IGxpZmV0
aW1lLgorCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpUcmltbWFibGVD
b250ZW50Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1
aWxkZXI6OlRyaW1tYWJsZUNvbnRlbnQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJ1aWxkZXI6OlRyaW1tYWJsZUNvbnRlbnQ6OnJ1bnMpOiBEZWxldGVkLgorCiAyMDE5
LTExLTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11b
SUZDXSBBZGp1c3QgdGhlIGxpbmUncyBpcy12aXN1YWxseS1lbXB0eSBzdGF0dXMgYWZ0ZXIgdHJp
bW1pbmcgdGhlIHRyYWlsaW5nIHdoaXRlc3BhY2UgY29udGVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCmluZGV4IDZkNDQzNGI3Nzg0Li4wMGVjNWJmM2ZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVy
LmNwcApAQCAtMzUsNTUgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBM
YXlvdXQgewogCi1jbGFzcyBJbmxpbmVJdGVtUnVuIHsKLVdURl9NQUtFX0lTT19BTExPQ0FURURf
SU5MSU5FKElubGluZUl0ZW1SdW4pOwotcHVibGljOgotICAgIElubGluZUl0ZW1SdW4oY29uc3Qg
SW5saW5lSXRlbSYsIGNvbnN0IERpc3BsYXk6OlJlY3QmLCBXVEY6Ok9wdGlvbmFsPERpc3BsYXk6
OlJ1bjo6VGV4dENvbnRleHQ+ID0gV1RGOjpudWxsb3B0KTsKLQotICAgIGNvbnN0IEJveCYgbGF5
b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVtLmxheW91dEJveCgpOyB9Ci0gICAg
Y29uc3QgRGlzcGxheTo6UmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xvZ2lj
YWxSZWN0OyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8RGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dD4m
IHRleHRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29udGV4dDsgfQotCi0gICAgYm9v
bCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW0uaXNUZXh0KCk7IH0KLSAgICBi
b29sIGlzQm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVtLmlzQm94KCk7IH0KLSAgICBi
b29sIGlzQ29udGFpbmVyU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW0uaXNDb250
YWluZXJTdGFydCgpOyB9Ci0gICAgYm9vbCBpc0NvbnRhaW5lckVuZCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5saW5lSXRlbS5pc0NvbnRhaW5lckVuZCgpOyB9Ci0gICAgYm9vbCBpc0ZvcmNlZExpbmVC
cmVhaygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbS5pc0ZvcmNlZExpbmVCcmVhaygpOyB9
Ci0gICAgSW5saW5lSXRlbTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVt
LnR5cGUoKTsgfQotCi0gICAgdm9pZCBzZXRJc0NvbGxhcHNlZCgpIHsgbV9pc0NvbGxhcHNlZCA9
IHRydWU7IH0KLSAgICBib29sIGlzQ29sbGFwc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbGxh
cHNlZDsgfQotCi0gICAgdm9pZCBzZXRDb2xsYXBzZXNUb1plcm9BZHZhbmNlV2lkdGgoKTsKLSAg
ICBib29sIGlzQ29sbGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xsYXBzZWRUb1plcm9BZHZhbmNlV2lkdGg7IH0KLQotICAgIGJvb2wgaXNDb2xsYXBzaWJsZSgp
IGNvbnN0IHsgcmV0dXJuIGlzPElubGluZVRleHRJdGVtPihtX2lubGluZUl0ZW0pICYmIGRvd25j
YXN0PElubGluZVRleHRJdGVtPihtX2lubGluZUl0ZW0pLmlzQ29sbGFwc2libGUoKTsgfQotICAg
IGJvb2wgaXNXaGl0ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gaXM8SW5saW5lVGV4dEl0ZW0+KG1f
aW5saW5lSXRlbSkgJiYgZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG1faW5saW5lSXRlbSkuaXNX
aGl0ZXNwYWNlKCk7IH0KLQotICAgIGJvb2wgaGFzRXhwYW5zaW9uT3Bwb3J0dW5pdHkoKSBjb25z
dCB7IHJldHVybiBpc1doaXRlc3BhY2UoKSAmJiAhaXNDb2xsYXBzZWRUb1plcm9BZHZhbmNlV2lk
dGgoKTsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IElubGluZUl0ZW0mIG1faW5saW5lSXRlbTsK
LSAgICBEaXNwbGF5OjpSZWN0IG1fbG9naWNhbFJlY3Q7Ci0gICAgY29uc3QgT3B0aW9uYWw8RGlz
cGxheTo6UnVuOjpUZXh0Q29udGV4dD4gbV90ZXh0Q29udGV4dDsKLSAgICBib29sIG1faXNDb2xs
YXBzZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9jb2xsYXBzZWRUb1plcm9BZHZhbmNlV2lkdGgg
eyBmYWxzZSB9OwotfTsKLQotSW5saW5lSXRlbVJ1bjo6SW5saW5lSXRlbVJ1bihjb25zdCBJbmxp
bmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBEaXNwbGF5OjpSZWN0JiBsb2dpY2FsUmVjdCwgV1RG
OjpPcHRpb25hbDxEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0PiB0ZXh0Q29udGV4dCkKLSAgICA6
IG1faW5saW5lSXRlbShpbmxpbmVJdGVtKQotICAgICwgbV9sb2dpY2FsUmVjdChsb2dpY2FsUmVj
dCkKLSAgICAsIG1fdGV4dENvbnRleHQodGV4dENvbnRleHQpCi17Ci19Ci0KLXZvaWQgSW5saW5l
SXRlbVJ1bjo6c2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCkKLXsKLSAgICBtX2NvbGxh
cHNlZFRvWmVyb0FkdmFuY2VXaWR0aCA9IHRydWU7Ci0gICAgbV9sb2dpY2FsUmVjdC5zZXRXaWR0
aCh7IH0pOwotfQotCi1zdHJ1Y3QgQ29udGlub3VzQ29udGVudCB7CitzdHJ1Y3QgTGluZUJ1aWxk
ZXI6OkNvbnRpbm91c0NvbnRlbnQgewogcHVibGljOgogICAgIENvbnRpbm91c0NvbnRlbnQoY29u
c3QgSW5saW5lSXRlbVJ1biYsIGJvb2wgdGV4dElzQWxpZ25KdXN0aWZ5KTsKIApAQCAtMTAzLDE0
ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZXhwYW5zaW9uT3Bwb3J0dW5pdHlD
b3VudCB7IDAgfTsKIH07CiAKLUNvbnRpbm91c0NvbnRlbnQ6OkNvbnRpbm91c0NvbnRlbnQoY29u
c3QgSW5saW5lSXRlbVJ1biYgaW5pdGlhbElubGluZVJ1biwgYm9vbCB0ZXh0SXNBbGlnbkp1c3Rp
ZnkpCitMaW5lQnVpbGRlcjo6Q29udGlub3VzQ29udGVudDo6Q29udGlub3VzQ29udGVudChjb25z
dCBJbmxpbmVJdGVtUnVuJiBpbml0aWFsSW5saW5lUnVuLCBib29sIHRleHRJc0FsaWduSnVzdGlm
eSkKICAgICA6IG1faW5pdGlhbElubGluZVJ1bihpbml0aWFsSW5saW5lUnVuKQogICAgICwgbV90
ZXh0SXNBbGlnbkp1c3RpZnkodGV4dElzQWxpZ25KdXN0aWZ5KQogICAgICwgbV90cmFpbGluZ1J1
bkNhbkJlRXhwYW5kZWQoY2FuQmVFeHBhbmRlZChpbml0aWFsSW5saW5lUnVuKSkKIHsKIH0KIAot
Ym9vbCBDb250aW5vdXNDb250ZW50OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbVJ1biYgaW5saW5l
SXRlbVJ1bikKK2Jvb2wgTGluZUJ1aWxkZXI6OkNvbnRpbm91c0NvbnRlbnQ6OmFwcGVuZChjb25z
dCBJbmxpbmVJdGVtUnVuJiBpbmxpbmVJdGVtUnVuKQogewogICAgIC8vIE1lcmdlZCBjb250ZW50
IG5lZWRzIHRvIGJlIGNvbnRpbnVvdXMuCiAgICAgaWYgKCFtX3RyYWlsaW5nUnVuQ2FuQmVFeHBh
bmRlZCkKQEAgLTEzMiw3ICs4NCw3IEBAIGJvb2wgQ29udGlub3VzQ29udGVudDo6YXBwZW5kKGNv
bnN0IElubGluZUl0ZW1SdW4mIGlubGluZUl0ZW1SdW4pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LUxpbmVCdWlsZGVyOjpSdW4gQ29udGlub3VzQ29udGVudDo6Y2xvc2UoKQorTGluZUJ1aWxkZXI6
OlJ1biBMaW5lQnVpbGRlcjo6Q29udGlub3VzQ29udGVudDo6Y2xvc2UoKQogewogICAgIGlmICgh
bV9leHBhbmRlZExlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgbV9pbml0aWFsSW5saW5lUnVuIH07
CkBAIC0yNjMsOSArMjE1LDkgQEAgTGluZUJ1aWxkZXI6OlJ1bkxpc3QgTGluZUJ1aWxkZXI6OmNs
b3NlKElzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCBpc0xhc3RMaW5lV2kKICAgICB1bnNpZ25l
ZCBydW5JbmRleCA9IDA7CiAgICAgd2hpbGUgKHJ1bkluZGV4IDwgbV9pbmxpbmVJdGVtUnVucy5z
aXplKCkpIHsKICAgICAgICAgLy8gTWVyZ2UgZWxpZ2libGUgcnVucy4KLSAgICAgICAgYXV0byBj
b250aW5vdXNDb250ZW50ID0gQ29udGlub3VzQ29udGVudCB7ICptX2lubGluZUl0ZW1SdW5zW3J1
bkluZGV4XSwgaXNUZXh0QWxpZ25KdXN0aWZ5KCkgfTsKKyAgICAgICAgYXV0byBjb250aW5vdXND
b250ZW50ID0gQ29udGlub3VzQ29udGVudCB7IG1faW5saW5lSXRlbVJ1bnNbcnVuSW5kZXhdLCBp
c1RleHRBbGlnbkp1c3RpZnkoKSB9OwogICAgICAgICB3aGlsZSAoKytydW5JbmRleCA8IG1faW5s
aW5lSXRlbVJ1bnMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIWNvbnRpbm91c0NvbnRlbnQu
YXBwZW5kKCptX2lubGluZUl0ZW1SdW5zW3J1bkluZGV4XSkpCisgICAgICAgICAgICBpZiAoIWNv
bnRpbm91c0NvbnRlbnQuYXBwZW5kKG1faW5saW5lSXRlbVJ1bnNbcnVuSW5kZXhdKSkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBydW5MaXN0LmFwcGVuZChjb250
aW5vdXNDb250ZW50LmNsb3NlKCkpOwpAQCAtNDI5LDEwICszODEsMTEgQEAgdm9pZCBMaW5lQnVp
bGRlcjo6cmVtb3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gQ29sbGFwc2UgdHJpbW1hYmxlIHRyYWlsaW5nIGNvbnRlbnQKLSAgICBmb3IgKGF1
dG8qIHRyaW1tYWJsZVJ1biA6IG1fdHJpbW1hYmxlQ29udGVudC5ydW5zKCkpIHsKLSAgICAgICAg
QVNTRVJUKHRyaW1tYWJsZVJ1bi0+aXNUZXh0KCkpOworICAgIGZvciAoYXV0byB0cmltbWFibGVS
dW5JbmRleCA6IG1fdHJpbW1hYmxlQ29udGVudC5ydW5JbmRleGVzKCkpIHsKKyAgICAgICAgYXV0
byYgdHJpbW1hYmxlUnVuID0gbV9pbmxpbmVJdGVtUnVuc1t0cmltbWFibGVSdW5JbmRleF07Cisg
ICAgICAgIEFTU0VSVCh0cmltbWFibGVSdW4uaXNUZXh0KCkpOwogICAgICAgICAvLyBGSVhNRTog
V2UgbWlnaHQgbmVlZCB0byBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0cmltbWVk
IGFuZCBjb2xsYXBzZWQgcnVucy4KLSAgICAgICAgdHJpbW1hYmxlUnVuLT5zZXRDb2xsYXBzZXNU
b1plcm9BZHZhbmNlV2lkdGgoKTsKKyAgICAgICAgdHJpbW1hYmxlUnVuLnNldENvbGxhcHNlc1Rv
WmVyb0FkdmFuY2VXaWR0aCgpOwogICAgIH0KICAgICBtX2xpbmVCb3guc2hyaW5rSG9yaXpvbnRh
bGx5KG1fdHJpbW1hYmxlQ29udGVudC53aWR0aCgpKTsKICAgICBtX3RyaW1tYWJsZUNvbnRlbnQu
Y2xlYXIoKTsKQEAgLTQ0Myw3ICszOTYsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpyZW1vdmVUcmFp
bGluZ1RyaW1tYWJsZUNvbnRlbnQoKQogICAgICAgICAvLyA8c3Bhbj4gIDwvc3Bhbj48c3BhbiBz
dHlsZT0icGFkZGluZy1sZWZ0OiAxMHB4Ij48L3NwYW4+ICA8LSBub24tZW1wdHkKICAgICAgICAg
YXV0byBsaW5lSXNWaXN1YWxseUVtcHR5ID0gWyZdIHsKICAgICAgICAgICAgIGZvciAoYXV0byYg
cnVuIDogbV9pbmxpbmVJdGVtUnVucykgewotICAgICAgICAgICAgICAgIGlmIChpc1Zpc3VhbGx5
Tm9uRW1wdHkoKnJ1bikpCisgICAgICAgICAgICAgICAgaWYgKGlzVmlzdWFsbHlOb25FbXB0eShy
dW4pKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ4OSwxMyArNDQyLDEzIEBAIHZvaWQgTGluZUJ1
aWxkZXI6OmFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxv
Z2ljYWxXaWR0aCkKIAogICAgIC8vIENoZWNrIGlmIHRoaXMgZnJlc2hseSBhcHBlbmRlZCBjb250
ZW50IG1ha2VzIHRoZSBsaW5lIHZpc3VhbGx5IG5vbi1lbXB0eS4KICAgICBBU1NFUlQoIW1faW5s
aW5lSXRlbVJ1bnMuaXNFbXB0eSgpKTsKLSAgICBpZiAobV9saW5lQm94LmlzQ29uc2lkZXJlZEVt
cHR5KCkgJiYgaXNWaXN1YWxseU5vbkVtcHR5KCptX2lubGluZUl0ZW1SdW5zLmxhc3QoKSkpCisg
ICAgaWYgKG1fbGluZUJveC5pc0NvbnNpZGVyZWRFbXB0eSgpICYmIGlzVmlzdWFsbHlOb25FbXB0
eShtX2lubGluZUl0ZW1SdW5zLmxhc3QoKSkpCiAgICAgICAgIG1fbGluZUJveC5zZXRJc0NvbnNp
ZGVyZWROb25FbXB0eSgpOwogfQogCiB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmROb25CcmVha2Fi
bGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBEaXNwbGF5OjpSZWN0
JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2lubGluZUl0ZW1SdW5zLmFwcGVuZChtYWtlVW5pcXVl
PElubGluZUl0ZW1SdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9pbmxpbmVJ
dGVtUnVucy5hcHBlbmQoeyBpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCB9KTsKICAgICBtX2xpbmVC
b3guZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOwogfQogCkBAIC01MzIs
MTYgKzQ4NSwxNiBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJ
bmxpbmVUZXh0SXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdAogICAgICAgICAvLyBDaGVjayBp
ZiB0aGUgbGFzdCBpdGVtIGlzIGNvbGxhcHNlZCBhcyB3ZWxsLgogICAgICAgICBmb3IgKGF1dG8g
aSA9IG1faW5saW5lSXRlbVJ1bnMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBhdXRvJiBy
dW4gPSBtX2lubGluZUl0ZW1SdW5zW2ldOwotICAgICAgICAgICAgaWYgKHJ1bi0+aXNCb3goKSkK
KyAgICAgICAgICAgIGlmIChydW4uaXNCb3goKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQtMy8j
d2hpdGUtc3BhY2UtcGhhc2UtMQogICAgICAgICAgICAgLy8gQW55IGNvbGxhcHNpYmxlIHNwYWNl
IGltbWVkaWF0ZWx5IGZvbGxvd2luZyBhbm90aGVyIGNvbGxhcHNpYmxlIHNwYWNl4oCUZXZlbiBv
bmUgb3V0c2lkZSB0aGUgYm91bmRhcnkgb2YgdGhlIGlubGluZSBjb250YWluaW5nIHRoYXQgc3Bh
Y2UsCiAgICAgICAgICAgICAvLyBwcm92aWRlZCBib3RoIHNwYWNlcyBhcmUgd2l0aGluIHRoZSBz
YW1lIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHTigJRpcyBjb2xsYXBzZWQgdG8gaGF2ZSB6ZXJv
IGFkdmFuY2Ugd2lkdGguCiAgICAgICAgICAgICAvLyA6ICI8c3Bhbj4gIDwvc3Bhbj4gIiA8LSB0
aGUgdHJhaWxpbmcgd2hpdGVzcGFjZSBjb2xsYXBzZXMgY29tcGxldGVseS4KICAgICAgICAgICAg
IC8vIE5vdCB0aGF0IHdoZW4gdGhlIGlubGluZSBjb250YWluZXIgaGFzIHByZXNlcnZlIHdoaXRl
c3BhY2Ugc3R5bGUsICI8c3BhbiBzdHlsZT0id2hpdGUtc3BhY2U6IHByZSI+ICA8L3NwYW4+ICIg
PC0gdGhpcyB3aGl0ZXNwYWNlIHN0YXlzIGFyb3VuZC4KLSAgICAgICAgICAgIGlmIChydW4tPmlz
VGV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBydW4tPmlzQ29sbGFwc2libGUoKTsKLSAg
ICAgICAgICAgIEFTU0VSVChydW4tPmlzQ29udGFpbmVyU3RhcnQoKSB8fCBydW4tPmlzQ29udGFp
bmVyRW5kKCkpOworICAgICAgICAgICAgaWYgKHJ1bi5pc1RleHQoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcnVuLmlzQ29sbGFwc2libGUoKTsKKyAgICAgICAgICAgIEFTU0VSVChydW4uaXND
b250YWluZXJTdGFydCgpIHx8IHJ1bi5pc0NvbnRhaW5lckVuZCgpKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9OwpAQCAtNTQ5LDIzICs1MDIsMjUgQEAgdm9pZCBMaW5l
QnVpbGRlcjo6YXBwZW5kVGV4dENvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZUl0
ZW0sIExheW91dFVuaXQKICAgICBhdXRvIGNvbGxhcHNlZFJ1biA9IGlubGluZUl0ZW0uaXNDb2xs
YXBzaWJsZSgpICYmIGlubGluZUl0ZW0ubGVuZ3RoKCkgPiAxOwogICAgIGF1dG8gY29udGVudFN0
YXJ0ID0gaW5saW5lSXRlbS5zdGFydCgpOwogICAgIGF1dG8gY29udGVudExlbmd0aCA9ICBjb2xs
YXBzZWRSdW4gPyAxIDogaW5saW5lSXRlbS5sZW5ndGgoKTsKLSAgICBhdXRvIGxpbmVSdW4gPSBt
YWtlVW5pcXVlPElubGluZUl0ZW1SdW4+KGlubGluZUl0ZW0sIERpc3BsYXk6OlJlY3QgeyAwLCBj
b250ZW50TG9naWNhbFdpZHRoKCksIGxvZ2ljYWxXaWR0aCwgeyB9IH0sCi0gICAgICAgIERpc3Bs
YXk6OlJ1bjo6VGV4dENvbnRleHQgeyBjb250ZW50U3RhcnQsIGNvbnRlbnRMZW5ndGgsIGlubGlu
ZUl0ZW0ubGF5b3V0Qm94KCkudGV4dENvbnRleHQoKS0+Y29udGVudCB9KTsKKyAgICBhdXRvIGxp
bmVSdW4gPSBJbmxpbmVJdGVtUnVuIHsgaW5saW5lSXRlbSwgRGlzcGxheTo6UmVjdCB7IDAsIGNv
bnRlbnRMb2dpY2FsV2lkdGgoKSwgbG9naWNhbFdpZHRoLCB7IH0gfSwKKyAgICAgICAgRGlzcGxh
eTo6UnVuOjpUZXh0Q29udGV4dCB7IGNvbnRlbnRTdGFydCwgY29udGVudExlbmd0aCwgaW5saW5l
SXRlbS5sYXlvdXRCb3goKS50ZXh0Q29udGV4dCgpLT5jb250ZW50IH0gfTsKIAogICAgIGF1dG8g
Y29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoID0gd2lsbENvbGxhcHNlQ29tcGxldGVseSgpOwog
ICAgIGlmIChjb2xsYXBzZXNUb1plcm9BZHZhbmNlV2lkdGgpCi0gICAgICAgIGxpbmVSdW4tPnNl
dENvbGxhcHNlc1RvWmVyb0FkdmFuY2VXaWR0aCgpOworICAgICAgICBsaW5lUnVuLnNldENvbGxh
cHNlc1RvWmVyb0FkdmFuY2VXaWR0aCgpOwogCiAgICAgaWYgKGNvbGxhcHNlZFJ1bikKLSAgICAg
ICAgbGluZVJ1bi0+c2V0SXNDb2xsYXBzZWQoKTsKKyAgICAgICAgbGluZVJ1bi5zZXRJc0NvbGxh
cHNlZCgpOworCisgICAgYXV0byBsaW5lUnVuV2lkdGggPSBsaW5lUnVuLmxvZ2ljYWxSZWN0KCku
d2lkdGgoKTsKICAgICBpZiAoaXNUcmltbWFibGUpIHsKICAgICAgICAgLy8gSWYgd2UgZXZlciB0
cmltIHRoaXMgY29udGVudCwgd2UgbmVlZCB0byBrbm93IGlmIHRoZSBsaW5lIHZpc2liaWxpdHkg
c3RhdGUgbmVlZHMgdG8gYmUgcmVjb21wdXRlZC4KICAgICAgICAgaWYgKG1fdHJpbW1hYmxlQ29u
dGVudC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZvcmVU
cmltbWFibGVDb250ZW50ID0gaXNWaXN1YWxseUVtcHR5KCk7Ci0gICAgICAgIG1fdHJpbW1hYmxl
Q29udGVudC5hcHBlbmQoKmxpbmVSdW4pOworICAgICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuYXBw
ZW5kKGxpbmVSdW5XaWR0aCwgbV9pbmxpbmVJdGVtUnVucy5zaXplKCkpOwogICAgIH0KIAotICAg
IG1fbGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobGluZVJ1bi0+bG9naWNhbFJlY3QoKS53aWR0
aCgpKTsKKyAgICBtX2xpbmVCb3guZXhwYW5kSG9yaXpvbnRhbGx5KGxpbmVSdW5XaWR0aCk7CiAg
ICAgbV9pbmxpbmVJdGVtUnVucy5hcHBlbmQoV1RGTW92ZShsaW5lUnVuKSk7CiB9CiAKQEAgLTU3
NCw3ICs1MjksNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmROb25SZXBsYWNlZElubGluZUJv
eChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdQogICAgIGF1dG8mIGxheW91dEJv
eCA9IGlubGluZUl0ZW0ubGF5b3V0Qm94KCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3Jt
YXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgYXV0byBob3Jp
em9udGFsTWFyZ2luID0gYm94R2VvbWV0cnkuaG9yaXpvbnRhbE1hcmdpbigpOwotICAgIG1faW5s
aW5lSXRlbVJ1bnMuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lSXRlbVJ1bj4oaW5saW5lSXRlbSwg
RGlzcGxheTo6UmVjdCB7IDAsIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSArIGhvcml6b250YWxNYXJn
aW4uc3RhcnQsIGxvZ2ljYWxXaWR0aCwgeyB9IH0pKTsKKyAgICBtX2lubGluZUl0ZW1SdW5zLmFw
cGVuZCh7IGlubGluZUl0ZW0sIERpc3BsYXk6OlJlY3QgeyAwLCBjb250ZW50TG9naWNhbFdpZHRo
KCkgKyBob3Jpem9udGFsTWFyZ2luLnN0YXJ0LCBsb2dpY2FsV2lkdGgsIHsgfSB9IH0pOwogICAg
IG1fbGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1h
cmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kKTsKICAgICBtX3RyaW1tYWJsZUNvbnRl
bnQuY2xlYXIoKTsKIH0KQEAgLTU4OCw3ICs1NDMsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBl
bmRSZXBsYWNlZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRV
bgogCiB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRMaW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYg
aW5saW5lSXRlbSkKIHsKLSAgICBtX2lubGluZUl0ZW1SdW5zLmFwcGVuZChtYWtlVW5pcXVlPElu
bGluZUl0ZW1SdW4+KGlubGluZUl0ZW0sIERpc3BsYXk6OlJlY3QgeyAwLCBjb250ZW50TG9naWNh
bFdpZHRoKCksIHsgfSwgeyB9IH0pKTsKKyAgICBtX2lubGluZUl0ZW1SdW5zLmFwcGVuZCh7IGlu
bGluZUl0ZW0sIERpc3BsYXk6OlJlY3QgeyAwLCBjb250ZW50TG9naWNhbFdpZHRoKCksIHsgfSwg
eyB9IH0gfSk7CiB9CiAKIHZvaWQgTGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhl
aWdodChjb25zdCBSdW4mIHJ1bikKQEAgLTczMiwxMyArNjg3LDYgQEAgYm9vbCBMaW5lQnVpbGRl
cjo6aXNWaXN1YWxseU5vbkVtcHR5KGNvbnN0IElubGluZUl0ZW1SdW4mIHJ1bikgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTGluZUJ1aWxkZXI6OlRyaW1tYWJsZUNvbnRlbnQ6
OmFwcGVuZChJbmxpbmVJdGVtUnVuJiBpbmxpbmVJdGVtUnVuKQotewotICAgIEFTU0VSVChpbmxp
bmVJdGVtUnVuLmxvZ2ljYWxSZWN0KCkud2lkdGgoKSA+PSAwKTsKLSAgICBtX3dpZHRoICs9IGlu
bGluZUl0ZW1SdW4ubG9naWNhbFJlY3QoKS53aWR0aCgpOwotICAgIG1faW5saW5lSXRlbVJ1bnMu
YXBwZW5kKCZpbmxpbmVJdGVtUnVuKTsKLX0KLQogTGluZUJveDo6QmFzZWxpbmUgTGluZUJ1aWxk
ZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIExh
eW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpCiB7CiAgICAgYXV0byBhc2NlbnQgPSBmb250TWV0
cmljcy5hc2NlbnQoKTsKQEAgLTc1OSw3ICs3MDcsMjcgQEAgTGF5b3V0U3RhdGUmIExpbmVCdWls
ZGVyOjpsYXlvdXRTdGF0ZSgpIGNvbnN0CiBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYg
TGluZUJ1aWxkZXI6OmZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9p
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKLX0gCit9CisKK3ZvaWQgTGluZUJ1aWxkZXI6OlRyaW1t
YWJsZUNvbnRlbnQ6OmFwcGVuZChMYXlvdXRVbml0IGl0ZW1SdW5XaWR0aCwgc2l6ZV90IHJ1bklu
ZGV4KQoreworICAgIEFTU0VSVChpdGVtUnVuV2lkdGggPj0gMCk7CisgICAgbV93aWR0aCArPSBp
dGVtUnVuV2lkdGg7CisgICAgbV9ydW5JbmRleGVzLmFwcGVuZChydW5JbmRleCk7Cit9CisKK0xp
bmVCdWlsZGVyOjpJbmxpbmVJdGVtUnVuOjpJbmxpbmVJdGVtUnVuKGNvbnN0IElubGluZUl0ZW0m
IGlubGluZUl0ZW0sIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2ljYWxSZWN0LCBXVEY6Ok9wdGlv
bmFsPERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQ+IHRleHRDb250ZXh0KQorICAgIDogbV9pbmxp
bmVJdGVtKGlubGluZUl0ZW0pCisgICAgLCBtX2xvZ2ljYWxSZWN0KGxvZ2ljYWxSZWN0KQorICAg
ICwgbV90ZXh0Q29udGV4dCh0ZXh0Q29udGV4dCkKK3sKK30KKwordm9pZCBMaW5lQnVpbGRlcjo6
SW5saW5lSXRlbVJ1bjo6c2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCkKK3sKKyAgICBt
X2NvbGxhcHNlZFRvWmVyb0FkdmFuY2VXaWR0aCA9IHRydWU7CisgICAgbV9sb2dpY2FsUmVjdC5z
ZXRXaWR0aCh7IH0pOworfQogCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCA4MDUzM2E5
Y2FhMi4uYTFmMjEzZWFiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaApAQCAtMzUsMTEgKzM1LDEy
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotc3RydWN0IENv
bnRpbm91c0NvbnRlbnQ7CiBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKLWNsYXNzIElu
bGluZUl0ZW1SdW47CiAKIGNsYXNzIExpbmVCdWlsZGVyIHsKKyAgICBjbGFzcyBJbmxpbmVJdGVt
UnVuOworICAgIHN0cnVjdCBDb250aW5vdXNDb250ZW50OworCiBwdWJsaWM6CiAgICAgc3RydWN0
IENvbnN0cmFpbnRzIHsKICAgICAgICAgTGF5b3V0UG9pbnQgbG9naWNhbFRvcExlZnQ7CkBAIC01
Miw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfTsKICAgICAgICAgT3B0aW9uYWw8SGVpZ2h0
QW5kQmFzZWxpbmU+IGhlaWdodEFuZEJhc2VsaW5lOwogICAgIH07CisKICAgICBlbnVtIGNsYXNz
IFNraXBBbGlnbm1lbnQgeyBObywgWWVzIH07CiAgICAgTGluZUJ1aWxkZXIoY29uc3QgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQmLCBPcHRpb25hbDxUZXh0QWxpZ25Nb2RlPiwgU2tpcEFsaWdubWVu
dCk7CiAgICAgfkxpbmVCdWlsZGVyKCk7CkBAIC0xNDgsMjMgKzE1MCw1NyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNWaXN1YWxseU5vbkVtcHR5KGNvbnN0IElubGluZUl0ZW1SdW4mKSBjb25zdDsK
IAogICAgIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0OwotICAgIGNvbnN0IElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0OyAKKyAgICBjb25z
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdDsKKwor
ICAgIGNsYXNzIElubGluZUl0ZW1SdW4geworICAgIHB1YmxpYzoKKyAgICAgICAgSW5saW5lSXRl
bVJ1bihjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgRGlzcGxheTo6UmVjdCYsIFdURjo6T3B0aW9u
YWw8RGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dD4gPSBXVEY6Om51bGxvcHQpOworCisgICAgICAg
IGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVtLmxheW91
dEJveCgpOyB9CisgICAgICAgIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2ljYWxSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdDsgfQorICAgICAgICBjb25zdCBPcHRpb25hbDxEaXNw
bGF5OjpSdW46OlRleHRDb250ZXh0PiYgdGV4dENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHRDb250ZXh0OyB9CisKKyAgICAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX2lu
bGluZUl0ZW0uaXNUZXh0KCk7IH0KKyAgICAgICAgYm9vbCBpc0JveCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5saW5lSXRlbS5pc0JveCgpOyB9CisgICAgICAgIGJvb2wgaXNDb250YWluZXJTdGFydCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbS5pc0NvbnRhaW5lclN0YXJ0KCk7IH0KKyAgICAg
ICAgYm9vbCBpc0NvbnRhaW5lckVuZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lSXRlbS5pc0Nv
bnRhaW5lckVuZCgpOyB9CisgICAgICAgIGJvb2wgaXNGb3JjZWRMaW5lQnJlYWsoKSBjb25zdCB7
IHJldHVybiBtX2lubGluZUl0ZW0uaXNGb3JjZWRMaW5lQnJlYWsoKTsgfQorICAgICAgICBJbmxp
bmVJdGVtOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUl0ZW0udHlwZSgpOyB9
CisKKyAgICAgICAgdm9pZCBzZXRJc0NvbGxhcHNlZCgpIHsgbV9pc0NvbGxhcHNlZCA9IHRydWU7
IH0KKyAgICAgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb2xsYXBz
ZWQ7IH0KKworICAgICAgICB2b2lkIHNldENvbGxhcHNlc1RvWmVyb0FkdmFuY2VXaWR0aCgpOwor
ICAgICAgICBib29sIGlzQ29sbGFwc2VkVG9aZXJvQWR2YW5jZVdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV9jb2xsYXBzZWRUb1plcm9BZHZhbmNlV2lkdGg7IH0KKworICAgICAgICBib29sIGlzQ29s
bGFwc2libGUoKSBjb25zdCB7IHJldHVybiBpczxJbmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVt
KSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtKS5pc0NvbGxhcHNpYmxl
KCk7IH0KKyAgICAgICAgYm9vbCBpc1doaXRlc3BhY2UoKSBjb25zdCB7IHJldHVybiBpczxJbmxp
bmVUZXh0SXRlbT4obV9pbmxpbmVJdGVtKSAmJiBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4obV9p
bmxpbmVJdGVtKS5pc1doaXRlc3BhY2UoKTsgfQorCisgICAgICAgIGJvb2wgaGFzRXhwYW5zaW9u
T3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVybiBpc1doaXRlc3BhY2UoKSAmJiAhaXNDb2xsYXBz
ZWRUb1plcm9BZHZhbmNlV2lkdGgoKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgY29uc3Qg
SW5saW5lSXRlbSYgbV9pbmxpbmVJdGVtOworICAgICAgICBEaXNwbGF5OjpSZWN0IG1fbG9naWNh
bFJlY3Q7CisgICAgICAgIGNvbnN0IE9wdGlvbmFsPERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQ+
IG1fdGV4dENvbnRleHQ7CisgICAgICAgIGJvb2wgbV9pc0NvbGxhcHNlZCB7IGZhbHNlIH07Cisg
ICAgICAgIGJvb2wgbV9jb2xsYXBzZWRUb1plcm9BZHZhbmNlV2lkdGggeyBmYWxzZSB9OworICAg
IH07CiAKLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElubGluZUl0ZW1SdW4+LCA1
MD4gbV9pbmxpbmVJdGVtUnVuczsKICAgICBzdHJ1Y3QgVHJpbW1hYmxlQ29udGVudCB7Ci0gICAg
ICAgIHZvaWQgYXBwZW5kKElubGluZUl0ZW1SdW4mKTsKKyAgICAgICAgdm9pZCBhcHBlbmQoTGF5
b3V0VW5pdCBpdGVtUnVuV2lkdGgsIHNpemVfdCBydW5JbmRleCk7CiAgICAgICAgIHZvaWQgY2xl
YXIoKTsKIAogICAgICAgICBMYXlvdXRVbml0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0
aDsgfQotICAgICAgICB1c2luZyBUcmltbWFibGVMaXN0ID0gVmVjdG9yPElubGluZUl0ZW1SdW4q
LCA1PjsKLSAgICAgICAgVHJpbW1hYmxlTGlzdCYgcnVucygpIHsgcmV0dXJuIG1faW5saW5lSXRl
bVJ1bnM7IH0KLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJ
dGVtUnVucy5pc0VtcHR5KCk7IH0KKyAgICAgICAgVmVjdG9yPHNpemVfdCwgNT4mIHJ1bkluZGV4
ZXMoKSB7IHJldHVybiBtX3J1bkluZGV4ZXM7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9ydW5JbmRleGVzLmlzRW1wdHkoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgVHJpbW1hYmxlTGlzdCBtX2lubGluZUl0ZW1SdW5zOworICAgICAgICBWZWN0b3I8c2l6
ZV90LCA1PiBtX3J1bkluZGV4ZXM7CiAgICAgICAgIExheW91dFVuaXQgbV93aWR0aDsKICAgICB9
OworCisgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ7CisgICAgVmVjdG9yPElubGluZUl0ZW1SdW4sIDUwPiBtX2lubGluZUl0ZW1SdW5z
OwogICAgIFRyaW1tYWJsZUNvbnRlbnQgbV90cmltbWFibGVDb250ZW50OwogICAgIE9wdGlvbmFs
PExpbmVCb3g6OkJhc2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsKICAgICBMYXlvdXRVbml0IG1fbGlu
ZUxvZ2ljYWxXaWR0aDsKQEAgLTE3Nyw3ICsyMTMsNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgdm9p
ZCBMaW5lQnVpbGRlcjo6VHJpbW1hYmxlQ29udGVudDo6Y2xlYXIoKQogewotICAgIG1faW5saW5l
SXRlbVJ1bnMuY2xlYXIoKTsKKyAgICBtX3J1bkluZGV4ZXMuY2xlYXIoKTsKICAgICBtX3dpZHRo
ID0geyB9OwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>