Galaxy Watch6

2023年9月15日発売
遂にFeliCa初対応! 毎日のウェルネスをスタート


5つのGalaxy Watch6(ギャラクシーウォッチシックス)が斜めに並んでいる。5つにはすべて異なる文字盤が表示され、別々のウォッチバンドが取り付けられている。

あなたをよく知るスマートウォッチ。健康の確認機能はさらにパーソナライズされ、睡眠トラッキングもアップグレードされました。Galaxy Watch6の高度な睡眠測定機能で質の高い睡眠を取り、一日の疲れを癒やしましょう。

Galaxy Watch6毎日のウェルネスをスタート

睡眠スコア画面が表示されたGalaxy Watch6(ギャラクシーウォッチシックス)。睡眠のバーが進むと、下部の「Excellent(素晴らしい)」というテキストと一緒に、睡眠スコアの「82」が表示される。睡眠アニマルのライオンが画面下部に表示されている。

健康的な睡眠習慣を始めましょう 睡眠トラッキングの詳細を見る

回転して正面を向いたGalaxy Watch6(ギャラクシーウォッチシックス)。ディスプレイの黒い縁が細くなり、より大きなディスプレイが強調されている。

タップ、スワイプ、スクロールのしやすい大きなウォッチフェイス ディスプレイの詳細を見る

心電図センサー(ECG)のGUIが測定されている様子を表示されている。測定時間が15秒から10秒へと変わり、心拍数が72と77の間を変化している。数字の下には、刻々変化する心拍を示すグラフが表示されている。

身体とウェルネスについてのインサイトを得ましょう 健康の詳細を見る
腕にGalaxy Watch6(ギャラクシーウォッチシックス)を着けて走っている一人の女性。
フィットネスのヒントを得るために目標を設定しましょう フィットネスの詳細を見る
さまざまなウォッチストラップを装着し、異なる画面を表示している複数のGalaxy Watch6(ギャラクシーウォッチシックス)。
自分らしいスタイルを表現しましょう カスタマイズの詳細を見る
Close Popup

20%大きく
30%スリムに

ディスプレイが最大20%大きくなったことで、より多くの情報をひと目で確認できるようになりました。黒い縁も最大30%スリムに。Galaxy Watchの画面が過去最大になっただけでなく、カスタマイズ可能なウォッチフェイスでより自由に自分らしさを表現できるようになりました。1, 2

スクリーンは大きく

ベゼルは薄く

よりスリムな
フォルムを採用

2台のGalaxy Watch6(ギャラクシーウォッチシックス)。1つは、その薄さがわかるよう配置されている。もう1つは、Galaxy Watch6(ギャラクシーウォッチシックス)のスリムなデザインを強調するため、拡大されている。

スタイリッシュさと快適さが一体となった、よりスリムでスマートなフォルム。腕時計の形から余分なものを取り除いたGalaxy Watch6は、より装着しやすいデザインに生まれ変わりました。シームレスなフィット感と時代を超越した円形デザインは、非常に快適で軽量ながらもさまざまな機能が搭載されています。3

ストラップの切り替えがワンタッチで簡単

クイックリリースボタンを押すとウォッチストラップが簡単に外れます。ワークアウトスタイルから外出用のスタイルへの変更も、たったのワンタッチで完了。付け直すとカチっと音がなるストラップガイドがあるため、位置合わせも簡単です。4

簡単にボタンワンタッチで取り外し可能であることを説明するため、Galaxy Watch6(ギャラクシーウォッチシックス)のウォッチバンドが取り付けられるところ。

引っかき傷にも負けない
サファイア
クリスタルガラス

雨の日も晴れの日も準備万端。耐久性の非常に高いサファイアクリスタルガラスによって、弾力性のある頑丈なウォッチディスプレイが実現しました。IP68と5ATM規格にも準拠した丈夫さで、どんな環境でもあなたに寄り添います。5, 6

ホコリにも安心の耐性
濡れても安心のウォッチ

ディスプレイが拡大されたGalaxy Watch6(ギャラクシーウォッチシックス)。防水であることを表すため、隣には水滴が記載されている。サファイアクリスタルグラスの耐久性を強調するため、ディスプレイ上がかすかな光で覆われている。

驚きの速さ

充電完了

1回のフル充電で最大40時間使用可能。たったの30分で最大45%までスピーディーに充電できるので、野外に出かける時も、ベッドでくつろぐ前にも、すぐに使える状態になります。7, 8

最大 45 %
充電時間 30

充電中のディスプレイが表示された、Galaxy Watch6(ギャラクシーウォッチシックス)。画面の数字が「50%」から「100%」に増え、バッテリーの充電が完了したことが分かる。

シリーズ最強のパワフルウォッチ

Galaxy Watch6はプロセッサーをアップグレードしたことで先行モデルより18%高速化し、アプリの起動速度が改善されました。ランニングで一日をスタートする時も夜のくつろいだ時間にも、ひとつひとつの動きに対応します。3

Galaxy Watch6のプロセッサーに、ベゼルとディスプレイが取り付けられているところ。

良い一日は
良い睡眠から

睡眠タイプがライオンタイプであることが表示されたGalaxy Watch6(ギャラクシーウォッチシックス)。文字盤には簡単な睡眠データが表示されている。

デイタイムにフルの力を発揮するため、自分のナイトタイムを把握しましょう。Galaxy Watch6を着けて眠れば、夜間の睡眠ステージ、睡眠スコア、睡眠の継続性をモニタリングして睡眠の改善に繋げることができます。さらに、スマートウォッチから直接睡眠測定機能にアクセスできるようになったため、ウォッチをタップするだけでヒントを確認することができます。9, 10, 11, 12, 13, 14, 15

各睡眠ステージの時間に関する情報は、活動中が35分、レム睡眠が1時間30分、浅い睡眠が4時間30分、深い睡眠が55分。情報はグラフでも表示されている。

BIAで身体の中も外も把握

大掛かりな機械は要りません。Galaxy Watch6に搭載された生体インピーダンス法(BIA)センサーでは、いつでも好きな時に身体のデータを収集することができます。測定結果は、データを活用したアプローチで身体や健康のモニタリングを改善したり、個人のフィットネス目標を設定したりするのに役立ちます。16, 17, 18

セーフティ機能でいざという時も安心

緊急時にも、スマートウォッチがスタンバイ。転んでしまった時は、転倒検知機能が察知して助けが必要かどうか尋ねます。その他の緊急事態の場合でも、Homeボタンを5回押すだけで救急サービスにSOSを送ることができます。救助が到着したら、ロック画面を1回タップするだけであなたの医療情報にすばやくアクセス可能。スマートウォッチがあればもう安心です。19, 20, 21, 22

3台のGalaxy Watch6(ギャラクシーウォッチシックス)。左側のウォッチには、医療情報が表示されている。中央のウォッチには、緊急電話画面が表示されている。右側のウォッチには、転倒検知画面が表示され、「Do you need help?(助けが必要ですか?)」というテキストと 右下にSOS通話ボタンがある。

毎日進捗バーが更新されるアクティビティ画面。

エクササイズトラッキングでフィットネスをモニタリング

Galaxy Watch6では、身体目標の達成を記録したり、あらゆる進捗を確認したりすることができます。90以上のワークアウトをトラッキングしましょう。カスタムのワークアウトを作成することも可能です。スタートボタンを押し忘れても大丈夫。ランニング、ウォーキング、サイクリングまで、スマートウォッチがワークアウトを自動で認識して記録するので、貴重なデータを逃すことはありません。18, 23, 24

さまざまなワークアウトアイコン。中央は、背筋を伸ばして座っている人がサイクリングしているアイコン。アイコンの人物がサイクリングを始めながらゆっくりと前にかがむと、他のワークアウトアイコンが右側から現れる。

心拍ゾーンのパーソナライズで自分にぴったりの強度を設定

個別の心拍ゾーン画面が表示されたGalaxy Watch6(ギャラクシーウォッチシックス)。中央に「In Zone 3(ゾーン3に入りました)」という文字と、下部の心臓アイコンの隣に143という数字が記載されている。
5つの心拍ゾーンそれぞれに心拍数の例があり、異なる色のハートとその隣に心拍数が記載されている。ハートのアイコンが黄色から赤になり、心拍数が12から30、90、140、160に上がっていく。

心拍ゾーンをパーソナライズしましょう。ランニングを始めれば、Galaxy Watch6があなたの運動能力に応じて心拍を計測し、あなたに合わせて心拍ゾーンを最適化します。心拍ゾーンが設定されると、目標の心拍ゾーンに到達した際に通知が受けられます。動いたり走ったりワークアウトしたりしながら、確実にこのゾーンに入るようにしましょう。25

健康状態を家族や友人と競い合い

目標を立てて競争すればさらに相乗効果が高めることができます。ワークアウト仲間を登録し、切磋琢磨して健康状態の向上を図ることができます。目標の達成度合いや進捗状況を確認したり、個人ベストを達成したらお互いに褒め合いましょう。

3台のGalaxy Watch6。左側のウォッチには、1日の歩数が表示されている。中央のウォッチには、競争機能が表示され、50,000歩を目標にしたウォーキングで、このユーザーが6人中3位であることが示されている。右側のウォッチには、エクササイズの時間、距離、平均ペース、心拍数と共に、ワークアウトの結果が表示されている。時計の周りにの3人の異なるポーズのアニメキャラクターが立っている。

スマートウォッチからGalaxy Z Flip5の写真をリモート撮影

Galaxy Z Flip5をスマートウォッチとペアリングすれば、近くや離れた場所から写真撮影ができます。Galaxy Z Flip5のフレックスモードやカメラコントローラーを使えば、写真と動画モードの切り替え、ズームインやズームアウトなどがすべてスマートウォッチから簡単に操作可能です。さあ、スマートウォッチのシャッターボタンを押して写真を撮りましょう。26, 27

右はFlexモードのGalaxy Z Flip5。左はGalaxy Z Flip5と同じ画面を表示しているGalaxy Watch6で、Camera Controller機能を説明している。

単なる時計を超えた存在

単なる時計より、はるかに多くのことが行えるスマートウォッチ。Galaxy Watch6では、メッセージ、通話、音楽の視聴などがスマートフォンなしに可能です。日々の生産性を高めましょう。28, 29

電話 通話画面を表示したGalaxy Watch6(ギャラクシーウォッチシックス)。連絡先リストの画面もあり、スマートフォンを取り出すことなく、Galaxy Watch6(ギャラクシーウォッチシックス)から発信できることが表されている。

国際ローミングで世界が身近に

迷子にならずに世界を旅しましょう。Galaxy Watch6の国際ローミングでは、マップを使用したランドマークへの経路検索がスマートウォッチから行えます。トラブルが起きても心配ありません。電話をかけたりメッセージを送信したりして、助けを求めることができます。30, 31

2台のGalaxy Watch6(ギャラクシーウォッチシックス)。左側のウォッチには設定画面が表示され、モバイルデータとデータローミング機能が有効になっている。右側のウォッチには、緑と赤の通話ボタンがある通話画面が表示されている。

ついにGalaxy WatchがFeliCaに対応

スマホを置いてランニングに出かける時も、スマホがリュックの中にある時も、お買い物はリーダーに手首をかざすだけ39Galaxy Watch6はFeliCaに対応しているので、スマートフォンを取り出すことなく、いつでもどこでも電子マネー39, 40が使える。

*Galaxy Watch6で非接触型決済や改札通過時のかざし方について<詳細を見る>
*Googleウォレットの起動の仕方について<詳細を見る>

Galaxy Watch6 can be seen, slightly turned to the left, with a credit card next to the screen with an NFC icon to illustrate Samsung Wallet can now be used on the Watch. The screen on the Watch is displaying the text 'Hold near an NFC reader to Pay' at the bottom.

もっと多くのアプリをタップ1つで

Audible(オーディブル)、WhatsApp、Spotifyなど、さまざまな人気なサードパーティアプリを楽しむことができます。スマートフォンをポケットに入れたまま、すべてGalaxy Watch6で操作可能です。 41

多種多様なサードパーティアプリがGalaxy Watch6で利用できることを説明するため、さまざまなアプリのアイコンがあちこちに配置されている。

自分らしくカスタマイズ

Galaxy Watch6を自分だけのスタイルに。ウォッチストラップは多種多様。さまざまなスタイルや素材から好きなものをお選びください。カラー、コンプリケーション、デザイン、さらにはペットの写真を使って、ウォッチフェイスをカスタマイズすることもできます。創造力にまかせて、自由にカスタマイズを楽しみましょう。4

さまざまなウォッチストラップを付けたGalaxy Watch6(ギャラクシーウォッチシックス)が複数ある。それぞれのウォッチには、異なる文字盤が表示されている。

データ移行、
アップグレードも簡単に

下取りするとお得

お使いのスマートウォッチを下取りに出すと、Galaxy Watch6が割引価格でご購入可能になります。

Two Galaxy Watch can be seen, illustrating the trade-in service. In the back is a previous model of Galaxy Watch, displaying the text 'Bye' with a hand emoji. In the front is Galaxy Watch6, displaying the text 'Hi' with smiley face and heart emojis.
移行が驚くほど簡単

Smart Switchは、確実かつ安全にGalaxyへデータを転送します。移行を行うと、すべてのアプリ、ウォッチフェイス、設定などが引き継がれます。32, 33, 34, 35

正面を向いたGalaxy Watch6(ギャラクシーウォッチシックス)の側面で、さまざまなアプリのアイコンが画面に沈んでいき、データ転送が表されている。ウォッチ画面の下部にはSmart Switchアプリのアイコンがある。

スマートウォッチの機能を比較する

  • Galaxy Watch6

    • ディスプレイ サファイアクリスタル
    • 画面サイズ 37.3mm | 33.3mm
    • 急速充電8 support
    • 赤外線
      温度
      センサー
      support
    • 素材 アーマー
      アルミ
    • バッテリー容量
      (標準)7
      425mAh |
      300mAh
    • 睡眠
      トラッキング
      support
    • 体組成
      計機能
      support
    • ルートワークアウト /
      トラックバック
      Not Support
    • 耐久性 5ATM+IP68/
      MIL-STD-810H
    • サイズ 44mm | 40mm
    • 重量 33.3g | 28.7g
  • Galaxy Watch6 Classic

    • ディスプレイ サファイアクリスタル
    • 画面サイズ 37.3mm | 33.3mm
    • 急速充電8 support
    • 赤外線
      温度
      センサー
      support
    • 素材 ステンレススチール
    • バッテリー容量
      (標準)7
      425mAh |
      300mAh
    • 睡眠
      トラッキング
      support
    • 体組成
      計機能
      support
    • ルートワークアウト /
      トラックバック
      Not Support
    • 耐久性 5ATM+IP68/
      MIL-STD-810H
    • サイズ 47mm | 43mm
    • 重量 59.0g | 52.0g
  • Galaxy Watch4

    • ディスプレイ Corning® Gorilla® Glass with DX+
    • 画面サイズ 34.6mm | 30.4mm
    • 急速充電36 not support
    • 赤外線
      温度
      センサー
      not support
    • 素材 アーマー
      アルミ
    • バッテリー容量
      (標準)50
      361mAh |
      247mAh
    • 睡眠
      トラッキング
      support
    • 体組成
      計機能
      support
    • ルートワークアウト /
      トラックバック
      not support
    • 耐久性 5ATM+IP68/
      MIL-STD-810G
    • サイズ 44mm | 40mm
    • 重量 30.3g | 25.9g
  • Galaxy Watch5 Pro

    • ディスプレイ サファイアクリスタル
    • 画面サイズ 34.6mm
    • 急速充電37 support
    • 赤外線
      温度
      センサー
      support
    • 素材 チタン
    • バッテリー容量
      (標準)38
      590mAh
    • 睡眠
      トラッキング
      support
    • 体組成
      計機能
      support
    • ルートワークアウト /
      トラックバック
      support
    • 耐久性 5ATM+IP68/
      MIL-STD-810H
    • サイズ 45mm
    • 重量 46.5g

折りたたみから広がる世界

Galaxy
Tab S9 | S9+ | S9
Ultra

C C
  1. Galaxy Watch6のディスプレイサイズをGalaxy Watch5と比較した場合。
  2. 画面のサイズやベゼルの比較は、Galaxy Watch6 40mmモデルに基づいています。Galaxy Watch6 44mmモデルに基づいた場合、画面のサイズとベゼルの比較結果は、それぞれ16.5%と28%です。
  3. Galaxy Watch5と比較した場合。
  4. ウォッチストラップの取り扱い有無は、国や地域によって異なります。追加のウォッチストラップは別売りです。
  5. Galaxy Watch6には防水・防塵性能があり、5ATM規格で水深50mまでの水に10分間耐えられます。ダイビングや高圧水域でのアクティビティには適していません。デバイスまたは手が濡れている場合は、装着する前に乾かしてからご使用ください。Galaxy Watch6は、防水・防塵性能を誇り(IP68)、ホコリや水(水深1.5mまでの淡水に30分間)の侵入を防ぎます。お手入れ方法や使用方法について、詳しくはユーザーマニュアルをご覧ください。
  6. 定荷重200gfで測定したビッカース硬度に基づいています。
  7. 実際のバッテリー寿命は、使用されるネットワーク環境、使用パターン、その他の要因によって異なる場合があります。
  8. テストはSamsungがGalaxy WatchXのプレリリース版(BTおよびLTE)を使用し、それぞれSamsungのスマートフォンとペアリングして実施したものです。デバイスはすべて、プレリリースのソフトウェア、Galaxy Watch Magnetic Fast Charging USB C Cable(EP-OR900)、Samsung 25W USB C Power Adapter(EP-TA800)でテストしています。地域、設定、使用パターン、使用環境などによって異なる場合があります。
  9. バージョン6.24以降のSamsung Healthアプリケーションが必要です。
  10. Galaxy Watch6はSamsung Galaxyスマートフォン(Android 10.0および最低1.5GBメモリ搭載)とペアリングする必要があります。
  11. 睡眠トラッキング機能は、一般的なウェルネス・フィットネスとしての使用のみを目的としており、睡眠障害や疾患の検出、診断、治療での使用を目的としたものではありません。測定値は、個人的な参考情報としてご使用ください。医療的なアドバイスは、医療専門家にご相談ください。
  12. 睡眠測定機能をご利用いただくには、週末の2日間を含む最低7日間の睡眠データが必要です。
  13. 血中酸素レベル機能は、国や地域によって異なる場合があります。
  14. スリープモードをオンにすると、非表示のLEDが有効になります。
  15. Fabric Bandは別売りです。Galaxy Watch4以降に発売されたGalaxy Watchシリーズと互換性があります。ウォッチストラップは、国や地域、キャリアによって異なる場合があります。
  16. 一般的なウェルネス・フィットネスとしての使用のみを目的としており、検出、診断、治療での使用を目的としたものではありません。
  17. 体組成計機能は、Samsung Galaxy Watch4シリーズ以降に発売されたGalaxy Watchモデルにのみ対応しています。身体に植込むタイプのペースメーカー、その他の医療機器をご利用の方や妊娠中の方は、絶対に使用しないでください。デバイスやアプリケーションで提供される健康関連情報は、医学的なアドバイスとして使用しないでください。20歳未満の方は、正確な測定結果が得られない可能性があります。測定値は、個人的な参考情報としてご使用ください。医療的なアドバイスは、医療専門家にご相談ください。
  18. 国や地域、キャリア、デバイスによって、互換性のあるスマートフォンや利用できる機能が異なります。
  19. Galaxy Watch6に最新版のWear OSをインストールする必要があります。
  20. スマートウォッチで転倒検知機能を使用するには、GalaxyスマートフォンのGalaxy Wearableアプリで転倒検知機能を有効にしてください。
  21. 緊急通話をするにはネットワーク接続またはGalaxyスマートフォンとのペアリングが必要です。
  22. スマートウォッチ、Samsung Healthアプリ、関連するソフトウェアから収集した情報は、疾患やその他の症状を診断、治療、緩和、処置、防止することを意図したものではありません。
  23. 設定でワークアウトの自動検知をオンにする必要があります。自動検知はすべてのワークアウトで使用できるものではありません。
  24. Galaxy Watch6シリーズでのみ使用可能です。また、互換性のあるモバイルデバイスとペアリングが必要です。
  25. 心肺機能に基づくランニング時の各心拍ゾーンの範囲を更新するには、時速4km以上の一定速度で屋外を10分以上走る必要があります。
  26. GalaxyZ Flip5は別売りです。
  27. カメラコントローラーは、Galaxy S9シリーズ以降とペアリングした、Galaxy Watch4以降に発売のGalaxy Watchに対応しています。カメラコントローラーのズーム機能は、Samsung Galaxy Watch4シリーズ以降に発売のGalaxy Watchモデルで利用可能です。One UI 5.1以降のカメラコントローラーに対応した、Galaxy Sシリーズ、Galaxy Noteシリーズ、Galaxy Zシリーズのスマートフォンとペアリングする必要があります。
  28. Galaxy Watch6 LTE機能を使用するには、LTEモデルが必要です。
  29. すべてのアプリやサービスが Wear OSと互換性があるわけではありません。
  30. LTEモデルで利用可能です。
  31. 国際ローミングを有効にすると、スマートフォンキャリアのプランによってはローミング料金が発生する場合があります。ローミングで接続できる通信Bandはお使いのキャリアやデバイスの対応状況によって異なる場合があります。
  32. Bluetooth、Wi-Fi、 LTEのいずれかに接続する必要があります。
  33. サードパーティのアプリは別途ダウンロードする必要があります。
  34. SamsungのWear OSを搭載したGalaxy Watchと互換性があります。最新版のSmart Switchをインストールしたスマートフォンとのペアリングが必要です。
  35. 転送できるデータやコンテンツはOSによって異なる場合があります。
  36. 標準容量は第三者の実験室条件下で試験されています。標準容量は、IEC 61960-3規格に基づく試験でのバッテリーサンプル間の容量偏差を考慮した推定平均値です。
  37. テストは、それぞれをSamsungのスマートフォンとペアリングした上で、プレリリース版のGalaxy Watch5(BTおよびLTE)を使用し、2022年6月にSamsung が実施したものです。デバイスはすべて、プレリリースのソフトウェア、Galaxy Watch Magnetic Fast Charging USB C Cable(EP-OR900)、Samsung 25W USB C Power Adapter(EP-TA800)を使用してテストしています。地域、設定、利用状況、環境要因によって充電時間が異なるため、実際の結果が異なる場合があります。
  38. 標準容量は、第三者機関の試験室条件下でテストされたものです。標準容量は、IEC 61960-3規格に基づいてテストされたバッテリーサンプルの容量偏差を考慮した推定平均値です。定格容量は、573mAhです。実際のバッテリー寿命は、ネットワーク環境、使用パターン、その他の要因によって異なる場合があります。
  39. 事前に対応サービスのアプリダウンロードおよび設定が必要です。リーダーにGalaxy Watch6の頂部(一般の時計で12時の位置)を向け、時計面を垂直に立ててかざしてください。詳細はユーザーマニュアル(取扱説明書)をご確認ください。
  40. 対応サービス、対応開始時期については本ページにて随時お知らせします。
    「FeliCa」は、ソニーグループ株式会社またはその関連会社の登録商標または商標です。「FeliCa」は、ソニー株式会社が開発した非接触ICカードの技術方式です。
  41. 一部アプリの利用可否は、国や地域によって異なる場合があります。
" ); return t.attr("data-swiper-slide-index") || t.attr( "data-swiper-slide-index", e ), i.cache && (this.virtual.cache[e] = t), t }, appendSlide: function (t) { if ("object" == typeof t && "length" in t) for (var e = 0; e < t.length; e += 1) t[e] && this .virtual .slides .push(t[e]); else this .virtual .slides .push(t); this .virtual .update(!0) }, prependSlide: function (t) { var s, a, e = this.activeIndex, i = e + 1, n = 1; if (Array.isArray(t)) { for (var r = 0; r < t.length; r += 1) t[r] && this .virtual .slides .unshift(t[r]); i = e + t.length, n = t.length } else this .virtual .slides .unshift(t); this.params.virtual.cache && ( s = this.virtual.cache, a = {}, Object.keys(s).forEach(function (t) { var e = s[t], i = e.attr("data-swiper-slide-index"); i && e.attr("data-swiper-slide-index", parseInt(i, 10) + 1), a[parseInt(t, 10) + n] = e }), this.virtual.cache = a ), this .virtual .update(!0), this.slideTo(i, 0) }, removeSlide: function (t) { if (null != t) { var e = this.activeIndex; if (Array.isArray(t)) for (var i = t.length - 1; 0 <= i; --i) this .virtual .slides .splice(t[i], 1), this.params.virtual.cache && delete this .virtual .cache[t[i]], t[i] < e && --e, e = Math.max(e, 0); else this .virtual .slides .splice(t, 1), this.params.virtual.cache && delete this .virtual .cache[t], t < e && --e, e = Math.max(e, 0); this .virtual .update(!0), this.slideTo(e, 0) } }, removeAllSlides: function () { this.virtual.slides = [], this.params.virtual.cache && (this.virtual.cache = {}), this .virtual .update(!0), this.slideTo(0, 0) } }, y = { name: "virtual", params: { virtual: { enabled: !1, slides: [], cache: !0, renderSlide: null, renderExternal: null, addSlidesBefore: 0, addSlidesAfter: 0 } }, create: function () { U.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 t; this.params.virtual.enabled && ( this.classNames.push( this.params.containerModifierClass + "virtual" ), U.extend(this.params, t = { watchSlidesProgress: !0 }), U.extend(this.originalParams, t), this.params.initialSlide || this.virtual.update() ) }, setTranslate: function () { this.params.virtual.enabled && this .virtual .update() } } }, K = { handle: function (t) { var e = this.rtlTranslate, i = ( t = t.originalEvent ? t.originalEvent : t ).keyCode || t.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 (!(t.shiftKey || t.altKey || t.ctrlKey || t.metaKey || c.activeElement && c.activeElement.nodeName && ("input" === c.activeElement.nodeName.toLowerCase() || "textarea" === c.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 a = X.innerWidth, n = X.innerHeight, r = this .$el .offset(); e && (r.left -= this.$el[0].scrollLeft); for (var o = [ [ r.left, r.top ], [ r.left + this.width, r.top ], [ r.left, r.top + this.height ], [ r.left + this.width, r.top + this.height ] ], l = 0; l < o.length; l += 1) { var h = o[l]; 0 <= h[0] && h[0] <= a && 0 <= h[1] && h[1] <= n && (s = !0) } if (!s) return } this.isHorizontal() ? ( 33 !== i && 34 !== i && 37 !== i && 39 !== i || ( t.preventDefault ? t.preventDefault() : t.returnValue = !1 ), (34 !== i && 39 !== i || e) && (33 !== i && 37 !== i || !e) || this.slideNext(), (33 !== i && 37 !== i || e) && (34 !== i && 39 !== i || !e) || this.slidePrev() ) : ( 33 !== i && 34 !== i && 38 !== i && 40 !== i || ( t.preventDefault ? t.preventDefault() : t.returnValue = !1 ), 34 !== i && 40 !== i || this.slideNext(), 33 !== i && 38 !== i || this.slidePrev() ), this.emit("keyPress", i) } }, enable: function () { this.keyboard.enabled || ( S(c).on("keydown", this.keyboard.handle), this.keyboard.enabled = !0 ) }, disable: function () { this.keyboard.enabled && ( S(c).off("keydown", this.keyboard.handle), this.keyboard.enabled = !1 ) } }, E = { name: "keyboard", params: { keyboard: { enabled: !1, onlyInViewport: !0 } }, create: function () { U.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 C() { for (var i, t = [], e = arguments.length; e--;) t[e] = arguments[e]; i = ( i = 1 === t.length && t[0].constructor && t[0].constructor === Object ? t[0] : (n = t[0], t[1]) ) || {}, i = U.extend({}, i), n && !i.el && (i.el = n), d.call(this, i), Object .keys(R) .forEach(function (e) { Object .keys(R[e]) .forEach(function (t) { C.prototype[t] || (C.prototype[t] = R[e][t]) }) }); var s, a, n, r = this, o = ( void 0 === r.modules && (r.modules = {}), Object.keys(r.modules).forEach(function (t) { var e, t = r.modules[t]; t.params && ( e = Object.keys(t.params)[0], "object" == typeof(t = t.params[e]) && null !== t && e in i && "enabled" in t && ( !0 === i[e] && (i[e] = { enabled: !0 }), "object" != typeof i[e] || "enabled" in i[e] || (i[e].enabled = !0), i[e] || (i[e] = { enabled: !1 }) ) ) }), U.extend({}, $) ), l = ( r.useModulesParams(o), r.params = U.extend({}, o, j, i), r.originalParams = U.extend({}, r.params), r.passedParams = U.extend({}, i), (r.$ = S)( r.params.el ) ); if (n = l[0]) return 1 < l.length ? (s = [], l.each(function (t, e) { e = U.extend({}, i, {el: e}); s.push(new C(e)) }), s) : ( n.swiper = r, l.data("swiper", r), n && n.shadowRoot && n.shadowRoot.querySelector ? (a = S(n.shadowRoot.querySelector("." + r.params.wrapperClass))).children = function ( t ) { return l.children(t) } : a = l.children("." + r.params.wrapperClass), U.extend(r, { $el: l, el: n, $wrapperEl: a, wrapperEl: a[0], classNames: [], slides: S(), slidesGrid: [], snapGrid: [], slidesSizesGrid: [], isHorizontal: function () { return "horizontal" === r.params.direction }, isVertical: function () { return "vertical" === r.params.direction }, rtl: "rtl" === n .dir .toLowerCase() || "rtl" === l.css("direction"), rtlTranslate: "horizontal" === r.params.direction && ( "rtl" === n.dir.toLowerCase() || "rtl" === l.css("direction") ), wrongRTL: "-webkit-box" === a.css("display"), activeIndex: 0, realIndex: 0, isBeginning: !0, isEnd: !1, translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: !1, allowSlideNext: r.params.allowSlideNext, allowSlidePrev: r.params.allowSlidePrev, touchEvents: ( o = b.pointerEvents ? ["pointerdown", "pointermove", "pointerup"] : [ "mousedown", "mousemove", "mouseup" ], r.touchEventsTouch = { start: (n = ["touchstart", "touchmove", "touchend", "touchcancel"])[0], move: n[1], end: n[2], cancel: n[3] }, r.touchEventsDesktop = { start: o[0], move: o[1], end: o[2] }, b.touch || !r.params.simulateTouch ? r.touchEventsTouch : r.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: U.now(), clickTimeout: void 0, velocities: [], allowMomentumBounce: void 0, isTouchEvent: void 0, startMoving: void 0 }, allowClick: !0, allowTouchMove: r.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0 }, imagesToLoad: [], imagesLoaded: 0 }), r.useModules(), r.params.init && r.init(), r ) } var x = { lastScrollTime: U.now(), lastEventBeforeSnap: void 0, recentWheelEvents: [], event: function () { return -1 < X .navigator .userAgent .indexOf("firefox") ? "DOMMouseScroll" : ( (e = "onwheel" in c) || ( (t = c.createElement("div")).setAttribute("onwheel", "return;"), e = "function" == typeof t.onwheel ), ( e = !e && c.implementation && c.implementation.hasFeature && !0 !== c.implementation.hasFeature("", "") ? c.implementation.hasFeature("Events.wheel", "3.0") : e ) ? "wheel" : "mousewheel" ); var t, e }, normalize: function (t) { var e = 0, i = 0, s = 0, a = 0; return "detail" in t && (i = t.detail), "wheelDelta" in t && (i = -t.wheelDelta / 120), "wheelDeltaY" in t && (i = -t.wheelDeltaY / 120), "wheelDeltaX" in t && (e = -t.wheelDeltaX / 120), "axis" in t && t.axis === t.HORIZONTAL_AXIS && (e = i, i = 0), s = 10 * e, a = 10 * i, "deltaY" in t && (a = t.deltaY), "deltaX" in t && (s = t.deltaX), t.shiftKey && !s && (s = a, a = 0), (s || a) && t.deltaMode && ( 1 === t.deltaMode ? (s *= 40, a *= 40) : (s *= 800, a *= 800) ), { spinX: e = s && !e ? s < 1 ? -1 : 1 : e, spinY: i = a && !i ? a < 1 ? -1 : 1 : i, pixelX: s, pixelY: a } }, handleMouseEnter: function () { this.mouseEntered = !0 }, handleMouseLeave: function () { this.mouseEntered = !1 }, handle: function (t) { var e = t, i = this, s = i.params.mousewheel; if ( i.params.cssMode && e.preventDefault(), !i.mouseEntered && !s.releaseOnEdges ) return !0; e.originalEvent && (e = e.originalEvent); var a = 0, n = i.rtlTranslate ? -1 : 1, r = x.normalize(e); if (s.forceToAxis) if (i.isHorizontal()) { if (!(Math.abs(r.pixelX) > Math.abs(r.pixelY))) return !0; a = r.pixelX * n } else { if (!(Math.abs(r.pixelY) > Math.abs(r.pixelX))) return !0; a = r.pixelY } else a = Math.abs(r.pixelX) > Math.abs(r.pixelY) ? -r.pixelX * n : -r.pixelY; if (0 === a) return !0; if (s.invert && (a = -a), i.params.freeMode) { var o = { time: U.now(), delta: Math.abs(a), direction: Math.sign(a) }, n = i.mousewheel.lastEventBeforeSnap, r = n && o.time < n.time + 500 && o.delta <= n.delta && o.direction === n.direction; if (!r) { i.mousewheel.lastEventBeforeSnap = void 0, i.params.loop && i.loopFix(); var l, h, n = i.getTranslate() + a * s.sensitivity, s = i.isBeginning, d = i.isEnd; if ( ( n = n >= i.minTranslate() ? i.minTranslate() : n ) <= i.maxTranslate() && (n = i.maxTranslate()), i.setTransition(0), i.setTranslate(n), i.updateProgress(), i.updateActiveIndex(), i.updateSlidesClasses(), (!s && i.isBeginning || !d && 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, d = l[0], l.push(o), s && (o.delta > s.delta || o.direction !== s.direction) ? l.splice(0) : 15 <= l.length && o.time - d.time < 500 && 1 <= d.delta - o.delta && o.delta <= 6 && ( h = 0 < a ? .8 : .2, i.mousewheel.lastEventBeforeSnap = o, l.splice(0), i.mousewheel.timeout = U.nextTick(function () { i.slideToClosest(i.params.speed, !0, void 0, h) }, 0) ), i.mousewheel.timeout || (i.mousewheel.timeout = U.nextTick(function () { i.mousewheel.lastEventBeforeSnap = o, l.splice(0), i.slideToClosest(i.params.speed, !0, void 0, .5) }, 500)) ), r || i.emit("scroll", e), i.params.autoplay && i.params.autoplayDisableOnInteraction && i.autoplay.stop(), n === i.minTranslate() || n === i.maxTranslate() ) return !0 } } else { s = { time: U.now(), delta: Math.abs(a), direction: Math.sign(a), raw: t }, d = i.mousewheel.recentWheelEvents, r = ( 2 <= d.length && d.shift(), d.length ? d[d.length - 1] : void 0 ); if ( d.push(s), (!r || s.direction !== r.direction || s.delta > r.delta) && i.mousewheel.animateSlider(s), i.mousewheel.releaseScroll(s) ) return !0 } return e.preventDefault ? e.preventDefault() : e.returnValue = !1, !1 }, animateSlider: function (t) { return 6 <= t.delta && U.now() - this.mousewheel.lastScrollTime < 60 || ( t.direction < 0 ? this.isEnd && !this.params.loop || this.animating || ( this.slideNext(), this.emit("scroll", t.raw) ) : this.isBeginning && !this.params.loop || this.animating || ( this.slidePrev(), this.emit("scroll", t.raw) ), this.mousewheel.lastScrollTime = (new X.Date).getTime(), !1 ) }, releaseScroll: function (t) { var e = this.params.mousewheel; if (t.direction < 0) { if (this.isEnd && !this.params.loop && e.releaseOnEdges) return !0 } else if (this.isBeginning && !this.params.loop && e.releaseOnEdges) return !0; return !1 }, enable: function () { var t = x.event(); if (this.params.cssMode) return this .wrapperEl .removeEventListener(t, this.mousewheel.handle), !0; if (!t) return !1; if (this.mousewheel.enabled) return !1; var e = this.$el; return ( e = "container" !== this.params.mousewheel.eventsTarged ? S(this.params.mousewheel.eventsTarged) : e ).on("mouseenter", this.mousewheel.handleMouseEnter), e.on("mouseleave", this.mousewheel.handleMouseLeave), e.on(t, this.mousewheel.handle), this.mousewheel.enabled = !0 }, disable: function () { var t = x.event(); if (this.params.cssMode) return this .wrapperEl .addEventListener(t, this.mousewheel.handle), !0; if (!t) return !1; if (!this.mousewheel.enabled) return !1; var e = this.$el; return ( e = "container" !== this.params.mousewheel.eventsTarged ? S(this.params.mousewheel.eventsTarged) : e ).off(t, this.mousewheel.handle), !(this.mousewheel.enabled = !1) } }, L = { update: function () { var t, e, i = this.params.navigation; this.params.loop || ( t = (e = this.navigation).$nextEl, (e = e.$prevEl) && 0 < e.length && ( this.isBeginning ? e.addClass(i.disabledClass) : e.removeClass(i.disabledClass), e[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](i.lockClass) ), t && 0 < t.length && ( this.isEnd ? t.addClass(i.disabledClass) : t.removeClass(i.disabledClass), t[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](i.lockClass) ) ) }, onPrevClick: function (t) { t.preventDefault(), this.isBeginning && !this.params.loop || this.slidePrev() }, onNextClick: function (t) { t.preventDefault(), this.isEnd && !this.params.loop || this.slideNext() }, init: function () { var t, e, i = this.params.navigation; (i.nextEl || i.prevEl) && ( i.nextEl && ( t = S(i.nextEl), this.params.uniqueNavElements && "string" == typeof i.nextEl && 1 < t.length && 1 === this.$el.find(i.nextEl).length && (t = this.$el.find(i.nextEl)) ), i.prevEl && ( e = S(i.prevEl), this.params.uniqueNavElements && "string" == typeof i.prevEl && 1 < e.length && 1 === this.$el.find(i.prevEl).length && (e = this.$el.find(i.prevEl)) ), t && 0 < t.length && t.on("click", this.navigation.onNextClick), e && 0 < e.length && e.on("click", this.navigation.onPrevClick), U.extend(this.navigation, { $nextEl: t, nextEl: t && t[0], $prevEl: e, prevEl: e && e[0] }) ) }, destroy: function () { var t = this.navigation, e = t.$nextEl, t = t.$prevEl; e && e.length && ( e.off("click", this.navigation.onNextClick), e.removeClass(this.params.navigation.disabledClass) ), t && t.length && ( t.off("click", this.navigation.onPrevClick), t.removeClass(this.params.navigation.disabledClass) ) } }, A = { update: function () { var t = this.rtl, s = this.params.pagination; if (s.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) { var a, e = ( this.virtual && this.params.virtual.enabled ? this.virtual : this ).slides.length, i = this.pagination.$el, n = this.params.loop ? Math.ceil((e - 2 * this.loopedSlides) / this.params.slidesPerGroup) : this.snapGrid.length; if ( this.params.loop ? ( (a = Math.ceil((this.activeIndex - this.loopedSlides) / this.params.slidesPerGroup)) > e - 1 - 2 * this.loopedSlides && (a -= e - 2 * this.loopedSlides), n - 1 < a && (a -= n), a < 0 && "bullets" !== this.params.paginationType && (a = n + a) ) : a = void 0 !== this.snapIndex ? this.snapIndex : this.activeIndex || 0, "bullets" === s.type && this.pagination.bullets && 0 < this.pagination.bullets.length ) { var r, o, l, h = this.pagination.bullets; if (s.dynamicBullets && (this.pagination.bulletSize = h.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 += a - this.previousIndex, this.pagination.dynamicBulletIndex > s.dynamicMainBullets - 1 ? this.pagination.dynamicBulletIndex = s.dynamicMainBullets - 1 : this.pagination.dynamicBulletIndex < 0 && ( this.pagination.dynamicBulletIndex = 0 ) ), r = a - this.pagination.dynamicBulletIndex, l = ( (o = r + (Math.min(h.length, s.dynamicMainBullets) - 1)) + r ) / 2), h.removeClass( s.bulletActiveClass + " " + s.bulletActiveClass + "-next " + s.bulletActiveClass + "-next-next " + s.bulletActiveClass + "-prev " + s.bulletActiveClass + "-prev-p" + "rev " + s.bulletActiveClass + "-main" ), 1 < i.length) h.each(function (t, e) { var e = S(e), i = e.index(); i === a && e.addClass(s.bulletActiveClass), s.dynamicBullets && (r <= i && i <= o && e.addClass( s.bulletActiveClass + "-main" ), i === r && e.prev().addClass(s.bulletActiveClass + "-prev").prev().addClass( s.bulletActiveClass + "-prev-prev" ), i === o && e.next().addClass(s.bulletActiveClass + "-next").next().addClass( s.bulletActiveClass + "-next-next" )) }); else { var e = h.eq(a), d = e.index(); if (e.addClass(s.bulletActiveClass), s.dynamicBullets) { for (var e = h.eq(r), c = h.eq(o), u = r; u <= o; u += 1) h .eq(u) .addClass(s.bulletActiveClass + "-main"); if (this.params.loop) if (d >= h.length - s.dynamicMainBullets) { for (var p = s.dynamicMainBullets; 0 <= p; --p) h .eq(h.length - p) .addClass(s.bulletActiveClass + "-main"); h .eq(h.length - s.dynamicMainBullets - 1) .addClass(s.bulletActiveClass + "-prev") } else e .prev() .addClass(s.bulletActiveClass + "-prev") .prev() .addClass(s.bulletActiveClass + "-prev-prev"), c .next() .addClass(s.bulletActiveClass + "-next") .next() .addClass(s.bulletActiveClass + "-next-next"); else e .prev() .addClass(s.bulletActiveClass + "-prev") .prev() .addClass(s.bulletActiveClass + "-prev-prev"), c .next() .addClass(s.bulletActiveClass + "-next") .next() .addClass(s.bulletActiveClass + "-next-next") } } s.dynamicBullets && ( d = Math.min(h.length, s.dynamicMainBullets + 4), e = (this.pagination.bulletSize * d - this.pagination.bulletSize) / 2 - l * this.pagination.bulletSize, c = t ? "right" : "left", h.css( this.isHorizontal() ? c : "top", e + "px" ) ) } "fraction" === s.type && ( i.find("." + s.currentClass).text(s.formatFractionCurrent( a + 1 )), i.find("." + s.totalClass).text(s.formatFractionTotal(n)) ), "progressbar" === s.type && ( d = s.progressbarOpposite ? this.isHorizontal() ? "vertical" : "horizontal" : this.isHorizontal() ? "horizontal" : "vertical", l = (a + 1) / n, c = t = 1, "horizontal" == d ? t = l : c = l, i.find("." + s.progressbarFillClass).transform( "translate3d(0,0,0) scaleX(" + t + ") scaleY(" + c + ")" ).transition(this.params.speed) ), "custom" === s.type && s.renderCustom ? ( i.html(s.renderCustom(this, a + 1, n)), 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 t = this.params.pagination; if (t.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) { var e = ( this.virtual && this.params.virtual.enabled ? this.virtual : this ).slides.length, i = this.pagination.$el, s = ""; if ("bullets" === t.type) { for ( var a = this.params.loop ? Math.ceil((e - 2 * this.loopedSlides) / this.params.slidesPerGroup) : this.snapGrid.length, n = 0; n < a; n += 1 ) t.renderBullet ? s += t .renderBullet .call(this, n, t.bulletClass) : s += "<" + t.bulletElement + ' class="' + t.bulletClass + '">' + t.bulletElement + ">"; i.html(s), this.pagination.bullets = i.find("." + t.bulletClass) } "fraction" === t.type && ( s = t.renderFraction ? t.renderFraction.call(this, t.currentClass, t.totalClass) : ' / ', i.html(s) ), "progressbar" === t.type && ( s = t.renderProgressbar ? t.renderProgressbar.call(this, t.progressbarFillClass) : '', i.html(s) ), "custom" !== t.type && this.emit("paginationRender", this.pagination.$el[0]) } }, init: function () { var t, e = this, i = e.params.pagination; i.el && 0 !== (t = S(i.el)).length && ( e.params.uniqueNavElements && "string" == typeof i.el && 1 < t.length && 1 === e.$el.find(i.el).length && (t = e.$el.find(i.el)), "bullets" === i.type && i.clickable && t.addClass(i.clickableClass), t.addClass( i.modifierClass + i.type ), "bullets" === i.type && i.dynamicBullets && ( t.addClass( "" + i.modifierClass + i.type + "-dynamic" ), e.pagination.dynamicBulletIndex = 0, i.dynamicMainBullets < 1 && (i.dynamicMainBullets = 1) ), "progressbar" === i.type && i.progressbarOpposite && t.addClass(i.progressbarOppositeClass), i.clickable && t.on("click", "." + i.bulletClass, function (t) { t.preventDefault(); t = S(this).index() * e.params.slidesPerGroup; e.params.loop && (t += e.loopedSlides), e.slideTo(t) }), U.extend(e.pagination, { $el: t, el: t[0] }) ) }, destroy: function () { var t, e = this.params.pagination; e.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length && ( (t = this.pagination.$el).removeClass(e.hiddenClass), t.removeClass( e.modifierClass + e.type ), this.pagination.bullets && this.pagination.bullets.removeClass(e.bulletActiveClass), e.clickable && t.off("click", "." + e.bulletClass) ) } }, k = { setTranslate: function () { var t, e, i, s, a, n, r, o; this.params.scrollbar.el && this.scrollbar.el && ( n = this.scrollbar, t = this.rtlTranslate, o = this.progress, e = n.dragSize, i = n.trackSize, s = n.$dragEl, a = n.$el, n = this.params.scrollbar, o = (i - (r = e)) * o, t ? 0 < (o = -o) ? (r = e - o, o = 0) : i < -o + e && (r = i + o) : o < 0 ? (r = e + o, o = 0) : i < o + e && (r = i - o), this.isHorizontal() ? (s.transform("translate3d(" + o + "px, 0, 0)"), s[0].style.width = r + "px") : ( s.transform("translate3d(0px, " + o + "px, 0)"), s[0].style.height = r + "px" ), n.hide && ( clearTimeout(this.scrollbar.timeout), a[0].style.opacity = 1, this.scrollbar.timeout = setTimeout(function () { a[0].style.opacity = 0, a.transition(400) }, 1e3) ) ) }, setTransition: function (t) { this.params.scrollbar.el && this.scrollbar.el && this .scrollbar .$dragEl .transition(t) }, updateSize: function () { var t, e, i, s, a, n, r; this.params.scrollbar.el && this.scrollbar.el && ( e = (t = this.scrollbar).$dragEl, i = t.$el, e[0].style.width = "", e[0].style.height = "", s = this.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight, n = (a = this.size / this.virtualSize) * (s / this.size), r = "auto" === this.params.scrollbar.dragSize ? s * a : parseInt(this.params.scrollbar.dragSize, 10), this.isHorizontal() ? e[0].style.width = r + "px" : e[0].style.height = r + "px", i[0].style.display = 1 <= a ? "none" : "", this.params.scrollbar.hide && (i[0].style.opacity = 0), U.extend(t, { trackSize: s, divider: a, moveDivider: n, dragSize: r }), t.$el[ this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass" ](this.params.scrollbar.lockClass) ) }, getPointerPosition: function (t) { return this.isHorizontal() ? ( "touchstart" === t.type || "touchmove" === t.type ? t.targetTouches[0] : t ).clientX : ( "touchstart" === t.type || "touchmove" === t.type ? t.targetTouches[0] : t ).clientY }, setDragPosition: function (t) { var e = this.scrollbar, i = this.rtlTranslate, s = e.$el, a = e.dragSize, n = e.trackSize, r = e.dragStartPos, e = (e.getPointerPosition(t) - s.offset()[ this.isHorizontal() ? "left" : "top" ] - ( null !== r ? r : a / 2 )) / (n - a), t = ( e = Math.max(Math.min(e, 1), 0), i && (e = 1 - e), this.minTranslate() + (this.maxTranslate() - this.minTranslate()) * e ); this.updateProgress(t), this.setTranslate(t), this.updateActiveIndex(), this.updateSlidesClasses() }, onDragStart: function (t) { var e = this.params.scrollbar, i = this.scrollbar, s = this.$wrapperEl, a = i.$el, n = i.$dragEl; this.scrollbar.isTouched = !0, this.scrollbar.dragStartPos = t.target === n[0] || t.target === n ? i.getPointerPosition(t) - t .target .getBoundingClientRect()[ this.isHorizontal() ? "left" : "top" ] : null, t.preventDefault(), t.stopPropagation(), s.transition(100), n.transition(100), i.setDragPosition(t), clearTimeout(this.scrollbar.dragTimeout), a.transition(0), e.hide && a.css("opacity", 1), this.params.cssMode && this .$wrapperEl .css("scroll-snap-type", "none"), this.emit("scrollbarDragStart", t) }, onDragMove: function (t) { var e = this.scrollbar, i = this.$wrapperEl, s = e.$el, a = e.$dragEl; this.scrollbar.isTouched && ( t.preventDefault ? t.preventDefault() : t.returnValue = !1, e.setDragPosition(t), i.transition(0), s.transition(0), a.transition(0), this.emit("scrollbarDragMove", t) ) }, onDragEnd: function (t) { var e = this.params.scrollbar, i = this.scrollbar, s = this.$wrapperEl, a = i.$el; this.scrollbar.isTouched && ( this.scrollbar.isTouched = !1, this.params.cssMode && (this.$wrapperEl.css("scroll-snap-type", ""), s.transition("")), e.hide && ( clearTimeout(this.scrollbar.dragTimeout), this.scrollbar.dragTimeout = U.nextTick(function () { a.css("opacity", 0), a.transition(400) }, 1e3) ), this.emit("scrollbarDragEnd", t), e.snapOnRelease && this.slideToClosest() ) }, enableDraggable: function () { var t, e, i, s, a; this.params.scrollbar.el && ( i = this.scrollbar, t = this.touchEventsTouch, e = this.touchEventsDesktop, a = this.params, i = i.$el[0], s = !(!b.passiveListener || !a.passiveListeners) && { passive: !1, capture: !1 }, a = !(!b.passiveListener || !a.passiveListeners) && { passive: !0, capture: !1 }, b.touch ? ( i.addEventListener(t.start, this.scrollbar.onDragStart, s), i.addEventListener(t.move, this.scrollbar.onDragMove, s), i.addEventListener(t.end, this.scrollbar.onDragEnd, a) ) : ( i.addEventListener(e.start, this.scrollbar.onDragStart, s), c.addEventListener(e.move, this.scrollbar.onDragMove, s), c.addEventListener(e.end, this.scrollbar.onDragEnd, a) ) ) }, disableDraggable: function () { var t, e, i, s, a; this.params.scrollbar.el && ( i = this.scrollbar, t = this.touchEventsTouch, e = this.touchEventsDesktop, a = this.params, i = i.$el[0], s = !(!b.passiveListener || !a.passiveListeners) && { passive: !1, capture: !1 }, a = !(!b.passiveListener || !a.passiveListeners) && { passive: !0, capture: !1 }, b.touch ? ( i.removeEventListener(t.start, this.scrollbar.onDragStart, s), i.removeEventListener(t.move, this.scrollbar.onDragMove, s), i.removeEventListener(t.end, this.scrollbar.onDragEnd, a) ) : ( i.removeEventListener(e.start, this.scrollbar.onDragStart, s), c.removeEventListener(e.move, this.scrollbar.onDragMove, s), c.removeEventListener(e.end, this.scrollbar.onDragEnd, a) ) ) }, init: function () { var t, e, i, s; this.params.scrollbar.el && ( t = this.scrollbar, s = this.$el, i = S((e = this.params.scrollbar).el), 0 === (s = ( i = this.params.uniqueNavElements && "string" == typeof e.el && 1 < i.length && 1 === s.find(e.el).length ? s.find(e.el) : i ).find("." + this.params.scrollbar.dragClass)).length && (s = S( '
' ), i.append(s)), U.extend(t, { $el: i, el: i[0], $dragEl: s, dragEl: s[0] }), e.draggable && t.enableDraggable() ) }, destroy: function () { this .scrollbar .disableDraggable() } }, Q = { setTransform: function (t, e) { var i = this.rtl, t = S(t), i = i ? -1 : 1, s = t.attr("data-swiper-parallax") || "0", a = t.attr("data-swiper-parallax-x"), n = t.attr("data-swiper-parallax-y"), r = t.attr("data-swiper-parallax-scale"), o = t.attr("data-swiper-parallax-opacity"); a || n ? (a = a || "0", n = n || "0") : this.isHorizontal() ? (a = s, n = "0") : (n = s, a = "0"), a = 0 <= a.indexOf("%") ? parseInt(a, 10) * e * i + "%" : a * e * i + "px", n = 0 <= n.indexOf("%") ? parseInt(n, 10) * e + "%" : n * e + "px", null != o && (s = o - (o - 1) * (1 - Math.abs(e)), t[0].style.opacity = s), null == r ? t.transform("translate3d(" + a + ", " + n + ", 0px)") : (i = r - (r - 1) * (1 - Math.abs(e)), t.transform( "translate3d(" + a + ", " + n + ", 0px) scale(" + i + ")" )) }, setTranslate: function () { var s = this, t = s.$el, e = s.slides, a = s.progress, n = s.snapGrid; t .children( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [d" + "ata-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each(function (t, e) { s .parallax .setTransform(e, a) }), e.each(function (t, e) { var i = e.progress; 1 < s.params.slidesPerGroup && "auto" !== s.params.slidesPerView && ( i += Math.ceil(t / 2) - a * (n.length - 1) ), i = Math.min(Math.max(i, -1), 1), S(e) .find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [d" + "ata-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each(function (t, e) { s .parallax .setTransform(e, 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], [d" + "ata-swiper-parallax-opacity], [data-swiper-parallax-scale]" ) .each(function (t, e) { var e = S(e), i = parseInt(e.attr("data-swiper-parallax-duration"), 10) || s; 0 === s && (i = 0), e.transition(i) }) } }, J = { getDistanceBetweenTouches: function (t) { if (t.targetTouches.length < 2) return 1; var e = t .targetTouches[0] .pageX, i = t .targetTouches[0] .pageY, s = t .targetTouches[1] .pageX, t = t .targetTouches[1] .pageY; return Math.sqrt(Math.pow(s - e, 2) + Math.pow(t - i, 2)) }, onGestureStart: function (t) { var e = this.params.zoom, i = this.zoom, s = i.gesture; if (i.fakeGestureTouched = !1, i.fakeGestureMoved = !1, !b.gestures) { if ("touchstart" !== t.type || "touchstart" === t.type && t.targetTouches.length < 2) return; i.fakeGestureTouched = !0, s.scaleStart = J.getDistanceBetweenTouches(t) } s.$slideEl && s.$slideEl.length || ( s.$slideEl = S(t.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( "." + e.containerClass ), s.maxRatio = s.$imageWrapEl.attr("data-swiper-zoom") || e.maxRatio, 0 !== s.$imageWrapEl.length ) ? (s.$imageEl.transition(0), this.zoom.isScaling = !0) : s.$imageEl = void 0 }, onGestureChange: function (t) { var e = this.params.zoom, i = this.zoom, s = i.gesture; if (!b.gestures) { if ("touchmove" !== t.type || "touchmove" === t.type && t.targetTouches.length < 2) return; i.fakeGestureMoved = !0, s.scaleMove = J.getDistanceBetweenTouches(t) } s.$imageEl && 0 !== s.$imageEl.length && ( i.scale = b.gestures ? t.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 < e.minRatio && ( i.scale = e.minRatio + 1 - Math.pow(e.minRatio - i.scale + 1, .5) ), s.$imageEl.transform("translate3d(0,0,0) scale(" + i.scale + ")") ) }, onGestureEnd: function (t) { var e = this.params.zoom, i = this.zoom, s = i.gesture; if (!b.gestures) { if (!i.fakeGestureTouched || !i.fakeGestureMoved) return; if ("touchend" !== t.type || "touchend" === t.type && t.changedTouches.length < 2 && !o.android) return; i.fakeGestureTouched = !1, i.fakeGestureMoved = !1 } s.$imageEl && 0 !== s.$imageEl.length && ( i.scale = Math.max(Math.min(i.scale, s.maxRatio), e.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 (t) { var e = this.zoom, i = e.gesture, e = e.image; i.$imageEl && 0 !== i.$imageEl.length && !e.isTouched && ( o.android && t.preventDefault(), e.isTouched = !0, e.touchesStart.x = ( "touchstart" === t.type ? t.targetTouches[0] : t ).pageX, e.touchesStart.y = ( "touchstart" === t.type ? t.targetTouches[0] : t ).pageY ) }, onTouchMove: function (t) { var e = this.zoom, i = e.gesture, s = e.image, a = e.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 = U.getTranslate(i.$imageWrapEl[0], "x") || 0, s.startY = U.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 n = s.width * e.scale, r = s.height * e.scale; if (!(n < i.slideWidth && r < i.slideHeight)) { if ( s.minX = Math.min(i.slideWidth / 2 - n / 2, 0), s.maxX = -s.minX, s.minY = Math.min(i.slideHeight / 2 - r / 2, 0), s.maxY = -s.minY, s.touchesCurrent.x = ( "touchmove" === t.type ? t.targetTouches[0] : t ).pageX, s.touchesCurrent.y = ( "touchmove" === t.type ? t.targetTouches[0] : t ).pageY, !s.isMoved && !e.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) } t.preventDefault(), t.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) ), a.prevPositionX || (a.prevPositionX = s.touchesCurrent.x), a.prevPositionY || (a.prevPositionY = s.touchesCurrent.y), a.prevTime || (a.prevTime = Date.now()), a.x = (s.touchesCurrent.x - a.prevPositionX) / (Date.now() - a.prevTime) / 2, a.y = (s.touchesCurrent.y - a.prevPositionY) / (Date.now() - a.prevTime) / 2, Math.abs(s.touchesCurrent.x - a.prevPositionX) < 2 && (a.x = 0), Math.abs(s.touchesCurrent.y - a.prevPositionY) < 2 && (a.y = 0), a.prevPositionX = s.touchesCurrent.x, a.prevPositionY = s.touchesCurrent.y, a.prevTime = Date.now(), i .$imageWrapEl .transform("translate3d(" + s.currentX + "px, " + s.currentY + "px,0)") } } }, onTouchEnd: function () { var t = this.zoom, e = t.gesture, i = t.image, s = t.velocity; if (e.$imageEl && 0 !== e.$imageEl.length) { if (!i.isTouched || !i.isMoved) return i.isTouched = !1, void(i.isMoved = !1); i.isTouched = !1, i.isMoved = !1; var a = 300, n = 300, r = s.x * a, r = i.currentX + r, o = s.y * n, o = i.currentY + o, s = ( 0 !== s.x && (a = Math.abs((r - i.currentX) / s.x)), 0 !== s.y && (n = Math.abs((o - i.currentY) / s.y)), Math.max(a, n) ), a = (i.currentX = r, i.currentY = o, i.width * t.scale), n = i.height * t.scale; i.minX = Math.min(e.slideWidth / 2 - a / 2, 0), i.maxX = -i.minX, i.minY = Math.min(e.slideHeight / 2 - n / 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), e .$imageWrapEl .transition(s) .transform("translate3d(" + i.currentX + "px, " + i.currentY + "px,0)") } }, onTransitionEnd: function () { var t = this.zoom, e = t.gesture; e.$slideEl && this.previousIndex !== this.activeIndex && ( e.$imageEl.transform("translate3d(0,0,0) scale(1)"), e.$imageWrapEl.transform("translate3d(0,0,0)"), t.scale = 1, t.currentScale = 1, e.$slideEl = void 0, e.$imageEl = void 0, e.$imageWrapEl = void 0 ) }, toggle: function (t) { var e = this.zoom; e.scale && 1 !== e.scale ? e.out() : e. in (t) }, in: function (t) { var e, i, s, a, n = this.zoom, r = this.params.zoom, o = n.gesture, l = n.image; o.$slideEl || ( o.$slideEl = this.clickedSlide ? S(this.clickedSlide) : this.slides.eq(this.activeIndex), o.$imageEl = o.$slideEl.find("img, svg, canvas"), o.$imageWrapEl = o.$imageEl.parent("." + r.containerClass) ), o.$imageEl && 0 !== o.$imageEl.length && ( o.$slideEl.addClass("" + r.zoomedSlideClass), l = void 0 === l.touchesStart.x && t ? (e = ( "touchend" === t.type ? t.changedTouches[0] : t ).pageX, ( "touchend" === t.type ? t.changedTouches[0] : t ).pageY) : (e = l.touchesStart.x, l.touchesStart.y), n.scale = o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio, n.currentScale = o.$imageWrapEl.attr("data-swiper-zoom") || r.maxRatio, t ? ( r = o.$slideEl[0].offsetWidth, t = o.$slideEl[0].offsetHeight, e = o.$slideEl.offset().left + r / 2 - e, l = o.$slideEl.offset().top + t / 2 - l, s = o.$imageEl[0].offsetWidth, a = o.$imageEl[0].offsetHeight, s = s * n.scale, a = a * n.scale, s = -(r = Math.min(r / 2 - s / 2, 0)), a = -(t = Math.min(t / 2 - a / 2, 0)), s < ( i = (i = e * n.scale) < r ? r : i ) && (i = s), a < ( s = (s = l * n.scale) < t ? t : s ) && (s = a) ) : s = i = 0, o.$imageWrapEl.transition(300).transform( "translate3d(" + i + "px, " + s + "px,0)" ), o.$imageEl.transition(300).transform( "translate3d(0,0,0) scale(" + n.scale + ")" ) ) }, out: function () { var t = this.zoom, e = this.params.zoom, i = t.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("." + e.containerClass) ), i.$imageEl && 0 !== i.$imageEl.length && ( t.scale = 1, t.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( "" + e.zoomedSlideClass ), i.$slideEl = void 0 ) }, enable: function () { var t, e, i = this.zoom; i.enabled || ( i.enabled = !0, t = !("touchstart" !== this.touchEvents.start || !b.passiveListener || !this.params.passiveListeners) && { passive: !0, capture: !1 }, e = !b.passiveListener || { passive: !1, capture: !0 }, b.gestures ? ( this.$wrapperEl.on("gesturestart", ".swiper-slide", i.onGestureStart, t), this.$wrapperEl.on("gesturechange", ".swiper-slide", i.onGestureChange, t), this.$wrapperEl.on("gestureend", ".swiper-slide", i.onGestureEnd, t) ) : "touchstart" === this.touchEvents.start && ( this.$wrapperEl.on(this.touchEvents.start, ".swiper-slide", i.onGestureStart, t), this.$wrapperEl.on(this.touchEvents.move, ".swiper-slide", i.onGestureChange, e), this.$wrapperEl.on(this.touchEvents.end, ".swiper-slide", i.onGestureEnd, t), this.touchEvents.cancel && this.$wrapperEl.on(this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, t) ), this.$wrapperEl.on( this.touchEvents.move, "." + this.params.zoom.containerClass, i.onTouchMove, e ) ) }, disable: function () { var t, e, i = this.zoom; i.enabled && ( this.zoom.enabled = !1, t = !("touchstart" !== this.touchEvents.start || !b.passiveListener || !this.params.passiveListeners) && { passive: !0, capture: !1 }, e = !b.passiveListener || { passive: !1, capture: !0 }, b.gestures ? ( this.$wrapperEl.off("gesturestart", ".swiper-slide", i.onGestureStart, t), this.$wrapperEl.off("gesturechange", ".swiper-slide", i.onGestureChange, t), this.$wrapperEl.off("gestureend", ".swiper-slide", i.onGestureEnd, t) ) : "touchstart" === this.touchEvents.start && ( this.$wrapperEl.off(this.touchEvents.start, ".swiper-slide", i.onGestureStart, t), this.$wrapperEl.off(this.touchEvents.move, ".swiper-slide", i.onGestureChange, e), this.$wrapperEl.off(this.touchEvents.end, ".swiper-slide", i.onGestureEnd, t), this.touchEvents.cancel && this.$wrapperEl.off(this.touchEvents.cancel, ".swiper-slide", i.onGestureEnd, t) ), this.$wrapperEl.off( this.touchEvents.move, "." + this.params.zoom.containerClass, i.onTouchMove, e ) ) } }, Z = { loadInSlide: function (t, o) { void 0 === o && (o = !0); var l, h = this, d = h.params.lazy; void 0 !== t && 0 !== h.slides.length && (t = ( l = h.virtual && h.params.virtual.enabled ? h.$wrapperEl.children( "." + h.params.slideClass + '[data-swiper-slide-index="' + t + '"]' ) : h.slides.eq(t) ).find( "." + d.elementClass + ":not(." + d.loadedClass + "):not(." + d.loadingClass + ")" ), 0 !== ( t = !l.hasClass(d.elementClass) || l.hasClass(d.loadedClass) || l.hasClass(d.loadingClass) ? t : t.add(l[0]) ).length && t.each(function (t, e) { var i = S(e), s = (i.addClass(d.loadingClass), i.attr("data-background")), a = i.attr("data-src"), n = i.attr("data-srcset"), r = i.attr("data-sizes"); h.loadImage(i[0], a || s, n, r, !1, function () { var t, e; null == h || !h || h && !h.params || h.destroyed || ( s ? ( i.css("background-image", 'url("' + s + '")'), i.removeAttr("data-background") ) : ( n && (i.attr("srcset", n), i.removeAttr("data-srcset")), r && (i.attr("sizes", r), i.removeAttr("data-sizes")), a && (i.attr("src", a), i.removeAttr("data-src")) ), i.addClass(d.loadedClass).removeClass(d.loadingClass), l.find("." + d.preloaderClass).remove(), h.params.loop && o && ( t = l.attr("data-swiper-slide-index"), l.hasClass(h.params.slideDuplicateClass) ? (e = h.$wrapperEl.children( '[data-swiper-slide-index="' + t + '"]:not(.' + h.params.slideDuplicateClass + ")" ), h.lazy.loadInSlide(e.index(), !1)) : (e = h.$wrapperEl.children( "." + h.params.slideDuplicateClass + '[data-swiper-slide-index="' + t + '"]' ), h.lazy.loadInSlide(e.index(), !1)) ), h.emit("lazyImageReady", l[0], i[0]) ) }), h.emit("lazyImageLoad", l[0], i[0]) })) }, load: function () { var i = this, e = i.$wrapperEl, s = i.params, a = i.slides, t = i.activeIndex, n = i.virtual && s.virtual.enabled, r = s.lazy, o = s.slidesPerView; function l(t) { if (n) { if (e.children( "." + s.slideClass + '[data-swiper-slide-index="' + t + '"]' ).length) return 1 } else if (a[t]) return 1 } function h(t) { return n ? S(t).attr("data-swiper-slide-index") : S(t).index() } if ( "auto" === o && (o = 0), i.lazy.initialImageLoaded || (i.lazy.initialImageLoaded = !0), i.params.watchSlidesVisibility ) e .children("." + s.slideVisibleClass) .each(function (t, e) { e = n ? S(e).attr("data-swiper-slide-index") : S(e).index(); i .lazy .loadInSlide(e) }); else if (1 < o) for (var d = t; d < t + o; d += 1) l(d) && i .lazy .loadInSlide(d); else i .lazy .loadInSlide(t); if (r.loadPrevNext) if (1 < o || r.loadPrevNextAmount && 1 < r.loadPrevNextAmount) { for ( var r = r.loadPrevNextAmount, c = o, u = Math.min(t + c + Math.max(r, c), a.length), c = Math.max(t - Math.max(c, r), 0), p = t + o; p < u; p += 1 ) l(p) && i .lazy .loadInSlide(p); for (var m = c; m < t; m += 1) l(m) && i .lazy .loadInSlide(m) } else { r = e.children("." + s.slideNextClass), c = ( 0 < r.length && i.lazy.loadInSlide(h(r)), e.children("." + s.slidePrevClass) ); 0 < c.length && i .lazy .loadInSlide(h(c)) } } }, z = { LinearSpline: function (t, e) { var i, s, a, n, r; return this.x = t, this.y = e, this.lastIndex = t.length - 1, this.interpolate = function (t) { return t ? ( r = function (t, e) { for (s = -1, i = t.length; 1 < i - s;) t[a = i + s >> 1] <= e ? s = a : i = a; return i }(this.x, t), n = r - 1, (t - this.x[n]) * (this.y[r] - this.y[n]) / ( this.x[r] - this.x[n] ) + this.y[n] ) : 0 }, this }, getInterpolateFunction: function (t) { this.controller.spline || ( this.controller.spline = this.params.loop ? new z.LinearSpline(this.slidesGrid, t.slidesGrid) : new z.LinearSpline(this.snapGrid, t.snapGrid) ) }, setTranslate: function (t, e) { var i, s, a = this, n = a.controller.control; function r(t) { var e = a.rtlTranslate ? -a.translate : a.translate; "slide" === a.params.controller.by && ( a.controller.getInterpolateFunction(t), s = -a.controller.spline.interpolate(-e) ), s && "container" !== a.params.controller.by || ( i = (t.maxTranslate() - t.minTranslate()) / (a.maxTranslate() - a.minTranslate()), s = (e - a.minTranslate()) * i + t.minTranslate() ), a.params.controller.inverse && (s = t.maxTranslate() - s), t.updateProgress(s), t.setTranslate(s, a), t.updateActiveIndex(), t.updateSlidesClasses() } if (Array.isArray(n)) for (var o = 0; o < n.length; o += 1) n[o] !== e && n[o] instanceof p && r(n[o]); else n instanceof p && e !== n && r(n) }, setTransition: function (e, t) { var i, s = this, a = s.controller.control; function n(t) { t.setTransition(e, s), 0 !== e && ( t.transitionStart(), t.params.autoHeight && U.nextTick(function () { t.updateAutoHeight() }), t.$wrapperEl.transitionEnd(function () { a && ( t.params.loop && "slide" === s.params.controller.by && t.loopFix(), t.transitionEnd() ) }) ) } if (Array.isArray(a)) for (i = 0; i < a.length; i += 1) a[i] !== t && a[i] instanceof p && n(a[i]); else a instanceof p && t !== a && n(a) } }, tt = { makeElFocusable: function (t) { return t.attr("tabIndex", "0"), t }, addElRole: function (t, e) { return t.attr("role", e), t }, addElLabel: function (t, e) { return t.attr("aria-label", e), t }, disableEl: function (t) { return t.attr("aria-disabled", !0), t }, enableEl: function (t) { return t.attr("aria-disabled", !1), t }, onEnterKey: function (t) { var e = this.params.a11y; 13 === t.keyCode && ( t = S(t.target), this.navigation && this.navigation.$nextEl && t.is(this.navigation.$nextEl) && ( this.isEnd && !this.params.loop || this.slideNext(), this.isEnd ? this.a11y.notify(e.lastSlideMessage) : this.a11y.notify(e.nextSlideMessage) ), this.navigation && this.navigation.$prevEl && t.is(this.navigation.$prevEl) && ( this.isBeginning && !this.params.loop || this.slidePrev(), this.isBeginning ? this.a11y.notify(e.firstSlideMessage) : this.a11y.notify(e.prevSlideMessage) ), this.pagination && t.is("." + this.params.pagination.bulletClass) && t[0].click() ) }, notify: function (t) { var e = this.a11y.liveRegion; 0 !== e.length && (e.html(""), e.html(t)) }, updateNavigation: function () { var t, e; !this.params.loop && this.navigation && ( t = (e = this.navigation).$nextEl, (e = e.$prevEl) && 0 < e.length && ( this.isBeginning ? this.a11y.disableEl(e) : this.a11y.enableEl(e) ), t && 0 < t.length && ( this.isEnd ? this.a11y.disableEl(t) : this.a11y.enableEl(t) ) ) }, 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 (t, e) { e = S(e); i .a11y .makeElFocusable(e), i .a11y .addElRole(e, "button"), i .a11y .addElLabel(e, s.paginationBulletMessage.replace(/{{index}}/, e.index() + 1)) }) }, init: function () { this .$el .append(this.a11y.liveRegion); var t, e, i = this.params.a11y; this.navigation && this.navigation.$nextEl && (t = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (e = this.navigation.$prevEl), t && ( this.a11y.makeElFocusable(t), this.a11y.addElRole(t, "button"), this.a11y.addElLabel(t, i.nextSlideMessage), t.on("keydown", this.a11y.onEnterKey) ), e && ( this.a11y.makeElFocusable(e), this.a11y.addElRole(e, "button"), this.a11y.addElLabel(e, i.prevSlideMessage), e.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 t, e; this.a11y.liveRegion && 0 < this.a11y.liveRegion.length && this .a11y .liveRegion .remove(), this.navigation && this.navigation.$nextEl && (t = this.navigation.$nextEl), this.navigation && this.navigation.$prevEl && (e = this.navigation.$prevEl), t && t.off("keydown", this.a11y.onEnterKey), e && e.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 t = this.history; t.initialized = !0, t.paths = I.getPathValues(), (t.paths.key || t.paths.value) && ( t.scrollToSlide(0, t.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 t = X .location .pathname .slice(1) .split("/") .filter(function (t) { return "" !== t }), e = t.length; return { key: t[e - 2], value: t[e - 1] } }, setHistory: function (t, e) { this.history.initialized && this.params.history.enabled && ( e = this.slides.eq(e), e = I.slugify(e.attr("data-history")), X.location.pathname.includes(t) || (e = t + "/" + e), (t = X.history.state) && t.value === e || ( this.params.history.replaceState ? X.history.replaceState({ value: e }, null, e) : X.history.pushState({ value: e }, null, e) ) ) }, slugify: function (t) { return t .toString() .replace(/\s+/g, "-") .replace(/[^\w-]+/g, "") .replace(/--+/g, "-") .replace(/^-+/, "") .replace(/-+$/, "") }, scrollToSlide: function (t, e, i) { if (e) for (var s = 0, a = this.slides.length; s < a; s += 1) { var n = this .slides .eq(s); I.slugify(n.attr("data-history")) !== e || n.hasClass( this.params.slideDuplicateClass ) || (n = n.index(), this.slideTo(n, t, i)) } else this.slideTo(0, t, i) } }, P = { onHashCange: function () { var t = c .location .hash .replace("#", ""); t !== this .slides .eq(this.activeIndex) .attr("data-hash") && void 0 !== (t = this.$wrapperEl.children( "." + this.params.slideClass + '[data-hash="' + t + '"]' ).index()) && this.slideTo(t) }, setHash: function () { var t; 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") || "" ) : ( t = (t = this.slides.eq(this.activeIndex)).attr("data-hash") || t.attr("data-history"), c.location.hash = t || "" ) ) }, init: function () { if (!(!this.params.hashNavigation.enabled || this.params.history && this.params.history.enabled)) { this.hashNavigation.initialized = !0; var t = c .location .hash .replace("#", ""); if (t) for (var e = 0, i = this.slides.length; e < i; e += 1) { var s = this .slides .eq(e); (s.attr("data-hash") || s.attr("data-history")) !== t || 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 ) } }, H = { run: function () { var t = this, e = t .slides .eq(t.activeIndex), i = t.params.autoplay.delay; e.attr("data-swiper-autoplay") && ( i = e.attr("data-swiper-autoplay") || t.params.autoplay.delay ), clearTimeout(t.autoplay.timeout), t.autoplay.timeout = U.nextTick(function () { t.params.autoplay.reverseDirection ? t.params.loop ? (t.loopFix(), t.slidePrev(t.params.speed, !0, !0), t.emit("autoplay")) : t.isBeginning ? t.params.autoplay.stopOnLastSlide ? t .autoplay .stop() : (t.slideTo(t.slides.length - 1, t.params.speed, !0, !0), t.emit("autoplay")) : (t.slidePrev(t.params.speed, !0, !0), t.emit("autoplay")) : t.params.loop ? (t.loopFix(), t.slideNext(t.params.speed, !0, !0), t.emit("autoplay")) : t.isEnd ? t.params.autoplay.stopOnLastSlide ? t .autoplay .stop() : (t.slideTo(0, t.params.speed, !0, !0), t.emit("autoplay")) : (t.slideNext(t.params.speed, !0, !0), t.emit("autoplay")), t.params.cssMode && t.autoplay.running && t .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 (t) { !this.autoplay.running || this.autoplay.paused || ( this.autoplay.timeout && clearTimeout(this.autoplay.timeout), this.autoplay.paused = !0, 0 !== t && 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()) ) } }, et = { setTranslate: function () { for (var t = this.slides, e = 0; e < t.length; e += 1) { var i = this .slides .eq(e), s = -i[0].swiperSlideOffset, a = (this.params.virtualTranslate || (s -= this.translate), 0), n = ( this.isHorizontal() || (a = 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: n}) .transform("translate3d(" + s + "px, " + a + "px, 0px)") } }, setTransition: function (t) { var i, s = this, e = s.slides, a = s.$wrapperEl; e.transition(t), s.params.virtualTranslate && 0 !== t && (i = !1, e.transitionEnd(function () { if (!i && s && !s.destroyed) { i = !0, s.animating = !1; for (var t = [ "webkitTransitionEnd", "transitionend" ], e = 0; e < t.length; e += 1) a.trigger(t[e]) } })) } }, it = { setTranslate: function () { var t, e = this.$el, i = this.$wrapperEl, s = this.slides, a = this.width, n = this.height, r = this.rtlTranslate, o = this.size, l = this.params.cubeEffect, h = this.isHorizontal(), d = this.virtual && this.params.virtual.enabled, c = 0; l.shadow && ( h ? ( 0 === (t = i.find(".swiper-cube-shadow")).length && (t = S('
'), i.append(t)), t.css({ height: a + "px" }) ) : 0 === (t = e.find(".swiper-cube-shadow")).length && ( t = S('
'), e.append(t) ) ); for (var u, p = 0; p < s.length; p += 1) { var m = s.eq(p), v = p, f = 90 * ( v = d ? parseInt(m.attr("data-swiper-slide-index"), 10) : v ), g = Math.floor(f / 360), w = ( r && (f = -f, g = Math.floor(-f / 360)), Math.max(Math.min(m[0].progress, 1), -1) ), y = 0, b = 0, E = 0, g = ( v % 4 == 0 ? (y = 4 * -g * o, E = 0) : (v - 1) % 4 == 0 ? (y = 0, E = 4 * -g * o) : (v - 2) % 4 == 0 ? (y = o + 4 * g * o, E = o) : (v - 3) % 4 == 0 && (y = -o, E = 3 * o + 4 * o * g), r && (y = -y), h || (b = y, y = 0), "rotateX(" + ( h ? 0 : -f ) + "deg) rotateY(" + ( h ? f : 0 ) + "deg) translate3d(" + y + "px, " + b + "px, " + E + "px)" ); w <= 1 && -1 < w && ( c = r ? 90 * -v - 90 * w : 90 * v + 90 * w ), m.transform(g), l.slideShadows && ( f = h ? m.find(".swiper-slide-shadow-left") : m.find(".swiper-slide-shadow-top"), y = h ? m.find(".swiper-slide-shadow-right") : m.find(".swiper-slide-shadow-bottom"), 0 === f.length && (f = S('
'), m.append(f)), 0 === y.length && (y = S('
'), m.append(y)), f.length && (f[0].style.opacity = Math.max(-w, 0)), y.length && (y[0].style.opacity = Math.max(w, 0)) ) } i.css({ "-webkit-transform-origin": "50% 50% -" + o / 2 + "px", "-moz-transform-origin": "50% 50% -" + o / 2 + "px", "-ms-transform-origin": "50% 50% -" + o / 2 + "px", "transform-origin": "50% 50% -" + o / 2 + "px" }), l.shadow && ( h ? t.transform( "translate3d(0px, " + ( a / 2 + l.shadowOffset ) + "px, " + -a / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + l.shadowScale + ")" ) : ( e = Math.abs(c) - 90 * Math.floor(Math.abs(c) / 90), a = 1.5 - (Math.sin(2 * e * Math.PI / 360) / 2 + Math.cos(2 * e * Math.PI / 360) / 2), e = l.shadowScale, a = l.shadowScale / a, u = l.shadowOffset, t.transform( "scale3d(" + e + ", 1, " + a + ") translate3d(0px, " + ( n / 2 + u ) + "px, " + -n / 2 / a + "px) rotateX(-90deg)" ) ) ), i.transform("translate3d(0px,0," + ( T.isSafari || T.isUiWebView ? -o / 2 : 0 ) + "px) rotateX(" + ( this.isHorizontal() ? 0 : c ) + "deg) rotateY(" + ( this.isHorizontal() ? -c : 0 ) + "deg)") }, setTransition: function (t) { var e = this.$el; this .slides .transition(t) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bot" + "tom, .swiper-slide-shadow-left" ) .transition(t), this.params.cubeEffect.shadow && !this.isHorizontal() && e .find( ".swiper-cube-shadow" ) .transition(t) } }, st = { setTranslate: function () { for (var t = this.slides, e = this.rtlTranslate, i = 0; i < t.length; i += 1) { var s, a, n = t.eq(i), r = n[0].progress, o = -180 * ( r = this.params.flipEffect.limitRotation ? Math.max(Math.min(n[0].progress, 1), -1) : r ), l = 0, h = -n[0].swiperSlideOffset, d = 0; this.isHorizontal() ? e && (o = -o) : (d = h, l = -o, o = h = 0), n[0].style.zIndex = -Math.abs(Math.round(r)) + t.length, this.params.flipEffect.slideShadows && ( s = this.isHorizontal() ? n.find(".swiper-slide-shadow-left") : n.find(".swiper-slide-shadow-top"), a = this.isHorizontal() ? n.find(".swiper-slide-shadow-right") : n.find(".swiper-slide-shadow-bottom"), 0 === s.length && (s = S('
'), n.append(s)), 0 === a.length && (a = S('
'), n.append(a)), s.length && (s[0].style.opacity = Math.max(-r, 0)), a.length && (a[0].style.opacity = Math.max(r, 0)) ), n.transform( "translate3d(" + h + "px, " + d + "px, 0px) rotateX(" + l + "deg) rotateY(" + o + "deg)" ) } }, setTransition: function (t) { var i, s = this, e = s.slides, a = s.activeIndex, n = s.$wrapperEl; e .transition(t) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bot" + "tom, .swiper-slide-shadow-left" ) .transition(t), s.params.virtualTranslate && 0 !== t && ( i = !1, e.eq(a).transitionEnd(function () { if (!i && s && !s.destroyed) { i = !0, s.animating = !1; for (var t = [ "webkitTransitionEnd", "transitionend" ], e = 0; e < t.length; e += 1) n.trigger(t[e]) } }) ) } }, at = { setTranslate: function () { for ( var t = this.width, e = this.height, i = this.slides, s = this.$wrapperEl, a = this.slidesSizesGrid, n = this.params.coverflowEffect, r = this.isHorizontal(), o = this.translate, l = r ? t / 2 - o : e / 2 - o, h = r ? n.rotate : -n.rotate, d = n.depth, c = 0, u = i.length; c < u; c += 1 ) { var p = i.eq(c), m = a[c], m = (l - p[0].swiperSlideOffset - m / 2) / m * n.modifier, v = r ? h * m : 0, f = r ? 0 : h * m, g = -d * Math.abs(m), w = r ? 0 : n.stretch * m, y = r ? n.stretch * m : 0, y = ( Math.abs(y) < .001 && (y = 0), Math.abs(w) < .001 && (w = 0), Math.abs(g) < .001 && (g = 0), Math.abs(v) < .001 && (v = 0), "translate3d(" + y + "px," + w + "px," + g + "px) rotateX(" + ( f = Math.abs(f) < .001 ? 0 : f ) + "deg) rotateY(" + v + "deg)" ); p.transform(y), p[0].style.zIndex = 1 - Math.abs(Math.round(m)), n.slideShadows && ( w = r ? p.find(".swiper-slide-shadow-left") : p.find(".swiper-slide-shadow-top"), g = r ? 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 ) ) } (b.pointerEvents || b.prefixedPointerEvents) && ( s[0].style.perspectiveOrigin = l + "px 50%" ) }, setTransition: function (t) { this .slides .transition(t) .find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bot" + "tom, .swiper-slide-shadow-left" ) .transition(t) } }, nt = { init: function () { var t = this.params.thumbs, e = this.constructor; t.swiper instanceof e ? (this.thumbs.swiper = t.swiper, U.extend(this.thumbs.swiper.originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1 }), U.extend(this.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1 })) : U.isObject(t.swiper) && (this.thumbs.swiper = new e(U.extend({}, t.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 t, e, i, s = this.thumbs.swiper; s && ( t = s.clickedIndex, (i = s.clickedSlide) && S(i).hasClass(this.params.thumbs.slideThumbActiveClass) || null == t || ( i = s.params.loop ? parseInt(S(s.clickedSlide).attr("data-swiper-slide-index"), 10) : t, 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 ), t = this.slides.eq(s).prevAll('[data-swiper-slide-index="' + i + '"]').eq(0).index(), e = this.slides.eq(s).nextAll( '[data-swiper-slide-index="' + i + '"]' ).eq(0).index(), i = void 0 === t || void 0 !== e && e - s < s - t ? e : t ), this.slideTo(i) ) ) }, update: function (t) { var e = this.thumbs.swiper; if (e) { var i, s, a, n = "auto" === e.params.slidesPerView ? e.slidesPerViewDynamic() : e.params.slidesPerView, r = ( this.realIndex !== e.realIndex && ( i = e.activeIndex, a = e.params.loop ? ( e.slides.eq(i).hasClass(e.params.slideDuplicateClass) && (e.loopFix(), e._clientLeft = e.$wrapperEl[0].clientLeft, i = e.activeIndex), s = e.slides.eq(i).prevAll( '[data-swiper-slide-index="' + this.realIndex + '"]' ).eq(0).index(), a = e.slides.eq(i).nextAll( '[data-swiper-slide-index="' + this.realIndex + '"]' ).eq(0).index(), void 0 === s ? a : void 0 === a ? s : a - i == i - s ? i : a - i < i - s ? a : s ) : this.realIndex, e.visibleSlidesIndexes && e.visibleSlidesIndexes.indexOf(a) < 0 && ( e.params.centeredSlides ? a = i < a ? a - Math.floor(n / 2) + 1 : a + Math.floor(n / 2) - 1 : i < a && (a = a - n + 1), e.slideTo( a, t ? 0 : void 0 ) ) ), 1 ), o = this.params.thumbs.slideThumbActiveClass; if ( 1 < this.params.slidesPerView && !this.params.centeredSlides && (r = this.params.slidesPerView), this.params.thumbs.multipleActiveThumbs || (r = 1), r = Math.floor(r), e.slides.removeClass(o), e.params.loop || e.params.virtual && e.params.virtual.enabled ) for (var l = 0; l < r; l += 1) e .$wrapperEl .children('[data-swiper-slide-index="' + ( this.realIndex + l ) + '"]') .addClass(o); else for (var h = 0; h < r; h += 1) e .slides .eq(this.realIndex + h) .addClass(o) } } }, M = [ m, Y, G, v, g, y, E, { name: "mousewheel", params: { mousewheel: { enabled: !1, releaseOnEdges: !1, invert: !1, forceToAxis: !1, sensitivity: 1, eventsTarged: "container" } }, create: function () { U.extend(this, { mousewheel: { enabled: !1, enable: x .enable .bind(this), disable: x .disable .bind(this), handle: x .handle .bind(this), handleMouseEnter: x .handleMouseEnter .bind(this), handleMouseLeave: x .handleMouseLeave .bind(this), animateSlider: x .animateSlider .bind(this), releaseScroll: x .releaseScroll .bind(this), lastScrollTime: U.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 () { U.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 (t) { var e, i = this.navigation, s = i.$nextEl, i = i.$prevEl; !this.params.navigation.hideOnClick || S(t.target).is(i) || S(t.target).is(s) || ( s ? e = s.hasClass(this.params.navigation.hiddenClass) : i && (e = i.hasClass(this.params.navigation.hiddenClass)), !0 === e ? 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 (t) { return t }, formatFractionTotal: function (t) { return t }, 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 () { U.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 (t) { this.params.pagination.el && this.params.pagination.hideOnClick && 0 < this.pagination.$el.length && !S( t.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 () { U.extend(this, { scrollbar: { init: k .init .bind(this), destroy: k .destroy .bind(this), updateSize: k .updateSize .bind(this), setTranslate: k .setTranslate .bind(this), setTransition: k .setTransition .bind(this), enableDraggable: k .enableDraggable .bind(this), disableDraggable: k .disableDraggable .bind(this), setDragPosition: k .setDragPosition .bind(this), getPointerPosition: k .getPointerPosition .bind(this), onDragStart: k .onDragStart .bind(this), onDragMove: k .onDragMove .bind(this), onDragEnd: k .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 (t) { this .scrollbar .setTransition(t) }, destroy: function () { this .scrollbar .destroy() } } }, { name: "parallax", params: { parallax: { enabled: !1 } }, create: function () { U.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 (t) { this.params.parallax.enabled && this .parallax .setTransition(t) } } }, { 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, e = { 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 } }, a = ( ( "onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEn" + "d onTransitionEnd toggle enable disable in out" ).split(" ").forEach(function (t) { e[t] = J[t].bind(s) }), U.extend(s, {zoom: e}), 1 ); Object.defineProperty(s.zoom, "scale", { get: function () { return a }, set: function (t) { var e, i; a !== t && ( e = 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", t, e, i) ), a = t } }) }, on: { init: function () { this.params.zoom.enabled && this .zoom .enable() }, destroy: function () { this .zoom .disable() }, touchStart: function (t) { this.zoom.enabled && this .zoom .onTouchStart(t) }, touchEnd: function (t) { this.zoom.enabled && this .zoom .onTouchEnd(t) }, doubleTap: function (t) { this.params.zoom.enabled && this.zoom.enabled && this.params.zoom.toggle && this .zoom .toggle(t) }, 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 () { U.extend(this, { lazy: { initialImageLoaded: !1, load: Z .load .bind(this), loadInSlide: Z .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 () { U.extend(this, { controller: { control: this.params.controller.control, getInterpolateFunction: z .getInterpolateFunction .bind(this), setTranslate: z .setTranslate .bind(this), setTransition: z .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 (t, e) { this.controller.control && this .controller .setTranslate(t, e) }, setTransition: function (t, e) { this.controller.control && this .controller .setTransition(t, e) } } }, { 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 e = this; U.extend(e, { a11y: { liveRegion: S( '' ) } }), Object .keys(tt) .forEach(function (t) { e.a11y[t] = tt[t].bind(e) }) }, 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 () { U.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 () { U.extend(this, { hashNavigation: { initialized: !1, init: P .init .bind(this), destroy: P .destroy .bind(this), setHash: P .setHash .bind(this), onHashCange: P .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 e = this; U.extend(e, { autoplay: { running: !1, paused: !1, run: H .run .bind(e), start: H .start .bind(e), stop: H .stop .bind(e), pause: H .pause .bind(e), onVisibilityChange: function () { "hidden" === document.visibilityState && e.autoplay.running && e .autoplay .pause(), "visible" === document.visibilityState && e.autoplay.paused && ( e.autoplay.run(), e.autoplay.paused = !1 ) }, onTransitionEnd: function (t) { e && !e.destroyed && e.$wrapperEl && t.target === this && ( e.$wrapperEl[0].removeEventListener("transitionend", e.autoplay.onTransitionEnd), e.$wrapperEl[0].removeEventListener("webkitTransitionEnd", e.autoplay.onTransitionEnd), e.autoplay.paused = !1, e.autoplay.running ? e.autoplay.run() : e.autoplay.stop() ) } } }) }, on: { init: function () { this.params.autoplay.enabled && ( this.autoplay.start(), document.addEventListener("visibilitychange", this.autoplay.onVisibilityChange) ) }, beforeTransitionStart: function (t, e) { this.autoplay.running && ( e || !this.params.autoplay.disableOnInteraction ? this.autoplay.pause(t) : 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 () { U.extend(this, { fadeEffect: { setTranslate: et .setTranslate .bind(this), setTransition: et .setTransition .bind(this) } }) }, on: { beforeInit: function () { var t; "fade" === this.params.effect && (this.classNames.push( this.params.containerModifierClass + "fade" ), U.extend(this.params, t = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0 }), U.extend(this.originalParams, t)) }, setTranslate: function () { "fade" === this.params.effect && this .fadeEffect .setTranslate() }, setTransition: function (t) { "fade" === this.params.effect && this .fadeEffect .setTransition(t) } } }, { name: "effect-cube", params: { cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: .94 } }, create: function () { U.extend(this, { cubeEffect: { setTranslate: it .setTranslate .bind(this), setTransition: it .setTransition .bind(this) } }) }, on: { beforeInit: function () { var t; "cube" === this.params.effect && ( this.classNames.push( this.params.containerModifierClass + "cube" ), this.classNames.push(this.params.containerModifierClass + "3d"), U.extend(this.params, t = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, resistanceRatio: 0, spaceBetween: 0, centeredSlides: !1, virtualTranslate: !0 }), U.extend(this.originalParams, t) ) }, setTranslate: function () { "cube" === this.params.effect && this .cubeEffect .setTranslate() }, setTransition: function (t) { "cube" === this.params.effect && this .cubeEffect .setTransition(t) } } }, { name: "effect-flip", params: { flipEffect: { slideShadows: !0, limitRotation: !0 } }, create: function () { U.extend(this, { flipEffect: { setTranslate: st .setTranslate .bind(this), setTransition: st .setTransition .bind(this) } }) }, on: { beforeInit: function () { var t; "flip" === this.params.effect && ( this.classNames.push( this.params.containerModifierClass + "flip" ), this.classNames.push(this.params.containerModifierClass + "3d"), U.extend(this.params, t = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0 }), U.extend(this.originalParams, t) ) }, setTranslate: function () { "flip" === this.params.effect && this .flipEffect .setTranslate() }, setTransition: function (t) { "flip" === this.params.effect && this .flipEffect .setTransition(t) } } }, { name: "effect-coverflow", params: { coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: !0 } }, create: function () { U.extend(this, { coverflowEffect: { setTranslate: at .setTranslate .bind(this), setTransition: at .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 (t) { "coverflow" === this.params.effect && this .coverflowEffect .setTransition(t) } } }, { name: "thumbs", params: { thumbs: { multipleActiveThumbs: !0, swiper: null, slideThumbActiveClass: "swiper-slide-thumb-active", thumbsContainerClass: "swiper-container-thumbs" } }, create: function () { U.extend(this, { thumbs: { swiper: null, init: nt .init .bind(this), update: nt .update .bind(this), onThumbClick: nt .onThumbClick .bind(this) } }) }, on: { beforeInit: function () { var t = this.params.thumbs; t && t.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 (t) { var e = this.thumbs.swiper; e && e.setTransition(t) }, beforeDestroy: function () { var t = this.thumbs.swiper; t && this.thumbs.swiperCreated && t && t.destroy() } } } ]; return void 0 === p.use && ( p.use = p.Class.use, p.installModule = p.Class.installModule ), p.use(M), p }); var ANIUTIL = function () { function e(t) { function e(t) { this.opts = t, this.resizeTiming = t.resizeTiming || 100, this.setElement(), this.setVideoStyle(), this.bindEvent() } var i = e.prototype; i.setElement = function () { void 0 !== this.opts.wrapElement && ( this.wrapElement = this.opts.wrapElement.jquery ? this.opts.wrapElement[0] : this.opts.wrapElement ), void 0 !== this.opts.targetVideo && ( this.targetVideo = this.opts.targetVideo.jquery ? this.opts.targetVideo[0] : this.opts.targetVideo ) }, i.setVideoStyle = function () { this.wrapElement.style.overflow = "hidden", this.targetVideo.style.position = "absolute", this.targetVideo.style.top = "50%", this.targetVideo.style.left = "50%", this.targetVideo.style.transform = "translate(-50%, -50%)" }, i.bindEvent = function () { var t = this; window.addEventListener("load", function () { t.setVideoSize() }), window.addEventListener("resize", function () { t.setVideoSize() }) }, i.getVideoInfo = function () { this.wrapWidth = this.wrapElement.clientWidth, this.wrapHeight = this.wrapElement.clientHeight, this.videoWidth = this.targetVideo.clientWidth, this.videoHeight = this.targetVideo.clientHeight, this.wrapRatio = this.wrapHeight / this.wrapWidth, this.videoRatio = this.videoHeight / this.videoWidth }, i.setVideoSize = function () { var t = this; clearTimeout(null), setTimeout(function () { t.getVideoInfo(), t.wrapRatio < t.videoRatio ? (t.targetVideo.style.width = "100%", t.targetVideo.style.height = "auto") : (t.targetVideo.style.width = "auto", t.targetVideo.style.height = "100%") }, this.resizeTiming) }, new e(t) } function i(t) { var e, i, s = null, a = null, n = t ? t + 200 : 200, r = function () { null == s ? ( i = document.scrollingElement || document.documentElement || document.body.parentNode || document.body, e = document.body.clientHeight, i = window.pageYOffset + i.clientHeight, s = i / e ) : e = document.body.clientHeight }, o = function () { clearTimeout(a), a = setTimeout(function () { window.scrollTo(0, e * s - window.innerHeight), s = null }, n) }; window.addEventListener("resize", function () { r(), o() }) } function s() { return !( -1 < navigator.userAgent.indexOf("Windows") || -1 < navigator.userAgent.indexOf("Macintosh") ) && ( !!("ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch) || void 0 ) } return { calRange: function (t) { return 0 < (t = { targetValue: (t = t).targetValue, progress: t.progress, startPoint: t.startPoint || 0, endPoint: t.endPoint || 100 }).startPoint && ( t.endPoint = 0 < t.endPoint - t.startPoint ? t.endPoint - t.startPoint : t.endPoint ), e = ( e = (e = t.targetValue * (t.progress - t.startPoint) / t.endPoint) > t.targetValue ? t.targetValue : e ) < 0 ? 0 : e; var e }, videoObjectFit: function (t) { e(t) }, addClass: function (t) { for (var e = t, i = e.classList.length, s = 0; s < i; s++) e .targetElement .classList .add(e.classList[s]) }, removeClass: function (t) { for (var e = t, i = e.classList.length, s = 0; s < i; s++) e .targetElement .classList .remove(e.classList[s]) }, scrollController: function (t) { var i, s = (s = t) || {}, e = navigator .userAgent .toLowerCase(), a = document.scrollingElement || document.documentElement || document.body.parentNode || document.body, n = s.speed || 120, r = 0 <= s.duration ? s.duration : 1, o = a.scrollTop, l = a === document.body && document.documentElement ? document.documentElement : a, h = !1, d = null, t = function () { "Netscape" == navigator.appName && -1 != navigator .userAgent .search("Trident") || -1 != e.indexOf("msie") ? document.addEventListener("mousewheel", function (t) { "hidden" != document.documentElement.style.overflow && u.scrollEvent(t) }, { passive: !1 }) : document.addEventListener("wheel", function (t) { u.hasScrollBox(t.target) || u.scrollEvent(t) }, { passive: !1 }) }, c = function () { window.addEventListener("scroll", function () { "hidden" == document.documentElement.style.overflow || h || (o = a.scrollTop) }) }, u = { scrollEvent: function (t) { t.preventDefault(); var e = document .body .getAttribute("data-scroll-speed"), t = this.normalizeWheelDelta(t), e = s.currDelta && e ? e : e || n ? n : 120; o += -t * e, i = Math.max(0, Math.min(o, a.scrollHeight - l.clientHeight)), this.update() }, normalizeWheelDelta: function (t) { return t.detail ? t.wheelDelta ? t.wheelDelta / t.detail / 40 * ( 0 < t.detail ? 1 : -1 ) : -t.detail / 3 : t.wheelDelta / 120 }, update: function () { var t = i - a.scrollTop, t = Math.ceil(a.scrollTop + t) <= 0 ? 0 : i < o ? i : Math.ceil(a.scrollTop + t); h = !0, TweenMax.to(a, r, { ease: "power1.out", scrollTop: t, onComplete: function () { clearTimeout(d), d = null, d = setTimeout(function () { h = !1, o = a.scrollTop }, 500) } }), o <= 0 ? o = 0 : i <= o && (o = i) }, hasScrollBox: function (t) { for (; t && t !== document.body && t !== document;) { var e = window .getComputedStyle(t) .overflow; if (e && (-1 < e.indexOf("auto") || -1 < e.indexOf("scroll"))) return !0; t = t.parentNode } return !1 } }; window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame, -1 == e.indexOf("chrome") && -1 != e.indexOf("safari") || (t(), c()) }, resizeScrollOffset: function (t) { i(t) }, checkTouchDevice: s, checkFold: function () { var t, e = screen.width / screen.height, i = s() && .7137 < e && e < .8 && "width=768" == document .getElementsByName( "viewport" )[0] .content, e = s() && .8 < e && e < .95 && "width=768" == document .getElementsByName( "viewport" )[0] .content; return i ? t = "isFold" : e && (t = "isFoldLatest"), t }, deviceConsole: function (t, e) { var i, s; document.querySelector(".console-layer") || ( (i = document.createElement("div")).classList.add("console-layer"), i.setAttribute( "style", "position: fixed; left: 0; top: 0; padding: 20px; z-index:1000000000; backgroun" + "d: #fff;" ), document.querySelector("body").append(i) ), "multi" == e ? ( i = document.querySelector(".console-layer"), (s = document.createElement("div")).classList.add("console-value"), s.setAttribute("style", "border: 1px #ddd solid; float: left; padding: 10px;"), i.append(s) ) : s = (document.querySelector(".console-value") || ( (s = document.createElement("div")).classList.add("console-value"), s.setAttribute("style", "border: 1px #ddd solid; float: left; padding: 10px;"), i.append(s) ), document.querySelector(".console-value")), s.innerHTML = t }, percentToPixel: function (t) { return t.targetValue * (t.progress / 100) }, responsiveHandler: function (s) { var a, t, n, r, e = window.resolutionStatus = null, s = (window.innerWidth, { resolution: s.resolution, statusName: s.statusName || [], callback: s.callback || [], activeTiming: s.activeTiming || 100 }), i = function () { r = window.innerWidth; for (var t = 0; t < s.resolution.length; t++) { var e = s.resolution[t], i = s.resolution[t + 1] || 0; r <= e && i < r && a != s.statusName[t] || r <= e && i < r && n != t ? ( document.documentElement.classList.remove(a), a = s.statusName[t] || t, n = t, document.documentElement.classList.add(a) ) : (r >= s.resolution[0] && a != s.statusName[0] || r >= s.resolution[0] && !n) && ( document.documentElement.classList.remove(a), a = s.statusName[0] || t, n = t, document.documentElement.classList.add(a) ) } }, o = function () { clearTimeout(e), console.log(s.activeTiming), t != n && s.callback[n] && (e = setTimeout(function () { s.callback[n](), e = null, t = n }, s.activeTiming)) }; return function () { return window.addEventListener("DOMContentLoaded", function () { i(), t = n }), window.addEventListener("resize", function () { i(), o() }), this }() } } }(); window.WATCH6 = window.WATCH6 || {}; const UTILS = function () { return { isIosDevice: ( (s = /iPad|iPhone|iPod/.test(navigator.userAgent)) ? document.documentElement.classList.add("isIosDevice") : document.documentElement.classList.add("isNotIosDevice"), s ), checkGlobal: void( 0 === location.pathname.indexOf("/global/galaxy") || !0 === window.IS_CAMPAIGN ? document.documentElement.classList.add("global") : document.documentElement.classList.add("dotcom") ), checkOS: ( s = (s = navigator.appVersion.match(/(mac|win|linux)/i)) ? s[1].toLowerCase() : "", void document.documentElement.classList.add(s) ), 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: ( s = /applewebkit/i.test(navigator.userAgent), i = /chrome/i.test(navigator.userAgent), void(s && !i && 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") ), winSize: ( s = "Netscape" === navigator.appName, i = -1 !== navigator.appVersion.indexOf("Mac"), t = -1 !== navigator.userAgent.indexOf("Safari"), e = -1 !== navigator.userAgent.indexOf("Chrome"), s && !i && t && !e ? function () { return {w: $(win).width(), h: $(win).height()} } : function () { return { w: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, h: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight } } ), requestAFrame: window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function ( t ) { return window.setTimeout(t, 1e3 / 60) }, cancelAFrame: window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame || function ( t ) { window.clearTimeout(t) }, isObject: function (t) { return "object" == typeof t && null !== t && t.constructor && t.constructor === Object }, def: function () { for (var t = [], e = arguments.length; e--;) t[e] = arguments[e]; for (var i = Object(t[0]), s = 1; s < t.length; s += 1) { var a = t[s]; if (null != a) for (var n = Object.keys(Object(a)), r = 0, o = n.length; r < o; r += 1) { var l = n[r], h = Object.getOwnPropertyDescriptor(a, l); void 0 !== h && h.enumerable && ( this.isObject(i[l]) && this.isObject(a[l]) ? this.def(i[l], a[l]) : !this.isObject(i[l]) && this.isObject(a[l]) ? (i[l] = {}, this.def(i[l], a[l])) : i[l] = a[l] ) } } return i }, convertArray: function (t) { return Array .prototype .slice .call(t) }, getOffset: function (t) { return { top: t .getBoundingClientRect() .top + window.pageYOffset, bottom: t .getBoundingClientRect() .bottom + window.pageYOffset } }, getScroll: function () { var t = window.pageYOffset; return { top: t, bottom: t + window.innerHeight } }, getViewPort: function () { var t = window, e = "inner"; return "innerWidth" in window || ( e = "client", t = document.documentElement || document.body ), { width: t[e + "Width"], height: t[e + "Height"] } }, getCurrentDevice: function () { var t = UTILS .getViewPort() .width; return 1024 <= t ? "desktop" : t < 1024 && 768 <= t ? "tablet" : "mobile" }, isInVerticalViewPort: function (t) { t = t.getBoundingClientRect(); return t.top - 200 <= UTILS .getViewPort() .height && 0 <= t.bottom }, isInHorizontalViewPort: function (t) { t = t.getBoundingClientRect(); return t.left - 200 <= UTILS .getViewPort() .width && 0 <= t.right + 200 }, isVerticalVisible: function (t) { return UTILS.isInVerticalViewPort(t) && !!( t.offsetWidth || t.offsetHeight || t.getClientRects().length ) }, isHorizontalVisible: function (t) { return UTILS.isInHorizontalViewPort(t) && !!( t.offsetWidth || t.offsetHeight || t.getClientRects().length ) }, setCookie: function (t, e, i) { var s = new Date; s.setTime(s.getTime() + 60 * i * 60 * 24 * 1e3), document.cookie = t + "=" + e + "; exprires=" + s.toUTCString() + "; path=/" }, getCookie: function (t) { t = document .cookie .match("(^|;) ?" + t + "=([^;]*)(;|$)"); return t ? t[2] : null }, triggerEvent: function (t, e, i, s, a) { var n, i = i || null, s = s || !1, a = a || !0; null == i ? (n = document.createEvent("HTMLEvents")).initEvent(e, s, a) : (n = document.createEvent("CustomEvent")).initCustomEvent(e, s, a, i), t.dispatchEvent(n) }, visibleScroll: function () { document .documentElement .classList .contains("isTouchDevice") || !0 === this.scrollFlag && ( this.scrollFlag = !1, document.body.style.position = "", document.body.style.width = "", document.body.style.top = "", document.body.style.boxSizing = "", document.body.style.paddingRight = "", document.documentElement.style.overflow = "", null !== this.popupEl && (this.popupEl.style.paddingRight = "", this.popupEl = null), window.scrollTo(0, this.currentPos) ) }, hiddenScroll: function (t) { var e; document .documentElement .classList .contains("isTouchDevice") || ( this.popupEl = t || null, this.scrollFlag = !0, this.currentPos = window.pageYOffset || document.documentElement.scrollTop, t = window.innerWidth - document.documentElement.clientWidth, e = 0 < this.currentPos ? "-" + this.currentPos + "px" : 0, document.body.style.position = "fixed", document.body.style.width = "100%", document.body.style.top = e, document.body.style.boxSizing = "border-box", document.body.style.paddingRight = t + "px", document.documentElement.style.overflow = "hidden", null !== this.popupEl && (this.popupEl.style.paddingRight = t + "px") ) }, closest: function (t, e) { do { if (t == document.documentElement) return null; if ( t.matches ? t.matches(e) : t.msMatchesSelector(e) ) return t } while (null !== (t = t.parentElement || t.parentNode) || 1 === t.nodeType); return null }, onPopupAccessibility: function (t) { t.setAttribute("aria-hidden", !0), t.setAttribute("tabindex", -1); for ( var e = t.querySelectorAll("a, button, input, select, iframe"), i = 0; i < e.length; i++ ) { var s = e[i].getAttribute("aria-hidden"), a = e[i].getAttribute("tabindex"); null != s && null == e[i].getAttribute("data-prev-aria-hidden") && e[i].setAttribute( "data-prev-aria-hidden", s ), null != a && null == e[i].getAttribute("data-prev-tabindex") && e[i].setAttribute( "data-prev-tabindex", a ), e[i].setAttribute("tabindex", -1), e[i].setAttribute("aria-hidden", !0) } }, offPopupAccessibility: function (t) { t.removeAttribute("aria-hidden"), t.removeAttribute("tabindex"); for ( var e = t.querySelectorAll("a, button, input, select, iframe"), i = 0; i < e.length; i++ ) { var s = e[i].getAttribute("data-prev-aria-hidden"), a = e[i].getAttribute("data-prev-tabindex"); null != s ? e[i].setAttribute("aria-hidden", s) : e[i].removeAttribute("aria-hidden"), null != a ? e[i].setAttribute("tabindex", a) : e[i].removeAttribute("tabindex"), e[i].removeAttribute("data-prev-aria-hidden"), e[i].removeAttribute("data-prev-tabindex") } }, onAccessibility: function (t) { if (!document.documentElement.classList.contains("is-layer-popup-opened")) { t.setAttribute("aria-hidden", !0), t.setAttribute("tabindex", -1); for ( var e = t.querySelectorAll("a, button, input, select, iframe"), i = 0; i < e.length; i++ ) e[i].setAttribute("tabindex", -1), e[i].setAttribute("aria-hidden", !0) } }, offAccessibility: function (t) { if (!document.documentElement.classList.contains("is-layer-popup-opened")) { t.removeAttribute("aria-hidden"), t.removeAttribute("tabindex"); for ( var e = t.querySelectorAll("a, button, input, select, iframe"), i = 0; i < e.length; i++ ) e[i].removeAttribute("tabindex"), e[i].removeAttribute("aria-hidden") } }, extend: function (e, i) { return Object .keys(i) .forEach(function (t) { e[t] = i[t] }), e }, getHeight: function (t) { var e, i, s; return t ? ( e = (i = window.getComputedStyle(t)).display, i = parseInt(i.maxHeight), s = 0, "none" != e && 0 != i ? t.offsetHeight : ( t.style.position = "absolute", t.style.visibility = "hidden", t.style.display = "block", s = t.offsetHeight, t.style.display = "", t.style.position = "", t.style.visibility = "", s ) ) : 0 }, setLastActiveItem: function (t) { this.lastActiveItem = t || null }, getLastActiveItem: function () { return null != this.lastActiveItem ? this.lastActiveItem : null }, isRTL: function () { return document .documentElement .classList .contains("rtl") }, checkRegion: function () { for ( var t = document.getElementsByTagName("meta"), e = "", i = 0; i < t.length; i++ ) if ("sitecode" == t[i].getAttribute("name")) return e = t[i].getAttribute("content"); if ("" == e) return -1 < document .location .pathname .indexOf("global") ? "global" : "jp" }, isLowNetwork: function () { var t = "___GALAXY_SPEED"; return null != UTILS.getCookie(t) && null != UTILS.getCookie(t) && ( "L" == UTILS.getCookie(t) || "H" != UTILS.getCookie(t) && void 0 ) }, getQueryString: function (t) { var e = (s = location.href).indexOf("?") + 1, i = -1 < s.indexOf("#") ? s.indexOf("#") + 1 : s.length; if (0 == e) return ""; for ( var s = (s = s.substring(e, i)).split("&"), a = "", n = 0; n < s.length; n++ ) { var r = s[n].split("="); if (2 != r.length) break; r[0] == t && (a = r[1]); break } return a }, customParallax: function (t) { var e = t.mode || "center", i = t.delay || 0, s = t.ease || "Power0.easeNone", a = t.transZ || 0, n = t.duration || .3, r = t.distance || 0, o = t.correction || 0, l = t.windowCorrection ? window.innerHeight * t.windowCorrection : 0, h = t.direction || 1, d = t.activeElement, c = t.targetElement || d, u = t.wrapperElement || d, t = t.unit || "px", p = window.pageYOffset, m = window.pageYOffset + window.innerHeight, d = d.getBoundingClientRect(), v = p + u .getBoundingClientRect() .top, u = v + u .getBoundingClientRect() .height, f = window.innerHeight + d.height + 2 * l, g = "center" == e ? d.top - (window.innerHeight - d.height) / 2 : d.top - window.innerHeight; "px" == t && (r = d.height * r / 100), v <= m + l && p - l <= u && TweenMax.to(c, n, { y: o + g * ( "center" == e ? 2 * r : r ) / f * h + t, z: a, ease: s, delay: i }) }, getNavHeight: function () { var t, e, 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") ? ( e = (t = s.querySelector(".pd-header-navigation")).querySelector(".pd-header-navigation__menu-wrap"), t.clientHeight + e.clientHeight ) : s.clientHeight : i }, isBrokenFixed: function () { var t = window.innerWidth, e = window.innerHeight, i = !1; return document .documentElement .classList .remove("is-broken-fixed"), 1440 <= t && e <= 540 || t <= 810 && e / t < .5277 || t / window.outerWidth < .4 || e < UTILS.MIN_VIEW_HEIGHT ? (document.documentElement.classList.add("is-broken-fixed"), i = !0) : document .documentElement .classList .remove("is-broken-fixed"), i }, isFullAnimationBrokenFixed: () => { var t = window.innerWidth, e = window.innerHeight, i = !!UTILS.isTouchDevice && window .matchMedia("(orientation: landscape)") .matches; let s = !1; return !!UTILS.isTouchDevice && !window .matchMedia("(orientation: landscape)") .matches && e / t < 1.5 || i || e < 700 ? (document.documentElement.classList.add("is-animation-broken-fixed"), s = !0) : document .documentElement .classList .remove("is-animation-broken-fixed"), s }, isTouchDevice: ( (s = "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch) ? document.documentElement.classList.add("isTouchDevice") : document.documentElement.classList.add("isNotTouchDevice"), s ), isIEorEdge: function () { var t, e = navigator .userAgent .toLowerCase(); if ("Microsoft Internet Explorer" == navigator.appName) t = "msie "; else if (-1 < e.search("trident")) t = "trident/.*rv:"; else { if (!(-1 < e.search("edge/"))) return -1; t = "edge/" } return null != new RegExp( t + "([0-9]{1,})(\\.{0,}[0-9]{0,1})" ).exec(e) ? (document.documentElement.classList.add("isIEorEdge"), parseFloat( RegExp.$1 + RegExp.$2 )) : -1 }(), page: { scrollLock: { className: "is-no-scroll", barWidth: function () { return window.innerWidth - document.documentElement.clientWidth }, el: $("html"), run: function (t) { document.documentElement.style.paddingRight = t + "px" }, off: function () { this.barWidth(); this .el .removeClass(this.className), this .el .removeClass("hive-layer-scroll-lock"), this.run(0) }, on: function () { var t = this.barWidth(); this .el .addClass(this.className), this.run(t) } } }, MIN_VIEW_HEIGHT: 400, RESPONSIVE: { PC: { NAME: "pc", WIDTH: 1440 }, TABLET: { NAME: "tablet", WIDTH: 1024 }, MOBILE: { NAME: "mobile", WIDTH: 767 } } }; var t, e, i, s }(); WATCH6.UTILS = UTILS; var SCROLLER = function () { function e(t) { this.initialize = !0, this.opts = t, this.correction = t.correction || 0, this.removeCorrection = t.removeCorrection || 0, this.trackHeight = t.trackHeight || 0, this.activeClass = t.activeClass, this.activeCallbackClass = t.activeCallbackClass || "callback-active", this.useStrictMode = null == t.useStrictMode || t.useStrictMode, this.useFixed = t.useFixed || !1, this.useFixedStyle = null == t.useFixedStyle || t.useFixedStyle, this.useSticky = t.useSticky || !1, this.useStickyStyle = null == t.useStickyStyle || t.useStickyStyle, this.useViewportOver = t.useViewportOver || !0, this.activeVisibility = t.activeVisibility || "before", this.activeType = t.activeType ? this.opts.activeType : "reverse", this.autoHeight = null == t.autoHeight || t.autoHeight, this.offsetY = t.offsetY || 0, this.resize = null == t.resize || t.resize, this.resizeTiming = null != t.resizeTiming && t.resizeTiming, this.windowHeight = window.innerHeight, this.oldPregress = 0, this.oldWinScrollTop = 0, this.elementInformation = {}, this.isFixedArea = !1, this.checkTouchDevice = !1, this .elementEventList .setElement .call(this), this.bindEvent() } var t = e.prototype; return t.bindEvent = function () { var t = this, e = null; this.elementHandler(), this.resize && ( this.addEventList = function () { t.resizeTiming ? (clearTimeout(e), e = setTimeout(function () { t.windowHeight = window.innerHeight, t.elementHandler() }, t.resizeTiming)) : (t.windowHeight = window.innerHeight, t.elementHandler()) }, window.addEventListener("resize", this.addEventList) ), this.opts.IEScroll && this .utilList .IEScrollHandler .call(this) }, t.elementHandler = function () { return this .elementEventList .setTrackStyle .call(this), this.getFixedState(), 1 < this.trackHeight && this .elementEventList .setTrackHeigh .call(this), !this.useSticky && this.useFixed && this.useFixedStyle && this .elementEventList .setFixedStyle .call(this), this.useSticky && !this.useFixed && this.useStickyStyle && this .elementEventList .setStickyStyle .call(this), this }, t.utilList = { checkTouchDevice: function () { return -1 < navigator .userAgent .indexOf("Windows") || -1 < navigator .userAgent .indexOf("Macintosh") ? this.checkTouchDevice = !1 : "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch ? this.checkTouchDevice = !0 : void 0 }, IEScrollHandler: function () { navigator .userAgent .match(/Trident\/7\./) && ( this.body.addEventListener("mousewheel", function (t) { t.preventDefault(); var t = t.wheelDelta, e = window.pageYOffset; window.scrollTo(0, e - t) }), this.body.addEventListener("keydown", function (t) { var e = window.pageYOffset; switch (t.which) { case 38: t.preventDefault(), window.scrollTo(0, e - 40); break; case 40: t.preventDefault(), window.scrollTo(0, e + 40); break; default: return } }) ) }, getScroll: function () { var t = window.pageYOffset; return { top: t, bottom: t + this.windowHeight } }, getOffset: function (t) { return { top: t .getBoundingClientRect() .top + window.pageYOffset, bottom: t .getBoundingClientRect() .bottom + window.pageYOffset } }, getUserAgent: function () { return navigator.userAgent } }, t.elementEventList = { setElement: function () { this.body = document.querySelector("body"), void 0 !== this.opts.trackElement && ( this.trackElement = this.opts.trackElement.jquery ? this.opts.trackElement[0] : this.opts.trackElement ), void 0 !== this.opts.fixedElement && ( this.fixedElement = this.opts.fixedElement.jquery ? this.opts.fixedElement[0] : this.opts.fixedElement ), void 0 !== this.opts.activeElement && ( this.activeElement = this.opts.activeElement.jquery ? this.opts.activeElement[0] : this.opts.activeElement ) }, setTrackHeigh: function () { var t, e; this.trackHeight <= 1 || ( this.trackElement.style.height = "", t = 0 == this.trackElement.clientHeight, e = this.windowHeight * this.trackHeight, t && (this.trackElement.style.height = this.windowHeight + "px"), this.trackElement.style.height = e + "px" ) }, setTrackStyle: function () { this.trackElement && this.useFixed && "static" == window .getComputedStyle( this.trackElement ) .position && (this.trackElement.style.position = "relative") }, setFixedStyle: function () { this.isFixedArea || ( this.fixedElement.style.height = "", this.fixedElement.style.top = "", this.fixedElement.style.position = "absolute" ), 0 == this.fixedElement.clientWidth && (this.fixedElement.style.width = "100%"), this.autoHeight && ( "string" == typeof this.offsetY ? ( this.fixedElement.style.height = "calc(" + this.windowHeight + "px - " + this.offsetY + ")", this.fixedElement.style.top = this.offsetY ) : ( this.fixedElement.style.height = this.windowHeight - this.offsetY + "px", this.fixedElement.style.top = this.offsetY + "px" ) ) }, setStickyStyle: function () { this.isFixedArea || (this.fixedElement.style.position = "sticky"), 0 == this.fixedElement.clientWidth && (this.fixedElement.style.width = "100%") }, setFixedElement: function () { this.diffHeight = this.windowHeight - this.fixedElement.clientHeight, this.trackTopOffset = this .utilList .getOffset .call(this, this.trackElement) .top, this.trackBottomOffset = this .utilList .getOffset .call(this, this.trackElement) .bottom, this.winScrollTop <= this.trackTopOffset ? ( this.fixedElement.style.position = "absolute", "string" == typeof this.offsetY ? this.fixedElement.style.top = this.offsetY : this.fixedElement.style.top = this.offsetY + "px", this.fixedElement.style.bottom = "" ) : this.winScrollBottom >= this.trackBottomOffset ? ( this.fixedElement.style.position = "absolute", this.fixedElement.style.top = this.trackElement.clientHeight - this.fixedElement.clientHeight + "px" ) : this.isFixedArea || ( this.fixedElement.style.position = "fixed", this.fixedElement.style.top = "0" ) } }, t.getWheelDirection = function () { this.winScrollTop >= this.oldWinScrollTop ? this.wheelDirection = "down" : this.wheelDirection = "up", this.oldWinScrollTop = this.winScrollTop }, t.getProgress = function () { var t = this .utilList .getOffset .call(this, this.trackElement) .top - this.windowHeight * this.correction, e = this.useFixed || this.useSticky ? Math.abs(this.trackElement.clientHeight - this.windowHeight) : this.useViewportOver ? this.trackElement.clientHeight + this.windowHeight : this.trackElement.clientHeight, i = this.winScrollTop - t, t = this.winScrollBottom - t, i = this.useFixed || this.useSticky ? i / e * 100 : t / e * 100; return this.useStrictMode ? this.progress = Math.floor(i) < 0 ? 0 : 100 < Math.floor(i) ? 100 : Math.floor(i) : this.progress = i, this.getWheelDirection(), this.progress }, t.getFixedState = function () { 0 < this.progress && this.progress < 100 ? this.isFixedArea = !0 : this.isFixedArea = !1 }, t.trackAnimation = function (t) { this.initialize && ( this.winScrollTop = this.utilList.getScroll.call(this).top - this.windowHeight * this.correction, this.winScrollBottom = this.utilList.getScroll.call(this).bottom, this.useFixed && !this.useSticky && this.elementEventList.setFixedElement.call(this), this.getProgress(), this.getFixedState(), t && ( this.oldPregress !== this.progress && t.call(this), this.oldPregress = this.progress ) ) }, t.activeAnimation = function () { if (this.initialize) { this.winScrollTop = this .utilList .getScroll .call(this) .top, this.winScrollBottom = this .utilList .getScroll .call(this) .bottom, this.trackElementHeight = this.trackElement.clientHeight, this.correctionValue = this.trackElementHeight * this.correction, this.removeCorrectionValue = this.trackElementHeight * this.removeCorrection, this.elementOffsetTop = this .utilList .getOffset .call(this, this.trackElement) .top, this.elementOffsetBottom = this .utilList .getOffset .call(this, this.trackElement) .bottom, this.downScrollTop = this.winScrollTop - this.correctionValue, this.downScrollBottom = this.winScrollBottom - this.correctionValue, this.upScrollTop = this.winScrollTop + this.correctionValue, this.upScrollBottom = this.winScrollBottom + this.correctionValue; function t() { l(), r() } function e() { h(), o() } var i = this, s = this.activeVisibility, a = this.activeType, n = this.windowHeight / 2, r = function () { if (i.activeClass) if ("object" == typeof i.activeClass) for (var t = i.activeClass.length, e = 0; e < t; e++) i .activeElement .classList .contains(i.activeClass[e]) || i .activeElement .classList .add(i.activeClass[e]); else i .activeElement .classList .contains(i.activeClass) || i .activeElement .classList .add(i.activeClass) }, o = function () { if ("object" == typeof i.activeClass) for (var t = i.activeClass.length, e = 0; e < t; e++) i .activeElement .classList .contains(i.activeClass[e]) && i .activeElement .classList .remove(i.activeClass[e]); else i .activeElement .classList .contains(i.activeClass) && i .activeElement .classList .remove(i.activeClass); i .activeElement .classList .contains(i.activeCallbackClass) && i .activeElement .classList .remove(i.activeCallbackClass) }, l = function () { i .activeElement .classList .contains(i.activeCallbackClass) || i.opts.activeCallback && ( i.opts.activeCallback.call(i), i.activeElement.classList.add(i.activeCallbackClass) ) }, h = function () { i .activeElement .classList .contains(i.activeCallbackClass) && i.opts.endCallback && i .opts .endCallback .call(i) }; switch (this.getWheelDirection(), s) { case "before": ( "down" == this.wheelDirection && this.downScrollBottom >= this.elementOffsetTop && this.downScrollTop <= this.elementOffsetTop || "up" == this.wheelDirection && this.upScrollTop <= this.elementOffsetBottom && this.upScrollBottom >= this.elementOffsetBottom || "oneWay" == this.activeType && this.downScrollBottom >= this.elementOffsetTop ) && (t(), this.activeStatus = !0); break; case "visible": ( "down" == this.wheelDirection && this.downScrollBottom >= this.elementOffsetTop + n && this.downScrollTop <= this.elementOffsetTop || "up" == this.wheelDirection && this.upScrollTop <= this.elementOffsetBottom - n && this.upScrollBottom >= this.elementOffsetBottom || "oneWay" == this.activeType && this.downScrollBottom >= this.elementOffsetTop + n ) && (t(), this.activeStatus = !0) } switch (a) { case "reverse": "visible" == s ? ( this.activeStatus && "down" == this.wheelDirection && this.winScrollTop > this.elementOffsetBottom || this.activeStatus && "up" == this.wheelDirection && this.winScrollBottom < this.elementOffsetTop ) && (e(), this.activeStatus = !1) : ( this.activeStatus && this.winScrollTop < this.elementOffsetTop && this.winScrollBottom < this.elementOffsetTop || this.activeStatus && this.winScrollTop > this.elementOffsetBottom && this.winScrollBottom > this.elementOffsetBottom ) && (e(), this.activeStatus = !1); break; case "oneWay": "visible" == s ? this.activeStatus && this.winScrollBottom < this.elementOffsetTop + n && ( e(), this.activeStatus = !1 ) : this.activeStatus && this.winScrollTop < this.elementOffsetTop && this.winScrollBottom < this.elementOffsetTop && ( e(), this.activeStatus = !1 ) } } }, t.getElementInformation = function () { return this.trackElement && (this.elementInformation.trackElement = { element: this.trackElement, width: this.trackElement.clientWidth, height: this.trackElement.clientHeight, topOffset: this .utilList .getOffset .call(this, this.trackElement) .top, bottomOffset: this .utilList .getOffset .call(this, this.trackElement) .bottom }), this.activeElement && (this.elementInformation.activeElement = { element: this.activeElement, width: this.activeElement.clientWidth, height: this.activeElement.clientHeight, topOffset: this .utilList .getOffset .call(this, this.activeElement) .top, bottomOffset: this .utilList .getOffset .call(this, this.activeElement) .bottom }), this.elementInformation }, t.destroy = function (t) { this.trackElement && ( this.trackElement.style.position = "", this.trackElement.style.height = "" ), this.fixedElement && ( this.fixedElement.style.position = "", this.fixedElement.style.top = "", this.fixedElement.style.height = "" ), this.trackElement = "", this.fixedElement = "", this.activeElement = "", this.correction = "", this.trackHeight = "", this.activeCallbackClass = "", this.useFixed = "", this.activeVisibility = "", this.activeType = "", this.offsetY = "", this.resize = "", this.windowHeight = "", this.elementInformation = "", window.removeEventListener("load", this.addEventList), window.removeEventListener("resize", this.addEventList), this.initialize = !1 }, function (t) { return new e(t) } }(); !function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const u = WATCH6.UTILS; WATCH6.ImageLoader = class { constructor(t = container, e) { e = { el: t, lazyClass: ".js-img-src", lazyCompleteClass: "load-complete", startLazyClass: e.startLazyClass || ".js-start-img-src", endLazyClass: e.endLazyClass || ".js-end-img-src", responsiveClass: e.responsiveClass || ".js-res-img", loadOption: e.loadOption, visiblePoint: e.visiblePoint || 0, useDefaultImg: e.useDefaultImg, resizeStart: null }; this.opts = e, this.classes = e.classes, this.el = document.querySelector(t), this.init() } init() { this.initOpts(), this.getLazyImage(), this.getResponsiveImage(), this.bindEvents() } initOpts() { this.targetAttr = this .opts .loadOption[0] .attribute, this.responsiveCheck = this.opts.loadOption, this.dynamicCallCount = 0, this.dynamicLoadedComplate = !1, this.opts.useDefaultImg && this.setDefaultImage() } getLazyImage() { const t = Array.from(this.el.querySelectorAll(this.opts.lazyClass)); var e = Array.from(this.el.querySelectorAll(this.opts.startLazyClass)), e = t.concat(e); this.lazyImages = e, this.lazyLength = e.length } getResponsiveImage() { var t = this .el .querySelectorAll(this.opts.responsiveClass); this.responsiveImages = t, this.responsiveLength = t.length } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("scroll", this.lazyEvent.bind(this)), this.responsiveCheck && window.addEventListener( "resize", this.onResizeHandler.bind(this) ) } onLoadHandler() { this.responsiveHandler(), this.lazyEvent() } onResizeHandler() { clearTimeout(this.opts.resizeStart), this.opts.resizeStart = setTimeout(() => { this.responsiveHandler(), this.lazyEvent() }, 80) } lazyEvent() { this.setLazyImage(), this.lazyLength === this.lazyCompleteLength && window.removeEventListener( "scroll", this.lazyEvent.bind(this) ) } responsiveHandler() { this.windowWidth = window.innerWidth; var a = this.opts.loadOption.length; for (let s = 0; s < a; s++) { let t = s + 1, e = t == a ? 0 : this .opts .loadOption[t] .resolution, i = !1; ( i = (0 == s || this.windowWidth <= this.opts.loadOption[s].resolution) && this.windowWidth > e ) && this .opts .loadOption[s] .attribute !== this.oldAttr && ( this.targetAttr = this.opts.loadOption[s].attribute, this.oldAttr = this.targetAttr, this.attrIndex = s, this.dynamicCallCount = 0, this.setResponsiveImage() ) } } setResponsiveImage(i) { if (i) for (let e = 0; e < i.length; e++) { var s = i[e]; let t = i[e].getAttribute(this.targetAttr); t = t || this.findImageHandler(s), i[e] .classList .contains(this.opts.lazyCompleteClass) || ( i[e].setAttribute("src", t), i[e].classList.add(this.opts.lazyCompleteClass) ) } else for (let i = 0; i < this.responsiveLength; i++) { let t = this.responsiveImages[i], e = t.getAttribute(this.targetAttr); e = e || this.findImageHandler(t), t .classList .contains(this.opts.lazyCompleteClass) && t.setAttribute("src", e) } } checkCompleteImage() { var t = this .el .querySelectorAll("." + this.opts.lazyCompleteClass); this.lazyCompleteLength = t.length } setDefaultImage() { for (var t = 0; t < this.lazyLength; t++) this .lazyImages[t] .setAttribute( "src", "data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH/C1hNUCBEYXRhWE1QAz94cAAh+QQF" + "AAAAACwAAAAAAQABAAACAkQBADs=" ) } setLazyImage() { this.windowHeight = window.innerHeight; for (let d = 0; d < this.lazyLength; d++) { let e = this.lazyImages[d], t = this.windowHeight * this.opts.visiblePoint, i = u .getScroll .call(this) .top - t, s = u .getScroll .call(this) .bottom + t, a = u .getOffset .call(this, e) .top, n = u .getOffset .call(this, e) .bottom, r = this .opts .lazyClass .split("."), o = r[r.length - 1], l = this .opts .startLazyClass .split("."), h = l[l.length - 1]; if ((a < s && i <= a || i < n && n < s || i < a && n < s || a < i && s < n) && null != e.offsetParent) { let t = e.getAttribute(this.targetAttr); var c; t = t || this.findImageHandler(e), e .classList .contains(this.opts.lazyCompleteClass) || ( e.setAttribute("src", t), c = () => { 1 == this .opts .startLazyClass .split(" ") .length && e .classList .remove(h), 1 == this .opts .lazyClass .split(" ") .length && e .classList .remove(o), this.checkCompleteImage(), e.removeEventListener("load", c) }, e.addEventListener("load", c), e.classList.add(this.opts.lazyCompleteClass) ) } } } findRemainingImageAttr(t) { for (var e = this.opts.loadOption.length, i = 0; i < e; i++) { var s = t.getAttribute(this.opts.loadOption[i].attribute); if (s) return s } } findNextImageAttr(e) { for (let t = this.attrIndex; 0 <= t; t--) { var i = e.getAttribute(this.opts.loadOption[t].attribute); if (i) return i; if (0 == t && null == i) return this.findRemainingImageAttr(e) } } findImageHandler(t) { return 0 !== this.attrIndex ? this.findNextImageAttr(t) : this.findRemainingImageAttr(t) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const t = WATCH6.UTILS, e = t.RESPONSIVE; WATCH6.VideoLoader = class { constructor(t = container, e) { e = { el: t, lazyClass: e.lazyClass || ".js-video-src", responsiveClass: e.responsiveClass || ".js-res-video", imageLazyCompleteClass: "load-complete", imageEndLazyClass: e.imageEndLazyClass || ".js-end-img-src", notLoadElement: e.notLoadElement || [], loadOption: e.loadOption, visiblePoint: e.visiblePoint || 0, resizeStart: null, classes: { loaded: "loaded", ended: "ended" } }; this.opts = e, this.classes = e.classes, this.el = document.querySelector(t), this.init() } init() { this.initOpts(), this.getLazyVideo(), this.getResponsiveVideo(), this.bindEvents() } initOpts() { this.getCurrentDevice(); var t = "mobile" !== this.currentDevice ? 0 : 1; this.prevVideoSrc = "", this.targetAttr = this .opts .loadOption[t] .attribute, this.responsiveCheck = this.opts.loadOption, this.videoCallStack = [] } getLazyVideo() { let t = Array .from(this.el.querySelectorAll(this.opts.lazyClass)) .filter(e => { e.isVideoInit = !1; { let t = 0; if (t < this.opts.notLoadElement.length) return !e.closest(this.opts.notLoadElement[t]) } }); t = t.filter(t => { if (t.querySelector("video")) return t }), this.lazyVideos = t, this.lazyLength = t.length } getResponsiveVideo() { var t = Array .from(this.el.querySelectorAll(this.opts.responsiveClass)) .filter( e => {{let t=0;if(t= e.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > e.MOBILE.WIDTH && this.winWidth < e.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.prevDevice = this.currentDevice } onLoadHandler() { this.getCurrentDevice(), this.responsiveHandler(), this.lazyEvent() } onResizeHandler() { clearTimeout(this.opts.resizeStart), this.opts.resizeStart = setTimeout(() => { this.getCurrentDevice(), this.responsiveHandler(), this.lazyEvent() }, 80) } lazyEvent() { this.setLazyVideo(), this.lazyLength === this.lazyCompleteLength && window.removeEventListener( "scroll", this.lazyEvent.bind(this) ) } responsiveHandler() { this.windowWidth = window.innerWidth; var a = this.opts.loadOption.length; for (let s = 0; s < a; s++) { let t = s + 1, e = t == a ? 0 : this .opts .loadOption[t] .resolution, i = !1; ( i = (0 == s || this.windowWidth <= this.opts.loadOption[s].resolution) && this.windowWidth > e ) && this .opts .loadOption[s] .attribute !== this.oldAttr && ( this.targetAttr = this.opts.loadOption[s].attribute, this.oldAttr = this.targetAttr, this.attrIndex = s, this.setResponsiveVideo() ) } } setResponsiveVideo() { for (let t = 0; t < this.responsiveLength; t++) { const i = this.responsiveVideos[t], s = i.querySelector("video"), a = i.getAttribute(this.targetAttr); i .classList .contains(this.classes.loaded) && i.isVideoInit && s .querySelectorAll("source") .forEach(t => { const e = t.getAttribute("type"); -1 < e.indexOf("webm") && (t.src = a + ".webm"), -1 < e.indexOf("mp4") && (t.src = a + ".mp4"), s.load(), s.addEventListener("canplaythrough", () => { window.setTimeout(() => { i .classList .add(this.classes.loaded) }, 500), this.checkCompleteVideo(), this.getEndImage(i) }, { once: !0 }) }) } } setLazyVideo() { for (let t = 0; t < this.lazyLength; t++) { var e = window.pageYOffset, i = e + window.innerHeight; const n = this.lazyVideos[t]; var s = n.getBoundingClientRect(), a = e + s.top, s = e + s.bottom; i > a - window.innerHeight * ( 0 != window.pageYOffset ? this.opts.visiblePoint : 0 ) && e < s + window.innerHeight * ( 0 != window.pageYOffset ? this.opts.visiblePoint : 0 ) && !n.isVideoInit && this .videoCallStack .indexOf(t) < 0 && (this.videoCallStack.push(t), this.setVideoSrc()) } } setVideoSrc() { var t = this.videoCallStack[0]; const e = this.lazyVideos[t], i = e.querySelector("video"), s = e.getAttribute(this.targetAttr); t = this .opts .lazyClass .split("."); const a = t[t.length - 1]; t = s; this.prevVideoSrc !== t && ( i.querySelectorAll("source").forEach(t => { const e = t.getAttribute("type"); -1 < e.indexOf("webm") && (t.src = s + ".webm"), -1 < e.indexOf("mp4") && (t.src = s + ".mp4") }), i.load(), i.addEventListener("canplaythrough", () => { window.setTimeout(() => { e .classList .add(this.classes.loaded) }, 500), 1 == this .opts .lazyClass .split(" ") .length && e .classList .remove(a), this.checkCompleteVideo(), this.getEndImage(e), this .videoCallStack .splice(0, 1), 0 < this.videoCallStack.length && this.setVideoSrc() }, { once: !0 }), e.isVideoInit = !0 ), this.prevVideoSrc = t } getEndImage(t) { var e = "desktop" === this.currentDevice ? "data-src-pc" : "tablet" === this.currentDevice ? "data-src-tablet" : "data-src-mobile"; const i = t.querySelector(this.opts.imageEndLazyClass); t = this .opts .imageEndLazyClass .split("."); const s = t[t.length - 1]; i && !i .classList .contains(this.opts.imageLazyCompleteClass) && ( i.src = i.getAttribute(e), i.addEventListener("load", () => { 1 == this .opts .imageEndLazyClass .split(" ") .length && i .classList .remove(s), i .classList .add(this.opts.imageLazyCompleteClass) }, { once: !0 }) ) } checkCompleteVideo() { var t = Array .from(this.el.querySelectorAll("." + this.classes.loaded)) .filter( e => {{let t=0;if(t= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.prevDevice = this.currentDevice } getEndImage() { var t = "desktop" === this.currentDevice ? "data-src-pc" : "tablet" === this.currentDevice ? "data-src-tablet" : "data-src-mobile"; const e = this .videoElement .querySelector(this.opts.imageEndLazyClass); var i = this .opts .imageEndLazyClass .split("."); const s = i[i.length - 1]; e && (e.src = e.getAttribute(t), e.addEventListener("load", () => { 1 == this .opts .imageEndLazyClass .split(" ") .length && e .classList .remove(s), e .classList .add(this.opts.lazyCompleteClass) }, { once: !0 })) } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)), window.addEventListener("scroll", this.onScrollHandler.bind(this)), this .video .addEventListener("canplaythrough", this.onCanplayThrough.bind(this), { once: !0 }), this.useController && this .videoController .addEventListener("click", this.onClickController.bind(this)) } onChange(t) { if (t === this.videoElement) { t = "mobile" !== this.currentDevice ? "data-media-pc" : "data-media-mo"; const i = this .videoElement .getAttribute(t); t = i; this.prevVideoSrc !== t && ( this.videoElement.playState = !1, this.video.querySelectorAll("source").forEach(t => { const e = t.getAttribute("type"); -1 < e.indexOf("webm") && (t.src = i + ".webm"), -1 < e.indexOf("mp4") && (t.src = i + ".mp4"), this .video .load() }), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.video.addEventListener("canplaythrough", () => { d.isLowNetwork() || this.onPlay(), this.getEndImage() }, { once: !0 }) ), this.prevVideoSrc = t } } onLoad(t) { if (t === this.videoElement) { t = "mobile" !== this.currentDevice ? "data-media-pc" : "data-media-mo"; const i = this .videoElement .getAttribute(t); this.videoElement.playState = !1, this .video .querySelectorAll("source") .forEach(t => { const e = t.getAttribute("type"); -1 < e.indexOf("webm") && (t.src = i + ".webm"), -1 < e.indexOf("mp4") && (t.src = i + ".mp4"), this .video .load() }), this .video .addEventListener("canplaythrough", () => { d.isLowNetwork() || this.onPlay(), this.getEndImage() }, { once: !0 }) } } onPlay(t) { var e = () => { 0 < this.video.readyState && !this.videoElement.playState && ( this.video.currentTime === this.video.duration && (this.video.currentTime = 0), this.autoPlay && (this.videoElement.autoPlayState = !0), this.videoElement.playState = !0, this.videoElement.classList.contains(this.classes.paused) ? this.videoElement.classList.add(this.classes.playing) : window.setTimeout(() => { this .videoElement .classList .add(this.classes.playing) }, 350), this.videoElement.classList.remove(this.classes.ended), this.videoElement.classList.remove(this.classes.paused), window.setTimeout(() => { this .video .play(), this.updateController(), this.outCallback("updatePlayState", !0) }, 350), this.video.addEventListener("ended", this.updatePlayEnded.bind(this), { once: !0 }) ) }; t && t !== this.videoElement || e() } onPause() { this.video.paused || this .video .pause(), this.videoElement.playState = !1, this .videoElement .classList .remove(this.classes.ended), this .videoElement .classList .remove(this.classes.playing), this .videoElement .classList .add(this.classes.paused), this.updateController() } onEnded() { 3 < this.video.readyState && ( this.video.ended || this.video.pause(), this.video.currentTime = this.video.duration, this.videoElement.playState = !1, this.videoElement.classList.add(this.classes.ended), this.videoElement.classList.remove(this.classes.playing), this.videoElement.classList.remove(this.classes.paused), this.updateController() ) } onReset(t) { var e = () => { this .video .pause(), this.video.currentTime = 0, this.videoElement.playState = !1, this.autoPlay && (this.videoElement.autoPlayState = !1), this .videoElement .classList .remove(this.classes.ended), this .videoElement .classList .remove(this.classes.playing), this .videoElement .classList .remove(this.classes.paused), this.updateController() }; t && t !== this.videoElement || e() } onCanplayThrough() { var t = this .opts .videoLazyClass .split("."), t = t[t.length - 1]; this.useController && window.setTimeout(() => { this.videoController.style.display = "block" }, 500), this .videoElement .classList .add(this.classes.loaded), 1 == this .opts .videoLazyClass .split(" ") .length && this .videoElement .classList .remove(t), this.isCanplay = !0, this.onScrollHandler(), this.isCanplay = !1 } onClickController(t) { t.preventDefault(), this.videoElement.playState ? this.onPause() : this.onPlay() } updatePlayEnded() { this.onPause() } updateController() { var t; this.useController && ( this.videoElement.playState ? this.videoController.classList.add(this.classes.isPaused) : this.videoController.classList.remove(this.classes.isPaused), t = { el: this.videoController, playState: this.videoElement.playState }, this.outCallback("updateController", t) ) } onScrollHandler() { if (!this.videoElement.closest(".cm-layer")) { var t = window.scrollY, e = t > this.lastScrollY ? "down" : "up", i = d.getHeight(this.videoElement), i = (d.winSize().h, .5 * i), s = d .getScroll() .top, a = d .getScroll() .bottom, n = d .getOffset(this.videoElement) .top, r = d .getOffset(this.videoElement) .bottom - i; const h = this .videoElement .classList .contains(this.classes.playing) && this.videoElement.playState; var o = this .videoElement .classList .contains(this.classes.paused) && !this.videoElement.playState, l = this .videoElement .classList .contains(this.classes.ended) && !this.videoElement.playState; if (r + i < s) this.autoPlay && ( this.videoElement.autoPlayState ? (h || o) && this.onEnded() : this.videoElement.classList.add(this.classes.ended) ); else if (a < n) this.autoPlay && this.videoElement.autoPlayState && (h || o || l) && this.onReset(); else if (r < a && s < n) { const h = this.isCanplay || "down" == e; !h || !this.autoPlay || this.videoElement.playState || this.videoElement.autoPlayState || d.isLowNetwork() || this.onPlay() } this.lastScrollY = t } } onResponsiveChange() { window.setTimeout(() => { this.isCanplay = !0, this.onReset(), this.onScrollHandler(), this.isCanplay = !1 }, 20) } onResizeHandler() { d .winSize() .w !== this.winWidth && ( this.winWidth = d.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150) ) } resizeAnimateFunc() { this.setLayout(), this.resizeRequestFrame = d .requestAFrame .call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, d .cancelAFrame .call(window, this.resizeRequestFrame) } setLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } outCallback(t, e) { t = this .opts .on[t]; null != t && t(e) } } }(), function () { "use strict"; t = !(r = {}), l = e = null, s = function () { a(), n(), UTILS.isLowNetwork() && document .documentElement .classList .add("low_network"), document .documentElement .classList .add("load"), window.removeEventListener("load", s) }, a = function () { t = 1024 <= window.innerWidth ? "desktop" : 768 <= window.innerWidth && window.innerWidth < 1024 ? "tablet" : "mobile", clearTimeout(r.resizeTimeout), r.resizeTimeout = setTimeout(function () { UTILS.isBrokenFixed() }, 100), t != e && ( document.documentElement.classList.add(t), document.documentElement.classList.remove(e), e = t ) }, n = function () { for ( var t = window.pageYOffset, e = t + window.innerHeight, i = 0; i < r.allClickables.length; i++ ) { var s = r.allClickables[i], a = t + s .getBoundingClientRect() .top, n = t + UTILS.getNavHeight(); n <= a && a <= e ? s.isVisible = !0 : (a < n || e < a) && (s.isVisible = !1) } }, o = function (t) { t.preventDefault(), t.stopPropagation(); var e = this, i = parseFloat(this.innerText), s = document.querySelectorAll("#desc-section li"), i = document.querySelectorAll("#desc-section li")[i - 1], a = i.querySelector("span"), n = a.innerText, r = ( a.innerHTML = '' + n + "", l = t.currentTarget, function () { d.call(e), a.removeEventListener("focusin", r) } ), o = function () { a.innerHTML = n, a.removeAttribute("tabindex"), a.removeEventListener("focusout", o) }; t .currentTarget .closest(".cm-layer") && ( t = t.currentTarget.closest(".cm-layer"), $(t).trigger("closeLayer", !1) ), a.addEventListener("focusin", r), a.addEventListener("focusout", o), i .querySelector("a") .focus(), s.forEach(t => t.classList.remove("is-active")), i .classList .add("is-active") }, h = function (t) { var t = t .target .closest("li"), e = t.getAttribute("data-sup"), i = document.querySelectorAll(".click_sup"); for (let t = 0; t < i.length; t++) i[t].innerText === e && (d.call(this), l.focus()); var s = l.closest(".cm-layer"); if (s) { var a = s.id; const n = s.parentNode, r = n.querySelector(`[data-layer-target="#${a}"]`); l.innerText === e && r.focus() } t .classList .remove("is-active") }, d = function (t) { var s; !document .documentElement .classList .contains("ios") && t && null == t.relatedTarget || ( (s = this).isClicked || this.isVisible || i(this) || setTimeout(function () { var t = window.pageYOffset, e = s.getBoundingClientRect(), i = (window.innerHeight - UTILS.getNavHeight()) / 2, t = t - UTILS.getNavHeight() + e.top + e.height / 2; window.scrollTo(0, t - i) }, 10), this.isClicked = !1 ) }, i = function (t) { var t = t.parentNode, e = t.getAttribute("id"); return "contents" != e && t != document.body && ( !("subnav" != e && !t.classList.contains("sc-s22ultra-popup")) || i(t) ) }, c = function () { this.isClicked = !0 }; var r, t, e, l, s, a, n, o, h, d, i, c, u = { init: function () { r.resizeTimeout = null, r.supClicker = document.querySelectorAll("a.click_sup"), r.supTopBtn = document.querySelectorAll("button.click_disclaimer"), r.contents = document.getElementById("contents") || document.getElementById( "content" ), r.allClickables = r .contents .querySelectorAll("a, button, input, select"); var t = 0; for ( window.addEventListener("load", s), window.addEventListener("resize", a), window.addEventListener("scroll", n), t = 0; t < r.allClickables.length; t++ ) { var e = r.allClickables[t]; e.isClicked = !1, e.isVisible = !1, e.addEventListener("focusin", d), e.addEventListener("mousedown", c) } for (t = 0; t < r.supClicker.length; t++) r .supClicker[t] .addEventListener("click", o); for (t = 0; t < r.supTopBtn.length; t++) r .supTopBtn[t] .addEventListener("click", h); var i = document.documentElement.classList; "global" == UTILS.checkRegion() || i.contains("mac") || i.contains("safari") || ANIUTIL.scrollController( {speed: 120, duration: .5} ) } }; window.initialize = u }(), function (t) { t.TrapFocus = function () { "use strict"; var t, g = void 0, e = window, i = e.document, w = e.jQuery, s = null, a = e.WATCH6.UTILS; function n(t, e) { if (!(this instanceof n)) return new n(t, e); var i = { obj: t, prevStep: null, isDestroy: false, IgnoreUtilFocusChanges: false, ariaAttr: { hidden: "aria-hidden", disabled: "aria-disabled", modal: "aria-modal" }, ariaNotHidden: (() => { return e && e.ariaNotHidden ? e.ariaNotHidden : [] })(), classAttr: { clone: "trapfocus" }, elAttr: { tabIndex: "tabindex", role: "role" }, customEvent: ".TrapFocus" + ( new Date ).getTime() + Math.random() }; this.opts = a.def(i, e || {}); if (!(this.obj = w(this.opts.obj)).length) return; if (s != null) s.destroy(); s = this; this.init() } return n.prototype = { init: function () { this.initLayout(); this.buildAria(); this.bindEvents(true); this.loadComponent(); this .obj .data("TrapFocus", this) }, initLayout: function () { var t = this.opts.ariaAttr; var e = this.opts.elAttr; this .obj .attr(t.modal, "true"); this .obj .attr(e.role, "dialog") }, buildAria: function () { var v = this.opts.ariaAttr; var f = this.opts.elAttr; var t = "head, script, noscript, link, style, meta"; var e = this.opts.ariaNotHidden.length > 0 ? `, ${this .opts .ariaNotHidden .join(",")}` : ""; a.def(this, { aria: { notHidden: Array(t + e), focusType: [ "A", "BUTTON", "INPUT", "SELECT", "TEXTAREA" ], dataAttr: { ariaHidden: "trapfocusariahidden", ariaDisabled: "trapfocusariadisabled", tabIndex: "trapfocustabindex", role: "trapfocusrole" }, destroy: w.proxy(function () { var a = this.aria.dataAttr; var n = this.aria.hiddenEls; var s = this.aria.focusEls; var r = this.aria.tabindexEls; for (var t = 0, e = n.length; t < e; t++) (function (t) { var e = n.eq(t), i = e.data(a.ariaHidden), s = e.data(a.role); if (i != g) { e.attr(v.hidden, i); e.removeData(a.ariaHidden) } else e.removeAttr(v.hidden); if (s != g) { e.attr(f.role, s); e.removeData(a.role) } else e.removeAttr(f.role) })(t); for (var i = 0, o = s.length; i < o; i++) (function (t) { var e = s.eq(t), i = e.data(a.ariaDisabled); e.removeAttr(f.tabIndex); if (i != g) { e.attr(v.disabled, i); e.removeData(a.ariaDisabled) } else e.removeAttr(v.disabled) })(i); for (var l = 0, h = r.length; l < h; l++) (function (t) { var e = r.eq(t), i = e.data(a.tabIndex); if (i != g) { e.attr(f.tabIndex, i); e.removeData(a.tabIndex) } else e.removeAttr(f.tabIndex) })(l); var d = document.getElementById("teconsent"); if (d) { var c = d.querySelector("a"); if (c && c.getAttribute("tabindex") === "-1") { c.setAttribute("tabindex", "0"); c.removeAttribute("aria-disabled") } } }, this), build: w.proxy(function () { var i = this; var t = this.aria.focusType; var a = this.aria.dataAttr; var s = this .obj .parents(); var n = this .obj .siblings() .not(i.aria.notHidden.join(",")); var r = w(""); var o = w(""); for (var e = 0, l = s.length; e < l; e++) (function (t) { var e = s.eq(t); n = n.add(e.siblings().not(i.aria.notHidden.join(","))) })(e); r = r.add(n); o = o.add(n); this .obj .removeAttr(v.hidden); for (var h = 0, d = n.length; h < d; h++) (function (t) { var e = n.eq(t), i = e.attr(v.hidden), s = e.attr(f.role); if (i != g) e.data(a.ariaHidden, i); if (s != g) e.data(a.role, s); e.attr(v.hidden, "true"); e.attr(f.role, "none presentation") })(h); r = r.add(n.find(t.join(",").toLowerCase())); for (var c = 0, u = r.length; c < u; c++) (function (t) { var e = r.eq(t), i = e.attr(v.disabled); if (i != g) e.data(a.ariaDisabled, i); e.attr(v.disabled, "true"); setTimeout(() => { e.attr(f.tabIndex, -1) }) })(c); o = o.add(n.find("[" + f.tabIndex + "]")); for (var p = 0, m = o.length; p < m; p++) (function (t) { var e = o.eq(t), i = e.attr(f.tabIndex); if (i != g) e.data(a.tabIndex, i); e.attr(f.tabIndex, -1) })(p); this.aria.hiddenEls = n; this.aria.focusEls = r; this.aria.tabindexEls = o }, this) } }) }, changeEvents: function (t) { var e = [], i = t.split(" "); for (var s in i) e.push(i[s] + this.opts.customEvent); return e.join(" ") }, bindEvents: function (t) { if (t) w(i).on(this.changeEvents("focusin"), w.proxy(this.trapFocus, this)); else w(i).off(this.changeEvents("focusin")) }, focusFirstDescendant: function (t) { for (var e = 0; e < t.childNodes.length; e++) { var i = t.childNodes[e]; if (this.attemptFocus(i) || this.focusFirstDescendant(i)) return true } return false }, focusLastDescendant: function (t) { for (var e = t.childNodes.length - 1; e >= 0; e--) { var i = t.childNodes[e]; if (this.attemptFocus(i) || this.focusLastDescendant(i)) return true } return false }, isFocusable: function (t) { if (t.tabIndex > 0 || t.tabIndex === 0 && t.getAttribute("tabIndex") !== null) return true; if (t.disabled) return false; switch (t.nodeName) { case "A": return !!t.href && t.rel != "ignore"; case "INPUT": return t.type != "hidden" && t.type != "file"; case "BUTTON": case "SELECT": case "TEXTAREA": case "VIDEO": case "SOURCE": case "IFRAME": return true; default: return false } }, attemptFocus: function (t) { if (this.opts.isDestroy) return; if (!this.isFocusable(t)) return false; this.opts.IgnoreUtilFocusChanges = true; try { t.focus() } catch (t) {} this.opts.IgnoreUtilFocusChanges = false; return document.activeElement === t }, trapFocus: function (t) { if (this.opts.isDestroy) return; if (this.opts.IgnoreUtilFocusChanges) return; var e = document; this.dynamicComponentFocus() }, loadComponent: function () { this.dynamicComponentFocus(); setTimeout(() => { this.dynamicComponentFocus() }, 3e3); this.focusFirstDescendant(this.obj[0]); this.lastFocus = document.activeElement; this .aria .build() }, dynamicComponentFocus: function () { const o = this.opts.ariaAttr; const l = this.opts.elAttr; setTimeout(() => { var t = document.getElementById("QSIFeedbackButton-btn"); var e = document.getElementById("QSIFeedbackButton-close-btn"); var i = document.getElementById("nebula_div_btn"); var s = document.getElementById("spr-live-chat-app"); var a = document.getElementById("teconsent"); if (t) { var n = t.parentElement; t.setAttribute(o.disabled, "true"); t.setAttribute(l.tabIndex, "-1"); n.setAttribute(o.disabled, "true"); n.setAttribute(o.hidden, "true"); n.setAttribute(l.tabIndex, "-1"); n.setAttribute(l.role, "none presentation") } if (i) { var r = i.parentElement; i.setAttribute(o.disabled, "true"); i.setAttribute(l.tabIndex, "0"); r.setAttribute(o.disabled, "true"); r.setAttribute(o.hidden, "true"); r.setAttribute(l.tabIndex, "-1"); r.setAttribute(l.role, "none presentation") } if (s) { s.setAttribute(o.disabled, "true"); s.setAttribute(o.hidden, "true"); s.setAttribute(l.tabIndex, "-1"); s.setAttribute(l.role, "none presentation") } if (a && a.hasAttribute("aria-label")) setTimeout(() => { var t = a.querySelector("a"); t.setAttribute(l.tabIndex, "-1"); t.setAttribute(o.disabled, "true"); t.setAttribute(o.hidden, "true") }) }) }, destroy: function () { s = null; this.opts.isDestroy = true; var t = this.opts.ariaAttr; var e = this.opts.elAttr; this.bindEvents(false); this .aria .destroy(); this .obj .removeAttr(t.modal) } }, n }() }(window), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const n = WATCH6.UTILS, t = n.RESPONSIVE; WATCH6.HeightMatch = class { constructor(t = container, e) { var i = { container: t || ".heightmatch-wrap", childElement: ">li", notCompareElement: null, pushElement: null, matchElement: ".heightmatch-cont", column: 3, pushObjs: null, useDestroyHeight: !0, destroyType: !1, resizeStart: null, breakpoints: {}, matchBefore: null, matchAfter: null, loadAfter: null }; this.opts = n.def(i, e || {}), this.classes = i.classes, this.obj = $(document.querySelector(t)), this.init() } init() { null !== this.obj && ( this.setElements(), this.setOpts(), this.setRows(), this.buildHeightControl(), this.outCallback("loadAfter"), this.bindEvents() ) } setElements() { this.objChild = this .obj .find(this.opts.childElement), (this.opts.pushObjs = null) == this.opts.pushElement ? this.opts.pushObjs = this .objChild .not(this.opts.notCompareElement) : this.opts.pushObjs = this .objChild .not(this.opts.notCompareElement) .find(this.opts.pushElement) } setOpts() { this.currentDevice = !1, this.prevDevice = null; var t, e, i = n .winSize() .w, s = this.opts.breakpoints, a = []; for (e in s) t = i <= e ? (a.push(e), Math.min.apply(null, a)) : null; this.breakOpts = n.def({}, this.opts), null != t && (this.breakOpts = n.def(this.breakOpts, s[t])) } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)) } onResizeHandler() { n .winSize() .w !== this.winWidth && ( this.winWidth = n.winSize().w, null == this.opts.resizeStart && ( this.opts.resizeStart = this.winWidth, this.outCallback("matchBefore"), this.resizeAnimateFunc() ), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150) ) } resizeAnimateFunc() { this.setLayout(), this.setOpts(), this.setRows(), this.buildHeightControl(), this.resizeRequestFrame = n .requestAFrame .call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, this.setOpts(), this.setRows(), this.buildHeightControl(), this.outCallback("matchAfter"), n .cancelAFrame .call(window, this.resizeRequestFrame) } setLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice, this.prevDevice, this.prevDevice = this.currentDevice } setRows() { this.rowNum = Math.ceil(this.objChild.length / this.breakOpts.column) } buildHeightControl() { this.breakOpts.column <= 1 ? null !== this.opts.pushObjs && this .opts .pushObjs .css("height", "") : this.buildHeight() } buildHeight() { this.heightArray = []; for (var t = 0; t < this.rowNum; t++) this.heightArray[t] = []; for (var t = 0, e = this.objChild.length; t < e; t++) { var i = parseInt(t / this.breakOpts.column, 10), s = this .objChild .eq(t) .not(this.opts.notCompareElement) .find(this.opts.matchElement), s = s.is(":visible") ? Math.ceil(s.outerHeight()) : 0; this .heightArray[i] .push(s) } for (t = 0; t < this.rowNum; t++) this.heightArray[t] = Math .max .apply(null, this.heightArray[t]); this.setHeightLayout() } setHeightLayout() { for (var t = 0, e = this.objChild.length; t < e; t++) { var i = parseInt(t / this.breakOpts.column, 10); ( null == this.opts.pushElement ? this.objChild.eq(t).not(this.opts.notCompareElement) : this.objChild.eq(t).not(this.opts.notCompareElement).find( this.opts.pushElement ) ).height(this.heightArray[i]) } } destroy() { this.opts.useDestroyHeight && null !== this.opts.pushObjs && this .opts .pushObjs .css("height", ""), this.opts.destroyType = !0, this.bindEvents(!1) } reInit() { this.setElements(), this.setOpts(), this.setRows(), this.buildHeightControl(), this.onResizeHandler(), this.opts.destroyType && (this.opts.destroyType = !1, this.bindEvents(!0)) } outCallback(t) { t = this.opts[t]; null != t && t() } } }(), function (t) { t.HiveLayer = function () { "use strict"; var t, o = window, l = o.jQuery, e = o.document, h = o.WATCH6.UTILS, d = []; function s(t, e) { if (!(this instanceof s)) return new s(t, e); var i = { effect: "fade", layerWrapElements: t, layerBody: ".cm-layer__body", layerElements: ".cm-layer__wrapper", openerElements: ".js-layer-opener", closerElements: ".js-layer-closer", dimmedElements: ".cm-layer__dimmed", classAttr: { htmlToggle: "is-layer-open", isAsync: "is-async" }, focusOutObj: { CSS: { overflow: "hidden", position: "absolute", left: 0, top: 0, "z-index": -1, width: 1, height: 1, "font-size": "1px", "line-height": 0 } }, customEvent: ".HiveLayer" + ( new Date ).getTime() + Math.random(), openerTarget: null, useOutside: false, useEscape: true, useCloseFocus: true, useScrollLock: true, useTrapFocus: true, flip: { CLASS: "hive-layer-flip", direction: "horizontal", rotateStart: 90, rotateEnd: 0 }, customToggle: false, dimmedDuration: 250, fps: 120, easing: "swing", duration: 250, on: { buildTools: null, layerMove: null, layerOpenBefore: null, layerOpenAfter: null, layerCloseBefore: null, layerCloseAfter: null }, ariaNotHidden: [] }; if (!(this.layerWrap = i.layerWrapElements).length) return; this.layerWrap = l(i.layerWrapElements); this.opts = h.def(i, e || {}); this.init() } return s.prototype = { init: function () { this.initOpts(); this.setElements(); this.initLayout(); this.buildTween(); this.buildTrapFocus(); this.bindEvents(true); this .layerWrap .data("HiveLayer", this) }, initOpts: function () { this.layerWrapInstance = "#" + this .layerWrap .attr("id"); if (!this.opts.isSupportTransition && this.opts.effect === "flip") this.opts.effect = "default"; if (this.opts.effect == "custom") { this.opts.effect = "default"; this.opts.customToggle = true } }, setElements: function () { this.layerBody = this .layerWrap .find(this.opts.layerBody); this.layerObj = this .layerWrap .find(this.opts.layerElements); this.closerObj = this .layerWrap .find(this.opts.closerElements); this.dimmedObj = this .layerWrap .find(this.opts.dimmedElements) }, initLayout: function () { if (this.opts.effect === "slide") { this .dimmedObj .hide(); this .layerObj .hide() } else if (this.opts.effect === "flip") { var t = this.opts.flip.direction; if (t !== "vertical") this.opts.flip.cssD = "rotateY"; else this.opts.flip.cssD = "rotateX"; this .dimmedObj .hide(); this .layerObj .hide(); this .layerWrap .addClass(this.opts.flip.CLASS) } }, buildTween: function () { h.def(this, { tweens: { instance: [], kill: l.proxy(function () { for (var t = 0, e = this.tweens.instance.length; t < e; t++) this .tweens .instance[t] .kill(); this.tweens.instance = [] }, this) } }) }, buildTrapFocus: function () { if (!this.opts.useTrapFocus) return; h.def(this, { trapfocus: { instance: null, destroy: l.proxy(function () { if (this.trapfocus.instance == null) return; this .trapfocus .instance .destroy(); this.trapfocus.instance = null }, this), build: l.proxy(function () { if (this.trapfocus.instance !== null) return; this.trapfocus.instance = new TrapFocus( this.layerObj, {ariaNotHidden: this.opts.ariaNotHidden} ) }, this) } }) }, bindEvents: function (t) { if (t) { l(e).on( "click clickCustom", this.opts.openerElements + '[data-layer-target="' + this.layerWrapInstance + '"]', l.proxy(this.onLayerOpen, this) ); this .layerWrap .on("openLayer", l.proxy(this.onLayerOpen, this)); this .closerObj .on("mousedown click clickCustom", l.proxy(this.onLayerClose, this)); this .layerWrap .on("layerSetOptions", l.proxy(this.setOptions, this)); if (this.opts.useEscape) this .layerObj .on("keydown", l.proxy(this.onEscapeClose, this)) } else { l(e).off("click clickCustom"); this .layerWrap .off("openLayer"); this .closerObj .off("mousedown click clickCustom"); this .layerWrap .off("layerSetOptions"); if (this.opts.useEscape) this .layerObj .off("keydown") } }, bindOutsideEvents: function (t) { if (!this.opts.useOutside) return; if (t) this .layerObj .on("clickoutside touchendoutside", l.proxy(this.onLayerOutsideFunc, this)); else this .layerObj .off("clickoutside touchendoutside") }, bindCloseEvents: function (t) { if (t) this .layerWrap .on("closeLayer", l.proxy(this.closeLayer, this)); else this .layerWrap .off("closeLayer") }, setOptions: function (t, e) { h.def(this.opts, e || {}); if (e.customToggle) this.opts.effect = "default" }, setScrollLock: function (t) { if (!this.opts.useScrollLock) return; if (t) h .page .scrollLock .on(); else h .page .scrollLock .off(); l("html").toggleClass(this.opts.classAttr.htmlToggle, t) }, onLayerOpen: function (t) { t.preventDefault(); setTimeout(() => { this .dimmedObj .on("mousedown click clickCustom", l.proxy(this.onLayerClose, this)) }, 500); if (t.type === "click" || t.type === "clickCustom") this.opts.openerTarget = l(t.currentTarget); if (t.type === "click") if (this.opts.openerTarget.hasClass(this.opts.classAttr.isAsync)) return; this.layerViewType = "open"; d.push({POPUPWRAP: this.layerWrap}); if (document.querySelector("html.load div#header")) { document .querySelector("html.load div#header") .style .opacity = 0; document .querySelector("html.load div#header") .style .pointerEvents = "none" } this.setScrollLock(true); this.bindCloseEvents(true); if (this.opts.effect === "default") if (!this.opts.customToggle) { this .layerWrap .css({opacity: 0, display: "block"}); this.outCallback("layerOpenBefore"); this.outCallback("buildTools"); this .layerWrap .css("opacity", ""); this.openAfterBugFunc() } else this.outCallback("layerOpenBefore"); else if (this.opts.effect === "fade") { this .layerWrap .css({opacity: 0, display: "block"}); this.outCallback("layerOpenBefore"); TweenLite.set(this.layerBody, { opacity: 0, scale: 1, overflow: "hidden" }); this.outCallback("buildTools"); var e = TweenLite.to(this.layerWrap, this.opts.duration / 1e3, { opacity: 1, onComplete: l.proxy(function () { var t = TweenLite.to(this.layerBody, .25, { ease: Expo.easeOut, opacity: 1, scale: 1, onComplete: l.proxy(function () { this .layerBody .css({overflow: "", transform: ""}); this.openAfterBugFunc() }, this) }); this .tweens .instance .push(t) }, this) }); this .tweens .instance .push(e) } else if (this.opts.effect === "slide") { var i = 1; TweenLite.set(this.dimmedObj, { display: "block", opacity: 0 }); TweenLite.set(this.layerWrap, {display: "block"}); TweenLite.set(this.layerBody, {overflow: "hidden"}); TweenLite.set(this.layerObj, { display: "", y: -h .winSize() .h }); TweenLite.set(this.layerObj, {display: ""}); this.outCallback("layerOpenBefore"); var e = TweenLite.to(this.dimmedObj, i, {opacity: .9}); var s = TweenLite.to(this.layerObj, i, { y: 0, onComplete: l.proxy(function () { this.outCallback("buildTools"); this .layerBody .css({overflow: ""}); this .layerObj .css({transform: ""}); this.openAfterBugFunc() }, this) }); this .tweens .instance .push(e); this .tweens .instance .push(s) } else if (this.opts.effect === "slide2") { var i = .6; TweenLite.set(this.dimmedObj, { display: "block", opacity: 0 }); TweenLite.set(this.layerWrap, {display: "block"}); TweenLite.set(this.layerObj, { display: "", y: h .winSize() .h }); TweenLite.set(this.layerObj, {display: ""}); this.outCallback("layerOpenBefore"); var e = TweenLite.to(this.dimmedObj, i, {opacity: .9}); var s = TweenLite.to(this.layerObj, i, { y: 0, onComplete: l.proxy(function () { this.outCallback("buildTools"); this .layerBody .css({overflow: ""}); this .layerObj .css({transform: ""}); this.openAfterBugFunc() }, this) }); this .tweens .instance .push(e); this .tweens .instance .push(s) } else if (this.opts.effect === "flip") { var a = this.opts.flip.rotateEnd - this.opts.flip.rotateStart, n = a / this.opts.duration * (1e3 / this.opts.fps), r = 0; this.opts.flip.moveData = { startDistance: this.opts.flip.rotateStart, endDistance: this.opts.flip.rotateEnd, moveDistance: a, moveOneStep: n, currentStep: r }; this .layerWrap .show(); this .dimmedObj .fadeIn(this.opts.dimmedDuration, l.proxy(function () { this.outCallback("layerOpenBefore"); this.outCallback("buildTools"); this .layerObj .show(); this.initStep(this.opts.flip.moveData); this.flipFunc() }, this)); o.setTimeout(l.proxy(function () { this.outCallback("buildTools") }, this), 30) } this.ariaAccessbility(true, this.layerWrap) }, initStep: function (t) { this.opts.stepTimeOld = new Date; this.direction = t.startDistance > t.moveDistance ? "toNext" : "toPrev"; this.condition = this.direction === "toNext" ? t.currentStep > t.moveDistance : t.currentStep < t.moveDistance }, moveStep: function (t) { this.opts.stepTimeNew = new Date; this.opts.remaining = Math.max( 0, this.opts.stepTimeOld - this.opts.stepTimeNew + this.opts.duration ); var e = this.opts.remaining / this.opts.duration || 0, i = 1 - e, s = l.easing[this.opts.easing]( i, this.opts.duration * i, 0, 1, this.opts.duration ); t.currentStep = (t.endDistance - t.startDistance) * s }, flipFunc: function () { var t = this.opts.flip.moveData; this.moveStep(t); if (this.condition) { o.clearTimeout(this.stepTimeout); this.stepTimeout = o.setTimeout(l.proxy(function () { this.flipFunc() }, this), 1e3 / this.opts.fps); this.condition = this.direction === "toNext" ? t.currentStep > t.moveDistance : t.currentStep < t.moveDistance; this.outCallback("layerMove", t.currentStep, t) } else { this.opts.remaining = this.opts.duration; if (this.layerViewType === "close" || !this.layerViewType) { this.closeAfterBugFunc(); this .dimmedObj .fadeOut(this.opts.dimmedDuration, l.proxy(function () { this .layerWrap .hide(); this .layerObj .hide() }, this)) } else this.openAfterBugFunc() } var e = t.startDistance + t.currentStep; this .layerObj .css({ transform: this.opts.flip.cssD + "(" + e + "deg)" }) }, onLayerOpenAfter: function () { if (this.trapfocus) this .trapfocus .build(); this.bindOutsideEvents(true); this.outCallback("layerOpenAfter") }, openAfterBugFunc: function () { o.clearTimeout(this.openAfterTimeout); this.openAfterTimeout = o.setTimeout(l.proxy(this.onLayerOpenAfter, this), 30) }, onLayerClose: function (t) { var e = l(t.currentTarget); if (t.type === "mousedown") { if (!h.isDevice) { t.stopPropagation(); this.opts.useCloseFocus = false } } else if (t.type === "click" || t.type === "clickCustom") { t.preventDefault(); if (t.type === "click") if (e.hasClass(this.opts.classAttr.isAsync)) return; this .layerWrap .trigger("closeLayer"); this .dimmedObj .off("mousedown click clickCustom") } }, closeLayer: function () { this.closeType = arguments[1]; this.layerViewType = "close"; this.outCallback("layerCloseBefore"); this.popupOpenPropsControl(); this.setScrollLock(false); if (this.trapfocus) this .trapfocus .destroy(); if (document.querySelector("html.load div#header")) { document .querySelector("html.load div#header") .style .opacity = 1; document .querySelector("html.load div#header") .style .pointerEvents = "unset" } this.ariaAccessbility(false, this.layerWrap); o.clearTimeout(this.closeBeforeTimeout); this.closeBeforeTimeout = o.setTimeout( l.proxy(this.closeBeforeBugFunc, this), 30 ); this.bindOutsideEvents(false) }, onEscapeClose: function (t) { var e = t.which || t.keyCode; if (e !== 27) return; this .layerWrap .trigger("closeLayer") }, onLayerOutsideFunc: function () { this .layerWrap .trigger("closeLayer") }, closeBeforeBugFunc: function () { if (this.opts.effect === "default") { if (!this.opts.customToggle) this .layerWrap .stop(true, true) .hide(); this.closeAfterBugFunc() } else if (this.opts.effect === "fade") { var t = TweenLite.to(this.layerBody, this.opts.duration / 1e3, { overflow: "hidden", opacity: 0, scale: 1, onComplete: l.proxy(function () { this .layerBody .css("overflow", ""); var t = TweenLite.to(this.layerWrap, this.opts.duration / 1e3, { opacity: 0, display: "none", onComplete: l.proxy(this.closeAfterBugFunc, this) }); this .tweens .instance .push(t) }, this) }); this .tweens .instance .push(t) } else if (this.opts.effect === "slide") { var e = 1; TweenLite.set(this.layerBody, {overflow: "hidden"}); var t = TweenLite.to(this.dimmedObj, e, {opacity: 0}); var i = TweenLite.to(this.layerObj, e, { y: -h .winSize() .h, onComplete: l.proxy(function () { this.closeAfterBugFunc(); this .dimmedObj .hide(); this .layerWrap .hide(); this .layerBody .css("overflow", ""); this .layerObj .hide() }, this) }); this .tweens .instance .push(t); this .tweens .instance .push(i) } else if (this.opts.effect === "slide2") { var e = .5; var t = TweenLite.to(this.dimmedObj, e, {opacity: 0}); var i = TweenLite.to(this.layerObj, e, { y: h .winSize() .h, onComplete: l.proxy(function () { this.closeAfterBugFunc(); this .dimmedObj .hide(); this .layerWrap .hide(); this .layerBody .css("overflow", ""); this .layerObj .hide() }, this) }); this .tweens .instance .push(t); this .tweens .instance .push(i) } else if (this.opts.effect === "flip") { var s = -this.opts.flip.rotateStart - this.opts.flip.rotateEnd, a = s / this.opts.duration * (1e3 / this.opts.fps), n = 0; this.opts.flip.moveData = { startDistance: this.opts.flip.rotateEnd, endDistance: -this.opts.flip.rotateStart, moveDistance: s, moveOneStep: a, currentStep: n }; this.initStep(this.opts.flip.moveData); this.flipFunc() } }, closeAfterBugFunc: function () { o.clearTimeout(this.closeAfterTimeout); this.closeAfterTimeout = o.setTimeout( l.proxy(this.onLayerCloseAfter, this), 30 ) }, popupOpenPropsControl: function () { var t = d; for (var e = 0, i = t.length; e < i; e++) { var s = t[e], a = s["POPUPWRAP"][0]; if (a === this.layerWrap[0]) t[e] = null } for (var n = 0, r = t.length; n < r; r--) { var o = t[r - 1]; if (o === null) t.splice(r - 1, 1) } }, onLayerCloseAfter: function () { if (this.opts.openerTarget !== null) { if (this.closeType !== false) this .opts .openerTarget .focus(); this.opts.openerTarget = null } this.opts.useCloseFocus = true; this.bindCloseEvents(false); this.outCallback("layerCloseAfter") }, ariaAccessbility: function (t, e) {}, outCallback: function (t) { var e = this .opts .on[t]; if (t === "layerMove") this .layerWrap .trigger(t, arguments[1], arguments[2], this); else this .layerWrap .trigger(t, this); if (e == null) return; if (t === "layerMove") e(arguments[1], arguments[2], this); else e(this) }, styleDestroy: function () { this .dimmedObj .attr("style", ""); this .layerWrap .attr("style", ""); this .layerBody .attr("style", ""); this .layerObj .attr("style", "") }, destroy: function () { this .tweens .kill(); if (this.trapfocus) this .trapfocus .destroy(); this.styleDestroy(); this.bindEvents(false); this.bindOutsideEvents(false); this.bindCloseEvents(false) } }, s }() }(window), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const r = WATCH6.UTILS; r.RESPONSIVE; WATCH6.SubNav = class { constructor(t = container, e) { var i = { navItems: "ul li>a", navDests: '[class*="js-nav-"]', visSections: ".js-visible", resizeStart: null, classes: { isOn: "on" } }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null !== this.el && (this.setElements(), this.initOpts(), this.bindEvents()) } setElements() { this.navItems = r.convertArray(this.el.querySelectorAll(this.opts.navItems)), this.navDests = document.querySelectorAll(this.opts.navDests), this.visSections = r.convertArray( document.querySelectorAll(this.opts.visSections) ) } initOpts() { this.visCount = -1, this .visSections .forEach(t => { t.dataset.visIndex = t .classList .contains("js-count") ? ++this.visCount : this.visCount }), this.winOffsetTop = window.pageYOffset } bindEvents() { this.onScrollHandler(), window.addEventListener("resize", this.onResizeHandler.bind(this)), window.addEventListener("scroll", this.onScrollHandler.bind(this)); const i = window.location.hash; this .navItems .forEach((t, e) => { -1 < t .getAttribute("href") .indexOf("#") && ( t.dataset.navIndex = e, t.addEventListener("click", this.onNavItemClickEvent.bind(this)) ), i && -1 < t .getAttribute("href") .indexOf(i) && (t.parentNode.classList.remove(this.classes.isOn), t.click()) }) } onNavItemClickEvent(e) { e.preventDefault(); e = e.target; const i = e.parentNode; if (!this.el.classList.contains("hold") && !i.classList.contains(this.classes.isOn)) { this .navItems .forEach(t => { t .parentNode .classList .remove(this.classes.isOn) }), i .classList .contains(this.classes.isOn) || i .classList .add(this.classes.isOn); e = e.dataset.navIndex; const n = this.navDests[e]; var e = n.getBoundingClientRect(), s = parseInt(window.getComputedStyle(n).paddingTop), a = (window.innerHeight - (e.height - s) + r.getNavHeight()) / 2; let t = 0; ( t = n.classList.contains("js-nav-center") ? this.winOffsetTop + e.top + s - a : this.winOffsetTop + e.top - r.getNavHeight() ) < 150 && (t = 0), this .el .classList .add("hold"), GALAXY.setSmoothScrollTop(t, 1500, () => { this .el .classList .contains("hold") && this .el .classList .remove("hold"), GALAXY.header && GALAXY .header .resetSubNav() }) } } onScrollHandler() { this.winOffsetTop = window.pageYOffset; var a = (window.innerHeight + r.getNavHeight()) / 2; this .visSections .forEach(t => { var i, e = t.getBoundingClientRect(), s = this.winOffsetTop + e.top, e = this.winOffsetTop + e.bottom; this.winOffsetTop + a >= s && this.winOffsetTop + a <= e && ( i = t.dataset.visIndex, this.navItems.forEach((t, e) => { e != i && t .parentNode .classList .contains(this.classes.isOn) && t .parentNode .classList .remove(this.classes.isOn) }), (s = this.navItems[i].parentNode).classList.contains(this.classes.isOn) || ( s.classList.add(this.classes.isOn), !this.el.classList.contains("hold") && s.classList.contains(this.classes.isOn) && GALAXY.header && GALAXY.header.resetSubNav() ) ) }) } onResizeHandler() { r .winSize() .w !== this.winWidth && ( this.winWidth = r.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150) ) } resizeAnimateFunc() { this.onScrollHandler(), this.resizeRequestFrame = r .requestAFrame .call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, r .cancelAFrame .call(window, this.resizeRequestFrame) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Band = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || ( this.setElements(), this.buildVideoPlayer() ) } setElements() { this.videoElement = this .el .querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && ( this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, {sectionElement: this.opts.el}) ) } }, this .videoPlayer .build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const t = WATCH6.UTILS, e = t.RESPONSIVE; WATCH6.Battery = class { constructor(t = container, e) { var i = { el: t, popupEl: ".wearable-watch-battery-processor__popup", processorLayerEl: ".wearable-watch-battery-processor__popup.processor-popup", batteryLayerEl: ".wearable-watch-battery-processor__popup.battery-popup", videoElement: ".video__container", featureHide: "is-feature-hide", resizeStart: null }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || ( this.setElements(), this.buildVideoPlayer(), this.buildLayer(), this.bindEvents() ) } setElements() { this.processorLayerEl = this .el .querySelector(this.opts.processorLayerEl), this.batteryLayerEl = this .el .querySelector(this.opts.batteryLayerEl), this.videoElement = this .el .querySelectorAll(this.opts.videoElement), this.processorVideoElement = this .processorLayerEl .querySelector(this.opts.videoElement), this.batteryVideoElement = this .batteryLayerEl .querySelector(this.opts.videoElement) } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)) } onResizeHandler() { t .winSize() .w !== this.winWidth && ( this.winWidth = t.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150) ) } resizeAnimateFunc() { this.setLayout(), this.resizeRequestFrame = t .requestAFrame .call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, t .cancelAFrame .call(window, this.resizeRequestFrame) } onResponsiveChange() { "block" === this.processorLayerEl.style.display && this .videoPlayer .change(this.processorVideoElement), "block" === this.batteryLayerEl.style.display && this .videoPlayer .change(this.batteryVideoElement) } setLayout() { this.winWidth >= e.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > e.MOBILE.WIDTH && this.winWidth < e.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } buildVideoPlayer() { this.videoPlayer = { instance: [], load: e => { this.videoPlayer.instance.length && this .videoPlayer .instance .forEach(t => { t.onLoad(e) }) }, reset: e => { this.videoPlayer.instance.length && this .videoPlayer .instance .forEach(t => { t.onReset(e) }) }, play: e => { this.videoPlayer.instance.length && this .videoPlayer .instance .forEach(t => { t.onPlay(e) }) }, change: e => { this.videoPlayer.instance.length && this .videoPlayer .instance .forEach(t => { t.onChange(e) }) }, build: () => { this.videoPlayer.instance.length || this .videoElement .forEach((t, e) => { this .videoPlayer .instance .push(new WATCH6.VideoPlayer(t, { sectionElement: this.opts.el, videoParentElement: this.opts.popupEl })) }) } }, this .videoPlayer .build() } buildLayer() { this.layer = { instance: [], build: () => { this.layer.instance.length || ( this.layer.instance.push(new HiveLayer(this.opts.processorLayerEl, { effect: "default", on: { layerOpenBefore: () => { this.processorVideoElement && this .videoPlayer .load(this.processorVideoElement) }, layerCloseAfter: () => { this .videoPlayer .reset(this.processorVideoElement) } } })), this.layer.instance.push(new HiveLayer(this.opts.batteryLayerEl, { effect: "default", on: { layerOpenBefore: () => { this.batteryVideoElement && this .videoPlayer .load(this.batteryVideoElement) }, layerCloseAfter: () => { this .videoPlayer .reset(this.batteryVideoElement) } } })) ) } }, this .layer .build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const o = WATCH6.UTILS, t = o.RESPONSIVE; WATCH6.Compare = class { constructor(t = container, e) { var i = { el: t, trackElement: ".wearable-watch-compare__track", fixedElement: ".wearable-watch-compare__fixed", compareWrapEl: ".wearable-watch-compare__list-wrap", compareListEl: ".wearable-watch-compare__list", compareItemEl: ".wearable-watch-compare__list-item", compareImgEl: ".wearable-watch-compare__product-img", compareInfo: ".wearable-watch-compare__info", compareInfoItem: ".wearable-watch-compare__info-item", navigationEl: ".wearable-watch-compare__navigation", colorChipEl: ".wearable-watch-compare__color-chip", colorList: ".wearable-watch-compare__color", tabPanel: ".wearable-watch-compare__product", tabPanels: ".wearable-watch-compare__product-item", scrollbarEl: ".swiper-scrollbar", viewMoreCta: ".view-more__cta", featureHide: "is-feature-hide", viewmore: ".viewmore", collapse: ".collapse", matchElements: [ ".wearable-watch-compare__info-item--display", ".wearable-watch-compare__info-item--screen", ".wearable-watch-compare__info-item--charge", ".wearable-watch-compare__info-item--sensor", ".wearable-watch-compare__info-item--material", ".wearable-watch-compare__info-item--battery", ".wearable-watch-compare__info-item--sleep", ".wearable-watch-compare__info-item--composition", ".wearable-watch-compare__info-item--route", ".wearable-watch-compare__info-item--durability", ".wearable-watch-compare__info-item--size", ".wearable-watch-compare__info-item--weight", ".wearable-watch-compare__cta", ".wearable-watch-compare__size", ".wearable-watch-compare__color", ".wearable-watch-common__sub-headline" ], matchCommonOpts: { childElement: ".wearable-watch-compare__list-item", useDestroyHeight: !1, breakpoints: {} }, classes: { isFixed: "is-fixed", isCollapse: "is-collapse", isExpanded: "is-expanded" }, resizeStart: null, on: { updateImageLoader: null } }; this.opts = o.def(i, e || {}), this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || ( this.setElements(), this.initOpts(), this.initLayout(), this.bindEvents(), this.buildHeightMatch(), this.buildSwiper(), this.buildCompareItem(), this.onResizeHandler() ) } initOpts() { this.getCurrentDevice(), this.scroller = null, this.prevDevice = null, this.expanded = !1, this.scrollMoveState = !1, this.firstImageLoad = !1, this.viewMoreCtaTagging = this .viewMoreCta .getAttribute("data-omni"), this.viewMoreTagging = this .viewMoreCta .querySelector(this.opts.viewmore) .getAttribute("data-tagging"), this.collapseTagging = this .viewMoreCta .querySelector(this.opts.collapse) .getAttribute("data-tagging") } initLayout() { this.updateViewMoreHeight() } setElements() { this.trackElement = this .el .querySelector(this.opts.trackElement), this.fixedElement = this .el .querySelector(this.opts.fixedElement), this.compareWrapEl = this .el .querySelector(this.opts.compareWrapEl), this.compareListEl = this .compareWrapEl .querySelector(this.opts.compareListEl), this.contentsEl = this .el .querySelectorAll(this.opts.colorChipEl), this.compareItemEl = this .compareWrapEl .querySelectorAll(this.opts.compareItemEl), this.compareInfo = this .el .querySelectorAll(this.opts.compareInfo), this.viewMoreCta = this .el .querySelector(this.opts.viewMoreCta), this.navigationEl = this .el .querySelector(this.opts.navigationEl), this.scrollbarEl = this .el .querySelector(this.opts.scrollbarEl) } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("resize", this.onResizeHandler.bind(this)), window.addEventListener("scroll", this.onScrollHandler.bind(this)), this .viewMoreCta .addEventListener("click", this.onClickViewMoreCta.bind(this)) } getCurrentDevice() { this.winWidth = o .winSize() .w, this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.prevDevice = this.currentDevice } updateViewMoreHeight() { this.expanded ? ( this.viewMoreCta.classList.add(this.classes.isCollapse), this.el.classList.add(this.classes.isExpanded), this.viewMoreCta.setAttribute("data-omni", this.viewMoreCtaTagging + this.collapseTagging), this.viewMoreCta.setAttribute("ga-la", this.viewMoreCtaTagging + this.collapseTagging), this.heightMatch.reInit() ) : ( this.viewMoreCta.classList.remove(this.classes.isCollapse), this.el.classList.remove(this.classes.isExpanded), this.viewMoreCta.setAttribute("data-omni", this.viewMoreCtaTagging + this.viewMoreTagging), this.viewMoreCta.setAttribute("ga-la", this.viewMoreCtaTagging + this.viewMoreTagging) ) } updateImageLoader(t) { this.outCallback("updateImageLoader", t), this.firstImageLoad = !0 } buildHeightMatch() { this.heightMatch = { instance: [], reInit: () => { this.heightMatch.instance.length && this .heightMatch .instance .forEach(t => { t.reInit() }) }, initLayout: () => { for (let t = 0, e = this.opts.matchElements.length; t < e; t++) { const s = this .opts .matchElements[t]; var i = "js-" + s.split(".")[1]; for (let t = 0, e = this.compareItemEl.length; t < e; t++) { const a = this.compareItemEl[t]; if (null === a.querySelector("." + i)) { const n = document.createElement("div"), r = a.querySelector(s); n.innerHTML = r.innerHTML, n .classList .add(i), r.innerHTML = "", r.appendChild(n) } } } }, build: () => { this .heightMatch .initLayout(); var t = { column: this.compareItemEl.length }; o.def(this.opts.matchCommonOpts, t); for (let t = 0, e = this.opts.matchElements.length; t < e; t++) { const a = this .opts .matchElements[t]; var i = { pushElement: "." + a.split(".")[1], childElement: this.opts.compareItemEl, matchElement: ".js-" + a.split(".")[1] }, s = JSON.parse(JSON.stringify(this.opts.matchCommonOpts)); o.def(s, i), this .heightMatch .instance .push(new WATCH6.HeightMatch(this.opts.compareWrapEl, s)) } } }, this .heightMatch .build() } buildCompareItem() { this.compareItem = { instance: [], build: () => { this.compareItem.instance.length || this .compareItemEl .forEach(t => { this .compareItem .instance .push(new WATCH6.CompareItem(t, { on: { updateImageLoader: t => {} } })) }) } }, this .compareItem .build() } buildSwiper() { this.swiper = { instance: null, options: { freeMode: !0, slidesPerView: "auto", direction: "horizontal", a11y: !1, scrollbar: { el: this.opts.scrollbarEl } }, destroy: () => { null !== this.swiper.instance && ( this.swiper.instance.destroy(), this.swiper.instance = null ) }, updateTranslate: t => { null !== this.swiper.instance && this .swiper .instance .setTranslate(-t) }, updateLayout: () => { null !== this.swiper.instance && ( this.swiperWidth = this.compareWrapEl.getBoundingClientRect().width, this.swiperListWidth = this.swiper.instance.virtualSize ) }, build: () => { this.winWidth < 1024 ? null === this.swiper.instance && ( this.swiper.instance = new Swiper(this.compareWrapEl, this.swiper.options), this.swiper.updateLayout() ) : this .swiper .destroy() } }, this .swiper .build() } onClickViewMoreCta(t) { t.preventDefault(), this.expanded = !this.expanded, this.updateViewMoreHeight() } onLoadHandler() { this .heightMatch .reInit(), this.onResponsiveChange(), this.onScrollHandler(), window.removeEventListener("load", this.onLoadHandler.bind(this)) } onScrollHandler() { this.scrollY = window.scrollY; this.scrollY, this.lastScrollY; var t = window.innerHeight, e = o .getScroll() .top - t, i = o .getScroll() .bottom, s = o.getOffset(this.el), a = this.swiperWidth, n = (o.getHeight(this.compareWrapEl), o.getOffset(this.compareWrapEl)), r = this.swiperListWidth; Math.ceil(r - a), o .getOffset(this.trackElement) .top, Math.abs(this.trackElement.clientHeight); o.getNavHeight(); if (i > s.top && e <= s.top || e < s.bottom && i > s.bottom || e < s.top && i > s.bottom || e > s.top && i < s.bottom) { if (this.firstImageLoad) return; r = this .el .querySelectorAll(".js-start-img-src"); this.updateImageLoader(r) } o .getScroll() .top + o .getNavHeight() >= n .top && i <= n.bottom ? this .el .classList .contains(this.classes.isFixed) || this .el .classList .add(this.classes.isFixed) : this .el .classList .contains(this.classes.isFixed) && this .el .classList .remove(this.classes.isFixed), this.lastScrollY = scrollY } onResizeHandler() { o .winSize() .w !== this.winWidth && ( this.winWidth = o.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150) ) } resizeAnimateFunc() { this.setLayout(), this.updateViewMoreHeight(), this .swiper .build(), this.resizeRequestFrame = o .requestAFrame .call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, this.updateViewMoreHeight(), this .swiper .build(), o .cancelAFrame .call(window, this.resizeRequestFrame) } setLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } onResponsiveChange() {} outCallback(t, e) { t = this .opts .on[t]; null != t && t(e) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.CompareItem = class { constructor(t = container, e) { var i = { el: t, productEl: ".wearable-watch-compare__product", productItem: ".wearable-watch-compare__product-item", productImage: ".wearable-watch-compare__product-image", sizeEl: ".wearable-watch-compare__size", sizeCta: ".wearable-watch-compare__size-cta", colorEl: ".wearable-watch-compare__color", colorItem: ".wearable-watch-compare__color-item", colorChip: ".wearable-watch-compare__color-chip", buyNowCta: ".buy__cta", learnMoreCta: ".learn-more__cta", classes: { isActive: "is-active" }, resizeStart: null }; this.opts = i, this.classes = i.classes, this.el = t, this.init() } init() { null !== this.el && ( this.setElements(), this.initOpts(), this.initLayout(), this.bindEvnts() ) } initOpts() { this.currentProduct = this.el.dataset.modelName, this.currentSize = this.el.dataset.defaultSize, this.currentColor = {}, this .colorItem .forEach(t => { let e = t.querySelector("." + this.classes.isActive); e || (e = t.querySelectorAll(this.opts.colorChip)[0]) .classList .add(this.classes.isActive), this.currentColor[e.dataset.size] = e.dataset.color }), this .colorChip .forEach(t => { t.removeAttribute("aria-selected"), t.removeAttribute("aria-hidden") }), this.DATA = LOCAL_DATA[this.currentProduct] } initLayout() { this.updateSizeLayout(), this.updateColorItemlayout(), this.updateColorChip(), this.updateProductItemLayout(), this.updateProductImage(), this.updateLink() } setElements() { this.productEl = this .el .querySelector(this.opts.productEl), this.productItem = this .productEl .querySelectorAll(this.opts.productItem), this.sizeEl = this .el .querySelector(this.opts.sizeEl), this.sizeCta = this .sizeEl .querySelectorAll(this.opts.sizeCta), this.colorEl = this .el .querySelector(this.opts.colorEl), this.colorItem = this .colorEl .querySelectorAll(this.opts.colorItem), this.colorChip = this .colorEl .querySelectorAll(this.opts.colorChip), this.buyNowCta = this .el .querySelector(this.opts.buyNowCta), this.learnMoreCta = this .el .querySelector(this.opts.learnMoreCta) } bindEvnts() { this .sizeCta .forEach(t => { t.addEventListener("click", this.handlerClickSizeCta.bind(this)) }), this .colorChip .forEach(t => { t.addEventListener("click", this.handlerClickColorChip.bind(this)) }) } handlerClickColorChip(t) { t = t.currentTarget; this.currentColor[this.currentSize] = t.dataset.color, this.updateColorChip(), this.updateProductImage(), this.updateLink() } handlerClickSizeCta(t) { t = t.currentTarget; this.currentSize = t.dataset.size, this.updateSizeLayout(), this.updateColorItemlayout(), this.updateProductItemLayout(), this.updateProductImage(), this.updateLink() } updateLink() { var t = this.currentSize, e = this.currentColor[t]; const i = this.DATA[t][e]; this.learnMoreCta && ( i.hasOwnProperty("learnmore") ? ( this.learnMoreCta.parentElement.style.display = "block", this.learnMoreCta.setAttribute("href", i.learnmore) ) : this.learnMoreCta.parentElement.style.display = "none" ), this.buyNowCta && ( i.hasOwnProperty("buynow") ? ( this.buyNowCta.parentElement.style.display = "block", this.buyNowCta.setAttribute("href", i.buynow) ) : this.buyNowCta.parentElement.style.display = "none" ) } updateSizeLayout() { this .sizeCta .forEach(t => { this.currentSize === t.dataset.size ? (t.classList.add(this.classes.isActive), t.setAttribute("title", "selected")) : (t.classList.remove(this.classes.isActive), t.removeAttribute("title")) }) } updateColorItemlayout() { this.currentColorItem = Array .from(this.colorItem) .filter(t => { if (this.currentSize === t.dataset.size) return t .classList .add(this.classes.isActive), t; t .classList .remove(this.classes.isActive) })[0] } updateColorChip() { const t = this .currentColorItem .querySelectorAll(this.opts.colorChip); t.forEach(t => { this.currentColor[this.currentSize] === t.dataset.color ? (t.classList.add(this.classes.isActive), t.setAttribute("title", "selected")) : (t.classList.remove(this.classes.isActive), t.removeAttribute("title")) }) } updateProductItemLayout() { this.currentProductItem = Array .from(this.productItem) .filter(t => { if (this.currentSize === t.dataset.size) return t .classList .add(this.classes.isActive), t; t .classList .remove(this.classes.isActive) })[0] } updateProductImage() { const t = this .currentProductItem .querySelectorAll(this.opts.productImage); t.forEach(t => { this.currentColor[this.currentSize] === t.dataset.color ? ( t.classList.add(this.classes.isActive), t.removeAttribute("tabindex"), t.setAttribute("aria-hidden", !1) ) : ( t.classList.remove(this.classes.isActive), t.setAttribute("tabindex", -1), t.setAttribute("aria-hidden", !0) ) }) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const e = WATCH6.UTILS; e.RESPONSIVE; WATCH6.Contrast = class { constructor(t = container, e) { var i = { el: t, defaultBtn: ".type-default", contrastBtn: ".type-contrast", cookieName: "highContrastMode", featureHide: "is-feature-hide" }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || (this.setElements(), this.bindEvents()) } setElements() { this.defaultBtn = this .el .querySelector(this.opts.defaultBtn), this.defaultBtnTitle = this .defaultBtn .getAttribute("title") .trim(), this.contrastBtn = this .el .querySelector(this.opts.contrastBtn), this.contrastBtnTitle = this .contrastBtn .getAttribute("title") .trim(), this.cookieName = this.opts.cookieName } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), this.defaultBtn && this .defaultBtn .addEventListener("click", this.onClickDefaultBtn.bind(this)), this.contrastBtn && this .contrastBtn .addEventListener("click", this.onClickContrastBtn.bind(this)) } onLoadHandler() { this.activeContrast() } onClickDefaultBtn(t) { t.preventDefault(), e.setCookie(this.cookieName, "0", 1), this.activeContrast() } onClickContrastBtn(t) { t.preventDefault(), e.setCookie(this.cookieName, "1", 1), this.activeContrast() } activeContrast() { var t = e.getCookie(this.cookieName); null != t && t.length && "1" == t ? ( document.documentElement.classList.add("color_yb"), this.contrastBtn.setAttribute("title", this.contrastBtnTitle + " selected"), this.defaultBtn.setAttribute("title", this.defaultBtnTitle) ) : ( document.documentElement.classList.remove("color_yb"), this.contrastBtn.setAttribute("title", this.contrastBtnTitle), this.defaultBtn.setAttribute("title", this.defaultBtnTitle + " selected") ) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Glass = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || ( this.setElements(), this.buildVideoPlayer() ) } setElements() { this.videoElement = this .el .querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && ( this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el, videoParentElement: this.opts.el }) ) } }, this .videoPlayer .build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.KeyVisual = class { constructor(t = container, e) { var i = { el: t, classes: { isUseBuy: "is-use-buy", isUseRegist: "is-use-regist", isUseOrder: "is-use-order", isUseWhere: "is-use-where", isUseOff: "is-use-off" }, featureHide: "is-feature-hide" }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || this.initLayout() } initLayout() { this .el .classList .remove(this.classes.isUseBuy), this .el .classList .remove(this.classes.isUseRegist), this .el .classList .remove(this.classes.isUseOrder), this .el .classList .remove(this.classes.isUseWhere), this .el .classList .remove(this.classes.isUseOff), "undefined" == typeof __WATCH_USE_KV_CTA || null == __WATCH_USE_KV_CTA || null == __WATCH_USE_KV_CTA || "" == __WATCH_USE_KV_CTA || "buy-now" == __WATCH_USE_KV_CTA ? this .el .classList .add(this.classes.isUseBuy) : "pre-order" == __WATCH_USE_KV_CTA ? this .el .classList .add(this.classes.isUseOrder) : "pre-registration" == __WATCH_USE_KV_CTA ? this .el .classList .add(this.classes.isUseRegist) : "where-to-buy" == __WATCH_USE_KV_CTA ? this .el .classList .add(this.classes.isUseWhere) : "where-to-buy" == __WATCH_USE_KV_CTA && this .el .classList .add(this.classes.isUseOff) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Monitoring = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || ( this.setElements(), this.buildVideoPlayer() ) } setElements() { this.videoElement = this .el .querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && ( this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, {sectionElement: this.opts.el}) ) } }, this .videoPlayer .build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const a = WATCH6.UTILS, t = a.RESPONSIVE; WATCH6.Overview = class { constructor(t = container, e) { var i = { el: t, rootEl: ".wearable-watch", layerEl: ".wearable-watch-overview__popup", featureList: ".wearable-watch-overview__list", featureItem: ".wearable-watch-overview__list-item", featureCta: ".wearable-watch-overview__list-cta", featureBtn: ".wearable-watch-overview__list-btn", featureContent: ".wearable-watch-overview__popup-content", featurePlayer: ".wearable-watch-overview__player", storyEl: ".wearable-watch-overview__story", storySlide: ".wearable-watch-overview__story-item", indicatorList: ".wearable-watch-overview__indicator-list", indicatorItem: ".wearable-watch-overview__indicator-item", indicatorText: ".indicator__text", controlHiddenEl: ".blind", navigationPrev: ".navigation__cta-prev", navigationNext: ".navigation__cta-next", storyItemController: ".story-item__btn", storyItem: ".story-item__image", storyItemCta: ".story-item__cta", closeBtn: ".cm-layer__btn-close", videoElement: ".video__container", startImage: ".video__start-frame", endImage: ".video__end-frame", featureHide: "is-feature-hide", initSlide: 0, infiniteRolling: !0, transitionDuration: 400, widthResizeStart: null, heightResizeStart: null, classes: { loaded: "loaded", ended: "ended", paused: "paused", playing: "playing", isHover: "is-hover", isActive: "is-active", isPaused: "is-paused", isHeight: "is-height" }, thumbnailTagging: { "sleep-tracking": { play: "gwatch6:highlights:overview:movi-play:sleep-tracking-video", pause: "gwatch6:highlights:overview:movi-pause:sleep-tracking-video" }, health: { play: "gwatch6:highlights:overview:movi-play:health-video", pause: "gwatch6:highlights:overview:movi-pause:health-video" }, display: { play: "gwatch6:highlights:overview:movi-play:display-video", pause: "gwatch6:highlights:overview:movi-pause:display-video" } }, popupTagging: { "sleep-tracking": { play: "gwatch6:highlights:overview^lypu:movi-play:sleep-tracking-video", pause: "gwatch6:highlights:overview^lypu:movi-pause:sleep-tracking-video" }, health: { play: "gwatch6:highlights:overview^lypu:movi-play:health-video", pause: "gwatch6:highlights:overview^lypu:movi-pause:health-video" }, display: { play: "gwatch6:highlights:overview^lypu:movi-play:display-video", pause: "gwatch6:highlights:overview^lypu:movi-pause:display-video" } } }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || ( this.setElements(), this.initOpts(), this.initLayout(), this.buildSwiper(), this.buildLayer(), this.buildVideoPlayer(), this.bindEvents() ) } initOpts() { this.winWidth = a .winSize() .w, this.winHeight = a .winSize() .h, this.currentDevice = !1, this.prevDevice = null, this.initValues() } initValues() { this.selectedIndex = -1 } initLayout() { this .storySlide .forEach((t, e) => { t.setAttribute("aria-hidden", "true"), t.setAttribute("tabindex", "-1"), t .querySelector(this.opts.storyItemCta) .setAttribute("aria-hidden", "true"), t .querySelector(this.opts.storyItemCta) .setAttribute("tabindex", "-1"), t.querySelector(this.opts.storyItemController) && ( t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "true"), t.querySelector(this.opts.storyItemController).setAttribute("tabindex", "-1") ), this.opts.initSlide === e && ( t.setAttribute("aria-hidden", "false"), t.removeAttribute("tabindex"), t.querySelector(this.opts.storyItemCta).setAttribute("aria-hidden", "false"), t.querySelector(this.opts.storyItemCta).removeAttribute("tabindex"), t.querySelector(this.opts.storyItemController) && ( t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "false"), t.querySelector(this.opts.storyItemController).removeAttribute("tabindex") ) ) }), this .indicatorItem .forEach(t => { "tablist" === this .indicatorList .getAttribute("role") && t.setAttribute("aria-selected", "false") }), this.opts.infiniteRolling || ( 0 === this.opts.initSlide && (this.navigationPrev.style.display = "none"), this.opts.initSlide === this.storySlide.length - 1 && (this.navigationNext.style.display = "none") ) } setElements() { this.rootEl = document.querySelector(this.opts.rootEl), this.layerEl = this .el .querySelector(this.opts.layerEl), this.videoElement = this .el .querySelectorAll(this.opts.videoElement), this.featureList = this .el .querySelector(this.opts.featureList), this.featureContent = this .el .querySelector(this.opts.featureContent), this.featureCta = this .featureList .querySelectorAll(this.opts.featureCta), this.featureBtn = this .featureList .querySelectorAll(this.opts.featureBtn), this.featurePlayer = this .featureList .querySelectorAll(this.opts.videoElement), this.storyEl = this .el .querySelector(this.opts.storyEl), this.storyItem = this .el .querySelectorAll(this.opts.storyItem), this.storySlide = this .el .querySelectorAll(this.opts.storySlide), this.storyPlayer = this .storyEl .querySelectorAll(this.opts.videoElement), this.indicatorList = this .el .querySelector(this.opts.indicatorList), this.indicatorItem = this .indicatorList .querySelectorAll(this.opts.indicatorItem), this.navigationPrev = this .el .querySelector(this.opts.navigationPrev), this.navigationNext = this .el .querySelector(this.opts.navigationNext), this.closeBtn = this .el .querySelector(this.opts.closeBtn), this.storyItemController = this .storyEl .querySelectorAll(this.opts.storyItemController) } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)), this .featureCta .forEach((t, e) => { t.addEventListener("click", this.handleLayerOpen.bind(this, e)) }), this .indicatorItem .forEach((t, e) => { t.addEventListener("click", this.select.bind(this, e)) }), this .navigationPrev .addEventListener("click", this.handleNavigationPrev.bind(this)), this .navigationNext .addEventListener("click", this.handleNavigationNext.bind(this)), this .storySlide .forEach((t, e) => { -1 < t .querySelector(this.opts.storyItemCta) .getAttribute("href") .indexOf("#") && t .querySelector(this.opts.storyItemCta) .addEventListener("click", this.onStoryItemCtaClickEvent.bind(this)) }) } unBindEvents() { this .indicatorItem .forEach((t, e) => { t.removeAllEventListeners("click") }), this .featureBtn .forEach(t => { t.removeAllEventListeners("click") }), this .storyItemController .forEach(t => { t.removeAllEventListeners("click") }) } onStoryItemCtaClickEvent(t) { t.preventDefault(); const e = t.target; t = e.getAttribute("href"); const i = this .rootEl .querySelector(t); t = i.dataset.rectTop || a .getOffset(i) .top - a.getNavHeight(); $(this.layerEl).trigger("closeLayer", !1), $("html, body").animate({ scrollTop: t }, {duration: 1e3}); const s = i.querySelector(".wearable-watch-common__headline") ? i.querySelector(".wearable-watch-common__headline") : i.querySelector(".wearable-watch-common__sub-headline"); s && ( s.setAttribute("tabindex", "0"), s.focus(), s.addEventListener("focusout", () => { s.removeAttribute("tabindex") }) ) } handleNavigationPrev() { let t = this.storySwiper.instance.realIndex - 1; t < 0 && (t = this.storySlide.length - 1), this .storySwiper .instance .slideToLoop(t) } handleNavigationNext() { let t = this.storySwiper.instance.realIndex + 1; t >= this.storySlide.length && (t = 0), this .storySwiper .instance .slideToLoop(t) } handleLayerOpen(t, e) { e.preventDefault(), this.opts.initSlide = t } updateControlText(t, e) { const i = t.querySelector(this.opts.controlHiddenEl); t = e ? this.globalText.play : this.globalText.stop; i.innerHTML = t } select(t, e = !1, i) { var s = this.selectedIndex; s === t && !e || ( this.animReqId && (a.cancelAFrame.call(window, this.animReqId), this.animReqId = null), -1 < s && ( this.indicatorItem[s].classList.contains(this.classes.isActive) && ( this.indicatorItem[s].classList.remove(this.classes.isActive), this.indicatorItem[s].removeAttribute("title") ), "tablist" === this.role ? this.indicatorItem[s].setAttribute("aria-selected", "false") : this.indicatorItem[s].removeAttribute("title") ), t < 0 ? this.selectedIndex = t : ( this.selectedIndex = t, this.indicatorItem[this.selectedIndex].classList.contains(this.classes.isActive) || this.indicatorItem[this.selectedIndex].classList.add(this.classes.isActive), "tablist" === this.indicatorList.getAttribute("role") ? this.indicatorItem[this.selectedIndex].setAttribute("aria-selected", "true") : this.indicatorItem[this.selectedIndex].setAttribute("title", "selected"), this.storySwiper.instance.slideToLoop(this.selectedIndex) ) ) } updateImageLayout() { this.featureContent.clientWidth / this.featureContent.clientHeight <= .56 ? this .layerEl .classList .add(this.classes.isHeight) : this .layerEl .classList .remove(this.classes.isHeight) } onResizeHandler() { a .winSize() .w === this.winWidth && a .winSize() .h === this.winHeight || ( this.winWidth = a.winSize().w, this.winHeight = a.winSize().h, null != this.opts.widthResizeStart && null != this.opts.heightResizeStart || ( this.opts.widthResizeStart = this.winWidth, this.opts.heightResizeStart = this.winHeight, this.resizeAnimateFunc() ) ), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150) } resizeAnimateFunc() { this.setWidthLayout(), this.setHeightLayout(), this.resizeRequestFrame = a .requestAFrame .call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.widthResizeStart = null, this.opts.heightResizeStart = null, a .cancelAFrame .call(window, this.resizeRequestFrame) } onResponsiveChange() { this.select(this.selectedIndex, !0), this .featurePlayer .forEach(t => { this .videoPlayer .change(t) }), "block" === this.layerEl.style.display && this .storyPlayer .forEach(t => { this .videoPlayer .change(t) }) } setWidthLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.updateImageLayout(), this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } setHeightLayout() { this.updateImageLayout() } buildVideoPlayer() { this.videoPlayer = { instance: [], load: e => { this.videoPlayer.instance.length && this .videoPlayer .instance .forEach(t => { t.onLoad(e) }) }, reset: e => { this.videoPlayer.instance.length && this .videoPlayer .instance .forEach(t => { t.onReset(e) }) }, play: e => { this.videoPlayer.instance.length && this .videoPlayer .instance .forEach(t => { t.onPlay(e) }) }, change: e => { this.videoPlayer.instance.length && this .videoPlayer .instance .forEach(t => { t.onChange(e) }) }, build: () => { this.videoPlayer.instance.length || this .videoElement .forEach((t, e) => { var i = t.closest(this.opts.featureItem) ? this.opts.featureItem : null; this .videoPlayer .instance .push(new WATCH6.VideoPlayer(t, { sectionElement: this.opts.el, videoParentElement: i, on: { updateController: t => { const e = t.el; var i = e.dataset.tagging, t = t.playState ? "pause" : "play", s = e .classList .contains(this.opts.featureBtn.split(".")[1]) ? this.opts.thumbnailTagging : e .classList .contains(this.opts.storyItemController.split(".")[1]) ? this.opts.popupTagging : ""; e.setAttribute("data-omni", s[i][t]), e.setAttribute("ga-la", s[i][t]) } } })) }) } }, this .videoPlayer .build() } buildSwiper() { this.storySwiper = { instance: null, options: { a11y: !1, loop: this.opts.infiniteRolling, speed: this.opts.transitionDuration, effect: "fade", touchMoveStopPropagation: !0, fadeEffect: { crossFade: !0 }, initialSlide: this.opts.initSlide }, slideChange: () => { const i = this.storySwiper.instance.realIndex, t = this.storySlide[i], e = t.querySelector(this.opts.videoElement); this.select(i), e && ( e.classList.contains(this.classes.loaded) ? a.isLowNetwork() || this.videoPlayer.play(e) : this.videoPlayer.load(e) ), this .storySlide .forEach((t, e) => { e !== i && (e = t.querySelector(this.opts.videoElement)) && this .videoPlayer .reset(e) }) }, slideChangeTransitionStart: () => { if (null !== this.storySwiper.instance) { const e = Array.from(this.storySwiper.instance.slides); var t = this.storySwiper.instance.realIndex; this.storySlide[t]; e.forEach((t, e) => { t.setAttribute("aria-hidden", "true"), t.setAttribute("tabindex", "-1"), t .querySelector(this.opts.storyItemCta) .setAttribute("aria-hidden", "true"), t .querySelector(this.opts.storyItemCta) .setAttribute("tabindex", "-1"), t.querySelector(this.opts.storyItemController) && ( t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "true"), t.querySelector(this.opts.storyItemController).setAttribute("tabindex", "-1") ), t .classList .contains("swiper-slide-active") && ( t.setAttribute("aria-hidden", "false"), t.removeAttribute("tabindex"), t.querySelector(this.opts.storyItemCta).setAttribute("aria-hidden", "false"), t.querySelector(this.opts.storyItemCta).removeAttribute("tabindex"), t.querySelector(this.opts.storyItemController) && ( t.querySelector(this.opts.storyItemController).setAttribute("aria-hidden", "false"), t.querySelector(this.opts.storyItemController).removeAttribute("tabindex") ) ) }) } }, destroy: () => { null !== this.storySwiper.instance && ( this.storySwiper.instance.destroy(), this.storySwiper.instance = null ) }, build: () => { null === this.storySwiper.instance && ( this.storySwiper.options.on = { slideChange: this .storySwiper .slideChange .bind(this), slideChangeTransitionStart: this .storySwiper .slideChangeTransitionStart .bind(this) }, this.storySwiper.options.initialSlide = this.opts.initSlide, this.storySwiper.instance = new Swiper(this.opts.storyEl, this.storySwiper.options), this.storySwiper.slideChangeTransitionStart() ) } } } buildLayer() { this.layer = { instance: null, build: () => { null === this.layer.instance && ( this.layer.instance = new HiveLayer(this.opts.layerEl, { effect: "default", on: { layerOpenBefore: () => { this.updateImageLayout(); const t = this.storySlide[this.opts.initSlide]; var e = t.querySelector(this.opts.videoElement); this .storySwiper .build(), this.select(this.opts.initSlide), e && this .videoPlayer .load(e), this .featurePlayer .forEach(t => { this .videoPlayer .reset(t) }) }, layerOpenAfter: () => { const t = this.storySlide[this.opts.initSlide]; var e = t.querySelector(this.opts.storyItemController), i = t.querySelector(this.opts.storyItemCta); const s = e || i; window.setTimeout(() => { s.focus() }, 50) }, layerCloseBefore: () => { this .featureBtn .forEach(t => { t .classList .contains(this.classes.isPaused) && t .classList .remove(this.classes.isPaused) }) }, layerCloseAfter: () => { this .storySwiper .destroy(), this.initValues(), this .indicatorItem .forEach(t => { t .classList .remove(this.classes.isActive), t.removeAttribute("title") }), this .storySlide .forEach(t => { t = t.querySelector(this.opts.videoElement); this .videoPlayer .reset(t) }) } } }) ) } }, this .layer .build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Progress = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || ( this.setElements(), this.buildVideoPlayer() ) } setElements() { this.videoElement = this .el .querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && ( this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el, visiblePoint: .5, videoParentElement: this.opts.el }) ) } }, this .videoPlayer .build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const a = WATCH6.UTILS, t = a.RESPONSIVE; WATCH6.Screen = class { constructor(t = container, e) { var i = { el: t, trackElement: ".wearable-watch-screen__track", fixedElement: ".wearable-watch-screen__fixed", textElement: ".wearable-watch-screen__text", videoElement: ".video__container", videoController: ".video__controller", featureHide: "is-feature-hide", classes: { scene01: "scene01", scene02: "scene02", brokenFixedAnimation: "broken-fixed-animation" }, widthResizeStart: null, heightResizeStart: null }; this.opts = i, this.classes = i.classes, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || ( this.setElements(), this.initOpts(), this.bindEvents(), this.buildVideoPlayer(), this.onLoadHandler() ) } setElements() { this.trackElement = this .el .querySelector(this.opts.trackElement), this.fixedElement = this .el .querySelector(this.opts.fixedElement), this.textElement = this .el .querySelector(this.opts.textElement), this.videoElement = this .el .querySelector(this.opts.videoElement), this.videoController = this .el .querySelector(this.opts.videoController), this.video = this .videoElement .querySelector("video"), this .video .querySelectorAll("source") .forEach(t => { document .documentElement .classList .contains("safari") && -1 < t .getAttribute("type") .indexOf("webm") && t.remove() }) } initOpts() { this.getCurrentDevice(), this.winWidth = a .winSize() .w, this.winHeight = a .winSize() .h, this.currentAnimation = null, this.prevAnimation = null, this.scroller = null, this.brokenScroller = null, this.lastScrollY = 0, this.animationPlay = !1 } initStyle() { ANIUTIL.removeClass({ targetElement: this.el, classList: [this.classes.brokenFixedAnimation, this.classes.scene01, this.classes.scene02] }) } bindEvents() { window.addEventListener("load", this.onLoadHandler.bind(this)), window.addEventListener("resize", this.onResizeHandler.bind(this)), window.addEventListener("scroll", this.onScrollHandler.bind(this)), window.addEventListener( "orientationchange", this.onOrientationChange.bind(this) ) } getCurrentDevice() { this.winWidth = a .winSize() .w, this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile" } buildVideoPlayer() { this.videoPlayer = { instance: null, play: () => { null !== this.videoPlayer.instance && this .videoPlayer .instance .onPlay(this.videoElement) }, build: () => { null === this.videoPlayer.instance && ( this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el, videoParentElement: this.opts.el, on: { updatePlayState: t => { this.videoController || a.isFullAnimationBrokenFixed() || t && this .el .classList .add(this.classes.scene02) }, updateController: t => { !this.videoController || t.playState && !a.isFullAnimationBrokenFixed() && ( a.isLowNetwork() ? ( this.el.classList.contains(this.classes.scene02) && this.el.classList.remove(this.classes.scene02), window.setTimeout(() => { this .el .classList .add(this.classes.scene02) }, 10) ) : this.el.classList.add(this.classes.scene02) ) } } }) ) } }, this .videoPlayer .build() } onLoadHandler() { this.setWidthLayout(), this.setHeightLayout(), this.onScrollHandler(), window.removeEventListener("load", this.onLoadHandler.bind(this)) } onScrollHandler() { const t = this; var e = window.scrollY; this.lastScrollY, a .getScroll() .bottom, a .getOffset(this.el) .top; null !== this.scroller && this .scroller .trackAnimation(function () { this.progress <= 0 && t .el .classList .remove(t.classes.scene02), !t.videoController && a.isLowNetwork() && 40 < this.progress && t .videoPlayer .play() }), null !== this.brokenScroller && this .brokenScroller .activeAnimation(), this.lastScrollY = e } onResizeHandler() { a .winSize() .w === this.winWidth && a .winSize() .h === this.winHeight || ( this.winWidth = a.winSize().w, this.winHeight = a.winSize().h, null != this.opts.widthResizeStart && null != this.opts.heightResizeStart || ( this.opts.widthResizeStart = this.winWidth, this.opts.heightResizeStart = this.winHeight, this.resizeAnimateFunc() ) ), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150) } resizeAnimateFunc() { this.setWidthLayout(), this.setHeightLayout(), this.resizeRequestFrame = a .requestAFrame .call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.widthResizeStart = null, this.opts.heightResizeStart = null, a .cancelAFrame .call(window, this.resizeRequestFrame) } onResponsiveChange() { this.destroyScroller(), this.destroyBrokenScroller(), this.initStyle(), a.isFullAnimationBrokenFixed() ? this.setBrokenScroller() : this.setScroller() } onOrientationChange() { setTimeout(() => { this.destroyScroller(), this.destroyBrokenScroller(), this.initStyle(), a.isFullAnimationBrokenFixed() ? this.setBrokenScroller() : this.setScroller() }, 150) } setWidthLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } setHeightLayout() { var t = window.innerWidth, e = window.innerHeight, i = !!a.isTouchDevice && window .matchMedia("(orientation: landscape)") .matches, s = !!a.isTouchDevice && !window .matchMedia("(orientation: landscape)") .matches; this.currentAnimation = s && e / t < 1.5 || i || e < 700 ? "broken" : "use", this.currentAnimation === this.prevAnimation || a.isTouchDevice || this.onResponsiveChange(), this.prevAnimation = this.currentAnimation } setScroller() { this.destroyScroller(), null === this.scroller && (this.scroller = SCROLLER({ trackElement: this.trackElement, useFixed: !1 })) } setBrokenScroller() { null === this.brokenScroller && ( this.brokenScroller = SCROLLER({trackElement: this.trackElement, activeElement: this.el, activeClass: this.classes.brokenFixedAnimation}) ) } destroyScroller() { null !== this.scroller && (this.scroller.destroy(!0), this.scroller = null) } destroyBrokenScroller() { null != this.brokenScroller && ( this.brokenScroller.destroy(!0), this.brokenScroller = null ) } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Snap = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || ( this.setElements(), this.buildVideoPlayer() ) } setElements() { this.videoElement = this .el .querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && ( this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, {sectionElement: this.opts.el}) ) } }, this .videoPlayer .build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Standalone = class { constructor(t = container, e) { this.opts = { el: t, tabEl: ".wearable-watch-standalone__tab", tabList: ".wearable-watch-standalone__tab-list", tabButtons: ".wearable-watch-standalone__tab-cta", tabPanel: ".wearable-watch-standalone__tab-panels", tabPanels: ".wearable-watch-standalone__tab-panel", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || (this.setElements(), this.buildTab()) } setElements() { this.tabEl = this .el .querySelector(this.opts.tabEl) } buildTab() { this.tab = { instance: null, build: () => { null === this.tab.instance && (this.tab.instance = new WATCH6.Tab(this.tabEl, { tabEl: this.opts.tabEl, tabList: this.opts.tabList, tabButtons: this.opts.tabButtons, tabPanel: this.opts.tabPanel, tabPanels: this.opts.tabPanels })) } }, this .tab .build() } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; const a = WATCH6.UTILS, t = a.RESPONSIVE; WATCH6.Tab = class { constructor(t = container, e) { var i = { el: t, tabEl: ".wearable-watch__tab", tabList: ".wearable-watch__tab-list", tabButtons: ".wearable-watch__tab-cta", tabPanel: ".wearable-watch__tab-panels", tabPanels: ".wearable-watch__tab-panel", classes: { isActive: "is-active" }, resizeStart: null }; this.opts = a.def(i, e || {}), this.classes = i.classes, this.el = t, this.init() } init() { null !== this.el && (this.setElements(), this.initOpts(), this.bindEvents()) } setElements() { this.tabEl = this.el, this.tabList = this .tabEl .querySelector(this.opts.tabList), this.tabButtons = a.convertArray( this.tabList.querySelectorAll(this.opts.tabButtons) ), this.tabPanel = this .el .querySelector(this.opts.tabPanel), this.tabPanels = a.convertArray( this.tabPanel.querySelectorAll(this.opts.tabPanels) ) } initOpts() { this.currentIndex = 0, this.currentDevice = !1, this.prevDevice = null } initLayout() { this .tabButtons .forEach(function (t, e) { const i = this.tabPanels[e]; this.currentIndex == e ? ( t.classList.contains(this.classes.isActive) || t.classList.add(this.classes.isActive), i.classList.contains(this.classes.isActive) || i.classList.add(this.classes.isActive), t.setAttribute("aria-selected", !0), a.offAccessibility(i) ) : ( t.classList.contains(this.classes.isActive) && t.classList.remove(this.classes.isActive), i.classList.contains(this.classes.isActive) && i.classList.remove(this.classes.isActive), t.setAttribute("aria-selected", !1), a.onAccessibility(i) ) }) } bindEvents() { window.addEventListener("resize", this.onResizeHandler.bind(this)), this .tabButtons .forEach(t => { t.addEventListener("click", this.onClickTabButton.bind(this)) }) } unBindEvents() {} onClickTabButton(t) { t = t.currentTarget; const s = this .tabButtons .indexOf(t); s != this.currentIndex && (this.tabButtons.forEach((t, e) => { const i = this.tabPanels[e]; s == e ? ( t.classList.contains(this.classes.isActive) || t.classList.add(this.classes.isActive), i.classList.contains(this.classes.isActive) || i.classList.add(this.classes.isActive), t.setAttribute("aria-selected", !0), a.offAccessibility(i) ) : ( t.classList.contains(this.classes.isActive) && t.classList.remove(this.classes.isActive), i.classList.contains(this.classes.isActive) && i.classList.remove(this.classes.isActive), t.setAttribute("aria-selected", !1), a.onAccessibility(i) ) }), this.currentIndex = s) } onResizeHandler() { a .winSize() .w !== this.winWidth && ( this.winWidth = a.winSize().w, null == this.opts.resizeStart && (this.opts.resizeStart = this.winWidth, this.resizeAnimateFunc()), window.clearTimeout(this.resizeEndTime), this.resizeEndTime = window.setTimeout(this.resizeEndFunc.bind(this), 150) ) } resizeAnimateFunc() { this.setLayout(), this.resizeRequestFrame = a .requestAFrame .call(window, this.resizeAnimateFunc.bind(this)) } resizeEndFunc() { this.opts.resizeStart = null, a .cancelAFrame .call(window, this.resizeRequestFrame) } onResponsiveChange() {} setLayout() { this.winWidth >= t.TABLET.WIDTH ? this.currentDevice = "desktop" : this.winWidth > t.MOBILE.WIDTH && this.winWidth < t.TABLET.WIDTH ? this.currentDevice = "tablet" : this.currentDevice = "mobile", this.currentDevice !== this.prevDevice && this.onResponsiveChange(), this.prevDevice = this.currentDevice } } }(), function () { "use strict"; window.WATCH6 = window.WATCH6 || {}; WATCH6.UTILS.RESPONSIVE; WATCH6.Train = class { constructor(t = container, e) { this.opts = { el: t, videoElement: ".video__container", featureHide: "is-feature-hide" }, this.el = document.querySelector(t), this.init() } init() { null === this.el || this .el .classList .contains(this.opts.featureHide) || ( this.setElements(), this.buildVideoPlayer() ) } setElements() { this.videoElement = this .el .querySelector(this.opts.videoElement) } buildVideoPlayer() { this.videoPlayer = { instance: null, build: () => { null === this.videoPlayer.instance && ( this.videoPlayer.instance = new WATCH6.VideoPlayer(this.videoElement, { sectionElement: this.opts.el, videoParentElement: this.opts.el }) ) } }, this .videoPlayer .build() } } }(), function () { "use strict"; WATCH6.UTILS.RESPONSIVE; new class { constructor(t = container) { this.opts = { el: t, wrapEl: "#wrap", keyVisualEl: ".wearable-watch-kv", overviewEl: ".wearable-watch-overview", screenEl: ".wearable-watch-screen", bandEl: ".wearable-watch-band", glassEl: ".wearable-watch-glass", trainEl: ".wearable-watch-train", snapEl: ".wearable-watch-snap-remote", standaloneEl: ".wearable-watch-standalone", monitoringEl: ".wearable-watch-monitoring", batteryEl: ".wearable-watch-battery-processor", progressEl: ".wearable-watch-progress", compareEl: ".wearable-watch-compare", contrastEl: ".cp-high-contrast", subNavEl: "#subnav" }, this.el = document.querySelector(t), this.init() } init() { null !== this.el && (this.buildComponents(), initialize.init()) } buildComponents() { this.imageLoader = new WATCH6.ImageLoader(this.opts.el, { loadOption: [ { resolution: 1920, attribute: "data-src-pc" }, { resolution: 1080, attribute: "data-src-tablet" }, { resolution: 767, attribute: "data-src-mobile" } ] }), this.videoLoader = new WATCH6.VideoLoader(this.opts.el, { notLoadElement: [".cm-layer"], loadOption: [ { resolution: 1920, attribute: "data-media-pc" }, { resolution: 767, attribute: "data-media-mo" } ] }), this.keyVisual = new WATCH6.KeyVisual(this.opts.keyVisualEl), this.overview = new WATCH6.Overview(this.opts.overviewEl), this.screen = new WATCH6.Screen(this.opts.screenEl), this.standalone = new WATCH6.Standalone(this.opts.standaloneEl), this.monitoring = new WATCH6.Monitoring(this.opts.monitoringEl), this.band = new WATCH6.Band(this.opts.bandEl), this.glass = new WATCH6.Glass(this.opts.glassEl), this.train = new WATCH6.Train(this.opts.trainEl), this.snap = new WATCH6.Snap(this.opts.snapEl), this.compare = new WATCH6.Compare(this.opts.compareEl, { on: { updateImageLoader: t => { this .imageLoader .setResponsiveImage(t) } } }), this.contrast = new WATCH6.Contrast(this.opts.contrastEl), this.batteryEl = new WATCH6.Battery(this.opts.batteryEl), this.progressEl = new WATCH6.Progress(this.opts.progressEl), window.addEventListener("load", () => { setTimeout(() => { window.GALAXY && window.GALAXY.isGalaxy && ( this.subNav = new WATCH6.SubNav(this.opts.subNavEl) ) }, 5) }) } }(".wearable-watch") }(); });

特長

Galaxy Watch6 can be seen with focus on reduced black margin and increased screen size to emphasize the expanded screen.

ディスプレイ

Galaxy Watch6 can be seen displaying the lion sleep symbol, with simple sleep data on the watch face.

睡眠

ECG measurement can be seen with the texts '15 sec' and '65 bpm'. Graph below illustrates heartbeats.

健康

スペック

  • NFC

    対応

  • Bluetoothバージョン

    Bluetooth v5.3

  • メインディスプレイのサイズ

    1.3" (33.3mm)

  • CPU

    1.4GHz

  • ストレージ (GB)

    16

  • センサー

    加速度センサー、気圧センサー、生体電気インピーダンス解析センサー、電気心拍センサー、ジャイロセンサー、地磁気センサー、赤外線温度センサー、照度センサー、光学式心拍センサー

  • 対応ネットワーク

    Wi-Fi,Bluetooth

  • オーディオ再生フォーマット

    MP3,M4A,3GA,AAC,OGG,OGA,WAV,AMR,AWB

  • 位置情報

    GPS,Glonass,Beidou,Galileo

  • Wi-Fi

    802.11 a/b/g/n 2.4+5GHz

  • NFC

    対応

  • Bluetoothバージョン

    Bluetooth v5.3

  • Bluetoothプロファイル

    A2DP,AVRCP,HFP,HSP

  • 自社製Wear OS

  • メインディスプレイの種類

    Super AMOLED

  • メインディスプレイのサイズ

    1.3" (33.3mm)

  • メインディスプレイの解像度

    432 x 432

  • メインディスプレイの色数

    16M

  • クロック周波数

    1.4GHz

  • CPU コア数

    デュアルコア

  • メモリ (GB)

    2

  • ストレージ (GB)

    16

  • 使用可能ストレージ (GB)

    7.1

  • 加速度センサー、気圧センサー、生体電気インピーダンス解析センサー、電気心拍センサー、ジャイロセンサー、地磁気センサー、赤外線温度センサー、照度センサー、光学式心拍センサー

  • 本体サイズ(高さ x 幅 x 厚さ, mm)

    38.8 x 40.4 x 9.0 mm

  • 本体重量 (g)

    28.7 g

  • バッテリー容量 (mAh, 標準)

    300

  • 取り外し

    非対応

  • 使用時間 (時間, AOD未使用時)

    最大40 Hours

  • 使用時間 (時間, AOD使用時)

    最大30 Hours

ダウンロード&マニュアル

マニュアル (OS 5.0)

ver 1.0 | 4.26 MB

2024-12-03

英語

マニュアル (OS 4.0)

ver 1.1 | 4.86 MB

2024-06-16

日本語

マニュアル (OS 4.0)

ver 1.2 | 4.78 MB

2024-05-16

英語

Safety Guide

ver 1.6 | 5.93 MB

2023-08-07

韓国語, 英語, 中国語, アルバニア語, アラビア語, ベンガル語, ブルガリア語, ビルマ語, チェコ語, デンマーク語, エストニア語, フィンランド語, フランス語, ドイツ語, ギリシャ語, ヘブライ語, ハンガリー語, インドネシア語, イタリア語, 日本語, カザフ語, ラーオ語, ラトビア語, リトアニア語, マケドニア語, モンゴル語, ノルウェー語, ポーランド語, ポルトガル語, ロシア語, セルビア語, スロバキア語, スロベニア語, スペイン語, スウェーデン語, タイ語, トルコ語, ウクライナ語, ウルドゥー語, ウズベク語, ベトナム語

製品サポート

製品に関するお問い合わせはこちら

製品サポート

Samsung Galaxyデバイスの製品サポート情報をご紹介します。

チャットでお問合せ

See how products work and get advice on which models fit your needs.

閲覧履歴

※ 画像はイメージです。

※ 製品の画像・仕様につきましては、予告なく変更する場合がございます。

※ Galaxy以外のスマートフォンでは、一部ご利用いただけない機能がございます。ご不明な点は、Galaxyカスタマーサポートセンター(0120-363-905)までお問い合わせください。

※ メモリー容量には、製品の動作に必要なオペレーティングシステム(OS)や、ソフトウェア等のプログラムの容量も含まれるため、お客様が実際にご利用いただける容量とは異なります。また、実際にご利用いただけるメモリー容量は、お客様の使用状況や、ソフトウェアのアップデート状況により変化します。

※ ストレージ容量は、国や地域、モデル、キャリアによって異なります。

※ ネットワーク : 各デバイスでサポートされるネットワーク帯域幅は、地域やプロバイダによって異なります。