Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using xml-attribute-access-expr with built-in subtypes of xml crashes at runtime #35191

Open
lasinicl opened this issue Feb 23, 2022 · 0 comments · May be fixed by #42598
Open

Using xml-attribute-access-expr with built-in subtypes of xml crashes at runtime #35191

lasinicl opened this issue Feb 23, 2022 · 0 comments · May be fixed by #42598
Assignees
Labels
Reason/EngineeringMistake The issue occurred due to a mistake made in the past. Team/CompilerFE All issues related to Language implementation and Compiler, this exclude run times. Type/Bug

Comments

@lasinicl
Copy link
Contributor

Description:
$title

Steps to reproduce:

public function main() {
    xml:Comment x5 = xml `<!--This is a comment-->`;
    io:println(x5.attr);

    // xml:ProcessingInstruction x5 = xml `<?xml-stylesheet type="text/xsl" href="style.xsl"?>`;
    // io:println(x5.attr);

    // xml:Text x5 = xml `This is a text`;
    // io:println(x5.attr);
}

Error log:

SEVERE {b7a.log.crash} - Bad type on operand stack
Exception Details:
  Location:
    main.main(Lio/ballerina/runtime/internal/scheduling/Strand;)Ljava/lang/Object; @405: invokevirtual
  Reason:
    Type 'io/ballerina/runtime/api/values/BString' (current frame, stack[1]) is not assignable to 'java/lang/String'
  Current Frame:
    bci: @405
    flags: { }
    locals: { 'io/ballerina/runtime/internal/scheduling/Strand', 'io/ballerina/runtime/internal/values/XmlValue', 'io/ballerina/runtime/api/values/BString', 'io/ballerina/runtime/internal/values/ArrayValue', long, long_2nd, null, null, null, 'io/ballerina/runtime/api/values/BString', long, long_2nd, long, long_2nd, 'io/ballerina/runtime/api/values/BString', long, long_2nd, long, long_2nd, 'io/ballerina/runtime/api/values/BString', long, long_2nd, long, long_2nd, 'io/ballerina/runtime/api/values/BString', long, long_2nd, long, long_2nd, 'java/lang/Object', 'io/ballerina/runtime/internal/values/ErrorValue', 'java/lang/Object', integer }
    stack: { 'io/ballerina/runtime/internal/values/XmlValue', 'io/ballerina/runtime/api/values/BString' }
  Bytecode:
    0000000: 2ab4 0010 9900 07b8 0016 bf01 4c01 4d01
    0000010: 4e09 3704 013a 0601 3a07 013a 0801 3a09
    0000020: 0937 0a09 370c 013a 0e09 370f 0937 1101
    0000030: 3a13 0937 1409 3716 013a 1809 3719 0937
    0000040: 1b01 3a1d 013a 1e01 3a1f 0336 202a b400
    0000050: 1a9d 02eb 1520 ab00 0000 036a 0000 000c
    0000060: 0000 0000 0000 006a 0000 0001 0000 007e
    0000070: 0000 0002 0000 00e3 0000 0003 0000 016b
    0000080: 0000 0004 0000 0191 0000 0005 0000 01db
    0000090: 0000 0006 0000 01e3 0000 0007 0000 01fa
    00000a0: 0000 0008 0000 0241 0000 0009 0000 027f
    00000b0: 0000 000a 0000 029b 0000 000b 0000 02db
    00000c0: 1100 0036 20b2 0020 3a18 1400 2137 1914
    00000d0: 0023 371b 1100 0136 202a b600 2899 001d
    00000e0: 2a03 b500 2b2a b400 2fc6 000e 2ab4 002f
    00000f0: 592a 01b5 002f bfa7 0029 bb00 3159 2ab2
    0000100: 0037 b700 3ab2 003d 1918 1619 161b b200
    0000110: 41b2 0044 b200 47b2 004a b200 4ab8 0050
    0000120: 2ab6 0053 9a02 9ca7 0003 b200 203a 0914
    0000130: 0054 370a 1400 5637 0c11 0002 3620 2ab6
    0000140: 0028 9900 1d2a 03b5 002b 2ab4 002f c600
    0000150: 0e2a b400 2f59 2a01 b500 2fbf a700 1abb
    0000160: 0031 592a b200 37b7 003a b200 3d19 0916
    0000170: 0a16 0cb8 005b 2ab6 0053 9a02 46a7 0003
    0000180: b200 5e4d 2c03 b800 644c 1400 6537 04b2
    0000190: 0069 4d2b 2cb6 006f 3a07 1907 3a06 bb00
    00001a0: 7159 b200 7716 0414 0023 88bd 0079 5914
    00001b0: 007a 88bb 0079 5919 06b7 007e 53b7 0081
    00001c0: 4e11 0003 3620 2a2d 04b8 0087 3a08 2ab6
    00001d0: 0053 9a01 eea7 0003 b200 203a 0e14 0088
    00001e0: 370f 1400 2337 1111 0004 3620 2ab6 0028
    00001f0: 9900 1d2a 03b5 002b 2ab4 002f c600 0e2a
    0000200: b400 2f59 2a01 b500 2fbf a700 1abb 0031
    0000210: 592a b200 37b7 003a b200 3d19 0e16 0f16
    0000220: 11b8 005b 2ab6 0053 9a01 98a7 0003 013a
    0000230: 1f11 0005 3620 a700 0b11 0006 3620 a700
    0000240: 03b2 0020 3a13 1400 8837 1414 0023 3716
    0000250: 1100 0736 202a b600 2899 001d 2a03 b500
    0000260: 2b2a b400 2fc6 000e 2ab4 002f 592a 01b5
    0000270: 002f bfa7 001a bb00 3159 2ab2 0037 b700
    0000280: 3ab2 003d 1913 1614 1616 b800 5b2a b600
    0000290: 539a 012f a700 0311 0008 3620 2ab6 0028
    00002a0: 9900 1d2a 03b5 002b 2ab4 002f c600 0e2a
    00002b0: b400 2f59 2a01 b500 2fbf a700 11bb 0031
    00002c0: 592a b200 37b7 003a b800 8d2a b600 539a
    00002d0: 00f1 a700 0311 0009 3620 191f b000 00bf
    00002e0: 3a1d a700 08b8 0095 3a1d 191d c000 8f3a
    00002f0: 1e11 000a 3620 2ab6 0028 9900 1d2a 03b5
    0000300: 002b 2ab4 002f c600 0e2a b400 2f59 2a01
    0000310: b500 2fbf a700 13bb 0031 592a b200 37b7
    0000320: 003a 191e b800 992a b600 539a 0095 a700
    0000330: 0311 000b 3620 191d c000 9bbf 2ab4 009f
    0000340: 2a59 b400 1a04 645a b500 1a32 c000 a159
    0000350: b400 a43a 1f59 b400 a84c 59b4 00ab 4d59
    0000360: b400 af4e 59b4 00b2 3a09 59b4 00b6 370a
    0000370: 59b4 00b9 370c 59b4 00bc 3a0e 59b4 00bf
    0000380: 370f 59b4 00c2 3711 59b4 00c5 3a13 59b4
    0000390: 00c8 3714 59b4 00cb 3716 59b4 00ce 3a18
    00003a0: 59b4 00d1 3719 59b4 00d4 371b 59b4 00d7
    00003b0: 3a1d 59b4 00db 3a1e b400 de36 20a7 fc97
    00003c0: bb00 a159 b700 df59 191f b500 a459 2bb5
    00003d0: 00a8 592c b500 ab59 2db5 00af 5919 09b5
    00003e0: 00b2 5916 0ab5 00b6 5916 0cb5 00b9 5919
    00003f0: 0eb5 00bc 5916 0fb5 00bf 5916 11b5 00c2
    0000400: 5919 13b5 00c5 5916 14b5 00c8 5916 16b5
    0000410: 00cb 5919 18b5 00ce 5916 19b5 00d1 5916
    0000420: 1bb5 00d4 5919 1db5 00d7 5919 1eb5 00db
    0000430: 5915 20b5 00de 3a26 2ab4 009f 2a59 b400
    0000440: 1a5a 0460 b500 1a19 2653 191f b0       
  Exception Handler Table:
    bci [192, 733] => handler: 736
    bci [192, 733] => handler: 741
  Stackmap Table:
    same_frame(@11)
    full_frame(@84,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Null,Null,Null,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    same_frame_extended(@192)
    same_frame(@212)
    same_frame(@247)
    same_frame(@250)
    same_frame(@288)
    same_frame(@298)
    same_frame(@313)
    same_frame(@348)
    same_frame(@351)
    same_frame(@374)
    same_frame(@384)
    full_frame(@449,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Null,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    full_frame(@472,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    same_frame(@487)
    same_frame(@522)
    same_frame(@525)
    same_frame(@548)
    same_frame(@558)
    same_frame(@561)
    full_frame(@569,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Null,Null,Null,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    full_frame(@577,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    same_frame(@592)
    same_frame(@627)
    same_frame(@630)
    same_frame(@653)
    same_frame(@663)
    same_frame(@698)
    same_frame(@701)
    same_frame(@715)
    same_frame(@725)
    full_frame(@733,{},{Object[#232]})
    full_frame(@736,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{Object[#143]})
    same_locals_1_stack_item_frame(@741,Object[#145])
    full_frame(@746,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#143],Object[#143],Object[#4],Integer},{})
    full_frame(@753,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    same_frame(@788)
    same_frame(@791)
    same_frame(@807)
    same_frame(@817)
    full_frame(@828,{Object[#12],Null,Null,Null,Long,Null,Null,Null,Null,Long,Long,Null,Long,Long,Null,Long,Long,Null,Long,Long,Null,Null,Null,Integer},{})
    full_frame(@960,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
 
java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    main.main(Lio/ballerina/runtime/internal/scheduling/Strand;)Ljava/lang/Object; @405: invokevirtual
  Reason:
    Type 'io/ballerina/runtime/api/values/BString' (current frame, stack[1]) is not assignable to 'java/lang/String'
  Current Frame:
    bci: @405
    flags: { }
    locals: { 'io/ballerina/runtime/internal/scheduling/Strand', 'io/ballerina/runtime/internal/values/XmlValue', 'io/ballerina/runtime/api/values/BString', 'io/ballerina/runtime/internal/values/ArrayValue', long, long_2nd, null, null, null, 'io/ballerina/runtime/api/values/BString', long, long_2nd, long, long_2nd, 'io/ballerina/runtime/api/values/BString', long, long_2nd, long, long_2nd, 'io/ballerina/runtime/api/values/BString', long, long_2nd, long, long_2nd, 'io/ballerina/runtime/api/values/BString', long, long_2nd, long, long_2nd, 'java/lang/Object', 'io/ballerina/runtime/internal/values/ErrorValue', 'java/lang/Object', integer }
    stack: { 'io/ballerina/runtime/internal/values/XmlValue', 'io/ballerina/runtime/api/values/BString' }
  Bytecode:
    0000000: 2ab4 0010 9900 07b8 0016 bf01 4c01 4d01
    0000010: 4e09 3704 013a 0601 3a07 013a 0801 3a09
    0000020: 0937 0a09 370c 013a 0e09 370f 0937 1101
    0000030: 3a13 0937 1409 3716 013a 1809 3719 0937
    0000040: 1b01 3a1d 013a 1e01 3a1f 0336 202a b400
    0000050: 1a9d 02eb 1520 ab00 0000 036a 0000 000c
    0000060: 0000 0000 0000 006a 0000 0001 0000 007e
    0000070: 0000 0002 0000 00e3 0000 0003 0000 016b
    0000080: 0000 0004 0000 0191 0000 0005 0000 01db
    0000090: 0000 0006 0000 01e3 0000 0007 0000 01fa
    00000a0: 0000 0008 0000 0241 0000 0009 0000 027f
    00000b0: 0000 000a 0000 029b 0000 000b 0000 02db
    00000c0: 1100 0036 20b2 0020 3a18 1400 2137 1914
    00000d0: 0023 371b 1100 0136 202a b600 2899 001d
    00000e0: 2a03 b500 2b2a b400 2fc6 000e 2ab4 002f
    00000f0: 592a 01b5 002f bfa7 0029 bb00 3159 2ab2
    0000100: 0037 b700 3ab2 003d 1918 1619 161b b200
    0000110: 41b2 0044 b200 47b2 004a b200 4ab8 0050
    0000120: 2ab6 0053 9a02 9ca7 0003 b200 203a 0914
    0000130: 0054 370a 1400 5637 0c11 0002 3620 2ab6
    0000140: 0028 9900 1d2a 03b5 002b 2ab4 002f c600
    0000150: 0e2a b400 2f59 2a01 b500 2fbf a700 1abb
    0000160: 0031 592a b200 37b7 003a b200 3d19 0916
    0000170: 0a16 0cb8 005b 2ab6 0053 9a02 46a7 0003
    0000180: b200 5e4d 2c03 b800 644c 1400 6537 04b2
    0000190: 0069 4d2b 2cb6 006f 3a07 1907 3a06 bb00
    00001a0: 7159 b200 7716 0414 0023 88bd 0079 5914
    00001b0: 007a 88bb 0079 5919 06b7 007e 53b7 0081
    00001c0: 4e11 0003 3620 2a2d 04b8 0087 3a08 2ab6
    00001d0: 0053 9a01 eea7 0003 b200 203a 0e14 0088
    00001e0: 370f 1400 2337 1111 0004 3620 2ab6 0028
    00001f0: 9900 1d2a 03b5 002b 2ab4 002f c600 0e2a
    0000200: b400 2f59 2a01 b500 2fbf a700 1abb 0031
    0000210: 592a b200 37b7 003a b200 3d19 0e16 0f16
    0000220: 11b8 005b 2ab6 0053 9a01 98a7 0003 013a
    0000230: 1f11 0005 3620 a700 0b11 0006 3620 a700
    0000240: 03b2 0020 3a13 1400 8837 1414 0023 3716
    0000250: 1100 0736 202a b600 2899 001d 2a03 b500
    0000260: 2b2a b400 2fc6 000e 2ab4 002f 592a 01b5
    0000270: 002f bfa7 001a bb00 3159 2ab2 0037 b700
    0000280: 3ab2 003d 1913 1614 1616 b800 5b2a b600
    0000290: 539a 012f a700 0311 0008 3620 2ab6 0028
    00002a0: 9900 1d2a 03b5 002b 2ab4 002f c600 0e2a
    00002b0: b400 2f59 2a01 b500 2fbf a700 11bb 0031
    00002c0: 592a b200 37b7 003a b800 8d2a b600 539a
    00002d0: 00f1 a700 0311 0009 3620 191f b000 00bf
    00002e0: 3a1d a700 08b8 0095 3a1d 191d c000 8f3a
    00002f0: 1e11 000a 3620 2ab6 0028 9900 1d2a 03b5
    0000300: 002b 2ab4 002f c600 0e2a b400 2f59 2a01
    0000310: b500 2fbf a700 13bb 0031 592a b200 37b7
    0000320: 003a 191e b800 992a b600 539a 0095 a700
    0000330: 0311 000b 3620 191d c000 9bbf 2ab4 009f
    0000340: 2a59 b400 1a04 645a b500 1a32 c000 a159
    0000350: b400 a43a 1f59 b400 a84c 59b4 00ab 4d59
    0000360: b400 af4e 59b4 00b2 3a09 59b4 00b6 370a
    0000370: 59b4 00b9 370c 59b4 00bc 3a0e 59b4 00bf
    0000380: 370f 59b4 00c2 3711 59b4 00c5 3a13 59b4
    0000390: 00c8 3714 59b4 00cb 3716 59b4 00ce 3a18
    00003a0: 59b4 00d1 3719 59b4 00d4 371b 59b4 00d7
    00003b0: 3a1d 59b4 00db 3a1e b400 de36 20a7 fc97
    00003c0: bb00 a159 b700 df59 191f b500 a459 2bb5
    00003d0: 00a8 592c b500 ab59 2db5 00af 5919 09b5
    00003e0: 00b2 5916 0ab5 00b6 5916 0cb5 00b9 5919
    00003f0: 0eb5 00bc 5916 0fb5 00bf 5916 11b5 00c2
    0000400: 5919 13b5 00c5 5916 14b5 00c8 5916 16b5
    0000410: 00cb 5919 18b5 00ce 5916 19b5 00d1 5916
    0000420: 1bb5 00d4 5919 1db5 00d7 5919 1eb5 00db
    0000430: 5915 20b5 00de 3a26 2ab4 009f 2a59 b400
    0000440: 1a5a 0460 b500 1a19 2653 191f b0       
  Exception Handler Table:
    bci [192, 733] => handler: 736
    bci [192, 733] => handler: 741
  Stackmap Table:
    same_frame(@11)
    full_frame(@84,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Null,Null,Null,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    same_frame_extended(@192)
    same_frame(@212)
    same_frame(@247)
    same_frame(@250)
    same_frame(@288)
    same_frame(@298)
    same_frame(@313)
    same_frame(@348)
    same_frame(@351)
    same_frame(@374)
    same_frame(@384)
    full_frame(@449,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Null,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    full_frame(@472,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    same_frame(@487)
    same_frame(@522)
    same_frame(@525)
    same_frame(@548)
    same_frame(@558)
    same_frame(@561)
    full_frame(@569,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Null,Null,Null,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    full_frame(@577,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    same_frame(@592)
    same_frame(@627)
    same_frame(@630)
    same_frame(@653)
    same_frame(@663)
    same_frame(@698)
    same_frame(@701)
    same_frame(@715)
    same_frame(@725)
    full_frame(@733,{},{Object[#232]})
    full_frame(@736,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{Object[#143]})
    same_locals_1_stack_item_frame(@741,Object[#145])
    full_frame(@746,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#143],Object[#143],Object[#4],Integer},{})
    full_frame(@753,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})
    same_frame(@788)
    same_frame(@791)
    same_frame(@807)
    same_frame(@817)
    full_frame(@828,{Object[#12],Null,Null,Null,Long,Null,Null,Null,Null,Long,Long,Null,Long,Long,Null,Long,Long,Null,Long,Long,Null,Null,Null,Integer},{})
    full_frame(@960,{Object[#12],Object[#107],Object[#228],Object[#230],Long,Object[#107],Object[#107],Object[#4],Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#228],Long,Long,Object[#4],Object[#143],Object[#4],Integer},{})

        at $_init.$lambda$main$(.)
        at io.ballerina.runtime.internal.scheduling.SchedulerItem.execute(Scheduler.java:611)
        at io.ballerina.runtime.internal.scheduling.Scheduler.run(Scheduler.java:317)
        at io.ballerina.runtime.internal.scheduling.Scheduler.runSafely(Scheduler.java:284)
        at java.base/java.lang.Thread.run(Thread.java:834)

Affected Versions:
Ballerina 2201.0.0 (Swan Lake)

@lasinicl lasinicl added Type/Bug Team/CompilerFE All issues related to Language implementation and Compiler, this exclude run times. labels Feb 23, 2022
@gimantha gimantha added this to Planned for the Sprint in Sprint 52 - Compiler Frontend, Integration and Parser via automation Mar 23, 2022
@gimantha gimantha moved this from Planned for the Sprint to BackLog in Sprint 52 - Compiler Frontend, Integration and Parser Mar 23, 2022
@KavinduZoysa KavinduZoysa added Reason/EngineeringMistake The issue occurred due to a mistake made in the past. Deferred Tag tasks not addressed >1 year, moved to closed state, until addressed in the future. labels Mar 8, 2023
@poorna2152 poorna2152 removed the Deferred Tag tasks not addressed >1 year, moved to closed state, until addressed in the future. label Apr 17, 2024
@poorna2152 poorna2152 self-assigned this Apr 17, 2024
@poorna2152 poorna2152 reopened this Apr 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Reason/EngineeringMistake The issue occurred due to a mistake made in the past. Team/CompilerFE All issues related to Language implementation and Compiler, this exclude run times. Type/Bug
Development

Successfully merging a pull request may close this issue.

3 participants