<?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>192465</bug_id>
          
          <creation_ts>2018-12-06 07:44:02 -0800</creation_ts>
          <short_desc>[BFC][MarginCollapsing] Extend margin collapsing rules.</short_desc>
          <delta_ts>2022-10-09 06:04:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1485697</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-12-06 07:44:02 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485698</commentid>
    <comment_count>1</comment_count>
      <attachid>356727</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-06 07:45:54 -0800</bug_when>
    <thetext>Created attachment 356727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485735</commentid>
    <comment_count>2</comment_count>
      <attachid>356727</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-12-06 09:39:50 -0800</bug_when>
    <thetext>Comment on attachment 356727
Patch

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

&gt; Source/WebCore/layout/blockformatting/BlockFormattingContext.h:108
&gt; +            static bool marginTopCollapsesWithParent(const LayoutState&amp;, const Box&amp;);
&gt; +            static bool marginTopCollapsesWithSibling(const Box&amp;);
&gt; +            static bool marginBottomCollapsesWithSibling(const Box&amp;);
&gt; +            static bool marginsCollapseThrough(const Box&amp;);

Word &apos;margin&apos; in these is a bit redundant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1904340</commentid>
    <comment_count>3</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-09 06:04:52 -0700</bug_when>
    <thetext>It seems this r+ patch didn&apos;t landed and I checked via Webkit GitHub.

@Alan - is this needed? Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356727</attachid>
            <date>2018-12-06 07:45:54 -0800</date>
            <delta_ts>2018-12-06 09:39:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192465-20181206074546.patch</filename>
            <type>text/plain</type>
            <size>22786</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ0NTVlNzE1ZWZmYzk3
YzhiMTlkNDdhM2U2MGI3MDBkN2UwMTIxNy4uMWIyZWM3YjZmOGJiNmE1ZDAzOWJjZmI4NWFhOTk2
YTRkMGEzOWQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE4LTEyLTA2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0JGQ11bTWFyZ2luQ29sbGFw
c2luZ10gRXh0ZW5kIG1hcmdpbiBjb2xsYXBzaW5nIHJ1bGVzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDY1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvbWUgbWlzc2luZyBjb2xsYXBzaW5n
IHJ1bGVzLgorCisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4pOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xs
YXBzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Omhhc0NsZWFyYW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luVG9wQ29sbGFwc2VzV2l0aFNpYmxpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6Om1hcmdpbkJvdHRvbUNvbGxhcHNlc1dpdGhTaWJsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNv
bGxhcHNlOjptYXJnaW5Ub3BDb2xsYXBzZXNXaXRoUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNl
OjptYXJnaW5Cb3R0b21Db2xsYXBzZXNXaXRoUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpt
YXJnaW5zQ29sbGFwc2VUaHJvdWdoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6bWFyZ2lu
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbGxhcHNlZE1hcmdpblRvcEZyb21GaXJzdENo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5Ub3ApOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luVG9wQ29sbGFwc2VzV2l0
aFBhcmVudE1hcmdpbkJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2lu
Qm90dG9tRnJvbUxhc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmlzTWFyZ2lu
VG9wQ29sbGFwc2VkV2l0aFNpYmxpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0Ojppc01hcmdpbkJvdHRvbUNvbGxhcHNlZFdpdGhTaWJsaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1h
cmdpbkNvbGxhcHNlOjppc01hcmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojppc01hcmdpbkJvdHRvbUNvbGxhcHNlZFRocm91Z2gp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0
aFBhcmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BDb2xsYXBz
ZWRXaXRoUGFyZW50TWFyZ2luQm90dG9tKTogRGVsZXRlZC4KKwogMjAxOC0xMi0wNiAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0JGQ11bTWFyZ2luQ29s
bGFwc2luZ10gSGVpZ2h0QW5kTWFyZ2luOjptYXJnaW4gaXMgYWx3YXlzIHRoZSBub24tY29sbGFw
c2VkIG1hcmdpbiB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZTY3N2Uw
MTc0ZjBlZDU4YzE2MmZiNmI3MTNkZTA5NmIxMWYwZmQzMC4uNDBlN2IyMWM1MzJhNWQ4YzkxMWE4
ZmViMzI0YjkyNTBlNjRkYjhkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTg5
LDggKzg5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IG1hcmdp
blRvcChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogICAgICAgICAgICAgc3RhdGlj
IExheW91dFVuaXQgbWFyZ2luQm90dG9tKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7
CiAKLSAgICAgICAgICAgIHN0YXRpYyBib29sIGlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBh
cmVudChjb25zdCBCb3gmKTsKLSAgICAgICAgICAgIHN0YXRpYyBib29sIGlzTWFyZ2luVG9wQ29s
bGFwc2VkV2l0aFBhcmVudE1hcmdpbkJvdHRvbShjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0
YXRpYyBib29sIG1hcmdpbkJvdHRvbUNvbGxhcHNlc1dpdGhQYXJlbnQoY29uc3QgQm94Jik7Cisg
ICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJnaW5Ub3BDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2lu
Qm90dG9tKGNvbnN0IEJveCYpOwogCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBzdGF0
aWMgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5Cb3R0b21Gcm9tTGFzdENoaWxkKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgQm94Jik7CkBAIC0xMDIsNyArMTAyLDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5Ub3BGcm9tRmlyc3RD
aGlsZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogICAgICAgICAgICAgc3RhdGlj
IExheW91dFVuaXQgbm9uQ29sbGFwc2VkTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRlJiwgY29u
c3QgQm94Jik7CiAKLSAgICAgICAgICAgIHN0YXRpYyBib29sIGlzTWFyZ2luVG9wQ29sbGFwc2Vk
V2l0aFBhcmVudChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOworICAgICAgICAgICAg
c3RhdGljIGJvb2wgbWFyZ2luVG9wQ29sbGFwc2VzV2l0aFBhcmVudChjb25zdCBMYXlvdXRTdGF0
ZSYsIGNvbnN0IEJveCYpOworICAgICAgICAgICAgc3RhdGljIGJvb2wgbWFyZ2luVG9wQ29sbGFw
c2VzV2l0aFNpYmxpbmcoY29uc3QgQm94Jik7CisgICAgICAgICAgICBzdGF0aWMgYm9vbCBtYXJn
aW5Cb3R0b21Db2xsYXBzZXNXaXRoU2libGluZyhjb25zdCBCb3gmKTsKKyAgICAgICAgICAgIHN0
YXRpYyBib29sIG1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgQm94Jik7CiAgICAgICAgIH07
CiAKICAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZEhlaWdo
dEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gdXNlZEhlaWdodCA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggM2IwOWYzMGNmMWI2OWM4MzdhZGJlM2I4MTgzODAy
ZWNhODY0MDhjNC4uODE1ZjMzMjU4YWVmY2U4MjJiNWExOTgyYTRkZTZjZWQ5MWY2MDU1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtODQsMTQg
Kzg0LDE0IEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnCiAgICAgICAgIC8vIDIuIHRoZSBib3R0
b20gZWRnZSBvZiB0aGUgYm90dG9tIChwb3NzaWJseSBjb2xsYXBzZWQpIG1hcmdpbiBvZiBpdHMg
bGFzdCBpbi1mbG93IGNoaWxkLCBpZiB0aGUgY2hpbGQncyBib3R0b20gbWFyZ2luLi4uCiAgICAg
ICAgIGF1dG8qIGxhc3RJbkZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94
KS5sYXN0SW5GbG93Q2hpbGQoKTsKICAgICAgICAgQVNTRVJUKGxhc3RJbkZsb3dDaGlsZCk7Ci0g
ICAgICAgIGlmICghTWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBh
cmVudCgqbGFzdEluRmxvd0NoaWxkKSkgeworICAgICAgICBpZiAoIU1hcmdpbkNvbGxhcHNlOjpt
YXJnaW5Cb3R0b21Db2xsYXBzZXNXaXRoUGFyZW50KCpsYXN0SW5GbG93Q2hpbGQpKSB7CiAgICAg
ICAgICAgICBhdXRvJiBsYXN0SW5GbG93RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3goKmxhc3RJbkZsb3dDaGlsZCk7CiAgICAgICAgICAgICByZXR1cm4geyBs
YXN0SW5GbG93RGlzcGxheUJveC5ib3R0b20oKSArIGxhc3RJbkZsb3dEaXNwbGF5Qm94Lm1hcmdp
bkJvdHRvbSgpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgbm9uQ29sbGFwc2VkTWFyZ2luLCBjb2xs
YXBzZWRNYXJnaW4gfTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDMuIHRoZSBib3R0b20gYm9y
ZGVyIGVkZ2Ugb2YgdGhlIGxhc3QgaW4tZmxvdyBjaGlsZCB3aG9zZSB0b3AgbWFyZ2luIGRvZXNu
J3QgY29sbGFwc2Ugd2l0aCB0aGUgZWxlbWVudCdzIGJvdHRvbSBtYXJnaW4KICAgICAgICAgYXV0
byogaW5GbG93Q2hpbGQgPSBsYXN0SW5GbG93Q2hpbGQ7Ci0gICAgICAgIHdoaWxlIChpbkZsb3dD
aGlsZCAmJiBNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRoUGFyZW50TWFy
Z2luQm90dG9tKCppbkZsb3dDaGlsZCkpCisgICAgICAgIHdoaWxlIChpbkZsb3dDaGlsZCAmJiBN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luVG9wQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJvdHRvbSgq
aW5GbG93Q2hpbGQpKQogICAgICAgICAgICAgaW5GbG93Q2hpbGQgPSBpbkZsb3dDaGlsZC0+cHJl
dmlvdXNJbkZsb3dTaWJsaW5nKCk7CiAgICAgICAgIGlmIChpbkZsb3dDaGlsZCkgewogICAgICAg
ICAgICAgYXV0byYgaW5GbG93RGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goKmluRmxvd0NoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IGJm
MWEwOGNjYjY1OWU1NzM1OTM3Yzc2ZTgyMmU4N2RiYTg4OWU0ODYuLjZmODAyMGJjZThlYzgzZjU0
ZjZkMzMxYjcxYTkxNzhjYzUzMWNkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAt
NzgsNTMgKzc4LDczIEBAIHN0YXRpYyBib29sIGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dChjb25zdCBCb3gmIGxheW91dEJveCkKICAgICByZXR1cm4gbGF5b3V0Qm94LmVzdGFibGlz
aGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOwogfQogCi1zdGF0aWMgTGF5b3V0VW5pdCBtYXJn
aW5WYWx1ZShMYXlvdXRVbml0IGN1cnJlbnRNYXJnaW5WYWx1ZSwgTGF5b3V0VW5pdCBjYW5kaWRh
dGVNYXJnaW5WYWx1ZSkKK3N0YXRpYyBib29sIGhhc0NsZWFyYW5jZShjb25zdCBCb3gmKQogewot
ICAgIGlmICghY2FuZGlkYXRlTWFyZ2luVmFsdWUpCi0gICAgICAgIHJldHVybiBjdXJyZW50TWFy
Z2luVmFsdWU7Ci0gICAgaWYgKCFjdXJyZW50TWFyZ2luVmFsdWUpCi0gICAgICAgIHJldHVybiBj
YW5kaWRhdGVNYXJnaW5WYWx1ZTsKLSAgICAvLyBCb3RoIG1hcmdpbnMgYXJlIHBvc2l0aXZlLgot
ICAgIGlmIChjYW5kaWRhdGVNYXJnaW5WYWx1ZSA+IDAgJiYgY3VycmVudE1hcmdpblZhbHVlID4g
MCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNhbmRpZGF0ZU1hcmdpblZhbHVlLCBjdXJyZW50
TWFyZ2luVmFsdWUpOwotICAgIC8vIEJvdGggbWFyZ2lucyBhcmUgbmVnYXRpdmUuCi0gICAgaWYg
KGNhbmRpZGF0ZU1hcmdpblZhbHVlIDwgMCAmJiBjdXJyZW50TWFyZ2luVmFsdWUgPCAwKQotICAg
ICAgICByZXR1cm4gMCAtIHN0ZDo6bWF4KHN0ZDo6YWJzKGNhbmRpZGF0ZU1hcmdpblZhbHVlLnRv
RmxvYXQoKSksIHN0ZDo6YWJzKGN1cnJlbnRNYXJnaW5WYWx1ZS50b0Zsb2F0KCkpKTsKLSAgICAv
LyBPbmUgb2YgdGhlIG1hcmdpbnMgaXMgbmVnYXRpdmUuCi0gICAgcmV0dXJuIGN1cnJlbnRNYXJn
aW5WYWx1ZSArIGNhbmRpZGF0ZU1hcmdpblZhbHVlOworICAgIC8vIEZJWE1FOiBVc2UgY29tcHV0
ZWQgY2xlYXJhbmNlIGZvciBmbG9hdCBhdm9pZGluZyBibG9jayBib3hlcy4KKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFNpYmxpbmco
Y29uc3QgQm94JiBsYXlvdXRCb3gpCitib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luVG9wQ29sbGFwc2VzV2l0aFNpYmxpbmcoY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3go
KSk7CiAKLSAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgaWYg
KCFsYXlvdXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmICghbGF5b3V0Qm94LmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0lu
Rmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0byYgcHJldmlv
dXNJbkZsb3dTaWJsaW5nID0gKmxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKIAot
ICAgIC8vIE91dCBvZiBmbG93IHBvc2l0aW9uZWQuCi0gICAgQVNTRVJUKGxheW91dEJveC5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSk7Ci0gICAgcmV0dXJuIGxheW91dEJveC5zdHlsZSgpLnRvcCgp
LmlzQXV0bygpOworICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBhbnkg
b3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQ
b3NpdGlvbmVkKCkgfHwgcHJldmlvdXNJbkZsb3dTaWJsaW5nLmlzRmxvYXRpbmdQb3NpdGlvbmVk
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVs
eSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAoKGxheW91dEJveC5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnN0eWxlKCkudG9wKCkuaXNBdXRv
KCkpIAorICAgICAgICB8fCAocHJldmlvdXNJbkZsb3dTaWJsaW5nLmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpICYmICFwcmV2aW91c0luRmxvd1NpYmxpbmcuc3R5bGUoKS5ib3R0b20oKS5pc0F1dG8o
KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE1hcmdpbnMgb2YgaW5saW5lLWJs
b2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxv
Y2tCb3goKSB8fCBwcmV2aW91c0luRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0JveCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGUgYm90dG9tIG1hcmdpbiBvZiBhbiBpbi1m
bG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNvbGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFy
Z2luIG9mCisgICAgLy8gaXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLCB1bmxl
c3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCisgICAgaWYgKGhhc0NsZWFyYW5jZShsYXlv
dXRCb3gpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIGJvb2wgaXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoU2libGluZyhjb25zdCBCb3gm
IGxheW91dEJveCkKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdp
bkNvbGxhcHNlOjptYXJnaW5Cb3R0b21Db2xsYXBzZXNXaXRoU2libGluZyhjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKIAot
ICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICBpZiAoIWxheW91
dEJveC5uZXh0SW5GbG93U2libGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoIWxheW91dEJveC5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3dQb3NpdGlv
bmVkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIGF1dG8mIG5leHRJbkZsb3dTaWJsaW5n
ID0gKmxheW91dEJveC5uZXh0SW5GbG93U2libGluZygpOworCisgICAgLy8gTWFyZ2lucyBiZXR3
ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAg
IGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBuZXh0SW5GbG93U2libGlu
Zy5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBNYXJnaW5zIG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBkbyBub3QgY29sbGFwc2Uu
CisgICAgaWYgKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJv
eC5zdHlsZSgpLmJvdHRvbSgpLmlzQXV0bygpKQorICAgICAgICB8fCAobmV4dEluRmxvd1NpYmxp
bmcuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIW5leHRJbkZsb3dTaWJsaW5nLnN0eWxlKCku
dG9wKCkuaXNBdXRvKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5z
IG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBub3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJv
eC5pc0lubGluZUJsb2NrQm94KCkgfHwgbmV4dEluRmxvd1NpYmxpbmcuaXNJbmxpbmVCbG9ja0Jv
eCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBPdXQgb2YgZmxvdyBwb3NpdGlv
bmVkLgotICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwotICAg
IHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKTsKKyAgICAvLyBUaGUg
Ym90dG9tIG1hcmdpbiBvZiBhbiBpbi1mbG93IGJsb2NrLWxldmVsIGVsZW1lbnQgYWx3YXlzIGNv
bGxhcHNlcyB3aXRoIHRoZSB0b3AgbWFyZ2luIG9mCisgICAgLy8gaXRzIG5leHQgaW4tZmxvdyBi
bG9jay1sZXZlbCBzaWJsaW5nLCB1bmxlc3MgdGhhdCBzaWJsaW5nIGhhcyBjbGVhcmFuY2UuCisg
ICAgaWYgKGhhc0NsZWFyYW5jZShuZXh0SW5GbG93U2libGluZykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJnaW5Ub3BDb2xsYXBzZWRXaXRoUGFy
ZW50KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gp
Citib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6
bWFyZ2luVG9wQ29sbGFwc2VzV2l0aFBhcmVudChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIC8vIFRoZSBmaXJzdCBpbmZsb3cgY2hp
bGQgY291bGQgcHJvcGFnYXRlIGl0cyB0b3AgbWFyZ2luIHRvIHBhcmVudC4KICAgICAvLyBodHRw
czovL3d3dy53My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwjY29sbGFwc2luZy1tYXJnaW5zCkBAIC0x
MzMsNyArMTUzLDE2IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1h
cmdpbkNvbGxhcHNlOjppc01hcmdpblRvcENvbGxhcHNlZFdpdGhQCiAKICAgICBBU1NFUlQobGF5
b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKIAotICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGlu
Z09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0
ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KKyAgICBpZiAobGF5b3V0
Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBz
ZS4KKyAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYXJnaW5zIG9mIGlubGluZS1ibG9jayBib3hlcyBkbyBu
b3QgY29sbGFwc2UuCisgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE9ubHkgdGhlIGZpcnN0IGlubGZsb3cgY2hpbGQg
Y29sbGFwc2VzIHdpdGggcGFyZW50LgpAQCAtMTQxLDQ2ICsxNzAsMTI2IEBAIGJvb2wgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjppc01hcmdpblRvcENv
bGxhcHNlZFdpdGhQCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHBhcmVudCA9
ICpsYXlvdXRCb3gucGFyZW50KCk7Ci0gICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVz
dGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0
aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuCisgICAgLy8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0
IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ug
d2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgogICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHQocGFyZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8g
VGhlIHRvcCBtYXJnaW4gb2YgYW4gaW4tZmxvdyBibG9jayBlbGVtZW50IGNvbGxhcHNlcyB3aXRo
IGl0cyBmaXJzdCBpbi1mbG93IGJsb2NrLWxldmVsCisgICAgLy8gY2hpbGQncyB0b3AgbWFyZ2lu
IGlmIHRoZSBlbGVtZW50IGhhcyBubyB0b3AgYm9yZGVyLi4uCiAgICAgaWYgKGhhc0JvcmRlckJl
Zm9yZShwYXJlbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAvLyAuLi5ubyB0b3Ag
cGFkZGluZwogICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKHBhcmVudCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAorICAgIC8vIC4uLmFuZCB0aGUgY2hpbGQgaGFzIG5vIGNsZWFyYW5jZS4KKyAg
ICBpZiAoaGFzQ2xlYXJhbmNlKGxheW91dEJveCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIGlmIChCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZElnbm9yZU1hcmdp
blRvcChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGlzTWFyZ2luQm90dG9tQ29sbGFwc2Vk
VGhyb3VnaChjb25zdCBCb3gmIGxheW91dEJveCkKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5Cb3R0b21Db2xsYXBzZXNXaXRoUGFy
ZW50KGNvbnN0IEJveCYgbGF5b3V0Qm94KQogeworICAgIC8vIGxhc3QgaW5mbG93IGJveCB0byBw
YXJlbnQuCisgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5odG1sI2NvbGxh
cHNpbmctbWFyZ2lucworICAgIGlmIChsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7
CiAKLSAgICAvLyBJZiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucyBvZiBhIGJveCBhcmUgYWRq
b2luaW5nLCB0aGVuIGl0IGlzIHBvc3NpYmxlIGZvciBtYXJnaW5zIHRvIGNvbGxhcHNlIHRocm91
Z2ggaXQuCisgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhl
ciBib3ggZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0
aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTWFyZ2lucyBvZiBhYnNv
bHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgZG8gbm90IGNvbGxhcHNlLgorICAgIGlmIChsYXlvdXRC
b3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIE1hcmdpbnMgb2YgaW5saW5lLWJsb2NrIGJveGVzIGRvIG5vdCBjb2xsYXBzZS4KKyAgICBp
ZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gT25seSB0aGUgbGFzdCBpbmxmbG93IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBhcmVu
dC4KKyAgICBpZiAobGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7CisgICAg
Ly8gTWFyZ2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuLgor
ICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQocGFyZW50KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIGJvdHRvbSBtYXJnaW4gb2YgYW4gaW4tZmxv
dyBibG9jayBib3ggd2l0aCBhICdoZWlnaHQnIG9mICdhdXRvJyBjb2xsYXBzZXMgd2l0aCBpdHMg
bGFzdCBpbi1mbG93IGJsb2NrLWxldmVsIGNoaWxkJ3MgYm90dG9tIG1hcmdpbiwgaWY6CisgICAg
aWYgKCFwYXJlbnQuc3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gdGhlIGJveCBoYXMgbm8gYm90dG9tIHBhZGRpbmcsIGFuZAorICAgIGlm
IChoYXNQYWRkaW5nQmVmb3JlKHBhcmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIHRoZSBib3ggaGFzIG5vIGJvdHRvbSBib3JkZXIsIGFuZAorICAgIGlmIChoYXNCb3JkZXJC
ZWZvcmUocGFyZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gMS4gSWYgdGhl
IHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb2YgYW4gZWxlbWVudCB3aXRoIGNsZWFyYW5jZSBhcmUg
YWRqb2luaW5nLCBpdHMgbWFyZ2lucyBjb2xsYXBzZSB3aXRoIHRoZSBhZGpvaW5pbmcgbWFyZ2lu
cworICAgIC8vIG9mIGZvbGxvd2luZyBzaWJsaW5ncyBidXQgdGhhdCByZXN1bHRpbmcgbWFyZ2lu
IGRvZXMgbm90IGNvbGxhcHNlIHdpdGggdGhlIGJvdHRvbSBtYXJnaW4gb2YgdGhlIHBhcmVudCBi
bG9jay4KKworICAgIC8vIDIuIElmIHRoZSB0b3AgbWFyZ2luIG9mIGEgYm94IHdpdGggbm9uLXpl
cm8gY29tcHV0ZWQgJ21pbi1oZWlnaHQnIGFuZCAnYXV0bycgY29tcHV0ZWQgJ2hlaWdodCcgY29s
bGFwc2VzIHdpdGggdGhlIGJvdHRvbQorICAgIC8vIG1hcmdpbiBvZiBpdHMgbGFzdCBpbi1mbG93
IGNoaWxkLCB0aGVuIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4gZG9lcyBub3QgY29sbGFwc2Ug
d2l0aCB0aGUgcGFyZW50J3MgYm90dG9tIG1hcmdpbgorCisgICAgLy8gRklYTUU6IF5eCisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgQm94JiBsYXlv
dXRCb3gpCit7CisgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CisKKyAg
ICAvLyBBIGJveCdzIG93biBtYXJnaW5zIGNvbGxhcHNlIGlmIHRoZSAnbWluLWhlaWdodCcgcHJv
cGVydHkgaXMgemVybywgYW5kIGl0IGhhcyBuZWl0aGVyIHRvcCBvciBib3R0b20gYm9yZGVycyBu
b3IgdG9wIG9yIGJvdHRvbSBwYWRkaW5nLAorICAgIC8vIGFuZCBpdCBoYXMgYSAnaGVpZ2h0JyBv
ZiBlaXRoZXIgMCBvciAnYXV0bycsIGFuZCBpdCBkb2VzIG5vdCBjb250YWluIGEgbGluZSBib3gs
IGFuZCBhbGwgb2YgaXRzIGluLWZsb3cgY2hpbGRyZW4ncyBtYXJnaW5zIChpZiBhbnkpIGNvbGxh
cHNlLgogICAgIGlmIChoYXNCb3JkZXJCZWZvcmUobGF5b3V0Qm94KSB8fCBoYXNCb3JkZXJBZnRl
cihsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzUGFkZGlu
Z0JlZm9yZShsYXlvdXRCb3gpIHx8IGhhc1BhZGRpbmdBZnRlcihsYXlvdXRCb3gpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIGNvbXB1dGVkIDAgaGVp
Z2h0LgogICAgIGlmICghbGF5b3V0Qm94LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkgfHwgIWxh
eW91dEJveC5zdHlsZSgpLm1pbkhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKKyAgICAvLyBGSVhNRTogQ2hlY2sgaWYgdGhlIGluZmxvdyBibG9jayBjaGlsZHJl
biBoYXZlIGNvbGxhcHNlZCBtYXJnaW5zCiAgICAgYXV0byYgY29udGFpbmVyID0gZG93bmNhc3Q8
Q29udGFpbmVyPihsYXlvdXRCb3gpOwogICAgIGlmIChjb250YWluZXIuaGFzSW5GbG93T3JGbG9h
dGluZ0NoaWxkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIEZJWE1FOiBDaGVj
ayBpZiB0aGVyZSdzIG5vIGxpbmUgYm94IChpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0KS4KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIExheW91dFVuaXQgbWFyZ2luVmFsdWUoTGF5b3V0
VW5pdCBjdXJyZW50TWFyZ2luVmFsdWUsIExheW91dFVuaXQgY2FuZGlkYXRlTWFyZ2luVmFsdWUp
Cit7CisgICAgaWYgKCFjYW5kaWRhdGVNYXJnaW5WYWx1ZSkKKyAgICAgICAgcmV0dXJuIGN1cnJl
bnRNYXJnaW5WYWx1ZTsKKyAgICBpZiAoIWN1cnJlbnRNYXJnaW5WYWx1ZSkKKyAgICAgICAgcmV0
dXJuIGNhbmRpZGF0ZU1hcmdpblZhbHVlOworICAgIC8vIEJvdGggbWFyZ2lucyBhcmUgcG9zaXRp
dmUuCisgICAgaWYgKGNhbmRpZGF0ZU1hcmdpblZhbHVlID4gMCAmJiBjdXJyZW50TWFyZ2luVmFs
dWUgPiAwKQorICAgICAgICByZXR1cm4gc3RkOjptYXgoY2FuZGlkYXRlTWFyZ2luVmFsdWUsIGN1
cnJlbnRNYXJnaW5WYWx1ZSk7CisgICAgLy8gQm90aCBtYXJnaW5zIGFyZSBuZWdhdGl2ZS4KKyAg
ICBpZiAoY2FuZGlkYXRlTWFyZ2luVmFsdWUgPCAwICYmIGN1cnJlbnRNYXJnaW5WYWx1ZSA8IDAp
CisgICAgICAgIHJldHVybiAwIC0gc3RkOjptYXgoc3RkOjphYnMoY2FuZGlkYXRlTWFyZ2luVmFs
dWUudG9GbG9hdCgpKSwgc3RkOjphYnMoY3VycmVudE1hcmdpblZhbHVlLnRvRmxvYXQoKSkpOwor
ICAgIC8vIE9uZSBvZiB0aGUgbWFyZ2lucyBpcyBuZWdhdGl2ZS4KKyAgICByZXR1cm4gY3VycmVu
dE1hcmdpblZhbHVlICsgY2FuZGlkYXRlTWFyZ2luVmFsdWU7Cit9CisKIExheW91dFVuaXQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRN
YXJnaW5Ub3BGcm9tRmlyc3RDaGlsZChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVs
Qm94KCkpOwpAQCAtMTk1LDcgKzMwNCw3IEBAIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Ok1hcmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRNYXJnaW5Ub3BGCiAKICAg
ICAvLyBGSVhNRTogVGFrZSBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4gaW50byBhY2NvdW50Lgog
ICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQgPSAqZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRC
b3gpLmZpcnN0SW5GbG93Q2hpbGQoKTsKLSAgICBpZiAoIWlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0
aFBhcmVudChsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCkpCisgICAgaWYgKCFtYXJnaW5U
b3BDb2xsYXBzZXNXaXRoUGFyZW50KGxheW91dFN0YXRlLCBmaXJzdEluRmxvd0NoaWxkKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgLy8gQ29sbGVjdCBjb2xsYXBzZWQgbWFyZ2luIHRvcCByZWN1
cnNpdmVseS4KICAgICByZXR1cm4gbWFyZ2luVmFsdWUoY29tcHV0ZWROb25Db2xsYXBzZWRNYXJn
aW5Ub3AobGF5b3V0U3RhdGUsIGZpcnN0SW5GbG93Q2hpbGQpLCBjb2xsYXBzZWRNYXJnaW5Ub3BG
cm9tRmlyc3RDaGlsZChsYXlvdXRTdGF0ZSwgZmlyc3RJbkZsb3dDaGlsZCkpOwpAQCAtMjA5LDIw
ICszMTgsNiBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpN
YXJnaW5Db2xsYXBzZTo6bm9uQ29sbGFwc2VkTWFyZ2luVAogICAgIHJldHVybiBtYXJnaW5WYWx1
ZShjb21wdXRlZE5vbkNvbGxhcHNlZE1hcmdpblRvcChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSwg
Y29sbGFwc2VkTWFyZ2luVG9wRnJvbUZpcnN0Q2hpbGQobGF5b3V0U3RhdGUsIGxheW91dEJveCkp
OwogfQogCi0vKnN0YXRpYyBib29sIGhhc0Fkam9pbmluZ01hcmdpblRvcEFuZEJvdHRvbShjb25z
dCBCb3gmKQotewotICAgIC8vIFR3byBtYXJnaW5zIGFyZSBhZGpvaW5pbmcgaWYgYW5kIG9ubHkg
aWY6Ci0gICAgLy8gMS4gYm90aCBiZWxvbmcgdG8gaW4tZmxvdyBibG9jay1sZXZlbCBib3hlcyB0
aGF0IHBhcnRpY2lwYXRlIGluIHRoZSBzYW1lIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dAotICAg
IC8vIDIuIG5vIGxpbmUgYm94ZXMsIG5vIGNsZWFyYW5jZSwgbm8gcGFkZGluZyBhbmQgbm8gYm9y
ZGVyIHNlcGFyYXRlIHRoZW0gKE5vdGUgdGhhdCBjZXJ0YWluIHplcm8taGVpZ2h0IGxpbmUgYm94
ZXMgKHNlZSA5LjQuMikgYXJlIGlnbm9yZWQgZm9yIHRoaXMgcHVycG9zZS4pCi0gICAgLy8gMy4g
Ym90aCBiZWxvbmcgdG8gdmVydGljYWxseS1hZGphY2VudCBib3ggZWRnZXMsIGkuZS4gZm9ybSBv
bmUgb2YgdGhlIGZvbGxvd2luZyBwYWlyczoKLSAgICAvLyAgICAgICAgdG9wIG1hcmdpbiBvZiBh
IGJveCBhbmQgdG9wIG1hcmdpbiBvZiBpdHMgZmlyc3QgaW4tZmxvdyBjaGlsZAotICAgIC8vICAg
ICAgICBib3R0b20gbWFyZ2luIG9mIGJveCBhbmQgdG9wIG1hcmdpbiBvZiBpdHMgbmV4dCBpbi1m
bG93IGZvbGxvd2luZyBzaWJsaW5nCi0gICAgLy8gICAgICAgIGJvdHRvbSBtYXJnaW4gb2YgYSBs
YXN0IGluLWZsb3cgY2hpbGQgYW5kIGJvdHRvbSBtYXJnaW4gb2YgaXRzIHBhcmVudCBpZiB0aGUg
cGFyZW50IGhhcyAnYXV0bycgY29tcHV0ZWQgaGVpZ2h0Ci0gICAgLy8gICAgICAgIHRvcCBhbmQg
Ym90dG9tIG1hcmdpbnMgb2YgYSBib3ggdGhhdCBkb2VzIG5vdCBlc3RhYmxpc2ggYSBuZXcgYmxv
Y2sgZm9ybWF0dGluZyBjb250ZXh0IGFuZCB0aGF0IGhhcyB6ZXJvIGNvbXB1dGVkICdtaW4taGVp
Z2h0JywKLSAgICAvLyAgICAgICAgemVybyBvciAnYXV0bycgY29tcHV0ZWQgJ2hlaWdodCcsIGFu
ZCBubyBpbi1mbG93IGNoaWxkcmVuCi0gICAgLy8gQSBjb2xsYXBzZWQgbWFyZ2luIGlzIGNvbnNp
ZGVyZWQgYWRqb2luaW5nIHRvIGFub3RoZXIgbWFyZ2luIGlmIGFueSBvZiBpdHMgY29tcG9uZW50
IG1hcmdpbnMgaXMgYWRqb2luaW5nIHRvIHRoYXQgbWFyZ2luLgotICAgIHJldHVybiBmYWxzZTsK
LX0qLwogTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2lu
Q29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luVG9wKGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91
dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CkBAIC0yNDUsMTUgKzM0MCwxNSBAQCBMYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2lu
VG9wKGNvbnN0IExheQogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwog
CiAgICAgLy8gVE9ETzogdGFrZSBfaGFzQWRqb2luaW5nTWFyZ2luVG9wQW5kQm90dG9tKCkgaW50
byBhY2NvdW50LgotICAgIGlmIChpc01hcmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnQobGF5b3V0
U3RhdGUsIGxheW91dEJveCkpCisgICAgaWYgKG1hcmdpblRvcENvbGxhcHNlc1dpdGhQYXJlbnQo
bGF5b3V0U3RhdGUsIGxheW91dEJveCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gRklY
TUU6IEZpbmQgb3V0IHRoZSBsb2dpYyBiZWhpbmQgdGhpcy4KICAgICBpZiAoQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVNYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxh
eW91dEJveCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCFpc01hcmdpblRvcENvbGxh
cHNlZFdpdGhTaWJsaW5nKGxheW91dEJveCkpIHsKLSAgICAgICAgaWYgKCFpc01hcmdpbkJvdHRv
bUNvbGxhcHNlZFRocm91Z2gobGF5b3V0Qm94KSkKKyAgICBpZiAoIW1hcmdpblRvcENvbGxhcHNl
c1dpdGhTaWJsaW5nKGxheW91dEJveCkpIHsKKyAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VU
aHJvdWdoKGxheW91dEJveCkpCiAgICAgICAgICAgICByZXR1cm4gbm9uQ29sbGFwc2VkTWFyZ2lu
VG9wKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2xs
YXBzZWQgdGhyb3VnaCB2YWx1ZS4KICAgICAgICAgYXV0byBtYXJnaW5Ub3AgPSBub25Db2xsYXBz
ZWRNYXJnaW5Ub3AobGF5b3V0U3RhdGUsIGxheW91dEJveCk7CkBAIC0yODAsMTQgKzM3NSwxNCBA
QCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xs
YXBzZTo6bWFyZ2luQm90dG9tKGNvbnN0CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2
ZWxCb3goKSk7CiAKICAgICAvLyBUT0RPOiB0YWtlIF9oYXNBZGpvaW5pbmdNYXJnaW5Ub3BBbmRC
b3R0b20oKSBpbnRvIGFjY291bnQuCi0gICAgaWYgKGlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0
aFBhcmVudChsYXlvdXRCb3gpKQorICAgIGlmIChtYXJnaW5Cb3R0b21Db2xsYXBzZXNXaXRoUGFy
ZW50KGxheW91dEJveCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGlzTWFyZ2luQm90
dG9tQ29sbGFwc2VkVGhyb3VnaChsYXlvdXRCb3gpKQorICAgIGlmIChtYXJnaW5zQ29sbGFwc2VU
aHJvdWdoKGxheW91dEJveCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gRmxvYXRzIGFu
ZCBvdXQgb2YgZmxvdyBwb3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZSB0aGVpciBtYXJn
aW5zLgotICAgIGlmICghaXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaXRoU2libGluZyhsYXlvdXRC
b3gpKQorICAgIGlmICghbWFyZ2luQm90dG9tQ29sbGFwc2VzV2l0aFNpYmxpbmcobGF5b3V0Qm94
KSkKICAgICAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbShsYXlvdXRTdGF0ZSwg
bGF5b3V0Qm94KTsKIAogICAgIC8vIFRoZSBib3R0b20gbWFyZ2luIG9mIGFuIGluLWZsb3cgYmxv
Y2stbGV2ZWwgZWxlbWVudCBhbHdheXMgY29sbGFwc2VzIHdpdGggdGhlIHRvcCBtYXJnaW4gb2Yg
aXRzIG5leHQgaW4tZmxvdyBibG9jay1sZXZlbCBzaWJsaW5nLApAQCAtMjk3LDQzICszOTIsNyBA
QCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xs
YXBzZTo6bWFyZ2luQm90dG9tKGNvbnN0CiAgICAgcmV0dXJuIG5vbkNvbGxhcHNlZE1hcmdpbkJv
dHRvbShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2Vk
V2l0aFBhcmVudChjb25zdCBCb3gmIGxheW91dEJveCkKLXsKLSAgICAvLyBsYXN0IGluZmxvdyBi
b3ggdG8gcGFyZW50LgotICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9ib3guaHRt
bCNjb2xsYXBzaW5nLW1hcmdpbnMKLSAgICBpZiAobGF5b3V0Qm94LmlzQW5vbnltb3VzKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVs
Qm94KCkpOwotCi0gICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpc01hcmdpbkJvdHRvbUNv
bGxhcHNlZFRocm91Z2gobGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Ly8gT25seSB0aGUgbGFzdCBpbmxmbG93IGNoaWxkIGNvbGxhcHNlcyB3aXRoIHBhcmVudC4KLSAg
ICBpZiAobGF5b3V0Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGF1dG8mIHBhcmVudCA9ICpsYXlvdXRCb3gucGFyZW50KCk7Ci0gICAgLy8gTWFy
Z2lucyBvZiBlbGVtZW50cyB0aGF0IGVzdGFibGlzaCBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250
ZXh0cyBkbyBub3QgY29sbGFwc2Ugd2l0aCB0aGVpciBpbi1mbG93IGNoaWxkcmVuCi0gICAgaWYg
KGVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dChwYXJlbnQpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBpZiAoaGFzQm9yZGVyQmVmb3JlKHBhcmVudCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmIChoYXNQYWRkaW5nQmVmb3JlKHBhcmVudCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmICghcGFyZW50LnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRv
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6aXNNYXJn
aW5Ub3BDb2xsYXBzZWRXaXRoUGFyZW50TWFyZ2luQm90dG9tKGNvbnN0IEJveCYpCitib29sIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luVG9w
Q29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJvdHRvbShjb25zdCBCb3gmKQogewogICAgIHJldHVy
biBmYWxzZTsKIH0KQEAgLTM1Miw3ICs0MTEsNyBAQCBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29sbGFwc2VkTWFyZ2luQm90dAog
CiAgICAgLy8gRklYTUU6IENoZWNrIGZvciBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW4uCiAgICAg
YXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5s
YXN0SW5GbG93Q2hpbGQoKTsKLSAgICBpZiAoIWlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBh
cmVudChsYXN0SW5GbG93Q2hpbGQpKQorICAgIGlmICghbWFyZ2luQm90dG9tQ29sbGFwc2VzV2l0
aFBhcmVudChsYXN0SW5GbG93Q2hpbGQpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIENv
bGxlY3QgY29sbGFwc2VkIG1hcmdpbiBib3R0b20gcmVjdXJzaXZlbHkuCg==
</data>
<flag name="review"
          id="373667"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>