<?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>204699</bug_id>
          
          <creation_ts>2019-11-29 04:54:18 -0800</creation_ts>
          <short_desc>[LFC][IFC] Vector allocate LineBoxes and Display::Runs</short_desc>
          <delta_ts>2019-11-29 08:33:36 -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>1594173</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-29 04:54:18 -0800</bug_when>
    <thetext>Reduce heap allocations some more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594174</commentid>
    <comment_count>1</comment_count>
      <attachid>384500</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-29 04:59:10 -0800</bug_when>
    <thetext>Created attachment 384500
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594175</commentid>
    <comment_count>2</comment_count>
      <attachid>384501</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-29 05:01:04 -0800</bug_when>
    <thetext>Created attachment 384501
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594200</commentid>
    <comment_count>3</comment_count>
      <attachid>384501</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-29 08:30:12 -0800</bug_when>
    <thetext>Comment on attachment 384501
patch

Clearing flags on attachment: 384501

Committed r252942: &lt;https://trac.webkit.org/changeset/252942&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594201</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-29 08:30:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594203</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-29 08:33:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/57533501&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384500</attachid>
            <date>2019-11-29 04:59:10 -0800</date>
            <delta_ts>2019-11-29 05:01:04 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-displayrun-vector-allocate.patch</filename>
            <type>text/plain</type>
            <size>26135</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NmU2NDUxNmM4Yi4uZWZhYzJiOWI2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxOS0xMS0yOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgVmVjdG9yIGFsbG9jYXRlIExpbmVCb3hlcyBhbmQgRGlzcGxheTpSdW5zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ2OTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIHJlbmFt
ZSBpbmxpbmVSdW5zIC0+IGRpc3BsYXlSdW5zIHRvIG1hdGNoIHRoZSB0eXBlLgorCisgICAgICAg
ICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JG
b3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAgICAqIGxheW91dC9SZW5kZXJCbG9j
a0Zsb3dMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVuZGVyQmxv
Y2tGbG93TGluZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVM
aW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1
dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBs
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdp
bnNDb2xsYXBzZVRocm91Z2ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpwYWludElubGlu
ZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0
ZSk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5lRGVzY2VudE5lZWRzQ29sbGFwc2luZyBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZTo6ZGlzcGxh
eVJ1bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
U3RhdGU6OmRpc3BsYXlSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ1N0YXRlOjphZGRMaW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ1N0YXRlOjpsaW5lQm94Rm9yUnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGREaXNwbGF5UnVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpyZXNldERpc3BsYXlS
dW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpp
bmxpbmVSdW5zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ1N0YXRlOjppbmxpbmVSdW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRJbmxpbmVSdW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnJlc2V0
SW5saW5lUnVucyk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6YWxpZ25Db250ZW50VmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxpbmVCdWlsZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQpOgorICAgICAgICAqIGxh
eW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6b3V0cHV0SW5saW5lUnVucyk6CisKIDIwMTktMTEtMjggIEZ1amlpIEhpcm9ub3Jp
ICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9LRVlC
T0FSRF9DT0RFX0FUVFJJQlVURSBhbmQgRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUgbWFj
cm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHAKaW5kZXggZmQ4NzRiOTIwNzYuLjZjNjZlMWEzYTQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0xMzQs
OCArMTM0LDggQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbnRl
bnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY28KICAgICAgICAgYXV0byYgbGluZUJv
eGVzID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZS5lc3RhYmxp
c2hlZEZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nUm9vdENvbnRhaW5lcikpLmxpbmVCb3hlcygp
OwogICAgICAgICAvLyBFdmVuIGVtcHR5IGNvbnRhaW5lcnMgZ2VuZXJhdGUgb25lIGxpbmUuIAog
ICAgICAgICBBU1NFUlQoIWxpbmVCb3hlcy5pc0VtcHR5KCkpOwotICAgICAgICB0b3AgPSBsaW5l
Qm94ZXMuZmlyc3QoKS0+bG9naWNhbFRvcCgpOwotICAgICAgICBib3R0b20gPSBsaW5lQm94ZXMu
bGFzdCgpLT5sb2dpY2FsQm90dG9tKCk7CisgICAgICAgIHRvcCA9IGxpbmVCb3hlcy5maXJzdCgp
LmxvZ2ljYWxUb3AoKTsKKyAgICAgICAgYm90dG9tID0gbGluZUJveGVzLmxhc3QoKS5sb2dpY2Fs
Qm90dG9tKCk7CiAgICAgfSBlbHNlIGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5lc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSB8fCBmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5l
c3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSB8fCBmb3JtYXR0aW5nUm9vdENvbnRh
aW5lci5pc0RvY3VtZW50Qm94KCkpIHsKICAgICAgICAgaWYgKGZvcm1hdHRpbmdSb290Q29udGFp
bmVyLmhhc0luRmxvd0NoaWxkKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGZpcnN0Qm94R2VvbWV0
cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveCgqZm9ybWF0dGluZ1Jvb3RDb250
YWluZXIuZmlyc3RJbkZsb3dDaGlsZCgpLCBFc2NhcGVUeXBlOjpBY2Nlc3NDaGlsZEZvcm1hdHRp
bmdDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9SZW5kZXJCbG9j
a0Zsb3dMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9SZW5kZXJCbG9ja0Zs
b3dMaW5lTGF5b3V0LmNwcAppbmRleCAyNjVmMGE3ZjNiOC4uODFkMDhkYzMyNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGluZUxheW91dC5jcHAK
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0OjpsYXlvdXQo
KQogICAgIGxheW91dENvbnRleHQubGF5b3V0KG1fZmxvdy5jb250ZW50U2l6ZSgpLCBpbnZhbGlk
YXRpb25TdGF0ZSk7CiAKICAgICBhdXRvJiBsaW5lQm94ZXMgPSBkb3duY2FzdDxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KG1fbGF5b3V0U3RhdGUtPmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKHJv
b3RDb250YWluZXIpKS5saW5lQm94ZXMoKTsKLSAgICBhdXRvIGhlaWdodCA9IGxpbmVCb3hlcy5s
YXN0KCktPmxvZ2ljYWxCb3R0b20oKTsKKyAgICBhdXRvIGhlaWdodCA9IGxpbmVCb3hlcy5sYXN0
KCkubG9naWNhbEJvdHRvbSgpOwogCiAgICAgYXV0byYgZGlzcGxheUJveCA9IG1fbGF5b3V0U3Rh
dGUtPmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocm9vdENvbnRhaW5lcik7CiAgICAgZGlzcGxheUJv
eC5zZXRDb250ZW50Qm94SGVpZ2h0KGhlaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmlj
YXRpb24uY3BwCmluZGV4IDRiMTMwNzUzMmQ1Li5hYmEwYTllNDk3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAgLTc3LDEwICs3NywxMCBAQCBzdGF0aWMgYm9vbCBv
dXRwdXRNaXNtYXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0m
IHN0cmVhbSwgYwogCiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3Rh
dGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwogICAg
IEFTU0VSVChpczxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkp
OwotICAgIGF1dG8mIGlubGluZVJ1bkxpc3QgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkuaW5saW5lUnVucygpOworICAgIGF1dG8mIGRpc3Bs
YXlSdW5zID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5n
U3RhdGUpLmRpc3BsYXlSdW5zKCk7CiAKLSAgICBpZiAoaW5saW5lUnVuTGlzdC5zaXplKCkgIT0g
bGluZUxheW91dERhdGEtPnJ1bkNvdW50KCkpIHsKLSAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRj
aGluZyBudW1iZXIgb2YgcnVuczogc2ltcGxlIHJ1bnMoIiA8PCBsaW5lTGF5b3V0RGF0YS0+cnVu
Q291bnQoKSA8PCAiKSBpbmxpbmUgcnVucygiIDw8IGlubGluZVJ1bkxpc3Quc2l6ZSgpIDw8ICIp
IjsKKyAgICBpZiAoZGlzcGxheVJ1bnMuc2l6ZSgpICE9IGxpbmVMYXlvdXREYXRhLT5ydW5Db3Vu
dCgpKSB7CisgICAgICAgIHN0cmVhbSA8PCAiTWlzbWF0Y2hpbmcgbnVtYmVyIG9mIHJ1bnM6IHNp
bXBsZSBydW5zKCIgPDwgbGluZUxheW91dERhdGEtPnJ1bkNvdW50KCkgPDwgIikgaW5saW5lIHJ1
bnMoIiA8PCBkaXNwbGF5UnVucy5zaXplKCkgPDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExp
bmUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtODgsMjMgKzg4LDIzIEBAIHN0
YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQo
VGV4dFN0cmVhbSYgc3RyZWFtLCBjCiAgICAgYXV0byBtaXNtYXRjaGVkID0gZmFsc2U7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpbmVMYXlvdXREYXRhLT5ydW5Db3VudCgpOyArK2kp
IHsKICAgICAgICAgYXV0byYgc2ltcGxlUnVuID0gbGluZUxheW91dERhdGEtPnJ1bkF0KGkpOwot
ICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSAqaW5saW5lUnVuTGlzdFtpXTsKKyAgICAgICAgYXV0
byYgZGlzcGxheVJ1biA9IGRpc3BsYXlSdW5zW2ldOwogCi0gICAgICAgIGF1dG8gbWF0Y2hpbmdS
dW5zID0gYXJlRXNzZW50aWFsbHlFcXVhbChzaW1wbGVSdW4ubG9naWNhbExlZnQsIGlubGluZVJ1
bi5sb2dpY2FsTGVmdCgpKSAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKHNpbXBsZVJ1bi5sb2dpY2Fs
UmlnaHQsIGlubGluZVJ1bi5sb2dpY2FsUmlnaHQoKSk7Ci0gICAgICAgIGlmIChtYXRjaGluZ1J1
bnMgJiYgaW5saW5lUnVuLnRleHRDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIG1hdGNoaW5nUnVu
cyA9IHNpbXBsZVJ1bi5zdGFydCA9PSBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+c3RhcnQoKSAm
JiBzaW1wbGVSdW4uZW5kID09IGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5lbmQoKTsKKyAgICAg
ICAgYXV0byBtYXRjaGluZ1J1bnMgPSBhcmVFc3NlbnRpYWxseUVxdWFsKHNpbXBsZVJ1bi5sb2dp
Y2FsTGVmdCwgZGlzcGxheVJ1bi5sb2dpY2FsTGVmdCgpKSAmJiBhcmVFc3NlbnRpYWxseUVxdWFs
KHNpbXBsZVJ1bi5sb2dpY2FsUmlnaHQsIGRpc3BsYXlSdW4ubG9naWNhbFJpZ2h0KCkpOworICAg
ICAgICBpZiAobWF0Y2hpbmdSdW5zICYmIGRpc3BsYXlSdW4udGV4dENvbnRleHQoKSkgeworICAg
ICAgICAgICAgbWF0Y2hpbmdSdW5zID0gc2ltcGxlUnVuLnN0YXJ0ID09IGRpc3BsYXlSdW4udGV4
dENvbnRleHQoKS0+c3RhcnQoKSAmJiBzaW1wbGVSdW4uZW5kID09IGRpc3BsYXlSdW4udGV4dENv
bnRleHQoKS0+ZW5kKCk7CiAgICAgICAgICAgICAvLyBTTEwgaGFuZGxlcyBzdHJpbmdzIGluIGEg
bW9yZSBjb25jYXRlbmF0ZWQgZm9ybWF0IDxkaXY+Zm9vPGJyPmJhcjwvZGl2PiAtPiBmb28gLT4g
MCwzIGJhciAtPiAzLDYgdnMuIDAsMyBhbmQgMCwzCiAgICAgICAgICAgICBpZiAoIW1hdGNoaW5n
UnVucykKLSAgICAgICAgICAgICAgICBtYXRjaGluZ1J1bnMgPSAoc2ltcGxlUnVuLmVuZCAtIHNp
bXBsZVJ1bi5zdGFydCkgPT0gKGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5lbmQoKSAtIGlubGlu
ZVJ1bi50ZXh0Q29udGV4dCgpLT5zdGFydCgpKTsgCisgICAgICAgICAgICAgICAgbWF0Y2hpbmdS
dW5zID0gKHNpbXBsZVJ1bi5lbmQgLSBzaW1wbGVSdW4uc3RhcnQpID09IChkaXNwbGF5UnVuLnRl
eHRDb250ZXh0KCktPmVuZCgpIC0gZGlzcGxheVJ1bi50ZXh0Q29udGV4dCgpLT5zdGFydCgpKTsK
ICAgICAgICAgfQogICAgICAgICBpZiAobWF0Y2hpbmdSdW5zKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZzogc2ltcGxlIHJ1bigiIDw8IHNp
bXBsZVJ1bi5zdGFydCA8PCAiLCAiIDw8IHNpbXBsZVJ1bi5lbmQgPDwgIikgKCIgPDwgc2ltcGxl
UnVuLmxvZ2ljYWxMZWZ0IDw8ICIsICIgPDwgc2ltcGxlUnVuLmxvZ2ljYWxSaWdodCA8PCAiKSI7
CiAgICAgICAgIHN0cmVhbSA8PCAiIGlubGluZSBydW4iOwotICAgICAgICBpZiAoaW5saW5lUnVu
LnRleHRDb250ZXh0KCkpCi0gICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8PCBpbmxpbmVSdW4u
dGV4dENvbnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGlubGluZVJ1bi50ZXh0Q29udGV4dCgp
LT5lbmQoKSA8PCAiKSI7Ci0gICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGlubGluZVJ1bi5sb2dp
Y2FsTGVmdCgpIDw8ICIsICIgPDwgaW5saW5lUnVuLmxvZ2ljYWxUb3AoKSA8PCAiKSAoIiA8PCBp
bmxpbmVSdW4ubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGlubGluZVJ1bi5sb2dpY2FsSGVpZ2h0
KCkgPDwgIikiOworICAgICAgICBpZiAoZGlzcGxheVJ1bi50ZXh0Q29udGV4dCgpKQorICAgICAg
ICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgZGlzcGxheVJ1bi50ZXh0Q29udGV4dCgpLT5zdGFydCgp
IDw8ICIsICIgPDwgZGlzcGxheVJ1bi50ZXh0Q29udGV4dCgpLT5lbmQoKSA8PCAiKSI7CisgICAg
ICAgIHN0cmVhbSA8PCAiICgiIDw8IGRpc3BsYXlSdW4ubG9naWNhbExlZnQoKSA8PCAiLCAiIDw8
IGRpc3BsYXlSdW4ubG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGRpc3BsYXlSdW4ubG9naWNhbFdp
ZHRoKCkgPDwgIngiIDw8IGRpc3BsYXlSdW4ubG9naWNhbEhlaWdodCgpIDw8ICIpIjsKICAgICAg
ICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgICAgIG1pc21hdGNoZWQgPSB0cnVlOwogICAgIH0K
QEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhM
aW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sCiB7CiAgICAgYXV0byYg
aW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5n
U3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwogICAgIEFTU0VSVChpczxJbmxpbmVGb3JtYXR0
aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkpOwotICAgIGF1dG8mIGlubGluZVJ1bkxp
c3QgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0
ZSkuaW5saW5lUnVucygpOworICAgIGF1dG8mIGRpc3BsYXlSdW5zID0gZG93bmNhc3Q8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmRpc3BsYXlSdW5zKCk7CiAK
ICAgICAvLyBDb2xsZWN0IGlubGluZWJveGVzLgogICAgIFZlY3RvcjxXZWJDb3JlOjpJbmxpbmVC
b3gqPiBpbmxpbmVCb3hlczsKQEAgLTE2NywxNiArMTY3LDE2IEBAIHN0YXRpYyBib29sIG91dHB1
dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0
cmVhbSwKICAgICBhdXRvIG1pc21hdGNoZWQgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBydW5JbmRl
eCA9IDA7CiAKLSAgICBpZiAoaW5saW5lQm94ZXMuc2l6ZSgpICE9IGlubGluZVJ1bkxpc3Quc2l6
ZSgpKSB7Ci0gICAgICAgIHN0cmVhbSA8PCAiV2FybmluZzogbWlzbWF0Y2hpbmcgbnVtYmVyIG9m
IHJ1bnM6IGlubGluZWJveGVzKCIgPDwgaW5saW5lQm94ZXMuc2l6ZSgpIDw8ICIpIHZzLiBpbmxp
bmUgcnVucygiIDw8IGlubGluZVJ1bkxpc3Quc2l6ZSgpIDw8ICIpIjsKKyAgICBpZiAoaW5saW5l
Qm94ZXMuc2l6ZSgpICE9IGRpc3BsYXlSdW5zLnNpemUoKSkgeworICAgICAgICBzdHJlYW0gPDwg
Ildhcm5pbmc6IG1pc21hdGNoaW5nIG51bWJlciBvZiBydW5zOiBpbmxpbmVib3hlcygiIDw8IGlu
bGluZUJveGVzLnNpemUoKSA8PCAiKSB2cy4gaW5saW5lIHJ1bnMoIiA8PCBkaXNwbGF5UnVucy5z
aXplKCkgPDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICB9CiAKLSAgICBm
b3IgKHVuc2lnbmVkIGlubGluZUJveEluZGV4ID0gMDsgaW5saW5lQm94SW5kZXggPCBpbmxpbmVC
b3hlcy5zaXplKCkgJiYgcnVuSW5kZXggPCBpbmxpbmVSdW5MaXN0LnNpemUoKTsgKytpbmxpbmVC
b3hJbmRleCkgewotICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSAqaW5saW5lUnVuTGlzdFtydW5J
bmRleF07CisgICAgZm9yICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7IGlubGluZUJveElu
ZGV4IDwgaW5saW5lQm94ZXMuc2l6ZSgpICYmIHJ1bkluZGV4IDwgZGlzcGxheVJ1bnMuc2l6ZSgp
OyArK2lubGluZUJveEluZGV4KSB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlSdW4gPSBkaXNwbGF5
UnVuc1tydW5JbmRleF07CiAgICAgICAgIGF1dG8qIGlubGluZUJveCA9IGlubGluZUJveGVzW2lu
bGluZUJveEluZGV4XTsKICAgICAgICAgYXV0byogaW5saW5lVGV4dEJveCA9IGlzPElubGluZVRl
eHRCb3g+KGlubGluZUJveCkgPyBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihpbmxpbmVCb3gpIDog
bnVsbHB0cjsKLSAgICAgICAgYm9vbCBtYXRjaGluZ1J1bnMgPSBpbmxpbmVUZXh0Qm94ID8gY2hl
Y2tGb3JNYXRjaGluZ1RleHRSdW5zKGlubGluZVJ1biwgKmlubGluZVRleHRCb3gpIDogbWF0Y2hp
bmdSdW5zID0gY2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKGlubGluZVJ1biwgKmlubGluZUJv
eCk7CisgICAgICAgIGJvb2wgbWF0Y2hpbmdSdW5zID0gaW5saW5lVGV4dEJveCA/IGNoZWNrRm9y
TWF0Y2hpbmdUZXh0UnVucyhkaXNwbGF5UnVuLCAqaW5saW5lVGV4dEJveCkgOiBtYXRjaGluZ1J1
bnMgPSBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMoZGlzcGxheVJ1biwgKmlubGluZUJveCk7
CiAKICAgICAgICAgaWYgKCFtYXRjaGluZ1J1bnMpIHsKICAgICAgICAgICAgIApAQCAtMTk0LDkg
KzE5NCw5IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1h
dGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwKICAgICAgICAgICAgIHN0cmVhbSA8PCAi
ICgiIDw8IGlubGluZUJveC0+bG9naWNhbExlZnQoKSA8PCAiLCAiIDw8IGlubGluZUJveC0+bG9n
aWNhbFRvcCgpIDw8ICIpICgiIDw8IGlubGluZUJveC0+bG9naWNhbFdpZHRoKCkgPDwgIngiIDw8
IGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpIDw8ICIpIjsKIAogICAgICAgICAgICAgc3RyZWFt
IDw8ICIgaW5saW5lIHJ1biI7Ci0gICAgICAgICAgICBpZiAoaW5saW5lUnVuLnRleHRDb250ZXh0
KCkpCi0gICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgaW5saW5lUnVuLnRleHRDb250
ZXh0KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+ZW5kKCkg
PDwgIikiOwotICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgaW5saW5lUnVuLmxvZ2ljYWxM
ZWZ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4ubG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGlubGlu
ZVJ1bi5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgaW5saW5lUnVuLmxvZ2ljYWxIZWlnaHQoKSA8
PCAiKSI7CisgICAgICAgICAgICBpZiAoZGlzcGxheVJ1bi50ZXh0Q29udGV4dCgpKQorICAgICAg
ICAgICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGRpc3BsYXlSdW4udGV4dENvbnRleHQoKS0+c3Rh
cnQoKSA8PCAiLCAiIDw8IGRpc3BsYXlSdW4udGV4dENvbnRleHQoKS0+ZW5kKCkgPDwgIikiOwor
ICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgZGlzcGxheVJ1bi5sb2dpY2FsTGVmdCgpIDw8
ICIsICIgPDwgZGlzcGxheVJ1bi5sb2dpY2FsVG9wKCkgPDwgIikgKCIgPDwgZGlzcGxheVJ1bi5s
b2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgZGlzcGxheVJ1bi5sb2dpY2FsSGVpZ2h0KCkgPDwgIiki
OwogICAgICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgICAgICAgICBtaXNtYXRjaGVk
ID0gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCmluZGV4IGUyMWI3MTg2MDI0Li5lYzhkMWFkYThkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBDb250
ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZs
b3dOb25SZXBsYWNlZEhlaWdodAogICAgICAgICAgICAgYXV0byYgbGluZUJveGVzID0gZG93bmNh
c3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkRm9ybWF0
dGluZ1N0YXRlKGxheW91dENvbnRhaW5lcikpLmxpbmVCb3hlcygpOwogICAgICAgICAgICAgLy8g
RXZlbiBlbXB0eSBjb250YWluZXJzIGdlbmVyYXRlIG9uZSBsaW5lLiAKICAgICAgICAgICAgIEFT
U0VSVCghbGluZUJveGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICByZXR1cm4geyBsaW5lQm94
ZXMubGFzdCgpLT5sb2dpY2FsQm90dG9tKCkgLSBib3JkZXJBbmRQYWRkaW5nVG9wLCBub25Db2xs
YXBzZWRNYXJnaW4gfTsKKyAgICAgICAgICAgIHJldHVybiB7IGxpbmVCb3hlcy5sYXN0KCkubG9n
aWNhbEJvdHRvbSgpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgbm9uQ29sbGFwc2VkTWFyZ2luIH07
CiAgICAgICAgIH0KIAogICAgICAgICAvLyAyLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGJvdHRv
bSAocG9zc2libHkgY29sbGFwc2VkKSBtYXJnaW4gb2YgaXRzIGxhc3QgaW4tZmxvdyBjaGlsZCwg
aWYgdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbi4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAK
aW5kZXggYjdjNTRhMTJiMjIuLmJiYTI1ZTRjZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5j
cHAKQEAgLTM5Niw3ICszOTYsNyBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdp
bkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IEJveCYgbAogICAgICAgICAg
ICAgYXV0byBpc0NvbnNpZGVyZWRFbXB0eSA9IFsmXSB7CiAgICAgICAgICAgICAgICAgYXV0byYg
Zm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRT
dGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWluZXIpKTsKICAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGxpbmVCb3ggOiBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVz
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5lQm94LT5pc0NvbnNpZGVyZWRFbXB0
eSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmVCb3guaXNDb25zaWRlcmVkRW1wdHko
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgLy8gQW55IGZsb2F0IGJveCBpbiB0aGlzIGZvcm1hdHRpbmcg
Y29udGV4dCBwcmV2ZW50cyBjb2xsYXBzaW5nIHRocm91Z2guCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAppbmRleCAwZmFjMjg3
N2UwMi4uMDk4MThkMTI2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rp
c3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAtMTEyLDI2ICsxMTIsMjYgQEAgc3RhdGlj
IHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
Qm94JiBhYnNvbHV0ZURpc3AKIAogc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVDb250ZW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQm94JiByb290QWJzb2x1dGVEaXNwbGF5Qm94LCBj
b25zdCBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQogewot
ICAgIGF1dG8mIGlubGluZVJ1bnMgPSBmb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpOwotICAg
IGlmIChpbmxpbmVSdW5zLmlzRW1wdHkoKSkKKyAgICBhdXRvJiBkaXNwbGF5UnVucyA9IGZvcm1h
dHRpbmdTdGF0ZS5kaXNwbGF5UnVucygpOworICAgIGlmIChkaXNwbGF5UnVucy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byYgcnVuIDogaW5saW5lUnVucykgewot
ICAgICAgICBpZiAoYXV0byYgdGV4dENvbnRleHQgPSBydW4tPnRleHRDb250ZXh0KCkpIHsKLSAg
ICAgICAgICAgIGF1dG8mIHN0eWxlID0gcnVuLT5zdHlsZSgpOworICAgIGZvciAoYXV0byYgcnVu
IDogZGlzcGxheVJ1bnMpIHsKKyAgICAgICAgaWYgKGF1dG8mIHRleHRDb250ZXh0ID0gcnVuLnRl
eHRDb250ZXh0KCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gcnVuLnN0eWxlKCk7CiAg
ICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHN0eWxlLmNvbG9yKCkpOwogICAgICAg
ICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc3R5bGUuY29sb3IoKSk7CiAKLSAgICAgICAgICAg
IGF1dG8gbG9naWNhbExlZnQgPSByb290QWJzb2x1dGVEaXNwbGF5Qm94LmxlZnQoKSArIHJ1bi0+
bG9naWNhbExlZnQoKTsKKyAgICAgICAgICAgIGF1dG8gbG9naWNhbExlZnQgPSByb290QWJzb2x1
dGVEaXNwbGF5Qm94LmxlZnQoKSArIHJ1bi5sb2dpY2FsTGVmdCgpOwogICAgICAgICAgICAgLy8g
RklYTUU6IEFkZCBub24tYmFzZWxpbmUgYWxpZ24gcGFpbnRpbmcKLSAgICAgICAgICAgIGF1dG8m
IGxpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveEZvclJ1bigqcnVuKTsKKyAgICAgICAg
ICAgIGF1dG8mIGxpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveEZvclJ1bihydW4pOwog
ICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldCA9IHJvb3RBYnNvbHV0ZURpc3BsYXlCb3gu
dG9wKCkgKyBsaW5lQm94LmxvZ2ljYWxUb3AoKSArIGxpbmVCb3guYmFzZWxpbmVPZmZzZXQoKTsK
ICAgICAgICAgICAgIGlmIChhdXRvIGV4cGFuc2lvbkNvbnRleHQgPSB0ZXh0Q29udGV4dC0+ZXhw
YW5zaW9uKCkpCiAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3VGV4dChzdHlsZS5mb250Q2Fz
Y2FkZSgpLCBUZXh0UnVuIHsgdGV4dENvbnRleHQtPmNvbnRlbnQoKSwgbG9naWNhbExlZnQsIGV4
cGFuc2lvbkNvbnRleHQtPmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbkNvbnRleHQtPmJl
aGF2aW9yIH0sIHsgbG9naWNhbExlZnQsIGJhc2VsaW5lT2Zmc2V0IH0pOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3R5bGUuZm9udENhc2NhZGUo
KSwgVGV4dFJ1biB7IHRleHRDb250ZXh0LT5jb250ZW50KCksIGxvZ2ljYWxMZWZ0IH0sIHsgbG9n
aWNhbExlZnQsIGJhc2VsaW5lT2Zmc2V0IH0pOwotICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGNh
Y2hlZEltYWdlID0gcnVuLT5pbWFnZSgpKSB7Ci0gICAgICAgICAgICBhdXRvIHJ1bkFic29sdXRl
UmVjdCA9IEZsb2F0UmVjdCB7IHJvb3RBYnNvbHV0ZURpc3BsYXlCb3gubGVmdCgpICsgcnVuLT5s
b2dpY2FsTGVmdCgpLCByb290QWJzb2x1dGVEaXNwbGF5Qm94LnRvcCgpICsgcnVuLT5sb2dpY2Fs
VG9wKCksIHJ1bi0+bG9naWNhbFdpZHRoKCksIHJ1bi0+bG9naWNhbEhlaWdodCgpIH07CisgICAg
ICAgIH0gZWxzZSBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBydW4uaW1hZ2UoKSkgeworICAgICAg
ICAgICAgYXV0byBydW5BYnNvbHV0ZVJlY3QgPSBGbG9hdFJlY3QgeyByb290QWJzb2x1dGVEaXNw
bGF5Qm94LmxlZnQoKSArIHJ1bi5sb2dpY2FsTGVmdCgpLCByb290QWJzb2x1dGVEaXNwbGF5Qm94
LnRvcCgpICsgcnVuLmxvZ2ljYWxUb3AoKSwgcnVuLmxvZ2ljYWxXaWR0aCgpLCBydW4ubG9naWNh
bEhlaWdodCgpIH07CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqY2FjaGVkSW1hZ2Ut
PmltYWdlKCksIHJ1bkFic29sdXRlUmVjdCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZjkxNzAyOGI4MTEuLjUwOTc2YTAxZmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC00MjcsNyArNDI3LDcgQEAg
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZShjb25z
dCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICB9CiAKICAgICBhdXRvIGxpbmVJbmRleCA9IGZv
cm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5zaXplKCk7Ci0gICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZExpbmVCb3gobGluZUNvbnRlbnQubGluZUJveCk7CisgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExp
bmVCb3goTGluZUJveCB7IGxpbmVDb250ZW50LmxpbmVCb3ggfSk7CiAKICAgICAvLyBDb21wdXRl
IGJveCBmaW5hbCBnZW9tZXRyeS4KICAgICBhdXRvJiBsaW5lUnVucyA9IGxpbmVDb250ZW50LnJ1
bkxpc3Q7CkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
c2V0RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAg
ICAgLy8gSW5saW5lIGxldmVsIGNvbnRhaW5lcnMgKDxzcGFuPikgZG9uJ3QgZ2VuZXJhdGUgZGlz
cGxheSBydW5zIGFuZCBuZWl0aGVyIGRvIGNvbXBsZXRlbHkgY29sbGFwc2VkIHJ1bnMuCiAgICAg
ICAgIGF1dG8gaW5pdGlhdGVzSW5saW5lUnVuID0gIWxpbmVSdW4uaXNDb250YWluZXJTdGFydCgp
ICYmICFsaW5lUnVuLmlzQ29udGFpbmVyRW5kKCkgJiYgIWxpbmVSdW4uaXNDb2xsYXBzZWRUb1Zp
c3VhbGx5RW1wdHkoKTsKICAgICAgICAgaWYgKGluaXRpYXRlc0lubGluZVJ1bikKLSAgICAgICAg
ICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+
KGxpbmVJbmRleCwgbGluZVJ1bi5sYXlvdXRCb3goKS5zdHlsZSgpLCBsaW5lUnVuLmxvZ2ljYWxS
ZWN0KCksIGxpbmVSdW4udGV4dENvbnRleHQoKSkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZERpc3BsYXlSdW4oeyBsaW5lSW5kZXgsIGxpbmVSdW4ubGF5b3V0Qm94KCkuc3R5bGUo
KSwgbGluZVJ1bi5sb2dpY2FsUmVjdCgpLCBsaW5lUnVuLnRleHRDb250ZXh0KCkgfSk7CiAKICAg
ICAgICAgaWYgKGxpbmVSdW4uaXNGb3JjZWRMaW5lQnJlYWsoKSkgewogICAgICAgICAgICAgZGlz
cGxheUJveC5zZXRUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7CkBAIC01MDEsNyArNTAx
LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZvcm1hdHRpbmdT
dGF0ZShjb25zdCBJbnZhbGlkYXRpb25TdGF0ZSYKIHsKICAgICAvLyBGaW5kIG91dCB3aGF0IHdl
IG5lZWQgdG8gaW52YWxpZGF0ZS4gVGhpcyBpcyB3aGVyZSB3ZSBhZGQgc29tZSBzbWFydHMgdG8g
ZG8gcGFydGlhbCBsaW5lIGxheW91dC4KICAgICAvLyBGb3Igbm93IGxldCdzIGp1c3QgY2xlYXIg
dGhlIHJ1bnMuCi0gICAgZm9ybWF0dGluZ1N0YXRlKCkucmVzZXRJbmxpbmVSdW5zKCk7CisgICAg
Zm9ybWF0dGluZ1N0YXRlKCkucmVzZXREaXNwbGF5UnVucygpOwogICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGFsc28gd2hlcmUgd2Ugd291bGQgZGVsZXRlIGlubGluZSBpdGVtcyBpZiB0aGVpciBjb250
ZW50IGNoYW5nZWQuCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcAppbmRleCA0NDY2NTM5ZTdhZC4uZGE2MDY0YjY0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5lRGVzY2VudE5lZWRzQ29sbGFwc2lu
Zyhjb25zdCBMaW5lQnVpbGQKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9j
a0JveCgpICYmIGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkp
IHsKICAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxp
bmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRl
KGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSkpOwogICAgICAgICAgICAgICAgIEFTU0VS
VCghZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAg
ICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygp
Lmxhc3QoKS0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2NrQmFz
ZWxpbmUgPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkubGFzdCgpLmJhc2VsaW5lKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKGlubGluZUJsb2NrQmFzZWxpbmUuZGVzY2VudCgpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdTdGF0ZS5oCmluZGV4IDE5NDRlNGM3NWY2Li4wOGY5ZDg5N2NjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ1N0YXRlLmgKQEAgLTM3LDEwICszNyw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotLy8gVGVtcAogdXNpbmcgSW5saW5lSXRlbXMgPSBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPElubGluZUl0ZW0+LCAzMD47Ci11c2luZyBJbmxpbmVSdW5zID0g
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5OjpSdW4+LCAxMD47Ci11c2luZyBMaW5lQm94
ZXMgPSBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPExpbmVCb3g+LCA1PjsKKwogLy8gSW5saW5lRm9y
bWF0dGluZ1N0YXRlIGhvbGRzIHRoZSBzdGF0ZSBmb3IgYSBwYXJ0aWN1bGFyIGlubGluZSBmb3Jt
YXR0aW5nIGNvbnRleHQgdHJlZS4KIGNsYXNzIElubGluZUZvcm1hdHRpbmdTdGF0ZSA6IHB1Ymxp
YyBGb3JtYXR0aW5nU3RhdGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5saW5lRm9y
bWF0dGluZ1N0YXRlKTsKQEAgLTUyLDMxICs1MCwzNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW5s
aW5lSXRlbXMmIGlubGluZUl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVtczsgfQog
ICAgIHZvaWQgYWRkSW5saW5lSXRlbShzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lSXRlbT4mJiBpbmxp
bmVJdGVtKSB7IG1faW5saW5lSXRlbXMuYXBwZW5kKFdURk1vdmUoaW5saW5lSXRlbSkpOyB9CiAK
LSAgICBjb25zdCBJbmxpbmVSdW5zJiBpbmxpbmVSdW5zKCkgY29uc3QgeyByZXR1cm4gbV9pbmxp
bmVSdW5zOyB9Ci0gICAgSW5saW5lUnVucyYgaW5saW5lUnVucygpIHsgcmV0dXJuIG1faW5saW5l
UnVuczsgfQotICAgIHZvaWQgYWRkSW5saW5lUnVuKHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5OjpS
dW4+JiYpOwotICAgIHZvaWQgcmVzZXRJbmxpbmVSdW5zKCk7CisgICAgdXNpbmcgRGlzcGxheVJ1
bnMgPSBWZWN0b3I8RGlzcGxheTo6UnVuLCAxMD47CisgICAgdXNpbmcgTGluZUJveGVzID0gVmVj
dG9yPExpbmVCb3gsIDU+OworCisgICAgY29uc3QgRGlzcGxheVJ1bnMmIGRpc3BsYXlSdW5zKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXNwbGF5UnVuczsgfQorICAgIERpc3BsYXlSdW5zJiBkaXNwbGF5
UnVucygpIHsgcmV0dXJuIG1fZGlzcGxheVJ1bnM7IH0KKyAgICB2b2lkIGFkZERpc3BsYXlSdW4o
RGlzcGxheTo6UnVuJiYpOworICAgIHZvaWQgcmVzZXREaXNwbGF5UnVucygpOwogCiAgICAgY29u
c3QgTGluZUJveGVzJiBsaW5lQm94ZXMoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlczsgfQog
ICAgIExpbmVCb3hlcyYgbGluZUJveGVzKCkgeyByZXR1cm4gbV9saW5lQm94ZXM7IH0KLSAgICB2
b2lkIGFkZExpbmVCb3goY29uc3QgTGluZUJveCYgbGluZUJveCkgeyBtX2xpbmVCb3hlcy5hcHBl
bmQobWFrZVVuaXF1ZTxMaW5lQm94PihsaW5lQm94KSk7IH0KKyAgICB2b2lkIGFkZExpbmVCb3go
TGluZUJveCYmIGxpbmVCb3gpIHsgbV9saW5lQm94ZXMuYXBwZW5kKGxpbmVCb3gpOyB9CiAKLSAg
ICBjb25zdCBMaW5lQm94JiBsaW5lQm94Rm9yUnVuKGNvbnN0IERpc3BsYXk6OlJ1biYgaW5saW5l
UnVuKSBjb25zdCB7IHJldHVybiAqbV9saW5lQm94ZXNbaW5saW5lUnVuLmxpbmVJbmRleCgpXTsg
fQorICAgIGNvbnN0IExpbmVCb3gmIGxpbmVCb3hGb3JSdW4oY29uc3QgRGlzcGxheTo6UnVuJiBk
aXNwbGF5UnVuKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlc1tkaXNwbGF5UnVuLmxpbmVJbmRl
eCgpXTsgfQogCiBwcml2YXRlOgorICAgIC8vIENhY2hlYWJsZSBpbnB1dCB0byBsaW5lIGxheW91
dC4KICAgICBJbmxpbmVJdGVtcyBtX2lubGluZUl0ZW1zOwotICAgIElubGluZVJ1bnMgbV9pbmxp
bmVSdW5zOworCisgICAgLy8gTGluZSBsYXlvdXQgcmVzdWx0cworICAgIERpc3BsYXlSdW5zIG1f
ZGlzcGxheVJ1bnM7CiAgICAgTGluZUJveGVzIG1fbGluZUJveGVzOwogfTsKIAotaW5saW5lIHZv
aWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRJbmxpbmVSdW4oc3RkOjp1bmlxdWVfcHRyPERp
c3BsYXk6OlJ1bj4mJiBkaXNwbGF5UnVuKQoraW5saW5lIHZvaWQgSW5saW5lRm9ybWF0dGluZ1N0
YXRlOjphZGREaXNwbGF5UnVuKERpc3BsYXk6OlJ1biYmIGRpc3BsYXlSdW4pCiB7Ci0gICAgbV9p
bmxpbmVSdW5zLmFwcGVuZChXVEZNb3ZlKGRpc3BsYXlSdW4pKTsKKyAgICBtX2Rpc3BsYXlSdW5z
LmFwcGVuZChXVEZNb3ZlKGRpc3BsYXlSdW4pKTsKIH0KIAotaW5saW5lIHZvaWQgSW5saW5lRm9y
bWF0dGluZ1N0YXRlOjpyZXNldElubGluZVJ1bnMoKQoraW5saW5lIHZvaWQgSW5saW5lRm9ybWF0
dGluZ1N0YXRlOjpyZXNldERpc3BsYXlSdW5zKCkKIHsKLSAgICBtX2lubGluZVJ1bnMuY2xlYXIo
KTsKKyAgICBtX2Rpc3BsYXlSdW5zLmNsZWFyKCk7CiAgICAgLy8gUmVzZXR0aW5nIHRoZSBydW5z
IG1lYW5zIG5vIG1vcmUgbGluZSBib3hlcyBlaXRoZXIuCiAgICAgbV9saW5lQm94ZXMuY2xlYXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDAwZWM1YmYzZmRlLi41ZDA4Yjk0M2Nm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgTGlu
ZUJ1aWxkZXI6OmFsaWduQ29udGVudFZlcnRpY2FsbHkoUnVuTGlzdCYgcnVuTGlzdCkKICAgICAg
ICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0
aW5nU3RhdGU+KGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoZG93bmNh
c3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpKSk7CiAgICAgICAgICAgICAgICAgLy8gU3BlYyBtYWtl
cyB1cyBnZW5lcmF0ZSBhdCBsZWFzdCBvbmUgbGluZSAtZXZlbiBpZiBpdCBpcyBlbXB0eS4KICAg
ICAgICAgICAgICAgICBBU1NFUlQoIWZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5pc0VtcHR5
KCkpOwotICAgICAgICAgICAgICAgIGF1dG8gaW5saW5lQmxvY2tCYXNlbGluZU9mZnNldCA9IGZv
cm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCktPmJhc2VsaW5lT2Zmc2V0KCk7CisgICAg
ICAgICAgICAgICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lT2Zmc2V0ID0gZm9ybWF0dGluZ1N0
YXRlLmxpbmVCb3hlcygpLmxhc3QoKS5iYXNlbGluZU9mZnNldCgpOwogICAgICAgICAgICAgICAg
IC8vIFRoZSBpbmxpbmUtYmxvY2sncyBiYXNlbGluZSBvZmZzZXQgaXMgcmVsYXRpdmUgdG8gaXRz
IGNvbnRlbnQgYm94LiBMZXQncyBjb252ZXJ0IGl0IHJlbGF0aXZlIHRvIHRoZSBtYXJnaW4gYm94
LgogICAgICAgICAgICAgICAgIC8vICAgaW5saW5lLWJsb2NrCiAgICAgICAgICAgICAgICAgLy8g
ICAgICAgICAgICAgIFwKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphZGp1
c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVuJiBydW4pCiAgICAgICAgICAgICAgICAg
YXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihs
YXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KSkpOwogICAgICAgICAgICAgICAgIC8vIFNwZWMgbWFrZXMgdXMgZ2VuZXJh
dGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQgaXMgZW1wdHkuCiAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkuaXNFbXB0eSgpKTsKLSAgICAg
ICAgICAgICAgICBhdXRvJiBsYXN0TGluZUJveCA9ICpmb3JtYXR0aW5nU3RhdGUubGluZUJveGVz
KCkubGFzdCgpOworICAgICAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5lQm94ID0gZm9ybWF0dGlu
Z1N0YXRlLmxpbmVCb3hlcygpLmxhc3QoKTsKICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJs
b2NrQmFzZWxpbmUgPSBsYXN0TGluZUJveC5iYXNlbGluZSgpOwogICAgICAgICAgICAgICAgIGF1
dG8gYmVmb3JlSGVpZ2h0ID0gYm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBib3hHZW9tZXRy
eS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAKaW5kZXggZDcwNDcyOWVhNmIuLmE2ODA5ZTBiZTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBA
IC0zMTEsNyArMzExLDcgQEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRTdWJUcmVlKGNvbnN0IFJl
bmRlckVsZW1lbnQmIHJvb3RSZW5kZXJlciwgQ29udGFpbmVyJiByb28KIHN0YXRpYyB2b2lkIG91
dHB1dElubGluZVJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IENvbnRhaW5lciYgaW5saW5lRm9ybWF0dGluZ1Jvb3QsIHVuc2lnbmVk
IGRlcHRoKQogewogICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElu
bGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3Rh
dGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpKTsKLSAgICBhdXRvJiBpbmxpbmVSdW5zID0gaW5saW5l
Rm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKTsKKyAgICBhdXRvJiBkaXNwbGF5UnVucyA9IGlu
bGluZUZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5UnVucygpOwogICAgIGF1dG8mIGxpbmVCb3hlcyA9
IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKTsKIAogICAgIHVuc2lnbmVkIHByaW50
ZWRDaGFyYWN0ZXJzID0gMDsKQEAgLTMyMSwyMSArMzIxLDIxIEBAIHN0YXRpYyB2b2lkIG91dHB1
dElubGluZVJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsCiAKICAgICBzdHJlYW0gPDwgImxpbmVzIGFyZSAtPiAiOwogICAgIGZvciAoYXV0byYg
bGluZUJveCA6IGxpbmVCb3hlcykKLSAgICAgICAgc3RyZWFtIDw8ICJbIiA8PCBsaW5lQm94LT5s
b2dpY2FsTGVmdCgpIDw8ICIsIiA8PCBsaW5lQm94LT5sb2dpY2FsVG9wKCkgPDwgIiAiIDw8IGxp
bmVCb3gtPmxvZ2ljYWxXaWR0aCgpIDw8ICJ4IiA8PCBsaW5lQm94LT5sb2dpY2FsSGVpZ2h0KCkg
PDwgIl0gIjsKKyAgICAgICAgc3RyZWFtIDw8ICJbIiA8PCBsaW5lQm94LmxvZ2ljYWxMZWZ0KCkg
PDwgIiwiIDw8IGxpbmVCb3gubG9naWNhbFRvcCgpIDw8ICIgIiA8PCBsaW5lQm94LmxvZ2ljYWxX
aWR0aCgpIDw8ICJ4IiA8PCBsaW5lQm94LmxvZ2ljYWxIZWlnaHQoKSA8PCAiXSAiOwogICAgIHN0
cmVhbS5uZXh0TGluZSgpOwogCi0gICAgZm9yIChhdXRvJiBpbmxpbmVSdW4gOiBpbmxpbmVSdW5z
KSB7CisgICAgZm9yIChhdXRvJiBkaXNwbGF5UnVuIDogZGlzcGxheVJ1bnMpIHsKICAgICAgICAg
dW5zaWduZWQgcHJpbnRlZENoYXJhY3RlcnMgPSAwOwogICAgICAgICB3aGlsZSAoKytwcmludGVk
Q2hhcmFjdGVycyA8PSBkZXB0aCAqIDIpCiAgICAgICAgICAgICBzdHJlYW0gPDwgIiAiOwogICAg
ICAgICBzdHJlYW0gPDwgIiAgIjsKLSAgICAgICAgaWYgKGlubGluZVJ1bi0+dGV4dENvbnRleHQo
KSkKKyAgICAgICAgaWYgKGRpc3BsYXlSdW4udGV4dENvbnRleHQoKSkKICAgICAgICAgICAgIHN0
cmVhbSA8PCAiaW5saW5lIHRleHQgYm94IjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3Ry
ZWFtIDw8ICJpbmxpbmUgYm94IjsKLSAgICAgICAgc3RyZWFtIDw8ICIgYXQgKCIgPDwgaW5saW5l
UnVuLT5sb2dpY2FsTGVmdCgpIDw8ICIsIiA8PCBpbmxpbmVSdW4tPmxvZ2ljYWxUb3AoKSA8PCAi
KSBzaXplICIgPDwgaW5saW5lUnVuLT5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgaW5saW5lUnVu
LT5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgIGlmIChpbmxpbmVSdW4tPnRleHRDb250ZXh0KCkp
Ci0gICAgICAgICAgICBzdHJlYW0gPDwgIiBydW4oIiA8PCBpbmxpbmVSdW4tPnRleHRDb250ZXh0
KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4tPnRleHRDb250ZXh0KCktPmVuZCgpIDw8
ICIpIjsKKyAgICAgICAgc3RyZWFtIDw8ICIgYXQgKCIgPDwgZGlzcGxheVJ1bi5sb2dpY2FsTGVm
dCgpIDw8ICIsIiA8PCBkaXNwbGF5UnVuLmxvZ2ljYWxUb3AoKSA8PCAiKSBzaXplICIgPDwgZGlz
cGxheVJ1bi5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgZGlzcGxheVJ1bi5sb2dpY2FsSGVpZ2h0
KCk7CisgICAgICAgIGlmIChkaXNwbGF5UnVuLnRleHRDb250ZXh0KCkpCisgICAgICAgICAgICBz
dHJlYW0gPDwgIiBydW4oIiA8PCBkaXNwbGF5UnVuLnRleHRDb250ZXh0KCktPnN0YXJ0KCkgPDwg
IiwgIiA8PCBkaXNwbGF5UnVuLnRleHRDb250ZXh0KCktPmVuZCgpIDw8ICIpIjsKICAgICAgICAg
c3RyZWFtLm5leHRMaW5lKCk7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384501</attachid>
            <date>2019-11-29 05:01:04 -0800</date>
            <delta_ts>2019-11-29 08:30:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lfc-displayrun-vector-allocate-2.patch</filename>
            <type>text/plain</type>
            <size>26147</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NmU2NDUxNmM4Yi4uYjg5M2ViMzMxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxOS0xMS0yOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgW0xGQ11bSUZDXSBWZWN0b3IgYWxsb2NhdGUgTGluZUJveGVzIGFuZCBEaXNw
bGF5OjpSdW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDQ2OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBbHNvIHJlbmFtZSBpbmxpbmVSdW5zIC0+IGRpc3BsYXlSdW5zIHRvIG1hdGNoIHRoZSB0eXBl
LgorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbnRl
bnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAgICAqIGxheW91
dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6UmVuZGVyQmxvY2tGbG93TGluZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKiBsYXlvdXQv
VmVyaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0
Y2hpbmdTaW1wbGVMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKToK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAg
ICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29s
bGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91Z2ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpwYWludElubGluZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZv
cm1hdHRpbmdTdGF0ZSk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5lRGVzY2VudE5lZWRzQ29sbGFwc2lu
ZyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ1N0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdT
dGF0ZTo6ZGlzcGxheVJ1bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nU3RhdGU6OmRpc3BsYXlSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRMaW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpsaW5lQm94Rm9yUnVuIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGREaXNwbGF5
UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpy
ZXNldERpc3BsYXlSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ1N0YXRlOjppbmxpbmVSdW5zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjppbmxpbmVSdW5zKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRJbmxpbmVS
dW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
U3RhdGU6OnJlc2V0SW5saW5lUnVucyk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6YWxpZ25Db250ZW50VmVydGljYWxseSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQpOgor
ICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0SW5saW5lUnVucyk6CisKIDIwMTktMTEtMjggIEZ1
amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IEVOQUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSBhbmQgRU5BQkxFX0tFWUJPQVJEX0tFWV9B
VFRSSUJVVEUgbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggZmQ4NzRiOTIwNzYuLjZjNjZlMWEzYTQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwCkBAIC0xMzQsOCArMTM0LDggQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY28KICAgICAgICAg
YXV0byYgbGluZUJveGVzID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRT
dGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nUm9vdENvbnRhaW5lcikp
LmxpbmVCb3hlcygpOwogICAgICAgICAvLyBFdmVuIGVtcHR5IGNvbnRhaW5lcnMgZ2VuZXJhdGUg
b25lIGxpbmUuIAogICAgICAgICBBU1NFUlQoIWxpbmVCb3hlcy5pc0VtcHR5KCkpOwotICAgICAg
ICB0b3AgPSBsaW5lQm94ZXMuZmlyc3QoKS0+bG9naWNhbFRvcCgpOwotICAgICAgICBib3R0b20g
PSBsaW5lQm94ZXMubGFzdCgpLT5sb2dpY2FsQm90dG9tKCk7CisgICAgICAgIHRvcCA9IGxpbmVC
b3hlcy5maXJzdCgpLmxvZ2ljYWxUb3AoKTsKKyAgICAgICAgYm90dG9tID0gbGluZUJveGVzLmxh
c3QoKS5sb2dpY2FsQm90dG9tKCk7CiAgICAgfSBlbHNlIGlmIChmb3JtYXR0aW5nUm9vdENvbnRh
aW5lci5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSB8fCBmb3JtYXR0aW5nUm9v
dENvbnRhaW5lci5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSB8fCBmb3JtYXR0
aW5nUm9vdENvbnRhaW5lci5pc0RvY3VtZW50Qm94KCkpIHsKICAgICAgICAgaWYgKGZvcm1hdHRp
bmdSb290Q29udGFpbmVyLmhhc0luRmxvd0NoaWxkKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGZp
cnN0Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveCgqZm9ybWF0
dGluZ1Jvb3RDb250YWluZXIuZmlyc3RJbkZsb3dDaGlsZCgpLCBFc2NhcGVUeXBlOjpBY2Nlc3ND
aGlsZEZvcm1hdHRpbmdDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9SZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9S
ZW5kZXJCbG9ja0Zsb3dMaW5lTGF5b3V0LmNwcAppbmRleCAyNjVmMGE3ZjNiOC4uODFkMDhkYzMy
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9SZW5kZXJCbG9ja0Zsb3dMaW5l
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvUmVuZGVyQmxvY2tGbG93TGlu
ZUxheW91dC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3dMaW5lTGF5
b3V0OjpsYXlvdXQoKQogICAgIGxheW91dENvbnRleHQubGF5b3V0KG1fZmxvdy5jb250ZW50U2l6
ZSgpLCBpbnZhbGlkYXRpb25TdGF0ZSk7CiAKICAgICBhdXRvJiBsaW5lQm94ZXMgPSBkb3duY2Fz
dDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KG1fbGF5b3V0U3RhdGUtPmVzdGFibGlzaGVkRm9ybWF0
dGluZ1N0YXRlKHJvb3RDb250YWluZXIpKS5saW5lQm94ZXMoKTsKLSAgICBhdXRvIGhlaWdodCA9
IGxpbmVCb3hlcy5sYXN0KCktPmxvZ2ljYWxCb3R0b20oKTsKKyAgICBhdXRvIGhlaWdodCA9IGxp
bmVCb3hlcy5sYXN0KCkubG9naWNhbEJvdHRvbSgpOwogCiAgICAgYXV0byYgZGlzcGxheUJveCA9
IG1fbGF5b3V0U3RhdGUtPmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocm9vdENvbnRhaW5lcik7CiAg
ICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGhlaWdodCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9WZXJpZmljYXRpb24uY3BwCmluZGV4IDRiMTMwNzUzMmQ1Li5hYmEwYTllNDk3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAgLTc3LDEwICs3NywxMCBAQCBz
dGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVk
KFRleHRTdHJlYW0mIHN0cmVhbSwgYwogCiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRl
ID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGlu
Z1Jvb3QpOwogICAgIEFTU0VSVChpczxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1h
dHRpbmdTdGF0ZSkpOwotICAgIGF1dG8mIGlubGluZVJ1bkxpc3QgPSBkb3duY2FzdDxJbmxpbmVG
b3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkuaW5saW5lUnVucygpOworICAg
IGF1dG8mIGRpc3BsYXlSdW5zID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxp
bmVGb3JtYXR0aW5nU3RhdGUpLmRpc3BsYXlSdW5zKCk7CiAKLSAgICBpZiAoaW5saW5lUnVuTGlz
dC5zaXplKCkgIT0gbGluZUxheW91dERhdGEtPnJ1bkNvdW50KCkpIHsKLSAgICAgICAgc3RyZWFt
IDw8ICJNaXNtYXRjaGluZyBudW1iZXIgb2YgcnVuczogc2ltcGxlIHJ1bnMoIiA8PCBsaW5lTGF5
b3V0RGF0YS0+cnVuQ291bnQoKSA8PCAiKSBpbmxpbmUgcnVucygiIDw8IGlubGluZVJ1bkxpc3Qu
c2l6ZSgpIDw8ICIpIjsKKyAgICBpZiAoZGlzcGxheVJ1bnMuc2l6ZSgpICE9IGxpbmVMYXlvdXRE
YXRhLT5ydW5Db3VudCgpKSB7CisgICAgICAgIHN0cmVhbSA8PCAiTWlzbWF0Y2hpbmcgbnVtYmVy
IG9mIHJ1bnM6IHNpbXBsZSBydW5zKCIgPDwgbGluZUxheW91dERhdGEtPnJ1bkNvdW50KCkgPDwg
IikgaW5saW5lIHJ1bnMoIiA8PCBkaXNwbGF5UnVucy5zaXplKCkgPDwgIikiOwogICAgICAgICBz
dHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtODgsMjMg
Kzg4LDIzIEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0
aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjCiAgICAgYXV0byBtaXNtYXRjaGVkID0g
ZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpbmVMYXlvdXREYXRhLT5ydW5D
b3VudCgpOyArK2kpIHsKICAgICAgICAgYXV0byYgc2ltcGxlUnVuID0gbGluZUxheW91dERhdGEt
PnJ1bkF0KGkpOwotICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSAqaW5saW5lUnVuTGlzdFtpXTsK
KyAgICAgICAgYXV0byYgZGlzcGxheVJ1biA9IGRpc3BsYXlSdW5zW2ldOwogCi0gICAgICAgIGF1
dG8gbWF0Y2hpbmdSdW5zID0gYXJlRXNzZW50aWFsbHlFcXVhbChzaW1wbGVSdW4ubG9naWNhbExl
ZnQsIGlubGluZVJ1bi5sb2dpY2FsTGVmdCgpKSAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKHNpbXBs
ZVJ1bi5sb2dpY2FsUmlnaHQsIGlubGluZVJ1bi5sb2dpY2FsUmlnaHQoKSk7Ci0gICAgICAgIGlm
IChtYXRjaGluZ1J1bnMgJiYgaW5saW5lUnVuLnRleHRDb250ZXh0KCkpIHsKLSAgICAgICAgICAg
IG1hdGNoaW5nUnVucyA9IHNpbXBsZVJ1bi5zdGFydCA9PSBpbmxpbmVSdW4udGV4dENvbnRleHQo
KS0+c3RhcnQoKSAmJiBzaW1wbGVSdW4uZW5kID09IGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5l
bmQoKTsKKyAgICAgICAgYXV0byBtYXRjaGluZ1J1bnMgPSBhcmVFc3NlbnRpYWxseUVxdWFsKHNp
bXBsZVJ1bi5sb2dpY2FsTGVmdCwgZGlzcGxheVJ1bi5sb2dpY2FsTGVmdCgpKSAmJiBhcmVFc3Nl
bnRpYWxseUVxdWFsKHNpbXBsZVJ1bi5sb2dpY2FsUmlnaHQsIGRpc3BsYXlSdW4ubG9naWNhbFJp
Z2h0KCkpOworICAgICAgICBpZiAobWF0Y2hpbmdSdW5zICYmIGRpc3BsYXlSdW4udGV4dENvbnRl
eHQoKSkgeworICAgICAgICAgICAgbWF0Y2hpbmdSdW5zID0gc2ltcGxlUnVuLnN0YXJ0ID09IGRp
c3BsYXlSdW4udGV4dENvbnRleHQoKS0+c3RhcnQoKSAmJiBzaW1wbGVSdW4uZW5kID09IGRpc3Bs
YXlSdW4udGV4dENvbnRleHQoKS0+ZW5kKCk7CiAgICAgICAgICAgICAvLyBTTEwgaGFuZGxlcyBz
dHJpbmdzIGluIGEgbW9yZSBjb25jYXRlbmF0ZWQgZm9ybWF0IDxkaXY+Zm9vPGJyPmJhcjwvZGl2
PiAtPiBmb28gLT4gMCwzIGJhciAtPiAzLDYgdnMuIDAsMyBhbmQgMCwzCiAgICAgICAgICAgICBp
ZiAoIW1hdGNoaW5nUnVucykKLSAgICAgICAgICAgICAgICBtYXRjaGluZ1J1bnMgPSAoc2ltcGxl
UnVuLmVuZCAtIHNpbXBsZVJ1bi5zdGFydCkgPT0gKGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5l
bmQoKSAtIGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5zdGFydCgpKTsgCisgICAgICAgICAgICAg
ICAgbWF0Y2hpbmdSdW5zID0gKHNpbXBsZVJ1bi5lbmQgLSBzaW1wbGVSdW4uc3RhcnQpID09IChk
aXNwbGF5UnVuLnRleHRDb250ZXh0KCktPmVuZCgpIC0gZGlzcGxheVJ1bi50ZXh0Q29udGV4dCgp
LT5zdGFydCgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobWF0Y2hpbmdSdW5zKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZzogc2ltcGxl
IHJ1bigiIDw8IHNpbXBsZVJ1bi5zdGFydCA8PCAiLCAiIDw8IHNpbXBsZVJ1bi5lbmQgPDwgIikg
KCIgPDwgc2ltcGxlUnVuLmxvZ2ljYWxMZWZ0IDw8ICIsICIgPDwgc2ltcGxlUnVuLmxvZ2ljYWxS
aWdodCA8PCAiKSI7CiAgICAgICAgIHN0cmVhbSA8PCAiIGlubGluZSBydW4iOwotICAgICAgICBp
ZiAoaW5saW5lUnVuLnRleHRDb250ZXh0KCkpCi0gICAgICAgICAgICBzdHJlYW0gPDwgIiAoIiA8
PCBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGlubGluZVJ1bi50
ZXh0Q29udGV4dCgpLT5lbmQoKSA8PCAiKSI7Ci0gICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGlu
bGluZVJ1bi5sb2dpY2FsTGVmdCgpIDw8ICIsICIgPDwgaW5saW5lUnVuLmxvZ2ljYWxUb3AoKSA8
PCAiKSAoIiA8PCBpbmxpbmVSdW4ubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGlubGluZVJ1bi5s
b2dpY2FsSGVpZ2h0KCkgPDwgIikiOworICAgICAgICBpZiAoZGlzcGxheVJ1bi50ZXh0Q29udGV4
dCgpKQorICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgZGlzcGxheVJ1bi50ZXh0Q29udGV4
dCgpLT5zdGFydCgpIDw8ICIsICIgPDwgZGlzcGxheVJ1bi50ZXh0Q29udGV4dCgpLT5lbmQoKSA8
PCAiKSI7CisgICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGRpc3BsYXlSdW4ubG9naWNhbExlZnQo
KSA8PCAiLCAiIDw8IGRpc3BsYXlSdW4ubG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGRpc3BsYXlS
dW4ubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGRpc3BsYXlSdW4ubG9naWNhbEhlaWdodCgpIDw8
ICIpIjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgICAgIG1pc21hdGNoZWQgPSB0
cnVlOwogICAgIH0KQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRj
aGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sCiB7
CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNo
ZWRGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwogICAgIEFTU0VSVChpczxJ
bmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkpOwotICAgIGF1dG8m
IGlubGluZVJ1bkxpc3QgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZv
cm1hdHRpbmdTdGF0ZSkuaW5saW5lUnVucygpOworICAgIGF1dG8mIGRpc3BsYXlSdW5zID0gZG93
bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmRpc3Bs
YXlSdW5zKCk7CiAKICAgICAvLyBDb2xsZWN0IGlubGluZWJveGVzLgogICAgIFZlY3RvcjxXZWJD
b3JlOjpJbmxpbmVCb3gqPiBpbmxpbmVCb3hlczsKQEAgLTE2NywxNiArMTY3LDE2IEBAIHN0YXRp
YyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRl
eHRTdHJlYW0mIHN0cmVhbSwKICAgICBhdXRvIG1pc21hdGNoZWQgPSBmYWxzZTsKICAgICB1bnNp
Z25lZCBydW5JbmRleCA9IDA7CiAKLSAgICBpZiAoaW5saW5lQm94ZXMuc2l6ZSgpICE9IGlubGlu
ZVJ1bkxpc3Quc2l6ZSgpKSB7Ci0gICAgICAgIHN0cmVhbSA8PCAiV2FybmluZzogbWlzbWF0Y2hp
bmcgbnVtYmVyIG9mIHJ1bnM6IGlubGluZWJveGVzKCIgPDwgaW5saW5lQm94ZXMuc2l6ZSgpIDw8
ICIpIHZzLiBpbmxpbmUgcnVucygiIDw8IGlubGluZVJ1bkxpc3Quc2l6ZSgpIDw8ICIpIjsKKyAg
ICBpZiAoaW5saW5lQm94ZXMuc2l6ZSgpICE9IGRpc3BsYXlSdW5zLnNpemUoKSkgeworICAgICAg
ICBzdHJlYW0gPDwgIldhcm5pbmc6IG1pc21hdGNoaW5nIG51bWJlciBvZiBydW5zOiBpbmxpbmVi
b3hlcygiIDw8IGlubGluZUJveGVzLnNpemUoKSA8PCAiKSB2cy4gaW5saW5lIHJ1bnMoIiA8PCBk
aXNwbGF5UnVucy5zaXplKCkgPDwgIikiOwogICAgICAgICBzdHJlYW0ubmV4dExpbmUoKTsKICAg
ICB9CiAKLSAgICBmb3IgKHVuc2lnbmVkIGlubGluZUJveEluZGV4ID0gMDsgaW5saW5lQm94SW5k
ZXggPCBpbmxpbmVCb3hlcy5zaXplKCkgJiYgcnVuSW5kZXggPCBpbmxpbmVSdW5MaXN0LnNpemUo
KTsgKytpbmxpbmVCb3hJbmRleCkgewotICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSAqaW5saW5l
UnVuTGlzdFtydW5JbmRleF07CisgICAgZm9yICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7
IGlubGluZUJveEluZGV4IDwgaW5saW5lQm94ZXMuc2l6ZSgpICYmIHJ1bkluZGV4IDwgZGlzcGxh
eVJ1bnMuc2l6ZSgpOyArK2lubGluZUJveEluZGV4KSB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlS
dW4gPSBkaXNwbGF5UnVuc1tydW5JbmRleF07CiAgICAgICAgIGF1dG8qIGlubGluZUJveCA9IGlu
bGluZUJveGVzW2lubGluZUJveEluZGV4XTsKICAgICAgICAgYXV0byogaW5saW5lVGV4dEJveCA9
IGlzPElubGluZVRleHRCb3g+KGlubGluZUJveCkgPyBkb3duY2FzdDxJbmxpbmVUZXh0Qm94Pihp
bmxpbmVCb3gpIDogbnVsbHB0cjsKLSAgICAgICAgYm9vbCBtYXRjaGluZ1J1bnMgPSBpbmxpbmVU
ZXh0Qm94ID8gY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGlubGluZVJ1biwgKmlubGluZVRleHRC
b3gpIDogbWF0Y2hpbmdSdW5zID0gY2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKGlubGluZVJ1
biwgKmlubGluZUJveCk7CisgICAgICAgIGJvb2wgbWF0Y2hpbmdSdW5zID0gaW5saW5lVGV4dEJv
eCA/IGNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyhkaXNwbGF5UnVuLCAqaW5saW5lVGV4dEJveCkg
OiBtYXRjaGluZ1J1bnMgPSBjaGVja0Zvck1hdGNoaW5nTm9uVGV4dFJ1bnMoZGlzcGxheVJ1biwg
KmlubGluZUJveCk7CiAKICAgICAgICAgaWYgKCFtYXRjaGluZ1J1bnMpIHsKICAgICAgICAgICAg
IApAQCAtMTk0LDkgKzE5NCw5IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxl
eExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwKICAgICAgICAgICAg
IHN0cmVhbSA8PCAiICgiIDw8IGlubGluZUJveC0+bG9naWNhbExlZnQoKSA8PCAiLCAiIDw8IGlu
bGluZUJveC0+bG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGlubGluZUJveC0+bG9naWNhbFdpZHRo
KCkgPDwgIngiIDw8IGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpIDw8ICIpIjsKIAogICAgICAg
ICAgICAgc3RyZWFtIDw8ICIgaW5saW5lIHJ1biI7Ci0gICAgICAgICAgICBpZiAoaW5saW5lUnVu
LnRleHRDb250ZXh0KCkpCi0gICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgaW5saW5l
UnVuLnRleHRDb250ZXh0KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4udGV4dENvbnRl
eHQoKS0+ZW5kKCkgPDwgIikiOwotICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgaW5saW5l
UnVuLmxvZ2ljYWxMZWZ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4ubG9naWNhbFRvcCgpIDw8ICIp
ICgiIDw8IGlubGluZVJ1bi5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgaW5saW5lUnVuLmxvZ2lj
YWxIZWlnaHQoKSA8PCAiKSI7CisgICAgICAgICAgICBpZiAoZGlzcGxheVJ1bi50ZXh0Q29udGV4
dCgpKQorICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IGRpc3BsYXlSdW4udGV4dENv
bnRleHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IGRpc3BsYXlSdW4udGV4dENvbnRleHQoKS0+ZW5k
KCkgPDwgIikiOworICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgZGlzcGxheVJ1bi5sb2dp
Y2FsTGVmdCgpIDw8ICIsICIgPDwgZGlzcGxheVJ1bi5sb2dpY2FsVG9wKCkgPDwgIikgKCIgPDwg
ZGlzcGxheVJ1bi5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgZGlzcGxheVJ1bi5sb2dpY2FsSGVp
Z2h0KCkgPDwgIikiOwogICAgICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgICAgICAg
ICBtaXNtYXRjaGVkID0gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGUyMWI3MTg2MDI0Li5lYzhkMWFkYThkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodAogICAgICAgICAgICAgYXV0byYgbGluZUJv
eGVzID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZSgpLmVzdGFi
bGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dENvbnRhaW5lcikpLmxpbmVCb3hlcygpOwogICAg
ICAgICAgICAgLy8gRXZlbiBlbXB0eSBjb250YWluZXJzIGdlbmVyYXRlIG9uZSBsaW5lLiAKICAg
ICAgICAgICAgIEFTU0VSVCghbGluZUJveGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICByZXR1
cm4geyBsaW5lQm94ZXMubGFzdCgpLT5sb2dpY2FsQm90dG9tKCkgLSBib3JkZXJBbmRQYWRkaW5n
VG9wLCBub25Db2xsYXBzZWRNYXJnaW4gfTsKKyAgICAgICAgICAgIHJldHVybiB7IGxpbmVCb3hl
cy5sYXN0KCkubG9naWNhbEJvdHRvbSgpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgbm9uQ29sbGFw
c2VkTWFyZ2luIH07CiAgICAgICAgIH0KIAogICAgICAgICAvLyAyLiB0aGUgYm90dG9tIGVkZ2Ug
b2YgdGhlIGJvdHRvbSAocG9zc2libHkgY29sbGFwc2VkKSBtYXJnaW4gb2YgaXRzIGxhc3QgaW4t
ZmxvdyBjaGlsZCwgaWYgdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbi4uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5D
b2xsYXBzZS5jcHAKaW5kZXggYjdjNTRhMTJiMjIuLmJiYTI1ZTRjZmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJn
aW5Db2xsYXBzZS5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IEJveCYg
bAogICAgICAgICAgICAgYXV0byBpc0NvbnNpZGVyZWRFbXB0eSA9IFsmXSB7CiAgICAgICAgICAg
ICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWlu
ZXIpKTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGxpbmVCb3ggOiBmb3JtYXR0aW5nU3Rh
dGUubGluZUJveGVzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5lQm94LT5pc0Nv
bnNpZGVyZWRFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmVCb3guaXNDb25z
aWRlcmVkRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8gQW55IGZsb2F0IGJveCBpbiB0aGlz
IGZvcm1hdHRpbmcgY29udGV4dCBwcmV2ZW50cyBjb2xsYXBzaW5nIHRocm91Z2guCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApp
bmRleCAwZmFjMjg3N2UwMi4uMDk4MThkMTI2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAtMTEyLDI2ICsxMTIs
MjYgQEAgc3RhdGljIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgQm94JiBhYnNvbHV0ZURpc3AKIAogc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVD
b250ZW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQm94JiByb290QWJzb2x1dGVE
aXNwbGF5Qm94LCBjb25zdCBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGlu
Z1N0YXRlKQogewotICAgIGF1dG8mIGlubGluZVJ1bnMgPSBmb3JtYXR0aW5nU3RhdGUuaW5saW5l
UnVucygpOwotICAgIGlmIChpbmxpbmVSdW5zLmlzRW1wdHkoKSkKKyAgICBhdXRvJiBkaXNwbGF5
UnVucyA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5UnVucygpOworICAgIGlmIChkaXNwbGF5UnVu
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byYgcnVuIDogaW5s
aW5lUnVucykgewotICAgICAgICBpZiAoYXV0byYgdGV4dENvbnRleHQgPSBydW4tPnRleHRDb250
ZXh0KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gcnVuLT5zdHlsZSgpOworICAgIGZv
ciAoYXV0byYgcnVuIDogZGlzcGxheVJ1bnMpIHsKKyAgICAgICAgaWYgKGF1dG8mIHRleHRDb250
ZXh0ID0gcnVuLnRleHRDb250ZXh0KCkpIHsKKyAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gcnVu
LnN0eWxlKCk7CiAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHN0eWxlLmNvbG9y
KCkpOwogICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc3R5bGUuY29sb3IoKSk7CiAK
LSAgICAgICAgICAgIGF1dG8gbG9naWNhbExlZnQgPSByb290QWJzb2x1dGVEaXNwbGF5Qm94Lmxl
ZnQoKSArIHJ1bi0+bG9naWNhbExlZnQoKTsKKyAgICAgICAgICAgIGF1dG8gbG9naWNhbExlZnQg
PSByb290QWJzb2x1dGVEaXNwbGF5Qm94LmxlZnQoKSArIHJ1bi5sb2dpY2FsTGVmdCgpOwogICAg
ICAgICAgICAgLy8gRklYTUU6IEFkZCBub24tYmFzZWxpbmUgYWxpZ24gcGFpbnRpbmcKLSAgICAg
ICAgICAgIGF1dG8mIGxpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveEZvclJ1bigqcnVu
KTsKKyAgICAgICAgICAgIGF1dG8mIGxpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveEZv
clJ1bihydW4pOwogICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldCA9IHJvb3RBYnNvbHV0
ZURpc3BsYXlCb3gudG9wKCkgKyBsaW5lQm94LmxvZ2ljYWxUb3AoKSArIGxpbmVCb3guYmFzZWxp
bmVPZmZzZXQoKTsKICAgICAgICAgICAgIGlmIChhdXRvIGV4cGFuc2lvbkNvbnRleHQgPSB0ZXh0
Q29udGV4dC0+ZXhwYW5zaW9uKCkpCiAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3VGV4dChz
dHlsZS5mb250Q2FzY2FkZSgpLCBUZXh0UnVuIHsgdGV4dENvbnRleHQtPmNvbnRlbnQoKSwgbG9n
aWNhbExlZnQsIGV4cGFuc2lvbkNvbnRleHQtPmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lv
bkNvbnRleHQtPmJlaGF2aW9yIH0sIHsgbG9naWNhbExlZnQsIGJhc2VsaW5lT2Zmc2V0IH0pOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3R5bGUu
Zm9udENhc2NhZGUoKSwgVGV4dFJ1biB7IHRleHRDb250ZXh0LT5jb250ZW50KCksIGxvZ2ljYWxM
ZWZ0IH0sIHsgbG9naWNhbExlZnQsIGJhc2VsaW5lT2Zmc2V0IH0pOwotICAgICAgICB9IGVsc2Ug
aWYgKGF1dG8qIGNhY2hlZEltYWdlID0gcnVuLT5pbWFnZSgpKSB7Ci0gICAgICAgICAgICBhdXRv
IHJ1bkFic29sdXRlUmVjdCA9IEZsb2F0UmVjdCB7IHJvb3RBYnNvbHV0ZURpc3BsYXlCb3gubGVm
dCgpICsgcnVuLT5sb2dpY2FsTGVmdCgpLCByb290QWJzb2x1dGVEaXNwbGF5Qm94LnRvcCgpICsg
cnVuLT5sb2dpY2FsVG9wKCksIHJ1bi0+bG9naWNhbFdpZHRoKCksIHJ1bi0+bG9naWNhbEhlaWdo
dCgpIH07CisgICAgICAgIH0gZWxzZSBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBydW4uaW1hZ2Uo
KSkgeworICAgICAgICAgICAgYXV0byBydW5BYnNvbHV0ZVJlY3QgPSBGbG9hdFJlY3QgeyByb290
QWJzb2x1dGVEaXNwbGF5Qm94LmxlZnQoKSArIHJ1bi5sb2dpY2FsTGVmdCgpLCByb290QWJzb2x1
dGVEaXNwbGF5Qm94LnRvcCgpICsgcnVuLmxvZ2ljYWxUb3AoKSwgcnVuLmxvZ2ljYWxXaWR0aCgp
LCBydW4ubG9naWNhbEhlaWdodCgpIH07CiAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgq
Y2FjaGVkSW1hZ2UtPmltYWdlKCksIHJ1bkFic29sdXRlUmVjdCk7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZjkxNzAyOGI4MTEuLjUw
OTc2YTAxZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC00Mjcs
NyArNDI3LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVz
Rm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICB9CiAKICAgICBhdXRvIGxp
bmVJbmRleCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5zaXplKCk7Ci0gICAgZm9ybWF0
dGluZ1N0YXRlLmFkZExpbmVCb3gobGluZUNvbnRlbnQubGluZUJveCk7CisgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZExpbmVCb3goTGluZUJveCB7IGxpbmVDb250ZW50LmxpbmVCb3ggfSk7CiAKICAg
ICAvLyBDb21wdXRlIGJveCBmaW5hbCBnZW9tZXRyeS4KICAgICBhdXRvJiBsaW5lUnVucyA9IGxp
bmVDb250ZW50LnJ1bkxpc3Q7CkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4
dDo6TGkKICAgICAgICAgLy8gSW5saW5lIGxldmVsIGNvbnRhaW5lcnMgKDxzcGFuPikgZG9uJ3Qg
Z2VuZXJhdGUgZGlzcGxheSBydW5zIGFuZCBuZWl0aGVyIGRvIGNvbXBsZXRlbHkgY29sbGFwc2Vk
IHJ1bnMuCiAgICAgICAgIGF1dG8gaW5pdGlhdGVzSW5saW5lUnVuID0gIWxpbmVSdW4uaXNDb250
YWluZXJTdGFydCgpICYmICFsaW5lUnVuLmlzQ29udGFpbmVyRW5kKCkgJiYgIWxpbmVSdW4uaXND
b2xsYXBzZWRUb1Zpc3VhbGx5RW1wdHkoKTsKICAgICAgICAgaWYgKGluaXRpYXRlc0lubGluZVJ1
bikKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxE
aXNwbGF5OjpSdW4+KGxpbmVJbmRleCwgbGluZVJ1bi5sYXlvdXRCb3goKS5zdHlsZSgpLCBsaW5l
UnVuLmxvZ2ljYWxSZWN0KCksIGxpbmVSdW4udGV4dENvbnRleHQoKSkpOworICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZERpc3BsYXlSdW4oeyBsaW5lSW5kZXgsIGxpbmVSdW4ubGF5b3V0
Qm94KCkuc3R5bGUoKSwgbGluZVJ1bi5sb2dpY2FsUmVjdCgpLCBsaW5lUnVuLnRleHRDb250ZXh0
KCkgfSk7CiAKICAgICAgICAgaWYgKGxpbmVSdW4uaXNGb3JjZWRMaW5lQnJlYWsoKSkgewogICAg
ICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7CkBA
IC01MDEsNyArNTAxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6aW52YWxpZGF0
ZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBJbnZhbGlkYXRpb25TdGF0ZSYKIHsKICAgICAvLyBGaW5k
IG91dCB3aGF0IHdlIG5lZWQgdG8gaW52YWxpZGF0ZS4gVGhpcyBpcyB3aGVyZSB3ZSBhZGQgc29t
ZSBzbWFydHMgdG8gZG8gcGFydGlhbCBsaW5lIGxheW91dC4KICAgICAvLyBGb3Igbm93IGxldCdz
IGp1c3QgY2xlYXIgdGhlIHJ1bnMuCi0gICAgZm9ybWF0dGluZ1N0YXRlKCkucmVzZXRJbmxpbmVS
dW5zKCk7CisgICAgZm9ybWF0dGluZ1N0YXRlKCkucmVzZXREaXNwbGF5UnVucygpOwogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGFsc28gd2hlcmUgd2Ugd291bGQgZGVsZXRlIGlubGluZSBpdGVtcyBp
ZiB0aGVpciBjb250ZW50IGNoYW5nZWQuCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCA0NDY2NTM5ZTdhZC4uZGE2MDY0YjY0MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5lRGVzY2VudE5l
ZWRzQ29sbGFwc2luZyhjb25zdCBMaW5lQnVpbGQKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3gu
aXNJbmxpbmVCbG9ja0JveCgpICYmIGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRp
bmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBk
b3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVzdGFibGlzaGVkRm9y
bWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSkpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVCghZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmlzRW1wdHkoKSk7Ci0g
ICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lID0gZm9ybWF0dGluZ1N0YXRl
LmxpbmVCb3hlcygpLmxhc3QoKS0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlu
bGluZUJsb2NrQmFzZWxpbmUgPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkubGFzdCgpLmJh
c2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUJsb2NrQmFzZWxpbmUuZGVzY2Vu
dCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IDE5NDRlNGM3NWY2Li4wOGY5ZDg5N2NjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTM3LDEwICszNyw4IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotLy8gVGVtcAogdXNpbmcgSW5saW5l
SXRlbXMgPSBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElubGluZUl0ZW0+LCAzMD47Ci11c2luZyBJ
bmxpbmVSdW5zID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5OjpSdW4+LCAxMD47Ci11
c2luZyBMaW5lQm94ZXMgPSBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPExpbmVCb3g+LCA1PjsKKwog
Ly8gSW5saW5lRm9ybWF0dGluZ1N0YXRlIGhvbGRzIHRoZSBzdGF0ZSBmb3IgYSBwYXJ0aWN1bGFy
IGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgdHJlZS4KIGNsYXNzIElubGluZUZvcm1hdHRpbmdT
dGF0ZSA6IHB1YmxpYyBGb3JtYXR0aW5nU3RhdGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoSW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKQEAgLTUyLDMxICs1MCwzNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pbmxp
bmVJdGVtczsgfQogICAgIHZvaWQgYWRkSW5saW5lSXRlbShzdGQ6OnVuaXF1ZV9wdHI8SW5saW5l
SXRlbT4mJiBpbmxpbmVJdGVtKSB7IG1faW5saW5lSXRlbXMuYXBwZW5kKFdURk1vdmUoaW5saW5l
SXRlbSkpOyB9CiAKLSAgICBjb25zdCBJbmxpbmVSdW5zJiBpbmxpbmVSdW5zKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmxpbmVSdW5zOyB9Ci0gICAgSW5saW5lUnVucyYgaW5saW5lUnVucygpIHsgcmV0
dXJuIG1faW5saW5lUnVuczsgfQotICAgIHZvaWQgYWRkSW5saW5lUnVuKHN0ZDo6dW5pcXVlX3B0
cjxEaXNwbGF5OjpSdW4+JiYpOwotICAgIHZvaWQgcmVzZXRJbmxpbmVSdW5zKCk7CisgICAgdXNp
bmcgRGlzcGxheVJ1bnMgPSBWZWN0b3I8RGlzcGxheTo6UnVuLCAxMD47CisgICAgdXNpbmcgTGlu
ZUJveGVzID0gVmVjdG9yPExpbmVCb3gsIDU+OworCisgICAgY29uc3QgRGlzcGxheVJ1bnMmIGRp
c3BsYXlSdW5zKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5UnVuczsgfQorICAgIERpc3BsYXlS
dW5zJiBkaXNwbGF5UnVucygpIHsgcmV0dXJuIG1fZGlzcGxheVJ1bnM7IH0KKyAgICB2b2lkIGFk
ZERpc3BsYXlSdW4oRGlzcGxheTo6UnVuJiYpOworICAgIHZvaWQgcmVzZXREaXNwbGF5UnVucygp
OwogCiAgICAgY29uc3QgTGluZUJveGVzJiBsaW5lQm94ZXMoKSBjb25zdCB7IHJldHVybiBtX2xp
bmVCb3hlczsgfQogICAgIExpbmVCb3hlcyYgbGluZUJveGVzKCkgeyByZXR1cm4gbV9saW5lQm94
ZXM7IH0KLSAgICB2b2lkIGFkZExpbmVCb3goY29uc3QgTGluZUJveCYgbGluZUJveCkgeyBtX2xp
bmVCb3hlcy5hcHBlbmQobWFrZVVuaXF1ZTxMaW5lQm94PihsaW5lQm94KSk7IH0KKyAgICB2b2lk
IGFkZExpbmVCb3goTGluZUJveCYmIGxpbmVCb3gpIHsgbV9saW5lQm94ZXMuYXBwZW5kKGxpbmVC
b3gpOyB9CiAKLSAgICBjb25zdCBMaW5lQm94JiBsaW5lQm94Rm9yUnVuKGNvbnN0IERpc3BsYXk6
OlJ1biYgaW5saW5lUnVuKSBjb25zdCB7IHJldHVybiAqbV9saW5lQm94ZXNbaW5saW5lUnVuLmxp
bmVJbmRleCgpXTsgfQorICAgIGNvbnN0IExpbmVCb3gmIGxpbmVCb3hGb3JSdW4oY29uc3QgRGlz
cGxheTo6UnVuJiBkaXNwbGF5UnVuKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlc1tkaXNwbGF5
UnVuLmxpbmVJbmRleCgpXTsgfQogCiBwcml2YXRlOgorICAgIC8vIENhY2hlYWJsZSBpbnB1dCB0
byBsaW5lIGxheW91dC4KICAgICBJbmxpbmVJdGVtcyBtX2lubGluZUl0ZW1zOwotICAgIElubGlu
ZVJ1bnMgbV9pbmxpbmVSdW5zOworCisgICAgLy8gTGluZSBsYXlvdXQgcmVzdWx0cworICAgIERp
c3BsYXlSdW5zIG1fZGlzcGxheVJ1bnM7CiAgICAgTGluZUJveGVzIG1fbGluZUJveGVzOwogfTsK
IAotaW5saW5lIHZvaWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRJbmxpbmVSdW4oc3RkOjp1
bmlxdWVfcHRyPERpc3BsYXk6OlJ1bj4mJiBkaXNwbGF5UnVuKQoraW5saW5lIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ1N0YXRlOjphZGREaXNwbGF5UnVuKERpc3BsYXk6OlJ1biYmIGRpc3BsYXlSdW4p
CiB7Ci0gICAgbV9pbmxpbmVSdW5zLmFwcGVuZChXVEZNb3ZlKGRpc3BsYXlSdW4pKTsKKyAgICBt
X2Rpc3BsYXlSdW5zLmFwcGVuZChXVEZNb3ZlKGRpc3BsYXlSdW4pKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjpyZXNldElubGluZVJ1bnMoKQoraW5saW5lIHZvaWQg
SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpyZXNldERpc3BsYXlSdW5zKCkKIHsKLSAgICBtX2lubGlu
ZVJ1bnMuY2xlYXIoKTsKKyAgICBtX2Rpc3BsYXlSdW5zLmNsZWFyKCk7CiAgICAgLy8gUmVzZXR0
aW5nIHRoZSBydW5zIG1lYW5zIG5vIG1vcmUgbGluZSBib3hlcyBlaXRoZXIuCiAgICAgbV9saW5l
Qm94ZXMuY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDAwZWM1YmYzZmRl
Li41ZDA4Yjk0M2NmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMjYzLDcgKzI2Myw3
IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFsaWduQ29udGVudFZlcnRpY2FsbHkoUnVuTGlzdCYgcnVu
TGlzdCkKICAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJ
bmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRGb3JtYXR0aW5n
U3RhdGUoZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpKSk7CiAgICAgICAgICAgICAgICAg
Ly8gU3BlYyBtYWtlcyB1cyBnZW5lcmF0ZSBhdCBsZWFzdCBvbmUgbGluZSAtZXZlbiBpZiBpdCBp
cyBlbXB0eS4KICAgICAgICAgICAgICAgICBBU1NFUlQoIWZvcm1hdHRpbmdTdGF0ZS5saW5lQm94
ZXMoKS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIGF1dG8gaW5saW5lQmxvY2tCYXNlbGlu
ZU9mZnNldCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCktPmJhc2VsaW5lT2Zm
c2V0KCk7CisgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lT2Zmc2V0ID0g
Zm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmxhc3QoKS5iYXNlbGluZU9mZnNldCgpOwogICAg
ICAgICAgICAgICAgIC8vIFRoZSBpbmxpbmUtYmxvY2sncyBiYXNlbGluZSBvZmZzZXQgaXMgcmVs
YXRpdmUgdG8gaXRzIGNvbnRlbnQgYm94LiBMZXQncyBjb252ZXJ0IGl0IHJlbGF0aXZlIHRvIHRo
ZSBtYXJnaW4gYm94LgogICAgICAgICAgICAgICAgIC8vICAgaW5saW5lLWJsb2NrCiAgICAgICAg
ICAgICAgICAgLy8gICAgICAgICAgICAgIFwKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIExpbmVC
dWlsZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgUnVuJiBydW4pCiAgICAg
ICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0
dGluZ1N0YXRlPihsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGRvd25j
YXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSkpOwogICAgICAgICAgICAgICAgIC8vIFNwZWMgbWFr
ZXMgdXMgZ2VuZXJhdGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQgaXMgZW1wdHkuCiAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkuaXNFbXB0
eSgpKTsKLSAgICAgICAgICAgICAgICBhdXRvJiBsYXN0TGluZUJveCA9ICpmb3JtYXR0aW5nU3Rh
dGUubGluZUJveGVzKCkubGFzdCgpOworICAgICAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5lQm94
ID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmxhc3QoKTsKICAgICAgICAgICAgICAgICBh
dXRvIGlubGluZUJsb2NrQmFzZWxpbmUgPSBsYXN0TGluZUJveC5iYXNlbGluZSgpOwogICAgICAg
ICAgICAgICAgIGF1dG8gYmVmb3JlSGVpZ2h0ID0gYm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkg
KyBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1
ZU9yKDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggZDcwNDcyOWVhNmIuLmE2ODA5ZTBiZTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRTdWJU
cmVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJvb3RSZW5kZXJlciwgQ29udGFpbmVyJiByb28KIHN0
YXRpYyB2b2lkIG91dHB1dElubGluZVJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IENvbnRhaW5lciYgaW5saW5lRm9ybWF0dGluZ1Jv
b3QsIHVuc2lnbmVkIGRlcHRoKQogewogICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9
IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRG
b3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpKTsKLSAgICBhdXRvJiBpbmxpbmVS
dW5zID0gaW5saW5lRm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKTsKKyAgICBhdXRvJiBkaXNw
bGF5UnVucyA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5UnVucygpOwogICAgIGF1dG8m
IGxpbmVCb3hlcyA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKTsKIAogICAgIHVu
c2lnbmVkIHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKQEAgLTMyMSwyMSArMzIxLDIxIEBAIHN0YXRp
YyB2b2lkIG91dHB1dElubGluZVJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsCiAKICAgICBzdHJlYW0gPDwgImxpbmVzIGFyZSAtPiAiOwogICAg
IGZvciAoYXV0byYgbGluZUJveCA6IGxpbmVCb3hlcykKLSAgICAgICAgc3RyZWFtIDw8ICJbIiA8
PCBsaW5lQm94LT5sb2dpY2FsTGVmdCgpIDw8ICIsIiA8PCBsaW5lQm94LT5sb2dpY2FsVG9wKCkg
PDwgIiAiIDw8IGxpbmVCb3gtPmxvZ2ljYWxXaWR0aCgpIDw8ICJ4IiA8PCBsaW5lQm94LT5sb2dp
Y2FsSGVpZ2h0KCkgPDwgIl0gIjsKKyAgICAgICAgc3RyZWFtIDw8ICJbIiA8PCBsaW5lQm94Lmxv
Z2ljYWxMZWZ0KCkgPDwgIiwiIDw8IGxpbmVCb3gubG9naWNhbFRvcCgpIDw8ICIgIiA8PCBsaW5l
Qm94LmxvZ2ljYWxXaWR0aCgpIDw8ICJ4IiA8PCBsaW5lQm94LmxvZ2ljYWxIZWlnaHQoKSA8PCAi
XSAiOwogICAgIHN0cmVhbS5uZXh0TGluZSgpOwogCi0gICAgZm9yIChhdXRvJiBpbmxpbmVSdW4g
OiBpbmxpbmVSdW5zKSB7CisgICAgZm9yIChhdXRvJiBkaXNwbGF5UnVuIDogZGlzcGxheVJ1bnMp
IHsKICAgICAgICAgdW5zaWduZWQgcHJpbnRlZENoYXJhY3RlcnMgPSAwOwogICAgICAgICB3aGls
ZSAoKytwcmludGVkQ2hhcmFjdGVycyA8PSBkZXB0aCAqIDIpCiAgICAgICAgICAgICBzdHJlYW0g
PDwgIiAiOwogICAgICAgICBzdHJlYW0gPDwgIiAgIjsKLSAgICAgICAgaWYgKGlubGluZVJ1bi0+
dGV4dENvbnRleHQoKSkKKyAgICAgICAgaWYgKGRpc3BsYXlSdW4udGV4dENvbnRleHQoKSkKICAg
ICAgICAgICAgIHN0cmVhbSA8PCAiaW5saW5lIHRleHQgYm94IjsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgc3RyZWFtIDw8ICJpbmxpbmUgYm94IjsKLSAgICAgICAgc3RyZWFtIDw8ICIgYXQg
KCIgPDwgaW5saW5lUnVuLT5sb2dpY2FsTGVmdCgpIDw8ICIsIiA8PCBpbmxpbmVSdW4tPmxvZ2lj
YWxUb3AoKSA8PCAiKSBzaXplICIgPDwgaW5saW5lUnVuLT5sb2dpY2FsV2lkdGgoKSA8PCAieCIg
PDwgaW5saW5lUnVuLT5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgIGlmIChpbmxpbmVSdW4tPnRl
eHRDb250ZXh0KCkpCi0gICAgICAgICAgICBzdHJlYW0gPDwgIiBydW4oIiA8PCBpbmxpbmVSdW4t
PnRleHRDb250ZXh0KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBpbmxpbmVSdW4tPnRleHRDb250ZXh0
KCktPmVuZCgpIDw8ICIpIjsKKyAgICAgICAgc3RyZWFtIDw8ICIgYXQgKCIgPDwgZGlzcGxheVJ1
bi5sb2dpY2FsTGVmdCgpIDw8ICIsIiA8PCBkaXNwbGF5UnVuLmxvZ2ljYWxUb3AoKSA8PCAiKSBz
aXplICIgPDwgZGlzcGxheVJ1bi5sb2dpY2FsV2lkdGgoKSA8PCAieCIgPDwgZGlzcGxheVJ1bi5s
b2dpY2FsSGVpZ2h0KCk7CisgICAgICAgIGlmIChkaXNwbGF5UnVuLnRleHRDb250ZXh0KCkpCisg
ICAgICAgICAgICBzdHJlYW0gPDwgIiBydW4oIiA8PCBkaXNwbGF5UnVuLnRleHRDb250ZXh0KCkt
PnN0YXJ0KCkgPDwgIiwgIiA8PCBkaXNwbGF5UnVuLnRleHRDb250ZXh0KCktPmVuZCgpIDw8ICIp
IjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgfQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>