Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (2024)

key features

  • Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (1)

    360 Audio

  • Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (2)

    Sound experience

  • Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (3)

    Intelligent ANC

  • Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (4)

    Fit

Galaxy AI is here

Galaxy Buds2 Pro

Enjoy conversations in the language you love with Galaxy Buds

PRE-REGISTER

PRE-ORDER

Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (5)

360 Audio experience on Dolby Atmos

  • Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (6)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (7)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (8)

    Galaxy Buds2 Pro. Samsung and Dolby logos. Disclaimer: Reviewers share their thoughts on the Galaxy Buds2 Pro. No payment was made to create the review. In separate instances, a man and a woman walk down an urban sidewalk, both wearing Galaxy Buds2 Pro. Next, Selin Tyler. Senior Director. Head of product marketing, Dolby. Selin Tyler speaks directly to the camera. Next, in a sound studio, an experiment is being conducted on a subject. The subject is wearing an EEG electrode cap and is sitting in front of a screen that is showing a waterfall scene. The observe adjusts the sound board as readings are being taken. Next, a close up of Galaxy Buds2 Pro worn by a woman. Next, Galaxy Z Fold4, first seen folded and from the side, then it twirls to be seen from the front Cover Screen. Then, Galaxy Z Flip4 twirls and stops to be seen folded and from the Cover Screen. Then, hands opening the cradle of Galaxy Buds2 Pro to remove the earbuds. Next, cone-shaped sound funnels are directed at a mannequin head from the left and right. Then, five funnels of sound face the head from all around. Next, the funnels transform into an orb that surrounds the entire head. Disclaimer: 360 Audio is available only on Samsung Galaxy smartphones and tablets with Android One UI version 3.1 or later. Image simulated for illustrative purposes and the availability may vary by country, models and carrier. Next, a woman holds Galaxy Z Flip4 and unfolds it to view the Main Screen. Next, the man that was walking down the street continues walking with Galaxy Buds2 Pro in his ears. Next, Galaxy Buds2 Pro are seen spinning in mid-air with sound waves that move in sync with the background music. Next, the woman walks through a park with Galaxy Buds2 Pro in her ears. Disclaimer: Enhanced head tracking is supported on Android One UI version 4.1.1 or later. Image simulated for illustrative purposes and the availability may vary by country, models and carrier. Next, the man sits at a café table and retrieves Galaxy Z Fold4 from his pocket. Disclaimer: For optimal experience, listen with earbuds or headphones on a device with Dolby Atmos support. The availability may vary by country, models and carrier. A close up of the unfolded device in his hands. He is adjusting the sound quality and effects in the Settings menu of the device. He turns on Dolby Atmos and an illustrative sphere of sound surrounds him. Next, Selin Tyler speaks directly to the camera. Next, the woman in the park sits on a bench folds her Galaxy Z Flip4 and puts it in her pocket before walking away.

    Selin Tyler, Head of Product Marketing, Dolby

  • Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (9)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (10)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (11)

    Galaxy Buds2 Pro. Samsung and Dolby logos. Disclaimer: Reviewers share their thoughts on the Galaxy Buds2 Pro. No payment was made to create the review. Bainz. Multiplatinum mixer and sound engineer. Bainz is seen in his sound studio. He is composing music at the control panel and looking at a monitor to edit tracks. Disclaimer: 360 Audio is available only on Samsung Galaxy smartphones and tablets with Android One UI version 3.1 or later. The availability may vary by country, models and carrier. Bainz picks up the Galaxy Buds2 Pro cradle from his desk and puts the buds in his ears. He opens Galaxy Z Fold4. He turns his head left and right as he bobs his head to the music. He is seen using Galaxy Z Fold4 as he listens to music with Galaxy Buds2 Pro. Disclaimer: For optimal experience, listen with earbuds or headphones on a device with Dolby Atmos support. The availability may vary by country, models and carrier. Bainz is seen using his Galaxy Z Fold4 with his Galaxy Buds2 Pro. Then, he is posed for an interview where he directs his speech off camera. Next, he is adjusting the controls of the dashboard in his sound studio. He continues to listen to music through his Buds and his smartphone. Galaxy Buds2 Pro. Samsung dot com. Samsung logo.

    Bainz, Multiplatinum Mixer and Sound Engineer

"24-bit audio support is just the start of some sweeping improvements."

Android Authority

Robert Tiggs

08/2022

"The Galaxy Buds2 Pro look like the Samsung earbuds we’ve been waiting for"

Digital Trends

Joe Maring

08/2022

From Digital Trends. © 2022 Digital Trends Media Group. All rights reserved. Used under license.

"The audio is crisp and clear across all levels with the earbuds getting nice and loud at the top end."

Sammobile

Adnan Farooqui

08/2022

"As top-end earbuds go, Samsung’s Galaxy Buds2 Pro seem to tick every box."

Stuff

Tom Morgan

08/2022

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (12)

    • Ultimate Hi-Fi sound in your ear
    • Seamless connectivity
    • Comfortable fit
    • AI assistance right in your ear

    Galaxy AI is here

    Elevate your Galaxy AI experience with Galaxy Buds2 Pro. Now you have a translator right in your ear. Turn on the translation features on your Samsung Galaxy smartphone with Galaxy Buds2 Pro on. Make friends with no language barrier when talking face-to-face or over the phone.

    Face-to-face Over the phone

    Keep your Galaxy Buds2 Pro on, even when you need to use Interpreter on Samsung Galaxy smartphone. Hear the translation through the earbuds, while the other person listens via the paired smartphone's speaker. Enjoy smooth conversations without handing over your phone each time you speak.

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (13)

    • *Interpreter feature requires Samsung Account login. Certain languages may require language pack download. Service availability may vary by language. Accuracy of results is not guaranteed.
    • *Live Translate feature requires a network connection and Samsung Account login. Live Translate feature is only available on the pre-installed Samsung Phone app. Certain languages may require language pack download. Service availability may vary by language, country, region or carrier. Accuracy of results is not guaranteed.
    • *Galaxy AI features are supported on Galaxy S24 Ultra, S24 Plus and S24 as of Feb. 2024.
    • *Samsung Galaxy devices may require the latest software update to properly support Galaxy AI features.
    • *Images simulated for illustrative purposes. Actual UX/UI may be different.

    Galaxy Buds2 Pro's mics pick up your words clearly during Live Translation calls, thanks to a voice recognition algorithm. Then Live Translate on the paired Samsung Galaxy smartphone interprets to the language that's being used. Read the dialog without holding your phone up to your ears.

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (14)

    • *Interpreter feature requires Samsung Account login. Certain languages may require language pack download. Service availability may vary by language. Accuracy of results is not guaranteed.
    • *Live Translate feature requires a network connection and Samsung Account login. Live Translate feature is only available on the pre-installed Samsung Phone app. Certain languages may require language pack download. Service availability may vary by language, country, region or carrier. Accuracy of results is not guaranteed.
    • *Galaxy AI features are supported on Galaxy S24 Ultra, S24 Plus and S24 as of Feb. 2024.
    • *Samsung Galaxy devices may require the latest software update to properly support Galaxy AI features.
    • *Images simulated for illustrative purposes. Actual UX/UI may be different.

    SOUND EXPERIENCE

    The clear choice for quality sound

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (15)

    24-BIT Hi-Fi AUDIO

    Hear sound
    as it was intended,
    wirelessly

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (16)

    2-way speakers
    for wide frequency response
    Woofer
    delivers deeper bass
    Tweeter
    produces crisp treble

    24-bit
    Hi-Fi audio

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (17)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (18) 16-bit

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (19) 24-bit

    Every note sounds like the real thing because clear audio starts at the source with your favorite Samsung Galaxy device. The updated Samsung Seamless Codec encodes the full 24-bit audio to decode on the Galaxy Buds2 Pro, maintaining that same 24-bit high-quality sound. 1, 2

    INTELLIGENT ANC

    Puts your
    playlist in focus

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (20)

    Active Noise Canceling (ANC)
    is better than ever.

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (21)

    Active Noise Canceling (ANC)
    is better than ever.
    With 3 high SNR (Signal-to-Noise Ratio) microphones, the Galaxy Buds2 Pro tracks and eliminates more outside sound — even soft sounds like wind. 3

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (22)

    Switching to in-person conversations is easy with Voice Detect.

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (23)

    Simply start talking and Voice Detect will turn off ANC and activate Ambient sound — allowing you to clearly hear the conversation without removing your Galaxy Buds2 Pro. 3

    360 AUDIO

    Hear it like
    you're there

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (24)

    With intelligent 360 Audio supporting enhanced head tracking, the sound feels more realistic. Originally exclusive to Samsung Galaxy smartphones and tablets, it is now available on select Samsung TV models. 4 The 360 Audio with Direct Multi-channel (5.1ch / 7.1ch) for Galaxy smartphones and tablets 5 and Direct Multi-channel (5.1ch) for Samsung TVs, 6 ensures every movement stays in sync — creating an immersive experience. 360 Audio can even pinpoint the direction of the sound as you move your head, giving you the spatial experience.

    What is 360 Audio?

    360 Audio is a feature that pinpoints the direction of the sound as you move your head, putting your ears right in the scene.

    play

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (27) Cone-shaped sound funnels are directed at a mannequin head from the left and right. Then, five funnels of sound face the head from all around. Next, the funnels transform into an orb that surrounds the entire head.

    360 AUDIO

    Activating is easy with Samsung Galaxy

    To watch videos with spatially aware surround sound, open the Galaxy Wearable app, go to 360 audio and tap the toggle to activate.

    • *Availability may vary depending on country, region, carrier or device.
    • *Image simulated for illustrative purposes.

    Step 1

    Open the Galaxy Wearables app and activate "360 audio"

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (28)

    Step 2

    Turn on "Head tracking" for an immersive experience

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (29)

    IMMERSIVE SOUND EXPERIENCE

    Sound on for deeper dimension

    With Dolby Atmos, movies and music move around you in a way they can't with standard sound. An immersive soundscape free from simple left or right channels surrounds you in details with direction. Grab your earbuds to try out 360 Audio and hear what you've been missing.

    • *For optimal experience, listen with earbuds or headphones on a device with Dolby Atmos support.
    • *Tracks are intended for playback in Atmos-supported environments for Dolby Atmos technology demonstration purposes only.

    Music

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (30) Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (31)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (32)

    play

    A vocalist, guitarist and percussionist perform together as they record music in a studio.

    Nature

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (33) Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (34)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (35)

    play

    Close up shots of rain falling gently on various forest plants.

    Cinema

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (36) Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (37)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (38)

    play

    Lights dance around a shiny orb in an abstract representation of the sounds passing by.

    Grab your earbuds to try out 360 Audio sound

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (39)

    360 AUDIO RECORDING

    Capture the world as you hear it

    Now with just your smartphone and Galaxy Buds2 Pro, you can capture more precise sound. Turn on 360 Audio Recording so when your friends play your videos back, the hyper-realistic 360 sound will immerse them right into the action.

    • *Image simulated for illustrative purpose.
    • *360 Audio recording is available for Samsung Galaxy Z Fold4, Z Flip4 with Android One UI version 5.0 or later and must be paired with Galaxy Buds2 Pro.
    • *Enhanced head tracking and Direct Multi-channel is supported with Android One UI version 4.1.1 or later.

    360 AUDIO RECORDING

    Create videos with 360 Audio

    Before you hit record, go into your Samsung Camera app's advanced video options. Wear your Galaxy Buds2 Pro and tap the 360 audio recording toggle. Now you're ready to record 3D sound.

    • *360 Audio recording is available for Samsung Galaxy Z Fold4, Z Flip4 with Android One UI version 5.0 or later and must be paired with Galaxy Buds2 Pro.
    • *360 Audio and head tracking support may vary depending on the application and content.

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (42)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (43)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (44)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (45)

    Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (46)

    Hear from the creators

    See how social media influencers use 360 Audio Recording to pull their followers into the scene.

    • *For optimal experience, listen with earbuds or headphones on a device with Dolby Atmos support.
    • *360 Audio recording is available for Samsung Galaxy Z Fold4, Z Flip4 with Android One UI version 5.0 or later and must be paired with Galaxy Buds2 Pro.
    • *360 Audio and head tracking support may vary depending on the application and content.
    • Vlog & Social

      Play
      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (47)

      A young woman waits at a train platform. She takes out a Galaxy Buds2 Pro case and places the earbuds in her ears. In the camera app, 360 Audio Recording is activated. She checks her makeup in the selfie camera of her Galaxy Z Flip4. As the train pulls into the station, the 360 Audio Recording toggle is activated. She boards the train. Next, the 360 Audio Recording toggle is activated again as she waits at a crosswalk during the day. She is holding up her Galaxy Buds2 Pro cradle on her right hand. Suddenly, it changes from day to nighttime. She closes the cradle and crosses the crosswalk with her earbuds in her ears. Next, she is seen walking down a pedestrian tunnel, recording with her Galaxy Z Flip4. Next, she poses for the camera from a seated position. Next, she arrives home, puts her earbuds in the cradle, and jumps into bed to sleep. Samsung logo.

    • Music & Dance

      Play
      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (48)

      A young man touches his earbud in his right ear. Next, a group of young men including him are all seen together in a dance studio doing hip hop dance. Various angles and shots of them show them interacting with the camera in a dynamic way. Then the 360 Audio Recording toggle is activated. They film themselves dancing with the selfie mode on, using 360 Audio Recording. At the same time the view finder screen they're seeing is shown above the phone the man is holding up. The view finder disappears and they dance for the camera. Then they make circle and keep dancing. The 360 Audio Recording toggle is activated. Suddenly, they jump together and are transported back outside to a sidewalk. The 360 Audio Recording toggle is activated. They continue dancing down the street. Samsung logo.

    • Sports & Activities

      Play
      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (49)

      A young woman is sitting outdoors. She takes her Galaxy Buds2 Pro earbuds from the cradle and places them in her ears. Next, she is walking while carrying a skateboard in one arm and using her Galaxy Z Flip4 in the other. Using the camera app in selfie mode, she turns on 360 audio recording. At the same time, the 360 audio recording toggle is activated. She records herself posing for the camera, and then skateboarding in the park. There are various shots of her spinning on the skateboard and touring the park with the earbuds in her ears. The toggle is activated twice. She slowly stops and her back is seen to the camera. Samsung logo.

      Grab your earbuds to try out 360 Audio sound

      SEAMLESS CONNECTIVITY

      Your life
      in sync

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (50)

      AURACAST

      Share your
      sound
      with
      those around

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (51)

      With Auracast broadcast technology, share your audio stream with an unlimited number of devices. Effortlessly transform your Samsung TV, Samsung Galaxy smartphone or tablet into a radio source to start engaging with others.


      Joining a broadcast is as easy as connecting to a wifi network. Simply select "Find a broadcast" on your Samsung Galaxy smartphone or tablet, tap to connect and listen in with your Galaxy Buds2 Pro. 7, 8

      EASY PAIRING

      Pop open
      and tap in

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (52)

      Galaxy Buds2 Pro will automatically pop up on your Samsung Galaxy devices and are ready to connect with a tap. As simple as that.

      *Requires Samsung Galaxy devices with Android 10 and above or SmartThings application over 1.7.85 version

      Auto Switch on Samsung Galaxy Buds2 Pro intelligently detects mobile activity and seamlessly shifts its connection to your Samsung Galaxy phone, tablet, watch and Galaxy Book.

      Switching to answer the phone works even when you're connected to a Samsung TV. Once the Galaxy Buds2 Pro are connected to the Samsung TV via Bluetooth, there is no need to take the earbuds out to answer the phone. Incoming calls can be answered simply by tapping the Galaxy Buds2 Pro twice. 9

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (53)

      SMARTTHINGS FIND

      Keep track
      of your buds

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (54)

      Worried about losing your Galaxy Buds2 Pro? Don't. With SmartThings Find, you can trace your coveted Galaxy Buds2 Pro with the location detection feature. You can even do it with or without the case. 10, 11, 12

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (55)

      Walk away from your Galaxy Buds2 Pro and the integrated alarm is ready to let you know — your phone will send you a notification so that you don't accidentally leave them behind. 13

      ERGONOMIC DESIGN

      Style in tune with you

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (56)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (57)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (58)

      FIT

      In your
      comfort
      zone

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (59)

      Galaxy Buds Pro Galaxy Buds2 Pro

      15 %

      size reduction

      5.5 g

      We redesigned the earbuds to be 15% smaller than the Galaxy Buds Pro to fit snugly in your ear.

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (60)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (61)

      Enjoy a comfortable fit, thanks to the ergonomically designed earbuds. Enhanced wind flow technology helps reduce ear canal pressure and minimizes noise — for comfort and clarity. 14

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (62)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (63)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (64)

      How to wear Galaxy Buds2 Pro. A closed Galaxy Buds2 Pro case in Bora Purple appears onscreen. It opens and the ear buds float out of the case and upwards. Finding your fit is easy. The buds twirl around, and one ear bud vanishes behind the other. The inner side is seen, indicating the letter R printed in a circle on the body of the ear bud. Check R, right. Then, the buds spin around again to reveal the second ear bud. It shows the letter L printed on the body of the ear bud. And L, left. The ear bud spins again to show the outer side of the body. Make sure the wind shield is facing up. A line is drawn to indicate the location of the Wind Shield at the upper edge of the ear bud. The ear bud zooms toward the screen to transition to a close up of an ear and the ear bud being comfortably put into place. All set! Ready to get immersed? A seamless transition shows another person with Bora Purple Galaxy Buds2 Pro in their ear. The ultimate Hi-Fi sound is now wireless. Samsung dot com. Samsung logo.

      How to wear the
      Galaxy Buds2 Pro

      COLORS

      Colors that
      set the tone

      Both the earbuds and cradle are available in a range of premium colors. Each bud is polished to a high gloss with a matte interior that feels soft against your skin. 15

      Galaxy Buds2 Pro case and earbuds in Graphite.

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (65)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (66)

      Galaxy Buds2 Pro case and earbuds in White.

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (67)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (68)

      Galaxy Buds2 Pro case and earbuds in Bora Purple.

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (69)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (70)

      Both the earbuds and cradle are available in a range of premium colors. Each bud is polished to a high gloss with a matte interior that feels soft against your skin. 12

      GALAXY EXCELLENCE

      Plays all
      the hits

      GALAXY EXCELLENCE

      Plays all the hits

      Two Bora Purple Galaxy Buds2 Pro earbuds are floating in the middle of the screen.

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (71)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (72)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (73)

      • Battery

        Get up to 5 hrs of continuous playtime with ANC on and up to 18 hrs in the cradle. 16, 17, 18
      • Bluetooth 5.3

        Bluetooth 5.3 is available and LE Audio will be eventually supported. 19
      • IPX7 Water Resistance

        Play on. Rain or shine. Galaxy Buds2 Pro is water resistant. 20, 21

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (74)

      Battery

      Get up to 5 hrs of continuous playtime with ANC on and up to 18 hrs in the cradle. 16, 17, 18

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (75)

      Bluetooth 5.3

      BT 5.3 is available and LE Audio will be eventually supported. 19

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (76)

      IPX7 Water Resistance

      Play on. Rain or shine. Galaxy Buds2 Pro is water resistant. 20, 21

      COMPARE

      Your next
      Buds are
      calling

      • Galaxy Buds2 Pro

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (77)

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (78)

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (79)

        Sound quality

        24-bit Hi-Fi
        2-way speaker

        ANC

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (80)

        + 3 High SNR Microphones

        Ambient sound

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (81)

        Voice Detect

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (82)

        360 Audio 5

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (83)

        + Support direct Multi-channel

        Water Resistance 20, 21

        IPX7

        Bluetooth ver.

        Ver5.3

        SmartThings Find 8

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (84)

        + With/without case

        Auto switch 6

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (85)

        Bixby Voice Wake-up 19

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (86)

        Play time 13

        Up to 5hours (ANC on)
        Up to 8hours (ANC off)

      • Galaxy Buds2

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (87)

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (88)

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (89)

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (90)

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (91)

        Sound quality

        2-way speaker

        ANC

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (92)

        Ambient sound

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (93)

        Voice Detect

        no -

        360 Audio

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (94)

        Water Resistance 21, 23

        IPX2

        Bluetooth ver.

        Ver5.2

        SmartThings Find < 8

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (95)

        Auto switch 6

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (96)

        Bixby Voice Wake-up 19

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (97)

        Play time

        Up to 5hours (ANC on)
        Up to 7.5hours (ANC off)

      • Galaxy Buds Live

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (98)

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (99)

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (100)

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (101)

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (102)

        Sound quality

        1-way speaker

        ANC

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (103)

        Ambient sound

        no -

        Voice Detect

        no -

        360 Audio

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (104)

        Water Resistance 21, 23

        IPX2

        Bluetooth ver.

        Ver5.0

        SmartThings Find 8

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (105)

        Auto switch 6

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (106)

        Bixby Voice Wake-up 19

        yes

        Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (107)

        Play time

        Up to 6hours (ANC on)
        Up to 8hours (ANC off)

      Galaxy Buds2 Pro

      Galaxy Buds2

      Galaxy Buds Live

      Sound quality

      24-bit Hi-Fi
      2-way speaker

      Sound quality

      2-way speaker

      Sound quality

      1-way speaker

      ANC

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (108)

      + 3 High SNR Microphones

      ANC

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (109)

      ANC

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (110)

      Ambient sound

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (111)

      Ambient sound

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (112)

      Ambient sound

      no -

      Voice Detect

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (113)

      Voice Detect

      no -

      Voice Detect

      no -

      360 audio 5

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (114)

      + Support direct Multi-channel

      360 audio

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (115)

      360 audio

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (116)

      Water Resistance 20, 21

      IPX7

      Water Resistance 21, 23

      IPX2

      Water Resistance 21, 23

      IPX2

      Bluetooth ver.

      Ver5.3

      Bluetooth ver.

      Ver5.2

      Bluetooth ver.

      Ver5.0

      SmartThings Find 11

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (117)

      + With/without case

      SmartThings Find 11

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (118)

      SmartThings Find 11

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (119)

      Auto switch 9

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (120)

      Auto switch 9

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (121)

      Auto switch 9

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (122)

      Bixby Voice Wake-up 22

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (123)

      Bixby Voice Wake-up 22

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (124)

      Bixby Voice Wake-up 22

      yes

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (125)

      Play time 16

      Up to 5hours (ANC on)
      Up to 8hours (ANC off)

      Play time

      Up to 5hours (ANC on)
      Up to 7.5hours (ANC off)

      Play time

      Up to 6hours (ANC on)
      Up to 8hours (ANC off)

      • *Availability of colors, sizes and models may vary by country or region.
      • **Audio play time tested by pairing a pre-production Samsung Galaxy Buds2 Pro/Galaxy Buds2/Galaxy Buds Live to a recently released Galaxy Smartphones with ANC On / Off settings. Actual battery life may vary and depend on usage conditions, settings, number of times charged, Bluetooth signal strength and other factors.

      ECOSYSTEM

      The connected power of Samsung Galaxy

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (126)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (127)

      Galaxy Z Flip4

      LEARN MORE

      BUY NOW

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (128)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (129)

      Galaxy Watch5 Pro

      LEARN MORE

      BUY NOW

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (130)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (131)

      Galaxy Watch5

      LEARN MORE

      BUY NOW

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (132)

      Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (133)

      Galaxy Z Fold4

      LEARN MORE

      BUY NOW

      *Galaxy Z Flip4, Galaxy Z Fold4, Galaxy Watch5 and Galaxy Watch5 Pro sold separately.

      C C

      1. Samsung Galaxy device with One UI version 4.0 or higher is required.
      2. 24-bit audio support may vary depending on the application.
      3. Requires Voice Detect function to be turned on under settings on the Galaxy Wearable application.
      4. 360 Audio is only available on Samsung Galaxy smartphones and Galaxy Tab devices with Android One UI version 3.1 or later, and selected Samsung TV models. Supported Samsung TV models include: Neo QLED 8K (QN900D, QN800D), Neo QLED 4K (QN95D, QN90D, QN87D, QN85D) OLED (S95D, S90D, S85D), QLED (Q80D, Q70D). Support for 360 Audio and head tracking may vary depending on the application and content.
      5. Direct Multi-channel is available on Samsung Galaxy smartphones and Galaxy Tab devices with Android One UI version 4.1.1 or later.
      6. DDirect Multi-channel is available on selected Samsung TV models. Supported Samsung TV models include: Neo QLED 8K (QN900D, QN800D).
      7. Devices with Auracast Source ability are available only on Samsung Galaxy smartphones, tablets with Android One UI version 6.1 or later, and select TV models. Supported Galaxy smartphone and tablet models include: S24+, S24, S24 Ultra, Galaxy Z Flip5, Galaxy Z Fold5, S23+, S23 (except FE edition), S23 Ultra, Tab S9+, Tab S9+ 5G, Tab S9, Tab S9 Ultra, Tab S9 Ultra 5G, Tab S9 FE+, Tab S9 FE+ 5G, Tab S9 FE, Tab S9 FE 5G and Tab S9 5G. Supported TV models include: 2024 NeoQLED 8K QND800, QND900, 2023 Neo QLED 8K and 2023 MICRO LED models.
        Devices with Auracast Assistant ability are available only on Samsung Galaxy smartphones, tablets with Android One UI version 5.1.1 or later. Supported Galaxy smartphone and tablet models include: S24+, S24, S24 Ultra, S23+, S23, S23 Ultra, Z Fold5, Z Flip5, Z Fold4, Z Flip4, A54 5G, A55 5G, M54 5G, Tab S9+, Tab S9+ 5G, Tab S9, Tab S9 Ultra, Tab S9 Ultra 5G, Tab S9 FE+, Tab S9 FE+ 5G, Tab S9 FE, Tab S9 FE 5G, Tab S9 5G and Tab Active 5G.
      8. Connecting 2 or more devices to Auracast is limited to Samsung Galaxy devices.
      9. Auto Switch feature is only available on Samsung Galaxy Book series with One UI 6.0 or later, Samsung Galaxy smartphones and Galaxy Tab devices with One UI 4.1.1 or later and Galaxy Watch4 series or later. Samsung Galaxy devices must be logged in to Samsung Account to enable the Auto Switch feature. Auto Switch feature for Samsung TV is only available on Samsung TVs launched Feb ’22 or later after getting a firmware update from Jul ’22. Auto Switch with TV is only available for making and receiving phone calls.
      10. When the battery runs out, it tracks based on the last connected location.
      11. The SmartThings Find application is only available on Samsung Galaxy devices with Android 8 or later.
      12. SmartThing Find is not supported in China.
      13. To receive notification from SmartThings Find, you must turn on the notification under settings.
      14. 15% size reduction is compared to the Galaxy Buds Pro based on size volume. Ear tips size can be adjusted to increase comfort.
      15. Available colors may vary by country, region, or carrier.
      16. Earbuds provide up to 5hrs of play time with ANC on, while the case provides up to 18 hours of battery life when the case and earbuds are charged to 100%. Based on internal testing. Audio playback time tested by pairing a pre-production Galaxy Buds2 Pro to a recently released Galaxy smartphone with default settings including ANC on. Actual battery life may vary and depend on usage conditions, settings, number of times charged, Bluetooth signal strength, and other factors.
        *'Default setting' refers to the original setting for the Galaxy Buds2 Pro when it was first released, simply with the power turned on.
        *'Play time' refers to when the Galaxy Buds2 Pro are connected to the phone, streaming music.
      17. Play time may vary based on settings.
      18. The typical capacity has been tested under third party laboratory conditions. The typical capacity is the estimated average capacity considering the deviation in battery capacity among the battery samples tested under the IEC 61960-3 standard. The rated capacity is 58mAh (earbuds), 500mAh (charging case). Actual battery life may vary depending on the network environment, usage patterns, and other factors.
      19. Some devices, especially those that are not tested or approved by the Bluetooth SIG, may be incompatible with the earbuds. LE audio will be available later this year.
      20. IPX7 is based on laboratory test conditions for submersion in up to 1 meter of fresh water for up to 30 minutes.
      21. Not advised for beach or pool use. Charging case is not water resistant. If the earbuds are damaged, they are not guaranteed to be water resistant. If the earbuds or your hands are wet, they must be dried thoroughly prior to handling or placing into the charging case. If placed into the charging case without drying, the earbuds may be damaged.
      22. Bixby service availability may vary depending on country; Bixby recognizes selected languages and certain accents/dialects; Samsung Account log-in and data network connection (Wi-Fi or data network) required.
      23. IPX2 is based on laboratory test conditions for water is sprayed at 15° angle or less.

      "); return e.attr("data-swiper-slide-index") || e.attr("data-swiper-slide-index", t), i.cache && (this.virtual.cache[t] = e), e }, appendSlide: function (e) { if ("object" == typeof e && "length" in e) for (var t = 0; t < e.length; t += 1)e[t] && this.virtual.slides.push(e[t]); else this.virtual.slides.push(e); this.virtual.update(!0) }, prependSlide: function (e) { var s, n, t = this.activeIndex, i = t + 1, a = 1; if (Array.isArray(e)) { for (var o = 0; o < e.length; o += 1)e[o] && this.virtual.slides.unshift(e[o]); i = t + e.length, a = e.length } else this.virtual.slides.unshift(e); this.params.virtual.cache && (s = this.virtual.cache, n = {}, Object.keys(s).forEach(function (e) { var t = s[e], i = t.attr("data-swiper-slide-index"); i && t.attr("data-swiper-slide-index", parseInt(i, 10) + 1), n[parseInt(e, 10) + a] = t }), this.virtual.cache = n), this.virtual.update(!0), this.slideTo(i, 0) }, removeSlide: function (e) { if (null != e) { var t = this.activeIndex; if (Array.isArray(e)) for (var i = e.length - 1; 0 <= i; --i)this.virtual.slides.splice(e[i], 1), this.params.virtual.cache && delete this.virtual.cache[e[i]], e[i] < t && --t, t = Math.max(t, 0); else this.virtual.slides.splice(e, 1), this.params.virtual.cache && delete this.virtual.cache[e], e < t && --t, t = Math.max(t, 0); this.virtual.update(!0), this.slideTo(t, 0) } }, removeAllSlides: function () { this.virtual.slides = [], this.params.virtual.cache && (this.virtual.cache = {}), this.virtual.update(!0), this.slideTo(0, 0) } }, b = { name: "virtual", params: { virtual: { enabled: !1, slides: [], cache: !0, renderSlide: null, renderExternal: null, addSlidesBefore: 0, addSlidesAfter: 0 } }, create: function () { j.extend(this, { virtual: { update: w.update.bind(this), appendSlide: w.appendSlide.bind(this), prependSlide: w.prependSlide.bind(this), removeSlide: w.removeSlide.bind(this), removeAllSlides: w.removeAllSlides.bind(this), renderSlide: w.renderSlide.bind(this), slides: this.params.virtual.slides, cache: {} } }) }, on: { beforeInit: function () { var e; this.params.virtual.enabled && (this.classNames.push(this.params.containerModifierClass + "virtual"), j.extend(this.params, e = { watchSlidesProgress: !0 }), j.extend(this.originalParams, e), this.params.initialSlide || this.virtual.update()) }, setTranslate: function () { this.params.virtual.enabled && this.virtual.update() } } }, K = { handle: function (e) { var t = this.rtlTranslate, i = (e = e.originalEvent ? e.originalEvent : e).keyCode || e.charCode; if (!this.allowSlideNext && (this.isHorizontal() && 39 === i || this.isVertical() && 40 === i || 34 === i)) return !1; if (!this.allowSlidePrev && (this.isHorizontal() && 37 === i || this.isVertical() && 38 === i || 33 === i)) return !1; if (!(e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || u.activeElement && u.activeElement.nodeName && ("input" === u.activeElement.nodeName.toLowerCase() || "textarea" === u.activeElement.nodeName.toLowerCase()))) { if (this.params.keyboard.onlyInViewport && (33 === i || 34 === i || 37 === i || 39 === i || 38 === i || 40 === i)) { var s = !1; if (0 < this.$el.parents("." + this.params.slideClass).length && 0 === this.$el.parents("." + this.params.slideActiveClass).length) return; var n = X.innerWidth, a = X.innerHeight, o = this.$el.offset(); t && (o.left -= this.$el[0].scrollLeft); for (var r = [[o.left, o.top], [o.left + this.width, o.top], [o.left, o.top + this.height], [o.left + this.width, o.top + this.height]], l = 0; l < r.length; l += 1) { var d = r[l]; 0 <= d[0] && d[0] <= n && 0 <= d[1] && d[1] <= a && (s = !0) } if (!s) return } this.isHorizontal() ? (33 !== i && 34 !== i && 37 !== i && 39 !== i || (e.preventDefault ? e.preventDefault() : e.returnValue = !1), (34 !== i && 39 !== i || t) && (33 !== i && 37 !== i || !t) || this.slideNext(), (33 !== i && 37 !== i || t) && (34 !== i && 39 !== i || !t) || this.slidePrev()) : (33 !== i && 34 !== i && 38 !== i && 40 !== i || (e.preventDefault ? e.preventDefault() : e.returnValue = !1), 34 !== i && 40 !== i || this.slideNext(), 33 !== i && 38 !== i || this.slidePrev()), this.emit("keyPress", i) } }, enable: function () { this.keyboard.enabled || (S(u).on("keydown", this.keyboard.handle), this.keyboard.enabled = !0) }, disable: function () { this.keyboard.enabled && (S(u).off("keydown", this.keyboard.handle), this.keyboard.enabled = !1) } }, E = { name: "keyboard", params: { keyboard: { enabled: !1, onlyInViewport: !0 } }, create: function () { j.extend(this, { keyboard: { enabled: !1, enable: K.enable.bind(this), disable: K.disable.bind(this), handle: K.handle.bind(this) } }) }, on: { init: function () { this.params.keyboard.enabled && this.keyboard.enable() }, destroy: function () { this.keyboard.enabled && this.keyboard.disable() } } }; function x() { for (var i, e = [], t = arguments.length; t--;)e[t] = arguments[t]; i = (i = 1 === e.length && e[0].constructor && e[0].constructor === Object ? e[0] : (a = e[0], e[1])) || {}, i = j.extend({}, i), a && !i.el && (i.el = a), c.call(this, i), Object.keys(G).forEach(function (t) { Object.keys(G[t]).forEach(function (e) { x.prototype[e] || (x.prototype[e] = G[t][e]) }) }); var s, n, a, o = this, r = (void 0 === o.modules && (o.modules = {}), Object.keys(o.modules).forEach(function (e) { var t, e = o.modules[e]; e.params && (t = Object.keys(e.params)[0], "object" == typeof (e = e.params[t]) && null !== e && t in i && "enabled" in e && (!0 === i[t] && (i[t] = { enabled: !0 }), "object" != typeof i[t] || "enabled" in i[t] || (i[t].enabled = !0), i[t] || (i[t] = { enabled: !1 }))) }), j.extend({}, W)), l = (o.useModulesParams(r), o.params = j.extend({}, r, Y, i), o.originalParams = j.extend({}, o.params), o.passedParams = j.extend({}, i), (o.$ = S)(o.params.el)); if (a = l[0]) return 1 < l.length ? (s = [], l.each(function (e, t) { t = j.extend({}, i, { el: t }); s.push(new x(t)) }), s) : (a.swiper = o, l.data("swiper", o), a && a.shadowRoot && a.shadowRoot.querySelector ? (n = S(a.shadowRoot.querySelector("." + o.params.wrapperClass))).children = function (e) { return l.children(e) } : n = l.children("." + o.params.wrapperClass), j.extend(o, { $el: l, el: a, $wrapperEl: n, wrapperEl: n[0], classNames: [], slides: S(), slidesGrid: [], snapGrid: [], slidesSizesGrid: [], isHorizontal: function () { return "horizontal" === o.params.direction }, isVertical: function () { return "vertical" === o.params.direction }, rtl: "rtl" === a.dir.toLowerCase() || "rtl" === l.css("direction"), rtlTranslate: "horizontal" === o.params.direction && ("rtl" === a.dir.toLowerCase() || "rtl" === l.css("direction")), wrongRTL: "-webkit-box" === n.css("display"), activeIndex: 0, realIndex: 0, isBeginning: !0, isEnd: !1, translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: !1, allowSlideNext: o.params.allowSlideNext, allowSlidePrev: o.params.allowSlidePrev, touchEvents: (r = y.pointerEvents ? ["pointerdown", "pointermove", "pointerup"] : ["mousedown", "mousemove", "mouseup"], o.touchEventsTouch = { start: (a = ["touchstart", "touchmove", "touchend", "touchcancel"])[0], move: a[1], end: a[2], cancel: a[3] }, o.touchEventsDesktop = { start: r[0], move: r[1], end: r[2] }, y.touch || !o.params.simulateTouch ? o.touchEventsTouch : o.touchEventsDesktop), touchEventsData: { isTouched: void 0, isMoved: void 0, allowTouchCallbacks: void 0, touchStartTime: void 0, isScrolling: void 0, currentTranslate: void 0, startTranslate: void 0, allowThresholdMove: void 0, formElements: "input, select, option, textarea, button, video", lastClickTime: j.now(), clickTimeout: void 0, velocities: [], allowMomentumBounce: void 0, isTouchEvent: void 0, startMoving: void 0 }, allowClick: !0, allowTouchMove: o.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0 }, imagesToLoad: [], imagesLoaded: 0 }), o.useModules(), o.params.init && o.init(), o) } var C = { lastScrollTime: j.now(), lastEventBeforeSnap: void 0, recentWheelEvents: [], event: function () { return -1 < X.navigator.userAgent.indexOf("firefox") ? "DOMMouseScroll" : ((t = "onwheel" in u) || ((e = u.createElement("div")).setAttribute("onwheel", "return;"), t = "function" == typeof e.onwheel), (t = !t && u.implementation && u.implementation.hasFeature && !0 !== u.implementation.hasFeature("", "") ? u.implementation.hasFeature("Events.wheel", "3.0") : t) ? "wheel" : "mousewheel"); var e, t }, normalize: function (e) { var t = 0, i = 0, s = 0, n = 0; return "detail" in e && (i = e.detail), "wheelDelta" in e && (i = -e.wheelDelta / 120), "wheelDeltaY" in e && (i = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (t = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && (t = i, i = 0), s = 10 * t, n = 10 * i, "deltaY" in e && (n = e.deltaY), "deltaX" in e && (s = e.deltaX), e.shiftKey && !s && (s = n, n = 0), (s || n) && e.deltaMode && (1 === e.deltaMode ? (s *= 40, n *= 40) : (s *= 800, n *= 800)), { spinX: t = s && !t ? s < 1 ? -1 : 1 : t, spinY: i = n && !i ? n < 1 ? -1 : 1 : i, pixelX: s, pixelY: n } }, handleMouseEnter: function () { this.mouseEntered = !0 }, handleMouseLeave: function () { this.mouseEntered = !1 }, handle: function (e) { var t = e, i = this, s = i.params.mousewheel; if (i.params.cssMode && t.preventDefault(), !i.mouseEntered && !s.releaseOnEdges) return !0; t.originalEvent && (t = t.originalEvent); var n = 0, a = i.rtlTranslate ? -1 : 1, o = C.normalize(t); if (s.forceToAxis) if (i.isHorizontal()) { if (!(Math.abs(o.pixelX) > Math.abs(o.pixelY))) return !0; n = o.pixelX * a } else { if (!(Math.abs(o.pixelY) > Math.abs(o.pixelX))) return !0; n = o.pixelY } else n = Math.abs(o.pixelX) > Math.abs(o.pixelY) ? -o.pixelX * a : -o.pixelY; if (0 === n) return !0; if (s.invert && (n = -n), i.params.freeMode) { var r = { time: j.now(), delta: Math.abs(n), direction: Math.sign(n) }, a = i.mousewheel.lastEventBeforeSnap, o = a && r.time < a.time + 500 && r.delta <= a.delta && r.direction === a.direction; if (!o) { i.mousewheel.lastEventBeforeSnap = void 0, i.params.loop && i.loopFix(); var l, d, a = i.getTranslate() + n * s.sensitivity, s = i.isBeginning, c = i.isEnd; if ((a = a >= i.minTranslate() ? i.minTranslate() : a) <= i.maxTranslate() && (a = i.maxTranslate()), i.setTransition(0), i.setTranslate(a), i.updateProgress(), i.updateActiveIndex(), i.updateSlidesClasses(), (!s && i.isBeginning || !c && i.isEnd) && i.updateSlidesClasses(), i.params.freeModeSticky && (clearTimeout(i.mousewheel.timeout), i.mousewheel.timeout = void 0, 15 <= (l = i.mousewheel.recentWheelEvents).length && l.shift(), s = l.length ? l[l.length - 1] : void 0, c = l[0], l.push(r), s && (r.delta > s.delta || r.direction !== s.direction) ? l.splice(0) : 15 <= l.length && r.time - c.time < 500 && 1 <= c.delta - r.delta && r.delta <= 6 && (d = 0 < n ? .8 : .2, i.mousewheel.lastEventBeforeSnap = r, l.splice(0), i.mousewheel.timeout = j.nextTick(function () { i.slideToClosest(i.params.speed, !0, void 0, d) }, 0)), i.mousewheel.timeout || (i.mousewheel.timeout = j.nextTick(function () { i.mousewheel.lastEventBeforeSnap = r, l.splice(0), i.slideToClosest(i.params.speed, !0, void 0, .5) }, 500))), o || i.emit("scroll", t), i.params.autoplay && i.params.autoplayDisableOnInteraction && i.autoplay.stop(), a === i.minTranslate() || a === i.maxTranslate()) return !0 } } else { s = { time: j.now(), delta: Math.abs(n), direction: Math.sign(n), raw: e }, c = i.mousewheel.recentWheelEvents, o = (2 <= c.length && c.shift(), c.length ? c[c.length - 1] : void 0); if (c.push(s), (!o || s.direction !== o.direction || s.delta > o.delta) && i.mousewheel.animateSlider(s), i.mousewheel.releaseScroll(s)) return !0 } return t.preventDefault ? t.preventDefault() : t.returnValue = !1, !1 }, animateSlider: function (e) { return 6 <= e.delta && j.now() - this.mousewheel.lastScrollTime < 60 || (e.direction < 0 ? this.isEnd && !this.params.loop || this.animating || (this.slideNext(), this.emit("scroll", e.raw)) : this.isBeginning && !this.params.loop || this.animating || (this.slidePrev(), this.emit("scroll", e.raw)), this.mousewheel.lastScrollTime = (new X.Date).getTime(), !1) }, releaseScroll: function (e) { var t = this.params.mousewheel; if (e.direction < 0) { if (this.isEnd && !this.params.loop && t.releaseOnEdges) return !0 } else if (this.isBeginning && !this.params.loop && t.releaseOnEdges) return !0; return !1 }, enable: function () { var e = C.event(); if (this.params.cssMode) return this.wrapperEl.removeEventListener(e, this.mousewheel.handle), !0; if (!e) return !1; if (this.mousewheel.enabled) return !1; var t = this.$el; return (t = "container" !== this.params.mousewheel.eventsTarged ? S(this.params.mousewheel.eventsTarged) : t).on("mouseenter", this.mousewheel.handleMouseEnter), t.on("mouseleave", this.mousewheel.handleMouseLeave), t.on(e, this.mousewheel.handle), this.mousewheel.enabled = !0 }, disable: function () { var e = C.event(); if (this.params.cssMode) return this.wrapperEl.addEventListener(e, this.mousewheel.handle), !0; if (!e) return !1; if (!this.mousewheel.enabled) return !1; var t = this.$el; return (t = "container" !== this.params.mousewheel.eventsTarged ? S(this.params.mousewheel.eventsTarged) : t).off(e, this.mousewheel.handle), !(this.mousewheel.enabled = !1) } }, L = { update: function () { var e, t, i = this.params.navigation; this.params.loop || (e = (t = this.navigation).$nextEl, (t = t.$prevEl) && 0 < t.length && (this.isBeginning ? t.addClass(i.disabledClass) : t.removeClass(i.disabledClass), t[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](i.lockClass)), e && 0 < e.length && (this.isEnd ? e.addClass(i.disabledClass) : e.removeClass(i.disabledClass), e[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](i.lockClass))) }, onPrevClick: function (e) { e.preventDefault(), this.isBeginning && !this.params.loop || this.slidePrev() }, onNextClick: function (e) { e.preventDefault(), this.isEnd && !this.params.loop || this.slideNext() }, init: function () { var e, t, i = this.params.navigation; (i.nextEl || i.prevEl) && (i.nextEl && (e = S(i.nextEl), this.params.uniqueNavElements && "string" == typeof i.nextEl && 1 < e.length && 1 === this.$el.find(i.nextEl).length && (e = this.$el.find(i.nextEl))), i.prevEl && (t = S(i.prevEl), this.params.uniqueNavElements && "string" == typeof i.prevEl && 1 < t.length && 1 === this.$el.find(i.prevEl).length && (t = this.$el.find(i.prevEl))), e && 0 < e.length && e.on("click", this.navigation.onNextClick), t && 0 < t.length && t.on("click", this.navigation.onPrevClick), j.extend(this.navigation, { $nextEl: e, nextEl: e && e[0], $prevEl: t, prevEl: t && t[0] })) }, destroy: function () { var e = this.navigation, t = e.$nextEl, e = e.$prevEl; t && t.length && (t.off("click", this.navigation.onNextClick), t.removeClass(this.params.navigation.disabledClass)), e && e.length && (e.off("click", this.navigation.onPrevClick), e.removeClass(this.params.navigation.disabledClass)) } }, A = { update: function () { var e = this.rtl, s = this.params.pagination; if (s.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) { var n, t = (this.virtual && this.params.virtual.enabled ? this.virtual : this).slides.length, i = this.pagination.$el, a = this.params.loop ? Math.ceil((t - 2 * this.loopedSlides) / this.params.slidesPerGroup) : this.snapGrid.length; if (this.params.loop ? ((n = Math.ceil((this.activeIndex - this.loopedSlides) / this.params.slidesPerGroup)) > t - 1 - 2 * this.loopedSlides && (n -= t - 2 * this.loopedSlides), a - 1 < n && (n -= a), n < 0 && "bullets" !== this.params.paginationType && (n = a + n)) : n = void 0 !== this.snapIndex ? this.snapIndex : this.activeIndex || 0, "bullets" === s.type && this.pagination.bullets && 0 < this.pagination.bullets.length) { var o, r, l, d = this.pagination.bullets; if (s.dynamicBullets && (this.pagination.bulletSize = d.eq(0)[this.isHorizontal() ? "outerWidth" : "outerHeight"](!0), i.css(this.isHorizontal() ? "width" : "height", this.pagination.bulletSize * (s.dynamicMainBullets + 4) + "px"), 1 < s.dynamicMainBullets && void 0 !== this.previousIndex && (this.pagination.dynamicBulletIndex += n - this.previousIndex, this.pagination.dynamicBulletIndex > s.dynamicMainBullets - 1 ? this.pagination.dynamicBulletIndex = s.dynamicMainBullets - 1 : this.pagination.dynamicBulletIndex < 0 && (this.pagination.dynamicBulletIndex = 0)), o = n - this.pagination.dynamicBulletIndex, l = ((r = o + (Math.min(d.length, s.dynamicMainBullets) - 1)) + o) / 2), d.removeClass(s.bulletActiveClass + " " + s.bulletActiveClass + "-next " + s.bulletActiveClass + "-next-next " + s.bulletActiveClass + "-prev " + s.bulletActiveClass + "-prev-prev " + s.bulletActiveClass + "-main"), 1 < i.length) d.each(function (e, t) { var t = S(t), i = t.index(); i === n && t.addClass(s.bulletActiveClass), s.dynamicBullets && (o <= i && i <= r && t.addClass(s.bulletActiveClass + "-main"), i === o && t.prev().addClass(s.bulletActiveClass + "-prev").prev().addClass(s.bulletActiveClass + "-prev-prev"), i === r && t.next().addClass(s.bulletActiveClass + "-next").next().addClass(s.bulletActiveClass + "-next-next")) }); else { var t = d.eq(n), c = t.index(); if (t.addClass(s.bulletActiveClass), s.dynamicBullets) { for (var t = d.eq(o), u = d.eq(r), h = o; h <= r; h += 1)d.eq(h).addClass(s.bulletActiveClass + "-main"); if (this.params.loop) if (c >= d.length - s.dynamicMainBullets) { for (var p = s.dynamicMainBullets; 0 <= p; --p)d.eq(d.length - p).addClass(s.bulletActiveClass + "-main"); d.eq(d.length - s.dynamicMainBullets - 1).addClass(s.bulletActiveClass + "-prev") } else t.prev().addClass(s.bulletActiveClass + "-prev").prev().addClass(s.bulletActiveClass + "-prev-prev"), u.next().addClass(s.bulletActiveClass + "-next").next().addClass(s.bulletActiveClass + "-next-next"); else t.prev().addClass(s.bulletActiveClass + "-prev").prev().addClass(s.bulletActiveClass + "-prev-prev"), u.next().addClass(s.bulletActiveClass + "-next").next().addClass(s.bulletActiveClass + "-next-next") } } s.dynamicBullets && (c = Math.min(d.length, s.dynamicMainBullets + 4), t = (this.pagination.bulletSize * c - this.pagination.bulletSize) / 2 - l * this.pagination.bulletSize, u = e ? "right" : "left", d.css(this.isHorizontal() ? u : "top", t + "px")) } "fraction" === s.type && (i.find("." + s.currentClass).text(s.formatFractionCurrent(n + 1)), i.find("." + s.totalClass).text(s.formatFractionTotal(a))), "progressbar" === s.type && (c = s.progressbarOpposite ? this.isHorizontal() ? "vertical" : "horizontal" : this.isHorizontal() ? "horizontal" : "vertical", l = (n + 1) / a, u = e = 1, "horizontal" == c ? e = l : u = l, i.find("." + s.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + e + ") scaleY(" + u + ")").transition(this.params.speed)), "custom" === s.type && s.renderCustom ? (i.html(s.renderCustom(this, n + 1, a)), this.emit("paginationRender", this, i[0])) : this.emit("paginationUpdate", this, i[0]), i[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](s.lockClass) } }, render: function () { var e = this.params.pagination; if (e.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) { var t = (this.virtual && this.params.virtual.enabled ? this.virtual : this).slides.length, i = this.pagination.$el, s = ""; if ("bullets" === e.type) { for (var n = this.params.loop ? Math.ceil((t - 2 * this.loopedSlides) / this.params.slidesPerGroup) : this.snapGrid.length, a = 0; a < n; a += 1)e.renderBullet ? s += e.renderBullet.call(this, a, e.bulletClass) : s += "<" + e.bulletElement + ' class="' + e.bulletClass + '">' + e.bulletElement + ">"; i.html(s), this.pagination.bullets = i.find("." + e.bulletClass) } "fraction" === e.type && (s = e.renderFraction ? e.renderFraction.call(this, e.currentClass, e.totalClass) : ' / ', i.html(s)), "progressbar" === e.type && (s = e.renderProgressbar ? e.renderProgressbar.call(this, e.progressbarFillClass) : '', i.html(s)), "custom" !== e.type && this.emit("paginationRender", this.pagination.$el[0]) } }, init: function () { var e, t = this, i = t.params.pagination; i.el && 0 !== (e = S(i.el)).length && (t.params.uniqueNavElements && "string" == typeof i.el && 1 < e.length && 1 === t.$el.find(i.el).length && (e = t.$el.find(i.el)), "bullets" === i.type && i.clickable && e.addClass(i.clickableClass), e.addClass(i.modifierClass + i.type), "bullets" === i.type && i.dynamicBullets && (e.addClass("" + i.modifierClass + i.type + "-dynamic"), t.pagination.dynamicBulletIndex = 0, i.dynamicMainBullets < 1 && (i.dynamicMainBullets = 1)), "progressbar" === i.type && i.progressbarOpposite && e.addClass(i.progressbarOppositeClass), i.clickable && e.on("click", "." + i.bulletClass, function (e) { e.preventDefault(); e = S(this).index() * t.params.slidesPerGroup; t.params.loop && (e += t.loopedSlides), t.slideTo(e) }), j.extend(t.pagination, { $el: e, el: e[0] })) }, destroy: function () { var e, t = this.params.pagination; t.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length && ((e = this.pagination.$el).removeClass(t.hiddenClass), e.removeClass(t.modifierClass + t.type), this.pagination.bullets && this.pagination.bullets.removeClass(t.bulletActiveClass), t.clickable && e.off("click", "." + t.bulletClass)) } }, P = { setTranslate: function () { var e, t, i, s, n, a, o, r; this.params.scrollbar.el && this.scrollbar.el && (a = this.scrollbar, e = this.rtlTranslate, r = this.progress, t = a.dragSize, i = a.trackSize, s = a.$dragEl, n = a.$el, a = this.params.scrollbar, r = (i - (o = t)) * r, e ? 0 < (r = -r) ? (o = t - r, r = 0) : i < -r + t && (o = i + r) : r < 0 ? (o = t + r, r = 0) : i < r + t && (o = i - r), this.isHorizontal() ? (s.transform("translate3d(" + r + "px, 0, 0)"), s[0].style.width = o + "px") : (s.transform("translate3d(0px, " + r + "px, 0)"), s[0].style.height = o + "px"), a.hide && (clearTimeout(this.scrollbar.timeout), n[0].style.opacity = 1, this.scrollbar.timeout = setTimeout(function () { n[0].style.opacity = 0, n.transition(400) }, 1e3))) }, setTransition: function (e) { this.params.scrollbar.el && this.scrollbar.el && this.scrollbar.$dragEl.transition(e) }, updateSize: function () { var e, t, i, s, n, a, o; this.params.scrollbar.el && this.scrollbar.el && (t = (e = this.scrollbar).$dragEl, i = e.$el, t[0].style.width = "", t[0].style.height = "", s = this.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight, a = (n = this.size / this.virtualSize) * (s / this.size), o = "auto" === this.params.scrollbar.dragSize ? s * n : parseInt(this.params.scrollbar.dragSize, 10), this.isHorizontal() ? t[0].style.width = o + "px" : t[0].style.height = o + "px", i[0].style.display = 1 <= n ? "none" : "", this.params.scrollbar.hide && (i[0].style.opacity = 0), j.extend(e, { trackSize: s, divider: n, moveDivider: a, dragSize: o }), e.$el[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](this.params.scrollbar.lockClass)) }, getPointerPosition: function (e) { return this.isHorizontal() ? ("touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0] : e).clientX : ("touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0] : e).clientY }, setDragPosition: function (e) { var t = this.scrollbar, i = this.rtlTranslate, s = t.$el, n = t.dragSize, a = t.trackSize, o = t.dragStartPos, t = (t.getPointerPosition(e) - s.offset()[this.isHorizontal() ? "left" : "top"] - (null !== o ? o : n / 2)) / (a - n), e = (t = Math.max(Math.min(t, 1), 0), i && (t = 1 - t), this.minTranslate() + (this.maxTranslate() - this.minTranslate()) * t); this.updateProgress(e), this.setTranslate(e), this.updateActiveIndex(), this.updateSlidesClasses() }, onDragStart: function (e) { var t = this.params.scrollbar, i = this.scrollbar, s = this.$wrapperEl, n = i.$el, a = i.$dragEl; this.scrollbar.isTouched = !0, this.scrollbar.dragStartPos = e.target === a[0] || e.target === a ? i.getPointerPosition(e) - e.target.getBoundingClientRect()[this.isHorizontal() ? "left" : "top"] : null, e.preventDefault(), e.stopPropagation(), s.transition(100), a.transition(100), i.setDragPosition(e), clearTimeout(this.scrollbar.dragTimeout), n.transition(0), t.hide && n.css("opacity", 1), this.params.cssMode && this.$wrapperEl.css("scroll-snap-type", "none"), this.emit("scrollbarDragStart", e) }, onDragMove: function (e) { var t = this.scrollbar, i = this.$wrapperEl, s = t.$el, n = t.$dragEl; this.scrollbar.isTouched && (e.preventDefault ? e.preventDefault() : e.returnValue = !1, t.setDragPosition(e), i.transition(0), s.transition(0), n.transition(0), this.emit("scrollbarDragMove", e)) }, onDragEnd: function (e) { var t = this.params.scrollbar, i = this.scrollbar, s = this.$wrapperEl, n = i.$el; this.scrollbar.isTouched && (this.scrollbar.isTouched = !1, this.params.cssMode && (this.$wrapperEl.css("scroll-snap-type", ""), s.transition("")), t.hide && (clearTimeout(this.scrollbar.dragTimeout), this.scrollbar.dragTimeout = j.nextTick(function () { n.css("opacity", 0), n.transition(400) }, 1e3)), this.emit("scrollbarDragEnd", e), t.snapOnRelease && this.slideToClosest()) }, enableDraggable: function () { var e, t, i, s, n; this.params.scrollbar.el && (i = this.scrollbar, e = this.touchEventsTouch, t = this.touchEventsDesktop, n = this.params, i = i.$el[0], s = !(!y.passiveListener || !n.passiveListeners) && { passive: !1, capture: !1 }, n = !(!y.passiveListener || !n.passiveListeners) && { passive: !0, capture: !1 }, y.touch ? (i.addEventListener(e.start, this.scrollbar.onDragStart, s), i.addEventListener(e.move, this.scrollbar.onDragMove, s), i.addEventListener(e.end, this.scrollbar.onDragEnd, n)) : (i.addEventListener(t.start, this.scrollbar.onDragStart, s), u.addEventListener(t.move, this.scrollbar.onDragMove, s), u.addEventListener(t.end, this.scrollbar.onDragEnd, n))) }, disableDraggable: function () { var e, t, i, s, n; this.params.scrollbar.el && (i = this.scrollbar, e = this.touchEventsTouch, t = this.touchEventsDesktop, n = this.params, i = i.$el[0], s = !(!y.passiveListener || !n.passiveListeners) && { passive: !1, capture: !1 }, n = !(!y.passiveListener || !n.passiveListeners) && { passive: !0, capture: !1 }, y.touch ? (i.removeEventListener(e.start, this.scrollbar.onDragStart, s), i.removeEventListener(e.move, this.scrollbar.onDragMove, s), i.removeEventListener(e.end, this.scrollbar.onDragEnd, n)) : (i.removeEventListener(t.start, this.scrollbar.onDragStart, s), u.removeEventListener(t.move, this.scrollbar.onDragMove, s), u.removeEventListener(t.end, this.scrollbar.onDragEnd, n))) }, init: function () { var e, t, i, s; this.params.scrollbar.el && (e = this.scrollbar, s = this.$el, i = S((t = this.params.scrollbar).el), 0 === (s = (i = this.params.uniqueNavElements && "string" == typeof t.el && 1 < i.length && 1 === s.find(t.el).length ? s.find(t.el) : i).find("." + this.params.scrollbar.dragClass)).length && (s = S('

      '), i.append(s)), j.extend(e, { $el: i, el: i[0], $dragEl: s, dragEl: s[0] }), t.draggable && e.enableDraggable()) }, destroy: function () { this.scrollbar.disableDraggable() } }, Q = { setTransform: function (e, t) { var i = this.rtl, e = S(e), i = i ? -1 : 1, s = e.attr("data-swiper-parallax") || "0", n = e.attr("data-swiper-parallax-x"), a = e.attr("data-swiper-parallax-y"), o = e.attr("data-swiper-parallax-scale"), r = e.attr("data-swiper-parallax-opacity"); n || a ? (n = n || "0", a = a || "0") : this.isHorizontal() ? (n = s, a = "0") : (a = s, n = "0"), n = 0 <= n.indexOf("%") ? parseInt(n, 10) * t * i + "%" : n * t * i + "px", a = 0 <= a.indexOf("%") ? parseInt(a, 10) * t + "%" : a * t + "px", null != r && (s = r - (r - 1) * (1 - Math.abs(t)), e[0].style.opacity = s), null == o ? e.transform("translate3d(" + n + ", " + a + ", 0px)") : (i = o - (o - 1) * (1 - Math.abs(t)), e.transform("translate3d(" + n + ", " + a + ", 0px) scale(" + i + ")")) }, setTranslate: function () { var s = this, e = s.$el, t = s.slides, n = s.progress, a = s.snapGrid; e.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function (e, t) { s.parallax.setTransform(t, n) }), t.each(function (e, t) { var i = t.progress; 1 < s.params.slidesPerGroup && "auto" !== s.params.slidesPerView && (i += Math.ceil(e / 2) - n * (a.length - 1)), i = Math.min(Math.max(i, -1), 1), S(t).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function (e, t) { s.parallax.setTransform(t, i) }) }) }, setTransition: function (s) { void 0 === s && (s = this.params.speed), this.$el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function (e, t) { var t = S(t), i = parseInt(t.attr("data-swiper-parallax-duration"), 10) || s; 0 === s && (i = 0), t.transition(i) }) } }, Z = { getDistanceBetweenTouches: function (e) { if (e.targetTouches.length < 2) return 1; var t = e.targetTouches[0].pageX, i = e.targetTouches[0].pageY, s = e.targetTouches[1].pageX, e = e.targetTouches[1].pageY; return Math.sqrt(Math.pow(s - t, 2) + Math.pow(e - i, 2)) }, onGestureStart: function (e) { var t = this.params.zoom, i = this.zoom, s = i.gesture; if (i.fakeGestureTouched = !1, i.fakeGestureMoved = !1, !y.gestures) { if ("touchstart" !== e.type || "touchstart" === e.type && e.targetTouches.length < 2) return; i.fakeGestureTouched = !0, s.scaleStart = Z.getDistanceBetweenTouches(e) } s.$slideEl && s.$slideEl.length || (s.$slideEl = S(e.target).closest(".swiper-slide"), 0 === s.$slideEl.length && (s.$slideEl = this.slides.eq(this.activeIndex)), s.$imageEl = s.$slideEl.find("img, svg, canvas"), s.$imageWrapEl = s.$imageEl.parent("." + t.containerClass), s.maxRatio = s.$imageWrapEl.attr("data-swiper-zoom") || t.maxRatio, 0 !== s.$imageWrapEl.length) ? (s.$imageEl.transition(0), this.zoom.isScaling = !0) : s.$imageEl = void 0 }, onGestureChange: function (e) { var t = this.params.zoom, i = this.zoom, s = i.gesture; if (!y.gestures) { if ("touchmove" !== e.type || "touchmove" === e.type && e.targetTouches.length < 2) return; i.fakeGestureMoved = !0, s.scaleMove = Z.getDistanceBetweenTouches(e) } s.$imageEl && 0 !== s.$imageEl.length && (i.scale = y.gestures ? e.scale * i.currentScale : s.scaleMove / s.scaleStart * i.currentScale, i.scale > s.maxRatio && (i.scale = s.maxRatio - 1 + Math.pow(i.scale - s.maxRatio + 1, .5)), i.scale < t.minRatio && (i.scale = t.minRatio + 1 - Math.pow(t.minRatio - i.scale + 1, .5)), s.$imageEl.transform("translate3d(0,0,0) scale(" + i.scale + ")")) }, onGestureEnd: function (e) { var t = this.params.zoom, i = this.zoom, s = i.gesture; if (!y.gestures) { if (!i.fakeGestureTouched || !i.fakeGestureMoved) return; if ("touchend" !== e.type || "touchend" === e.type && e.changedTouches.length < 2 && !r.android) return; i.fakeGestureTouched = !1, i.fakeGestureMoved = !1 } s.$imageEl && 0 !== s.$imageEl.length && (i.scale = Math.max(Math.min(i.scale, s.maxRatio), t.minRatio), s.$imageEl.transition(this.params.speed).transform("translate3d(0,0,0) scale(" + i.scale + ")"), i.currentScale = i.scale, i.isScaling = !1, 1 === i.scale && (s.$slideEl = void 0)) }, onTouchStart: function (e) { var t = this.zoom, i = t.gesture, t = t.image; i.$imageEl && 0 !== i.$imageEl.length && !t.isTouched && (r.android && e.preventDefault(), t.isTouched = !0, t.touchesStart.x = ("touchstart" === e.type ? e.targetTouches[0] : e).pageX, t.touchesStart.y = ("touchstart" === e.type ? e.targetTouches[0] : e).pageY) }, onTouchMove: function (e) { var t = this.zoom, i = t.gesture, s = t.image, n = t.velocity; if (i.$imageEl && 0 !== i.$imageEl.length && (this.allowClick = !1, s.isTouched && i.$slideEl)) { s.isMoved || (s.width = i.$imageEl[0].offsetWidth, s.height = i.$imageEl[0].offsetHeight, s.startX = j.getTranslate(i.$imageWrapEl[0], "x") || 0, s.startY = j.getTranslate(i.$imageWrapEl[0], "y") || 0, i.slideWidth = i.$slideEl[0].offsetWidth, i.slideHeight = i.$slideEl[0].offsetHeight, i.$imageWrapEl.transition(0), this.rtl && (s.startX = -s.startX, s.startY = -s.startY)); var a = s.width * t.scale, o = s.height * t.scale; if (!(a < i.slideWidth && o < i.slideHeight)) { if (s.minX = Math.min(i.slideWidth / 2 - a / 2, 0), s.maxX = -s.minX, s.minY = Math.min(i.slideHeight / 2 - o / 2, 0), s.maxY = -s.minY, s.touchesCurrent.x = ("touchmove" === e.type ? e.targetTouches[0] : e).pageX, s.touchesCurrent.y = ("touchmove" === e.type ? e.targetTouches[0] : e).pageY, !s.isMoved && !t.isScaling) { if (this.isHorizontal() && (Math.floor(s.minX) === Math.floor(s.startX) && s.touchesCurrent.x < s.touchesStart.x || Math.floor(s.maxX) === Math.floor(s.startX) && s.touchesCurrent.x > s.touchesStart.x)) return void (s.isTouched = !1); if (!this.isHorizontal() && (Math.floor(s.minY) === Math.floor(s.startY) && s.touchesCurrent.y < s.touchesStart.y || Math.floor(s.maxY) === Math.floor(s.startY) && s.touchesCurrent.y > s.touchesStart.y)) return void (s.isTouched = !1) } e.preventDefault(), e.stopPropagation(), s.isMoved = !0, s.currentX = s.touchesCurrent.x - s.touchesStart.x + s.startX, s.currentY = s.touchesCurrent.y - s.touchesStart.y + s.startY, s.currentX < s.minX && (s.currentX = s.minX + 1 - Math.pow(s.minX - s.currentX + 1, .8)), s.currentX > s.maxX && (s.currentX = s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, .8)), s.currentY < s.minY && (s.currentY = s.minY + 1 - Math.pow(s.minY - s.currentY + 1, .8)), s.currentY > s.maxY && (s.currentY = s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, .8)), n.prevPositionX || (n.prevPositionX = s.touchesCurrent.x), n.prevPositionY || (n.prevPositionY = s.touchesCurrent.y), n.prevTime || (n.prevTime = Date.now()), n.x = (s.touchesCurrent.x - n.prevPositionX) / (Date.now() - n.prevTime) / 2, n.y = (s.touchesCurrent.y - n.prevPositionY) / (Date.now() - n.prevTime) / 2, Math.abs(s.touchesCurrent.x - n.prevPositionX) < 2 && (n.x = 0), Math.abs(s.touchesCurrent.y - n.prevPositionY) < 2 && (n.y = 0), n.prevPositionX = s.touchesCurrent.x, n.prevPositionY = s.touchesCurrent.y, n.prevTime = Date.now(), i.$imageWrapEl.transform("translate3d(" + s.currentX + "px, " + s.currentY + "px,0)") } } }, onTouchEnd: function () { var e = this.zoom, t = e.gesture, i = e.image, s = e.velocity; if (t.$imageEl && 0 !== t.$imageEl.length) { if (!i.isTouched || !i.isMoved) return i.isTouched = !1, void (i.isMoved = !1); i.isTouched = !1, i.isMoved = !1; var n = 300, a = 300, o = s.x * n, o = i.currentX + o, r = s.y * a, r = i.currentY + r, s = (0 !== s.x && (n = Math.abs((o - i.currentX) / s.x)), 0 !== s.y && (a = Math.abs((r - i.currentY) / s.y)), Math.max(n, a)), n = (i.currentX = o, i.currentY = r, i.width * e.scale), a = i.height * e.scale; i.minX = Math.min(t.slideWidth / 2 - n / 2, 0), i.maxX = -i.minX, i.minY = Math.min(t.slideHeight / 2 - a / 2, 0), i.maxY = -i.minY, i.currentX = Math.max(Math.min(i.currentX, i.maxX), i.minX), i.currentY = Math.max(Math.min(i.currentY, i.maxY), i.minY), t.$imageWrapEl.transition(s).transform("translate3d(" + i.currentX + "px, " + i.currentY + "px,0)") } }, onTransitionEnd: function () { var e = this.zoom, t = e.gesture; t.$slideEl && this.previousIndex !== this.activeIndex && (t.$imageEl.transform("translate3d(0,0,0) scale(1)"), t.$imageWrapEl.transform("translate3d(0,0,0)"), e.scale = 1, e.currentScale = 1, t.$slideEl = void 0, t.$imageEl = void 0, t.$imageWrapEl = void 0) }, toggle: function (e) { var t = this.zoom; t.scale && 1 !== t.scale ? t.out() : t.in(e) }, in: function (e) { var t, i, s, n, a = this.zoom, o = this.params.zoom, r = a.gesture, l = a.image; r.$slideEl || (r.$slideEl = this.clickedSlide ? S(this.clickedSlide) : this.slides.eq(this.activeIndex), r.$imageEl = r.$slideEl.find("img, svg, canvas"), r.$imageWrapEl = r.$imageEl.parent("." + o.containerClass)), r.$imageEl && 0 !== r.$imageEl.length && (r.$slideEl.addClass("" + o.zoomedSlideClass), l = void 0 === l.touchesStart.x && e ? (t = ("touchend" === e.type ? e.changedTouches[0] : e).pageX, ("touchend" === e.type ? e.changedTouches[0] : e).pageY) : (t = l.touchesStart.x, l.touchesStart.y), a.scale = r.$imageWrapEl.attr("data-swiper-zoom") || o.maxRatio, a.currentScale = r.$imageWrapEl.attr("data-swiper-zoom") || o.maxRatio, e ? (o = r.$slideEl[0].offsetWidth, e = r.$slideEl[0].offsetHeight, t = r.$slideEl.offset().left + o / 2 - t, l = r.$slideEl.offset().top + e / 2 - l, s = r.$imageEl[0].offsetWidth, n = r.$imageEl[0].offsetHeight, s = s * a.scale, n = n * a.scale, s = -(o = Math.min(o / 2 - s / 2, 0)), n = -(e = Math.min(e / 2 - n / 2, 0)), s < (i = (i = t * a.scale) < o ? o : i) && (i = s), n < (s = (s = l * a.scale) < e ? e : s) && (s = n)) : s = i = 0, r.$imageWrapEl.transition(300).transform("translate3d(" + i + "px, " + s + "px,0)"), r.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + a.scale + ")")) }, out: function () { var e = this.zoom, t = this.params.zoom, i = e.gesture; i.$slideEl || (i.$slideEl = this.clickedSlide ? S(this.clickedSlide) : this.slides.eq(this.activeIndex), i.$imageEl = i.$slideEl.find("img, svg, canvas"), i.$imageWrapEl = i.$imageEl.parent("." + t.containerClass)), i.$imageEl && 0 !== i.$imageEl.length && (e.scale = 1, e.currentScale = 1, i.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"), i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"), i.$slideEl.removeClass("" + t.zoomedSlideClass), i.$slideEl = void 0) }, enable: function () { var e, t, i = this.zoom; i.enabled || (i.enabled = !0, e = !("touchstart" !== this.touchEvents.start || !y.passiveListener || !this.params.passiveListeners) && { passive: !0, capture: !1 }, t = !y.passiveListener || { passive: !1, capture: !0 }, y.gestures ? (this.$wrapperEl.on("gesturestart", ".swiper-slide", i.onGestureStart, e), this.$wrapperEl.on("gesturechange", ".swiper-slide", i.onGestureChange, e), this.$wrapperEl.on("gestureend", ".swiper-slide", i.onGestureEnd, e)) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.on(this.touchEvents.start, ".swiper-slide", i.onGestureStart, e), this.$wrapperEl.on(this.touchEvents.move, ".swiper-slide", i.onGestureChange, t), this.$wrapperEl.on(this.touchEvents.end, ".swiper-slide", i.onGestureEnd, e), this.touchEvents.cancel && this.$wrapperEl.on(this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, e)), this.$wrapperEl.on(this.touchEvents.move, "." + this.params.zoom.containerClass, i.onTouchMove, t)) }, disable: function () { var e, t, i = this.zoom; i.enabled && (this.zoom.enabled = !1, e = !("touchstart" !== this.touchEvents.start || !y.passiveListener || !this.params.passiveListeners) && { passive: !0, capture: !1 }, t = !y.passiveListener || { passive: !1, capture: !0 }, y.gestures ? (this.$wrapperEl.off("gesturestart", ".swiper-slide", i.onGestureStart, e), this.$wrapperEl.off("gesturechange", ".swiper-slide", i.onGestureChange, e), this.$wrapperEl.off("gestureend", ".swiper-slide", i.onGestureEnd, e)) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.off(this.touchEvents.start, ".swiper-slide", i.onGestureStart, e), this.$wrapperEl.off(this.touchEvents.move, ".swiper-slide", i.onGestureChange, t), this.$wrapperEl.off(this.touchEvents.end, ".swiper-slide", i.onGestureEnd, e), this.touchEvents.cancel && this.$wrapperEl.off(this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, e)), this.$wrapperEl.off(this.touchEvents.move, "." + this.params.zoom.containerClass, i.onTouchMove, t)) } }, J = { loadInSlide: function (e, r) { void 0 === r && (r = !0); var l, d = this, c = d.params.lazy; void 0 !== e && 0 !== d.slides.length && (e = (l = d.virtual && d.params.virtual.enabled ? d.$wrapperEl.children("." + d.params.slideClass + '[data-swiper-slide-index="' + e + '"]') : d.slides.eq(e)).find("." + c.elementClass + ":not(." + c.loadedClass + "):not(." + c.loadingClass + ")"), 0 !== (e = !l.hasClass(c.elementClass) || l.hasClass(c.loadedClass) || l.hasClass(c.loadingClass) ? e : e.add(l[0])).length && e.each(function (e, t) { var i = S(t), s = (i.addClass(c.loadingClass), i.attr("data-background")), n = i.attr("data-src"), a = i.attr("data-srcset"), o = i.attr("data-sizes"); d.loadImage(i[0], n || s, a, o, !1, function () { var e, t; null == d || !d || d && !d.params || d.destroyed || (s ? (i.css("background-image", 'url("' + s + '")'), i.removeAttr("data-background")) : (a && (i.attr("srcset", a), i.removeAttr("data-srcset")), o && (i.attr("sizes", o), i.removeAttr("data-sizes")), n && (i.attr("src", n), i.removeAttr("data-src"))), i.addClass(c.loadedClass).removeClass(c.loadingClass), l.find("." + c.preloaderClass).remove(), d.params.loop && r && (e = l.attr("data-swiper-slide-index"), l.hasClass(d.params.slideDuplicateClass) ? (t = d.$wrapperEl.children('[data-swiper-slide-index="' + e + '"]:not(.' + d.params.slideDuplicateClass + ")"), d.lazy.loadInSlide(t.index(), !1)) : (t = d.$wrapperEl.children("." + d.params.slideDuplicateClass + '[data-swiper-slide-index="' + e + '"]'), d.lazy.loadInSlide(t.index(), !1))), d.emit("lazyImageReady", l[0], i[0])) }), d.emit("lazyImageLoad", l[0], i[0]) })) }, load: function () { var i = this, t = i.$wrapperEl, s = i.params, n = i.slides, e = i.activeIndex, a = i.virtual && s.virtual.enabled, o = s.lazy, r = s.slidesPerView; function l(e) { if (a) { if (t.children("." + s.slideClass + '[data-swiper-slide-index="' + e + '"]').length) return 1 } else if (n[e]) return 1 } function d(e) { return a ? S(e).attr("data-swiper-slide-index") : S(e).index() } if ("auto" === r && (r = 0), i.lazy.initialImageLoaded || (i.lazy.initialImageLoaded = !0), i.params.watchSlidesVisibility) t.children("." + s.slideVisibleClass).each(function (e, t) { t = a ? S(t).attr("data-swiper-slide-index") : S(t).index(); i.lazy.loadInSlide(t) }); else if (1 < r) for (var c = e; c < e + r; c += 1)l(c) && i.lazy.loadInSlide(c); else i.lazy.loadInSlide(e); if (o.loadPrevNext) if (1 < r || o.loadPrevNextAmount && 1 < o.loadPrevNextAmount) { for (var o = o.loadPrevNextAmount, u = r, h = Math.min(e + u + Math.max(o, u), n.length), u = Math.max(e - Math.max(u, o), 0), p = e + r; p < h; p += 1)l(p) && i.lazy.loadInSlide(p); for (var m = u; m < e; m += 1)l(m) && i.lazy.loadInSlide(m) } else { o = t.children("." + s.slideNextClass), u = (0 < o.length && i.lazy.loadInSlide(d(o)), t.children("." + s.slidePrevClass)); 0 < u.length && i.lazy.loadInSlide(d(u)) } } }, k = { LinearSpline: function (e, t) { var i, s, n, a, o; return this.x = e, this.y = t, this.lastIndex = e.length - 1, this.interpolate = function (e) { return e ? (o = function (e, t) { for (s = -1, i = e.length; 1 < i - s;)e[n = i + s >> 1] <= t ? s = n : i = n; return i }(this.x, e), a = o - 1, (e - this.x[a]) * (this.y[o] - this.y[a]) / (this.x[o] - this.x[a]) + this.y[a]) : 0 }, this }, getInterpolateFunction: function (e) { this.controller.spline || (this.controller.spline = this.params.loop ? new k.LinearSpline(this.slidesGrid, e.slidesGrid) : new k.LinearSpline(this.snapGrid, e.snapGrid)) }, setTranslate: function (e, t) { var i, s, n = this, a = n.controller.control; function o(e) { var t = n.rtlTranslate ? -n.translate : n.translate; "slide" === n.params.controller.by && (n.controller.getInterpolateFunction(e), s = -n.controller.spline.interpolate(-t)), s && "container" !== n.params.controller.by || (i = (e.maxTranslate() - e.minTranslate()) / (n.maxTranslate() - n.minTranslate()), s = (t - n.minTranslate()) * i + e.minTranslate()), n.params.controller.inverse && (s = e.maxTranslate() - s), e.updateProgress(s), e.setTranslate(s, n), e.updateActiveIndex(), e.updateSlidesClasses() } if (Array.isArray(a)) for (var r = 0; r < a.length; r += 1)a[r] !== t && a[r] instanceof p && o(a[r]); else a instanceof p && t !== a && o(a) }, setTransition: function (t, e) { var i, s = this, n = s.controller.control; function a(e) { e.setTransition(t, s), 0 !== t && (e.transitionStart(), e.params.autoHeight && j.nextTick(function () { e.updateAutoHeight() }), e.$wrapperEl.transitionEnd(function () { n && (e.params.loop && "slide" === s.params.controller.by && e.loopFix(), e.transitionEnd()) })) } if (Array.isArray(n)) for (i = 0; i < n.length; i += 1)n[i] !== e && n[i] instanceof p && a(n[i]); else n instanceof p && e !== n && a(n) } }, ee = { makeElFocusable: function (e) { return e.attr("tabIndex", "0"), e }, addElRole: function (e, t) { return e.attr("role", t), e }, addElLabel: function (e, t) { return e.attr("aria-label", t), e }, disableEl: function (e) { return e.attr("aria-disabled", !0), e }, enableEl: function (e) { return e.attr("aria-disabled", !1), e }, onEnterKey: function (e) { var t = this.params.a11y; 13 === e.keyCode && (e = S(e.target), this.navigation && this.navigation.$nextEl && e.is(this.navigation.$nextEl) && (this.isEnd && !this.params.loop || this.slideNext(), this.isEnd ? this.a11y.notify(t.lastSlideMessage) : this.a11y.notify(t.nextSlideMessage)), this.navigation && this.navigation.$prevEl && e.is(this.navigation.$prevEl) && (this.isBeginning && !this.params.loop || this.slidePrev(), this.isBeginning ? this.a11y.notify(t.firstSlideMessage) : this.a11y.notify(t.prevSlideMessage)), this.pagination && e.is("." + this.params.pagination.bulletClass) && e[0].click()) }, notify: function (e) { var t = this.a11y.liveRegion; 0 !== t.length && (t.html(""), t.html(e)) }, updateNavigation: function () { var e, t; !this.params.loop && this.navigation && (e = (t = this.navigation).$nextEl, (t = t.$prevEl) && 0 < t.length && (this.isBeginning ? this.a11y.disableEl(t) : this.a11y.enableEl(t)), e && 0 < e.length && (this.isEnd ? this.a11y.disableEl(e) : this.a11y.enableEl(e))) }, updatePagination: function () { var i = this, s = i.params.a11y; i.pagination && i.params.pagination.clickable && i.pagination.bullets && i.pagination.bullets.length && i.pagination.bullets.each(function (e, t) { t = S(t); i.a11y.makeElFocusable(t), i.a11y.addElRole(t, "button"), i.a11y.addElLabel(t, s.paginationBulletMessage.replace(/{{index}}/, t.index() + 1)) }) }, init: function () { this.$el.append(this.a11y.liveRegion); var e, t, i = this.params.a11y; this.navigation && this.navigation.$nextEl && (e = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (t = this.navigation.$prevEl), e && (this.a11y.makeElFocusable(e), this.a11y.addElRole(e, "button"), this.a11y.addElLabel(e, i.nextSlideMessage), e.on("keydown", this.a11y.onEnterKey)), t && (this.a11y.makeElFocusable(t), this.a11y.addElRole(t, "button"), this.a11y.addElLabel(t, i.prevSlideMessage), t.on("keydown", this.a11y.onEnterKey)), this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.on("keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey) }, destroy: function () { var e, t; this.a11y.liveRegion && 0 < this.a11y.liveRegion.length && this.a11y.liveRegion.remove(), this.navigation && this.navigation.$nextEl && (e = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (t = this.navigation.$prevEl), e && e.off("keydown", this.a11y.onEnterKey), t && t.off("keydown", this.a11y.onEnterKey), this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.off("keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey) } }, I = { init: function () { if (this.params.history) { if (!X.history || !X.history.pushState) return this.params.history.enabled = !1, void (this.params.hashNavigation.enabled = !0); var e = this.history; e.initialized = !0, e.paths = I.getPathValues(), (e.paths.key || e.paths.value) && (e.scrollToSlide(0, e.paths.value, this.params.runCallbacksOnInit), this.params.history.replaceState || X.addEventListener("popstate", this.history.setHistoryPopState)) } }, destroy: function () { this.params.history.replaceState || X.removeEventListener("popstate", this.history.setHistoryPopState) }, setHistoryPopState: function () { this.history.paths = I.getPathValues(), this.history.scrollToSlide(this.params.speed, this.history.paths.value, !1) }, getPathValues: function () { var e = X.location.pathname.slice(1).split("/").filter(function (e) { return "" !== e }), t = e.length; return { key: e[t - 2], value: e[t - 1] } }, setHistory: function (e, t) { this.history.initialized && this.params.history.enabled && (t = this.slides.eq(t), t = I.slugify(t.attr("data-history")), X.location.pathname.includes(e) || (t = e + "/" + t), (e = X.history.state) && e.value === t || (this.params.history.replaceState ? X.history.replaceState({ value: t }, null, t) : X.history.pushState({ value: t }, null, t))) }, slugify: function (e) { return e.toString().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "") }, scrollToSlide: function (e, t, i) { if (t) for (var s = 0, n = this.slides.length; s < n; s += 1) { var a = this.slides.eq(s); I.slugify(a.attr("data-history")) !== t || a.hasClass(this.params.slideDuplicateClass) || (a = a.index(), this.slideTo(a, e, i)) } else this.slideTo(0, e, i) } }, q = { onHashCange: function () { var e = u.location.hash.replace("#", ""); e !== this.slides.eq(this.activeIndex).attr("data-hash") && void 0 !== (e = this.$wrapperEl.children("." + this.params.slideClass + '[data-hash="' + e + '"]').index()) && this.slideTo(e) }, setHash: function () { var e; this.hashNavigation.initialized && this.params.hashNavigation.enabled && (this.params.hashNavigation.replaceState && X.history && X.history.replaceState ? X.history.replaceState(null, null, "#" + this.slides.eq(this.activeIndex).attr("data-hash") || "") : (e = (e = this.slides.eq(this.activeIndex)).attr("data-hash") || e.attr("data-history"), u.location.hash = e || "")) }, init: function () { if (!(!this.params.hashNavigation.enabled || this.params.history && this.params.history.enabled)) { this.hashNavigation.initialized = !0; var e = u.location.hash.replace("#", ""); if (e) for (var t = 0, i = this.slides.length; t < i; t += 1) { var s = this.slides.eq(t); (s.attr("data-hash") || s.attr("data-history")) !== e || s.hasClass(this.params.slideDuplicateClass) || (s = s.index(), this.slideTo(s, 0, this.params.runCallbacksOnInit, !0)) } this.params.hashNavigation.watchState && S(X).on("hashchange", this.hashNavigation.onHashCange) } }, destroy: function () { this.params.hashNavigation.watchState && S(X).off("hashchange", this.hashNavigation.onHashCange) } }, M = { run: function () { var e = this, t = e.slides.eq(e.activeIndex), i = e.params.autoplay.delay; t.attr("data-swiper-autoplay") && (i = t.attr("data-swiper-autoplay") || e.params.autoplay.delay), clearTimeout(e.autoplay.timeout), e.autoplay.timeout = j.nextTick(function () { e.params.autoplay.reverseDirection ? e.params.loop ? (e.loopFix(), e.slidePrev(e.params.speed, !0, !0), e.emit("autoplay")) : e.isBeginning ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(e.slides.length - 1, e.params.speed, !0, !0), e.emit("autoplay")) : (e.slidePrev(e.params.speed, !0, !0), e.emit("autoplay")) : e.params.loop ? (e.loopFix(), e.slideNext(e.params.speed, !0, !0), e.emit("autoplay")) : e.isEnd ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(0, e.params.speed, !0, !0), e.emit("autoplay")) : (e.slideNext(e.params.speed, !0, !0), e.emit("autoplay")), e.params.cssMode && e.autoplay.running && e.autoplay.run() }, i) }, start: function () { return void 0 === this.autoplay.timeout && !this.autoplay.running && (this.autoplay.running = !0, this.emit("autoplayStart"), this.autoplay.run(), !0) }, stop: function () { return !!this.autoplay.running && void 0 !== this.autoplay.timeout && (this.autoplay.timeout && (clearTimeout(this.autoplay.timeout), this.autoplay.timeout = void 0), this.autoplay.running = !1, this.emit("autoplayStop"), !0) }, pause: function (e) { !this.autoplay.running || this.autoplay.paused || (this.autoplay.timeout && clearTimeout(this.autoplay.timeout), this.autoplay.paused = !0, 0 !== e && this.params.autoplay.waitForTransition ? (this.$wrapperEl[0].addEventListener("transitionend", this.autoplay.onTransitionEnd), this.$wrapperEl[0].addEventListener("webkitTransitionEnd", this.autoplay.onTransitionEnd)) : (this.autoplay.paused = !1, this.autoplay.run())) } }, te = { setTranslate: function () { for (var e = this.slides, t = 0; t < e.length; t += 1) { var i = this.slides.eq(t), s = -i[0].swiperSlideOffset, n = (this.params.virtualTranslate || (s -= this.translate), 0), a = (this.isHorizontal() || (n = s, s = 0), this.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(i[0].progress), 0) : 1 + Math.min(Math.max(i[0].progress, -1), 0)); i.css({ opacity: a }).transform("translate3d(" + s + "px, " + n + "px, 0px)") } }, setTransition: function (e) { var i, s = this, t = s.slides, n = s.$wrapperEl; t.transition(e), s.params.virtualTranslate && 0 !== e && (i = !1, t.transitionEnd(function () { if (!i && s && !s.destroyed) { i = !0, s.animating = !1; for (var e = ["webkitTransitionEnd", "transitionend"], t = 0; t < e.length; t += 1)n.trigger(e[t]) } })) } }, ie = { setTranslate: function () { var e, t = this.$el, i = this.$wrapperEl, s = this.slides, n = this.width, a = this.height, o = this.rtlTranslate, r = this.size, l = this.params.cubeEffect, d = this.isHorizontal(), c = this.virtual && this.params.virtual.enabled, u = 0; l.shadow && (d ? (0 === (e = i.find(".swiper-cube-shadow")).length && (e = S('

      '), i.append(e)), e.css({ height: n + "px" })) : 0 === (e = t.find(".swiper-cube-shadow")).length && (e = S('

      '), t.append(e))); for (var h, p = 0; p < s.length; p += 1) { var m = s.eq(p), v = p, f = 90 * (v = c ? parseInt(m.attr("data-swiper-slide-index"), 10) : v), g = Math.floor(f / 360), w = (o && (f = -f, g = Math.floor(-f / 360)), Math.max(Math.min(m[0].progress, 1), -1)), b = 0, y = 0, E = 0, g = (v % 4 == 0 ? (b = 4 * -g * r, E = 0) : (v - 1) % 4 == 0 ? (b = 0, E = 4 * -g * r) : (v - 2) % 4 == 0 ? (b = r + 4 * g * r, E = r) : (v - 3) % 4 == 0 && (b = -r, E = 3 * r + 4 * r * g), o && (b = -b), d || (y = b, b = 0), "rotateX(" + (d ? 0 : -f) + "deg) rotateY(" + (d ? f : 0) + "deg) translate3d(" + b + "px, " + y + "px, " + E + "px)"); w <= 1 && -1 < w && (u = o ? 90 * -v - 90 * w : 90 * v + 90 * w), m.transform(g), l.slideShadows && (f = d ? m.find(".swiper-slide-shadow-left") : m.find(".swiper-slide-shadow-top"), b = d ? m.find(".swiper-slide-shadow-right") : m.find(".swiper-slide-shadow-bottom"), 0 === f.length && (f = S('

      '), m.append(f)), 0 === b.length && (b = S('

      '), m.append(b)), f.length && (f[0].style.opacity = Math.max(-w, 0)), b.length && (b[0].style.opacity = Math.max(w, 0))) } i.css({ "-webkit-transform-origin": "50% 50% -" + r / 2 + "px", "-moz-transform-origin": "50% 50% -" + r / 2 + "px", "-ms-transform-origin": "50% 50% -" + r / 2 + "px", "transform-origin": "50% 50% -" + r / 2 + "px" }), l.shadow && (d ? e.transform("translate3d(0px, " + (n / 2 + l.shadowOffset) + "px, " + -n / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + l.shadowScale + ")") : (t = Math.abs(u) - 90 * Math.floor(Math.abs(u) / 90), n = 1.5 - (Math.sin(2 * t * Math.PI / 360) / 2 + Math.cos(2 * t * Math.PI / 360) / 2), t = l.shadowScale, n = l.shadowScale / n, h = l.shadowOffset, e.transform("scale3d(" + t + ", 1, " + n + ") translate3d(0px, " + (a / 2 + h) + "px, " + -a / 2 / n + "px) rotateX(-90deg)"))), i.transform("translate3d(0px,0," + (T.isSafari || T.isUiWebView ? -r / 2 : 0) + "px) rotateX(" + (this.isHorizontal() ? 0 : u) + "deg) rotateY(" + (this.isHorizontal() ? -u : 0) + "deg)") }, setTransition: function (e) { var t = this.$el; this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e), this.params.cubeEffect.shadow && !this.isHorizontal() && t.find(".swiper-cube-shadow").transition(e) } }, se = { setTranslate: function () { for (var e = this.slides, t = this.rtlTranslate, i = 0; i < e.length; i += 1) { var s, n, a = e.eq(i), o = a[0].progress, r = -180 * (o = this.params.flipEffect.limitRotation ? Math.max(Math.min(a[0].progress, 1), -1) : o), l = 0, d = -a[0].swiperSlideOffset, c = 0; this.isHorizontal() ? t && (r = -r) : (c = d, l = -r, r = d = 0), a[0].style.zIndex = -Math.abs(Math.round(o)) + e.length, this.params.flipEffect.slideShadows && (s = this.isHorizontal() ? a.find(".swiper-slide-shadow-left") : a.find(".swiper-slide-shadow-top"), n = this.isHorizontal() ? a.find(".swiper-slide-shadow-right") : a.find(".swiper-slide-shadow-bottom"), 0 === s.length && (s = S('

      '), a.append(s)), 0 === n.length && (n = S('

      '), a.append(n)), s.length && (s[0].style.opacity = Math.max(-o, 0)), n.length && (n[0].style.opacity = Math.max(o, 0))), a.transform("translate3d(" + d + "px, " + c + "px, 0px) rotateX(" + l + "deg) rotateY(" + r + "deg)") } }, setTransition: function (e) { var i, s = this, t = s.slides, n = s.activeIndex, a = s.$wrapperEl; t.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e), s.params.virtualTranslate && 0 !== e && (i = !1, t.eq(n).transitionEnd(function () { if (!i && s && !s.destroyed) { i = !0, s.animating = !1; for (var e = ["webkitTransitionEnd", "transitionend"], t = 0; t < e.length; t += 1)a.trigger(e[t]) } })) } }, ne = { setTranslate: function () { for (var e = this.width, t = this.height, i = this.slides, s = this.$wrapperEl, n = this.slidesSizesGrid, a = this.params.coverflowEffect, o = this.isHorizontal(), r = this.translate, l = o ? e / 2 - r : t / 2 - r, d = o ? a.rotate : -a.rotate, c = a.depth, u = 0, h = i.length; u < h; u += 1) { var p = i.eq(u), m = n[u], m = (l - p[0].swiperSlideOffset - m / 2) / m * a.modifier, v = o ? d * m : 0, f = o ? 0 : d * m, g = -c * Math.abs(m), w = o ? 0 : a.stretch * m, b = o ? a.stretch * m : 0, b = (Math.abs(b) < .001 && (b = 0), Math.abs(w) < .001 && (w = 0), Math.abs(g) < .001 && (g = 0), Math.abs(v) < .001 && (v = 0), "translate3d(" + b + "px," + w + "px," + g + "px) rotateX(" + (f = Math.abs(f) < .001 ? 0 : f) + "deg) rotateY(" + v + "deg)"); p.transform(b), p[0].style.zIndex = 1 - Math.abs(Math.round(m)), a.slideShadows && (w = o ? p.find(".swiper-slide-shadow-left") : p.find(".swiper-slide-shadow-top"), g = o ? p.find(".swiper-slide-shadow-right") : p.find(".swiper-slide-shadow-bottom"), 0 === w.length && (w = S('

      '), p.append(w)), 0 === g.length && (g = S('

      '), p.append(g)), w.length && (w[0].style.opacity = 0 < m ? m : 0), g.length && (g[0].style.opacity = 0 < -m ? -m : 0)) } (y.pointerEvents || y.prefixedPointerEvents) && (s[0].style.perspectiveOrigin = l + "px 50%") }, setTransition: function (e) { this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e) } }, ae = { init: function () { var e = this.params.thumbs, t = this.constructor; e.swiper instanceof t ? (this.thumbs.swiper = e.swiper, j.extend(this.thumbs.swiper.originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1 }), j.extend(this.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1 })) : j.isObject(e.swiper) && (this.thumbs.swiper = new t(j.extend({}, e.swiper, { watchSlidesVisibility: !0, watchSlidesProgress: !0, slideToClickedSlide: !1 })), this.thumbs.swiperCreated = !0), this.thumbs.swiper.$el.addClass(this.params.thumbs.thumbsContainerClass), this.thumbs.swiper.on("tap", this.thumbs.onThumbClick) }, onThumbClick: function () { var e, t, i, s = this.thumbs.swiper; s && (e = s.clickedIndex, (i = s.clickedSlide) && S(i).hasClass(this.params.thumbs.slideThumbActiveClass) || null == e || (i = s.params.loop ? parseInt(S(s.clickedSlide).attr("data-swiper-slide-index"), 10) : e, this.params.loop && (s = this.activeIndex, this.slides.eq(s).hasClass(this.params.slideDuplicateClass) && (this.loopFix(), this._clientLeft = this.$wrapperEl[0].clientLeft, s = this.activeIndex), e = this.slides.eq(s).prevAll('[data-swiper-slide-index="' + i + '"]').eq(0).index(), t = this.slides.eq(s).nextAll('[data-swiper-slide-index="' + i + '"]').eq(0).index(), i = void 0 === e || void 0 !== t && t - s < s - e ? t : e), this.slideTo(i))) }, update: function (e) { var t = this.thumbs.swiper; if (t) { var i, s, n, a = "auto" === t.params.slidesPerView ? t.slidesPerViewDynamic() : t.params.slidesPerView, o = (this.realIndex !== t.realIndex && (i = t.activeIndex, n = t.params.loop ? (t.slides.eq(i).hasClass(t.params.slideDuplicateClass) && (t.loopFix(), t._clientLeft = t.$wrapperEl[0].clientLeft, i = t.activeIndex), s = t.slides.eq(i).prevAll('[data-swiper-slide-index="' + this.realIndex + '"]').eq(0).index(), n = t.slides.eq(i).nextAll('[data-swiper-slide-index="' + this.realIndex + '"]').eq(0).index(), void 0 === s ? n : void 0 === n ? s : n - i == i - s ? i : n - i < i - s ? n : s) : this.realIndex, t.visibleSlidesIndexes && t.visibleSlidesIndexes.indexOf(n) < 0 && (t.params.centeredSlides ? n = i < n ? n - Math.floor(a / 2) + 1 : n + Math.floor(a / 2) - 1 : i < n && (n = n - a + 1), t.slideTo(n, e ? 0 : void 0))), 1), r = this.params.thumbs.slideThumbActiveClass; if (1 < this.params.slidesPerView && !this.params.centeredSlides && (o = this.params.slidesPerView), this.params.thumbs.multipleActiveThumbs || (o = 1), o = Math.floor(o), t.slides.removeClass(r), t.params.loop || t.params.virtual && t.params.virtual.enabled) for (var l = 0; l < o; l += 1)t.$wrapperEl.children('[data-swiper-slide-index="' + (this.realIndex + l) + '"]').addClass(r); else for (var d = 0; d < o; d += 1)t.slides.eq(this.realIndex + d).addClass(r) } } }, _ = [m, F, U, v, g, b, E, { name: "mousewheel", params: { mousewheel: { enabled: !1, releaseOnEdges: !1, invert: !1, forceToAxis: !1, sensitivity: 1, eventsTarged: "container" } }, create: function () { j.extend(this, { mousewheel: { enabled: !1, enable: C.enable.bind(this), disable: C.disable.bind(this), handle: C.handle.bind(this), handleMouseEnter: C.handleMouseEnter.bind(this), handleMouseLeave: C.handleMouseLeave.bind(this), animateSlider: C.animateSlider.bind(this), releaseScroll: C.releaseScroll.bind(this), lastScrollTime: j.now(), lastEventBeforeSnap: void 0, recentWheelEvents: [] } }) }, on: { init: function () { !this.params.mousewheel.enabled && this.params.cssMode && this.mousewheel.disable(), this.params.mousewheel.enabled && this.mousewheel.enable() }, destroy: function () { this.params.cssMode && this.mousewheel.enable(), this.mousewheel.enabled && this.mousewheel.disable() } } }, { name: "navigation", params: { navigation: { nextEl: null, prevEl: null, hideOnClick: !1, disabledClass: "swiper-button-disabled", hiddenClass: "swiper-button-hidden", lockClass: "swiper-button-lock" } }, create: function () { j.extend(this, { navigation: { init: L.init.bind(this), update: L.update.bind(this), destroy: L.destroy.bind(this), onNextClick: L.onNextClick.bind(this), onPrevClick: L.onPrevClick.bind(this) } }) }, on: { init: function () { this.navigation.init(), this.navigation.update() }, toEdge: function () { this.navigation.update() }, fromEdge: function () { this.navigation.update() }, destroy: function () { this.navigation.destroy() }, click: function (e) { var t, i = this.navigation, s = i.$nextEl, i = i.$prevEl; !this.params.navigation.hideOnClick || S(e.target).is(i) || S(e.target).is(s) || (s ? t = s.hasClass(this.params.navigation.hiddenClass) : i && (t = i.hasClass(this.params.navigation.hiddenClass)), !0 === t ? this.emit("navigationShow", this) : this.emit("navigationHide", this), s && s.toggleClass(this.params.navigation.hiddenClass), i && i.toggleClass(this.params.navigation.hiddenClass)) } } }, { name: "pagination", params: { pagination: { el: null, bulletElement: "span", clickable: !1, hideOnClick: !1, renderBullet: null, renderProgressbar: null, renderFraction: null, renderCustom: null, progressbarOpposite: !1, type: "bullets", dynamicBullets: !1, dynamicMainBullets: 1, formatFractionCurrent: function (e) { return e }, formatFractionTotal: function (e) { return e }, bulletClass: "swiper-pagination-bullet", bulletActiveClass: "swiper-pagination-bullet-active", modifierClass: "swiper-pagination-", currentClass: "swiper-pagination-current", totalClass: "swiper-pagination-total", hiddenClass: "swiper-pagination-hidden", progressbarFillClass: "swiper-pagination-progressbar-fill", progressbarOppositeClass: "swiper-pagination-progressbar-opposite", clickableClass: "swiper-pagination-clickable", lockClass: "swiper-pagination-lock" } }, create: function () { j.extend(this, { pagination: { init: A.init.bind(this), render: A.render.bind(this), update: A.update.bind(this), destroy: A.destroy.bind(this), dynamicBulletIndex: 0 } }) }, on: { init: function () { this.pagination.init(), this.pagination.render(), this.pagination.update() }, activeIndexChange: function () { !this.params.loop && void 0 !== this.snapIndex || this.pagination.update() }, snapIndexChange: function () { this.params.loop || this.pagination.update() }, slidesLengthChange: function () { this.params.loop && (this.pagination.render(), this.pagination.update()) }, snapGridLengthChange: function () { this.params.loop || (this.pagination.render(), this.pagination.update()) }, destroy: function () { this.pagination.destroy() }, click: function (e) { this.params.pagination.el && this.params.pagination.hideOnClick && 0 < this.pagination.$el.length && !S(e.target).hasClass(this.params.pagination.bulletClass) && (!0 === this.pagination.$el.hasClass(this.params.pagination.hiddenClass) ? this.emit("paginationShow", this) : this.emit("paginationHide", this), this.pagination.$el.toggleClass(this.params.pagination.hiddenClass)) } } }, { name: "scrollbar", params: { scrollbar: { el: null, dragSize: "auto", hide: !1, draggable: !1, snapOnRelease: !0, lockClass: "swiper-scrollbar-lock", dragClass: "swiper-scrollbar-drag" } }, create: function () { j.extend(this, { scrollbar: { init: P.init.bind(this), destroy: P.destroy.bind(this), updateSize: P.updateSize.bind(this), setTranslate: P.setTranslate.bind(this), setTransition: P.setTransition.bind(this), enableDraggable: P.enableDraggable.bind(this), disableDraggable: P.disableDraggable.bind(this), setDragPosition: P.setDragPosition.bind(this), getPointerPosition: P.getPointerPosition.bind(this), onDragStart: P.onDragStart.bind(this), onDragMove: P.onDragMove.bind(this), onDragEnd: P.onDragEnd.bind(this), isTouched: !1, timeout: null, dragTimeout: null } }) }, on: { init: function () { this.scrollbar.init(), this.scrollbar.updateSize(), this.scrollbar.setTranslate() }, update: function () { this.scrollbar.updateSize() }, resize: function () { this.scrollbar.updateSize() }, observerUpdate: function () { this.scrollbar.updateSize() }, setTranslate: function () { this.scrollbar.setTranslate() }, setTransition: function (e) { this.scrollbar.setTransition(e) }, destroy: function () { this.scrollbar.destroy() } } }, { name: "parallax", params: { parallax: { enabled: !1 } }, create: function () { j.extend(this, { parallax: { setTransform: Q.setTransform.bind(this), setTranslate: Q.setTranslate.bind(this), setTransition: Q.setTransition.bind(this) } }) }, on: { beforeInit: function () { this.params.parallax.enabled && (this.params.watchSlidesProgress = !0, this.originalParams.watchSlidesProgress = !0) }, init: function () { this.params.parallax.enabled && this.parallax.setTranslate() }, setTranslate: function () { this.params.parallax.enabled && this.parallax.setTranslate() }, setTransition: function (e) { this.params.parallax.enabled && this.parallax.setTransition(e) } } }, { name: "zoom", params: { zoom: { enabled: !1, maxRatio: 3, minRatio: 1, toggle: !0, containerClass: "swiper-zoom-container", zoomedSlideClass: "swiper-slide-zoomed" } }, create: function () { var s = this, t = { enabled: !1, scale: 1, currentScale: 1, isScaling: !1, gesture: { $slideEl: void 0, slideWidth: void 0, slideHeight: void 0, $imageEl: void 0, $imageWrapEl: void 0, maxRatio: 3 }, image: { isTouched: void 0, isMoved: void 0, currentX: void 0, currentY: void 0, minX: void 0, minY: void 0, maxX: void 0, maxY: void 0, width: void 0, height: void 0, startX: void 0, startY: void 0, touchesStart: {}, touchesCurrent: {} }, velocity: { x: void 0, y: void 0, prevPositionX: void 0, prevPositionY: void 0, prevTime: void 0 } }, n = ("onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach(function (e) { t[e] = Z[e].bind(s) }), j.extend(s, { zoom: t }), 1); Object.defineProperty(s.zoom, "scale", { get: function () { return n }, set: function (e) { var t, i; n !== e && (t = s.zoom.gesture.$imageEl ? s.zoom.gesture.$imageEl[0] : void 0, i = s.zoom.gesture.$slideEl ? s.zoom.gesture.$slideEl[0] : void 0, s.emit("zoomChange", e, t, i)), n = e } }) }, on: { init: function () { this.params.zoom.enabled && this.zoom.enable() }, destroy: function () { this.zoom.disable() }, touchStart: function (e) { this.zoom.enabled && this.zoom.onTouchStart(e) }, touchEnd: function (e) { this.zoom.enabled && this.zoom.onTouchEnd(e) }, doubleTap: function (e) { this.params.zoom.enabled && this.zoom.enabled && this.params.zoom.toggle && this.zoom.toggle(e) }, transitionEnd: function () { this.zoom.enabled && this.params.zoom.enabled && this.zoom.onTransitionEnd() }, slideChange: function () { this.zoom.enabled && this.params.zoom.enabled && this.params.cssMode && this.zoom.onTransitionEnd() } } }, { name: "lazy", params: { lazy: { enabled: !1, loadPrevNext: !1, loadPrevNextAmount: 1, loadOnTransitionStart: !1, elementClass: "swiper-lazy", loadingClass: "swiper-lazy-loading", loadedClass: "swiper-lazy-loaded", preloaderClass: "swiper-lazy-preloader" } }, create: function () { j.extend(this, { lazy: { initialImageLoaded: !1, load: J.load.bind(this), loadInSlide: J.loadInSlide.bind(this) } }) }, on: { beforeInit: function () { this.params.lazy.enabled && this.params.preloadImages && (this.params.preloadImages = !1) }, init: function () { this.params.lazy.enabled && !this.params.loop && 0 === this.params.initialSlide && this.lazy.load() }, scroll: function () { this.params.freeMode && !this.params.freeModeSticky && this.lazy.load() }, resize: function () { this.params.lazy.enabled && this.lazy.load() }, scrollbarDragMove: function () { this.params.lazy.enabled && this.lazy.load() }, transitionStart: function () { this.params.lazy.enabled && (this.params.lazy.loadOnTransitionStart || !this.params.lazy.loadOnTransitionStart && !this.lazy.initialImageLoaded) && this.lazy.load() }, transitionEnd: function () { this.params.lazy.enabled && !this.params.lazy.loadOnTransitionStart && this.lazy.load() }, slideChange: function () { this.params.lazy.enabled && this.params.cssMode && this.lazy.load() } } }, { name: "controller", params: { controller: { control: void 0, inverse: !1, by: "slide" } }, create: function () { j.extend(this, { controller: { control: this.params.controller.control, getInterpolateFunction: k.getInterpolateFunction.bind(this), setTranslate: k.setTranslate.bind(this), setTransition: k.setTransition.bind(this) } }) }, on: { update: function () { this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline) }, resize: function () { this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline) }, observerUpdate: function () { this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline) }, setTranslate: function (e, t) { this.controller.control && this.controller.setTranslate(e, t) }, setTransition: function (e, t) { this.controller.control && this.controller.setTransition(e, t) } } }, { name: "a11y", params: { a11y: { enabled: !0, notificationClass: "swiper-notification", prevSlideMessage: "Previous slide", nextSlideMessage: "Next slide", firstSlideMessage: "This is the first slide", lastSlideMessage: "This is the last slide", paginationBulletMessage: "Go to slide {{index}}" } }, create: function () { var t = this; j.extend(t, { a11y: { liveRegion: S('') } }), Object.keys(ee).forEach(function (e) { t.a11y[e] = ee[e].bind(t) }) }, on: { init: function () { this.params.a11y.enabled && (this.a11y.init(), this.a11y.updateNavigation()) }, toEdge: function () { this.params.a11y.enabled && this.a11y.updateNavigation() }, fromEdge: function () { this.params.a11y.enabled && this.a11y.updateNavigation() }, paginationUpdate: function () { this.params.a11y.enabled && this.a11y.updatePagination() }, destroy: function () { this.params.a11y.enabled && this.a11y.destroy() } } }, { name: "history", params: { history: { enabled: !1, replaceState: !1, key: "slides" } }, create: function () { j.extend(this, { history: { init: I.init.bind(this), setHistory: I.setHistory.bind(this), setHistoryPopState: I.setHistoryPopState.bind(this), scrollToSlide: I.scrollToSlide.bind(this), destroy: I.destroy.bind(this) } }) }, on: { init: function () { this.params.history.enabled && this.history.init() }, destroy: function () { this.params.history.enabled && this.history.destroy() }, transitionEnd: function () { this.history.initialized && this.history.setHistory(this.params.history.key, this.activeIndex) }, slideChange: function () { this.history.initialized && this.params.cssMode && this.history.setHistory(this.params.history.key, this.activeIndex) } } }, { name: "hash-navigation", params: { hashNavigation: { enabled: !1, replaceState: !1, watchState: !1 } }, create: function () { j.extend(this, { hashNavigation: { initialized: !1, init: q.init.bind(this), destroy: q.destroy.bind(this), setHash: q.setHash.bind(this), onHashCange: q.onHashCange.bind(this) } }) }, on: { init: function () { this.params.hashNavigation.enabled && this.hashNavigation.init() }, destroy: function () { this.params.hashNavigation.enabled && this.hashNavigation.destroy() }, transitionEnd: function () { this.hashNavigation.initialized && this.hashNavigation.setHash() }, slideChange: function () { this.hashNavigation.initialized && this.params.cssMode && this.hashNavigation.setHash() } } }, { name: "autoplay", params: { autoplay: { enabled: !1, delay: 3e3, waitForTransition: !0, disableOnInteraction: !0, stopOnLastSlide: !1, reverseDirection: !1 } }, create: function () { var t = this; j.extend(t, { autoplay: { running: !1, paused: !1, run: M.run.bind(t), start: M.start.bind(t), stop: M.stop.bind(t), pause: M.pause.bind(t), onVisibilityChange: function () { "hidden" === document.visibilityState && t.autoplay.running && t.autoplay.pause(), "visible" === document.visibilityState && t.autoplay.paused && (t.autoplay.run(), t.autoplay.paused = !1) }, onTransitionEnd: function (e) { t && !t.destroyed && t.$wrapperEl && e.target === this && (t.$wrapperEl[0].removeEventListener("transitionend", t.autoplay.onTransitionEnd), t.$wrapperEl[0].removeEventListener("webkitTransitionEnd", t.autoplay.onTransitionEnd), t.autoplay.paused = !1, t.autoplay.running ? t.autoplay.run() : t.autoplay.stop()) } } }) }, on: { init: function () { this.params.autoplay.enabled && (this.autoplay.start(), document.addEventListener("visibilitychange", this.autoplay.onVisibilityChange)) }, beforeTransitionStart: function (e, t) { this.autoplay.running && (t || !this.params.autoplay.disableOnInteraction ? this.autoplay.pause(e) : this.autoplay.stop()) }, sliderFirstMove: function () { this.autoplay.running && (this.params.autoplay.disableOnInteraction ? this.autoplay.stop() : this.autoplay.pause()) }, touchEnd: function () { this.params.cssMode && this.autoplay.paused && !this.params.autoplay.disableOnInteraction && this.autoplay.run() }, destroy: function () { this.autoplay.running && this.autoplay.stop(), document.removeEventListener("visibilitychange", this.autoplay.onVisibilityChange) } } }, { name: "effect-fade", params: { fadeEffect: { crossFade: !1 } }, create: function () { j.extend(this, { fadeEffect: { setTranslate: te.setTranslate.bind(this), setTransition: te.setTransition.bind(this) } }) }, on: { beforeInit: function () { var e; "fade" === this.params.effect && (this.classNames.push(this.params.containerModifierClass + "fade"), j.extend(this.params, e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0 }), j.extend(this.originalParams, e)) }, setTranslate: function () { "fade" === this.params.effect && this.fadeEffect.setTranslate() }, setTransition: function (e) { "fade" === this.params.effect && this.fadeEffect.setTransition(e) } } }, { name: "effect-cube", params: { cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: .94 } }, create: function () { j.extend(this, { cubeEffect: { setTranslate: ie.setTranslate.bind(this), setTransition: ie.setTransition.bind(this) } }) }, on: { beforeInit: function () { var e; "cube" === this.params.effect && (this.classNames.push(this.params.containerModifierClass + "cube"), this.classNames.push(this.params.containerModifierClass + "3d"), j.extend(this.params, e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, resistanceRatio: 0, spaceBetween: 0, centeredSlides: !1, virtualTranslate: !0 }), j.extend(this.originalParams, e)) }, setTranslate: function () { "cube" === this.params.effect && this.cubeEffect.setTranslate() }, setTransition: function (e) { "cube" === this.params.effect && this.cubeEffect.setTransition(e) } } }, { name: "effect-flip", params: { flipEffect: { slideShadows: !0, limitRotation: !0 } }, create: function () { j.extend(this, { flipEffect: { setTranslate: se.setTranslate.bind(this), setTransition: se.setTransition.bind(this) } }) }, on: { beforeInit: function () { var e; "flip" === this.params.effect && (this.classNames.push(this.params.containerModifierClass + "flip"), this.classNames.push(this.params.containerModifierClass + "3d"), j.extend(this.params, e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0 }), j.extend(this.originalParams, e)) }, setTranslate: function () { "flip" === this.params.effect && this.flipEffect.setTranslate() }, setTransition: function (e) { "flip" === this.params.effect && this.flipEffect.setTransition(e) } } }, { name: "effect-coverflow", params: { coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: !0 } }, create: function () { j.extend(this, { coverflowEffect: { setTranslate: ne.setTranslate.bind(this), setTransition: ne.setTransition.bind(this) } }) }, on: { beforeInit: function () { "coverflow" === this.params.effect && (this.classNames.push(this.params.containerModifierClass + "coverflow"), this.classNames.push(this.params.containerModifierClass + "3d"), this.params.watchSlidesProgress = !0, this.originalParams.watchSlidesProgress = !0) }, setTranslate: function () { "coverflow" === this.params.effect && this.coverflowEffect.setTranslate() }, setTransition: function (e) { "coverflow" === this.params.effect && this.coverflowEffect.setTransition(e) } } }, { name: "thumbs", params: { thumbs: { multipleActiveThumbs: !0, swiper: null, slideThumbActiveClass: "swiper-slide-thumb-active", thumbsContainerClass: "swiper-container-thumbs" } }, create: function () { j.extend(this, { thumbs: { swiper: null, init: ae.init.bind(this), update: ae.update.bind(this), onThumbClick: ae.onThumbClick.bind(this) } }) }, on: { beforeInit: function () { var e = this.params.thumbs; e && e.swiper && (this.thumbs.init(), this.thumbs.update(!0)) }, slideChange: function () { this.thumbs.swiper && this.thumbs.update() }, update: function () { this.thumbs.swiper && this.thumbs.update() }, resize: function () { this.thumbs.swiper && this.thumbs.update() }, observerUpdate: function () { this.thumbs.swiper && this.thumbs.update() }, setTransition: function (e) { var t = this.thumbs.swiper; t && t.setTransition(e) }, beforeDestroy: function () { var e = this.thumbs.swiper; e && this.thumbs.swiperCreated && e && e.destroy() } } }]; return void 0 === p.use && (p.use = p.Class.use, p.installModule = p.Class.installModule), p.use(_), p }), function () { var o, e, t, i, s, n, a, r, l, d, c; window.wearable = window.wearable || {}, window.wearable.quote = window.wearable.quote || {}, wearable.quote = (e = !(o = {}), t = null, i = function () { s(), window.removeEventListener("load", i) }, s = function () { e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", o.slidesPerView = "mobile" == e ? 2 : 4, e != t && (n(), t = e) }, n = function () { null != o.swiper && (o.swiper.pagination.destroy(!0), o.swiper.navigation.destroy(!0), o.swiper.destroy(!0), o.swiper = null); (o.quoteWrap.classList.remove("js-swiper-initialized"), null === o.swiper && o.itemArray.length > o.slidesPerView) ? (a(), o.quoteWrap.classList.add("js-swiper-initialized"), o.swiper = new Swiper(o.quoteContainer, { init: !1, slidesPerView: 1, loop: !0, loopFillGroupWithBlank: !0, navigation: { nextEl: o.nextArrow, prevEl: o.prevArrow }, pagination: { el: o.quotePagination, type: "bullets", renderBullet: function () { return '

    • ' } } }), o.swiper.on("slideChange", function () { c.call(this), d.call(this), imageLoader.setResponsiveImage([o.prevArrow.querySelector("img"), o.nextArrow.querySelector("img")]) }), o.swiper.on("init", function () { var t = this, e = this.el.querySelector(".swiper-notification"); e && this.el.removeChild(e), c.call(this), l.call(this), d.call(this); for (var i = 0; i < this.pagination.bullets.length; i++)!function (e) { t.pagination.bullets[i].addEventListener("click", function () { t.slideToLoop(e) }) }(i) }), o.swiper.init()) : r() }, a = function () { o.quoteList.innerHTML = "", o.quoteList.removeAttribute("role"); for (var e = 0, t = [], i = [], s = 0; s < o.itemArray.length; s++)e++, i.push(o.itemArray[s]), e >= o.slidesPerView ? (t.push(i), i = [], e = 0) : s == o.itemArray.length - 1 && t.push(i); for (var n = [], s = 0; s < t.length; s++) { n.push('

      '); for (var a = 0; a < t[s].length; a++)t[s][a].setAttribute("role", "listitem"), n.push(t[s][a].outerHTML), t[s][a].removeAttribute("role"); n.push("

      ") } o.quoteList.innerHTML = n.join("") }, r = function () { o.quoteList.innerHTML = ""; var e = []; o.quoteList.setAttribute("role", "list"); for (var t = 0; t < o.itemArray.length; t++)o.itemArray[t].setAttribute("role", "listitem"), e.push(o.itemArray[t].outerHTML), o.itemArray[t].removeAttribute("role"); o.quoteList.innerHTML = e.join("") }, l = function () { Array.prototype.slice.call(this.pagination.bullets).forEach(function (t, i) { Object.keys(o.paginationTagging).forEach(function (e) { "data-omni" == e || "ga-la" == e ? t.setAttribute(e, o.paginationTagging[e] + (i + 1)) : t.setAttribute(e, o.paginationTagging[e]) }) }) }, d = function () { var n = this, a = Array.prototype.slice.call(this.slides); Array.prototype.slice.call(this.pagination.bullets).forEach(function (e, t) { var i = [], s = a[t + 1].querySelectorAll(".sc-wearable-media-quote__media"); (s = Array.prototype.slice.call(s)).forEach(function (e) { i.push(e.innerText) }), n.realIndex == t ? e.setAttribute("aria-label", i.join(", ") + " Selected") : e.setAttribute("aria-label", i.join(", ")) }) }, c = function () { for (var e = 0; e < this.slides.length; e++)if (e != this.snapIndex) { s = i = void 0; var t = this.slides[e]; t.setAttribute("aria-hidden", !0), t.setAttribute("tabindex", -1); for (var i = t.querySelectorAll("a, button, input, select, iframe"), s = 0; s < i.length; s++)i[s].setAttribute("tabindex", -1), i[s].setAttribute("aria-hidden", !0) } else { a = n = void 0; t = this.slides[e]; t.removeAttribute("aria-hidden"), t.removeAttribute("tabindex"); for (var n = t.querySelectorAll("a, button, input, select, iframe"), a = 0; a < n.length; a++)n[a].removeAttribute("tabindex"), n[a].removeAttribute("aria-hidden") } }, { init: function () { if (o.section = document.querySelector(".sc-wearable-media-quote"), o.section) { o.swiper = null, o.slidesPerView = 3, o.itemArray = [], o.quoteWrap = o.section.querySelector(".sc-wearable-media-quote__wrap"), o.quoteContainer = o.section.querySelector(".sc-wearable-media-quote__container"), o.quoteList = o.section.querySelector(".sc-wearable-media-quote__list"), o.quoteListItems = o.quoteList.querySelectorAll(".sc-wearable-media-quote__list-item"), o.prevArrow = o.section.querySelector(".sc-wearable-media-quote__arrow-prev"), o.nextArrow = o.section.querySelector(".sc-wearable-media-quote__arrow-next"), o.quotePagination = o.section.querySelector(".sc-wearable-media-quote__pagination"), o.paginationTagging = { "data-omni-type": "microsite_pcontentinter", "data-omni": "galaxy-buds2-pro:highlights:media-quote:dot:", "ga-ca": "indication", "ga-ac": "carousel", "ga-la": "galaxy-buds2-pro:highlights:media-quote:dot:" }; for (var e = 0; e < o.quoteListItems.length; e++) { o.itemArray.push(o.quoteListItems[e]); o.quoteList.removeChild(o.quoteListItems[e]) } window.addEventListener("load", i), window.addEventListener("resize", s) } } }), wearable.quote.init() }(), function () { window.buds2pro = window.buds2pro || {}, window.buds2pro.common = window.buds2pro.common || {}; var e, o, t, i, s, n, a, r, l, d, c, u = { convertArray: function (e) { return Array.prototype.slice.call(e) }, getViewPort: function () { var e = window, t = "inner"; return "innerWidth" in window || (t = "client", e = document.documentElement || document.body), { width: e[t + "Width"], height: e[t + "Height"] } }, getCurrentDevice: function () { var e = u.getViewPort().width; return 1024 <= e ? "desktop" : e < 1024 && 768 <= e ? "tablet" : "mobile" }, isInVerticalViewPort: function (e) { e = e.getBoundingClientRect(); return e.top - 200 <= u.getViewPort().height && 0 <= e.bottom }, isInHorizontalViewPort: function (e) { e = e.getBoundingClientRect(); return e.left - 200 <= u.getViewPort().width && 0 <= e.right + 200 }, isVerticalVisible: function (e) { return u.isInVerticalViewPort(e) && !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) }, isHorizontalVisible: function (e) { return u.isInHorizontalViewPort(e) && !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) }, setCookie: function (e, t, i) { var s = new Date; s.setTime(s.getTime() + 60 * i * 60 * 24 * 1e3), document.cookie = e + "=" + t + "; exprires=" + s.toUTCString() + "; path=/" }, getCookie: function (e) { e = document.cookie.match("(^|;) ?" + e + "=([^;]*)(;|$)"); return e ? e[2] : null }, triggerEvent: function (e, t, i, s, n) { var a, i = i || null, s = s || !1, n = n || !0; null == i ? (a = document.createEvent("HTMLEvents")).initEvent(t, s, n) : (a = document.createEvent("CustomEvent")).initCustomEvent(t, s, n, i), e.dispatchEvent(a) }, visibleScroll: function () { !0 === this.scrollFlag && (this.scrollFlag = !1, document.body.style.position = "", document.body.style.width = "", document.body.style.left = "", document.body.style.right = "", document.body.style.top = "", document.body.style.zIndex = "", this.wrapEl.style.paddingRight = "", document.documentElement.style.overflow = "", null !== this.popupEl && (this.popupEl.style.paddingRight = "", this.popupEl = null)), window.scrollTo(0, this.saveScrollTop); var e = document.querySelector("#subnav"), t = (e && (t = e.querySelector(".heading a"), i = e.querySelector(".inside ul"), e = e.querySelector(".gnb"), t && (t.style.marginRight = ""), i && (i.style.marginRight = ""), e && (e.style.marginRight = "")), document.querySelector(".pd-g-header-navigation")); t && (i = t.querySelector(".pd-header-navigation"), e = t.querySelector(".pd-header-navigation__menu-wrap"), t = t.querySelector(".pd-buying-price"), i && (i.style.paddingRight = ""), e && (e.style.paddingRight = ""), t && (t.style.paddingRight = "")); document.querySelector(".floating-navigation") && (i = document.querySelector(".floating-navigation__wrap")) && (i.style.paddingRight = ""); var i, e = document.querySelector(".f_backtotop"), t = (e && (e.style.paddingRight = ""), document.querySelector("#spr-live-chat-app")); t && (i = t.querySelector(".spr-chat__proactive-box"), e = t.querySelector(".spr-chat__trigger-box"), i && (i.style.marginRight = ""), e && (e.style.marginRight = "")) }, hiddenScroll: function (e) { var t = window.innerWidth - document.documentElement.clientWidth, e = (this.saveScrollTop = window.pageYOffset || document.documentElement.scrollTop, this.popupEl = e || null, this.scrollFlag = !0, this.wrapEl = document.querySelector("#wrap"), document.body.style.position = "fixed", document.body.style.width = "100%", document.body.style.left = 0, document.body.style.right = 0, document.body.style.top = -this.saveScrollTop + "px", document.body.style.zIndex = -1, this.wrapEl.style.paddingRight = t + "px", document.documentElement.style.overflow = "hidden", null !== this.popupEl && (this.popupEl.style.paddingRight = t + "px"), document.querySelector("#subnav")), i = (e && (i = e.querySelector(".heading a"), s = e.querySelector(".inside ul"), e = e.querySelector(".gnb"), i && (i.style.marginRight = t + "px"), s && (s.style.marginRight = t + "px"), e && (e.style.marginRight = t + "px")), document.querySelector(".pd-g-header-navigation")); i && (s = i.querySelector(".pd-header-navigation"), e = i.querySelector(".pd-header-navigation__menu-wrap"), i = i.querySelector(".pd-buying-price"), s && (s.style.paddingRight = t + "px"), e && (e.style.paddingRight = t + "px"), i && (i.style.paddingRight = t / 2 + "px")); document.querySelector(".floating-navigation") && (s = document.querySelector(".floating-navigation__wrap")) && (s.style.paddingRight = t + "px"); var s, e = document.querySelector(".f_backtotop"), i = (e && (e.style.paddingRight = t + "px"), document.querySelector("#spr-live-chat-app")); i && (s = i.querySelector(".spr-chat__proactive-box"), e = i.querySelector(".spr-chat__trigger-box"), s && (s.style.marginRight = t + "px"), e && (e.style.marginRight = t + "px")) }, closest: function (e, t) { do { if (e == document.documentElement) return null; if (e.matches ? e.matches(t) : e.msMatchesSelector(t)) return e } while (null !== (e = e.parentElement || e.parentNode) || 1 === e.nodeType); return null }, onPopupAccessibility: function (e) { e.setAttribute("aria-hidden", !0), e.setAttribute("tabindex", -1); for (var t = e.querySelectorAll("a, button, input, select, iframe"), i = 0; i < t.length; i++) { var s = t[i].getAttribute("aria-hidden"), n = t[i].getAttribute("tabindex"); null != s && t[i].setAttribute("data-prev-aria-hidden", s), null != n && t[i].setAttribute("data-prev-tabindex", n), t[i].setAttribute("tabindex", -1), t[i].setAttribute("aria-hidden", !0) } }, offPopupAccessibility: function (e) { e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex"); for (var t = e.querySelectorAll("a, button, input, select, iframe"), i = 0; i < t.length; i++) { var s = t[i].getAttribute("data-prev-aria-hidden"), n = t[i].getAttribute("data-prev-tabindex"); null != s ? t[i].setAttribute("aria-hidden", s) : t[i].removeAttribute("aria-hidden"), null != n ? t[i].setAttribute("tabindex", n) : t[i].removeAttribute("tabindex"), t[i].removeAttribute("data-prev-aria-hidden"), t[i].removeAttribute("data-prev-tabindex") } }, onAccessibility: function (e) { e.setAttribute("aria-hidden", !0), e.setAttribute("tabindex", -1); for (var t = e.querySelectorAll("a, button, input, select, iframe"), i = 0; i < t.length; i++)t[i].setAttribute("tabindex", -1), t[i].setAttribute("aria-hidden", !0) }, offAccessibility: function (e) { e.removeAttribute("aria-hidden"), e.removeAttribute("tabindex"); for (var t = e.querySelectorAll("a, button, input, select, iframe"), i = 0; i < t.length; i++)t[i].removeAttribute("tabindex"), t[i].removeAttribute("aria-hidden") }, extend: function (t, i) { return Object.keys(i).forEach(function (e) { t[e] = i[e] }), t }, getHeight: function (e) { var t, i, s; return e ? (t = (i = window.getComputedStyle(e)).display, i = parseInt(i.maxHeight), s = 0, "none" != t && 0 != i ? e.offsetHeight : (e.style.position = "absolute", e.style.visibility = "hidden", e.style.display = "block", s = e.offsetHeight, e.style.display = "", e.style.position = "", e.style.visibility = "", s)) : 0 }, setLastActiveItem: function (e) { this.lastActiveItem = e || null }, getLastActiveItem: function () { return null != this.lastActiveItem ? this.lastActiveItem : null }, isRTL: function () { return document.documentElement.classList.contains("rtl") }, checkRegion: function () { for (var e = document.getElementsByTagName("meta"), t = "", i = 0; i < e.length; i++)if ("sitecode" == e[i].getAttribute("name")) return t = e[i].getAttribute("content"); if ("" == t) return -1 < document.location.pathname.indexOf("global") ? "global" : "jp" }, isLowNetwork: function () { var e = "global" == u.checkRegion() || "jp" == u.checkRegion() ? "___GALAXY_SPEED" : "__COM_SPEED"; return null == u.getCookie(e) || null == u.getCookie(e) ? null : "L" == u.getCookie(e) || "H" != u.getCookie(e) && void 0 }, getNavHeight: function () { var e, t, i = 0, s = document.querySelector(".pd-g-header-navigation") || document.querySelector("#subnav") || document.querySelector(".sticky-menu") || document.querySelector(".pd-g-floating-nav"); return i = s ? s.classList.contains("pd-g-header-navigation") ? (t = (e = s.querySelector(".pd-header-navigation")).querySelector(".pd-header-navigation__menu-wrap"), e.clientHeight + t.clientHeight) : s.clientHeight : i }, getQueryString: function (e) { var t = (s = location.href).indexOf("?") + 1, i = -1 < s.indexOf("#") ? s.indexOf("#") + 1 : s.length; if (0 == t) return ""; for (var s = (s = s.substring(t, i)).split("&"), n = "", a = 0; a < s.length; a++) { var o = s[a].split("="); if (2 != o.length) break; o[0] == e && (n = o[1]); break } return n }, customParallax: function (e) { var t = e.mode || "center", i = e.delay || 0, s = e.ease || "Power0.easeNone", n = e.transZ || 0, a = e.duration || .3, o = e.distance || 0, r = e.correction || 0, l = e.windowCorrection ? window.innerHeight * e.windowCorrection : 0, d = e.direction || 1, c = e.activeElement, u = e.targetElement || c, h = e.wrapperElement || c, e = e.unit || "px", p = window.pageYOffset, m = window.pageYOffset + window.innerHeight, c = c.getBoundingClientRect(), v = p + h.getBoundingClientRect().top, h = v + h.getBoundingClientRect().height, f = window.innerHeight + c.height + 2 * l, g = "center" == t ? c.top - (window.innerHeight - c.height) / 2 : c.top - window.innerHeight; "px" == e && (o = c.height * o / 100), v <= m + l && p - l <= h && TweenMax.to(u, a, { y: r + g * ("center" == t ? 2 * o : o) / f * d + e, z: n, ease: s, delay: i }) }, isTouchDevice: ((h = "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch) ? document.documentElement.classList.add("isTouchDevice") : document.documentElement.classList.add("isNotTouchDevice"), h), isIosDevice: ((h = /iPad|iPhone|iPod/.test(navigator.userAgent)) ? document.documentElement.classList.add("isIosDevice") : document.documentElement.classList.add("isNotIosDevice"), h), isBrokenFixed: function () { var e = window.innerWidth, t = window.innerHeight, i = !1; return document.documentElement.classList.remove("is-broken-fixed"), 1440 <= e && t <= 540 || e <= 810 && t / e < .5277 ? (document.documentElement.classList.add("is-broken-fixed"), i = !0) : document.documentElement.classList.remove("is-broken-fixed"), i }, isIEorEdge: function () { var e, t = navigator.userAgent.toLowerCase(); if ("Microsoft Internet Explorer" == navigator.appName) e = "msie "; else if (-1 < t.search("trident")) e = "trident/.*rv:"; else { if (!(-1 < t.search("edge/"))) return -1; e = "edge/" } return null != new RegExp(e + "([0-9]{1,})(\\.{0,}[0-9]{0,1})").exec(t) ? (document.documentElement.classList.add("isIEorEdge"), parseFloat(RegExp.$1 + RegExp.$2)) : -1 }(), checkGlobal: void (0 === location.pathname.indexOf("/global/galaxy") || !0 === window.IS_CAMPAIGN ? document.documentElement.classList.add("global") : document.documentElement.classList.add("dotcom")), checkOS: (h = (h = navigator.appVersion.match(/(mac|win|linux)/i)) ? h[1].toLowerCase() : "", void document.documentElement.classList.add(h)), isFireFox: void (/firefox/i.test(navigator.userAgent) && document.documentElement.classList.add("firefox")), isWebkit: void (/applewebkit/i.test(navigator.userAgent) && document.documentElement.classList.add("webkit")), isChrome: void (/chrome/i.test(navigator.userAgent) && document.documentElement.classList.add("chrome")), isOpera: void (/opera/i.test(navigator.userAgent) && document.documentElement.classList.add("opera")), isIos: void (/ip(ad|hone|od)/i.test(navigator.userAgent) && document.documentElement.classList.add("ios")), isCrIos: void (/crios/i.test(navigator.userAgent) && document.documentElement.classList.add("crios")), isAndroid: void (/android/i.test(navigator.userAgent) && document.documentElement.classList.add("android")), isSafari: (h = /applewebkit/i.test(navigator.userAgent), e = /chrome/i.test(navigator.userAgent), void (h && !e && document.documentElement.classList.add("safari"))), isHuawei: void (/HUAWEICLT/i.test(navigator.userAgent) && document.documentElement.classList.add("huawei")), isUCBrowser: void (/UCBrowser/i.test(navigator.userAgent) && document.documentElement.classList.add("ucbrowser")) }, h = (t = !(o = {}), i = null, s = function () { n(), a(), u.isLowNetwork() && document.documentElement.classList.add("low_network"), document.documentElement.classList.add("load"), window.removeEventListener("load", s) }, n = function () { t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(o.resizeTimeout), o.resizeTimeout = setTimeout(function () { u.isBrokenFixed() }, 100), t != i && (document.documentElement.classList.add(t), document.documentElement.classList.remove(i), i = t) }, a = function () { for (var e = window.pageYOffset, t = e + window.innerHeight, i = 0; i < o.allClickables.length; i++) { var s = o.allClickables[i], n = e + s.getBoundingClientRect().top, a = e + u.getNavHeight(); a <= n && n <= t ? s.isVisible = !0 : (n < a || t < n) && (s.isVisible = !1) } }, r = function (e) { e.preventDefault(), e.stopPropagation(); var t = this, e = parseFloat(this.innerText), i = document.querySelectorAll("#desc-section li")[e - 1], s = i.innerText, n = (i.innerHTML = '' + s + "", function () { l.call(t), i.removeEventListener("focusin", n) }), a = function () { i.innerHTML = s, i.removeAttribute("tabindex"), i.removeEventListener("focusout", a) }; i.addEventListener("focusin", n), i.addEventListener("focusout", a), i.querySelector("a").focus() }, l = function (e) { var s; !document.documentElement.classList.contains("ios") && e && null == e.relatedTarget || ((s = this).isClicked || this.isVisible || d(this) || setTimeout(function () { var e = window.pageYOffset, t = s.getBoundingClientRect(), i = (window.innerHeight - u.getNavHeight()) / 2, e = e - u.getNavHeight() + t.top + t.height / 2; window.scrollTo(0, e - i) }, 10), this.isClicked = !1) }, d = function (e) { var e = e.parentNode, t = e.getAttribute("id"); return "contents" != t && e != document.body && (!("subnav" != t && !e.classList.contains("sc-s22ultra-popup")) || d(e)) }, c = function () { this.isClicked = !0 }, { init: function () { o.resizeTimeout = null, o.supClicker = document.querySelectorAll("a.click_sup"), o.contents = document.getElementById("contents") || document.getElementById("content"), o.allClickables = o.contents.querySelectorAll("a, button, input, select"); var e = 0; for (window.addEventListener("load", s), window.addEventListener("resize", n), window.addEventListener("scroll", a), e = 0; e < o.allClickables.length; e++) { var t = o.allClickables[e]; t.isClicked = !1, t.isVisible = !1, t.addEventListener("focusin", l), t.addEventListener("mousedown", c) } for (e = 0; e < o.supClicker.length; e++)o.supClicker[e].addEventListener("click", r); var i = document.documentElement.classList; "global" == u.checkRegion() || i.contains("mac") || i.contains("safari") || ANIUTIL.scrollController({ speed: 120, duration: .5 }); ANIUTIL && ANIUTIL.imageLoader({ lazyClass: ".js-img-src", responsiveClass: ".js-res-img", loadOption: [{ resolution: 1920, attribute: "data-src-pc" }, { resolution: 1080, attribute: "data-src-tablet" }, { resolution: 767, attribute: "data-src-mobile" }, { resolution: 360, attribute: "data-src-mobile-min" }], visiblePoint: 1 }) } }); window.buds2pro.common.utils = u, h.init() }(), function () { var a, t, e, i, s, n, o, r, l, d, c, u, h, p, m, v, f; window.buds2pro = window.buds2pro || {}, window.buds2pro.audioPopup = window.buds2pro.audioPopup || {}, buds2pro.audioPopup = (a = {}, t = window.buds2pro.common.utils, e = !1, i = null, s = function () { n(), window.removeEventListener("load", s) }, n = function () { e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(a.resizeTimeout), a.resizeTimeout = setTimeout(function () { u() }, 100), e != i && (o(), i = e) }, o = function () { null != a.swiper && (a.swiper.destroy(!0), a.swiper = null, a.isSwiperInit = !1); null == a.swiper && (a.swiper = new Swiper(a.swiperEl, { init: !1, slidesPerView: 1, navigation: { nextEl: a.swiperNavNextArrow, prevEl: a.swiperNavPrevArrow }, pagination: { el: a.swiperPagination, type: "bullets", renderBullet: function () { return '

    • ' } } }), a.swiper.on("slideChange", function () { l.call(this), d.call(this), m.call(this), v.call(this), f.call(this) }), a.swiper.on("init", function () { var t = this, e = this.el.querySelector(".swiper-notification"); e && this.el.removeChild(e), l.call(this), d.call(this), m.call(this), v.call(this), f.call(this); for (var i = 0; i < this.pagination.bullets.length; i++)!function (e) { t.pagination.bullets[i].addEventListener("click", function () { t.slideTo(e) }) }(i); a.isSwiperInit = !0 }), a.swiper.init()) }, l = function () { for (var e = 0; e < this.slides.length; e++)e != this.activeIndex ? t.onAccessibility(this.slides[e]) : t.offAccessibility(this.slides[e]) }, d = function () { null != a.swiper && (this.isBeginning || this.isEnd ? !this.isBeginning && this.isEnd ? (t.onAccessibility(a.swiperNavNextArrow), t.offAccessibility(a.swiperNavPrevArrow)) : this.isBeginning && !this.isEnd && (t.offAccessibility(a.swiperNavNextArrow), t.onAccessibility(a.swiperNavPrevArrow)) : (t.offAccessibility(a.swiperNavNextArrow), t.offAccessibility(a.swiperNavPrevArrow))) }, c = function () { a.popupEl.classList.remove("sc-buds-audio-popup--open-mo"), a.moPopupOpenBtn && a.moPopupOpenBtn.focus(), t.offPopupAccessibility(a.popupVisualWrap), t.offAccessibility(a.moPopupOpenBtn), t.offAccessibility(a.popupCloseBtn), t.onAccessibility(a.moPopupEl) }, u = function () { var t = [], i = (a.popupItemContents.forEach(function (e) { e = e.querySelector(".sc-buds-step__item-description"); e.style.height = "", t.push(e.clientHeight) }), t.reduce(function (e, t) { return Math.max(e, t) })); a.popupItemContents.forEach(function (e) { e.querySelector(".sc-buds-step__item-description").style.height = i + "px" }) }, h = function (e) { ("keydown" == e.type && 13 == e.keyCode || "click" == e.type) && (e.preventDefault(), clearTimeout(a.arrowTimeout), a.arrowTimeout = setTimeout(function () { !a.swiper.isBeginning && a.swiper.isEnd ? a.swiperNavPrevArrow.focus() : a.swiper.isBeginning && !a.swiper.isEnd && a.swiperNavNextArrow.focus() }, 50)) }, p = function () { a.popupEl.classList.contains("sc-buds-audio-popup--open-mo") || (a.popupEl.classList.add("sc-buds-audio-popup--open-mo"), t.offAccessibility(a.moPopupEl), t.onPopupAccessibility(a.popupVisualWrap), t.onAccessibility(a.moPopupOpenBtn), t.onAccessibility(a.popupCloseBtn), a.moPopupCloseBtns[0].focus()) }, m = function () { var i = this; Array.prototype.slice.call(this.pagination.bullets).forEach(function (e, t) { i.realIndex == t ? e.setAttribute("aria-label", "step" + (t + 1) + " selected") : e.setAttribute("aria-label", "step" + (t + 1)) }) }, v = function () { var n = this; Array.prototype.slice.call(this.pagination.bullets).forEach(function (i, s) { Object.keys(a.paginationTagging).forEach(function (e) { var t; "data-omni" == e || "ga-la" == e ? (t = (t = a.paginationTagging[e].split(":dot"))[0] + (n.realIndex + 1) + ":dot" + t[1] + (s + 1), i.setAttribute(e, t)) : i.setAttribute(e, a.paginationTagging[e]) }) }) }, f = function () { var i = this; Object.keys(a.navArrowTagging).forEach(function (e) { var t; "data-omni" == e || "ga-la" == e ? (t = (t = a.navArrowTagging[e].split(":arrow"))[0] + (i.realIndex + 1) + ":arrow" + t[1], a.swiperNavPrevArrow.setAttribute(e, t + i.realIndex), a.swiperNavNextArrow.setAttribute(e, t + (i.realIndex + 2))) : (a.swiperNavPrevArrow.setAttribute(e, a.navArrowTagging[e]), a.swiperNavNextArrow.setAttribute(e, a.navArrowTagging[e])) }) }, { init: function () { a.section = document.querySelector(".sc-buds-audio-popup__wrapper"), a.section && (a.swiper = null, a.isSwiperInit = !1, a.arrowTimeout = null, a.wrapEl = document.querySelector("#wrap"), a.saveScrollTop = 0, a.swiperEl = a.section.querySelector(".sc-buds-step__visual-swiper"), a.swiperNavNextArrow = a.section.querySelector(".swiper-button-next"), a.swiperNavPrevArrow = a.section.querySelector(".swiper-button-prev"), a.swiperPagination = a.section.querySelector(".sc-buds-step__indicator-list"), a.popupEl = a.section.querySelector(".sc-buds-audio-popup"), a.popupCloseBtn = a.popupEl.querySelector(".sc-buds-audio-popup__close-cta"), a.popupItemContents = t.convertArray(a.popupEl.querySelectorAll(".sc-buds-step__item-content")), a.popupVisualWrap = a.popupEl.querySelector(".sc-buds-step__visual-wrap"), a.moPopupEl = a.section.querySelector(".sc-buds-step__text"), a.moPopupOpenBtn = a.popupEl.querySelector(".sc-buds-step__mo-popup-cta"), a.moPopupCloseBtns = t.convertArray(a.moPopupEl.querySelectorAll(".sc-buds-step__mo-close")), a.popupDimmed = a.section.querySelector(".sc-buds-audio-popup__dimmed"), a.scBuds = document.createElement("div"), a.scBuds.classList.add("sc-buds"), a.scBuds.appendChild(a.section), document.body.appendChild(a.scBuds), a.paginationTagging = { "data-omni-type": "microsite_pcontentinter", "data-omni": "galaxy-buds2-pro:highlights:360-audio^popup-step:dot:step", "ga-ca": "indication", "ga-ac": "carousel", "ga-la": "galaxy-buds2-pro:highlights:360-audio^popup-step:dot:step" }, a.navArrowTagging = { "data-omni-type": "microsite_pcontentinter", "data-omni": "galaxy-buds2-pro:highlights:360-audio^popup-step:arrow:step", "ga-ca": "indication", "ga-ac": "carousel", "ga-la": "galaxy-buds2-pro:highlights:360-audio^popup-step:arrow:step" }, window.addEventListener("load", s), window.addEventListener("resize", n), a.swiperNavNextArrow.addEventListener("click", h), a.swiperNavPrevArrow.addEventListener("click", h), a.swiperNavNextArrow.addEventListener("keydown", h), a.swiperNavPrevArrow.addEventListener("keydown", h), a.popupCloseBtn.addEventListener("click", r), a.popupDimmed.addEventListener("click", r), a.moPopupCloseBtns.forEach(function (e) { e.addEventListener("click", c) }), a.moPopupOpenBtn.addEventListener("click", p)) }, showAudioPopupLayer: function () { t.hiddenScroll(), a.popupEl.classList.add("sc-buds-audio-popup--init"), document.documentElement.classList.add("no-scroll"), document.documentElement.classList.add("is-layer-popup-opened"), setTimeout(function () { t.onPopupAccessibility(document.querySelector("#wrap")), a.popupEl.classList.add("sc-buds-audio-popup--open"), "mobile" == e && a.popupEl.classList.add("sc-buds-audio-popup--open-mo") }, 150), setTimeout(function () { t.offAccessibility(a.scBuds), null != a.swiper && d.call(a.swiper), "mobile" == e || a.popupEl.classList.contains("sc-buds-audio-popup--open-mo") ? (t.offAccessibility(a.moPopupEl), t.onPopupAccessibility(a.popupVisualWrap), t.onAccessibility(a.moPopupOpenBtn), t.onAccessibility(a.popupCloseBtn), a.moPopupCloseBtns[0].focus()) : a.popupCloseBtn.focus() }, 300) }, hideAudioPopupLayer: r = function () { t.visibleScroll(), a.popupEl.classList.remove("sc-buds-audio-popup--open"), a.popupEl.classList.remove("sc-buds-audio-popup--open-mo"), document.documentElement.classList.remove("no-scroll"), document.documentElement.classList.remove("is-layer-popup-opened"), setTimeout(function () { a.popupEl.classList.remove("sc-buds-audio-popup--init"), t.offPopupAccessibility(document.querySelector("#wrap")) }, 150), setTimeout(function () { t.getLastActiveItem() && t.getLastActiveItem().focus(), t.onAccessibility(a.scBuds), null != a.swiper && a.swiper.slideTo(0, 0) }, 300) } }) }(), function () { var s, t, e, i, n, a, o, r, l, d, c, u, h, p, m, v, f; window.buds2pro = window.buds2pro || {}, window.buds2pro.recordingPopup = window.buds2pro.recordingPopup || {}, buds2pro.recordingPopup = (s = {}, t = window.buds2pro.common.utils, e = !1, i = null, n = function () { a(), window.removeEventListener("load", n) }, a = function () { e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(s.resizeTimeout), s.resizeTimeout = setTimeout(function () { u() }, 100), e != i && (o(), i = e) }, o = function () { null != s.swiper && (s.swiper.destroy(!0), s.swiper = null, s.isSwiperInit = !1); null == s.swiper && (s.swiper = new Swiper(s.swiperEl, { init: !1, slidesPerView: 1, navigation: { nextEl: s.swiperNavNextArrow, prevEl: s.swiperNavPrevArrow }, pagination: { el: s.swiperPagination, type: "bullets", renderBullet: function () { return '

    • ' } } }), s.swiper.on("slideChange", function () { l.call(this), d.call(this), m.call(this), v.call(this), f.call(this) }), s.swiper.on("init", function () { var t = this, e = this.el.querySelector(".swiper-notification"); e && this.el.removeChild(e), l.call(this), d.call(this), m.call(this), v.call(this), f.call(this); for (var i = 0; i < this.pagination.bullets.length; i++)!function (e) { t.pagination.bullets[i].addEventListener("click", function () { t.slideTo(e) }) }(i); s.isSwiperInit = !0 }), s.swiper.init()) }, l = function () { for (var e = 0; e < this.slides.length; e++)e != this.activeIndex ? t.onAccessibility(this.slides[e]) : t.offAccessibility(this.slides[e]) }, d = function () { null != s.swiper && (this.isBeginning || this.isEnd ? !this.isBeginning && this.isEnd ? (t.onAccessibility(s.swiperNavNextArrow), t.offAccessibility(s.swiperNavPrevArrow)) : this.isBeginning && !this.isEnd && (t.offAccessibility(s.swiperNavNextArrow), t.onAccessibility(s.swiperNavPrevArrow)) : (t.offAccessibility(s.swiperNavNextArrow), t.offAccessibility(s.swiperNavPrevArrow))) }, c = function () { s.popupEl.classList.remove("sc-buds-audio-popup--open-mo"), s.moPopupOpenBtn && s.moPopupOpenBtn.focus(), t.offPopupAccessibility(s.popupVisualWrap), t.offAccessibility(s.moPopupOpenBtn), t.offAccessibility(s.popupCloseBtn), t.onAccessibility(s.moPopupEl) }, u = function () { var t = [""], i = (s.popupItemContents.forEach(function (e) { e = e.querySelector(".sc-buds-step__item-description"); e.style.height = "", t.push(e.clientHeight) }), t.reduce(function (e, t) { return Math.max(e, t) })); s.popupItemContents.forEach(function (e) { e.querySelector(".sc-buds-step__item-description").style.height = i + "px" }) }, h = function (e) { ("keydown" == e.type && 13 == e.keyCode || "click" == e.type) && (e.preventDefault(), clearTimeout(s.arrowTimeout), s.arrowTimeout = setTimeout(function () { !s.swiper.isBeginning && s.swiper.isEnd ? s.swiperNavPrevArrow.focus() : s.swiper.isBeginning && !s.swiper.isEnd && s.swiperNavNextArrow.focus() }, 50)) }, p = function () { s.popupEl.classList.contains("sc-buds-audio-popup--open-mo") || (s.popupEl.classList.add("sc-buds-audio-popup--open-mo"), t.offAccessibility(s.moPopupEl), t.onPopupAccessibility(s.popupVisualWrap), t.onAccessibility(s.moPopupOpenBtn), t.onAccessibility(s.popupCloseBtn), s.moPopupCloseBtns[0].focus()) }, m = function () { var i = this; Array.prototype.slice.call(this.pagination.bullets).forEach(function (e, t) { i.realIndex == t ? e.setAttribute("aria-label", "step" + (t + 1) + " selected") : e.setAttribute("aria-label", "step" + (t + 1)) }) }, v = function () { Array.prototype.slice.call(this.pagination.bullets).forEach(function (t, i) { setTimeout(function () { Object.keys(s.paginationTagging).forEach(function (e) { "data-omni" == e || "ga-la" == e ? t.setAttribute(e, s.paginationTagging[e] + (i + 1)) : t.setAttribute(e, s.paginationTagging[e]) }) }, 0) }) }, f = function () { var t = this; Object.keys(s.navArrowTagging).forEach(function (e) { "data-omni" == e || "ga-la" == e ? (s.swiperNavPrevArrow.setAttribute(e, s.navArrowTagging[e] + t.realIndex), s.swiperNavNextArrow.setAttribute(e, s.navArrowTagging[e] + (t.realIndex + 2))) : (s.swiperNavPrevArrow.setAttribute(e, s.navArrowTagging[e]), s.swiperNavNextArrow.setAttribute(e, s.navArrowTagging[e])) }) }, { init: function () { s.section = document.querySelector(".sc-buds-recording-popup__wrapper"), s.section && (s.swiper = null, s.isSwiperInit = !1, s.arrowTimeout = null, s.wrapEl = document.querySelector("#wrap"), s.saveScrollTop = 0, s.swiperEl = s.section.querySelector(".sc-buds-step__visual-swiper"), s.swiperNavNextArrow = s.section.querySelector(".swiper-button-next"), s.swiperNavPrevArrow = s.section.querySelector(".swiper-button-prev"), s.swiperPagination = s.section.querySelector(".sc-buds-step__indicator-list"), s.popupEl = s.section.querySelector(".sc-buds-audio-popup"), s.popupCloseBtn = s.popupEl.querySelector(".sc-buds-audio-popup__close-cta"), s.popupItemContents = t.convertArray(s.popupEl.querySelectorAll(".sc-buds-step__item-content")), s.popupVisualWrap = s.popupEl.querySelector(".sc-buds-step__visual-wrap"), s.moPopupEl = s.section.querySelector(".sc-buds-step__text"), s.moPopupOpenBtn = s.popupEl.querySelector(".sc-buds-step__mo-popup-cta"), s.moPopupCloseBtns = t.convertArray(s.moPopupEl.querySelectorAll(".sc-buds-step__mo-close")), s.popupDimmed = s.section.querySelector(".sc-buds-audio-popup__dimmed"), s.scBuds = document.createElement("div"), s.scBuds.classList.add("sc-buds"), s.scBuds.appendChild(s.section), document.body.appendChild(s.scBuds), s.paginationTagging = { "data-omni-type": "microsite_pcontentinter", "data-omni": "galaxy-buds2-pro:highlights:360-audio-recording^popup:dot:", "ga-ca": "indication", "ga-ac": "carousel", "ga-la": "galaxy-buds2-pro:highlights:360-audio-recording^popup:dot:" }, s.navArrowTagging = { "data-omni-type": "microsite_pcontentinter", "data-omni": "galaxy-buds2-pro:highlights:360-audio-recording^popup:arrow:", "ga-ca": "indication", "ga-ac": "carousel", "ga-la": "galaxy-buds2-pro:highlights:360-audio-recording^popup:arrow:" }, window.addEventListener("load", n), window.addEventListener("resize", a), s.swiperNavNextArrow.addEventListener("click", h), s.swiperNavPrevArrow.addEventListener("click", h), s.swiperNavNextArrow.addEventListener("keydown", h), s.swiperNavPrevArrow.addEventListener("keydown", h), s.popupCloseBtn.addEventListener("click", r), s.popupDimmed.addEventListener("click", r), s.moPopupCloseBtns.forEach(function (e) { e.addEventListener("click", c) }), s.moPopupOpenBtn.addEventListener("click", p)) }, showAudioPopupLayer: function () { t.hiddenScroll(), s.popupEl.classList.add("sc-buds-audio-popup--init"), document.documentElement.classList.add("no-scroll"), document.documentElement.classList.add("is-layer-popup-opened"), setTimeout(function () { t.onPopupAccessibility(document.querySelector("#wrap")), s.popupEl.classList.add("sc-buds-audio-popup--open"), "mobile" == e && s.popupEl.classList.add("sc-buds-audio-popup--open-mo") }, 150), setTimeout(function () { t.offAccessibility(s.scBuds), null != s.swiper && d.call(s.swiper), "mobile" == e || s.popupEl.classList.contains("sc-buds-audio-popup--open-mo") ? (t.offAccessibility(s.moPopupEl), t.onPopupAccessibility(s.popupVisualWrap), t.onAccessibility(s.moPopupOpenBtn), t.onAccessibility(s.popupCloseBtn), s.moPopupCloseBtns[0].focus()) : s.popupCloseBtn.focus() }, 300) }, hideAudioPopupLayer: r = function () { t.visibleScroll(), s.popupEl.classList.remove("sc-buds-audio-popup--open"), s.popupEl.classList.remove("sc-buds-audio-popup--open-mo"), document.documentElement.classList.remove("no-scroll"), document.documentElement.classList.remove("is-layer-popup-opened"), setTimeout(function () { s.popupEl.classList.remove("sc-buds-audio-popup--init"), t.offPopupAccessibility(document.querySelector("#wrap")) }, 150), setTimeout(function () { t.getLastActiveItem() && t.getLastActiveItem().focus(), t.onAccessibility(s.scBuds), null != s.swiper && s.swiper.slideTo(0, 0) }, 300) } }) }(), function () { var a, o, r, e, t, s; window.buds2pro = window.buds2pro || {}, window.buds2pro.subnav = window.buds2pro.subnav || {}, buds2pro.subnav = (a = {}, o = window.buds2pro.common.utils, r = window.pageYOffset, e = function () { t() }, t = function () { r = window.pageYOffset; var n = (window.innerHeight + o.getNavHeight()) / 2; a.visSections.forEach(function (e) { var i, t = e.getBoundingClientRect(), s = r + t.top, t = r + t.bottom; s <= r + n && r + n <= t && (i = e.dataset.visIndex, a.navItems.forEach(function (e, t) { t != i && e.parentNode.classList.contains("on") && e.parentNode.classList.remove("on") }), (s = a.navItems[i].parentNode).classList.contains("on") || (s.classList.add("on"), !a.section.classList.contains("hold") && s.classList.contains("on") && GALAXY.header && GALAXY.header.resetSubNav())) }) }, s = function (e) { e.preventDefault(); var t, i, s, n, e = this.parentNode; a.section.classList.contains("hold") || e.classList.contains("on") || (a.navItems.forEach(function (e) { e.parentNode.classList.remove("on") }), e.classList.contains("on") || e.classList.add("on"), e = this.dataset.navIndex, t = (e = a.navDests[e]).getBoundingClientRect(), i = parseInt(window.getComputedStyle(e).paddingTop), s = (window.innerHeight - (t.height - i) + o.getNavHeight()) / 2, n = 0, (n = e.classList.contains("js-nav-center") ? r + t.top + i - s : r + t.top - o.getNavHeight()) < 150 && (n = 0), a.section.classList.add("hold"), GALAXY.setSmoothScrollTop(n, 1500, function () { a.section.classList.contains("hold") && a.section.classList.remove("hold"), GALAXY.header && GALAXY.header.resetSubNav() })) }, { init: function () { var i; a.section = document.getElementById("subnav"), a.section && (a.navItems = o.convertArray(a.section.querySelectorAll("ul li>a")), a.navDests = document.querySelectorAll('[class*="js-nav-"]'), a.visSections = o.convertArray(document.querySelectorAll(".js-visible")), a.visCount = -1, a.visSections.forEach(function (e) { e.dataset.visIndex = e.classList.contains("js-count") ? ++a.visCount : a.visCount }), t(), window.addEventListener("resize", e), window.addEventListener("scroll", t), i = window.location.hash, a.navItems.forEach(function (e, t) { -1 < e.getAttribute("href").indexOf("#") && (e.dataset.navIndex = t, e.addEventListener("click", s)), i && -1 < e.getAttribute("href").indexOf(i) && (e.parentNode.classList.remove("on"), e.click()) })) } }) }(), function () { function e() { if (document.documentElement.classList.remove("is-layer-popup-opened"), p.visibleScroll(), h.layer) { h.wrap.removeAttribute("aria-hidden"), h.layer.parentNode.removeChild(h.layer), h.layer = null; for (var e = 0; e < h.baseContentsClickable.length; e++) { var t = h.baseContentsClickable[e]; var i = t.getAttribute("data-prev-tabindex"); var s = t.getAttribute("data-prev-aria-hidden"); if (!!i) t.setAttribute("tabindex", i); else t.removeAttribute("tabindex"); if (!!s) t.setAttribute("aria-hidden", s); else t.removeAttribute("aria-hidden"); t.removeAttribute("data-prev-tabindex"); t.removeAttribute("data-prev-aria-hidden") } setTimeout(function () { h.opener && h.opener.focus() }, 1100) } } function u(e) { return "https://www.youtube.com/embed/" + e + "?showinfo=0&wmode=transparent&autoplay=1&rel=0" } var h, p, t, i, s, m; window.buds2pro = window.buds2pro || {}, window.buds2pro.video = window.buds2pro.video || {}, buds2pro.video = (h = {}, p = window.buds2pro.common.utils, t = !1, i = null, s = function () { (t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile") != i && (clearTimeout(h.responsiveTimeout), h.responsiveTimeout = setTimeout(function () { p.offPopupAccessibility(h.contents), document.documentElement.classList.contains("is-layer-popup-opened") && p.onPopupAccessibility(h.contents) }, 500), i = t) }, m = function () { e(), window.buds2pro.compare && window.buds2pro.compare.setSlideAccessibility() }, { init: function () { h.wrap = document.querySelector("#wrap"), h.wrap && (h.contents = document.querySelector("#contents"), h.responsiveTimeout = null, h.layer = null, h.opener = null, h.baseContentsClickable = null, h.closeButton = null, window.addEventListener("resize", s)) }, showVideoLayer: function (e, t, i) { document.documentElement.classList.add("is-layer-popup-opened"), p.hiddenScroll(); e = e.split("?v=")[1]; if (h.wrap.setAttribute("aria-hidden", "true"), h.baseContentsClickable = document.documentElement.querySelectorAll("a, input, select, textarea, button, video, iframe"), !h.layer) { h.layer = document.createElement("div"), h.layer.setAttribute("id", "layer-youtube"), h.layer.classList.add("m_layer-youtube"), h.layer.classList.add("show"), h.layer.innerHTML = ['

      ', '', 'Movie player Layer', '

      ', '', '', "", '

      ', '

      ', "

      ", "

      ", "

      "].join(""), h.layer.addEventListener("touchmove", function (e) { e.preventDefault() }), h.closeButton = h.layer.querySelector('button[class*="_btn_close"]'), h.closeButton.addEventListener("click", m); for (var s = 0; s < h.baseContentsClickable.length; s++) { var n = h.baseContentsClickable[s]; var a = n.getAttribute("tabindex"); var o = n.getAttribute("aria-hidden"); if (!!a) n.setAttribute("data-prev-tabindex", a); if (!!o) n.setAttribute("data-prev-aria-hidden", o); n.setAttribute("tabindex", "-1"); n.setAttribute("aria-hidden", "true") } document.body.appendChild(h.layer); e = t; if (h.closeButton != null && !(window.GALAXY && window.GALAXY.isGalaxy)) { var r = e.getAttribute("data-omni-type"); var l = e.getAttribute("data-close-omni"); var d = e.getAttribute("data-close-ga"); var c = e.getAttribute("ga-ca"); e = e.getAttribute("ga-ac"); h.closeButton.setAttribute("data-omni-type", r); h.closeButton.setAttribute("data-omni", l); h.closeButton.setAttribute("ga-ca", c); h.closeButton.setAttribute("ga-ac", e); h.closeButton.setAttribute("ga-la", d) } t && (h.opener = t), setTimeout(function () { h.closeButton && h.closeButton.focus() }, 1100) } }, hideVideoLayer: e, getYoutubePlayerLink: u }) }(), function () { var e, t, i, s, n, a, o; window.buds2pro = window.buds2pro || {}, window.buds2pro.anc = window.buds2pro.anc || {}, buds2pro.anc = (e = {}, window.buds2pro.common.utils, t = !1, i = null, s = function () { n(), o(), window.removeEventListener("load", s) }, n = function () { t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(e.resizeTimeout), e.resizeTimeout = setTimeout(function () { o() }, 100), t != i && (a(), i = t) }, a = function () { null != e.sequenceScroller && (e.sequenceScroller.destroy(), e.sequenceScroller = null); null != e.sequencePlayer && (e.sequenceCanvas.removeChild(e.sequenceCanvas.querySelector("canvas")), e.sequencePlayer = null); null == e.sequenceScroller && (e.sequenceScroller = SCROLLER({ trackElement: e.sequenceCanvas, activeElement: e.section, activeType: "reverse", correction: .4, activeCallback: function () { null != e.sequencePlayer && (e.sequencePlayer.stop(), e.sequencePlayer.play()) }, endCallback: function () { null != e.sequencePlayer && e.sequencePlayer.stop() } })); "undefined" != typeof __BUDS_SEQUENCE_URL && null != __BUDS_SEQUENCE_URL && null != __BUDS_SEQUENCE_URL && "" != __BUDS_SEQUENCE_URL ? e.sequenceImagePath = __BUDS_SEQUENCE_URL + "/" : e.sequenceImagePath = "/src/_galaxy-buds2-pro/images/"; null == e.sequencePlayer && (e.sequencePlayer = SEQUENCEPLAYER({ targetElement: e.sequenceCanvas, startNum: 0, endNum: 32, path: e.sequenceImagePath, name: "mobile" != t ? "galaxy-buds2-pro-anc-pc-sequence_" : "galaxy-buds2-pro-anc-mo-sequence_", extension: "jpg", playTime: 1400, imageLoadOffset: 2 })) }, o = function () { null != e.sequenceScroller && e.sequenceScroller.activeAnimation() }, { init: function () { e.section = document.querySelector(".sc-buds-anc"), e.section && (e.sequenceScroller = null, e.sequencePlayer = null, e.sequenceImagePath = null, e.sequenceCanvas = e.section.querySelector(".sc-buds-anc__kv-image"), e.ancKv = e.section.querySelector(".sc-buds-anc__kv"), e.ancKvFrontImage = e.ancKv.querySelector(".sc-buds-anc__kv-image-front"), window.addEventListener("load", s), window.addEventListener("resize", n), window.addEventListener("scroll", o)) } }) }(), function () { var n, e, t, i, s, a, o, r, l, d, c, u, h, p, m, v; window.buds2pro = window.buds2pro || {}, window.buds2pro.audio = window.buds2pro.audio || {}, buds2pro.audio = (n = {}, e = window.buds2pro.common.utils, t = !1, i = null, s = function () { a(), r(), window.removeEventListener("load", s) }, a = function () { t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(n.resizeTimeout), n.resizeTimeout = setTimeout(function () { r() }, 100), t != i && (o(), i = t) }, o = function () { null != n.sequenceScroller && (n.sequenceScroller.destroy(), n.sequenceScroller = null); null != n.sequencePlayer && (n.sequenceCanvas.removeChild(n.sequenceCanvas.querySelector("canvas")), n.sequencePlayer = null); null == n.sequenceScroller && (n.sequenceScroller = SCROLLER({ trackElement: n.sequenceCanvas, activeElement: n.section, activeType: "reverse", correction: .5, activeCallback: function () { null != n.sequencePlayer && (n.sequencePlayer.stop(), n.sequencePlayer.play()) }, endCallback: function () { null != n.sequencePlayer && n.sequencePlayer.stop() } })); "undefined" != typeof __BUDS_SEQUENCE_URL && null != __BUDS_SEQUENCE_URL && null != __BUDS_SEQUENCE_URL && "" != __BUDS_SEQUENCE_URL ? n.sequenceImagePath = __BUDS_SEQUENCE_URL + "/" : n.sequenceImagePath = "/src/_galaxy-buds2-pro/images/"; null == n.sequencePlayer && (n.sequencePlayer = SEQUENCEPLAYER({ targetElement: n.sequenceCanvas, startNum: 0, endNum: 59, path: n.sequenceImagePath, name: "mobile" != t ? "galaxy-buds2-pro-360-audio-pc-sequence_" : "galaxy-buds2-pro-360-audio-mo-sequence_", extension: "jpg", playTime: 2e3, imageLoadOffset: 2 })) }, r = function () { null != n.sequenceScroller && n.sequenceScroller.activeAnimation(); var e = window.pageYOffset, t = e + window.innerHeight, i = n.audioCard.getBoundingClientRect(), s = e + i.top, i = e + i.bottom; (t <= s || i <= e) && c() }, l = function () { n.audioPopup = window.buds2pro.audioPopup, e.setLastActiveItem(this), n.audioPopup.showAudioPopupLayer() }, d = function () { document.documentElement.classList.contains("is-layer-popup-opened") && c() }, c = function () { n.audioCard.classList.contains("s-play") && (n.videoControlText.innerHTML = "play", n.audioCard.classList.remove("s-play"), n.videoContent.pause(), n.isPaused = !0, v.call(n.videoControlButton)) }, u = function () { n.audioCard.classList.contains("s-play") && (n.videoControlText.innerHTML = "play", n.audioCard.classList.remove("s-play"), n.audioCard.classList.add("s-ready"), n.videoContent.pause(), n.videoContent.currentTime = 0, n.isPaused = !0, v.call(n.videoControlButton)) }, h = function (e) { e.preventDefault(), n.isPaused ? (n.videoControlText.innerHTML = "pause", n.audioCard.classList.contains("s-ready") && n.audioCard.classList.remove("s-ready"), n.audioCard.classList.add("s-play"), n.videoContent.play(), n.isPaused = !1, v.call(n.videoControlButton)) : c() }, p = function (e) { "focusin" == n.prevEventType && "mouseenter" == e.type || (n.audioCardText.classList.add("is-hover"), n.prevEventType = e.type) }, m = function (e) { "focusin" == n.prevEventType && "mouseleave" == e.type || (n.audioCardText.classList.remove("is-hover"), n.prevEventType = e.type) }, v = function () { var t = this, i = { "data-omni": t.getAttribute("data-omni"), "ga-la": t.getAttribute("ga-la") }; setTimeout(function () { Object.keys(i).forEach(function (e) { !1 === n.isPaused ? t.setAttribute(e, i[e].replace(":play", ":pause")) : t.setAttribute(e, i[e].replace(":pause", ":play")) }) }, 50) }, { init: function () { if (n.section = document.querySelector(".sc-buds-360-audio"), n.section) { if (n.sequenceScroller = null, n.sequencePlayer = null, n.sequenceImagePath = null, n.sequenceCanvas = n.section.querySelector(".sc-buds-360-audio__kv-image"), n.audioPopupBtn = n.section.querySelector(".sc-buds-360-audio__cta"), n.isPaused = !0, n.prevEventType = null, n.audioCard = n.section.querySelector(".sc-buds-360-audio__card"), n.audioCardText = n.section.querySelector(".sc-buds-360-audio__card-text"), n.videoControlButton = n.audioCard.querySelector("a.sc-buds-360-audio__play-area"), n.videoContent = n.audioCard.querySelector(".sc-buds-360-audio__video-source"), n.videoControlText = n.audioCard.querySelector("span.blind"), window.addEventListener("load", s), window.addEventListener("resize", a), window.addEventListener("scroll", r), !!n.audioPopupBtn) n.audioPopupBtn.addEventListener("click", l); n.videoControlButton.addEventListener("click", h), n.videoControlButton.addEventListener("mouseenter", p), n.videoControlButton.addEventListener("mouseleave", m), n.videoControlButton.addEventListener("focusin", p), n.videoControlButton.addEventListener("focusout", m), n.videoContent.addEventListener("ended", u), n.videoContent.addEventListener("timeupdate", d) } } }) }(), function () { var n, a, e, t, i, s, o, r; window.buds2pro = window.buds2pro || {}, window.buds2pro.colors = window.buds2pro.colors || {}, buds2pro.colors = (n = {}, a = window.buds2pro.common.utils, e = !1, t = null, i = function () { s(), window.removeEventListener("load", i) }, s = function () { e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(n.resizeTimeout), n.resizeTimeout = setTimeout(function () { }, 100), e != t && (o(), t = e) }, o = function () { n.colorsContentItems.forEach(function (e, t) { var i = n.colorsChipButtons[t]; n.currentIndex == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), i.classList.contains("is-active") || i.classList.add("is-active"), i.setAttribute("title", "selected"), document.documentElement.classList.contains("is-layer-popup-opened") || a.offAccessibility(e)) : (e.classList.contains("is-active") && e.classList.remove("is-active"), i.classList.contains("is-active") && i.classList.remove("is-active"), i.removeAttribute("title"), document.documentElement.classList.contains("is-layer-popup-opened") || a.onAccessibility(e)) }) }, r = function () { var s = n.colorsChipButtons.indexOf(this); n.currentIndex != s && (n.colorsContentItems.forEach(function (e, t) { var i = n.colorsChipButtons[t]; s == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), i.classList.contains("is-active") || i.classList.add("is-active"), i.setAttribute("title", "selected"), document.documentElement.classList.contains("is-layer-popup-opened") || a.offAccessibility(e)) : (e.classList.contains("is-active") && e.classList.remove("is-active"), i.classList.contains("is-active") && i.classList.remove("is-active"), i.removeAttribute("title"), document.documentElement.classList.contains("is-layer-popup-opened") || a.onAccessibility(e)) }), n.currentIndex = s) }, { init: function () { n.section = document.querySelector(".sc-buds-colors"), n.section && (n.currentIndex = 2, n.colorsChipList = n.section.querySelector(".sc-buds-colors__colors"), n.colorsChipItems = a.convertArray(n.colorsChipList.querySelectorAll("li")), n.colorsChipButtons = a.convertArray(n.section.querySelectorAll(".sc-buds-colors__color")), n.colorsContents = n.section.querySelector(".sc-buds-colors__contents"), n.colorsContentItems = a.convertArray(n.section.querySelectorAll(".sc-buds-colors__item")), window.addEventListener("load", i), window.addEventListener("resize", s), n.colorsChipButtons.forEach(function (e) { e.addEventListener("click", r) })) } }) }(), function () { function t() { var e, t, i, s, n; null != r.moTabSwiper && (n = r.compareTabButtons[r.currentTabIndex].parentNode, e = r.compareTabList.getBoundingClientRect(), t = n.getBoundingClientRect(), r.compareTabButtons.forEach(function (e, t) { r.currentTabIndex == t ? (e.parentNode.classList.contains("is-active") || e.parentNode.classList.add("is-active"), e.setAttribute("title", "selected")) : (e.parentNode.classList.contains("is-active") && e.parentNode.classList.remove("is-active"), e.removeAttribute("title")) }), i = parseInt(getComputedStyle(n).marginLeft), s = t.left - e.left - i, n = 2 * i + n.clientWidth, TweenMax.to(r.compareTabHighlight, .3, { width: n + "px", left: s + "px" }), n = 0 == r.currentTabIndex || r.currentTabIndex == r.compareTabButtons.length - 1 ? r.moTabSwiper.slidesGrid[r.currentTabIndex] > r.moTabSwiper.snapGrid[r.moTabSwiper.snapGrid.length - 1] ? r.moTabSwiper.snapGrid[r.moTabSwiper.snapGrid.length - 1] : r.moTabSwiper.slidesGrid[r.currentTabIndex] : (l.isRTL() ? e.right - t.right : t.left - e.left) - t.width / 2 - i * r.marginCount, TweenMax.to(r.compareTabList, .3, { x: n * (l.isRTL() ? 1 : -1) + "px" }), r.compareTab.scrollLeft = 0) } function o(t) { var i, s; t ? (i = [], l.convertArray(t.querySelectorAll(".sc-buds-compare__list-product-item")).forEach(function (e) { e.getAttribute("data-product") == f(t) ? (e.classList.contains("is-active") || e.classList.add("is-active"), l.offAccessibility(e)) : (e.classList.contains("is-active") && e.classList.remove("is-active"), l.onAccessibility(e)), l.convertArray(e.querySelectorAll("img")).forEach(function (e) { e.classList.contains("load-complete") || i.push(e) }) }), s = t.getAttribute("data-color"), l.convertArray(t.querySelectorAll(".sc-buds-compare__color")).forEach(function (e) { e.getAttribute("data-color") == s ? e.classList.contains("is-active") || e.classList.add("is-active") : e.classList.contains("is-active") && e.classList.remove("is-active"), l.offAccessibility(e) }), 0 < i.length && imageLoader.setResponsiveImage(i)) : r.compareListItems.forEach(function (e) { v(e), m(e) }) } var r, l, d, e, i, s, n, a, c, u, h, p, m, v, f, g, w; window.buds2pro = window.buds2pro || {}, window.buds2pro.compare = window.buds2pro.compare || {}, buds2pro.compare = (r = {}, l = window.buds2pro.common.utils, d = !1, e = null, i = function () { s(), window.removeEventListener("load", i) }, s = function () { d = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(r.resizeTimeout), r.resizeTimeout = setTimeout(function () { "mobile" != d && g(), h() }, 100), d != e && (n(), e = d) }, n = function () { r.currentTabIndex = 0, null != r.swiper && (r.swiper.destroy(!0), r.swiper = null, r.isSwiperInit = !1); null == r.swiper && (r.swiper = new Swiper(r.compareContainer, { init: !1, allowTouchMove: !1, slidesPerView: "mobile" != d ? "auto" : 1, navigation: { nextEl: r.nextArrow, prevEl: r.prevArrow } }), r.swiper.on("snapIndexChange", function () { r.isSwiperInit && w(!0) }), r.swiper.on("init", function () { w(!1), r.isSwiperInit = !0; var e = this.el.querySelector(".swiper-notification"); e && this.el.removeChild(e) }), r.swiper.init()); o(), null != r.moTabSwiper && (r.moTabSwiper.destroy(!0), r.moTabSwiper = null); "mobile" == d && setTimeout(function () { null == r.moTabSwiper && (r.moTabSwiper = new Swiper(r.compareTab, { init: !1, slidesPerView: "auto", freeMode: !0 }), r.moTabSwiper.on("init", function () { var e = this.el.querySelector(".swiper-notification"); e && this.el.removeChild(e) }), r.moTabSwiper.init()); r.compareColorWraps.forEach(function (e) { e.style.height = "" }), t() }, 200) }, a = function () { }, c = function () { var e = r.compareTabButtons.indexOf(this); e != r.currentTabIndex && (null != r.swiper && (r.swiper.slideTo(e), o(r.compareListItems[e])), r.currentTabIndex = e, t()) }, u = function () { var e, t, i, s; null != r.moTabSwiper && (s = r.compareTabButtons.indexOf(this), i = r.compareTabButtons[s].parentNode, e = r.compareTabList.getBoundingClientRect(), t = i.getBoundingClientRect(), i = parseInt(getComputedStyle(i).marginLeft), s = 0 == s || s == r.compareTabButtons.length - 1 ? r.moTabSwiper.slidesGrid[s] > r.moTabSwiper.snapGrid[r.moTabSwiper.snapGrid.length - 1] ? r.moTabSwiper.snapGrid[r.moTabSwiper.snapGrid.length - 1] : r.moTabSwiper.slidesGrid[s] : (l.isRTL() ? e.right - t.right : t.left - e.left) - t.width / 2 - i * r.marginCount, TweenMax.to(r.compareTabList, .3, { x: s * (l.isRTL() ? 1 : -1) + "px" }), r.compareTab.scrollLeft = 0) }, h = function () { var e, t, i, s; null != r.moTabSwiper && (i = r.compareTabButtons[r.currentTabIndex].parentNode, e = r.compareTabList.getBoundingClientRect(), s = i.getBoundingClientRect(), i = 2 * (t = parseInt(getComputedStyle(i).marginLeft)) + i.clientWidth, s = s.left - e.left - t, r.compareTabHighlight.style.width = i + "px", r.compareTabHighlight.style.left = s + "px") }, p = function () { var i, e = l.closest(this, ".sc-buds-compare__list-item"), t = e.getAttribute("data-size"), s = e.getAttribute("data-color"), n = this.getAttribute("data-default-size"), a = this.getAttribute("data-color"); s != a && (t != n && e.setAttribute("data-size", n), s != a && e.setAttribute("data-color", a), t = l.convertArray(e.querySelectorAll(".sc-buds-compare__color")), i = t.indexOf(this), t.forEach(function (e, t) { i == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), e.setAttribute("title", "selected")) : (e.classList.contains("is-active") && e.classList.remove("is-active"), e.removeAttribute("title")) }), o(e), m(e)) }, m = function (e) { var i = e.getAttribute("data-size"); l.convertArray(e.querySelectorAll(".sc-buds-compare__list-size-button")).forEach(function (e) { var t = e.getAttribute("data-size"); i == t ? e.classList.contains("is-active") || e.classList.add("is-active") : e.classList.contains("is-active") && e.classList.remove("is-active") }) }, v = function (e) { var s = e.getAttribute("data-color"), n = e.getAttribute("data-size"); l.convertArray(e.querySelectorAll(".sc-buds-compare__color")).forEach(function (e) { var t = e.getAttribute("data-color"), i = e.getAttribute("data-default-size"); s == t && n == i ? e.classList.contains("is-active") || e.classList.add("is-active") : e.classList.contains("is-active") && e.classList.remove("is-active") }) }, f = function (e) { var t = "", i = e.getAttribute("data-product"), s = e.getAttribute("data-color"), e = e.getAttribute("data-size"); return t += i, s && (t += "-" + s), e && (t += "-" + e), t }, g = function () { var t = [], i = (r.compareColorWraps.forEach(function (e) { e.style.height = "", t.push(e.clientHeight) }), t.reduce(function (e, t) { return Math.max(e, t) })); r.compareColorWraps.forEach(function (e) { e.style.height = i + "px" }) }, { init: function () { r.section = document.querySelector(".sc-buds-compare"), r.section && (r.isSwiperInit = !1, r.moTabSwiper = null, r.currentTabIndex = 0, r.compareTab = r.section.querySelector(".sc-buds-compare__tab"), r.compareTabList = r.compareTab.querySelector(".sc-buds-compare__tab-list"), r.compareTabButtons = l.convertArray(r.compareTabList.querySelectorAll(".sc-buds-compare__tab-button button")), r.compareTabHighlight = r.compareTab.querySelector(".sc-buds-compare__tab-highlight"), r.swiper = null, r.compareContainer = r.section.querySelector(".sc-buds-compare__container"), r.compareListItems = l.convertArray(r.compareContainer.querySelectorAll(".sc-buds-compare__list-item")), r.compareColorWraps = l.convertArray(r.compareContainer.querySelectorAll(".sc-buds-compare__list-colors")), r.compareColorChips = l.convertArray(r.compareContainer.querySelectorAll(".sc-buds-compare__list-item .sc-buds-compare__color")), r.nextArrow = r.section.querySelector(".swiper-button-next"), r.prevArrow = r.section.querySelector(".swiper-button-prev"), r.marginCount = r.compareTabButtons.length - 2 + .5, window.addEventListener("load", i), window.addEventListener("resize", s), window.addEventListener("scroll", a), r.compareTabButtons.forEach(function (e) { e.addEventListener("click", c), e.addEventListener("focus", u) }), r.compareColorChips.forEach(function (e) { e.addEventListener("click", p) })) }, setSlideAccessibility: w = function (n) { var a; null != r.swiper && (a = [], r.compareListItems.forEach(function (t, e) { var i, s = l.convertArray(t.querySelectorAll(".sc-buds-compare__list-product-item")); r.swiper.snapIndex <= e && e < r.swiper.snapIndex + ("mobile" != d ? 3 : 1) ? (l.offAccessibility(t), s.forEach(function (e) { e.getAttribute("data-product") == f(t) ? (e.classList.contains("is-active") || e.classList.add("is-active"), l.offAccessibility(e)) : (e.classList.contains("is-active") && e.classList.remove("is-active"), l.onAccessibility(e)), n && l.convertArray(e.querySelectorAll("img")).forEach(function (e) { e.classList.contains("load-complete") || a.push(e) }) }), i = t.getAttribute("data-color"), l.convertArray(t.querySelectorAll(".sc-buds-compare__color")).forEach(function (e) { e.getAttribute("data-color") == i ? (e.classList.contains("is-active") || e.classList.add("is-active"), e.setAttribute("title", "selected")) : (e.classList.contains("is-active") && e.classList.remove("is-active"), e.removeAttribute("title")), l.offAccessibility(e) })) : (l.onAccessibility(t), s.forEach(function (e) { l.onAccessibility(e) })) }), 0 < a.length && imageLoader.setResponsiveImage(a)) } }) }(), function () { function t() { var e = s.getCookie(i.cookieName); null != e && e.length && "1" == e ? (document.documentElement.classList.add("color_yb"), i.contrastBtn.setAttribute("title", i.contrastBtnTitle + " selected"), i.defaultBtn.setAttribute("title", i.defaultBtnTitle)) : (document.documentElement.classList.remove("color_yb"), i.contrastBtn.setAttribute("title", i.contrastBtnTitle), i.defaultBtn.setAttribute("title", i.defaultBtnTitle + " selected")) } var i, s, e, n, a; window.buds2pro = window.buds2pro || {}, window.buds2pro.contrast = window.buds2pro.contrast || {}, buds2pro.contrast = (i = {}, s = window.buds2pro.common.utils, e = function () { t() }, n = function (e) { e.preventDefault(), s.setCookie(i.cookieName, "0", 1), t() }, a = function (e) { e.preventDefault(), s.setCookie(i.cookieName, "1", 1), t() }, { init: function () { if (i.section = document.querySelector(".cp-high-contrast"), i.section) { if (i.defaultBtn = i.section.querySelector(".type-default"), i.defaultBtnTitle = i.defaultBtn.getAttribute("title").trim(), i.contrastBtn = i.section.querySelector(".type-contrast"), i.contrastBtnTitle = i.contrastBtn.getAttribute("title").trim(), i.cookieName = "highContrastMode", window.addEventListener("load", e), !!i.defaultBtn) i.defaultBtn.addEventListener("click", n); if (!!i.contrastBtn) i.contrastBtn.addEventListener("click", a) } } }) }(), function () { var e, t, i, s, n, a, o, r; window.buds2pro = window.buds2pro || {}, window.buds2pro.easyPairing = window.buds2pro.easyPairing || {}, buds2pro.easyPairing = (e = {}, window.buds2pro.common.utils, t = !1, i = null, s = function () { (n(), o(), "undefined" != typeof __BUDS_SEQUENCE_URL && null != __BUDS_SEQUENCE_URL && null != __BUDS_SEQUENCE_URL && "" != __BUDS_SEQUENCE_URL) ? e.sequenceImagePath = __BUDS_SEQUENCE_URL + "/" : e.sequenceImagePath = "/src/_galaxy-buds2-pro/images/"; null == e.sequencePlayer && (e.sequencePlayer = SEQUENCEPLAYER({ targetElement: e.sequenceCanvas, startNum: 0, endNum: 68, path: e.sequenceImagePath, name: "galaxy-buds2-pro-easy-pairing-sequence_", extension: "jpg", playTime: 2e3, imageLoadOffset: 1 })); window.removeEventListener("load", s) }, n = function () { t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(e.resizeTimeout), e.resizeTimeout = setTimeout(function () { }, 100), o(), t != i && (a(), i = t) }, a = function () { r(), null == e.sequenceScroller && (e.sequenceScroller = SCROLLER({ trackElement: e.sequenceCanvas, activeElement: e.section, activeType: "reverse", correction: .3, activeCallback: function () { null != e.sequencePlayer && (e.sequencePlayer.stop(), e.sequencePlayer.play()) }, endCallback: function () { null != e.sequencePlayer && e.sequencePlayer.stop() } })) }, o = function () { null != e.sequenceScroller && e.sequenceScroller.activeAnimation() }, r = function () { null != e.sequenceScroller && (e.sequenceScroller.destroy(), e.sequenceScroller = null) }, { init: function () { e.section = document.querySelector(".sc-buds-easy-pairing"), e.section && (e.sequenceScroller = null, e.sequencePlayer = null, e.sequenceImagePath = null, e.sequenceCanvas = e.section.querySelector(".sc-buds-easy-pairing__kv-inner"), window.addEventListener("load", s), window.addEventListener("resize", n), window.addEventListener("scroll", o)) } }) }(), function () { var o, r, e, t, i, s, n, a, l, d, c; window.buds2pro = window.buds2pro || {}, window.buds2pro.ecosystem = window.buds2pro.ecosystem || {}, buds2pro.ecosystem = (o = {}, r = window.buds2pro.common.utils, e = !1, t = null, i = function () { o.ecoPopups.forEach(function (e, t) { t = o.ecoItemButtons[t]; e.classList.contains("is-active") && e.classList.remove("is-active"), document.documentElement.classList.contains("is-layer-popup-opened") || (r.onAccessibility(e), r.offAccessibility(t)) }), s(), window.removeEventListener("load", i) }, s = function () { e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(o.resizeTimeout), o.resizeTimeout = setTimeout(function () { }, 100), e != t && (n(), t = e) }, n = function () { }, a = function () { r.customParallax({ wrapperElement: o.section, activeElement: o.ecoItem01, distance: 10, direction: -1 }), r.customParallax({ wrapperElement: o.section, activeElement: o.ecoItem02, distance: 10 }), r.customParallax({ wrapperElement: o.section, activeElement: o.ecoItem03, distance: 5 }), r.customParallax({ wrapperElement: o.section, activeElement: o.ecoItem04, distance: 5, direction: -1 }) }, l = function (e) { e.preventDefault(); var n = o.ecoItemButtons.indexOf(this), a = []; o.ecoPopups.forEach(function (e, t) { var i = o.ecoItemButtons[t], s = e.querySelector(".sc-wearable-ecosystem__popup-close"); n == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), document.documentElement.classList.contains("is-layer-popup-opened") || (r.offAccessibility(e), r.onAccessibility(i)), document.removeEventListener("click", c), setTimeout(function () { s.focus(), document.addEventListener("click", c) }, 400), r.convertArray(e.querySelectorAll("img")).forEach(function (e) { e.classList.contains("load-complate") || a.push(e) })) : (e.classList.contains("is-active") && e.classList.remove("is-active"), document.documentElement.classList.contains("is-layer-popup-opened") || (r.onAccessibility(e), r.offAccessibility(i))) }), 0 < a.length && imageLoader.setResponsiveImage(a) }, d = function () { o.ecoPopups.forEach(function (e, t) { t = o.ecoItemButtons[t]; e.classList.contains("is-active") && e.classList.remove("is-active"), document.documentElement.classList.contains("is-layer-popup-opened") || (r.onAccessibility(e), r.offAccessibility(t)) }); var e = r.closest(this, ".sc-wearable-ecosystem__item").querySelector(".sc-wearable-ecosystem__item-cta-link"); setTimeout(function () { e.focus(), document.removeEventListener("click", c) }, 400) }, c = function (e) { null == r.closest(e.target, ".sc-wearable-ecosystem__popup") && (o.ecoPopups.forEach(function (e, t) { t = o.ecoItemButtons[t]; e.classList.contains("is-active") && e.classList.remove("is-active"), document.documentElement.classList.contains("is-layer-popup-opened") || (r.onAccessibility(e), r.offAccessibility(t)) }), document.removeEventListener("click", c)) }, { init: function () { o.section = document.querySelector(".sc-wearable-ecosystem"), o.section && (o.ecoContents = o.section.querySelector(".sc-wearable-ecosystem__contents"), o.ecoItems = r.convertArray(o.ecoContents.querySelectorAll(".sc-wearable-ecosystem__item")), o.ecoItemButtons = r.convertArray(o.ecoContents.querySelectorAll(".sc-wearable-ecosystem__item-cta-link")), o.ecoPopups = r.convertArray(o.ecoContents.querySelectorAll(".sc-wearable-ecosystem__popup")), o.ecoPopupCloseButtons = r.convertArray(o.ecoContents.querySelectorAll(".sc-wearable-ecosystem__popup-close")), o.ecoItem01 = o.ecoContents.querySelector(".sc-wearable-ecosystem__item--01 .sc-wearable-ecosystem__item-inner"), o.ecoItem02 = o.ecoContents.querySelector(".sc-wearable-ecosystem__item--02 .sc-wearable-ecosystem__item-inner"), o.ecoItem03 = o.ecoContents.querySelector(".sc-wearable-ecosystem__item--03 .sc-wearable-ecosystem__item-inner"), o.ecoItem04 = o.ecoContents.querySelector(".sc-wearable-ecosystem__item--04 .sc-wearable-ecosystem__item-inner"), window.addEventListener("load", i), window.addEventListener("resize", s), window.addEventListener("scroll", a), o.ecoItemButtons.forEach(function (e) { e.addEventListener("click", l) }), o.ecoPopupCloseButtons.forEach(function (e) { e.addEventListener("click", d) })) } }) }(), function () { var s, e, n, t, i, a, o, r; window.buds2pro = window.buds2pro || {}, window.buds2pro.ergonomic = window.buds2pro.ergonomic || {}, buds2pro.ergonomic = (s = {}, e = window.buds2pro.common.utils, n = !1, t = null, i = function () { a(), r(), window.removeEventListener("load", i) }, a = function () { n = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(s.resizeTimeout), s.resizeTimeout = setTimeout(function () { r() }, 100), n != t && (o(), t = n) }, o = function () { null != s.scroller && (s.scroller.destroy(), s.scroller = null); null == s.scroller && (s.scroller = SCROLLER({ trackElement: s.section, useFixed: !1 })) }, r = function () { null != s.scroller && s.scroller.trackAnimation(function () { var e = ANIUTIL.calRange({ targetValue: "mobile" != n ? 25 : 10, progress: this.progress, startPoint: 0, endPoint: "mobile" != n ? 60 : 40 }), t = ANIUTIL.calRange({ targetValue: 10, progress: this.progress, startPoint: 0, endPoint: 60 }), i = ANIUTIL.calRange({ targetValue: 8, progress: this.progress, startPoint: 0, endPoint: 60 }); TweenMax.to(s.designKvItems[0], .5, { y: e - ("mobile" != n ? 5 : 0) + "%", z: 0 }), TweenMax.to(s.designKvItems[1], .6, { y: 20 - t + "%", z: 0 }), TweenMax.to(s.designKvItems[2], .3, { y: i - 4 + "%", z: 0 }) }) }, { init: function () { s.section = document.querySelector(".sc-buds-ergonomic-design"), s.section && (s.scroller = null, s.designKvWrap = s.section.querySelector(".sc-buds-ergonomic-design__kv-items"), s.designKvItems = e.convertArray(s.designKvWrap.querySelectorAll(".sc-buds-ergonomic-design__kv-item")), window.addEventListener("load", i), window.addEventListener("resize", a), window.addEventListener("scroll", r)) } }) }(), function () { var o, r, e, t, i, s, n, a, l, d, c; window.buds2pro = window.buds2pro || {}, window.buds2pro.excellence = window.buds2pro.excellence || {}, buds2pro.excellence = (o = {}, r = window.buds2pro.common.utils, e = !1, t = null, i = function () { s(), window.removeEventListener("load", i) }, s = function () { e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(o.resizeTimeout), o.resizeTimeout = setTimeout(function () { c() }, 100), e != t && (n(), t = e) }, n = function () { null != o.moNavSwiper && (o.moNavSwiper.destroy(!0), o.moNavSwiper = null); if ("mobile" != e) o.infoButtons.forEach(function (e, t) { var i = o.contentKv[t]; o.currentIndex == t ? (o.info[t].classList.contains("is-active") || o.info[t].classList.add("is-active"), i.classList.contains("is-active") || i.classList.add("is-active"), e.setAttribute("title", "selected"), document.documentElement.classList.contains("is-layer-popup-opened") || r.offAccessibility(i)) : (o.info[t].classList.contains("is-active") && o.info[t].classList.remove("is-active"), i.classList.contains("is-active") && i.classList.remove("is-active"), e.removeAttribute("title"), document.documentElement.classList.contains("is-layer-popup-opened") || r.onAccessibility(i)) }); else if (o.moNavButtons.forEach(function (e, t) { var i = o.contentKv[t], s = o.moInfo[t]; o.currentIndex == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), i.classList.contains("is-active") || i.classList.add("is-active"), s.classList.contains("is-active") || s.classList.add("is-active"), e.setAttribute("aria-selected", !0), document.documentElement.classList.contains("is-layer-popup-opened") || (r.offAccessibility(i), r.offAccessibility(s))) : (e.classList.contains("is-active") && e.classList.remove("is-active"), i.classList.contains("is-active") && i.classList.remove("is-active"), s.classList.contains("is-active") && s.classList.remove("is-active"), e.setAttribute("aria-selected", !1), document.documentElement.classList.contains("is-layer-popup-opened") || (r.onAccessibility(i), r.onAccessibility(s))) }), null == o.moNavSwiper) o.moNavSwiper = new Swiper(o.moNavBg, { init: !1, slidesPerView: "auto", freeMode: !0 }), o.moNavSwiper.on("init", function () { var e = this.el.querySelector(".swiper-notification"); e && this.el.removeChild(e) }), o.moNavSwiper.init() }, a = function () { var n, a = o.infoButtons.indexOf(this); o.currentIndex != a && (n = [], o.infoButtons.forEach(function (e, t) { var i = o.contentKv[t], s = o.infoButtons[t]; a == t ? (o.info[t].classList.contains("is-active") || o.info[t].classList.add("is-active"), i.classList.contains("is-active") || i.classList.add("is-active"), e.setAttribute("title", "selected"), document.documentElement.classList.contains("is-layer-popup-opened") || r.offAccessibility(i), r.convertArray(i.querySelectorAll("img")).forEach(function (e) { e.classList.contains("load-complete") || n.push(e) }), r.convertArray(s.querySelectorAll("img")).forEach(function (e) { e.classList.contains("load-complete") || n.push(e) })) : (o.info[t].classList.contains("is-active") && o.info[t].classList.remove("is-active"), i.classList.contains("is-active") && i.classList.remove("is-active"), e.removeAttribute("title"), document.documentElement.classList.contains("is-layer-popup-opened") || r.onAccessibility(i)) }), 0 < n.length && imageLoader.setResponsiveImage(n), o.currentIndex = a) }, l = function () { var n, e, a = o.moNavButtons.indexOf(this); o.currentIndex != a && (n = [], o.moNavButtons.forEach(function (e, t) { var i = o.contentKv[t], s = o.moInfo[t]; a == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), i.classList.contains("is-active") || i.classList.add("is-active"), s.classList.contains("is-active") || s.classList.add("is-active"), e.setAttribute("aria-selected", !0), document.documentElement.classList.contains("is-layer-popup-opened") || (r.offAccessibility(i), r.offAccessibility(s)), r.convertArray(s.querySelectorAll("img")).forEach(function (e) { e.classList.contains("load-complete") || n.push(e) })) : (e.classList.contains("is-active") && e.classList.remove("is-active"), i.classList.contains("is-active") && i.classList.remove("is-active"), s.classList.contains("is-active") && s.classList.remove("is-active"), e.setAttribute("aria-selected", !1), document.documentElement.classList.contains("is-layer-popup-opened") || (r.onAccessibility(i), r.onAccessibility(s))) }), 0 < n.length && imageLoader.setResponsiveImage(n), o.currentIndex = a, e = this, clearTimeout(o.moNavClickTimeout), o.moNavClickTimeout = setTimeout(function () { e.blur() }, 150), o.moNavClickTimeout = setTimeout(function () { e.focus() }, 300), c()) }, d = function () { var e = o.moNavButtons.indexOf(this), t = o.moNavList.getBoundingClientRect(), e = o.moNavButtons[e].getBoundingClientRect(), t = r.isRTL() ? t.right - e.right - (t.width - e.width) / 2 : e.left - t.left - (t.width - e.width) / 2; t > o.moNavSwiper.snapGrid[o.moNavSwiper.snapGrid.length - 1] ? t = o.moNavSwiper.snapGrid[o.moNavSwiper.snapGrid.length - 1] : t < o.moNavSwiper.snapGrid[0] && (t = o.moNavSwiper.snapGrid[0]), TweenMax.to(o.moNavList, .3, { x: t * (r.isRTL() ? 1 : -1) + "px" }) }, c = function () { var e, t, i, s; null != o.moNavSwiper && (s = o.moNavButtons[o.currentIndex], e = o.moNavList.getBoundingClientRect(), t = s.getBoundingClientRect(), o.moNavButtons.forEach(function (e, t) { o.currentIndex == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), e.setAttribute("aria-selected", !0)) : (e.classList.contains("is-active") && e.classList.remove("is-active"), e.setAttribute("aria-selected", !1)) }), i = t.left - e.left, s = s.clientWidth, TweenMax.to(o.moNavHighlight, .3, { width: s + "px", left: i + "px" }), (s = r.isRTL() ? e.right - t.right - (e.width - t.width) / 2 : t.left - e.left - (e.width - t.width) / 2) > o.moNavSwiper.snapGrid[o.moNavSwiper.snapGrid.length - 1] ? s = o.moNavSwiper.snapGrid[o.moNavSwiper.snapGrid.length - 1] : s < o.moNavSwiper.snapGrid[0] && (s = o.moNavSwiper.snapGrid[0]), TweenMax.to(o.moNavList, .3, { x: s * (r.isRTL() ? 1 : -1) + "px" })) }, { init: function () { o.section = document.querySelector(".sc-buds-excellence"), o.section && (o.currentIndex = 0, o.moNavSwiper = null, o.contents = o.section.querySelector(".sc-buds-excellence__contents"), o.contentKvWrap = o.contents.querySelector(".sc-buds-excellence__kv-wrap"), o.contentKv = r.convertArray(o.contentKvWrap.querySelectorAll(".sc-buds-excellence__kv")), o.infoWrap = o.section.querySelector(".sc-buds-excellence__info-wrap--pc"), o.info = r.convertArray(o.infoWrap.querySelectorAll(".sc-buds-excellence__info")), o.infoButtons = r.convertArray(o.infoWrap.querySelectorAll(".sc-buds-excellence__btn")), o.moInfoWrap = o.section.querySelector(".sc-buds-excellence__info-wrap--mo"), o.moInfo = r.convertArray(o.moInfoWrap.querySelectorAll(".sc-buds-excellence__info")), o.moNavClickTimeout = null, o.moNav = o.section.querySelector(".sc-buds-excellence__nav"), o.moNavBg = o.moNav.querySelector(".sc-buds-excellence__nav-bg"), o.moNavList = o.moNavBg.querySelector(".sc-buds-excellence__nav-wrap"), o.moNavHighlight = o.moNavList.querySelector(".sc-buds-excellence__nav-highlight"), o.moNavButtons = r.convertArray(o.moNavList.querySelectorAll(".sc-buds-excellence__nav-button")), window.addEventListener("load", i), window.addEventListener("resize", s), o.infoButtons.forEach(function (e) { e.addEventListener("click", a) }), o.moNavButtons.forEach(function (e) { e.addEventListener("click", l), e.addEventListener("focus", d) })) } }) }(), function () { var n, e, t; window.buds2pro = window.buds2pro || {}, window.buds2pro.expert = window.buds2pro.expert || {}, buds2pro.expert = (n = {}, e = window.buds2pro.common.utils, t = function (e) { e.preventDefault(); var e = this.getAttribute("href"), e = (buds2pro.video.showVideoLayer(e, this, !0), document.querySelector("#layer-youtube")), t = e.querySelector("iframe"), i = n.youtubeLink.indexOf(this), s = null; (s = n.youtubeDesc[i]).removeAttribute("aria-hidden", ""), null != s && e.querySelector(".m_video_view").appendChild(s), t.setAttribute("title", n.iframeTitle[i].getAttribute("data-iframe-title")), window.GALAXY && window.GALAXY.isGalaxy && 0 < n.youtubeLayer[i].querySelectorAll(".youtube-slide").length && window.GALAXY.omniture(this.getAttribute("data-omni")) }, { init: function () { n.section = document.querySelector(".sc-buds-expert-review"), n.section && (n.youtubeLayer = n.section.querySelectorAll(".js-youtube-layer"), n.youtubeLink = e.convertArray(n.section.querySelectorAll(".js-youtube-link")), n.youtubeDesc = n.section.querySelectorAll(".js-youtube-desc"), n.iframeTitle = n.section.querySelectorAll(".js-iframe-title"), n.youtubeLink.forEach(function (e) { e.addEventListener("click", t) })) } }) }(), function () { var e, t, i, s, n, a, o; window.buds2pro = window.buds2pro || {}, window.buds2pro.hifi = window.buds2pro.hifi || {}, buds2pro.hifi = (e = {}, window.buds2pro.common.utils, t = !1, i = null, s = function () { n(), o(), window.removeEventListener("load", s) }, n = function () { t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(e.resizeTimeout), e.resizeTimeout = setTimeout(function () { o() }, 100), t != i && (a(), i = t) }, a = function () { null != e.sequenceScroller && (e.sequenceScroller.destroy(), e.sequenceScroller = null); null != e.sequencePlayer && (e.sequenceCanvas.removeChild(e.sequenceCanvas.querySelector("canvas")), e.sequencePlayer = null); null == e.sequenceScroller && (e.sequenceScroller = SCROLLER({ trackElement: e.sequenceCanvas, activeElement: e.section, activeType: "oneWay", correction: .6, activeCallback: function () { e.section.classList.remove("is-sequence-complete"), null != e.sequencePlayer && (e.sequencePlayer.stop(), e.sequencePlayer.play({ endCallback: function () { e.section.classList.add("is-sequence-complete") } })) }, endCallback: function () { e.section.classList.remove("is-sequence-complete"), null != e.sequencePlayer && e.sequencePlayer.stop() } })); "undefined" != typeof __BUDS_SEQUENCE_URL && null != __BUDS_SEQUENCE_URL && null != __BUDS_SEQUENCE_URL && "" != __BUDS_SEQUENCE_URL ? e.sequenceImagePath = __BUDS_SEQUENCE_URL + "/" : e.sequenceImagePath = "/src/_galaxy-buds2-pro/images/"; null == e.sequencePlayer && (e.sequencePlayer = SEQUENCEPLAYER({ targetElement: e.sequenceCanvas, startNum: 0, endNum: 42, path: e.sequenceImagePath, name: "mobile" != t ? "galaxy-buds2-pro-hifi-audio-pc-sequence_" : "galaxy-buds2-pro-hifi-audio-mo-sequence_", extension: "jpg", playTime: 1200, imageLoadOffset: 2 })) }, o = function () { null != e.sequenceScroller && e.sequenceScroller.activeAnimation() }, { init: function () { e.section = document.querySelector(".sc-buds-hifi-audio"), e.section && (e.sequenceScroller = null, e.sequencePlayer = null, e.sequenceImagePath = null, e.sequenceCanvas = e.section.querySelector(".sc-buds-hifi-audio__parts"), window.addEventListener("load", s), window.addEventListener("resize", n), window.addEventListener("scroll", o)) } }) }(), function () { var s, e; window.buds2pro = window.buds2pro || {}, window.buds2pro.howto = window.buds2pro.howto || {}, buds2pro.howto = (s = {}, e = function (e) { e.preventDefault(); var e = s.youtubeLink.getAttribute("href"), e = (buds2pro.video.showVideoLayer(e, s.youtubeLink, !0), document.querySelector("#layer-youtube")), t = e.querySelector("iframe"), i = null; !s.youtubeLink.getAttribute("data-hidden-text") && s.youtubeDesc && ((i = s.youtubeDesc.cloneNode(!0)).removeAttribute("aria-hidden", ""), null != i && e.querySelector(".m_video_view").appendChild(i)), t.setAttribute("title", s.iframeTitle.getAttribute("data-iframe-title")), window.GALAXY && window.GALAXY.isGalaxy && 0 < s.youtubeLayer.querySelectorAll(".youtube-slide").length && window.GALAXY.omniture(s.youtubeLink.getAttribute("data-omni")) }, { init: function () { s.section = document.querySelector(".sc-buds-how-to"), s.section && (s.youtubeLayer = s.section.querySelector(".js-youtube-layer"), s.youtubeLink = s.youtubeLayer.querySelector(".js-youtube-link"), s.youtubeDesc = s.youtubeLayer.querySelector(".js-youtube-desc"), s.iframeTitle = s.youtubeLayer.querySelector(".js-iframe-title"), s.youtubeLink.addEventListener("click", e)) } }) }(), function () { function n() { a.immersiveTabContents[a.currentIndex].classList.contains("is-active") && (a.immersivePlayTexts[a.currentIndex].innerHTML = "play", a.immersiveTabContents[a.currentIndex].classList.remove("s-play"), a.immersiveTabContents[a.currentIndex].querySelector("video").pause(), a.isPaused = !0, p.call(a.immersivePlayButtons[a.currentIndex])) } var a, o, e, t, i, s, r, l, d, c, u, h, p, m; window.buds2pro = window.buds2pro || {}, window.buds2pro.immersive = window.buds2pro.immersive || {}, buds2pro.immersive = (a = {}, o = window.buds2pro.common.utils, e = !1, t = null, i = function () { s(), window.removeEventListener("load", i) }, s = function () { e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(a.resizeTimeout), a.resizeTimeout = setTimeout(function () { c() }, 100), e != t && (r(), t = e) }, r = function () { a.immersiveTabButtons.forEach(function (e, t) { var i = a.immersiveTabContents[t]; setTimeout(function () { a.currentIndex == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), i.classList.contains("is-active") || i.classList.add("is-active"), e.setAttribute("aria-selected", !0), o.offAccessibility(i)) : (e.classList.contains("is-active") && e.classList.remove("is-active"), i.classList.contains("is-active") && i.classList.remove("is-active"), e.setAttribute("aria-selected", !1), o.onAccessibility(i)) }, 500) }) }, l = function () { var e = window.pageYOffset, t = e + window.innerHeight, i = a.immersiveTabContent.getBoundingClientRect(), s = e + i.top, i = e + i.bottom; !a.isPaused && (t <= s || i <= e) && n() }, d = function () { var s = a.immersiveTabButtons.indexOf(this); s != a.currentIndex && (a.immersiveTabButtons.forEach(function (e, t) { var i = a.immersiveTabContents[t]; s == t ? (e.classList.contains("is-active") || e.classList.add("is-active"), i.classList.contains("is-active") || i.classList.add("is-active"), e.setAttribute("aria-selected", !0), o.offAccessibility(i)) : (e.classList.contains("is-active") && e.classList.remove("is-active"), i.classList.contains("is-active") && i.classList.remove("is-active"), e.setAttribute("aria-selected", !1), o.onAccessibility(i)) }), h(), a.currentIndex = s, c()) }, c = function () { var e = a.immersiveTabButtons[a.currentIndex], t = a.immersiveTabList.getBoundingClientRect(), e = e.getBoundingClientRect(), e = (a.immersiveTabButtons.forEach(function (e, t) { a.currentIndex == t ? e.classList.contains("is-active") || e.classList.add("is-active") : e.classList.contains("is-active") && e.classList.remove("is-active") }), e.left - t.left); TweenMax.to(a.immersiveTabHighlight, .3, { left: e + "px" }) }, u = function () { document.documentElement.classList.contains("is-layer-popup-opened") && n() }, h = function () { a.immersivePlayTexts[a.currentIndex].innerHTML = "play", a.immersiveTabContents[a.currentIndex].classList.remove("s-play"), a.immersiveTabContents[a.currentIndex].querySelector("video").pause(), a.immersiveTabContents[a.currentIndex].querySelector("video").currentTime = 0, a.immersiveTabContents[a.currentIndex].classList.add("s-ready"), a.isPaused = !0, p.call(a.immersivePlayButtons[a.currentIndex]) }, p = function () { var t = this, i = { "data-omni": t.getAttribute("data-omni"), "ga-la": t.getAttribute("ga-la") }; setTimeout(function () { Object.keys(i).forEach(function (e) { !1 === a.isPaused ? t.setAttribute(e, i[e].replace(":play", ":pause")) : t.setAttribute(e, i[e].replace(":pause", ":play")) }) }, 50) }, m = function () { a.isPaused ? a.immersiveTabContents[a.currentIndex].classList.contains("is-active") && (a.immersivePlayTexts[a.currentIndex].innerHTML = "pause", a.immersiveTabContents[a.currentIndex].classList.add("s-play"), a.immersiveTabContents[a.currentIndex].querySelector("video").play(), a.immersiveTabContents[a.currentIndex].classList.contains("s-ready") && (a.immersiveTabContents[a.currentIndex].classList.remove("s-ready"), a.immersiveTabContents[a.currentIndex].querySelector("video").currentTime = 0), a.isPaused = !1, p.call(a.immersivePlayButtons[a.currentIndex])) : n() }, { init: function () { a.section = document.querySelector(".sc-buds-immersive"), a.section && (a.currentIndex = 0, a.isPaused = !0, a.immersiveTab = a.section.querySelector(".sc-buds-immersive__tab"), a.immersiveTabList = a.immersiveTab.querySelector(".sc-buds-immersive__tab-list"), a.immersiveTabButtons = o.convertArray(a.immersiveTabList.querySelectorAll(".sc-buds-immersive__tab-button")), a.immersiveTabHighlight = a.immersiveTabList.querySelector(".sc-buds-immersive__tab-highlight"), a.immersiveTabContent = a.section.querySelector(".sc-buds-immersive__tab-contents"), a.immersiveTabContents = o.convertArray(a.immersiveTabContent.querySelectorAll(".sc-buds-immersive__tab-content")), a.immersivePlayButtons = o.convertArray(a.immersiveTabContent.querySelectorAll(".sc-buds-immersive__play")), a.immersivePlayTexts = o.convertArray(a.immersiveTabContent.querySelectorAll("span.blind")), window.addEventListener("load", i), window.addEventListener("resize", s), window.addEventListener("scroll", l), a.immersiveTabButtons.forEach(function (e) { e.addEventListener("click", d) }), a.immersiveTabContents.forEach(function (e) { e.querySelector("video").addEventListener("ended", h), e.querySelector("video").addEventListener("timeupdate", u) }), a.immersivePlayButtons.forEach(function (e) { e.addEventListener("click", m) })) } }) }(), function () { var e; window.buds2pro = window.buds2pro || {}, window.buds2pro.kv = window.buds2pro.kv || {}, buds2pro.kv = (e = {}, { init: function () { if (e.section = document.querySelector(".sc-buds-kv"), e.section) if (e.section.classList.remove("is-use-buy"), e.section.classList.remove("is-use-regist"), e.section.classList.remove("is-use-order"), e.section.classList.remove("is-use-where"), e.section.classList.remove("is-use-off"), "undefined" != typeof __BUDS_USE_KV_CTA && null != __BUDS_USE_KV_CTA && null != __BUDS_USE_KV_CTA && "" != __BUDS_USE_KV_CTA) "buy-now" == __BUDS_USE_KV_CTA ? e.section.classList.add("is-use-buy") : "pre-order" == __BUDS_USE_KV_CTA ? e.section.classList.add("is-use-order") : "pre-registration" == __BUDS_USE_KV_CTA ? e.section.classList.add("is-use-regist") : "where-to-buy" == __BUDS_USE_KV_CTA ? e.section.classList.add("is-use-where") : "where-to-buy" == __BUDS_USE_KV_CTA && e.section.classList.add("is-use-off"); else e.section.classList.add("is-use-buy") } }) }(), function () { var i, a, e, t, s, n, o, r, l, d; window.buds2pro = window.buds2pro || {}, window.buds2pro.overview = window.buds2pro.overview || {}, buds2pro.overview = (i = {}, a = window.buds2pro.common.utils, e = !1, t = null, s = function () { n(), r(), window.removeEventListener("load", s) }, n = function () { e = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(i.resizeTimeout), i.resizeTimeout = setTimeout(function () { d() }, 100), r(), e != t && (o(), t = e) }, o = function () { l(), null == i.scroller && (i.scroller = SCROLLER({ trackElement: i.section, useFixed: !1 })); d() }, r = function () { null != i.scroller && i.scroller.trackAnimation(function () { var e = ANIUTIL.calRange({ targetValue: .8, progress: this.progress, startPoint: 20, endPoint: 50 }); TweenMax.to(i.overviewDimmed, .2, { opacity: .8 - e }) }); var s = window.pageYOffset, n = s + a.getNavHeight() + (window.innerHeight - a.getNavHeight()) / 2; i.overviewItems.forEach(function (e) { var t = e.getBoundingClientRect(), i = s + t.top, t = s + t.bottom; i <= n && n <= t ? e.classList.contains("is-active") || e.classList.add("is-active") : e.classList.contains("is-active") && e.classList.remove("is-active") }) }, l = function () { null != i.scroller && (i.scroller.destroy(), i.scroller = null) }, d = function () { var e = i.fixedElement.getBoundingClientRect(), t = i.overviewListWrap.getBoundingClientRect(), t = parseInt(getComputedStyle(i.overviewListWrap).marginTop) + t.height, e = e.height; i.movingValue = e < t ? t - e + a.getNavHeight() : a.getNavHeight() }, { init: function () { i.section = document.querySelector(".sc-buds-overview"), i.section && (i.scroller = null, i.activeIndex = 0, i.movingValue = 0, i.trackElement = i.section.querySelector(".sc-buds-overview__track"), i.fixedElement = i.section.querySelector(".sc-buds-overview__fixed"), i.overviewListWrap = i.section.querySelector(".sc-buds-overview__list-wrap"), i.overviewList = i.section.querySelector(".sc-buds-overview__list"), i.overviewItems = a.convertArray(i.overviewList.querySelectorAll(".sc-buds-overview__item")), i.overviewDimmed = i.section.querySelector(".sc-buds-overview__dimmed"), window.addEventListener("load", s), window.addEventListener("resize", n), window.addEventListener("scroll", r)) } }) }(), function () { function t(e) { r.videoListItems[e].classList.remove("is-pause"), r.videoListItems[e].classList.remove("is-ready"), r.videoListItems[e].classList.add("is-active"), r.videoSource[e].play(), r.videoControlTxt[e].innerHTML = "Pause", r.videoControls[e].isPaused = !1, g.call(r.videoControls[e]) } function o(e) { r.videoListItems[e].classList.contains("is-active") && (r.videoListItems[e].classList.add("is-pause"), r.videoSource[e].pause(), r.videoControlTxt[e].innerHTML = "Play", r.videoControls[e].isPaused = !0, g.call(r.videoControls[e])) } function n(e, t) { return e[t].querySelector(".sc-buds-recording-video__item-title").innerText } var r, i, s, e, a, l, d, c, u, h, p, m, v, f, g, w, b, y, E; window.buds2pro = window.buds2pro || {}, window.buds2pro.recording = window.buds2pro.recording || {}, buds2pro.recording = (r = {}, i = window.buds2pro.common.utils, s = !1, e = null, l = function () { d(), window.removeEventListener("load", l) }, d = function () { (s = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile") != e && (c(), e = s) }, c = function () { r.videoListItems.forEach(function (e, t) { v(t), "mobile" != s && i.offAccessibility(e) }), null != r.swiper && (r.swiper.pagination.destroy(!0), r.swiper.navigation.destroy(!0), r.swiper.destroy(!0), r.swiper = null, r.prevIndex = null); if ("mobile" == s && (r.videoContent.classList.remove("js-swiper-initialized"), null === r.swiper)) r.videoContent.classList.add("js-swiper-initialized"), r.swiper = new Swiper(r.swiperContainer, { init: !1, slidesPerView: "auto", loop: !0, loopFillGroupWithBlank: !0, navigation: { nextEl: r.nextArrow, prevEl: r.prevArrow }, pagination: { el: r.pagination, type: "bullets", renderBullet: function () { return '

    • ' } } }), r.swiper.on("slideChange", function () { v(this.previousIndex), f.call(this), w.call(this), b.call(this), y.call(this), imageLoader.setResponsiveImage([r.prevArrow.querySelector("img"), r.nextArrow.querySelector("img")]) }), r.swiper.on("init", function () { var t = this, e = this.el.querySelector(".swiper-notification"); e && this.el.removeChild(e), f.call(this), w.call(this), b.call(this), y.call(this); for (var i = 0; i < this.pagination.bullets.length; i++)!function (e) { t.pagination.bullets[i].addEventListener("click", function () { t.slideToLoop(e) }) }(i); for (i = 0; i < this.slides.length; i++) { var s = this.slides[i].querySelector(".sc-buds-recording-video__btn-play > img"), n = this.slides[i].querySelector(".sc-buds-recording-video__btn-pause > img"); this.slides[i].classList.contains("swiper-slide-duplicate") && (imageLoader.setResponsiveImage([this.slides[i].querySelector("img.sc-buds-recording-video__cover-image")]), imageLoader.setResponsiveImage([s, n]), a(), r.swiper = this) } }), r.swiper.init() }, u = function () { for (var e = window.pageYOffset, t = e + window.innerHeight, i = r.videoContent.getBoundingClientRect(), s = e + i.top, n = e + i.bottom, a = 0; a < r.videoControls.length; a++)!r.videoControls[a].isPaused && (t <= s || n <= e) && o(a) }, h = function () { r.recordingPopup = window.buds2pro.recordingPopup, i.setLastActiveItem(this), r.recordingPopup.showAudioPopupLayer() }, p = function (e) { var t = r.videoSource.indexOf(this); v(t) }, m = function () { var e = r.videoSource.indexOf(this); document.documentElement.classList.contains("is-layer-popup-opened") && o(e) }, v = function (e) { r.videoListItems[e].classList.contains("is-active") && (r.videoListItems[e].classList.remove("is-pause"), r.videoListItems[e].classList.remove("is-active"), r.videoListItems[e].classList.add("is-ready"), r.videoSource[e].pause(), r.videoSource[e].currentTime = 0, r.videoControlTxt[e].innerHTML = "Play", r.videoControls[e].isPaused = !0, g.call(r.videoControls[e])) }, f = function () { var t = this; setTimeout(function () { for (var e = 0; e < t.slides.length; e++)e != t.activeIndex ? i.onAccessibility(t.slides[e]) : i.offAccessibility(t.slides[e]) }, 500) }, g = function () { var t = this, i = r.videoControls.indexOf(t), s = { "data-omni": t.getAttribute("data-omni"), "ga-la": t.getAttribute("ga-la") }; setTimeout(function () { Object.keys(s).forEach(function (e) { !1 === r.videoControls[i].isPaused ? t.setAttribute(e, s[e].replace(":play", ":pause")) : t.setAttribute(e, s[e].replace(":pause", ":play")) }) }, 50) }, w = function () { var t = this; Array.prototype.slice.call(this.pagination.bullets).forEach(function (i, e) { var e = n(t.slides, e).split("&"), s = (e[0] + "n" + e[1]).toLowerCase().replace(/ /gi, "-"); Object.keys(r.paginationTagging).forEach(function (e) { var t; "data-omni" == e || "ga-la" == e ? (t = r.paginationTagging[e] + s, i.setAttribute(e, t)) : i.setAttribute(e, r.paginationTagging[e]) }) }) }, b = function () { var s = this; Array.prototype.slice.call(this.pagination.bullets).forEach(function (e, t) { var i = n(s.slides, t); s.realIndex == t ? e.setAttribute("aria-label", i + " selected") : e.setAttribute("aria-label", i) }) }, y = function () { var s = this; setTimeout(function () { Object.keys(r.navArrowTagging).forEach(function (e) { var t = n(s.slides, s.realIndex + 2).split("&"), i = n(s.slides, s.realIndex + 1).split("&"), t = (t[0] + "n" + t[1]).toLowerCase().replace(/ /gi, "-"), i = (i[0] + "n" + i[1]).toLowerCase().replace(/ /gi, "-"); "data-omni" == e || "ga-la" == e ? (r.prevArrow.setAttribute(e, r.navArrowTagging[e] + t), r.nextArrow.setAttribute(e, r.navArrowTagging[e] + i)) : (r.prevArrow.setAttribute(e, r.navArrowTagging[e]), r.nextArrow.setAttribute(e, r.navArrowTagging[e])) }) }, 100) }, E = function (e) { e.preventDefault(); e = r.videoControls.indexOf(this); null != r.prevIndex && e != r.prevIndex ? (r.videoControls[r.prevIndex].isPaused || o(r.prevIndex), r.videoControls[e].isPaused && t(e)) : (r.videoControls[e].isPaused ? t : o)(e), r.prevIndex = e }, { init: a = function () { r.section = document.querySelector(".sc-buds-recording-video"), r.section && (r.swiper = null, r.prevIndex = null, r.swiperContainer = r.section.querySelector(".sc-buds-recording-video__contents-inner"), r.prevArrow = r.section.querySelector(".sc-buds-recording-video__arrow-prev"), r.nextArrow = r.section.querySelector(".sc-buds-recording-video__arrow-next"), r.pagination = r.section.querySelector(".swiper-pagination"), r.videoContent = r.section.querySelector(".sc-buds-recording-video__contents"), r.videoListItems = r.section.querySelectorAll(".sc-buds-recording-video__item"), r.videoControls = i.convertArray(r.section.querySelectorAll(".sc-buds-recording-video__control")), r.videoControlTxt = r.section.querySelectorAll(".sc-buds-recording-video__control span.blind"), r.videoSource = i.convertArray(r.section.querySelectorAll(".sc-buds-recording-video__source")), r.popupOpenBtn = document.querySelector(".sc-buds-recording__cta"), r.paginationTagging = { "data-omni-type": "microsite_pcontentinter", "data-omni": "galaxy-buds2-pro:highlights:360-audio-recording:dot:", "ga-ca": "indication", "ga-ac": "carousel", "ga-la": "galaxy-buds2-pro:highlights:360-audio-recording:dot:" }, r.navArrowTagging = { "data-omni-type": "microsite_pcontentinter", "data-omni": "galaxy-buds2-pro:highlights:360-audio-recording:arrow:", "ga-ca": "indication", "ga-ac": "carousel", "ga-la": "galaxy-buds2-pro:highlights:360-audio-recording:arrow:" }, window.addEventListener("load", l), window.addEventListener("resize", d), window.addEventListener("scroll", u), r.videoControls.forEach(function (e) { e.isPaused = !0, e.addEventListener("click", E) }), r.videoSource.forEach(function (e) { e.addEventListener("ended", p), e.addEventListener("timeupdate", m) }), r.popupOpenBtn.addEventListener("click", h)) } }) }(), function () { var t, i, e, s, n, a, o, r; window.buds2pro = window.buds2pro || {}, window.buds2pro.sound = window.buds2pro.sound || {}, buds2pro.sound = (t = {}, window.buds2pro.common.utils, i = !1, e = null, s = function () { n(), o(), window.removeEventListener("load", s) }, n = function () { i = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(t.resizeTimeout), t.resizeTimeout = setTimeout(function () { }, 100), i != e && (a(), e = i) }, a = function () { r(), null == t.scroller && (t.scroller = SCROLLER({ trackElement: t.section, useFixed: !1 })) }, o = function () { null != t.scroller && t.scroller.trackAnimation(function () { var e = ANIUTIL.calRange({ targetValue: "mobile" != i ? 20 : 40, progress: this.progress, startPoint: 10, endPoint: "mobile" != i ? 50 : 70 }); TweenMax.to(t.soundKv, .2, { y: -e + "%" }) }) }, r = function () { null != t.scroller && (t.scroller.destroy(!0), t.scroller = null) }, { init: function () { t.section = document.querySelector(".sc-buds-sound-experience"), t.section && (t.scroller = null, t.soundKv = t.section.querySelector(".sc-buds-sound-experience__kv"), window.addEventListener("load", s), window.addEventListener("resize", n), window.addEventListener("scroll", o)) } }) }(), window.addEventListener("load", function () { setTimeout(function () { window.GALAXY && window.GALAXY.isGalaxy && buds2pro.subnav.init() }, 5) }), buds2pro.audioPopup.init(), buds2pro.recordingPopup.init(), buds2pro.video.init(), buds2pro.kv.init(), buds2pro.overview.init(), buds2pro.sound.init(), buds2pro.hifi.init(), buds2pro.anc.init(), buds2pro.audio.init(), buds2pro.easyPairing.init(), buds2pro.ergonomic.init(), buds2pro.howto.init(), buds2pro.colors.init(), buds2pro.excellence.init(), buds2pro.compare.init(), buds2pro.ecosystem.init(), buds2pro.contrast.init(), buds2pro.expert.init(), buds2pro.recording.init(), buds2pro.immersive.init(); }); document.addEventListener("DOMContentLoaded", function () { let anchors = document.querySelectorAll(".sc-buds-ai-list__anchor"); document .querySelector("#tabListId_0") .classList.add("sc-buds-ai-list__anchor--active"); }); const toggleActiveTabPanelAi = (element) => { const anchorId_0 = document.querySelector("#tabListId_0"); const anchorId_1 = document.querySelector("#tabListId_1"); const panelId_0 = document.querySelector("#tabPanelId_0"); const panelId_1 = document.querySelector("#tabPanelId_1"); if (element.id == "tabListId_0") { anchorId_1.setAttribute("aria-selected", "false"); element.setAttribute("aria-selected", "true"); onActiveAi(element); onInActiveAi(anchorId_1); panelId_1.classList.remove("sc-buds-ai-panel--active"); panelId_1.setAttribute("aria-hidden", "true"); panelId_0.classList.add("sc-buds-ai-panel--active"); panelId_0.setAttribute("aria-hidden", "false"); } else if (element.id == "tabListId_1") { anchorId_0.setAttribute("aria-selected", "false"); element.setAttribute("aria-selected", "true"); onActiveAi(element); onInActiveAi(anchorId_0); panelId_0.classList.remove("sc-buds-ai-panel--active"); panelId_0.setAttribute("aria-hidden", "true"); panelId_1.classList.add("sc-buds-ai-panel--active"); panelId_1.setAttribute("aria-hidden", "false"); } }; const onActiveAi = (anchor) => { anchor.classList.add("sc-buds-ai-list__anchor--active"); let anchorId = anchor.getAttribute("id"); let activeImage = document.querySelector( "#" + anchorId + " .sc-buds-ai-list__image--active" ); let defaultImage = document.querySelector( "#" + anchorId + " .sc-buds-ai-list__image--default" ); activeImage.style.display = "block"; defaultImage.style.display = "none"; }; const onInActiveAi = (anchor) => { if (anchor.getAttribute("aria-selected") == "true") return; let anchorId = anchor.getAttribute("id"); let activeImage = document.querySelector( "#" + anchorId + " .sc-buds-ai-list__image--active" ); let defaultImage = document.querySelector( "#" + anchorId + " .sc-buds-ai-list__image--default" ); activeImage.style.display = "none"; defaultImage.style.display = "block"; anchor.classList.remove("sc-buds-ai-list__anchor--active"); };

    • Galaxy Buds2 Pro | SM-R510NZAAINU | Samsung IN (2024)
      Top Articles
      Latest Posts
      Article information

      Author: Tyson Zemlak

      Last Updated:

      Views: 6216

      Rating: 4.2 / 5 (63 voted)

      Reviews: 86% of readers found this page helpful

      Author information

      Name: Tyson Zemlak

      Birthday: 1992-03-17

      Address: Apt. 662 96191 Quigley Dam, Kubview, MA 42013

      Phone: +441678032891

      Job: Community-Services Orchestrator

      Hobby: Coffee roasting, Calligraphy, Metalworking, Fashion, Vehicle restoration, Shopping, Photography

      Introduction: My name is Tyson Zemlak, I am a excited, light, sparkling, super, open, fair, magnificent person who loves writing and wants to share my knowledge and understanding with you.