From 4163be82d01b64ac055c789110e6b039e5e49c30 Mon Sep 17 00:00:00 2001 From: wasphin Date: Fri, 12 Jan 2024 05:58:55 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20ZLMediaK?= =?UTF-8?q?it/docs@959234f52cf5d15b2578e2080001f34d8e5c1123=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 6 +- ....html-rHboC4Yl.js => 404.html-7HzFSFl7.js} | 2 +- assets/app-0NopiYEV.js | 30 +++++ assets/app-RP31lnfq.js | 14 --- assets/{arc-IaSnKFUc.js => arc-zVzTa0l4.js} | 2 +- ...Xmdk2BGM.js => benchmark.html-ESZ9k3Ep.js} | 2 +- ...gZd5EMM7.js => benchmark.html-uo75e0CN.js} | 2 +- ...p6pW.js => c4Diagram-817c8e44-fGBWpqJm.js} | 2 +- ...1.js => classDiagram-48ab76fb-2huToeoO.js} | 2 +- assets/classDiagram-v2-8ecb0bfc-bhA94s1K.js | 2 - assets/classDiagram-v2-8ecb0bfc-yizWAp91.js | 2 + ...> collaborative_projects.html-RO-575me.js} | 2 +- ...> collaborative_projects.html-oDX6Yyj3.js} | 2 +- ...ions_for_windows_version.html-6NKchaAm.js} | 2 +- ...ions_for_windows_version.html-Fqb9RcQO.js} | 2 +- ...VlJmFs.js => config_file.html-9Xa4KaRE.js} | 2 +- ...Q-HnE0.js => config_file.html-d15slbyo.js} | 2 +- ...l-_Z6vlVkO.js => contact.html-KwkduCZ8.js} | 2 +- ...l-JZn2Qe3S.js => contact.html-t3j5rpRG.js} | 2 +- ...kZ8.js => createText-aebacdfe-VuGI-o_f.js} | 2 +- ...n_gavSy.js => delay_test.html-54KDTai-.js} | 2 +- ...uUiWXnv.js => delay_test.html-YaKGDOck.js} | 2 +- ...ZHrVdhi.js => dependency.html-8pevclZ9.js} | 2 +- ...FMeX_wi.js => dependency.html-jVZ5GKgo.js} | 2 +- ...89E8mCFH.js => edges-80f1ebb6-hR1YO9QC.js} | 2 +- ...3QeA.js => erDiagram-9cfc3649-wT9fM43B.js} | 8 +- ...js => exclusive_features.html-oz4V5ANz.js} | 2 +- ...js => exclusive_features.html-vnOZwbaY.js} | 2 +- ...scdJplr.js => flowDb-170db09d-3I9bX383.js} | 2 +- ...2O.js => flowDiagram-61eb444c-vQNzsoYg.js} | 2 +- assets/flowDiagram-v2-2f8f667a-17CncbGG.js | 1 - assets/flowDiagram-v2-2f8f667a-vyhUgdJw.js | 1 + ...chart-elk-definition-e097735e-s4v8c7Pb.js} | 2 +- ...o.js => ganttDiagram-db6931fb-lnA5WCr2.js} | 2 +- ...signaling_packet_capture.html-JsEmgfbo.js} | 2 +- ...signaling_packet_capture.html-qexCXJj0.js} | 2 +- ...ned_certificate_and_test.html-O1ld5VEe.js} | 2 +- ...ned_certificate_and_test.html-vsfOfJt0.js} | 2 +- assets/giscus-NkhROb6B.js | 66 +++++++++++ assets/giscus-unEZQsJ0.js | 70 ----------- ...s => gitGraphDiagram-6b463803-eKsTNhvP.js} | 2 +- ...implementation_principle.html-4A4gHD8-.js} | 2 +- ...implementation_principle.html-T5LE0Lmi.js} | 2 +- ...high_performance_journey.html-TZBUS8og.js} | 2 +- ...high_performance_journey.html-awr83uM9.js} | 2 +- ...w_to_create_a_live_steam.html-8eIvXeDo.js} | 2 +- ...w_to_create_a_live_steam.html-j8XiE3eA.js} | 2 +- ..._https_related_functions.html-9i2jCwZ3.js} | 2 +- ..._https_related_functions.html-kCsRSeM_.js} | 2 +- ....js => how_to_test_delay.html-IVFxpLiU.js} | 2 +- ....js => how_to_test_delay.html-r6GaiRI_.js} | 2 +- ...e_device_id_as_stream_id.html-5dSEoDq7.js} | 2 +- ...e_device_id_as_stream_id.html-CzzjrtPS.js} | 2 +- ...B7ItSCR5.js => index-67a42d7d-iblPHmxF.js} | 2 +- ...tml-0naiiwgW.js => index.html-2dVuyDsF.js} | 2 +- ...tml-2eHJyvoI.js => index.html-4AoKvxIs.js} | 2 +- ...tml-QWUIdSew.js => index.html-573jmd7K.js} | 2 +- ...tml-4Ee7DNZI.js => index.html-7fV02DDU.js} | 2 +- assets/index.html-7ixsX_gh.js | 1 - ...tml-6BkT17JO.js => index.html-7yq99xxh.js} | 2 +- assets/index.html-8LlBfneP.js | 1 + ...tml-H30PqyAG.js => index.html-DgVFBk67.js} | 2 +- assets/index.html-DoJnvppU.js | 1 + ...tml--S0MBGJo.js => index.html-DydUlsO3.js} | 2 +- assets/index.html-ENKK1Hev.js | 1 - assets/index.html-Eqzq89B-.js | 1 - assets/index.html-GZbomDA_.js | 1 + assets/index.html-HA6yUssK.js | 1 - assets/index.html-HbKwkAxu.js | 1 + ...tml-PSYc6CNH.js => index.html-HuxOwQjj.js} | 2 +- assets/index.html-LT2IW6gc.js | 1 - assets/index.html-Me4eXu-C.js | 1 - assets/index.html-NSMe4qAg.js | 1 - assets/index.html-O3xmvgtm.js | 1 + assets/index.html-Q3P2N4-E.js | 1 + assets/index.html-QokpAUdW.js | 1 + assets/index.html-TjtRd5xp.js | 1 - assets/index.html-V4YkyuJV.js | 1 - ...tml-bHaf1eq-.js => index.html-WES3IN89.js} | 2 +- ...tml-qlpSloZ0.js => index.html-ZAfsJ4Zm.js} | 2 +- assets/index.html-_FbUjyNF.js | 1 + assets/index.html-_GTitl4a.js | 1 - ...tml-eQpT8dLR.js => index.html-bCrAKGJB.js} | 2 +- assets/index.html-bV4_5Cgh.js | 1 + assets/index.html-c1k5quBE.js | 1 + assets/index.html-crm4JFod.js | 1 - assets/index.html-dNFi-MK4.js | 1 - assets/index.html-e77v6tHA.js | 1 - assets/index.html-eKYx7NZ-.js | 1 + ...tml-4AQHrSUy.js => index.html-eSaWpJP4.js} | 2 +- assets/index.html-frsd07BJ.js | 1 - assets/index.html-gSpoAwKN.js | 1 + ...tml-1HU8uRzY.js => index.html-hehzhF2d.js} | 2 +- assets/index.html-kIe4zMW_.js | 1 - assets/index.html-kykmfUZZ.js | 1 - assets/index.html-ldqAHXhl.js | 1 + assets/index.html-lxIvJFMs.js | 1 - assets/index.html-mfTVy5-J.js | 1 + assets/index.html-n77SzoQa.js | 1 - assets/index.html-oytvqk6x.js | 1 + assets/index.html-pO6EQ89h.js | 1 - ...tml-ZUO1t91g.js => index.html-q26KWjF1.js} | 2 +- assets/index.html-qXcCxmIQ.js | 1 + assets/index.html-tETo8Lu8.js | 1 - assets/index.html-uBldBXxN.js | 1 + assets/index.html-v6csxUL5.js | 1 + assets/index.html-vj58oyHa.js | 1 + assets/index.html-xQisrcfM.js | 1 - assets/index.html-yFJZvUVc.js | 1 + assets/index.html-yPXvy2ZK.js | 1 - assets/index.html-yYLEULdt.js | 1 + assets/index.html-zqagt7gM.js | 1 + ...Vf.js => infoDiagram-a336098b-ahMgvA-1.js} | 2 +- ...l_zlmediakit_using_vcpkg.html-tFAic-l6.js} | 2 +- ...l_zlmediakit_using_vcpkg.html-uFx2Qn-i.js} | 2 +- ...dia_related_technologies.html-Zd-Cue_9.js} | 2 +- ...dia_related_technologies.html-jd9Zwqd3.js} | 2 +- ...js => journeyDiagram-deae3313-A-9AYwwK.js} | 2 +- assets/layout-6DvG_ICF.js | 1 + assets/layout-wEoclKsW.js | 1 - ...l-eI8DpHPZ.js => license.html-Pr361WBx.js} | 2 +- ...l-KA2I3C1f.js => license.html-qa5ZL8TL.js} | 2 +- assets/{line-EJoUorMM.js => line-QxBjBe1b.js} | 2 +- assets/linear-nks6njEu.js | 1 + assets/linear-qWzY0BiT.js | 1 - assets/mermaid.core-YBgJFCkH.js | 92 +++++++++++++++ assets/mermaid.core-ygY5oRaR.js | 92 --------------- ...> mindmap-definition-617cf8dd-vVbSb0k_.js} | 74 ++++++------ ...js => not_recommended_qq.html-VsG4mwYA.js} | 2 +- ...js => not_recommended_qq.html-sTyZQjjb.js} | 2 +- ...on-demand_push_streaming.html-MaKthO1-.js} | 2 +- ...on-demand_push_streaming.html-NzG-8Joc.js} | 2 +- ...s => on-demand_streaming.html-VwCpE1JK.js} | 2 +- ...s => on-demand_streaming.html-rje6YlXl.js} | 2 +- ...78LEt8yV.js => oncetoken.html-KoxT1WJ9.js} | 2 +- ...O4EgeeD_.js => oncetoken.html-pNonh94A.js} | 2 +- ...tmASEE.js => online_test.html-X04CV8WE.js} | 2 +- ...AROswz.js => online_test.html-XBO_M5q9.js} | 2 +- ...s => performance_testing.html-RUXKMema.js} | 2 +- ...s => performance_testing.html-oRt7mc3-.js} | 2 +- assets/photoswipe.esm-08_zHRDQ.js | 4 + assets/photoswipe.esm-i2ohwMnJ.js | 4 - ...jea.js => pieDiagram-a5166659-88FRZv2h.js} | 2 +- ...90a.js => play_url_rules.html-GF2zY0uE.js} | 2 +- ...R3n.js => play_url_rules.html-qwXh8ebF.js} | 2 +- ... playback_authentication.html-AsKcZv3x.js} | 2 +- ... playback_authentication.html-G685IkfQ.js} | 2 +- ...s => push_authentication.html-_wCQpvPn.js} | 2 +- ...s => push_authentication.html-oaOjOtnq.js} | 2 +- ...Ayc.js => push_streaming.html-JqhELNzW.js} | 2 +- ...8zc.js => push_streaming.html-MRQ3SR8R.js} | 2 +- ...fOBpg7dv.js => push_test.html-dzpZPZVg.js} | 2 +- ...78JMVV7F.js => push_test.html-n5-72YJ1.js} | 2 +- ...s => quadrantDiagram-6c355bbc-3OwR_3NY.js} | 2 +- ...> requirementDiagram-4038b16c-GBigQQoF.js} | 2 +- ...PhYVAr.js => restful_api.html-4yfdZ-oL.js} | 2 +- ...SP9jqZ.js => restful_api.html-ojzFkZh8.js} | 2 +- ...ack_compatibility_issues.html-NhoJKAeu.js} | 2 +- ...ack_compatibility_issues.html-fNEuKIs-.js} | 2 +- ..._stream_performance_test.html--AjSCAb6.js} | 2 +- ..._stream_performance_test.html-UV-5J8vg.js} | 2 +- ..._stream_performance_test.html-VzlWIKzU.js} | 2 +- ..._stream_performance_test.html-YYy_fCwZ.js} | 2 +- ...upport_for_h265_and_opus.html-Ja2UBaOZ.js} | 2 +- ...upport_for_h265_and_opus.html-a8ynJZrM.js} | 2 +- ...performance_optimization.html-jqJ1nUFL.js} | 2 +- ...performance_optimization.html-oVbOTUnc.js} | 2 +- ..._stream_performance_test.html-78O1mXMt.js} | 2 +- ..._stream_performance_test.html-waVb8kwe.js} | 2 +- ....js => rtsp_push_process.html-5BXn5aZU.js} | 2 +- ....js => rtsp_push_process.html-ZQbam1ye.js} | 2 +- ..._stream_performance_test.html-YskCMXrz.js} | 2 +- ..._stream_performance_test.html-x031EUqu.js} | 2 +- ....js => sankeyDiagram-6db3d513-gIgv_0rP.js} | 8 +- ...s => sequenceDiagram-465a088a-qM5g7oLQ.js} | 2 +- ...u.js => sequence_diagram.html-ZomyBXSL.js} | 2 +- ...o.js => sequence_diagram.html-pEkXoaBs.js} | 2 +- ...tml-VhG07QWF.js => start.html-3NE1XKNN.js} | 2 +- ...tml-fkf1t7c5.js => start.html-zUlbdSif.js} | 2 +- ...79p0Y.js => start_server.html-JlFNgj-K.js} | 2 +- ...wbtOj.js => start_server.html-iaR_8o9S.js} | 2 +- ...i.js => stateDiagram-b620d43f-mAYfcJzU.js} | 2 +- ...s => stateDiagram-v2-2671c3d1-QZ9kVaW-.js} | 2 +- ...KGnpqeU.js => styles-4ba6ed67-LzHEaVgv.js} | 2 +- assets/styles-b966c4ae-SzUJ3e4L.js | 110 ------------------ assets/styles-b966c4ae-hKhWXcIa.js | 110 ++++++++++++++++++ ...t40AHsg.js => styles-bbc3fe3b-rQ9hJQeS.js} | 2 +- ....js => svgDrawCommon-ad5ef572-Rj64dPCl.js} | 2 +- ...ml-EDBrN2Yb.js => thanks.html-FSlc_7wN.js} | 2 +- ...ml-9FVCd-fN.js => thanks.html-Rcdc4mKk.js} | 2 +- ..._of_live_broadcast_delay.html-bjchJaZD.js} | 2 +- ..._of_live_broadcast_delay.html-uU6VtFJR.js} | 2 +- ... timeline-definition-732a2638-_vkJzhaO.js} | 2 +- ...QYVpPIZi.js => use_cases.html-SNBvnwbO.js} | 2 +- ...X6CGr-4A.js => use_cases.html-ocJvSQIH.js} | 2 +- ...encing_related_resources.html-JT3FqRo7.js} | 2 +- ...encing_related_resources.html-pKTKpfIG.js} | 2 +- ...FSiPS.js => web_hook_api.html-4eZenSeJ.js} | 2 +- ...pDhAG.js => web_hook_api.html-nXr7pFGe.js} | 2 +- ...eDSz2.js => web_hook_api.html-yTBnNLfz.js} | 6 +- ...brtc_compilation_and_use.html-Wir4WmSI.js} | 2 +- ...brtc_compilation_and_use.html-ifqCJvPh.js} | 2 +- ...aling_interaction_format.html-6nmFHnea.js} | 2 +- ...aling_interaction_format.html-KYtlkjHG.js} | 2 +- ...js => xychartDiagram-f746c04c-ybRnTgNu.js} | 6 +- ..._source_code_study_notes.html-3EZc_Boy.js} | 2 +- ..._source_code_study_notes.html-X78_rEP2.js} | 2 +- guide/code/index.html | 6 +- guide/code/oncetoken.html | 6 +- guide/faq/index.html | 6 +- guide/faq/not_recommended_qq.html | 6 +- .../rtmp_playback_compatibility_issues.html | 6 +- guide/index.html | 6 +- ...tion_instructions_for_windows_version.html | 6 +- guide/install/index.html | 6 +- .../install_zlmediakit_using_vcpkg.html | 6 +- guide/install/start.html | 6 +- guide/media_server/config_file.html | 6 +- ..._ssl_self-signed_certificate_and_test.html | 6 +- ...how_to_enable_https_related_functions.html | 6 +- guide/media_server/index.html | 6 +- .../on-demand_push_streaming.html | 6 +- guide/media_server/on-demand_streaming.html | 6 +- guide/media_server/play_url_rules.html | 6 +- .../media_server/playback_authentication.html | 6 +- guide/media_server/push_authentication.html | 6 +- guide/media_server/push_test.html | 6 +- guide/media_server/restful_api.html | 6 +- guide/media_server/sequence_diagram.html | 6 +- guide/media_server/start_server.html | 6 +- guide/media_server/web_hook_api.html | 12 +- .../gb28181_sip_signaling_packet_capture.html | 6 +- .../how_to_use_device_id_as_stream_id.html | 6 +- guide/protocol/gb28181/index.html | 6 +- guide/protocol/gb28181/push_streaming.html | 6 +- guide/protocol/index.html | 6 +- guide/protocol/srt/index.html | 6 +- guide/protocol/webrtc/index.html | 6 +- .../webrtc/webrtc_compilation_and_use.html | 6 +- .../webrtc_signaling_interaction_format.html | 6 +- guide/sdk/how_to_create_a_live_steam.html | 6 +- guide/sdk/index.html | 6 +- index.html | 4 +- more/collaborative_projects.html | 6 +- more/contact.html | 6 +- more/index.html | 6 +- more/license.html | 6 +- more/thanks.html | 6 +- more/use_cases.html | 6 +- .../hls_high_performance_journey.html | 6 +- reference/development_log/index.html | 6 +- .../rtsp_performance_optimization.html | 6 +- reference/documents/exclusive_features.html | 6 +- ..._concurrency_implementation_principle.html | 6 +- reference/documents/index.html | 6 +- ..._streaming_media_related_technologies.html | 6 +- reference/documents/rtsp_push_process.html | 6 +- .../the_nature_of_live_broadcast_delay.html | 6 +- reference/index.html | 6 +- reference/resources/dependency.html | 6 +- reference/resources/index.html | 6 +- .../rtmp_support_for_h265_and_opus.html | 6 +- .../video_conferencing_related_resources.html | 6 +- .../zltoolkit_source_code_study_notes.html | 6 +- reference/test/benchmark.html | 6 +- reference/test/delay_test.html | 6 +- reference/test/how_to_test_delay.html | 6 +- reference/test/index.html | 6 +- reference/test/online_test.html | 6 +- reference/test/performance_testing.html | 6 +- .../rtmp_pull_stream_performance_test.html | 6 +- .../rtmp_push_stream_performance_test.html | 6 +- .../rtsp_pull_stream_performance_test.html | 6 +- .../rtsp_push_stream_performance_test.html | 6 +- service-worker.js | 2 +- service-worker.js.map | 2 +- sitemap.xml | 2 +- tutorial/index.html | 6 +- zh/guide/code/index.html | 6 +- zh/guide/code/oncetoken.html | 6 +- zh/guide/faq/index.html | 6 +- zh/guide/faq/not_recommended_qq.html | 6 +- .../rtmp_playback_compatibility_issues.html | 6 +- zh/guide/index.html | 6 +- ...tion_instructions_for_windows_version.html | 6 +- zh/guide/install/index.html | 6 +- .../install_zlmediakit_using_vcpkg.html | 6 +- zh/guide/install/start.html | 6 +- zh/guide/media_server/config_file.html | 6 +- ..._ssl_self-signed_certificate_and_test.html | 6 +- ...how_to_enable_https_related_functions.html | 6 +- zh/guide/media_server/index.html | 6 +- .../on-demand_push_streaming.html | 6 +- .../media_server/on-demand_streaming.html | 6 +- zh/guide/media_server/play_url_rules.html | 6 +- .../media_server/playback_authentication.html | 6 +- .../media_server/push_authentication.html | 6 +- zh/guide/media_server/push_test.html | 6 +- zh/guide/media_server/restful_api.html | 6 +- zh/guide/media_server/sequence_diagram.html | 6 +- zh/guide/media_server/start_server.html | 6 +- zh/guide/media_server/web_hook_api.html | 6 +- .../gb28181_sip_signaling_packet_capture.html | 6 +- .../how_to_use_device_id_as_stream_id.html | 6 +- zh/guide/protocol/gb28181/index.html | 6 +- zh/guide/protocol/gb28181/push_streaming.html | 6 +- zh/guide/protocol/index.html | 6 +- zh/guide/protocol/srt/index.html | 6 +- zh/guide/protocol/webrtc/index.html | 6 +- .../webrtc/webrtc_compilation_and_use.html | 6 +- .../webrtc_signaling_interaction_format.html | 6 +- zh/guide/sdk/how_to_create_a_live_steam.html | 6 +- zh/guide/sdk/index.html | 6 +- zh/index.html | 4 +- zh/more/collaborative_projects.html | 6 +- zh/more/contact.html | 6 +- zh/more/index.html | 6 +- zh/more/license.html | 6 +- zh/more/thanks.html | 6 +- zh/more/use_cases.html | 6 +- .../hls_high_performance_journey.html | 6 +- zh/reference/development_log/index.html | 6 +- .../rtsp_performance_optimization.html | 6 +- .../documents/exclusive_features.html | 6 +- ..._concurrency_implementation_principle.html | 6 +- zh/reference/documents/index.html | 6 +- ..._streaming_media_related_technologies.html | 6 +- zh/reference/documents/rtsp_push_process.html | 6 +- .../the_nature_of_live_broadcast_delay.html | 6 +- zh/reference/index.html | 6 +- zh/reference/resources/dependency.html | 6 +- zh/reference/resources/index.html | 6 +- .../rtmp_support_for_h265_and_opus.html | 6 +- .../video_conferencing_related_resources.html | 6 +- .../zltoolkit_source_code_study_notes.html | 6 +- zh/reference/test/benchmark.html | 6 +- zh/reference/test/delay_test.html | 6 +- zh/reference/test/how_to_test_delay.html | 6 +- zh/reference/test/index.html | 6 +- zh/reference/test/online_test.html | 6 +- zh/reference/test/performance_testing.html | 6 +- .../rtmp_pull_stream_performance_test.html | 6 +- .../rtmp_push_stream_performance_test.html | 6 +- .../rtsp_pull_stream_performance_test.html | 6 +- .../rtsp_push_stream_performance_test.html | 6 +- zh/tutorial/index.html | 6 +- 346 files changed, 934 insertions(+), 922 deletions(-) rename assets/{404.html-rHboC4Yl.js => 404.html-7HzFSFl7.js} (71%) create mode 100644 assets/app-0NopiYEV.js delete mode 100644 assets/app-RP31lnfq.js rename assets/{arc-IaSnKFUc.js => arc-zVzTa0l4.js} (96%) rename assets/{benchmark.html-Xmdk2BGM.js => benchmark.html-ESZ9k3Ep.js} (98%) rename assets/{benchmark.html-gZd5EMM7.js => benchmark.html-uo75e0CN.js} (98%) rename assets/{c4Diagram-817c8e44-ubRVp6pW.js => c4Diagram-817c8e44-fGBWpqJm.js} (99%) rename assets/{classDiagram-48ab76fb-VgeeOHT1.js => classDiagram-48ab76fb-2huToeoO.js} (97%) delete mode 100644 assets/classDiagram-v2-8ecb0bfc-bhA94s1K.js create mode 100644 assets/classDiagram-v2-8ecb0bfc-yizWAp91.js rename assets/{collaborative_projects.html-jP_gBiJf.js => collaborative_projects.html-RO-575me.js} (98%) rename assets/{collaborative_projects.html-zAkyRydI.js => collaborative_projects.html-oDX6Yyj3.js} (98%) rename assets/{compilation_instructions_for_windows_version.html-3EBfQXLm.js => compilation_instructions_for_windows_version.html-6NKchaAm.js} (98%) rename assets/{compilation_instructions_for_windows_version.html-xnA-vKUQ.js => compilation_instructions_for_windows_version.html-Fqb9RcQO.js} (98%) rename assets/{config_file.html-e7VlJmFs.js => config_file.html-9Xa4KaRE.js} (99%) rename assets/{config_file.html-NeQ-HnE0.js => config_file.html-d15slbyo.js} (81%) rename assets/{contact.html-_Z6vlVkO.js => contact.html-KwkduCZ8.js} (94%) rename assets/{contact.html-JZn2Qe3S.js => contact.html-t3j5rpRG.js} (95%) rename assets/{createText-aebacdfe-CTBuskZ8.js => createText-aebacdfe-VuGI-o_f.js} (99%) rename assets/{delay_test.html-wn_gavSy.js => delay_test.html-54KDTai-.js} (98%) rename assets/{delay_test.html-nuUiWXnv.js => delay_test.html-YaKGDOck.js} (98%) rename assets/{dependency.html-kZHrVdhi.js => dependency.html-8pevclZ9.js} (98%) rename assets/{dependency.html-WFMeX_wi.js => dependency.html-jVZ5GKgo.js} (98%) rename assets/{edges-80f1ebb6-89E8mCFH.js => edges-80f1ebb6-hR1YO9QC.js} (99%) rename assets/{erDiagram-9cfc3649-xP3o3QeA.js => erDiagram-9cfc3649-wT9fM43B.js} (70%) rename assets/{exclusive_features.html-Qj0lJyo5.js => exclusive_features.html-oz4V5ANz.js} (99%) rename assets/{exclusive_features.html-PNsKskwv.js => exclusive_features.html-vnOZwbaY.js} (99%) rename assets/{flowDb-170db09d-pscdJplr.js => flowDb-170db09d-3I9bX383.js} (99%) rename assets/{flowDiagram-61eb444c-dTODa_2O.js => flowDiagram-61eb444c-vQNzsoYg.js} (97%) delete mode 100644 assets/flowDiagram-v2-2f8f667a-17CncbGG.js create mode 100644 assets/flowDiagram-v2-2f8f667a-vyhUgdJw.js rename assets/{flowchart-elk-definition-e097735e-FPGtu502.js => flowchart-elk-definition-e097735e-s4v8c7Pb.js} (99%) rename assets/{ganttDiagram-db6931fb-PbozmIQo.js => ganttDiagram-db6931fb-lnA5WCr2.js} (99%) rename assets/{gb28181_sip_signaling_packet_capture.html-9YuNK2eX.js => gb28181_sip_signaling_packet_capture.html-JsEmgfbo.js} (99%) rename assets/{gb28181_sip_signaling_packet_capture.html-5xl0QuEj.js => gb28181_sip_signaling_packet_capture.html-qexCXJj0.js} (99%) rename assets/{generate_ssl_self-signed_certificate_and_test.html-oJ11zSxb.js => generate_ssl_self-signed_certificate_and_test.html-O1ld5VEe.js} (98%) rename assets/{generate_ssl_self-signed_certificate_and_test.html-kbzAeWE6.js => generate_ssl_self-signed_certificate_and_test.html-vsfOfJt0.js} (99%) create mode 100644 assets/giscus-NkhROb6B.js delete mode 100644 assets/giscus-unEZQsJ0.js rename assets/{gitGraphDiagram-6b463803-qYmaBvlu.js => gitGraphDiagram-6b463803-eKsTNhvP.js} (99%) rename assets/{high_concurrency_implementation_principle.html-6GveguVT.js => high_concurrency_implementation_principle.html-4A4gHD8-.js} (99%) rename assets/{high_concurrency_implementation_principle.html-YdXhhjaV.js => high_concurrency_implementation_principle.html-T5LE0Lmi.js} (99%) rename assets/{hls_high_performance_journey.html-LbBMnisY.js => hls_high_performance_journey.html-TZBUS8og.js} (99%) rename assets/{hls_high_performance_journey.html-KWt_INAr.js => hls_high_performance_journey.html-awr83uM9.js} (99%) rename assets/{how_to_create_a_live_steam.html-6xjNfV8d.js => how_to_create_a_live_steam.html-8eIvXeDo.js} (86%) rename assets/{how_to_create_a_live_steam.html-ewhkqgEI.js => how_to_create_a_live_steam.html-j8XiE3eA.js} (86%) rename assets/{how_to_enable_https_related_functions.html-bzN01TdE.js => how_to_enable_https_related_functions.html-9i2jCwZ3.js} (99%) rename assets/{how_to_enable_https_related_functions.html-O1NMddvq.js => how_to_enable_https_related_functions.html-kCsRSeM_.js} (99%) rename assets/{how_to_test_delay.html-fyFCkcjI.js => how_to_test_delay.html-IVFxpLiU.js} (99%) rename assets/{how_to_test_delay.html-6Q65UhHU.js => how_to_test_delay.html-r6GaiRI_.js} (99%) rename assets/{how_to_use_device_id_as_stream_id.html-HCE1vKo7.js => how_to_use_device_id_as_stream_id.html-5dSEoDq7.js} (96%) rename assets/{how_to_use_device_id_as_stream_id.html-r4xrBF9F.js => how_to_use_device_id_as_stream_id.html-CzzjrtPS.js} (96%) rename assets/{index-67a42d7d-B7ItSCR5.js => index-67a42d7d-iblPHmxF.js} (97%) rename assets/{index.html-0naiiwgW.js => index.html-2dVuyDsF.js} (76%) rename assets/{index.html-2eHJyvoI.js => index.html-4AoKvxIs.js} (76%) rename assets/{index.html-QWUIdSew.js => index.html-573jmd7K.js} (99%) rename assets/{index.html-4Ee7DNZI.js => index.html-7fV02DDU.js} (76%) delete mode 100644 assets/index.html-7ixsX_gh.js rename assets/{index.html-6BkT17JO.js => index.html-7yq99xxh.js} (76%) create mode 100644 assets/index.html-8LlBfneP.js rename assets/{index.html-H30PqyAG.js => index.html-DgVFBk67.js} (99%) create mode 100644 assets/index.html-DoJnvppU.js rename assets/{index.html--S0MBGJo.js => index.html-DydUlsO3.js} (95%) delete mode 100644 assets/index.html-ENKK1Hev.js delete mode 100644 assets/index.html-Eqzq89B-.js create mode 100644 assets/index.html-GZbomDA_.js delete mode 100644 assets/index.html-HA6yUssK.js create mode 100644 assets/index.html-HbKwkAxu.js rename assets/{index.html-PSYc6CNH.js => index.html-HuxOwQjj.js} (71%) delete mode 100644 assets/index.html-LT2IW6gc.js delete mode 100644 assets/index.html-Me4eXu-C.js delete mode 100644 assets/index.html-NSMe4qAg.js create mode 100644 assets/index.html-O3xmvgtm.js create mode 100644 assets/index.html-Q3P2N4-E.js create mode 100644 assets/index.html-QokpAUdW.js delete mode 100644 assets/index.html-TjtRd5xp.js delete mode 100644 assets/index.html-V4YkyuJV.js rename assets/{index.html-bHaf1eq-.js => index.html-WES3IN89.js} (99%) rename assets/{index.html-qlpSloZ0.js => index.html-ZAfsJ4Zm.js} (71%) create mode 100644 assets/index.html-_FbUjyNF.js delete mode 100644 assets/index.html-_GTitl4a.js rename assets/{index.html-eQpT8dLR.js => index.html-bCrAKGJB.js} (82%) create mode 100644 assets/index.html-bV4_5Cgh.js create mode 100644 assets/index.html-c1k5quBE.js delete mode 100644 assets/index.html-crm4JFod.js delete mode 100644 assets/index.html-dNFi-MK4.js delete mode 100644 assets/index.html-e77v6tHA.js create mode 100644 assets/index.html-eKYx7NZ-.js rename assets/{index.html-4AQHrSUy.js => index.html-eSaWpJP4.js} (99%) delete mode 100644 assets/index.html-frsd07BJ.js create mode 100644 assets/index.html-gSpoAwKN.js rename assets/{index.html-1HU8uRzY.js => index.html-hehzhF2d.js} (94%) delete mode 100644 assets/index.html-kIe4zMW_.js delete mode 100644 assets/index.html-kykmfUZZ.js create mode 100644 assets/index.html-ldqAHXhl.js delete mode 100644 assets/index.html-lxIvJFMs.js create mode 100644 assets/index.html-mfTVy5-J.js delete mode 100644 assets/index.html-n77SzoQa.js create mode 100644 assets/index.html-oytvqk6x.js delete mode 100644 assets/index.html-pO6EQ89h.js rename assets/{index.html-ZUO1t91g.js => index.html-q26KWjF1.js} (82%) create mode 100644 assets/index.html-qXcCxmIQ.js delete mode 100644 assets/index.html-tETo8Lu8.js create mode 100644 assets/index.html-uBldBXxN.js create mode 100644 assets/index.html-v6csxUL5.js create mode 100644 assets/index.html-vj58oyHa.js delete mode 100644 assets/index.html-xQisrcfM.js create mode 100644 assets/index.html-yFJZvUVc.js delete mode 100644 assets/index.html-yPXvy2ZK.js create mode 100644 assets/index.html-yYLEULdt.js create mode 100644 assets/index.html-zqagt7gM.js rename assets/{infoDiagram-a336098b-sHgg_VVf.js => infoDiagram-a336098b-ahMgvA-1.js} (98%) rename assets/{install_zlmediakit_using_vcpkg.html-UmyH2ZVo.js => install_zlmediakit_using_vcpkg.html-tFAic-l6.js} (99%) rename assets/{install_zlmediakit_using_vcpkg.html-uKojkOzg.js => install_zlmediakit_using_vcpkg.html-uFx2Qn-i.js} (99%) rename assets/{introduction_to_streaming_media_related_technologies.html-JdpuYj-J.js => introduction_to_streaming_media_related_technologies.html-Zd-Cue_9.js} (99%) rename assets/{introduction_to_streaming_media_related_technologies.html-tum5EDuc.js => introduction_to_streaming_media_related_technologies.html-jd9Zwqd3.js} (99%) rename assets/{journeyDiagram-deae3313-3VZnCGoi.js => journeyDiagram-deae3313-A-9AYwwK.js} (98%) create mode 100644 assets/layout-6DvG_ICF.js delete mode 100644 assets/layout-wEoclKsW.js rename assets/{license.html-eI8DpHPZ.js => license.html-Pr361WBx.js} (85%) rename assets/{license.html-KA2I3C1f.js => license.html-qa5ZL8TL.js} (87%) rename assets/{line-EJoUorMM.js => line-QxBjBe1b.js} (93%) create mode 100644 assets/linear-nks6njEu.js delete mode 100644 assets/linear-qWzY0BiT.js create mode 100644 assets/mermaid.core-YBgJFCkH.js delete mode 100644 assets/mermaid.core-ygY5oRaR.js rename assets/{mindmap-definition-617cf8dd-8E7JbjNQ.js => mindmap-definition-617cf8dd-vVbSb0k_.js} (59%) rename assets/{not_recommended_qq.html-D1NyvBof.js => not_recommended_qq.html-VsG4mwYA.js} (97%) rename assets/{not_recommended_qq.html-xL5JJUt8.js => not_recommended_qq.html-sTyZQjjb.js} (96%) rename assets/{on-demand_push_streaming.html-U3DF-hcL.js => on-demand_push_streaming.html-MaKthO1-.js} (88%) rename assets/{on-demand_push_streaming.html-CeB1-Ozz.js => on-demand_push_streaming.html-NzG-8Joc.js} (87%) rename assets/{on-demand_streaming.html-rK6BuTeq.js => on-demand_streaming.html-VwCpE1JK.js} (87%) rename assets/{on-demand_streaming.html-JbtempAZ.js => on-demand_streaming.html-rje6YlXl.js} (88%) rename assets/{oncetoken.html-78LEt8yV.js => oncetoken.html-KoxT1WJ9.js} (99%) rename assets/{oncetoken.html-O4EgeeD_.js => oncetoken.html-pNonh94A.js} (99%) rename assets/{online_test.html-_btmASEE.js => online_test.html-X04CV8WE.js} (88%) rename assets/{online_test.html-nhAROswz.js => online_test.html-XBO_M5q9.js} (87%) rename assets/{performance_testing.html-_cSl4nbI.js => performance_testing.html-RUXKMema.js} (98%) rename assets/{performance_testing.html-KTW2LASt.js => performance_testing.html-oRt7mc3-.js} (98%) create mode 100644 assets/photoswipe.esm-08_zHRDQ.js delete mode 100644 assets/photoswipe.esm-i2ohwMnJ.js rename assets/{pieDiagram-a5166659-2AuHdjea.js => pieDiagram-a5166659-88FRZv2h.js} (98%) rename assets/{play_url_rules.html-Nq1zV90a.js => play_url_rules.html-GF2zY0uE.js} (99%) rename assets/{play_url_rules.html-jL-erR3n.js => play_url_rules.html-qwXh8ebF.js} (99%) rename assets/{playback_authentication.html--oFuX02K.js => playback_authentication.html-AsKcZv3x.js} (87%) rename assets/{playback_authentication.html-SRognS60.js => playback_authentication.html-G685IkfQ.js} (88%) rename assets/{push_authentication.html-RYBrWv6d.js => push_authentication.html-_wCQpvPn.js} (87%) rename assets/{push_authentication.html-buPamLTW.js => push_authentication.html-oaOjOtnq.js} (88%) rename assets/{push_streaming.html-rR7nCAyc.js => push_streaming.html-JqhELNzW.js} (99%) rename assets/{push_streaming.html-ieJcZ8zc.js => push_streaming.html-MRQ3SR8R.js} (99%) rename assets/{push_test.html-fOBpg7dv.js => push_test.html-dzpZPZVg.js} (98%) rename assets/{push_test.html-78JMVV7F.js => push_test.html-n5-72YJ1.js} (98%) rename assets/{quadrantDiagram-6c355bbc-AVZ0kdE9.js => quadrantDiagram-6c355bbc-3OwR_3NY.js} (99%) rename assets/{requirementDiagram-4038b16c-zPwsi3At.js => requirementDiagram-4038b16c-GBigQQoF.js} (99%) rename assets/{restful_api.html-ooPhYVAr.js => restful_api.html-4yfdZ-oL.js} (99%) rename assets/{restful_api.html-EFSP9jqZ.js => restful_api.html-ojzFkZh8.js} (99%) rename assets/{rtmp_playback_compatibility_issues.html-k6HlsNbH.js => rtmp_playback_compatibility_issues.html-NhoJKAeu.js} (94%) rename assets/{rtmp_playback_compatibility_issues.html-Q-7KXOkl.js => rtmp_playback_compatibility_issues.html-fNEuKIs-.js} (95%) rename assets/{rtmp_pull_stream_performance_test.html--cK45yxC.js => rtmp_pull_stream_performance_test.html--AjSCAb6.js} (98%) rename assets/{rtmp_pull_stream_performance_test.html-to7s8Gb2.js => rtmp_pull_stream_performance_test.html-UV-5J8vg.js} (98%) rename assets/{rtmp_push_stream_performance_test.html-xYGtJwVp.js => rtmp_push_stream_performance_test.html-VzlWIKzU.js} (98%) rename assets/{rtmp_push_stream_performance_test.html-4Td-mBqD.js => rtmp_push_stream_performance_test.html-YYy_fCwZ.js} (98%) rename assets/{rtmp_support_for_h265_and_opus.html-4jQr5c69.js => rtmp_support_for_h265_and_opus.html-Ja2UBaOZ.js} (97%) rename assets/{rtmp_support_for_h265_and_opus.html-Pv_q6lJG.js => rtmp_support_for_h265_and_opus.html-a8ynJZrM.js} (97%) rename assets/{rtsp_performance_optimization.html-INqzsvFD.js => rtsp_performance_optimization.html-jqJ1nUFL.js} (98%) rename assets/{rtsp_performance_optimization.html-KRKhmZXI.js => rtsp_performance_optimization.html-oVbOTUnc.js} (98%) rename assets/{rtsp_pull_stream_performance_test.html-3HmmZM3c.js => rtsp_pull_stream_performance_test.html-78O1mXMt.js} (98%) rename assets/{rtsp_pull_stream_performance_test.html-sTQrF5Xo.js => rtsp_pull_stream_performance_test.html-waVb8kwe.js} (98%) rename assets/{rtsp_push_process.html-W2QVXDCD.js => rtsp_push_process.html-5BXn5aZU.js} (99%) rename assets/{rtsp_push_process.html-PFNRXi6Z.js => rtsp_push_process.html-ZQbam1ye.js} (99%) rename assets/{rtsp_push_stream_performance_test.html-8OJV-kxN.js => rtsp_push_stream_performance_test.html-YskCMXrz.js} (98%) rename assets/{rtsp_push_stream_performance_test.html-mR4FJY9Z.js => rtsp_push_stream_performance_test.html-x031EUqu.js} (98%) rename assets/{sankeyDiagram-6db3d513-9q2qHJD9.js => sankeyDiagram-6db3d513-gIgv_0rP.js} (88%) rename assets/{sequenceDiagram-465a088a-EWh6aK27.js => sequenceDiagram-465a088a-qM5g7oLQ.js} (99%) rename assets/{sequence_diagram.html-pYWqjJ8u.js => sequence_diagram.html-ZomyBXSL.js} (97%) rename assets/{sequence_diagram.html-vJK6hfro.js => sequence_diagram.html-pEkXoaBs.js} (97%) rename assets/{start.html-VhG07QWF.js => start.html-3NE1XKNN.js} (99%) rename assets/{start.html-fkf1t7c5.js => start.html-zUlbdSif.js} (99%) rename assets/{start_server.html-I5K79p0Y.js => start_server.html-JlFNgj-K.js} (98%) rename assets/{start_server.html-z23wbtOj.js => start_server.html-iaR_8o9S.js} (98%) rename assets/{stateDiagram-b620d43f-RCXXee-i.js => stateDiagram-b620d43f-mAYfcJzU.js} (97%) rename assets/{stateDiagram-v2-2671c3d1-YYOgeGqg.js => stateDiagram-v2-2671c3d1-QZ9kVaW-.js} (92%) rename assets/{styles-4ba6ed67-2KGnpqeU.js => styles-4ba6ed67-LzHEaVgv.js} (99%) delete mode 100644 assets/styles-b966c4ae-SzUJ3e4L.js create mode 100644 assets/styles-b966c4ae-hKhWXcIa.js rename assets/{styles-bbc3fe3b-It40AHsg.js => styles-bbc3fe3b-rQ9hJQeS.js} (99%) rename assets/{svgDrawCommon-ad5ef572-nvro2Kxm.js => svgDrawCommon-ad5ef572-Rj64dPCl.js} (95%) rename assets/{thanks.html-EDBrN2Yb.js => thanks.html-FSlc_7wN.js} (98%) rename assets/{thanks.html-9FVCd-fN.js => thanks.html-Rcdc4mKk.js} (98%) rename assets/{the_nature_of_live_broadcast_delay.html-PF-gA_DU.js => the_nature_of_live_broadcast_delay.html-bjchJaZD.js} (97%) rename assets/{the_nature_of_live_broadcast_delay.html-SrNo_kM-.js => the_nature_of_live_broadcast_delay.html-uU6VtFJR.js} (97%) rename assets/{timeline-definition-732a2638-8ZtyCvMC.js => timeline-definition-732a2638-_vkJzhaO.js} (99%) rename assets/{use_cases.html-QYVpPIZi.js => use_cases.html-SNBvnwbO.js} (92%) rename assets/{use_cases.html-X6CGr-4A.js => use_cases.html-ocJvSQIH.js} (92%) rename assets/{video_conferencing_related_resources.html-n9vvOPci.js => video_conferencing_related_resources.html-JT3FqRo7.js} (96%) rename assets/{video_conferencing_related_resources.html-OEgzQpTs.js => video_conferencing_related_resources.html-pKTKpfIG.js} (96%) rename assets/{web_hook_api.html-Ur1FSiPS.js => web_hook_api.html-4eZenSeJ.js} (99%) rename assets/{web_hook_api.html-adtpDhAG.js => web_hook_api.html-nXr7pFGe.js} (86%) rename assets/{web_hook_api.html-zeVeDSz2.js => web_hook_api.html-yTBnNLfz.js} (99%) rename assets/{webrtc_compilation_and_use.html-WDwwQCrP.js => webrtc_compilation_and_use.html-Wir4WmSI.js} (99%) rename assets/{webrtc_compilation_and_use.html-lpFe_5AD.js => webrtc_compilation_and_use.html-ifqCJvPh.js} (99%) rename assets/{webrtc_signaling_interaction_format.html-wdNPDtQj.js => webrtc_signaling_interaction_format.html-6nmFHnea.js} (99%) rename assets/{webrtc_signaling_interaction_format.html-Vcq-5dzR.js => webrtc_signaling_interaction_format.html-KYtlkjHG.js} (99%) rename assets/{xychartDiagram-f746c04c-R7Y2pSYR.js => xychartDiagram-f746c04c-ybRnTgNu.js} (77%) rename assets/{zltoolkit_source_code_study_notes.html-JZCYuLhh.js => zltoolkit_source_code_study_notes.html-3EZc_Boy.js} (86%) rename assets/{zltoolkit_source_code_study_notes.html-PfuwMzDt.js => zltoolkit_source_code_study_notes.html-X78_rEP2.js} (86%) diff --git a/404.html b/404.html index 7a90eb6..aa1a9e7 100644 --- a/404.html +++ b/404.html @@ -30,11 +30,11 @@ ZLMediaKit - + -
Skip to main content

404

Page not found

That’s a Four-Oh-Four.

- +
Skip to main content

404

Page not found

How did we get here?

+ diff --git a/assets/404.html-rHboC4Yl.js b/assets/404.html-7HzFSFl7.js similarity index 71% rename from assets/404.html-rHboC4Yl.js rename to assets/404.html-7HzFSFl7.js index 04437de..fe05273 100644 --- a/assets/404.html-rHboC4Yl.js +++ b/assets/404.html-7HzFSFl7.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-RP31lnfq.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","404.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-0NopiYEV.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","404.html.vue"]]);export{f as default}; diff --git a/assets/app-0NopiYEV.js b/assets/app-0NopiYEV.js new file mode 100644 index 0000000..674f0d5 --- /dev/null +++ b/assets/app-0NopiYEV.js @@ -0,0 +1,30 @@ +/** +* @vue/shared v3.4.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function ri(e,t){const n=new Set(e.split(","));return t?r=>n.has(r.toLowerCase()):r=>n.has(r)}const we={},gn=[],et=()=>{},gu=()=>!1,ir=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),oi=e=>e.startsWith("onUpdate:"),xe=Object.assign,ii=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},bu=Object.prototype.hasOwnProperty,ce=(e,t)=>bu.call(e,t),X=Array.isArray,Hn=e=>Kr(e)==="[object Map]",yu=e=>Kr(e)==="[object Set]",oe=e=>typeof e=="function",ue=e=>typeof e=="string",Ur=e=>typeof e=="symbol",Ae=e=>e!==null&&typeof e=="object",vs=e=>(Ae(e)||oe(e))&&oe(e.then)&&oe(e.catch),Eu=Object.prototype.toString,Kr=e=>Eu.call(e),wu=e=>Kr(e).slice(8,-1),Tu=e=>Kr(e)==="[object Object]",li=e=>ue(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,jn=ri(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Gr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Au=/-(\w)/g,lt=Gr(e=>e.replace(Au,(t,n)=>n?n.toUpperCase():"")),Lu=/\B([A-Z])/g,xn=Gr(e=>e.replace(Lu,"-$1").toLowerCase()),lr=Gr(e=>e.charAt(0).toUpperCase()+e.slice(1)),co=Gr(e=>e?`on${lr(e)}`:""),qt=(e,t)=>!Object.is(e,t),uo=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ru=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Pu=e=>{const t=ue(e)?Number(e):NaN;return isNaN(t)?e:t};let Wi;const ms=()=>Wi||(Wi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function si(e){if(X(e)){const t={};for(let n=0;n{if(n){const r=n.split(Ou);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function ai(e){let t="";if(ue(e))t=e;else if(X(e))for(let n=0;n=2))break;on(),this._queryings--}return this._dirtyLevel>=2}set dirty(t){this._dirtyLevel=t?3:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=jt,n=Xt;try{return jt=!0,Xt=this,this._runnings++,qi(this),this.fn()}finally{Ui(this),this._runnings--,Xt=n,jt=t}}stop(){var t;this.active&&(qi(this),Ui(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function $u(e){return e.value}function qi(e){e._trackId++,e._depsLength=0}function Ui(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Sr=new WeakMap,en=Symbol(""),Mo=Symbol("");function je(e,t,n){if(jt&&Xt){let r=Sr.get(e);r||Sr.set(e,r=new Map);let o=r.get(n);o||r.set(n,o=Ts(()=>r.delete(n))),Es(Xt,o)}}function Pt(e,t,n,r,o,i){const l=Sr.get(e);if(!l)return;let s=[];if(t==="clear")s=[...l.values()];else if(n==="length"&&X(e)){const a=Number(r);l.forEach((c,u)=>{(u==="length"||!Ur(u)&&u>=a)&&s.push(c)})}else switch(n!==void 0&&s.push(l.get(n)),t){case"add":X(e)?li(n)&&s.push(l.get("length")):(s.push(l.get(en)),Hn(e)&&s.push(l.get(Mo)));break;case"delete":X(e)||(s.push(l.get(en)),Hn(e)&&s.push(l.get(Mo)));break;case"set":Hn(e)&&s.push(l.get(en));break}ui();for(const a of s)a&&ws(a,3);fi()}function Nu(e,t){var n;return(n=Sr.get(e))==null?void 0:n.get(t)}const zu=ri("__proto__,__v_isRef,__isVue"),As=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ur)),Ki=Fu();function Fu(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=le(this);for(let i=0,l=this.length;i{e[t]=function(...n){rn(),ui();const r=le(this)[t].apply(this,n);return fi(),on(),r}}),e}function Bu(e){const t=le(this);return je(t,"has",e),t.hasOwnProperty(e)}class Ls{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,r){const o=this._isReadonly,i=this._shallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return i;if(n==="__v_raw")return r===(o?i?ef:Os:i?Is:Ps).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const l=X(t);if(!o){if(l&&ce(Ki,n))return Reflect.get(Ki,n,r);if(n==="hasOwnProperty")return Bu}const s=Reflect.get(t,n,r);return(Ur(n)?As.has(n):zu(n))||(o||je(t,"get",n),i)?s:De(s)?l&&li(n)?s:s.value:Ae(s)?o?ln(s):sr(s):s}}class Rs extends Ls{constructor(t=!1){super(!1,t)}set(t,n,r,o){let i=t[n];if(!this._shallow){const a=Tn(i);if(!Dr(r)&&!Tn(r)&&(i=le(i),r=le(r)),!X(t)&&De(i)&&!De(r))return a?!1:(i.value=r,!0)}const l=X(t)&&li(n)?Number(n)e,Yr=e=>Reflect.getPrototypeOf(e);function _r(e,t,n=!1,r=!1){e=e.__v_raw;const o=le(e),i=le(t);n||(qt(t,i)&&je(o,"get",t),je(o,"get",i));const{has:l}=Yr(o),s=r?di:n?vi:Qn;if(l.call(o,t))return s(e.get(t));if(l.call(o,i))return s(e.get(i));e!==o&&e.get(t)}function gr(e,t=!1){const n=this.__v_raw,r=le(n),o=le(e);return t||(qt(e,o)&&je(r,"has",e),je(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function br(e,t=!1){return e=e.__v_raw,!t&&je(le(e),"iterate",en),Reflect.get(e,"size",e)}function Gi(e){e=le(e);const t=le(this);return Yr(t).has.call(t,e)||(t.add(e),Pt(t,"add",e,e)),this}function Yi(e,t){t=le(t);const n=le(this),{has:r,get:o}=Yr(n);let i=r.call(n,e);i||(e=le(e),i=r.call(n,e));const l=o.call(n,e);return n.set(e,t),i?qt(t,l)&&Pt(n,"set",e,t):Pt(n,"add",e,t),this}function Zi(e){const t=le(this),{has:n,get:r}=Yr(t);let o=n.call(t,e);o||(e=le(e),o=n.call(t,e)),r&&r.call(t,e);const i=t.delete(e);return o&&Pt(t,"delete",e,void 0),i}function Qi(){const e=le(this),t=e.size!==0,n=e.clear();return t&&Pt(e,"clear",void 0,void 0),n}function yr(e,t){return function(r,o){const i=this,l=i.__v_raw,s=le(l),a=t?di:e?vi:Qn;return!e&&je(s,"iterate",en),l.forEach((c,u)=>r.call(o,a(c),a(u),i))}}function Er(e,t,n){return function(...r){const o=this.__v_raw,i=le(o),l=Hn(i),s=e==="entries"||e===Symbol.iterator&&l,a=e==="keys"&&l,c=o[e](...r),u=n?di:t?vi:Qn;return!t&&je(i,"iterate",a?Mo:en),{next(){const{value:d,done:p}=c.next();return p?{value:d,done:p}:{value:s?[u(d[0]),u(d[1])]:u(d),done:p}},[Symbol.iterator](){return this}}}}function St(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Uu(){const e={get(i){return _r(this,i)},get size(){return br(this)},has:gr,add:Gi,set:Yi,delete:Zi,clear:Qi,forEach:yr(!1,!1)},t={get(i){return _r(this,i,!1,!0)},get size(){return br(this)},has:gr,add:Gi,set:Yi,delete:Zi,clear:Qi,forEach:yr(!1,!0)},n={get(i){return _r(this,i,!0)},get size(){return br(this,!0)},has(i){return gr.call(this,i,!0)},add:St("add"),set:St("set"),delete:St("delete"),clear:St("clear"),forEach:yr(!0,!1)},r={get(i){return _r(this,i,!0,!0)},get size(){return br(this,!0)},has(i){return gr.call(this,i,!0)},add:St("add"),set:St("set"),delete:St("delete"),clear:St("clear"),forEach:yr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Er(i,!1,!1),n[i]=Er(i,!0,!1),t[i]=Er(i,!1,!0),r[i]=Er(i,!0,!0)}),[e,n,t,r]}const[Ku,Gu,Yu,Zu]=Uu();function pi(e,t){const n=t?e?Zu:Yu:e?Gu:Ku;return(r,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(ce(n,o)&&o in r?n:r,o,i)}const Qu={get:pi(!1,!1)},Ju={get:pi(!1,!0)},Xu={get:pi(!0,!1)},Ps=new WeakMap,Is=new WeakMap,Os=new WeakMap,ef=new WeakMap;function tf(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function nf(e){return e.__v_skip||!Object.isExtensible(e)?0:tf(wu(e))}function sr(e){return Tn(e)?e:hi(e,!1,ju,Qu,Ps)}function xs(e){return hi(e,!1,qu,Ju,Is)}function ln(e){return hi(e,!0,Wu,Xu,Os)}function hi(e,t,n,r,o){if(!Ae(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const l=nf(e);if(l===0)return e;const s=new Proxy(e,l===2?r:n);return o.set(e,s),s}function bn(e){return Tn(e)?bn(e.__v_raw):!!(e&&e.__v_isReactive)}function Tn(e){return!!(e&&e.__v_isReadonly)}function Dr(e){return!!(e&&e.__v_isShallow)}function ks(e){return bn(e)||Tn(e)}function le(e){const t=e&&e.__v_raw;return t?le(t):e}function Cs(e){return Cr(e,"__v_skip",!0),e}const Qn=e=>Ae(e)?sr(e):e,vi=e=>Ae(e)?ln(e):e;class Ss{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new ci(()=>t(this._value),()=>Vr(this,1)),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=le(this);return mi(t),(!t._cacheable||t.effect.dirty)&&qt(t._value,t._value=t.effect.run())&&Vr(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function rf(e,t,n=!1){let r,o;const i=oe(e);return i?(r=e,o=et):(r=e.get,o=e.set),new Ss(r,o,i||!o,n)}function mi(e){jt&&Xt&&(e=le(e),Es(Xt,e.dep||(e.dep=Ts(()=>e.dep=void 0,e instanceof Ss?e:void 0))))}function Vr(e,t=3,n){e=le(e);const r=e.dep;r&&ws(r,t)}function De(e){return!!(e&&e.__v_isRef===!0)}function ee(e){return Ds(e,!1)}function st(e){return Ds(e,!0)}function Ds(e,t){return De(e)?e:new of(e,t)}class of{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:le(t),this._value=n?t:Qn(t)}get value(){return mi(this),this._value}set value(t){const n=this.__v_isShallow||Dr(t)||Tn(t);t=n?t:le(t),qt(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Qn(t),Vr(this,3))}}function tn(e){return De(e)?e.value:e}const lf={get:(e,t,n)=>tn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return De(o)&&!De(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Vs(e){return bn(e)?e:new Proxy(e,lf)}class sf{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>mi(this),()=>Vr(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function Ms(e){return new sf(e)}class af{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Nu(le(this._object),this._key)}}class cf{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Zr(e,t,n){return De(e)?e:oe(e)?new cf(e):Ae(e)&&arguments.length>1?uf(e,t,n):ee(e)}function uf(e,t,n){const r=e[t];return De(r)?r:new af(e,t,n)}/** +* @vue/runtime-core v3.4.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Wt(e,t,n,r){let o;try{o=r?e(...r):e()}catch(i){ar(i,t,n)}return o}function rt(e,t,n,r){if(oe(e)){const i=Wt(e,t,n,r);return i&&vs(i)&&i.catch(l=>{ar(l,t,n)}),i}const o=[];for(let i=0;i>>1,o=Ve[r],i=Xn(o);igt&&Ve.splice(t,1)}function hf(e){X(e)?yn.push(...e):(!Nt||!Nt.includes(e,e.allowRecurse?Zt+1:Zt))&&yn.push(e),Ns()}function Ji(e,t,n=Jn?gt+1:0){for(;nXn(n)-Xn(r));if(yn.length=0,Nt){Nt.push(...t);return}for(Nt=t,Zt=0;Zte.id==null?1/0:e.id,vf=(e,t)=>{const n=Xn(e)-Xn(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function zs(e){$o=!1,Jn=!0,Ve.sort(vf);try{for(gt=0;gtue(m)?m.trim():m)),d&&(o=n.map(Ru))}let s,a=r[s=co(t)]||r[s=co(lt(t))];!a&&i&&(a=r[s=co(xn(t))]),a&&rt(a,e,6,o);const c=r[s+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,rt(c,e,6,o)}}function Fs(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const i=e.emits;let l={},s=!1;if(!oe(e)){const a=c=>{const u=Fs(c,t,!0);u&&(s=!0,xe(l,u))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!i&&!s?(Ae(e)&&r.set(e,null),null):(X(i)?i.forEach(a=>l[a]=null):xe(l,i),Ae(e)&&r.set(e,l),l)}function Jr(e,t){return!e||!ir(t)?!1:(t=t.slice(2).replace(/Once$/,""),ce(e,t[0].toLowerCase()+t.slice(1))||ce(e,xn(t))||ce(e,t))}let tt=null,Bs=null;function $r(e){const t=tt;return tt=e,Bs=e&&e.type.__scopeId||null,t}function _f(e,t=tt,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&ul(-1);const i=$r(t);let l;try{l=e(...o)}finally{$r(i),r._d&&ul(1)}return l};return r._n=!0,r._c=!0,r._d=!0,r}function fo(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:i,propsOptions:[l],slots:s,attrs:a,emit:c,render:u,renderCache:d,data:p,setupState:m,ctx:b,inheritAttrs:E}=e;let w,y;const R=$r(e);try{if(n.shapeFlag&4){const P=o||r,V=P;w=ft(u.call(V,P,d,i,m,p,b)),y=a}else{const P=t;w=ft(P.length>1?P(i,{attrs:a,slots:s,emit:c}):P(i,null)),y=t.props?a:gf(a)}}catch(P){Kn.length=0,ar(P,e,1),w=Re(it)}let g=w;if(y&&E!==!1){const P=Object.keys(y),{shapeFlag:V}=g;P.length&&V&7&&(l&&P.some(oi)&&(y=bf(y,l)),g=Ut(g,y))}return n.dirs&&(g=Ut(g),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),w=g,$r(R),w}const gf=e=>{let t;for(const n in e)(n==="class"||n==="style"||ir(n))&&((t||(t={}))[n]=e[n]);return t},bf=(e,t)=>{const n={};for(const r in e)(!oi(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function yf(e,t,n){const{props:r,children:o,component:i}=e,{props:l,children:s,patchFlag:a}=t,c=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?Xi(r,l,c):!!l;if(a&8){const u=t.dynamicProps;for(let d=0;de.__isSuspense;function js(e,t){t&&t.pendingBranch?X(e)?t.effects.push(...e):t.effects.push(e):hf(e)}const Lf=Symbol.for("v-scx"),Rf=()=>_e(Lf);function Ws(e,t){return gi(e,null,t)}const wr={};function fe(e,t,n){return gi(e,t,n)}function gi(e,t,{immediate:n,deep:r,flush:o,once:i,onTrack:l,onTrigger:s}=we){if(t&&i){const L=t;t=(...$)=>{L(...$),V()}}const a=Se,c=L=>r===!0?L:hn(L,r===!1?1:void 0);let u,d=!1,p=!1;if(De(e)?(u=()=>e.value,d=Dr(e)):bn(e)?(u=()=>c(e),d=!0):X(e)?(p=!0,d=e.some(L=>bn(L)||Dr(L)),u=()=>e.map(L=>{if(De(L))return L.value;if(bn(L))return c(L);if(oe(L))return Wt(L,a,2)})):oe(e)?t?u=()=>Wt(e,a,2):u=()=>(m&&m(),rt(e,a,3,[b])):u=et,t&&r){const L=u;u=()=>hn(L())}let m,b=L=>{m=g.onStop=()=>{Wt(L,a,4),m=g.onStop=void 0}},E;if(dr)if(b=et,t?n&&rt(t,a,3,[u(),p?[]:void 0,b]):u(),o==="sync"){const L=Rf();E=L.__watcherHandles||(L.__watcherHandles=[])}else return et;let w=p?new Array(e.length).fill(wr):wr;const y=()=>{if(!(!g.active||!g.dirty))if(t){const L=g.run();(r||d||(p?L.some(($,S)=>qt($,w[S])):qt(L,w)))&&(m&&m(),rt(t,a,3,[L,w===wr?void 0:p&&w[0]===wr?[]:w,b]),w=L)}else g.run()};y.allowRecurse=!!t;let R;o==="sync"?R=y:o==="post"?R=()=>Be(y,a&&a.suspense):(y.pre=!0,a&&(y.id=a.uid),R=()=>Qr(y));const g=new ci(u,et,R),P=gs(),V=()=>{g.stop(),P&&ii(P.effects,g)};return t?n?y():w=g.run():o==="post"?Be(g.run.bind(g),a&&a.suspense):g.run(),E&&E.push(V),V}function Pf(e,t,n){const r=this.proxy,o=ue(e)?e.includes(".")?qs(r,e):()=>r[e]:e.bind(r,r);let i;oe(t)?i=t:(i=t.handler,n=t);const l=fr(this),s=gi(o,i.bind(r),n);return l(),s}function qs(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o0){if(n>=t)return e;n++}if(r=r||new Set,r.has(e))return e;if(r.add(e),De(e))hn(e.value,t,n,r);else if(X(e))for(let o=0;o{hn(o,t,n,r)});else if(Tu(e))for(const o in e)hn(e[o],t,n,r);return e}function _t(e,t,n,r){const o=e.dirs,i=t&&t.dirs;for(let l=0;l{e.isMounted=!0}),yi(()=>{e.isUnmounting=!0}),e}const Qe=[Function,Array],Ks={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Qe,onEnter:Qe,onAfterEnter:Qe,onEnterCancelled:Qe,onBeforeLeave:Qe,onLeave:Qe,onAfterLeave:Qe,onLeaveCancelled:Qe,onBeforeAppear:Qe,onAppear:Qe,onAfterAppear:Qe,onAppearCancelled:Qe},If={name:"BaseTransition",props:Ks,setup(e,{slots:t}){const n=kn(),r=Us();let o;return()=>{const i=t.default&&bi(t.default(),!0);if(!i||!i.length)return;let l=i[0];if(i.length>1){for(const E of i)if(E.type!==it){l=E;break}}const s=le(e),{mode:a}=s;if(r.isLeaving)return po(l);const c=tl(l);if(!c)return po(l);const u=er(c,s,r,n);tr(c,u);const d=n.subTree,p=d&&tl(d);let m=!1;const{getTransitionKey:b}=c.type;if(b){const E=b();o===void 0?o=E:E!==o&&(o=E,m=!0)}if(p&&p.type!==it&&(!Qt(c,p)||m)){const E=er(p,s,r,n);if(tr(p,E),a==="out-in")return r.isLeaving=!0,E.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},po(l);a==="in-out"&&c.type!==it&&(E.delayLeave=(w,y,R)=>{const g=Gs(r,p);g[String(p.key)]=p,w[zt]=()=>{y(),w[zt]=void 0,delete u.delayedLeave},u.delayedLeave=R})}return l}}},Of=If;function Gs(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function er(e,t,n,r){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:s,onEnter:a,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:d,onLeave:p,onAfterLeave:m,onLeaveCancelled:b,onBeforeAppear:E,onAppear:w,onAfterAppear:y,onAppearCancelled:R}=t,g=String(e.key),P=Gs(n,e),V=(S,D)=>{S&&rt(S,r,9,D)},L=(S,D)=>{const F=D[1];V(S,D),X(S)?S.every(Z=>Z.length<=1)&&F():S.length<=1&&F()},$={mode:i,persisted:l,beforeEnter(S){let D=s;if(!n.isMounted)if(o)D=E||s;else return;S[zt]&&S[zt](!0);const F=P[g];F&&Qt(e,F)&&F.el[zt]&&F.el[zt](),V(D,[S])},enter(S){let D=a,F=c,Z=u;if(!n.isMounted)if(o)D=w||a,F=y||c,Z=R||u;else return;let B=!1;const te=S[Tr]=Te=>{B||(B=!0,Te?V(Z,[S]):V(F,[S]),$.delayedLeave&&$.delayedLeave(),S[Tr]=void 0)};D?L(D,[S,te]):te()},leave(S,D){const F=String(e.key);if(S[Tr]&&S[Tr](!0),n.isUnmounting)return D();V(d,[S]);let Z=!1;const B=S[zt]=te=>{Z||(Z=!0,D(),te?V(b,[S]):V(m,[S]),S[zt]=void 0,P[F]===e&&delete P[F])};P[F]=e,p?L(p,[S,B]):B()},clone(S){return er(S,t,n,r)}};return $}function po(e){if(cr(e))return e=Ut(e),e.children=null,e}function tl(e){return cr(e)?e.children?e.children[0]:void 0:e}function tr(e,t){e.shapeFlag&6&&e.component?tr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function bi(e,t=!1,n){let r=[],o=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function A(e){oe(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:i,suspensible:l=!0,onError:s}=e;let a=null,c,u=0;const d=()=>(u++,a=null,p()),p=()=>{let m;return a||(m=a=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),s)return new Promise((E,w)=>{s(b,()=>E(d()),()=>w(b),u+1)});throw b}).then(b=>m!==a&&a?a:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),c=b,b)))};return K({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return c},setup(){const m=Se;if(c)return()=>ho(c,m);const b=R=>{a=null,ar(R,m,13,!r)};if(l&&m.suspense||dr)return p().then(R=>()=>ho(R,m)).catch(R=>(b(R),()=>r?Re(r,{error:R}):null));const E=ee(!1),w=ee(),y=ee(!!o);return o&&setTimeout(()=>{y.value=!1},o),i!=null&&setTimeout(()=>{if(!E.value&&!w.value){const R=new Error(`Async component timed out after ${i}ms.`);b(R),w.value=R}},i),p().then(()=>{E.value=!0,m.parent&&cr(m.parent.vnode)&&(m.parent.effect.dirty=!0,Qr(m.parent.update))}).catch(R=>{b(R),w.value=R}),()=>{if(E.value&&c)return ho(c,m);if(w.value&&r)return Re(r,{error:w.value});if(n&&!y.value)return Re(n)}}})}function ho(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,l=Re(e,r,o);return l.ref=n,l.ce=i,delete t.vnode.ce,l}const cr=e=>e.type.__isKeepAlive;function xf(e,t){Ys(e,"a",t)}function kf(e,t){Ys(e,"da",t)}function Ys(e,t,n=Se){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Xr(t,r,n),n){let o=n.parent;for(;o&&o.parent;)cr(o.parent.vnode)&&Cf(r,t,n,o),o=o.parent}}function Cf(e,t,n,r){const o=Xr(t,e,r,!0);ur(()=>{ii(r[t],o)},n)}function Xr(e,t,n=Se,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{if(n.isUnmounted)return;rn();const s=fr(n),a=rt(t,n,e,l);return s(),on(),a});return r?o.unshift(i):o.push(i),i}}const Ct=e=>(t,n=Se)=>(!dr||e==="sp")&&Xr(e,(...r)=>t(...r),n),Sf=Ct("bm"),ge=Ct("m"),Df=Ct("bu"),Zs=Ct("u"),yi=Ct("bum"),ur=Ct("um"),Vf=Ct("sp"),Mf=Ct("rtg"),$f=Ct("rtc");function Nf(e,t=Se){Xr("ec",e,t)}const No=e=>e?fa(e)?Ai(e)||e.proxy:No(e.parent):null,qn=xe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>No(e.parent),$root:e=>No(e.root),$emit:e=>e.emit,$options:e=>Ei(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Qr(e.update)}),$nextTick:e=>e.n||(e.n=sn.bind(e.proxy)),$watch:e=>Pf.bind(e)}),vo=(e,t)=>e!==we&&!e.__isScriptSetup&&ce(e,t),zf={get({_:e},t){const{ctx:n,setupState:r,data:o,props:i,accessCache:l,type:s,appContext:a}=e;let c;if(t[0]!=="$"){const m=l[t];if(m!==void 0)switch(m){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(vo(r,t))return l[t]=1,r[t];if(o!==we&&ce(o,t))return l[t]=2,o[t];if((c=e.propsOptions[0])&&ce(c,t))return l[t]=3,i[t];if(n!==we&&ce(n,t))return l[t]=4,n[t];zo&&(l[t]=0)}}const u=qn[t];let d,p;if(u)return t==="$attrs"&&je(e,"get",t),u(e);if((d=s.__cssModules)&&(d=d[t]))return d;if(n!==we&&ce(n,t))return l[t]=4,n[t];if(p=a.config.globalProperties,ce(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return vo(o,t)?(o[t]=n,!0):r!==we&&ce(r,t)?(r[t]=n,!0):ce(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:i}},l){let s;return!!n[l]||e!==we&&ce(e,l)||vo(t,l)||(s=i[0])&&ce(s,l)||ce(r,l)||ce(qn,l)||ce(o.config.globalProperties,l)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ce(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function nl(e){return X(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let zo=!0;function Ff(e){const t=Ei(e),n=e.proxy,r=e.ctx;zo=!1,t.beforeCreate&&rl(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:l,watch:s,provide:a,inject:c,created:u,beforeMount:d,mounted:p,beforeUpdate:m,updated:b,activated:E,deactivated:w,beforeDestroy:y,beforeUnmount:R,destroyed:g,unmounted:P,render:V,renderTracked:L,renderTriggered:$,errorCaptured:S,serverPrefetch:D,expose:F,inheritAttrs:Z,components:B,directives:te,filters:Te}=t;if(c&&Bf(c,r,null),l)for(const ne in l){const G=l[ne];oe(G)&&(r[ne]=G.bind(n))}if(o){const ne=o.call(n,n);Ae(ne)&&(e.data=sr(ne))}if(zo=!0,i)for(const ne in i){const G=i[ne],Ie=oe(G)?G.bind(n,n):oe(G.get)?G.get.bind(n,n):et,ht=!oe(G)&&oe(G.set)?G.set.bind(n):et,Ze=I({get:Ie,set:ht});Object.defineProperty(r,ne,{enumerable:!0,configurable:!0,get:()=>Ze.value,set:ke=>Ze.value=ke})}if(s)for(const ne in s)Qs(s[ne],r,n,ne);if(a){const ne=oe(a)?a.call(n):a;Reflect.ownKeys(ne).forEach(G=>{nn(G,ne[G])})}u&&rl(u,e,"c");function U(ne,G){X(G)?G.forEach(Ie=>ne(Ie.bind(n))):G&&ne(G.bind(n))}if(U(Sf,d),U(ge,p),U(Df,m),U(Zs,b),U(xf,E),U(kf,w),U(Nf,S),U($f,L),U(Mf,$),U(yi,R),U(ur,P),U(Vf,D),X(F))if(F.length){const ne=e.exposed||(e.exposed={});F.forEach(G=>{Object.defineProperty(ne,G,{get:()=>n[G],set:Ie=>n[G]=Ie})})}else e.exposed||(e.exposed={});V&&e.render===et&&(e.render=V),Z!=null&&(e.inheritAttrs=Z),B&&(e.components=B),te&&(e.directives=te)}function Bf(e,t,n=et){X(e)&&(e=Fo(e));for(const r in e){const o=e[r];let i;Ae(o)?"default"in o?i=_e(o.from||r,o.default,!0):i=_e(o.from||r):i=_e(o),De(i)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[r]=i}}function rl(e,t,n){rt(X(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Qs(e,t,n,r){const o=r.includes(".")?qs(n,r):()=>n[r];if(ue(e)){const i=t[e];oe(i)&&fe(o,i)}else if(oe(e))fe(o,e.bind(n));else if(Ae(e))if(X(e))e.forEach(i=>Qs(i,t,n,r));else{const i=oe(e.handler)?e.handler.bind(n):t[e.handler];oe(i)&&fe(o,i,e)}}function Ei(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,s=i.get(t);let a;return s?a=s:!o.length&&!n&&!r?a=t:(a={},o.length&&o.forEach(c=>Nr(a,c,l,!0)),Nr(a,t,l)),Ae(t)&&i.set(t,a),a}function Nr(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&Nr(e,i,n,!0),o&&o.forEach(l=>Nr(e,l,n,!0));for(const l in t)if(!(r&&l==="expose")){const s=Hf[l]||n&&n[l];e[l]=s?s(e[l],t[l]):t[l]}return e}const Hf={data:ol,props:il,emits:il,methods:Bn,computed:Bn,beforeCreate:Ne,created:Ne,beforeMount:Ne,mounted:Ne,beforeUpdate:Ne,updated:Ne,beforeDestroy:Ne,beforeUnmount:Ne,destroyed:Ne,unmounted:Ne,activated:Ne,deactivated:Ne,errorCaptured:Ne,serverPrefetch:Ne,components:Bn,directives:Bn,watch:Wf,provide:ol,inject:jf};function ol(e,t){return t?e?function(){return xe(oe(e)?e.call(this,this):e,oe(t)?t.call(this,this):t)}:t:e}function jf(e,t){return Bn(Fo(e),Fo(t))}function Fo(e){if(X(e)){const t={};for(let n=0;n1)return n&&oe(t)?t.call(r&&r.proxy):t}}function Kf(e,t,n,r=!1){const o={},i={};Cr(i,eo,1),e.propsDefaults=Object.create(null),Xs(e,t,o,i);for(const l in e.propsOptions[0])l in o||(o[l]=void 0);n?e.props=r?o:xs(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function Gf(e,t,n,r){const{props:o,attrs:i,vnode:{patchFlag:l}}=e,s=le(o),[a]=e.propsOptions;let c=!1;if((r||l>0)&&!(l&16)){if(l&8){const u=e.vnode.dynamicProps;for(let d=0;d{a=!0;const[p,m]=ea(d,t,!0);xe(l,p),m&&s.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!i&&!a)return Ae(e)&&r.set(e,gn),gn;if(X(i))for(let u=0;u-1,m[1]=E<0||b-1||ce(m,"default"))&&s.push(d)}}}const c=[l,s];return Ae(e)&&r.set(e,c),c}function ll(e){return e[0]!=="$"}function sl(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function al(e,t){return sl(e)===sl(t)}function cl(e,t){return X(t)?t.findIndex(n=>al(n,e)):oe(t)&&al(t,e)?0:-1}const ta=e=>e[0]==="_"||e==="$stable",wi=e=>X(e)?e.map(ft):[ft(e)],Yf=(e,t,n)=>{if(t._n)return t;const r=_f((...o)=>wi(t(...o)),n);return r._c=!1,r},na=(e,t,n)=>{const r=e._ctx;for(const o in e){if(ta(o))continue;const i=e[o];if(oe(i))t[o]=Yf(o,i,r);else if(i!=null){const l=wi(i);t[o]=()=>l}}},ra=(e,t)=>{const n=wi(t);e.slots.default=()=>n},Zf=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=le(t),Cr(t,"_",n)):na(t,e.slots={})}else e.slots={},t&&ra(e,t);Cr(e.slots,eo,1)},Qf=(e,t,n)=>{const{vnode:r,slots:o}=e;let i=!0,l=we;if(r.shapeFlag&32){const s=t._;s?n&&s===1?i=!1:(xe(o,t),!n&&s===1&&delete o._):(i=!t.$stable,na(t,o)),l=t}else t&&(ra(e,t),l={default:1});if(i)for(const s in o)!ta(s)&&l[s]==null&&delete o[s]};function Fr(e,t,n,r,o=!1){if(X(e)){e.forEach((p,m)=>Fr(p,t&&(X(t)?t[m]:t),n,r,o));return}if(Wn(r)&&!o)return;const i=r.shapeFlag&4?Ai(r.component)||r.component.proxy:r.el,l=o?null:i,{i:s,r:a}=e,c=t&&t.r,u=s.refs===we?s.refs={}:s.refs,d=s.setupState;if(c!=null&&c!==a&&(ue(c)?(u[c]=null,ce(d,c)&&(d[c]=null)):De(c)&&(c.value=null)),oe(a))Wt(a,s,12,[l,u]);else{const p=ue(a),m=De(a);if(p||m){const b=()=>{if(e.f){const E=p?ce(d,a)?d[a]:u[a]:a.value;o?X(E)&&ii(E,i):X(E)?E.includes(i)||E.push(i):p?(u[a]=[i],ce(d,a)&&(d[a]=u[a])):(a.value=[i],e.k&&(u[e.k]=a.value))}else p?(u[a]=l,ce(d,a)&&(d[a]=l)):m&&(a.value=l,e.k&&(u[e.k]=l))};l?(b.id=-1,Be(b,n)):b()}}}let Dt=!1;const Jf=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Xf=e=>e.namespaceURI.includes("MathML"),Ar=e=>{if(Jf(e))return"svg";if(Xf(e))return"mathml"},Lr=e=>e.nodeType===8;function ed(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:i,parentNode:l,remove:s,insert:a,createComment:c}}=e,u=(g,P)=>{if(!P.hasChildNodes()){n(null,g,P),Mr(),P._vnode=g;return}Dt=!1,d(P.firstChild,g,null,null,null),Mr(),P._vnode=g,Dt&&console.error("Hydration completed but contains mismatches.")},d=(g,P,V,L,$,S=!1)=>{const D=Lr(g)&&g.data==="[",F=()=>E(g,P,V,L,$,D),{type:Z,ref:B,shapeFlag:te,patchFlag:Te}=P;let ye=g.nodeType;P.el=g,Te===-2&&(S=!1,P.dynamicChildren=null);let U=null;switch(Z){case An:ye!==3?P.children===""?(a(P.el=o(""),l(g),g),U=g):U=F():(g.data!==P.children&&(Dt=!0,g.data=P.children),U=i(g));break;case it:R(g)?(U=i(g),y(P.el=g.content.firstChild,g,V)):ye!==8||D?U=F():U=i(g);break;case Un:if(D&&(g=i(g),ye=g.nodeType),ye===1||ye===3){U=g;const ne=!P.children.length;for(let G=0;G{S=S||!!P.dynamicChildren;const{type:D,props:F,patchFlag:Z,shapeFlag:B,dirs:te,transition:Te}=P,ye=D==="input"||D==="option";if(ye||Z!==-1){te&&_t(P,null,V,"created");let U=!1;if(R(g)){U=oa(L,Te)&&V&&V.vnode.props&&V.vnode.props.appear;const G=g.content.firstChild;U&&Te.beforeEnter(G),y(G,g,V),P.el=g=G}if(B&16&&!(F&&(F.innerHTML||F.textContent))){let G=m(g.firstChild,P,g,V,L,$,S);for(;G;){Dt=!0;const Ie=G;G=G.nextSibling,s(Ie)}}else B&8&&g.textContent!==P.children&&(Dt=!0,g.textContent=P.children);if(F)if(ye||!S||Z&48)for(const G in F)(ye&&(G.endsWith("value")||G==="indeterminate")||ir(G)&&!jn(G)||G[0]===".")&&r(g,G,null,F[G],void 0,void 0,V);else F.onClick&&r(g,"onClick",null,F.onClick,void 0,void 0,V);let ne;(ne=F&&F.onVnodeBeforeMount)&&Je(ne,V,P),te&&_t(P,null,V,"beforeMount"),((ne=F&&F.onVnodeMounted)||te||U)&&js(()=>{ne&&Je(ne,V,P),U&&Te.enter(g),te&&_t(P,null,V,"mounted")},L)}return g.nextSibling},m=(g,P,V,L,$,S,D)=>{D=D||!!P.dynamicChildren;const F=P.children,Z=F.length;for(let B=0;B{const{slotScopeIds:D}=P;D&&($=$?$.concat(D):D);const F=l(g),Z=m(i(g),P,F,V,L,$,S);return Z&&Lr(Z)&&Z.data==="]"?i(P.anchor=Z):(Dt=!0,a(P.anchor=c("]"),F,Z),Z)},E=(g,P,V,L,$,S)=>{if(Dt=!0,P.el=null,S){const Z=w(g);for(;;){const B=i(g);if(B&&B!==Z)s(B);else break}}const D=i(g),F=l(g);return s(g),n(null,P,F,D,V,L,Ar(F),$),D},w=(g,P="[",V="]")=>{let L=0;for(;g;)if(g=i(g),g&&Lr(g)&&(g.data===P&&L++,g.data===V)){if(L===0)return i(g);L--}return g},y=(g,P,V)=>{const L=P.parentNode;L&&L.replaceChild(g,P);let $=V;for(;$;)$.vnode.el===P&&($.vnode.el=$.subTree.el=g),$=$.parent},R=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[u,d]}const Be=js;function td(e){return nd(e,ed)}function nd(e,t){const n=ms();n.__VUE__=!0;const{insert:r,remove:o,patchProp:i,createElement:l,createText:s,createComment:a,setText:c,setElementText:u,parentNode:d,nextSibling:p,setScopeId:m=et,insertStaticContent:b}=e,E=(v,_,T,k=null,x=null,N=null,j=void 0,M=null,z=!!_.dynamicChildren)=>{if(v===_)return;v&&!Qt(v,_)&&(k=O(v),ke(v,x,N,!0),v=null),_.patchFlag===-2&&(z=!1,_.dynamicChildren=null);const{type:C,ref:q,shapeFlag:J}=_;switch(C){case An:w(v,_,T,k);break;case it:y(v,_,T,k);break;case Un:v==null&&R(_,T,k,j);break;case Ge:B(v,_,T,k,x,N,j,M,z);break;default:J&1?V(v,_,T,k,x,N,j,M,z):J&6?te(v,_,T,k,x,N,j,M,z):(J&64||J&128)&&C.process(v,_,T,k,x,N,j,M,z,Y)}q!=null&&x&&Fr(q,v&&v.ref,N,_||v,!_)},w=(v,_,T,k)=>{if(v==null)r(_.el=s(_.children),T,k);else{const x=_.el=v.el;_.children!==v.children&&c(x,_.children)}},y=(v,_,T,k)=>{v==null?r(_.el=a(_.children||""),T,k):_.el=v.el},R=(v,_,T,k)=>{[v.el,v.anchor]=b(v.children,_,T,k,v.el,v.anchor)},g=({el:v,anchor:_},T,k)=>{let x;for(;v&&v!==_;)x=p(v),r(v,T,k),v=x;r(_,T,k)},P=({el:v,anchor:_})=>{let T;for(;v&&v!==_;)T=p(v),o(v),v=T;o(_)},V=(v,_,T,k,x,N,j,M,z)=>{_.type==="svg"?j="svg":_.type==="math"&&(j="mathml"),v==null?L(_,T,k,x,N,j,M,z):D(v,_,x,N,j,M,z)},L=(v,_,T,k,x,N,j,M)=>{let z,C;const{props:q,shapeFlag:J,transition:Q,dirs:re}=v;if(z=v.el=l(v.type,N,q&&q.is,q),J&8?u(z,v.children):J&16&&S(v.children,z,null,k,x,mo(v,N),j,M),re&&_t(v,null,k,"created"),$(z,v,v.scopeId,j,k),q){for(const he in q)he!=="value"&&!jn(he)&&i(z,he,null,q[he],N,v.children,k,x,Oe);"value"in q&&i(z,"value",null,q.value,N),(C=q.onVnodeBeforeMount)&&Je(C,k,v)}re&&_t(v,null,k,"beforeMount");const ie=oa(x,Q);ie&&Q.beforeEnter(z),r(z,_,T),((C=q&&q.onVnodeMounted)||ie||re)&&Be(()=>{C&&Je(C,k,v),ie&&Q.enter(z),re&&_t(v,null,k,"mounted")},x)},$=(v,_,T,k,x)=>{if(T&&m(v,T),k)for(let N=0;N{for(let C=z;C{const M=_.el=v.el;let{patchFlag:z,dynamicChildren:C,dirs:q}=_;z|=v.patchFlag&16;const J=v.props||we,Q=_.props||we;let re;if(T&&Gt(T,!1),(re=Q.onVnodeBeforeUpdate)&&Je(re,T,_,v),q&&_t(_,v,T,"beforeUpdate"),T&&Gt(T,!0),C?F(v.dynamicChildren,C,M,T,k,mo(_,x),N):j||G(v,_,M,null,T,k,mo(_,x),N,!1),z>0){if(z&16)Z(M,_,J,Q,T,k,x);else if(z&2&&J.class!==Q.class&&i(M,"class",null,Q.class,x),z&4&&i(M,"style",J.style,Q.style,x),z&8){const ie=_.dynamicProps;for(let he=0;he{re&&Je(re,T,_,v),q&&_t(_,v,T,"updated")},k)},F=(v,_,T,k,x,N,j)=>{for(let M=0;M<_.length;M++){const z=v[M],C=_[M],q=z.el&&(z.type===Ge||!Qt(z,C)||z.shapeFlag&70)?d(z.el):T;E(z,C,q,null,k,x,N,j,!0)}},Z=(v,_,T,k,x,N,j)=>{if(T!==k){if(T!==we)for(const M in T)!jn(M)&&!(M in k)&&i(v,M,T[M],null,j,_.children,x,N,Oe);for(const M in k){if(jn(M))continue;const z=k[M],C=T[M];z!==C&&M!=="value"&&i(v,M,C,z,j,_.children,x,N,Oe)}"value"in k&&i(v,"value",T.value,k.value,j)}},B=(v,_,T,k,x,N,j,M,z)=>{const C=_.el=v?v.el:s(""),q=_.anchor=v?v.anchor:s("");let{patchFlag:J,dynamicChildren:Q,slotScopeIds:re}=_;re&&(M=M?M.concat(re):re),v==null?(r(C,T,k),r(q,T,k),S(_.children||[],T,q,x,N,j,M,z)):J>0&&J&64&&Q&&v.dynamicChildren?(F(v.dynamicChildren,Q,T,x,N,j,M),(_.key!=null||x&&_===x.subTree)&&ia(v,_,!0)):G(v,_,T,q,x,N,j,M,z)},te=(v,_,T,k,x,N,j,M,z)=>{_.slotScopeIds=M,v==null?_.shapeFlag&512?x.ctx.activate(_,T,k,j,z):Te(_,T,k,x,N,j,z):ye(v,_,z)},Te=(v,_,T,k,x,N,j)=>{const M=v.component=pd(v,k,x);if(cr(v)&&(M.ctx.renderer=Y),hd(M),M.asyncDep){if(x&&x.registerDep(M,U),!v.el){const z=M.subTree=Re(it);y(null,z,_,T)}}else U(M,v,_,T,x,N,j)},ye=(v,_,T)=>{const k=_.component=v.component;if(yf(v,_,T))if(k.asyncDep&&!k.asyncResolved){ne(k,_,T);return}else k.next=_,pf(k.update),k.effect.dirty=!0,k.update();else _.el=v.el,k.vnode=_},U=(v,_,T,k,x,N,j)=>{const M=()=>{if(v.isMounted){let{next:q,bu:J,u:Q,parent:re,vnode:ie}=v;{const un=la(v);if(un){q&&(q.el=ie.el,ne(v,q,j)),un.asyncDep.then(()=>{v.isUnmounted||M()});return}}let he=q,Ee;Gt(v,!1),q?(q.el=ie.el,ne(v,q,j)):q=ie,J&&uo(J),(Ee=q.props&&q.props.onVnodeBeforeUpdate)&&Je(Ee,re,q,ie),Gt(v,!0);const Ce=fo(v),ct=v.subTree;v.subTree=Ce,E(ct,Ce,d(ct.el),O(ct),v,x,N),q.el=Ce.el,he===null&&Ef(v,Ce.el),Q&&Be(Q,x),(Ee=q.props&&q.props.onVnodeUpdated)&&Be(()=>Je(Ee,re,q,ie),x)}else{let q;const{el:J,props:Q}=_,{bm:re,m:ie,parent:he}=v,Ee=Wn(_);if(Gt(v,!1),re&&uo(re),!Ee&&(q=Q&&Q.onVnodeBeforeMount)&&Je(q,he,_),Gt(v,!0),J&&me){const Ce=()=>{v.subTree=fo(v),me(J,v.subTree,v,x,null)};Ee?_.type.__asyncLoader().then(()=>!v.isUnmounted&&Ce()):Ce()}else{const Ce=v.subTree=fo(v);E(null,Ce,T,k,v,x,N),_.el=Ce.el}if(ie&&Be(ie,x),!Ee&&(q=Q&&Q.onVnodeMounted)){const Ce=_;Be(()=>Je(q,he,Ce),x)}(_.shapeFlag&256||he&&Wn(he.vnode)&&he.vnode.shapeFlag&256)&&v.a&&Be(v.a,x),v.isMounted=!0,_=T=k=null}},z=v.effect=new ci(M,et,()=>Qr(C),v.scope),C=v.update=()=>{z.dirty&&z.run()};C.id=v.uid,Gt(v,!0),C()},ne=(v,_,T)=>{_.component=v;const k=v.vnode.props;v.vnode=_,v.next=null,Gf(v,_.props,k,T),Qf(v,_.children,T),rn(),Ji(v),on()},G=(v,_,T,k,x,N,j,M,z=!1)=>{const C=v&&v.children,q=v?v.shapeFlag:0,J=_.children,{patchFlag:Q,shapeFlag:re}=_;if(Q>0){if(Q&128){ht(C,J,T,k,x,N,j,M,z);return}else if(Q&256){Ie(C,J,T,k,x,N,j,M,z);return}}re&8?(q&16&&Oe(C,x,N),J!==C&&u(T,J)):q&16?re&16?ht(C,J,T,k,x,N,j,M,z):Oe(C,x,N,!0):(q&8&&u(T,""),re&16&&S(J,T,k,x,N,j,M,z))},Ie=(v,_,T,k,x,N,j,M,z)=>{v=v||gn,_=_||gn;const C=v.length,q=_.length,J=Math.min(C,q);let Q;for(Q=0;Qq?Oe(v,x,N,!0,!1,J):S(_,T,k,x,N,j,M,z,J)},ht=(v,_,T,k,x,N,j,M,z)=>{let C=0;const q=_.length;let J=v.length-1,Q=q-1;for(;C<=J&&C<=Q;){const re=v[C],ie=_[C]=z?Ft(_[C]):ft(_[C]);if(Qt(re,ie))E(re,ie,T,null,x,N,j,M,z);else break;C++}for(;C<=J&&C<=Q;){const re=v[J],ie=_[Q]=z?Ft(_[Q]):ft(_[Q]);if(Qt(re,ie))E(re,ie,T,null,x,N,j,M,z);else break;J--,Q--}if(C>J){if(C<=Q){const re=Q+1,ie=reQ)for(;C<=J;)ke(v[C],x,N,!0),C++;else{const re=C,ie=C,he=new Map;for(C=ie;C<=Q;C++){const Ue=_[C]=z?Ft(_[C]):ft(_[C]);Ue.key!=null&&he.set(Ue.key,C)}let Ee,Ce=0;const ct=Q-ie+1;let un=!1,Bi=0;const $n=new Array(ct);for(C=0;C=ct){ke(Ue,x,N,!0);continue}let mt;if(Ue.key!=null)mt=he.get(Ue.key);else for(Ee=ie;Ee<=Q;Ee++)if($n[Ee-ie]===0&&Qt(Ue,_[Ee])){mt=Ee;break}mt===void 0?ke(Ue,x,N,!0):($n[mt-ie]=C+1,mt>=Bi?Bi=mt:un=!0,E(Ue,_[mt],T,null,x,N,j,M,z),Ce++)}const Hi=un?rd($n):gn;for(Ee=Hi.length-1,C=ct-1;C>=0;C--){const Ue=ie+C,mt=_[Ue],ji=Ue+1{const{el:N,type:j,transition:M,children:z,shapeFlag:C}=v;if(C&6){Ze(v.component.subTree,_,T,k);return}if(C&128){v.suspense.move(_,T,k);return}if(C&64){j.move(v,_,T,Y);return}if(j===Ge){r(N,_,T);for(let J=0;JM.enter(N),x);else{const{leave:J,delayLeave:Q,afterLeave:re}=M,ie=()=>r(N,_,T),he=()=>{J(N,()=>{ie(),re&&re()})};Q?Q(N,ie,he):he()}else r(N,_,T)},ke=(v,_,T,k=!1,x=!1)=>{const{type:N,props:j,ref:M,children:z,dynamicChildren:C,shapeFlag:q,patchFlag:J,dirs:Q}=v;if(M!=null&&Fr(M,null,T,v,!0),q&256){_.ctx.deactivate(v);return}const re=q&1&&Q,ie=!Wn(v);let he;if(ie&&(he=j&&j.onVnodeBeforeUnmount)&&Je(he,_,v),q&6)vt(v.component,T,k);else{if(q&128){v.suspense.unmount(T,k);return}re&&_t(v,null,_,"beforeUnmount"),q&64?v.type.remove(v,_,T,x,Y,k):C&&(N!==Ge||J>0&&J&64)?Oe(C,_,T,!1,!0):(N===Ge&&J&384||!x&&q&16)&&Oe(z,_,T),k&&qe(v)}(ie&&(he=j&&j.onVnodeUnmounted)||re)&&Be(()=>{he&&Je(he,_,v),re&&_t(v,null,_,"unmounted")},T)},qe=v=>{const{type:_,el:T,anchor:k,transition:x}=v;if(_===Ge){Et(T,k);return}if(_===Un){P(v);return}const N=()=>{o(T),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(v.shapeFlag&1&&x&&!x.persisted){const{leave:j,delayLeave:M}=x,z=()=>j(T,N);M?M(v.el,N,z):z()}else N()},Et=(v,_)=>{let T;for(;v!==_;)T=p(v),o(v),v=T;o(_)},vt=(v,_,T)=>{const{bum:k,scope:x,update:N,subTree:j,um:M}=v;k&&uo(k),x.stop(),N&&(N.active=!1,ke(j,v,_,T)),M&&Be(M,_),Be(()=>{v.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&v.asyncDep&&!v.asyncResolved&&v.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},Oe=(v,_,T,k=!1,x=!1,N=0)=>{for(let j=N;jv.shapeFlag&6?O(v.component.subTree):v.shapeFlag&128?v.suspense.next():p(v.anchor||v.el);let W=!1;const H=(v,_,T)=>{v==null?_._vnode&&ke(_._vnode,null,null,!0):E(_._vnode||null,v,_,null,null,null,T),W||(W=!0,Ji(),Mr(),W=!1),_._vnode=v},Y={p:E,um:ke,m:Ze,r:qe,mt:Te,mc:S,pc:G,pbc:F,n:O,o:e};let se,me;return t&&([se,me]=t(Y)),{render:H,hydrate:se,createApp:Uf(H,se)}}function mo({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Gt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function oa(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ia(e,t,n=!1){const r=e.children,o=t.children;if(X(r)&&X(o))for(let i=0;i>1,e[n[s]]0&&(t[r]=n[i-1]),n[i]=r)}}for(i=n.length,l=n[i-1];i-- >0;)n[i]=l,l=t[l];return n}function la(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:la(t)}const od=e=>e.__isTeleport,Ge=Symbol.for("v-fgt"),An=Symbol.for("v-txt"),it=Symbol.for("v-cmt"),Un=Symbol.for("v-stc"),Kn=[];let dt=null;function id(e=!1){Kn.push(dt=e?null:[])}function ld(){Kn.pop(),dt=Kn[Kn.length-1]||null}let nr=1;function ul(e){nr+=e}function sa(e){return e.dynamicChildren=nr>0?dt||gn:null,ld(),nr>0&&dt&&dt.push(e),e}function R1(e,t,n,r,o,i){return sa(ca(e,t,n,r,o,i,!0))}function sd(e,t,n,r,o){return sa(Re(e,t,n,r,o,!0))}function Ho(e){return e?e.__v_isVNode===!0:!1}function Qt(e,t){return e.type===t.type&&e.key===t.key}const eo="__vInternal",aa=({key:e})=>e??null,kr=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ue(e)||De(e)||oe(e)?{i:tt,r:e,k:t,f:!!n}:e:null);function ca(e,t=null,n=null,r=0,o=null,i=e===Ge?0:1,l=!1,s=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&aa(t),ref:t&&kr(t),scopeId:Bs,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:tt};return s?(Ti(a,n),i&128&&e.normalize(a)):n&&(a.shapeFlag|=ue(n)?8:16),nr>0&&!l&&dt&&(a.patchFlag>0||i&6)&&a.patchFlag!==32&&dt.push(a),a}const Re=ad;function ad(e,t=null,n=null,r=0,o=null,i=!1){if((!e||e===wf)&&(e=it),Ho(e)){const s=Ut(e,t,!0);return n&&Ti(s,n),nr>0&&!i&&dt&&(s.shapeFlag&6?dt[dt.indexOf(e)]=s:dt.push(s)),s.patchFlag|=-2,s}if(bd(e)&&(e=e.__vccOpts),t){t=cd(t);let{class:s,style:a}=t;s&&!ue(s)&&(t.class=ai(s)),Ae(a)&&(ks(a)&&!X(a)&&(a=xe({},a)),t.style=si(a))}const l=ue(e)?1:Af(e)?128:od(e)?64:Ae(e)?4:oe(e)?2:0;return ca(e,t,n,r,o,l,i,!0)}function cd(e){return e?ks(e)||eo in e?xe({},e):e:null}function Ut(e,t,n=!1){const{props:r,ref:o,patchFlag:i,children:l}=e,s=t?ud(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&aa(s),ref:t&&t.ref?n&&o?X(o)?o.concat(kr(t)):[o,kr(t)]:kr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ge?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ut(e.ssContent),ssFallback:e.ssFallback&&Ut(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ua(e=" ",t=0){return Re(An,null,e,t)}function P1(e,t){const n=Re(Un,null,e);return n.staticCount=t,n}function I1(e="",t=!1){return t?(id(),sd(it,null,e)):Re(it,null,e)}function ft(e){return e==null||typeof e=="boolean"?Re(it):X(e)?Re(Ge,null,e.slice()):typeof e=="object"?Ft(e):Re(An,null,String(e))}function Ft(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ut(e)}function Ti(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(X(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Ti(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(eo in t)?t._ctx=tt:o===3&&tt&&(tt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else oe(t)?(t={default:t,_ctx:tt},n=32):(t=String(t),r&64?(n=16,t=[ua(t)]):n=8);e.children=t,e.shapeFlag|=n}function ud(...e){const t={};for(let n=0;nSe||tt;let Br,jo;{const e=ms(),t=(n,r)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(r),i=>{o.length>1?o.forEach(l=>l(i)):o[0](i)}};Br=t("__VUE_INSTANCE_SETTERS__",n=>Se=n),jo=t("__VUE_SSR_SETTERS__",n=>dr=n)}const fr=e=>{const t=Se;return Br(e),e.scope.on(),()=>{e.scope.off(),Br(t)}},fl=()=>{Se&&Se.scope.off(),Br(null)};function fa(e){return e.vnode.shapeFlag&4}let dr=!1;function hd(e,t=!1){t&&jo(t);const{props:n,children:r}=e.vnode,o=fa(e);Kf(e,n,o,t),Zf(e,r);const i=o?vd(e,t):void 0;return t&&jo(!1),i}function vd(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Cs(new Proxy(e.ctx,zf));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?_d(e):null,i=fr(e);rn();const l=Wt(r,e,0,[e.props,o]);if(on(),i(),vs(l)){if(l.then(fl,fl),t)return l.then(s=>{dl(e,s,t)}).catch(s=>{ar(s,e,0)});e.asyncDep=l}else dl(e,l,t)}else da(e,t)}function dl(e,t,n){oe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ae(t)&&(e.setupState=Vs(t)),da(e,n)}let pl;function da(e,t,n){const r=e.type;if(!e.render){if(!t&&pl&&!r.render){const o=r.template||Ei(e).template;if(o){const{isCustomElement:i,compilerOptions:l}=e.appContext.config,{delimiters:s,compilerOptions:a}=r,c=xe(xe({isCustomElement:i,delimiters:s},l),a);r.render=pl(o,c)}}e.render=r.render||et}{const o=fr(e);rn();try{Ff(e)}finally{on(),o()}}}function md(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return je(e,"get","$attrs"),t[n]}}))}function _d(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return md(e)},slots:e.slots,emit:e.emit,expose:t}}function Ai(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Vs(Cs(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in qn)return qn[n](e)},has(t,n){return n in t||n in qn}}))}function gd(e,t=!0){return oe(e)?e.displayName||e.name:e.name||t&&e.__name}function bd(e){return oe(e)&&"__vccOpts"in e}const I=(e,t)=>rf(e,t,dr);function f(e,t,n){const r=arguments.length;return r===2?Ae(t)&&!X(t)?Ho(t)?Re(e,null,[t]):Re(e,t):Re(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Ho(n)&&(n=[n]),Re(e,t,n))}const yd="3.4.10";/** +* @vue/runtime-dom v3.4.10 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Ed="http://www.w3.org/2000/svg",wd="http://www.w3.org/1998/Math/MathML",Bt=typeof document<"u"?document:null,hl=Bt&&Bt.createElement("template"),Td={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t==="svg"?Bt.createElementNS(Ed,e):t==="mathml"?Bt.createElementNS(wd,e):Bt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Bt.createTextNode(e),createComment:e=>Bt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Bt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const l=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===i||!(o=o.nextSibling)););else{hl.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const s=hl.content;if(r==="svg"||r==="mathml"){const a=s.firstChild;for(;a.firstChild;)s.appendChild(a.firstChild);s.removeChild(a)}t.insertBefore(s,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Vt="transition",Nn="animation",Ln=Symbol("_vtc"),Ot=(e,{slots:t})=>f(Of,ha(e),t);Ot.displayName="Transition";const pa={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Ad=Ot.props=xe({},Ks,pa),Yt=(e,t=[])=>{X(e)?e.forEach(n=>n(...t)):e&&e(...t)},vl=e=>e?X(e)?e.some(t=>t.length>1):e.length>1:!1;function ha(e){const t={};for(const B in e)B in pa||(t[B]=e[B]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:a=i,appearActiveClass:c=l,appearToClass:u=s,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,b=Ld(o),E=b&&b[0],w=b&&b[1],{onBeforeEnter:y,onEnter:R,onEnterCancelled:g,onLeave:P,onLeaveCancelled:V,onBeforeAppear:L=y,onAppear:$=R,onAppearCancelled:S=g}=t,D=(B,te,Te)=>{$t(B,te?u:s),$t(B,te?c:l),Te&&Te()},F=(B,te)=>{B._isLeaving=!1,$t(B,d),$t(B,m),$t(B,p),te&&te()},Z=B=>(te,Te)=>{const ye=B?$:R,U=()=>D(te,B,Te);Yt(ye,[te,U]),ml(()=>{$t(te,B?a:i),Tt(te,B?u:s),vl(ye)||_l(te,r,E,U)})};return xe(t,{onBeforeEnter(B){Yt(y,[B]),Tt(B,i),Tt(B,l)},onBeforeAppear(B){Yt(L,[B]),Tt(B,a),Tt(B,c)},onEnter:Z(!1),onAppear:Z(!0),onLeave(B,te){B._isLeaving=!0;const Te=()=>F(B,te);Tt(B,d),ma(),Tt(B,p),ml(()=>{B._isLeaving&&($t(B,d),Tt(B,m),vl(P)||_l(B,r,w,Te))}),Yt(P,[B,Te])},onEnterCancelled(B){D(B,!1),Yt(g,[B])},onAppearCancelled(B){D(B,!0),Yt(S,[B])},onLeaveCancelled(B){F(B),Yt(V,[B])}})}function Ld(e){if(e==null)return null;if(Ae(e))return[_o(e.enter),_o(e.leave)];{const t=_o(e);return[t,t]}}function _o(e){return Pu(e)}function Tt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ln]||(e[Ln]=new Set)).add(t)}function $t(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Ln];n&&(n.delete(t),n.size||(e[Ln]=void 0))}function ml(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Rd=0;function _l(e,t,n,r){const o=e._endId=++Rd,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:l,timeout:s,propCount:a}=va(e,t);if(!l)return r();const c=l+"end";let u=0;const d=()=>{e.removeEventListener(c,p),i()},p=m=>{m.target===e&&++u>=a&&d()};setTimeout(()=>{u(n[b]||"").split(", "),o=r(`${Vt}Delay`),i=r(`${Vt}Duration`),l=gl(o,i),s=r(`${Nn}Delay`),a=r(`${Nn}Duration`),c=gl(s,a);let u=null,d=0,p=0;t===Vt?l>0&&(u=Vt,d=l,p=i.length):t===Nn?c>0&&(u=Nn,d=c,p=a.length):(d=Math.max(l,c),u=d>0?l>c?Vt:Nn:null,p=u?u===Vt?i.length:a.length:0);const m=u===Vt&&/\b(transform|all)(,|$)/.test(r(`${Vt}Property`).toString());return{type:u,timeout:d,propCount:p,hasTransform:m}}function gl(e,t){for(;e.lengthbl(n)+bl(e[r])))}function bl(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ma(){return document.body.offsetHeight}function Pd(e,t,n){const r=e[Ln];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Id=Symbol("_vod"),Od=Symbol("");function xd(e,t,n){const r=e.style,o=r.display,i=ue(n);if(n&&!i){if(t&&!ue(t))for(const l in t)n[l]==null&&Wo(r,l,"");for(const l in n)Wo(r,l,n[l])}else if(i){if(t!==n){const l=r[Od];l&&(n+=";"+l),r.cssText=n}}else t&&e.removeAttribute("style");Id in e&&(r.display=o)}const yl=/\s*!important$/;function Wo(e,t,n){if(X(n))n.forEach(r=>Wo(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=kd(e,t);yl.test(n)?e.setProperty(xn(r),n.replace(yl,""),"important"):e[r]=n}}const El=["Webkit","Moz","ms"],go={};function kd(e,t){const n=go[t];if(n)return n;let r=lt(t);if(r!=="filter"&&r in e)return go[t]=r;r=lr(r);for(let o=0;obo||(Nd.then(()=>bo=0),bo=Date.now());function Fd(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;rt(Bd(r,n.value),t,5,[r])};return n.value=e,n.attached=zd(),n}function Bd(e,t){if(X(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const Ll=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Hd=(e,t,n,r,o,i,l,s,a)=>{const c=o==="svg";t==="class"?Pd(e,r,c):t==="style"?xd(e,n,r):ir(t)?oi(t)||Md(e,t,n,r,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):jd(e,t,r,c))?Sd(e,t,r,i,l,s,a):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Cd(e,t,r,c))};function jd(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ll(t)&&oe(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Ll(t)&&ue(n)?!1:t in e}const _a=new WeakMap,ga=new WeakMap,Hr=Symbol("_moveCb"),Rl=Symbol("_enterCb"),ba={name:"TransitionGroup",props:xe({},Ad,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=kn(),r=Us();let o,i;return Zs(()=>{if(!o.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!Yd(o[0].el,n.vnode.el,l))return;o.forEach(Ud),o.forEach(Kd);const s=o.filter(Gd);ma(),s.forEach(a=>{const c=a.el,u=c.style;Tt(c,l),u.transform=u.webkitTransform=u.transitionDuration="";const d=c[Hr]=p=>{p&&p.target!==c||(!p||/transform$/.test(p.propertyName))&&(c.removeEventListener("transitionend",d),c[Hr]=null,$t(c,l))};c.addEventListener("transitionend",d)})}),()=>{const l=le(e),s=ha(l);let a=l.tag||Ge;o=i,i=t.default?bi(t.default()):[];for(let c=0;cdelete e.mode;ba.props;const qd=ba;function Ud(e){const t=e.el;t[Hr]&&t[Hr](),t[Rl]&&t[Rl]()}function Kd(e){ga.set(e,e.el.getBoundingClientRect())}function Gd(e){const t=_a.get(e),n=ga.get(e),r=t.left-n.left,o=t.top-n.top;if(r||o){const i=e.el.style;return i.transform=i.webkitTransform=`translate(${r}px,${o}px)`,i.transitionDuration="0s",e}}function Yd(e,t,n){const r=e.cloneNode(),o=e[Ln];o&&o.forEach(s=>{s.split(/\s+/).forEach(a=>a&&r.classList.remove(a))}),n.split(/\s+/).forEach(s=>s&&r.classList.add(s)),r.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(r);const{hasTransform:l}=va(r);return i.removeChild(r),l}const Zd=xe({patchProp:Hd},Td);let yo,Pl=!1;function Qd(){return yo=Pl?yo:td(Zd),Pl=!0,yo}const Jd=(...e)=>{const t=Qd().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=ep(r);if(o)return n(o,!0,Xd(o))},t};function Xd(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ep(e){return ue(e)?document.querySelector(e):e}const tp="modulepreload",np=function(e){return"/"+e},Il={},h=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link");o=Promise.all(n.map(l=>{if(l=np(l),l in Il)return;Il[l]=!0;const s=l.endsWith(".css"),a=s?'[rel="stylesheet"]':"";if(!!r)for(let d=i.length-1;d>=0;d--){const p=i[d];if(p.href===l&&(!s||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${a}`))return;const u=document.createElement("link");if(u.rel=s?"stylesheet":tp,s||(u.as="script",u.crossOrigin=""),u.href=l,document.head.appendChild(u),s)return new Promise((d,p)=>{u.addEventListener("load",d),u.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}return o.then(()=>t()).catch(i=>{const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i})},rp={"v-8daa1a0e":()=>h(()=>import("./index.html-Oh37e22D.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-fffb8e28":()=>h(()=>import("./index.html-ohZtz6Fw.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-43c96c34":()=>h(()=>import("./collaborative_projects.html-15UQQvPG.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-17f2914c":()=>h(()=>import("./contact.html-XWW2pZ29.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-07f943d9":()=>h(()=>import("./license.html-onnWhI1X.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-9e2e7e22":()=>h(()=>import("./thanks.html--KuWuTSm.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1d3d20e2":()=>h(()=>import("./use_cases.html-C-cj_NSV.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-639495b8":()=>h(()=>import("./index.html-QkbwDjsA.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2d0ad528":()=>h(()=>import("./index.html-A9z0_Hu7.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-58ff8a76":()=>h(()=>import("./index.html-qi3PncfW.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-07e28fb7":()=>h(()=>import("./oncetoken.html-JcsefotR.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5d588a76":()=>h(()=>import("./index.html-Acfu-WyI.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-67fe8904":()=>h(()=>import("./not_recommended_qq.html-g8E5V1Ie.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-9ef794be":()=>h(()=>import("./rtmp_playback_compatibility_issues.html-5avJPHVo.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-26771ae0":()=>h(()=>import("./index.html-Pl0D5fWX.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7c5f89f1":()=>h(()=>import("./compilation_instructions_for_windows_version.html-xl0PwINJ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2a95408c":()=>h(()=>import("./install_zlmediakit_using_vcpkg.html-_H3jokEy.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-410226d2":()=>h(()=>import("./start.html-I4A7uS59.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1a355af6":()=>h(()=>import("./index.html-TLmaTaqK.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f17856b6":()=>h(()=>import("./config_file.html-5j1Bx0Jx.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-326b1b06":()=>h(()=>import("./generate_ssl_self-signed_certificate_and_test.html-qSLRuImw.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f90651dc":()=>h(()=>import("./how_to_enable_https_related_functions.html-fcJ6Uozv.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-629229d1":()=>h(()=>import("./on-demand_push_streaming.html-kP6TQb2_.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-a3ed6f7c":()=>h(()=>import("./on-demand_streaming.html-2DvN-m5K.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-22d780d8":()=>h(()=>import("./play_url_rules.html-LU-zd-xr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-40777a42":()=>h(()=>import("./playback_authentication.html-wjgI-Yj5.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1c8baf7e":()=>h(()=>import("./push_authentication.html-qlfLynHw.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-d003c332":()=>h(()=>import("./push_test.html-gnFrDUbt.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-992f244c":()=>h(()=>import("./restful_api.html-vpWQQrW9.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1563923f":()=>h(()=>import("./sequence_diagram.html-yqJJFxQH.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3f9e2b34":()=>h(()=>import("./start_server.html-fcMybRlu.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4436fd0b":()=>h(()=>import("./web_hook_api.html-nXr7pFGe.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-fa0f55aa":()=>h(()=>import("./index.html-m59LkreQ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5d4ca3be":()=>h(()=>import("./index.html-XiIyF-Mz.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-29126422":()=>h(()=>import("./how_to_create_a_live_steam.html-Gq2b9Yi0.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-b1256428":()=>h(()=>import("./index.html-LSqTAwnp.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-099b9809":()=>h(()=>import("./hls_high_performance_journey.html-bBajAqE1.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-c75d9fee":()=>h(()=>import("./rtsp_performance_optimization.html-XwSQReWx.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-27716634":()=>h(()=>import("./index.html-3Pe7G9Sl.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3d1bfe27":()=>h(()=>import("./exclusive_features.html-2siFVq2G.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-61f35635":()=>h(()=>import("./high_concurrency_implementation_principle.html-opQWc8aM.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-60e3ff20":()=>h(()=>import("./introduction_to_streaming_media_related_technologies.html-O53gIrdK.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-716fbfe3":()=>h(()=>import("./rtsp_push_process.html-eeithr0y.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-159648d6":()=>h(()=>import("./the_nature_of_live_broadcast_delay.html-bGwDwg8A.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-07cf6867":()=>h(()=>import("./index.html-yjc28uoP.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2894bdb2":()=>h(()=>import("./dependency.html-re6FQDQF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-630bfad5":()=>h(()=>import("./rtmp_support_for_h265_and_opus.html-f4aPfFot.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-a9be237a":()=>h(()=>import("./video_conferencing_related_resources.html-1ZPXoBfM.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-770cb196":()=>h(()=>import("./zltoolkit_source_code_study_notes.html-XyGnG3Jc.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-60c5ec00":()=>h(()=>import("./index.html-Hvr1twkc.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7cf84008":()=>h(()=>import("./benchmark.html-xQUFyhUw.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-d8f6ac6a":()=>h(()=>import("./delay_test.html-_QomqbNh.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-adc6a8e4":()=>h(()=>import("./how_to_test_delay.html-GlLjeJYr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-ea3f92ca":()=>h(()=>import("./online_test.html-osni6C75.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-210a0a78":()=>h(()=>import("./performance_testing.html-DQL8Y_0H.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-27157219":()=>h(()=>import("./rtmp_pull_stream_performance_test.html-HQ4fzTKd.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-927f8538":()=>h(()=>import("./rtmp_push_stream_performance_test.html-BY1UVNB2.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3ede775a":()=>h(()=>import("./rtsp_pull_stream_performance_test.html-9hA9_SB-.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-703b8f9e":()=>h(()=>import("./rtsp_push_stream_performance_test.html-3UQhsyo8.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-47357bdb":()=>h(()=>import("./index.html-Q1OCSdNr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0a3cd263":()=>h(()=>import("./collaborative_projects.html-gRvZJ2_P.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-8b20cdea":()=>h(()=>import("./contact.html-nPftNmfa.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-633bb4ec":()=>h(()=>import("./license.html-ptTdZQ9a.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4bf4651e":()=>h(()=>import("./thanks.html-eseVCxC7.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7dceae00":()=>h(()=>import("./use_cases.html-nlOjewQC.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-ec228f2e":()=>h(()=>import("./index.html-JQu_RH6f.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-cb3c3b8e":()=>h(()=>import("./gb28181_sip_signaling_packet_capture.html-_63zZLPQ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-6fbaec55":()=>h(()=>import("./how_to_use_device_id_as_stream_id.html-ga4UcAIh.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-079ebd6a":()=>h(()=>import("./push_streaming.html-Z4VDPPfI.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-114c6ef6":()=>h(()=>import("./index.html-Rh0erDOb.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-d73f5e1e":()=>h(()=>import("./webrtc_compilation_and_use.html-u4uYYnLr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-284ed9d6":()=>h(()=>import("./webrtc_signaling_interaction_format.html-TjrAUdNc.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-515bc4e7":()=>h(()=>import("./index.html-jVaUOSmI.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-e1a99f30":()=>h(()=>import("./oncetoken.html-LPckM_ZY.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-763dee34":()=>h(()=>import("./index.html-X7WU_LPV.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-6ff7e8b5":()=>h(()=>import("./not_recommended_qq.html-Od4ztKJy.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-75521352":()=>h(()=>import("./rtmp_playback_compatibility_issues.html-RzirVjbt.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1b2bfecf":()=>h(()=>import("./index.html-BzbKxypT.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3c49c43c":()=>h(()=>import("./compilation_instructions_for_windows_version.html-Hq0AuZTz.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2139c386":()=>h(()=>import("./install_zlmediakit_using_vcpkg.html-lJ__kZwE.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4f36f1c6":()=>h(()=>import("./start.html-Jyh7sq9I.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7ac6e814":()=>h(()=>import("./index.html-qjMVLXfF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-76640c16":()=>h(()=>import("./config_file.html-i3ELg7s5.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-04c98dae":()=>h(()=>import("./generate_ssl_self-signed_certificate_and_test.html-7V6eG0vA.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-fc02997a":()=>h(()=>import("./how_to_enable_https_related_functions.html-mO3jYJnY.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-60a95200":()=>h(()=>import("./on-demand_push_streaming.html-crgN24-s.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-b991029a":()=>h(()=>import("./on-demand_streaming.html-5SBDxVes.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-78eb47c7":()=>h(()=>import("./play_url_rules.html-_eahSglS.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2459df9a":()=>h(()=>import("./playback_authentication.html-arMfpj8D.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-322f429c":()=>h(()=>import("./push_authentication.html-8JQfqi5E.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-c01103d0":()=>h(()=>import("./push_test.html-rQVB769L.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-baeeb56a":()=>h(()=>import("./restful_api.html-Xx1SUrzX.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-35a1596e":()=>h(()=>import("./sequence_diagram.html-y7tfUv_v.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3484e1e3":()=>h(()=>import("./start_server.html-rADXsgsy.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-391db3ba":()=>h(()=>import("./web_hook_api.html-F_kUu3X6.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-24dfef1c":()=>h(()=>import("./index.html-4qXHK4Yu.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7643e190":()=>h(()=>import("./index.html-lHFYswhu.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5a1c26c0":()=>h(()=>import("./how_to_create_a_live_steam.html-FHwnpSdN.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0938c35b":()=>h(()=>import("./index.html-CojxHtZz.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5298cc7a":()=>h(()=>import("./hls_high_performance_journey.html-bLztstJM.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-72fa89b8":()=>h(()=>import("./rtsp_performance_optimization.html-N4V23aKI.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4ea15ae3":()=>h(()=>import("./index.html-943vkdnv.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-324a3498":()=>h(()=>import("./exclusive_features.html-wTOG2Bjt.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-09d870a4":()=>h(()=>import("./high_concurrency_implementation_principle.html-sl-nIpjv.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-175b5aa1":()=>h(()=>import("./introduction_to_streaming_media_related_technologies.html-uFhGEBGc.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-79587752":()=>h(()=>import("./rtsp_push_process.html-MSFA7pR8.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3e321006":()=>h(()=>import("./the_nature_of_live_broadcast_delay.html--_Oe6F80.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2eff5d16":()=>h(()=>import("./index.html-oRdX7laQ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4a544ed0":()=>h(()=>import("./dependency.html-vliHx4sJ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2321e074":()=>h(()=>import("./rtmp_support_for_h265_and_opus.html-tX2acU7J.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-acba6b18":()=>h(()=>import("./video_conferencing_related_resources.html-Da8l8FFw.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-164eab05":()=>h(()=>import("./zltoolkit_source_code_study_notes.html-vFvvg7fr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7184a3f1":()=>h(()=>import("./index.html-Zl8OD7vu.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3d3ac02d":()=>h(()=>import("./benchmark.html-MSc66SxZ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-e2ac608c":()=>h(()=>import("./delay_test.html-dT3kgdCj.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-510ccabf":()=>h(()=>import("./how_to_test_delay.html-ubjyw-PC.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-174062e8":()=>h(()=>import("./online_test.html-8_GcpcRF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-e521bd2e":()=>h(()=>import("./performance_testing.html-wMvwmLu0.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1d29e16c":()=>h(()=>import("./rtmp_pull_stream_performance_test.html-_aYV-qZf.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-fdd44ad6":()=>h(()=>import("./rtmp_push_stream_performance_test.html-AxJYj-3i.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-aa333cf8":()=>h(()=>import("./rtsp_pull_stream_performance_test.html-2yov4QZH.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3a912ccf":()=>h(()=>import("./rtsp_push_stream_performance_test.html-g2X0PP_e.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-374e6730":()=>h(()=>import("./gb28181_sip_signaling_packet_capture.html-dSB5oqMq.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-6e3cc886":()=>h(()=>import("./how_to_use_device_id_as_stream_id.html-_vNSGfoU.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-041958ba":()=>h(()=>import("./push_streaming.html-5MzKBCwx.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-71ddfc14":()=>h(()=>import("./index.html-l-9Jcb0Z.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5eb5ee22":()=>h(()=>import("./webrtc_compilation_and_use.html-Ck_2B7eV.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-84db85f8":()=>h(()=>import("./webrtc_signaling_interaction_format.html-RSBHyl7A.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3706649a":()=>h(()=>import("./404.html-aQJ09P_F.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-14f73021":()=>h(()=>import("./index.html-VsukZOSA.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-22a2f9fd":()=>h(()=>import("./index.html-Y6Zxo28x.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2be85352":()=>h(()=>import("./index.html-LLxB5nrB.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0f8c4891":()=>h(()=>import("./index.html-QQRRY2d0.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-35ba27b7":()=>h(()=>import("./index.html-8RsIN7Qj.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-70e5a528":()=>h(()=>import("./index.html-MI_McXZr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-55376182":()=>h(()=>import("./index.html-c0NLam4o.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-50bfaca6":()=>h(()=>import("./index.html-Dj-Byo33.js"),__vite__mapDeps([])).then(({data:e})=>e)},op=JSON.parse('{"base":"/","lang":"en-US","title":"","description":"","head":[["link",{"rel":"icon","href":"/favicon.ico"}],["link",{"rel":"icon","href":"/assets/icon/chrome-192.png","type":"image/png","sizes":"192x192"}],["link",{"rel":"manifest","href":"/manifest.webmanifest","crossorigin":"use-credentials"}],["meta",{"name":"theme-color","content":"#46bd87"}],["link",{"rel":"apple-touch-icon","href":"/assets/icon/apple-touch-icon-152x152.png"}],["meta",{"name":"apple-mobile-web-app-capable","content":"yes"}],["meta",{"name":"apple-mobile-web-app-status-bar-style","content":"black"}],["meta",{"name":"msapplication-TileImage","content":"/assets/icon/ms-icon-144.png"}],["meta",{"name":"msapplication-TileColor","content":"#ffffff"}],["meta",{"name":"viewport","content":"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"}]],"locales":{"/":{"lang":"en-US","title":"ZLMediaKit","description":"Official documentation for ZLMediaKit"},"/zh/":{"lang":"zh-CN","title":"ZLMediaKit","description":"ZLMediaKit 官方文档"}}}');var ip=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),lp=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=ip(r);t.has(o)||(t.add(o),n.push(r))}),n},sp=e=>e[0]==="/"?e:`/${e}`,ya=e=>e[e.length-1]==="/"||e.endsWith(".html")?e:`${e}/`,Cn=e=>/^(https?:)?\/\//.test(e),ap=/.md((\?|#).*)?$/,jr=(e,t="/")=>!!(Cn(e)||e.startsWith("/")&&!e.startsWith(t)&&!ap.test(e)),Ea=e=>/^[a-z][a-z0-9+.-]*:/.test(e),Li=e=>Object.prototype.toString.call(e)==="[object Object]",Ri=e=>e[e.length-1]==="/"?e.slice(0,-1):e,wa=e=>e[0]==="/"?e.slice(1):e,cp=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const i=o.split("/").length-r.split("/").length;return i!==0?i:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const Ta={"v-8daa1a0e":A(()=>h(()=>import("./index.html-ZAfsJ4Zm.js"),__vite__mapDeps([0,1]))),"v-fffb8e28":A(()=>h(()=>import("./index.html-573jmd7K.js"),__vite__mapDeps([2,1]))),"v-43c96c34":A(()=>h(()=>import("./collaborative_projects.html-oDX6Yyj3.js"),__vite__mapDeps([3,1]))),"v-17f2914c":A(()=>h(()=>import("./contact.html-t3j5rpRG.js"),__vite__mapDeps([4,1]))),"v-07f943d9":A(()=>h(()=>import("./license.html-qa5ZL8TL.js"),__vite__mapDeps([5,1]))),"v-9e2e7e22":A(()=>h(()=>import("./thanks.html-Rcdc4mKk.js"),__vite__mapDeps([6,1]))),"v-1d3d20e2":A(()=>h(()=>import("./use_cases.html-ocJvSQIH.js"),__vite__mapDeps([7,1]))),"v-639495b8":A(()=>h(()=>import("./index.html-eSaWpJP4.js"),__vite__mapDeps([8,9,1]))),"v-2d0ad528":A(()=>h(()=>import("./index.html-HuxOwQjj.js"),__vite__mapDeps([10,1]))),"v-58ff8a76":A(()=>h(()=>import("./index.html-eKYx7NZ-.js"),__vite__mapDeps([11,1]))),"v-07e28fb7":A(()=>h(()=>import("./oncetoken.html-pNonh94A.js"),__vite__mapDeps([12,1]))),"v-5d588a76":A(()=>h(()=>import("./index.html-mfTVy5-J.js"),__vite__mapDeps([13,1]))),"v-67fe8904":A(()=>h(()=>import("./not_recommended_qq.html-VsG4mwYA.js"),__vite__mapDeps([14,1]))),"v-9ef794be":A(()=>h(()=>import("./rtmp_playback_compatibility_issues.html-fNEuKIs-.js"),__vite__mapDeps([15,1]))),"v-26771ae0":A(()=>h(()=>import("./index.html-HbKwkAxu.js"),__vite__mapDeps([16,1]))),"v-7c5f89f1":A(()=>h(()=>import("./compilation_instructions_for_windows_version.html-Fqb9RcQO.js"),__vite__mapDeps([17,1]))),"v-2a95408c":A(()=>h(()=>import("./install_zlmediakit_using_vcpkg.html-tFAic-l6.js"),__vite__mapDeps([18,19,1]))),"v-410226d2":A(()=>h(()=>import("./start.html-3NE1XKNN.js"),__vite__mapDeps([20,9,1]))),"v-1a355af6":A(()=>h(()=>import("./index.html-q26KWjF1.js"),__vite__mapDeps([21,1]))),"v-f17856b6":A(()=>h(()=>import("./config_file.html-9Xa4KaRE.js"),__vite__mapDeps([22,1]))),"v-326b1b06":A(()=>h(()=>import("./generate_ssl_self-signed_certificate_and_test.html-vsfOfJt0.js"),__vite__mapDeps([23,24,1]))),"v-f90651dc":A(()=>h(()=>import("./how_to_enable_https_related_functions.html-kCsRSeM_.js"),__vite__mapDeps([25,26,1]))),"v-629229d1":A(()=>h(()=>import("./on-demand_push_streaming.html-MaKthO1-.js"),__vite__mapDeps([27,28,1]))),"v-a3ed6f7c":A(()=>h(()=>import("./on-demand_streaming.html-rje6YlXl.js"),__vite__mapDeps([29,30,1]))),"v-22d780d8":A(()=>h(()=>import("./play_url_rules.html-qwXh8ebF.js"),__vite__mapDeps([31,1]))),"v-40777a42":A(()=>h(()=>import("./playback_authentication.html-G685IkfQ.js"),__vite__mapDeps([32,33,1]))),"v-1c8baf7e":A(()=>h(()=>import("./push_authentication.html-oaOjOtnq.js"),__vite__mapDeps([34,35,1]))),"v-d003c332":A(()=>h(()=>import("./push_test.html-dzpZPZVg.js"),__vite__mapDeps([36,37,1]))),"v-992f244c":A(()=>h(()=>import("./restful_api.html-ojzFkZh8.js"),__vite__mapDeps([38,1]))),"v-1563923f":A(()=>h(()=>import("./sequence_diagram.html-ZomyBXSL.js"),__vite__mapDeps([39,1]))),"v-3f9e2b34":A(()=>h(()=>import("./start_server.html-iaR_8o9S.js"),__vite__mapDeps([40,41,1]))),"v-4436fd0b":A(()=>h(()=>import("./web_hook_api.html-yTBnNLfz.js"),__vite__mapDeps([42,1]))),"v-fa0f55aa":A(()=>h(()=>import("./index.html-yFJZvUVc.js"),__vite__mapDeps([43,1]))),"v-5d4ca3be":A(()=>h(()=>import("./index.html-oytvqk6x.js"),__vite__mapDeps([44,1]))),"v-29126422":A(()=>h(()=>import("./how_to_create_a_live_steam.html-8eIvXeDo.js"),__vite__mapDeps([45,46,1]))),"v-b1256428":A(()=>h(()=>import("./index.html-2dVuyDsF.js"),__vite__mapDeps([47,1]))),"v-099b9809":A(()=>h(()=>import("./hls_high_performance_journey.html-TZBUS8og.js"),__vite__mapDeps([48,1]))),"v-c75d9fee":A(()=>h(()=>import("./rtsp_performance_optimization.html-oVbOTUnc.js"),__vite__mapDeps([49,1]))),"v-27716634":A(()=>h(()=>import("./index.html-bV4_5Cgh.js"),__vite__mapDeps([50,1]))),"v-3d1bfe27":A(()=>h(()=>import("./exclusive_features.html-vnOZwbaY.js"),__vite__mapDeps([51,1]))),"v-61f35635":A(()=>h(()=>import("./high_concurrency_implementation_principle.html-4A4gHD8-.js"),__vite__mapDeps([52,1]))),"v-60e3ff20":A(()=>h(()=>import("./introduction_to_streaming_media_related_technologies.html-jd9Zwqd3.js"),__vite__mapDeps([53,1]))),"v-716fbfe3":A(()=>h(()=>import("./rtsp_push_process.html-5BXn5aZU.js"),__vite__mapDeps([54,1]))),"v-159648d6":A(()=>h(()=>import("./the_nature_of_live_broadcast_delay.html-uU6VtFJR.js"),__vite__mapDeps([55,1]))),"v-07cf6867":A(()=>h(()=>import("./index.html-zqagt7gM.js"),__vite__mapDeps([56,1]))),"v-2894bdb2":A(()=>h(()=>import("./dependency.html-8pevclZ9.js"),__vite__mapDeps([57,1]))),"v-630bfad5":A(()=>h(()=>import("./rtmp_support_for_h265_and_opus.html-a8ynJZrM.js"),__vite__mapDeps([58,1]))),"v-a9be237a":A(()=>h(()=>import("./video_conferencing_related_resources.html-pKTKpfIG.js"),__vite__mapDeps([59,1]))),"v-770cb196":A(()=>h(()=>import("./zltoolkit_source_code_study_notes.html-X78_rEP2.js"),__vite__mapDeps([60,1]))),"v-60c5ec00":A(()=>h(()=>import("./index.html-GZbomDA_.js"),__vite__mapDeps([61,1]))),"v-7cf84008":A(()=>h(()=>import("./benchmark.html-uo75e0CN.js"),__vite__mapDeps([62,1]))),"v-d8f6ac6a":A(()=>h(()=>import("./delay_test.html-54KDTai-.js"),__vite__mapDeps([63,1]))),"v-adc6a8e4":A(()=>h(()=>import("./how_to_test_delay.html-IVFxpLiU.js"),__vite__mapDeps([64,1]))),"v-ea3f92ca":A(()=>h(()=>import("./online_test.html-XBO_M5q9.js"),__vite__mapDeps([65,1]))),"v-210a0a78":A(()=>h(()=>import("./performance_testing.html-oRt7mc3-.js"),__vite__mapDeps([66,1]))),"v-27157219":A(()=>h(()=>import("./rtmp_pull_stream_performance_test.html--AjSCAb6.js"),__vite__mapDeps([67,1]))),"v-927f8538":A(()=>h(()=>import("./rtmp_push_stream_performance_test.html-YYy_fCwZ.js"),__vite__mapDeps([68,1]))),"v-3ede775a":A(()=>h(()=>import("./rtsp_pull_stream_performance_test.html-78O1mXMt.js"),__vite__mapDeps([69,1]))),"v-703b8f9e":A(()=>h(()=>import("./rtsp_push_stream_performance_test.html-x031EUqu.js"),__vite__mapDeps([70,1]))),"v-47357bdb":A(()=>h(()=>import("./index.html-WES3IN89.js"),__vite__mapDeps([71,1]))),"v-0a3cd263":A(()=>h(()=>import("./collaborative_projects.html-RO-575me.js"),__vite__mapDeps([72,1]))),"v-8b20cdea":A(()=>h(()=>import("./contact.html-KwkduCZ8.js"),__vite__mapDeps([73,1]))),"v-633bb4ec":A(()=>h(()=>import("./license.html-Pr361WBx.js"),__vite__mapDeps([74,1]))),"v-4bf4651e":A(()=>h(()=>import("./thanks.html-FSlc_7wN.js"),__vite__mapDeps([75,1]))),"v-7dceae00":A(()=>h(()=>import("./use_cases.html-SNBvnwbO.js"),__vite__mapDeps([76,1]))),"v-ec228f2e":A(()=>h(()=>import("./index.html-DgVFBk67.js"),__vite__mapDeps([77,9,1]))),"v-cb3c3b8e":A(()=>h(()=>import("./gb28181_sip_signaling_packet_capture.html-qexCXJj0.js"),__vite__mapDeps([78,1]))),"v-6fbaec55":A(()=>h(()=>import("./how_to_use_device_id_as_stream_id.html-5dSEoDq7.js"),__vite__mapDeps([79,80,1]))),"v-079ebd6a":A(()=>h(()=>import("./push_streaming.html-JqhELNzW.js"),__vite__mapDeps([81,82,1]))),"v-114c6ef6":A(()=>h(()=>import("./index.html-hehzhF2d.js"),__vite__mapDeps([83,1]))),"v-d73f5e1e":A(()=>h(()=>import("./webrtc_compilation_and_use.html-ifqCJvPh.js"),__vite__mapDeps([84,1]))),"v-284ed9d6":A(()=>h(()=>import("./webrtc_signaling_interaction_format.html-6nmFHnea.js"),__vite__mapDeps([85,1]))),"v-515bc4e7":A(()=>h(()=>import("./index.html-gSpoAwKN.js"),__vite__mapDeps([86,1]))),"v-e1a99f30":A(()=>h(()=>import("./oncetoken.html-KoxT1WJ9.js"),__vite__mapDeps([87,1]))),"v-763dee34":A(()=>h(()=>import("./index.html-7yq99xxh.js"),__vite__mapDeps([88,1]))),"v-6ff7e8b5":A(()=>h(()=>import("./not_recommended_qq.html-sTyZQjjb.js"),__vite__mapDeps([89,1]))),"v-75521352":A(()=>h(()=>import("./rtmp_playback_compatibility_issues.html-NhoJKAeu.js"),__vite__mapDeps([90,1]))),"v-1b2bfecf":A(()=>h(()=>import("./index.html-7fV02DDU.js"),__vite__mapDeps([91,1]))),"v-3c49c43c":A(()=>h(()=>import("./compilation_instructions_for_windows_version.html-6NKchaAm.js"),__vite__mapDeps([92,1]))),"v-2139c386":A(()=>h(()=>import("./install_zlmediakit_using_vcpkg.html-uFx2Qn-i.js"),__vite__mapDeps([93,19,1]))),"v-4f36f1c6":A(()=>h(()=>import("./start.html-zUlbdSif.js"),__vite__mapDeps([94,9,1]))),"v-7ac6e814":A(()=>h(()=>import("./index.html-bCrAKGJB.js"),__vite__mapDeps([95,1]))),"v-76640c16":A(()=>h(()=>import("./config_file.html-d15slbyo.js"),__vite__mapDeps([96,1]))),"v-04c98dae":A(()=>h(()=>import("./generate_ssl_self-signed_certificate_and_test.html-O1ld5VEe.js"),__vite__mapDeps([97,24,1]))),"v-fc02997a":A(()=>h(()=>import("./how_to_enable_https_related_functions.html-9i2jCwZ3.js"),__vite__mapDeps([98,26,1]))),"v-60a95200":A(()=>h(()=>import("./on-demand_push_streaming.html-NzG-8Joc.js"),__vite__mapDeps([99,28,1]))),"v-b991029a":A(()=>h(()=>import("./on-demand_streaming.html-VwCpE1JK.js"),__vite__mapDeps([100,30,1]))),"v-78eb47c7":A(()=>h(()=>import("./play_url_rules.html-GF2zY0uE.js"),__vite__mapDeps([101,1]))),"v-2459df9a":A(()=>h(()=>import("./playback_authentication.html-AsKcZv3x.js"),__vite__mapDeps([102,33,1]))),"v-322f429c":A(()=>h(()=>import("./push_authentication.html-_wCQpvPn.js"),__vite__mapDeps([103,35,1]))),"v-c01103d0":A(()=>h(()=>import("./push_test.html-n5-72YJ1.js"),__vite__mapDeps([104,37,1]))),"v-baeeb56a":A(()=>h(()=>import("./restful_api.html-4yfdZ-oL.js"),__vite__mapDeps([105,1]))),"v-35a1596e":A(()=>h(()=>import("./sequence_diagram.html-pEkXoaBs.js"),__vite__mapDeps([106,1]))),"v-3484e1e3":A(()=>h(()=>import("./start_server.html-JlFNgj-K.js"),__vite__mapDeps([107,41,1]))),"v-391db3ba":A(()=>h(()=>import("./web_hook_api.html-4eZenSeJ.js"),__vite__mapDeps([108,1]))),"v-24dfef1c":A(()=>h(()=>import("./index.html-4AoKvxIs.js"),__vite__mapDeps([109,1]))),"v-7643e190":A(()=>h(()=>import("./index.html-DoJnvppU.js"),__vite__mapDeps([110,1]))),"v-5a1c26c0":A(()=>h(()=>import("./how_to_create_a_live_steam.html-j8XiE3eA.js"),__vite__mapDeps([111,46,1]))),"v-0938c35b":A(()=>h(()=>import("./index.html-ldqAHXhl.js"),__vite__mapDeps([112,1]))),"v-5298cc7a":A(()=>h(()=>import("./hls_high_performance_journey.html-awr83uM9.js"),__vite__mapDeps([113,1]))),"v-72fa89b8":A(()=>h(()=>import("./rtsp_performance_optimization.html-jqJ1nUFL.js"),__vite__mapDeps([114,1]))),"v-4ea15ae3":A(()=>h(()=>import("./index.html-QokpAUdW.js"),__vite__mapDeps([115,1]))),"v-324a3498":A(()=>h(()=>import("./exclusive_features.html-oz4V5ANz.js"),__vite__mapDeps([116,1]))),"v-09d870a4":A(()=>h(()=>import("./high_concurrency_implementation_principle.html-T5LE0Lmi.js"),__vite__mapDeps([117,1]))),"v-175b5aa1":A(()=>h(()=>import("./introduction_to_streaming_media_related_technologies.html-Zd-Cue_9.js"),__vite__mapDeps([118,1]))),"v-79587752":A(()=>h(()=>import("./rtsp_push_process.html-ZQbam1ye.js"),__vite__mapDeps([119,1]))),"v-3e321006":A(()=>h(()=>import("./the_nature_of_live_broadcast_delay.html-bjchJaZD.js"),__vite__mapDeps([120,1]))),"v-2eff5d16":A(()=>h(()=>import("./index.html-O3xmvgtm.js"),__vite__mapDeps([121,1]))),"v-4a544ed0":A(()=>h(()=>import("./dependency.html-jVZ5GKgo.js"),__vite__mapDeps([122,1]))),"v-2321e074":A(()=>h(()=>import("./rtmp_support_for_h265_and_opus.html-Ja2UBaOZ.js"),__vite__mapDeps([123,1]))),"v-acba6b18":A(()=>h(()=>import("./video_conferencing_related_resources.html-JT3FqRo7.js"),__vite__mapDeps([124,1]))),"v-164eab05":A(()=>h(()=>import("./zltoolkit_source_code_study_notes.html-3EZc_Boy.js"),__vite__mapDeps([125,1]))),"v-7184a3f1":A(()=>h(()=>import("./index.html-vj58oyHa.js"),__vite__mapDeps([126,1]))),"v-3d3ac02d":A(()=>h(()=>import("./benchmark.html-ESZ9k3Ep.js"),__vite__mapDeps([127,1]))),"v-e2ac608c":A(()=>h(()=>import("./delay_test.html-YaKGDOck.js"),__vite__mapDeps([128,1]))),"v-510ccabf":A(()=>h(()=>import("./how_to_test_delay.html-r6GaiRI_.js"),__vite__mapDeps([129,1]))),"v-174062e8":A(()=>h(()=>import("./online_test.html-X04CV8WE.js"),__vite__mapDeps([130,1]))),"v-e521bd2e":A(()=>h(()=>import("./performance_testing.html-RUXKMema.js"),__vite__mapDeps([131,1]))),"v-1d29e16c":A(()=>h(()=>import("./rtmp_pull_stream_performance_test.html-UV-5J8vg.js"),__vite__mapDeps([132,1]))),"v-fdd44ad6":A(()=>h(()=>import("./rtmp_push_stream_performance_test.html-VzlWIKzU.js"),__vite__mapDeps([133,1]))),"v-aa333cf8":A(()=>h(()=>import("./rtsp_pull_stream_performance_test.html-waVb8kwe.js"),__vite__mapDeps([134,1]))),"v-3a912ccf":A(()=>h(()=>import("./rtsp_push_stream_performance_test.html-YskCMXrz.js"),__vite__mapDeps([135,1]))),"v-374e6730":A(()=>h(()=>import("./gb28181_sip_signaling_packet_capture.html-JsEmgfbo.js"),__vite__mapDeps([136,1]))),"v-6e3cc886":A(()=>h(()=>import("./how_to_use_device_id_as_stream_id.html-CzzjrtPS.js"),__vite__mapDeps([137,80,1]))),"v-041958ba":A(()=>h(()=>import("./push_streaming.html-MRQ3SR8R.js"),__vite__mapDeps([138,82,1]))),"v-71ddfc14":A(()=>h(()=>import("./index.html-DydUlsO3.js"),__vite__mapDeps([139,1]))),"v-5eb5ee22":A(()=>h(()=>import("./webrtc_compilation_and_use.html-Wir4WmSI.js"),__vite__mapDeps([140,1]))),"v-84db85f8":A(()=>h(()=>import("./webrtc_signaling_interaction_format.html-KYtlkjHG.js"),__vite__mapDeps([141,1]))),"v-3706649a":A(()=>h(()=>import("./404.html-7HzFSFl7.js"),__vite__mapDeps([142,1]))),"v-14f73021":A(()=>h(()=>import("./index.html-Q3P2N4-E.js"),__vite__mapDeps([143,1]))),"v-22a2f9fd":A(()=>h(()=>import("./index.html-_FbUjyNF.js"),__vite__mapDeps([144,1]))),"v-2be85352":A(()=>h(()=>import("./index.html-yYLEULdt.js"),__vite__mapDeps([145,1]))),"v-0f8c4891":A(()=>h(()=>import("./index.html-uBldBXxN.js"),__vite__mapDeps([146,1]))),"v-35ba27b7":A(()=>h(()=>import("./index.html-8LlBfneP.js"),__vite__mapDeps([147,1]))),"v-70e5a528":A(()=>h(()=>import("./index.html-c1k5quBE.js"),__vite__mapDeps([148,1]))),"v-55376182":A(()=>h(()=>import("./index.html-qXcCxmIQ.js"),__vite__mapDeps([149,1]))),"v-50bfaca6":A(()=>h(()=>import("./index.html-v6csxUL5.js"),__vite__mapDeps([150,1])))};var up=Symbol(""),Aa=Symbol(""),fp=ln({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),de=()=>{const e=_e(Aa);if(!e)throw new Error("pageData() is called without provider.");return e},La=Symbol(""),Pe=()=>{const e=_e(La);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},Ra=Symbol(""),dp=()=>{const e=_e(Ra);if(!e)throw new Error("usePageHead() is called without provider.");return e},pp=Symbol(""),Pa=Symbol(""),Pi=()=>{const e=_e(Pa);if(!e)throw new Error("usePageLang() is called without provider.");return e},Ia=Symbol(""),hp=()=>{const e=_e(Ia);if(!e)throw new Error("usePageLayout() is called without provider.");return e},vp=ee(rp),Ii=Symbol(""),an=()=>{const e=_e(Ii);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},vn=ee(op),Oa=()=>vn,xa=Symbol(""),to=()=>{const e=_e(xa);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},mp=Symbol(""),_p="Layout",gp="NotFound",At=sr({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageData:async e=>{const t=vp.value[e];return await(t==null?void 0:t())??fp},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=ue(t.description)?t.description:n.description,o=[...X(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return lp(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||"en-US",resolvePageLayout:(e,t)=>{let n;if(e.path){const r=e.frontmatter.layout;ue(r)?n=r:n=_p}else n=gp;return t[n]},resolveRouteLocale:(e,t)=>cp(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),no=K({name:"ClientOnly",setup(e,t){const n=ee(!1);return ge(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),ka=K({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=de(),n=I(()=>Ta[e.pageKey||t.value.key]);return()=>n.value?f(n.value):f("div","404 Not Found")}}),at=(e={})=>e,Me=e=>Cn(e)?e:`/${wa(e)}`;const bp={};/*! + * vue-router v4.2.5 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */const pn=typeof window<"u";function yp(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const pe=Object.assign;function Eo(e,t){const n={};for(const r in t){const o=t[r];n[r]=pt(o)?o.map(e):e(o)}return n}const Gn=()=>{},pt=Array.isArray,Ep=/\/$/,wp=e=>e.replace(Ep,"");function wo(e,t,n="/"){let r,o={},i="",l="";const s=t.indexOf("#");let a=t.indexOf("?");return s=0&&(a=-1),a>-1&&(r=t.slice(0,a),i=t.slice(a+1,s>-1?s:t.length),o=e(i)),s>-1&&(r=r||t.slice(0,s),l=t.slice(s,t.length)),r=Rp(r??t,n),{fullPath:r+(i&&"?")+i+l,path:r,query:o,hash:l}}function Tp(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Ol(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Ap(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&Rn(t.matched[r],n.matched[o])&&Ca(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Rn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ca(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Lp(e[n],t[n]))return!1;return!0}function Lp(e,t){return pt(e)?xl(e,t):pt(t)?xl(t,e):e===t}function xl(e,t){return pt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Rp(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let i=n.length-1,l,s;for(l=0;l1&&i--;else break;return n.slice(0,i).join("/")+"/"+r.slice(l-(l===r.length?1:0)).join("/")}var rr;(function(e){e.pop="pop",e.push="push"})(rr||(rr={}));var Yn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Yn||(Yn={}));function Pp(e){if(!e)if(pn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),wp(e)}const Ip=/^[^#]+#/;function Op(e,t){return e.replace(Ip,"#")+t}function xp(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const ro=()=>({left:window.pageXOffset,top:window.pageYOffset});function kp(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=xp(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function kl(e,t){return(history.state?history.state.position-t:-1)+e}const qo=new Map;function Cp(e,t){qo.set(e,t)}function Sp(e){const t=qo.get(e);return qo.delete(e),t}let Dp=()=>location.protocol+"//"+location.host;function Sa(e,t){const{pathname:n,search:r,hash:o}=t,i=e.indexOf("#");if(i>-1){let s=o.includes(e.slice(i))?e.slice(i).length:1,a=o.slice(s);return a[0]!=="/"&&(a="/"+a),Ol(a,"")}return Ol(n,e)+r+o}function Vp(e,t,n,r){let o=[],i=[],l=null;const s=({state:p})=>{const m=Sa(e,location),b=n.value,E=t.value;let w=0;if(p){if(n.value=m,t.value=p,l&&l===b){l=null;return}w=E?p.position-E.position:0}else r(m);o.forEach(y=>{y(n.value,b,{delta:w,type:rr.pop,direction:w?w>0?Yn.forward:Yn.back:Yn.unknown})})};function a(){l=n.value}function c(p){o.push(p);const m=()=>{const b=o.indexOf(p);b>-1&&o.splice(b,1)};return i.push(m),m}function u(){const{history:p}=window;p.state&&p.replaceState(pe({},p.state,{scroll:ro()}),"")}function d(){for(const p of i)p();i=[],window.removeEventListener("popstate",s),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",s),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:a,listen:c,destroy:d}}function Cl(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?ro():null}}function Mp(e){const{history:t,location:n}=window,r={value:Sa(e,n)},o={value:t.state};o.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(a,c,u){const d=e.indexOf("#"),p=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+a:Dp()+e+a;try{t[u?"replaceState":"pushState"](c,"",p),o.value=c}catch(m){console.error(m),n[u?"replace":"assign"](p)}}function l(a,c){const u=pe({},t.state,Cl(o.value.back,a,o.value.forward,!0),c,{position:o.value.position});i(a,u,!0),r.value=a}function s(a,c){const u=pe({},o.value,t.state,{forward:a,scroll:ro()});i(u.current,u,!0);const d=pe({},Cl(r.value,a,null),{position:u.position+1},c);i(a,d,!1),r.value=a}return{location:r,state:o,push:s,replace:l}}function $p(e){e=Pp(e);const t=Mp(e),n=Vp(e,t.state,t.location,t.replace);function r(i,l=!0){l||n.pauseListeners(),history.go(i)}const o=pe({location:"",base:e,go:r,createHref:Op.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function Np(e){return typeof e=="string"||e&&typeof e=="object"}function Da(e){return typeof e=="string"||typeof e=="symbol"}const Lt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Va=Symbol("");var Sl;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Sl||(Sl={}));function Pn(e,t){return pe(new Error,{type:e,[Va]:!0},t)}function wt(e,t){return e instanceof Error&&Va in e&&(t==null||!!(e.type&t))}const Dl="[^/]+?",zp={sensitive:!1,strict:!1,start:!0,end:!0},Fp=/[.+*?^${}()[\]/\\]/g;function Bp(e,t){const n=pe({},zp,t),r=[];let o=n.start?"^":"";const i=[];for(const c of e){const u=c.length?[]:[90];n.strict&&!c.length&&(o+="/");for(let d=0;dt.length?t.length===1&&t[0]===80?1:-1:0}function jp(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const Wp={type:0,value:""},qp=/[a-zA-Z0-9_]/;function Up(e){if(!e)return[[]];if(e==="/")return[[Wp]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${c}": ${m}`)}let n=0,r=n;const o=[];let i;function l(){i&&o.push(i),i=[]}let s=0,a,c="",u="";function d(){c&&(n===0?i.push({type:0,value:c}):n===1||n===2||n===3?(i.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:c,regexp:u,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=a}for(;s{l(R)}:Gn}function l(u){if(Da(u)){const d=r.get(u);d&&(r.delete(u),n.splice(n.indexOf(d),1),d.children.forEach(l),d.alias.forEach(l))}else{const d=n.indexOf(u);d>-1&&(n.splice(d,1),u.record.name&&r.delete(u.record.name),u.children.forEach(l),u.alias.forEach(l))}}function s(){return n}function a(u){let d=0;for(;d=0&&(u.record.path!==n[d].record.path||!Ma(u,n[d]));)d++;n.splice(d,0,u),u.record.name&&!$l(u)&&r.set(u.record.name,u)}function c(u,d){let p,m={},b,E;if("name"in u&&u.name){if(p=r.get(u.name),!p)throw Pn(1,{location:u});E=p.record.name,m=pe(Ml(d.params,p.keys.filter(R=>!R.optional).map(R=>R.name)),u.params&&Ml(u.params,p.keys.map(R=>R.name))),b=p.stringify(m)}else if("path"in u)b=u.path,p=n.find(R=>R.re.test(b)),p&&(m=p.parse(b),E=p.record.name);else{if(p=d.name?r.get(d.name):n.find(R=>R.re.test(d.path)),!p)throw Pn(1,{location:u,currentLocation:d});E=p.record.name,m=pe({},d.params,u.params),b=p.stringify(m)}const w=[];let y=p;for(;y;)w.unshift(y.record),y=y.parent;return{name:E,path:b,params:m,matched:w,meta:Qp(w)}}return e.forEach(u=>i(u)),{addRoute:i,resolve:c,removeRoute:l,getRoutes:s,getRecordMatcher:o}}function Ml(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Yp(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:Zp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function Zp(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function $l(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Qp(e){return e.reduce((t,n)=>pe(t,n.meta),{})}function Nl(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Ma(e,t){return t.children.some(n=>n===e||Ma(e,n))}const $a=/#/g,Jp=/&/g,Xp=/\//g,eh=/=/g,th=/\?/g,Na=/\+/g,nh=/%5B/g,rh=/%5D/g,za=/%5E/g,oh=/%60/g,Fa=/%7B/g,ih=/%7C/g,Ba=/%7D/g,lh=/%20/g;function Oi(e){return encodeURI(""+e).replace(ih,"|").replace(nh,"[").replace(rh,"]")}function sh(e){return Oi(e).replace(Fa,"{").replace(Ba,"}").replace(za,"^")}function Uo(e){return Oi(e).replace(Na,"%2B").replace(lh,"+").replace($a,"%23").replace(Jp,"%26").replace(oh,"`").replace(Fa,"{").replace(Ba,"}").replace(za,"^")}function ah(e){return Uo(e).replace(eh,"%3D")}function ch(e){return Oi(e).replace($a,"%23").replace(th,"%3F")}function uh(e){return e==null?"":ch(e).replace(Xp,"%2F")}function Wr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function fh(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;oi&&Uo(i)):[r&&Uo(r)]).forEach(i=>{i!==void 0&&(t+=(t.length?"&":"")+n,i!=null&&(t+="="+i))})}return t}function dh(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=pt(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const ph=Symbol(""),Fl=Symbol(""),oo=Symbol(""),xi=Symbol(""),Ko=Symbol("");function zn(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Ht(e,t,n,r,o){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((l,s)=>{const a=d=>{d===!1?s(Pn(4,{from:n,to:t})):d instanceof Error?s(d):Np(d)?s(Pn(2,{from:t,to:d})):(i&&r.enterCallbacks[o]===i&&typeof d=="function"&&i.push(d),l())},c=e.call(r&&r.instances[o],t,n,a);let u=Promise.resolve(c);e.length<3&&(u=u.then(a)),u.catch(d=>s(d))})}function To(e,t,n,r){const o=[];for(const i of e)for(const l in i.components){let s=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(hh(s)){const c=(s.__vccOpts||s)[t];c&&o.push(Ht(c,n,r,i,l))}else{let a=s();o.push(()=>a.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${l}" at "${i.path}"`));const u=yp(c)?c.default:c;i.components[l]=u;const p=(u.__vccOpts||u)[t];return p&&Ht(p,n,r,i,l)()}))}}return o}function hh(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Go(e){const t=_e(oo),n=_e(xi),r=I(()=>t.resolve(tn(e.to))),o=I(()=>{const{matched:a}=r.value,{length:c}=a,u=a[c-1],d=n.matched;if(!u||!d.length)return-1;const p=d.findIndex(Rn.bind(null,u));if(p>-1)return p;const m=Bl(a[c-2]);return c>1&&Bl(u)===m&&d[d.length-1].path!==m?d.findIndex(Rn.bind(null,a[c-2])):p}),i=I(()=>o.value>-1&&gh(n.params,r.value.params)),l=I(()=>o.value>-1&&o.value===n.matched.length-1&&Ca(n.params,r.value.params));function s(a={}){return _h(a)?t[tn(e.replace)?"replace":"push"](tn(e.to)).catch(Gn):Promise.resolve()}return{route:r,href:I(()=>r.value.href),isActive:i,isExactActive:l,navigate:s}}const vh=K({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Go,setup(e,{slots:t}){const n=sr(Go(e)),{options:r}=_e(oo),o=I(()=>({[Hl(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Hl(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&t.default(n);return e.custom?i:f("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},i)}}}),mh=vh;function _h(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function gh(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!pt(o)||o.length!==r.length||r.some((i,l)=>i!==o[l]))return!1}return!0}function Bl(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Hl=(e,t,n)=>e??t??n,bh=K({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=_e(Ko),o=I(()=>e.route||r.value),i=_e(Fl,0),l=I(()=>{let c=tn(i);const{matched:u}=o.value;let d;for(;(d=u[c])&&!d.components;)c++;return c}),s=I(()=>o.value.matched[l.value]);nn(Fl,I(()=>l.value+1)),nn(ph,s),nn(Ko,o);const a=ee();return fe(()=>[a.value,s.value,e.name],([c,u,d],[p,m,b])=>{u&&(u.instances[d]=c,m&&m!==u&&c&&c===p&&(u.leaveGuards.size||(u.leaveGuards=m.leaveGuards),u.updateGuards.size||(u.updateGuards=m.updateGuards))),c&&u&&(!m||!Rn(u,m)||!p)&&(u.enterCallbacks[d]||[]).forEach(E=>E(c))},{flush:"post"}),()=>{const c=o.value,u=e.name,d=s.value,p=d&&d.components[u];if(!p)return jl(n.default,{Component:p,route:c});const m=d.props[u],b=m?m===!0?c.params:typeof m=="function"?m(c):m:null,w=f(p,pe({},b,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(d.instances[u]=null)},ref:a}));return jl(n.default,{Component:w,route:c})||w}}});function jl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Ha=bh;function yh(e){const t=Gp(e.routes,e),n=e.parseQuery||fh,r=e.stringifyQuery||zl,o=e.history,i=zn(),l=zn(),s=zn(),a=st(Lt);let c=Lt;pn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Eo.bind(null,O=>""+O),d=Eo.bind(null,uh),p=Eo.bind(null,Wr);function m(O,W){let H,Y;return Da(O)?(H=t.getRecordMatcher(O),Y=W):Y=O,t.addRoute(Y,H)}function b(O){const W=t.getRecordMatcher(O);W&&t.removeRoute(W)}function E(){return t.getRoutes().map(O=>O.record)}function w(O){return!!t.getRecordMatcher(O)}function y(O,W){if(W=pe({},W||a.value),typeof O=="string"){const _=wo(n,O,W.path),T=t.resolve({path:_.path},W),k=o.createHref(_.fullPath);return pe(_,T,{params:p(T.params),hash:Wr(_.hash),redirectedFrom:void 0,href:k})}let H;if("path"in O)H=pe({},O,{path:wo(n,O.path,W.path).path});else{const _=pe({},O.params);for(const T in _)_[T]==null&&delete _[T];H=pe({},O,{params:d(_)}),W.params=d(W.params)}const Y=t.resolve(H,W),se=O.hash||"";Y.params=u(p(Y.params));const me=Tp(r,pe({},O,{hash:sh(se),path:Y.path})),v=o.createHref(me);return pe({fullPath:me,hash:se,query:r===zl?dh(O.query):O.query||{}},Y,{redirectedFrom:void 0,href:v})}function R(O){return typeof O=="string"?wo(n,O,a.value.path):pe({},O)}function g(O,W){if(c!==O)return Pn(8,{from:W,to:O})}function P(O){return $(O)}function V(O){return P(pe(R(O),{replace:!0}))}function L(O){const W=O.matched[O.matched.length-1];if(W&&W.redirect){const{redirect:H}=W;let Y=typeof H=="function"?H(O):H;return typeof Y=="string"&&(Y=Y.includes("?")||Y.includes("#")?Y=R(Y):{path:Y},Y.params={}),pe({query:O.query,hash:O.hash,params:"path"in Y?{}:O.params},Y)}}function $(O,W){const H=c=y(O),Y=a.value,se=O.state,me=O.force,v=O.replace===!0,_=L(H);if(_)return $(pe(R(_),{state:typeof _=="object"?pe({},se,_.state):se,force:me,replace:v}),W||H);const T=H;T.redirectedFrom=W;let k;return!me&&Ap(r,Y,H)&&(k=Pn(16,{to:T,from:Y}),Ze(Y,Y,!0,!1)),(k?Promise.resolve(k):F(T,Y)).catch(x=>wt(x)?wt(x,2)?x:ht(x):G(x,T,Y)).then(x=>{if(x){if(wt(x,2))return $(pe({replace:v},R(x.to),{state:typeof x.to=="object"?pe({},se,x.to.state):se,force:me}),W||T)}else x=B(T,Y,!0,v,se);return Z(T,Y,x),x})}function S(O,W){const H=g(O,W);return H?Promise.reject(H):Promise.resolve()}function D(O){const W=Et.values().next().value;return W&&typeof W.runWithContext=="function"?W.runWithContext(O):O()}function F(O,W){let H;const[Y,se,me]=Eh(O,W);H=To(Y.reverse(),"beforeRouteLeave",O,W);for(const _ of Y)_.leaveGuards.forEach(T=>{H.push(Ht(T,O,W))});const v=S.bind(null,O,W);return H.push(v),Oe(H).then(()=>{H=[];for(const _ of i.list())H.push(Ht(_,O,W));return H.push(v),Oe(H)}).then(()=>{H=To(se,"beforeRouteUpdate",O,W);for(const _ of se)_.updateGuards.forEach(T=>{H.push(Ht(T,O,W))});return H.push(v),Oe(H)}).then(()=>{H=[];for(const _ of me)if(_.beforeEnter)if(pt(_.beforeEnter))for(const T of _.beforeEnter)H.push(Ht(T,O,W));else H.push(Ht(_.beforeEnter,O,W));return H.push(v),Oe(H)}).then(()=>(O.matched.forEach(_=>_.enterCallbacks={}),H=To(me,"beforeRouteEnter",O,W),H.push(v),Oe(H))).then(()=>{H=[];for(const _ of l.list())H.push(Ht(_,O,W));return H.push(v),Oe(H)}).catch(_=>wt(_,8)?_:Promise.reject(_))}function Z(O,W,H){s.list().forEach(Y=>D(()=>Y(O,W,H)))}function B(O,W,H,Y,se){const me=g(O,W);if(me)return me;const v=W===Lt,_=pn?history.state:{};H&&(Y||v?o.replace(O.fullPath,pe({scroll:v&&_&&_.scroll},se)):o.push(O.fullPath,se)),a.value=O,Ze(O,W,H,v),ht()}let te;function Te(){te||(te=o.listen((O,W,H)=>{if(!vt.listening)return;const Y=y(O),se=L(Y);if(se){$(pe(se,{replace:!0}),Y).catch(Gn);return}c=Y;const me=a.value;pn&&Cp(kl(me.fullPath,H.delta),ro()),F(Y,me).catch(v=>wt(v,12)?v:wt(v,2)?($(v.to,Y).then(_=>{wt(_,20)&&!H.delta&&H.type===rr.pop&&o.go(-1,!1)}).catch(Gn),Promise.reject()):(H.delta&&o.go(-H.delta,!1),G(v,Y,me))).then(v=>{v=v||B(Y,me,!1),v&&(H.delta&&!wt(v,8)?o.go(-H.delta,!1):H.type===rr.pop&&wt(v,20)&&o.go(-1,!1)),Z(Y,me,v)}).catch(Gn)}))}let ye=zn(),U=zn(),ne;function G(O,W,H){ht(O);const Y=U.list();return Y.length?Y.forEach(se=>se(O,W,H)):console.error(O),Promise.reject(O)}function Ie(){return ne&&a.value!==Lt?Promise.resolve():new Promise((O,W)=>{ye.add([O,W])})}function ht(O){return ne||(ne=!O,Te(),ye.list().forEach(([W,H])=>O?H(O):W()),ye.reset()),O}function Ze(O,W,H,Y){const{scrollBehavior:se}=e;if(!pn||!se)return Promise.resolve();const me=!H&&Sp(kl(O.fullPath,0))||(Y||!H)&&history.state&&history.state.scroll||null;return sn().then(()=>se(O,W,me)).then(v=>v&&kp(v)).catch(v=>G(v,O,W))}const ke=O=>o.go(O);let qe;const Et=new Set,vt={currentRoute:a,listening:!0,addRoute:m,removeRoute:b,hasRoute:w,getRoutes:E,resolve:y,options:e,push:P,replace:V,go:ke,back:()=>ke(-1),forward:()=>ke(1),beforeEach:i.add,beforeResolve:l.add,afterEach:s.add,onError:U.add,isReady:Ie,install(O){const W=this;O.component("RouterLink",mh),O.component("RouterView",Ha),O.config.globalProperties.$router=W,Object.defineProperty(O.config.globalProperties,"$route",{enumerable:!0,get:()=>tn(a)}),pn&&!qe&&a.value===Lt&&(qe=!0,P(o.location).catch(se=>{}));const H={};for(const se in Lt)Object.defineProperty(H,se,{get:()=>a.value[se],enumerable:!0});O.provide(oo,W),O.provide(xi,xs(H)),O.provide(Ko,a);const Y=O.unmount;Et.add(O),O.unmount=function(){Et.delete(O),Et.size<1&&(c=Lt,te&&te(),te=null,a.value=Lt,qe=!1,ne=!1),Y()}}};function Oe(O){return O.reduce((W,H)=>W.then(()=>D(H)),Promise.resolve())}return vt}function Eh(e,t){const n=[],r=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let l=0;lRn(c,s))?r.push(s):n.push(s));const a=e.matched[l];a&&(t.matched.find(c=>Rn(c,a))||o.push(a))}return[n,r,o]}function Ye(){return _e(oo)}function yt(){return _e(xi)}var ze=Uint8Array,mn=Uint16Array,wh=Int32Array,ja=new ze([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Wa=new ze([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Th=new ze([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),qa=function(e,t){for(var n=new mn(31),r=0;r<31;++r)n[r]=t+=1<>1|(be&21845)<<1;Mt=(Mt&52428)>>2|(Mt&13107)<<2,Mt=(Mt&61680)>>4|(Mt&3855)<<4,Yo[be]=((Mt&65280)>>8|(Mt&255)<<8)>>1}var Zn=function(e,t,n){for(var r=e.length,o=0,i=new mn(t);o>a]=c}else for(s=new mn(r),o=0;o>15-e[o]);return s},pr=new ze(288);for(var be=0;be<144;++be)pr[be]=8;for(var be=144;be<256;++be)pr[be]=9;for(var be=256;be<280;++be)pr[be]=7;for(var be=280;be<288;++be)pr[be]=8;var Ga=new ze(32);for(var be=0;be<32;++be)Ga[be]=5;var Ph=Zn(pr,9,1),Ih=Zn(Ga,5,1),Ao=function(e){for(var t=e[0],n=1;nt&&(t=e[n]);return t},ut=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},Lo=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},Oh=function(e){return(e+7)/8|0},ki=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new ze(e.subarray(t,n))},xh=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Xe=function(e,t,n){var r=new Error(t||xh[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,Xe),!n)throw r;return r},kh=function(e,t,n,r){var o=e.length,i=r?r.length:0;if(!o||t.f&&!t.l)return n||new ze(0);var l=!n,s=l||t.i!=2,a=t.i;l&&(n=new ze(o*3));var c=function(se){var me=n.length;if(se>me){var v=new ze(Math.max(me*2,se));v.set(n),n=v}},u=t.f||0,d=t.p||0,p=t.b||0,m=t.l,b=t.d,E=t.m,w=t.n,y=o*8;do{if(!m){u=ut(e,d,1);var R=ut(e,d+1,3);if(d+=3,R)if(R==1)m=Ph,b=Ih,E=9,w=5;else if(R==2){var L=ut(e,d,31)+257,$=ut(e,d+10,15)+4,S=L+ut(e,d+5,31)+1;d+=14;for(var D=new ze(S),F=new ze(19),Z=0;Z<$;++Z)F[Th[Z]]=ut(e,d+Z*3,7);d+=$*3;for(var B=Ao(F),te=(1<>4;if(g<16)D[Z++]=g;else{var U=0,ne=0;for(g==16?(ne=3+ut(e,d,3),d+=2,U=D[Z-1]):g==17?(ne=3+ut(e,d,7),d+=3):g==18&&(ne=11+ut(e,d,127),d+=7);ne--;)D[Z++]=U}}var G=D.subarray(0,L),Ie=D.subarray(L);E=Ao(G),w=Ao(Ie),m=Zn(G,E,1),b=Zn(Ie,w,1)}else Xe(1);else{var g=Oh(d)+4,P=e[g-4]|e[g-3]<<8,V=g+P;if(V>o){a&&Xe(0);break}s&&c(p+P),n.set(e.subarray(g,V),p),t.b=p+=P,t.p=d=V*8,t.f=u;continue}if(d>y){a&&Xe(0);break}}s&&c(p+131072);for(var ht=(1<>4;if(d+=U&15,d>y){a&&Xe(0);break}if(U||Xe(2),qe<256)n[p++]=qe;else if(qe==256){ke=d,m=null;break}else{var Et=qe-254;if(qe>264){var Z=qe-257,vt=ja[Z];Et=ut(e,d,(1<>4;Oe||Xe(3),d+=Oe&15;var Ie=Rh[O];if(O>3){var vt=Wa[O];Ie+=Lo(e,d)&(1<y){a&&Xe(0);break}s&&c(p+131072);var W=p+Et;if(p>4>7||(e[0]<<8|e[1])%31)&&Xe(6,"invalid zlib data"),(e[1]>>5&1)==+!t&&Xe(6,"invalid zlib data: "+(e[1]&32?"need":"unexpected")+" dictionary"),(e[1]>>3&4)+2};function Dh(e,t){return kh(e.subarray(Sh(e,t&&t.dictionary),-4),{i:2},t&&t.out,t&&t.dictionary)}var Wl=typeof TextEncoder<"u"&&new TextEncoder,Zo=typeof TextDecoder<"u"&&new TextDecoder,Vh=0;try{Zo.decode(Ch,{stream:!0}),Vh=1}catch{}var Mh=function(e){for(var t="",n=0;;){var r=e[n++],o=(r>127)+(r>223)+(r>239);if(n+o>e.length)return{s:t,r:ki(e,n-1)};o?o==3?(r=((r&15)<<18|(e[n++]&63)<<12|(e[n++]&63)<<6|e[n++]&63)-65536,t+=String.fromCharCode(55296|r>>10,56320|r&1023)):o&1?t+=String.fromCharCode((r&31)<<6|e[n++]&63):t+=String.fromCharCode((r&15)<<12|(e[n++]&63)<<6|e[n++]&63):t+=String.fromCharCode(r)}};function $h(e,t){if(t){for(var n=new ze(e.length),r=0;r>1)),l=0,s=function(u){i[l++]=u},r=0;ri.length){var a=new ze(l+8+(o-r<<1));a.set(i),i=a}var c=e.charCodeAt(r);c<128||t?s(c):c<2048?(s(192|c>>6),s(128|c&63)):c>55295&&c<57344?(c=65536+(c&1047552)|e.charCodeAt(++r)&1023,s(240|c>>18),s(128|c>>12&63),s(128|c>>6&63),s(128|c&63)):(s(224|c>>12),s(128|c>>6&63),s(128|c&63))}return ki(i,0,l)}function Nh(e,t){if(t){for(var n="",r=0;r{var r;return f("svg",{xmlns:"http://www.w3.org/2000/svg",class:["icon",`${e}-icon`],viewBox:"0 0 1024 1024",fill:t,"aria-label":`${e} icon`},(r=n.default)==null?void 0:r.call(n))};Le.displayName="IconBase";const Ci=({size:e=48,stroke:t=4,wrapper:n=!0,height:r=2*e})=>{const o=f("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,preserveAspectRatio:"xMidYMid",viewBox:"25 25 50 50"},[f("animateTransform",{attributeName:"transform",type:"rotate",dur:"2s",keyTimes:"0;1",repeatCount:"indefinite",values:"0;360"}),f("circle",{cx:"50",cy:"50",r:"20",fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round"},[f("animate",{attributeName:"stroke-dasharray",dur:"1.5s",keyTimes:"0;0.5;1",repeatCount:"indefinite",values:"1,200;90,200;1,200"}),f("animate",{attributeName:"stroke-dashoffset",dur:"1.5s",keyTimes:"0;0.5;1",repeatCount:"indefinite",values:"0;-35px;-125px"})])]);return n?f("div",{class:"loading-icon-wrapper",style:`display:flex;align-items:center;justify-content:center;height:${r}px`},o):o};Ci.displayName="LoadingIcon";const Ya=(e,{slots:t})=>{var n;return(n=t.default)==null?void 0:n.call(t)},zh=(e="")=>{if(e){if(typeof e=="number")return new Date(e);const t=Date.parse(e.toString());if(!Number.isNaN(t))return new Date(t)}return null},Za=(e,t)=>{let n=1;for(let r=0;r>6;return n+=n<<3,n^=n>>11,n%t},Qa=Array.isArray,Fh=e=>typeof e=="function",Bh=e=>typeof e=="string";var Si=e=>/^(https?:)?\/\//.test(e),Hh=/.md((\?|#).*)?$/,jh=(e,t="/")=>!!(Si(e)||e.startsWith("/")&&!e.startsWith(t)&&!Hh.test(e)),Ja=e=>Object.prototype.toString.call(e)==="[object Object]";function Wh(){const e=ee(!1);return kn()&&ge(()=>{e.value=!0}),e}function qh(e){return Wh(),I(()=>!!e())}const Uh=e=>typeof e=="function",Ro=e=>typeof e=="number",xt=e=>typeof e=="string",In=(e,t)=>xt(e)&&e.startsWith(t),fn=(e,t)=>xt(e)&&e.endsWith(t),Di=Object.entries,Kh=Object.fromEntries,Sn=Object.keys,Gh=e=>(e.endsWith(".md")&&(e=`${e.slice(0,-3)}.html`),!e.endsWith("/")&&!e.endsWith(".html")&&(e=`${e}.html`),e=e.replace(/(^|\/)(?:README|index).html$/i,"$1"),e),Xa=e=>{const[t,n=""]=e.split("#");return t?`${Gh(t)}${n?`#${n}`:""}`:e},ql=e=>Ja(e)&&xt(e.name),Ul=(e,t=!1)=>e?Qa(e)?e.map(n=>xt(n)?{name:n}:ql(n)?n:null).filter(n=>n!==null):xt(e)?[{name:e}]:ql(e)?[e]:(console.error(`Expect "author" to be \`AuthorInfo[] | AuthorInfo | string[] | string ${t?"":"| false"} | undefined\`, but got`,e),[]):[],ec=(e,t)=>{if(e){if(Qa(e)&&e.every(xt))return e;if(xt(e))return[e];console.error(`Expect ${t||"value"} to be \`string[] | string | undefined\`, but got`,e)}return[]},Yh=e=>ec(e,"category"),Zh=e=>ec(e,"tag"),io=e=>In(e,"/"),tc=/#.*$/u,Qh=e=>{const t=tc.exec(e);return t?t[0]:""},Kl=e=>decodeURI(e).replace(tc,"").replace(/(index)?\.html$/i,"").replace(/(README|index)?\.md$/i,""),nc=(e,t)=>{if(t===void 0)return!1;const n=Kl(e.path),r=Kl(t),o=Qh(t);return o?o===e.hash&&(!r||n===r):n===r},Gl=e=>{const t=atob(e);return Nh(Dh($h(t,!0)))},Jh=e=>Si(e)?e:`https://github.com/${e}`,rc=e=>!Si(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,qr=(e,...t)=>{const n=e.resolve(...t),r=n.matched[n.matched.length-1];if(!(r!=null&&r.redirect))return n;const{redirect:o}=r,i=Fh(o)?o(n):o,l=Bh(i)?{path:i}:i;return qr(e,{hash:n.hash,query:n.query,params:n.params,...l})},Xh=e=>{var t;if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)&&!(e.currentTarget&&((t=e.currentTarget.getAttribute("target"))!=null&&t.match(/\b_blank\b/i))))return e.preventDefault(),!0},nt=({to:e="",class:t="",...n},{slots:r})=>{var s;const o=Ye(),i=Xa(e),l=(a={})=>Xh(a)?o.push(e).catch():Promise.resolve();return f("a",{...n,class:["vp-link",t],href:In(i,"/")?Me(i):i,onClick:l},(s=r.default)==null?void 0:s.call(r))};nt.displayName="VPLink";const oc=()=>f(Le,{name:"github"},()=>f("path",{d:"M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"}));oc.displayName="GitHubIcon";const ic=()=>f(Le,{name:"gitlab"},()=>f("path",{d:"M229.333 78.688C223.52 62 199.895 62 193.895 78.688L87.958 406.438h247.5c-.188 0-106.125-327.75-106.125-327.75zM33.77 571.438c-4.875 15 .563 31.687 13.313 41.25l464.812 345L87.77 406.438zm301.5-165 176.813 551.25 176.812-551.25zm655.125 165-54-165-424.312 551.25 464.812-345c12.938-9.563 18.188-26.25 13.5-41.25zM830.27 78.688c-5.812-16.688-29.437-16.688-35.437 0l-106.125 327.75h247.5z"}));ic.displayName="GitLabIcon";const lc=()=>f(Le,{name:"gitee"},()=>f("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm242.97-533.34H482.39a23.7 23.7 0 0 0-23.7 23.7l-.03 59.28c0 13.08 10.59 23.7 23.7 23.7h165.96a23.7 23.7 0 0 1 23.7 23.7v11.85a71.1 71.1 0 0 1-71.1 71.1H375.71a23.7 23.7 0 0 1-23.7-23.7V423.11a71.1 71.1 0 0 1 71.1-71.1h331.8a23.7 23.7 0 0 0 23.7-23.7l.06-59.25a23.73 23.73 0 0 0-23.7-23.73H423.11a177.78 177.78 0 0 0-177.78 177.75v331.83c0 13.08 10.62 23.7 23.7 23.7h349.62a159.99 159.99 0 0 0 159.99-159.99V482.33a23.7 23.7 0 0 0-23.7-23.7z"}));lc.displayName="GiteeIcon";const sc=()=>f(Le,{name:"bitbucket"},()=>f("path",{d:"M575.256 490.862c6.29 47.981-52.005 85.723-92.563 61.147-45.714-20.004-45.714-92.562-1.133-113.152 38.29-23.442 93.696 7.424 93.696 52.005zm63.451-11.996c-10.276-81.152-102.29-134.839-177.152-101.156-47.433 21.138-79.433 71.424-77.129 124.562 2.853 69.705 69.157 126.866 138.862 120.576S647.3 548.571 638.708 478.83zm136.558-309.723c-25.161-33.134-67.986-38.839-105.728-45.13-106.862-17.151-216.576-17.7-323.438 1.134-35.438 5.706-75.447 11.996-97.719 43.996 36.572 34.304 88.576 39.424 135.424 45.129 84.553 10.862 171.447 11.447 256 .585 47.433-5.705 99.987-10.276 135.424-45.714zm32.585 591.433c-16.018 55.99-6.839 131.438-66.304 163.986-102.29 56.576-226.304 62.867-338.87 42.862-59.43-10.862-129.135-29.696-161.72-85.723-14.3-54.858-23.442-110.848-32.585-166.84l3.438-9.142 10.276-5.157c170.277 112.567 408.576 112.567 579.438 0 26.844 8.01 6.84 40.558 6.29 60.014zm103.424-549.157c-19.42 125.148-41.728 249.71-63.415 374.272-6.29 36.572-41.728 57.162-71.424 72.558-106.862 53.724-231.424 62.866-348.562 50.286-79.433-8.558-160.585-29.696-225.134-79.433-30.28-23.443-30.28-63.415-35.986-97.134-20.005-117.138-42.862-234.277-57.161-352.585 6.839-51.42 64.585-73.728 107.447-89.71 57.16-21.138 118.272-30.866 178.87-36.571 129.134-12.58 261.157-8.01 386.304 28.562 44.581 13.13 92.563 31.415 122.844 69.705 13.714 17.7 9.143 40.01 6.29 60.014z"}));sc.displayName="BitbucketIcon";const ac=()=>f(Le,{name:"source"},()=>f("path",{d:"M601.92 475.2c0 76.428-8.91 83.754-28.512 99.594-14.652 11.88-43.956 14.058-78.012 16.434-18.81 1.386-40.392 2.97-62.172 6.534-18.612 2.97-36.432 9.306-53.064 17.424V299.772c37.818-21.978 63.36-62.766 63.36-109.692 0-69.894-56.826-126.72-126.72-126.72S190.08 120.186 190.08 190.08c0 46.926 25.542 87.714 63.36 109.692v414.216c-37.818 21.978-63.36 62.766-63.36 109.692 0 69.894 56.826 126.72 126.72 126.72s126.72-56.826 126.72-126.72c0-31.086-11.286-59.598-29.7-81.576 13.266-9.504 27.522-17.226 39.996-19.206 16.038-2.574 32.868-3.762 50.688-5.148 48.312-3.366 103.158-7.326 148.896-44.55 61.182-49.698 74.25-103.158 75.24-187.902V475.2h-126.72zM316.8 126.72c34.848 0 63.36 28.512 63.36 63.36s-28.512 63.36-63.36 63.36-63.36-28.512-63.36-63.36 28.512-63.36 63.36-63.36zm0 760.32c-34.848 0-63.36-28.512-63.36-63.36s28.512-63.36 63.36-63.36 63.36 28.512 63.36 63.36-28.512 63.36-63.36 63.36zM823.68 158.4h-95.04V63.36h-126.72v95.04h-95.04v126.72h95.04v95.04h126.72v-95.04h95.04z"}));ac.displayName="SourceIcon";const It=(e,t)=>{var r;const n=(r=(t==null?void 0:t._instance)||kn())==null?void 0:r.appContext.components;return n?e in n||lt(e)in n||lr(lt(e))in n:!1},ev=()=>qh(()=>typeof window<"u"&&window.navigator&&"userAgent"in window.navigator),tv=()=>{const e=ev();return I(()=>e.value&&/\b(?:Android|iPhone)/i.test(navigator.userAgent))},Dn=e=>{const t=an();return I(()=>e[t.value])};function Yl(e,t){var n;const r=st();return Ws(()=>{r.value=e()},{...t,flush:(n=t==null?void 0:t.flush)!=null?n:"sync"}),ln(r)}function lo(e,t){let n,r,o;const i=ee(!0),l=()=>{i.value=!0,o()};fe(e,l,{flush:"sync"});const s=typeof t=="function"?t:t.get,a=typeof t=="function"?void 0:t.set,c=Ms((u,d)=>(r=u,o=d,{get(){return i.value&&(n=s(),i.value=!1),r(),n},set(p){a==null||a(p)}}));return Object.isExtensible(c)&&(c.trigger=l),c}function cn(e){return gs()?(Mu(e),!0):!1}function Fe(e){return typeof e=="function"?e():tn(e)}const hr=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const nv=Object.prototype.toString,rv=e=>nv.call(e)==="[object Object]",or=()=>{},Zl=ov();function ov(){var e,t;return hr&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function cc(e,t){function n(...r){return new Promise((o,i)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(i)})}return n}const uc=e=>e();function iv(e,t=!0,n=!0,r=!1){let o=0,i,l=!0,s=or,a;const c=()=>{i&&(clearTimeout(i),i=void 0,s(),s=or)};return d=>{const p=Fe(e),m=Date.now()-o,b=()=>a=d();return c(),p<=0?(o=Date.now(),b()):(m>p&&(n||!l)?(o=Date.now(),b()):t&&(a=new Promise((E,w)=>{s=r?w:E,i=setTimeout(()=>{o=Date.now(),l=!0,E(b()),c()},Math.max(0,p-m))})),!n&&!i&&(i=setTimeout(()=>l=!0,p)),l=!1,a)}}function lv(e=uc){const t=ee(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...i)=>{t.value&&e(...i)};return{isActive:ln(t),pause:n,resume:r,eventFilter:o}}function sv(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function fc(e){return e||kn()}function av(...e){if(e.length!==1)return Zr(...e);const t=e[0];return typeof t=="function"?ln(Ms(()=>({get:t,set:or}))):ee(t)}function cv(e,t=200,n=!1,r=!0,o=!1){return cc(iv(t,n,r,o),e)}function uv(e,t,n={}){const{eventFilter:r=uc,...o}=n;return fe(e,cc(r,t),o)}function fv(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:i,pause:l,resume:s,isActive:a}=lv(r);return{stop:uv(e,t,{...o,eventFilter:i}),pause:l,resume:s,isActive:a}}function so(e,t=!0,n){fc()?ge(e,n):t?e():sn(e)}function dv(e,t){fc(t)&&ur(e,t)}function pv(e,t,n={}){const{immediate:r=!0}=n,o=ee(!1);let i=null;function l(){i&&(clearTimeout(i),i=null)}function s(){o.value=!1,l()}function a(...c){l(),o.value=!0,i=setTimeout(()=>{o.value=!1,i=null,e(...c)},Fe(t))}return r&&(o.value=!0,hr&&a()),cn(s),{isPending:ln(o),start:a,stop:s}}function Ql(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=De(e),i=ee(e);function l(s){if(arguments.length)return i.value=s,i.value;{const a=Fe(n);return i.value=i.value===a?Fe(r):a,i.value}}return o?l:[i,l]}function bt(e){var t;const n=Fe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const kt=hr?window:void 0,dc=hr?window.document:void 0,pc=hr?window.navigator:void 0;function $e(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=kt):[t,n,r,o]=e,!t)return or;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const i=[],l=()=>{i.forEach(u=>u()),i.length=0},s=(u,d,p,m)=>(u.addEventListener(d,p,m),()=>u.removeEventListener(d,p,m)),a=fe(()=>[bt(t),Fe(o)],([u,d])=>{if(l(),!u)return;const p=rv(d)?{...d}:d;i.push(...n.flatMap(m=>r.map(b=>s(u,m,b,p))))},{immediate:!0,flush:"post"}),c=()=>{a(),l()};return cn(c),c}function hv(){const e=ee(!1);return kn()&&ge(()=>{e.value=!0}),e}function Vn(e){const t=hv();return I(()=>(t.value,!!e()))}function hc(e,t={}){const{window:n=kt}=t,r=Vn(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const i=ee(!1),l=c=>{i.value=c.matches},s=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",l):o.removeListener(l))},a=Ws(()=>{r.value&&(s(),o=n.matchMedia(Fe(e)),"addEventListener"in o?o.addEventListener("change",l):o.addListener(l),i.value=o.matches)});return cn(()=>{a(),s(),o=void 0}),i}function Jl(e,t={}){const{controls:n=!1,navigator:r=pc}=t,o=Vn(()=>r&&"permissions"in r);let i;const l=typeof e=="string"?{name:e}:e,s=ee(),a=()=>{i&&(s.value=i.state)},c=sv(async()=>{if(o.value){if(!i)try{i=await r.permissions.query(l),$e(i,"change",a),a()}catch{s.value="prompt"}return i}});return c(),n?{state:s,isSupported:o,query:c}:s}function vv(e={}){const{navigator:t=pc,read:n=!1,source:r,copiedDuring:o=1500,legacy:i=!1}=e,l=Vn(()=>t&&"clipboard"in t),s=Jl("clipboard-read"),a=Jl("clipboard-write"),c=I(()=>l.value||i),u=ee(""),d=ee(!1),p=pv(()=>d.value=!1,o);function m(){l.value&&s.value!=="denied"?t.clipboard.readText().then(y=>{u.value=y}):u.value=w()}c.value&&n&&$e(["copy","cut"],m);async function b(y=Fe(r)){c.value&&y!=null&&(l.value&&a.value!=="denied"?await t.clipboard.writeText(y):E(y),u.value=y,d.value=!0,p.start())}function E(y){const R=document.createElement("textarea");R.value=y??"",R.style.position="absolute",R.style.opacity="0",document.body.appendChild(R),R.select(),document.execCommand("copy"),R.remove()}function w(){var y,R,g;return(g=(R=(y=document==null?void 0:document.getSelection)==null?void 0:y.call(document))==null?void 0:R.toString())!=null?g:""}return{isSupported:c,text:u,copied:d,copy:b}}const Rr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Pr="__vueuse_ssr_handlers__",mv=_v();function _v(){return Pr in Rr||(Rr[Pr]=Rr[Pr]||{}),Rr[Pr]}function gv(e,t){return mv[e]||t}function bv(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const yv={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Xl="vueuse-storage";function vc(e,t,n,r={}){var o;const{flush:i="pre",deep:l=!0,listenToStorageChanges:s=!0,writeDefaults:a=!0,mergeDefaults:c=!1,shallow:u,window:d=kt,eventFilter:p,onError:m=D=>{console.error(D)},initOnMounted:b}=r,E=(u?st:ee)(typeof t=="function"?t():t);if(!n)try{n=gv("getDefaultStorage",()=>{var D;return(D=kt)==null?void 0:D.localStorage})()}catch(D){m(D)}if(!n)return E;const w=Fe(t),y=bv(w),R=(o=r.serializer)!=null?o:yv[y],{pause:g,resume:P}=fv(E,()=>V(E.value),{flush:i,deep:l,eventFilter:p});return d&&s&&so(()=>{$e(d,"storage",S),$e(d,Xl,$),b&&S()}),b||S(),E;function V(D){try{if(D==null)n.removeItem(e);else{const F=R.write(D),Z=n.getItem(e);Z!==F&&(n.setItem(e,F),d&&d.dispatchEvent(new CustomEvent(Xl,{detail:{key:e,oldValue:Z,newValue:F,storageArea:n}})))}}catch(F){m(F)}}function L(D){const F=D?D.newValue:n.getItem(e);if(F==null)return a&&w!=null&&n.setItem(e,R.write(w)),w;if(!D&&c){const Z=R.read(F);return typeof c=="function"?c(Z,w):y==="object"&&!Array.isArray(Z)?{...w,...Z}:Z}else return typeof F!="string"?F:R.read(F)}function $(D){S(D.detail)}function S(D){if(!(D&&D.storageArea!==n)){if(D&&D.key==null){E.value=w;return}if(!(D&&D.key!==e)){g();try{(D==null?void 0:D.newValue)!==R.write(E.value)&&(E.value=L(D))}catch(F){m(F)}finally{D?sn(P):P()}}}}}function Ev(e){return hc("(prefers-color-scheme: dark)",e)}function wv(e,t,n={}){const{window:r=kt,...o}=n;let i;const l=Vn(()=>r&&"MutationObserver"in r),s=()=>{i&&(i.disconnect(),i=void 0)},a=fe(()=>bt(e),d=>{s(),l.value&&r&&d&&(i=new MutationObserver(t),i.observe(d,o))},{immediate:!0}),c=()=>i==null?void 0:i.takeRecords(),u=()=>{s(),a()};return cn(u),{isSupported:l,stop:u,takeRecords:c}}function Tv(e,t,n={}){const{window:r=kt,...o}=n;let i;const l=Vn(()=>r&&"ResizeObserver"in r),s=()=>{i&&(i.disconnect(),i=void 0)},a=I(()=>Array.isArray(e)?e.map(d=>bt(d)):[bt(e)]),c=fe(a,d=>{if(s(),l.value&&r){i=new ResizeObserver(t);for(const p of d)p&&i.observe(p,o)}},{immediate:!0,flush:"post",deep:!0}),u=()=>{s(),c()};return cn(u),{isSupported:l,stop:u}}function Av(e,t={width:0,height:0},n={}){const{window:r=kt,box:o="content-box"}=n,i=I(()=>{var d,p;return(p=(d=bt(e))==null?void 0:d.namespaceURI)==null?void 0:p.includes("svg")}),l=ee(t.width),s=ee(t.height),{stop:a}=Tv(e,([d])=>{const p=o==="border-box"?d.borderBoxSize:o==="content-box"?d.contentBoxSize:d.devicePixelContentBoxSize;if(r&&i.value){const m=bt(e);if(m){const b=r.getComputedStyle(m);l.value=Number.parseFloat(b.width),s.value=Number.parseFloat(b.height)}}else if(p){const m=Array.isArray(p)?p:[p];l.value=m.reduce((b,{inlineSize:E})=>b+E,0),s.value=m.reduce((b,{blockSize:E})=>b+E,0)}else l.value=d.contentRect.width,s.value=d.contentRect.height},n);so(()=>{const d=bt(e);d&&(l.value="offsetWidth"in d?d.offsetWidth:t.width,s.value="offsetHeight"in d?d.offsetHeight:t.height)});const c=fe(()=>bt(e),d=>{l.value=d?t.width:0,s.value=d?t.height:0});function u(){a(),c()}return{width:l,height:s,stop:u}}const es=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function Vi(e,t={}){const{document:n=dc,autoExit:r=!1}=t,o=I(()=>{var y;return(y=bt(e))!=null?y:n==null?void 0:n.querySelector("html")}),i=ee(!1),l=I(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(y=>n&&y in n||o.value&&y in o.value)),s=I(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(y=>n&&y in n||o.value&&y in o.value)),a=I(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(y=>n&&y in n||o.value&&y in o.value)),c=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(y=>n&&y in n),u=Vn(()=>o.value&&n&&l.value!==void 0&&s.value!==void 0&&a.value!==void 0),d=()=>c?(n==null?void 0:n[c])===o.value:!1,p=()=>{if(a.value){if(n&&n[a.value]!=null)return n[a.value];{const y=o.value;if((y==null?void 0:y[a.value])!=null)return!!y[a.value]}}return!1};async function m(){if(!(!u.value||!i.value)){if(s.value)if((n==null?void 0:n[s.value])!=null)await n[s.value]();else{const y=o.value;(y==null?void 0:y[s.value])!=null&&await y[s.value]()}i.value=!1}}async function b(){if(!u.value||i.value)return;p()&&await m();const y=o.value;l.value&&(y==null?void 0:y[l.value])!=null&&(await y[l.value](),i.value=!0)}async function E(){await(i.value?m():b())}const w=()=>{const y=p();(!y||y&&d())&&(i.value=y)};return $e(n,es,w,!1),$e(()=>bt(o),es,w,!1),r&&cn(m),{isSupported:u,isFullscreen:i,enter:b,exit:m,toggle:E}}function Po(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Io(e,t=or,n={}){const{immediate:r=!0,manual:o=!1,type:i="text/javascript",async:l=!0,crossOrigin:s,referrerPolicy:a,noModule:c,defer:u,document:d=dc,attrs:p={}}=n,m=ee(null);let b=null;const E=R=>new Promise((g,P)=>{const V=S=>(m.value=S,g(S),S);if(!d){g(!1);return}let L=!1,$=d.querySelector(`script[src="${Fe(e)}"]`);$?$.hasAttribute("data-loaded")&&V($):($=d.createElement("script"),$.type=i,$.async=l,$.src=Fe(e),u&&($.defer=u),s&&($.crossOrigin=s),c&&($.noModule=c),a&&($.referrerPolicy=a),Object.entries(p).forEach(([S,D])=>$==null?void 0:$.setAttribute(S,D)),L=!0),$.addEventListener("error",S=>P(S)),$.addEventListener("abort",S=>P(S)),$.addEventListener("load",()=>{$.setAttribute("data-loaded","true"),t($),V($)}),L&&($=d.head.appendChild($)),R||V($)}),w=(R=!0)=>(b||(b=E(R)),b),y=()=>{if(!d)return;b=null,m.value&&(m.value=null);const R=d.querySelector(`script[src="${Fe(e)}"]`);R&&d.head.removeChild(R)};return r&&!o&&so(w),o||dv(y),{scriptTag:m,load:w,unload:y}}function mc(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const Ir=new WeakMap;function _c(e,t=!1){const n=ee(t);let r=null,o;fe(av(e),s=>{const a=Po(Fe(s));if(a){const c=a;Ir.get(c)||Ir.set(c,o),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const i=()=>{const s=Po(Fe(e));!s||n.value||(Zl&&(r=$e(s,"touchmove",a=>{Lv(a)},{passive:!1})),s.style.overflow="hidden",n.value=!0)},l=()=>{var s;const a=Po(Fe(e));!a||!n.value||(Zl&&(r==null||r()),a.style.overflow=(s=Ir.get(a))!=null?s:"",Ir.delete(a),n.value=!1)};return cn(l),I({get(){return n.value},set(s){s?i():l()}})}function Rv(e={}){const{window:t=kt,behavior:n="auto"}=e;if(!t)return{x:ee(0),y:ee(0)};const r=ee(t.scrollX),o=ee(t.scrollY),i=I({get(){return r.value},set(s){scrollTo({left:s,behavior:n})}}),l=I({get(){return o.value},set(s){scrollTo({top:s,behavior:n})}});return $e(t,"scroll",()=>{r.value=t.scrollX,o.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:l}}function Pv(e={}){const{window:t=kt,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:o=!0,includeScrollbar:i=!0}=e,l=ee(n),s=ee(r),a=()=>{t&&(i?(l.value=t.innerWidth,s.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,s.value=t.document.documentElement.clientHeight))};if(a(),so(a),$e("resize",a,{passive:!0}),o){const c=hc("(orientation: portrait)");fe(c,()=>a())}return{width:l,height:s}}const gc=({type:e="info",text:t="",vertical:n,color:r},{slots:o})=>{var i;return f("span",{class:["vp-badge",e,{diy:r}],style:{verticalAlign:n??!1,backgroundColor:r??!1}},((i=o.default)==null?void 0:i.call(o))||t)};gc.displayName="Badge";var Iv=K({name:"FontIcon",props:{icon:{type:String,default:""},color:{type:String,default:""},size:{type:[String,Number],default:""}},setup(e){const t=I(()=>{const r=["font-icon icon"],o=`fas fa-${e.icon}`;return r.push("fa-fw fa-sm"),r.push(e.icon.includes(" ")?e.icon:o),r}),n=I(()=>{const r={};return e.color&&(r.color=e.color),e.size&&(r["font-size"]=Number.isNaN(Number(e.size))?e.size:`${e.size}px`),Sn(r).length?r:null});return()=>e.icon?f("span",{key:e.icon,class:t.value,style:n.value}):null}});const bc=()=>f(Le,{name:"back-to-top"},()=>[f("path",{d:"M512 843.2c-36.2 0-66.4-13.6-85.8-21.8-10.8-4.6-22.6 3.6-21.8 15.2l7 102c.4 6.2 7.6 9.4 12.6 5.6l29-22c3.6-2.8 9-1.8 11.4 2l41 64.2c3 4.8 10.2 4.8 13.2 0l41-64.2c2.4-3.8 7.8-4.8 11.4-2l29 22c5 3.8 12.2.6 12.6-5.6l7-102c.8-11.6-11-20-21.8-15.2-19.6 8.2-49.6 21.8-85.8 21.8z"}),f("path",{d:"m795.4 586.2-96-98.2C699.4 172 513 32 513 32S324.8 172 324.8 488l-96 98.2c-3.6 3.6-5.2 9-4.4 14.2L261.2 824c1.8 11.4 14.2 17 23.6 10.8L419 744s41.4 40 94.2 40c52.8 0 92.2-40 92.2-40l134.2 90.8c9.2 6.2 21.6.6 23.6-10.8l37-223.8c.4-5.2-1.2-10.4-4.8-14zM513 384c-34 0-61.4-28.6-61.4-64s27.6-64 61.4-64c34 0 61.4 28.6 61.4 64S547 384 513 384z"})]);bc.displayName="BackToTopIcon";var Ov={"/zh/":{backToTop:"返回顶部"},"/":{backToTop:"Back to top"}},xv=K({name:"BackToTop",props:{threshold:{type:Number,default:100},noProgress:Boolean},setup(e){const t=Pe(),n=Dn(Ov),r=st(),{height:o}=Av(r),{height:i}=Pv(),{y:l}=Rv(),s=I(()=>t.value.backToTop!==!1&&l.value>e.threshold),a=I(()=>l.value/(o.value-i.value)*100);return ge(()=>{r.value=document.body}),()=>f(Ot,{name:"fade"},()=>s.value?f("button",{type:"button",class:"vp-back-to-top-button","aria-label":n.value.backToTop,"data-balloon-pos":"left",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[e.noProgress?null:f("span",{class:"vp-scroll-progress",role:"progressbar","aria-labelledby":"loadinglabel","aria-valuenow":a.value},f("svg",f("circle",{cx:"50%",cy:"50%",style:{"stroke-dasharray":`calc(${Math.PI*a.value}% - ${4*Math.PI}px) calc(${Math.PI*100}% - ${4*Math.PI}px)`}}))),f(bc)]):null)}});const kv=at({enhance:({app:e})=>{It("Badge")||e.component("Badge",gc),It("FontIcon")||e.component("FontIcon",Iv)},setup:()=>{Io("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/brands.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}}),Io("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/solid.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}}),Io("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/fontawesome.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}})},rootComponents:[()=>f(xv,{})]});function Cv(e,t,n){var r,o,i;t===void 0&&(t=50),n===void 0&&(n={});var l=(r=n.isImmediate)!=null&&r,s=(o=n.callback)!=null&&o,a=n.maxWait,c=Date.now(),u=[];function d(){if(a!==void 0){var m=Date.now()-c;if(m+t>=a)return a-m}return t}var p=function(){var m=[].slice.call(arguments),b=this;return new Promise(function(E,w){var y=l&&i===void 0;if(i!==void 0&&clearTimeout(i),i=setTimeout(function(){if(i=void 0,c=Date.now(),!l){var g=e.apply(b,m);s&&s(g),u.forEach(function(P){return(0,P.resolve)(g)}),u=[]}},d()),y){var R=e.apply(b,m);return s&&s(R),E(R)}u.push({resolve:E,reject:w})})};return p.cancel=function(m){i!==void 0&&clearTimeout(i),u.forEach(function(b){return(0,b.reject)(m)}),u=[]},p}const Sv=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const o=Ye(),l=Cv(()=>{var E,w;const s=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(s-0)p.some(R=>R.hash===y.hash));for(let y=0;y=(((E=R.parentElement)==null?void 0:E.offsetTop)??0)-r,V=!g||s<(((w=g.parentElement)==null?void 0:w.offsetTop)??0)-r;if(!(P&&V))continue;const $=decodeURIComponent(o.currentRoute.value.hash),S=decodeURIComponent(R.hash);if($===S)return;if(d){for(let D=y+1;D{window.addEventListener("scroll",l)}),yi(()=>{window.removeEventListener("scroll",l)})},ts=async(e,t)=>{const{scrollBehavior:n}=e.options;e.options.scrollBehavior=void 0,await e.replace({query:e.currentRoute.value.query,hash:t}).finally(()=>e.options.scrollBehavior=n)},Dv=".vp-sidebar-link, .toc-link",Vv=".header-anchor",Mv=200,$v=5,Nv=at({setup(){Sv({headerLinkSelector:Dv,headerAnchorSelector:Vv,delay:Mv,offset:$v})}});let yc=e=>ue(e.title)?{title:e.title}:null;const Ec=Symbol(""),zv=e=>{yc=e},Fv=()=>_e(Ec),Bv=e=>{e.provide(Ec,yc)};var Hv={"/zh/":{title:"目录",empty:"暂无目录"},"/":{title:"Catalog",empty:"No catalog"}},jv=K({name:"AutoCatalog",props:{base:{type:String,default:""},level:{type:Number,default:3},index:Boolean,hideHeading:Boolean},setup(e){const t=Fv(),n=Dn(Hv),r=de(),o=Ye(),i=Oa(),l=ee(o.getRoutes().map(({meta:c,path:u})=>{const d=t(c);if(!d)return null;const p=u.split("/").length;return{level:fn(u,"/")?p-2:p-1,base:u.replace(/\/[^/]+\/?$/,"/"),path:u,...d}}).filter(c=>Ja(c)&&ue(c.title))),s=()=>{const c=e.base?sp(ya(e.base)):r.value.path.replace(/\/[^/]+$/,"/"),u=c.split("/").length-2,d=[];return l.value.filter(({level:p,path:m})=>{if(!In(m,c)||m===c)return!1;if(c==="/"){const b=Sn(i.value.locales).filter(E=>E!=="/");if(m==="/404.html"||b.some(E=>In(m,E)))return!1}return p-u<=e.level&&(fn(m,".html")&&!fn(m,"/index.html")||fn(m,"/"))}).sort(({title:p,level:m,path:b,order:E},{title:w,level:y,path:R,order:g})=>m-y||(fn(b,"/")?-1:fn(R,"/")?1:Ro(E)?Ro(g)?E>0?g>0?E-g:-1:g<0?E-g:1:E:Ro(g)?g:p.localeCompare(w))).forEach(p=>{var E;const{base:m,level:b}=p;switch(b-u){case 1:d.push(p);break;case 2:{const w=d.find(y=>y.path===m);w&&(w.children??(w.children=[])).push(p);break}default:{const w=d.find(y=>y.path===m.replace(/\/[^/]+\/$/,"/"));if(w){const y=(E=w.children)==null?void 0:E.find(R=>R.path===m);y&&(y.children??(y.children=[])).push(p)}}}}),d},a=I(()=>s());return()=>{const c=a.value.some(u=>u.children);return f("div",{class:["vp-catalog-wrapper",{index:e.index}]},[e.hideHeading?null:f("h2",{class:"vp-catalog-main-title"},n.value.title),a.value.length?f(e.index?"ol":"ul",{class:["vp-catalogs",{deep:c}]},a.value.map(({children:u=[],title:d,path:p,content:m})=>{const b=f(nt,{class:"vp-catalog-title",to:p},()=>m?f(m):d);return f("li",{class:"vp-catalog"},c?[f("h3",{id:d,class:["vp-catalog-child-title",{"has-children":u.length}]},[f("a",{href:`#${d}`,class:"header-anchor","aria-hidden":!0},"#"),b]),u.length?f(e.index?"ol":"ul",{class:"vp-child-catalogs"},u.map(({children:E=[],content:w,path:y,title:R})=>f("li",{class:"vp-child-catalog"},[f("div",{class:["vp-catalog-sub-title",{"has-children":E.length}]},[f("a",{href:`#${R}`,class:"header-anchor"},"#"),f(nt,{class:"vp-catalog-title",to:y},()=>w?f(w):R)]),E.length?f(e.index?"ol":"div",{class:e.index?"vp-sub-catalogs":"vp-sub-catalogs-wrapper"},E.map(({content:g,path:P,title:V})=>e.index?f("li",{class:"vp-sub-catalog"},f(nt,{to:P},()=>g?f(g):V)):f(nt,{class:"vp-sub-catalog-link",to:P},()=>g?f(g):V))):null]))):null]:f("div",{class:"vp-catalog-child-title"},b))})):f("p",{class:"vp-empty-catalog"},n.value.empty)])}}}),Wv=at({enhance:({app:e})=>{Bv(e),It("AutoCatalog",e)||e.component("AutoCatalog",jv)}});const qv=f("svg",{class:"external-link-icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},[f("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}),f("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"})]),wc=K({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const t=an(),n=I(()=>e.locales[t.value]??{openInNewWindow:"open in new window"});return()=>f("span",[qv,f("span",{class:"external-link-icon-sr-only"},n.value.openInNewWindow)])}});var Uv={};const Kv=Uv,Gv=at({enhance({app:e}){e.component("ExternalLinkIcon",f(wc,{locales:Kv}))}});/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */const ae={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const t=ae.isStarted();e=Oo(e,ae.settings.minimum,1),ae.status=e===1?null:e;const n=ae.render(!t),r=n.querySelector(ae.settings.barSelector),o=ae.settings.speed,i=ae.settings.easing;return n.offsetWidth,Yv(l=>{Or(r,{transform:"translate3d("+ns(e)+"%,0,0)",transition:"all "+o+"ms "+i}),e===1?(Or(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){Or(n,{transition:"all "+o+"ms linear",opacity:"0"}),setTimeout(function(){ae.remove(),l()},o)},o)):setTimeout(()=>l(),o)}),ae},isStarted:()=>typeof ae.status=="number",start:()=>{ae.status||ae.set(0);const e=()=>{setTimeout(()=>{ae.status&&(ae.trickle(),e())},ae.settings.trickleSpeed)};return ae.settings.trickle&&e(),ae},done:e=>!e&&!ae.status?ae:ae.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=ae.status;return t?(typeof e!="number"&&(e=(1-t)*Oo(Math.random()*t,.1,.95)),t=Oo(t+e,0,.994),ae.set(t)):ae.start()},trickle:()=>ae.inc(Math.random()*ae.settings.trickleRate),render:e=>{if(ae.isRendered())return document.getElementById("nprogress");rs(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=ae.settings.template;const n=t.querySelector(ae.settings.barSelector),r=e?"-100":ns(ae.status||0),o=document.querySelector(ae.settings.parent);return Or(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),o!==document.body&&rs(o,"nprogress-custom-parent"),o==null||o.appendChild(t),t},remove:()=>{os(document.documentElement,"nprogress-busy"),os(document.querySelector(ae.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&Zv(e)},isRendered:()=>!!document.getElementById("nprogress")},Oo=(e,t,n)=>en?n:e,ns=e=>(-1+e)*100,Yv=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),Or=function(){const e=["Webkit","O","Moz","ms"],t={};function n(l){return l.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(s,a){return a.toUpperCase()})}function r(l){const s=document.body.style;if(l in s)return l;let a=e.length;const c=l.charAt(0).toUpperCase()+l.slice(1);let u;for(;a--;)if(u=e[a]+c,u in s)return u;return l}function o(l){return l=n(l),t[l]??(t[l]=r(l))}function i(l,s,a){s=o(s),l.style[s]=a}return function(l,s){for(const a in s){const c=s[a];c!==void 0&&Object.prototype.hasOwnProperty.call(s,a)&&i(l,a,c)}}}(),Tc=(e,t)=>(typeof e=="string"?e:Mi(e)).indexOf(" "+t+" ")>=0,rs=(e,t)=>{const n=Mi(e),r=n+t;Tc(n,t)||(e.className=r.substring(1))},os=(e,t)=>{const n=Mi(e);if(!Tc(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},Mi=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),Zv=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)},Qv=()=>{ge(()=>{const e=Ye(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||ae.start()}),e.afterEach(n=>{t.add(n.path),ae.done()})})},Jv=at({setup(){Qv()}}),Xv=JSON.parse(`{"encrypt":{},"logo":"/logo.svg","author":{"name":"ZLMediaKit","url":"https://docs.ZLMediaKit.com"},"repo":"ZLMediaKit/ZLMediaKit","docsRepo":"ZLMediaKit/docs","docsDir":"src","navbarLayout":{"start":["Brand"],"center":[],"end":["Links","Language","Repo","Outlook","Search"]},"locales":{"/zh/":{"lang":"zh-CN","navbarLocales":{"langName":"简体中文","selectLangAriaLabel":"选择语言"},"metaLocales":{"author":"作者","date":"写作日期","origin":"原创","views":"访问量","category":"分类","tag":"标签","readingTime":"阅读时间","words":"字数","toc":"此页内容","prev":"上一页","next":"下一页","lastUpdated":"上次编辑于","contributors":"贡献者","editLink":"在 GitHub 上编辑此页","print":"打印"},"outlookLocales":{"themeColor":"主题色","darkmode":"外观","fullscreen":"全屏"},"routeLocales":{"skipToContent":"跳至主要內容","notFoundTitle":"页面不存在","notFoundMsg":["这里什么也没有","我们是怎么来到这儿的?","这 是 四 零 四 !","看起来你访问了一个失效的链接"],"back":"返回上一页","home":"带我回家","openInNewWindow":"Open in new window"},"navbar":["/zh/","/zh/guide/","/zh/tutorial/",{"text":"参考","icon":"lightbulb","prefix":"/zh/reference/","children":["test","resources","documents","development_log"]},{"text":"了解更多","icon":"laptop-code","prefix":"/zh/more/","children":["collaborative_projects","license","thanks","contact","use_cases"]}],"sidebar":{"/zh/":["","tutorial/",{"text":"指南","icon":"book","prefix":"guide/","children":"structure"},{"text":"参考","icon":"laptop-code","prefix":"reference/","link":"reference/","children":"structure"},{"text":"了解更多","icon":"laptop-code","prefix":"more/","link":"more/","children":"structure"}]},"footer":"MIT Licensed","displayFooter":true},"/":{"lang":"en-US","navbarLocales":{"langName":"English","selectLangAriaLabel":"Select language"},"metaLocales":{"author":"Author","date":"Writing Date","origin":"Original","views":"Page views","category":"Category","tag":"Tag","readingTime":"Reading Time","words":"Words","toc":"On This Page","prev":"Prev","next":"Next","lastUpdated":"Last update","contributors":"Contributors","editLink":"Edit this page on GitHub","print":"Print"},"outlookLocales":{"themeColor":"Theme Color","darkmode":"Theme Mode","fullscreen":"Full Screen"},"routeLocales":{"skipToContent":"Skip to main content","notFoundTitle":"Page not found","notFoundMsg":["There’s nothing here.","How did we get here?","That’s a Four-Oh-Four.","Looks like we've got some broken links."],"back":"Go back","home":"Take me home","openInNewWindow":"Open in new window"},"navbar":["/","/guide/","/tutorial/",{"text":"Reference","icon":"lightbulb","prefix":"/reference/","children":["test","resources","documents","development_log"]},{"text":"More","icon":"lightbulb","prefix":"/more/","children":["collaborative_projects","license","thanks","contact","use_cases"]}],"sidebar":{"/":["","tutorial/",{"text":"Docs","icon":"book","prefix":"guide/","children":"structure"},{"text":"Reference","icon":"laptop-code","prefix":"reference/","link":"reference/","children":"structure"},{"text":"More","icon":"laptop-code","prefix":"more/","link":"more/","children":"structure"}]},"footer":"MIT Licensed","displayFooter":true}}}`),em=ee(Xv),Ac=()=>em,Lc=Symbol(""),tm=()=>{const e=_e(Lc);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},nm=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},rm=at({enhance({app:e}){const t=Ac(),n=e._context.provides[Ii],r=I(()=>nm(t.value,n.value));e.provide(Lc,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}});var om={provider:"Giscus",lightTheme:"https://unpkg.com/vuepress-theme-hope@2.0.0-rc.4/templates/giscus/light.css",darkTheme:"https://unpkg.com/vuepress-theme-hope@2.0.0-rc.4/templates/giscus/dark.css",repo:"ZLMediaKit/docs",repoId:"R_kgDOKboWmQ",category:"Announcements",categoryId:"DIC_kwDOKboWmc4CZ_77"};const im=om;let lm=im;const Rc=Symbol(""),Pc=()=>_e(Rc),sm=Pc,am=e=>{e.provide(Rc,lm)},is=["ar","ca","de","en","eo","es","fa","fr","he","id","it","ja","ko","nl","pl","pt","ro","ru","th","tr","uk","vi","zh-CN","zh-TW"];var cm=K({name:"GiscusComment",props:{identifier:{type:String,required:!0},darkmode:Boolean},setup(e){const t=sm(),n=!!(t.repo&&t.repoId&&t.category&&t.categoryId),{repo:r,repoId:o,category:i,categoryId:l}=t,s=ee(!1),a=I(()=>{const u=Pi().value;if(is.includes(u))return u;const d=u.split("-")[0];return is.includes(d)?d:"en"}),c=I(()=>({repo:r,repoId:o,category:i,categoryId:l,lang:a.value,theme:e.darkmode?t.darkTheme||"dark":t.lightTheme||"light",mapping:t.mapping||"pathname",term:e.identifier,inputPosition:t.inputPosition||"top",reactionsEnabled:t.reactionsEnabled===!1?"0":"1",strict:t.strict===!1?"0":"1",loading:t.lazyLoading===!1?"eager":"lazy",emitMetadata:"0"}));return ge(async()=>{await h(()=>import("./giscus-NkhROb6B.js"),__vite__mapDeps([])),s.value=!0}),()=>n?f("div",{id:"comment",class:["giscus-wrapper",{"input-top":t.inputPosition!=="bottom"}]},s.value?f("giscus-widget",c.value):f(Ci)):null}}),um=K({name:"CommentService",props:{darkmode:Boolean},setup(e){const t=Pc(),n=de(),r=Pe(),o=t.comment!==!1,i=I(()=>r.value.comment||o&&r.value.comment!==!1);return()=>f(cm,{identifier:r.value.commentID||n.value.path,darkmode:e.darkmode,style:{display:i.value?"block":"none"}})}}),fm=at({enhance:({app:e})=>{am(e),e.component("CommentService",um)}}),dm={"/zh/":{copy:"复制代码",copied:"已复制",hint:"复制成功"},"/":{copy:"Copy code",copied:"Copied",hint:"Copied successfully"}},pm=['.theme-hope-content div[class*="language-"] pre'];const hm=800,vm=2e3,mm=dm,_m=!1,gm=pm,ls=!1,xo=new Map,bm=()=>{const{copy:e}=vv({legacy:!0}),t=Dn(mm),n=de(),r=tv(),o=s=>{if(!s.hasAttribute("copy-code-registered")){const a=document.createElement("button");a.type="button",a.classList.add("copy-code-button"),a.innerHTML='
',a.setAttribute("aria-label",t.value.copy),a.setAttribute("data-copied",t.value.copied),s.parentElement&&s.parentElement.insertBefore(a,s),s.setAttribute("copy-code-registered","")}},i=()=>sn().then(()=>new Promise(s=>{setTimeout(()=>{gm.forEach(a=>{document.querySelectorAll(a).forEach(o)}),s()},hm)})),l=(s,a,c)=>{let{innerText:u=""}=a;/language-(shellscript|shell|bash|sh|zsh)/.test(s.classList.toString())&&(u=u.replace(/^ *(\$|>) /gm,"")),e(u).then(()=>{c.classList.add("copied"),clearTimeout(xo.get(c));const d=setTimeout(()=>{c.classList.remove("copied"),c.blur(),xo.delete(c)},vm);xo.set(c,d)})};ge(()=>{(!r.value||ls)&&i(),$e("click",s=>{const a=s.target;if(a.matches('div[class*="language-"] > button.copy')){const c=a.parentElement,u=a.nextElementSibling;u&&l(c,u,a)}else if(a.matches('div[class*="language-"] div.copy-icon')){const c=a.parentElement,u=c.parentElement,d=c.nextElementSibling;d&&l(u,d,c)}}),fe(()=>n.value.path,()=>{(!r.value||ls)&&i()})})};var ym=at({setup:()=>{bm()}});const Em=()=>{$e("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})})};let wm={};const Ic=Symbol(""),Tm=()=>_e(Ic),Am=e=>{e.provide(Ic,wm)},ss=()=>{const e=document.documentElement;return e.classList.contains("dark")||e.getAttribute("data-theme")==="dark"},dn={useMaxWidth:!1},Lm=e=>({dark:e,background:e?"#1e1e1e":"#fff",primaryColor:e?"#389d70":"#4abf8a",primaryBorderColor:e?"#389d70":"#4abf8a",primaryTextColor:e?"#fff":"#000",secondaryColor:"#ffb500",secondaryBorderColor:e?"#fff":"#000",secondaryTextColor:e?"#ddd":"#333",tertiaryColor:e?"#282828":"#efeef4",tertiaryBorderColor:e?"#bbb":"#242424",tertiaryTextColor:e?"#ddd":"#333",noteBkgColor:e?"#f6d365":"#fff5ad",noteTextColor:"#242424",noteBorderColor:e?"#f6d365":"#333",lineColor:e?"#d3d3d3":"#333",textColor:e?"#fff":"#242424",mainBkg:e?"#389d70":"#4abf8a",errorBkgColor:"#eb4d5d",errorTextColor:"#fff",nodeBorder:e?"#389d70":"#4abf8a",nodeTextColor:e?"#fff":"#242424",signalTextColor:e?"#9e9e9e":"#242424",classText:"#fff",labelColor:"#fff",attributeBackgroundColorEven:e?"#0d1117":"#fff",attributeBackgroundColorOdd:e?"#161b22":"#f8f8f8",fillType0:e?"#cf1322":"#f1636e",fillType1:"#f39c12",fillType2:"#2ecc71",fillType3:"#fa541c",fillType4:"#25a55b",fillType5:"#13c2c2",fillType6:"#096dd9",fillType7:"#aa6fe9"});var Rm=K({name:"Mermaid",props:{id:{type:String,required:!0},code:{type:String,required:!0},title:{type:String,default:""}},setup(e){const{themeVariables:t,...n}=Tm(),r=st(),o=I(()=>Gl(e.code)),i=ee(""),l=ee(!1);let s=!1;const a=async()=>{const[{default:d}]=await Promise.all([h(()=>import("./mermaid.core-YBgJFCkH.js").then(p=>p.b7),__vite__mapDeps([])),s?Promise.resolve():(s=!0,new Promise(p=>setTimeout(p,800)))]);d.initialize({theme:"base",themeVariables:{...Lm(l.value),...Uh(t)?t(l.value):t},flowchart:dn,sequence:dn,journey:dn,gantt:dn,er:dn,pie:dn,...n,startOnLoad:!1}),i.value=(await d.render(e.id,o.value)).svg},c=()=>{const{body:d}=document,p=document.createElement("div");p.classList.add("mermaid-preview"),p.innerHTML=i.value,d.appendChild(p),p.addEventListener("click",()=>{d.removeChild(p)})},u=()=>{const d=`data:image/svg+xml;charset=utf8,${i.value.replace(/
/g,"
").replace(/%/g,"%25").replace(/"/g,"%22").replace(/'/g,"%27").replace(/&/g,"%26").replace(/#/g,"%23").replace(/{/g,"%7B").replace(/}/g,"%7D").replace(//g,"%3E")}`,p=document.createElement("a");p.setAttribute("href",d),p.setAttribute("download",`${e.title?Gl(e.title):e.id}.svg`),p.click()};return ge(()=>{l.value=ss(),a(),wv(document.documentElement,()=>{l.value=ss()},{attributeFilter:["class","data-theme"],attributes:!0}),fe(l,()=>a())}),()=>[f("div",{class:"mermaid-actions"},[f("button",{class:"preview-button",onClick:()=>c(),title:"preview",innerHTML:''}),f("button",{class:"download-button",onClick:()=>u(),title:"download",innerHTML:''})]),f("div",{ref:r,class:"mermaid-wrapper"},i.value?f("div",{class:"mermaid-content",innerHTML:i.value}):f(Ci,{class:"mermaid-loading",height:96}))]}});const ko=vc("VUEPRESS_TAB_STORE",{});var Pm=K({name:"Tabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=ee(e.active),r=st([]),o=()=>{e.tabId&&(ko.value[e.tabId]=e.data[n.value].id)},i=(c=n.value)=>{n.value=c{n.value=c>0?c-1:r.value.length-1,r.value[n.value].focus()},s=(c,u)=>{c.key===" "||c.key==="Enter"?(c.preventDefault(),n.value=u):c.key==="ArrowRight"?(c.preventDefault(),i()):c.key==="ArrowLeft"&&(c.preventDefault(),l()),o()},a=()=>{if(e.tabId){const c=e.data.findIndex(({id:u})=>ko.value[e.tabId]===u);if(c!==-1)return c}return e.active};return ge(()=>{n.value=a(),fe(()=>ko.value[e.tabId],(c,u)=>{if(e.tabId&&c!==u){const d=e.data.findIndex(({id:p})=>p===c);d!==-1&&(n.value=d)}})}),()=>e.data.length?f("div",{class:"vp-tabs"},[f("div",{class:"vp-tabs-nav",role:"tablist"},e.data.map(({id:c},u)=>{const d=u===n.value;return f("button",{type:"button",ref:p=>{p&&(r.value[u]=p)},class:["vp-tab-nav",{active:d}],role:"tab","aria-controls":`tab-${e.id}-${u}`,"aria-selected":d,onClick:()=>{n.value=u,o()},onKeydown:p=>s(p,u)},t[`title${u}`]({value:c,isActive:d}))})),e.data.map(({id:c},u)=>{const d=u===n.value;return f("div",{class:["vp-tab",{active:d}],id:`tab-${e.id}-${u}`,role:"tabpanel","aria-expanded":d},[f("div",{class:"vp-tab-title"},t[`title${u}`]({value:c,isActive:d})),t[`tab${u}`]({value:c,isActive:d})])})]):null}});const Im=at({enhance:({app:e})=>{Am(e),e.component("Mermaid",Rm),e.component("Tabs",Pm)},setup:()=>{Em()}});let Om={};const Oc=Symbol(""),xm=()=>_e(Oc),km=e=>{e.provide(Oc,Om)};var Cm={"/zh/":{closeTitle:"关闭",downloadTitle:"下载图片",fullscreenTitle:"切换全屏",zoomTitle:"缩放",arrowPrevTitle:"上一个 (左箭头)",arrowNextTitle:"下一个 (右箭头)"},"/":{closeTitle:"Close",downloadTitle:"Download Image",fullscreenTitle:"Switch to full screen",zoomTitle:"Zoom in/out",arrowPrevTitle:"Prev (Arrow Left)",arrowNextTitle:"Next (Arrow Right)"}};const Sm=".theme-hope-content :not(a) > img:not([no-view])",Dm=Cm,Vm=800,Mm='
',$m=e=>ue(e)?Array.from(document.querySelectorAll(e)):e.map(t=>Array.from(document.querySelectorAll(t))).flat(),xc=e=>new Promise((t,n)=>{e.complete?t({type:"image",element:e,src:e.src,width:e.naturalWidth,height:e.naturalHeight,alt:e.alt,msrc:e.src}):(e.onload=()=>t(xc(e)),e.onerror=r=>n(r))}),Nm=()=>{const e=Dn(Dm),t=Pe(),n=de(),{isSupported:r,toggle:o}=Vi(),i=xm();let l;const s=I(()=>t.value.photoSwipe===!1?!1:t.value.photoSwipe||Sm),a=u=>{u.on("uiRegister",()=>{r&&u.ui.registerElement({name:"fullscreen",order:7,isButton:!0,html:'',onClick:()=>{o()}}),u.ui.registerElement({name:"download",order:8,isButton:!0,tagName:"a",html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-download"},onInit:(d,p)=>{d.setAttribute("download",""),d.setAttribute("target","_blank"),d.setAttribute("rel","noopener"),p.on("change",()=>{d.setAttribute("href",p.currSlide.data.src)})}}),u.ui.registerElement({name:"bulletsIndicator",className:"photo-swipe-bullets-indicator",appendTo:"wrapper",onInit:(d,p)=>{const m=[];let b=-1;for(let E=0;E{p.goTo(m.indexOf(y.target))},m.push(w),d.appendChild(w)}p.on("change",()=>{b>=0&&m[b].classList.remove("active"),m[p.currIndex].classList.add("active"),b=p.currIndex})}})})},c=async()=>{if(s.value)return Promise.all([h(()=>import("./photoswipe.esm-08_zHRDQ.js"),__vite__mapDeps([])),sn().then(()=>new Promise(u=>setTimeout(u,Vm)).then(()=>$m(s.value)))]).then(([{default:u},d])=>{const p=d.map(m=>({html:Mm,element:m,msrc:m.src}));d.forEach((m,b)=>{const E=()=>{l=new u({preloaderDelay:0,showHideAnimationType:"zoom",...e.value,...i,dataSource:p,index:b,closeOnVerticalDrag:!0,wheelToZoom:!1}),a(l),l.addFilter("thumbEl",()=>m),l.addFilter("placeholderSrc",()=>m.src),l.init()};m.style.cursor="zoom-in",m.addEventListener("click",()=>{E()}),m.addEventListener("keypress",({key:w})=>{w==="Enter"&&E()})}),d.forEach((m,b)=>{xc(m).then(E=>{p.splice(b,1,E),l==null||l.refreshSlideContent(b)})})})};ge(()=>{$e("wheel",()=>{l==null||l.close()}),fe(()=>n.value.path,c,{immediate:!0})})};var zm=at({enhance:({app:e})=>{km(e)},setup:()=>{Nm()}});function Fm(e){return{all:e=e||new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(o){o(n)}),(r=e.get("*"))&&r.slice().map(function(o){o(t,n)})}}}const kc=Symbol(""),Bm=()=>{const e=_e(kc);if(!e)throw new Error("usePWAEvent() is called without provider.");return e},Hm=async(e,t={},n=!0)=>{const{register:r}=await h(()=>import("./index-7SG8bi1h.js"),__vite__mapDeps([]));r(e,{ready(o){var i;n&&console.info("[Service Worker]: active"),(i=t.ready)==null||i.call(t,o)},registered(o){var i;n&&console.log("[Service Worker]: registered"),(i=t.registered)==null||i.call(t,o)},cached(o){var i;n&&console.log("[Service Worker]: cached"),(i=t.cached)==null||i.call(t,o)},async updatefound(o){var i;await navigator.serviceWorker.getRegistration()&&(n&&console.log("[Service Worker]: update found"),(i=t.updatefound)==null||i.call(t,o))},updated(o){var i;n&&console.log("[Service Worker]: updated"),(i=t.updated)==null||i.call(t,o)},offline(){var o;n&&console.log("[Service Worker]: offline"),(o=t.offline)==null||o.call(t)},error(o){var i;n&&console.error("[Service Worker]: ",o),(i=t.error)==null||i.call(t,o)}})},jm=async e=>Hm(Me("service-worker.js"),{ready(t){e.emit("ready",t)},registered(t){e.emit("registered",t)},cached(t){e.emit("cached",t)},updatefound(t){e.emit("updatefound",t)},updated(t){const n="service-worker-version",r=Number(localStorage.getItem(n)||0);localStorage.setItem(n,(r+1).toString()),localStorage.removeItem("manifest"),e.emit("updated",t)},offline(){e.emit("offline")},error(t){e.emit("error",t)}}),Wm=()=>{const e=Fm();nn(kc,e),ge(async()=>{var n;let t=!1;(n=navigator.serviceWorker)!=null&&n.controller&&navigator.serviceWorker.addEventListener("controllerchange",()=>{t||(t=!0,window.location.reload())}),await jm(e)})};var qm={"/zh/":{install:"安装",iOSInstall:"点击分享按钮然后点击“添加到主屏幕”",cancel:"取消",close:"关闭",prevImage:"上一张图片",nextImage:"下一张图片",desc:"详情",feature:"主要特色",explain:"该应用可以安装在你的 PC 或移动设备上。这将使该 Web 应用程序外观和行为与其他应用程序相同。它将在出现在应用程序列表中,并可以固定到主屏幕,开始菜单或任务栏。此 Web 应用程序还将能够与其他应用程序和你的操作系统安全地进行交互。",hint:"发现新内容可用",update:"新内容已就绪"},"/":{install:"Install",iOSInstall:"Tap the share button and then 'Add to Home Screen'",cancel:"Cancel",close:"Close",prevImage:"Previous Image",nextImage:"Next Image",desc:"Description",feature:"Key Features",explain:"This app can be installed on your PC or mobile device. This will allow this web app to look and behave like any other installed app. You will find it in your app lists and be able to pin it to your home screen, start menus or task bars. This installed web app will also be able to safely interact with other apps and your operating system. ",hint:"New content found.",update:"New content is available."}};const Cc=()=>f(Le,{name:"update"},()=>f("path",{d:"M949.949 146.25v255.826c0 21.981-13.989 35.97-35.97 35.97H658.154c-13.988 0-25.983-7.992-33.973-21.981-5.997-13.989-4-27.977 7.991-39.97l79.942-77.946c-55.954-51.973-121.918-77.955-199.863-77.955-37.975 0-75.95 8.002-113.924 21.99-37.975 15.985-67.948 37.976-91.934 63.957-25.982 23.987-47.973 53.96-63.957 91.934-29.983 73.955-29.983 153.895 0 227.85 15.984 37.976 37.975 67.947 63.957 91.934 23.986 25.982 53.959 47.973 91.934 63.956 37.974 13.989 75.95 21.991 113.924 21.991 45.967 0 87.942-9.998 127.913-29.982 41.976-17.99 75.951-45.967 101.931-83.943 7.993-4 11.994-5.995 13.989-5.995 5.997 0 9.998 1.994 13.988 5.995l77.958 77.946c3.989 4 5.986 7.993 5.986 11.994 0 1.994-1.996 5.995-3.99 11.994-43.973 51.962-93.941 91.934-151.9 117.914-53.958 25.983-115.92 39.972-185.874 39.972-61.961 0-119.921-11.984-169.89-33.973-57.96-25.985-105.923-57.963-139.896-93.943-35.98-33.972-67.958-81.936-93.94-139.897-45.967-101.93-45.967-237.846 0-339.777 25.982-57.96 57.96-105.923 93.94-139.896 33.973-35.98 81.936-67.958 139.896-93.94 49.968-21.99 107.928-33.974 169.89-33.974 55.963 0 109.923 9.988 161.885 29.973 53.97 21.99 101.933 51.963 139.908 89.938l73.954-73.944c9.987-9.998 23.987-13.988 39.971-8.002 13.988 8.002 21.98 19.995 21.98 33.984z"}));Cc.displayName="UpdateIcon";const Um=qm,Km=e=>{const t=e.waiting;if(!t)return;const n=new MessageChannel;t.postMessage({type:"SKIP_WAITING"},[n.port2])};var Gm=K({name:"SWUpdatePopup",slots:Object,setup(e,{slots:t}){const n=Dn(Um),r=st(),o=I(()=>!!r.value),i=()=>{r.value&&(Km(r.value),r.value=void 0)};return ge(()=>{Bm().on("updated",l=>{l&&(r.value=l)})}),()=>f(Ot,{name:"popup"},()=>{var l;return((l=t.default)==null?void 0:l.call(t,{enabled:o.value,reload:i}))||(o.value?f("button",{type:"button",class:"sw-update-popup",tabindex:0,onClick:()=>i()},[n.value.update,f("span",{class:"icon-wrapper"},f(Cc))]):null)})}});const Ym=at({setup:()=>{Wm()},rootComponents:[Gm]});var as={"/zh/":{word:"约 $word 字",less1Minute:"小于 1 分钟",time:"大约 $time 分钟"},"/":{word:"About $word words",less1Minute:"Less than 1 minute",time:"About $time min"}};const Sc=()=>{const e=de();return I(()=>e.value.readingTime??null)},Qo=typeof as>"u"?null:as,Zm=(e,t)=>{const{minutes:n,words:r}=e,{less1Minute:o,word:i,time:l}=t;return{time:n<1?o:l.replace("$time",Math.round(n).toString()),words:i.replace("$word",r.toString())}},cs={words:"",time:""},Qm=()=>Qo?Dn(Qo):I(()=>null),Jm=()=>{if(typeof Qo>"u")return I(()=>cs);const e=Sc(),t=Qm();return I(()=>e.value&&t.value?Zm(e.value,t.value):cs)},Mn=()=>Ac(),ve=()=>tm(),vr=()=>I(()=>!!Mn().value.pure);var us=K({name:"EmptyComponent",setup:()=>()=>null});const Xm="719px",e_="1440px",t_="false",$i={mobileBreakPoint:Xm,pcBreakPoint:e_,enableThemeColor:t_},Ni={"/zh/guide/":["",{text:"Media Server",prefix:"media_server/",collapsible:!0,icon:"gears",children:["restful_api","web_hook_api","on-demand_streaming","on-demand_push_streaming","push_authentication","playback_authentication","how_to_enable_https_related_functions","push_test","play_url_rules","sequence_diagram","start_server","generate_ssl_self-signed_certificate_and_test","config_file"]},{text:"SDK API",prefix:"sdk/",collapsible:!0,icon:"cube",children:["how_to_create_a_live_steam"]},{text:"代码解读",prefix:"code/",collapsible:!0,icon:"code",children:["","oncetoken"]},{text:"协议相关",prefix:"protocol/",collapsible:!0,icon:"lightbulb",children:[{text:"Gb28181",prefix:"gb28181/",collapsible:!0,children:["gb28181_sip_signaling_packet_capture","how_to_use_device_id_as_stream_id","push_streaming"]},{text:"SRT",prefix:"srt/",collapsible:!0,children:[""]},{text:"Webrtc",prefix:"webrtc/",collapsible:!0,children:["webrtc_compilation_and_use","webrtc_signaling_interaction_format"]}]},{text:"安装",prefix:"install/",collapsible:!0,icon:"box-archive",children:["","start","install_zlmediakit_using_vcpkg","compilation_instructions_for_windows_version"]},{text:"常见问题",prefix:"faq/",collapsible:!0,icon:"question",children:["","rtmp_playback_compatibility_issues","not_recommended_qq"]}],"/zh/reference/":[{text:"开发日志",prefix:"development_log/",collapsible:!0,icon:"code-commit",children:["","rtsp_performance_optimization","hls_high_performance_journey"]},{text:"测试",prefix:"test/",collapsible:!0,icon:"vials",children:["","benchmark","rtmp_pull_stream_performance_test","rtmp_push_stream_performance_test","rtsp_pull_stream_performance_test","rtsp_push_stream_performance_test","online_test","delay_test","how_to_test_delay","performance_testing"]},{text:"相关文档",prefix:"documents/",collapsible:!0,icon:"file-code",children:["","rtsp_push_process","exclusive_features","high_concurrency_implementation_principle","introduction_to_streaming_media_related_technologies","the_nature_of_live_broadcast_delay"]},{text:"相关资源",prefix:"resources/",collapsible:!0,icon:"font-awesome",children:["","rtmp_support_for_h265_and_opus","zltoolkit_source_code_study_notes","dependency","video_conferencing_related_resources"]}],"/zh/more/":["use_cases","collaborative_projects","license","contact","thanks"],"/guide/":["",{text:"Media Server",prefix:"media_server/",collapsible:!0,icon:"gears",children:["config_file","generate_ssl_self-signed_certificate_and_test","how_to_enable_https_related_functions","on-demand_streaming","on-demand_push_streaming","playback_authentication","push_authentication","play_url_rules","push_test","restful_api","sequence_diagram","start_server","web_hook_api"]},{text:"Code interpretation",prefix:"code/",collapsible:!0,icon:"code",children:["","oncetoken"]},{text:"FAQ",prefix:"faq/",collapsible:!0,icon:"question",children:["","rtmp_playback_compatibility_issues","not_recommended_qq"]},{text:"Install",prefix:"install/",collapsible:!0,icon:"box-archive",children:["","start","compilation_instructions_for_windows_version","install_zlmediakit_using_vcpkg"]},{text:"Protocol",prefix:"protocol/",collapsible:!0,icon:"lightbulb",children:[{text:"Gb28181",prefix:"gb28181/",collapsible:!0,children:["gb28181_sip_signaling_packet_capture","how_to_use_device_id_as_stream_id","push_streaming"]},{text:"SRT",prefix:"srt/",collapsible:!0,children:[""]},{text:"Webrtc",prefix:"webrtc/",collapsible:!0,children:["webrtc_compilation_and_use","webrtc_signaling_interaction_format"]}]},{text:"SDK API",prefix:"sdk/",collapsible:!0,icon:"lightbulb",children:["","how_to_create_a_live_steam"]}],"/reference/":[{text:"Development log",prefix:"development_log/",collapsible:!0,icon:"code-commit",children:["","rtsp_performance_optimization","hls_high_performance_journey"]},{text:"Related documents",prefix:"documents/",collapsible:!0,icon:"file-code",children:["","exclusive_features","rtsp_push_process","the_nature_of_live_broadcast_delay","high_concurrency_implementation_principle","introduction_to_streaming_media_related_technologies"]},{text:"Resources",prefix:"resources/",collapsible:!0,icon:"font-awesome",children:["","dependency","rtmp_support_for_h265_and_opus","video_conferencing_related_resources","zltoolkit_source_code_study_notes"]},{text:"Testing",prefix:"test/",collapsible:!0,icon:"vials",children:["","benchmark","delay_test","how_to_test_delay","online_test","performance_testing","rtmp_pull_stream_performance_test","rtmp_push_stream_performance_test","rtsp_pull_stream_performance_test","rtsp_push_stream_performance_test"]}],"/more/":["thanks","collaborative_projects","contact","license","use_cases"]},Dc=e=>{const{icon:t="",color:n,size:r}=e,o={};return n&&(o.color=n),r&&(o.height=Number.isNaN(Number(r))?r:`${r}px`),Cn(t)?f("img",{class:"icon",src:t,"no-view":"",style:o}):io(t)?f("img",{class:"icon",src:Me(t),"no-view":"",style:o}):f(ot("FontIcon"),e)};Dc.displayName="HopeIcon";var We=Dc;const n_=()=>{const e=Ye(),t=yt();return n=>{if(n)if(io(n))t.path!==n&&e.push(n);else if(Ea(n))window&&window.open(n);else{const r=t.path.slice(0,t.path.lastIndexOf("/"));e.push(`${r}/${encodeURI(n)}`)}}},Vc=()=>{const e=ve(),t=Pe();return I(()=>{const{author:n}=t.value;return n?Ul(n):n===!1?[]:Ul(e.value.author,!1)})},r_=()=>{const e=Pe();return I(()=>Yh(e.value.category).map(t=>({name:t,path:""})))},o_=()=>{const e=Pe();return I(()=>Zh(e.value.tag).map(t=>({name:t,path:""})))},i_=()=>{const e=Pe(),t=de();return I(()=>{const n=zh(e.value.date);if(n)return n;const{createdTime:r}=t.value.git||{};return r?new Date(r):null})},l_=()=>{const e=ve(),t=de(),n=Pe(),r=Vc(),o=r_(),i=o_(),l=i_(),s=Sc(),a=Jm(),c=I(()=>({author:r.value,category:o.value,date:l.value,localizedDate:t.value.localizedDate,tag:i.value,isOriginal:n.value.isOriginal||!1,readingTime:s.value,readingTimeLocale:a.value,pageview:"pageview"in n.value?n.value.pageview:!0})),u=I(()=>"pageInfo"in n.value?n.value.pageInfo:"pageInfo"in e.value?e.value.pageInfo:null);return{info:c,items:u}},{mobileBreakPoint:s_,pcBreakPoint:a_}=$i,fs=e=>e.endsWith("px")?Number(e.slice(0,-2)):null,ao=()=>{const e=ee(!1),t=ee(!1),n=()=>{e.value=window.innerWidth<=(fs(s_)??719),t.value=window.innerWidth>=(fs(a_)??1440)};return ge(()=>{n(),$e("resize",n,!1),$e("orientationchange",n,!1)}),{isMobile:e,isPC:t}},Mc=Symbol(""),mr=()=>{const e=_e(Mc);if(!e)throw new Error("useDarkmode() is called without provider.");return e},c_=e=>{const t=Mn(),n=Ev(),r=vc("vuepress-theme-hope-scheme","auto"),o=I(()=>t.value.darkmode||"switch"),i=I(()=>{const s=o.value;return s==="disable"?!1:s==="enable"?!0:s==="auto"?n.value:s==="toggle"?r.value==="dark":r.value==="dark"||r.value==="auto"&&n.value}),l=I(()=>{const s=o.value;return s==="switch"||s==="toggle"});e.provide(Mc,{canToggle:l,config:o,isDarkmode:i,status:r}),Object.defineProperties(e.config.globalProperties,{$isDarkmode:{get:()=>i.value}})},u_=()=>{const{isDarkmode:e}=mr(),t=(n=e.value)=>document.documentElement.setAttribute("data-theme",n?"dark":"light");ge(()=>{fe(e,t,{immediate:!0})})};var He=K({name:"AutoLink",inheritAttrs:!1,props:{config:{type:Object,required:!0},exact:Boolean,noExternalLinkIcon:Boolean},emits:["focusout"],slots:Object,setup(e,{attrs:t,emit:n,slots:r}){const o=yt(),i=Oa(),l=Zr(e,"config"),s=I(()=>Cn(l.value.link)),a=I(()=>!s.value&&Ea(l.value.link)),c=I(()=>l.value.target||(s.value?"_blank":void 0)),u=I(()=>c.value==="_blank"),d=I(()=>!s.value&&!a.value&&!u.value),p=I(()=>l.value.rel||(u.value?"noopener noreferrer":void 0)),m=I(()=>l.value.ariaLabel||l.value.text),b=I(()=>{if(e.exact)return!1;const w=Sn(i.value.locales);return w.length?w.every(y=>y!==l.value.link):l.value.link!=="/"}),E=I(()=>d.value?l.value.activeMatch?new RegExp(l.value.activeMatch).test(o.path):b.value?In(o.path,l.value.link):o.path===l.value.link:!1);return()=>{const{before:w,after:y,default:R}=r,{text:g,icon:P,link:V}=l.value;return d.value?f(nt,{to:V,"aria-label":m.value,...t,class:["nav-link",{active:E.value},t.class],onFocusout:()=>n("focusout")},()=>R?R():[w?w():f(We,{icon:P}),g,y==null?void 0:y()]):f("a",{href:V,rel:p.value,target:c.value,"aria-label":m.value,...t,class:["nav-link",t.class],onFocusout:()=>n("focusout")},R?R():[w?w():f(We,{icon:P}),g,e.noExternalLinkIcon?null:f(wc),y==null?void 0:y()])}}});const On=(e,t,n=!1)=>"activeMatch"in t?new RegExp(t.activeMatch).test(e.path):nc(e,t.link)?!0:t.children&&!n?t.children.some(r=>On(e,r)):!1,$c=(e,t)=>t.type==="group"?t.children.some(n=>n.type==="group"?$c(e,n):n.type==="page"&&On(e,n,!0))||"prefix"in t&&nc(e,t.prefix):!1,Nc=(e,t)=>ue(e.link)?f(He,{...t,config:e}):f("p",t,[f(We,{icon:e.icon}),e.text]),zc=e=>{const t=yt();return e?f("ul",{class:"vp-sidebar-sub-headers"},e.map(n=>f("li",{class:"vp-sidebar-sub-header"},[Nc(n,{class:["vp-sidebar-link","vp-heading",{active:On(t,n,!0)}]}),zc(n.children)]))):null};var Rt=(e=>(e.type="y",e.title="t",e.shortTitle="s",e.icon="i",e.author="a",e.date="d",e.localizedDate="l",e.category="c",e.tag="g",e.isEncrypted="n",e.isOriginal="o",e.readingTime="r",e.excerpt="e",e.sticky="u",e.cover="v",e.index="I",e.order="O",e))(Rt||{}),f_=(e=>(e.article="a",e.home="h",e.slide="s",e.page="p",e))(f_||{});const Jt=(e="",t="")=>io(t)?t:`${ya(e)}${t}`,En=(e,t,n=!1)=>{let r=qr(e,Xa(encodeURI(t)));r.name==="404"&&(r=qr(e,t));const{fullPath:o,meta:i,name:l}=r;return{text:!n&&i[Rt.shortTitle]?i[Rt.shortTitle]:i[Rt.title]||t,link:l==="404"?t:o,...i[Rt.icon]?{icon:i[Rt.icon]}:{}}},d_=(e,t)=>{const n=de();return{type:"heading",text:e.title,link:`${n.value.path}#${e.slug}`,children:zi(e.children,t)}},zi=(e,t)=>t>0?e.map(n=>d_(n,t-1)):[],Fc=e=>{const t=de();return zi(t.value.headers,e)},Jo=(e,t,n="")=>{const r=Ye(),o=de(),i=(l,s=n)=>{var c;const a=ue(l)?En(r,Jt(s,l)):l.link?{...l,...jr(l.link)?{}:{link:En(r,Jt(s,l.link)).link}}:l;if("children"in a){const u=Jt(s,a.prefix),d=a.children==="structure"?Ni[u]:a.children;return{type:"group",...a,prefix:u,children:d.map(p=>i(p,u))}}return{type:"page",...a,children:a.link===o.value.path?zi(((c=o.value.headers[0])==null?void 0:c.level)===1?o.value.headers[0].children:o.value.headers,t):[]}};return e.map(l=>i(l))},p_=(e,t)=>{const n=de(),r=Sn(e).sort((o,i)=>i.length-o.length);for(const o of r)if(In(decodeURI(n.value.path),o)){const i=e[o];return i?Jo(i==="structure"?Ni[o]:i==="heading"?Fc(t):i,t,o):[]}return console.warn(`${n.value.path} is missing sidebar config.`),[]},h_=(e,t)=>{const n=an();return e===!1?[]:e==="heading"?Fc(t):e==="structure"?Jo(Ni[n.value],t,n.value):X(e)?Jo(e,t):Li(e)?p_(e,t):[]},Bc=Symbol(""),v_=()=>{const e=Pe(),t=ve(),n=de(),r=I(()=>e.value.home?!1:e.value.sidebar??t.value.sidebar??"structure"),o=I(()=>e.value.headerDepth??t.value.headerDepth??2),i=lo(()=>[r.value,o.value,n.value.path,null],()=>h_(r.value,o.value));nn(Bc,i)},Fi=()=>{const e=_e(Bc);if(!e)throw new Error("useSidebarItems() is called without provider.");return e};var m_=K({name:"PageFooter",setup(){const e=Pe(),t=ve(),n=Vc(),r=I(()=>{const{copyright:l,footer:s}=e.value;return s!==!1&&!!(l||s||t.value.displayFooter)}),o=I(()=>{const{footer:l}=e.value;return l===!1?!1:ue(l)?l:t.value.footer||""}),i=I(()=>"copyright"in e.value?e.value.copyright:"copyright"in t.value?t.value.copyright:n.value.length?`Copyright © ${new Date().getFullYear()} ${n.value[0].name}`:!1);return()=>r.value?f("footer",{class:"vp-footer-wrapper"},[o.value?f("div",{class:"vp-footer",innerHTML:o.value}):null,i.value?f("div",{class:"vp-copyright",innerHTML:i.value}):null]):null}}),Hc=K({name:"NavbarDropdownLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=de(),r=Zr(e,"config"),o=I(()=>r.value.ariaLabel||r.value.text),i=ee(!1);fe(()=>n.value.path,()=>{i.value=!1});const l=s=>{s.detail===0&&(i.value=!i.value)};return()=>{var s;return f("div",{class:["dropdown-wrapper",{open:i.value}]},[f("button",{type:"button",class:"dropdown-title","aria-label":o.value,onClick:l},[((s=t.title)==null?void 0:s.call(t))||f("span",{class:"title"},[f(We,{icon:r.value.icon}),e.config.text]),f("span",{class:"arrow"}),f("ul",{class:"nav-dropdown"},r.value.children.map((a,c)=>{const u=c===r.value.children.length-1;return f("li",{class:"dropdown-item"},"children"in a?[f("h4",{class:"dropdown-subtitle"},a.link?f(He,{config:a,onFocusout:()=>{a.children.length===0&&u&&(i.value=!1)}}):f("span",a.text)),f("ul",{class:"dropdown-subitem-wrapper"},a.children.map((d,p)=>f("li",{class:"dropdown-subitem"},f(He,{config:d,onFocusout:()=>{p===a.children.length-1&&u&&(i.value=!1)}}))))]:f(He,{config:a,onFocusout:()=>{u&&(i.value=!1)}}))}))])])}}});const jc=()=>f(Le,{name:"i18n"},()=>[f("path",{d:"M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"})]);jc.displayName="I18nIcon";const Wc=(e,t,n="")=>ue(t)?En(e,Jt(n,t)):"children"in t?{...t,...t.link&&!jr(t.link)?En(e,Jt(n,t.link)):{},children:t.children.map(r=>Wc(e,r,Jt(n,t.prefix)))}:{...t,link:jr(t.link)?t.link:En(e,Jt(n,t.link)).link},qc=()=>{const e=ve(),t=Ye(),n=()=>(e.value.navbar||[]).map(r=>Wc(t,r));return lo(()=>e.value.navbar,()=>n())},__=()=>{const e=Ye(),t=yt(),n=an(),r=to(),o=Mn(),i=ve();return lo(()=>t.path,()=>{const l=Sn(r.value.locales),s=Di(o.value.extraLocales??{});if(l.length<2&&!s.length)return null;const{path:a,fullPath:c}=t,{navbarLocales:u}=i.value;return{text:"",ariaLabel:u==null?void 0:u.selectLangAriaLabel,children:[...l.map(d=>{var y,R,g;const p=((y=r.value.locales)==null?void 0:y[d])??{},m=((R=o.value.locales)==null?void 0:R[d])??{},b=p.lang||"",E=((g=m.navbarLocales)==null?void 0:g.langName)??b;let w;if(b===r.value.lang)w=a;else{const P=a.replace(n.value,d);w=e.getRoutes().some(V=>V.path===P)?c.replace(a,P):m.home??d}return{text:E,link:w}}),...s.map(([d,p])=>({text:d,link:p.replace(":route",t.path.replace(n.value,""))}))]}})},g_=()=>{const e=ve(),t=I(()=>e.value.repo||null),n=I(()=>t.value?Jh(t.value):null),r=I(()=>t.value?rc(t.value):null),o=I(()=>n.value?e.value.repoLabel??(r.value===null?"Source":r.value):null);return I(()=>!n.value||!o.value||e.value.repoDisplay===!1?null:{type:r.value||"Source",label:o.value,link:n.value})};var b_=K({name:"LanguageDropdown",setup(){const e=__();return()=>e.value?f("div",{class:"nav-item"},f(Hc,{class:"i18n-dropdown",config:e.value},{title:()=>{var t;return f(jc,{"aria-label":(t=e.value)==null?void 0:t.ariaLabel,style:{width:"1rem",height:"1rem",verticalAlign:"middle"}})}})):null}}),y_=K({name:"NavScreenDropdown",props:{config:{type:Object,required:!0}},setup(e){const t=de(),n=Zr(e,"config"),r=I(()=>n.value.ariaLabel||n.value.text),o=ee(!1);fe(()=>t.value.path,()=>{o.value=!1});const i=(l,s)=>s[s.length-1]===l;return()=>[f("button",{type:"button",class:["nav-screen-dropdown-title",{active:o.value}],"aria-label":r.value,onClick:()=>{o.value=!o.value}},[f("span",{class:"title"},[f(We,{icon:n.value.icon}),e.config.text]),f("span",{class:["arrow",o.value?"down":"end"]})]),f("ul",{class:["nav-screen-dropdown",{hide:!o.value}]},n.value.children.map(l=>f("li",{class:"dropdown-item"},"children"in l?[f("h4",{class:"dropdown-subtitle"},l.link?f(He,{config:l,onFocusout:()=>{i(l,n.value.children)&&l.children.length===0&&(o.value=!1)}}):f("span",l.text)),f("ul",{class:"dropdown-subitem-wrapper"},l.children.map(s=>f("li",{class:"dropdown-subitem"},f(He,{config:s,onFocusout:()=>{i(s,l.children)&&i(l,n.value.children)&&(o.value=!1)}}))))]:f(He,{config:l,onFocusout:()=>{i(l,n.value.children)&&(o.value=!1)}}))))]}}),E_=K({name:"NavScreenLinks",setup(){const e=qc();return()=>e.value.length?f("nav",{class:"nav-screen-links"},e.value.map(t=>f("div",{class:"navbar-links-item"},"children"in t?f(y_,{config:t}):f(He,{config:t})))):null}});const Uc=()=>f(Le,{name:"dark"},()=>f("path",{d:"M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"}));Uc.displayName="DarkIcon";const Kc=()=>f(Le,{name:"light"},()=>f("path",{d:"M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"}));Kc.displayName="LightIcon";const Gc=()=>f(Le,{name:"auto"},()=>f("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"}));Gc.displayName="AutoIcon";const Yc=()=>f(Le,{name:"enter-fullscreen"},()=>f("path",{d:"M762.773 90.24h-497.28c-96.106 0-174.4 78.293-174.4 174.4v497.28c0 96.107 78.294 174.4 174.4 174.4h497.28c96.107 0 175.04-78.293 174.4-174.4V264.64c0-96.213-78.186-174.4-174.4-174.4zm-387.2 761.173H215.04c-21.867 0-40.427-17.92-41.067-41.066V649.92c0-22.507 17.92-40.427 40.427-40.427 11.307 0 21.227 4.694 28.48 11.947 7.253 7.253 11.947 17.92 11.947 28.48v62.293l145.28-145.28c15.893-15.893 41.813-15.893 57.706 0 15.894 15.894 15.894 41.814 0 57.707l-145.28 145.28h62.294c22.506 0 40.426 17.92 40.426 40.427s-17.173 41.066-39.68 41.066zM650.24 165.76h160.427c21.866 0 40.426 17.92 41.066 41.067v160.426c0 22.507-17.92 40.427-40.426 40.427-11.307 0-21.227-4.693-28.48-11.947-7.254-7.253-11.947-17.92-11.947-28.48v-62.186L625.6 450.347c-15.893 15.893-41.813 15.893-57.707 0-15.893-15.894-15.893-41.814 0-57.707l145.28-145.28H650.88c-22.507 0-40.427-17.92-40.427-40.427s17.174-41.173 39.787-41.173z"}));Yc.displayName="EnterFullScreenIcon";const Zc=()=>f(Le,{name:"cancel-fullscreen"},()=>f("path",{d:"M778.468 78.62H247.922c-102.514 0-186.027 83.513-186.027 186.027V795.08c0 102.514 83.513 186.027 186.027 186.027h530.432c102.514 0 186.71-83.513 186.026-186.027V264.647C964.494 162.02 880.981 78.62 778.468 78.62zM250.88 574.35h171.122c23.324 0 43.122 19.115 43.804 43.805v171.121c0 24.008-19.114 43.122-43.122 43.122-12.06 0-22.641-5.006-30.378-12.743s-12.743-19.115-12.743-30.379V722.83L224.597 877.91c-16.953 16.952-44.6 16.952-61.553 0-16.953-16.954-16.953-44.602 0-61.554L318.009 661.39h-66.446c-24.007 0-43.122-19.114-43.122-43.122 0-24.12 18.432-43.918 42.439-43.918zm521.899-98.873H601.657c-23.325 0-43.122-19.114-43.805-43.804V260.55c0-24.007 19.115-43.122 43.122-43.122 12.06 0 22.642 5.007 30.379 12.743s12.743 19.115 12.743 30.38v66.445l154.965-154.965c16.953-16.953 44.601-16.953 61.554 0 16.953 16.953 16.953 44.6 0 61.554L705.536 388.55h66.446c24.007 0 43.122 19.115 43.122 43.122.114 24.007-18.318 43.804-42.325 43.804z"}));Zc.displayName="CancelFullScreenIcon";const Qc=()=>f(Le,{name:"outlook"},()=>[f("path",{d:"M224 800c0 9.6 3.2 44.8 6.4 54.4 6.4 48-48 76.8-48 76.8s80 41.6 147.2 0 134.4-134.4 38.4-195.2c-22.4-12.8-41.6-19.2-57.6-19.2C259.2 716.8 227.2 761.6 224 800zM560 675.2l-32 51.2c-51.2 51.2-83.2 32-83.2 32 25.6 67.2 0 112-12.8 128 25.6 6.4 51.2 9.6 80 9.6 54.4 0 102.4-9.6 150.4-32l0 0c3.2 0 3.2-3.2 3.2-3.2 22.4-16 12.8-35.2 6.4-44.8-9.6-12.8-12.8-25.6-12.8-41.6 0-54.4 60.8-99.2 137.6-99.2 6.4 0 12.8 0 22.4 0 12.8 0 38.4 9.6 48-25.6 0-3.2 0-3.2 3.2-6.4 0-3.2 3.2-6.4 3.2-6.4 6.4-16 6.4-16 6.4-19.2 9.6-35.2 16-73.6 16-115.2 0-105.6-41.6-198.4-108.8-268.8C704 396.8 560 675.2 560 675.2zM224 419.2c0-28.8 22.4-51.2 51.2-51.2 28.8 0 51.2 22.4 51.2 51.2 0 28.8-22.4 51.2-51.2 51.2C246.4 470.4 224 448 224 419.2zM320 284.8c0-22.4 19.2-41.6 41.6-41.6 22.4 0 41.6 19.2 41.6 41.6 0 22.4-19.2 41.6-41.6 41.6C339.2 326.4 320 307.2 320 284.8zM457.6 208c0-12.8 12.8-25.6 25.6-25.6 12.8 0 25.6 12.8 25.6 25.6 0 12.8-12.8 25.6-25.6 25.6C470.4 233.6 457.6 220.8 457.6 208zM128 505.6C128 592 153.6 672 201.6 736c28.8-60.8 112-60.8 124.8-60.8-16-51.2 16-99.2 16-99.2l316.8-422.4c-48-19.2-99.2-32-150.4-32C297.6 118.4 128 291.2 128 505.6zM764.8 86.4c-22.4 19.2-390.4 518.4-390.4 518.4-22.4 28.8-12.8 76.8 22.4 99.2l9.6 6.4c35.2 22.4 80 12.8 99.2-25.6 0 0 6.4-12.8 9.6-19.2 54.4-105.6 275.2-524.8 288-553.6 6.4-19.2-3.2-32-19.2-32C777.6 76.8 771.2 80 764.8 86.4z"})]);Qc.displayName="OutlookIcon";var Jc=K({name:"AppearanceSwitch",setup(){const{config:e,isDarkmode:t,status:n}=mr(),r=vr(),o=()=>{e.value==="switch"?n.value={light:"dark",dark:"auto",auto:"light"}[n.value]:n.value=n.value==="light"?"dark":"light"},i=async l=>{if(!(document.startViewTransition&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches&&!r.value)||!l){o();return}const s=l.clientX,a=l.clientY,c=Math.hypot(Math.max(s,innerWidth-s),Math.max(a,innerHeight-a)),u=t.value;await document.startViewTransition(async()=>{o(),await sn()}).ready,t.value!==u&&document.documentElement.animate({clipPath:t.value?[`circle(${c}px at ${s}px ${a}px)`,`circle(0px at ${s}px ${a}px)`]:[`circle(0px at ${s}px ${a}px)`,`circle(${c}px at ${s}px ${a}px)`]},{duration:400,pseudoElement:t.value?"::view-transition-old(root)":"::view-transition-new(root)"})};return()=>f("button",{type:"button",id:"appearance-switch",onClick:i},[f(Gc,{style:{display:n.value==="auto"?"block":"none"}}),f(Uc,{style:{display:n.value==="dark"?"block":"none"}}),f(Kc,{style:{display:n.value==="light"?"block":"none"}})])}}),w_=K({name:"AppearanceMode",setup(){const e=ve(),{canToggle:t}=mr(),n=I(()=>e.value.outlookLocales.darkmode);return()=>t.value?f("div",{class:"appearance-wrapper"},[f("label",{class:"appearance-title",for:"appearance-switch"},n.value),f(Jc)]):null}});const Co="VUEPRESS_THEME_COLOR";var T_=K({name:"ThemeColorPicker",props:{themeColor:{type:Object,required:!0}},setup(e){const t=(n="")=>{const r=document.documentElement.classList,o=Sn(e.themeColor);if(!n){localStorage.removeItem(Co),r.remove(...o);return}r.remove(...o.filter(i=>i!==n)),r.add(n),localStorage.setItem(Co,n)};return ge(()=>{const n=localStorage.getItem(Co);n&&t(n)}),()=>f("ul",{id:"theme-color-picker"},[f("li",f("span",{class:"theme-color",onClick:()=>t()})),Di(e.themeColor).map(([n,r])=>f("li",f("span",{style:{background:r},onClick:()=>t(n)})))])}});const wn=$i.enableThemeColor==="true",A_=wn?Kh(Di($i).filter(([e])=>e.startsWith("theme-"))):{};var L_=K({name:"ThemeColor",setup(){const e=ve(),t=I(()=>e.value.outlookLocales.themeColor);return()=>wn?f("div",{class:"theme-color-wrapper"},[f("label",{class:"theme-color-title",for:"theme-color-picker"},t.value),f(T_,{themeColor:A_})]):null}}),Xc=K({name:"ToggleFullScreenButton",setup(){const e=ve(),{isSupported:t,isFullscreen:n,toggle:r}=Vi(),o=I(()=>e.value.outlookLocales.fullscreen);return()=>t?f("div",{class:"full-screen-wrapper"},[f("label",{class:"full-screen-title",for:"full-screen-switch"},o.value),f("button",{type:"button",id:"full-screen-switch",class:"full-screen",ariaPressed:n.value,onClick:()=>r()},n.value?f(Zc):f(Yc))]):null}}),eu=K({name:"OutlookSettings",setup(){const e=Mn(),t=vr(),n=I(()=>!t.value&&e.value.fullscreen);return()=>f(no,()=>[wn?f(L_):null,f(w_),n.value?f(Xc):null])}}),R_=K({name:"NavScreen",props:{show:Boolean},emits:["close"],slots:Object,setup(e,{emit:t,slots:n}){const r=de(),{isMobile:o}=ao(),i=st(),l=_c(i);return ge(()=>{i.value=document.body,fe(o,s=>{!s&&e.show&&(l.value=!1,t("close"))}),fe(()=>r.value.path,()=>{l.value=!1,t("close")})}),ur(()=>{l.value=!1}),()=>f(Ot,{name:"fade",onEnter:()=>{l.value=!0},onAfterLeave:()=>{l.value=!1}},()=>{var s,a;return e.show?f("div",{id:"nav-screen"},f("div",{class:"vp-nav-screen-container"},[(s=n.before)==null?void 0:s.call(n),f(E_),f("div",{class:"vp-outlook-wrapper"},f(eu)),(a=n.after)==null?void 0:a.call(n)])):null})}}),P_=K({name:"NavbarBrand",setup(){const e=an(),t=to(),n=ve(),r=I(()=>n.value.home||e.value),o=I(()=>t.value.title),i=I(()=>n.value.navTitle??o.value),l=I(()=>n.value.logo?Me(n.value.logo):null),s=I(()=>n.value.logoDark?Me(n.value.logoDark):null);return()=>f(nt,{to:r.value,class:"vp-brand"},()=>[l.value?f("img",{class:["vp-nav-logo",{light:!!s.value}],src:l.value,alt:o.value}):null,s.value?f("img",{class:["vp-nav-logo dark"],src:s.value,alt:o.value}):null,i.value?f("span",{class:["vp-site-name",{"hide-in-pad":l.value&&n.value.hideSiteNameOnMobile!==!1}]},i.value):null])}}),I_=K({name:"NavbarLinks",setup(){const e=qc();return()=>e.value.length?f("nav",{class:"vp-nav-links"},e.value.map(t=>f("div",{class:"nav-item hide-in-mobile"},"children"in t?f(Hc,{config:t}):f(He,{config:t})))):null}}),O_=K({name:"RepoLink",components:{BitbucketIcon:sc,GiteeIcon:lc,GitHubIcon:oc,GitLabIcon:ic,SourceIcon:ac},setup(){const e=g_();return()=>e.value?f("div",{class:"nav-item vp-repo"},f("a",{class:"vp-repo-link",href:e.value.link,target:"_blank",rel:"noopener noreferrer","aria-label":e.value.label},f(ot(`${e.value.type}Icon`),{style:{width:"1.25rem",height:"1.25rem",verticalAlign:"middle"}}))):null}});const tu=({active:e=!1},{emit:t})=>f("button",{type:"button",class:["vp-toggle-navbar-button",{"is-active":e}],"aria-label":"Toggle Navbar","aria-expanded":e,"aria-controls":"nav-screen",onClick:()=>t("toggle")},f("span",[f("span",{class:"vp-top"}),f("span",{class:"vp-middle"}),f("span",{class:"vp-bottom"})]));tu.displayName="ToggleNavbarButton";var x_=tu;const Xo=(e,{emit:t})=>f("button",{type:"button",class:"vp-toggle-sidebar-button",title:"Toggle Sidebar",onClick:()=>t("toggle")},f("span",{class:"icon"}));Xo.displayName="ToggleSidebarButton",Xo.emits=["toggle"];var k_=Xo,C_=K({name:"OutlookButton",setup(){const{isSupported:e}=Vi(),t=Mn(),n=vr(),r=de(),{canToggle:o}=mr(),i=ee(!1),l=I(()=>!n.value&&t.value.fullscreen&&e);return fe(()=>r.value.path,()=>{i.value=!1}),()=>o.value||l.value||wn?f("div",{class:"nav-item hide-in-mobile"},o.value&&!l.value&&!wn?f(Jc):l.value&&!o.value&&!wn?f(Xc):f("button",{type:"button",class:["outlook-button",{open:i.value}],tabindex:"-1","aria-hidden":!0},[f(Qc),f("div",{class:"outlook-dropdown"},f(eu))])):null}}),S_=K({name:"NavBar",emits:["toggleSidebar"],slots:Object,setup(e,{emit:t,slots:n}){const r=ve(),{isMobile:o}=ao(),i=ee(!1),l=I(()=>{const{navbarAutoHide:u="mobile"}=r.value;return u!=="none"&&(u==="always"||o.value)}),s=I(()=>r.value.navbarLayout||{start:["Brand"],center:["Links"],end:["Language","Repo","Outlook","Search"]}),a={Brand:P_,Language:b_,Links:I_,Repo:O_,Outlook:C_,Search:It("Docsearch")?ot("Docsearch"):It("SearchBox")?ot("SearchBox"):us},c=u=>a[u]??(It(u)?ot(u):us);return()=>{var u,d,p,m,b,E;return[f("header",{id:"navbar",class:["vp-navbar",{"auto-hide":l.value,"hide-icon":r.value.navbarIcon===!1}]},[f("div",{class:"vp-navbar-start"},[f(k_,{onToggle:()=>{i.value&&(i.value=!1),t("toggleSidebar")}}),(u=n.startBefore)==null?void 0:u.call(n),(s.value.start||[]).map(w=>f(c(w))),(d=n.startAfter)==null?void 0:d.call(n)]),f("div",{class:"vp-navbar-center"},[(p=n.centerBefore)==null?void 0:p.call(n),(s.value.center||[]).map(w=>f(c(w))),(m=n.centerAfter)==null?void 0:m.call(n)]),f("div",{class:"vp-navbar-end"},[(b=n.endBefore)==null?void 0:b.call(n),(s.value.end||[]).map(w=>f(c(w))),(E=n.endAfter)==null?void 0:E.call(n),f(x_,{active:i.value,onToggle:()=>{i.value=!i.value}})])]),f(R_,{show:i.value,onClose:()=>{i.value=!1}},{before:()=>{var w;return(w=n.screenTop)==null?void 0:w.call(n)},after:()=>{var w;return(w=n.screenBottom)==null?void 0:w.call(n)}})]}}}),D_=K({name:"SidebarChild",props:{config:{type:Object,required:!0}},setup(e){const t=yt();return()=>[Nc(e.config,{class:["vp-sidebar-link",`vp-sidebar-${e.config.type}`,{active:On(t,e.config,!0)}],exact:!0}),zc(e.config.children)]}}),V_=K({name:"SidebarGroup",props:{config:{type:Object,required:!0},open:{type:Boolean,required:!0}},emits:["toggle"],setup(e,{emit:t}){const n=yt(),r=I(()=>On(n,e.config)),o=I(()=>On(n,e.config,!0));return()=>{const{collapsible:i,children:l=[],icon:s,prefix:a,link:c,text:u}=e.config;return f("section",{class:"vp-sidebar-group"},[f(i?"button":"p",{class:["vp-sidebar-heading",{clickable:i||c,exact:o.value,active:r.value}],...i?{type:"button",onClick:()=>t("toggle"),onKeydown:d=>{d.key==="Enter"&&t("toggle")}}:{}},[f(We,{icon:s}),c?f(He,{class:"vp-sidebar-title",config:{text:u,link:c},noExternalLinkIcon:!0}):f("span",{class:"vp-sidebar-title"},u),i?f("span",{class:["vp-arrow",e.open?"down":"end"]}):null]),e.open||!i?f(nu,{key:a,config:l}):null])}}}),nu=K({name:"SidebarLinks",props:{config:{type:Array,required:!0}},setup(e){const t=yt(),n=ee(-1),r=o=>{n.value=o===n.value?-1:o};return fe(()=>t.path,()=>{const o=e.config.findIndex(i=>$c(t,i));n.value=o},{immediate:!0,flush:"post"}),()=>f("ul",{class:"vp-sidebar-links"},e.config.map((o,i)=>f("li",o.type==="group"?f(V_,{config:o,open:i===n.value,onToggle:()=>r(i)}):f(D_,{config:o}))))}}),M_=K({name:"SideBar",slots:Object,setup(e,{slots:t}){const n=yt(),r=ve(),o=Fi(),i=st();return ge(()=>{fe(()=>n.hash,l=>{const s=document.querySelector(`.vp-sidebar a.vp-sidebar-link[href="${n.path}${l}"]`);if(!s)return;const{top:a,height:c}=i.value.getBoundingClientRect(),{top:u,height:d}=s.getBoundingClientRect();ua+c&&s.scrollIntoView(!1)},{immediate:!0})}),()=>{var l,s,a;return f("aside",{ref:i,id:"sidebar",class:["vp-sidebar",{"hide-icon":r.value.sidebarIcon===!1}]},[(l=t.top)==null?void 0:l.call(t),((s=t.default)==null?void 0:s.call(t))||f(nu,{config:o.value}),(a=t.bottom)==null?void 0:a.call(t)])}}}),ru=K({name:"CommonWrapper",props:{containerClass:{type:String,default:""},noNavbar:Boolean,noSidebar:Boolean,noToc:Boolean},slots:Object,setup(e,{slots:t}){const n=Ye(),r=de(),o=Pe(),i=ve(),{isMobile:l,isPC:s}=ao(),[a,c]=Ql(!1),[u,d]=Ql(!1),p=Fi(),m=ee(!1),b=I(()=>e.noNavbar||o.value.navbar===!1||i.value.navbar===!1?!1:!!(r.value.title||i.value.logo||i.value.repo||i.value.navbar)),E=I(()=>e.noSidebar?!1:o.value.sidebar!==!1&&p.value.length!==0&&!o.value.home),w=I(()=>e.noToc||o.value.home?!1:o.value.toc||i.value.toc!==!1&&o.value.toc!==!1),y={x:0,y:0},R=L=>{y.x=L.changedTouches[0].clientX,y.y=L.changedTouches[0].clientY},g=L=>{const $=L.changedTouches[0].clientX-y.x,S=L.changedTouches[0].clientY-y.y;Math.abs($)>Math.abs(S)*1.5&&Math.abs($)>40&&($>0&&y.x<=80?c(!0):c(!1))},P=()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;let V=0;return $e("scroll",cv(()=>{const L=P();L<=58||L{L||c(!1)}),ge(()=>{const L=_c(document.body);fe(a,S=>{L.value=S});const $=n.afterEach(()=>{c(!1)});ur(()=>{L.value=!1,$()})}),()=>f(It("GlobalEncrypt")?ot("GlobalEncrypt"):Ya,()=>f("div",{class:["theme-container",{"no-navbar":!b.value,"no-sidebar":!E.value&&!(t.sidebar||t.sidebarTop||t.sidebarBottom),"has-toc":w.value,"hide-navbar":m.value,"sidebar-collapsed":!l.value&&!s.value&&u.value,"sidebar-open":l.value&&a.value},e.containerClass,o.value.containerClass||""],onTouchStart:R,onTouchEnd:g},[b.value?f(S_,{onToggleSidebar:()=>c()},{startBefore:()=>{var L;return(L=t.navbarStartBefore)==null?void 0:L.call(t)},startAfter:()=>{var L;return(L=t.navbarStartAfter)==null?void 0:L.call(t)},centerBefore:()=>{var L;return(L=t.navbarCenterBefore)==null?void 0:L.call(t)},centerAfter:()=>{var L;return(L=t.navbarCenterAfter)==null?void 0:L.call(t)},endBefore:()=>{var L;return(L=t.navbarEndBefore)==null?void 0:L.call(t)},endAfter:()=>{var L;return(L=t.navbarEndAfter)==null?void 0:L.call(t)},screenTop:()=>{var L;return(L=t.navScreenTop)==null?void 0:L.call(t)},screenBottom:()=>{var L;return(L=t.navScreenBottom)==null?void 0:L.call(t)}}):null,f(Ot,{name:"fade"},()=>a.value?f("div",{class:"vp-sidebar-mask",onClick:()=>c(!1)}):null),f(Ot,{name:"fade"},()=>l.value?null:f("div",{class:"toggle-sidebar-wrapper",onClick:()=>d()},f("span",{class:["arrow",u.value?"end":"start"]}))),f(M_,{},{...t.sidebar?{default:()=>t.sidebar()}:{},top:()=>{var L;return(L=t.sidebarTop)==null?void 0:L.call(t)},bottom:()=>{var L;return(L=t.sidebarBottom)==null?void 0:L.call(t)}}),t.default(),f(m_)]))}}),_n=K({name:"DropTransition",props:{type:{type:String,default:"single"},delay:{type:Number,default:0},duration:{type:Number,default:.25},appear:Boolean},slots:Object,setup(e,{slots:t}){const n=o=>{o.style.transition=`transform ${e.duration}s ease-in-out ${e.delay}s, opacity ${e.duration}s ease-in-out ${e.delay}s`,o.style.transform="translateY(-20px)",o.style.opacity="0"},r=o=>{o.style.transform="translateY(0)",o.style.opacity="1"};return()=>f(e.type==="single"?Ot:qd,{name:"drop",appear:e.appear,onAppear:n,onAfterAppear:r,onEnter:n,onAfterEnter:r,onBeforeLeave:n},()=>t.default())}});const ei=({custom:e})=>f(ka,{class:["theme-hope-content",{custom:e}]});ei.displayName="MarkdownContent",ei.props={custom:Boolean};var ou=ei;const iu=()=>f(Le,{name:"author"},()=>f("path",{d:"M649.6 633.6c86.4-48 147.2-144 147.2-249.6 0-160-128-288-288-288s-288 128-288 288c0 108.8 57.6 201.6 147.2 249.6-121.6 48-214.4 153.6-240 288-3.2 9.6 0 19.2 6.4 25.6 3.2 9.6 12.8 12.8 22.4 12.8h704c9.6 0 19.2-3.2 25.6-12.8 6.4-6.4 9.6-16 6.4-25.6-25.6-134.4-121.6-240-243.2-288z"}));iu.displayName="AuthorIcon";const lu=()=>f(Le,{name:"calendar"},()=>f("path",{d:"M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"}));lu.displayName="CalendarIcon";const su=()=>f(Le,{name:"category"},()=>f("path",{d:"M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zM147.556 553.478H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zM593.927 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zM730.22 920.502H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z"}));su.displayName="CategoryIcon";const au=()=>f(Le,{name:"print"},()=>f("path",{d:"M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"}));au.displayName="PrintIcon";const cu=()=>f(Le,{name:"tag"},()=>f("path",{d:"M939.902 458.563L910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 000 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z"}));cu.displayName="TagIcon";const uu=()=>f(Le,{name:"timer"},()=>f("path",{d:"M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"}));uu.displayName="TimerIcon";const fu=()=>f(Le,{name:"word"},()=>[f("path",{d:"M518.217 432.64V73.143A73.143 73.143 0 01603.43 1.097a512 512 0 01419.474 419.474 73.143 73.143 0 01-72.046 85.212H591.36a73.143 73.143 0 01-73.143-73.143z"}),f("path",{d:"M493.714 566.857h340.297a73.143 73.143 0 0173.143 85.577A457.143 457.143 0 11371.566 117.76a73.143 73.143 0 0185.577 73.143v339.383a36.571 36.571 0 0036.571 36.571z"})]);fu.displayName="WordIcon";const Kt=()=>{const e=ve();return I(()=>e.value.metaLocales)};var $_=K({name:"AuthorInfo",inheritAttrs:!1,props:{author:{type:Array,required:!0},pure:Boolean},setup(e){const t=Kt();return()=>e.author.length?f("span",{class:"page-author-info","aria-label":`${t.value.author}${e.pure?"":"🖊"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(iu),f("span",e.author.map(n=>n.url?f("a",{class:"page-author-item",href:n.url,target:"_blank",rel:"noopener noreferrer"},n.name):f("span",{class:"page-author-item"},n.name))),f("span",{property:"author",content:e.author.map(n=>n.name).join(", ")})]):null}}),N_=K({name:"CategoryInfo",inheritAttrs:!1,props:{category:{type:Array,required:!0},pure:Boolean},setup(e){const t=Ye(),n=de(),r=Kt(),o=(i,l="")=>{l&&n.value.path!==l&&(i.preventDefault(),t.push(l))};return()=>e.category.length?f("span",{class:"page-category-info","aria-label":`${r.value.category}${e.pure?"":"🌈"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(su),e.category.map(({name:i,path:l})=>f("span",{class:["page-category-item",{[`category${Za(i,9)}`]:!e.pure,clickable:l}],role:l?"navigation":"",onClick:s=>o(s,l)},i)),f("meta",{property:"articleSection",content:e.category.map(({name:i})=>i).join(",")})]):null}}),z_=K({name:"DateInfo",inheritAttrs:!1,props:{date:{type:Object,default:null},localizedDate:{type:String,default:""},pure:Boolean},setup(e){const t=Pi(),n=Kt();return()=>e.date?f("span",{class:"page-date-info","aria-label":`${n.value.date}${e.pure?"":"📅"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(lu),f("span",f(no,()=>e.localizedDate||e.date.toLocaleDateString(t.value))),f("meta",{property:"datePublished",content:e.date.toISOString()||""})]):null}}),F_=K({name:"OriginalInfo",inheritAttrs:!1,props:{isOriginal:Boolean},setup(e){const t=Kt();return()=>e.isOriginal?f("span",{class:"page-original-info"},t.value.origin):null}}),B_=K({name:"ReadingTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const t=Kt(),n=I(()=>{if(!e.readingTime)return null;const{minutes:r}=e.readingTime;return r<1?"PT1M":`PT${Math.round(r)}M`});return()=>{var r,o;return(r=e.readingTimeLocale)!=null&&r.time?f("span",{class:"page-reading-time-info","aria-label":`${t.value.readingTime}${e.pure?"":"⌛"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(uu),f("span",(o=e.readingTimeLocale)==null?void 0:o.time),f("meta",{property:"timeRequired",content:n.value})]):null}}}),H_=K({name:"TagInfo",inheritAttrs:!1,props:{tag:{type:Array,default:()=>[]},pure:Boolean},setup(e){const t=Ye(),n=de(),r=Kt(),o=(i,l="")=>{l&&n.value.path!==l&&(i.preventDefault(),t.push(l))};return()=>e.tag.length?f("span",{class:"page-tag-info","aria-label":`${r.value.tag}${e.pure?"":"🏷"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(cu),e.tag.map(({name:i,path:l})=>f("span",{class:["page-tag-item",{[`tag${Za(i,9)}`]:!e.pure,clickable:l}],role:l?"navigation":"",onClick:s=>o(s,l)},i)),f("meta",{property:"keywords",content:e.tag.map(({name:i})=>i).join(",")})]):null}}),j_=K({name:"ReadTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const t=Kt();return()=>{var n,r,o;return(n=e.readingTimeLocale)!=null&&n.words?f("span",{class:"page-word-info","aria-label":`${t.value.words}${e.pure?"":"🔠"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(fu),f("span",(r=e.readingTimeLocale)==null?void 0:r.words),f("meta",{property:"wordCount",content:(o=e.readingTime)==null?void 0:o.words})]):null}}}),W_=K({name:"PageInfo",components:{AuthorInfo:$_,CategoryInfo:N_,DateInfo:z_,OriginalInfo:F_,PageViewInfo:()=>null,ReadingTimeInfo:B_,TagInfo:H_,WordInfo:j_},props:{items:{type:[Array,Boolean],default:()=>["Author","Original","Date","PageView","ReadingTime","Category","Tag"]},info:{type:Object,required:!0}},setup(e){const t=vr();return()=>e.items?f("div",{class:"page-info"},e.items.map(n=>f(ot(`${n}Info`),{...e.info,pure:t.value}))):null}}),q_=K({name:"PrintButton",setup(){const e=Mn(),t=ve();return()=>e.value.print===!1?null:f("button",{type:"button",class:"print-button",title:t.value.metaLocales.print,onClick:()=>{window.print()}},f(au))}});const U_=({title:e,level:t,slug:n})=>f(nt,{to:`#${n}`,class:["toc-link",`level${t}`]},()=>e),ti=(e,t)=>{const n=yt();return e.length&&t>0?f("ul",{class:"toc-list"},e.map(r=>{const o=ti(r.children,t-1);return[f("li",{class:["toc-item",{active:n.hash===`#${r.slug}`}]},U_(r)),o?f("li",o):null]})):null};var K_=K({name:"TOC",props:{items:{type:Array,default:()=>[]},headerDepth:{type:Number,default:2}},slots:Object,setup(e,{slots:t}){const n=yt(),r=de(),o=Kt(),i=st(),l=ee("-1.7rem"),s=c=>{var u;(u=i.value)==null||u.scrollTo({top:c,behavior:"smooth"})},a=()=>{if(i.value){const c=document.querySelector(".toc-item.active");c?l.value=`${c.getBoundingClientRect().top-i.value.getBoundingClientRect().top+i.value.scrollTop}px`:l.value="-1.7rem"}else l.value="-1.7rem"};return ge(()=>{fe(()=>n.hash,c=>{if(i.value){const u=document.querySelector(`#toc a.toc-link[href$="${c}"]`);if(!u)return;const{top:d,height:p}=i.value.getBoundingClientRect(),{top:m,height:b}=u.getBoundingClientRect();md+p&&s(i.value.scrollTop+m+b-d-p)}}),fe(()=>n.fullPath,a,{flush:"post",immediate:!0})}),()=>{var u,d;const c=e.items.length?ti(e.items,e.headerDepth):r.value.headers?ti(r.value.headers,e.headerDepth):null;return c?f("div",{class:"toc-place-holder"},[f("aside",{id:"toc"},[(u=t.before)==null?void 0:u.call(t),f("div",{class:"toc-header"},[o.value.toc,f(q_)]),f("div",{class:"toc-wrapper",ref:i},[c,f("div",{class:"toc-marker",style:{top:l.value}})]),(d=t.after)==null?void 0:d.call(t)])]):null}}}),du=K({name:"SkipLink",props:{content:{type:String,default:"main-content"}},setup(e){const t=de(),n=ve(),r=st(),o=({target:i})=>{const l=document.querySelector(i.hash);if(l){const s=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",s)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",s),l.focus(),window.scrollTo(0,0)}};return ge(()=>{fe(()=>t.value.path,()=>r.value.focus())}),()=>[f("span",{ref:r,tabindex:"-1"}),f("a",{href:`#${e.content}`,class:"vp-skip-link sr-only",onClick:o},n.value.routeLocales.skipToContent)]}});let So=null,Fn=null;const G_={wait:()=>So,pending:()=>{So=new Promise(e=>Fn=e)},resolve:()=>{Fn==null||Fn(),So=null,Fn=null}},pu=()=>G_;var Y_=K({name:"FadeSlideY",slots:Object,setup(e,{slots:t}){const{resolve:n,pending:r}=pu();return()=>f(Ot,{name:"fade-slide-y",mode:"out-in",onBeforeEnter:n,onBeforeLeave:r},()=>{var o;return(o=t.default)==null?void 0:o.call(t)})}});const Z_=(e,t)=>{const n=e.replace(t,"/").split("/"),r=[];let o=Ri(t);return n.forEach((i,l)=>{l!==n.length-1?(o+=`${i}/`,r.push({link:o,name:i||"Home"})):i!==""&&(o+=i,r.push({link:o,name:i}))}),r},hu=(e,{slots:t})=>{var d,p;const{bgImage:n,bgImageDark:r,bgImageStyle:o,color:i,description:l,image:s,imageDark:a,header:c,features:u=[]}=e;return f("div",{class:"vp-feature-wrapper"},[n?f("div",{class:["vp-feature-bg",{light:r}],style:[{"background-image":`url(${n})`},o]}):null,r?f("div",{class:"vp-feature-bg dark",style:[{"background-image":`url(${r})`},o]}):null,f("div",{class:"vp-feature",style:i?{color:i}:{}},[((d=t.image)==null?void 0:d.call(t,e))||[s?f("img",{class:["vp-feature-image",{light:a}],src:Me(s),alt:c}):null,a?f("img",{class:"vp-feature-image dark",src:Me(a),alt:c}):null],((p=t.info)==null?void 0:p.call(t,e))||[c?f("h2",{class:"vp-feature-header"},c):null,l?f("p",{class:"vp-feature-description",innerHTML:l}):null],u.length?f("div",{class:"vp-features"},u.map(({icon:m,title:b,details:E,link:w})=>{const y=[f("h3",{class:"vp-feature-title"},[f(We,{icon:m}),f("span",{innerHTML:b})]),f("p",{class:"vp-feature-details",innerHTML:E})];return w?jr(w)?f("a",{class:"vp-feature-item link",href:w,"aria-label":b,target:"_blank"},y):f(nt,{class:"vp-feature-item link",to:w,"aria-label":b},()=>y):f("div",{class:"vp-feature-item"},y)})):null])])};hu.displayName="FeaturePanel";var ds=hu;const vu=e=>{const{icon:t="",color:n,size:r}=e,o={};return n&&(o.color=n),r&&(o.height=Number.isNaN(Number(r))?r:`${r}px`),Cn(t)?f("img",{class:"icon",src:t,"no-view":"",style:o}):io(t)?f("img",{class:"icon",src:Me(t),"no-view":"",style:o}):f(ot("FontIcon"),e)};vu.displayName="HopeIcon";var Q_=vu,J_=K({name:"HeroInfo",slots:Object,setup(e,{slots:t}){const n=Pe(),r=to(),o=I(()=>n.value.heroFullScreen??!1),i=I(()=>{const{heroText:c,tagline:u}=n.value;return{text:c??r.value.title??"Hello",tagline:u??r.value.description??"",isFullScreen:o.value}}),l=I(()=>{const{heroText:c,heroImage:u,heroImageDark:d,heroAlt:p,heroImageStyle:m}=n.value;return{image:u?Me(u):null,imageDark:d?Me(d):null,heroStyle:m,alt:p||c||"hero image",isFullScreen:o.value}}),s=I(()=>{const{bgImage:c,bgImageDark:u,bgImageStyle:d}=n.value;return{image:xt(c)?Me(c):null,imageDark:xt(u)?Me(u):null,bgStyle:d,isFullScreen:o.value}}),a=I(()=>n.value.actions??[]);return()=>{var c,u,d;return f("header",{class:["vp-hero-info-wrapper",{fullscreen:o.value}]},[((c=t.heroBg)==null?void 0:c.call(t,s.value))||[s.value.image?f("div",{class:["vp-hero-mask",{light:s.value.imageDark}],style:[{"background-image":`url(${s.value.image})`},s.value.bgStyle]}):null,s.value.imageDark?f("div",{class:"vp-hero-mask dark",style:[{"background-image":`url(${s.value.imageDark})`},s.value.bgStyle]}):null],f("div",{class:"vp-hero-info"},[((u=t.heroImage)==null?void 0:u.call(t,l.value))||f(_n,{appear:!0,type:"group"},()=>[l.value.image?f("img",{key:"light",class:["vp-hero-image",{light:l.value.imageDark}],style:l.value.heroStyle,src:l.value.image,alt:l.value.alt}):null,l.value.imageDark?f("img",{key:"dark",class:"vp-hero-image dark",style:l.value.heroStyle,src:l.value.imageDark,alt:l.value.alt}):null]),((d=t.heroInfo)==null?void 0:d.call(t,i.value))??f("div",{class:"vp-hero-infos"},[i.value.text?f(_n,{appear:!0,delay:.04},()=>f("h1",{id:"main-title"},i.value.text)):null,i.value.tagline?f(_n,{appear:!0,delay:.08},()=>f("p",{id:"main-description",innerHTML:i.value.tagline})):null,a.value.length?f(_n,{appear:!0,delay:.12},()=>f("p",{class:"vp-hero-actions"},a.value.map(p=>f(He,{class:["vp-hero-action",p.type||"default"],config:p,noExternalLinkIcon:!0},p.icon?{before:()=>f(Q_,{icon:p.icon})}:{})))):null])])])}}});const mu=(e,{slots:t})=>{var p,m,b;const{bgImage:n,bgImageDark:r,bgImageStyle:o,color:i,description:l,image:s,imageDark:a,header:c,highlights:u=[],type:d="un-order"}=e;return f("div",{class:"vp-highlight-wrapper",style:i?{color:i}:{}},[n?f("div",{class:["vp-highlight-bg",{light:r}],style:[{"background-image":`url(${n})`},o]}):null,r?f("div",{class:"vp-highlight-bg dark",style:[{"background-image":`url(${r})`},o]}):null,f("div",{class:"vp-highlight"},[((p=t.image)==null?void 0:p.call(t,e))||[s?f("img",{class:["vp-highlight-image",{light:a}],src:Me(s),alt:c}):null,a?f("img",{class:"vp-highlight-image dark",src:Me(a),alt:c}):null],((m=t.info)==null?void 0:m.call(t,e))||[f("div",{class:"vp-highlight-info-wrapper"},f("div",{class:"vp-highlight-info"},[c?f("h2",{class:"vp-highlight-header",innerHTML:c}):null,l?f("p",{class:"vp-highlight-description",innerHTML:l}):null,((b=t.highlights)==null?void 0:b.call(t,u))||f(d==="order"?"ol":d==="no-order"?"dl":"ul",{class:"vp-highlights"},u.map(({icon:E,title:w,details:y,link:R})=>{const g=[f(d==="no-order"?"dt":"h3",{class:"vp-highlight-title"},[E?f(We,{class:"vp-highlight-icon",icon:E}):null,f("span",{innerHTML:w})]),y?f(d==="no-order"?"dd":"p",{class:"vp-highlight-details",innerHTML:y}):null];return f(d==="no-order"?"div":"li",{class:["vp-highlight-item-wrapper",{link:R}]},R?jh(R)?f("a",{class:"vp-highlight-item link",href:R,"aria-label":w,target:"_blank"},g):f(nt,{class:"vp-highlight-item link",to:R,"aria-label":w},()=>g):f("div",{class:"vp-highlight-item"},g))}))]))]])])};mu.displayName="HighlightPanel";var X_=mu,e1=K({name:"HomePage",slots:Object,setup(e,{slots:t}){const n=vr(),r=Pe(),o=I(()=>{const{features:l}=r.value;return X(l)?l:null}),i=I(()=>{const{highlights:l}=r.value;return X(l)?l:null});return()=>{var l,s,a,c;return f("main",{id:"main-content",class:["vp-project-home ",{pure:n.value}],"aria-labelledby":r.value.heroText===null?"":"main-title"},[(l=t.top)==null?void 0:l.call(t),f(J_),((s=i.value)==null?void 0:s.map(u=>"features"in u?f(ds,u):f(X_,u)))||(o.value?f(_n,{appear:!0,delay:.24},()=>f(ds,{features:o.value})):null),(a=t.center)==null?void 0:a.call(t),f(_n,{appear:!0,delay:.32},()=>f(ou)),(c=t.bottom)==null?void 0:c.call(t)])}}}),t1=K({name:"BreadCrumb",setup(){const e=Ye(),t=de(),n=an(),r=Pe(),o=ve(),i=st([]),l=I(()=>(r.value.breadcrumb||r.value.breadcrumb!==!1&&o.value.breadcrumb!==!1)&&i.value.length>1),s=I(()=>r.value.breadcrumbIcon||r.value.breadcrumbIcon!==!1&&o.value.breadcrumbIcon!==!1),a=()=>{const c=e.getRoutes(),u=Z_(t.value.path,n.value).map(({link:d,name:p})=>{const m=c.find(b=>b.path===d);if(m){const{meta:b,path:E}=qr(e,m.path);return{title:b[Rt.shortTitle]||b[Rt.title]||p,icon:b[Rt.icon],path:E}}return null}).filter(d=>d!==null);u.length>1&&(i.value=u)};return ge(()=>{fe(()=>t.value.path,a,{immediate:!0})}),()=>f("nav",{class:["vp-breadcrumb",{disable:!l.value}]},l.value?f("ol",{vocab:"https://schema.org/",typeof:"BreadcrumbList"},i.value.map((c,u)=>f("li",{class:{"is-active":i.value.length-1===u},property:"itemListElement",typeof:"ListItem"},[f(nt,{to:c.path,property:"item",typeof:"WebPage"},()=>[s.value?f(We,{icon:c.icon}):null,f("span",{property:"name"},c.title||"Unknown")]),f("meta",{property:"position",content:u+1})]))):[])}});const ps=e=>{const t=Ye();return e===!1?!1:ue(e)?En(t,e,!0):Li(e)?e:null},ni=(e,t,n)=>{const r=e.findIndex(o=>o.link===t);if(r!==-1){const o=e[r+n];return o!=null&&o.link?o:null}for(const o of e)if(o.children){const i=ni(o.children,t,n);if(i)return i}return null};var n1=K({name:"PageNav",setup(){const e=ve(),t=Pe(),n=Fi(),r=de(),o=n_(),i=I(()=>{const s=ps(t.value.prev);return s===!1?null:s||(e.value.prevLink===!1?null:ni(n.value,r.value.path,-1))}),l=I(()=>{const s=ps(t.value.next);return s===!1?null:s||(e.value.nextLink===!1?null:ni(n.value,r.value.path,1))});return $e("keydown",s=>{s.altKey&&(s.key==="ArrowRight"?l.value&&(o(l.value.link),s.preventDefault()):s.key==="ArrowLeft"&&i.value&&(o(i.value.link),s.preventDefault()))}),()=>i.value||l.value?f("nav",{class:"vp-page-nav"},[i.value?f(He,{class:"prev",config:i.value},()=>{var s,a;return[f("div",{class:"hint"},[f("span",{class:"arrow start"}),e.value.metaLocales.prev]),f("div",{class:"link"},[f(We,{icon:(s=i.value)==null?void 0:s.icon}),(a=i.value)==null?void 0:a.text])]}):null,l.value?f(He,{class:"next",config:l.value},()=>{var s,a;return[f("div",{class:"hint"},[e.value.metaLocales.next,f("span",{class:"arrow end"})]),f("div",{class:"link"},[(s=l.value)==null?void 0:s.text,f(We,{icon:(a=l.value)==null?void 0:a.icon})])]}):null]):null}});const r1={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},o1=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o})=>{if(!r)return null;const i=rc(e);let l;return o?l=o:i!==null&&(l=r1[i]),l?l.replace(/:repo/,Cn(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,wa(`${Ri(n)}/${r}`)):null},i1=()=>{const e=ve(),t=de(),n=Pe();return I(()=>{const{repo:r,docsRepo:o=r,docsBranch:i="main",docsDir:l="",editLink:s,editLinkPattern:a=""}=e.value;if(!(n.value.editLink??s??!0)||!o)return null;const c=o1({docsRepo:o,docsBranch:i,docsDir:l,editLinkPattern:a,filePathRelative:t.value.filePathRelative});return c?{text:e.value.metaLocales.editLink,link:c}:null})},l1=()=>{const e=to(),t=ve(),n=de(),r=Pe();return I(()=>{var o,i;return!(r.value.lastUpdated??t.value.lastUpdated??!0)||!((o=n.value.git)!=null&&o.updatedTime)?null:new Date((i=n.value.git)==null?void 0:i.updatedTime).toLocaleString(e.value.lang)})},s1=()=>{const e=ve(),t=de(),n=Pe();return I(()=>{var r;return n.value.contributors??e.value.contributors??!0?((r=t.value.git)==null?void 0:r.contributors)??null:null})};var a1=K({name:"PageTitle",setup(){const e=de(),t=Pe(),n=ve(),{info:r,items:o}=l_();return()=>f("div",{class:"vp-page-title"},[f("h1",[n.value.titleIcon===!1?null:f(We,{icon:t.value.icon}),e.value.title]),f(W_,{info:r.value,...o.value===null?{}:{items:o.value}}),f("hr")])}});const _u=()=>f(Le,{name:"edit"},()=>[f("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),f("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})]);_u.displayName="EditIcon";var c1=K({name:"PageMeta",setup(){const e=ve(),t=i1(),n=l1(),r=s1();return()=>{const{metaLocales:o}=e.value;return f("footer",{class:"page-meta"},[t.value?f("div",{class:"meta-item edit-link"},f(He,{class:"label",config:t.value},{before:()=>f(_u)})):null,f("div",{class:"meta-item git-info"},[n.value?f("div",{class:"update-time"},[f("span",{class:"label"},`${o.lastUpdated}: `),f(no,()=>f("span",{class:"info"},n.value))]):null,r.value&&r.value.length?f("div",{class:"contributors"},[f("span",{class:"label"},`${o.contributors}: `),r.value.map(({email:i,name:l},s)=>[f("span",{class:"contributor",title:`email: ${i}`},l),s!==r.value.length-1?",":""])]):null])])}}}),u1=K({name:"NormalPage",slots:Object,setup(e,{slots:t}){const n=Pe(),r=de(),{isDarkmode:o}=mr(),i=ve(),l=I(()=>n.value.toc||n.value.toc!==!1&&i.value.toc!==!1);return()=>f("main",{id:"main-content",class:"vp-page"},f(It("LocalEncrypt")?ot("LocalEncrypt"):Ya,()=>{var s,a,c,u;return[(s=t.top)==null?void 0:s.call(t),n.value.cover?f("img",{class:"page-cover",src:Me(n.value.cover),alt:r.value.title,"no-view":""}):null,f(t1),f(a1),l.value?f(K_,{headerDepth:n.value.headerDepth??i.value.headerDepth??2},{before:()=>{var d;return(d=t.tocBefore)==null?void 0:d.call(t)},after:()=>{var d;return(d=t.tocAfter)==null?void 0:d.call(t)}}):null,(a=t.contentBefore)==null?void 0:a.call(t),f(ou),(c=t.contentAfter)==null?void 0:c.call(t),f(c1),f(n1),It("CommentService")?f(ot("CommentService"),{darkmode:o.value}):null,(u=t.bottom)==null?void 0:u.call(t)]}))}}),f1=K({name:"Layout",slots:Object,setup(e,{slots:t}){ve();const n=de(),r=Pe(),{isMobile:o}=ao(),i=I(()=>"none");return()=>[f(du),f(ru,{},{default:()=>{var l;return((l=t.default)==null?void 0:l.call(t))||(r.value.home?f(e1):f(Y_,()=>f(u1,{key:n.value.path},{top:()=>{var s;return(s=t.top)==null?void 0:s.call(t)},bottom:()=>{var s;return(s=t.bottom)==null?void 0:s.call(t)},contentBefore:()=>{var s;return(s=t.contentBefore)==null?void 0:s.call(t)},contentAfter:()=>{var s;return(s=t.contentAfter)==null?void 0:s.call(t)},tocBefore:()=>{var s;return(s=t.tocBefore)==null?void 0:s.call(t)},tocAfter:()=>{var s;return(s=t.tocAfter)==null?void 0:s.call(t)}})))},...i.value!=="none"?{navScreenBottom:()=>f(ot("BloggerInfo"))}:{},...!o.value&&i.value==="always"?{sidebar:()=>f(ot("BloggerInfo"))}:{}})]}}),d1=K({name:"NotFoundHint",setup(){const e=ve(),t=()=>{const n=e.value.routeLocales.notFoundMsg;return n[Math.floor(Math.random()*n.length)]};return()=>f("div",{class:"not-found-hint"},[f("p",{class:"error-code"},"404"),f("h1",{class:"error-title"},e.value.routeLocales.notFoundTitle),f("p",{class:"error-hint"},t())])}}),p1=K({name:"NotFound",slots:Object,setup(e,{slots:t}){const n=an(),r=ve(),{navigate:o}=Go({to:r.value.home??n.value});return()=>[f(du),f(ru,{noSidebar:!0},()=>{var i;return f("main",{id:"main-content",class:"vp-page not-found"},((i=t.default)==null?void 0:i.call(t))||[f(d1),f("div",{class:"actions"},[f("button",{type:"button",class:"action-button",onClick:()=>{window.history.go(-1)}},r.value.routeLocales.back),f("button",{type:"button",class:"action-button",onClick:()=>o()},r.value.routeLocales.home)])])})]}});zv(e=>{const t=e.t,n=e.I!==!1,r=e.i;return n?{title:t,content:r?()=>[f(We,{icon:r}),t]:null,order:e.O,index:e.I}:null});const h1=at({enhance:({app:e,router:t})=>{const{scrollBehavior:n}=t.options;t.options.scrollBehavior=async(...r)=>(await pu().wait(),n(...r)),c_(e),e.component("HopeIcon",We),e.component("VPLink",nt)},setup:()=>{u_(),v_()},layouts:{Layout:f1,NotFound:p1}}),xr=[bp,kv,Nv,Wv,Gv,Jv,rm,fm,ym,Im,zm,Ym,h1],v1=[["v-8daa1a0e","/",{y:"h",t:"Home",i:"home"},["/README.md"]],["v-fffb8e28","/guide/",{y:"a",t:"Guide",i:"terminal"},["/guide/README.md"]],["v-43c96c34","/more/collaborative_projects.html",{y:"a",t:"Collaborative Projects",i:"circle-info"},[":md"]],["v-17f2914c","/more/contact.html",{y:"a",t:"Contact US",i:"circle-info"},[":md"]],["v-07f943d9","/more/license.html",{y:"a",t:"License",i:"circle-info"},[":md"]],["v-9e2e7e22","/more/thanks.html",{y:"a",t:"Acknowledgments",i:"circle-info"},[":md"]],["v-1d3d20e2","/more/use_cases.html",{y:"a",t:"Use Cases",i:"circle-info"},[":md"]],["v-639495b8","/tutorial/",{y:"a",t:"Tutorial",i:"lightbulb"},["/tutorial/README.md"]],["v-2d0ad528","/zh/",{y:"h",t:"首页",i:"home"},["/zh/README.md"]],["v-58ff8a76","/guide/code/",{y:"a",t:"Code interpretation",i:"code"},["/guide/code/README.md"]],["v-07e28fb7","/guide/code/oncetoken.html",{y:"a",t:"onceToken"},[":md"]],["v-5d588a76","/guide/faq/",{y:"a",t:"FAQ",i:"question"},["/guide/faq/README.md"]],["v-67fe8904","/guide/faq/not_recommended_qq.html",{y:"a",t:"Why is it not recommended to consult questions via QQ private chat?"},[":md"]],["v-9ef794be","/guide/faq/rtmp_playback_compatibility_issues.html",{y:"a",t:"RTMP Playback Compatibility Issues"},[":md"]],["v-26771ae0","/guide/install/",{y:"a",t:"Install",i:"box-archive"},["/guide/install/README.md"]],["v-7c5f89f1","/guide/install/compilation_instructions_for_windows_version.html",{y:"a",t:"Building Instructions for Windows"},[":md"]],["v-2a95408c","/guide/install/install_zlmediakit_using_vcpkg.html",{y:"a",t:"Installing zlmediakit with vcpkg"},[":md"]],["v-410226d2","/guide/install/start.html",{y:"a",t:"Start",O:1},[":md"]],["v-1a355af6","/guide/media_server/",{y:"a",t:"Media Server",i:"gears",O:3},["/guide/media_server/README.md"]],["v-f17856b6","/guide/media_server/config_file.html",{y:"a",t:"Configuration File Explanation"},[":md"]],["v-326b1b06","/guide/media_server/generate_ssl_self-signed_certificate_and_test.html",{y:"a",t:"Generate SSL self-signed certificate and test"},[":md"]],["v-f90651dc","/guide/media_server/how_to_enable_https_related_functions.html",{y:"a",t:"How to Enable HTTPS Related Functions"},[":md"]],["v-629229d1","/guide/media_server/on-demand_push_streaming.html",{y:"a",t:"Implement on-demand push streaming"},[":md"]],["v-a3ed6f7c","/guide/media_server/on-demand_streaming.html",{y:"a",t:"Implement on-demand pull streaming"},[":md"]],["v-22d780d8","/guide/media_server/play_url_rules.html",{y:"a",t:"Playing URL Rules",i:"circle-info"},[":md"]],["v-40777a42","/guide/media_server/playback_authentication.html",{y:"a",t:"Implementing Playback Authentication"},[":md"]],["v-1c8baf7e","/guide/media_server/push_authentication.html",{y:"a",t:"Implementing Push Streaming Authentication"},[":md"]],["v-d003c332","/guide/media_server/push_test.html",{y:"a",t:"Push and Playback Testing"},[":md"]],["v-992f244c","/guide/media_server/restful_api.html",{y:"a",t:"RESTful API"},[":md"]],["v-1563923f","/guide/media_server/sequence_diagram.html",{y:"a",t:"Sequence diagram"},[":md"]],["v-3f9e2b34","/guide/media_server/start_server.html",{y:"a",t:"Starting and Stopping the Server",i:"circle-info"},[":md"]],["v-4436fd0b","/guide/media_server/web_hook_api.html",{y:"a",t:"Web Hook"},[":md"]],["v-fa0f55aa","/guide/protocol/",{y:"a",t:"Protocol",i:"lightbulb"},["/guide/protocol/README.md"]],["v-5d4ca3be","/guide/sdk/",{y:"a",t:"SDK API",i:"lightbulb"},["/guide/sdk/README.md"]],["v-29126422","/guide/sdk/how_to_create_a_live_steam.html",{y:"a",t:"How to create a live stream"},[":md"]],["v-b1256428","/reference/development_log/",{y:"a",t:"Development log",i:"code-commit"},["/reference/development_log/README.md"]],["v-099b9809","/reference/development_log/hls_high_performance_journey.html",{y:"a",t:"zlmediakit的hls高性能之旅"},[":md"]],["v-c75d9fee","/reference/development_log/rtsp_performance_optimization.html",{y:"a",t:"RTSP性能优化",O:1},[":md"]],["v-27716634","/reference/documents/",{y:"a",t:"Related documents",i:"file-code"},["/reference/documents/README.md"]],["v-3d1bfe27","/reference/documents/exclusive_features.html",{y:"a",t:"Exclusive Features of ZLMediakit"},[":md"]],["v-61f35635","/reference/documents/high_concurrency_implementation_principle.html",{y:"a",t:"ZLMediaKit高并发实现原理"},[":md"]],["v-60e3ff20","/reference/documents/introduction_to_streaming_media_related_technologies.html",{y:"a",t:"流媒体相关技术介绍"},[":md"]],["v-716fbfe3","/reference/documents/rtsp_push_process.html",{y:"a",t:"RTSP push streaming process"},[":md"]],["v-159648d6","/reference/documents/the_nature_of_live_broadcast_delay.html",{y:"a",t:"The Essence of Live Streaming Delay"},[":md"]],["v-07cf6867","/reference/resources/",{y:"a",t:"Resources",i:"font-awesome"},["/reference/resources/README.md"]],["v-2894bdb2","/reference/resources/dependency.html",{y:"a",t:"Dependency and Copyright",O:1},[":md"]],["v-630bfad5","/reference/resources/rtmp_support_for_h265_and_opus.html",{y:"a",t:"RTMP supports H265 and OPUS"},[":md"]],["v-a9be237a","/reference/resources/video_conferencing_related_resources.html",{y:"a",t:"Video Conference Related Resources"},[":md"]],["v-770cb196","/reference/resources/zltoolkit_source_code_study_notes.html",{y:"a",t:"ZLToolKit source code study notes"},[":md"]],["v-60c5ec00","/reference/test/",{y:"a",t:"Testing",i:"vials"},["/reference/test/README.md"]],["v-7cf84008","/reference/test/benchmark.html",{y:"a",t:"Benchmark"},[":md"]],["v-d8f6ac6a","/reference/test/delay_test.html",{y:"a",t:"Delay Testing"},[":md"]],["v-adc6a8e4","/reference/test/how_to_test_delay.html",{y:"a",t:"How to test the delay?"},[":md"]],["v-ea3f92ca","/reference/test/online_test.html",{y:"a",t:"Online test"},[":md"]],["v-210a0a78","/reference/test/performance_testing.html",{y:"a",t:"Performance Testing"},[":md"]],["v-27157219","/reference/test/rtmp_pull_stream_performance_test.html",{y:"a",t:"rtmp pull stream performance test"},[":md"]],["v-927f8538","/reference/test/rtmp_push_stream_performance_test.html",{y:"a",t:"rtmp push stream performance test"},[":md"]],["v-3ede775a","/reference/test/rtsp_pull_stream_performance_test.html",{y:"a",t:"rtsp pull stream performance test"},[":md"]],["v-703b8f9e","/reference/test/rtsp_push_stream_performance_test.html",{y:"a",t:"rtsp push stream performance test"},[":md"]],["v-47357bdb","/zh/guide/",{y:"a",t:"指南",i:"terminal"},["/zh/guide/README.md"]],["v-0a3cd263","/zh/more/collaborative_projects.html",{y:"a",t:"合作项目",i:"circle-info"},[":md"]],["v-8b20cdea","/zh/more/contact.html",{y:"a",t:"联系我们",i:"circle-info"},[":md"]],["v-633bb4ec","/zh/more/license.html",{y:"a",t:"授权协议",i:"circle-info"},[":md"]],["v-4bf4651e","/zh/more/thanks.html",{y:"a",t:"致谢",i:"circle-info"},[":md"]],["v-7dceae00","/zh/more/use_cases.html",{y:"a",t:"使用案例",i:"circle-info"},[":md"]],["v-ec228f2e","/zh/tutorial/",{y:"a",t:"快速开始",i:"lightbulb"},["/zh/tutorial/README.md"]],["v-cb3c3b8e","/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html",{y:"a",t:"GB28181 SIP信令抓包"},[":md"]],["v-6fbaec55","/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html",{y:"a",t:"GB28181怎么用设备ID作为流ID"},[":md"]],["v-079ebd6a","/guide/protocol/gb28181/push_streaming.html",{y:"a",t:"GB28181推流"},[":md"]],["v-114c6ef6","/guide/protocol/srt/",{y:"a",t:"SRT"},["/guide/protocol/srt/README.md"]],["v-d73f5e1e","/guide/protocol/webrtc/webrtc_compilation_and_use.html",{y:"a",t:"Compiling and Using WebRTC"},[":md"]],["v-284ed9d6","/guide/protocol/webrtc/webrtc_signaling_interaction_format.html",{y:"a",t:"WebRTC Signaling Interaction Format"},[":md"]],["v-515bc4e7","/zh/guide/code/",{y:"a",t:"代码解读",i:"code"},["/zh/guide/code/README.md"]],["v-e1a99f30","/zh/guide/code/oncetoken.html",{y:"a",t:"代码篇之onceToken"},[":md"]],["v-763dee34","/zh/guide/faq/",{y:"a",t:"常见问题",i:"question"},["/zh/guide/faq/README.md"]],["v-6ff7e8b5","/zh/guide/faq/not_recommended_qq.html",{y:"a",t:"为什么不建议QQ私聊咨询问题?"},[":md"]],["v-75521352","/zh/guide/faq/rtmp_playback_compatibility_issues.html",{y:"a",t:"RTMP播放兼容性问题"},[":md"]],["v-1b2bfecf","/zh/guide/install/",{y:"a",t:"安装",i:"box-archive"},["/zh/guide/install/README.md"]],["v-3c49c43c","/zh/guide/install/compilation_instructions_for_windows_version.html",{y:"a",t:"Windows 版编译说明"},[":md"]],["v-2139c386","/zh/guide/install/install_zlmediakit_using_vcpkg.html",{y:"a",t:"vcpkg方式安装zlmediakit"},[":md"]],["v-4f36f1c6","/zh/guide/install/start.html",{y:"a",t:"快速开始",O:1},[":md"]],["v-7ac6e814","/zh/guide/media_server/",{y:"a",t:"Media Server",i:"gears"},["/zh/guide/media_server/README.md"]],["v-76640c16","/zh/guide/media_server/config_file.html",{y:"a",t:"配置文件详解"},[":md"]],["v-04c98dae","/zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html",{y:"a",t:"生成SSL自签名证书并测试"},[":md"]],["v-fc02997a","/zh/guide/media_server/how_to_enable_https_related_functions.html",{y:"a",t:"怎么开启https相关功能"},[":md"]],["v-60a95200","/zh/guide/media_server/on-demand_push_streaming.html",{y:"a",t:"实现按需推流"},[":md"]],["v-b991029a","/zh/guide/media_server/on-demand_streaming.html",{y:"a",t:"实现按需拉流"},[":md"]],["v-78eb47c7","/zh/guide/media_server/play_url_rules.html",{y:"a",t:"播放url规则",i:"circle-info"},[":md"]],["v-2459df9a","/zh/guide/media_server/playback_authentication.html",{y:"a",t:"实现播放鉴权"},[":md"]],["v-322f429c","/zh/guide/media_server/push_authentication.html",{y:"a",t:"实现推流鉴权"},[":md"]],["v-c01103d0","/zh/guide/media_server/push_test.html",{y:"a",t:"推流播放测试"},[":md"]],["v-baeeb56a","/zh/guide/media_server/restful_api.html",{y:"a",t:"RESTful 接口"},[":md"]],["v-35a1596e","/zh/guide/media_server/sequence_diagram.html",{y:"a",t:"时序图"},[":md"]],["v-3484e1e3","/zh/guide/media_server/start_server.html",{y:"a",t:"服务器的启动与关闭",i:"circle-info"},[":md"]],["v-391db3ba","/zh/guide/media_server/web_hook_api.html",{y:"a",t:"Web Hook 接口"},[":md"]],["v-24dfef1c","/zh/guide/protocol/",{y:"a",t:"协议相关",i:"lightbulb"},["/zh/guide/protocol/README.md"]],["v-7643e190","/zh/guide/sdk/",{y:"a",t:"SDK API",i:"cube"},["/zh/guide/sdk/README.md"]],["v-5a1c26c0","/zh/guide/sdk/how_to_create_a_live_steam.html",{y:"a",t:"怎样创建直播流"},[":md"]],["v-0938c35b","/zh/reference/development_log/",{y:"a",t:"开发日志",i:"code-commit"},["/zh/reference/development_log/README.md"]],["v-5298cc7a","/zh/reference/development_log/hls_high_performance_journey.html",{y:"a",t:"zlmediakit的hls高性能之旅"},[":md"]],["v-72fa89b8","/zh/reference/development_log/rtsp_performance_optimization.html",{y:"a",t:"RTSP性能优化",O:1},[":md"]],["v-4ea15ae3","/zh/reference/documents/",{y:"a",t:"相关文档",i:"file-code"},["/zh/reference/documents/README.md"]],["v-324a3498","/zh/reference/documents/exclusive_features.html",{y:"a",t:"ZLMediakit独家特性介绍"},[":md"]],["v-09d870a4","/zh/reference/documents/high_concurrency_implementation_principle.html",{y:"a",t:"ZLMediaKit高并发实现原理"},[":md"]],["v-175b5aa1","/zh/reference/documents/introduction_to_streaming_media_related_technologies.html",{y:"a",t:"流媒体相关技术介绍"},[":md"]],["v-79587752","/zh/reference/documents/rtsp_push_process.html",{y:"a",t:"RTSP推流流程"},[":md"]],["v-3e321006","/zh/reference/documents/the_nature_of_live_broadcast_delay.html",{y:"a",t:"直播延时的本质"},[":md"]],["v-2eff5d16","/zh/reference/resources/",{y:"a",t:"相关资源",i:"font-awesome"},["/zh/reference/resources/README.md"]],["v-4a544ed0","/zh/reference/resources/dependency.html",{y:"a",t:"代码依赖与版权声明",i:"code"},[":md"]],["v-2321e074","/zh/reference/resources/rtmp_support_for_h265_and_opus.html",{y:"a",t:"RTMP对H265和OPUS的支持"},[":md"]],["v-acba6b18","/zh/reference/resources/video_conferencing_related_resources.html",{y:"a",t:"视频会议相关资源"},[":md"]],["v-164eab05","/zh/reference/resources/zltoolkit_source_code_study_notes.html",{y:"a",t:"ZLToolKit源码学习笔记"},[":md"]],["v-7184a3f1","/zh/reference/test/",{y:"a",t:"测试",i:"vials"},["/zh/reference/test/README.md"]],["v-3d3ac02d","/zh/reference/test/benchmark.html",{y:"a",t:"Benchmark"},[":md"]],["v-e2ac608c","/zh/reference/test/delay_test.html",{y:"a",t:"延时测试"},[":md"]],["v-510ccabf","/zh/reference/test/how_to_test_delay.html",{y:"a",t:"怎么测试ZLMediaKit的延时?"},[":md"]],["v-174062e8","/zh/reference/test/online_test.html",{y:"a",t:"在线测试"},[":md"]],["v-e521bd2e","/zh/reference/test/performance_testing.html",{y:"a",t:"性能测试"},[":md"]],["v-1d29e16c","/zh/reference/test/rtmp_pull_stream_performance_test.html",{y:"a",t:"rtmp 拉流性能测试"},[":md"]],["v-fdd44ad6","/zh/reference/test/rtmp_push_stream_performance_test.html",{y:"a",t:"rtmp 推流性能测试"},[":md"]],["v-aa333cf8","/zh/reference/test/rtsp_pull_stream_performance_test.html",{y:"a",t:"rtsp拉流性能测试"},[":md"]],["v-3a912ccf","/zh/reference/test/rtsp_push_stream_performance_test.html",{y:"a",t:"rtsp推流性能测试"},[":md"]],["v-374e6730","/zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html",{y:"a",t:"GB28181 SIP信令抓包"},[":md"]],["v-6e3cc886","/zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html",{y:"a",t:"GB28181怎么用设备ID作为流ID"},[":md"]],["v-041958ba","/zh/guide/protocol/gb28181/push_streaming.html",{y:"a",t:"GB28181推流"},[":md"]],["v-71ddfc14","/zh/guide/protocol/srt/",{y:"a",t:"SRT"},["/zh/guide/protocol/srt/README.md"]],["v-5eb5ee22","/zh/guide/protocol/webrtc/webrtc_compilation_and_use.html",{y:"a",t:"webrtc 编译与使用"},[":md"]],["v-84db85f8","/zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html",{y:"a",t:"webrtc信令交互格式"},[":md"]],["v-3706649a","/404.html",{y:"p",t:""},[]],["v-14f73021","/more/",{y:"p",t:"More"},[]],["v-22a2f9fd","/reference/",{y:"p",t:"Reference"},[]],["v-2be85352","/zh/more/",{y:"p",t:"More"},[]],["v-0f8c4891","/guide/protocol/gb28181/",{y:"p",t:"Gb28181"},[]],["v-35ba27b7","/guide/protocol/webrtc/",{y:"p",t:"Webrtc"},[]],["v-70e5a528","/zh/reference/",{y:"p",t:"Reference"},[]],["v-55376182","/zh/guide/protocol/gb28181/",{y:"p",t:"Gb28181"},[]],["v-50bfaca6","/zh/guide/protocol/webrtc/",{y:"p",t:"Webrtc"},[]]];var hs=K({name:"Vuepress",setup(){const e=hp();return()=>f(e.value)}}),m1=()=>v1.reduce((e,[t,n,r,o])=>(e.push({name:t,path:n,component:hs,meta:r},{path:n.endsWith("/")?n+"index.html":n.substring(0,n.length-5),redirect:n},...o.map(i=>({path:i===":md"?n.substring(0,n.length-5)+".md":i,redirect:n}))),e),[{name:"404",path:"/:catchAll(.*)",component:hs}]),_1=$p,g1=()=>{const e=yh({history:_1(Ri("/")),routes:m1(),scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{var r;(t.path!==n.path||n===Lt)&&([t.meta._data]=await Promise.all([At.resolvePageData(t.name),(r=Ta[t.name])==null?void 0:r.__asyncLoader()]))}),e},b1=e=>{e.component("ClientOnly",no),e.component("Content",ka)},y1=(e,t,n)=>{const r=Yl(()=>t.currentRoute.value.path),o=Yl(()=>At.resolveRouteLocale(vn.value.locales,r.value)),i=lo(r,()=>t.currentRoute.value.meta._data),l=I(()=>At.resolveLayouts(n)),s=I(()=>At.resolveSiteLocaleData(vn.value,o.value)),a=I(()=>At.resolvePageFrontmatter(i.value)),c=I(()=>At.resolvePageHeadTitle(i.value,s.value)),u=I(()=>At.resolvePageHead(c.value,a.value,s.value)),d=I(()=>At.resolvePageLang(i.value,s.value)),p=I(()=>At.resolvePageLayout(i.value,l.value));return e.provide(up,l),e.provide(Aa,i),e.provide(La,a),e.provide(pp,c),e.provide(Ra,u),e.provide(Pa,d),e.provide(Ia,p),e.provide(Ii,o),e.provide(xa,s),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>a.value},$head:{get:()=>u.value},$headTitle:{get:()=>c.value},$lang:{get:()=>d.value},$page:{get:()=>i.value},$routeLocale:{get:()=>o.value},$site:{get:()=>vn.value},$siteLocale:{get:()=>s.value},$withBase:{get:()=>Me}}),{layouts:l,pageData:i,pageFrontmatter:a,pageHead:u,pageHeadTitle:c,pageLang:d,pageLayout:p,routeLocale:o,siteData:vn,siteLocaleData:s}},E1=()=>{const e=dp(),t=Pi(),n=ee([]),r=()=>{e.value.forEach(i=>{const l=w1(i);l&&n.value.push(l)})},o=()=>{document.documentElement.lang=t.value,n.value.forEach(i=>{i.parentNode===document.head&&document.head.removeChild(i)}),n.value.splice(0,n.value.length),e.value.forEach(i=>{const l=T1(i);l!==null&&(document.head.appendChild(l),n.value.push(l))})};nn(mp,o),ge(()=>{r(),o(),fe(()=>e.value,o)})},w1=([e,t,n=""])=>{const r=Object.entries(t).map(([s,a])=>ue(a)?`[${s}=${JSON.stringify(a)}]`:a===!0?`[${s}]`:"").join(""),o=`head > ${e}${r}`;return Array.from(document.querySelectorAll(o)).find(s=>s.innerText===n)||null},T1=([e,t,n])=>{if(!ue(e))return null;const r=document.createElement(e);return Li(t)&&Object.entries(t).forEach(([o,i])=>{ue(i)?r.setAttribute(o,i):i===!0&&r.setAttribute(o,"")}),ue(n)&&r.appendChild(document.createTextNode(n)),r},A1=Jd,L1=async()=>{var n;const e=A1({name:"VuepressApp",setup(){var r;E1();for(const o of xr)(r=o.setup)==null||r.call(o);return()=>[f(Ha),...xr.flatMap(({rootComponents:o=[]})=>o.map(i=>f(i)))]}}),t=g1();b1(e),y1(e,t,xr);for(const r of xr)await((n=r.enhance)==null?void 0:n.call(r,{app:e,router:t,siteData:vn}));return e.use(t),{app:e,router:t}};L1().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{h as _,ca as a,Re as b,R1 as c,L1 as createVueApp,ua as d,P1 as e,I1 as f,id as o,ot as r,_f as w}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/index.html-ZAfsJ4Zm.js","assets/plugin-vue_export-helper-x3n3nnut.js","assets/index.html-573jmd7K.js","assets/collaborative_projects.html-oDX6Yyj3.js","assets/contact.html-t3j5rpRG.js","assets/license.html-qa5ZL8TL.js","assets/thanks.html-Rcdc4mKk.js","assets/use_cases.html-ocJvSQIH.js","assets/index.html-eSaWpJP4.js","assets/vs_code_zh-ltEPcFYF.js","assets/index.html-HuxOwQjj.js","assets/index.html-eKYx7NZ-.js","assets/oncetoken.html-pNonh94A.js","assets/index.html-mfTVy5-J.js","assets/not_recommended_qq.html-VsG4mwYA.js","assets/rtmp_playback_compatibility_issues.html-fNEuKIs-.js","assets/index.html-HbKwkAxu.js","assets/compilation_instructions_for_windows_version.html-Fqb9RcQO.js","assets/install_zlmediakit_using_vcpkg.html-tFAic-l6.js","assets/install_zlmediakit_using_vcpkg_2-1HFW-yNt.js","assets/start.html-3NE1XKNN.js","assets/index.html-q26KWjF1.js","assets/config_file.html-9Xa4KaRE.js","assets/generate_ssl_self-signed_certificate_and_test.html-vsfOfJt0.js","assets/generate_ssl_self-signed_certificate_and_test-D4Sbj3Ls.js","assets/how_to_enable_https_related_functions.html-kCsRSeM_.js","assets/how_to_enable_https_related_functions_zh_10-dp8gREln.js","assets/on-demand_push_streaming.html-MaKthO1-.js","assets/on-demand_push_streaming_zh-CK4xj1dh.js","assets/on-demand_streaming.html-rje6YlXl.js","assets/on-demand_streaming_zh-h19pTlmd.js","assets/play_url_rules.html-qwXh8ebF.js","assets/playback_authentication.html-G685IkfQ.js","assets/playback_authentication_zh-gjAAn9Yd.js","assets/push_authentication.html-oaOjOtnq.js","assets/push_authentication_zh-OS4qAsfx.js","assets/push_test.html-dzpZPZVg.js","assets/push_test-WgKOKRFc.js","assets/restful_api.html-ojzFkZh8.js","assets/sequence_diagram.html-ZomyBXSL.js","assets/start_server.html-iaR_8o9S.js","assets/start_server_3-RVnx99XR.js","assets/web_hook_api.html-yTBnNLfz.js","assets/index.html-yFJZvUVc.js","assets/index.html-oytvqk6x.js","assets/how_to_create_a_live_steam.html-8eIvXeDo.js","assets/how_to_create_a_live_stream-3lt6j2fI.js","assets/index.html-2dVuyDsF.js","assets/hls_high_performance_journey.html-TZBUS8og.js","assets/rtsp_performance_optimization.html-oVbOTUnc.js","assets/index.html-bV4_5Cgh.js","assets/exclusive_features.html-vnOZwbaY.js","assets/high_concurrency_implementation_principle.html-4A4gHD8-.js","assets/introduction_to_streaming_media_related_technologies.html-jd9Zwqd3.js","assets/rtsp_push_process.html-5BXn5aZU.js","assets/the_nature_of_live_broadcast_delay.html-uU6VtFJR.js","assets/index.html-zqagt7gM.js","assets/dependency.html-8pevclZ9.js","assets/rtmp_support_for_h265_and_opus.html-a8ynJZrM.js","assets/video_conferencing_related_resources.html-pKTKpfIG.js","assets/zltoolkit_source_code_study_notes.html-X78_rEP2.js","assets/index.html-GZbomDA_.js","assets/benchmark.html-uo75e0CN.js","assets/delay_test.html-54KDTai-.js","assets/how_to_test_delay.html-IVFxpLiU.js","assets/online_test.html-XBO_M5q9.js","assets/performance_testing.html-oRt7mc3-.js","assets/rtmp_pull_stream_performance_test.html--AjSCAb6.js","assets/rtmp_push_stream_performance_test.html-YYy_fCwZ.js","assets/rtsp_pull_stream_performance_test.html-78O1mXMt.js","assets/rtsp_push_stream_performance_test.html-x031EUqu.js","assets/index.html-WES3IN89.js","assets/collaborative_projects.html-RO-575me.js","assets/contact.html-KwkduCZ8.js","assets/license.html-Pr361WBx.js","assets/thanks.html-FSlc_7wN.js","assets/use_cases.html-SNBvnwbO.js","assets/index.html-DgVFBk67.js","assets/gb28181_sip_signaling_packet_capture.html-qexCXJj0.js","assets/how_to_use_device_id_as_stream_id.html-5dSEoDq7.js","assets/how_to_use_device_id_as_stream_id_6-sfQ1h9Fe.js","assets/push_streaming.html-JqhELNzW.js","assets/gb28181_push_streaming_4-qWTnfswt.js","assets/index.html-hehzhF2d.js","assets/webrtc_compilation_and_use.html-ifqCJvPh.js","assets/webrtc_signaling_interaction_format.html-6nmFHnea.js","assets/index.html-gSpoAwKN.js","assets/oncetoken.html-KoxT1WJ9.js","assets/index.html-7yq99xxh.js","assets/not_recommended_qq.html-sTyZQjjb.js","assets/rtmp_playback_compatibility_issues.html-NhoJKAeu.js","assets/index.html-7fV02DDU.js","assets/compilation_instructions_for_windows_version.html-6NKchaAm.js","assets/install_zlmediakit_using_vcpkg.html-uFx2Qn-i.js","assets/start.html-zUlbdSif.js","assets/index.html-bCrAKGJB.js","assets/config_file.html-d15slbyo.js","assets/generate_ssl_self-signed_certificate_and_test.html-O1ld5VEe.js","assets/how_to_enable_https_related_functions.html-9i2jCwZ3.js","assets/on-demand_push_streaming.html-NzG-8Joc.js","assets/on-demand_streaming.html-VwCpE1JK.js","assets/play_url_rules.html-GF2zY0uE.js","assets/playback_authentication.html-AsKcZv3x.js","assets/push_authentication.html-_wCQpvPn.js","assets/push_test.html-n5-72YJ1.js","assets/restful_api.html-4yfdZ-oL.js","assets/sequence_diagram.html-pEkXoaBs.js","assets/start_server.html-JlFNgj-K.js","assets/web_hook_api.html-4eZenSeJ.js","assets/index.html-4AoKvxIs.js","assets/index.html-DoJnvppU.js","assets/how_to_create_a_live_steam.html-j8XiE3eA.js","assets/index.html-ldqAHXhl.js","assets/hls_high_performance_journey.html-awr83uM9.js","assets/rtsp_performance_optimization.html-jqJ1nUFL.js","assets/index.html-QokpAUdW.js","assets/exclusive_features.html-oz4V5ANz.js","assets/high_concurrency_implementation_principle.html-T5LE0Lmi.js","assets/introduction_to_streaming_media_related_technologies.html-Zd-Cue_9.js","assets/rtsp_push_process.html-ZQbam1ye.js","assets/the_nature_of_live_broadcast_delay.html-bjchJaZD.js","assets/index.html-O3xmvgtm.js","assets/dependency.html-jVZ5GKgo.js","assets/rtmp_support_for_h265_and_opus.html-Ja2UBaOZ.js","assets/video_conferencing_related_resources.html-JT3FqRo7.js","assets/zltoolkit_source_code_study_notes.html-3EZc_Boy.js","assets/index.html-vj58oyHa.js","assets/benchmark.html-ESZ9k3Ep.js","assets/delay_test.html-YaKGDOck.js","assets/how_to_test_delay.html-r6GaiRI_.js","assets/online_test.html-X04CV8WE.js","assets/performance_testing.html-RUXKMema.js","assets/rtmp_pull_stream_performance_test.html-UV-5J8vg.js","assets/rtmp_push_stream_performance_test.html-VzlWIKzU.js","assets/rtsp_pull_stream_performance_test.html-waVb8kwe.js","assets/rtsp_push_stream_performance_test.html-YskCMXrz.js","assets/gb28181_sip_signaling_packet_capture.html-JsEmgfbo.js","assets/how_to_use_device_id_as_stream_id.html-CzzjrtPS.js","assets/push_streaming.html-MRQ3SR8R.js","assets/index.html-DydUlsO3.js","assets/webrtc_compilation_and_use.html-Wir4WmSI.js","assets/webrtc_signaling_interaction_format.html-KYtlkjHG.js","assets/404.html-7HzFSFl7.js","assets/index.html-Q3P2N4-E.js","assets/index.html-_FbUjyNF.js","assets/index.html-yYLEULdt.js","assets/index.html-uBldBXxN.js","assets/index.html-8LlBfneP.js","assets/index.html-c1k5quBE.js","assets/index.html-qXcCxmIQ.js","assets/index.html-v6csxUL5.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} diff --git a/assets/app-RP31lnfq.js b/assets/app-RP31lnfq.js deleted file mode 100644 index 652e74b..0000000 --- a/assets/app-RP31lnfq.js +++ /dev/null @@ -1,14 +0,0 @@ -function ri(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}const Ee={},gn=[],bt=()=>{},vu=()=>!1,ur=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),oi=e=>e.startsWith("onUpdate:"),xe=Object.assign,ii=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},mu=Object.prototype.hasOwnProperty,ce=(e,t)=>mu.call(e,t),X=Array.isArray,Kn=e=>Gr(e)==="[object Map]",_u=e=>Gr(e)==="[object Set]",oe=e=>typeof e=="function",ue=e=>typeof e=="string",Kr=e=>typeof e=="symbol",Te=e=>e!==null&&typeof e=="object",ml=e=>(Te(e)||oe(e))&&oe(e.then)&&oe(e.catch),gu=Object.prototype.toString,Gr=e=>gu.call(e),bu=e=>Gr(e).slice(8,-1),yu=e=>Gr(e)==="[object Object]",ai=e=>ue(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Gn=ri(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Yr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Eu=/-(\w)/g,ot=Yr(e=>e.replace(Eu,(t,n)=>n?n.toUpperCase():"")),wu=/\B([A-Z])/g,Cn=Yr(e=>e.replace(wu,"-$1").toLowerCase()),fr=Yr(e=>e.charAt(0).toUpperCase()+e.slice(1)),uo=Yr(e=>e?`on${fr(e)}`:""),rn=(e,t)=>!Object.is(e,t),fo=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Tu=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Au=e=>{const t=ue(e)?Number(e):NaN;return isNaN(t)?e:t};let qi;const So=()=>qi||(qi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function li(e){if(X(e)){const t={};for(let n=0;n{if(n){const r=n.split(Pu);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function si(e){let t="";if(ue(e))t=e;else if(X(e))for(let n=0;n{const t=new Set(e);return t.w=0,t.n=0,t},bl=e=>(e.w&Wt)>0,yl=e=>(e.n&Wt)>0,Su=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(u==="length"||!Kr(u)&&u>=s)&&l.push(c)})}else switch(n!==void 0&&l.push(a.get(n)),t){case"add":X(e)?ai(n)&&l.push(a.get("length")):(l.push(a.get(Xt)),Kn(e)&&l.push(a.get(Mo)));break;case"delete":X(e)||(l.push(a.get(Xt)),Kn(e)&&l.push(a.get(Mo)));break;case"set":Kn(e)&&l.push(a.get(Xt));break}if(l.length===1)l[0]&&$o(l[0]);else{const s=[];for(const c of l)c&&s.push(...c);$o(ci(s))}}function $o(e,t){const n=X(e)?e:[...e];for(const r of n)r.computed&&Ki(r);for(const r of n)r.computed||Ki(r)}function Ki(e,t){(e!==ut||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Mu(e,t){var n;return(n=Mr.get(e))==null?void 0:n.get(t)}const $u=ri("__proto__,__v_isRef,__isVue"),Tl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Kr)),Gi=Nu();function Nu(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=ae(this);for(let i=0,a=this.length;i{e[t]=function(...n){Dn();const r=ae(this)[t].apply(this,n);return Sn(),r}}),e}function zu(e){const t=ae(this);return He(t,"has",e),t.hasOwnProperty(e)}class Al{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,r){const o=this._isReadonly,i=this._shallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return i;if(n==="__v_raw")return r===(o?i?Ju:Il:i?Rl:Pl).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const a=X(t);if(!o){if(a&&ce(Gi,n))return Reflect.get(Gi,n,r);if(n==="hasOwnProperty")return zu}const l=Reflect.get(t,n,r);return(Kr(n)?Tl.has(n):$u(n))||(o||He(t,"get",n),i)?l:Ce(l)?a&&ai(n)?l:l.value:Te(l)?o?on(l):dr(l):l}}class Ll extends Al{constructor(t=!1){super(!1,t)}set(t,n,r,o){let i=t[n];if(Tn(i)&&Ce(i)&&!Ce(r))return!1;if(!this._shallow&&(!$r(r)&&!Tn(r)&&(i=ae(i),r=ae(r)),!X(t)&&Ce(i)&&!Ce(r)))return i.value=r,!0;const a=X(t)&&ai(n)?Number(n)e,Zr=e=>Reflect.getPrototypeOf(e);function yr(e,t,n=!1,r=!1){e=e.__v_raw;const o=ae(e),i=ae(t);n||(rn(t,i)&&He(o,"get",t),He(o,"get",i));const{has:a}=Zr(o),l=r?fi:n?hi:nr;if(a.call(o,t))return l(e.get(t));if(a.call(o,i))return l(e.get(i));e!==o&&e.get(t)}function Er(e,t=!1){const n=this.__v_raw,r=ae(n),o=ae(e);return t||(rn(e,o)&&He(r,"has",e),He(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function wr(e,t=!1){return e=e.__v_raw,!t&&He(ae(e),"iterate",Xt),Reflect.get(e,"size",e)}function Yi(e){e=ae(e);const t=ae(this);return Zr(t).has.call(t,e)||(t.add(e),It(t,"add",e,e)),this}function Zi(e,t){t=ae(t);const n=ae(this),{has:r,get:o}=Zr(n);let i=r.call(n,e);i||(e=ae(e),i=r.call(n,e));const a=o.call(n,e);return n.set(e,t),i?rn(t,a)&&It(n,"set",e,t):It(n,"add",e,t),this}function Qi(e){const t=ae(this),{has:n,get:r}=Zr(t);let o=n.call(t,e);o||(e=ae(e),o=n.call(t,e)),r&&r.call(t,e);const i=t.delete(e);return o&&It(t,"delete",e,void 0),i}function Ji(){const e=ae(this),t=e.size!==0,n=e.clear();return t&&It(e,"clear",void 0,void 0),n}function Tr(e,t){return function(r,o){const i=this,a=i.__v_raw,l=ae(a),s=t?fi:e?hi:nr;return!e&&He(l,"iterate",Xt),a.forEach((c,u)=>r.call(o,s(c),s(u),i))}}function Ar(e,t,n){return function(...r){const o=this.__v_raw,i=ae(o),a=Kn(i),l=e==="entries"||e===Symbol.iterator&&a,s=e==="keys"&&a,c=o[e](...r),u=n?fi:t?hi:nr;return!t&&He(i,"iterate",s?Mo:Xt),{next(){const{value:d,done:p}=c.next();return p?{value:d,done:p}:{value:l?[u(d[0]),u(d[1])]:u(d),done:p}},[Symbol.iterator](){return this}}}}function St(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Wu(){const e={get(i){return yr(this,i)},get size(){return wr(this)},has:Er,add:Yi,set:Zi,delete:Qi,clear:Ji,forEach:Tr(!1,!1)},t={get(i){return yr(this,i,!1,!0)},get size(){return wr(this)},has:Er,add:Yi,set:Zi,delete:Qi,clear:Ji,forEach:Tr(!1,!0)},n={get(i){return yr(this,i,!0)},get size(){return wr(this,!0)},has(i){return Er.call(this,i,!0)},add:St("add"),set:St("set"),delete:St("delete"),clear:St("clear"),forEach:Tr(!0,!1)},r={get(i){return yr(this,i,!0,!0)},get size(){return wr(this,!0)},has(i){return Er.call(this,i,!0)},add:St("add"),set:St("set"),delete:St("delete"),clear:St("clear"),forEach:Tr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Ar(i,!1,!1),n[i]=Ar(i,!0,!1),t[i]=Ar(i,!1,!0),r[i]=Ar(i,!0,!0)}),[e,n,t,r]}const[qu,Uu,Ku,Gu]=Wu();function di(e,t){const n=t?e?Gu:Ku:e?Uu:qu;return(r,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(ce(n,o)&&o in r?n:r,o,i)}const Yu={get:di(!1,!1)},Zu={get:di(!1,!0)},Qu={get:di(!0,!1)},Pl=new WeakMap,Rl=new WeakMap,Il=new WeakMap,Ju=new WeakMap;function Xu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ef(e){return e.__v_skip||!Object.isExtensible(e)?0:Xu(bu(e))}function dr(e){return Tn(e)?e:pi(e,!1,Fu,Yu,Pl)}function Ol(e){return pi(e,!1,ju,Zu,Rl)}function on(e){return pi(e,!0,Hu,Qu,Il)}function pi(e,t,n,r,o){if(!Te(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const a=ef(e);if(a===0)return e;const l=new Proxy(e,a===2?r:n);return o.set(e,l),l}function bn(e){return Tn(e)?bn(e.__v_raw):!!(e&&e.__v_isReactive)}function Tn(e){return!!(e&&e.__v_isReadonly)}function $r(e){return!!(e&&e.__v_isShallow)}function xl(e){return bn(e)||Tn(e)}function ae(e){const t=e&&e.__v_raw;return t?ae(t):e}function kl(e){return Vr(e,"__v_skip",!0),e}const nr=e=>Te(e)?dr(e):e,hi=e=>Te(e)?on(e):e;function vi(e){Ht&&ut&&(e=ae(e),wl(e.dep||(e.dep=ci())))}function mi(e,t){e=ae(e);const n=e.dep;n&&$o(n)}function Ce(e){return!!(e&&e.__v_isRef===!0)}function ee(e){return Cl(e,!1)}function it(e){return Cl(e,!0)}function Cl(e,t){return Ce(e)?e:new tf(e,t)}class tf{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:ae(t),this._value=n?t:nr(t)}get value(){return vi(this),this._value}set value(t){const n=this.__v_isShallow||$r(t)||Tn(t);t=n?t:ae(t),rn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:nr(t),mi(this))}}function en(e){return Ce(e)?e.value:e}const nf={get:(e,t,n)=>en(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ce(o)&&!Ce(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Dl(e){return bn(e)?e:new Proxy(e,nf)}class rf{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>vi(this),()=>mi(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function Sl(e){return new rf(e)}class of{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Mu(ae(this._object),this._key)}}class af{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Qr(e,t,n){return Ce(e)?e:oe(e)?new af(e):Te(e)&&arguments.length>1?lf(e,t,n):ee(e)}function lf(e,t,n){const r=e[t];return Ce(r)?r:new of(e,t,n)}class sf{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new ui(t,()=>{this._dirty||(this._dirty=!0,mi(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=ae(this);return vi(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function cf(e,t,n=!1){let r,o;const i=oe(e);return i?(r=e,o=bt):(r=e.get,o=e.set),new sf(r,o,i||!o,n)}function jt(e,t,n,r){let o;try{o=r?e(...r):e()}catch(i){pr(i,t,n)}return o}function tt(e,t,n,r){if(oe(e)){const i=jt(e,t,n,r);return i&&ml(i)&&i.catch(a=>{pr(a,t,n)}),i}const o=[];for(let i=0;i>>1,o=Se[r],i=or(o);i_t&&Se.splice(t,1)}function pf(e){X(e)?yn.push(...e):(!Pt||!Pt.includes(e,e.allowRecurse?Yt+1:Yt))&&yn.push(e),Ml()}function Xi(e,t,n=rr?_t+1:0){for(;nor(n)-or(r)),Yt=0;Yte.id==null?1/0:e.id,hf=(e,t)=>{const n=or(e)-or(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function $l(e){No=!1,rr=!0,Se.sort(hf);try{for(_t=0;_tue(m)?m.trim():m)),d&&(o=n.map(Tu))}let l,s=r[l=uo(t)]||r[l=uo(ot(t))];!s&&i&&(s=r[l=uo(Cn(t))]),s&&tt(s,e,6,o);const c=r[l+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,tt(c,e,6,o)}}function Nl(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const i=e.emits;let a={},l=!1;if(!oe(e)){const s=c=>{const u=Nl(c,t,!0);u&&(l=!0,xe(a,u))};!n&&t.mixins.length&&t.mixins.forEach(s),e.extends&&s(e.extends),e.mixins&&e.mixins.forEach(s)}return!i&&!l?(Te(e)&&r.set(e,null),null):(X(i)?i.forEach(s=>a[s]=null):xe(a,i),Te(e)&&r.set(e,a),a)}function Xr(e,t){return!e||!ur(t)?!1:(t=t.slice(2).replace(/Once$/,""),ce(e,t[0].toLowerCase()+t.slice(1))||ce(e,Cn(t))||ce(e,t))}let Xe=null,zl=null;function zr(e){const t=Xe;return Xe=e,zl=e&&e.type.__scopeId||null,t}function mf(e,t=Xe,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&fa(-1);const i=zr(t);let a;try{a=e(...o)}finally{zr(i),r._d&&fa(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function po(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:i,propsOptions:[a],slots:l,attrs:s,emit:c,render:u,renderCache:d,data:p,setupState:m,ctx:g,inheritAttrs:w}=e;let T,y;const P=zr(e);try{if(n.shapeFlag&4){const A=o||r,M=A;T=ct(u.call(M,A,d,i,m,p,g)),y=s}else{const A=t;T=ct(A.length>1?A(i,{attrs:s,slots:l,emit:c}):A(i,null)),y=t.props?s:_f(s)}}catch(A){Jn.length=0,pr(A,e,1),T=Le(rt)}let b=T;if(y&&w!==!1){const A=Object.keys(y),{shapeFlag:M}=b;A.length&&M&7&&(a&&A.some(oi)&&(y=gf(y,a)),b=qt(b,y))}return n.dirs&&(b=qt(b),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&(b.transition=n.transition),T=b,zr(P),T}const _f=e=>{let t;for(const n in e)(n==="class"||n==="style"||ur(n))&&((t||(t={}))[n]=e[n]);return t},gf=(e,t)=>{const n={};for(const r in e)(!oi(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function bf(e,t,n){const{props:r,children:o,component:i}=e,{props:a,children:l,patchFlag:s}=t,c=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&s>=0){if(s&1024)return!0;if(s&16)return r?ea(r,a,c):!!a;if(s&8){const u=t.dynamicProps;for(let d=0;de.__isSuspense;function Fl(e,t){t&&t.pendingBranch?X(e)?t.effects.push(...e):t.effects.push(e):pf(e)}function Hl(e,t){return gi(e,null,t)}const Lr={};function fe(e,t,n){return gi(e,t,n)}function gi(e,t,{immediate:n,deep:r,flush:o,onTrack:i,onTrigger:a}=Ee){var l;const s=gl()===((l=ke)==null?void 0:l.scope)?ke:null;let c,u=!1,d=!1;if(Ce(e)?(c=()=>e.value,u=$r(e)):bn(e)?(c=()=>e,r=!0):X(e)?(d=!0,u=e.some(A=>bn(A)||$r(A)),c=()=>e.map(A=>{if(Ce(A))return A.value;if(bn(A))return hn(A);if(oe(A))return jt(A,s,2)})):oe(e)?t?c=()=>jt(e,s,2):c=()=>{if(!(s&&s.isUnmounted))return p&&p(),tt(e,s,3,[m])}:c=bt,t&&r){const A=c;c=()=>hn(A())}let p,m=A=>{p=P.onStop=()=>{jt(A,s,4),p=P.onStop=void 0}},g;if(Pn)if(m=bt,t?n&&tt(t,s,3,[c(),d?[]:void 0,m]):c(),o==="sync"){const A=md();g=A.__watcherHandles||(A.__watcherHandles=[])}else return bt;let w=d?new Array(e.length).fill(Lr):Lr;const T=()=>{if(P.active)if(t){const A=P.run();(r||u||(d?A.some((M,k)=>rn(M,w[k])):rn(A,w)))&&(p&&p(),tt(t,s,3,[A,w===Lr?void 0:d&&w[0]===Lr?[]:w,m]),w=A)}else P.run()};T.allowRecurse=!!t;let y;o==="sync"?y=T:o==="post"?y=()=>Be(T,s&&s.suspense):(T.pre=!0,s&&(T.id=s.uid),y=()=>Jr(T));const P=new ui(c,y);t?n?T():w=P.run():o==="post"?Be(P.run.bind(P),s&&s.suspense):P.run();const b=()=>{P.stop(),s&&s.scope&&ii(s.scope.effects,P)};return g&&g.push(b),b}function Af(e,t,n){const r=this.proxy,o=ue(e)?e.includes(".")?jl(r,e):()=>r[e]:e.bind(r,r);let i;oe(t)?i=t:(i=t.handler,n=t);const a=ke;Ln(this);const l=gi(o,i.bind(r),n);return a?Ln(a):nn(),l}function jl(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{hn(n,t)});else if(yu(e))for(const n in e)hn(e[n],t);return e}function mt(e,t,n,r){const o=e.dirs,i=t&&t.dirs;for(let a=0;a{e.isMounted=!0}),yi(()=>{e.isUnmounting=!0}),e}const Ze=[Function,Array],ql={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ze,onEnter:Ze,onAfterEnter:Ze,onEnterCancelled:Ze,onBeforeLeave:Ze,onLeave:Ze,onAfterLeave:Ze,onLeaveCancelled:Ze,onBeforeAppear:Ze,onAppear:Ze,onAfterAppear:Ze,onAppearCancelled:Ze},Lf={name:"BaseTransition",props:ql,setup(e,{slots:t}){const n=Vn(),r=Wl();let o;return()=>{const i=t.default&&bi(t.default(),!0);if(!i||!i.length)return;let a=i[0];if(i.length>1){for(const w of i)if(w.type!==rt){a=w;break}}const l=ae(e),{mode:s}=l;if(r.isLeaving)return ho(a);const c=na(a);if(!c)return ho(a);const u=ir(c,l,r,n);ar(c,u);const d=n.subTree,p=d&&na(d);let m=!1;const{getTransitionKey:g}=c.type;if(g){const w=g();o===void 0?o=w:w!==o&&(o=w,m=!0)}if(p&&p.type!==rt&&(!Zt(c,p)||m)){const w=ir(p,l,r,n);if(ar(p,w),s==="out-in")return r.isLeaving=!0,w.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},ho(a);s==="in-out"&&c.type!==rt&&(w.delayLeave=(T,y,P)=>{const b=Ul(r,p);b[String(p.key)]=p,T[zt]=()=>{y(),T[zt]=void 0,delete u.delayedLeave},u.delayedLeave=P})}return a}}},Pf=Lf;function Ul(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function ir(e,t,n,r){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:s,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:d,onLeave:p,onAfterLeave:m,onLeaveCancelled:g,onBeforeAppear:w,onAppear:T,onAfterAppear:y,onAppearCancelled:P}=t,b=String(e.key),A=Ul(n,e),M=(V,S)=>{V&&tt(V,r,9,S)},k=(V,S)=>{const B=S[1];M(V,S),X(V)?V.every(Z=>Z.length<=1)&&B():V.length<=1&&B()},N={mode:i,persisted:a,beforeEnter(V){let S=l;if(!n.isMounted)if(o)S=w||l;else return;V[zt]&&V[zt](!0);const B=A[b];B&&Zt(e,B)&&B.el[zt]&&B.el[zt](),M(S,[V])},enter(V){let S=s,B=c,Z=u;if(!n.isMounted)if(o)S=T||s,B=y||c,Z=P||u;else return;let H=!1;const te=V[Pr]=we=>{H||(H=!0,we?M(Z,[V]):M(B,[V]),N.delayedLeave&&N.delayedLeave(),V[Pr]=void 0)};S?k(S,[V,te]):te()},leave(V,S){const B=String(e.key);if(V[Pr]&&V[Pr](!0),n.isUnmounting)return S();M(d,[V]);let Z=!1;const H=V[zt]=te=>{Z||(Z=!0,S(),te?M(g,[V]):M(m,[V]),V[zt]=void 0,A[B]===e&&delete A[B])};A[B]=e,p?k(p,[V,H]):H()},clone(V){return ir(V,t,n,r)}};return N}function ho(e){if(hr(e))return e=qt(e),e.children=null,e}function na(e){return hr(e)?e.children?e.children[0]:void 0:e}function ar(e,t){e.shapeFlag&6&&e.component?ar(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function bi(e,t=!1,n){let r=[],o=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function L(e){oe(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:i,suspensible:a=!0,onError:l}=e;let s=null,c,u=0;const d=()=>(u++,s=null,p()),p=()=>{let m;return s||(m=s=t().catch(g=>{if(g=g instanceof Error?g:new Error(String(g)),l)return new Promise((w,T)=>{l(g,()=>w(d()),()=>T(g),u+1)});throw g}).then(g=>m!==s&&s?s:(g&&(g.__esModule||g[Symbol.toStringTag]==="Module")&&(g=g.default),c=g,g)))};return U({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return c},setup(){const m=ke;if(c)return()=>vo(c,m);const g=P=>{s=null,pr(P,m,13,!r)};if(a&&m.suspense||Pn)return p().then(P=>()=>vo(P,m)).catch(P=>(g(P),()=>r?Le(r,{error:P}):null));const w=ee(!1),T=ee(),y=ee(!!o);return o&&setTimeout(()=>{y.value=!1},o),i!=null&&setTimeout(()=>{if(!w.value&&!T.value){const P=new Error(`Async component timed out after ${i}ms.`);g(P),T.value=P}},i),p().then(()=>{w.value=!0,m.parent&&hr(m.parent.vnode)&&Jr(m.parent.update)}).catch(P=>{g(P),T.value=P}),()=>{if(w.value&&c)return vo(c,m);if(T.value&&r)return Le(r,{error:T.value});if(n&&!y.value)return Le(n)}}})}function vo(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,a=Le(e,r,o);return a.ref=n,a.ce=i,delete t.vnode.ce,a}const hr=e=>e.type.__isKeepAlive;function Rf(e,t){Kl(e,"a",t)}function If(e,t){Kl(e,"da",t)}function Kl(e,t,n=ke){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(eo(t,r,n),n){let o=n.parent;for(;o&&o.parent;)hr(o.parent.vnode)&&Of(r,t,n,o),o=o.parent}}function Of(e,t,n,r){const o=eo(t,e,r,!0);vr(()=>{ii(r[t],o)},n)}function eo(e,t,n=ke,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...a)=>{if(n.isUnmounted)return;Dn(),Ln(n);const l=tt(t,n,e,a);return nn(),Sn(),l});return r?o.unshift(i):o.push(i),i}}const Dt=e=>(t,n=ke)=>(!Pn||e==="sp")&&eo(e,(...r)=>t(...r),n),xf=Dt("bm"),ge=Dt("m"),kf=Dt("bu"),Gl=Dt("u"),yi=Dt("bum"),vr=Dt("um"),Cf=Dt("sp"),Df=Dt("rtg"),Sf=Dt("rtc");function Vf(e,t=ke){eo("ec",e,t)}const zo=e=>e?ss(e)?Li(e)||e.proxy:zo(e.parent):null,Zn=xe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>zo(e.parent),$root:e=>zo(e.root),$emit:e=>e.emit,$options:e=>Ei(e),$forceUpdate:e=>e.f||(e.f=()=>Jr(e.update)),$nextTick:e=>e.n||(e.n=an.bind(e.proxy)),$watch:e=>Af.bind(e)}),mo=(e,t)=>e!==Ee&&!e.__isScriptSetup&&ce(e,t),Mf={get({_:e},t){const{ctx:n,setupState:r,data:o,props:i,accessCache:a,type:l,appContext:s}=e;let c;if(t[0]!=="$"){const m=a[t];if(m!==void 0)switch(m){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(mo(r,t))return a[t]=1,r[t];if(o!==Ee&&ce(o,t))return a[t]=2,o[t];if((c=e.propsOptions[0])&&ce(c,t))return a[t]=3,i[t];if(n!==Ee&&ce(n,t))return a[t]=4,n[t];Bo&&(a[t]=0)}}const u=Zn[t];let d,p;if(u)return t==="$attrs"&&He(e,"get",t),u(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(n!==Ee&&ce(n,t))return a[t]=4,n[t];if(p=s.config.globalProperties,ce(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return mo(o,t)?(o[t]=n,!0):r!==Ee&&ce(r,t)?(r[t]=n,!0):ce(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:i}},a){let l;return!!n[a]||e!==Ee&&ce(e,a)||mo(t,a)||(l=i[0])&&ce(l,a)||ce(r,a)||ce(Zn,a)||ce(o.config.globalProperties,a)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ce(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ra(e){return X(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Bo=!0;function $f(e){const t=Ei(e),n=e.proxy,r=e.ctx;Bo=!1,t.beforeCreate&&oa(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:a,watch:l,provide:s,inject:c,created:u,beforeMount:d,mounted:p,beforeUpdate:m,updated:g,activated:w,deactivated:T,beforeDestroy:y,beforeUnmount:P,destroyed:b,unmounted:A,render:M,renderTracked:k,renderTriggered:N,errorCaptured:V,serverPrefetch:S,expose:B,inheritAttrs:Z,components:H,directives:te,filters:we}=t;if(c&&Nf(c,r,null),a)for(const ne in a){const K=a[ne];oe(K)&&(r[ne]=K.bind(n))}if(o){const ne=o.call(n,n);Te(ne)&&(e.data=dr(ne))}if(Bo=!0,i)for(const ne in i){const K=i[ne],Re=oe(K)?K.bind(n,n):oe(K.get)?K.get.bind(n,n):bt,pt=!oe(K)&&oe(K.set)?K.set.bind(n):bt,Ye=I({get:Re,set:pt});Object.defineProperty(r,ne,{enumerable:!0,configurable:!0,get:()=>Ye.value,set:De=>Ye.value=De})}if(l)for(const ne in l)Yl(l[ne],r,n,ne);if(s){const ne=oe(s)?s.call(n):s;Reflect.ownKeys(ne).forEach(K=>{tn(K,ne[K])})}u&&oa(u,e,"c");function q(ne,K){X(K)?K.forEach(Re=>ne(Re.bind(n))):K&&ne(K.bind(n))}if(q(xf,d),q(ge,p),q(kf,m),q(Gl,g),q(Rf,w),q(If,T),q(Vf,V),q(Sf,k),q(Df,N),q(yi,P),q(vr,A),q(Cf,S),X(B))if(B.length){const ne=e.exposed||(e.exposed={});B.forEach(K=>{Object.defineProperty(ne,K,{get:()=>n[K],set:Re=>n[K]=Re})})}else e.exposed||(e.exposed={});M&&e.render===bt&&(e.render=M),Z!=null&&(e.inheritAttrs=Z),H&&(e.components=H),te&&(e.directives=te)}function Nf(e,t,n=bt){X(e)&&(e=Fo(e));for(const r in e){const o=e[r];let i;Te(o)?"default"in o?i=_e(o.from||r,o.default,!0):i=_e(o.from||r):i=_e(o),Ce(i)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[r]=i}}function oa(e,t,n){tt(X(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Yl(e,t,n,r){const o=r.includes(".")?jl(n,r):()=>n[r];if(ue(e)){const i=t[e];oe(i)&&fe(o,i)}else if(oe(e))fe(o,e.bind(n));else if(Te(e))if(X(e))e.forEach(i=>Yl(i,t,n,r));else{const i=oe(e.handler)?e.handler.bind(n):t[e.handler];oe(i)&&fe(o,i,e)}}function Ei(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,l=i.get(t);let s;return l?s=l:!o.length&&!n&&!r?s=t:(s={},o.length&&o.forEach(c=>Br(s,c,a,!0)),Br(s,t,a)),Te(t)&&i.set(t,s),s}function Br(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&Br(e,i,n,!0),o&&o.forEach(a=>Br(e,a,n,!0));for(const a in t)if(!(r&&a==="expose")){const l=zf[a]||n&&n[a];e[a]=l?l(e[a],t[a]):t[a]}return e}const zf={data:ia,props:aa,emits:aa,methods:Un,computed:Un,beforeCreate:$e,created:$e,beforeMount:$e,mounted:$e,beforeUpdate:$e,updated:$e,beforeDestroy:$e,beforeUnmount:$e,destroyed:$e,unmounted:$e,activated:$e,deactivated:$e,errorCaptured:$e,serverPrefetch:$e,components:Un,directives:Un,watch:Ff,provide:ia,inject:Bf};function ia(e,t){return t?e?function(){return xe(oe(e)?e.call(this,this):e,oe(t)?t.call(this,this):t)}:t:e}function Bf(e,t){return Un(Fo(e),Fo(t))}function Fo(e){if(X(e)){const t={};for(let n=0;n1)return n&&oe(t)?t.call(r&&r.proxy):t}}function Wf(e,t,n,r=!1){const o={},i={};Vr(i,to,1),e.propsDefaults=Object.create(null),Ql(e,t,o,i);for(const a in e.propsOptions[0])a in o||(o[a]=void 0);n?e.props=r?o:Ol(o):e.type.props?e.props=o:e.props=i,e.attrs=i}function qf(e,t,n,r){const{props:o,attrs:i,vnode:{patchFlag:a}}=e,l=ae(o),[s]=e.propsOptions;let c=!1;if((r||a>0)&&!(a&16)){if(a&8){const u=e.vnode.dynamicProps;for(let d=0;d{s=!0;const[p,m]=Jl(d,t,!0);xe(a,p),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!i&&!s)return Te(e)&&r.set(e,gn),gn;if(X(i))for(let u=0;u-1,m[1]=w<0||g-1||ce(m,"default"))&&l.push(d)}}}const c=[a,l];return Te(e)&&r.set(e,c),c}function la(e){return e[0]!=="$"}function sa(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function ca(e,t){return sa(e)===sa(t)}function ua(e,t){return X(t)?t.findIndex(n=>ca(n,e)):oe(t)&&ca(t,e)?0:-1}const Xl=e=>e[0]==="_"||e==="$stable",wi=e=>X(e)?e.map(ct):[ct(e)],Uf=(e,t,n)=>{if(t._n)return t;const r=mf((...o)=>wi(t(...o)),n);return r._c=!1,r},es=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Xl(o))continue;const i=e[o];if(oe(i))t[o]=Uf(o,i,r);else if(i!=null){const a=wi(i);t[o]=()=>a}}},ts=(e,t)=>{const n=wi(t);e.slots.default=()=>n},Kf=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=ae(t),Vr(t,"_",n)):es(t,e.slots={})}else e.slots={},t&&ts(e,t);Vr(e.slots,to,1)},Gf=(e,t,n)=>{const{vnode:r,slots:o}=e;let i=!0,a=Ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(xe(o,t),!n&&l===1&&delete o._):(i=!t.$stable,es(t,o)),a=t}else t&&(ts(e,t),a={default:1});if(i)for(const l in o)!Xl(l)&&a[l]==null&&delete o[l]};function Hr(e,t,n,r,o=!1){if(X(e)){e.forEach((p,m)=>Hr(p,t&&(X(t)?t[m]:t),n,r,o));return}if(Yn(r)&&!o)return;const i=r.shapeFlag&4?Li(r.component)||r.component.proxy:r.el,a=o?null:i,{i:l,r:s}=e,c=t&&t.r,u=l.refs===Ee?l.refs={}:l.refs,d=l.setupState;if(c!=null&&c!==s&&(ue(c)?(u[c]=null,ce(d,c)&&(d[c]=null)):Ce(c)&&(c.value=null)),oe(s))jt(s,l,12,[a,u]);else{const p=ue(s),m=Ce(s);if(p||m){const g=()=>{if(e.f){const w=p?ce(d,s)?d[s]:u[s]:s.value;o?X(w)&&ii(w,i):X(w)?w.includes(i)||w.push(i):p?(u[s]=[i],ce(d,s)&&(d[s]=u[s])):(s.value=[i],e.k&&(u[e.k]=s.value))}else p?(u[s]=a,ce(d,s)&&(d[s]=a)):m&&(s.value=a,e.k&&(u[e.k]=a))};a?(g.id=-1,Be(g,n)):g()}}}let Vt=!1;const Rr=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Ir=e=>e.nodeType===8;function Yf(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:i,parentNode:a,remove:l,insert:s,createComment:c}}=e,u=(b,A)=>{if(!A.hasChildNodes()){n(null,b,A),Nr(),A._vnode=b;return}Vt=!1,d(A.firstChild,b,null,null,null),Nr(),A._vnode=b,Vt&&console.error("Hydration completed but contains mismatches.")},d=(b,A,M,k,N,V=!1)=>{const S=Ir(b)&&b.data==="[",B=()=>w(b,A,M,k,N,S),{type:Z,ref:H,shapeFlag:te,patchFlag:we}=A;let ye=b.nodeType;A.el=b,we===-2&&(V=!1,A.dynamicChildren=null);let q=null;switch(Z){case An:ye!==3?A.children===""?(s(A.el=o(""),a(b),b),q=b):q=B():(b.data!==A.children&&(Vt=!0,b.data=A.children),q=i(b));break;case rt:P(b)?(q=i(b),y(A.el=b.content.firstChild,b,M)):ye!==8||S?q=B():q=i(b);break;case Qn:if(S&&(b=i(b),ye=b.nodeType),ye===1||ye===3){q=b;const ne=!A.children.length;for(let K=0;K{V=V||!!A.dynamicChildren;const{type:S,props:B,patchFlag:Z,shapeFlag:H,dirs:te,transition:we}=A,ye=S==="input"||S==="option";if(ye||Z!==-1){if(te&&mt(A,null,M,"created"),B)if(ye||!V||Z&48)for(const K in B)(ye&&(K.endsWith("value")||K==="indeterminate")||ur(K)&&!Gn(K)||K[0]===".")&&r(b,K,null,B[K],!1,void 0,M);else B.onClick&&r(b,"onClick",null,B.onClick,!1,void 0,M);let q;(q=B&&B.onVnodeBeforeMount)&&Qe(q,M,A);let ne=!1;if(P(b)){ne=ns(k,we)&&M&&M.vnode.props&&M.vnode.props.appear;const K=b.content.firstChild;ne&&we.beforeEnter(K),y(K,b,M),A.el=b=K}if(te&&mt(A,null,M,"beforeMount"),((q=B&&B.onVnodeMounted)||te||ne)&&Fl(()=>{q&&Qe(q,M,A),ne&&we.enter(b),te&&mt(A,null,M,"mounted")},k),H&16&&!(B&&(B.innerHTML||B.textContent))){let K=m(b.firstChild,A,b,M,k,N,V);for(;K;){Vt=!0;const Re=K;K=K.nextSibling,l(Re)}}else H&8&&b.textContent!==A.children&&(Vt=!0,b.textContent=A.children)}return b.nextSibling},m=(b,A,M,k,N,V,S)=>{S=S||!!A.dynamicChildren;const B=A.children,Z=B.length;for(let H=0;H{const{slotScopeIds:S}=A;S&&(N=N?N.concat(S):S);const B=a(b),Z=m(i(b),A,B,M,k,N,V);return Z&&Ir(Z)&&Z.data==="]"?i(A.anchor=Z):(Vt=!0,s(A.anchor=c("]"),B,Z),Z)},w=(b,A,M,k,N,V)=>{if(Vt=!0,A.el=null,V){const Z=T(b);for(;;){const H=i(b);if(H&&H!==Z)l(H);else break}}const S=i(b),B=a(b);return l(b),n(null,A,B,S,M,k,Rr(B),N),S},T=(b,A="[",M="]")=>{let k=0;for(;b;)if(b=i(b),b&&Ir(b)&&(b.data===A&&k++,b.data===M)){if(k===0)return i(b);k--}return b},y=(b,A,M)=>{const k=A.parentNode;k&&k.replaceChild(b,A);let N=M;for(;N;)N.vnode.el===A&&(N.vnode.el=N.subTree.el=b),N=N.parent},P=b=>b.nodeType===1&&b.tagName.toLowerCase()==="template";return[u,d]}const Be=Fl;function Zf(e){return Qf(e,Yf)}function Qf(e,t){const n=So();n.__VUE__=!0;const{insert:r,remove:o,patchProp:i,createElement:a,createText:l,createComment:s,setText:c,setElementText:u,parentNode:d,nextSibling:p,setScopeId:m=bt,insertStaticContent:g}=e,w=(v,_,E,R=null,x=null,C=null,j=!1,$=null,F=!!_.dynamicChildren)=>{if(v===_)return;v&&!Zt(v,_)&&(R=O(v),De(v,x,C,!0),v=null),_.patchFlag===-2&&(F=!1,_.dynamicChildren=null);const{type:D,ref:Q,shapeFlag:G}=_;switch(D){case An:T(v,_,E,R);break;case rt:y(v,_,E,R);break;case Qn:v==null&&P(_,E,R,j);break;case Ke:H(v,_,E,R,x,C,j,$,F);break;default:G&1?M(v,_,E,R,x,C,j,$,F):G&6?te(v,_,E,R,x,C,j,$,F):(G&64||G&128)&&D.process(v,_,E,R,x,C,j,$,F,z)}Q!=null&&x&&Hr(Q,v&&v.ref,C,_||v,!_)},T=(v,_,E,R)=>{if(v==null)r(_.el=l(_.children),E,R);else{const x=_.el=v.el;_.children!==v.children&&c(x,_.children)}},y=(v,_,E,R)=>{v==null?r(_.el=s(_.children||""),E,R):_.el=v.el},P=(v,_,E,R)=>{[v.el,v.anchor]=g(v.children,_,E,R,v.el,v.anchor)},b=({el:v,anchor:_},E,R)=>{let x;for(;v&&v!==_;)x=p(v),r(v,E,R),v=x;r(_,E,R)},A=({el:v,anchor:_})=>{let E;for(;v&&v!==_;)E=p(v),o(v),v=E;o(_)},M=(v,_,E,R,x,C,j,$,F)=>{j=j||_.type==="svg",v==null?k(_,E,R,x,C,j,$,F):S(v,_,x,C,j,$,F)},k=(v,_,E,R,x,C,j,$)=>{let F,D;const{type:Q,props:G,shapeFlag:J,transition:re,dirs:ie}=v;if(F=v.el=a(v.type,C,G&&G.is,G),J&8?u(F,v.children):J&16&&V(v.children,F,null,R,x,C&&Q!=="foreignObject",j,$),ie&&mt(v,null,R,"created"),N(F,v,v.scopeId,j,R),G){for(const he in G)he!=="value"&&!Gn(he)&&i(F,he,null,G[he],C,v.children,R,x,Ie);"value"in G&&i(F,"value",null,G.value),(D=G.onVnodeBeforeMount)&&Qe(D,R,v)}ie&&mt(v,null,R,"beforeMount");const me=ns(x,re);me&&re.beforeEnter(F),r(F,_,E),((D=G&&G.onVnodeMounted)||me||ie)&&Be(()=>{D&&Qe(D,R,v),me&&re.enter(F),ie&&mt(v,null,R,"mounted")},x)},N=(v,_,E,R,x)=>{if(E&&m(v,E),R)for(let C=0;C{for(let D=F;D{const $=_.el=v.el;let{patchFlag:F,dynamicChildren:D,dirs:Q}=_;F|=v.patchFlag&16;const G=v.props||Ee,J=_.props||Ee;let re;E&&Kt(E,!1),(re=J.onVnodeBeforeUpdate)&&Qe(re,E,_,v),Q&&mt(_,v,E,"beforeUpdate"),E&&Kt(E,!0);const ie=x&&_.type!=="foreignObject";if(D?B(v.dynamicChildren,D,$,E,R,ie,C):j||K(v,_,$,null,E,R,ie,C,!1),F>0){if(F&16)Z($,_,G,J,E,R,x);else if(F&2&&G.class!==J.class&&i($,"class",null,J.class,x),F&4&&i($,"style",G.style,J.style,x),F&8){const me=_.dynamicProps;for(let he=0;he{re&&Qe(re,E,_,v),Q&&mt(_,v,E,"updated")},R)},B=(v,_,E,R,x,C,j)=>{for(let $=0;$<_.length;$++){const F=v[$],D=_[$],Q=F.el&&(F.type===Ke||!Zt(F,D)||F.shapeFlag&70)?d(F.el):E;w(F,D,Q,null,R,x,C,j,!0)}},Z=(v,_,E,R,x,C,j)=>{if(E!==R){if(E!==Ee)for(const $ in E)!Gn($)&&!($ in R)&&i(v,$,E[$],null,j,_.children,x,C,Ie);for(const $ in R){if(Gn($))continue;const F=R[$],D=E[$];F!==D&&$!=="value"&&i(v,$,D,F,j,_.children,x,C,Ie)}"value"in R&&i(v,"value",E.value,R.value)}},H=(v,_,E,R,x,C,j,$,F)=>{const D=_.el=v?v.el:l(""),Q=_.anchor=v?v.anchor:l("");let{patchFlag:G,dynamicChildren:J,slotScopeIds:re}=_;re&&($=$?$.concat(re):re),v==null?(r(D,E,R),r(Q,E,R),V(_.children,E,Q,x,C,j,$,F)):G>0&&G&64&&J&&v.dynamicChildren?(B(v.dynamicChildren,J,E,x,C,j,$),(_.key!=null||x&&_===x.subTree)&&rs(v,_,!0)):K(v,_,E,Q,x,C,j,$,F)},te=(v,_,E,R,x,C,j,$,F)=>{_.slotScopeIds=$,v==null?_.shapeFlag&512?x.ctx.activate(_,E,R,j,F):we(_,E,R,x,C,j,F):ye(v,_,F)},we=(v,_,E,R,x,C,j)=>{const $=v.component=sd(v,R,x);if(hr(v)&&($.ctx.renderer=z),cd($),$.asyncDep){if(x&&x.registerDep($,q),!v.el){const F=$.subTree=Le(rt);y(null,F,_,E)}return}q($,v,_,E,x,C,j)},ye=(v,_,E)=>{const R=_.component=v.component;if(bf(v,_,E))if(R.asyncDep&&!R.asyncResolved){ne(R,_,E);return}else R.next=_,df(R.update),R.update();else _.el=v.el,R.vnode=_},q=(v,_,E,R,x,C,j)=>{const $=()=>{if(v.isMounted){let{next:Q,bu:G,u:J,parent:re,vnode:ie}=v,me=Q,he;Kt(v,!1),Q?(Q.el=ie.el,ne(v,Q,j)):Q=ie,G&&fo(G),(he=Q.props&&Q.props.onVnodeBeforeUpdate)&&Qe(he,re,Q,ie),Kt(v,!0);const Oe=po(v),lt=v.subTree;v.subTree=Oe,w(lt,Oe,d(lt.el),O(lt),v,x,C),Q.el=Oe.el,me===null&&yf(v,Oe.el),J&&Be(J,x),(he=Q.props&&Q.props.onVnodeUpdated)&&Be(()=>Qe(he,re,Q,ie),x)}else{let Q;const{el:G,props:J}=_,{bm:re,m:ie,parent:me}=v,he=Yn(_);if(Kt(v,!1),re&&fo(re),!he&&(Q=J&&J.onVnodeBeforeMount)&&Qe(Q,me,_),Kt(v,!0),G&&le){const Oe=()=>{v.subTree=po(v),le(G,v.subTree,v,x,null)};he?_.type.__asyncLoader().then(()=>!v.isUnmounted&&Oe()):Oe()}else{const Oe=v.subTree=po(v);w(null,Oe,E,R,v,x,C),_.el=Oe.el}if(ie&&Be(ie,x),!he&&(Q=J&&J.onVnodeMounted)){const Oe=_;Be(()=>Qe(Q,me,Oe),x)}(_.shapeFlag&256||me&&Yn(me.vnode)&&me.vnode.shapeFlag&256)&&v.a&&Be(v.a,x),v.isMounted=!0,_=E=R=null}},F=v.effect=new ui($,()=>Jr(D),v.scope),D=v.update=()=>F.run();D.id=v.uid,Kt(v,!0),D()},ne=(v,_,E)=>{_.component=v;const R=v.vnode.props;v.vnode=_,v.next=null,qf(v,_.props,R,E),Gf(v,_.children,E),Dn(),Xi(v),Sn()},K=(v,_,E,R,x,C,j,$,F=!1)=>{const D=v&&v.children,Q=v?v.shapeFlag:0,G=_.children,{patchFlag:J,shapeFlag:re}=_;if(J>0){if(J&128){pt(D,G,E,R,x,C,j,$,F);return}else if(J&256){Re(D,G,E,R,x,C,j,$,F);return}}re&8?(Q&16&&Ie(D,x,C),G!==D&&u(E,G)):Q&16?re&16?pt(D,G,E,R,x,C,j,$,F):Ie(D,x,C,!0):(Q&8&&u(E,""),re&16&&V(G,E,R,x,C,j,$,F))},Re=(v,_,E,R,x,C,j,$,F)=>{v=v||gn,_=_||gn;const D=v.length,Q=_.length,G=Math.min(D,Q);let J;for(J=0;JQ?Ie(v,x,C,!0,!1,G):V(_,E,R,x,C,j,$,F,G)},pt=(v,_,E,R,x,C,j,$,F)=>{let D=0;const Q=_.length;let G=v.length-1,J=Q-1;for(;D<=G&&D<=J;){const re=v[D],ie=_[D]=F?Bt(_[D]):ct(_[D]);if(Zt(re,ie))w(re,ie,E,null,x,C,j,$,F);else break;D++}for(;D<=G&&D<=J;){const re=v[G],ie=_[J]=F?Bt(_[J]):ct(_[J]);if(Zt(re,ie))w(re,ie,E,null,x,C,j,$,F);else break;G--,J--}if(D>G){if(D<=J){const re=J+1,ie=reJ)for(;D<=G;)De(v[D],x,C,!0),D++;else{const re=D,ie=D,me=new Map;for(D=ie;D<=J;D++){const qe=_[D]=F?Bt(_[D]):ct(_[D]);qe.key!=null&&me.set(qe.key,D)}let he,Oe=0;const lt=J-ie+1;let cn=!1,Hi=0;const Fn=new Array(lt);for(D=0;D=lt){De(qe,x,C,!0);continue}let vt;if(qe.key!=null)vt=me.get(qe.key);else for(he=ie;he<=J;he++)if(Fn[he-ie]===0&&Zt(qe,_[he])){vt=he;break}vt===void 0?De(qe,x,C,!0):(Fn[vt-ie]=D+1,vt>=Hi?Hi=vt:cn=!0,w(qe,_[vt],E,null,x,C,j,$,F),Oe++)}const ji=cn?Jf(Fn):gn;for(he=ji.length-1,D=lt-1;D>=0;D--){const qe=ie+D,vt=_[qe],Wi=qe+1{const{el:C,type:j,transition:$,children:F,shapeFlag:D}=v;if(D&6){Ye(v.component.subTree,_,E,R);return}if(D&128){v.suspense.move(_,E,R);return}if(D&64){j.move(v,_,E,z);return}if(j===Ke){r(C,_,E);for(let G=0;G$.enter(C),x);else{const{leave:G,delayLeave:J,afterLeave:re}=$,ie=()=>r(C,_,E),me=()=>{G(C,()=>{ie(),re&&re()})};J?J(C,ie,me):me()}else r(C,_,E)},De=(v,_,E,R=!1,x=!1)=>{const{type:C,props:j,ref:$,children:F,dynamicChildren:D,shapeFlag:Q,patchFlag:G,dirs:J}=v;if($!=null&&Hr($,null,E,v,!0),Q&256){_.ctx.deactivate(v);return}const re=Q&1&&J,ie=!Yn(v);let me;if(ie&&(me=j&&j.onVnodeBeforeUnmount)&&Qe(me,_,v),Q&6)ht(v.component,E,R);else{if(Q&128){v.suspense.unmount(E,R);return}re&&mt(v,null,_,"beforeUnmount"),Q&64?v.type.remove(v,_,E,x,z,R):D&&(C!==Ke||G>0&&G&64)?Ie(D,_,E,!1,!0):(C===Ke&&G&384||!x&&Q&16)&&Ie(F,_,E),R&&We(v)}(ie&&(me=j&&j.onVnodeUnmounted)||re)&&Be(()=>{me&&Qe(me,_,v),re&&mt(v,null,_,"unmounted")},E)},We=v=>{const{type:_,el:E,anchor:R,transition:x}=v;if(_===Ke){Et(E,R);return}if(_===Qn){A(v);return}const C=()=>{o(E),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(v.shapeFlag&1&&x&&!x.persisted){const{leave:j,delayLeave:$}=x,F=()=>j(E,C);$?$(v.el,C,F):F()}else C()},Et=(v,_)=>{let E;for(;v!==_;)E=p(v),o(v),v=E;o(_)},ht=(v,_,E)=>{const{bum:R,scope:x,update:C,subTree:j,um:$}=v;R&&fo(R),x.stop(),C&&(C.active=!1,De(j,v,_,E)),$&&Be($,_),Be(()=>{v.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&v.asyncDep&&!v.asyncResolved&&v.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},Ie=(v,_,E,R=!1,x=!1,C=0)=>{for(let j=C;jv.shapeFlag&6?O(v.component.subTree):v.shapeFlag&128?v.suspense.next():p(v.anchor||v.el),W=(v,_,E)=>{v==null?_._vnode&&De(_._vnode,null,null,!0):w(_._vnode||null,v,_,null,null,null,E),Xi(),Nr(),_._vnode=v},z={p:w,um:De,m:Ye,r:We,mt:we,mc:V,pc:K,pbc:B,n:O,o:e};let Y,le;return t&&([Y,le]=t(z)),{render:W,hydrate:Y,createApp:jf(W,Y)}}function Kt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function ns(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function rs(e,t,n=!1){const r=e.children,o=t.children;if(X(r)&&X(o))for(let i=0;i>1,e[n[l]]0&&(t[r]=n[i-1]),n[i]=r)}}for(i=n.length,a=n[i-1];i-- >0;)n[i]=a,a=t[a];return n}const Xf=e=>e.__isTeleport,Ke=Symbol.for("v-fgt"),An=Symbol.for("v-txt"),rt=Symbol.for("v-cmt"),Qn=Symbol.for("v-stc"),Jn=[];let ft=null;function ed(e=!1){Jn.push(ft=e?null:[])}function td(){Jn.pop(),ft=Jn[Jn.length-1]||null}let lr=1;function fa(e){lr+=e}function os(e){return e.dynamicChildren=lr>0?ft||gn:null,td(),lr>0&&ft&&ft.push(e),e}function y_(e,t,n,r,o,i){return os(as(e,t,n,r,o,i,!0))}function nd(e,t,n,r,o){return os(Le(e,t,n,r,o,!0))}function jo(e){return e?e.__v_isVNode===!0:!1}function Zt(e,t){return e.type===t.type&&e.key===t.key}const to="__vInternal",is=({key:e})=>e??null,Sr=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ue(e)||Ce(e)||oe(e)?{i:Xe,r:e,k:t,f:!!n}:e:null);function as(e,t=null,n=null,r=0,o=null,i=e===Ke?0:1,a=!1,l=!1){const s={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&is(t),ref:t&&Sr(t),scopeId:zl,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Xe};return l?(Ti(s,n),i&128&&e.normalize(s)):n&&(s.shapeFlag|=ue(n)?8:16),lr>0&&!a&&ft&&(s.patchFlag>0||i&6)&&s.patchFlag!==32&&ft.push(s),s}const Le=rd;function rd(e,t=null,n=null,r=0,o=null,i=!1){if((!e||e===Ef)&&(e=rt),jo(e)){const l=qt(e,t,!0);return n&&Ti(l,n),lr>0&&!i&&ft&&(l.shapeFlag&6?ft[ft.indexOf(e)]=l:ft.push(l)),l.patchFlag|=-2,l}if(hd(e)&&(e=e.__vccOpts),t){t=od(t);let{class:l,style:s}=t;l&&!ue(l)&&(t.class=si(l)),Te(s)&&(xl(s)&&!X(s)&&(s=xe({},s)),t.style=li(s))}const a=ue(e)?1:Tf(e)?128:Xf(e)?64:Te(e)?4:oe(e)?2:0;return as(e,t,n,r,o,a,i,!0)}function od(e){return e?xl(e)||to in e?xe({},e):e:null}function qt(e,t,n=!1){const{props:r,ref:o,patchFlag:i,children:a}=e,l=t?id(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&is(l),ref:t&&t.ref?n&&o?X(o)?o.concat(Sr(t)):[o,Sr(t)]:Sr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ke?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qt(e.ssContent),ssFallback:e.ssFallback&&qt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ls(e=" ",t=0){return Le(An,null,e,t)}function E_(e,t){const n=Le(Qn,null,e);return n.staticCount=t,n}function w_(e="",t=!1){return t?(ed(),nd(rt,null,e)):Le(rt,null,e)}function ct(e){return e==null||typeof e=="boolean"?Le(rt):X(e)?Le(Ke,null,e.slice()):typeof e=="object"?Bt(e):Le(An,null,String(e))}function Bt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:qt(e)}function Ti(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(X(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Ti(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(to in t)?t._ctx=Xe:o===3&&Xe&&(Xe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else oe(t)?(t={default:t,_ctx:Xe},n=32):(t=String(t),r&64?(n=16,t=[ls(t)]):n=8);e.children=t,e.shapeFlag|=n}function id(...e){const t={};for(let n=0;nke||Xe;let Ai,un,da="__VUE_INSTANCE_SETTERS__";(un=So()[da])||(un=So()[da]=[]),un.push(e=>ke=e),Ai=e=>{un.length>1?un.forEach(t=>t(e)):un[0](e)};const Ln=e=>{Ai(e),e.scope.on()},nn=()=>{ke&&ke.scope.off(),Ai(null)};function ss(e){return e.vnode.shapeFlag&4}let Pn=!1;function cd(e,t=!1){Pn=t;const{props:n,children:r}=e.vnode,o=ss(e);Wf(e,n,o,t),Kf(e,r);const i=o?ud(e,t):void 0;return Pn=!1,i}function ud(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=kl(new Proxy(e.ctx,Mf));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?dd(e):null;Ln(e),Dn();const i=jt(r,e,0,[e.props,o]);if(Sn(),nn(),ml(i)){if(i.then(nn,nn),t)return i.then(a=>{pa(e,a,t)}).catch(a=>{pr(a,e,0)});e.asyncDep=i}else pa(e,i,t)}else cs(e,t)}function pa(e,t,n){oe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Te(t)&&(e.setupState=Dl(t)),cs(e,n)}let ha;function cs(e,t,n){const r=e.type;if(!e.render){if(!t&&ha&&!r.render){const o=r.template||Ei(e).template;if(o){const{isCustomElement:i,compilerOptions:a}=e.appContext.config,{delimiters:l,compilerOptions:s}=r,c=xe(xe({isCustomElement:i,delimiters:l},a),s);r.render=ha(o,c)}}e.render=r.render||bt}{Ln(e),Dn();try{$f(e)}finally{Sn(),nn()}}}function fd(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return He(e,"get","$attrs"),t[n]}}))}function dd(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return fd(e)},slots:e.slots,emit:e.emit,expose:t}}function Li(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Dl(kl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Zn)return Zn[n](e)},has(t,n){return n in t||n in Zn}}))}function pd(e,t=!0){return oe(e)?e.displayName||e.name:e.name||t&&e.__name}function hd(e){return oe(e)&&"__vccOpts"in e}const I=(e,t)=>cf(e,t,Pn);function f(e,t,n){const r=arguments.length;return r===2?Te(t)&&!X(t)?jo(t)?Le(e,null,[t]):Le(e,t):Le(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&jo(n)&&(n=[n]),Le(e,t,n))}const vd=Symbol.for("v-scx"),md=()=>_e(vd),_d="3.3.11",gd="http://www.w3.org/2000/svg",Qt=typeof document<"u"?document:null,va=Qt&&Qt.createElement("template"),bd={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Qt.createElementNS(gd,e):Qt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Qt.createTextNode(e),createComment:e=>Qt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Qt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const a=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===i||!(o=o.nextSibling)););else{va.innerHTML=r?`${e}`:e;const l=va.content;if(r){const s=l.firstChild;for(;s.firstChild;)l.appendChild(s.firstChild);l.removeChild(s)}t.insertBefore(l,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Mt="transition",Hn="animation",Rn=Symbol("_vtc"),xt=(e,{slots:t})=>f(Pf,fs(e),t);xt.displayName="Transition";const us={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},yd=xt.props=xe({},ql,us),Gt=(e,t=[])=>{X(e)?e.forEach(n=>n(...t)):e&&e(...t)},ma=e=>e?X(e)?e.some(t=>t.length>1):e.length>1:!1;function fs(e){const t={};for(const H in e)H in us||(t[H]=e[H]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:s=i,appearActiveClass:c=a,appearToClass:u=l,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,g=Ed(o),w=g&&g[0],T=g&&g[1],{onBeforeEnter:y,onEnter:P,onEnterCancelled:b,onLeave:A,onLeaveCancelled:M,onBeforeAppear:k=y,onAppear:N=P,onAppearCancelled:V=b}=t,S=(H,te,we)=>{Nt(H,te?u:l),Nt(H,te?c:a),we&&we()},B=(H,te)=>{H._isLeaving=!1,Nt(H,d),Nt(H,m),Nt(H,p),te&&te()},Z=H=>(te,we)=>{const ye=H?N:P,q=()=>S(te,H,we);Gt(ye,[te,q]),_a(()=>{Nt(te,H?s:i),Tt(te,H?u:l),ma(ye)||ga(te,r,w,q)})};return xe(t,{onBeforeEnter(H){Gt(y,[H]),Tt(H,i),Tt(H,a)},onBeforeAppear(H){Gt(k,[H]),Tt(H,s),Tt(H,c)},onEnter:Z(!1),onAppear:Z(!0),onLeave(H,te){H._isLeaving=!0;const we=()=>B(H,te);Tt(H,d),ps(),Tt(H,p),_a(()=>{H._isLeaving&&(Nt(H,d),Tt(H,m),ma(A)||ga(H,r,T,we))}),Gt(A,[H,we])},onEnterCancelled(H){S(H,!1),Gt(b,[H])},onAppearCancelled(H){S(H,!0),Gt(V,[H])},onLeaveCancelled(H){B(H),Gt(M,[H])}})}function Ed(e){if(e==null)return null;if(Te(e))return[_o(e.enter),_o(e.leave)];{const t=_o(e);return[t,t]}}function _o(e){return Au(e)}function Tt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Rn]||(e[Rn]=new Set)).add(t)}function Nt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Rn];n&&(n.delete(t),n.size||(e[Rn]=void 0))}function _a(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let wd=0;function ga(e,t,n,r){const o=e._endId=++wd,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:a,timeout:l,propCount:s}=ds(e,t);if(!a)return r();const c=a+"end";let u=0;const d=()=>{e.removeEventListener(c,p),i()},p=m=>{m.target===e&&++u>=s&&d()};setTimeout(()=>{u(n[g]||"").split(", "),o=r(`${Mt}Delay`),i=r(`${Mt}Duration`),a=ba(o,i),l=r(`${Hn}Delay`),s=r(`${Hn}Duration`),c=ba(l,s);let u=null,d=0,p=0;t===Mt?a>0&&(u=Mt,d=a,p=i.length):t===Hn?c>0&&(u=Hn,d=c,p=s.length):(d=Math.max(a,c),u=d>0?a>c?Mt:Hn:null,p=u?u===Mt?i.length:s.length:0);const m=u===Mt&&/\b(transform|all)(,|$)/.test(r(`${Mt}Property`).toString());return{type:u,timeout:d,propCount:p,hasTransform:m}}function ba(e,t){for(;e.lengthya(n)+ya(e[r])))}function ya(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ps(){return document.body.offsetHeight}function Td(e,t,n){const r=e[Rn];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ad=Symbol("_vod");function Ld(e,t,n){const r=e.style,o=ue(n);if(n&&!o){if(t&&!ue(t))for(const i in t)n[i]==null&&Wo(r,i,"");for(const i in n)Wo(r,i,n[i])}else{const i=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),Ad in e&&(r.display=i)}}const Ea=/\s*!important$/;function Wo(e,t,n){if(X(n))n.forEach(r=>Wo(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Pd(e,t);Ea.test(n)?e.setProperty(Cn(r),n.replace(Ea,""),"important"):e[r]=n}}const wa=["Webkit","Moz","ms"],go={};function Pd(e,t){const n=go[t];if(n)return n;let r=ot(t);if(r!=="filter"&&r in e)return go[t]=r;r=fr(r);for(let o=0;obo||(Dd.then(()=>bo=0),bo=Date.now());function Vd(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;tt(Md(r,n.value),t,5,[r])};return n.value=e,n.attached=Sd(),n}function Md(e,t){if(X(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const Pa=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,$d=(e,t,n,r,o=!1,i,a,l,s)=>{t==="class"?Td(e,r,o):t==="style"?Ld(e,n,r):ur(t)?oi(t)||kd(e,t,n,r,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Nd(e,t,r,o))?Id(e,t,r,i,a,l,s):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Rd(e,t,r,o))};function Nd(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Pa(t)&&oe(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Pa(t)&&ue(n)?!1:t in e}const hs=new WeakMap,vs=new WeakMap,jr=Symbol("_moveCb"),Ra=Symbol("_enterCb"),ms={name:"TransitionGroup",props:xe({},yd,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Vn(),r=Wl();let o,i;return Gl(()=>{if(!o.length)return;const a=e.moveClass||`${e.name||"v"}-move`;if(!Wd(o[0].el,n.vnode.el,a))return;o.forEach(Fd),o.forEach(Hd);const l=o.filter(jd);ps(),l.forEach(s=>{const c=s.el,u=c.style;Tt(c,a),u.transform=u.webkitTransform=u.transitionDuration="";const d=c[jr]=p=>{p&&p.target!==c||(!p||/transform$/.test(p.propertyName))&&(c.removeEventListener("transitionend",d),c[jr]=null,Nt(c,a))};c.addEventListener("transitionend",d)})}),()=>{const a=ae(e),l=fs(a);let s=a.tag||Ke;o=i,i=t.default?bi(t.default()):[];for(let c=0;cdelete e.mode;ms.props;const Bd=ms;function Fd(e){const t=e.el;t[jr]&&t[jr](),t[Ra]&&t[Ra]()}function Hd(e){vs.set(e,e.el.getBoundingClientRect())}function jd(e){const t=hs.get(e),n=vs.get(e),r=t.left-n.left,o=t.top-n.top;if(r||o){const i=e.el.style;return i.transform=i.webkitTransform=`translate(${r}px,${o}px)`,i.transitionDuration="0s",e}}function Wd(e,t,n){const r=e.cloneNode(),o=e[Rn];o&&o.forEach(l=>{l.split(/\s+/).forEach(s=>s&&r.classList.remove(s))}),n.split(/\s+/).forEach(l=>l&&r.classList.add(l)),r.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(r);const{hasTransform:a}=ds(r);return i.removeChild(r),a}const qd=xe({patchProp:$d},bd);let yo,Ia=!1;function Ud(){return yo=Ia?yo:Zf(qd),Ia=!0,yo}const Kd=(...e)=>{const t=Ud().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Gd(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function Gd(e){return ue(e)?document.querySelector(e):e}const Yd="modulepreload",Zd=function(e){return"/"+e},Oa={},h=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link");o=Promise.all(n.map(a=>{if(a=Zd(a),a in Oa)return;Oa[a]=!0;const l=a.endsWith(".css"),s=l?'[rel="stylesheet"]':"";if(!!r)for(let d=i.length-1;d>=0;d--){const p=i[d];if(p.href===a&&(!l||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${a}"]${s}`))return;const u=document.createElement("link");if(u.rel=l?"stylesheet":Yd,l||(u.as="script",u.crossOrigin=""),u.href=a,document.head.appendChild(u),l)return new Promise((d,p)=>{u.addEventListener("load",d),u.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${a}`)))})}))}return o.then(()=>t()).catch(i=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i})},Qd={"v-8daa1a0e":()=>h(()=>import("./index.html-Oh37e22D.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-fffb8e28":()=>h(()=>import("./index.html-ohZtz6Fw.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-43c96c34":()=>h(()=>import("./collaborative_projects.html-15UQQvPG.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-17f2914c":()=>h(()=>import("./contact.html-XWW2pZ29.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-07f943d9":()=>h(()=>import("./license.html-onnWhI1X.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-9e2e7e22":()=>h(()=>import("./thanks.html--KuWuTSm.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1d3d20e2":()=>h(()=>import("./use_cases.html-C-cj_NSV.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-639495b8":()=>h(()=>import("./index.html-QkbwDjsA.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2d0ad528":()=>h(()=>import("./index.html-A9z0_Hu7.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-58ff8a76":()=>h(()=>import("./index.html-qi3PncfW.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-07e28fb7":()=>h(()=>import("./oncetoken.html-JcsefotR.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5d588a76":()=>h(()=>import("./index.html-Acfu-WyI.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-67fe8904":()=>h(()=>import("./not_recommended_qq.html-g8E5V1Ie.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-9ef794be":()=>h(()=>import("./rtmp_playback_compatibility_issues.html-5avJPHVo.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-26771ae0":()=>h(()=>import("./index.html-Pl0D5fWX.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7c5f89f1":()=>h(()=>import("./compilation_instructions_for_windows_version.html-xl0PwINJ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2a95408c":()=>h(()=>import("./install_zlmediakit_using_vcpkg.html-_H3jokEy.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-410226d2":()=>h(()=>import("./start.html-I4A7uS59.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1a355af6":()=>h(()=>import("./index.html-TLmaTaqK.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f17856b6":()=>h(()=>import("./config_file.html-5j1Bx0Jx.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-326b1b06":()=>h(()=>import("./generate_ssl_self-signed_certificate_and_test.html-qSLRuImw.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f90651dc":()=>h(()=>import("./how_to_enable_https_related_functions.html-fcJ6Uozv.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-629229d1":()=>h(()=>import("./on-demand_push_streaming.html-kP6TQb2_.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-a3ed6f7c":()=>h(()=>import("./on-demand_streaming.html-2DvN-m5K.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-22d780d8":()=>h(()=>import("./play_url_rules.html-LU-zd-xr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-40777a42":()=>h(()=>import("./playback_authentication.html-wjgI-Yj5.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1c8baf7e":()=>h(()=>import("./push_authentication.html-qlfLynHw.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-d003c332":()=>h(()=>import("./push_test.html-gnFrDUbt.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-992f244c":()=>h(()=>import("./restful_api.html-vpWQQrW9.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1563923f":()=>h(()=>import("./sequence_diagram.html-yqJJFxQH.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3f9e2b34":()=>h(()=>import("./start_server.html-fcMybRlu.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4436fd0b":()=>h(()=>import("./web_hook_api.html-adtpDhAG.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-fa0f55aa":()=>h(()=>import("./index.html-m59LkreQ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5d4ca3be":()=>h(()=>import("./index.html-XiIyF-Mz.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-29126422":()=>h(()=>import("./how_to_create_a_live_steam.html-Gq2b9Yi0.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-b1256428":()=>h(()=>import("./index.html-LSqTAwnp.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-099b9809":()=>h(()=>import("./hls_high_performance_journey.html-bBajAqE1.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-c75d9fee":()=>h(()=>import("./rtsp_performance_optimization.html-XwSQReWx.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-27716634":()=>h(()=>import("./index.html-3Pe7G9Sl.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3d1bfe27":()=>h(()=>import("./exclusive_features.html-2siFVq2G.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-61f35635":()=>h(()=>import("./high_concurrency_implementation_principle.html-opQWc8aM.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-60e3ff20":()=>h(()=>import("./introduction_to_streaming_media_related_technologies.html-O53gIrdK.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-716fbfe3":()=>h(()=>import("./rtsp_push_process.html-eeithr0y.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-159648d6":()=>h(()=>import("./the_nature_of_live_broadcast_delay.html-bGwDwg8A.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-07cf6867":()=>h(()=>import("./index.html-yjc28uoP.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2894bdb2":()=>h(()=>import("./dependency.html-re6FQDQF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-630bfad5":()=>h(()=>import("./rtmp_support_for_h265_and_opus.html-f4aPfFot.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-a9be237a":()=>h(()=>import("./video_conferencing_related_resources.html-1ZPXoBfM.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-770cb196":()=>h(()=>import("./zltoolkit_source_code_study_notes.html-XyGnG3Jc.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-60c5ec00":()=>h(()=>import("./index.html-Hvr1twkc.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7cf84008":()=>h(()=>import("./benchmark.html-xQUFyhUw.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-d8f6ac6a":()=>h(()=>import("./delay_test.html-_QomqbNh.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-adc6a8e4":()=>h(()=>import("./how_to_test_delay.html-GlLjeJYr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-ea3f92ca":()=>h(()=>import("./online_test.html-osni6C75.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-210a0a78":()=>h(()=>import("./performance_testing.html-DQL8Y_0H.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-27157219":()=>h(()=>import("./rtmp_pull_stream_performance_test.html-HQ4fzTKd.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-927f8538":()=>h(()=>import("./rtmp_push_stream_performance_test.html-BY1UVNB2.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3ede775a":()=>h(()=>import("./rtsp_pull_stream_performance_test.html-9hA9_SB-.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-703b8f9e":()=>h(()=>import("./rtsp_push_stream_performance_test.html-3UQhsyo8.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-47357bdb":()=>h(()=>import("./index.html-Q1OCSdNr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0a3cd263":()=>h(()=>import("./collaborative_projects.html-gRvZJ2_P.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-8b20cdea":()=>h(()=>import("./contact.html-nPftNmfa.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-633bb4ec":()=>h(()=>import("./license.html-ptTdZQ9a.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4bf4651e":()=>h(()=>import("./thanks.html-eseVCxC7.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7dceae00":()=>h(()=>import("./use_cases.html-nlOjewQC.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-ec228f2e":()=>h(()=>import("./index.html-JQu_RH6f.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-cb3c3b8e":()=>h(()=>import("./gb28181_sip_signaling_packet_capture.html-_63zZLPQ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-6fbaec55":()=>h(()=>import("./how_to_use_device_id_as_stream_id.html-ga4UcAIh.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-079ebd6a":()=>h(()=>import("./push_streaming.html-Z4VDPPfI.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-114c6ef6":()=>h(()=>import("./index.html-Rh0erDOb.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-d73f5e1e":()=>h(()=>import("./webrtc_compilation_and_use.html-u4uYYnLr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-284ed9d6":()=>h(()=>import("./webrtc_signaling_interaction_format.html-TjrAUdNc.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-515bc4e7":()=>h(()=>import("./index.html-jVaUOSmI.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-e1a99f30":()=>h(()=>import("./oncetoken.html-LPckM_ZY.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-763dee34":()=>h(()=>import("./index.html-X7WU_LPV.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-6ff7e8b5":()=>h(()=>import("./not_recommended_qq.html-Od4ztKJy.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-75521352":()=>h(()=>import("./rtmp_playback_compatibility_issues.html-RzirVjbt.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1b2bfecf":()=>h(()=>import("./index.html-BzbKxypT.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3c49c43c":()=>h(()=>import("./compilation_instructions_for_windows_version.html-Hq0AuZTz.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2139c386":()=>h(()=>import("./install_zlmediakit_using_vcpkg.html-lJ__kZwE.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4f36f1c6":()=>h(()=>import("./start.html-Jyh7sq9I.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7ac6e814":()=>h(()=>import("./index.html-qjMVLXfF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-76640c16":()=>h(()=>import("./config_file.html-i3ELg7s5.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-04c98dae":()=>h(()=>import("./generate_ssl_self-signed_certificate_and_test.html-7V6eG0vA.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-fc02997a":()=>h(()=>import("./how_to_enable_https_related_functions.html-mO3jYJnY.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-60a95200":()=>h(()=>import("./on-demand_push_streaming.html-crgN24-s.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-b991029a":()=>h(()=>import("./on-demand_streaming.html-5SBDxVes.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-78eb47c7":()=>h(()=>import("./play_url_rules.html-_eahSglS.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2459df9a":()=>h(()=>import("./playback_authentication.html-arMfpj8D.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-322f429c":()=>h(()=>import("./push_authentication.html-8JQfqi5E.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-c01103d0":()=>h(()=>import("./push_test.html-rQVB769L.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-baeeb56a":()=>h(()=>import("./restful_api.html-Xx1SUrzX.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-35a1596e":()=>h(()=>import("./sequence_diagram.html-y7tfUv_v.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3484e1e3":()=>h(()=>import("./start_server.html-rADXsgsy.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-391db3ba":()=>h(()=>import("./web_hook_api.html-F_kUu3X6.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-24dfef1c":()=>h(()=>import("./index.html-4qXHK4Yu.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7643e190":()=>h(()=>import("./index.html-lHFYswhu.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5a1c26c0":()=>h(()=>import("./how_to_create_a_live_steam.html-FHwnpSdN.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0938c35b":()=>h(()=>import("./index.html-CojxHtZz.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5298cc7a":()=>h(()=>import("./hls_high_performance_journey.html-bLztstJM.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-72fa89b8":()=>h(()=>import("./rtsp_performance_optimization.html-N4V23aKI.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4ea15ae3":()=>h(()=>import("./index.html-943vkdnv.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-324a3498":()=>h(()=>import("./exclusive_features.html-wTOG2Bjt.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-09d870a4":()=>h(()=>import("./high_concurrency_implementation_principle.html-sl-nIpjv.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-175b5aa1":()=>h(()=>import("./introduction_to_streaming_media_related_technologies.html-uFhGEBGc.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-79587752":()=>h(()=>import("./rtsp_push_process.html-MSFA7pR8.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3e321006":()=>h(()=>import("./the_nature_of_live_broadcast_delay.html--_Oe6F80.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2eff5d16":()=>h(()=>import("./index.html-oRdX7laQ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4a544ed0":()=>h(()=>import("./dependency.html-vliHx4sJ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2321e074":()=>h(()=>import("./rtmp_support_for_h265_and_opus.html-tX2acU7J.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-acba6b18":()=>h(()=>import("./video_conferencing_related_resources.html-Da8l8FFw.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-164eab05":()=>h(()=>import("./zltoolkit_source_code_study_notes.html-vFvvg7fr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7184a3f1":()=>h(()=>import("./index.html-Zl8OD7vu.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3d3ac02d":()=>h(()=>import("./benchmark.html-MSc66SxZ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-e2ac608c":()=>h(()=>import("./delay_test.html-dT3kgdCj.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-510ccabf":()=>h(()=>import("./how_to_test_delay.html-ubjyw-PC.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-174062e8":()=>h(()=>import("./online_test.html-8_GcpcRF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-e521bd2e":()=>h(()=>import("./performance_testing.html-wMvwmLu0.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1d29e16c":()=>h(()=>import("./rtmp_pull_stream_performance_test.html-_aYV-qZf.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-fdd44ad6":()=>h(()=>import("./rtmp_push_stream_performance_test.html-AxJYj-3i.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-aa333cf8":()=>h(()=>import("./rtsp_pull_stream_performance_test.html-2yov4QZH.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3a912ccf":()=>h(()=>import("./rtsp_push_stream_performance_test.html-g2X0PP_e.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-374e6730":()=>h(()=>import("./gb28181_sip_signaling_packet_capture.html-dSB5oqMq.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-6e3cc886":()=>h(()=>import("./how_to_use_device_id_as_stream_id.html-_vNSGfoU.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-041958ba":()=>h(()=>import("./push_streaming.html-5MzKBCwx.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-71ddfc14":()=>h(()=>import("./index.html-l-9Jcb0Z.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5eb5ee22":()=>h(()=>import("./webrtc_compilation_and_use.html-Ck_2B7eV.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-84db85f8":()=>h(()=>import("./webrtc_signaling_interaction_format.html-RSBHyl7A.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3706649a":()=>h(()=>import("./404.html-aQJ09P_F.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-14f73021":()=>h(()=>import("./index.html-VsukZOSA.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-22a2f9fd":()=>h(()=>import("./index.html-Y6Zxo28x.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2be85352":()=>h(()=>import("./index.html-LLxB5nrB.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0f8c4891":()=>h(()=>import("./index.html-QQRRY2d0.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-35ba27b7":()=>h(()=>import("./index.html-8RsIN7Qj.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-70e5a528":()=>h(()=>import("./index.html-MI_McXZr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-55376182":()=>h(()=>import("./index.html-c0NLam4o.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-50bfaca6":()=>h(()=>import("./index.html-Dj-Byo33.js"),__vite__mapDeps([])).then(({data:e})=>e)},Jd=JSON.parse('{"base":"/","lang":"en-US","title":"","description":"","head":[["link",{"rel":"icon","href":"/favicon.ico"}],["link",{"rel":"icon","href":"/assets/icon/chrome-192.png","type":"image/png","sizes":"192x192"}],["link",{"rel":"manifest","href":"/manifest.webmanifest","crossorigin":"use-credentials"}],["meta",{"name":"theme-color","content":"#46bd87"}],["link",{"rel":"apple-touch-icon","href":"/assets/icon/apple-touch-icon-152x152.png"}],["meta",{"name":"apple-mobile-web-app-capable","content":"yes"}],["meta",{"name":"apple-mobile-web-app-status-bar-style","content":"black"}],["meta",{"name":"msapplication-TileImage","content":"/assets/icon/ms-icon-144.png"}],["meta",{"name":"msapplication-TileColor","content":"#ffffff"}],["meta",{"name":"viewport","content":"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"}]],"locales":{"/":{"lang":"en-US","title":"ZLMediaKit","description":"Official documentation for ZLMediaKit"},"/zh/":{"lang":"zh-CN","title":"ZLMediaKit","description":"ZLMediaKit 官方文档"}}}');var Xd=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),ep=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=Xd(r);t.has(o)||(t.add(o),n.push(r))}),n},tp=e=>e[0]==="/"?e:`/${e}`,_s=e=>e[e.length-1]==="/"||e.endsWith(".html")?e:`${e}/`,Mn=e=>/^(https?:)?\/\//.test(e),np=/.md((\?|#).*)?$/,Wr=(e,t="/")=>!!(Mn(e)||e.startsWith("/")&&!e.startsWith(t)&&!np.test(e)),gs=e=>/^[a-z][a-z0-9+.-]*:/.test(e),Pi=e=>Object.prototype.toString.call(e)==="[object Object]",Ri=e=>e[e.length-1]==="/"?e.slice(0,-1):e,bs=e=>e[0]==="/"?e.slice(1):e,rp=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const i=o.split("/").length-r.split("/").length;return i!==0?i:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const ys={"v-8daa1a0e":L(()=>h(()=>import("./index.html-qlpSloZ0.js"),__vite__mapDeps([0,1]))),"v-fffb8e28":L(()=>h(()=>import("./index.html-QWUIdSew.js"),__vite__mapDeps([2,1]))),"v-43c96c34":L(()=>h(()=>import("./collaborative_projects.html-zAkyRydI.js"),__vite__mapDeps([3,1]))),"v-17f2914c":L(()=>h(()=>import("./contact.html-JZn2Qe3S.js"),__vite__mapDeps([4,1]))),"v-07f943d9":L(()=>h(()=>import("./license.html-KA2I3C1f.js"),__vite__mapDeps([5,1]))),"v-9e2e7e22":L(()=>h(()=>import("./thanks.html-9FVCd-fN.js"),__vite__mapDeps([6,1]))),"v-1d3d20e2":L(()=>h(()=>import("./use_cases.html-X6CGr-4A.js"),__vite__mapDeps([7,1]))),"v-639495b8":L(()=>h(()=>import("./index.html-4AQHrSUy.js"),__vite__mapDeps([8,9,1]))),"v-2d0ad528":L(()=>h(()=>import("./index.html-PSYc6CNH.js"),__vite__mapDeps([10,1]))),"v-58ff8a76":L(()=>h(()=>import("./index.html-2eHJyvoI.js"),__vite__mapDeps([11,1]))),"v-07e28fb7":L(()=>h(()=>import("./oncetoken.html-O4EgeeD_.js"),__vite__mapDeps([12,1]))),"v-5d588a76":L(()=>h(()=>import("./index.html-Eqzq89B-.js"),__vite__mapDeps([13,1]))),"v-67fe8904":L(()=>h(()=>import("./not_recommended_qq.html-D1NyvBof.js"),__vite__mapDeps([14,1]))),"v-9ef794be":L(()=>h(()=>import("./rtmp_playback_compatibility_issues.html-Q-7KXOkl.js"),__vite__mapDeps([15,1]))),"v-26771ae0":L(()=>h(()=>import("./index.html-kykmfUZZ.js"),__vite__mapDeps([16,1]))),"v-7c5f89f1":L(()=>h(()=>import("./compilation_instructions_for_windows_version.html-xnA-vKUQ.js"),__vite__mapDeps([17,1]))),"v-2a95408c":L(()=>h(()=>import("./install_zlmediakit_using_vcpkg.html-UmyH2ZVo.js"),__vite__mapDeps([18,19,1]))),"v-410226d2":L(()=>h(()=>import("./start.html-VhG07QWF.js"),__vite__mapDeps([20,9,1]))),"v-1a355af6":L(()=>h(()=>import("./index.html-ZUO1t91g.js"),__vite__mapDeps([21,1]))),"v-f17856b6":L(()=>h(()=>import("./config_file.html-e7VlJmFs.js"),__vite__mapDeps([22,1]))),"v-326b1b06":L(()=>h(()=>import("./generate_ssl_self-signed_certificate_and_test.html-kbzAeWE6.js"),__vite__mapDeps([23,24,1]))),"v-f90651dc":L(()=>h(()=>import("./how_to_enable_https_related_functions.html-O1NMddvq.js"),__vite__mapDeps([25,26,1]))),"v-629229d1":L(()=>h(()=>import("./on-demand_push_streaming.html-U3DF-hcL.js"),__vite__mapDeps([27,28,1]))),"v-a3ed6f7c":L(()=>h(()=>import("./on-demand_streaming.html-JbtempAZ.js"),__vite__mapDeps([29,30,1]))),"v-22d780d8":L(()=>h(()=>import("./play_url_rules.html-jL-erR3n.js"),__vite__mapDeps([31,1]))),"v-40777a42":L(()=>h(()=>import("./playback_authentication.html-SRognS60.js"),__vite__mapDeps([32,33,1]))),"v-1c8baf7e":L(()=>h(()=>import("./push_authentication.html-buPamLTW.js"),__vite__mapDeps([34,35,1]))),"v-d003c332":L(()=>h(()=>import("./push_test.html-fOBpg7dv.js"),__vite__mapDeps([36,37,1]))),"v-992f244c":L(()=>h(()=>import("./restful_api.html-EFSP9jqZ.js"),__vite__mapDeps([38,1]))),"v-1563923f":L(()=>h(()=>import("./sequence_diagram.html-pYWqjJ8u.js"),__vite__mapDeps([39,1]))),"v-3f9e2b34":L(()=>h(()=>import("./start_server.html-z23wbtOj.js"),__vite__mapDeps([40,41,1]))),"v-4436fd0b":L(()=>h(()=>import("./web_hook_api.html-zeVeDSz2.js"),__vite__mapDeps([42,1]))),"v-fa0f55aa":L(()=>h(()=>import("./index.html-e77v6tHA.js"),__vite__mapDeps([43,1]))),"v-5d4ca3be":L(()=>h(()=>import("./index.html-ENKK1Hev.js"),__vite__mapDeps([44,1]))),"v-29126422":L(()=>h(()=>import("./how_to_create_a_live_steam.html-6xjNfV8d.js"),__vite__mapDeps([45,46,1]))),"v-b1256428":L(()=>h(()=>import("./index.html-yPXvy2ZK.js"),__vite__mapDeps([47,1]))),"v-099b9809":L(()=>h(()=>import("./hls_high_performance_journey.html-KWt_INAr.js"),__vite__mapDeps([48,1]))),"v-c75d9fee":L(()=>h(()=>import("./rtsp_performance_optimization.html-KRKhmZXI.js"),__vite__mapDeps([49,1]))),"v-27716634":L(()=>h(()=>import("./index.html-crm4JFod.js"),__vite__mapDeps([50,1]))),"v-3d1bfe27":L(()=>h(()=>import("./exclusive_features.html-PNsKskwv.js"),__vite__mapDeps([51,1]))),"v-61f35635":L(()=>h(()=>import("./high_concurrency_implementation_principle.html-6GveguVT.js"),__vite__mapDeps([52,1]))),"v-60e3ff20":L(()=>h(()=>import("./introduction_to_streaming_media_related_technologies.html-tum5EDuc.js"),__vite__mapDeps([53,1]))),"v-716fbfe3":L(()=>h(()=>import("./rtsp_push_process.html-W2QVXDCD.js"),__vite__mapDeps([54,1]))),"v-159648d6":L(()=>h(()=>import("./the_nature_of_live_broadcast_delay.html-SrNo_kM-.js"),__vite__mapDeps([55,1]))),"v-07cf6867":L(()=>h(()=>import("./index.html-TjtRd5xp.js"),__vite__mapDeps([56,1]))),"v-2894bdb2":L(()=>h(()=>import("./dependency.html-kZHrVdhi.js"),__vite__mapDeps([57,1]))),"v-630bfad5":L(()=>h(()=>import("./rtmp_support_for_h265_and_opus.html-Pv_q6lJG.js"),__vite__mapDeps([58,1]))),"v-a9be237a":L(()=>h(()=>import("./video_conferencing_related_resources.html-OEgzQpTs.js"),__vite__mapDeps([59,1]))),"v-770cb196":L(()=>h(()=>import("./zltoolkit_source_code_study_notes.html-PfuwMzDt.js"),__vite__mapDeps([60,1]))),"v-60c5ec00":L(()=>h(()=>import("./index.html-lxIvJFMs.js"),__vite__mapDeps([61,1]))),"v-7cf84008":L(()=>h(()=>import("./benchmark.html-gZd5EMM7.js"),__vite__mapDeps([62,1]))),"v-d8f6ac6a":L(()=>h(()=>import("./delay_test.html-wn_gavSy.js"),__vite__mapDeps([63,1]))),"v-adc6a8e4":L(()=>h(()=>import("./how_to_test_delay.html-fyFCkcjI.js"),__vite__mapDeps([64,1]))),"v-ea3f92ca":L(()=>h(()=>import("./online_test.html-nhAROswz.js"),__vite__mapDeps([65,1]))),"v-210a0a78":L(()=>h(()=>import("./performance_testing.html-KTW2LASt.js"),__vite__mapDeps([66,1]))),"v-27157219":L(()=>h(()=>import("./rtmp_pull_stream_performance_test.html--cK45yxC.js"),__vite__mapDeps([67,1]))),"v-927f8538":L(()=>h(()=>import("./rtmp_push_stream_performance_test.html-4Td-mBqD.js"),__vite__mapDeps([68,1]))),"v-3ede775a":L(()=>h(()=>import("./rtsp_pull_stream_performance_test.html-sTQrF5Xo.js"),__vite__mapDeps([69,1]))),"v-703b8f9e":L(()=>h(()=>import("./rtsp_push_stream_performance_test.html-mR4FJY9Z.js"),__vite__mapDeps([70,1]))),"v-47357bdb":L(()=>h(()=>import("./index.html-bHaf1eq-.js"),__vite__mapDeps([71,1]))),"v-0a3cd263":L(()=>h(()=>import("./collaborative_projects.html-jP_gBiJf.js"),__vite__mapDeps([72,1]))),"v-8b20cdea":L(()=>h(()=>import("./contact.html-_Z6vlVkO.js"),__vite__mapDeps([73,1]))),"v-633bb4ec":L(()=>h(()=>import("./license.html-eI8DpHPZ.js"),__vite__mapDeps([74,1]))),"v-4bf4651e":L(()=>h(()=>import("./thanks.html-EDBrN2Yb.js"),__vite__mapDeps([75,1]))),"v-7dceae00":L(()=>h(()=>import("./use_cases.html-QYVpPIZi.js"),__vite__mapDeps([76,1]))),"v-ec228f2e":L(()=>h(()=>import("./index.html-H30PqyAG.js"),__vite__mapDeps([77,9,1]))),"v-cb3c3b8e":L(()=>h(()=>import("./gb28181_sip_signaling_packet_capture.html-9YuNK2eX.js"),__vite__mapDeps([78,1]))),"v-6fbaec55":L(()=>h(()=>import("./how_to_use_device_id_as_stream_id.html-r4xrBF9F.js"),__vite__mapDeps([79,80,1]))),"v-079ebd6a":L(()=>h(()=>import("./push_streaming.html-rR7nCAyc.js"),__vite__mapDeps([81,82,1]))),"v-114c6ef6":L(()=>h(()=>import("./index.html-1HU8uRzY.js"),__vite__mapDeps([83,1]))),"v-d73f5e1e":L(()=>h(()=>import("./webrtc_compilation_and_use.html-lpFe_5AD.js"),__vite__mapDeps([84,1]))),"v-284ed9d6":L(()=>h(()=>import("./webrtc_signaling_interaction_format.html-wdNPDtQj.js"),__vite__mapDeps([85,1]))),"v-515bc4e7":L(()=>h(()=>import("./index.html-dNFi-MK4.js"),__vite__mapDeps([86,1]))),"v-e1a99f30":L(()=>h(()=>import("./oncetoken.html-78LEt8yV.js"),__vite__mapDeps([87,1]))),"v-763dee34":L(()=>h(()=>import("./index.html-_GTitl4a.js"),__vite__mapDeps([88,1]))),"v-6ff7e8b5":L(()=>h(()=>import("./not_recommended_qq.html-xL5JJUt8.js"),__vite__mapDeps([89,1]))),"v-75521352":L(()=>h(()=>import("./rtmp_playback_compatibility_issues.html-k6HlsNbH.js"),__vite__mapDeps([90,1]))),"v-1b2bfecf":L(()=>h(()=>import("./index.html-pO6EQ89h.js"),__vite__mapDeps([91,1]))),"v-3c49c43c":L(()=>h(()=>import("./compilation_instructions_for_windows_version.html-3EBfQXLm.js"),__vite__mapDeps([92,1]))),"v-2139c386":L(()=>h(()=>import("./install_zlmediakit_using_vcpkg.html-uKojkOzg.js"),__vite__mapDeps([93,19,1]))),"v-4f36f1c6":L(()=>h(()=>import("./start.html-fkf1t7c5.js"),__vite__mapDeps([94,9,1]))),"v-7ac6e814":L(()=>h(()=>import("./index.html-eQpT8dLR.js"),__vite__mapDeps([95,1]))),"v-76640c16":L(()=>h(()=>import("./config_file.html-NeQ-HnE0.js"),__vite__mapDeps([96,1]))),"v-04c98dae":L(()=>h(()=>import("./generate_ssl_self-signed_certificate_and_test.html-oJ11zSxb.js"),__vite__mapDeps([97,24,1]))),"v-fc02997a":L(()=>h(()=>import("./how_to_enable_https_related_functions.html-bzN01TdE.js"),__vite__mapDeps([98,26,1]))),"v-60a95200":L(()=>h(()=>import("./on-demand_push_streaming.html-CeB1-Ozz.js"),__vite__mapDeps([99,28,1]))),"v-b991029a":L(()=>h(()=>import("./on-demand_streaming.html-rK6BuTeq.js"),__vite__mapDeps([100,30,1]))),"v-78eb47c7":L(()=>h(()=>import("./play_url_rules.html-Nq1zV90a.js"),__vite__mapDeps([101,1]))),"v-2459df9a":L(()=>h(()=>import("./playback_authentication.html--oFuX02K.js"),__vite__mapDeps([102,33,1]))),"v-322f429c":L(()=>h(()=>import("./push_authentication.html-RYBrWv6d.js"),__vite__mapDeps([103,35,1]))),"v-c01103d0":L(()=>h(()=>import("./push_test.html-78JMVV7F.js"),__vite__mapDeps([104,37,1]))),"v-baeeb56a":L(()=>h(()=>import("./restful_api.html-ooPhYVAr.js"),__vite__mapDeps([105,1]))),"v-35a1596e":L(()=>h(()=>import("./sequence_diagram.html-vJK6hfro.js"),__vite__mapDeps([106,1]))),"v-3484e1e3":L(()=>h(()=>import("./start_server.html-I5K79p0Y.js"),__vite__mapDeps([107,41,1]))),"v-391db3ba":L(()=>h(()=>import("./web_hook_api.html-Ur1FSiPS.js"),__vite__mapDeps([108,1]))),"v-24dfef1c":L(()=>h(()=>import("./index.html-kIe4zMW_.js"),__vite__mapDeps([109,1]))),"v-7643e190":L(()=>h(()=>import("./index.html-HA6yUssK.js"),__vite__mapDeps([110,1]))),"v-5a1c26c0":L(()=>h(()=>import("./how_to_create_a_live_steam.html-ewhkqgEI.js"),__vite__mapDeps([111,46,1]))),"v-0938c35b":L(()=>h(()=>import("./index.html-6BkT17JO.js"),__vite__mapDeps([112,1]))),"v-5298cc7a":L(()=>h(()=>import("./hls_high_performance_journey.html-LbBMnisY.js"),__vite__mapDeps([113,1]))),"v-72fa89b8":L(()=>h(()=>import("./rtsp_performance_optimization.html-INqzsvFD.js"),__vite__mapDeps([114,1]))),"v-4ea15ae3":L(()=>h(()=>import("./index.html-tETo8Lu8.js"),__vite__mapDeps([115,1]))),"v-324a3498":L(()=>h(()=>import("./exclusive_features.html-Qj0lJyo5.js"),__vite__mapDeps([116,1]))),"v-09d870a4":L(()=>h(()=>import("./high_concurrency_implementation_principle.html-YdXhhjaV.js"),__vite__mapDeps([117,1]))),"v-175b5aa1":L(()=>h(()=>import("./introduction_to_streaming_media_related_technologies.html-JdpuYj-J.js"),__vite__mapDeps([118,1]))),"v-79587752":L(()=>h(()=>import("./rtsp_push_process.html-PFNRXi6Z.js"),__vite__mapDeps([119,1]))),"v-3e321006":L(()=>h(()=>import("./the_nature_of_live_broadcast_delay.html-PF-gA_DU.js"),__vite__mapDeps([120,1]))),"v-2eff5d16":L(()=>h(()=>import("./index.html-xQisrcfM.js"),__vite__mapDeps([121,1]))),"v-4a544ed0":L(()=>h(()=>import("./dependency.html-WFMeX_wi.js"),__vite__mapDeps([122,1]))),"v-2321e074":L(()=>h(()=>import("./rtmp_support_for_h265_and_opus.html-4jQr5c69.js"),__vite__mapDeps([123,1]))),"v-acba6b18":L(()=>h(()=>import("./video_conferencing_related_resources.html-n9vvOPci.js"),__vite__mapDeps([124,1]))),"v-164eab05":L(()=>h(()=>import("./zltoolkit_source_code_study_notes.html-JZCYuLhh.js"),__vite__mapDeps([125,1]))),"v-7184a3f1":L(()=>h(()=>import("./index.html-LT2IW6gc.js"),__vite__mapDeps([126,1]))),"v-3d3ac02d":L(()=>h(()=>import("./benchmark.html-Xmdk2BGM.js"),__vite__mapDeps([127,1]))),"v-e2ac608c":L(()=>h(()=>import("./delay_test.html-nuUiWXnv.js"),__vite__mapDeps([128,1]))),"v-510ccabf":L(()=>h(()=>import("./how_to_test_delay.html-6Q65UhHU.js"),__vite__mapDeps([129,1]))),"v-174062e8":L(()=>h(()=>import("./online_test.html-_btmASEE.js"),__vite__mapDeps([130,1]))),"v-e521bd2e":L(()=>h(()=>import("./performance_testing.html-_cSl4nbI.js"),__vite__mapDeps([131,1]))),"v-1d29e16c":L(()=>h(()=>import("./rtmp_pull_stream_performance_test.html-to7s8Gb2.js"),__vite__mapDeps([132,1]))),"v-fdd44ad6":L(()=>h(()=>import("./rtmp_push_stream_performance_test.html-xYGtJwVp.js"),__vite__mapDeps([133,1]))),"v-aa333cf8":L(()=>h(()=>import("./rtsp_pull_stream_performance_test.html-3HmmZM3c.js"),__vite__mapDeps([134,1]))),"v-3a912ccf":L(()=>h(()=>import("./rtsp_push_stream_performance_test.html-8OJV-kxN.js"),__vite__mapDeps([135,1]))),"v-374e6730":L(()=>h(()=>import("./gb28181_sip_signaling_packet_capture.html-5xl0QuEj.js"),__vite__mapDeps([136,1]))),"v-6e3cc886":L(()=>h(()=>import("./how_to_use_device_id_as_stream_id.html-HCE1vKo7.js"),__vite__mapDeps([137,80,1]))),"v-041958ba":L(()=>h(()=>import("./push_streaming.html-ieJcZ8zc.js"),__vite__mapDeps([138,82,1]))),"v-71ddfc14":L(()=>h(()=>import("./index.html--S0MBGJo.js"),__vite__mapDeps([139,1]))),"v-5eb5ee22":L(()=>h(()=>import("./webrtc_compilation_and_use.html-WDwwQCrP.js"),__vite__mapDeps([140,1]))),"v-84db85f8":L(()=>h(()=>import("./webrtc_signaling_interaction_format.html-Vcq-5dzR.js"),__vite__mapDeps([141,1]))),"v-3706649a":L(()=>h(()=>import("./404.html-rHboC4Yl.js"),__vite__mapDeps([142,1]))),"v-14f73021":L(()=>h(()=>import("./index.html-Me4eXu-C.js"),__vite__mapDeps([143,1]))),"v-22a2f9fd":L(()=>h(()=>import("./index.html-n77SzoQa.js"),__vite__mapDeps([144,1]))),"v-2be85352":L(()=>h(()=>import("./index.html-frsd07BJ.js"),__vite__mapDeps([145,1]))),"v-0f8c4891":L(()=>h(()=>import("./index.html-0naiiwgW.js"),__vite__mapDeps([146,1]))),"v-35ba27b7":L(()=>h(()=>import("./index.html-4Ee7DNZI.js"),__vite__mapDeps([147,1]))),"v-70e5a528":L(()=>h(()=>import("./index.html-V4YkyuJV.js"),__vite__mapDeps([148,1]))),"v-55376182":L(()=>h(()=>import("./index.html-7ixsX_gh.js"),__vite__mapDeps([149,1]))),"v-50bfaca6":L(()=>h(()=>import("./index.html-NSMe4qAg.js"),__vite__mapDeps([150,1])))};var op=Symbol(""),Es=Symbol(""),ip=on({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),de=()=>{const e=_e(Es);if(!e)throw new Error("pageData() is called without provider.");return e},ws=Symbol(""),Pe=()=>{const e=_e(ws);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},Ts=Symbol(""),ap=()=>{const e=_e(Ts);if(!e)throw new Error("usePageHead() is called without provider.");return e},lp=Symbol(""),As=Symbol(""),Ii=()=>{const e=_e(As);if(!e)throw new Error("usePageLang() is called without provider.");return e},Ls=Symbol(""),sp=()=>{const e=_e(Ls);if(!e)throw new Error("usePageLayout() is called without provider.");return e},cp=ee(Qd),Oi=Symbol(""),ln=()=>{const e=_e(Oi);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},vn=ee(Jd),Ps=()=>vn,Rs=Symbol(""),no=()=>{const e=_e(Rs);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},up=Symbol(""),fp="Layout",dp="NotFound",At=dr({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageData:async e=>{const t=cp.value[e];return await(t==null?void 0:t())??ip},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=ue(t.description)?t.description:n.description,o=[...X(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return ep(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||"en-US",resolvePageLayout:(e,t)=>{let n;if(e.path){const r=e.frontmatter.layout;ue(r)?n=r:n=fp}else n=dp;return t[n]},resolveRouteLocale:(e,t)=>rp(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),ro=U({name:"ClientOnly",setup(e,t){const n=ee(!1);return ge(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),Is=U({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=de(),n=I(()=>ys[e.pageKey||t.value.key]);return()=>n.value?f(n.value):f("div","404 Not Found")}}),at=(e={})=>e,Ve=e=>Mn(e)?e:`/${bs(e)}`;const pp={};/*! - * vue-router v4.2.5 - * (c) 2023 Eduardo San Martin Morote - * @license MIT - */const pn=typeof window<"u";function hp(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const pe=Object.assign;function Eo(e,t){const n={};for(const r in t){const o=t[r];n[r]=dt(o)?o.map(e):e(o)}return n}const Xn=()=>{},dt=Array.isArray,vp=/\/$/,mp=e=>e.replace(vp,"");function wo(e,t,n="/"){let r,o={},i="",a="";const l=t.indexOf("#");let s=t.indexOf("?");return l=0&&(s=-1),s>-1&&(r=t.slice(0,s),i=t.slice(s+1,l>-1?l:t.length),o=e(i)),l>-1&&(r=r||t.slice(0,l),a=t.slice(l,t.length)),r=yp(r??t,n),{fullPath:r+(i&&"?")+i+a,path:r,query:o,hash:a}}function _p(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function xa(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function gp(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&In(t.matched[r],n.matched[o])&&Os(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function In(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Os(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!bp(e[n],t[n]))return!1;return!0}function bp(e,t){return dt(e)?ka(e,t):dt(t)?ka(t,e):e===t}function ka(e,t){return dt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function yp(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let i=n.length-1,a,l;for(a=0;a1&&i--;else break;return n.slice(0,i).join("/")+"/"+r.slice(a-(a===r.length?1:0)).join("/")}var sr;(function(e){e.pop="pop",e.push="push"})(sr||(sr={}));var er;(function(e){e.back="back",e.forward="forward",e.unknown=""})(er||(er={}));function Ep(e){if(!e)if(pn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),mp(e)}const wp=/^[^#]+#/;function Tp(e,t){return e.replace(wp,"#")+t}function Ap(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const oo=()=>({left:window.pageXOffset,top:window.pageYOffset});function Lp(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=Ap(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function Ca(e,t){return(history.state?history.state.position-t:-1)+e}const qo=new Map;function Pp(e,t){qo.set(e,t)}function Rp(e){const t=qo.get(e);return qo.delete(e),t}let Ip=()=>location.protocol+"//"+location.host;function xs(e,t){const{pathname:n,search:r,hash:o}=t,i=e.indexOf("#");if(i>-1){let l=o.includes(e.slice(i))?e.slice(i).length:1,s=o.slice(l);return s[0]!=="/"&&(s="/"+s),xa(s,"")}return xa(n,e)+r+o}function Op(e,t,n,r){let o=[],i=[],a=null;const l=({state:p})=>{const m=xs(e,location),g=n.value,w=t.value;let T=0;if(p){if(n.value=m,t.value=p,a&&a===g){a=null;return}T=w?p.position-w.position:0}else r(m);o.forEach(y=>{y(n.value,g,{delta:T,type:sr.pop,direction:T?T>0?er.forward:er.back:er.unknown})})};function s(){a=n.value}function c(p){o.push(p);const m=()=>{const g=o.indexOf(p);g>-1&&o.splice(g,1)};return i.push(m),m}function u(){const{history:p}=window;p.state&&p.replaceState(pe({},p.state,{scroll:oo()}),"")}function d(){for(const p of i)p();i=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:s,listen:c,destroy:d}}function Da(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?oo():null}}function xp(e){const{history:t,location:n}=window,r={value:xs(e,n)},o={value:t.state};o.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(s,c,u){const d=e.indexOf("#"),p=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+s:Ip()+e+s;try{t[u?"replaceState":"pushState"](c,"",p),o.value=c}catch(m){console.error(m),n[u?"replace":"assign"](p)}}function a(s,c){const u=pe({},t.state,Da(o.value.back,s,o.value.forward,!0),c,{position:o.value.position});i(s,u,!0),r.value=s}function l(s,c){const u=pe({},o.value,t.state,{forward:s,scroll:oo()});i(u.current,u,!0);const d=pe({},Da(r.value,s,null),{position:u.position+1},c);i(s,d,!1),r.value=s}return{location:r,state:o,push:l,replace:a}}function kp(e){e=Ep(e);const t=xp(e),n=Op(e,t.state,t.location,t.replace);function r(i,a=!0){a||n.pauseListeners(),history.go(i)}const o=pe({location:"",base:e,go:r,createHref:Tp.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function Cp(e){return typeof e=="string"||e&&typeof e=="object"}function ks(e){return typeof e=="string"||typeof e=="symbol"}const Lt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Cs=Symbol("");var Sa;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Sa||(Sa={}));function On(e,t){return pe(new Error,{type:e,[Cs]:!0},t)}function wt(e,t){return e instanceof Error&&Cs in e&&(t==null||!!(e.type&t))}const Va="[^/]+?",Dp={sensitive:!1,strict:!1,start:!0,end:!0},Sp=/[.+*?^${}()[\]/\\]/g;function Vp(e,t){const n=pe({},Dp,t),r=[];let o=n.start?"^":"";const i=[];for(const c of e){const u=c.length?[]:[90];n.strict&&!c.length&&(o+="/");for(let d=0;dt.length?t.length===1&&t[0]===80?1:-1:0}function $p(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const Np={type:0,value:""},zp=/[a-zA-Z0-9_]/;function Bp(e){if(!e)return[[]];if(e==="/")return[[Np]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${c}": ${m}`)}let n=0,r=n;const o=[];let i;function a(){i&&o.push(i),i=[]}let l=0,s,c="",u="";function d(){c&&(n===0?i.push({type:0,value:c}):n===1||n===2||n===3?(i.length>1&&(s==="*"||s==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:c,regexp:u,repeatable:s==="*"||s==="+",optional:s==="*"||s==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=s}for(;l{a(P)}:Xn}function a(u){if(ks(u)){const d=r.get(u);d&&(r.delete(u),n.splice(n.indexOf(d),1),d.children.forEach(a),d.alias.forEach(a))}else{const d=n.indexOf(u);d>-1&&(n.splice(d,1),u.record.name&&r.delete(u.record.name),u.children.forEach(a),u.alias.forEach(a))}}function l(){return n}function s(u){let d=0;for(;d=0&&(u.record.path!==n[d].record.path||!Ds(u,n[d]));)d++;n.splice(d,0,u),u.record.name&&!Na(u)&&r.set(u.record.name,u)}function c(u,d){let p,m={},g,w;if("name"in u&&u.name){if(p=r.get(u.name),!p)throw On(1,{location:u});w=p.record.name,m=pe($a(d.params,p.keys.filter(P=>!P.optional).map(P=>P.name)),u.params&&$a(u.params,p.keys.map(P=>P.name))),g=p.stringify(m)}else if("path"in u)g=u.path,p=n.find(P=>P.re.test(g)),p&&(m=p.parse(g),w=p.record.name);else{if(p=d.name?r.get(d.name):n.find(P=>P.re.test(d.path)),!p)throw On(1,{location:u,currentLocation:d});w=p.record.name,m=pe({},d.params,u.params),g=p.stringify(m)}const T=[];let y=p;for(;y;)T.unshift(y.record),y=y.parent;return{name:w,path:g,params:m,matched:T,meta:qp(T)}}return e.forEach(u=>i(u)),{addRoute:i,resolve:c,removeRoute:a,getRoutes:l,getRecordMatcher:o}}function $a(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function jp(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:Wp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function Wp(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Na(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function qp(e){return e.reduce((t,n)=>pe(t,n.meta),{})}function za(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Ds(e,t){return t.children.some(n=>n===e||Ds(e,n))}const Ss=/#/g,Up=/&/g,Kp=/\//g,Gp=/=/g,Yp=/\?/g,Vs=/\+/g,Zp=/%5B/g,Qp=/%5D/g,Ms=/%5E/g,Jp=/%60/g,$s=/%7B/g,Xp=/%7C/g,Ns=/%7D/g,eh=/%20/g;function xi(e){return encodeURI(""+e).replace(Xp,"|").replace(Zp,"[").replace(Qp,"]")}function th(e){return xi(e).replace($s,"{").replace(Ns,"}").replace(Ms,"^")}function Uo(e){return xi(e).replace(Vs,"%2B").replace(eh,"+").replace(Ss,"%23").replace(Up,"%26").replace(Jp,"`").replace($s,"{").replace(Ns,"}").replace(Ms,"^")}function nh(e){return Uo(e).replace(Gp,"%3D")}function rh(e){return xi(e).replace(Ss,"%23").replace(Yp,"%3F")}function oh(e){return e==null?"":rh(e).replace(Kp,"%2F")}function qr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function ih(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;oi&&Uo(i)):[r&&Uo(r)]).forEach(i=>{i!==void 0&&(t+=(t.length?"&":"")+n,i!=null&&(t+="="+i))})}return t}function ah(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=dt(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const lh=Symbol(""),Fa=Symbol(""),io=Symbol(""),ki=Symbol(""),Ko=Symbol("");function jn(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Ft(e,t,n,r,o){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((a,l)=>{const s=d=>{d===!1?l(On(4,{from:n,to:t})):d instanceof Error?l(d):Cp(d)?l(On(2,{from:t,to:d})):(i&&r.enterCallbacks[o]===i&&typeof d=="function"&&i.push(d),a())},c=e.call(r&&r.instances[o],t,n,s);let u=Promise.resolve(c);e.length<3&&(u=u.then(s)),u.catch(d=>l(d))})}function To(e,t,n,r){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(sh(l)){const c=(l.__vccOpts||l)[t];c&&o.push(Ft(c,n,r,i,a))}else{let s=l();o.push(()=>s.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${i.path}"`));const u=hp(c)?c.default:c;i.components[a]=u;const p=(u.__vccOpts||u)[t];return p&&Ft(p,n,r,i,a)()}))}}return o}function sh(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Go(e){const t=_e(io),n=_e(ki),r=I(()=>t.resolve(en(e.to))),o=I(()=>{const{matched:s}=r.value,{length:c}=s,u=s[c-1],d=n.matched;if(!u||!d.length)return-1;const p=d.findIndex(In.bind(null,u));if(p>-1)return p;const m=Ha(s[c-2]);return c>1&&Ha(u)===m&&d[d.length-1].path!==m?d.findIndex(In.bind(null,s[c-2])):p}),i=I(()=>o.value>-1&&dh(n.params,r.value.params)),a=I(()=>o.value>-1&&o.value===n.matched.length-1&&Os(n.params,r.value.params));function l(s={}){return fh(s)?t[en(e.replace)?"replace":"push"](en(e.to)).catch(Xn):Promise.resolve()}return{route:r,href:I(()=>r.value.href),isActive:i,isExactActive:a,navigate:l}}const ch=U({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Go,setup(e,{slots:t}){const n=dr(Go(e)),{options:r}=_e(io),o=I(()=>({[ja(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[ja(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&t.default(n);return e.custom?i:f("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},i)}}}),uh=ch;function fh(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function dh(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!dt(o)||o.length!==r.length||r.some((i,a)=>i!==o[a]))return!1}return!0}function Ha(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ja=(e,t,n)=>e??t??n,ph=U({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=_e(Ko),o=I(()=>e.route||r.value),i=_e(Fa,0),a=I(()=>{let c=en(i);const{matched:u}=o.value;let d;for(;(d=u[c])&&!d.components;)c++;return c}),l=I(()=>o.value.matched[a.value]);tn(Fa,I(()=>a.value+1)),tn(lh,l),tn(Ko,o);const s=ee();return fe(()=>[s.value,l.value,e.name],([c,u,d],[p,m,g])=>{u&&(u.instances[d]=c,m&&m!==u&&c&&c===p&&(u.leaveGuards.size||(u.leaveGuards=m.leaveGuards),u.updateGuards.size||(u.updateGuards=m.updateGuards))),c&&u&&(!m||!In(u,m)||!p)&&(u.enterCallbacks[d]||[]).forEach(w=>w(c))},{flush:"post"}),()=>{const c=o.value,u=e.name,d=l.value,p=d&&d.components[u];if(!p)return Wa(n.default,{Component:p,route:c});const m=d.props[u],g=m?m===!0?c.params:typeof m=="function"?m(c):m:null,T=f(p,pe({},g,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(d.instances[u]=null)},ref:s}));return Wa(n.default,{Component:T,route:c})||T}}});function Wa(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const zs=ph;function hh(e){const t=Hp(e.routes,e),n=e.parseQuery||ih,r=e.stringifyQuery||Ba,o=e.history,i=jn(),a=jn(),l=jn(),s=it(Lt);let c=Lt;pn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Eo.bind(null,O=>""+O),d=Eo.bind(null,oh),p=Eo.bind(null,qr);function m(O,W){let z,Y;return ks(O)?(z=t.getRecordMatcher(O),Y=W):Y=O,t.addRoute(Y,z)}function g(O){const W=t.getRecordMatcher(O);W&&t.removeRoute(W)}function w(){return t.getRoutes().map(O=>O.record)}function T(O){return!!t.getRecordMatcher(O)}function y(O,W){if(W=pe({},W||s.value),typeof O=="string"){const E=wo(n,O,W.path),R=t.resolve({path:E.path},W),x=o.createHref(E.fullPath);return pe(E,R,{params:p(R.params),hash:qr(E.hash),redirectedFrom:void 0,href:x})}let z;if("path"in O)z=pe({},O,{path:wo(n,O.path,W.path).path});else{const E=pe({},O.params);for(const R in E)E[R]==null&&delete E[R];z=pe({},O,{params:d(E)}),W.params=d(W.params)}const Y=t.resolve(z,W),le=O.hash||"";Y.params=u(p(Y.params));const v=_p(r,pe({},O,{hash:th(le),path:Y.path})),_=o.createHref(v);return pe({fullPath:v,hash:le,query:r===Ba?ah(O.query):O.query||{}},Y,{redirectedFrom:void 0,href:_})}function P(O){return typeof O=="string"?wo(n,O,s.value.path):pe({},O)}function b(O,W){if(c!==O)return On(8,{from:W,to:O})}function A(O){return N(O)}function M(O){return A(pe(P(O),{replace:!0}))}function k(O){const W=O.matched[O.matched.length-1];if(W&&W.redirect){const{redirect:z}=W;let Y=typeof z=="function"?z(O):z;return typeof Y=="string"&&(Y=Y.includes("?")||Y.includes("#")?Y=P(Y):{path:Y},Y.params={}),pe({query:O.query,hash:O.hash,params:"path"in Y?{}:O.params},Y)}}function N(O,W){const z=c=y(O),Y=s.value,le=O.state,v=O.force,_=O.replace===!0,E=k(z);if(E)return N(pe(P(E),{state:typeof E=="object"?pe({},le,E.state):le,force:v,replace:_}),W||z);const R=z;R.redirectedFrom=W;let x;return!v&&gp(r,Y,z)&&(x=On(16,{to:R,from:Y}),Ye(Y,Y,!0,!1)),(x?Promise.resolve(x):B(R,Y)).catch(C=>wt(C)?wt(C,2)?C:pt(C):K(C,R,Y)).then(C=>{if(C){if(wt(C,2))return N(pe({replace:_},P(C.to),{state:typeof C.to=="object"?pe({},le,C.to.state):le,force:v}),W||R)}else C=H(R,Y,!0,_,le);return Z(R,Y,C),C})}function V(O,W){const z=b(O,W);return z?Promise.reject(z):Promise.resolve()}function S(O){const W=Et.values().next().value;return W&&typeof W.runWithContext=="function"?W.runWithContext(O):O()}function B(O,W){let z;const[Y,le,v]=vh(O,W);z=To(Y.reverse(),"beforeRouteLeave",O,W);for(const E of Y)E.leaveGuards.forEach(R=>{z.push(Ft(R,O,W))});const _=V.bind(null,O,W);return z.push(_),Ie(z).then(()=>{z=[];for(const E of i.list())z.push(Ft(E,O,W));return z.push(_),Ie(z)}).then(()=>{z=To(le,"beforeRouteUpdate",O,W);for(const E of le)E.updateGuards.forEach(R=>{z.push(Ft(R,O,W))});return z.push(_),Ie(z)}).then(()=>{z=[];for(const E of v)if(E.beforeEnter)if(dt(E.beforeEnter))for(const R of E.beforeEnter)z.push(Ft(R,O,W));else z.push(Ft(E.beforeEnter,O,W));return z.push(_),Ie(z)}).then(()=>(O.matched.forEach(E=>E.enterCallbacks={}),z=To(v,"beforeRouteEnter",O,W),z.push(_),Ie(z))).then(()=>{z=[];for(const E of a.list())z.push(Ft(E,O,W));return z.push(_),Ie(z)}).catch(E=>wt(E,8)?E:Promise.reject(E))}function Z(O,W,z){l.list().forEach(Y=>S(()=>Y(O,W,z)))}function H(O,W,z,Y,le){const v=b(O,W);if(v)return v;const _=W===Lt,E=pn?history.state:{};z&&(Y||_?o.replace(O.fullPath,pe({scroll:_&&E&&E.scroll},le)):o.push(O.fullPath,le)),s.value=O,Ye(O,W,z,_),pt()}let te;function we(){te||(te=o.listen((O,W,z)=>{if(!ht.listening)return;const Y=y(O),le=k(Y);if(le){N(pe(le,{replace:!0}),Y).catch(Xn);return}c=Y;const v=s.value;pn&&Pp(Ca(v.fullPath,z.delta),oo()),B(Y,v).catch(_=>wt(_,12)?_:wt(_,2)?(N(_.to,Y).then(E=>{wt(E,20)&&!z.delta&&z.type===sr.pop&&o.go(-1,!1)}).catch(Xn),Promise.reject()):(z.delta&&o.go(-z.delta,!1),K(_,Y,v))).then(_=>{_=_||H(Y,v,!1),_&&(z.delta&&!wt(_,8)?o.go(-z.delta,!1):z.type===sr.pop&&wt(_,20)&&o.go(-1,!1)),Z(Y,v,_)}).catch(Xn)}))}let ye=jn(),q=jn(),ne;function K(O,W,z){pt(O);const Y=q.list();return Y.length?Y.forEach(le=>le(O,W,z)):console.error(O),Promise.reject(O)}function Re(){return ne&&s.value!==Lt?Promise.resolve():new Promise((O,W)=>{ye.add([O,W])})}function pt(O){return ne||(ne=!O,we(),ye.list().forEach(([W,z])=>O?z(O):W()),ye.reset()),O}function Ye(O,W,z,Y){const{scrollBehavior:le}=e;if(!pn||!le)return Promise.resolve();const v=!z&&Rp(Ca(O.fullPath,0))||(Y||!z)&&history.state&&history.state.scroll||null;return an().then(()=>le(O,W,v)).then(_=>_&&Lp(_)).catch(_=>K(_,O,W))}const De=O=>o.go(O);let We;const Et=new Set,ht={currentRoute:s,listening:!0,addRoute:m,removeRoute:g,hasRoute:T,getRoutes:w,resolve:y,options:e,push:A,replace:M,go:De,back:()=>De(-1),forward:()=>De(1),beforeEach:i.add,beforeResolve:a.add,afterEach:l.add,onError:q.add,isReady:Re,install(O){const W=this;O.component("RouterLink",uh),O.component("RouterView",zs),O.config.globalProperties.$router=W,Object.defineProperty(O.config.globalProperties,"$route",{enumerable:!0,get:()=>en(s)}),pn&&!We&&s.value===Lt&&(We=!0,A(o.location).catch(le=>{}));const z={};for(const le in Lt)Object.defineProperty(z,le,{get:()=>s.value[le],enumerable:!0});O.provide(io,W),O.provide(ki,Ol(z)),O.provide(Ko,s);const Y=O.unmount;Et.add(O),O.unmount=function(){Et.delete(O),Et.size<1&&(c=Lt,te&&te(),te=null,s.value=Lt,We=!1,ne=!1),Y()}}};function Ie(O){return O.reduce((W,z)=>W.then(()=>S(z)),Promise.resolve())}return ht}function vh(e,t){const n=[],r=[],o=[],i=Math.max(t.matched.length,e.matched.length);for(let a=0;aIn(c,l))?r.push(l):n.push(l));const s=e.matched[a];s&&(t.matched.find(c=>In(c,s))||o.push(s))}return[n,r,o]}function Ge(){return _e(io)}function yt(){return _e(ki)}var Ne=Uint8Array,mn=Uint16Array,mh=Int32Array,Bs=new Ne([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Fs=new Ne([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),_h=new Ne([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Hs=function(e,t){for(var n=new mn(31),r=0;r<31;++r)n[r]=t+=1<>1|(be&21845)<<1;$t=($t&52428)>>2|($t&13107)<<2,$t=($t&61680)>>4|($t&3855)<<4,Yo[be]=(($t&65280)>>8|($t&255)<<8)>>1}var tr=function(e,t,n){for(var r=e.length,o=0,i=new mn(t);o>s]=c}else for(l=new mn(r),o=0;o>15-e[o]);return l},mr=new Ne(288);for(var be=0;be<144;++be)mr[be]=8;for(var be=144;be<256;++be)mr[be]=9;for(var be=256;be<280;++be)mr[be]=7;for(var be=280;be<288;++be)mr[be]=8;var qs=new Ne(32);for(var be=0;be<32;++be)qs[be]=5;var Eh=tr(mr,9,1),wh=tr(qs,5,1),Ao=function(e){for(var t=e[0],n=1;nt&&(t=e[n]);return t},st=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},Lo=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},Th=function(e){return(e+7)/8|0},Ci=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new Ne(e.subarray(t,n))},Ah=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Je=function(e,t,n){var r=new Error(t||Ah[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,Je),!n)throw r;return r},Lh=function(e,t,n,r){var o=e.length,i=r?r.length:0;if(!o||t.f&&!t.l)return n||new Ne(0);var a=!n,l=a||t.i!=2,s=t.i;a&&(n=new Ne(o*3));var c=function(le){var v=n.length;if(le>v){var _=new Ne(Math.max(v*2,le));_.set(n),n=_}},u=t.f||0,d=t.p||0,p=t.b||0,m=t.l,g=t.d,w=t.m,T=t.n,y=o*8;do{if(!m){u=st(e,d,1);var P=st(e,d+1,3);if(d+=3,P)if(P==1)m=Eh,g=wh,w=9,T=5;else if(P==2){var k=st(e,d,31)+257,N=st(e,d+10,15)+4,V=k+st(e,d+5,31)+1;d+=14;for(var S=new Ne(V),B=new Ne(19),Z=0;Z>4;if(b<16)S[Z++]=b;else{var q=0,ne=0;for(b==16?(ne=3+st(e,d,3),d+=2,q=S[Z-1]):b==17?(ne=3+st(e,d,7),d+=3):b==18&&(ne=11+st(e,d,127),d+=7);ne--;)S[Z++]=q}}var K=S.subarray(0,k),Re=S.subarray(k);w=Ao(K),T=Ao(Re),m=tr(K,w,1),g=tr(Re,T,1)}else Je(1);else{var b=Th(d)+4,A=e[b-4]|e[b-3]<<8,M=b+A;if(M>o){s&&Je(0);break}l&&c(p+A),n.set(e.subarray(b,M),p),t.b=p+=A,t.p=d=M*8,t.f=u;continue}if(d>y){s&&Je(0);break}}l&&c(p+131072);for(var pt=(1<>4;if(d+=q&15,d>y){s&&Je(0);break}if(q||Je(2),We<256)n[p++]=We;else if(We==256){De=d,m=null;break}else{var Et=We-254;if(We>264){var Z=We-257,ht=Bs[Z];Et=st(e,d,(1<>4;Ie||Je(3),d+=Ie&15;var Re=yh[O];if(O>3){var ht=Fs[O];Re+=Lo(e,d)&(1<y){s&&Je(0);break}l&&c(p+131072);var W=p+Et;if(p>4>7||(e[0]<<8|e[1])%31)&&Je(6,"invalid zlib data"),(e[1]>>5&1)==+!t&&Je(6,"invalid zlib data: "+(e[1]&32?"need":"unexpected")+" dictionary"),(e[1]>>3&4)+2};function Ih(e,t){return Lh(e.subarray(Rh(e,t&&t.dictionary),-4),{i:2},t&&t.out,t&&t.dictionary)}var qa=typeof TextEncoder<"u"&&new TextEncoder,Zo=typeof TextDecoder<"u"&&new TextDecoder,Oh=0;try{Zo.decode(Ph,{stream:!0}),Oh=1}catch{}var xh=function(e){for(var t="",n=0;;){var r=e[n++],o=(r>127)+(r>223)+(r>239);if(n+o>e.length)return{s:t,r:Ci(e,n-1)};o?o==3?(r=((r&15)<<18|(e[n++]&63)<<12|(e[n++]&63)<<6|e[n++]&63)-65536,t+=String.fromCharCode(55296|r>>10,56320|r&1023)):o&1?t+=String.fromCharCode((r&31)<<6|e[n++]&63):t+=String.fromCharCode((r&15)<<12|(e[n++]&63)<<6|e[n++]&63):t+=String.fromCharCode(r)}};function kh(e,t){if(t){for(var n=new Ne(e.length),r=0;r>1)),a=0,l=function(u){i[a++]=u},r=0;ri.length){var s=new Ne(a+8+(o-r<<1));s.set(i),i=s}var c=e.charCodeAt(r);c<128||t?l(c):c<2048?(l(192|c>>6),l(128|c&63)):c>55295&&c<57344?(c=65536+(c&1047552)|e.charCodeAt(++r)&1023,l(240|c>>18),l(128|c>>12&63),l(128|c>>6&63),l(128|c&63)):(l(224|c>>12),l(128|c>>6&63),l(128|c&63))}return Ci(i,0,a)}function Ch(e,t){if(t){for(var n="",r=0;r{var r;return f("svg",{xmlns:"http://www.w3.org/2000/svg",class:["icon",`${e}-icon`],viewBox:"0 0 1024 1024",fill:t,"aria-label":`${e} icon`},(r=n.default)==null?void 0:r.call(n))};Ae.displayName="IconBase";const Di=({size:e=48,stroke:t=4,wrapper:n=!0,height:r=2*e})=>{const o=f("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,preserveAspectRatio:"xMidYMid",viewBox:"25 25 50 50"},[f("animateTransform",{attributeName:"transform",type:"rotate",dur:"2s",keyTimes:"0;1",repeatCount:"indefinite",values:"0;360"}),f("circle",{cx:"50",cy:"50",r:"20",fill:"none",stroke:"currentColor","stroke-width":t,"stroke-linecap":"round"},[f("animate",{attributeName:"stroke-dasharray",dur:"1.5s",keyTimes:"0;0.5;1",repeatCount:"indefinite",values:"1,200;90,200;1,200"}),f("animate",{attributeName:"stroke-dashoffset",dur:"1.5s",keyTimes:"0;0.5;1",repeatCount:"indefinite",values:"0;-35px;-125px"})])]);return n?f("div",{class:"loading-icon-wrapper",style:`display:flex;align-items:center;justify-content:center;height:${r}px`},o):o};Di.displayName="LoadingIcon";const Us=(e,{slots:t})=>{var n;return(n=t.default)==null?void 0:n.call(t)},Dh=(e="")=>{if(e){if(typeof e=="number")return new Date(e);const t=Date.parse(e.toString());if(!Number.isNaN(t))return new Date(t)}return null},Ks=(e,t)=>{let n=1;for(let r=0;r>6;return n+=n<<3,n^=n>>11,n%t},Gs=Array.isArray,Sh=e=>typeof e=="function",Vh=e=>typeof e=="string";var Si=e=>/^(https?:)?\/\//.test(e),Mh=/.md((\?|#).*)?$/,$h=(e,t="/")=>!!(Si(e)||e.startsWith("/")&&!e.startsWith(t)&&!Mh.test(e)),Ys=e=>Object.prototype.toString.call(e)==="[object Object]";function Nh(){const e=ee(!1);return Vn()&&ge(()=>{e.value=!0}),e}function zh(e){return Nh(),I(()=>!!e())}const Bh=e=>typeof e=="function",Po=e=>typeof e=="number",kt=e=>typeof e=="string",xn=(e,t)=>kt(e)&&e.startsWith(t),fn=(e,t)=>kt(e)&&e.endsWith(t),Vi=Object.entries,Fh=Object.fromEntries,$n=Object.keys,Hh=e=>(e.endsWith(".md")&&(e=`${e.slice(0,-3)}.html`),!e.endsWith("/")&&!e.endsWith(".html")&&(e=`${e}.html`),e=e.replace(/(^|\/)(?:README|index).html$/i,"$1"),e),Zs=e=>{const[t,n=""]=e.split("#");return t?`${Hh(t)}${n?`#${n}`:""}`:e},Ua=e=>Ys(e)&&kt(e.name),Ka=(e,t=!1)=>e?Gs(e)?e.map(n=>kt(n)?{name:n}:Ua(n)?n:null).filter(n=>n!==null):kt(e)?[{name:e}]:Ua(e)?[e]:(console.error(`Expect "author" to be \`AuthorInfo[] | AuthorInfo | string[] | string ${t?"":"| false"} | undefined\`, but got`,e),[]):[],Qs=(e,t)=>{if(e){if(Gs(e)&&e.every(kt))return e;if(kt(e))return[e];console.error(`Expect ${t||"value"} to be \`string[] | string | undefined\`, but got`,e)}return[]},jh=e=>Qs(e,"category"),Wh=e=>Qs(e,"tag"),ao=e=>xn(e,"/"),Js=/#.*$/u,qh=e=>{const t=Js.exec(e);return t?t[0]:""},Ga=e=>decodeURI(e).replace(Js,"").replace(/(index)?\.html$/i,"").replace(/(README|index)?\.md$/i,""),Xs=(e,t)=>{if(t===void 0)return!1;const n=Ga(e.path),r=Ga(t),o=qh(t);return o?o===e.hash&&(!r||n===r):n===r},Ya=e=>{const t=atob(e);return Ch(Ih(kh(t,!0)))},Uh=e=>Si(e)?e:`https://github.com/${e}`,ec=e=>!Si(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,Ur=(e,...t)=>{const n=e.resolve(...t),r=n.matched[n.matched.length-1];if(!(r!=null&&r.redirect))return n;const{redirect:o}=r,i=Sh(o)?o(n):o,a=Vh(i)?{path:i}:i;return Ur(e,{hash:n.hash,query:n.query,params:n.params,...a})},Kh=e=>{var t;if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)&&!(e.currentTarget&&((t=e.currentTarget.getAttribute("target"))!=null&&t.match(/\b_blank\b/i))))return e.preventDefault(),!0},et=({to:e="",class:t="",...n},{slots:r})=>{var l;const o=Ge(),i=Zs(e),a=(s={})=>Kh(s)?o.push(e).catch():Promise.resolve();return f("a",{...n,class:["vp-link",t],href:xn(i,"/")?Ve(i):i,onClick:a},(l=r.default)==null?void 0:l.call(r))};et.displayName="VPLink";const tc=()=>f(Ae,{name:"github"},()=>f("path",{d:"M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"}));tc.displayName="GitHubIcon";const nc=()=>f(Ae,{name:"gitlab"},()=>f("path",{d:"M229.333 78.688C223.52 62 199.895 62 193.895 78.688L87.958 406.438h247.5c-.188 0-106.125-327.75-106.125-327.75zM33.77 571.438c-4.875 15 .563 31.687 13.313 41.25l464.812 345L87.77 406.438zm301.5-165 176.813 551.25 176.812-551.25zm655.125 165-54-165-424.312 551.25 464.812-345c12.938-9.563 18.188-26.25 13.5-41.25zM830.27 78.688c-5.812-16.688-29.437-16.688-35.437 0l-106.125 327.75h247.5z"}));nc.displayName="GitLabIcon";const rc=()=>f(Ae,{name:"gitee"},()=>f("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm242.97-533.34H482.39a23.7 23.7 0 0 0-23.7 23.7l-.03 59.28c0 13.08 10.59 23.7 23.7 23.7h165.96a23.7 23.7 0 0 1 23.7 23.7v11.85a71.1 71.1 0 0 1-71.1 71.1H375.71a23.7 23.7 0 0 1-23.7-23.7V423.11a71.1 71.1 0 0 1 71.1-71.1h331.8a23.7 23.7 0 0 0 23.7-23.7l.06-59.25a23.73 23.73 0 0 0-23.7-23.73H423.11a177.78 177.78 0 0 0-177.78 177.75v331.83c0 13.08 10.62 23.7 23.7 23.7h349.62a159.99 159.99 0 0 0 159.99-159.99V482.33a23.7 23.7 0 0 0-23.7-23.7z"}));rc.displayName="GiteeIcon";const oc=()=>f(Ae,{name:"bitbucket"},()=>f("path",{d:"M575.256 490.862c6.29 47.981-52.005 85.723-92.563 61.147-45.714-20.004-45.714-92.562-1.133-113.152 38.29-23.442 93.696 7.424 93.696 52.005zm63.451-11.996c-10.276-81.152-102.29-134.839-177.152-101.156-47.433 21.138-79.433 71.424-77.129 124.562 2.853 69.705 69.157 126.866 138.862 120.576S647.3 548.571 638.708 478.83zm136.558-309.723c-25.161-33.134-67.986-38.839-105.728-45.13-106.862-17.151-216.576-17.7-323.438 1.134-35.438 5.706-75.447 11.996-97.719 43.996 36.572 34.304 88.576 39.424 135.424 45.129 84.553 10.862 171.447 11.447 256 .585 47.433-5.705 99.987-10.276 135.424-45.714zm32.585 591.433c-16.018 55.99-6.839 131.438-66.304 163.986-102.29 56.576-226.304 62.867-338.87 42.862-59.43-10.862-129.135-29.696-161.72-85.723-14.3-54.858-23.442-110.848-32.585-166.84l3.438-9.142 10.276-5.157c170.277 112.567 408.576 112.567 579.438 0 26.844 8.01 6.84 40.558 6.29 60.014zm103.424-549.157c-19.42 125.148-41.728 249.71-63.415 374.272-6.29 36.572-41.728 57.162-71.424 72.558-106.862 53.724-231.424 62.866-348.562 50.286-79.433-8.558-160.585-29.696-225.134-79.433-30.28-23.443-30.28-63.415-35.986-97.134-20.005-117.138-42.862-234.277-57.161-352.585 6.839-51.42 64.585-73.728 107.447-89.71 57.16-21.138 118.272-30.866 178.87-36.571 129.134-12.58 261.157-8.01 386.304 28.562 44.581 13.13 92.563 31.415 122.844 69.705 13.714 17.7 9.143 40.01 6.29 60.014z"}));oc.displayName="BitbucketIcon";const ic=()=>f(Ae,{name:"source"},()=>f("path",{d:"M601.92 475.2c0 76.428-8.91 83.754-28.512 99.594-14.652 11.88-43.956 14.058-78.012 16.434-18.81 1.386-40.392 2.97-62.172 6.534-18.612 2.97-36.432 9.306-53.064 17.424V299.772c37.818-21.978 63.36-62.766 63.36-109.692 0-69.894-56.826-126.72-126.72-126.72S190.08 120.186 190.08 190.08c0 46.926 25.542 87.714 63.36 109.692v414.216c-37.818 21.978-63.36 62.766-63.36 109.692 0 69.894 56.826 126.72 126.72 126.72s126.72-56.826 126.72-126.72c0-31.086-11.286-59.598-29.7-81.576 13.266-9.504 27.522-17.226 39.996-19.206 16.038-2.574 32.868-3.762 50.688-5.148 48.312-3.366 103.158-7.326 148.896-44.55 61.182-49.698 74.25-103.158 75.24-187.902V475.2h-126.72zM316.8 126.72c34.848 0 63.36 28.512 63.36 63.36s-28.512 63.36-63.36 63.36-63.36-28.512-63.36-63.36 28.512-63.36 63.36-63.36zm0 760.32c-34.848 0-63.36-28.512-63.36-63.36s28.512-63.36 63.36-63.36 63.36 28.512 63.36 63.36-28.512 63.36-63.36 63.36zM823.68 158.4h-95.04V63.36h-126.72v95.04h-95.04v126.72h95.04v95.04h126.72v-95.04h95.04z"}));ic.displayName="SourceIcon";const Ot=(e,t)=>{var r;const n=(r=(t==null?void 0:t._instance)||Vn())==null?void 0:r.appContext.components;return n?e in n||ot(e)in n||fr(ot(e))in n:!1},Gh=()=>zh(()=>typeof window<"u"&&window.navigator&&"userAgent"in window.navigator),Yh=()=>{const e=Gh();return I(()=>e.value&&/\b(?:Android|iPhone)/i.test(navigator.userAgent))},Nn=e=>{const t=ln();return I(()=>e[t.value])};function Za(e,t){var n;const r=it();return Hl(()=>{r.value=e()},{...t,flush:(n=t==null?void 0:t.flush)!=null?n:"sync"}),on(r)}function lo(e,t){let n,r,o;const i=ee(!0),a=()=>{i.value=!0,o()};fe(e,a,{flush:"sync"});const l=typeof t=="function"?t:t.get,s=typeof t=="function"?void 0:t.set,c=Sl((u,d)=>(r=u,o=d,{get(){return i.value&&(n=l(),i.value=!1),r(),n},set(p){s==null||s(p)}}));return Object.isExtensible(c)&&(c.trigger=a),c}function sn(e){return gl()?(Du(e),!0):!1}function ze(e){return typeof e=="function"?e():en(e)}const _r=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Zh=Object.prototype.toString,Qh=e=>Zh.call(e)==="[object Object]",cr=()=>{},Qa=Jh();function Jh(){var e,t;return _r&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ac(e,t){function n(...r){return new Promise((o,i)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(i)})}return n}const lc=e=>e();function Xh(e,t=!0,n=!0,r=!1){let o=0,i,a=!0,l=cr,s;const c=()=>{i&&(clearTimeout(i),i=void 0,l(),l=cr)};return d=>{const p=ze(e),m=Date.now()-o,g=()=>s=d();return c(),p<=0?(o=Date.now(),g()):(m>p&&(n||!a)?(o=Date.now(),g()):t&&(s=new Promise((w,T)=>{l=r?T:w,i=setTimeout(()=>{o=Date.now(),a=!0,w(g()),c()},Math.max(0,p-m))})),!n&&!i&&(i=setTimeout(()=>a=!0,p)),a=!1,s)}}function ev(e=lc){const t=ee(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...i)=>{t.value&&e(...i)};return{isActive:on(t),pause:n,resume:r,eventFilter:o}}function tv(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function sc(e){return e||Vn()}function nv(...e){if(e.length!==1)return Qr(...e);const t=e[0];return typeof t=="function"?on(Sl(()=>({get:t,set:cr}))):ee(t)}function rv(e,t=200,n=!1,r=!0,o=!1){return ac(Xh(t,n,r,o),e)}function ov(e,t,n={}){const{eventFilter:r=lc,...o}=n;return fe(e,ac(r,t),o)}function iv(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:i,pause:a,resume:l,isActive:s}=ev(r);return{stop:ov(e,t,{...o,eventFilter:i}),pause:a,resume:l,isActive:s}}function so(e,t=!0,n){const r=sc(n);r?ge(e,r):t?e():an(e)}function av(e,t){const n=sc(t);n&&vr(e,n)}function lv(e,t,n={}){const{immediate:r=!0}=n,o=ee(!1);let i=null;function a(){i&&(clearTimeout(i),i=null)}function l(){o.value=!1,a()}function s(...c){a(),o.value=!0,i=setTimeout(()=>{o.value=!1,i=null,e(...c)},ze(t))}return r&&(o.value=!0,_r&&s()),sn(l),{isPending:on(o),start:s,stop:l}}function Ja(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=Ce(e),i=ee(e);function a(l){if(arguments.length)return i.value=l,i.value;{const s=ze(n);return i.value=i.value===s?ze(r):s,i.value}}return o?a:[i,a]}function gt(e){var t;const n=ze(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Ct=_r?window:void 0,cc=_r?window.document:void 0,uc=_r?window.navigator:void 0;function Me(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=Ct):[t,n,r,o]=e,!t)return cr;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const i=[],a=()=>{i.forEach(u=>u()),i.length=0},l=(u,d,p,m)=>(u.addEventListener(d,p,m),()=>u.removeEventListener(d,p,m)),s=fe(()=>[gt(t),ze(o)],([u,d])=>{if(a(),!u)return;const p=Qh(d)?{...d}:d;i.push(...n.flatMap(m=>r.map(g=>l(u,m,g,p))))},{immediate:!0,flush:"post"}),c=()=>{s(),a()};return sn(c),c}function sv(){const e=ee(!1);return Vn()&&ge(()=>{e.value=!0}),e}function zn(e){const t=sv();return I(()=>(t.value,!!e()))}function fc(e,t={}){const{window:n=Ct}=t,r=zn(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const i=ee(!1),a=c=>{i.value=c.matches},l=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",a):o.removeListener(a))},s=Hl(()=>{r.value&&(l(),o=n.matchMedia(ze(e)),"addEventListener"in o?o.addEventListener("change",a):o.addListener(a),i.value=o.matches)});return sn(()=>{s(),l(),o=void 0}),i}function Xa(e,t={}){const{controls:n=!1,navigator:r=uc}=t,o=zn(()=>r&&"permissions"in r);let i;const a=typeof e=="string"?{name:e}:e,l=ee(),s=()=>{i&&(l.value=i.state)},c=tv(async()=>{if(o.value){if(!i)try{i=await r.permissions.query(a),Me(i,"change",s),s()}catch{l.value="prompt"}return i}});return c(),n?{state:l,isSupported:o,query:c}:l}function cv(e={}){const{navigator:t=uc,read:n=!1,source:r,copiedDuring:o=1500,legacy:i=!1}=e,a=zn(()=>t&&"clipboard"in t),l=Xa("clipboard-read"),s=Xa("clipboard-write"),c=I(()=>a.value||i),u=ee(""),d=ee(!1),p=lv(()=>d.value=!1,o);function m(){a.value&&l.value!=="denied"?t.clipboard.readText().then(y=>{u.value=y}):u.value=T()}c.value&&n&&Me(["copy","cut"],m);async function g(y=ze(r)){c.value&&y!=null&&(a.value&&s.value!=="denied"?await t.clipboard.writeText(y):w(y),u.value=y,d.value=!0,p.start())}function w(y){const P=document.createElement("textarea");P.value=y??"",P.style.position="absolute",P.style.opacity="0",document.body.appendChild(P),P.select(),document.execCommand("copy"),P.remove()}function T(){var y,P,b;return(b=(P=(y=document==null?void 0:document.getSelection)==null?void 0:y.call(document))==null?void 0:P.toString())!=null?b:""}return{isSupported:c,text:u,copied:d,copy:g}}const Or=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},xr="__vueuse_ssr_handlers__",uv=fv();function fv(){return xr in Or||(Or[xr]=Or[xr]||{}),Or[xr]}function dv(e,t){return uv[e]||t}function pv(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const hv={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},el="vueuse-storage";function dc(e,t,n,r={}){var o;const{flush:i="pre",deep:a=!0,listenToStorageChanges:l=!0,writeDefaults:s=!0,mergeDefaults:c=!1,shallow:u,window:d=Ct,eventFilter:p,onError:m=S=>{console.error(S)},initOnMounted:g}=r,w=(u?it:ee)(typeof t=="function"?t():t);if(!n)try{n=dv("getDefaultStorage",()=>{var S;return(S=Ct)==null?void 0:S.localStorage})()}catch(S){m(S)}if(!n)return w;const T=ze(t),y=pv(T),P=(o=r.serializer)!=null?o:hv[y],{pause:b,resume:A}=iv(w,()=>M(w.value),{flush:i,deep:a,eventFilter:p});return d&&l&&so(()=>{Me(d,"storage",V),Me(d,el,N),g&&V()}),g||V(),w;function M(S){try{if(S==null)n.removeItem(e);else{const B=P.write(S),Z=n.getItem(e);Z!==B&&(n.setItem(e,B),d&&d.dispatchEvent(new CustomEvent(el,{detail:{key:e,oldValue:Z,newValue:B,storageArea:n}})))}}catch(B){m(B)}}function k(S){const B=S?S.newValue:n.getItem(e);if(B==null)return s&&T!=null&&n.setItem(e,P.write(T)),T;if(!S&&c){const Z=P.read(B);return typeof c=="function"?c(Z,T):y==="object"&&!Array.isArray(Z)?{...T,...Z}:Z}else return typeof B!="string"?B:P.read(B)}function N(S){V(S.detail)}function V(S){if(!(S&&S.storageArea!==n)){if(S&&S.key==null){w.value=T;return}if(!(S&&S.key!==e)){b();try{(S==null?void 0:S.newValue)!==P.write(w.value)&&(w.value=k(S))}catch(B){m(B)}finally{S?an(A):A()}}}}}function vv(e){return fc("(prefers-color-scheme: dark)",e)}function mv(e,t,n={}){const{window:r=Ct,...o}=n;let i;const a=zn(()=>r&&"MutationObserver"in r),l=()=>{i&&(i.disconnect(),i=void 0)},s=fe(()=>gt(e),d=>{l(),a.value&&r&&d&&(i=new MutationObserver(t),i.observe(d,o))},{immediate:!0}),c=()=>i==null?void 0:i.takeRecords(),u=()=>{l(),s()};return sn(u),{isSupported:a,stop:u,takeRecords:c}}function _v(e,t,n={}){const{window:r=Ct,...o}=n;let i;const a=zn(()=>r&&"ResizeObserver"in r),l=()=>{i&&(i.disconnect(),i=void 0)},s=I(()=>Array.isArray(e)?e.map(d=>gt(d)):[gt(e)]),c=fe(s,d=>{if(l(),a.value&&r){i=new ResizeObserver(t);for(const p of d)p&&i.observe(p,o)}},{immediate:!0,flush:"post",deep:!0}),u=()=>{l(),c()};return sn(u),{isSupported:a,stop:u}}function gv(e,t={width:0,height:0},n={}){const{window:r=Ct,box:o="content-box"}=n,i=I(()=>{var d,p;return(p=(d=gt(e))==null?void 0:d.namespaceURI)==null?void 0:p.includes("svg")}),a=ee(t.width),l=ee(t.height),{stop:s}=_v(e,([d])=>{const p=o==="border-box"?d.borderBoxSize:o==="content-box"?d.contentBoxSize:d.devicePixelContentBoxSize;if(r&&i.value){const m=gt(e);if(m){const g=r.getComputedStyle(m);a.value=Number.parseFloat(g.width),l.value=Number.parseFloat(g.height)}}else if(p){const m=Array.isArray(p)?p:[p];a.value=m.reduce((g,{inlineSize:w})=>g+w,0),l.value=m.reduce((g,{blockSize:w})=>g+w,0)}else a.value=d.contentRect.width,l.value=d.contentRect.height},n);so(()=>{const d=gt(e);d&&(a.value="offsetWidth"in d?d.offsetWidth:t.width,l.value="offsetHeight"in d?d.offsetHeight:t.height)});const c=fe(()=>gt(e),d=>{a.value=d?t.width:0,l.value=d?t.height:0});function u(){s(),c()}return{width:a,height:l,stop:u}}const tl=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function Mi(e,t={}){const{document:n=cc,autoExit:r=!1}=t,o=I(()=>{var y;return(y=gt(e))!=null?y:n==null?void 0:n.querySelector("html")}),i=ee(!1),a=I(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(y=>n&&y in n||o.value&&y in o.value)),l=I(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(y=>n&&y in n||o.value&&y in o.value)),s=I(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(y=>n&&y in n||o.value&&y in o.value)),c=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(y=>n&&y in n),u=zn(()=>o.value&&n&&a.value!==void 0&&l.value!==void 0&&s.value!==void 0),d=()=>c?(n==null?void 0:n[c])===o.value:!1,p=()=>{if(s.value){if(n&&n[s.value]!=null)return n[s.value];{const y=o.value;if((y==null?void 0:y[s.value])!=null)return!!y[s.value]}}return!1};async function m(){if(!(!u.value||!i.value)){if(l.value)if((n==null?void 0:n[l.value])!=null)await n[l.value]();else{const y=o.value;(y==null?void 0:y[l.value])!=null&&await y[l.value]()}i.value=!1}}async function g(){if(!u.value||i.value)return;p()&&await m();const y=o.value;a.value&&(y==null?void 0:y[a.value])!=null&&(await y[a.value](),i.value=!0)}async function w(){await(i.value?m():g())}const T=()=>{const y=p();(!y||y&&d())&&(i.value=y)};return Me(n,tl,T,!1),Me(()=>gt(o),tl,T,!1),r&&sn(m),{isSupported:u,isFullscreen:i,enter:g,exit:m,toggle:w}}function Ro(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Io(e,t=cr,n={}){const{immediate:r=!0,manual:o=!1,type:i="text/javascript",async:a=!0,crossOrigin:l,referrerPolicy:s,noModule:c,defer:u,document:d=cc,attrs:p={}}=n,m=ee(null);let g=null;const w=P=>new Promise((b,A)=>{const M=V=>(m.value=V,b(V),V);if(!d){b(!1);return}let k=!1,N=d.querySelector(`script[src="${ze(e)}"]`);N?N.hasAttribute("data-loaded")&&M(N):(N=d.createElement("script"),N.type=i,N.async=a,N.src=ze(e),u&&(N.defer=u),l&&(N.crossOrigin=l),c&&(N.noModule=c),s&&(N.referrerPolicy=s),Object.entries(p).forEach(([V,S])=>N==null?void 0:N.setAttribute(V,S)),k=!0),N.addEventListener("error",V=>A(V)),N.addEventListener("abort",V=>A(V)),N.addEventListener("load",()=>{N.setAttribute("data-loaded","true"),t(N),M(N)}),k&&(N=d.head.appendChild(N)),P||M(N)}),T=(P=!0)=>(g||(g=w(P)),g),y=()=>{if(!d)return;g=null,m.value&&(m.value=null);const P=d.querySelector(`script[src="${ze(e)}"]`);P&&d.head.removeChild(P)};return r&&!o&&so(T),o||av(y),{scriptTag:m,load:T,unload:y}}function pc(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const kr=new WeakMap;function hc(e,t=!1){const n=ee(t);let r=null,o;fe(nv(e),l=>{const s=Ro(ze(l));if(s){const c=s;kr.get(c)||kr.set(c,o),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const i=()=>{const l=Ro(ze(e));!l||n.value||(Qa&&(r=Me(l,"touchmove",s=>{bv(s)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},a=()=>{var l;const s=Ro(ze(e));!s||!n.value||(Qa&&(r==null||r()),s.style.overflow=(l=kr.get(s))!=null?l:"",kr.delete(s),n.value=!1)};return sn(a),I({get(){return n.value},set(l){l?i():a()}})}function yv(e={}){const{window:t=Ct,behavior:n="auto"}=e;if(!t)return{x:ee(0),y:ee(0)};const r=ee(t.scrollX),o=ee(t.scrollY),i=I({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),a=I({get(){return o.value},set(l){scrollTo({top:l,behavior:n})}});return Me(t,"scroll",()=>{r.value=t.scrollX,o.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:a}}function Ev(e={}){const{window:t=Ct,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:o=!0,includeScrollbar:i=!0}=e,a=ee(n),l=ee(r),s=()=>{t&&(i?(a.value=t.innerWidth,l.value=t.innerHeight):(a.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(s(),so(s),Me("resize",s,{passive:!0}),o){const c=fc("(orientation: portrait)");fe(c,()=>s())}return{width:a,height:l}}const vc=({type:e="info",text:t="",vertical:n,color:r},{slots:o})=>{var i;return f("span",{class:["vp-badge",e,{diy:r}],style:{verticalAlign:n??!1,backgroundColor:r??!1}},((i=o.default)==null?void 0:i.call(o))||t)};vc.displayName="Badge";var wv=U({name:"FontIcon",props:{icon:{type:String,default:""},color:{type:String,default:""},size:{type:[String,Number],default:""}},setup(e){const t=I(()=>{const r=["font-icon icon"],o=`fas fa-${e.icon}`;return r.push("fa-fw fa-sm"),r.push(e.icon.includes(" ")?e.icon:o),r}),n=I(()=>{const r={};return e.color&&(r.color=e.color),e.size&&(r["font-size"]=Number.isNaN(Number(e.size))?e.size:`${e.size}px`),$n(r).length?r:null});return()=>e.icon?f("span",{key:e.icon,class:t.value,style:n.value}):null}});const mc=()=>f(Ae,{name:"back-to-top"},()=>[f("path",{d:"M512 843.2c-36.2 0-66.4-13.6-85.8-21.8-10.8-4.6-22.6 3.6-21.8 15.2l7 102c.4 6.2 7.6 9.4 12.6 5.6l29-22c3.6-2.8 9-1.8 11.4 2l41 64.2c3 4.8 10.2 4.8 13.2 0l41-64.2c2.4-3.8 7.8-4.8 11.4-2l29 22c5 3.8 12.2.6 12.6-5.6l7-102c.8-11.6-11-20-21.8-15.2-19.6 8.2-49.6 21.8-85.8 21.8z"}),f("path",{d:"m795.4 586.2-96-98.2C699.4 172 513 32 513 32S324.8 172 324.8 488l-96 98.2c-3.6 3.6-5.2 9-4.4 14.2L261.2 824c1.8 11.4 14.2 17 23.6 10.8L419 744s41.4 40 94.2 40c52.8 0 92.2-40 92.2-40l134.2 90.8c9.2 6.2 21.6.6 23.6-10.8l37-223.8c.4-5.2-1.2-10.4-4.8-14zM513 384c-34 0-61.4-28.6-61.4-64s27.6-64 61.4-64c34 0 61.4 28.6 61.4 64S547 384 513 384z"})]);mc.displayName="BackToTopIcon";var Tv={"/zh/":{backToTop:"返回顶部"},"/":{backToTop:"Back to top"}},Av=U({name:"BackToTop",props:{threshold:{type:Number,default:100},noProgress:Boolean},setup(e){const t=Pe(),n=Nn(Tv),r=it(),{height:o}=gv(r),{height:i}=Ev(),{y:a}=yv(),l=I(()=>t.value.backToTop!==!1&&a.value>e.threshold),s=I(()=>a.value/(o.value-i.value)*100);return ge(()=>{r.value=document.body}),()=>f(xt,{name:"fade"},()=>l.value?f("button",{type:"button",class:"vp-back-to-top-button","aria-label":n.value.backToTop,"data-balloon-pos":"left",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[e.noProgress?null:f("span",{class:"vp-scroll-progress",role:"progressbar","aria-labelledby":"loadinglabel","aria-valuenow":s.value},f("svg",f("circle",{cx:"50%",cy:"50%",style:{"stroke-dasharray":`calc(${Math.PI*s.value}% - ${4*Math.PI}px) calc(${Math.PI*100}% - ${4*Math.PI}px)`}}))),f(mc)]):null)}});const Lv=at({enhance:({app:e})=>{Ot("Badge")||e.component("Badge",vc),Ot("FontIcon")||e.component("FontIcon",wv)},setup:()=>{Io("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/brands.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}}),Io("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/solid.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}}),Io("https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/js/fontawesome.min.js",()=>{},{attrs:{"data-auto-replace-svg":"nest"}})},rootComponents:[()=>f(Av,{})]});function Pv(e,t,n){var r,o,i;t===void 0&&(t=50),n===void 0&&(n={});var a=(r=n.isImmediate)!=null&&r,l=(o=n.callback)!=null&&o,s=n.maxWait,c=Date.now(),u=[];function d(){if(s!==void 0){var m=Date.now()-c;if(m+t>=s)return s-m}return t}var p=function(){var m=[].slice.call(arguments),g=this;return new Promise(function(w,T){var y=a&&i===void 0;if(i!==void 0&&clearTimeout(i),i=setTimeout(function(){if(i=void 0,c=Date.now(),!a){var b=e.apply(g,m);l&&l(b),u.forEach(function(A){return(0,A.resolve)(b)}),u=[]}},d()),y){var P=e.apply(g,m);return l&&l(P),w(P)}u.push({resolve:w,reject:T})})};return p.cancel=function(m){i!==void 0&&clearTimeout(i),u.forEach(function(g){return(0,g.reject)(m)}),u=[]},p}const Rv=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const o=Ge(),a=Pv(()=>{var w,T;const l=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(l-0)p.some(P=>P.hash===y.hash));for(let y=0;y=(((w=P.parentElement)==null?void 0:w.offsetTop)??0)-r,M=!b||l<(((T=b.parentElement)==null?void 0:T.offsetTop)??0)-r;if(!(A&&M))continue;const N=decodeURIComponent(o.currentRoute.value.hash),V=decodeURIComponent(P.hash);if(N===V)return;if(d){for(let S=y+1;S{window.addEventListener("scroll",a)}),yi(()=>{window.removeEventListener("scroll",a)})},nl=async(e,t)=>{const{scrollBehavior:n}=e.options;e.options.scrollBehavior=void 0,await e.replace({query:e.currentRoute.value.query,hash:t}).finally(()=>e.options.scrollBehavior=n)},Iv=".vp-sidebar-link, .toc-link",Ov=".header-anchor",xv=200,kv=5,Cv=at({setup(){Rv({headerLinkSelector:Iv,headerAnchorSelector:Ov,delay:xv,offset:kv})}});let _c=e=>ue(e.title)?{title:e.title}:null;const gc=Symbol(""),Dv=e=>{_c=e},Sv=()=>_e(gc),Vv=e=>{e.provide(gc,_c)};var Mv={"/zh/":{title:"目录",empty:"暂无目录"},"/":{title:"Catalog",empty:"No catalog"}},$v=U({name:"AutoCatalog",props:{base:{type:String,default:""},level:{type:Number,default:3},index:Boolean,hideHeading:Boolean},setup(e){const t=Sv(),n=Nn(Mv),r=de(),o=Ge(),i=Ps(),a=ee(o.getRoutes().map(({meta:c,path:u})=>{const d=t(c);if(!d)return null;const p=u.split("/").length;return{level:fn(u,"/")?p-2:p-1,base:u.replace(/\/[^/]+\/?$/,"/"),path:u,...d}}).filter(c=>Ys(c)&&ue(c.title))),l=()=>{const c=e.base?tp(_s(e.base)):r.value.path.replace(/\/[^/]+$/,"/"),u=c.split("/").length-2,d=[];return a.value.filter(({level:p,path:m})=>{if(!xn(m,c)||m===c)return!1;if(c==="/"){const g=$n(i.value.locales).filter(w=>w!=="/");if(m==="/404.html"||g.some(w=>xn(m,w)))return!1}return p-u<=e.level&&(fn(m,".html")&&!fn(m,"/index.html")||fn(m,"/"))}).sort(({title:p,level:m,path:g,order:w},{title:T,level:y,path:P,order:b})=>m-y||(fn(g,"/")?-1:fn(P,"/")?1:Po(w)?Po(b)?w>0?b>0?w-b:-1:b<0?w-b:1:w:Po(b)?b:p.localeCompare(T))).forEach(p=>{var w;const{base:m,level:g}=p;switch(g-u){case 1:d.push(p);break;case 2:{const T=d.find(y=>y.path===m);T&&(T.children??(T.children=[])).push(p);break}default:{const T=d.find(y=>y.path===m.replace(/\/[^/]+\/$/,"/"));if(T){const y=(w=T.children)==null?void 0:w.find(P=>P.path===m);y&&(y.children??(y.children=[])).push(p)}}}}),d},s=I(()=>l());return()=>{const c=s.value.some(u=>u.children);return f("div",{class:["vp-catalog-wrapper",{index:e.index}]},[e.hideHeading?null:f("h2",{class:"vp-catalog-main-title"},n.value.title),s.value.length?f(e.index?"ol":"ul",{class:["vp-catalogs",{deep:c}]},s.value.map(({children:u=[],title:d,path:p,content:m})=>{const g=f(et,{class:"vp-catalog-title",to:p},()=>m?f(m):d);return f("li",{class:"vp-catalog"},c?[f("h3",{id:d,class:["vp-catalog-child-title",{"has-children":u.length}]},[f("a",{href:`#${d}`,class:"header-anchor","aria-hidden":!0},"#"),g]),u.length?f(e.index?"ol":"ul",{class:"vp-child-catalogs"},u.map(({children:w=[],content:T,path:y,title:P})=>f("li",{class:"vp-child-catalog"},[f("div",{class:["vp-catalog-sub-title",{"has-children":w.length}]},[f("a",{href:`#${P}`,class:"header-anchor"},"#"),f(et,{class:"vp-catalog-title",to:y},()=>T?f(T):P)]),w.length?f(e.index?"ol":"div",{class:e.index?"vp-sub-catalogs":"vp-sub-catalogs-wrapper"},w.map(({content:b,path:A,title:M})=>e.index?f("li",{class:"vp-sub-catalog"},f(et,{to:A},()=>b?f(b):M)):f(et,{class:"vp-sub-catalog-link",to:A},()=>b?f(b):M))):null]))):null]:f("div",{class:"vp-catalog-child-title"},g))})):f("p",{class:"vp-empty-catalog"},n.value.empty)])}}}),Nv=at({enhance:({app:e})=>{Vv(e),Ot("AutoCatalog",e)||e.component("AutoCatalog",$v)}});const zv=f("svg",{class:"external-link-icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},[f("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}),f("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"})]),bc=U({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const t=ln(),n=I(()=>e.locales[t.value]??{openInNewWindow:"open in new window"});return()=>f("span",[zv,f("span",{class:"external-link-icon-sr-only"},n.value.openInNewWindow)])}});var Bv={};const Fv=Bv,Hv=at({enhance({app:e}){e.component("ExternalLinkIcon",f(bc,{locales:Fv}))}});/** - * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress - * @license MIT - */const se={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const t=se.isStarted();e=Oo(e,se.settings.minimum,1),se.status=e===1?null:e;const n=se.render(!t),r=n.querySelector(se.settings.barSelector),o=se.settings.speed,i=se.settings.easing;return n.offsetWidth,jv(a=>{Cr(r,{transform:"translate3d("+rl(e)+"%,0,0)",transition:"all "+o+"ms "+i}),e===1?(Cr(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){Cr(n,{transition:"all "+o+"ms linear",opacity:"0"}),setTimeout(function(){se.remove(),a()},o)},o)):setTimeout(()=>a(),o)}),se},isStarted:()=>typeof se.status=="number",start:()=>{se.status||se.set(0);const e=()=>{setTimeout(()=>{se.status&&(se.trickle(),e())},se.settings.trickleSpeed)};return se.settings.trickle&&e(),se},done:e=>!e&&!se.status?se:se.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=se.status;return t?(typeof e!="number"&&(e=(1-t)*Oo(Math.random()*t,.1,.95)),t=Oo(t+e,0,.994),se.set(t)):se.start()},trickle:()=>se.inc(Math.random()*se.settings.trickleRate),render:e=>{if(se.isRendered())return document.getElementById("nprogress");ol(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=se.settings.template;const n=t.querySelector(se.settings.barSelector),r=e?"-100":rl(se.status||0),o=document.querySelector(se.settings.parent);return Cr(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),o!==document.body&&ol(o,"nprogress-custom-parent"),o==null||o.appendChild(t),t},remove:()=>{il(document.documentElement,"nprogress-busy"),il(document.querySelector(se.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&Wv(e)},isRendered:()=>!!document.getElementById("nprogress")},Oo=(e,t,n)=>en?n:e,rl=e=>(-1+e)*100,jv=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),Cr=function(){const e=["Webkit","O","Moz","ms"],t={};function n(a){return a.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(l,s){return s.toUpperCase()})}function r(a){const l=document.body.style;if(a in l)return a;let s=e.length;const c=a.charAt(0).toUpperCase()+a.slice(1);let u;for(;s--;)if(u=e[s]+c,u in l)return u;return a}function o(a){return a=n(a),t[a]??(t[a]=r(a))}function i(a,l,s){l=o(l),a.style[l]=s}return function(a,l){for(const s in l){const c=l[s];c!==void 0&&Object.prototype.hasOwnProperty.call(l,s)&&i(a,s,c)}}}(),yc=(e,t)=>(typeof e=="string"?e:$i(e)).indexOf(" "+t+" ")>=0,ol=(e,t)=>{const n=$i(e),r=n+t;yc(n,t)||(e.className=r.substring(1))},il=(e,t)=>{const n=$i(e);if(!yc(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},$i=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),Wv=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)},qv=()=>{ge(()=>{const e=Ge(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||se.start()}),e.afterEach(n=>{t.add(n.path),se.done()})})},Uv=at({setup(){qv()}}),Kv=JSON.parse(`{"encrypt":{},"logo":"/logo.svg","author":{"name":"ZLMediaKit","url":"https://docs.ZLMediaKit.com"},"repo":"ZLMediaKit/ZLMediaKit","docsRepo":"ZLMediaKit/docs","docsDir":"src","navbarLayout":{"start":["Brand"],"center":[],"end":["Links","Language","Repo","Outlook","Search"]},"locales":{"/zh/":{"lang":"zh-CN","navbarLocales":{"langName":"简体中文","selectLangAriaLabel":"选择语言"},"metaLocales":{"author":"作者","date":"写作日期","origin":"原创","views":"访问量","category":"分类","tag":"标签","readingTime":"阅读时间","words":"字数","toc":"此页内容","prev":"上一页","next":"下一页","lastUpdated":"上次编辑于","contributors":"贡献者","editLink":"在 GitHub 上编辑此页","print":"打印"},"outlookLocales":{"themeColor":"主题色","darkmode":"外观","fullscreen":"全屏"},"routeLocales":{"skipToContent":"跳至主要內容","notFoundTitle":"页面不存在","notFoundMsg":["这里什么也没有","我们是怎么来到这儿的?","这 是 四 零 四 !","看起来你访问了一个失效的链接"],"back":"返回上一页","home":"带我回家","openInNewWindow":"Open in new window"},"navbar":["/zh/","/zh/guide/","/zh/tutorial/",{"text":"参考","icon":"lightbulb","prefix":"/zh/reference/","children":["test","resources","documents","development_log"]},{"text":"了解更多","icon":"laptop-code","prefix":"/zh/more/","children":["collaborative_projects","license","thanks","contact","use_cases"]}],"sidebar":{"/zh/":["","tutorial/",{"text":"指南","icon":"book","prefix":"guide/","children":"structure"},{"text":"参考","icon":"laptop-code","prefix":"reference/","link":"reference/","children":"structure"},{"text":"了解更多","icon":"laptop-code","prefix":"more/","link":"more/","children":"structure"}]},"footer":"MIT Licensed","displayFooter":true},"/":{"lang":"en-US","navbarLocales":{"langName":"English","selectLangAriaLabel":"Select language"},"metaLocales":{"author":"Author","date":"Writing Date","origin":"Original","views":"Page views","category":"Category","tag":"Tag","readingTime":"Reading Time","words":"Words","toc":"On This Page","prev":"Prev","next":"Next","lastUpdated":"Last update","contributors":"Contributors","editLink":"Edit this page on GitHub","print":"Print"},"outlookLocales":{"themeColor":"Theme Color","darkmode":"Theme Mode","fullscreen":"Full Screen"},"routeLocales":{"skipToContent":"Skip to main content","notFoundTitle":"Page not found","notFoundMsg":["There’s nothing here.","How did we get here?","That’s a Four-Oh-Four.","Looks like we've got some broken links."],"back":"Go back","home":"Take me home","openInNewWindow":"Open in new window"},"navbar":["/","/guide/","/tutorial/",{"text":"Reference","icon":"lightbulb","prefix":"/reference/","children":["test","resources","documents","development_log"]},{"text":"More","icon":"lightbulb","prefix":"/more/","children":["collaborative_projects","license","thanks","contact","use_cases"]}],"sidebar":{"/":["","tutorial/",{"text":"Docs","icon":"book","prefix":"guide/","children":"structure"},{"text":"Reference","icon":"laptop-code","prefix":"reference/","link":"reference/","children":"structure"},{"text":"More","icon":"laptop-code","prefix":"more/","link":"more/","children":"structure"}]},"footer":"MIT Licensed","displayFooter":true}}}`),Gv=ee(Kv),Ec=()=>Gv,wc=Symbol(""),Yv=()=>{const e=_e(wc);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},Zv=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},Qv=at({enhance({app:e}){const t=Ec(),n=e._context.provides[Oi],r=I(()=>Zv(t.value,n.value));e.provide(wc,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}});var Jv={provider:"Giscus",lightTheme:"https://unpkg.com/vuepress-theme-hope@2.0.0-rc.4/templates/giscus/light.css",darkTheme:"https://unpkg.com/vuepress-theme-hope@2.0.0-rc.4/templates/giscus/dark.css",repo:"ZLMediaKit/docs",repoId:"R_kgDOKboWmQ",category:"Announcements",categoryId:"DIC_kwDOKboWmc4CZ_77"};const Xv=Jv;let em=Xv;const Tc=Symbol(""),Ac=()=>_e(Tc),tm=Ac,nm=e=>{e.provide(Tc,em)},al=["ar","ca","de","en","eo","es","fa","fr","he","id","it","ja","ko","nl","pl","pt","ro","ru","th","tr","uk","vi","zh-CN","zh-TW"];var rm=U({name:"GiscusComment",props:{identifier:{type:String,required:!0},darkmode:Boolean},setup(e){const t=tm(),n=!!(t.repo&&t.repoId&&t.category&&t.categoryId),{repo:r,repoId:o,category:i,categoryId:a}=t,l=ee(!1),s=I(()=>{const u=Ii().value;if(al.includes(u))return u;const d=u.split("-")[0];return al.includes(d)?d:"en"}),c=I(()=>({repo:r,repoId:o,category:i,categoryId:a,lang:s.value,theme:e.darkmode?t.darkTheme||"dark":t.lightTheme||"light",mapping:t.mapping||"pathname",term:e.identifier,inputPosition:t.inputPosition||"top",reactionsEnabled:t.reactionsEnabled===!1?"0":"1",strict:t.strict===!1?"0":"1",loading:t.lazyLoading===!1?"eager":"lazy",emitMetadata:"0"}));return ge(async()=>{await h(()=>import("./giscus-unEZQsJ0.js"),__vite__mapDeps([])),l.value=!0}),()=>n?f("div",{id:"comment",class:["giscus-wrapper",{"input-top":t.inputPosition!=="bottom"}]},l.value?f("giscus-widget",c.value):f(Di)):null}}),om=U({name:"CommentService",props:{darkmode:Boolean},setup(e){const t=Ac(),n=de(),r=Pe(),o=t.comment!==!1,i=I(()=>r.value.comment||o&&r.value.comment!==!1);return()=>f(rm,{identifier:r.value.commentID||n.value.path,darkmode:e.darkmode,style:{display:i.value?"block":"none"}})}}),im=at({enhance:({app:e})=>{nm(e),e.component("CommentService",om)}}),am={"/zh/":{copy:"复制代码",copied:"已复制",hint:"复制成功"},"/":{copy:"Copy code",copied:"Copied",hint:"Copied successfully"}},lm=['.theme-hope-content div[class*="language-"] pre'];const sm=800,cm=2e3,um=am,fm=!1,dm=lm,ll=!1,xo=new Map,pm=()=>{const{copy:e}=cv({legacy:!0}),t=Nn(um),n=de(),r=Yh(),o=l=>{if(!l.hasAttribute("copy-code-registered")){const s=document.createElement("button");s.type="button",s.classList.add("copy-code-button"),s.innerHTML='
',s.setAttribute("aria-label",t.value.copy),s.setAttribute("data-copied",t.value.copied),l.parentElement&&l.parentElement.insertBefore(s,l),l.setAttribute("copy-code-registered","")}},i=()=>an().then(()=>new Promise(l=>{setTimeout(()=>{dm.forEach(s=>{document.querySelectorAll(s).forEach(o)}),l()},sm)})),a=(l,s,c)=>{let{innerText:u=""}=s;/language-(shellscript|shell|bash|sh|zsh)/.test(l.classList.toString())&&(u=u.replace(/^ *(\$|>) /gm,"")),e(u).then(()=>{c.classList.add("copied"),clearTimeout(xo.get(c));const d=setTimeout(()=>{c.classList.remove("copied"),c.blur(),xo.delete(c)},cm);xo.set(c,d)})};ge(()=>{(!r.value||ll)&&i(),Me("click",l=>{const s=l.target;if(s.matches('div[class*="language-"] > button.copy')){const c=s.parentElement,u=s.nextElementSibling;u&&a(c,u,s)}else if(s.matches('div[class*="language-"] div.copy-icon')){const c=s.parentElement,u=c.parentElement,d=c.nextElementSibling;d&&a(u,d,c)}}),fe(()=>n.value.path,()=>{(!r.value||ll)&&i()})})};var hm=at({setup:()=>{pm()}});const vm=()=>{Me("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})})};let mm={};const Lc=Symbol(""),_m=()=>_e(Lc),gm=e=>{e.provide(Lc,mm)},sl=()=>{const e=document.documentElement;return e.classList.contains("dark")||e.getAttribute("data-theme")==="dark"},dn={useMaxWidth:!1},bm=e=>({dark:e,background:e?"#1e1e1e":"#fff",primaryColor:e?"#389d70":"#4abf8a",primaryBorderColor:e?"#389d70":"#4abf8a",primaryTextColor:e?"#fff":"#000",secondaryColor:"#ffb500",secondaryBorderColor:e?"#fff":"#000",secondaryTextColor:e?"#ddd":"#333",tertiaryColor:e?"#282828":"#efeef4",tertiaryBorderColor:e?"#bbb":"#242424",tertiaryTextColor:e?"#ddd":"#333",noteBkgColor:e?"#f6d365":"#fff5ad",noteTextColor:"#242424",noteBorderColor:e?"#f6d365":"#333",lineColor:e?"#d3d3d3":"#333",textColor:e?"#fff":"#242424",mainBkg:e?"#389d70":"#4abf8a",errorBkgColor:"#eb4d5d",errorTextColor:"#fff",nodeBorder:e?"#389d70":"#4abf8a",nodeTextColor:e?"#fff":"#242424",signalTextColor:e?"#9e9e9e":"#242424",classText:"#fff",labelColor:"#fff",attributeBackgroundColorEven:e?"#0d1117":"#fff",attributeBackgroundColorOdd:e?"#161b22":"#f8f8f8",fillType0:e?"#cf1322":"#f1636e",fillType1:"#f39c12",fillType2:"#2ecc71",fillType3:"#fa541c",fillType4:"#25a55b",fillType5:"#13c2c2",fillType6:"#096dd9",fillType7:"#aa6fe9"});var ym=U({name:"Mermaid",props:{id:{type:String,required:!0},code:{type:String,required:!0},title:{type:String,default:""}},setup(e){const{themeVariables:t,...n}=_m(),r=it(),o=I(()=>Ya(e.code)),i=ee(""),a=ee(!1);let l=!1;const s=async()=>{const[{default:d}]=await Promise.all([h(()=>import("./mermaid.core-ygY5oRaR.js").then(p=>p.b7),__vite__mapDeps([])),l?Promise.resolve():(l=!0,new Promise(p=>setTimeout(p,800)))]);d.initialize({theme:"base",themeVariables:{...bm(a.value),...Bh(t)?t(a.value):t},flowchart:dn,sequence:dn,journey:dn,gantt:dn,er:dn,pie:dn,...n,startOnLoad:!1}),i.value=(await d.render(e.id,o.value)).svg},c=()=>{const{body:d}=document,p=document.createElement("div");p.classList.add("mermaid-preview"),p.innerHTML=i.value,d.appendChild(p),p.addEventListener("click",()=>{d.removeChild(p)})},u=()=>{const d=`data:image/svg+xml;charset=utf8,${i.value.replace(/
/g,"
").replace(/%/g,"%25").replace(/"/g,"%22").replace(/'/g,"%27").replace(/&/g,"%26").replace(/#/g,"%23").replace(/{/g,"%7B").replace(/}/g,"%7D").replace(//g,"%3E")}`,p=document.createElement("a");p.setAttribute("href",d),p.setAttribute("download",`${e.title?Ya(e.title):e.id}.svg`),p.click()};return ge(()=>{a.value=sl(),s(),mv(document.documentElement,()=>{a.value=sl()},{attributeFilter:["class","data-theme"],attributes:!0}),fe(a,()=>s())}),()=>[f("div",{class:"mermaid-actions"},[f("button",{class:"preview-button",onClick:()=>c(),title:"preview",innerHTML:''}),f("button",{class:"download-button",onClick:()=>u(),title:"download",innerHTML:''})]),f("div",{ref:r,class:"mermaid-wrapper"},i.value?f("div",{class:"mermaid-content",innerHTML:i.value}):f(Di,{class:"mermaid-loading",height:96}))]}});const ko=dc("VUEPRESS_TAB_STORE",{});var Em=U({name:"Tabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=ee(e.active),r=it([]),o=()=>{e.tabId&&(ko.value[e.tabId]=e.data[n.value].id)},i=(c=n.value)=>{n.value=c{n.value=c>0?c-1:r.value.length-1,r.value[n.value].focus()},l=(c,u)=>{c.key===" "||c.key==="Enter"?(c.preventDefault(),n.value=u):c.key==="ArrowRight"?(c.preventDefault(),i()):c.key==="ArrowLeft"&&(c.preventDefault(),a()),o()},s=()=>{if(e.tabId){const c=e.data.findIndex(({id:u})=>ko.value[e.tabId]===u);if(c!==-1)return c}return e.active};return ge(()=>{n.value=s(),fe(()=>ko.value[e.tabId],(c,u)=>{if(e.tabId&&c!==u){const d=e.data.findIndex(({id:p})=>p===c);d!==-1&&(n.value=d)}})}),()=>e.data.length?f("div",{class:"vp-tabs"},[f("div",{class:"vp-tabs-nav",role:"tablist"},e.data.map(({id:c},u)=>{const d=u===n.value;return f("button",{type:"button",ref:p=>{p&&(r.value[u]=p)},class:["vp-tab-nav",{active:d}],role:"tab","aria-controls":`tab-${e.id}-${u}`,"aria-selected":d,onClick:()=>{n.value=u,o()},onKeydown:p=>l(p,u)},t[`title${u}`]({value:c,isActive:d}))})),e.data.map(({id:c},u)=>{const d=u===n.value;return f("div",{class:["vp-tab",{active:d}],id:`tab-${e.id}-${u}`,role:"tabpanel","aria-expanded":d},[f("div",{class:"vp-tab-title"},t[`title${u}`]({value:c,isActive:d})),t[`tab${u}`]({value:c,isActive:d})])})]):null}});const wm=at({enhance:({app:e})=>{gm(e),e.component("Mermaid",ym),e.component("Tabs",Em)},setup:()=>{vm()}});let Tm={};const Pc=Symbol(""),Am=()=>_e(Pc),Lm=e=>{e.provide(Pc,Tm)};var Pm={"/zh/":{closeTitle:"关闭",downloadTitle:"下载图片",fullscreenTitle:"切换全屏",zoomTitle:"缩放",arrowPrevTitle:"上一个 (左箭头)",arrowNextTitle:"下一个 (右箭头)"},"/":{closeTitle:"Close",downloadTitle:"Download Image",fullscreenTitle:"Switch to full screen",zoomTitle:"Zoom in/out",arrowPrevTitle:"Prev (Arrow Left)",arrowNextTitle:"Next (Arrow Right)"}};const Rm=".theme-hope-content :not(a) > img:not([no-view])",Im=Pm,Om=800,xm='
',km=e=>ue(e)?Array.from(document.querySelectorAll(e)):e.map(t=>Array.from(document.querySelectorAll(t))).flat(),Rc=e=>new Promise((t,n)=>{e.complete?t({type:"image",element:e,src:e.src,width:e.naturalWidth,height:e.naturalHeight,alt:e.alt,msrc:e.src}):(e.onload=()=>t(Rc(e)),e.onerror=r=>n(r))}),Cm=()=>{const e=Nn(Im),t=Pe(),n=de(),{isSupported:r,toggle:o}=Mi(),i=Am();let a;const l=I(()=>t.value.photoSwipe===!1?!1:t.value.photoSwipe||Rm),s=u=>{u.on("uiRegister",()=>{r&&u.ui.registerElement({name:"fullscreen",order:7,isButton:!0,html:'',onClick:()=>{o()}}),u.ui.registerElement({name:"download",order:8,isButton:!0,tagName:"a",html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-download"},onInit:(d,p)=>{d.setAttribute("download",""),d.setAttribute("target","_blank"),d.setAttribute("rel","noopener"),p.on("change",()=>{d.setAttribute("href",p.currSlide.data.src)})}}),u.ui.registerElement({name:"bulletsIndicator",className:"photo-swipe-bullets-indicator",appendTo:"wrapper",onInit:(d,p)=>{const m=[];let g=-1;for(let w=0;w{p.goTo(m.indexOf(y.target))},m.push(T),d.appendChild(T)}p.on("change",()=>{g>=0&&m[g].classList.remove("active"),m[p.currIndex].classList.add("active"),g=p.currIndex})}})})},c=async()=>{if(l.value)return Promise.all([h(()=>import("./photoswipe.esm-i2ohwMnJ.js"),__vite__mapDeps([])),an().then(()=>new Promise(u=>setTimeout(u,Om)).then(()=>km(l.value)))]).then(([{default:u},d])=>{const p=d.map(m=>({html:xm,element:m,msrc:m.src}));d.forEach((m,g)=>{const w=()=>{a=new u({preloaderDelay:0,showHideAnimationType:"zoom",...e.value,...i,dataSource:p,index:g,closeOnVerticalDrag:!0,wheelToZoom:!1}),s(a),a.addFilter("thumbEl",()=>m),a.addFilter("placeholderSrc",()=>m.src),a.init()};m.style.cursor="zoom-in",m.addEventListener("click",()=>{w()}),m.addEventListener("keypress",({key:T})=>{T==="Enter"&&w()})}),d.forEach((m,g)=>{Rc(m).then(w=>{p.splice(g,1,w),a==null||a.refreshSlideContent(g)})})})};ge(()=>{Me("wheel",()=>{a==null||a.close()}),fe(()=>n.value.path,c,{immediate:!0})})};var Dm=at({enhance:({app:e})=>{Lm(e)},setup:()=>{Cm()}});function Sm(e){return{all:e=e||new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(o){o(n)}),(r=e.get("*"))&&r.slice().map(function(o){o(t,n)})}}}const Ic=Symbol(""),Vm=()=>{const e=_e(Ic);if(!e)throw new Error("usePWAEvent() is called without provider.");return e},Mm=async(e,t={},n=!0)=>{const{register:r}=await h(()=>import("./index-7SG8bi1h.js"),__vite__mapDeps([]));r(e,{ready(o){var i;n&&console.info("[Service Worker]: active"),(i=t.ready)==null||i.call(t,o)},registered(o){var i;n&&console.log("[Service Worker]: registered"),(i=t.registered)==null||i.call(t,o)},cached(o){var i;n&&console.log("[Service Worker]: cached"),(i=t.cached)==null||i.call(t,o)},async updatefound(o){var i;await navigator.serviceWorker.getRegistration()&&(n&&console.log("[Service Worker]: update found"),(i=t.updatefound)==null||i.call(t,o))},updated(o){var i;n&&console.log("[Service Worker]: updated"),(i=t.updated)==null||i.call(t,o)},offline(){var o;n&&console.log("[Service Worker]: offline"),(o=t.offline)==null||o.call(t)},error(o){var i;n&&console.error("[Service Worker]: ",o),(i=t.error)==null||i.call(t,o)}})},$m=async e=>Mm(Ve("service-worker.js"),{ready(t){e.emit("ready",t)},registered(t){e.emit("registered",t)},cached(t){e.emit("cached",t)},updatefound(t){e.emit("updatefound",t)},updated(t){const n="service-worker-version",r=Number(localStorage.getItem(n)||0);localStorage.setItem(n,(r+1).toString()),localStorage.removeItem("manifest"),e.emit("updated",t)},offline(){e.emit("offline")},error(t){e.emit("error",t)}}),Nm=()=>{const e=Sm();tn(Ic,e),ge(async()=>{var n;let t=!1;(n=navigator.serviceWorker)!=null&&n.controller&&navigator.serviceWorker.addEventListener("controllerchange",()=>{t||(t=!0,window.location.reload())}),await $m(e)})};var zm={"/zh/":{install:"安装",iOSInstall:"点击分享按钮然后点击“添加到主屏幕”",cancel:"取消",close:"关闭",prevImage:"上一张图片",nextImage:"下一张图片",desc:"详情",feature:"主要特色",explain:"该应用可以安装在你的 PC 或移动设备上。这将使该 Web 应用程序外观和行为与其他应用程序相同。它将在出现在应用程序列表中,并可以固定到主屏幕,开始菜单或任务栏。此 Web 应用程序还将能够与其他应用程序和你的操作系统安全地进行交互。",hint:"发现新内容可用",update:"新内容已就绪"},"/":{install:"Install",iOSInstall:"Tap the share button and then 'Add to Home Screen'",cancel:"Cancel",close:"Close",prevImage:"Previous Image",nextImage:"Next Image",desc:"Description",feature:"Key Features",explain:"This app can be installed on your PC or mobile device. This will allow this web app to look and behave like any other installed app. You will find it in your app lists and be able to pin it to your home screen, start menus or task bars. This installed web app will also be able to safely interact with other apps and your operating system. ",hint:"New content found.",update:"New content is available."}};const Oc=()=>f(Ae,{name:"update"},()=>f("path",{d:"M949.949 146.25v255.826c0 21.981-13.989 35.97-35.97 35.97H658.154c-13.988 0-25.983-7.992-33.973-21.981-5.997-13.989-4-27.977 7.991-39.97l79.942-77.946c-55.954-51.973-121.918-77.955-199.863-77.955-37.975 0-75.95 8.002-113.924 21.99-37.975 15.985-67.948 37.976-91.934 63.957-25.982 23.987-47.973 53.96-63.957 91.934-29.983 73.955-29.983 153.895 0 227.85 15.984 37.976 37.975 67.947 63.957 91.934 23.986 25.982 53.959 47.973 91.934 63.956 37.974 13.989 75.95 21.991 113.924 21.991 45.967 0 87.942-9.998 127.913-29.982 41.976-17.99 75.951-45.967 101.931-83.943 7.993-4 11.994-5.995 13.989-5.995 5.997 0 9.998 1.994 13.988 5.995l77.958 77.946c3.989 4 5.986 7.993 5.986 11.994 0 1.994-1.996 5.995-3.99 11.994-43.973 51.962-93.941 91.934-151.9 117.914-53.958 25.983-115.92 39.972-185.874 39.972-61.961 0-119.921-11.984-169.89-33.973-57.96-25.985-105.923-57.963-139.896-93.943-35.98-33.972-67.958-81.936-93.94-139.897-45.967-101.93-45.967-237.846 0-339.777 25.982-57.96 57.96-105.923 93.94-139.896 33.973-35.98 81.936-67.958 139.896-93.94 49.968-21.99 107.928-33.974 169.89-33.974 55.963 0 109.923 9.988 161.885 29.973 53.97 21.99 101.933 51.963 139.908 89.938l73.954-73.944c9.987-9.998 23.987-13.988 39.971-8.002 13.988 8.002 21.98 19.995 21.98 33.984z"}));Oc.displayName="UpdateIcon";const Bm=zm,Fm=e=>{const t=e.waiting;if(!t)return;const n=new MessageChannel;t.postMessage({type:"SKIP_WAITING"},[n.port2])};var Hm=U({name:"SWUpdatePopup",slots:Object,setup(e,{slots:t}){const n=Nn(Bm),r=it(),o=I(()=>!!r.value),i=()=>{r.value&&(Fm(r.value),r.value=void 0)};return ge(()=>{Vm().on("updated",a=>{a&&(r.value=a)})}),()=>f(xt,{name:"popup"},()=>{var a;return((a=t.default)==null?void 0:a.call(t,{enabled:o.value,reload:i}))||(o.value?f("button",{type:"button",class:"sw-update-popup",tabindex:0,onClick:()=>i()},[n.value.update,f("span",{class:"icon-wrapper"},f(Oc))]):null)})}});const jm=at({setup:()=>{Nm()},rootComponents:[Hm]});var cl={"/zh/":{word:"约 $word 字",less1Minute:"小于 1 分钟",time:"大约 $time 分钟"},"/":{word:"About $word words",less1Minute:"Less than 1 minute",time:"About $time min"}};const xc=()=>{const e=de();return I(()=>e.value.readingTime??null)},Qo=typeof cl>"u"?null:cl,Wm=(e,t)=>{const{minutes:n,words:r}=e,{less1Minute:o,word:i,time:a}=t;return{time:n<1?o:a.replace("$time",Math.round(n).toString()),words:i.replace("$word",r.toString())}},ul={words:"",time:""},qm=()=>Qo?Nn(Qo):I(()=>null),Um=()=>{if(typeof Qo>"u")return I(()=>ul);const e=xc(),t=qm();return I(()=>e.value&&t.value?Wm(e.value,t.value):ul)},Bn=()=>Ec(),ve=()=>Yv(),gr=()=>I(()=>!!Bn().value.pure);var fl=U({name:"EmptyComponent",setup:()=>()=>null});const Km="719px",Gm="1440px",Ym="false",Ni={mobileBreakPoint:Km,pcBreakPoint:Gm,enableThemeColor:Ym},zi={"/zh/guide/":["",{text:"Media Server",prefix:"media_server/",collapsible:!0,icon:"gears",children:["restful_api","web_hook_api","on-demand_streaming","on-demand_push_streaming","push_authentication","playback_authentication","how_to_enable_https_related_functions","push_test","play_url_rules","sequence_diagram","start_server","generate_ssl_self-signed_certificate_and_test","config_file"]},{text:"SDK API",prefix:"sdk/",collapsible:!0,icon:"cube",children:["how_to_create_a_live_steam"]},{text:"代码解读",prefix:"code/",collapsible:!0,icon:"code",children:["","oncetoken"]},{text:"协议相关",prefix:"protocol/",collapsible:!0,icon:"lightbulb",children:[{text:"Gb28181",prefix:"gb28181/",collapsible:!0,children:["gb28181_sip_signaling_packet_capture","how_to_use_device_id_as_stream_id","push_streaming"]},{text:"SRT",prefix:"srt/",collapsible:!0,children:[""]},{text:"Webrtc",prefix:"webrtc/",collapsible:!0,children:["webrtc_compilation_and_use","webrtc_signaling_interaction_format"]}]},{text:"安装",prefix:"install/",collapsible:!0,icon:"box-archive",children:["","start","install_zlmediakit_using_vcpkg","compilation_instructions_for_windows_version"]},{text:"常见问题",prefix:"faq/",collapsible:!0,icon:"question",children:["","rtmp_playback_compatibility_issues","not_recommended_qq"]}],"/zh/reference/":[{text:"开发日志",prefix:"development_log/",collapsible:!0,icon:"code-commit",children:["","rtsp_performance_optimization","hls_high_performance_journey"]},{text:"测试",prefix:"test/",collapsible:!0,icon:"vials",children:["","benchmark","rtmp_pull_stream_performance_test","rtmp_push_stream_performance_test","rtsp_pull_stream_performance_test","rtsp_push_stream_performance_test","online_test","delay_test","how_to_test_delay","performance_testing"]},{text:"相关文档",prefix:"documents/",collapsible:!0,icon:"file-code",children:["","rtsp_push_process","exclusive_features","high_concurrency_implementation_principle","introduction_to_streaming_media_related_technologies","the_nature_of_live_broadcast_delay"]},{text:"相关资源",prefix:"resources/",collapsible:!0,icon:"font-awesome",children:["","rtmp_support_for_h265_and_opus","zltoolkit_source_code_study_notes","dependency","video_conferencing_related_resources"]}],"/zh/more/":["use_cases","collaborative_projects","license","contact","thanks"],"/guide/":["",{text:"Media Server",prefix:"media_server/",collapsible:!0,icon:"gears",children:["config_file","generate_ssl_self-signed_certificate_and_test","how_to_enable_https_related_functions","on-demand_streaming","on-demand_push_streaming","playback_authentication","push_authentication","play_url_rules","push_test","restful_api","sequence_diagram","start_server","web_hook_api"]},{text:"Code interpretation",prefix:"code/",collapsible:!0,icon:"code",children:["","oncetoken"]},{text:"FAQ",prefix:"faq/",collapsible:!0,icon:"question",children:["","rtmp_playback_compatibility_issues","not_recommended_qq"]},{text:"Install",prefix:"install/",collapsible:!0,icon:"box-archive",children:["","start","compilation_instructions_for_windows_version","install_zlmediakit_using_vcpkg"]},{text:"Protocol",prefix:"protocol/",collapsible:!0,icon:"lightbulb",children:[{text:"Gb28181",prefix:"gb28181/",collapsible:!0,children:["gb28181_sip_signaling_packet_capture","how_to_use_device_id_as_stream_id","push_streaming"]},{text:"SRT",prefix:"srt/",collapsible:!0,children:[""]},{text:"Webrtc",prefix:"webrtc/",collapsible:!0,children:["webrtc_compilation_and_use","webrtc_signaling_interaction_format"]}]},{text:"SDK API",prefix:"sdk/",collapsible:!0,icon:"lightbulb",children:["","how_to_create_a_live_steam"]}],"/reference/":[{text:"Development log",prefix:"development_log/",collapsible:!0,icon:"code-commit",children:["","rtsp_performance_optimization","hls_high_performance_journey"]},{text:"Related documents",prefix:"documents/",collapsible:!0,icon:"file-code",children:["","exclusive_features","rtsp_push_process","the_nature_of_live_broadcast_delay","high_concurrency_implementation_principle","introduction_to_streaming_media_related_technologies"]},{text:"Resources",prefix:"resources/",collapsible:!0,icon:"font-awesome",children:["","dependency","rtmp_support_for_h265_and_opus","video_conferencing_related_resources","zltoolkit_source_code_study_notes"]},{text:"Testing",prefix:"test/",collapsible:!0,icon:"vials",children:["","benchmark","delay_test","how_to_test_delay","online_test","performance_testing","rtmp_pull_stream_performance_test","rtmp_push_stream_performance_test","rtsp_pull_stream_performance_test","rtsp_push_stream_performance_test"]}],"/more/":["thanks","collaborative_projects","contact","license","use_cases"]},kc=e=>{const{icon:t="",color:n,size:r}=e,o={};return n&&(o.color=n),r&&(o.height=Number.isNaN(Number(r))?r:`${r}px`),Mn(t)?f("img",{class:"icon",src:t,"no-view":"",style:o}):ao(t)?f("img",{class:"icon",src:Ve(t),"no-view":"",style:o}):f(nt("FontIcon"),e)};kc.displayName="HopeIcon";var je=kc;const Zm=()=>{const e=Ge(),t=yt();return n=>{if(n)if(ao(n))t.path!==n&&e.push(n);else if(gs(n))window&&window.open(n);else{const r=t.path.slice(0,t.path.lastIndexOf("/"));e.push(`${r}/${encodeURI(n)}`)}}},Cc=()=>{const e=ve(),t=Pe();return I(()=>{const{author:n}=t.value;return n?Ka(n):n===!1?[]:Ka(e.value.author,!1)})},Qm=()=>{const e=Pe();return I(()=>jh(e.value.category).map(t=>({name:t,path:""})))},Jm=()=>{const e=Pe();return I(()=>Wh(e.value.tag).map(t=>({name:t,path:""})))},Xm=()=>{const e=Pe(),t=de();return I(()=>{const n=Dh(e.value.date);if(n)return n;const{createdTime:r}=t.value.git||{};return r?new Date(r):null})},e1=()=>{const e=ve(),t=de(),n=Pe(),r=Cc(),o=Qm(),i=Jm(),a=Xm(),l=xc(),s=Um(),c=I(()=>({author:r.value,category:o.value,date:a.value,localizedDate:t.value.localizedDate,tag:i.value,isOriginal:n.value.isOriginal||!1,readingTime:l.value,readingTimeLocale:s.value,pageview:"pageview"in n.value?n.value.pageview:!0})),u=I(()=>"pageInfo"in n.value?n.value.pageInfo:"pageInfo"in e.value?e.value.pageInfo:null);return{info:c,items:u}},{mobileBreakPoint:t1,pcBreakPoint:n1}=Ni,dl=e=>e.endsWith("px")?Number(e.slice(0,-2)):null,co=()=>{const e=ee(!1),t=ee(!1),n=()=>{e.value=window.innerWidth<=(dl(t1)??719),t.value=window.innerWidth>=(dl(n1)??1440)};return ge(()=>{n(),Me("resize",n,!1),Me("orientationchange",n,!1)}),{isMobile:e,isPC:t}},Dc=Symbol(""),br=()=>{const e=_e(Dc);if(!e)throw new Error("useDarkmode() is called without provider.");return e},r1=e=>{const t=Bn(),n=vv(),r=dc("vuepress-theme-hope-scheme","auto"),o=I(()=>t.value.darkmode||"switch"),i=I(()=>{const l=o.value;return l==="disable"?!1:l==="enable"?!0:l==="auto"?n.value:l==="toggle"?r.value==="dark":r.value==="dark"||r.value==="auto"&&n.value}),a=I(()=>{const l=o.value;return l==="switch"||l==="toggle"});e.provide(Dc,{canToggle:a,config:o,isDarkmode:i,status:r}),Object.defineProperties(e.config.globalProperties,{$isDarkmode:{get:()=>i.value}})},o1=()=>{const{isDarkmode:e}=br(),t=(n=e.value)=>document.documentElement.setAttribute("data-theme",n?"dark":"light");ge(()=>{fe(e,t,{immediate:!0})})};var Fe=U({name:"AutoLink",inheritAttrs:!1,props:{config:{type:Object,required:!0},exact:Boolean,noExternalLinkIcon:Boolean},emits:["focusout"],slots:Object,setup(e,{attrs:t,emit:n,slots:r}){const o=yt(),i=Ps(),a=Qr(e,"config"),l=I(()=>Mn(a.value.link)),s=I(()=>!l.value&&gs(a.value.link)),c=I(()=>a.value.target||(l.value?"_blank":void 0)),u=I(()=>c.value==="_blank"),d=I(()=>!l.value&&!s.value&&!u.value),p=I(()=>a.value.rel||(u.value?"noopener noreferrer":void 0)),m=I(()=>a.value.ariaLabel||a.value.text),g=I(()=>{if(e.exact)return!1;const T=$n(i.value.locales);return T.length?T.every(y=>y!==a.value.link):a.value.link!=="/"}),w=I(()=>d.value?a.value.activeMatch?new RegExp(a.value.activeMatch).test(o.path):g.value?xn(o.path,a.value.link):o.path===a.value.link:!1);return()=>{const{before:T,after:y,default:P}=r,{text:b,icon:A,link:M}=a.value;return d.value?f(et,{to:M,"aria-label":m.value,...t,class:["nav-link",{active:w.value},t.class],onFocusout:()=>n("focusout")},()=>P?P():[T?T():f(je,{icon:A}),b,y==null?void 0:y()]):f("a",{href:M,rel:p.value,target:c.value,"aria-label":m.value,...t,class:["nav-link",t.class],onFocusout:()=>n("focusout")},P?P():[T?T():f(je,{icon:A}),b,e.noExternalLinkIcon?null:f(bc),y==null?void 0:y()])}}});const kn=(e,t,n=!1)=>"activeMatch"in t?new RegExp(t.activeMatch).test(e.path):Xs(e,t.link)?!0:t.children&&!n?t.children.some(r=>kn(e,r)):!1,Sc=(e,t)=>t.type==="group"?t.children.some(n=>n.type==="group"?Sc(e,n):n.type==="page"&&kn(e,n,!0))||"prefix"in t&&Xs(e,t.prefix):!1,Vc=(e,t)=>ue(e.link)?f(Fe,{...t,config:e}):f("p",t,[f(je,{icon:e.icon}),e.text]),Mc=e=>{const t=yt();return e?f("ul",{class:"vp-sidebar-sub-headers"},e.map(n=>f("li",{class:"vp-sidebar-sub-header"},[Vc(n,{class:["vp-sidebar-link","vp-heading",{active:kn(t,n,!0)}]}),Mc(n.children)]))):null};var Rt=(e=>(e.type="y",e.title="t",e.shortTitle="s",e.icon="i",e.author="a",e.date="d",e.localizedDate="l",e.category="c",e.tag="g",e.isEncrypted="n",e.isOriginal="o",e.readingTime="r",e.excerpt="e",e.sticky="u",e.cover="v",e.index="I",e.order="O",e))(Rt||{}),i1=(e=>(e.article="a",e.home="h",e.slide="s",e.page="p",e))(i1||{});const Jt=(e="",t="")=>ao(t)?t:`${_s(e)}${t}`,En=(e,t,n=!1)=>{let r=Ur(e,Zs(encodeURI(t)));r.name==="404"&&(r=Ur(e,t));const{fullPath:o,meta:i,name:a}=r;return{text:!n&&i[Rt.shortTitle]?i[Rt.shortTitle]:i[Rt.title]||t,link:a==="404"?t:o,...i[Rt.icon]?{icon:i[Rt.icon]}:{}}},a1=(e,t)=>{const n=de();return{type:"heading",text:e.title,link:`${n.value.path}#${e.slug}`,children:Bi(e.children,t)}},Bi=(e,t)=>t>0?e.map(n=>a1(n,t-1)):[],$c=e=>{const t=de();return Bi(t.value.headers,e)},Jo=(e,t,n="")=>{const r=Ge(),o=de(),i=(a,l=n)=>{var c;const s=ue(a)?En(r,Jt(l,a)):a.link?{...a,...Wr(a.link)?{}:{link:En(r,Jt(l,a.link)).link}}:a;if("children"in s){const u=Jt(l,s.prefix),d=s.children==="structure"?zi[u]:s.children;return{type:"group",...s,prefix:u,children:d.map(p=>i(p,u))}}return{type:"page",...s,children:s.link===o.value.path?Bi(((c=o.value.headers[0])==null?void 0:c.level)===1?o.value.headers[0].children:o.value.headers,t):[]}};return e.map(a=>i(a))},l1=(e,t)=>{const n=de(),r=$n(e).sort((o,i)=>i.length-o.length);for(const o of r)if(xn(decodeURI(n.value.path),o)){const i=e[o];return i?Jo(i==="structure"?zi[o]:i==="heading"?$c(t):i,t,o):[]}return console.warn(`${n.value.path} is missing sidebar config.`),[]},s1=(e,t)=>{const n=ln();return e===!1?[]:e==="heading"?$c(t):e==="structure"?Jo(zi[n.value],t,n.value):X(e)?Jo(e,t):Pi(e)?l1(e,t):[]},Nc=Symbol(""),c1=()=>{const e=Pe(),t=ve(),n=de(),r=I(()=>e.value.home?!1:e.value.sidebar??t.value.sidebar??"structure"),o=I(()=>e.value.headerDepth??t.value.headerDepth??2),i=lo(()=>[r.value,o.value,n.value.path,null],()=>s1(r.value,o.value));tn(Nc,i)},Fi=()=>{const e=_e(Nc);if(!e)throw new Error("useSidebarItems() is called without provider.");return e};var u1=U({name:"PageFooter",setup(){const e=Pe(),t=ve(),n=Cc(),r=I(()=>{const{copyright:a,footer:l}=e.value;return l!==!1&&!!(a||l||t.value.displayFooter)}),o=I(()=>{const{footer:a}=e.value;return a===!1?!1:ue(a)?a:t.value.footer||""}),i=I(()=>"copyright"in e.value?e.value.copyright:"copyright"in t.value?t.value.copyright:n.value.length?`Copyright © ${new Date().getFullYear()} ${n.value[0].name}`:!1);return()=>r.value?f("footer",{class:"vp-footer-wrapper"},[o.value?f("div",{class:"vp-footer",innerHTML:o.value}):null,i.value?f("div",{class:"vp-copyright",innerHTML:i.value}):null]):null}}),zc=U({name:"NavbarDropdownLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=de(),r=Qr(e,"config"),o=I(()=>r.value.ariaLabel||r.value.text),i=ee(!1);fe(()=>n.value.path,()=>{i.value=!1});const a=l=>{l.detail===0&&(i.value=!i.value)};return()=>{var l;return f("div",{class:["dropdown-wrapper",{open:i.value}]},[f("button",{type:"button",class:"dropdown-title","aria-label":o.value,onClick:a},[((l=t.title)==null?void 0:l.call(t))||f("span",{class:"title"},[f(je,{icon:r.value.icon}),e.config.text]),f("span",{class:"arrow"}),f("ul",{class:"nav-dropdown"},r.value.children.map((s,c)=>{const u=c===r.value.children.length-1;return f("li",{class:"dropdown-item"},"children"in s?[f("h4",{class:"dropdown-subtitle"},s.link?f(Fe,{config:s,onFocusout:()=>{s.children.length===0&&u&&(i.value=!1)}}):f("span",s.text)),f("ul",{class:"dropdown-subitem-wrapper"},s.children.map((d,p)=>f("li",{class:"dropdown-subitem"},f(Fe,{config:d,onFocusout:()=>{p===s.children.length-1&&u&&(i.value=!1)}}))))]:f(Fe,{config:s,onFocusout:()=>{u&&(i.value=!1)}}))}))])])}}});const Bc=()=>f(Ae,{name:"i18n"},()=>[f("path",{d:"M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"})]);Bc.displayName="I18nIcon";const Fc=(e,t,n="")=>ue(t)?En(e,Jt(n,t)):"children"in t?{...t,...t.link&&!Wr(t.link)?En(e,Jt(n,t.link)):{},children:t.children.map(r=>Fc(e,r,Jt(n,t.prefix)))}:{...t,link:Wr(t.link)?t.link:En(e,Jt(n,t.link)).link},Hc=()=>{const e=ve(),t=Ge(),n=()=>(e.value.navbar||[]).map(r=>Fc(t,r));return lo(()=>e.value.navbar,()=>n())},f1=()=>{const e=Ge(),t=yt(),n=ln(),r=no(),o=Bn(),i=ve();return lo(()=>t.path,()=>{const a=$n(r.value.locales),l=Vi(o.value.extraLocales??{});if(a.length<2&&!l.length)return null;const{path:s,fullPath:c}=t,{navbarLocales:u}=i.value;return{text:"",ariaLabel:u==null?void 0:u.selectLangAriaLabel,children:[...a.map(d=>{var y,P,b;const p=((y=r.value.locales)==null?void 0:y[d])??{},m=((P=o.value.locales)==null?void 0:P[d])??{},g=p.lang||"",w=((b=m.navbarLocales)==null?void 0:b.langName)??g;let T;if(g===r.value.lang)T=s;else{const A=s.replace(n.value,d);T=e.getRoutes().some(M=>M.path===A)?c.replace(s,A):m.home??d}return{text:w,link:T}}),...l.map(([d,p])=>({text:d,link:p.replace(":route",t.path.replace(n.value,""))}))]}})},d1=()=>{const e=ve(),t=I(()=>e.value.repo||null),n=I(()=>t.value?Uh(t.value):null),r=I(()=>t.value?ec(t.value):null),o=I(()=>n.value?e.value.repoLabel??(r.value===null?"Source":r.value):null);return I(()=>!n.value||!o.value||e.value.repoDisplay===!1?null:{type:r.value||"Source",label:o.value,link:n.value})};var p1=U({name:"LanguageDropdown",setup(){const e=f1();return()=>e.value?f("div",{class:"nav-item"},f(zc,{class:"i18n-dropdown",config:e.value},{title:()=>{var t;return f(Bc,{"aria-label":(t=e.value)==null?void 0:t.ariaLabel,style:{width:"1rem",height:"1rem",verticalAlign:"middle"}})}})):null}}),h1=U({name:"NavScreenDropdown",props:{config:{type:Object,required:!0}},setup(e){const t=de(),n=Qr(e,"config"),r=I(()=>n.value.ariaLabel||n.value.text),o=ee(!1);fe(()=>t.value.path,()=>{o.value=!1});const i=(a,l)=>l[l.length-1]===a;return()=>[f("button",{type:"button",class:["nav-screen-dropdown-title",{active:o.value}],"aria-label":r.value,onClick:()=>{o.value=!o.value}},[f("span",{class:"title"},[f(je,{icon:n.value.icon}),e.config.text]),f("span",{class:["arrow",o.value?"down":"end"]})]),f("ul",{class:["nav-screen-dropdown",{hide:!o.value}]},n.value.children.map(a=>f("li",{class:"dropdown-item"},"children"in a?[f("h4",{class:"dropdown-subtitle"},a.link?f(Fe,{config:a,onFocusout:()=>{i(a,n.value.children)&&a.children.length===0&&(o.value=!1)}}):f("span",a.text)),f("ul",{class:"dropdown-subitem-wrapper"},a.children.map(l=>f("li",{class:"dropdown-subitem"},f(Fe,{config:l,onFocusout:()=>{i(l,a.children)&&i(a,n.value.children)&&(o.value=!1)}}))))]:f(Fe,{config:a,onFocusout:()=>{i(a,n.value.children)&&(o.value=!1)}}))))]}}),v1=U({name:"NavScreenLinks",setup(){const e=Hc();return()=>e.value.length?f("nav",{class:"nav-screen-links"},e.value.map(t=>f("div",{class:"navbar-links-item"},"children"in t?f(h1,{config:t}):f(Fe,{config:t})))):null}});const jc=()=>f(Ae,{name:"dark"},()=>f("path",{d:"M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"}));jc.displayName="DarkIcon";const Wc=()=>f(Ae,{name:"light"},()=>f("path",{d:"M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"}));Wc.displayName="LightIcon";const qc=()=>f(Ae,{name:"auto"},()=>f("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"}));qc.displayName="AutoIcon";const Uc=()=>f(Ae,{name:"enter-fullscreen"},()=>f("path",{d:"M762.773 90.24h-497.28c-96.106 0-174.4 78.293-174.4 174.4v497.28c0 96.107 78.294 174.4 174.4 174.4h497.28c96.107 0 175.04-78.293 174.4-174.4V264.64c0-96.213-78.186-174.4-174.4-174.4zm-387.2 761.173H215.04c-21.867 0-40.427-17.92-41.067-41.066V649.92c0-22.507 17.92-40.427 40.427-40.427 11.307 0 21.227 4.694 28.48 11.947 7.253 7.253 11.947 17.92 11.947 28.48v62.293l145.28-145.28c15.893-15.893 41.813-15.893 57.706 0 15.894 15.894 15.894 41.814 0 57.707l-145.28 145.28h62.294c22.506 0 40.426 17.92 40.426 40.427s-17.173 41.066-39.68 41.066zM650.24 165.76h160.427c21.866 0 40.426 17.92 41.066 41.067v160.426c0 22.507-17.92 40.427-40.426 40.427-11.307 0-21.227-4.693-28.48-11.947-7.254-7.253-11.947-17.92-11.947-28.48v-62.186L625.6 450.347c-15.893 15.893-41.813 15.893-57.707 0-15.893-15.894-15.893-41.814 0-57.707l145.28-145.28H650.88c-22.507 0-40.427-17.92-40.427-40.427s17.174-41.173 39.787-41.173z"}));Uc.displayName="EnterFullScreenIcon";const Kc=()=>f(Ae,{name:"cancel-fullscreen"},()=>f("path",{d:"M778.468 78.62H247.922c-102.514 0-186.027 83.513-186.027 186.027V795.08c0 102.514 83.513 186.027 186.027 186.027h530.432c102.514 0 186.71-83.513 186.026-186.027V264.647C964.494 162.02 880.981 78.62 778.468 78.62zM250.88 574.35h171.122c23.324 0 43.122 19.115 43.804 43.805v171.121c0 24.008-19.114 43.122-43.122 43.122-12.06 0-22.641-5.006-30.378-12.743s-12.743-19.115-12.743-30.379V722.83L224.597 877.91c-16.953 16.952-44.6 16.952-61.553 0-16.953-16.954-16.953-44.602 0-61.554L318.009 661.39h-66.446c-24.007 0-43.122-19.114-43.122-43.122 0-24.12 18.432-43.918 42.439-43.918zm521.899-98.873H601.657c-23.325 0-43.122-19.114-43.805-43.804V260.55c0-24.007 19.115-43.122 43.122-43.122 12.06 0 22.642 5.007 30.379 12.743s12.743 19.115 12.743 30.38v66.445l154.965-154.965c16.953-16.953 44.601-16.953 61.554 0 16.953 16.953 16.953 44.6 0 61.554L705.536 388.55h66.446c24.007 0 43.122 19.115 43.122 43.122.114 24.007-18.318 43.804-42.325 43.804z"}));Kc.displayName="CancelFullScreenIcon";const Gc=()=>f(Ae,{name:"outlook"},()=>[f("path",{d:"M224 800c0 9.6 3.2 44.8 6.4 54.4 6.4 48-48 76.8-48 76.8s80 41.6 147.2 0 134.4-134.4 38.4-195.2c-22.4-12.8-41.6-19.2-57.6-19.2C259.2 716.8 227.2 761.6 224 800zM560 675.2l-32 51.2c-51.2 51.2-83.2 32-83.2 32 25.6 67.2 0 112-12.8 128 25.6 6.4 51.2 9.6 80 9.6 54.4 0 102.4-9.6 150.4-32l0 0c3.2 0 3.2-3.2 3.2-3.2 22.4-16 12.8-35.2 6.4-44.8-9.6-12.8-12.8-25.6-12.8-41.6 0-54.4 60.8-99.2 137.6-99.2 6.4 0 12.8 0 22.4 0 12.8 0 38.4 9.6 48-25.6 0-3.2 0-3.2 3.2-6.4 0-3.2 3.2-6.4 3.2-6.4 6.4-16 6.4-16 6.4-19.2 9.6-35.2 16-73.6 16-115.2 0-105.6-41.6-198.4-108.8-268.8C704 396.8 560 675.2 560 675.2zM224 419.2c0-28.8 22.4-51.2 51.2-51.2 28.8 0 51.2 22.4 51.2 51.2 0 28.8-22.4 51.2-51.2 51.2C246.4 470.4 224 448 224 419.2zM320 284.8c0-22.4 19.2-41.6 41.6-41.6 22.4 0 41.6 19.2 41.6 41.6 0 22.4-19.2 41.6-41.6 41.6C339.2 326.4 320 307.2 320 284.8zM457.6 208c0-12.8 12.8-25.6 25.6-25.6 12.8 0 25.6 12.8 25.6 25.6 0 12.8-12.8 25.6-25.6 25.6C470.4 233.6 457.6 220.8 457.6 208zM128 505.6C128 592 153.6 672 201.6 736c28.8-60.8 112-60.8 124.8-60.8-16-51.2 16-99.2 16-99.2l316.8-422.4c-48-19.2-99.2-32-150.4-32C297.6 118.4 128 291.2 128 505.6zM764.8 86.4c-22.4 19.2-390.4 518.4-390.4 518.4-22.4 28.8-12.8 76.8 22.4 99.2l9.6 6.4c35.2 22.4 80 12.8 99.2-25.6 0 0 6.4-12.8 9.6-19.2 54.4-105.6 275.2-524.8 288-553.6 6.4-19.2-3.2-32-19.2-32C777.6 76.8 771.2 80 764.8 86.4z"})]);Gc.displayName="OutlookIcon";var Yc=U({name:"AppearanceSwitch",setup(){const{config:e,isDarkmode:t,status:n}=br(),r=gr(),o=()=>{e.value==="switch"?n.value={light:"dark",dark:"auto",auto:"light"}[n.value]:n.value=n.value==="light"?"dark":"light"},i=async a=>{if(!(document.startViewTransition&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches&&!r.value)||!a){o();return}const l=a.clientX,s=a.clientY,c=Math.hypot(Math.max(l,innerWidth-l),Math.max(s,innerHeight-s)),u=t.value;await document.startViewTransition(async()=>{o(),await an()}).ready,t.value!==u&&document.documentElement.animate({clipPath:t.value?[`circle(${c}px at ${l}px ${s}px)`,`circle(0px at ${l}px ${s}px)`]:[`circle(0px at ${l}px ${s}px)`,`circle(${c}px at ${l}px ${s}px)`]},{duration:400,pseudoElement:t.value?"::view-transition-old(root)":"::view-transition-new(root)"})};return()=>f("button",{type:"button",id:"appearance-switch",onClick:i},[f(qc,{style:{display:n.value==="auto"?"block":"none"}}),f(jc,{style:{display:n.value==="dark"?"block":"none"}}),f(Wc,{style:{display:n.value==="light"?"block":"none"}})])}}),m1=U({name:"AppearanceMode",setup(){const e=ve(),{canToggle:t}=br(),n=I(()=>e.value.outlookLocales.darkmode);return()=>t.value?f("div",{class:"appearance-wrapper"},[f("label",{class:"appearance-title",for:"appearance-switch"},n.value),f(Yc)]):null}});const Co="VUEPRESS_THEME_COLOR";var _1=U({name:"ThemeColorPicker",props:{themeColor:{type:Object,required:!0}},setup(e){const t=(n="")=>{const r=document.documentElement.classList,o=$n(e.themeColor);if(!n){localStorage.removeItem(Co),r.remove(...o);return}r.remove(...o.filter(i=>i!==n)),r.add(n),localStorage.setItem(Co,n)};return ge(()=>{const n=localStorage.getItem(Co);n&&t(n)}),()=>f("ul",{id:"theme-color-picker"},[f("li",f("span",{class:"theme-color",onClick:()=>t()})),Vi(e.themeColor).map(([n,r])=>f("li",f("span",{style:{background:r},onClick:()=>t(n)})))])}});const wn=Ni.enableThemeColor==="true",g1=wn?Fh(Vi(Ni).filter(([e])=>e.startsWith("theme-"))):{};var b1=U({name:"ThemeColor",setup(){const e=ve(),t=I(()=>e.value.outlookLocales.themeColor);return()=>wn?f("div",{class:"theme-color-wrapper"},[f("label",{class:"theme-color-title",for:"theme-color-picker"},t.value),f(_1,{themeColor:g1})]):null}}),Zc=U({name:"ToggleFullScreenButton",setup(){const e=ve(),{isSupported:t,isFullscreen:n,toggle:r}=Mi(),o=I(()=>e.value.outlookLocales.fullscreen);return()=>t?f("div",{class:"full-screen-wrapper"},[f("label",{class:"full-screen-title",for:"full-screen-switch"},o.value),f("button",{type:"button",id:"full-screen-switch",class:"full-screen",ariaPressed:n.value,onClick:()=>r()},n.value?f(Kc):f(Uc))]):null}}),Qc=U({name:"OutlookSettings",setup(){const e=Bn(),t=gr(),n=I(()=>!t.value&&e.value.fullscreen);return()=>f(ro,()=>[wn?f(b1):null,f(m1),n.value?f(Zc):null])}}),y1=U({name:"NavScreen",props:{show:Boolean},emits:["close"],slots:Object,setup(e,{emit:t,slots:n}){const r=de(),{isMobile:o}=co(),i=it(),a=hc(i);return ge(()=>{i.value=document.body,fe(o,l=>{!l&&e.show&&(a.value=!1,t("close"))}),fe(()=>r.value.path,()=>{a.value=!1,t("close")})}),vr(()=>{a.value=!1}),()=>f(xt,{name:"fade",onEnter:()=>{a.value=!0},onAfterLeave:()=>{a.value=!1}},()=>{var l,s;return e.show?f("div",{id:"nav-screen"},f("div",{class:"vp-nav-screen-container"},[(l=n.before)==null?void 0:l.call(n),f(v1),f("div",{class:"vp-outlook-wrapper"},f(Qc)),(s=n.after)==null?void 0:s.call(n)])):null})}}),E1=U({name:"NavbarBrand",setup(){const e=ln(),t=no(),n=ve(),r=I(()=>n.value.home||e.value),o=I(()=>t.value.title),i=I(()=>n.value.navTitle??o.value),a=I(()=>n.value.logo?Ve(n.value.logo):null),l=I(()=>n.value.logoDark?Ve(n.value.logoDark):null);return()=>f(et,{to:r.value,class:"vp-brand"},()=>[a.value?f("img",{class:["vp-nav-logo",{light:!!l.value}],src:a.value,alt:o.value}):null,l.value?f("img",{class:["vp-nav-logo dark"],src:l.value,alt:o.value}):null,i.value?f("span",{class:["vp-site-name",{"hide-in-pad":a.value&&n.value.hideSiteNameOnMobile!==!1}]},i.value):null])}}),w1=U({name:"NavbarLinks",setup(){const e=Hc();return()=>e.value.length?f("nav",{class:"vp-nav-links"},e.value.map(t=>f("div",{class:"nav-item hide-in-mobile"},"children"in t?f(zc,{config:t}):f(Fe,{config:t})))):null}}),T1=U({name:"RepoLink",components:{BitbucketIcon:oc,GiteeIcon:rc,GitHubIcon:tc,GitLabIcon:nc,SourceIcon:ic},setup(){const e=d1();return()=>e.value?f("div",{class:"nav-item vp-repo"},f("a",{class:"vp-repo-link",href:e.value.link,target:"_blank",rel:"noopener noreferrer","aria-label":e.value.label},f(nt(`${e.value.type}Icon`),{style:{width:"1.25rem",height:"1.25rem",verticalAlign:"middle"}}))):null}});const Jc=({active:e=!1},{emit:t})=>f("button",{type:"button",class:["vp-toggle-navbar-button",{"is-active":e}],"aria-label":"Toggle Navbar","aria-expanded":e,"aria-controls":"nav-screen",onClick:()=>t("toggle")},f("span",[f("span",{class:"vp-top"}),f("span",{class:"vp-middle"}),f("span",{class:"vp-bottom"})]));Jc.displayName="ToggleNavbarButton";var A1=Jc;const Xo=(e,{emit:t})=>f("button",{type:"button",class:"vp-toggle-sidebar-button",title:"Toggle Sidebar",onClick:()=>t("toggle")},f("span",{class:"icon"}));Xo.displayName="ToggleSidebarButton",Xo.emits=["toggle"];var L1=Xo,P1=U({name:"OutlookButton",setup(){const{isSupported:e}=Mi(),t=Bn(),n=gr(),r=de(),{canToggle:o}=br(),i=ee(!1),a=I(()=>!n.value&&t.value.fullscreen&&e);return fe(()=>r.value.path,()=>{i.value=!1}),()=>o.value||a.value||wn?f("div",{class:"nav-item hide-in-mobile"},o.value&&!a.value&&!wn?f(Yc):a.value&&!o.value&&!wn?f(Zc):f("button",{type:"button",class:["outlook-button",{open:i.value}],tabindex:"-1","aria-hidden":!0},[f(Gc),f("div",{class:"outlook-dropdown"},f(Qc))])):null}}),R1=U({name:"NavBar",emits:["toggleSidebar"],slots:Object,setup(e,{emit:t,slots:n}){const r=ve(),{isMobile:o}=co(),i=ee(!1),a=I(()=>{const{navbarAutoHide:u="mobile"}=r.value;return u!=="none"&&(u==="always"||o.value)}),l=I(()=>r.value.navbarLayout||{start:["Brand"],center:["Links"],end:["Language","Repo","Outlook","Search"]}),s={Brand:E1,Language:p1,Links:w1,Repo:T1,Outlook:P1,Search:Ot("Docsearch")?nt("Docsearch"):Ot("SearchBox")?nt("SearchBox"):fl},c=u=>s[u]??(Ot(u)?nt(u):fl);return()=>{var u,d,p,m,g,w;return[f("header",{id:"navbar",class:["vp-navbar",{"auto-hide":a.value,"hide-icon":r.value.navbarIcon===!1}]},[f("div",{class:"vp-navbar-start"},[f(L1,{onToggle:()=>{i.value&&(i.value=!1),t("toggleSidebar")}}),(u=n.startBefore)==null?void 0:u.call(n),(l.value.start||[]).map(T=>f(c(T))),(d=n.startAfter)==null?void 0:d.call(n)]),f("div",{class:"vp-navbar-center"},[(p=n.centerBefore)==null?void 0:p.call(n),(l.value.center||[]).map(T=>f(c(T))),(m=n.centerAfter)==null?void 0:m.call(n)]),f("div",{class:"vp-navbar-end"},[(g=n.endBefore)==null?void 0:g.call(n),(l.value.end||[]).map(T=>f(c(T))),(w=n.endAfter)==null?void 0:w.call(n),f(A1,{active:i.value,onToggle:()=>{i.value=!i.value}})])]),f(y1,{show:i.value,onClose:()=>{i.value=!1}},{before:()=>{var T;return(T=n.screenTop)==null?void 0:T.call(n)},after:()=>{var T;return(T=n.screenBottom)==null?void 0:T.call(n)}})]}}}),I1=U({name:"SidebarChild",props:{config:{type:Object,required:!0}},setup(e){const t=yt();return()=>[Vc(e.config,{class:["vp-sidebar-link",`vp-sidebar-${e.config.type}`,{active:kn(t,e.config,!0)}],exact:!0}),Mc(e.config.children)]}}),O1=U({name:"SidebarGroup",props:{config:{type:Object,required:!0},open:{type:Boolean,required:!0}},emits:["toggle"],setup(e,{emit:t}){const n=yt(),r=I(()=>kn(n,e.config)),o=I(()=>kn(n,e.config,!0));return()=>{const{collapsible:i,children:a=[],icon:l,prefix:s,link:c,text:u}=e.config;return f("section",{class:"vp-sidebar-group"},[f(i?"button":"p",{class:["vp-sidebar-heading",{clickable:i||c,exact:o.value,active:r.value}],...i?{type:"button",onClick:()=>t("toggle"),onKeydown:d=>{d.key==="Enter"&&t("toggle")}}:{}},[f(je,{icon:l}),c?f(Fe,{class:"vp-sidebar-title",config:{text:u,link:c},noExternalLinkIcon:!0}):f("span",{class:"vp-sidebar-title"},u),i?f("span",{class:["vp-arrow",e.open?"down":"end"]}):null]),e.open||!i?f(Xc,{key:s,config:a}):null])}}}),Xc=U({name:"SidebarLinks",props:{config:{type:Array,required:!0}},setup(e){const t=yt(),n=ee(-1),r=o=>{n.value=o===n.value?-1:o};return fe(()=>t.path,()=>{const o=e.config.findIndex(i=>Sc(t,i));n.value=o},{immediate:!0,flush:"post"}),()=>f("ul",{class:"vp-sidebar-links"},e.config.map((o,i)=>f("li",o.type==="group"?f(O1,{config:o,open:i===n.value,onToggle:()=>r(i)}):f(I1,{config:o}))))}}),x1=U({name:"SideBar",slots:Object,setup(e,{slots:t}){const n=yt(),r=ve(),o=Fi(),i=it();return ge(()=>{fe(()=>n.hash,a=>{const l=document.querySelector(`.vp-sidebar a.vp-sidebar-link[href="${n.path}${a}"]`);if(!l)return;const{top:s,height:c}=i.value.getBoundingClientRect(),{top:u,height:d}=l.getBoundingClientRect();us+c&&l.scrollIntoView(!1)},{immediate:!0})}),()=>{var a,l,s;return f("aside",{ref:i,id:"sidebar",class:["vp-sidebar",{"hide-icon":r.value.sidebarIcon===!1}]},[(a=t.top)==null?void 0:a.call(t),((l=t.default)==null?void 0:l.call(t))||f(Xc,{config:o.value}),(s=t.bottom)==null?void 0:s.call(t)])}}}),eu=U({name:"CommonWrapper",props:{containerClass:{type:String,default:""},noNavbar:Boolean,noSidebar:Boolean,noToc:Boolean},slots:Object,setup(e,{slots:t}){const n=Ge(),r=de(),o=Pe(),i=ve(),{isMobile:a,isPC:l}=co(),[s,c]=Ja(!1),[u,d]=Ja(!1),p=Fi(),m=ee(!1),g=I(()=>e.noNavbar||o.value.navbar===!1||i.value.navbar===!1?!1:!!(r.value.title||i.value.logo||i.value.repo||i.value.navbar)),w=I(()=>e.noSidebar?!1:o.value.sidebar!==!1&&p.value.length!==0&&!o.value.home),T=I(()=>e.noToc||o.value.home?!1:o.value.toc||i.value.toc!==!1&&o.value.toc!==!1),y={x:0,y:0},P=k=>{y.x=k.changedTouches[0].clientX,y.y=k.changedTouches[0].clientY},b=k=>{const N=k.changedTouches[0].clientX-y.x,V=k.changedTouches[0].clientY-y.y;Math.abs(N)>Math.abs(V)*1.5&&Math.abs(N)>40&&(N>0&&y.x<=80?c(!0):c(!1))},A=()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;let M=0;return Me("scroll",rv(()=>{const k=A();k<=58||k{k||c(!1)}),ge(()=>{const k=hc(document.body);fe(s,V=>{k.value=V});const N=n.afterEach(()=>{c(!1)});vr(()=>{k.value=!1,N()})}),()=>f(Ot("GlobalEncrypt")?nt("GlobalEncrypt"):Us,()=>f("div",{class:["theme-container",{"no-navbar":!g.value,"no-sidebar":!w.value&&!(t.sidebar||t.sidebarTop||t.sidebarBottom),"has-toc":T.value,"hide-navbar":m.value,"sidebar-collapsed":!a.value&&!l.value&&u.value,"sidebar-open":a.value&&s.value},e.containerClass,o.value.containerClass||""],onTouchStart:P,onTouchEnd:b},[g.value?f(R1,{onToggleSidebar:()=>c()},{startBefore:()=>{var k;return(k=t.navbarStartBefore)==null?void 0:k.call(t)},startAfter:()=>{var k;return(k=t.navbarStartAfter)==null?void 0:k.call(t)},centerBefore:()=>{var k;return(k=t.navbarCenterBefore)==null?void 0:k.call(t)},centerAfter:()=>{var k;return(k=t.navbarCenterAfter)==null?void 0:k.call(t)},endBefore:()=>{var k;return(k=t.navbarEndBefore)==null?void 0:k.call(t)},endAfter:()=>{var k;return(k=t.navbarEndAfter)==null?void 0:k.call(t)},screenTop:()=>{var k;return(k=t.navScreenTop)==null?void 0:k.call(t)},screenBottom:()=>{var k;return(k=t.navScreenBottom)==null?void 0:k.call(t)}}):null,f(xt,{name:"fade"},()=>s.value?f("div",{class:"vp-sidebar-mask",onClick:()=>c(!1)}):null),f(xt,{name:"fade"},()=>a.value?null:f("div",{class:"toggle-sidebar-wrapper",onClick:()=>d()},f("span",{class:["arrow",u.value?"end":"start"]}))),f(x1,{},{...t.sidebar?{default:()=>t.sidebar()}:{},top:()=>{var k;return(k=t.sidebarTop)==null?void 0:k.call(t)},bottom:()=>{var k;return(k=t.sidebarBottom)==null?void 0:k.call(t)}}),t.default(),f(u1)]))}}),_n=U({name:"DropTransition",props:{type:{type:String,default:"single"},delay:{type:Number,default:0},duration:{type:Number,default:.25},appear:Boolean},slots:Object,setup(e,{slots:t}){const n=o=>{o.style.transition=`transform ${e.duration}s ease-in-out ${e.delay}s, opacity ${e.duration}s ease-in-out ${e.delay}s`,o.style.transform="translateY(-20px)",o.style.opacity="0"},r=o=>{o.style.transform="translateY(0)",o.style.opacity="1"};return()=>f(e.type==="single"?xt:Bd,{name:"drop",appear:e.appear,onAppear:n,onAfterAppear:r,onEnter:n,onAfterEnter:r,onBeforeLeave:n},()=>t.default())}});const ei=({custom:e})=>f(Is,{class:["theme-hope-content",{custom:e}]});ei.displayName="MarkdownContent",ei.props={custom:Boolean};var tu=ei;const nu=()=>f(Ae,{name:"author"},()=>f("path",{d:"M649.6 633.6c86.4-48 147.2-144 147.2-249.6 0-160-128-288-288-288s-288 128-288 288c0 108.8 57.6 201.6 147.2 249.6-121.6 48-214.4 153.6-240 288-3.2 9.6 0 19.2 6.4 25.6 3.2 9.6 12.8 12.8 22.4 12.8h704c9.6 0 19.2-3.2 25.6-12.8 6.4-6.4 9.6-16 6.4-25.6-25.6-134.4-121.6-240-243.2-288z"}));nu.displayName="AuthorIcon";const ru=()=>f(Ae,{name:"calendar"},()=>f("path",{d:"M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"}));ru.displayName="CalendarIcon";const ou=()=>f(Ae,{name:"category"},()=>f("path",{d:"M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zM147.556 553.478H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zM593.927 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zM730.22 920.502H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z"}));ou.displayName="CategoryIcon";const iu=()=>f(Ae,{name:"print"},()=>f("path",{d:"M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"}));iu.displayName="PrintIcon";const au=()=>f(Ae,{name:"tag"},()=>f("path",{d:"M939.902 458.563L910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 000 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z"}));au.displayName="TagIcon";const lu=()=>f(Ae,{name:"timer"},()=>f("path",{d:"M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"}));lu.displayName="TimerIcon";const su=()=>f(Ae,{name:"word"},()=>[f("path",{d:"M518.217 432.64V73.143A73.143 73.143 0 01603.43 1.097a512 512 0 01419.474 419.474 73.143 73.143 0 01-72.046 85.212H591.36a73.143 73.143 0 01-73.143-73.143z"}),f("path",{d:"M493.714 566.857h340.297a73.143 73.143 0 0173.143 85.577A457.143 457.143 0 11371.566 117.76a73.143 73.143 0 0185.577 73.143v339.383a36.571 36.571 0 0036.571 36.571z"})]);su.displayName="WordIcon";const Ut=()=>{const e=ve();return I(()=>e.value.metaLocales)};var k1=U({name:"AuthorInfo",inheritAttrs:!1,props:{author:{type:Array,required:!0},pure:Boolean},setup(e){const t=Ut();return()=>e.author.length?f("span",{class:"page-author-info","aria-label":`${t.value.author}${e.pure?"":"🖊"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(nu),f("span",e.author.map(n=>n.url?f("a",{class:"page-author-item",href:n.url,target:"_blank",rel:"noopener noreferrer"},n.name):f("span",{class:"page-author-item"},n.name))),f("span",{property:"author",content:e.author.map(n=>n.name).join(", ")})]):null}}),C1=U({name:"CategoryInfo",inheritAttrs:!1,props:{category:{type:Array,required:!0},pure:Boolean},setup(e){const t=Ge(),n=de(),r=Ut(),o=(i,a="")=>{a&&n.value.path!==a&&(i.preventDefault(),t.push(a))};return()=>e.category.length?f("span",{class:"page-category-info","aria-label":`${r.value.category}${e.pure?"":"🌈"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(ou),e.category.map(({name:i,path:a})=>f("span",{class:["page-category-item",{[`category${Ks(i,9)}`]:!e.pure,clickable:a}],role:a?"navigation":"",onClick:l=>o(l,a)},i)),f("meta",{property:"articleSection",content:e.category.map(({name:i})=>i).join(",")})]):null}}),D1=U({name:"DateInfo",inheritAttrs:!1,props:{date:{type:Object,default:null},localizedDate:{type:String,default:""},pure:Boolean},setup(e){const t=Ii(),n=Ut();return()=>e.date?f("span",{class:"page-date-info","aria-label":`${n.value.date}${e.pure?"":"📅"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(ru),f("span",f(ro,()=>e.localizedDate||e.date.toLocaleDateString(t.value))),f("meta",{property:"datePublished",content:e.date.toISOString()||""})]):null}}),S1=U({name:"OriginalInfo",inheritAttrs:!1,props:{isOriginal:Boolean},setup(e){const t=Ut();return()=>e.isOriginal?f("span",{class:"page-original-info"},t.value.origin):null}}),V1=U({name:"ReadingTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const t=Ut(),n=I(()=>{if(!e.readingTime)return null;const{minutes:r}=e.readingTime;return r<1?"PT1M":`PT${Math.round(r)}M`});return()=>{var r,o;return(r=e.readingTimeLocale)!=null&&r.time?f("span",{class:"page-reading-time-info","aria-label":`${t.value.readingTime}${e.pure?"":"⌛"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(lu),f("span",(o=e.readingTimeLocale)==null?void 0:o.time),f("meta",{property:"timeRequired",content:n.value})]):null}}}),M1=U({name:"TagInfo",inheritAttrs:!1,props:{tag:{type:Array,default:()=>[]},pure:Boolean},setup(e){const t=Ge(),n=de(),r=Ut(),o=(i,a="")=>{a&&n.value.path!==a&&(i.preventDefault(),t.push(a))};return()=>e.tag.length?f("span",{class:"page-tag-info","aria-label":`${r.value.tag}${e.pure?"":"🏷"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(au),e.tag.map(({name:i,path:a})=>f("span",{class:["page-tag-item",{[`tag${Ks(i,9)}`]:!e.pure,clickable:a}],role:a?"navigation":"",onClick:l=>o(l,a)},i)),f("meta",{property:"keywords",content:e.tag.map(({name:i})=>i).join(",")})]):null}}),$1=U({name:"ReadTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const t=Ut();return()=>{var n,r,o;return(n=e.readingTimeLocale)!=null&&n.words?f("span",{class:"page-word-info","aria-label":`${t.value.words}${e.pure?"":"🔠"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[f(su),f("span",(r=e.readingTimeLocale)==null?void 0:r.words),f("meta",{property:"wordCount",content:(o=e.readingTime)==null?void 0:o.words})]):null}}}),N1=U({name:"PageInfo",components:{AuthorInfo:k1,CategoryInfo:C1,DateInfo:D1,OriginalInfo:S1,PageViewInfo:()=>null,ReadingTimeInfo:V1,TagInfo:M1,WordInfo:$1},props:{items:{type:[Array,Boolean],default:()=>["Author","Original","Date","PageView","ReadingTime","Category","Tag"]},info:{type:Object,required:!0}},setup(e){const t=gr();return()=>e.items?f("div",{class:"page-info"},e.items.map(n=>f(nt(`${n}Info`),{...e.info,pure:t.value}))):null}}),z1=U({name:"PrintButton",setup(){const e=Bn(),t=ve();return()=>e.value.print===!1?null:f("button",{type:"button",class:"print-button",title:t.value.metaLocales.print,onClick:()=>{window.print()}},f(iu))}});const B1=({title:e,level:t,slug:n})=>f(et,{to:`#${n}`,class:["toc-link",`level${t}`]},()=>e),ti=(e,t)=>{const n=yt();return e.length&&t>0?f("ul",{class:"toc-list"},e.map(r=>{const o=ti(r.children,t-1);return[f("li",{class:["toc-item",{active:n.hash===`#${r.slug}`}]},B1(r)),o?f("li",o):null]})):null};var F1=U({name:"TOC",props:{items:{type:Array,default:()=>[]},headerDepth:{type:Number,default:2}},slots:Object,setup(e,{slots:t}){const n=yt(),r=de(),o=Ut(),i=it(),a=ee("-1.7rem"),l=c=>{var u;(u=i.value)==null||u.scrollTo({top:c,behavior:"smooth"})},s=()=>{if(i.value){const c=document.querySelector(".toc-item.active");c?a.value=`${c.getBoundingClientRect().top-i.value.getBoundingClientRect().top+i.value.scrollTop}px`:a.value="-1.7rem"}else a.value="-1.7rem"};return ge(()=>{fe(()=>n.hash,c=>{if(i.value){const u=document.querySelector(`#toc a.toc-link[href$="${c}"]`);if(!u)return;const{top:d,height:p}=i.value.getBoundingClientRect(),{top:m,height:g}=u.getBoundingClientRect();md+p&&l(i.value.scrollTop+m+g-d-p)}}),fe(()=>n.fullPath,s,{flush:"post",immediate:!0})}),()=>{var u,d;const c=e.items.length?ti(e.items,e.headerDepth):r.value.headers?ti(r.value.headers,e.headerDepth):null;return c?f("div",{class:"toc-place-holder"},[f("aside",{id:"toc"},[(u=t.before)==null?void 0:u.call(t),f("div",{class:"toc-header"},[o.value.toc,f(z1)]),f("div",{class:"toc-wrapper",ref:i},[c,f("div",{class:"toc-marker",style:{top:a.value}})]),(d=t.after)==null?void 0:d.call(t)])]):null}}}),cu=U({name:"SkipLink",props:{content:{type:String,default:"main-content"}},setup(e){const t=de(),n=ve(),r=it(),o=({target:i})=>{const a=document.querySelector(i.hash);if(a){const l=()=>{a.removeAttribute("tabindex"),a.removeEventListener("blur",l)};a.setAttribute("tabindex","-1"),a.addEventListener("blur",l),a.focus(),window.scrollTo(0,0)}};return ge(()=>{fe(()=>t.value.path,()=>r.value.focus())}),()=>[f("span",{ref:r,tabindex:"-1"}),f("a",{href:`#${e.content}`,class:"vp-skip-link sr-only",onClick:o},n.value.routeLocales.skipToContent)]}});let Do=null,Wn=null;const H1={wait:()=>Do,pending:()=>{Do=new Promise(e=>Wn=e)},resolve:()=>{Wn==null||Wn(),Do=null,Wn=null}},uu=()=>H1;var j1=U({name:"FadeSlideY",slots:Object,setup(e,{slots:t}){const{resolve:n,pending:r}=uu();return()=>f(xt,{name:"fade-slide-y",mode:"out-in",onBeforeEnter:n,onBeforeLeave:r},()=>{var o;return(o=t.default)==null?void 0:o.call(t)})}});const W1=(e,t)=>{const n=e.replace(t,"/").split("/"),r=[];let o=Ri(t);return n.forEach((i,a)=>{a!==n.length-1?(o+=`${i}/`,r.push({link:o,name:i||"Home"})):i!==""&&(o+=i,r.push({link:o,name:i}))}),r},fu=(e,{slots:t})=>{var d,p;const{bgImage:n,bgImageDark:r,bgImageStyle:o,color:i,description:a,image:l,imageDark:s,header:c,features:u=[]}=e;return f("div",{class:"vp-feature-wrapper"},[n?f("div",{class:["vp-feature-bg",{light:r}],style:[{"background-image":`url(${n})`},o]}):null,r?f("div",{class:"vp-feature-bg dark",style:[{"background-image":`url(${r})`},o]}):null,f("div",{class:"vp-feature",style:i?{color:i}:{}},[((d=t.image)==null?void 0:d.call(t,e))||[l?f("img",{class:["vp-feature-image",{light:s}],src:Ve(l),alt:c}):null,s?f("img",{class:"vp-feature-image dark",src:Ve(s),alt:c}):null],((p=t.info)==null?void 0:p.call(t,e))||[c?f("h2",{class:"vp-feature-header"},c):null,a?f("p",{class:"vp-feature-description",innerHTML:a}):null],u.length?f("div",{class:"vp-features"},u.map(({icon:m,title:g,details:w,link:T})=>{const y=[f("h3",{class:"vp-feature-title"},[f(je,{icon:m}),f("span",{innerHTML:g})]),f("p",{class:"vp-feature-details",innerHTML:w})];return T?Wr(T)?f("a",{class:"vp-feature-item link",href:T,"aria-label":g,target:"_blank"},y):f(et,{class:"vp-feature-item link",to:T,"aria-label":g},()=>y):f("div",{class:"vp-feature-item"},y)})):null])])};fu.displayName="FeaturePanel";var pl=fu;const du=e=>{const{icon:t="",color:n,size:r}=e,o={};return n&&(o.color=n),r&&(o.height=Number.isNaN(Number(r))?r:`${r}px`),Mn(t)?f("img",{class:"icon",src:t,"no-view":"",style:o}):ao(t)?f("img",{class:"icon",src:Ve(t),"no-view":"",style:o}):f(nt("FontIcon"),e)};du.displayName="HopeIcon";var q1=du,U1=U({name:"HeroInfo",slots:Object,setup(e,{slots:t}){const n=Pe(),r=no(),o=I(()=>n.value.heroFullScreen??!1),i=I(()=>{const{heroText:c,tagline:u}=n.value;return{text:c??r.value.title??"Hello",tagline:u??r.value.description??"",isFullScreen:o.value}}),a=I(()=>{const{heroText:c,heroImage:u,heroImageDark:d,heroAlt:p,heroImageStyle:m}=n.value;return{image:u?Ve(u):null,imageDark:d?Ve(d):null,heroStyle:m,alt:p||c||"hero image",isFullScreen:o.value}}),l=I(()=>{const{bgImage:c,bgImageDark:u,bgImageStyle:d}=n.value;return{image:kt(c)?Ve(c):null,imageDark:kt(u)?Ve(u):null,bgStyle:d,isFullScreen:o.value}}),s=I(()=>n.value.actions??[]);return()=>{var c,u,d;return f("header",{class:["vp-hero-info-wrapper",{fullscreen:o.value}]},[((c=t.heroBg)==null?void 0:c.call(t,l.value))||[l.value.image?f("div",{class:["vp-hero-mask",{light:l.value.imageDark}],style:[{"background-image":`url(${l.value.image})`},l.value.bgStyle]}):null,l.value.imageDark?f("div",{class:"vp-hero-mask dark",style:[{"background-image":`url(${l.value.imageDark})`},l.value.bgStyle]}):null],f("div",{class:"vp-hero-info"},[((u=t.heroImage)==null?void 0:u.call(t,a.value))||f(_n,{appear:!0,type:"group"},()=>[a.value.image?f("img",{key:"light",class:["vp-hero-image",{light:a.value.imageDark}],style:a.value.heroStyle,src:a.value.image,alt:a.value.alt}):null,a.value.imageDark?f("img",{key:"dark",class:"vp-hero-image dark",style:a.value.heroStyle,src:a.value.imageDark,alt:a.value.alt}):null]),((d=t.heroInfo)==null?void 0:d.call(t,i.value))??f("div",{class:"vp-hero-infos"},[i.value.text?f(_n,{appear:!0,delay:.04},()=>f("h1",{id:"main-title"},i.value.text)):null,i.value.tagline?f(_n,{appear:!0,delay:.08},()=>f("p",{id:"main-description",innerHTML:i.value.tagline})):null,s.value.length?f(_n,{appear:!0,delay:.12},()=>f("p",{class:"vp-hero-actions"},s.value.map(p=>f(Fe,{class:["vp-hero-action",p.type||"default"],config:p,noExternalLinkIcon:!0},p.icon?{before:()=>f(q1,{icon:p.icon})}:{})))):null])])])}}});const pu=(e,{slots:t})=>{var p,m,g;const{bgImage:n,bgImageDark:r,bgImageStyle:o,color:i,description:a,image:l,imageDark:s,header:c,highlights:u=[],type:d="un-order"}=e;return f("div",{class:"vp-highlight-wrapper",style:i?{color:i}:{}},[n?f("div",{class:["vp-highlight-bg",{light:r}],style:[{"background-image":`url(${n})`},o]}):null,r?f("div",{class:"vp-highlight-bg dark",style:[{"background-image":`url(${r})`},o]}):null,f("div",{class:"vp-highlight"},[((p=t.image)==null?void 0:p.call(t,e))||[l?f("img",{class:["vp-highlight-image",{light:s}],src:Ve(l),alt:c}):null,s?f("img",{class:"vp-highlight-image dark",src:Ve(s),alt:c}):null],((m=t.info)==null?void 0:m.call(t,e))||[f("div",{class:"vp-highlight-info-wrapper"},f("div",{class:"vp-highlight-info"},[c?f("h2",{class:"vp-highlight-header",innerHTML:c}):null,a?f("p",{class:"vp-highlight-description",innerHTML:a}):null,((g=t.highlights)==null?void 0:g.call(t,u))||f(d==="order"?"ol":d==="no-order"?"dl":"ul",{class:"vp-highlights"},u.map(({icon:w,title:T,details:y,link:P})=>{const b=[f(d==="no-order"?"dt":"h3",{class:"vp-highlight-title"},[w?f(je,{class:"vp-highlight-icon",icon:w}):null,f("span",{innerHTML:T})]),y?f(d==="no-order"?"dd":"p",{class:"vp-highlight-details",innerHTML:y}):null];return f(d==="no-order"?"div":"li",{class:["vp-highlight-item-wrapper",{link:P}]},P?$h(P)?f("a",{class:"vp-highlight-item link",href:P,"aria-label":T,target:"_blank"},b):f(et,{class:"vp-highlight-item link",to:P,"aria-label":T},()=>b):f("div",{class:"vp-highlight-item"},b))}))]))]])])};pu.displayName="HighlightPanel";var K1=pu,G1=U({name:"HomePage",slots:Object,setup(e,{slots:t}){const n=gr(),r=Pe(),o=I(()=>{const{features:a}=r.value;return X(a)?a:null}),i=I(()=>{const{highlights:a}=r.value;return X(a)?a:null});return()=>{var a,l,s,c;return f("main",{id:"main-content",class:["vp-project-home ",{pure:n.value}],"aria-labelledby":r.value.heroText===null?"":"main-title"},[(a=t.top)==null?void 0:a.call(t),f(U1),((l=i.value)==null?void 0:l.map(u=>"features"in u?f(pl,u):f(K1,u)))||(o.value?f(_n,{appear:!0,delay:.24},()=>f(pl,{features:o.value})):null),(s=t.center)==null?void 0:s.call(t),f(_n,{appear:!0,delay:.32},()=>f(tu)),(c=t.bottom)==null?void 0:c.call(t)])}}}),Y1=U({name:"BreadCrumb",setup(){const e=Ge(),t=de(),n=ln(),r=Pe(),o=ve(),i=it([]),a=I(()=>(r.value.breadcrumb||r.value.breadcrumb!==!1&&o.value.breadcrumb!==!1)&&i.value.length>1),l=I(()=>r.value.breadcrumbIcon||r.value.breadcrumbIcon!==!1&&o.value.breadcrumbIcon!==!1),s=()=>{const c=e.getRoutes(),u=W1(t.value.path,n.value).map(({link:d,name:p})=>{const m=c.find(g=>g.path===d);if(m){const{meta:g,path:w}=Ur(e,m.path);return{title:g[Rt.shortTitle]||g[Rt.title]||p,icon:g[Rt.icon],path:w}}return null}).filter(d=>d!==null);u.length>1&&(i.value=u)};return ge(()=>{fe(()=>t.value.path,s,{immediate:!0})}),()=>f("nav",{class:["vp-breadcrumb",{disable:!a.value}]},a.value?f("ol",{vocab:"https://schema.org/",typeof:"BreadcrumbList"},i.value.map((c,u)=>f("li",{class:{"is-active":i.value.length-1===u},property:"itemListElement",typeof:"ListItem"},[f(et,{to:c.path,property:"item",typeof:"WebPage"},()=>[l.value?f(je,{icon:c.icon}):null,f("span",{property:"name"},c.title||"Unknown")]),f("meta",{property:"position",content:u+1})]))):[])}});const hl=e=>{const t=Ge();return e===!1?!1:ue(e)?En(t,e,!0):Pi(e)?e:null},ni=(e,t,n)=>{const r=e.findIndex(o=>o.link===t);if(r!==-1){const o=e[r+n];return o!=null&&o.link?o:null}for(const o of e)if(o.children){const i=ni(o.children,t,n);if(i)return i}return null};var Z1=U({name:"PageNav",setup(){const e=ve(),t=Pe(),n=Fi(),r=de(),o=Zm(),i=I(()=>{const l=hl(t.value.prev);return l===!1?null:l||(e.value.prevLink===!1?null:ni(n.value,r.value.path,-1))}),a=I(()=>{const l=hl(t.value.next);return l===!1?null:l||(e.value.nextLink===!1?null:ni(n.value,r.value.path,1))});return Me("keydown",l=>{l.altKey&&(l.key==="ArrowRight"?a.value&&(o(a.value.link),l.preventDefault()):l.key==="ArrowLeft"&&i.value&&(o(i.value.link),l.preventDefault()))}),()=>i.value||a.value?f("nav",{class:"vp-page-nav"},[i.value?f(Fe,{class:"prev",config:i.value},()=>{var l,s;return[f("div",{class:"hint"},[f("span",{class:"arrow start"}),e.value.metaLocales.prev]),f("div",{class:"link"},[f(je,{icon:(l=i.value)==null?void 0:l.icon}),(s=i.value)==null?void 0:s.text])]}):null,a.value?f(Fe,{class:"next",config:a.value},()=>{var l,s;return[f("div",{class:"hint"},[e.value.metaLocales.next,f("span",{class:"arrow end"})]),f("div",{class:"link"},[(l=a.value)==null?void 0:l.text,f(je,{icon:(s=a.value)==null?void 0:s.icon})])]}):null]):null}});const Q1={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},J1=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o})=>{if(!r)return null;const i=ec(e);let a;return o?a=o:i!==null&&(a=Q1[i]),a?a.replace(/:repo/,Mn(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,bs(`${Ri(n)}/${r}`)):null},X1=()=>{const e=ve(),t=de(),n=Pe();return I(()=>{const{repo:r,docsRepo:o=r,docsBranch:i="main",docsDir:a="",editLink:l,editLinkPattern:s=""}=e.value;if(!(n.value.editLink??l??!0)||!o)return null;const c=J1({docsRepo:o,docsBranch:i,docsDir:a,editLinkPattern:s,filePathRelative:t.value.filePathRelative});return c?{text:e.value.metaLocales.editLink,link:c}:null})},e_=()=>{const e=no(),t=ve(),n=de(),r=Pe();return I(()=>{var o,i;return!(r.value.lastUpdated??t.value.lastUpdated??!0)||!((o=n.value.git)!=null&&o.updatedTime)?null:new Date((i=n.value.git)==null?void 0:i.updatedTime).toLocaleString(e.value.lang)})},t_=()=>{const e=ve(),t=de(),n=Pe();return I(()=>{var r;return n.value.contributors??e.value.contributors??!0?((r=t.value.git)==null?void 0:r.contributors)??null:null})};var n_=U({name:"PageTitle",setup(){const e=de(),t=Pe(),n=ve(),{info:r,items:o}=e1();return()=>f("div",{class:"vp-page-title"},[f("h1",[n.value.titleIcon===!1?null:f(je,{icon:t.value.icon}),e.value.title]),f(N1,{info:r.value,...o.value===null?{}:{items:o.value}}),f("hr")])}});const hu=()=>f(Ae,{name:"edit"},()=>[f("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),f("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})]);hu.displayName="EditIcon";var r_=U({name:"PageMeta",setup(){const e=ve(),t=X1(),n=e_(),r=t_();return()=>{const{metaLocales:o}=e.value;return f("footer",{class:"page-meta"},[t.value?f("div",{class:"meta-item edit-link"},f(Fe,{class:"label",config:t.value},{before:()=>f(hu)})):null,f("div",{class:"meta-item git-info"},[n.value?f("div",{class:"update-time"},[f("span",{class:"label"},`${o.lastUpdated}: `),f(ro,()=>f("span",{class:"info"},n.value))]):null,r.value&&r.value.length?f("div",{class:"contributors"},[f("span",{class:"label"},`${o.contributors}: `),r.value.map(({email:i,name:a},l)=>[f("span",{class:"contributor",title:`email: ${i}`},a),l!==r.value.length-1?",":""])]):null])])}}}),o_=U({name:"NormalPage",slots:Object,setup(e,{slots:t}){const n=Pe(),r=de(),{isDarkmode:o}=br(),i=ve(),a=I(()=>n.value.toc||n.value.toc!==!1&&i.value.toc!==!1);return()=>f("main",{id:"main-content",class:"vp-page"},f(Ot("LocalEncrypt")?nt("LocalEncrypt"):Us,()=>{var l,s,c,u;return[(l=t.top)==null?void 0:l.call(t),n.value.cover?f("img",{class:"page-cover",src:Ve(n.value.cover),alt:r.value.title,"no-view":""}):null,f(Y1),f(n_),a.value?f(F1,{headerDepth:n.value.headerDepth??i.value.headerDepth??2},{before:()=>{var d;return(d=t.tocBefore)==null?void 0:d.call(t)},after:()=>{var d;return(d=t.tocAfter)==null?void 0:d.call(t)}}):null,(s=t.contentBefore)==null?void 0:s.call(t),f(tu),(c=t.contentAfter)==null?void 0:c.call(t),f(r_),f(Z1),Ot("CommentService")?f(nt("CommentService"),{darkmode:o.value}):null,(u=t.bottom)==null?void 0:u.call(t)]}))}}),i_=U({name:"Layout",slots:Object,setup(e,{slots:t}){ve();const n=de(),r=Pe(),{isMobile:o}=co(),i=I(()=>"none");return()=>[f(cu),f(eu,{},{default:()=>{var a;return((a=t.default)==null?void 0:a.call(t))||(r.value.home?f(G1):f(j1,()=>f(o_,{key:n.value.path},{top:()=>{var l;return(l=t.top)==null?void 0:l.call(t)},bottom:()=>{var l;return(l=t.bottom)==null?void 0:l.call(t)},contentBefore:()=>{var l;return(l=t.contentBefore)==null?void 0:l.call(t)},contentAfter:()=>{var l;return(l=t.contentAfter)==null?void 0:l.call(t)},tocBefore:()=>{var l;return(l=t.tocBefore)==null?void 0:l.call(t)},tocAfter:()=>{var l;return(l=t.tocAfter)==null?void 0:l.call(t)}})))},...i.value!=="none"?{navScreenBottom:()=>f(nt("BloggerInfo"))}:{},...!o.value&&i.value==="always"?{sidebar:()=>f(nt("BloggerInfo"))}:{}})]}}),a_=U({name:"NotFoundHint",setup(){const e=ve(),t=()=>{const n=e.value.routeLocales.notFoundMsg;return n[Math.floor(Math.random()*n.length)]};return()=>f("div",{class:"not-found-hint"},[f("p",{class:"error-code"},"404"),f("h1",{class:"error-title"},e.value.routeLocales.notFoundTitle),f("p",{class:"error-hint"},t())])}}),l_=U({name:"NotFound",slots:Object,setup(e,{slots:t}){const n=ln(),r=ve(),{navigate:o}=Go({to:r.value.home??n.value});return()=>[f(cu),f(eu,{noSidebar:!0},()=>{var i;return f("main",{id:"main-content",class:"vp-page not-found"},((i=t.default)==null?void 0:i.call(t))||[f(a_),f("div",{class:"actions"},[f("button",{type:"button",class:"action-button",onClick:()=>{window.history.go(-1)}},r.value.routeLocales.back),f("button",{type:"button",class:"action-button",onClick:()=>o()},r.value.routeLocales.home)])])})]}});Dv(e=>{const t=e.t,n=e.I!==!1,r=e.i;return n?{title:t,content:r?()=>[f(je,{icon:r}),t]:null,order:e.O,index:e.I}:null});const s_=at({enhance:({app:e,router:t})=>{const{scrollBehavior:n}=t.options;t.options.scrollBehavior=async(...r)=>(await uu().wait(),n(...r)),r1(e),e.component("HopeIcon",je),e.component("VPLink",et)},setup:()=>{o1(),c1()},layouts:{Layout:i_,NotFound:l_}}),Dr=[pp,Lv,Cv,Nv,Hv,Uv,Qv,im,hm,wm,Dm,jm,s_],c_=[["v-8daa1a0e","/",{y:"h",t:"Home",i:"home"},["/README.md"]],["v-fffb8e28","/guide/",{y:"a",t:"Guide",i:"terminal"},["/guide/README.md"]],["v-43c96c34","/more/collaborative_projects.html",{y:"a",t:"Collaborative Projects",i:"circle-info"},[":md"]],["v-17f2914c","/more/contact.html",{y:"a",t:"Contact US",i:"circle-info"},[":md"]],["v-07f943d9","/more/license.html",{y:"a",t:"License",i:"circle-info"},[":md"]],["v-9e2e7e22","/more/thanks.html",{y:"a",t:"Acknowledgments",i:"circle-info"},[":md"]],["v-1d3d20e2","/more/use_cases.html",{y:"a",t:"Use Cases",i:"circle-info"},[":md"]],["v-639495b8","/tutorial/",{y:"a",t:"Tutorial",i:"lightbulb"},["/tutorial/README.md"]],["v-2d0ad528","/zh/",{y:"h",t:"首页",i:"home"},["/zh/README.md"]],["v-58ff8a76","/guide/code/",{y:"a",t:"Code interpretation",i:"code"},["/guide/code/README.md"]],["v-07e28fb7","/guide/code/oncetoken.html",{y:"a",t:"onceToken"},[":md"]],["v-5d588a76","/guide/faq/",{y:"a",t:"FAQ",i:"question"},["/guide/faq/README.md"]],["v-67fe8904","/guide/faq/not_recommended_qq.html",{y:"a",t:"Why is it not recommended to consult questions via QQ private chat?"},[":md"]],["v-9ef794be","/guide/faq/rtmp_playback_compatibility_issues.html",{y:"a",t:"RTMP Playback Compatibility Issues"},[":md"]],["v-26771ae0","/guide/install/",{y:"a",t:"Install",i:"box-archive"},["/guide/install/README.md"]],["v-7c5f89f1","/guide/install/compilation_instructions_for_windows_version.html",{y:"a",t:"Building Instructions for Windows"},[":md"]],["v-2a95408c","/guide/install/install_zlmediakit_using_vcpkg.html",{y:"a",t:"Installing zlmediakit with vcpkg"},[":md"]],["v-410226d2","/guide/install/start.html",{y:"a",t:"Start",O:1},[":md"]],["v-1a355af6","/guide/media_server/",{y:"a",t:"Media Server",i:"gears",O:3},["/guide/media_server/README.md"]],["v-f17856b6","/guide/media_server/config_file.html",{y:"a",t:"Configuration File Explanation"},[":md"]],["v-326b1b06","/guide/media_server/generate_ssl_self-signed_certificate_and_test.html",{y:"a",t:"Generate SSL self-signed certificate and test"},[":md"]],["v-f90651dc","/guide/media_server/how_to_enable_https_related_functions.html",{y:"a",t:"How to Enable HTTPS Related Functions"},[":md"]],["v-629229d1","/guide/media_server/on-demand_push_streaming.html",{y:"a",t:"Implement on-demand push streaming"},[":md"]],["v-a3ed6f7c","/guide/media_server/on-demand_streaming.html",{y:"a",t:"Implement on-demand pull streaming"},[":md"]],["v-22d780d8","/guide/media_server/play_url_rules.html",{y:"a",t:"Playing URL Rules",i:"circle-info"},[":md"]],["v-40777a42","/guide/media_server/playback_authentication.html",{y:"a",t:"Implementing Playback Authentication"},[":md"]],["v-1c8baf7e","/guide/media_server/push_authentication.html",{y:"a",t:"Implementing Push Streaming Authentication"},[":md"]],["v-d003c332","/guide/media_server/push_test.html",{y:"a",t:"Push and Playback Testing"},[":md"]],["v-992f244c","/guide/media_server/restful_api.html",{y:"a",t:"RESTful API"},[":md"]],["v-1563923f","/guide/media_server/sequence_diagram.html",{y:"a",t:"Sequence diagram"},[":md"]],["v-3f9e2b34","/guide/media_server/start_server.html",{y:"a",t:"Starting and Stopping the Server",i:"circle-info"},[":md"]],["v-4436fd0b","/guide/media_server/web_hook_api.html",{y:"a",t:"Web Hook"},[":md"]],["v-fa0f55aa","/guide/protocol/",{y:"a",t:"Protocol",i:"lightbulb"},["/guide/protocol/README.md"]],["v-5d4ca3be","/guide/sdk/",{y:"a",t:"SDK API",i:"lightbulb"},["/guide/sdk/README.md"]],["v-29126422","/guide/sdk/how_to_create_a_live_steam.html",{y:"a",t:"How to create a live stream"},[":md"]],["v-b1256428","/reference/development_log/",{y:"a",t:"Development log",i:"code-commit"},["/reference/development_log/README.md"]],["v-099b9809","/reference/development_log/hls_high_performance_journey.html",{y:"a",t:"zlmediakit的hls高性能之旅"},[":md"]],["v-c75d9fee","/reference/development_log/rtsp_performance_optimization.html",{y:"a",t:"RTSP性能优化",O:1},[":md"]],["v-27716634","/reference/documents/",{y:"a",t:"Related documents",i:"file-code"},["/reference/documents/README.md"]],["v-3d1bfe27","/reference/documents/exclusive_features.html",{y:"a",t:"Exclusive Features of ZLMediakit"},[":md"]],["v-61f35635","/reference/documents/high_concurrency_implementation_principle.html",{y:"a",t:"ZLMediaKit高并发实现原理"},[":md"]],["v-60e3ff20","/reference/documents/introduction_to_streaming_media_related_technologies.html",{y:"a",t:"流媒体相关技术介绍"},[":md"]],["v-716fbfe3","/reference/documents/rtsp_push_process.html",{y:"a",t:"RTSP push streaming process"},[":md"]],["v-159648d6","/reference/documents/the_nature_of_live_broadcast_delay.html",{y:"a",t:"The Essence of Live Streaming Delay"},[":md"]],["v-07cf6867","/reference/resources/",{y:"a",t:"Resources",i:"font-awesome"},["/reference/resources/README.md"]],["v-2894bdb2","/reference/resources/dependency.html",{y:"a",t:"Dependency and Copyright",O:1},[":md"]],["v-630bfad5","/reference/resources/rtmp_support_for_h265_and_opus.html",{y:"a",t:"RTMP supports H265 and OPUS"},[":md"]],["v-a9be237a","/reference/resources/video_conferencing_related_resources.html",{y:"a",t:"Video Conference Related Resources"},[":md"]],["v-770cb196","/reference/resources/zltoolkit_source_code_study_notes.html",{y:"a",t:"ZLToolKit source code study notes"},[":md"]],["v-60c5ec00","/reference/test/",{y:"a",t:"Testing",i:"vials"},["/reference/test/README.md"]],["v-7cf84008","/reference/test/benchmark.html",{y:"a",t:"Benchmark"},[":md"]],["v-d8f6ac6a","/reference/test/delay_test.html",{y:"a",t:"Delay Testing"},[":md"]],["v-adc6a8e4","/reference/test/how_to_test_delay.html",{y:"a",t:"How to test the delay?"},[":md"]],["v-ea3f92ca","/reference/test/online_test.html",{y:"a",t:"Online test"},[":md"]],["v-210a0a78","/reference/test/performance_testing.html",{y:"a",t:"Performance Testing"},[":md"]],["v-27157219","/reference/test/rtmp_pull_stream_performance_test.html",{y:"a",t:"rtmp pull stream performance test"},[":md"]],["v-927f8538","/reference/test/rtmp_push_stream_performance_test.html",{y:"a",t:"rtmp push stream performance test"},[":md"]],["v-3ede775a","/reference/test/rtsp_pull_stream_performance_test.html",{y:"a",t:"rtsp pull stream performance test"},[":md"]],["v-703b8f9e","/reference/test/rtsp_push_stream_performance_test.html",{y:"a",t:"rtsp push stream performance test"},[":md"]],["v-47357bdb","/zh/guide/",{y:"a",t:"指南",i:"terminal"},["/zh/guide/README.md"]],["v-0a3cd263","/zh/more/collaborative_projects.html",{y:"a",t:"合作项目",i:"circle-info"},[":md"]],["v-8b20cdea","/zh/more/contact.html",{y:"a",t:"联系我们",i:"circle-info"},[":md"]],["v-633bb4ec","/zh/more/license.html",{y:"a",t:"授权协议",i:"circle-info"},[":md"]],["v-4bf4651e","/zh/more/thanks.html",{y:"a",t:"致谢",i:"circle-info"},[":md"]],["v-7dceae00","/zh/more/use_cases.html",{y:"a",t:"使用案例",i:"circle-info"},[":md"]],["v-ec228f2e","/zh/tutorial/",{y:"a",t:"快速开始",i:"lightbulb"},["/zh/tutorial/README.md"]],["v-cb3c3b8e","/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html",{y:"a",t:"GB28181 SIP信令抓包"},[":md"]],["v-6fbaec55","/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html",{y:"a",t:"GB28181怎么用设备ID作为流ID"},[":md"]],["v-079ebd6a","/guide/protocol/gb28181/push_streaming.html",{y:"a",t:"GB28181推流"},[":md"]],["v-114c6ef6","/guide/protocol/srt/",{y:"a",t:"SRT"},["/guide/protocol/srt/README.md"]],["v-d73f5e1e","/guide/protocol/webrtc/webrtc_compilation_and_use.html",{y:"a",t:"Compiling and Using WebRTC"},[":md"]],["v-284ed9d6","/guide/protocol/webrtc/webrtc_signaling_interaction_format.html",{y:"a",t:"WebRTC Signaling Interaction Format"},[":md"]],["v-515bc4e7","/zh/guide/code/",{y:"a",t:"代码解读",i:"code"},["/zh/guide/code/README.md"]],["v-e1a99f30","/zh/guide/code/oncetoken.html",{y:"a",t:"代码篇之onceToken"},[":md"]],["v-763dee34","/zh/guide/faq/",{y:"a",t:"常见问题",i:"question"},["/zh/guide/faq/README.md"]],["v-6ff7e8b5","/zh/guide/faq/not_recommended_qq.html",{y:"a",t:"为什么不建议QQ私聊咨询问题?"},[":md"]],["v-75521352","/zh/guide/faq/rtmp_playback_compatibility_issues.html",{y:"a",t:"RTMP播放兼容性问题"},[":md"]],["v-1b2bfecf","/zh/guide/install/",{y:"a",t:"安装",i:"box-archive"},["/zh/guide/install/README.md"]],["v-3c49c43c","/zh/guide/install/compilation_instructions_for_windows_version.html",{y:"a",t:"Windows 版编译说明"},[":md"]],["v-2139c386","/zh/guide/install/install_zlmediakit_using_vcpkg.html",{y:"a",t:"vcpkg方式安装zlmediakit"},[":md"]],["v-4f36f1c6","/zh/guide/install/start.html",{y:"a",t:"快速开始",O:1},[":md"]],["v-7ac6e814","/zh/guide/media_server/",{y:"a",t:"Media Server",i:"gears"},["/zh/guide/media_server/README.md"]],["v-76640c16","/zh/guide/media_server/config_file.html",{y:"a",t:"配置文件详解"},[":md"]],["v-04c98dae","/zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html",{y:"a",t:"生成SSL自签名证书并测试"},[":md"]],["v-fc02997a","/zh/guide/media_server/how_to_enable_https_related_functions.html",{y:"a",t:"怎么开启https相关功能"},[":md"]],["v-60a95200","/zh/guide/media_server/on-demand_push_streaming.html",{y:"a",t:"实现按需推流"},[":md"]],["v-b991029a","/zh/guide/media_server/on-demand_streaming.html",{y:"a",t:"实现按需拉流"},[":md"]],["v-78eb47c7","/zh/guide/media_server/play_url_rules.html",{y:"a",t:"播放url规则",i:"circle-info"},[":md"]],["v-2459df9a","/zh/guide/media_server/playback_authentication.html",{y:"a",t:"实现播放鉴权"},[":md"]],["v-322f429c","/zh/guide/media_server/push_authentication.html",{y:"a",t:"实现推流鉴权"},[":md"]],["v-c01103d0","/zh/guide/media_server/push_test.html",{y:"a",t:"推流播放测试"},[":md"]],["v-baeeb56a","/zh/guide/media_server/restful_api.html",{y:"a",t:"RESTful 接口"},[":md"]],["v-35a1596e","/zh/guide/media_server/sequence_diagram.html",{y:"a",t:"时序图"},[":md"]],["v-3484e1e3","/zh/guide/media_server/start_server.html",{y:"a",t:"服务器的启动与关闭",i:"circle-info"},[":md"]],["v-391db3ba","/zh/guide/media_server/web_hook_api.html",{y:"a",t:"Web Hook 接口"},[":md"]],["v-24dfef1c","/zh/guide/protocol/",{y:"a",t:"协议相关",i:"lightbulb"},["/zh/guide/protocol/README.md"]],["v-7643e190","/zh/guide/sdk/",{y:"a",t:"SDK API",i:"cube"},["/zh/guide/sdk/README.md"]],["v-5a1c26c0","/zh/guide/sdk/how_to_create_a_live_steam.html",{y:"a",t:"怎样创建直播流"},[":md"]],["v-0938c35b","/zh/reference/development_log/",{y:"a",t:"开发日志",i:"code-commit"},["/zh/reference/development_log/README.md"]],["v-5298cc7a","/zh/reference/development_log/hls_high_performance_journey.html",{y:"a",t:"zlmediakit的hls高性能之旅"},[":md"]],["v-72fa89b8","/zh/reference/development_log/rtsp_performance_optimization.html",{y:"a",t:"RTSP性能优化",O:1},[":md"]],["v-4ea15ae3","/zh/reference/documents/",{y:"a",t:"相关文档",i:"file-code"},["/zh/reference/documents/README.md"]],["v-324a3498","/zh/reference/documents/exclusive_features.html",{y:"a",t:"ZLMediakit独家特性介绍"},[":md"]],["v-09d870a4","/zh/reference/documents/high_concurrency_implementation_principle.html",{y:"a",t:"ZLMediaKit高并发实现原理"},[":md"]],["v-175b5aa1","/zh/reference/documents/introduction_to_streaming_media_related_technologies.html",{y:"a",t:"流媒体相关技术介绍"},[":md"]],["v-79587752","/zh/reference/documents/rtsp_push_process.html",{y:"a",t:"RTSP推流流程"},[":md"]],["v-3e321006","/zh/reference/documents/the_nature_of_live_broadcast_delay.html",{y:"a",t:"直播延时的本质"},[":md"]],["v-2eff5d16","/zh/reference/resources/",{y:"a",t:"相关资源",i:"font-awesome"},["/zh/reference/resources/README.md"]],["v-4a544ed0","/zh/reference/resources/dependency.html",{y:"a",t:"代码依赖与版权声明",i:"code"},[":md"]],["v-2321e074","/zh/reference/resources/rtmp_support_for_h265_and_opus.html",{y:"a",t:"RTMP对H265和OPUS的支持"},[":md"]],["v-acba6b18","/zh/reference/resources/video_conferencing_related_resources.html",{y:"a",t:"视频会议相关资源"},[":md"]],["v-164eab05","/zh/reference/resources/zltoolkit_source_code_study_notes.html",{y:"a",t:"ZLToolKit源码学习笔记"},[":md"]],["v-7184a3f1","/zh/reference/test/",{y:"a",t:"测试",i:"vials"},["/zh/reference/test/README.md"]],["v-3d3ac02d","/zh/reference/test/benchmark.html",{y:"a",t:"Benchmark"},[":md"]],["v-e2ac608c","/zh/reference/test/delay_test.html",{y:"a",t:"延时测试"},[":md"]],["v-510ccabf","/zh/reference/test/how_to_test_delay.html",{y:"a",t:"怎么测试ZLMediaKit的延时?"},[":md"]],["v-174062e8","/zh/reference/test/online_test.html",{y:"a",t:"在线测试"},[":md"]],["v-e521bd2e","/zh/reference/test/performance_testing.html",{y:"a",t:"性能测试"},[":md"]],["v-1d29e16c","/zh/reference/test/rtmp_pull_stream_performance_test.html",{y:"a",t:"rtmp 拉流性能测试"},[":md"]],["v-fdd44ad6","/zh/reference/test/rtmp_push_stream_performance_test.html",{y:"a",t:"rtmp 推流性能测试"},[":md"]],["v-aa333cf8","/zh/reference/test/rtsp_pull_stream_performance_test.html",{y:"a",t:"rtsp拉流性能测试"},[":md"]],["v-3a912ccf","/zh/reference/test/rtsp_push_stream_performance_test.html",{y:"a",t:"rtsp推流性能测试"},[":md"]],["v-374e6730","/zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html",{y:"a",t:"GB28181 SIP信令抓包"},[":md"]],["v-6e3cc886","/zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html",{y:"a",t:"GB28181怎么用设备ID作为流ID"},[":md"]],["v-041958ba","/zh/guide/protocol/gb28181/push_streaming.html",{y:"a",t:"GB28181推流"},[":md"]],["v-71ddfc14","/zh/guide/protocol/srt/",{y:"a",t:"SRT"},["/zh/guide/protocol/srt/README.md"]],["v-5eb5ee22","/zh/guide/protocol/webrtc/webrtc_compilation_and_use.html",{y:"a",t:"webrtc 编译与使用"},[":md"]],["v-84db85f8","/zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html",{y:"a",t:"webrtc信令交互格式"},[":md"]],["v-3706649a","/404.html",{y:"p",t:""},[]],["v-14f73021","/more/",{y:"p",t:"More"},[]],["v-22a2f9fd","/reference/",{y:"p",t:"Reference"},[]],["v-2be85352","/zh/more/",{y:"p",t:"More"},[]],["v-0f8c4891","/guide/protocol/gb28181/",{y:"p",t:"Gb28181"},[]],["v-35ba27b7","/guide/protocol/webrtc/",{y:"p",t:"Webrtc"},[]],["v-70e5a528","/zh/reference/",{y:"p",t:"Reference"},[]],["v-55376182","/zh/guide/protocol/gb28181/",{y:"p",t:"Gb28181"},[]],["v-50bfaca6","/zh/guide/protocol/webrtc/",{y:"p",t:"Webrtc"},[]]];var vl=U({name:"Vuepress",setup(){const e=sp();return()=>f(e.value)}}),u_=()=>c_.reduce((e,[t,n,r,o])=>(e.push({name:t,path:n,component:vl,meta:r},{path:n.endsWith("/")?n+"index.html":n.substring(0,n.length-5),redirect:n},...o.map(i=>({path:i===":md"?n.substring(0,n.length-5)+".md":i,redirect:n}))),e),[{name:"404",path:"/:catchAll(.*)",component:vl}]),f_=kp,d_=()=>{const e=hh({history:f_(Ri("/")),routes:u_(),scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{var r;(t.path!==n.path||n===Lt)&&([t.meta._data]=await Promise.all([At.resolvePageData(t.name),(r=ys[t.name])==null?void 0:r.__asyncLoader()]))}),e},p_=e=>{e.component("ClientOnly",ro),e.component("Content",Is)},h_=(e,t,n)=>{const r=Za(()=>t.currentRoute.value.path),o=Za(()=>At.resolveRouteLocale(vn.value.locales,r.value)),i=lo(r,()=>t.currentRoute.value.meta._data),a=I(()=>At.resolveLayouts(n)),l=I(()=>At.resolveSiteLocaleData(vn.value,o.value)),s=I(()=>At.resolvePageFrontmatter(i.value)),c=I(()=>At.resolvePageHeadTitle(i.value,l.value)),u=I(()=>At.resolvePageHead(c.value,s.value,l.value)),d=I(()=>At.resolvePageLang(i.value,l.value)),p=I(()=>At.resolvePageLayout(i.value,a.value));return e.provide(op,a),e.provide(Es,i),e.provide(ws,s),e.provide(lp,c),e.provide(Ts,u),e.provide(As,d),e.provide(Ls,p),e.provide(Oi,o),e.provide(Rs,l),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>s.value},$head:{get:()=>u.value},$headTitle:{get:()=>c.value},$lang:{get:()=>d.value},$page:{get:()=>i.value},$routeLocale:{get:()=>o.value},$site:{get:()=>vn.value},$siteLocale:{get:()=>l.value},$withBase:{get:()=>Ve}}),{layouts:a,pageData:i,pageFrontmatter:s,pageHead:u,pageHeadTitle:c,pageLang:d,pageLayout:p,routeLocale:o,siteData:vn,siteLocaleData:l}},v_=()=>{const e=ap(),t=Ii(),n=ee([]),r=()=>{e.value.forEach(i=>{const a=m_(i);a&&n.value.push(a)})},o=()=>{document.documentElement.lang=t.value,n.value.forEach(i=>{i.parentNode===document.head&&document.head.removeChild(i)}),n.value.splice(0,n.value.length),e.value.forEach(i=>{const a=__(i);a!==null&&(document.head.appendChild(a),n.value.push(a))})};tn(up,o),ge(()=>{r(),o(),fe(()=>e.value,o)})},m_=([e,t,n=""])=>{const r=Object.entries(t).map(([l,s])=>ue(s)?`[${l}=${JSON.stringify(s)}]`:s===!0?`[${l}]`:"").join(""),o=`head > ${e}${r}`;return Array.from(document.querySelectorAll(o)).find(l=>l.innerText===n)||null},__=([e,t,n])=>{if(!ue(e))return null;const r=document.createElement(e);return Pi(t)&&Object.entries(t).forEach(([o,i])=>{ue(i)?r.setAttribute(o,i):i===!0&&r.setAttribute(o,"")}),ue(n)&&r.appendChild(document.createTextNode(n)),r},g_=Kd,b_=async()=>{var n;const e=g_({name:"VuepressApp",setup(){var r;v_();for(const o of Dr)(r=o.setup)==null||r.call(o);return()=>[f(zs),...Dr.flatMap(({rootComponents:o=[]})=>o.map(i=>f(i)))]}}),t=d_();p_(e),h_(e,t,Dr);for(const r of Dr)await((n=r.enhance)==null?void 0:n.call(r,{app:e,router:t,siteData:vn}));return e.use(t),{app:e,router:t}};b_().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{h as _,as as a,Le as b,y_ as c,b_ as createVueApp,ls as d,E_ as e,w_ as f,ed as o,nt as r,mf as w}; -function __vite__mapDeps(indexes) { - if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ["assets/index.html-qlpSloZ0.js","assets/plugin-vue_export-helper-x3n3nnut.js","assets/index.html-QWUIdSew.js","assets/collaborative_projects.html-zAkyRydI.js","assets/contact.html-JZn2Qe3S.js","assets/license.html-KA2I3C1f.js","assets/thanks.html-9FVCd-fN.js","assets/use_cases.html-X6CGr-4A.js","assets/index.html-4AQHrSUy.js","assets/vs_code_zh-ltEPcFYF.js","assets/index.html-PSYc6CNH.js","assets/index.html-2eHJyvoI.js","assets/oncetoken.html-O4EgeeD_.js","assets/index.html-Eqzq89B-.js","assets/not_recommended_qq.html-D1NyvBof.js","assets/rtmp_playback_compatibility_issues.html-Q-7KXOkl.js","assets/index.html-kykmfUZZ.js","assets/compilation_instructions_for_windows_version.html-xnA-vKUQ.js","assets/install_zlmediakit_using_vcpkg.html-UmyH2ZVo.js","assets/install_zlmediakit_using_vcpkg_2-1HFW-yNt.js","assets/start.html-VhG07QWF.js","assets/index.html-ZUO1t91g.js","assets/config_file.html-e7VlJmFs.js","assets/generate_ssl_self-signed_certificate_and_test.html-kbzAeWE6.js","assets/generate_ssl_self-signed_certificate_and_test-D4Sbj3Ls.js","assets/how_to_enable_https_related_functions.html-O1NMddvq.js","assets/how_to_enable_https_related_functions_zh_10-dp8gREln.js","assets/on-demand_push_streaming.html-U3DF-hcL.js","assets/on-demand_push_streaming_zh-CK4xj1dh.js","assets/on-demand_streaming.html-JbtempAZ.js","assets/on-demand_streaming_zh-h19pTlmd.js","assets/play_url_rules.html-jL-erR3n.js","assets/playback_authentication.html-SRognS60.js","assets/playback_authentication_zh-gjAAn9Yd.js","assets/push_authentication.html-buPamLTW.js","assets/push_authentication_zh-OS4qAsfx.js","assets/push_test.html-fOBpg7dv.js","assets/push_test-WgKOKRFc.js","assets/restful_api.html-EFSP9jqZ.js","assets/sequence_diagram.html-pYWqjJ8u.js","assets/start_server.html-z23wbtOj.js","assets/start_server_3-RVnx99XR.js","assets/web_hook_api.html-zeVeDSz2.js","assets/index.html-e77v6tHA.js","assets/index.html-ENKK1Hev.js","assets/how_to_create_a_live_steam.html-6xjNfV8d.js","assets/how_to_create_a_live_stream-3lt6j2fI.js","assets/index.html-yPXvy2ZK.js","assets/hls_high_performance_journey.html-KWt_INAr.js","assets/rtsp_performance_optimization.html-KRKhmZXI.js","assets/index.html-crm4JFod.js","assets/exclusive_features.html-PNsKskwv.js","assets/high_concurrency_implementation_principle.html-6GveguVT.js","assets/introduction_to_streaming_media_related_technologies.html-tum5EDuc.js","assets/rtsp_push_process.html-W2QVXDCD.js","assets/the_nature_of_live_broadcast_delay.html-SrNo_kM-.js","assets/index.html-TjtRd5xp.js","assets/dependency.html-kZHrVdhi.js","assets/rtmp_support_for_h265_and_opus.html-Pv_q6lJG.js","assets/video_conferencing_related_resources.html-OEgzQpTs.js","assets/zltoolkit_source_code_study_notes.html-PfuwMzDt.js","assets/index.html-lxIvJFMs.js","assets/benchmark.html-gZd5EMM7.js","assets/delay_test.html-wn_gavSy.js","assets/how_to_test_delay.html-fyFCkcjI.js","assets/online_test.html-nhAROswz.js","assets/performance_testing.html-KTW2LASt.js","assets/rtmp_pull_stream_performance_test.html--cK45yxC.js","assets/rtmp_push_stream_performance_test.html-4Td-mBqD.js","assets/rtsp_pull_stream_performance_test.html-sTQrF5Xo.js","assets/rtsp_push_stream_performance_test.html-mR4FJY9Z.js","assets/index.html-bHaf1eq-.js","assets/collaborative_projects.html-jP_gBiJf.js","assets/contact.html-_Z6vlVkO.js","assets/license.html-eI8DpHPZ.js","assets/thanks.html-EDBrN2Yb.js","assets/use_cases.html-QYVpPIZi.js","assets/index.html-H30PqyAG.js","assets/gb28181_sip_signaling_packet_capture.html-9YuNK2eX.js","assets/how_to_use_device_id_as_stream_id.html-r4xrBF9F.js","assets/how_to_use_device_id_as_stream_id_6-sfQ1h9Fe.js","assets/push_streaming.html-rR7nCAyc.js","assets/gb28181_push_streaming_4-qWTnfswt.js","assets/index.html-1HU8uRzY.js","assets/webrtc_compilation_and_use.html-lpFe_5AD.js","assets/webrtc_signaling_interaction_format.html-wdNPDtQj.js","assets/index.html-dNFi-MK4.js","assets/oncetoken.html-78LEt8yV.js","assets/index.html-_GTitl4a.js","assets/not_recommended_qq.html-xL5JJUt8.js","assets/rtmp_playback_compatibility_issues.html-k6HlsNbH.js","assets/index.html-pO6EQ89h.js","assets/compilation_instructions_for_windows_version.html-3EBfQXLm.js","assets/install_zlmediakit_using_vcpkg.html-uKojkOzg.js","assets/start.html-fkf1t7c5.js","assets/index.html-eQpT8dLR.js","assets/config_file.html-NeQ-HnE0.js","assets/generate_ssl_self-signed_certificate_and_test.html-oJ11zSxb.js","assets/how_to_enable_https_related_functions.html-bzN01TdE.js","assets/on-demand_push_streaming.html-CeB1-Ozz.js","assets/on-demand_streaming.html-rK6BuTeq.js","assets/play_url_rules.html-Nq1zV90a.js","assets/playback_authentication.html--oFuX02K.js","assets/push_authentication.html-RYBrWv6d.js","assets/push_test.html-78JMVV7F.js","assets/restful_api.html-ooPhYVAr.js","assets/sequence_diagram.html-vJK6hfro.js","assets/start_server.html-I5K79p0Y.js","assets/web_hook_api.html-Ur1FSiPS.js","assets/index.html-kIe4zMW_.js","assets/index.html-HA6yUssK.js","assets/how_to_create_a_live_steam.html-ewhkqgEI.js","assets/index.html-6BkT17JO.js","assets/hls_high_performance_journey.html-LbBMnisY.js","assets/rtsp_performance_optimization.html-INqzsvFD.js","assets/index.html-tETo8Lu8.js","assets/exclusive_features.html-Qj0lJyo5.js","assets/high_concurrency_implementation_principle.html-YdXhhjaV.js","assets/introduction_to_streaming_media_related_technologies.html-JdpuYj-J.js","assets/rtsp_push_process.html-PFNRXi6Z.js","assets/the_nature_of_live_broadcast_delay.html-PF-gA_DU.js","assets/index.html-xQisrcfM.js","assets/dependency.html-WFMeX_wi.js","assets/rtmp_support_for_h265_and_opus.html-4jQr5c69.js","assets/video_conferencing_related_resources.html-n9vvOPci.js","assets/zltoolkit_source_code_study_notes.html-JZCYuLhh.js","assets/index.html-LT2IW6gc.js","assets/benchmark.html-Xmdk2BGM.js","assets/delay_test.html-nuUiWXnv.js","assets/how_to_test_delay.html-6Q65UhHU.js","assets/online_test.html-_btmASEE.js","assets/performance_testing.html-_cSl4nbI.js","assets/rtmp_pull_stream_performance_test.html-to7s8Gb2.js","assets/rtmp_push_stream_performance_test.html-xYGtJwVp.js","assets/rtsp_pull_stream_performance_test.html-3HmmZM3c.js","assets/rtsp_push_stream_performance_test.html-8OJV-kxN.js","assets/gb28181_sip_signaling_packet_capture.html-5xl0QuEj.js","assets/how_to_use_device_id_as_stream_id.html-HCE1vKo7.js","assets/push_streaming.html-ieJcZ8zc.js","assets/index.html--S0MBGJo.js","assets/webrtc_compilation_and_use.html-WDwwQCrP.js","assets/webrtc_signaling_interaction_format.html-Vcq-5dzR.js","assets/404.html-rHboC4Yl.js","assets/index.html-Me4eXu-C.js","assets/index.html-n77SzoQa.js","assets/index.html-frsd07BJ.js","assets/index.html-0naiiwgW.js","assets/index.html-4Ee7DNZI.js","assets/index.html-V4YkyuJV.js","assets/index.html-7ixsX_gh.js","assets/index.html-NSMe4qAg.js"] - } - return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) -} \ No newline at end of file diff --git a/assets/arc-IaSnKFUc.js b/assets/arc-zVzTa0l4.js similarity index 96% rename from assets/arc-IaSnKFUc.js rename to assets/arc-zVzTa0l4.js index 35feae3..c56b7bb 100644 --- a/assets/arc-IaSnKFUc.js +++ b/assets/arc-zVzTa0l4.js @@ -1 +1 @@ -import{w as ln,c as U}from"./path-aUcfwwLI.js";import{aO as an,aP as Y,aQ as O,aR as rn,aS as y,aK as on,aT as z,aU as _,aV as un,aW as t,aX as sn,aY as tn,aZ as fn}from"./mermaid.core-ygY5oRaR.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function mn(l){return l.endAngle}function pn(l){return l&&l.padAngle}function dn(l,h,D,S,v,R,V,a){var E=D-l,i=S-h,n=V-v,m=a-R,r=m*E-n*i;if(!(r*ru*u+X*X&&(K=w,Q=d),{cx:K,cy:Q,x01:-n,y01:-m,x11:K*(v/T-1),y11:Q*(v/T-1)}}function vn(){var l=cn,h=yn,D=U(0),S=null,v=gn,R=mn,V=pn,a=null,E=ln(i);function i(){var n,m,r=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-rn,c=R.apply(this,arguments)-rn,W=un(c-f),o=c>f;if(a||(a=n=E()),sy))a.moveTo(0,0);else if(W>on-y)a.moveTo(s*Y(f),s*O(f)),a.arc(0,0,s,f,c,!o),r>y&&(a.moveTo(r*Y(c),r*O(c)),a.arc(0,0,r,c,f,o));else{var p=f,g=c,A=f,T=c,P=W,I=W,K=V.apply(this,arguments)/2,Q=K>y&&(S?+S.apply(this,arguments):z(r*r+s*s)),w=_(un(s-r)/2,+D.apply(this,arguments)),d=w,x=w,e,u;if(Q>y){var X=sn(Q/r*O(K)),B=sn(Q/s*O(K));(P-=X*2)>y?(X*=o?1:-1,A+=X,T-=X):(P=0,A=T=(f+c)/2),(I-=B*2)>y?(B*=o?1:-1,p+=B,g-=B):(I=0,p=g=(f+c)/2)}var Z=s*Y(p),j=s*O(p),C=r*Y(T),F=r*O(T);if(w>y){var G=s*Y(g),H=s*O(g),L=r*Y(A),M=r*O(A),q;if(Wy?x>y?(e=J(L,M,Z,j,s,x,o),u=J(G,H,C,F,s,x,o),a.moveTo(e.cx+e.x01,e.cy+e.y01),xy)||!(P>y)?a.lineTo(C,F):d>y?(e=J(C,F,G,H,r,-d,o),u=J(Z,j,L,M,r,-d,o),a.lineTo(e.cx+e.x01,e.cy+e.y01),du*u+X*X&&(K=w,Q=d),{cx:K,cy:Q,x01:-n,y01:-m,x11:K*(v/T-1),y11:Q*(v/T-1)}}function vn(){var l=cn,h=yn,D=U(0),S=null,v=gn,R=mn,V=pn,a=null,E=ln(i);function i(){var n,m,r=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-rn,c=R.apply(this,arguments)-rn,W=un(c-f),o=c>f;if(a||(a=n=E()),sy))a.moveTo(0,0);else if(W>on-y)a.moveTo(s*Y(f),s*O(f)),a.arc(0,0,s,f,c,!o),r>y&&(a.moveTo(r*Y(c),r*O(c)),a.arc(0,0,r,c,f,o));else{var p=f,g=c,A=f,T=c,P=W,I=W,K=V.apply(this,arguments)/2,Q=K>y&&(S?+S.apply(this,arguments):z(r*r+s*s)),w=_(un(s-r)/2,+D.apply(this,arguments)),d=w,x=w,e,u;if(Q>y){var X=sn(Q/r*O(K)),B=sn(Q/s*O(K));(P-=X*2)>y?(X*=o?1:-1,A+=X,T-=X):(P=0,A=T=(f+c)/2),(I-=B*2)>y?(B*=o?1:-1,p+=B,g-=B):(I=0,p=g=(f+c)/2)}var Z=s*Y(p),j=s*O(p),C=r*Y(T),F=r*O(T);if(w>y){var G=s*Y(g),H=s*O(g),L=r*Y(A),M=r*O(A),q;if(Wy?x>y?(e=J(L,M,Z,j,s,x,o),u=J(G,H,C,F,s,x,o),a.moveTo(e.cx+e.x01,e.cy+e.y01),xy)||!(P>y)?a.lineTo(C,F):d>y?(e=J(C,F,G,H,r,-d,o),u=J(Z,j,L,M,r,-d,o),a.lineTo(e.cx+e.x01,e.cy+e.y01),d 注意

此测试已经严重过时,不具备参考性。

测试环境

  • 系统:Linux core 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux
  • 内存:15G
  • CPU:Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz;4 核
  • 网络:千兆网卡
  • 测试端采用回环网络方式访问服务器

测试工具

ZLMeidaKit 自带测试程序 test_benchmark,其为单进程多线程模型

测试服务器

ZLMeidaKit 自带测试服务器 test_server,支持 RTSP/RTMP/HLS 服务器;多线程模型。

测试媒体流

使用 test_server 拉取的 rtmp 流rtmp://live.hkstv.hk.lxdns.com/live/hks1;然后通过 test_server 转发代理。 该码流大概 300~400Kbit/s 左右。

测试结果

说明:在 cmake 构建时,输入cmake .. -DCMAKE_BUILD_TYPE=Release以编译优化版本。

播放器个数(rtmp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
100020%702M/13M40 MByte/s
200039%702M/18M80 MByte/s
500092%702M/32M200 MByte/s
10000170%702M/59M400 MByte/s
播放器个数(rtsp/tcp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
100018%702M/13M42 MByte/s
200035%702M/19M82 MByte/s
500080%702M/35M198 MByte/s
10000130%702M/62M405 MByte/s

srs 性能对比

播放器个数(rtmp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
100010%310M/53M41.17 MByte/s
200018%604M/117M83.86 MByte/s
',16),i=[h];function s(c,n){return d(),e("div",null,i)}const M=t(a,[["render",s],["__file","benchmark.html.vue"]]);export{M as default}; +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as d,c as e,e as r}from"./app-0NopiYEV.js";const a={},h=r('

注意

此测试已经严重过时,不具备参考性。

测试环境

  • 系统:Linux core 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux
  • 内存:15G
  • CPU:Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz;4 核
  • 网络:千兆网卡
  • 测试端采用回环网络方式访问服务器

测试工具

ZLMeidaKit 自带测试程序 test_benchmark,其为单进程多线程模型

测试服务器

ZLMeidaKit 自带测试服务器 test_server,支持 RTSP/RTMP/HLS 服务器;多线程模型。

测试媒体流

使用 test_server 拉取的 rtmp 流rtmp://live.hkstv.hk.lxdns.com/live/hks1;然后通过 test_server 转发代理。 该码流大概 300~400Kbit/s 左右。

测试结果

说明:在 cmake 构建时,输入cmake .. -DCMAKE_BUILD_TYPE=Release以编译优化版本。

播放器个数(rtmp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
100020%702M/13M40 MByte/s
200039%702M/18M80 MByte/s
500092%702M/32M200 MByte/s
10000170%702M/59M400 MByte/s
播放器个数(rtsp/tcp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
100018%702M/13M42 MByte/s
200035%702M/19M82 MByte/s
500080%702M/35M198 MByte/s
10000130%702M/62M405 MByte/s

srs 性能对比

播放器个数(rtmp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
100010%310M/53M41.17 MByte/s
200018%604M/117M83.86 MByte/s
',16),i=[h];function s(c,n){return d(),e("div",null,i)}const M=t(a,[["render",s],["__file","benchmark.html.vue"]]);export{M as default}; diff --git a/assets/benchmark.html-gZd5EMM7.js b/assets/benchmark.html-uo75e0CN.js similarity index 98% rename from assets/benchmark.html-gZd5EMM7.js rename to assets/benchmark.html-uo75e0CN.js index 9ec9d5b..dc5a163 100644 --- a/assets/benchmark.html-gZd5EMM7.js +++ b/assets/benchmark.html-uo75e0CN.js @@ -1 +1 @@ -import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as e,c as d,e as r}from"./app-RP31lnfq.js";const a={},s=r('

This test is severely outdated and is not indicative.

Test Environment

  • System: Linux core 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux
  • Memory: 15GB
  • CPU: Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz; 4 cores
  • Network: Gigabit Ethernet
  • The test is conducted by accessing the server through a loopback network on the test client.

Test Tools

ZLMeidaKit comes with a test benchmark program called test_benchmark, which uses a single-process multi-threaded model.

Test Server

ZLMeidaKit includes a test server called test_server, which supports RTSP/RTMP/HLS protocols and uses a multi-threaded model.

Test Media Stream

The test_server pulls an RTMP stream rtmp://live.hkstv.hk.lxdns.com/live/hks1 and then forwards it using the test_server. The approximate bitrate of the stream is around 300-400 Kbit/s.

Test Results

Note

When building with CMake, use the command cmake .. -DCMAKE_BUILD_TYPE=Release to compile the optimized version.

Number of Players (RTMP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
100020%702M/13M40 MByte/sNone
200039%702M/18M80 MByte/sNone
500092%702M/32M200 MByte/sNone
10000170%702M/59M400 MByte/sNone
Number of Players (RTSP/TCP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
100018%702M/13M42 MByte/sNone
200035%702M/19M82 MByte/sNone
500080%702M/35M198 MByte/sNone
10000130%702M/62M405 MByte/sNone

Comparison with SRS Performance

Number of Players (RTMP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
100010%310M/53M41.17 MByte/sNone
200018%604M/117M83.86 MByte/sNone
',15),h=[s];function i(o,n){return e(),d("div",null,h)}const m=t(a,[["render",i],["__file","benchmark.html.vue"]]);export{m as default}; +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as e,c as d,e as r}from"./app-0NopiYEV.js";const a={},s=r('

This test is severely outdated and is not indicative.

Test Environment

  • System: Linux core 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux
  • Memory: 15GB
  • CPU: Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz; 4 cores
  • Network: Gigabit Ethernet
  • The test is conducted by accessing the server through a loopback network on the test client.

Test Tools

ZLMeidaKit comes with a test benchmark program called test_benchmark, which uses a single-process multi-threaded model.

Test Server

ZLMeidaKit includes a test server called test_server, which supports RTSP/RTMP/HLS protocols and uses a multi-threaded model.

Test Media Stream

The test_server pulls an RTMP stream rtmp://live.hkstv.hk.lxdns.com/live/hks1 and then forwards it using the test_server. The approximate bitrate of the stream is around 300-400 Kbit/s.

Test Results

Note

When building with CMake, use the command cmake .. -DCMAKE_BUILD_TYPE=Release to compile the optimized version.

Number of Players (RTMP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
100020%702M/13M40 MByte/sNone
200039%702M/18M80 MByte/sNone
500092%702M/32M200 MByte/sNone
10000170%702M/59M400 MByte/sNone
Number of Players (RTSP/TCP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
100018%702M/13M42 MByte/sNone
200035%702M/19M82 MByte/sNone
500080%702M/35M198 MByte/sNone
10000130%702M/62M405 MByte/sNone

Comparison with SRS Performance

Number of Players (RTMP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
100010%310M/53M41.17 MByte/sNone
200018%604M/117M83.86 MByte/sNone
',15),h=[s];function i(o,n){return e(),d("div",null,h)}const m=t(a,[["render",i],["__file","benchmark.html.vue"]]);export{m as default}; diff --git a/assets/c4Diagram-817c8e44-ubRVp6pW.js b/assets/c4Diagram-817c8e44-fGBWpqJm.js similarity index 99% rename from assets/c4Diagram-817c8e44-ubRVp6pW.js rename to assets/c4Diagram-817c8e44-fGBWpqJm.js index 389f1c8..49039b3 100644 --- a/assets/c4Diagram-817c8e44-ubRVp6pW.js +++ b/assets/c4Diagram-817c8e44-fGBWpqJm.js @@ -1,4 +1,4 @@ -import{s as Ce,g as we,a as Oe,b as Te,c as Dt,d as ue,e as Re,f as wt,h as Nt,l as le,i as De,w as Se,j as Kt,k as oe,m as Pe}from"./mermaid.core-ygY5oRaR.js";import{d as Me,g as Le}from"./svgDrawCommon-ad5ef572-nvro2Kxm.js";import"./app-RP31lnfq.js";var Yt=function(){var e=function(bt,_,x,m){for(x=x||{},m=bt.length;m--;x[bt[m]]=_);return x},t=[1,24],a=[1,25],o=[1,26],l=[1,27],i=[1,28],s=[1,63],r=[1,64],n=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],E=[1,29],O=[1,30],R=[1,31],S=[1,32],L=[1,33],Y=[1,34],Q=[1,35],H=[1,36],q=[1,37],G=[1,38],K=[1,39],J=[1,40],Z=[1,41],$=[1,42],tt=[1,43],et=[1,44],it=[1,45],nt=[1,46],st=[1,47],at=[1,48],rt=[1,50],lt=[1,51],ot=[1,52],ct=[1,53],ht=[1,54],ut=[1,55],dt=[1,56],ft=[1,57],pt=[1,58],yt=[1,59],gt=[1,60],At=[14,42],Vt=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Ot=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],v=[1,82],k=[1,83],A=[1,84],C=[1,85],w=[12,14,42],ne=[12,14,33,42],Pt=[12,14,33,42,76,77,79,80],mt=[12,33],zt=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Xt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:function(_,x,m,g,T,u,Tt){var y=u.length-1;switch(T){case 3:g.setDirection("TB");break;case 4:g.setDirection("BT");break;case 5:g.setDirection("RL");break;case 6:g.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:g.setC4Type(u[y-3]);break;case 19:g.setTitle(u[y].substring(6)),this.$=u[y].substring(6);break;case 20:g.setAccDescription(u[y].substring(15)),this.$=u[y].substring(15);break;case 21:this.$=u[y].trim(),g.setTitle(this.$);break;case 22:case 23:this.$=u[y].trim(),g.setAccDescription(this.$);break;case 28:case 29:u[y].splice(2,0,"ENTERPRISE"),g.addPersonOrSystemBoundary(...u[y]),this.$=u[y];break;case 30:g.addPersonOrSystemBoundary(...u[y]),this.$=u[y];break;case 31:u[y].splice(2,0,"CONTAINER"),g.addContainerBoundary(...u[y]),this.$=u[y];break;case 32:g.addDeploymentNode("node",...u[y]),this.$=u[y];break;case 33:g.addDeploymentNode("nodeL",...u[y]),this.$=u[y];break;case 34:g.addDeploymentNode("nodeR",...u[y]),this.$=u[y];break;case 35:g.popBoundaryParseStack();break;case 39:g.addPersonOrSystem("person",...u[y]),this.$=u[y];break;case 40:g.addPersonOrSystem("external_person",...u[y]),this.$=u[y];break;case 41:g.addPersonOrSystem("system",...u[y]),this.$=u[y];break;case 42:g.addPersonOrSystem("system_db",...u[y]),this.$=u[y];break;case 43:g.addPersonOrSystem("system_queue",...u[y]),this.$=u[y];break;case 44:g.addPersonOrSystem("external_system",...u[y]),this.$=u[y];break;case 45:g.addPersonOrSystem("external_system_db",...u[y]),this.$=u[y];break;case 46:g.addPersonOrSystem("external_system_queue",...u[y]),this.$=u[y];break;case 47:g.addContainer("container",...u[y]),this.$=u[y];break;case 48:g.addContainer("container_db",...u[y]),this.$=u[y];break;case 49:g.addContainer("container_queue",...u[y]),this.$=u[y];break;case 50:g.addContainer("external_container",...u[y]),this.$=u[y];break;case 51:g.addContainer("external_container_db",...u[y]),this.$=u[y];break;case 52:g.addContainer("external_container_queue",...u[y]),this.$=u[y];break;case 53:g.addComponent("component",...u[y]),this.$=u[y];break;case 54:g.addComponent("component_db",...u[y]),this.$=u[y];break;case 55:g.addComponent("component_queue",...u[y]),this.$=u[y];break;case 56:g.addComponent("external_component",...u[y]),this.$=u[y];break;case 57:g.addComponent("external_component_db",...u[y]),this.$=u[y];break;case 58:g.addComponent("external_component_queue",...u[y]),this.$=u[y];break;case 60:g.addRel("rel",...u[y]),this.$=u[y];break;case 61:g.addRel("birel",...u[y]),this.$=u[y];break;case 62:g.addRel("rel_u",...u[y]),this.$=u[y];break;case 63:g.addRel("rel_d",...u[y]),this.$=u[y];break;case 64:g.addRel("rel_l",...u[y]),this.$=u[y];break;case 65:g.addRel("rel_r",...u[y]),this.$=u[y];break;case 66:g.addRel("rel_b",...u[y]),this.$=u[y];break;case 67:u[y].splice(0,1),g.addRel("rel",...u[y]),this.$=u[y];break;case 68:g.updateElStyle("update_el_style",...u[y]),this.$=u[y];break;case 69:g.updateRelStyle("update_rel_style",...u[y]),this.$=u[y];break;case 70:g.updateLayoutConfig("update_layout_config",...u[y]),this.$=u[y];break;case 71:this.$=[u[y]];break;case 72:u[y].unshift(u[y-1]),this.$=u[y];break;case 73:case 75:this.$=u[y].trim();break;case 74:let Et={};Et[u[y-1].trim()]=u[y].trim(),this.$=Et;break;case 76:this.$="";break}},table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:70,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:71,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:72,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:73,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{14:[1,74]},e(At,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:r,37:n,38:h,39:f,40:d,41:p,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt}),e(At,[2,14]),e(Vt,[2,16],{12:[1,76]}),e(At,[2,36],{12:[1,77]}),e(Ot,[2,19]),e(Ot,[2,20]),{25:[1,78]},{27:[1,79]},e(Ot,[2,23]),{35:80,75:81,76:v,77:k,79:A,80:C},{35:86,75:81,76:v,77:k,79:A,80:C},{35:87,75:81,76:v,77:k,79:A,80:C},{35:88,75:81,76:v,77:k,79:A,80:C},{35:89,75:81,76:v,77:k,79:A,80:C},{35:90,75:81,76:v,77:k,79:A,80:C},{35:91,75:81,76:v,77:k,79:A,80:C},{35:92,75:81,76:v,77:k,79:A,80:C},{35:93,75:81,76:v,77:k,79:A,80:C},{35:94,75:81,76:v,77:k,79:A,80:C},{35:95,75:81,76:v,77:k,79:A,80:C},{35:96,75:81,76:v,77:k,79:A,80:C},{35:97,75:81,76:v,77:k,79:A,80:C},{35:98,75:81,76:v,77:k,79:A,80:C},{35:99,75:81,76:v,77:k,79:A,80:C},{35:100,75:81,76:v,77:k,79:A,80:C},{35:101,75:81,76:v,77:k,79:A,80:C},{35:102,75:81,76:v,77:k,79:A,80:C},{35:103,75:81,76:v,77:k,79:A,80:C},{35:104,75:81,76:v,77:k,79:A,80:C},e(w,[2,59]),{35:105,75:81,76:v,77:k,79:A,80:C},{35:106,75:81,76:v,77:k,79:A,80:C},{35:107,75:81,76:v,77:k,79:A,80:C},{35:108,75:81,76:v,77:k,79:A,80:C},{35:109,75:81,76:v,77:k,79:A,80:C},{35:110,75:81,76:v,77:k,79:A,80:C},{35:111,75:81,76:v,77:k,79:A,80:C},{35:112,75:81,76:v,77:k,79:A,80:C},{35:113,75:81,76:v,77:k,79:A,80:C},{35:114,75:81,76:v,77:k,79:A,80:C},{35:115,75:81,76:v,77:k,79:A,80:C},{20:116,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{12:[1,118],33:[1,117]},{35:119,75:81,76:v,77:k,79:A,80:C},{35:120,75:81,76:v,77:k,79:A,80:C},{35:121,75:81,76:v,77:k,79:A,80:C},{35:122,75:81,76:v,77:k,79:A,80:C},{35:123,75:81,76:v,77:k,79:A,80:C},{35:124,75:81,76:v,77:k,79:A,80:C},{35:125,75:81,76:v,77:k,79:A,80:C},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(At,[2,15]),e(Vt,[2,17],{21:22,19:130,22:t,23:a,24:o,26:l,28:i}),e(At,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:a,24:o,26:l,28:i,34:s,36:r,37:n,38:h,39:f,40:d,41:p,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt}),e(Ot,[2,21]),e(Ot,[2,22]),e(w,[2,39]),e(ne,[2,71],{75:81,35:132,76:v,77:k,79:A,80:C}),e(Pt,[2,73]),{78:[1,133]},e(Pt,[2,75]),e(Pt,[2,76]),e(w,[2,40]),e(w,[2,41]),e(w,[2,42]),e(w,[2,43]),e(w,[2,44]),e(w,[2,45]),e(w,[2,46]),e(w,[2,47]),e(w,[2,48]),e(w,[2,49]),e(w,[2,50]),e(w,[2,51]),e(w,[2,52]),e(w,[2,53]),e(w,[2,54]),e(w,[2,55]),e(w,[2,56]),e(w,[2,57]),e(w,[2,58]),e(w,[2,60]),e(w,[2,61]),e(w,[2,62]),e(w,[2,63]),e(w,[2,64]),e(w,[2,65]),e(w,[2,66]),e(w,[2,67]),e(w,[2,68]),e(w,[2,69]),e(w,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(mt,[2,28]),e(mt,[2,29]),e(mt,[2,30]),e(mt,[2,31]),e(mt,[2,32]),e(mt,[2,33]),e(mt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(Vt,[2,18]),e(At,[2,38]),e(ne,[2,72]),e(Pt,[2,74]),e(w,[2,24]),e(w,[2,35]),e(zt,[2,25]),e(zt,[2,26],{12:[1,138]}),e(zt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:function(_,x){if(x.recoverable)this.trace(_);else{var m=new Error(_);throw m.hash=x,m}},parse:function(_){var x=this,m=[0],g=[],T=[null],u=[],Tt=this.table,y="",Et=0,se=0,Ee=2,ae=1,ve=u.slice.call(arguments,1),D=Object.create(this.lexer),vt={yy:{}};for(var Qt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Qt)&&(vt.yy[Qt]=this.yy[Qt]);D.setInput(_,vt.yy),vt.yy.lexer=D,vt.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var Ht=D.yylloc;u.push(Ht);var ke=D.options&&D.options.ranges;typeof vt.yy.parseError=="function"?this.parseError=vt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ae(){var X;return X=g.pop()||D.lex()||ae,typeof X!="number"&&(X instanceof Array&&(g=X,X=g.pop()),X=x.symbols_[X]||X),X}for(var M,kt,N,qt,Ct={},Mt,z,re,Lt;;){if(kt=m[m.length-1],this.defaultActions[kt]?N=this.defaultActions[kt]:((M===null||typeof M>"u")&&(M=Ae()),N=Tt[kt]&&Tt[kt][M]),typeof N>"u"||!N.length||!N[0]){var Gt="";Lt=[];for(Mt in Tt[kt])this.terminals_[Mt]&&Mt>Ee&&Lt.push("'"+this.terminals_[Mt]+"'");D.showPosition?Gt="Parse error on line "+(Et+1)+`: +import{s as Ce,g as we,a as Oe,b as Te,c as Dt,d as ue,e as Re,f as wt,h as Nt,l as le,i as De,w as Se,j as Kt,k as oe,m as Pe}from"./mermaid.core-YBgJFCkH.js";import{d as Me,g as Le}from"./svgDrawCommon-ad5ef572-Rj64dPCl.js";import"./app-0NopiYEV.js";var Yt=function(){var e=function(bt,_,x,m){for(x=x||{},m=bt.length;m--;x[bt[m]]=_);return x},t=[1,24],a=[1,25],o=[1,26],l=[1,27],i=[1,28],s=[1,63],r=[1,64],n=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],E=[1,29],O=[1,30],R=[1,31],S=[1,32],L=[1,33],Y=[1,34],Q=[1,35],H=[1,36],q=[1,37],G=[1,38],K=[1,39],J=[1,40],Z=[1,41],$=[1,42],tt=[1,43],et=[1,44],it=[1,45],nt=[1,46],st=[1,47],at=[1,48],rt=[1,50],lt=[1,51],ot=[1,52],ct=[1,53],ht=[1,54],ut=[1,55],dt=[1,56],ft=[1,57],pt=[1,58],yt=[1,59],gt=[1,60],At=[14,42],Vt=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Ot=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],v=[1,82],k=[1,83],A=[1,84],C=[1,85],w=[12,14,42],ne=[12,14,33,42],Pt=[12,14,33,42,76,77,79,80],mt=[12,33],zt=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Xt={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:function(_,x,m,g,T,u,Tt){var y=u.length-1;switch(T){case 3:g.setDirection("TB");break;case 4:g.setDirection("BT");break;case 5:g.setDirection("RL");break;case 6:g.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:g.setC4Type(u[y-3]);break;case 19:g.setTitle(u[y].substring(6)),this.$=u[y].substring(6);break;case 20:g.setAccDescription(u[y].substring(15)),this.$=u[y].substring(15);break;case 21:this.$=u[y].trim(),g.setTitle(this.$);break;case 22:case 23:this.$=u[y].trim(),g.setAccDescription(this.$);break;case 28:case 29:u[y].splice(2,0,"ENTERPRISE"),g.addPersonOrSystemBoundary(...u[y]),this.$=u[y];break;case 30:g.addPersonOrSystemBoundary(...u[y]),this.$=u[y];break;case 31:u[y].splice(2,0,"CONTAINER"),g.addContainerBoundary(...u[y]),this.$=u[y];break;case 32:g.addDeploymentNode("node",...u[y]),this.$=u[y];break;case 33:g.addDeploymentNode("nodeL",...u[y]),this.$=u[y];break;case 34:g.addDeploymentNode("nodeR",...u[y]),this.$=u[y];break;case 35:g.popBoundaryParseStack();break;case 39:g.addPersonOrSystem("person",...u[y]),this.$=u[y];break;case 40:g.addPersonOrSystem("external_person",...u[y]),this.$=u[y];break;case 41:g.addPersonOrSystem("system",...u[y]),this.$=u[y];break;case 42:g.addPersonOrSystem("system_db",...u[y]),this.$=u[y];break;case 43:g.addPersonOrSystem("system_queue",...u[y]),this.$=u[y];break;case 44:g.addPersonOrSystem("external_system",...u[y]),this.$=u[y];break;case 45:g.addPersonOrSystem("external_system_db",...u[y]),this.$=u[y];break;case 46:g.addPersonOrSystem("external_system_queue",...u[y]),this.$=u[y];break;case 47:g.addContainer("container",...u[y]),this.$=u[y];break;case 48:g.addContainer("container_db",...u[y]),this.$=u[y];break;case 49:g.addContainer("container_queue",...u[y]),this.$=u[y];break;case 50:g.addContainer("external_container",...u[y]),this.$=u[y];break;case 51:g.addContainer("external_container_db",...u[y]),this.$=u[y];break;case 52:g.addContainer("external_container_queue",...u[y]),this.$=u[y];break;case 53:g.addComponent("component",...u[y]),this.$=u[y];break;case 54:g.addComponent("component_db",...u[y]),this.$=u[y];break;case 55:g.addComponent("component_queue",...u[y]),this.$=u[y];break;case 56:g.addComponent("external_component",...u[y]),this.$=u[y];break;case 57:g.addComponent("external_component_db",...u[y]),this.$=u[y];break;case 58:g.addComponent("external_component_queue",...u[y]),this.$=u[y];break;case 60:g.addRel("rel",...u[y]),this.$=u[y];break;case 61:g.addRel("birel",...u[y]),this.$=u[y];break;case 62:g.addRel("rel_u",...u[y]),this.$=u[y];break;case 63:g.addRel("rel_d",...u[y]),this.$=u[y];break;case 64:g.addRel("rel_l",...u[y]),this.$=u[y];break;case 65:g.addRel("rel_r",...u[y]),this.$=u[y];break;case 66:g.addRel("rel_b",...u[y]),this.$=u[y];break;case 67:u[y].splice(0,1),g.addRel("rel",...u[y]),this.$=u[y];break;case 68:g.updateElStyle("update_el_style",...u[y]),this.$=u[y];break;case 69:g.updateRelStyle("update_rel_style",...u[y]),this.$=u[y];break;case 70:g.updateLayoutConfig("update_layout_config",...u[y]),this.$=u[y];break;case 71:this.$=[u[y]];break;case 72:u[y].unshift(u[y-1]),this.$=u[y];break;case 73:case 75:this.$=u[y].trim();break;case 74:let Et={};Et[u[y-1].trim()]=u[y].trim(),this.$=Et;break;case 76:this.$="";break}},table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:70,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:71,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:72,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{13:73,19:20,20:21,21:22,22:t,23:a,24:o,26:l,28:i,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{14:[1,74]},e(At,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:r,37:n,38:h,39:f,40:d,41:p,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt}),e(At,[2,14]),e(Vt,[2,16],{12:[1,76]}),e(At,[2,36],{12:[1,77]}),e(Ot,[2,19]),e(Ot,[2,20]),{25:[1,78]},{27:[1,79]},e(Ot,[2,23]),{35:80,75:81,76:v,77:k,79:A,80:C},{35:86,75:81,76:v,77:k,79:A,80:C},{35:87,75:81,76:v,77:k,79:A,80:C},{35:88,75:81,76:v,77:k,79:A,80:C},{35:89,75:81,76:v,77:k,79:A,80:C},{35:90,75:81,76:v,77:k,79:A,80:C},{35:91,75:81,76:v,77:k,79:A,80:C},{35:92,75:81,76:v,77:k,79:A,80:C},{35:93,75:81,76:v,77:k,79:A,80:C},{35:94,75:81,76:v,77:k,79:A,80:C},{35:95,75:81,76:v,77:k,79:A,80:C},{35:96,75:81,76:v,77:k,79:A,80:C},{35:97,75:81,76:v,77:k,79:A,80:C},{35:98,75:81,76:v,77:k,79:A,80:C},{35:99,75:81,76:v,77:k,79:A,80:C},{35:100,75:81,76:v,77:k,79:A,80:C},{35:101,75:81,76:v,77:k,79:A,80:C},{35:102,75:81,76:v,77:k,79:A,80:C},{35:103,75:81,76:v,77:k,79:A,80:C},{35:104,75:81,76:v,77:k,79:A,80:C},e(w,[2,59]),{35:105,75:81,76:v,77:k,79:A,80:C},{35:106,75:81,76:v,77:k,79:A,80:C},{35:107,75:81,76:v,77:k,79:A,80:C},{35:108,75:81,76:v,77:k,79:A,80:C},{35:109,75:81,76:v,77:k,79:A,80:C},{35:110,75:81,76:v,77:k,79:A,80:C},{35:111,75:81,76:v,77:k,79:A,80:C},{35:112,75:81,76:v,77:k,79:A,80:C},{35:113,75:81,76:v,77:k,79:A,80:C},{35:114,75:81,76:v,77:k,79:A,80:C},{35:115,75:81,76:v,77:k,79:A,80:C},{20:116,29:49,30:61,32:62,34:s,36:r,37:n,38:h,39:f,40:d,41:p,43:23,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt},{12:[1,118],33:[1,117]},{35:119,75:81,76:v,77:k,79:A,80:C},{35:120,75:81,76:v,77:k,79:A,80:C},{35:121,75:81,76:v,77:k,79:A,80:C},{35:122,75:81,76:v,77:k,79:A,80:C},{35:123,75:81,76:v,77:k,79:A,80:C},{35:124,75:81,76:v,77:k,79:A,80:C},{35:125,75:81,76:v,77:k,79:A,80:C},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(At,[2,15]),e(Vt,[2,17],{21:22,19:130,22:t,23:a,24:o,26:l,28:i}),e(At,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:a,24:o,26:l,28:i,34:s,36:r,37:n,38:h,39:f,40:d,41:p,44:E,45:O,46:R,47:S,48:L,49:Y,50:Q,51:H,52:q,53:G,54:K,55:J,56:Z,57:$,58:tt,59:et,60:it,61:nt,62:st,63:at,64:rt,65:lt,66:ot,67:ct,68:ht,69:ut,70:dt,71:ft,72:pt,73:yt,74:gt}),e(Ot,[2,21]),e(Ot,[2,22]),e(w,[2,39]),e(ne,[2,71],{75:81,35:132,76:v,77:k,79:A,80:C}),e(Pt,[2,73]),{78:[1,133]},e(Pt,[2,75]),e(Pt,[2,76]),e(w,[2,40]),e(w,[2,41]),e(w,[2,42]),e(w,[2,43]),e(w,[2,44]),e(w,[2,45]),e(w,[2,46]),e(w,[2,47]),e(w,[2,48]),e(w,[2,49]),e(w,[2,50]),e(w,[2,51]),e(w,[2,52]),e(w,[2,53]),e(w,[2,54]),e(w,[2,55]),e(w,[2,56]),e(w,[2,57]),e(w,[2,58]),e(w,[2,60]),e(w,[2,61]),e(w,[2,62]),e(w,[2,63]),e(w,[2,64]),e(w,[2,65]),e(w,[2,66]),e(w,[2,67]),e(w,[2,68]),e(w,[2,69]),e(w,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(mt,[2,28]),e(mt,[2,29]),e(mt,[2,30]),e(mt,[2,31]),e(mt,[2,32]),e(mt,[2,33]),e(mt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(Vt,[2,18]),e(At,[2,38]),e(ne,[2,72]),e(Pt,[2,74]),e(w,[2,24]),e(w,[2,35]),e(zt,[2,25]),e(zt,[2,26],{12:[1,138]}),e(zt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:function(_,x){if(x.recoverable)this.trace(_);else{var m=new Error(_);throw m.hash=x,m}},parse:function(_){var x=this,m=[0],g=[],T=[null],u=[],Tt=this.table,y="",Et=0,se=0,Ee=2,ae=1,ve=u.slice.call(arguments,1),D=Object.create(this.lexer),vt={yy:{}};for(var Qt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Qt)&&(vt.yy[Qt]=this.yy[Qt]);D.setInput(_,vt.yy),vt.yy.lexer=D,vt.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var Ht=D.yylloc;u.push(Ht);var ke=D.options&&D.options.ranges;typeof vt.yy.parseError=="function"?this.parseError=vt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ae(){var X;return X=g.pop()||D.lex()||ae,typeof X!="number"&&(X instanceof Array&&(g=X,X=g.pop()),X=x.symbols_[X]||X),X}for(var M,kt,N,qt,Ct={},Mt,z,re,Lt;;){if(kt=m[m.length-1],this.defaultActions[kt]?N=this.defaultActions[kt]:((M===null||typeof M>"u")&&(M=Ae()),N=Tt[kt]&&Tt[kt][M]),typeof N>"u"||!N.length||!N[0]){var Gt="";Lt=[];for(Mt in Tt[kt])this.terminals_[Mt]&&Mt>Ee&&Lt.push("'"+this.terminals_[Mt]+"'");D.showPosition?Gt="Parse error on line "+(Et+1)+`: `+D.showPosition()+` Expecting `+Lt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":Gt="Parse error on line "+(Et+1)+": Unexpected "+(M==ae?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(Gt,{text:D.match,token:this.terminals_[M]||M,line:D.yylineno,loc:Ht,expected:Lt})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+kt+", token: "+M);switch(N[0]){case 1:m.push(M),T.push(D.yytext),u.push(D.yylloc),m.push(N[1]),M=null,se=D.yyleng,y=D.yytext,Et=D.yylineno,Ht=D.yylloc;break;case 2:if(z=this.productions_[N[1]][1],Ct.$=T[T.length-z],Ct._$={first_line:u[u.length-(z||1)].first_line,last_line:u[u.length-1].last_line,first_column:u[u.length-(z||1)].first_column,last_column:u[u.length-1].last_column},ke&&(Ct._$.range=[u[u.length-(z||1)].range[0],u[u.length-1].range[1]]),qt=this.performAction.apply(Ct,[y,se,Et,vt.yy,N[1],T,u].concat(ve)),typeof qt<"u")return qt;z&&(m=m.slice(0,-1*z*2),T=T.slice(0,-1*z),u=u.slice(0,-1*z)),m.push(this.productions_[N[1]][0]),T.push(Ct.$),u.push(Ct._$),re=Tt[m[m.length-2]][m[m.length-1]],m.push(re);break;case 3:return!0}}return!0}},me=function(){var bt={EOF:1,parseError:function(x,m){if(this.yy.parser)this.yy.parser.parseError(x,m);else throw new Error(x)},setInput:function(_,x){return this.yy=x||this.yy||{},this._input=_,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var x=_.match(/(?:\r\n?|\n).*/g);return x?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_},unput:function(_){var x=_.length,m=_.split(/(?:\r\n?|\n)/g);this._input=_+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-x),this.offset-=x;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),m.length-1&&(this.yylineno-=m.length-1);var T=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:m?(m.length===g.length?this.yylloc.first_column:0)+g[g.length-m.length].length-m[0].length:this.yylloc.first_column-x},this.options.ranges&&(this.yylloc.range=[T[0],T[0]+this.yyleng-x]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(_){this.unput(this.match.slice(_))},pastInput:function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var _=this.pastInput(),x=new Array(_.length+1).join("-");return _+this.upcomingInput()+` diff --git a/assets/classDiagram-48ab76fb-VgeeOHT1.js b/assets/classDiagram-48ab76fb-2huToeoO.js similarity index 97% rename from assets/classDiagram-48ab76fb-VgeeOHT1.js rename to assets/classDiagram-48ab76fb-2huToeoO.js index 68e8194..c15fdd7 100644 --- a/assets/classDiagram-48ab76fb-VgeeOHT1.js +++ b/assets/classDiagram-48ab76fb-2huToeoO.js @@ -1,2 +1,2 @@ -import{p as A,d as S,s as G}from"./styles-4ba6ed67-2KGnpqeU.js";import{c as v,l as y,h as B,i as W,ao as $,y as M,ar as I}from"./mermaid.core-ygY5oRaR.js";import{G as O,l as P}from"./layout-wEoclKsW.js";import{l as X}from"./line-EJoUorMM.js";import"./app-RP31lnfq.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";let H=0;const Y=function(i,a,t,o,p){const g=function(e){switch(e){case p.db.relationType.AGGREGATION:return"aggregation";case p.db.relationType.EXTENSION:return"extension";case p.db.relationType.COMPOSITION:return"composition";case p.db.relationType.DEPENDENCY:return"dependency";case p.db.relationType.LOLLIPOP:return"lollipop"}};a.points=a.points.filter(e=>!Number.isNaN(e.y));const s=a.points,c=X().x(function(e){return e.x}).y(function(e){return e.y}).curve($),n=i.append("path").attr("d",c(s)).attr("id","edge"+H).attr("class","relation");let r="";o.arrowMarkerAbsolute&&(r=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,r=r.replace(/\(/g,"\\("),r=r.replace(/\)/g,"\\)")),t.relation.lineType==1&&n.attr("class","relation dashed-line"),t.relation.lineType==10&&n.attr("class","relation dotted-line"),t.relation.type1!=="none"&&n.attr("marker-start","url("+r+"#"+g(t.relation.type1)+"Start)"),t.relation.type2!=="none"&&n.attr("marker-end","url("+r+"#"+g(t.relation.type2)+"End)");let f,h;const x=a.points.length;let b=M.calcLabelPosition(a.points);f=b.x,h=b.y;let u,m,w,k;if(x%2!==0&&x>1){let e=M.calcCardinalityPosition(t.relation.type1!=="none",a.points,a.points[0]),d=M.calcCardinalityPosition(t.relation.type2!=="none",a.points,a.points[x-1]);y.debug("cardinality_1_point "+JSON.stringify(e)),y.debug("cardinality_2_point "+JSON.stringify(d)),u=e.x,m=e.y,w=d.x,k=d.y}if(t.title!==void 0){const e=i.append("g").attr("class","classLabel"),d=e.append("text").attr("class","label").attr("x",f).attr("y",h).attr("fill","red").attr("text-anchor","middle").text(t.title);window.label=d;const l=d.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",l.x-o.padding/2).attr("y",l.y-o.padding/2).attr("width",l.width+o.padding).attr("height",l.height+o.padding)}y.info("Rendering relation "+JSON.stringify(t)),t.relationTitle1!==void 0&&t.relationTitle1!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",u).attr("y",m).attr("fill","black").attr("font-size","6").text(t.relationTitle1),t.relationTitle2!==void 0&&t.relationTitle2!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",w).attr("y",k).attr("fill","black").attr("font-size","6").text(t.relationTitle2),H++},J=function(i,a,t,o){y.debug("Rendering class ",a,t);const p=a.id,g={id:p,label:a.id,width:0,height:0},s=i.append("g").attr("id",o.db.lookUpDomId(p)).attr("class","classGroup");let c;a.link?c=s.append("svg:a").attr("xlink:href",a.link).attr("target",a.linkTarget).append("text").attr("y",t.textHeight+t.padding).attr("x",0):c=s.append("text").attr("y",t.textHeight+t.padding).attr("x",0);let n=!0;a.annotations.forEach(function(d){const l=c.append("tspan").text("«"+d+"»");n||l.attr("dy",t.textHeight),n=!1});let r=C(a);const f=c.append("tspan").text(r).attr("class","title");n||f.attr("dy",t.textHeight);const h=c.node().getBBox().height;let x,b,u;if(a.members.length>0){x=s.append("line").attr("x1",0).attr("y1",t.padding+h+t.dividerMargin/2).attr("y2",t.padding+h+t.dividerMargin/2);const d=s.append("text").attr("x",t.padding).attr("y",h+t.dividerMargin+t.textHeight).attr("fill","white").attr("class","classText");n=!0,a.members.forEach(function(l){_(d,l,n,t),n=!1}),b=d.node().getBBox()}if(a.methods.length>0){u=s.append("line").attr("x1",0).attr("y1",t.padding+h+t.dividerMargin+b.height).attr("y2",t.padding+h+t.dividerMargin+b.height);const d=s.append("text").attr("x",t.padding).attr("y",h+2*t.dividerMargin+b.height+t.textHeight).attr("fill","white").attr("class","classText");n=!0,a.methods.forEach(function(l){_(d,l,n,t),n=!1})}const m=s.node().getBBox();var w=" ";a.cssClasses.length>0&&(w=w+a.cssClasses.join(" "));const e=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",m.width+2*t.padding).attr("height",m.height+t.padding+.5*t.dividerMargin).attr("class",w).node().getBBox().width;return c.node().childNodes.forEach(function(d){d.setAttribute("x",(e-d.getBBox().width)/2)}),a.tooltip&&c.insert("title").text(a.tooltip),x&&x.attr("x2",e),u&&u.attr("x2",e),g.width=e,g.height=m.height+t.padding+.5*t.dividerMargin,g},C=function(i){let a=i.id;return i.type&&(a+="<"+I(i.type)+">"),a},Z=function(i,a,t,o){y.debug("Rendering note ",a,t);const p=a.id,g={id:p,text:a.text,width:0,height:0},s=i.append("g").attr("id",p).attr("class","classGroup");let c=s.append("text").attr("y",t.textHeight+t.padding).attr("x",0);const n=JSON.parse(`"${a.text}"`).split(` +import{p as A,d as S,s as G}from"./styles-4ba6ed67-LzHEaVgv.js";import{c as v,l as y,h as B,i as W,ao as $,y as M,ar as I}from"./mermaid.core-YBgJFCkH.js";import{G as O,l as P}from"./layout-6DvG_ICF.js";import{l as X}from"./line-QxBjBe1b.js";import"./app-0NopiYEV.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";let H=0;const Y=function(i,a,t,o,p){const g=function(e){switch(e){case p.db.relationType.AGGREGATION:return"aggregation";case p.db.relationType.EXTENSION:return"extension";case p.db.relationType.COMPOSITION:return"composition";case p.db.relationType.DEPENDENCY:return"dependency";case p.db.relationType.LOLLIPOP:return"lollipop"}};a.points=a.points.filter(e=>!Number.isNaN(e.y));const s=a.points,c=X().x(function(e){return e.x}).y(function(e){return e.y}).curve($),n=i.append("path").attr("d",c(s)).attr("id","edge"+H).attr("class","relation");let r="";o.arrowMarkerAbsolute&&(r=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,r=r.replace(/\(/g,"\\("),r=r.replace(/\)/g,"\\)")),t.relation.lineType==1&&n.attr("class","relation dashed-line"),t.relation.lineType==10&&n.attr("class","relation dotted-line"),t.relation.type1!=="none"&&n.attr("marker-start","url("+r+"#"+g(t.relation.type1)+"Start)"),t.relation.type2!=="none"&&n.attr("marker-end","url("+r+"#"+g(t.relation.type2)+"End)");let f,h;const x=a.points.length;let b=M.calcLabelPosition(a.points);f=b.x,h=b.y;let u,m,w,k;if(x%2!==0&&x>1){let e=M.calcCardinalityPosition(t.relation.type1!=="none",a.points,a.points[0]),d=M.calcCardinalityPosition(t.relation.type2!=="none",a.points,a.points[x-1]);y.debug("cardinality_1_point "+JSON.stringify(e)),y.debug("cardinality_2_point "+JSON.stringify(d)),u=e.x,m=e.y,w=d.x,k=d.y}if(t.title!==void 0){const e=i.append("g").attr("class","classLabel"),d=e.append("text").attr("class","label").attr("x",f).attr("y",h).attr("fill","red").attr("text-anchor","middle").text(t.title);window.label=d;const l=d.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",l.x-o.padding/2).attr("y",l.y-o.padding/2).attr("width",l.width+o.padding).attr("height",l.height+o.padding)}y.info("Rendering relation "+JSON.stringify(t)),t.relationTitle1!==void 0&&t.relationTitle1!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",u).attr("y",m).attr("fill","black").attr("font-size","6").text(t.relationTitle1),t.relationTitle2!==void 0&&t.relationTitle2!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",w).attr("y",k).attr("fill","black").attr("font-size","6").text(t.relationTitle2),H++},J=function(i,a,t,o){y.debug("Rendering class ",a,t);const p=a.id,g={id:p,label:a.id,width:0,height:0},s=i.append("g").attr("id",o.db.lookUpDomId(p)).attr("class","classGroup");let c;a.link?c=s.append("svg:a").attr("xlink:href",a.link).attr("target",a.linkTarget).append("text").attr("y",t.textHeight+t.padding).attr("x",0):c=s.append("text").attr("y",t.textHeight+t.padding).attr("x",0);let n=!0;a.annotations.forEach(function(d){const l=c.append("tspan").text("«"+d+"»");n||l.attr("dy",t.textHeight),n=!1});let r=C(a);const f=c.append("tspan").text(r).attr("class","title");n||f.attr("dy",t.textHeight);const h=c.node().getBBox().height;let x,b,u;if(a.members.length>0){x=s.append("line").attr("x1",0).attr("y1",t.padding+h+t.dividerMargin/2).attr("y2",t.padding+h+t.dividerMargin/2);const d=s.append("text").attr("x",t.padding).attr("y",h+t.dividerMargin+t.textHeight).attr("fill","white").attr("class","classText");n=!0,a.members.forEach(function(l){_(d,l,n,t),n=!1}),b=d.node().getBBox()}if(a.methods.length>0){u=s.append("line").attr("x1",0).attr("y1",t.padding+h+t.dividerMargin+b.height).attr("y2",t.padding+h+t.dividerMargin+b.height);const d=s.append("text").attr("x",t.padding).attr("y",h+2*t.dividerMargin+b.height+t.textHeight).attr("fill","white").attr("class","classText");n=!0,a.methods.forEach(function(l){_(d,l,n,t),n=!1})}const m=s.node().getBBox();var w=" ";a.cssClasses.length>0&&(w=w+a.cssClasses.join(" "));const e=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",m.width+2*t.padding).attr("height",m.height+t.padding+.5*t.dividerMargin).attr("class",w).node().getBBox().width;return c.node().childNodes.forEach(function(d){d.setAttribute("x",(e-d.getBBox().width)/2)}),a.tooltip&&c.insert("title").text(a.tooltip),x&&x.attr("x2",e),u&&u.attr("x2",e),g.width=e,g.height=m.height+t.padding+.5*t.dividerMargin,g},C=function(i){let a=i.id;return i.type&&(a+="<"+I(i.type)+">"),a},Z=function(i,a,t,o){y.debug("Rendering note ",a,t);const p=a.id,g={id:p,text:a.text,width:0,height:0},s=i.append("g").attr("id",p).attr("class","classGroup");let c=s.append("text").attr("y",t.textHeight+t.padding).attr("x",0);const n=JSON.parse(`"${a.text}"`).split(` `);n.forEach(function(x){y.debug(`Adding line: ${x}`),c.append("tspan").text(x).attr("class","title").attr("dy",t.textHeight)});const r=s.node().getBBox(),h=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",r.width+2*t.padding).attr("height",r.height+n.length*t.textHeight+t.padding+.5*t.dividerMargin).node().getBBox().width;return c.node().childNodes.forEach(function(x){x.setAttribute("x",(h-x.getBBox().width)/2)}),g.width=h,g.height=r.height+n.length*t.textHeight+t.padding+.5*t.dividerMargin,g},_=function(i,a,t,o){const{displayText:p,cssStyle:g}=a.getDisplayDetails(),s=i.append("tspan").attr("x",o.padding).text(p);g!==""&&s.attr("style",a.cssStyle),t||s.attr("dy",o.textHeight)},N={getClassTitleString:C,drawClass:J,drawEdge:Y,drawNote:Z};let T={};const E=20,L=function(i){const a=Object.entries(T).find(t=>t[1].label===i);if(a)return a[0]},R=function(i){i.append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},F=function(i,a,t,o){const p=v().class;T={},y.info("Rendering diagram "+i);const g=v().securityLevel;let s;g==="sandbox"&&(s=B("#i"+a));const c=g==="sandbox"?B(s.nodes()[0].contentDocument.body):B("body"),n=c.select(`[id='${a}']`);R(n);const r=new O({multigraph:!0});r.setGraph({isMultiGraph:!0}),r.setDefaultEdgeLabel(function(){return{}});const f=o.db.getClasses(),h=Object.keys(f);for(const e of h){const d=f[e],l=N.drawClass(n,d,p,o);T[l.id]=l,r.setNode(l.id,l),y.info("Org height: "+l.height)}o.db.getRelations().forEach(function(e){y.info("tjoho"+L(e.id1)+L(e.id2)+JSON.stringify(e)),r.setEdge(L(e.id1),L(e.id2),{relation:e},e.title||"DEFAULT")}),o.db.getNotes().forEach(function(e){y.debug(`Adding note: ${JSON.stringify(e)}`);const d=N.drawNote(n,e,p,o);T[d.id]=d,r.setNode(d.id,d),e.class&&e.class in f&&r.setEdge(e.id,L(e.class),{relation:{id1:e.id,id2:e.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")}),P(r),r.nodes().forEach(function(e){e!==void 0&&r.node(e)!==void 0&&(y.debug("Node "+e+": "+JSON.stringify(r.node(e))),c.select("#"+(o.db.lookUpDomId(e)||e)).attr("transform","translate("+(r.node(e).x-r.node(e).width/2)+","+(r.node(e).y-r.node(e).height/2)+" )"))}),r.edges().forEach(function(e){e!==void 0&&r.edge(e)!==void 0&&(y.debug("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(r.edge(e))),N.drawEdge(n,r.edge(e),r.edge(e).relation,p,o))});const u=n.node().getBBox(),m=u.width+E*2,w=u.height+E*2;W(n,w,m,p.useMaxWidth);const k=`${u.x-E} ${u.y-E} ${m} ${w}`;y.debug(`viewBox ${k}`),n.attr("viewBox",k)},U={draw:F},tt={parser:A,db:S,renderer:U,styles:G,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,S.clear()}};export{tt as diagram}; diff --git a/assets/classDiagram-v2-8ecb0bfc-bhA94s1K.js b/assets/classDiagram-v2-8ecb0bfc-bhA94s1K.js deleted file mode 100644 index b19a62e..0000000 --- a/assets/classDiagram-v2-8ecb0bfc-bhA94s1K.js +++ /dev/null @@ -1,2 +0,0 @@ -import{p as M,d as N,s as $}from"./styles-4ba6ed67-2KGnpqeU.js";import{l as d,c,h as w,y as R,t as B,r as E,o as _,p as G,j as C}from"./mermaid.core-ygY5oRaR.js";import{G as z}from"./layout-wEoclKsW.js";import{r as P}from"./index-67a42d7d-B7ItSCR5.js";import"./app-RP31lnfq.js";import"./edges-80f1ebb6-89E8mCFH.js";import"./createText-aebacdfe-CTBuskZ8.js";import"./line-EJoUorMM.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const S=s=>C.sanitizeText(s,c());let k={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const q=function(s,t,y,n){const e=Object.keys(s);d.info("keys:",e),d.info(s),e.forEach(function(i){var o,r;const l=s[i],p={shape:"rect",id:l.id,domId:l.domId,labelText:S(l.id),labelStyle:"",style:"fill: none; stroke: black",padding:((o=c().flowchart)==null?void 0:o.padding)??((r=c().class)==null?void 0:r.padding)};t.setNode(l.id,p),A(l.classes,t,y,n,l.id),d.info("setNode",p)})},A=function(s,t,y,n,e){const i=Object.keys(s);d.info("keys:",i),d.info(s),i.filter(o=>s[o].parent==e).forEach(function(o){var r,l;const a=s[o],p=a.cssClasses.join(" "),f={labelStyle:"",style:""},m=a.label??a.id,b=0,h="class_box",u={labelStyle:f.labelStyle,shape:h,labelText:S(m),classData:a,rx:b,ry:b,class:p,style:f.style,id:a.id,domId:a.domId,tooltip:n.db.getTooltip(a.id,e)||"",haveCallback:a.haveCallback,link:a.link,width:a.type==="group"?500:void 0,type:a.type,padding:((r=c().flowchart)==null?void 0:r.padding)??((l=c().class)==null?void 0:l.padding)};t.setNode(a.id,u),e&&t.setParent(a.id,e),d.info("setNode",u)})},F=function(s,t,y,n){d.info(s),s.forEach(function(e,i){var o,r;const l=e,a="",p={labelStyle:"",style:""},f=l.text,m=0,b="note",h={labelStyle:p.labelStyle,shape:b,labelText:S(f),noteData:l,rx:m,ry:m,class:a,style:p.style,id:l.id,domId:l.id,tooltip:"",type:"note",padding:((o=c().flowchart)==null?void 0:o.padding)??((r=c().class)==null?void 0:r.padding)};if(t.setNode(l.id,h),d.info("setNode",h),!l.class||!(l.class in n))return;const u=y+i,g={id:`edgeNote${u}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:E(k.curve,_)};t.setEdge(l.id,l.class,g,u)})},H=function(s,t){const y=c().flowchart;let n=0;s.forEach(function(e){var i;n++;const o={classes:"relation",pattern:e.relation.lineType==1?"dashed":"solid",id:"id"+n,arrowhead:e.type==="arrow_open"?"none":"normal",startLabelRight:e.relationTitle1==="none"?"":e.relationTitle1,endLabelLeft:e.relationTitle2==="none"?"":e.relationTitle2,arrowTypeStart:D(e.relation.type1),arrowTypeEnd:D(e.relation.type2),style:"fill:none",labelStyle:"",curve:E(y==null?void 0:y.curve,_)};if(d.info(o,e),e.style!==void 0){const r=G(e.style);o.style=r.style,o.labelStyle=r.labelStyle}e.text=e.title,e.text===void 0?e.style!==void 0&&(o.arrowheadStyle="fill: #333"):(o.arrowheadStyle="fill: #333",o.labelpos="c",((i=c().flowchart)==null?void 0:i.htmlLabels)??c().htmlLabels?(o.labelType="html",o.label=''+e.text+""):(o.labelType="text",o.label=e.text.replace(C.lineBreakRegex,` -`),e.style===void 0&&(o.style=o.style||"stroke: #333; stroke-width: 1.5px;fill:none"),o.labelStyle=o.labelStyle.replace("color:","fill:"))),t.setEdge(e.id1,e.id2,o,n)})},V=function(s){k={...k,...s}},W=async function(s,t,y,n){d.info("Drawing class - ",t);const e=c().flowchart??c().class,i=c().securityLevel;d.info("config:",e);const o=(e==null?void 0:e.nodeSpacing)??50,r=(e==null?void 0:e.rankSpacing)??50,l=new z({multigraph:!0,compound:!0}).setGraph({rankdir:n.db.getDirection(),nodesep:o,ranksep:r,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),a=n.db.getNamespaces(),p=n.db.getClasses(),f=n.db.getRelations(),m=n.db.getNotes();d.info(f),q(a,l,t,n),A(p,l,t,n),H(f,l),F(m,l,f.length+1,p);let b;i==="sandbox"&&(b=w("#i"+t));const h=i==="sandbox"?w(b.nodes()[0].contentDocument.body):w("body"),u=h.select(`[id="${t}"]`),g=h.select("#"+t+" g");if(await P(g,l,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",t),R.insertTitle(u,"classTitleText",(e==null?void 0:e.titleTopMargin)??5,n.db.getDiagramTitle()),B(l,u,e==null?void 0:e.diagramPadding,e==null?void 0:e.useMaxWidth),!(e!=null&&e.htmlLabels)){const T=i==="sandbox"?b.nodes()[0].contentDocument:document,I=T.querySelectorAll('[id="'+t+'"] .edgeLabel .label');for(const x of I){const L=x.getBBox(),v=T.createElementNS("http://www.w3.org/2000/svg","rect");v.setAttribute("rx",0),v.setAttribute("ry",0),v.setAttribute("width",L.width),v.setAttribute("height",L.height),x.insertBefore(v,x.firstChild)}}};function D(s){let t;switch(s){case 0:t="aggregation";break;case 1:t="extension";break;case 2:t="composition";break;case 3:t="dependency";break;case 4:t="lollipop";break;default:t="none"}return t}const J={setConf:V,draw:W},oe={parser:M,db:N,renderer:J,styles:$,init:s=>{s.class||(s.class={}),s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,N.clear()}};export{oe as diagram}; diff --git a/assets/classDiagram-v2-8ecb0bfc-yizWAp91.js b/assets/classDiagram-v2-8ecb0bfc-yizWAp91.js new file mode 100644 index 0000000..bcaa937 --- /dev/null +++ b/assets/classDiagram-v2-8ecb0bfc-yizWAp91.js @@ -0,0 +1,2 @@ +import{p as M,d as N,s as $}from"./styles-4ba6ed67-LzHEaVgv.js";import{l as d,c,h as w,y as R,t as B,r as E,o as _,p as G,j as C}from"./mermaid.core-YBgJFCkH.js";import{G as z}from"./layout-6DvG_ICF.js";import{r as P}from"./index-67a42d7d-iblPHmxF.js";import"./app-0NopiYEV.js";import"./edges-80f1ebb6-hR1YO9QC.js";import"./createText-aebacdfe-VuGI-o_f.js";import"./line-QxBjBe1b.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const S=s=>C.sanitizeText(s,c());let k={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const q=function(s,t,y,n){const e=Object.keys(s);d.info("keys:",e),d.info(s),e.forEach(function(i){var o,r;const l=s[i],p={shape:"rect",id:l.id,domId:l.domId,labelText:S(l.id),labelStyle:"",style:"fill: none; stroke: black",padding:((o=c().flowchart)==null?void 0:o.padding)??((r=c().class)==null?void 0:r.padding)};t.setNode(l.id,p),A(l.classes,t,y,n,l.id),d.info("setNode",p)})},A=function(s,t,y,n,e){const i=Object.keys(s);d.info("keys:",i),d.info(s),i.filter(o=>s[o].parent==e).forEach(function(o){var r,l;const a=s[o],p=a.cssClasses.join(" "),f={labelStyle:"",style:""},h=a.label??a.id,u=0,b={labelStyle:f.labelStyle,shape:"class_box",labelText:S(h),classData:a,rx:u,ry:u,class:p,style:f.style,id:a.id,domId:a.domId,tooltip:n.db.getTooltip(a.id,e)||"",haveCallback:a.haveCallback,link:a.link,width:a.type==="group"?500:void 0,type:a.type,padding:((r=c().flowchart)==null?void 0:r.padding)??((l=c().class)==null?void 0:l.padding)};t.setNode(a.id,b),e&&t.setParent(a.id,e),d.info("setNode",b)})},F=function(s,t,y,n){d.info(s),s.forEach(function(e,i){var o,r;const l=e,a="",p={labelStyle:"",style:""},f=l.text,h=0,m={labelStyle:p.labelStyle,shape:"note",labelText:S(f),noteData:l,rx:h,ry:h,class:a,style:p.style,id:l.id,domId:l.id,tooltip:"",type:"note",padding:((o=c().flowchart)==null?void 0:o.padding)??((r=c().class)==null?void 0:r.padding)};if(t.setNode(l.id,m),d.info("setNode",m),!l.class||!(l.class in n))return;const b=y+i,g={id:`edgeNote${b}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:E(k.curve,_)};t.setEdge(l.id,l.class,g,b)})},H=function(s,t){const y=c().flowchart;let n=0;s.forEach(function(e){var i;n++;const o={classes:"relation",pattern:e.relation.lineType==1?"dashed":"solid",id:"id"+n,arrowhead:e.type==="arrow_open"?"none":"normal",startLabelRight:e.relationTitle1==="none"?"":e.relationTitle1,endLabelLeft:e.relationTitle2==="none"?"":e.relationTitle2,arrowTypeStart:D(e.relation.type1),arrowTypeEnd:D(e.relation.type2),style:"fill:none",labelStyle:"",curve:E(y==null?void 0:y.curve,_)};if(d.info(o,e),e.style!==void 0){const r=G(e.style);o.style=r.style,o.labelStyle=r.labelStyle}e.text=e.title,e.text===void 0?e.style!==void 0&&(o.arrowheadStyle="fill: #333"):(o.arrowheadStyle="fill: #333",o.labelpos="c",((i=c().flowchart)==null?void 0:i.htmlLabels)??c().htmlLabels?(o.labelType="html",o.label=''+e.text+""):(o.labelType="text",o.label=e.text.replace(C.lineBreakRegex,` +`),e.style===void 0&&(o.style=o.style||"stroke: #333; stroke-width: 1.5px;fill:none"),o.labelStyle=o.labelStyle.replace("color:","fill:"))),t.setEdge(e.id1,e.id2,o,n)})},V=function(s){k={...k,...s}},W=async function(s,t,y,n){d.info("Drawing class - ",t);const e=c().flowchart??c().class,i=c().securityLevel;d.info("config:",e);const o=(e==null?void 0:e.nodeSpacing)??50,r=(e==null?void 0:e.rankSpacing)??50,l=new z({multigraph:!0,compound:!0}).setGraph({rankdir:n.db.getDirection(),nodesep:o,ranksep:r,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),a=n.db.getNamespaces(),p=n.db.getClasses(),f=n.db.getRelations(),h=n.db.getNotes();d.info(f),q(a,l,t,n),A(p,l,t,n),H(f,l),F(h,l,f.length+1,p);let u;i==="sandbox"&&(u=w("#i"+t));const m=i==="sandbox"?w(u.nodes()[0].contentDocument.body):w("body"),b=m.select(`[id="${t}"]`),g=m.select("#"+t+" g");if(await P(g,l,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",t),R.insertTitle(b,"classTitleText",(e==null?void 0:e.titleTopMargin)??5,n.db.getDiagramTitle()),B(l,b,e==null?void 0:e.diagramPadding,e==null?void 0:e.useMaxWidth),!(e!=null&&e.htmlLabels)){const T=i==="sandbox"?u.nodes()[0].contentDocument:document,I=T.querySelectorAll('[id="'+t+'"] .edgeLabel .label');for(const x of I){const L=x.getBBox(),v=T.createElementNS("http://www.w3.org/2000/svg","rect");v.setAttribute("rx",0),v.setAttribute("ry",0),v.setAttribute("width",L.width),v.setAttribute("height",L.height),x.insertBefore(v,x.firstChild)}}};function D(s){let t;switch(s){case 0:t="aggregation";break;case 1:t="extension";break;case 2:t="composition";break;case 3:t="dependency";break;case 4:t="lollipop";break;default:t="none"}return t}const J={setConf:V,draw:W},oe={parser:M,db:N,renderer:J,styles:$,init:s=>{s.class||(s.class={}),s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,N.clear()}};export{oe as diagram}; diff --git a/assets/collaborative_projects.html-jP_gBiJf.js b/assets/collaborative_projects.html-RO-575me.js similarity index 98% rename from assets/collaborative_projects.html-jP_gBiJf.js rename to assets/collaborative_projects.html-RO-575me.js index 5e65a7c..d182b00 100644 --- a/assets/collaborative_projects.html-jP_gBiJf.js +++ b/assets/collaborative_projects.html-RO-575me.js @@ -1 +1 @@ -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as a,c as i,a as e,d as t,b as o}from"./app-RP31lnfq.js";const s={},h=e("p",null,"视频管理平台",-1),_={href:"https://github.com/648540858/wvp-GB28181-pro",target:"_blank",rel:"noopener noreferrer"},c={href:"https://github.com/chatop2020/AKStream",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/any12345com/BXC_SipServer",target:"_blank",rel:"noopener noreferrer"},p={href:"https://github.com/panjjo/gosip",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/tsingeye/FreeEhome",target:"_blank",rel:"noopener noreferrer"},b=e("p",null,"播放器",-1),f={href:"https://github.com/numberwolf/h265web.js",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/langhuihui/jessibuca",target:"_blank",rel:"noopener noreferrer"},d={href:"https://github.com/v354412101/wsPlayer",target:"_blank",rel:"noopener noreferrer"},k={href:"https://github.com/any12345com/BXC_gb28181Player",target:"_blank",rel:"noopener noreferrer"},B=e("p",null,"WEB 管理网站",-1),w={href:"https://github.com/1002victor/zlm_webassist",target:"_blank",rel:"noopener noreferrer"},S={href:"https://github.com/langmansh/AKStreamNVR",target:"_blank",rel:"noopener noreferrer"},v=e("p",null,"SDK",-1),M={href:"https://github.com/malegend/ZLMediaKit.Autogen",target:"_blank",rel:"noopener noreferrer"},C={href:"https://github.com/metartc/metaRTC",target:"_blank",rel:"noopener noreferrer"},K=e("p",null,"其他项目(已停止更新)",-1),L={href:"https://gitee.com/hfwudao/GB28181_Node_Http",target:"_blank",rel:"noopener noreferrer"},N={href:"https://gitee.com/kkkkk5G/MediaServerUI",target:"_blank",rel:"noopener noreferrer"},E={href:"https://github.com/chenxiaolei/ZLMediaKit_NVR_UI",target:"_blank",rel:"noopener noreferrer"},G={href:"https://github.com/MingZhuLiu/ZLMediaServerManagent",target:"_blank",rel:"noopener noreferrer"},Z={href:"https://github.com/hctym1995/ZLM_ApiDemo",target:"_blank",rel:"noopener noreferrer"},j={href:"https://github.com/chengxiaosheng/ZLMediaKit.HttpApi",target:"_blank",rel:"noopener noreferrer"},x={href:"https://github.com/MingZhuLiu/ZLMediaKit.DotNetCore.Sdk",target:"_blank",rel:"noopener noreferrer"};function y(A,R){const r=l("ExternalLinkIcon");return a(),i("div",null,[e("ul",null,[e("li",null,[h,e("ul",null,[e("li",null,[e("a",_,[t("wvp-GB28181-pro"),o(r)]),t(" java 实现的开箱即用的 GB28181 协议视频平台")]),e("li",null,[e("a",c,[t("AKStream"),o(r)]),t(" c#实现的全功能的软 NVR 接口/GB28181 平台")]),e("li",null,[e("a",u,[t("BXC_SipServer"),o(r)]),t(" c++实现的国标 GB28181 流媒体信令服务器")]),e("li",null,[e("a",p,[t("gosip"),o(r)]),t(" golang 实现的 GB28181 服务器")]),e("li",null,[e("a",g,[t("FreeEhome"),o(r)]),t(" golang 实现的海康 ehome 服务器")])])]),e("li",null,[b,e("ul",null,[e("li",null,[e("a",f,[t("h265web.js"),o(r)]),t(" 基于 wasm 支持 H265 的播放器,支持本项目多种专属协议")]),e("li",null,[e("a",m,[t("jessibuca"),o(r)]),t(" 基于 wasm 支持 H265 的播放器")]),e("li",null,[e("a",d,[t("wsPlayer"),o(r)]),t(" 基于 MSE 的 websocket-fmp4 播放器")]),e("li",null,[e("a",k,[t("BXC_gb28181Player"),o(r)]),t(" C++开发的支持国标 GB28181 协议的视频流播放器")])])]),e("li",null,[B,e("ul",null,[e("li",null,[e("a",w,[t("zlm_webassist"),o(r)]),t(" 本项目配套的前后端分离 web 管理项目")]),e("li",null,[e("a",S,[t("AKStreamNVR"),o(r)]),t(" 前后端分离 web 项目,支持 webrtc 播放")])])]),e("li",null,[v,e("ul",null,[e("li",null,[e("a",M,[t("c# sdk"),o(r)]),t(" 本项目 c sdk 完整 c#包装库")]),e("li",null,[e("a",C,[t("metaRTC"),o(r)]),t(" 全国产纯 c webrtc sdk")])])]),e("li",null,[K,e("ul",null,[e("li",null,[e("a",L,[t("NodeJS 实现的 GB28181 平台"),o(r)])]),e("li",null,[e("a",N,[t("基于 ZLMediaKit 主线的管理 WEB 网站 "),o(r)])]),e("li",null,[e("a",E,[t("基于 ZLMediaKit 分支的管理 WEB 网站"),o(r)])]),e("li",null,[e("a",G,[t("一个非常漂亮的可视化后台管理系统"),o(r)])]),e("li",null,[e("a",Z,[t("基于 C SDK 实现的推流客户端"),o(r)])]),e("li",null,[e("a",j,[t("C#版本的 Http API 与 Hook"),o(r)])]),e("li",null,[e("a",x,[t("DotNetCore 的 RESTful 客户端"),o(r)])])])])])])}const D=n(s,[["render",y],["__file","collaborative_projects.html.vue"]]);export{D as default}; +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as a,c as i,a as e,d as t,b as o}from"./app-0NopiYEV.js";const s={},h=e("p",null,"视频管理平台",-1),_={href:"https://github.com/648540858/wvp-GB28181-pro",target:"_blank",rel:"noopener noreferrer"},c={href:"https://github.com/chatop2020/AKStream",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/any12345com/BXC_SipServer",target:"_blank",rel:"noopener noreferrer"},p={href:"https://github.com/panjjo/gosip",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/tsingeye/FreeEhome",target:"_blank",rel:"noopener noreferrer"},b=e("p",null,"播放器",-1),f={href:"https://github.com/numberwolf/h265web.js",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/langhuihui/jessibuca",target:"_blank",rel:"noopener noreferrer"},d={href:"https://github.com/v354412101/wsPlayer",target:"_blank",rel:"noopener noreferrer"},k={href:"https://github.com/any12345com/BXC_gb28181Player",target:"_blank",rel:"noopener noreferrer"},B=e("p",null,"WEB 管理网站",-1),w={href:"https://github.com/1002victor/zlm_webassist",target:"_blank",rel:"noopener noreferrer"},S={href:"https://github.com/langmansh/AKStreamNVR",target:"_blank",rel:"noopener noreferrer"},v=e("p",null,"SDK",-1),M={href:"https://github.com/malegend/ZLMediaKit.Autogen",target:"_blank",rel:"noopener noreferrer"},C={href:"https://github.com/metartc/metaRTC",target:"_blank",rel:"noopener noreferrer"},K=e("p",null,"其他项目(已停止更新)",-1),L={href:"https://gitee.com/hfwudao/GB28181_Node_Http",target:"_blank",rel:"noopener noreferrer"},N={href:"https://gitee.com/kkkkk5G/MediaServerUI",target:"_blank",rel:"noopener noreferrer"},E={href:"https://github.com/chenxiaolei/ZLMediaKit_NVR_UI",target:"_blank",rel:"noopener noreferrer"},G={href:"https://github.com/MingZhuLiu/ZLMediaServerManagent",target:"_blank",rel:"noopener noreferrer"},Z={href:"https://github.com/hctym1995/ZLM_ApiDemo",target:"_blank",rel:"noopener noreferrer"},j={href:"https://github.com/chengxiaosheng/ZLMediaKit.HttpApi",target:"_blank",rel:"noopener noreferrer"},x={href:"https://github.com/MingZhuLiu/ZLMediaKit.DotNetCore.Sdk",target:"_blank",rel:"noopener noreferrer"};function y(A,R){const r=l("ExternalLinkIcon");return a(),i("div",null,[e("ul",null,[e("li",null,[h,e("ul",null,[e("li",null,[e("a",_,[t("wvp-GB28181-pro"),o(r)]),t(" java 实现的开箱即用的 GB28181 协议视频平台")]),e("li",null,[e("a",c,[t("AKStream"),o(r)]),t(" c#实现的全功能的软 NVR 接口/GB28181 平台")]),e("li",null,[e("a",u,[t("BXC_SipServer"),o(r)]),t(" c++实现的国标 GB28181 流媒体信令服务器")]),e("li",null,[e("a",p,[t("gosip"),o(r)]),t(" golang 实现的 GB28181 服务器")]),e("li",null,[e("a",g,[t("FreeEhome"),o(r)]),t(" golang 实现的海康 ehome 服务器")])])]),e("li",null,[b,e("ul",null,[e("li",null,[e("a",f,[t("h265web.js"),o(r)]),t(" 基于 wasm 支持 H265 的播放器,支持本项目多种专属协议")]),e("li",null,[e("a",m,[t("jessibuca"),o(r)]),t(" 基于 wasm 支持 H265 的播放器")]),e("li",null,[e("a",d,[t("wsPlayer"),o(r)]),t(" 基于 MSE 的 websocket-fmp4 播放器")]),e("li",null,[e("a",k,[t("BXC_gb28181Player"),o(r)]),t(" C++开发的支持国标 GB28181 协议的视频流播放器")])])]),e("li",null,[B,e("ul",null,[e("li",null,[e("a",w,[t("zlm_webassist"),o(r)]),t(" 本项目配套的前后端分离 web 管理项目")]),e("li",null,[e("a",S,[t("AKStreamNVR"),o(r)]),t(" 前后端分离 web 项目,支持 webrtc 播放")])])]),e("li",null,[v,e("ul",null,[e("li",null,[e("a",M,[t("c# sdk"),o(r)]),t(" 本项目 c sdk 完整 c#包装库")]),e("li",null,[e("a",C,[t("metaRTC"),o(r)]),t(" 全国产纯 c webrtc sdk")])])]),e("li",null,[K,e("ul",null,[e("li",null,[e("a",L,[t("NodeJS 实现的 GB28181 平台"),o(r)])]),e("li",null,[e("a",N,[t("基于 ZLMediaKit 主线的管理 WEB 网站 "),o(r)])]),e("li",null,[e("a",E,[t("基于 ZLMediaKit 分支的管理 WEB 网站"),o(r)])]),e("li",null,[e("a",G,[t("一个非常漂亮的可视化后台管理系统"),o(r)])]),e("li",null,[e("a",Z,[t("基于 C SDK 实现的推流客户端"),o(r)])]),e("li",null,[e("a",j,[t("C#版本的 Http API 与 Hook"),o(r)])]),e("li",null,[e("a",x,[t("DotNetCore 的 RESTful 客户端"),o(r)])])])])])])}const D=n(s,[["render",y],["__file","collaborative_projects.html.vue"]]);export{D as default}; diff --git a/assets/collaborative_projects.html-zAkyRydI.js b/assets/collaborative_projects.html-oDX6Yyj3.js similarity index 98% rename from assets/collaborative_projects.html-zAkyRydI.js rename to assets/collaborative_projects.html-oDX6Yyj3.js index 1cd4d5e..6f8aba2 100644 --- a/assets/collaborative_projects.html-zAkyRydI.js +++ b/assets/collaborative_projects.html-oDX6Yyj3.js @@ -1 +1 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as a,c as i,a as e,d as r,b as n}from"./app-RP31lnfq.js";const s={},h=e("p",null,"Visual management website",-1),c={href:"https://github.com/langmansh/AKStreamNVR",target:"_blank",rel:"noopener noreferrer"},p={href:"https://gitee.com/kkkkk5G/MediaServerUI",target:"_blank",rel:"noopener noreferrer"},_={href:"https://github.com/chenxiaolei/ZLMediaKit_NVR_UI",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/MingZhuLiu/ZLMediaServerManagent",target:"_blank",rel:"noopener noreferrer"},m=e("p",null,"Media management platform",-1),d={href:"https://github.com/648540858/wvp-GB28181-pro",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/chatop2020/AKStream",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/any12345com/BXC_SipServer",target:"_blank",rel:"noopener noreferrer"},f={href:"https://github.com/panjjo/gosip",target:"_blank",rel:"noopener noreferrer"},k={href:"https://gitee.com/hfwudao/GB28181_Node_Http",target:"_blank",rel:"noopener noreferrer"},w={href:"https://github.com/tsingeye/FreeEhome",target:"_blank",rel:"noopener noreferrer"},v=e("p",null,"Client",-1),M={href:"https://github.com/malegend/ZLMediaKit.Autogen",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/hctym1995/ZLM_ApiDemo",target:"_blank",rel:"noopener noreferrer"},C={href:"https://github.com/chengxiaosheng/ZLMediaKit.HttpApi",target:"_blank",rel:"noopener noreferrer"},B={href:"https://github.com/MingZhuLiu/ZLMediaKit.DotNetCore.Sdk",target:"_blank",rel:"noopener noreferrer"},L=e("p",null,"Player",-1),G={href:"https://github.com/numberwolf/h265web.js",target:"_blank",rel:"noopener noreferrer"},S={href:"https://github.com/v354412101/wsPlayer",target:"_blank",rel:"noopener noreferrer"},Z={href:"https://github.com/metartc/metaRTC",target:"_blank",rel:"noopener noreferrer"},K={href:"https://github.com/any12345com/BXC_gb28181Player",target:"_blank",rel:"noopener noreferrer"};function N(x,j){const t=l("ExternalLinkIcon");return a(),i("div",null,[e("ul",null,[e("li",null,[h,e("ul",null,[e("li",null,[e("a",c,[r("The latest web project with front-end and back-end separation, supporting webrtc playback"),n(t)])]),e("li",null,[e("a",p,[r("Management web site based on ZLMediaKit master branch"),n(t)])]),e("li",null,[e("a",_,[r("Management web site based on ZLMediaKit branch"),n(t)])]),e("li",null,[e("a",u,[r("A very beautiful visual background management system"),n(t)])])])]),e("li",null,[m,e("ul",null,[e("li",null,[e("a",d,[r("GB28181 complete solution with web management website, supporting webrtc and h265 playback"),n(t)])]),e("li",null,[e("a",b,[r("Powerful media control and management interface platform, supporting GB28181"),n(t)])]),e("li",null,[e("a",g,[r("GB28181 server implemented in C++"),n(t)])]),e("li",null,[e("a",f,[r("GB28181 server implemented in Go"),n(t)])]),e("li",null,[e("a",k,[r("Node-js version of GB28181 platform"),n(t)])]),e("li",null,[e("a",w,[r("Hikvision ehome server implemented in Go"),n(t)])])])]),e("li",null,[v,e("ul",null,[e("li",null,[e("a",M,[r("Complete C# wrapper library for c sdk"),n(t)])]),e("li",null,[e("a",y,[r("Push client implemented based on C SDK"),n(t)])]),e("li",null,[e("a",C,[r("Http API and Hook in C#"),n(t)])]),e("li",null,[e("a",B,[r("RESTful client in DotNetCore"),n(t)])])])]),e("li",null,[L,e("ul",null,[e("li",null,[e("a",G,[r("Player supporting H265 based on wasm"),n(t)])]),e("li",null,[e("a",S,[r("WebSocket-fmp4 player based on MSE"),n(t)])]),e("li",null,[e("a",Z,[r("Domestic webrtc sdk(metaRTC)"),n(t)])]),e("li",null,[e("a",K,[r("GB28181 player implemented in C++"),n(t)])])])])])])}const E=o(s,[["render",N],["__file","collaborative_projects.html.vue"]]);export{E as default}; +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as a,c as i,a as e,d as r,b as n}from"./app-0NopiYEV.js";const s={},h=e("p",null,"Visual management website",-1),c={href:"https://github.com/langmansh/AKStreamNVR",target:"_blank",rel:"noopener noreferrer"},p={href:"https://gitee.com/kkkkk5G/MediaServerUI",target:"_blank",rel:"noopener noreferrer"},_={href:"https://github.com/chenxiaolei/ZLMediaKit_NVR_UI",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/MingZhuLiu/ZLMediaServerManagent",target:"_blank",rel:"noopener noreferrer"},m=e("p",null,"Media management platform",-1),d={href:"https://github.com/648540858/wvp-GB28181-pro",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/chatop2020/AKStream",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/any12345com/BXC_SipServer",target:"_blank",rel:"noopener noreferrer"},f={href:"https://github.com/panjjo/gosip",target:"_blank",rel:"noopener noreferrer"},k={href:"https://gitee.com/hfwudao/GB28181_Node_Http",target:"_blank",rel:"noopener noreferrer"},w={href:"https://github.com/tsingeye/FreeEhome",target:"_blank",rel:"noopener noreferrer"},v=e("p",null,"Client",-1),M={href:"https://github.com/malegend/ZLMediaKit.Autogen",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/hctym1995/ZLM_ApiDemo",target:"_blank",rel:"noopener noreferrer"},C={href:"https://github.com/chengxiaosheng/ZLMediaKit.HttpApi",target:"_blank",rel:"noopener noreferrer"},B={href:"https://github.com/MingZhuLiu/ZLMediaKit.DotNetCore.Sdk",target:"_blank",rel:"noopener noreferrer"},L=e("p",null,"Player",-1),G={href:"https://github.com/numberwolf/h265web.js",target:"_blank",rel:"noopener noreferrer"},S={href:"https://github.com/v354412101/wsPlayer",target:"_blank",rel:"noopener noreferrer"},Z={href:"https://github.com/metartc/metaRTC",target:"_blank",rel:"noopener noreferrer"},K={href:"https://github.com/any12345com/BXC_gb28181Player",target:"_blank",rel:"noopener noreferrer"};function N(x,j){const t=l("ExternalLinkIcon");return a(),i("div",null,[e("ul",null,[e("li",null,[h,e("ul",null,[e("li",null,[e("a",c,[r("The latest web project with front-end and back-end separation, supporting webrtc playback"),n(t)])]),e("li",null,[e("a",p,[r("Management web site based on ZLMediaKit master branch"),n(t)])]),e("li",null,[e("a",_,[r("Management web site based on ZLMediaKit branch"),n(t)])]),e("li",null,[e("a",u,[r("A very beautiful visual background management system"),n(t)])])])]),e("li",null,[m,e("ul",null,[e("li",null,[e("a",d,[r("GB28181 complete solution with web management website, supporting webrtc and h265 playback"),n(t)])]),e("li",null,[e("a",b,[r("Powerful media control and management interface platform, supporting GB28181"),n(t)])]),e("li",null,[e("a",g,[r("GB28181 server implemented in C++"),n(t)])]),e("li",null,[e("a",f,[r("GB28181 server implemented in Go"),n(t)])]),e("li",null,[e("a",k,[r("Node-js version of GB28181 platform"),n(t)])]),e("li",null,[e("a",w,[r("Hikvision ehome server implemented in Go"),n(t)])])])]),e("li",null,[v,e("ul",null,[e("li",null,[e("a",M,[r("Complete C# wrapper library for c sdk"),n(t)])]),e("li",null,[e("a",y,[r("Push client implemented based on C SDK"),n(t)])]),e("li",null,[e("a",C,[r("Http API and Hook in C#"),n(t)])]),e("li",null,[e("a",B,[r("RESTful client in DotNetCore"),n(t)])])])]),e("li",null,[L,e("ul",null,[e("li",null,[e("a",G,[r("Player supporting H265 based on wasm"),n(t)])]),e("li",null,[e("a",S,[r("WebSocket-fmp4 player based on MSE"),n(t)])]),e("li",null,[e("a",Z,[r("Domestic webrtc sdk(metaRTC)"),n(t)])]),e("li",null,[e("a",K,[r("GB28181 player implemented in C++"),n(t)])])])])])])}const E=o(s,[["render",N],["__file","collaborative_projects.html.vue"]]);export{E as default}; diff --git a/assets/compilation_instructions_for_windows_version.html-3EBfQXLm.js b/assets/compilation_instructions_for_windows_version.html-6NKchaAm.js similarity index 98% rename from assets/compilation_instructions_for_windows_version.html-3EBfQXLm.js rename to assets/compilation_instructions_for_windows_version.html-6NKchaAm.js index 62ec2da..3903382 100644 --- a/assets/compilation_instructions_for_windows_version.html-3EBfQXLm.js +++ b/assets/compilation_instructions_for_windows_version.html-6NKchaAm.js @@ -1,4 +1,4 @@ -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as c,o as l,c as d,a as s,d as e,b as n,e as o}from"./app-RP31lnfq.js";const t={},p=s("h1",{id:"基于-scoop-vcpkg-的-windows-版编译说明",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#基于-scoop-vcpkg-的-windows-版编译说明","aria-hidden":"true"},"#"),e(" 基于 scoop + vcpkg 的 Windows 版编译说明")],-1),r={href:"https://github.com/lukesampson/scoop",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/microsoft/vcpkg",target:"_blank",rel:"noopener noreferrer"},v=s("code",null,"ZLMediaKit",-1),b=o(`
  • scoop: Windows 命令行下使用的软件包安装管理工具;
  • vcpkg: 微软发起的 C++ 库管理器, 其中有大量常用开源库;

由于可以在命令行下使用, 可以非常方便的进行自动化集成. 推荐大家试用.

以下步骤仅在 Windows 10 下测试, 未使用其他 Windows 版本进行测试, 不保证其他 Windows 版本的可用性.

以下所有操作如无特殊说明均需在 PowerShell 命令行下进行.

基于 scoop 及 vcpkg 安装编译依赖

下载安装 scoop 并使用 scoop 安装依赖工具

以下是为了安装依赖工具 cmakeninja(可选, 但建议安装), 如已安装, 可跳过.

具体可参考其官网说明, 以下仅列出相关简要步骤.

  1. 设置环境变量 SCOOP, 用于配置 scoop 的下载安装目录(包括其管理的软件包):

    $env:SCOOP = 'C:\\work\\develop\\scoop'
    +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as c,o as l,c as d,a as s,d as e,b as n,e as o}from"./app-0NopiYEV.js";const t={},p=s("h1",{id:"基于-scoop-vcpkg-的-windows-版编译说明",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#基于-scoop-vcpkg-的-windows-版编译说明","aria-hidden":"true"},"#"),e(" 基于 scoop + vcpkg 的 Windows 版编译说明")],-1),r={href:"https://github.com/lukesampson/scoop",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/microsoft/vcpkg",target:"_blank",rel:"noopener noreferrer"},v=s("code",null,"ZLMediaKit",-1),b=o(`
    • scoop: Windows 命令行下使用的软件包安装管理工具;
    • vcpkg: 微软发起的 C++ 库管理器, 其中有大量常用开源库;

    由于可以在命令行下使用, 可以非常方便的进行自动化集成. 推荐大家试用.

    以下步骤仅在 Windows 10 下测试, 未使用其他 Windows 版本进行测试, 不保证其他 Windows 版本的可用性.

    以下所有操作如无特殊说明均需在 PowerShell 命令行下进行.

    基于 scoop 及 vcpkg 安装编译依赖

    下载安装 scoop 并使用 scoop 安装依赖工具

    以下是为了安装依赖工具 cmakeninja(可选, 但建议安装), 如已安装, 可跳过.

    具体可参考其官网说明, 以下仅列出相关简要步骤.

    1. 设置环境变量 SCOOP, 用于配置 scoop 的下载安装目录(包括其管理的软件包):

      $env:SCOOP = 'C:\\work\\develop\\scoop'
       
    2. 为当前用户设置允许执行 powershell 脚本:

      Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
       
    3. 安装 scoop:

      iwr -useb get.scoop.sh | iex
       
    4. scoop 添加 extras 软件仓库:

      scoop bucket add extras
      diff --git a/assets/compilation_instructions_for_windows_version.html-xnA-vKUQ.js b/assets/compilation_instructions_for_windows_version.html-Fqb9RcQO.js
      similarity index 98%
      rename from assets/compilation_instructions_for_windows_version.html-xnA-vKUQ.js
      rename to assets/compilation_instructions_for_windows_version.html-Fqb9RcQO.js
      index 54c73a5..aecad69 100644
      --- a/assets/compilation_instructions_for_windows_version.html-xnA-vKUQ.js
      +++ b/assets/compilation_instructions_for_windows_version.html-Fqb9RcQO.js
      @@ -1,4 +1,4 @@
      -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as d,c as t,a as n,d as e,b as a,e as o}from"./app-RP31lnfq.js";const c={},r=n("h1",{id:"building-instructions-for-windows",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#building-instructions-for-windows","aria-hidden":"true"},"#"),e(" Building Instructions for Windows")],-1),p=n("code",null,"ZLMediaKit",-1),u={href:"https://github.com/lukesampson/scoop",target:"_blank",rel:"noopener noreferrer"},v={href:"https://github.com/microsoft/vcpkg",target:"_blank",rel:"noopener noreferrer"},m=o(`
      • scoop: A package installation manager for Windows command-line.
      • vcpkg: A C++ library manager initiated by Microsoft, which includes many commonly used open-source libraries.

      Since these tools can be used from the command line, they enable convenient automation and integration. We recommend giving them a try.

      Please note that the following steps have only been tested on Windows 10 and may not work on other Windows versions.

      Unless specified otherwise, all operations should be performed in PowerShell command line.

      Installing Build Dependencies using scoop and vcpkg

      Download and Install scoop, and use scoop to install dependency tools

      The following steps are for installing the dependency tools cmake and ninja (optional but recommended) using scoop. If you already have them installed, you can skip these steps.

      For detailed instructions, please refer to the official scoop documentation. Below are the summarized steps:

      1. Set the environment variable SCOOP to configure the download and installation directory for scoop (including the managed software packages). Run the following command:

        $env:SCOOP = 'C:\\work\\develop\\scoop'
        +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as d,c as t,a as n,d as e,b as a,e as o}from"./app-0NopiYEV.js";const c={},r=n("h1",{id:"building-instructions-for-windows",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#building-instructions-for-windows","aria-hidden":"true"},"#"),e(" Building Instructions for Windows")],-1),p=n("code",null,"ZLMediaKit",-1),u={href:"https://github.com/lukesampson/scoop",target:"_blank",rel:"noopener noreferrer"},v={href:"https://github.com/microsoft/vcpkg",target:"_blank",rel:"noopener noreferrer"},m=o(`
        • scoop: A package installation manager for Windows command-line.
        • vcpkg: A C++ library manager initiated by Microsoft, which includes many commonly used open-source libraries.

        Since these tools can be used from the command line, they enable convenient automation and integration. We recommend giving them a try.

        Please note that the following steps have only been tested on Windows 10 and may not work on other Windows versions.

        Unless specified otherwise, all operations should be performed in PowerShell command line.

        Installing Build Dependencies using scoop and vcpkg

        Download and Install scoop, and use scoop to install dependency tools

        The following steps are for installing the dependency tools cmake and ninja (optional but recommended) using scoop. If you already have them installed, you can skip these steps.

        For detailed instructions, please refer to the official scoop documentation. Below are the summarized steps:

        1. Set the environment variable SCOOP to configure the download and installation directory for scoop (including the managed software packages). Run the following command:

          $env:SCOOP = 'C:\\work\\develop\\scoop'
           
        2. Allow the execution of PowerShell scripts for the current user by running the following command:

          Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
           
        3. Install scoop by running the following command:

          iwr -useb get.scoop.sh | iex
           
        4. Add the extras software repository to scoop by running the following command:

          scoop bucket add extras
          diff --git a/assets/config_file.html-e7VlJmFs.js b/assets/config_file.html-9Xa4KaRE.js
          similarity index 99%
          rename from assets/config_file.html-e7VlJmFs.js
          rename to assets/config_file.html-9Xa4KaRE.js
          index bc0bcfe..c975edd 100644
          --- a/assets/config_file.html-e7VlJmFs.js
          +++ b/assets/config_file.html-9Xa4KaRE.js
          @@ -1,4 +1,4 @@
          -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as t,c as i,a as l,d as n,b as o,w as c,e as p}from"./app-RP31lnfq.js";const r={},m=p(`
          #!!!! This configuration file is an example configuration file intended to inform the reader about the specific meanings and functions of each configuration item.
          +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as t,c as i,a as l,d as n,b as o,w as c,e as p}from"./app-0NopiYEV.js";const r={},m=p(`
          #!!!! This configuration file is an example configuration file intended to inform the reader about the specific meanings and functions of each configuration item.
           #!!!! When executing cmake, this configuration file will be copied to the release/\${operating_system_type}/\${build_type} (e.g., release/linux/Debug) folder.
           #!!!! This folder (release/\${operating_system_type}/\${build_type}) is also the target path for generating executable programs. When executing the MediaServer process, it will default to load the config.ini file in the same directory as the configuration file.
           #!!!! If you modify this example configuration file (conf/config.ini), it will not be loaded by the MediaServer process because the MediaServer process defaults to loading release/\${operating_system_type}/\${build_type}/config.ini.
          diff --git a/assets/config_file.html-NeQ-HnE0.js b/assets/config_file.html-d15slbyo.js
          similarity index 81%
          rename from assets/config_file.html-NeQ-HnE0.js
          rename to assets/config_file.html-d15slbyo.js
          index 4f871a0..1a6f36d 100644
          --- a/assets/config_file.html-NeQ-HnE0.js
          +++ b/assets/config_file.html-d15slbyo.js
          @@ -1 +1 @@
          -import{_ as c}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as i,c as _,a as o,d as e,b as n,w as l}from"./app-RP31lnfq.js";const s={},f={href:"https://github.com/zlmediakit/ZLMediaKit/blob/master/conf/config.ini",target:"_blank",rel:"noopener noreferrer"};function m(d,p){const r=t("ExternalLinkIcon"),a=t("RouterLink");return i(),_("div",null,[o("p",null,[o("a",f,[e("配置文件范例以及注释"),n(r)])]),o("p",null,[e("也可以参考"),n(a,{to:"/zh/guide/media_server/web_hook_api.html"},{default:l(()=>[e("MediaServer 支持的 HTTP-HOOK-API")]),_:1}),e("了解 hook 相关的配置")])])}const k=c(s,[["render",m],["__file","config_file.html.vue"]]);export{k as default};
          +import{_ as c}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as i,c as _,a as o,d as e,b as n,w as l}from"./app-0NopiYEV.js";const s={},f={href:"https://github.com/zlmediakit/ZLMediaKit/blob/master/conf/config.ini",target:"_blank",rel:"noopener noreferrer"};function m(d,p){const r=t("ExternalLinkIcon"),a=t("RouterLink");return i(),_("div",null,[o("p",null,[o("a",f,[e("配置文件范例以及注释"),n(r)])]),o("p",null,[e("也可以参考"),n(a,{to:"/zh/guide/media_server/web_hook_api.html"},{default:l(()=>[e("MediaServer 支持的 HTTP-HOOK-API")]),_:1}),e("了解 hook 相关的配置")])])}const k=c(s,[["render",m],["__file","config_file.html.vue"]]);export{k as default};
          diff --git a/assets/contact.html-_Z6vlVkO.js b/assets/contact.html-KwkduCZ8.js
          similarity index 94%
          rename from assets/contact.html-_Z6vlVkO.js
          rename to assets/contact.html-KwkduCZ8.js
          index d078bb8..dac690f 100644
          --- a/assets/contact.html-_Z6vlVkO.js
          +++ b/assets/contact.html-KwkduCZ8.js
          @@ -1 +1 @@
          -import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as e,c as i,e as a}from"./app-RP31lnfq.js";const c={},o=a('

          联系信息

          • 邮箱:1213642868@qq.com(本项目相关或流媒体相关问题请走 issue 流程,否则恕不邮件答复)

          • 请关注微信公众号获取最新消息推送:

            图片
            图片
          • 也可以自愿有偿加入知识星球咨询和获取资料:

            图片
            图片
          ',2),n=[o];function r(s,l){return e(),i("div",null,n)}const p=t(c,[["render",r],["__file","contact.html.vue"]]);export{p as default}; +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as e,c as i,e as a}from"./app-0NopiYEV.js";const c={},o=a('

          联系信息

          • 邮箱:1213642868@qq.com(本项目相关或流媒体相关问题请走 issue 流程,否则恕不邮件答复)

          • 请关注微信公众号获取最新消息推送:

            图片
            图片
          • 也可以自愿有偿加入知识星球咨询和获取资料:

            图片
            图片
          ',2),n=[o];function r(s,l){return e(),i("div",null,n)}const p=t(c,[["render",r],["__file","contact.html.vue"]]);export{p as default}; diff --git a/assets/contact.html-JZn2Qe3S.js b/assets/contact.html-t3j5rpRG.js similarity index 95% rename from assets/contact.html-JZn2Qe3S.js rename to assets/contact.html-t3j5rpRG.js index ceea683..567c90d 100644 --- a/assets/contact.html-JZn2Qe3S.js +++ b/assets/contact.html-t3j5rpRG.js @@ -1 +1 @@ -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as l,c as r,a as e,d as t,b as i}from"./app-RP31lnfq.js";const s={},c=e("h2",{id:"contact-information",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#contact-information","aria-hidden":"true"},"#"),t(" Contact Information")],-1),u=e("li",null,[e("p",null,[t("Email: "),e("a",{href:"mailto:1213642868@qq.com"},"1213642868@qq.com"),t(" (For project-related or streaming media-related questions, please follow the issue process. Otherwise, we will not reply to emails.)")])],-1),d={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/2364",target:"_blank",rel:"noopener noreferrer"},h=e("li",null,[e("p",null,"Follow WeChat Official Account:"),e("figure",null,[e("img",{src:"https://user-images.githubusercontent.com/11495632/232451702-4c50bc72-84d8-4c94-af2b-57290088ba7a.png",alt:"图片",width:"200",tabindex:"0",loading:"lazy"}),e("figcaption",null,"图片")])],-1);function m(p,f){const o=a("ExternalLinkIcon");return l(),r("div",null,[c,e("ul",null,[u,e("li",null,[e("p",null,[t("QQ groups: Both QQ groups with a total of 4000 members are full. We will not create new QQ groups in the future. Users can join the "),e("a",d,[t("Knowledge Planet"),i(o)]),t(" to ask questions and support this project.")])]),h])])}const b=n(s,[["render",m],["__file","contact.html.vue"]]);export{b as default}; +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as l,c as r,a as e,d as t,b as i}from"./app-0NopiYEV.js";const s={},c=e("h2",{id:"contact-information",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#contact-information","aria-hidden":"true"},"#"),t(" Contact Information")],-1),u=e("li",null,[e("p",null,[t("Email: "),e("a",{href:"mailto:1213642868@qq.com"},"1213642868@qq.com"),t(" (For project-related or streaming media-related questions, please follow the issue process. Otherwise, we will not reply to emails.)")])],-1),d={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/2364",target:"_blank",rel:"noopener noreferrer"},h=e("li",null,[e("p",null,"Follow WeChat Official Account:"),e("figure",null,[e("img",{src:"https://user-images.githubusercontent.com/11495632/232451702-4c50bc72-84d8-4c94-af2b-57290088ba7a.png",alt:"图片",width:"200",tabindex:"0",loading:"lazy"}),e("figcaption",null,"图片")])],-1);function m(p,f){const o=a("ExternalLinkIcon");return l(),r("div",null,[c,e("ul",null,[u,e("li",null,[e("p",null,[t("QQ groups: Both QQ groups with a total of 4000 members are full. We will not create new QQ groups in the future. Users can join the "),e("a",d,[t("Knowledge Planet"),i(o)]),t(" to ask questions and support this project.")])]),h])])}const b=n(s,[["render",m],["__file","contact.html.vue"]]);export{b as default}; diff --git a/assets/createText-aebacdfe-CTBuskZ8.js b/assets/createText-aebacdfe-VuGI-o_f.js similarity index 99% rename from assets/createText-aebacdfe-CTBuskZ8.js rename to assets/createText-aebacdfe-VuGI-o_f.js index 1dc9dfe..831f088 100644 --- a/assets/createText-aebacdfe-CTBuskZ8.js +++ b/assets/createText-aebacdfe-VuGI-o_f.js @@ -1,4 +1,4 @@ -import{l as At,an as zt,ap as It}from"./mermaid.core-ygY5oRaR.js";const Tt={};function Bt(n,r){const t=r||Tt,e=typeof t.includeImageAlt=="boolean"?t.includeImageAlt:!0,u=typeof t.includeHtml=="boolean"?t.includeHtml:!0;return et(n,e,u)}function et(n,r,t){if(Lt(n)){if("value"in n)return n.type==="html"&&!t?"":n.value;if(r&&"alt"in n&&n.alt)return n.alt;if("children"in n)return Vn(n.children,r,t)}return Array.isArray(n)?Vn(n,r,t):""}function Vn(n,r,t){const e=[];let u=-1;for(;++uu?0:u+r:r=r>u?u:r,t=t>0?t:0,e.length<1e4)l=Array.from(e),l.unshift(r,t),n.splice(...l);else for(t&&n.splice(r,t);i0?(tn(n,n.length,0,r),n):r}const Wn={}.hasOwnProperty;function Ot(n){const r={};let t=-1;for(;++tl))return;const T=r.events.length;let H=T,N,V;for(;H--;)if(r.events[H][0]==="exit"&&r.events[H][1].type==="chunkFlow"){if(N){V=r.events[H][1].end;break}N=!0}for(b(e),k=T;kF;){const _=t[D];r.containerState=_[1],_[0].exit.call(r,n)}t.length=F}function j(){u.write([null]),i=void 0,u=void 0,r.containerState._closeFlow=void 0}}function Ut(n,r,t){return O(n,n.attempt(this.parser.constructs.document,r,t),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Un(n){if(n===null||Z(n)||Ht(n))return 1;if(qt(n))return 2}function Ln(n,r,t){const e=[];let u=-1;for(;++u1&&n[t][1].end.offset-n[t][1].start.offset>1?2:1;const f=Object.assign({},n[e][1].end),x=Object.assign({},n[t][1].start);$n(f,-m),$n(x,m),l={type:m>1?"strongSequence":"emphasisSequence",start:f,end:Object.assign({},n[e][1].end)},a={type:m>1?"strongSequence":"emphasisSequence",start:Object.assign({},n[t][1].start),end:x},i={type:m>1?"strongText":"emphasisText",start:Object.assign({},n[e][1].end),end:Object.assign({},n[t][1].start)},u={type:m>1?"strong":"emphasis",start:Object.assign({},l.start),end:Object.assign({},a.end)},n[e][1].end=Object.assign({},l.start),n[t][1].start=Object.assign({},a.end),c=[],n[e][1].end.offset-n[e][1].start.offset&&(c=Y(c,[["enter",n[e][1],r],["exit",n[e][1],r]])),c=Y(c,[["enter",u,r],["enter",l,r],["exit",l,r],["enter",i,r]]),c=Y(c,Ln(r.parser.constructs.insideSpan.null,n.slice(e+1,t),r)),c=Y(c,[["exit",i,r],["enter",a,r],["exit",a,r],["exit",u,r]]),n[t][1].end.offset-n[t][1].start.offset?(p=2,c=Y(c,[["enter",n[t][1],r],["exit",n[t][1],r]])):p=0,tn(n,e-1,t-e+3,c),t=e+c.length-p-2;break}}for(t=-1;++t0&&z(k)?O(n,j,"linePrefix",i+1)(k):j(k)}function j(k){return k===null||C(k)?n.check(Yn,I,D)(k):(n.enter("codeFlowValue"),F(k))}function F(k){return k===null||C(k)?(n.exit("codeFlowValue"),j(k)):(n.consume(k),F)}function D(k){return n.exit("codeFenced"),r(k)}function _(k,T,H){let N=0;return V;function V(w){return k.enter("lineEnding"),k.consume(w),k.exit("lineEnding"),y}function y(w){return k.enter("codeFencedFence"),z(w)?O(k,S,"linePrefix",e.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):S(w)}function S(w){return w===a?(k.enter("codeFencedFenceSequence"),P(w)):H(w)}function P(w){return w===a?(N++,k.consume(w),P):N>=l?(k.exit("codeFencedFenceSequence"),z(w)?O(k,R,"whitespace")(w):R(w)):H(w)}function R(w){return w===null||C(w)?(k.exit("codeFencedFence"),T(w)):H(w)}}}function re(n,r,t){const e=this;return u;function u(l){return l===null?t(l):(n.enter("lineEnding"),n.consume(l),n.exit("lineEnding"),i)}function i(l){return e.parser.lazy[e.now().line]?t(l):r(l)}}const Cn={name:"codeIndented",tokenize:ue},ie={tokenize:le,partial:!0};function ue(n,r,t){const e=this;return u;function u(c){return n.enter("codeIndented"),O(n,i,"linePrefix",5)(c)}function i(c){const p=e.events[e.events.length-1];return p&&p[1].type==="linePrefix"&&p[2].sliceSerialize(p[1],!0).length>=4?l(c):t(c)}function l(c){return c===null?m(c):C(c)?n.attempt(ie,l,m)(c):(n.enter("codeFlowValue"),a(c))}function a(c){return c===null||C(c)?(n.exit("codeFlowValue"),l(c)):(n.consume(c),a)}function m(c){return n.exit("codeIndented"),r(c)}}function le(n,r,t){const e=this;return u;function u(l){return e.parser.lazy[e.now().line]?t(l):C(l)?(n.enter("lineEnding"),n.consume(l),n.exit("lineEnding"),u):O(n,i,"linePrefix",5)(l)}function i(l){const a=e.events[e.events.length-1];return a&&a[1].type==="linePrefix"&&a[2].sliceSerialize(a[1],!0).length>=4?r(l):C(l)?u(l):t(l)}}const ae={name:"codeText",tokenize:ce,resolve:oe,previous:se};function oe(n){let r=n.length-4,t=3,e,u;if((n[t][1].type==="lineEnding"||n[t][1].type==="space")&&(n[r][1].type==="lineEnding"||n[r][1].type==="space")){for(e=t;++e=4?r(l):n.interrupt(e.parser.constructs.flow,t,r)(l)}}function at(n,r,t,e,u,i,l,a,m){const c=m||Number.POSITIVE_INFINITY;let p=0;return f;function f(b){return b===60?(n.enter(e),n.enter(u),n.enter(i),n.consume(b),n.exit(i),x):b===null||b===32||b===41||An(b)?t(b):(n.enter(e),n.enter(l),n.enter(a),n.enter("chunkString",{contentType:"string"}),I(b))}function x(b){return b===62?(n.enter(i),n.consume(b),n.exit(i),n.exit(u),n.exit(e),r):(n.enter(a),n.enter("chunkString",{contentType:"string"}),h(b))}function h(b){return b===62?(n.exit("chunkString"),n.exit(a),x(b)):b===null||b===60||C(b)?t(b):(n.consume(b),b===92?A:h)}function A(b){return b===60||b===62||b===92?(n.consume(b),h):h(b)}function I(b){return!p&&(b===null||b===41||Z(b))?(n.exit("chunkString"),n.exit(a),n.exit(l),n.exit(e),r(b)):p999||h===null||h===91||h===93&&!m||h===94&&!a&&"_hiddenFootnoteSupport"in l.parser.constructs?t(h):h===93?(n.exit(i),n.enter(u),n.consume(h),n.exit(u),n.exit(e),r):C(h)?(n.enter("lineEnding"),n.consume(h),n.exit("lineEnding"),p):(n.enter("chunkString",{contentType:"string"}),f(h))}function f(h){return h===null||h===91||h===93||C(h)||a++>999?(n.exit("chunkString"),p(h)):(n.consume(h),m||(m=!z(h)),h===92?x:f)}function x(h){return h===91||h===92||h===93?(n.consume(h),a++,f):f(h)}}function st(n,r,t,e,u,i){let l;return a;function a(x){return x===34||x===39||x===40?(n.enter(e),n.enter(u),n.consume(x),n.exit(u),l=x===40?41:x,m):t(x)}function m(x){return x===l?(n.enter(u),n.consume(x),n.exit(u),n.exit(e),r):(n.enter(i),c(x))}function c(x){return x===l?(n.exit(i),m(l)):x===null?t(x):C(x)?(n.enter("lineEnding"),n.consume(x),n.exit("lineEnding"),O(n,c,"linePrefix")):(n.enter("chunkString",{contentType:"string"}),p(x))}function p(x){return x===l||x===null||C(x)?(n.exit("chunkString"),c(x)):(n.consume(x),x===92?f:p)}function f(x){return x===l||x===92?(n.consume(x),p):p(x)}}function dn(n,r){let t;return e;function e(u){return C(u)?(n.enter("lineEnding"),n.consume(u),n.exit("lineEnding"),t=!0,e):z(u)?O(n,e,t?"linePrefix":"lineSuffix")(u):r(u)}}function xn(n){return n.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const ke={name:"definition",tokenize:be},de={tokenize:ye,partial:!0};function be(n,r,t){const e=this;let u;return i;function i(h){return n.enter("definition"),l(h)}function l(h){return ot.call(e,n,a,t,"definitionLabel","definitionLabelMarker","definitionLabelString")(h)}function a(h){return u=xn(e.sliceSerialize(e.events[e.events.length-1][1]).slice(1,-1)),h===58?(n.enter("definitionMarker"),n.consume(h),n.exit("definitionMarker"),m):t(h)}function m(h){return Z(h)?dn(n,c)(h):c(h)}function c(h){return at(n,p,t,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(h)}function p(h){return n.attempt(de,f,f)(h)}function f(h){return z(h)?O(n,x,"whitespace")(h):x(h)}function x(h){return h===null||C(h)?(n.exit("definition"),e.parser.defined.push(u),r(h)):t(h)}}function ye(n,r,t){return e;function e(a){return Z(a)?dn(n,u)(a):t(a)}function u(a){return st(n,i,t,"definitionTitle","definitionTitleMarker","definitionTitleString")(a)}function i(a){return z(a)?O(n,l,"whitespace")(a):l(a)}function l(a){return a===null||C(a)?r(a):t(a)}}const Se={name:"hardBreakEscape",tokenize:Fe};function Fe(n,r,t){return e;function e(i){return n.enter("hardBreakEscape"),n.consume(i),u}function u(i){return C(i)?(n.exit("hardBreakEscape"),r(i)):t(i)}}const Ee={name:"headingAtx",tokenize:we,resolve:Ce};function Ce(n,r){let t=n.length-2,e=3,u,i;return n[e][1].type==="whitespace"&&(e+=2),t-2>e&&n[t][1].type==="whitespace"&&(t-=2),n[t][1].type==="atxHeadingSequence"&&(e===t-1||t-4>e&&n[t-2][1].type==="whitespace")&&(t-=e+1===t?2:4),t>e&&(u={type:"atxHeadingText",start:n[e][1].start,end:n[t][1].end},i={type:"chunkText",start:n[e][1].start,end:n[t][1].end,contentType:"text"},tn(n,e,t-e+1,[["enter",u,r],["enter",i,r],["exit",i,r],["exit",u,r]])),n}function we(n,r,t){let e=0;return u;function u(p){return n.enter("atxHeading"),i(p)}function i(p){return n.enter("atxHeadingSequence"),l(p)}function l(p){return p===35&&e++<6?(n.consume(p),l):p===null||Z(p)?(n.exit("atxHeadingSequence"),a(p)):t(p)}function a(p){return p===35?(n.enter("atxHeadingSequence"),m(p)):p===null||C(p)?(n.exit("atxHeading"),r(p)):z(p)?O(n,a,"whitespace")(p):(n.enter("atxHeadingText"),c(p))}function m(p){return p===35?(n.consume(p),m):(n.exit("atxHeadingSequence"),a(p))}function c(p){return p===null||p===35||Z(p)?(n.exit("atxHeadingText"),a(p)):(n.consume(p),c)}}const Ae=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Jn=["pre","script","style","textarea"],ze={name:"htmlFlow",tokenize:Le,resolveTo:Be,concrete:!0},Ie={tokenize:De,partial:!0},Te={tokenize:Oe,partial:!0};function Be(n){let r=n.length;for(;r--&&!(n[r][0]==="enter"&&n[r][1].type==="htmlFlow"););return r>1&&n[r-2][1].type==="linePrefix"&&(n[r][1].start=n[r-2][1].start,n[r+1][1].start=n[r-2][1].start,n.splice(r-2,2)),n}function Le(n,r,t){const e=this;let u,i,l,a,m;return c;function c(s){return p(s)}function p(s){return n.enter("htmlFlow"),n.enter("htmlFlowData"),n.consume(s),f}function f(s){return s===33?(n.consume(s),x):s===47?(n.consume(s),i=!0,I):s===63?(n.consume(s),u=3,e.interrupt?r:o):nn(s)?(n.consume(s),l=String.fromCharCode(s),M):t(s)}function x(s){return s===45?(n.consume(s),u=2,h):s===91?(n.consume(s),u=5,a=0,A):nn(s)?(n.consume(s),u=4,e.interrupt?r:o):t(s)}function h(s){return s===45?(n.consume(s),e.interrupt?r:o):t(s)}function A(s){const K="CDATA[";return s===K.charCodeAt(a++)?(n.consume(s),a===K.length?e.interrupt?r:S:A):t(s)}function I(s){return nn(s)?(n.consume(s),l=String.fromCharCode(s),M):t(s)}function M(s){if(s===null||s===47||s===62||Z(s)){const K=s===47,hn=l.toLowerCase();return!K&&!i&&Jn.includes(hn)?(u=1,e.interrupt?r(s):S(s)):Ae.includes(l.toLowerCase())?(u=6,K?(n.consume(s),b):e.interrupt?r(s):S(s)):(u=7,e.interrupt&&!e.parser.lazy[e.now().line]?t(s):i?j(s):F(s))}return s===45||v(s)?(n.consume(s),l+=String.fromCharCode(s),M):t(s)}function b(s){return s===62?(n.consume(s),e.interrupt?r:S):t(s)}function j(s){return z(s)?(n.consume(s),j):V(s)}function F(s){return s===47?(n.consume(s),V):s===58||s===95||nn(s)?(n.consume(s),D):z(s)?(n.consume(s),F):V(s)}function D(s){return s===45||s===46||s===58||s===95||v(s)?(n.consume(s),D):_(s)}function _(s){return s===61?(n.consume(s),k):z(s)?(n.consume(s),_):F(s)}function k(s){return s===null||s===60||s===61||s===62||s===96?t(s):s===34||s===39?(n.consume(s),m=s,T):z(s)?(n.consume(s),k):H(s)}function T(s){return s===m?(n.consume(s),m=null,N):s===null||C(s)?t(s):(n.consume(s),T)}function H(s){return s===null||s===34||s===39||s===47||s===60||s===61||s===62||s===96||Z(s)?_(s):(n.consume(s),H)}function N(s){return s===47||s===62||z(s)?F(s):t(s)}function V(s){return s===62?(n.consume(s),y):t(s)}function y(s){return s===null||C(s)?S(s):z(s)?(n.consume(s),y):t(s)}function S(s){return s===45&&u===2?(n.consume(s),U):s===60&&u===1?(n.consume(s),W):s===62&&u===4?(n.consume(s),J):s===63&&u===3?(n.consume(s),o):s===93&&u===5?(n.consume(s),en):C(s)&&(u===6||u===7)?(n.exit("htmlFlowData"),n.check(Ie,rn,P)(s)):s===null||C(s)?(n.exit("htmlFlowData"),P(s)):(n.consume(s),S)}function P(s){return n.check(Te,R,rn)(s)}function R(s){return n.enter("lineEnding"),n.consume(s),n.exit("lineEnding"),w}function w(s){return s===null||C(s)?P(s):(n.enter("htmlFlowData"),S(s))}function U(s){return s===45?(n.consume(s),o):S(s)}function W(s){return s===47?(n.consume(s),l="",G):S(s)}function G(s){if(s===62){const K=l.toLowerCase();return Jn.includes(K)?(n.consume(s),J):S(s)}return nn(s)&&l.length<8?(n.consume(s),l+=String.fromCharCode(s),G):S(s)}function en(s){return s===93?(n.consume(s),o):S(s)}function o(s){return s===62?(n.consume(s),J):s===45&&u===2?(n.consume(s),o):S(s)}function J(s){return s===null||C(s)?(n.exit("htmlFlowData"),rn(s)):(n.consume(s),J)}function rn(s){return n.exit("htmlFlow"),r(s)}}function Oe(n,r,t){const e=this;return u;function u(l){return C(l)?(n.enter("lineEnding"),n.consume(l),n.exit("lineEnding"),i):t(l)}function i(l){return e.parser.lazy[e.now().line]?t(l):r(l)}}function De(n,r,t){return e;function e(u){return n.enter("lineEnding"),n.consume(u),n.exit("lineEnding"),n.attempt(Sn,r,t)}}const Pe={name:"htmlText",tokenize:_e};function _e(n,r,t){const e=this;let u,i,l;return a;function a(o){return n.enter("htmlText"),n.enter("htmlTextData"),n.consume(o),m}function m(o){return o===33?(n.consume(o),c):o===47?(n.consume(o),_):o===63?(n.consume(o),F):nn(o)?(n.consume(o),H):t(o)}function c(o){return o===45?(n.consume(o),p):o===91?(n.consume(o),i=0,A):nn(o)?(n.consume(o),j):t(o)}function p(o){return o===45?(n.consume(o),h):t(o)}function f(o){return o===null?t(o):o===45?(n.consume(o),x):C(o)?(l=f,W(o)):(n.consume(o),f)}function x(o){return o===45?(n.consume(o),h):f(o)}function h(o){return o===62?U(o):o===45?x(o):f(o)}function A(o){const J="CDATA[";return o===J.charCodeAt(i++)?(n.consume(o),i===J.length?I:A):t(o)}function I(o){return o===null?t(o):o===93?(n.consume(o),M):C(o)?(l=I,W(o)):(n.consume(o),I)}function M(o){return o===93?(n.consume(o),b):I(o)}function b(o){return o===62?U(o):o===93?(n.consume(o),b):I(o)}function j(o){return o===null||o===62?U(o):C(o)?(l=j,W(o)):(n.consume(o),j)}function F(o){return o===null?t(o):o===63?(n.consume(o),D):C(o)?(l=F,W(o)):(n.consume(o),F)}function D(o){return o===62?U(o):F(o)}function _(o){return nn(o)?(n.consume(o),k):t(o)}function k(o){return o===45||v(o)?(n.consume(o),k):T(o)}function T(o){return C(o)?(l=T,W(o)):z(o)?(n.consume(o),T):U(o)}function H(o){return o===45||v(o)?(n.consume(o),H):o===47||o===62||Z(o)?N(o):t(o)}function N(o){return o===47?(n.consume(o),U):o===58||o===95||nn(o)?(n.consume(o),V):C(o)?(l=N,W(o)):z(o)?(n.consume(o),N):U(o)}function V(o){return o===45||o===46||o===58||o===95||v(o)?(n.consume(o),V):y(o)}function y(o){return o===61?(n.consume(o),S):C(o)?(l=y,W(o)):z(o)?(n.consume(o),y):N(o)}function S(o){return o===null||o===60||o===61||o===62||o===96?t(o):o===34||o===39?(n.consume(o),u=o,P):C(o)?(l=S,W(o)):z(o)?(n.consume(o),S):(n.consume(o),R)}function P(o){return o===u?(n.consume(o),u=void 0,w):o===null?t(o):C(o)?(l=P,W(o)):(n.consume(o),P)}function R(o){return o===null||o===34||o===39||o===60||o===61||o===96?t(o):o===47||o===62||Z(o)?N(o):(n.consume(o),R)}function w(o){return o===47||o===62||Z(o)?N(o):t(o)}function U(o){return o===62?(n.consume(o),n.exit("htmlTextData"),n.exit("htmlText"),r):t(o)}function W(o){return n.exit("htmlTextData"),n.enter("lineEnding"),n.consume(o),n.exit("lineEnding"),G}function G(o){return z(o)?O(n,en,"linePrefix",e.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o):en(o)}function en(o){return n.enter("htmlTextData"),l(o)}}const Dn={name:"labelEnd",tokenize:Ne,resolveTo:He,resolveAll:qe},Me={tokenize:Ve},je={tokenize:We},Re={tokenize:Qe};function qe(n){let r=-1;for(;++r=3&&(c===null||C(c))?(n.exit("thematicBreak"),r(c)):t(c)}function m(c){return c===u?(n.consume(c),e++,m):(n.exit("thematicBreakSequence"),z(c)?O(n,a,"whitespace")(c):a(c))}}const $={name:"list",tokenize:ve,continuation:{tokenize:nr},exit:er},Ke={tokenize:rr,partial:!0},Xe={tokenize:tr,partial:!0};function ve(n,r,t){const e=this,u=e.events[e.events.length-1];let i=u&&u[1].type==="linePrefix"?u[2].sliceSerialize(u[1],!0).length:0,l=0;return a;function a(h){const A=e.containerState.type||(h===42||h===43||h===45?"listUnordered":"listOrdered");if(A==="listUnordered"?!e.containerState.marker||h===e.containerState.marker:zn(h)){if(e.containerState.type||(e.containerState.type=A,n.enter(A,{_container:!0})),A==="listUnordered")return n.enter("listItemPrefix"),h===42||h===45?n.check(bn,t,c)(h):c(h);if(!e.interrupt||h===49)return n.enter("listItemPrefix"),n.enter("listItemValue"),m(h)}return t(h)}function m(h){return zn(h)&&++l<10?(n.consume(h),m):(!e.interrupt||l<2)&&(e.containerState.marker?h===e.containerState.marker:h===41||h===46)?(n.exit("listItemValue"),c(h)):t(h)}function c(h){return n.enter("listItemMarker"),n.consume(h),n.exit("listItemMarker"),e.containerState.marker=e.containerState.marker||h,n.check(Sn,e.interrupt?t:p,n.attempt(Ke,x,f))}function p(h){return e.containerState.initialBlankLine=!0,i++,x(h)}function f(h){return z(h)?(n.enter("listItemPrefixWhitespace"),n.consume(h),n.exit("listItemPrefixWhitespace"),x):t(h)}function x(h){return e.containerState.size=i+e.sliceSerialize(n.exit("listItemPrefix"),!0).length,r(h)}}function nr(n,r,t){const e=this;return e.containerState._closeFlow=void 0,n.check(Sn,u,i);function u(a){return e.containerState.furtherBlankLines=e.containerState.furtherBlankLines||e.containerState.initialBlankLine,O(n,r,"listItemIndent",e.containerState.size+1)(a)}function i(a){return e.containerState.furtherBlankLines||!z(a)?(e.containerState.furtherBlankLines=void 0,e.containerState.initialBlankLine=void 0,l(a)):(e.containerState.furtherBlankLines=void 0,e.containerState.initialBlankLine=void 0,n.attempt(Xe,r,l)(a))}function l(a){return e.containerState._closeFlow=!0,e.interrupt=void 0,O(n,n.attempt($,r,t),"linePrefix",e.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(a)}}function tr(n,r,t){const e=this;return O(n,u,"listItemIndent",e.containerState.size+1);function u(i){const l=e.events[e.events.length-1];return l&&l[1].type==="listItemIndent"&&l[2].sliceSerialize(l[1],!0).length===e.containerState.size?r(i):t(i)}}function er(n){n.exit(this.containerState.type)}function rr(n,r,t){const e=this;return O(n,u,"listItemPrefixWhitespace",e.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function u(i){const l=e.events[e.events.length-1];return!z(i)&&l&&l[1].type==="listItemPrefixWhitespace"?r(i):t(i)}}const Kn={name:"setextUnderline",tokenize:ur,resolveTo:ir};function ir(n,r){let t=n.length,e,u,i;for(;t--;)if(n[t][0]==="enter"){if(n[t][1].type==="content"){e=t;break}n[t][1].type==="paragraph"&&(u=t)}else n[t][1].type==="content"&&n.splice(t,1),!i&&n[t][1].type==="definition"&&(i=t);const l={type:"setextHeading",start:Object.assign({},n[u][1].start),end:Object.assign({},n[n.length-1][1].end)};return n[u][1].type="setextHeadingText",i?(n.splice(u,0,["enter",l,r]),n.splice(i+1,0,["exit",n[e][1],r]),n[e][1].end=Object.assign({},n[i][1].end)):n[e][1]=l,n.push(["exit",l,r]),n}function ur(n,r,t){const e=this;let u;return i;function i(c){let p=e.events.length,f;for(;p--;)if(e.events[p][1].type!=="lineEnding"&&e.events[p][1].type!=="linePrefix"&&e.events[p][1].type!=="content"){f=e.events[p][1].type==="paragraph";break}return!e.parser.lazy[e.now().line]&&(e.interrupt||f)?(n.enter("setextHeadingLine"),u=c,l(c)):t(c)}function l(c){return n.enter("setextHeadingLineSequence"),a(c)}function a(c){return c===u?(n.consume(c),a):(n.exit("setextHeadingLineSequence"),z(c)?O(n,m,"lineSuffix")(c):m(c))}function m(c){return c===null||C(c)?(n.exit("setextHeadingLine"),r(c)):t(c)}}const lr={tokenize:ar};function ar(n){const r=this,t=n.attempt(Sn,e,n.attempt(this.parser.constructs.flowInitial,u,O(n,n.attempt(this.parser.constructs.flow,u,n.attempt(pe,u)),"linePrefix")));return t;function e(i){if(i===null){n.consume(i);return}return n.enter("lineEndingBlank"),n.consume(i),n.exit("lineEndingBlank"),r.currentConstruct=void 0,t}function u(i){if(i===null){n.consume(i);return}return n.enter("lineEnding"),n.consume(i),n.exit("lineEnding"),r.currentConstruct=void 0,t}}const or={resolveAll:ht()},sr=ct("string"),cr=ct("text");function ct(n){return{tokenize:r,resolveAll:ht(n==="text"?hr:void 0)};function r(t){const e=this,u=this.parser.constructs[n],i=t.attempt(u,l,a);return l;function l(p){return c(p)?i(p):a(p)}function a(p){if(p===null){t.consume(p);return}return t.enter("data"),t.consume(p),m}function m(p){return c(p)?(t.exit("data"),i(p)):(t.consume(p),m)}function c(p){if(p===null)return!0;const f=u[p];let x=-1;if(f)for(;++x-1){const a=l[0];typeof a=="string"?l[0]=a.slice(e):l.shift()}i>0&&l.push(n[u].slice(0,i))}return l}function mr(n,r){let t=-1;const e=[];let u;for(;++tu?0:u+r:r=r>u?u:r,t=t>0?t:0,e.length<1e4)l=Array.from(e),l.unshift(r,t),n.splice(...l);else for(t&&n.splice(r,t);i0?(tn(n,n.length,0,r),n):r}const Wn={}.hasOwnProperty;function Ot(n){const r={};let t=-1;for(;++tl))return;const T=r.events.length;let H=T,N,V;for(;H--;)if(r.events[H][0]==="exit"&&r.events[H][1].type==="chunkFlow"){if(N){V=r.events[H][1].end;break}N=!0}for(b(e),k=T;kF;){const _=t[D];r.containerState=_[1],_[0].exit.call(r,n)}t.length=F}function j(){u.write([null]),i=void 0,u=void 0,r.containerState._closeFlow=void 0}}function Ut(n,r,t){return O(n,n.attempt(this.parser.constructs.document,r,t),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Un(n){if(n===null||Z(n)||Ht(n))return 1;if(qt(n))return 2}function Ln(n,r,t){const e=[];let u=-1;for(;++u1&&n[t][1].end.offset-n[t][1].start.offset>1?2:1;const f=Object.assign({},n[e][1].end),x=Object.assign({},n[t][1].start);$n(f,-m),$n(x,m),l={type:m>1?"strongSequence":"emphasisSequence",start:f,end:Object.assign({},n[e][1].end)},a={type:m>1?"strongSequence":"emphasisSequence",start:Object.assign({},n[t][1].start),end:x},i={type:m>1?"strongText":"emphasisText",start:Object.assign({},n[e][1].end),end:Object.assign({},n[t][1].start)},u={type:m>1?"strong":"emphasis",start:Object.assign({},l.start),end:Object.assign({},a.end)},n[e][1].end=Object.assign({},l.start),n[t][1].start=Object.assign({},a.end),c=[],n[e][1].end.offset-n[e][1].start.offset&&(c=Y(c,[["enter",n[e][1],r],["exit",n[e][1],r]])),c=Y(c,[["enter",u,r],["enter",l,r],["exit",l,r],["enter",i,r]]),c=Y(c,Ln(r.parser.constructs.insideSpan.null,n.slice(e+1,t),r)),c=Y(c,[["exit",i,r],["enter",a,r],["exit",a,r],["exit",u,r]]),n[t][1].end.offset-n[t][1].start.offset?(p=2,c=Y(c,[["enter",n[t][1],r],["exit",n[t][1],r]])):p=0,tn(n,e-1,t-e+3,c),t=e+c.length-p-2;break}}for(t=-1;++t0&&z(k)?O(n,j,"linePrefix",i+1)(k):j(k)}function j(k){return k===null||C(k)?n.check(Yn,I,D)(k):(n.enter("codeFlowValue"),F(k))}function F(k){return k===null||C(k)?(n.exit("codeFlowValue"),j(k)):(n.consume(k),F)}function D(k){return n.exit("codeFenced"),r(k)}function _(k,T,H){let N=0;return V;function V(w){return k.enter("lineEnding"),k.consume(w),k.exit("lineEnding"),y}function y(w){return k.enter("codeFencedFence"),z(w)?O(k,S,"linePrefix",e.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):S(w)}function S(w){return w===a?(k.enter("codeFencedFenceSequence"),P(w)):H(w)}function P(w){return w===a?(N++,k.consume(w),P):N>=l?(k.exit("codeFencedFenceSequence"),z(w)?O(k,R,"whitespace")(w):R(w)):H(w)}function R(w){return w===null||C(w)?(k.exit("codeFencedFence"),T(w)):H(w)}}}function re(n,r,t){const e=this;return u;function u(l){return l===null?t(l):(n.enter("lineEnding"),n.consume(l),n.exit("lineEnding"),i)}function i(l){return e.parser.lazy[e.now().line]?t(l):r(l)}}const Cn={name:"codeIndented",tokenize:ue},ie={tokenize:le,partial:!0};function ue(n,r,t){const e=this;return u;function u(c){return n.enter("codeIndented"),O(n,i,"linePrefix",5)(c)}function i(c){const p=e.events[e.events.length-1];return p&&p[1].type==="linePrefix"&&p[2].sliceSerialize(p[1],!0).length>=4?l(c):t(c)}function l(c){return c===null?m(c):C(c)?n.attempt(ie,l,m)(c):(n.enter("codeFlowValue"),a(c))}function a(c){return c===null||C(c)?(n.exit("codeFlowValue"),l(c)):(n.consume(c),a)}function m(c){return n.exit("codeIndented"),r(c)}}function le(n,r,t){const e=this;return u;function u(l){return e.parser.lazy[e.now().line]?t(l):C(l)?(n.enter("lineEnding"),n.consume(l),n.exit("lineEnding"),u):O(n,i,"linePrefix",5)(l)}function i(l){const a=e.events[e.events.length-1];return a&&a[1].type==="linePrefix"&&a[2].sliceSerialize(a[1],!0).length>=4?r(l):C(l)?u(l):t(l)}}const ae={name:"codeText",tokenize:ce,resolve:oe,previous:se};function oe(n){let r=n.length-4,t=3,e,u;if((n[t][1].type==="lineEnding"||n[t][1].type==="space")&&(n[r][1].type==="lineEnding"||n[r][1].type==="space")){for(e=t;++e=4?r(l):n.interrupt(e.parser.constructs.flow,t,r)(l)}}function at(n,r,t,e,u,i,l,a,m){const c=m||Number.POSITIVE_INFINITY;let p=0;return f;function f(b){return b===60?(n.enter(e),n.enter(u),n.enter(i),n.consume(b),n.exit(i),x):b===null||b===32||b===41||An(b)?t(b):(n.enter(e),n.enter(l),n.enter(a),n.enter("chunkString",{contentType:"string"}),I(b))}function x(b){return b===62?(n.enter(i),n.consume(b),n.exit(i),n.exit(u),n.exit(e),r):(n.enter(a),n.enter("chunkString",{contentType:"string"}),h(b))}function h(b){return b===62?(n.exit("chunkString"),n.exit(a),x(b)):b===null||b===60||C(b)?t(b):(n.consume(b),b===92?A:h)}function A(b){return b===60||b===62||b===92?(n.consume(b),h):h(b)}function I(b){return!p&&(b===null||b===41||Z(b))?(n.exit("chunkString"),n.exit(a),n.exit(l),n.exit(e),r(b)):p999||h===null||h===91||h===93&&!m||h===94&&!a&&"_hiddenFootnoteSupport"in l.parser.constructs?t(h):h===93?(n.exit(i),n.enter(u),n.consume(h),n.exit(u),n.exit(e),r):C(h)?(n.enter("lineEnding"),n.consume(h),n.exit("lineEnding"),p):(n.enter("chunkString",{contentType:"string"}),f(h))}function f(h){return h===null||h===91||h===93||C(h)||a++>999?(n.exit("chunkString"),p(h)):(n.consume(h),m||(m=!z(h)),h===92?x:f)}function x(h){return h===91||h===92||h===93?(n.consume(h),a++,f):f(h)}}function st(n,r,t,e,u,i){let l;return a;function a(x){return x===34||x===39||x===40?(n.enter(e),n.enter(u),n.consume(x),n.exit(u),l=x===40?41:x,m):t(x)}function m(x){return x===l?(n.enter(u),n.consume(x),n.exit(u),n.exit(e),r):(n.enter(i),c(x))}function c(x){return x===l?(n.exit(i),m(l)):x===null?t(x):C(x)?(n.enter("lineEnding"),n.consume(x),n.exit("lineEnding"),O(n,c,"linePrefix")):(n.enter("chunkString",{contentType:"string"}),p(x))}function p(x){return x===l||x===null||C(x)?(n.exit("chunkString"),c(x)):(n.consume(x),x===92?f:p)}function f(x){return x===l||x===92?(n.consume(x),p):p(x)}}function dn(n,r){let t;return e;function e(u){return C(u)?(n.enter("lineEnding"),n.consume(u),n.exit("lineEnding"),t=!0,e):z(u)?O(n,e,t?"linePrefix":"lineSuffix")(u):r(u)}}function xn(n){return n.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const ke={name:"definition",tokenize:be},de={tokenize:ye,partial:!0};function be(n,r,t){const e=this;let u;return i;function i(h){return n.enter("definition"),l(h)}function l(h){return ot.call(e,n,a,t,"definitionLabel","definitionLabelMarker","definitionLabelString")(h)}function a(h){return u=xn(e.sliceSerialize(e.events[e.events.length-1][1]).slice(1,-1)),h===58?(n.enter("definitionMarker"),n.consume(h),n.exit("definitionMarker"),m):t(h)}function m(h){return Z(h)?dn(n,c)(h):c(h)}function c(h){return at(n,p,t,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(h)}function p(h){return n.attempt(de,f,f)(h)}function f(h){return z(h)?O(n,x,"whitespace")(h):x(h)}function x(h){return h===null||C(h)?(n.exit("definition"),e.parser.defined.push(u),r(h)):t(h)}}function ye(n,r,t){return e;function e(a){return Z(a)?dn(n,u)(a):t(a)}function u(a){return st(n,i,t,"definitionTitle","definitionTitleMarker","definitionTitleString")(a)}function i(a){return z(a)?O(n,l,"whitespace")(a):l(a)}function l(a){return a===null||C(a)?r(a):t(a)}}const Se={name:"hardBreakEscape",tokenize:Fe};function Fe(n,r,t){return e;function e(i){return n.enter("hardBreakEscape"),n.consume(i),u}function u(i){return C(i)?(n.exit("hardBreakEscape"),r(i)):t(i)}}const Ee={name:"headingAtx",tokenize:we,resolve:Ce};function Ce(n,r){let t=n.length-2,e=3,u,i;return n[e][1].type==="whitespace"&&(e+=2),t-2>e&&n[t][1].type==="whitespace"&&(t-=2),n[t][1].type==="atxHeadingSequence"&&(e===t-1||t-4>e&&n[t-2][1].type==="whitespace")&&(t-=e+1===t?2:4),t>e&&(u={type:"atxHeadingText",start:n[e][1].start,end:n[t][1].end},i={type:"chunkText",start:n[e][1].start,end:n[t][1].end,contentType:"text"},tn(n,e,t-e+1,[["enter",u,r],["enter",i,r],["exit",i,r],["exit",u,r]])),n}function we(n,r,t){let e=0;return u;function u(p){return n.enter("atxHeading"),i(p)}function i(p){return n.enter("atxHeadingSequence"),l(p)}function l(p){return p===35&&e++<6?(n.consume(p),l):p===null||Z(p)?(n.exit("atxHeadingSequence"),a(p)):t(p)}function a(p){return p===35?(n.enter("atxHeadingSequence"),m(p)):p===null||C(p)?(n.exit("atxHeading"),r(p)):z(p)?O(n,a,"whitespace")(p):(n.enter("atxHeadingText"),c(p))}function m(p){return p===35?(n.consume(p),m):(n.exit("atxHeadingSequence"),a(p))}function c(p){return p===null||p===35||Z(p)?(n.exit("atxHeadingText"),a(p)):(n.consume(p),c)}}const Ae=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Jn=["pre","script","style","textarea"],ze={name:"htmlFlow",tokenize:Le,resolveTo:Be,concrete:!0},Ie={tokenize:De,partial:!0},Te={tokenize:Oe,partial:!0};function Be(n){let r=n.length;for(;r--&&!(n[r][0]==="enter"&&n[r][1].type==="htmlFlow"););return r>1&&n[r-2][1].type==="linePrefix"&&(n[r][1].start=n[r-2][1].start,n[r+1][1].start=n[r-2][1].start,n.splice(r-2,2)),n}function Le(n,r,t){const e=this;let u,i,l,a,m;return c;function c(s){return p(s)}function p(s){return n.enter("htmlFlow"),n.enter("htmlFlowData"),n.consume(s),f}function f(s){return s===33?(n.consume(s),x):s===47?(n.consume(s),i=!0,I):s===63?(n.consume(s),u=3,e.interrupt?r:o):nn(s)?(n.consume(s),l=String.fromCharCode(s),M):t(s)}function x(s){return s===45?(n.consume(s),u=2,h):s===91?(n.consume(s),u=5,a=0,A):nn(s)?(n.consume(s),u=4,e.interrupt?r:o):t(s)}function h(s){return s===45?(n.consume(s),e.interrupt?r:o):t(s)}function A(s){const K="CDATA[";return s===K.charCodeAt(a++)?(n.consume(s),a===K.length?e.interrupt?r:S:A):t(s)}function I(s){return nn(s)?(n.consume(s),l=String.fromCharCode(s),M):t(s)}function M(s){if(s===null||s===47||s===62||Z(s)){const K=s===47,hn=l.toLowerCase();return!K&&!i&&Jn.includes(hn)?(u=1,e.interrupt?r(s):S(s)):Ae.includes(l.toLowerCase())?(u=6,K?(n.consume(s),b):e.interrupt?r(s):S(s)):(u=7,e.interrupt&&!e.parser.lazy[e.now().line]?t(s):i?j(s):F(s))}return s===45||v(s)?(n.consume(s),l+=String.fromCharCode(s),M):t(s)}function b(s){return s===62?(n.consume(s),e.interrupt?r:S):t(s)}function j(s){return z(s)?(n.consume(s),j):V(s)}function F(s){return s===47?(n.consume(s),V):s===58||s===95||nn(s)?(n.consume(s),D):z(s)?(n.consume(s),F):V(s)}function D(s){return s===45||s===46||s===58||s===95||v(s)?(n.consume(s),D):_(s)}function _(s){return s===61?(n.consume(s),k):z(s)?(n.consume(s),_):F(s)}function k(s){return s===null||s===60||s===61||s===62||s===96?t(s):s===34||s===39?(n.consume(s),m=s,T):z(s)?(n.consume(s),k):H(s)}function T(s){return s===m?(n.consume(s),m=null,N):s===null||C(s)?t(s):(n.consume(s),T)}function H(s){return s===null||s===34||s===39||s===47||s===60||s===61||s===62||s===96||Z(s)?_(s):(n.consume(s),H)}function N(s){return s===47||s===62||z(s)?F(s):t(s)}function V(s){return s===62?(n.consume(s),y):t(s)}function y(s){return s===null||C(s)?S(s):z(s)?(n.consume(s),y):t(s)}function S(s){return s===45&&u===2?(n.consume(s),U):s===60&&u===1?(n.consume(s),W):s===62&&u===4?(n.consume(s),J):s===63&&u===3?(n.consume(s),o):s===93&&u===5?(n.consume(s),en):C(s)&&(u===6||u===7)?(n.exit("htmlFlowData"),n.check(Ie,rn,P)(s)):s===null||C(s)?(n.exit("htmlFlowData"),P(s)):(n.consume(s),S)}function P(s){return n.check(Te,R,rn)(s)}function R(s){return n.enter("lineEnding"),n.consume(s),n.exit("lineEnding"),w}function w(s){return s===null||C(s)?P(s):(n.enter("htmlFlowData"),S(s))}function U(s){return s===45?(n.consume(s),o):S(s)}function W(s){return s===47?(n.consume(s),l="",G):S(s)}function G(s){if(s===62){const K=l.toLowerCase();return Jn.includes(K)?(n.consume(s),J):S(s)}return nn(s)&&l.length<8?(n.consume(s),l+=String.fromCharCode(s),G):S(s)}function en(s){return s===93?(n.consume(s),o):S(s)}function o(s){return s===62?(n.consume(s),J):s===45&&u===2?(n.consume(s),o):S(s)}function J(s){return s===null||C(s)?(n.exit("htmlFlowData"),rn(s)):(n.consume(s),J)}function rn(s){return n.exit("htmlFlow"),r(s)}}function Oe(n,r,t){const e=this;return u;function u(l){return C(l)?(n.enter("lineEnding"),n.consume(l),n.exit("lineEnding"),i):t(l)}function i(l){return e.parser.lazy[e.now().line]?t(l):r(l)}}function De(n,r,t){return e;function e(u){return n.enter("lineEnding"),n.consume(u),n.exit("lineEnding"),n.attempt(Sn,r,t)}}const Pe={name:"htmlText",tokenize:_e};function _e(n,r,t){const e=this;let u,i,l;return a;function a(o){return n.enter("htmlText"),n.enter("htmlTextData"),n.consume(o),m}function m(o){return o===33?(n.consume(o),c):o===47?(n.consume(o),_):o===63?(n.consume(o),F):nn(o)?(n.consume(o),H):t(o)}function c(o){return o===45?(n.consume(o),p):o===91?(n.consume(o),i=0,A):nn(o)?(n.consume(o),j):t(o)}function p(o){return o===45?(n.consume(o),h):t(o)}function f(o){return o===null?t(o):o===45?(n.consume(o),x):C(o)?(l=f,W(o)):(n.consume(o),f)}function x(o){return o===45?(n.consume(o),h):f(o)}function h(o){return o===62?U(o):o===45?x(o):f(o)}function A(o){const J="CDATA[";return o===J.charCodeAt(i++)?(n.consume(o),i===J.length?I:A):t(o)}function I(o){return o===null?t(o):o===93?(n.consume(o),M):C(o)?(l=I,W(o)):(n.consume(o),I)}function M(o){return o===93?(n.consume(o),b):I(o)}function b(o){return o===62?U(o):o===93?(n.consume(o),b):I(o)}function j(o){return o===null||o===62?U(o):C(o)?(l=j,W(o)):(n.consume(o),j)}function F(o){return o===null?t(o):o===63?(n.consume(o),D):C(o)?(l=F,W(o)):(n.consume(o),F)}function D(o){return o===62?U(o):F(o)}function _(o){return nn(o)?(n.consume(o),k):t(o)}function k(o){return o===45||v(o)?(n.consume(o),k):T(o)}function T(o){return C(o)?(l=T,W(o)):z(o)?(n.consume(o),T):U(o)}function H(o){return o===45||v(o)?(n.consume(o),H):o===47||o===62||Z(o)?N(o):t(o)}function N(o){return o===47?(n.consume(o),U):o===58||o===95||nn(o)?(n.consume(o),V):C(o)?(l=N,W(o)):z(o)?(n.consume(o),N):U(o)}function V(o){return o===45||o===46||o===58||o===95||v(o)?(n.consume(o),V):y(o)}function y(o){return o===61?(n.consume(o),S):C(o)?(l=y,W(o)):z(o)?(n.consume(o),y):N(o)}function S(o){return o===null||o===60||o===61||o===62||o===96?t(o):o===34||o===39?(n.consume(o),u=o,P):C(o)?(l=S,W(o)):z(o)?(n.consume(o),S):(n.consume(o),R)}function P(o){return o===u?(n.consume(o),u=void 0,w):o===null?t(o):C(o)?(l=P,W(o)):(n.consume(o),P)}function R(o){return o===null||o===34||o===39||o===60||o===61||o===96?t(o):o===47||o===62||Z(o)?N(o):(n.consume(o),R)}function w(o){return o===47||o===62||Z(o)?N(o):t(o)}function U(o){return o===62?(n.consume(o),n.exit("htmlTextData"),n.exit("htmlText"),r):t(o)}function W(o){return n.exit("htmlTextData"),n.enter("lineEnding"),n.consume(o),n.exit("lineEnding"),G}function G(o){return z(o)?O(n,en,"linePrefix",e.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o):en(o)}function en(o){return n.enter("htmlTextData"),l(o)}}const Dn={name:"labelEnd",tokenize:Ne,resolveTo:He,resolveAll:qe},Me={tokenize:Ve},je={tokenize:We},Re={tokenize:Qe};function qe(n){let r=-1;for(;++r=3&&(c===null||C(c))?(n.exit("thematicBreak"),r(c)):t(c)}function m(c){return c===u?(n.consume(c),e++,m):(n.exit("thematicBreakSequence"),z(c)?O(n,a,"whitespace")(c):a(c))}}const $={name:"list",tokenize:ve,continuation:{tokenize:nr},exit:er},Ke={tokenize:rr,partial:!0},Xe={tokenize:tr,partial:!0};function ve(n,r,t){const e=this,u=e.events[e.events.length-1];let i=u&&u[1].type==="linePrefix"?u[2].sliceSerialize(u[1],!0).length:0,l=0;return a;function a(h){const A=e.containerState.type||(h===42||h===43||h===45?"listUnordered":"listOrdered");if(A==="listUnordered"?!e.containerState.marker||h===e.containerState.marker:zn(h)){if(e.containerState.type||(e.containerState.type=A,n.enter(A,{_container:!0})),A==="listUnordered")return n.enter("listItemPrefix"),h===42||h===45?n.check(bn,t,c)(h):c(h);if(!e.interrupt||h===49)return n.enter("listItemPrefix"),n.enter("listItemValue"),m(h)}return t(h)}function m(h){return zn(h)&&++l<10?(n.consume(h),m):(!e.interrupt||l<2)&&(e.containerState.marker?h===e.containerState.marker:h===41||h===46)?(n.exit("listItemValue"),c(h)):t(h)}function c(h){return n.enter("listItemMarker"),n.consume(h),n.exit("listItemMarker"),e.containerState.marker=e.containerState.marker||h,n.check(Sn,e.interrupt?t:p,n.attempt(Ke,x,f))}function p(h){return e.containerState.initialBlankLine=!0,i++,x(h)}function f(h){return z(h)?(n.enter("listItemPrefixWhitespace"),n.consume(h),n.exit("listItemPrefixWhitespace"),x):t(h)}function x(h){return e.containerState.size=i+e.sliceSerialize(n.exit("listItemPrefix"),!0).length,r(h)}}function nr(n,r,t){const e=this;return e.containerState._closeFlow=void 0,n.check(Sn,u,i);function u(a){return e.containerState.furtherBlankLines=e.containerState.furtherBlankLines||e.containerState.initialBlankLine,O(n,r,"listItemIndent",e.containerState.size+1)(a)}function i(a){return e.containerState.furtherBlankLines||!z(a)?(e.containerState.furtherBlankLines=void 0,e.containerState.initialBlankLine=void 0,l(a)):(e.containerState.furtherBlankLines=void 0,e.containerState.initialBlankLine=void 0,n.attempt(Xe,r,l)(a))}function l(a){return e.containerState._closeFlow=!0,e.interrupt=void 0,O(n,n.attempt($,r,t),"linePrefix",e.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(a)}}function tr(n,r,t){const e=this;return O(n,u,"listItemIndent",e.containerState.size+1);function u(i){const l=e.events[e.events.length-1];return l&&l[1].type==="listItemIndent"&&l[2].sliceSerialize(l[1],!0).length===e.containerState.size?r(i):t(i)}}function er(n){n.exit(this.containerState.type)}function rr(n,r,t){const e=this;return O(n,u,"listItemPrefixWhitespace",e.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function u(i){const l=e.events[e.events.length-1];return!z(i)&&l&&l[1].type==="listItemPrefixWhitespace"?r(i):t(i)}}const Kn={name:"setextUnderline",tokenize:ur,resolveTo:ir};function ir(n,r){let t=n.length,e,u,i;for(;t--;)if(n[t][0]==="enter"){if(n[t][1].type==="content"){e=t;break}n[t][1].type==="paragraph"&&(u=t)}else n[t][1].type==="content"&&n.splice(t,1),!i&&n[t][1].type==="definition"&&(i=t);const l={type:"setextHeading",start:Object.assign({},n[u][1].start),end:Object.assign({},n[n.length-1][1].end)};return n[u][1].type="setextHeadingText",i?(n.splice(u,0,["enter",l,r]),n.splice(i+1,0,["exit",n[e][1],r]),n[e][1].end=Object.assign({},n[i][1].end)):n[e][1]=l,n.push(["exit",l,r]),n}function ur(n,r,t){const e=this;let u;return i;function i(c){let p=e.events.length,f;for(;p--;)if(e.events[p][1].type!=="lineEnding"&&e.events[p][1].type!=="linePrefix"&&e.events[p][1].type!=="content"){f=e.events[p][1].type==="paragraph";break}return!e.parser.lazy[e.now().line]&&(e.interrupt||f)?(n.enter("setextHeadingLine"),u=c,l(c)):t(c)}function l(c){return n.enter("setextHeadingLineSequence"),a(c)}function a(c){return c===u?(n.consume(c),a):(n.exit("setextHeadingLineSequence"),z(c)?O(n,m,"lineSuffix")(c):m(c))}function m(c){return c===null||C(c)?(n.exit("setextHeadingLine"),r(c)):t(c)}}const lr={tokenize:ar};function ar(n){const r=this,t=n.attempt(Sn,e,n.attempt(this.parser.constructs.flowInitial,u,O(n,n.attempt(this.parser.constructs.flow,u,n.attempt(pe,u)),"linePrefix")));return t;function e(i){if(i===null){n.consume(i);return}return n.enter("lineEndingBlank"),n.consume(i),n.exit("lineEndingBlank"),r.currentConstruct=void 0,t}function u(i){if(i===null){n.consume(i);return}return n.enter("lineEnding"),n.consume(i),n.exit("lineEnding"),r.currentConstruct=void 0,t}}const or={resolveAll:ht()},sr=ct("string"),cr=ct("text");function ct(n){return{tokenize:r,resolveAll:ht(n==="text"?hr:void 0)};function r(t){const e=this,u=this.parser.constructs[n],i=t.attempt(u,l,a);return l;function l(p){return c(p)?i(p):a(p)}function a(p){if(p===null){t.consume(p);return}return t.enter("data"),t.consume(p),m}function m(p){return c(p)?(t.exit("data"),i(p)):(t.consume(p),m)}function c(p){if(p===null)return!0;const f=u[p];let x=-1;if(f)for(;++x-1){const a=l[0];typeof a=="string"?l[0]=a.slice(e):l.shift()}i>0&&l.push(n[u].slice(0,i))}return l}function mr(n,r){let t=-1;const e=[];let u;for(;++t13&&t<32||t>126&&t<160||t>55295&&t<57344||t>64975&&t<65008||(t&65535)===65535||(t&65535)===65534||t>1114111?"�":String.fromCharCode(t)}const Ir=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Tr(n){return n.replace(Ir,Br)}function Br(n,r,t){if(r)return r;if(t.charCodeAt(0)===35){const u=t.charCodeAt(1),i=u===120||u===88;return pt(t.slice(i?2:1),i?16:10)}return On(t)||n}function yn(n){return!n||typeof n!="object"?"":"position"in n||"type"in n?vn(n.position):"start"in n||"end"in n?vn(n):"line"in n||"column"in n?Tn(n):""}function Tn(n){return nt(n&&n.line)+":"+nt(n&&n.column)}function vn(n){return Tn(n&&n.start)+"-"+Tn(n&&n.end)}function nt(n){return n&&typeof n=="number"?n:1}const ft={}.hasOwnProperty,mt=function(n,r,t){return typeof r!="string"&&(t=r,r=void 0),Lr(t)(zr(wr(t).document().write(Ar()(n,r,!0))))};function Lr(n){const r={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:a(Hn),autolinkProtocol:y,autolinkEmail:y,atxHeading:a(jn),blockQuote:a(Fn),characterEscape:y,characterReference:y,codeFenced:a(Mn),codeFencedFenceInfo:m,codeFencedFenceMeta:m,codeIndented:a(Mn,m),codeText:a(kt,m),codeTextData:y,data:y,codeFlowValue:y,definition:a(dt),definitionDestinationString:m,definitionLabelString:m,definitionTitleString:m,emphasis:a(bt),hardBreakEscape:a(Rn),hardBreakTrailing:a(Rn),htmlFlow:a(qn,m),htmlFlowData:y,htmlText:a(qn,m),htmlTextData:y,image:a(yt),label:m,link:a(Hn),listItem:a(St),listItemValue:A,listOrdered:a(Nn,h),listUnordered:a(Nn),paragraph:a(Ft),reference:hn,referenceString:m,resourceDestinationString:m,resourceTitleString:m,setextHeading:a(jn),strong:a(Et),thematicBreak:a(wt)},exit:{atxHeading:p(),atxHeadingSequence:T,autolink:p(),autolinkEmail:mn,autolinkProtocol:fn,blockQuote:p(),characterEscapeValue:S,characterReferenceMarkerHexadecimal:pn,characterReferenceMarkerNumeric:pn,characterReferenceValue:an,codeFenced:p(j),codeFencedFence:b,codeFencedFenceInfo:I,codeFencedFenceMeta:M,codeFlowValue:S,codeIndented:p(F),codeText:p(W),codeTextData:S,data:S,definition:p(),definitionDestinationString:k,definitionLabelString:D,definitionTitleString:_,emphasis:p(),hardBreakEscape:p(R),hardBreakTrailing:p(R),htmlFlow:p(w),htmlFlowData:S,htmlText:p(U),htmlTextData:S,image:p(en),label:J,labelText:o,lineEnding:P,link:p(G),listItem:p(),listOrdered:p(),listUnordered:p(),paragraph:p(),referenceString:Q,resourceDestinationString:rn,resourceTitleString:s,resource:K,setextHeading:p(V),setextHeadingLineSequence:N,setextHeadingText:H,strong:p(),thematicBreak:p()}};xt(r,(n||{}).mdastExtensions||[]);const t={};return e;function e(g){let d={type:"root",children:[]};const E={stack:[d],tokenStack:[],config:r,enter:c,exit:f,buffer:m,resume:x,setData:i,getData:l},B=[];let L=-1;for(;++L0){const X=E.tokenStack[E.tokenStack.length-1];(X[1]||tt).call(E,void 0,X[0])}for(d.position={start:sn(g.length>0?g[0][1].start:{line:1,column:1,offset:0}),end:sn(g.length>0?g[g.length-2][1].end:{line:1,column:1,offset:0})},L=-1;++L

          Note

          This test was conducted earlier, and some content may have become outdated. The ultraLowDelay configuration option has been removed. To achieve the lowest delay mode, set the combined write delay to 0 (default is 0). When testing the delay, you can use WebRTC playback.

          Network Environment

          • localhost

          Operating System

          • macOS

          Server

          • MediaServer, startup parameter -t 1, single-threaded startup
          • Open the configuration file and enable ultraLowDelay mode

          Streaming Software

          • obs, RTMP streaming to localhost
          • Rate Control: CBR
          • Bitrate: 2500
          • Custom Buffer Size: 100
          • Keyframe Interval: 2 seconds
          • CPU Usage Preset: ultrafast
          • Profile: baseline
          • Tune: zerolatency
          • Resolution: 1280x720
          • FPS: 30 image

          Player

          • Built-in test_player
          • Play RTSP (test both UDP and TCP modes) or RTMP on localhost

          Testing Method

          • Open a browser and go to the online stopwatch webpage https://miaobiao.51240.com/
          • Configure OBS to capture the stopwatch section of the browser image and start streaming to MediaServer
          • Open the test_player and play the corresponding RTSP or RTMP URL
          • Use a screenshot tool to capture the frames and compare the time difference between the online stopwatch webpage and the test_player

          Test Results

          • RTMP playback, delay of 200ms to 400ms imageimage

          • RTSP playback (TCP mode), delay of 200ms to 400ms imageimage

          • RTSP playback (UDP mode), delay of 200ms to 400ms imageimage

          Test Conclusion

          • In the single-threaded mode, where the player and streaming software are in the same thread without any thread switching, the delay is slightly more stable and lower.
          • Enabling TCP_NODELAY and disabling MSG_MORE did not significantly optimize the delay in this test.
          • The average delay from multiple screenshots is around 300ms, with a minimum of around 200ms and a maximum of over 400ms.
          • Back in 2017, when I developed my own streaming software (unfortunately, I didn't save the .exe file), I was able to achieve a minimum delay of around 120ms, which is currently not achievable. It is suspected that OBS still has relatively high streaming delay.
          • It is recommended to disable audio during streaming tests. For encoding formats like AAC, the encoding delay can exceed 100ms.
          • This test was conducted on macOS. Ideally, the server would be Linux, the streaming software would be on Windows, and if the player rendering is done independently, the delay could be even lower.
          • Those interested can conduct tests on Windows. In 2017, when I tested it on a local network, with the streaming software, server, and player not on the same host, the delay was as low as 120ms. It should be even lower with localhost.
          ',17),n=[l];function s(d,r){return t(),a("div",null,n)}const m=e(o,[["render",s],["__file","delay_test.html.vue"]]);export{m as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c as a,e as i}from"./app-0NopiYEV.js";const o={},l=i('

          Note

          This test was conducted earlier, and some content may have become outdated. The ultraLowDelay configuration option has been removed. To achieve the lowest delay mode, set the combined write delay to 0 (default is 0). When testing the delay, you can use WebRTC playback.

          Network Environment

          • localhost

          Operating System

          • macOS

          Server

          • MediaServer, startup parameter -t 1, single-threaded startup
          • Open the configuration file and enable ultraLowDelay mode

          Streaming Software

          • obs, RTMP streaming to localhost
          • Rate Control: CBR
          • Bitrate: 2500
          • Custom Buffer Size: 100
          • Keyframe Interval: 2 seconds
          • CPU Usage Preset: ultrafast
          • Profile: baseline
          • Tune: zerolatency
          • Resolution: 1280x720
          • FPS: 30 image

          Player

          • Built-in test_player
          • Play RTSP (test both UDP and TCP modes) or RTMP on localhost

          Testing Method

          • Open a browser and go to the online stopwatch webpage https://miaobiao.51240.com/
          • Configure OBS to capture the stopwatch section of the browser image and start streaming to MediaServer
          • Open the test_player and play the corresponding RTSP or RTMP URL
          • Use a screenshot tool to capture the frames and compare the time difference between the online stopwatch webpage and the test_player

          Test Results

          • RTMP playback, delay of 200ms to 400ms imageimage

          • RTSP playback (TCP mode), delay of 200ms to 400ms imageimage

          • RTSP playback (UDP mode), delay of 200ms to 400ms imageimage

          Test Conclusion

          • In the single-threaded mode, where the player and streaming software are in the same thread without any thread switching, the delay is slightly more stable and lower.
          • Enabling TCP_NODELAY and disabling MSG_MORE did not significantly optimize the delay in this test.
          • The average delay from multiple screenshots is around 300ms, with a minimum of around 200ms and a maximum of over 400ms.
          • Back in 2017, when I developed my own streaming software (unfortunately, I didn't save the .exe file), I was able to achieve a minimum delay of around 120ms, which is currently not achievable. It is suspected that OBS still has relatively high streaming delay.
          • It is recommended to disable audio during streaming tests. For encoding formats like AAC, the encoding delay can exceed 100ms.
          • This test was conducted on macOS. Ideally, the server would be Linux, the streaming software would be on Windows, and if the player rendering is done independently, the delay could be even lower.
          • Those interested can conduct tests on Windows. In 2017, when I tested it on a local network, with the streaming software, server, and player not on the same host, the delay was as low as 120ms. It should be even lower with localhost.
          ',17),n=[l];function s(d,r){return t(),a("div",null,n)}const m=e(o,[["render",s],["__file","delay_test.html.vue"]]);export{m as default}; diff --git a/assets/delay_test.html-nuUiWXnv.js b/assets/delay_test.html-YaKGDOck.js similarity index 98% rename from assets/delay_test.html-nuUiWXnv.js rename to assets/delay_test.html-YaKGDOck.js index 3cd870d..798a8ce 100644 --- a/assets/delay_test.html-nuUiWXnv.js +++ b/assets/delay_test.html-YaKGDOck.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as i,c as a,e as l}from"./app-RP31lnfq.js";const c={},d=l('

          注意

          此测试时间比较早,部分内容已失效;其中ultraLowDelay配置项已经删除;合并写延时改成 0 时(默认为 0)即为最低延时模式; 大家测试延时时,可以使用 webrtc 播放来测试。

          网络环境

          • localhost

          操作系统

          • macOS

          服务器

          • MediaServer,启动参数 -t 1 ,单线程启动
          • 配置文件打开ultraLowDelay模式

          推流器

          • obs rtmp 推流到 localhost
          • 速率控制CBR
          • 比特率: 2500
          • 自定义缓存大小: 100
          • 关键帧将:2 秒
          • CPU使用预设: ultrafast
          • profile: baseline
          • Tune: zerolatency
          • 分辨率: 1280x720
          • fps: 30 image

          播放器

          • 内置 test_player
          • localhost 播放 rtsp(udp、tcp 模式都测试)或 rtmp

          测试方法

          • 打开浏览器,打开在线秒表网页 https://miaobiao.51240.com/
          • 设置 OBS,截取浏览器秒表部分图像,开始推流给 MediaServer
          • 打开 test_player,播放对应的 rtsp 或 rtmp url
          • 使用截图工具,定格画面,并对比网页与 test_player 播放器画面在线秒表时间差

          测试结果

          • 播放 rtmp,延时 200ms ~ 400ms imageimage

          • 播放 rtsp(tcp 模式),延时 200ms ~ 400ms imageimage

          • 播放 rtsp(udp 模式),延时 200ms ~ 400ms imageimage

          测试结论

          • 在单线程下,播放器和推流器在同一个线程,没有跨线程切换问题,延时稍微稳定并低点
          • 开启 TCP_NODELAY 关闭 MSG_MORE 在本轮测试中对优化延时效果不大
          • 多次截图平均下来有 300ms 左右的延时,最低 200ms 左右,最高有 400+ms
          • 17 年我自己写推流器(很遗憾没保存下 exe 文件)的情况下,最低延时能达到 120ms 左右,目前根本达不到,怀疑 obs 推流延时还是较高
          • 推流时建议关闭音频再测试,像 AAC 这种编码格式,编码延时能达到 100ms 以上
          • 本次测试都是再 macOS 下测试的,理想情况下,服务器是 linux,推流器 windows,播放器渲染自己做的话延时可能还能更低
          • 感兴趣的朋友们可以在 windows 下测试下,17 年我是在局域网中测试的,推流器、服务器、播放器都不是同一台主机,延时尚且低至 120ms,如果 localhost 应该能更低。
          ',18),t=[d];function o(r,s){return i(),a("div",null,t)}const u=e(c,[["render",o],["__file","delay_test.html.vue"]]);export{u as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as i,c as a,e as l}from"./app-0NopiYEV.js";const c={},d=l('

          注意

          此测试时间比较早,部分内容已失效;其中ultraLowDelay配置项已经删除;合并写延时改成 0 时(默认为 0)即为最低延时模式; 大家测试延时时,可以使用 webrtc 播放来测试。

          网络环境

          • localhost

          操作系统

          • macOS

          服务器

          • MediaServer,启动参数 -t 1 ,单线程启动
          • 配置文件打开ultraLowDelay模式

          推流器

          • obs rtmp 推流到 localhost
          • 速率控制CBR
          • 比特率: 2500
          • 自定义缓存大小: 100
          • 关键帧将:2 秒
          • CPU使用预设: ultrafast
          • profile: baseline
          • Tune: zerolatency
          • 分辨率: 1280x720
          • fps: 30 image

          播放器

          • 内置 test_player
          • localhost 播放 rtsp(udp、tcp 模式都测试)或 rtmp

          测试方法

          • 打开浏览器,打开在线秒表网页 https://miaobiao.51240.com/
          • 设置 OBS,截取浏览器秒表部分图像,开始推流给 MediaServer
          • 打开 test_player,播放对应的 rtsp 或 rtmp url
          • 使用截图工具,定格画面,并对比网页与 test_player 播放器画面在线秒表时间差

          测试结果

          • 播放 rtmp,延时 200ms ~ 400ms imageimage

          • 播放 rtsp(tcp 模式),延时 200ms ~ 400ms imageimage

          • 播放 rtsp(udp 模式),延时 200ms ~ 400ms imageimage

          测试结论

          • 在单线程下,播放器和推流器在同一个线程,没有跨线程切换问题,延时稍微稳定并低点
          • 开启 TCP_NODELAY 关闭 MSG_MORE 在本轮测试中对优化延时效果不大
          • 多次截图平均下来有 300ms 左右的延时,最低 200ms 左右,最高有 400+ms
          • 17 年我自己写推流器(很遗憾没保存下 exe 文件)的情况下,最低延时能达到 120ms 左右,目前根本达不到,怀疑 obs 推流延时还是较高
          • 推流时建议关闭音频再测试,像 AAC 这种编码格式,编码延时能达到 100ms 以上
          • 本次测试都是再 macOS 下测试的,理想情况下,服务器是 linux,推流器 windows,播放器渲染自己做的话延时可能还能更低
          • 感兴趣的朋友们可以在 windows 下测试下,17 年我是在局域网中测试的,推流器、服务器、播放器都不是同一台主机,延时尚且低至 120ms,如果 localhost 应该能更低。
          ',18),t=[d];function o(r,s){return i(),a("div",null,t)}const u=e(c,[["render",o],["__file","delay_test.html.vue"]]);export{u as default}; diff --git a/assets/dependency.html-kZHrVdhi.js b/assets/dependency.html-8pevclZ9.js similarity index 98% rename from assets/dependency.html-kZHrVdhi.js rename to assets/dependency.html-8pevclZ9.js index d18b522..9db8c59 100644 --- a/assets/dependency.html-kZHrVdhi.js +++ b/assets/dependency.html-8pevclZ9.js @@ -1 +1 @@ -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as a,c as d,a as e,d as t,b as r,e as o}from"./app-RP31lnfq.js";const s={},c=o('

          I. ZLMediaKit's List of Dependent Libraries

          Dependent ComponentsLicense TypeRemarksProject Address
          ZLToolKitMITStrong dependency, ZLToolKit also partially depends on some open-source codeshttps://github.com/ZLMediaKit/ZLToolKit
          ireader/media-serverMITDefault dependency, can be removed when ENABLE_HLS, ENABLE_MP4, ENABLE_RTPPROXY are set to disabled at compile timehttps://github.com/ireader/media-server
          jsoncppMITMediaServer dependencyhttps://github.com/open-source-parsers/jsoncpp
          opensslApache-2.0Dependency when enabling SSL and WebRTC related features, can be removed when ENABLE_OPENSSL, ENABLE_WEBRTC are set to disabled at compile timehttps://github.com/openssl/openssl
          srtpSimilar to MITDependency when enabling WebRTC related features, can be removed when ENABLE_WEBRTC is set to disabled at compile timehttps://github.com/cisco/libsrtp
          usrsctpBSD-3-ClauseDependency when enabling WebRTC datachannel related features, can be removed when ENABLE_SCTP is set to disabled at compile timehttps://github.com/sctplab/usrsctp
          mediasoupISCSome WebRTC source code extracted from mediasoup, can be removed when ENABLE_WEBRTC is set to disabled at compile timehttps://github.com/versatica/mediasoup
          ffmpegGPL/LGPLThere's minor dependency with the transcoding branch and mk_api, can be removed when ENABLE_FFMPEG is set to disabled at compile time, default is disabledhttps://github.com/FFmpeg/FFmpeg
          wepollSimilar to MITDependency when ENABLE_WPOLL is enabled during Windows compilation, default is disabledhttps://github.com/piscisaureus/wepoll
          SPSParsersps/pps related parsing code, originated from a friend, modified, initially extracted from ffmpeg, copyright doubtfulhttps://github.com/ZLMediaKit/ZLMediaKit/blob/master/src/Extension/SPSParser.h

          II. Other Dependencies

          • SDL dependency when enabling the compilation of the test_player test program.
          • Dependencies on libx264 and libfacc when enabling x264/faac related features, default is disabled.
          • jemalloc dependency when enabling jemalloc, default is disabled.
          • Dependency on libmysql-clinet when enabling mysql connection pool feature, default is disabled.
          ',5),h={href:"https://github.com/ZLMediaKit/ZLToolKit/tree/master/src/win32",target:"_blank",rel:"noopener noreferrer"},p={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/uv_errno.h",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/strptime_win.cpp",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/mini.h",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/r-lyeh-archived/mINI",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/function_traits.h",target:"_blank",rel:"noopener noreferrer"},f={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/base64.h",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/SHA1.h",target:"_blank",rel:"noopener noreferrer"},_={href:"https://github.com/vog/sha1",target:"_blank",rel:"noopener noreferrer"},x={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/MD5.h",target:"_blank",rel:"noopener noreferrer"};function L(E,T){const n=l("ExternalLinkIcon");return a(),d("div",null,[c,e("ul",null,[e("li",null,[e("a",h,[t("getopt"),r(n)]),t(" is a command-line parsing tool for Windows, not needed for other platforms.")]),e("li",null,[e("a",p,[t("uv_errno"),r(n)]),t(" some error handling code is derived from libuv.")]),e("li",null,[e("a",m,[t("strptime_win"),r(n)]),t(" is the strptime porting function code for Windows, sourced from the internet, origin unknown.")]),e("li",null,[e("a",g,[t("mini"),r(n)])])]),e("p",null,[t("is sourced from "),e("a",b,[t("github"),r(n)]),t(", after arrangement and modification.")]),e("ul",null,[e("li",null,[e("a",u,[t("function_traits"),r(n)]),t(" is sourced from the internet, likely from Qi Yu.")]),e("li",null,[e("a",f,[t("base64"),r(n)]),t(" is sourced from the internet, modified, likely originated from ffmpeg.")]),e("li",null,[e("a",y,[t("SHA1"),r(n)]),t(" is arranged from "),e("a",_,[t("GitHub"),r(n)])]),e("li",null,[e("a",x,[t("MD5"),r(n)]),t(" is arranged from GitHub, the original source is no longer findable.")])])])}const Z=i(s,[["render",L],["__file","dependency.html.vue"]]);export{Z as default}; +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as a,c as d,a as e,d as t,b as r,e as o}from"./app-0NopiYEV.js";const s={},c=o('

          I. ZLMediaKit's List of Dependent Libraries

          Dependent ComponentsLicense TypeRemarksProject Address
          ZLToolKitMITStrong dependency, ZLToolKit also partially depends on some open-source codeshttps://github.com/ZLMediaKit/ZLToolKit
          ireader/media-serverMITDefault dependency, can be removed when ENABLE_HLS, ENABLE_MP4, ENABLE_RTPPROXY are set to disabled at compile timehttps://github.com/ireader/media-server
          jsoncppMITMediaServer dependencyhttps://github.com/open-source-parsers/jsoncpp
          opensslApache-2.0Dependency when enabling SSL and WebRTC related features, can be removed when ENABLE_OPENSSL, ENABLE_WEBRTC are set to disabled at compile timehttps://github.com/openssl/openssl
          srtpSimilar to MITDependency when enabling WebRTC related features, can be removed when ENABLE_WEBRTC is set to disabled at compile timehttps://github.com/cisco/libsrtp
          usrsctpBSD-3-ClauseDependency when enabling WebRTC datachannel related features, can be removed when ENABLE_SCTP is set to disabled at compile timehttps://github.com/sctplab/usrsctp
          mediasoupISCSome WebRTC source code extracted from mediasoup, can be removed when ENABLE_WEBRTC is set to disabled at compile timehttps://github.com/versatica/mediasoup
          ffmpegGPL/LGPLThere's minor dependency with the transcoding branch and mk_api, can be removed when ENABLE_FFMPEG is set to disabled at compile time, default is disabledhttps://github.com/FFmpeg/FFmpeg
          wepollSimilar to MITDependency when ENABLE_WPOLL is enabled during Windows compilation, default is disabledhttps://github.com/piscisaureus/wepoll
          SPSParsersps/pps related parsing code, originated from a friend, modified, initially extracted from ffmpeg, copyright doubtfulhttps://github.com/ZLMediaKit/ZLMediaKit/blob/master/src/Extension/SPSParser.h

          II. Other Dependencies

          • SDL dependency when enabling the compilation of the test_player test program.
          • Dependencies on libx264 and libfacc when enabling x264/faac related features, default is disabled.
          • jemalloc dependency when enabling jemalloc, default is disabled.
          • Dependency on libmysql-clinet when enabling mysql connection pool feature, default is disabled.
          ',5),h={href:"https://github.com/ZLMediaKit/ZLToolKit/tree/master/src/win32",target:"_blank",rel:"noopener noreferrer"},p={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/uv_errno.h",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/strptime_win.cpp",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/mini.h",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/r-lyeh-archived/mINI",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/function_traits.h",target:"_blank",rel:"noopener noreferrer"},f={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/base64.h",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/SHA1.h",target:"_blank",rel:"noopener noreferrer"},_={href:"https://github.com/vog/sha1",target:"_blank",rel:"noopener noreferrer"},x={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/MD5.h",target:"_blank",rel:"noopener noreferrer"};function L(E,T){const n=l("ExternalLinkIcon");return a(),d("div",null,[c,e("ul",null,[e("li",null,[e("a",h,[t("getopt"),r(n)]),t(" is a command-line parsing tool for Windows, not needed for other platforms.")]),e("li",null,[e("a",p,[t("uv_errno"),r(n)]),t(" some error handling code is derived from libuv.")]),e("li",null,[e("a",m,[t("strptime_win"),r(n)]),t(" is the strptime porting function code for Windows, sourced from the internet, origin unknown.")]),e("li",null,[e("a",g,[t("mini"),r(n)])])]),e("p",null,[t("is sourced from "),e("a",b,[t("github"),r(n)]),t(", after arrangement and modification.")]),e("ul",null,[e("li",null,[e("a",u,[t("function_traits"),r(n)]),t(" is sourced from the internet, likely from Qi Yu.")]),e("li",null,[e("a",f,[t("base64"),r(n)]),t(" is sourced from the internet, modified, likely originated from ffmpeg.")]),e("li",null,[e("a",y,[t("SHA1"),r(n)]),t(" is arranged from "),e("a",_,[t("GitHub"),r(n)])]),e("li",null,[e("a",x,[t("MD5"),r(n)]),t(" is arranged from GitHub, the original source is no longer findable.")])])])}const Z=i(s,[["render",L],["__file","dependency.html.vue"]]);export{Z as default}; diff --git a/assets/dependency.html-WFMeX_wi.js b/assets/dependency.html-jVZ5GKgo.js similarity index 98% rename from assets/dependency.html-WFMeX_wi.js rename to assets/dependency.html-jVZ5GKgo.js index a9854e0..5f60389 100644 --- a/assets/dependency.html-WFMeX_wi.js +++ b/assets/dependency.html-jVZ5GKgo.js @@ -1 +1 @@ -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as a,c as s,a as t,d as e,b as l,e as o}from"./app-RP31lnfq.js";const d={},c=o('

          一、zlmediakit 依赖的库列表

          依赖组件协议类型备注项目地址
          ZLToolKitMIT强依赖,ZLToolKit 也部分依赖某些开源代码https://github.com/ZLMediaKit/ZLToolKit
          ireader/media-serverMIT默认依赖,编译时指定 ENABLE_HLS,ENABLE_MP4,ENABLE_RTPPROXY 为关闭时可以去除依赖https://github.com/ireader/media-server
          jsoncppMITMediaServer 依赖https://github.com/open-source-parsers/jsoncpp
          opensslApache-2.0开启 ssl 和 webrtc 相关功能时依赖,编译时指定 ENABLE_OPENSSL,ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/openssl/openssl
          srtp类 MIT开启 webrtc 相关功能时依赖,编译时指定 ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/cisco/libsrtp
          usrsctpBSD-3-Clause开启 webrtc datachannel 相关功能时依赖,编译时指定 ENABLE_SCTP 为关闭时可以去除依赖https://github.com/sctplab/usrsctp
          mediasoupISC部分 webrtc 源码提取自 mediasoup,编译时指定 ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/versatica/mediasoup
          ffmpegGPL/LGPL转码分支与 mk_api 有轻微依赖,编译时指定 ENABLE_FFMPEG 为关闭时可以去除依赖,默认关闭https://github.com/FFmpeg/FFmpeg
          wepoll类 MITWindows 下编译 ENABLE_WPOLL 为开始时依赖,默认关闭https://github.com/piscisaureus/wepoll
          SPSParsersps/pps 相关解析代码,来自朋友,经过修改,应该最开始提取自 ffmpeg,版权存疑https://github.com/ZLMediaKit/ZLMediaKit/blob/master/src/Extension/SPSParser.h

          二、其他依赖

          • 开启编译 test_player 测试程序时依赖 sdl。
          • 开启 x264/faac 相关功能时依赖 libx264 与 libfacc,默认关闭。
          • 开启 jemalloc 时依赖 jemalloc,默认关闭。
          • 开始 mysql 连接池功能时依赖 libmysql-clinet,默认关闭。

          三、ZLToolkit 相关依赖

          ',5),h={href:"https://github.com/ZLMediaKit/ZLToolKit/tree/master/src/win32",target:"_blank",rel:"noopener noreferrer"},p={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/uv_errno.h",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/strptime_win.cpp",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/mini.h",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/r-lyeh-archived/mINI",target:"_blank",rel:"noopener noreferrer"},_={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/function_traits.h",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/base64.h",target:"_blank",rel:"noopener noreferrer"},x={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/SHA1.h",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/vog/sha1",target:"_blank",rel:"noopener noreferrer"},L={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/MD5.h",target:"_blank",rel:"noopener noreferrer"};function f(E,T){const r=i("ExternalLinkIcon");return a(),s("div",null,[c,t("ul",null,[t("li",null,[t("p",null,[t("a",h,[e("getopt"),l(r)]),e(" windows 下命令行解析工具,其他平台不依赖。")])]),t("li",null,[t("p",null,[t("a",p,[e("uv_errno"),l(r)]),e(" 部分错误处理代码来自 libuv。")])]),t("li",null,[t("p",null,[t("a",g,[e("strptime_win"),l(r)]),e(" windows 下 strptime 移植函数代码,来源网络,出处已不可考。")])]),t("li",null,[t("p",null,[t("a",b,[e("mini"),l(r)]),e(" 来源于"),t("a",u,[e("github"),l(r)]),e(",经过整理和修改。")])]),t("li",null,[t("p",null,[t("a",_,[e("function_traits"),l(r)]),e("来源自网络,应该出自祁宇。")])]),t("li",null,[t("p",null,[t("a",m,[e("base64"),l(r)]),e(" 来源自网络,经过修改,应该出自 ffmpeg。")])]),t("li",null,[t("p",null,[t("a",x,[e("SHA1"),l(r)]),e(" 整理自"),t("a",y,[e("GitHub"),l(r)])])]),t("li",null,[t("p",null,[t("a",L,[e("MD5"),l(r)]),e(" 整理自 GitHub,已无法找到原始出处。")])])])])}const k=n(d,[["render",f],["__file","dependency.html.vue"]]);export{k as default}; +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as a,c as s,a as t,d as e,b as l,e as o}from"./app-0NopiYEV.js";const d={},c=o('

          一、zlmediakit 依赖的库列表

          依赖组件协议类型备注项目地址
          ZLToolKitMIT强依赖,ZLToolKit 也部分依赖某些开源代码https://github.com/ZLMediaKit/ZLToolKit
          ireader/media-serverMIT默认依赖,编译时指定 ENABLE_HLS,ENABLE_MP4,ENABLE_RTPPROXY 为关闭时可以去除依赖https://github.com/ireader/media-server
          jsoncppMITMediaServer 依赖https://github.com/open-source-parsers/jsoncpp
          opensslApache-2.0开启 ssl 和 webrtc 相关功能时依赖,编译时指定 ENABLE_OPENSSL,ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/openssl/openssl
          srtp类 MIT开启 webrtc 相关功能时依赖,编译时指定 ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/cisco/libsrtp
          usrsctpBSD-3-Clause开启 webrtc datachannel 相关功能时依赖,编译时指定 ENABLE_SCTP 为关闭时可以去除依赖https://github.com/sctplab/usrsctp
          mediasoupISC部分 webrtc 源码提取自 mediasoup,编译时指定 ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/versatica/mediasoup
          ffmpegGPL/LGPL转码分支与 mk_api 有轻微依赖,编译时指定 ENABLE_FFMPEG 为关闭时可以去除依赖,默认关闭https://github.com/FFmpeg/FFmpeg
          wepoll类 MITWindows 下编译 ENABLE_WPOLL 为开始时依赖,默认关闭https://github.com/piscisaureus/wepoll
          SPSParsersps/pps 相关解析代码,来自朋友,经过修改,应该最开始提取自 ffmpeg,版权存疑https://github.com/ZLMediaKit/ZLMediaKit/blob/master/src/Extension/SPSParser.h

          二、其他依赖

          • 开启编译 test_player 测试程序时依赖 sdl。
          • 开启 x264/faac 相关功能时依赖 libx264 与 libfacc,默认关闭。
          • 开启 jemalloc 时依赖 jemalloc,默认关闭。
          • 开始 mysql 连接池功能时依赖 libmysql-clinet,默认关闭。

          三、ZLToolkit 相关依赖

          ',5),h={href:"https://github.com/ZLMediaKit/ZLToolKit/tree/master/src/win32",target:"_blank",rel:"noopener noreferrer"},p={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/uv_errno.h",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/strptime_win.cpp",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/mini.h",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/r-lyeh-archived/mINI",target:"_blank",rel:"noopener noreferrer"},_={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/function_traits.h",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/base64.h",target:"_blank",rel:"noopener noreferrer"},x={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/SHA1.h",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/vog/sha1",target:"_blank",rel:"noopener noreferrer"},L={href:"https://github.com/ZLMediaKit/ZLToolKit/blob/master/src/Util/MD5.h",target:"_blank",rel:"noopener noreferrer"};function f(E,T){const r=i("ExternalLinkIcon");return a(),s("div",null,[c,t("ul",null,[t("li",null,[t("p",null,[t("a",h,[e("getopt"),l(r)]),e(" windows 下命令行解析工具,其他平台不依赖。")])]),t("li",null,[t("p",null,[t("a",p,[e("uv_errno"),l(r)]),e(" 部分错误处理代码来自 libuv。")])]),t("li",null,[t("p",null,[t("a",g,[e("strptime_win"),l(r)]),e(" windows 下 strptime 移植函数代码,来源网络,出处已不可考。")])]),t("li",null,[t("p",null,[t("a",b,[e("mini"),l(r)]),e(" 来源于"),t("a",u,[e("github"),l(r)]),e(",经过整理和修改。")])]),t("li",null,[t("p",null,[t("a",_,[e("function_traits"),l(r)]),e("来源自网络,应该出自祁宇。")])]),t("li",null,[t("p",null,[t("a",m,[e("base64"),l(r)]),e(" 来源自网络,经过修改,应该出自 ffmpeg。")])]),t("li",null,[t("p",null,[t("a",x,[e("SHA1"),l(r)]),e(" 整理自"),t("a",y,[e("GitHub"),l(r)])])]),t("li",null,[t("p",null,[t("a",L,[e("MD5"),l(r)]),e(" 整理自 GitHub,已无法找到原始出处。")])])])])}const k=n(d,[["render",f],["__file","dependency.html.vue"]]);export{k as default}; diff --git a/assets/edges-80f1ebb6-89E8mCFH.js b/assets/edges-80f1ebb6-hR1YO9QC.js similarity index 99% rename from assets/edges-80f1ebb6-89E8mCFH.js rename to assets/edges-80f1ebb6-hR1YO9QC.js index dee6ee5..6fcfe00 100644 --- a/assets/edges-80f1ebb6-89E8mCFH.js +++ b/assets/edges-80f1ebb6-hR1YO9QC.js @@ -1,4 +1,4 @@ -import{q as $,c as w,d as q,an as Q,h as M,l as x,y as j,ao as nt}from"./mermaid.core-ygY5oRaR.js";import{c as at}from"./createText-aebacdfe-CTBuskZ8.js";import{l as lt}from"./line-EJoUorMM.js";const ct=(a,t,r,n)=>{t.forEach(e=>{ut[e](a,r,n)})},ht=(a,t,r)=>{x.trace("Making markers for ",r),a.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},ot=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},ft=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},pt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},yt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),a.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},dt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},xt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},bt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},gt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},ut={extension:ht,composition:ot,aggregation:ft,dependency:pt,lollipop:yt,point:dt,circle:xt,cross:bt,barb:gt},rr=ct;function wt(a,t){t&&a.attr("style",t)}function mt(a){const t=M(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=t.append("xhtml:div"),n=a.label,e=a.isNode?"nodeLabel":"edgeLabel";return r.html('"+n+""),wt(r,a.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),t.node()}const kt=(a,t,r,n)=>{let e=a||"";if(typeof e=="object"&&(e=e[0]),$(w().flowchart.htmlLabels)){e=e.replace(/\\n|\n/g,"
          "),x.info("vertexText"+e);const i={isNode:n,label:Q(e).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:t.replace("fill:","color:")};return mt(i)}else{const i=document.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("style",t.replace("color:","fill:"));let s=[];typeof e=="string"?s=e.split(/\\n|\n|/gi):Array.isArray(e)?s=e:s=[];for(const l of s){const c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),c.setAttribute("dy","1em"),c.setAttribute("x","0"),r?c.setAttribute("class","title-row"):c.setAttribute("class","row"),c.textContent=l.trim(),i.appendChild(c)}return i}},I=kt,_=async(a,t,r,n)=>{let e;const i=t.useHtmlLabels||$(w().flowchart.htmlLabels);r?e=r:e="node default";const s=a.insert("g").attr("class",e).attr("id",t.domId||t.id),l=s.insert("g").attr("class","label").attr("style",t.labelStyle);let c;t.labelText===void 0?c="":c=typeof t.labelText=="string"?t.labelText:t.labelText[0];const o=l.node();let h;t.labelType==="markdown"?h=at(l,q(Q(c),w()),{useHtmlLabels:i,width:t.width||w().flowchart.wrappingWidth,classes:"markdown-node-label"}):h=o.appendChild(I(q(Q(c),w()),t.labelStyle,!1,n));let f=h.getBBox();const y=t.padding/2;if($(w().flowchart.htmlLabels)){const p=h.children[0],u=M(h),k=p.getElementsByTagName("img");if(k){const g=c.replace(/]*>/g,"").trim()==="";await Promise.all([...k].map(d=>new Promise(b=>{function B(){if(d.style.display="flex",d.style.flexDirection="column",g){const C=w().fontSize?w().fontSize:window.getComputedStyle(document.body).fontSize,X=5;d.style.width=parseInt(C,10)*X+"px"}else d.style.width="100%";b(d)}setTimeout(()=>{d.complete&&B()}),d.addEventListener("error",B),d.addEventListener("load",B)})))}f=p.getBoundingClientRect(),u.attr("width",f.width),u.attr("height",f.height)}return i?l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):l.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),l.insert("rect",":first-child"),{shapeSvg:s,bbox:f,halfPadding:y,label:l}},v=(a,t)=>{const r=t.node().getBBox();a.width=r.width,a.height=r.height};function N(a,t,r,n){return a.insert("polygon",":first-child").attr("points",n.map(function(e){return e.x+","+e.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}function vt(a,t){return a.intersect(t)}function et(a,t,r,n){var e=a.x,i=a.y,s=e-n.x,l=i-n.y,c=Math.sqrt(t*t*l*l+r*r*s*s),o=Math.abs(t*r*s/c);n.x0}function Et(a,t,r){var n=a.x,e=a.y,i=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(u){s=Math.min(s,u.x),l=Math.min(l,u.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));for(var c=n-a.width/2-s,o=e-a.height/2-l,h=0;h1&&i.sort(function(u,k){var g=u.x-r.x,d=u.y-r.y,b=Math.sqrt(g*g+d*d),B=k.x-r.x,C=k.y-r.y,X=Math.sqrt(B*B+C*C);return b{var r=a.x,n=a.y,e=t.x-r,i=t.y-n,s=a.width/2,l=a.height/2,c,o;return Math.abs(i)*s>Math.abs(e)*l?(i<0&&(l=-l),c=i===0?0:l*e/i,o=l):(e<0&&(s=-s),c=s,o=e===0?0:s*i/e),{x:r+c,y:n+o}},Mt=Bt,m={node:vt,circle:Lt,ellipse:et,polygon:Et,rect:Mt},_t=async(a,t)=>{t.useHtmlLabels||w().flowchart.htmlLabels||(t.centerLabel=!0);const{shapeSvg:n,bbox:e,halfPadding:i}=await _(a,t,"node "+t.classes,!0);x.info("Classes = ",t.classes);const s=n.insert("rect",":first-child");return s.attr("rx",t.rx).attr("ry",t.ry).attr("x",-e.width/2-i).attr("y",-e.height/2-i).attr("width",e.width+t.padding).attr("height",e.height+t.padding),v(t,s),t.intersect=function(l){return m.rect(t,l)},n},Ct=_t,K=a=>a?" "+a:"",R=(a,t)=>`${t||"node default"}${K(a.classes)} ${K(a.class)}`,G=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=e+i,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];x.info("Question main (Circle)");const c=N(r,s,s,l);return c.attr("style",t.style),v(t,c),t.intersect=function(o){return x.warn("Intersect called"),m.polygon(t,l,o)},r},Tt=(a,t)=>{const r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,e=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",e.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(s){return m.circle(t,14,s)},r},Rt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=4,i=n.height+t.padding,s=i/e,l=n.width+2*s+t.padding,c=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-i/2},{x:l-s,y:-i},{x:s,y:-i},{x:0,y:-i/2}],o=N(r,l,i,c);return o.attr("style",t.style),v(t,o),t.intersect=function(h){return m.polygon(t,c,h)},r},It=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-i/2,y:0},{x:e,y:0},{x:e,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}];return N(r,e,i,s).attr("style",t.style),t.width=e+i,t.height=i,t.intersect=function(c){return m.polygon(t,s,c)},r},$t=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-2*i/6,y:0},{x:e-i/6,y:0},{x:e+2*i/6,y:-i},{x:i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ht=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:2*i/6,y:0},{x:e+i/6,y:0},{x:e-2*i/6,y:-i},{x:-i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Nt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-2*i/6,y:0},{x:e+2*i/6,y:0},{x:e-i/6,y:-i},{x:i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ot=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:i/6,y:0},{x:e-i/6,y:0},{x:e+2*i/6,y:-i},{x:-2*i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Xt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:0,y:0},{x:e+i/2,y:0},{x:e,y:-i/2},{x:e+i/2,y:-i},{x:0,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Yt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=e/2,s=i/(2.5+e/50),l=n.height+s+t.padding,c="M 0,"+s+" a "+i+","+s+" 0,0,0 "+e+" 0 a "+i+","+s+" 0,0,0 "+-e+" 0 l 0,"+l+" a "+i+","+s+" 0,0,0 "+e+" 0 l 0,"+-l,o=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-e/2+","+-(l/2+s)+")");return v(t,o),t.intersect=function(h){const f=m.rect(t,h),y=f.x-t.x;if(i!=0&&(Math.abs(y)t.height/2-s)){let p=s*s*(1-y*y/(i*i));p!=0&&(p=Math.sqrt(p)),p=s-p,h.y-t.y>0&&(p=-p),f.y+=p}return f},r},Wt=async(a,t)=>{const{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,"node "+t.classes+" "+t.class,!0),i=r.insert("rect",":first-child"),s=n.width+t.padding,l=n.height+t.padding;if(i.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",-n.width/2-e).attr("y",-n.height/2-e).attr("width",s).attr("height",l),t.props){const c=new Set(Object.keys(t.props));t.props.borders&&(st(i,t.props.borders,s,l),c.delete("borders")),c.forEach(o=>{x.warn(`Unknown node property ${o}`)})}return v(t,i),t.intersect=function(c){return m.rect(t,c)},r},Dt=async(a,t)=>{const{shapeSvg:r}=await _(a,t,"label",!0);x.trace("Classes = ",t.class);const n=r.insert("rect",":first-child"),e=0,i=0;if(n.attr("width",e).attr("height",i),r.attr("class","label edgeLabel"),t.props){const s=new Set(Object.keys(t.props));t.props.borders&&(st(n,t.props.borders,e,i),s.delete("borders")),s.forEach(l=>{x.warn(`Unknown node property ${l}`)})}return v(t,n),t.intersect=function(s){return m.rect(t,s)},r};function st(a,t,r,n){const e=[],i=l=>{e.push(l,0)},s=l=>{e.push(0,l)};t.includes("t")?(x.debug("add top border"),i(r)):s(r),t.includes("r")?(x.debug("add right border"),i(n)):s(n),t.includes("b")?(x.debug("add bottom border"),i(r)):s(r),t.includes("l")?(x.debug("add left border"),i(n)):s(n),a.attr("stroke-dasharray",e.join(" "))}const jt=(a,t)=>{let r;t.classes?r="node "+t.classes:r="node default";const n=a.insert("g").attr("class",r).attr("id",t.domId||t.id),e=n.insert("rect",":first-child"),i=n.insert("line"),s=n.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText;let c="";typeof l=="object"?c=l[0]:c=l,x.info("Label text abc79",c,l,typeof l=="object");const o=s.node().appendChild(I(c,t.labelStyle,!0,!0));let h={width:0,height:0};if($(w().flowchart.htmlLabels)){const k=o.children[0],g=M(o);h=k.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}x.info("Text 2",l);const f=l.slice(1,l.length);let y=o.getBBox();const p=s.node().appendChild(I(f.join?f.join("
          "):f,t.labelStyle,!0,!0));if($(w().flowchart.htmlLabels)){const k=p.children[0],g=M(p);h=k.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}const u=t.padding/2;return M(p).attr("transform","translate( "+(h.width>y.width?0:(y.width-h.width)/2)+", "+(y.height+u+5)+")"),M(o).attr("transform","translate( "+(h.width{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.height+t.padding,i=n.width+e/4+t.padding,s=r.insert("rect",":first-child").attr("style",t.style).attr("rx",e/2).attr("ry",e/2).attr("x",-i/2).attr("y",-e/2).attr("width",i).attr("height",e);return v(t,s),t.intersect=function(l){return m.rect(t,l)},r},Ut=async(a,t)=>{const{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,R(t,void 0),!0),i=r.insert("circle",":first-child");return i.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("Circle main"),v(t,i),t.intersect=function(s){return x.info("Circle intersect",t,n.width/2+e,s),m.circle(t,n.width/2+e,s)},r},zt=async(a,t)=>{const{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,R(t,void 0),!0),i=5,s=r.insert("g",":first-child"),l=s.insert("circle"),c=s.insert("circle");return s.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e+i).attr("width",n.width+t.padding+i*2).attr("height",n.height+t.padding+i*2),c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("DoubleCircle main"),v(t,l),t.intersect=function(o){return x.info("DoubleCircle intersect",t,n.width/2+e+i,o),m.circle(t,n.width/2+e+i,o)},r},Zt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:0,y:0},{x:e,y:0},{x:e,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:e+8,y:0},{x:e+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ft=(a,t)=>{const r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),v(t,n),t.intersect=function(e){return m.circle(t,7,e)},r},P=(a,t,r)=>{const n=a.insert("g").attr("class","node default").attr("id",t.domId||t.id);let e=70,i=10;r==="LR"&&(e=10,i=70);const s=n.append("rect").attr("x",-1*e/2).attr("y",-1*i/2).attr("width",e).attr("height",i).attr("class","fork-join");return v(t,s),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return m.rect(t,l)},n},Qt=(a,t)=>{const r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child"),e=r.insert("circle",":first-child");return e.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),v(t,e),t.intersect=function(i){return m.circle(t,7,i)},r},Vt=(a,t)=>{const r=t.padding/2,n=4,e=8;let i;t.classes?i="node "+t.classes:i="node default";const s=a.insert("g").attr("class",i).attr("id",t.domId||t.id),l=s.insert("rect",":first-child"),c=s.insert("line"),o=s.insert("line");let h=0,f=n;const y=s.insert("g").attr("class","label");let p=0;const u=t.classData.annotations&&t.classData.annotations[0],k=t.classData.annotations[0]?"«"+t.classData.annotations[0]+"»":"",g=y.node().appendChild(I(k,t.labelStyle,!0,!0));let d=g.getBBox();if($(w().flowchart.htmlLabels)){const L=g.children[0],S=M(g);d=L.getBoundingClientRect(),S.attr("width",d.width),S.attr("height",d.height)}t.classData.annotations[0]&&(f+=d.height+n,h+=d.width);let b=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(w().flowchart.htmlLabels?b+="<"+t.classData.type+">":b+="<"+t.classData.type+">");const B=y.node().appendChild(I(b,t.labelStyle,!0,!0));M(B).attr("class","classTitle");let C=B.getBBox();if($(w().flowchart.htmlLabels)){const L=B.children[0],S=M(B);C=L.getBoundingClientRect(),S.attr("width",C.width),S.attr("height",C.height)}f+=C.height+n,C.width>h&&(h=C.width);const X=[];t.classData.members.forEach(L=>{const S=L.getDisplayDetails();let Y=S.displayText;w().flowchart.htmlLabels&&(Y=Y.replace(//g,">"));const H=y.node().appendChild(I(Y,S.cssStyle?S.cssStyle:t.labelStyle,!0,!0));let T=H.getBBox();if($(w().flowchart.htmlLabels)){const F=H.children[0],D=M(H);T=F.getBoundingClientRect(),D.attr("width",T.width),D.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+n,X.push(H)}),f+=e;const V=[];if(t.classData.methods.forEach(L=>{const S=L.getDisplayDetails();let Y=S.displayText;w().flowchart.htmlLabels&&(Y=Y.replace(//g,">"));const H=y.node().appendChild(I(Y,S.cssStyle?S.cssStyle:t.labelStyle,!0,!0));let T=H.getBBox();if($(w().flowchart.htmlLabels)){const F=H.children[0],D=M(H);T=F.getBoundingClientRect(),D.attr("width",T.width),D.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+n,V.push(H)}),f+=e,u){let L=(h-d.width)/2;M(g).attr("transform","translate( "+(-1*h/2+L)+", "+-1*f/2+")"),p=d.height+n}let it=(h-C.width)/2;return M(B).attr("transform","translate( "+(-1*h/2+it)+", "+(-1*f/2+p)+")"),p+=C.height+n,c.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-f/2-r+e+p).attr("y2",-f/2-r+e+p),p+=e,X.forEach(L=>{M(L).attr("transform","translate( "+-h/2+", "+(-1*f/2+p+e/2)+")");const S=L==null?void 0:L.getBBox();p+=((S==null?void 0:S.height)??0)+n}),p+=e,o.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-f/2-r+e+p).attr("y2",-f/2-r+e+p),p+=e,V.forEach(L=>{M(L).attr("transform","translate( "+-h/2+", "+(-1*f/2+p)+")");const S=L==null?void 0:L.getBBox();p+=((S==null?void 0:S.height)??0)+n}),l.attr("class","outer title-state").attr("x",-h/2-r).attr("y",-(f/2)-r).attr("width",h+t.padding).attr("height",f+t.padding),v(t,l),t.intersect=function(L){return m.rect(t,L)},s},tt={rhombus:G,question:G,rect:Wt,labelRect:Dt,rectWithTitle:jt,choice:Tt,circle:Ut,doublecircle:zt,stadium:At,hexagon:Rt,rect_left_inv_arrow:It,lean_right:$t,lean_left:Ht,trapezoid:Nt,inv_trapezoid:Ot,rect_right_inv_arrow:Xt,cylinder:Yt,start:Ft,end:Qt,note:Ct,subroutine:Zt,fork:P,join:P,class_box:Vt};let W={};const ar=async(a,t,r)=>{let n,e;if(t.link){let i;w().securityLevel==="sandbox"?i="_top":t.linkTarget&&(i=t.linkTarget||"_blank"),n=a.insert("svg:a").attr("xlink:href",t.link).attr("target",i),e=await tt[t.shape](n,t,r)}else e=await tt[t.shape](a,t,r),n=e;return t.tooltip&&e.attr("title",t.tooltip),t.class&&e.attr("class","node default "+t.class),W[t.id]=n,t.haveCallback&&W[t.id].attr("class",W[t.id].attr("class")+" clickable"),n},er=(a,t)=>{W[t.id]=a},sr=()=>{W={}},ir=a=>{const t=W[a.id];x.trace("Transforming node",a.diff,a,"translate("+(a.x-a.width/2-5)+", "+a.width/2+")");const r=8,n=a.diff||0;return a.clusterNode?t.attr("transform","translate("+(a.x+n-a.width/2)+", "+(a.y-a.height/2-r)+")"):t.attr("transform","translate("+a.x+", "+a.y+")"),n},O={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:5.3};function A(a,t){a=z(a),t=z(t);const[r,n]=[a.x,a.y],[e,i]=[t.x,t.y],s=e-r,l=i-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}const z=a=>Array.isArray(a)?{x:a[0],y:a[1]}:a,qt=a=>({x:function(t,r,n){let e=0;if(r===0&&Object.hasOwn(O,a.arrowTypeStart)){const{angle:i,deltaX:s}=A(n[0],n[1]);e=O[a.arrowTypeStart]*Math.cos(i)*(s>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(O,a.arrowTypeEnd)){const{angle:i,deltaX:s}=A(n[n.length-1],n[n.length-2]);e=O[a.arrowTypeEnd]*Math.cos(i)*(s>=0?1:-1)}return z(t).x+e},y:function(t,r,n){let e=0;if(r===0&&Object.hasOwn(O,a.arrowTypeStart)){const{angle:i,deltaY:s}=A(n[0],n[1]);e=O[a.arrowTypeStart]*Math.abs(Math.sin(i))*(s>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(O,a.arrowTypeEnd)){const{angle:i,deltaY:s}=A(n[n.length-1],n[n.length-2]);e=O[a.arrowTypeEnd]*Math.abs(Math.sin(i))*(s>=0?1:-1)}return z(t).y+e}});let Z={},E={};const nr=()=>{Z={},E={}},lr=(a,t)=>{const r=$(w().flowchart.htmlLabels),n=t.labelType==="markdown"?at(a,t.label,{style:t.labelStyle,useHtmlLabels:r,addSvgBackground:!0}):I(t.label,t.labelStyle);x.info("abc82",t,t.labelType);const e=a.insert("g").attr("class","edgeLabel"),i=e.insert("g").attr("class","label");i.node().appendChild(n);let s=n.getBBox();if(r){const c=n.children[0],o=M(n);s=c.getBoundingClientRect(),o.attr("width",s.width),o.attr("height",s.height)}i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),Z[t.id]=e,t.width=s.width,t.height=s.height;let l;if(t.startLabelLeft){const c=I(t.startLabelLeft,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),E[t.id]||(E[t.id]={}),E[t.id].startLeft=o,U(l,t.startLabelLeft)}if(t.startLabelRight){const c=I(t.startLabelRight,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=o.node().appendChild(c),h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),E[t.id]||(E[t.id]={}),E[t.id].startRight=o,U(l,t.startLabelRight)}if(t.endLabelLeft){const c=I(t.endLabelLeft,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),E[t.id]||(E[t.id]={}),E[t.id].endLeft=o,U(l,t.endLabelLeft)}if(t.endLabelRight){const c=I(t.endLabelRight,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),E[t.id]||(E[t.id]={}),E[t.id].endRight=o,U(l,t.endLabelRight)}return n};function U(a,t){w().flowchart.htmlLabels&&a&&(a.style.width=t.length*9+"px",a.style.height="12px")}const cr=(a,t)=>{x.info("Moving label abc78 ",a.id,a.label,Z[a.id]);let r=t.updatedPath?t.updatedPath:t.originalPath;if(a.label){const n=Z[a.id];let e=a.x,i=a.y;if(r){const s=j.calcLabelPosition(r);x.info("Moving label "+a.label+" from (",e,",",i,") to (",s.x,",",s.y,") abc78"),t.updatedPath&&(e=s.x,i=s.y)}n.attr("transform","translate("+e+", "+i+")")}if(a.startLabelLeft){const n=E[a.id].startLeft;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeStart?10:0,"start_left",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.startLabelRight){const n=E[a.id].startRight;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeStart?10:0,"start_right",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.endLabelLeft){const n=E[a.id].endLeft;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeEnd?10:0,"end_left",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.endLabelRight){const n=E[a.id].endRight;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeEnd?10:0,"end_right",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}},Jt=(a,t)=>{const r=a.x,n=a.y,e=Math.abs(t.x-r),i=Math.abs(t.y-n),s=a.width/2,l=a.height/2;return e>=s||i>=l},Kt=(a,t,r)=>{x.warn(`intersection calc abc89: +import{q as $,c as w,d as q,an as Q,h as M,l as x,y as j,ao as nt}from"./mermaid.core-YBgJFCkH.js";import{c as at}from"./createText-aebacdfe-VuGI-o_f.js";import{l as lt}from"./line-QxBjBe1b.js";const ct=(a,t,r,n)=>{t.forEach(e=>{ut[e](a,r,n)})},ht=(a,t,r)=>{x.trace("Making markers for ",r),a.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},ot=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},ft=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},pt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},yt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),a.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},dt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},xt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},bt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},gt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},ut={extension:ht,composition:ot,aggregation:ft,dependency:pt,lollipop:yt,point:dt,circle:xt,cross:bt,barb:gt},rr=ct;function wt(a,t){t&&a.attr("style",t)}function mt(a){const t=M(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=t.append("xhtml:div"),n=a.label,e=a.isNode?"nodeLabel":"edgeLabel";return r.html('"+n+""),wt(r,a.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),t.node()}const kt=(a,t,r,n)=>{let e=a||"";if(typeof e=="object"&&(e=e[0]),$(w().flowchart.htmlLabels)){e=e.replace(/\\n|\n/g,"
          "),x.info("vertexText"+e);const i={isNode:n,label:Q(e).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:t.replace("fill:","color:")};return mt(i)}else{const i=document.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("style",t.replace("color:","fill:"));let s=[];typeof e=="string"?s=e.split(/\\n|\n|/gi):Array.isArray(e)?s=e:s=[];for(const l of s){const c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),c.setAttribute("dy","1em"),c.setAttribute("x","0"),r?c.setAttribute("class","title-row"):c.setAttribute("class","row"),c.textContent=l.trim(),i.appendChild(c)}return i}},I=kt,_=async(a,t,r,n)=>{let e;const i=t.useHtmlLabels||$(w().flowchart.htmlLabels);r?e=r:e="node default";const s=a.insert("g").attr("class",e).attr("id",t.domId||t.id),l=s.insert("g").attr("class","label").attr("style",t.labelStyle);let c;t.labelText===void 0?c="":c=typeof t.labelText=="string"?t.labelText:t.labelText[0];const o=l.node();let h;t.labelType==="markdown"?h=at(l,q(Q(c),w()),{useHtmlLabels:i,width:t.width||w().flowchart.wrappingWidth,classes:"markdown-node-label"}):h=o.appendChild(I(q(Q(c),w()),t.labelStyle,!1,n));let f=h.getBBox();const y=t.padding/2;if($(w().flowchart.htmlLabels)){const p=h.children[0],u=M(h),k=p.getElementsByTagName("img");if(k){const g=c.replace(/]*>/g,"").trim()==="";await Promise.all([...k].map(d=>new Promise(b=>{function B(){if(d.style.display="flex",d.style.flexDirection="column",g){const C=w().fontSize?w().fontSize:window.getComputedStyle(document.body).fontSize,X=5;d.style.width=parseInt(C,10)*X+"px"}else d.style.width="100%";b(d)}setTimeout(()=>{d.complete&&B()}),d.addEventListener("error",B),d.addEventListener("load",B)})))}f=p.getBoundingClientRect(),u.attr("width",f.width),u.attr("height",f.height)}return i?l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):l.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),l.insert("rect",":first-child"),{shapeSvg:s,bbox:f,halfPadding:y,label:l}},v=(a,t)=>{const r=t.node().getBBox();a.width=r.width,a.height=r.height};function N(a,t,r,n){return a.insert("polygon",":first-child").attr("points",n.map(function(e){return e.x+","+e.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}function vt(a,t){return a.intersect(t)}function et(a,t,r,n){var e=a.x,i=a.y,s=e-n.x,l=i-n.y,c=Math.sqrt(t*t*l*l+r*r*s*s),o=Math.abs(t*r*s/c);n.x0}function Et(a,t,r){var n=a.x,e=a.y,i=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(u){s=Math.min(s,u.x),l=Math.min(l,u.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));for(var c=n-a.width/2-s,o=e-a.height/2-l,h=0;h1&&i.sort(function(u,k){var g=u.x-r.x,d=u.y-r.y,b=Math.sqrt(g*g+d*d),B=k.x-r.x,C=k.y-r.y,X=Math.sqrt(B*B+C*C);return b{var r=a.x,n=a.y,e=t.x-r,i=t.y-n,s=a.width/2,l=a.height/2,c,o;return Math.abs(i)*s>Math.abs(e)*l?(i<0&&(l=-l),c=i===0?0:l*e/i,o=l):(e<0&&(s=-s),c=s,o=e===0?0:s*i/e),{x:r+c,y:n+o}},Mt=Bt,m={node:vt,circle:Lt,ellipse:et,polygon:Et,rect:Mt},_t=async(a,t)=>{t.useHtmlLabels||w().flowchart.htmlLabels||(t.centerLabel=!0);const{shapeSvg:n,bbox:e,halfPadding:i}=await _(a,t,"node "+t.classes,!0);x.info("Classes = ",t.classes);const s=n.insert("rect",":first-child");return s.attr("rx",t.rx).attr("ry",t.ry).attr("x",-e.width/2-i).attr("y",-e.height/2-i).attr("width",e.width+t.padding).attr("height",e.height+t.padding),v(t,s),t.intersect=function(l){return m.rect(t,l)},n},Ct=_t,K=a=>a?" "+a:"",R=(a,t)=>`${t||"node default"}${K(a.classes)} ${K(a.class)}`,G=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=e+i,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];x.info("Question main (Circle)");const c=N(r,s,s,l);return c.attr("style",t.style),v(t,c),t.intersect=function(o){return x.warn("Intersect called"),m.polygon(t,l,o)},r},Tt=(a,t)=>{const r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,e=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",e.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(s){return m.circle(t,14,s)},r},Rt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=4,i=n.height+t.padding,s=i/e,l=n.width+2*s+t.padding,c=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-i/2},{x:l-s,y:-i},{x:s,y:-i},{x:0,y:-i/2}],o=N(r,l,i,c);return o.attr("style",t.style),v(t,o),t.intersect=function(h){return m.polygon(t,c,h)},r},It=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-i/2,y:0},{x:e,y:0},{x:e,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}];return N(r,e,i,s).attr("style",t.style),t.width=e+i,t.height=i,t.intersect=function(c){return m.polygon(t,s,c)},r},$t=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-2*i/6,y:0},{x:e-i/6,y:0},{x:e+2*i/6,y:-i},{x:i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ht=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:2*i/6,y:0},{x:e+i/6,y:0},{x:e-2*i/6,y:-i},{x:-i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Nt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-2*i/6,y:0},{x:e+2*i/6,y:0},{x:e-i/6,y:-i},{x:i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ot=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:i/6,y:0},{x:e-i/6,y:0},{x:e+2*i/6,y:-i},{x:-2*i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Xt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:0,y:0},{x:e+i/2,y:0},{x:e,y:-i/2},{x:e+i/2,y:-i},{x:0,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Yt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=e/2,s=i/(2.5+e/50),l=n.height+s+t.padding,c="M 0,"+s+" a "+i+","+s+" 0,0,0 "+e+" 0 a "+i+","+s+" 0,0,0 "+-e+" 0 l 0,"+l+" a "+i+","+s+" 0,0,0 "+e+" 0 l 0,"+-l,o=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-e/2+","+-(l/2+s)+")");return v(t,o),t.intersect=function(h){const f=m.rect(t,h),y=f.x-t.x;if(i!=0&&(Math.abs(y)t.height/2-s)){let p=s*s*(1-y*y/(i*i));p!=0&&(p=Math.sqrt(p)),p=s-p,h.y-t.y>0&&(p=-p),f.y+=p}return f},r},Wt=async(a,t)=>{const{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,"node "+t.classes+" "+t.class,!0),i=r.insert("rect",":first-child"),s=n.width+t.padding,l=n.height+t.padding;if(i.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",-n.width/2-e).attr("y",-n.height/2-e).attr("width",s).attr("height",l),t.props){const c=new Set(Object.keys(t.props));t.props.borders&&(st(i,t.props.borders,s,l),c.delete("borders")),c.forEach(o=>{x.warn(`Unknown node property ${o}`)})}return v(t,i),t.intersect=function(c){return m.rect(t,c)},r},Dt=async(a,t)=>{const{shapeSvg:r}=await _(a,t,"label",!0);x.trace("Classes = ",t.class);const n=r.insert("rect",":first-child"),e=0,i=0;if(n.attr("width",e).attr("height",i),r.attr("class","label edgeLabel"),t.props){const s=new Set(Object.keys(t.props));t.props.borders&&(st(n,t.props.borders,e,i),s.delete("borders")),s.forEach(l=>{x.warn(`Unknown node property ${l}`)})}return v(t,n),t.intersect=function(s){return m.rect(t,s)},r};function st(a,t,r,n){const e=[],i=l=>{e.push(l,0)},s=l=>{e.push(0,l)};t.includes("t")?(x.debug("add top border"),i(r)):s(r),t.includes("r")?(x.debug("add right border"),i(n)):s(n),t.includes("b")?(x.debug("add bottom border"),i(r)):s(r),t.includes("l")?(x.debug("add left border"),i(n)):s(n),a.attr("stroke-dasharray",e.join(" "))}const jt=(a,t)=>{let r;t.classes?r="node "+t.classes:r="node default";const n=a.insert("g").attr("class",r).attr("id",t.domId||t.id),e=n.insert("rect",":first-child"),i=n.insert("line"),s=n.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText;let c="";typeof l=="object"?c=l[0]:c=l,x.info("Label text abc79",c,l,typeof l=="object");const o=s.node().appendChild(I(c,t.labelStyle,!0,!0));let h={width:0,height:0};if($(w().flowchart.htmlLabels)){const k=o.children[0],g=M(o);h=k.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}x.info("Text 2",l);const f=l.slice(1,l.length);let y=o.getBBox();const p=s.node().appendChild(I(f.join?f.join("
          "):f,t.labelStyle,!0,!0));if($(w().flowchart.htmlLabels)){const k=p.children[0],g=M(p);h=k.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}const u=t.padding/2;return M(p).attr("transform","translate( "+(h.width>y.width?0:(y.width-h.width)/2)+", "+(y.height+u+5)+")"),M(o).attr("transform","translate( "+(h.width{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.height+t.padding,i=n.width+e/4+t.padding,s=r.insert("rect",":first-child").attr("style",t.style).attr("rx",e/2).attr("ry",e/2).attr("x",-i/2).attr("y",-e/2).attr("width",i).attr("height",e);return v(t,s),t.intersect=function(l){return m.rect(t,l)},r},Ut=async(a,t)=>{const{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,R(t,void 0),!0),i=r.insert("circle",":first-child");return i.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("Circle main"),v(t,i),t.intersect=function(s){return x.info("Circle intersect",t,n.width/2+e,s),m.circle(t,n.width/2+e,s)},r},zt=async(a,t)=>{const{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,R(t,void 0),!0),i=5,s=r.insert("g",":first-child"),l=s.insert("circle"),c=s.insert("circle");return s.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e+i).attr("width",n.width+t.padding+i*2).attr("height",n.height+t.padding+i*2),c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("DoubleCircle main"),v(t,l),t.intersect=function(o){return x.info("DoubleCircle intersect",t,n.width/2+e+i,o),m.circle(t,n.width/2+e+i,o)},r},Zt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:0,y:0},{x:e,y:0},{x:e,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:e+8,y:0},{x:e+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ft=(a,t)=>{const r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),v(t,n),t.intersect=function(e){return m.circle(t,7,e)},r},P=(a,t,r)=>{const n=a.insert("g").attr("class","node default").attr("id",t.domId||t.id);let e=70,i=10;r==="LR"&&(e=10,i=70);const s=n.append("rect").attr("x",-1*e/2).attr("y",-1*i/2).attr("width",e).attr("height",i).attr("class","fork-join");return v(t,s),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return m.rect(t,l)},n},Qt=(a,t)=>{const r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child"),e=r.insert("circle",":first-child");return e.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),v(t,e),t.intersect=function(i){return m.circle(t,7,i)},r},Vt=(a,t)=>{const r=t.padding/2,n=4,e=8;let i;t.classes?i="node "+t.classes:i="node default";const s=a.insert("g").attr("class",i).attr("id",t.domId||t.id),l=s.insert("rect",":first-child"),c=s.insert("line"),o=s.insert("line");let h=0,f=n;const y=s.insert("g").attr("class","label");let p=0;const u=t.classData.annotations&&t.classData.annotations[0],k=t.classData.annotations[0]?"«"+t.classData.annotations[0]+"»":"",g=y.node().appendChild(I(k,t.labelStyle,!0,!0));let d=g.getBBox();if($(w().flowchart.htmlLabels)){const L=g.children[0],S=M(g);d=L.getBoundingClientRect(),S.attr("width",d.width),S.attr("height",d.height)}t.classData.annotations[0]&&(f+=d.height+n,h+=d.width);let b=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(w().flowchart.htmlLabels?b+="<"+t.classData.type+">":b+="<"+t.classData.type+">");const B=y.node().appendChild(I(b,t.labelStyle,!0,!0));M(B).attr("class","classTitle");let C=B.getBBox();if($(w().flowchart.htmlLabels)){const L=B.children[0],S=M(B);C=L.getBoundingClientRect(),S.attr("width",C.width),S.attr("height",C.height)}f+=C.height+n,C.width>h&&(h=C.width);const X=[];t.classData.members.forEach(L=>{const S=L.getDisplayDetails();let Y=S.displayText;w().flowchart.htmlLabels&&(Y=Y.replace(//g,">"));const H=y.node().appendChild(I(Y,S.cssStyle?S.cssStyle:t.labelStyle,!0,!0));let T=H.getBBox();if($(w().flowchart.htmlLabels)){const F=H.children[0],D=M(H);T=F.getBoundingClientRect(),D.attr("width",T.width),D.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+n,X.push(H)}),f+=e;const V=[];if(t.classData.methods.forEach(L=>{const S=L.getDisplayDetails();let Y=S.displayText;w().flowchart.htmlLabels&&(Y=Y.replace(//g,">"));const H=y.node().appendChild(I(Y,S.cssStyle?S.cssStyle:t.labelStyle,!0,!0));let T=H.getBBox();if($(w().flowchart.htmlLabels)){const F=H.children[0],D=M(H);T=F.getBoundingClientRect(),D.attr("width",T.width),D.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+n,V.push(H)}),f+=e,u){let L=(h-d.width)/2;M(g).attr("transform","translate( "+(-1*h/2+L)+", "+-1*f/2+")"),p=d.height+n}let it=(h-C.width)/2;return M(B).attr("transform","translate( "+(-1*h/2+it)+", "+(-1*f/2+p)+")"),p+=C.height+n,c.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-f/2-r+e+p).attr("y2",-f/2-r+e+p),p+=e,X.forEach(L=>{M(L).attr("transform","translate( "+-h/2+", "+(-1*f/2+p+e/2)+")");const S=L==null?void 0:L.getBBox();p+=((S==null?void 0:S.height)??0)+n}),p+=e,o.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-f/2-r+e+p).attr("y2",-f/2-r+e+p),p+=e,V.forEach(L=>{M(L).attr("transform","translate( "+-h/2+", "+(-1*f/2+p)+")");const S=L==null?void 0:L.getBBox();p+=((S==null?void 0:S.height)??0)+n}),l.attr("class","outer title-state").attr("x",-h/2-r).attr("y",-(f/2)-r).attr("width",h+t.padding).attr("height",f+t.padding),v(t,l),t.intersect=function(L){return m.rect(t,L)},s},tt={rhombus:G,question:G,rect:Wt,labelRect:Dt,rectWithTitle:jt,choice:Tt,circle:Ut,doublecircle:zt,stadium:At,hexagon:Rt,rect_left_inv_arrow:It,lean_right:$t,lean_left:Ht,trapezoid:Nt,inv_trapezoid:Ot,rect_right_inv_arrow:Xt,cylinder:Yt,start:Ft,end:Qt,note:Ct,subroutine:Zt,fork:P,join:P,class_box:Vt};let W={};const ar=async(a,t,r)=>{let n,e;if(t.link){let i;w().securityLevel==="sandbox"?i="_top":t.linkTarget&&(i=t.linkTarget||"_blank"),n=a.insert("svg:a").attr("xlink:href",t.link).attr("target",i),e=await tt[t.shape](n,t,r)}else e=await tt[t.shape](a,t,r),n=e;return t.tooltip&&e.attr("title",t.tooltip),t.class&&e.attr("class","node default "+t.class),W[t.id]=n,t.haveCallback&&W[t.id].attr("class",W[t.id].attr("class")+" clickable"),n},er=(a,t)=>{W[t.id]=a},sr=()=>{W={}},ir=a=>{const t=W[a.id];x.trace("Transforming node",a.diff,a,"translate("+(a.x-a.width/2-5)+", "+a.width/2+")");const r=8,n=a.diff||0;return a.clusterNode?t.attr("transform","translate("+(a.x+n-a.width/2)+", "+(a.y-a.height/2-r)+")"):t.attr("transform","translate("+a.x+", "+a.y+")"),n},O={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:5.3};function A(a,t){a=z(a),t=z(t);const[r,n]=[a.x,a.y],[e,i]=[t.x,t.y],s=e-r,l=i-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}const z=a=>Array.isArray(a)?{x:a[0],y:a[1]}:a,qt=a=>({x:function(t,r,n){let e=0;if(r===0&&Object.hasOwn(O,a.arrowTypeStart)){const{angle:i,deltaX:s}=A(n[0],n[1]);e=O[a.arrowTypeStart]*Math.cos(i)*(s>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(O,a.arrowTypeEnd)){const{angle:i,deltaX:s}=A(n[n.length-1],n[n.length-2]);e=O[a.arrowTypeEnd]*Math.cos(i)*(s>=0?1:-1)}return z(t).x+e},y:function(t,r,n){let e=0;if(r===0&&Object.hasOwn(O,a.arrowTypeStart)){const{angle:i,deltaY:s}=A(n[0],n[1]);e=O[a.arrowTypeStart]*Math.abs(Math.sin(i))*(s>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(O,a.arrowTypeEnd)){const{angle:i,deltaY:s}=A(n[n.length-1],n[n.length-2]);e=O[a.arrowTypeEnd]*Math.abs(Math.sin(i))*(s>=0?1:-1)}return z(t).y+e}});let Z={},E={};const nr=()=>{Z={},E={}},lr=(a,t)=>{const r=$(w().flowchart.htmlLabels),n=t.labelType==="markdown"?at(a,t.label,{style:t.labelStyle,useHtmlLabels:r,addSvgBackground:!0}):I(t.label,t.labelStyle);x.info("abc82",t,t.labelType);const e=a.insert("g").attr("class","edgeLabel"),i=e.insert("g").attr("class","label");i.node().appendChild(n);let s=n.getBBox();if(r){const c=n.children[0],o=M(n);s=c.getBoundingClientRect(),o.attr("width",s.width),o.attr("height",s.height)}i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),Z[t.id]=e,t.width=s.width,t.height=s.height;let l;if(t.startLabelLeft){const c=I(t.startLabelLeft,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),E[t.id]||(E[t.id]={}),E[t.id].startLeft=o,U(l,t.startLabelLeft)}if(t.startLabelRight){const c=I(t.startLabelRight,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=o.node().appendChild(c),h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),E[t.id]||(E[t.id]={}),E[t.id].startRight=o,U(l,t.startLabelRight)}if(t.endLabelLeft){const c=I(t.endLabelLeft,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),E[t.id]||(E[t.id]={}),E[t.id].endLeft=o,U(l,t.endLabelLeft)}if(t.endLabelRight){const c=I(t.endLabelRight,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),E[t.id]||(E[t.id]={}),E[t.id].endRight=o,U(l,t.endLabelRight)}return n};function U(a,t){w().flowchart.htmlLabels&&a&&(a.style.width=t.length*9+"px",a.style.height="12px")}const cr=(a,t)=>{x.info("Moving label abc78 ",a.id,a.label,Z[a.id]);let r=t.updatedPath?t.updatedPath:t.originalPath;if(a.label){const n=Z[a.id];let e=a.x,i=a.y;if(r){const s=j.calcLabelPosition(r);x.info("Moving label "+a.label+" from (",e,",",i,") to (",s.x,",",s.y,") abc78"),t.updatedPath&&(e=s.x,i=s.y)}n.attr("transform","translate("+e+", "+i+")")}if(a.startLabelLeft){const n=E[a.id].startLeft;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeStart?10:0,"start_left",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.startLabelRight){const n=E[a.id].startRight;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeStart?10:0,"start_right",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.endLabelLeft){const n=E[a.id].endLeft;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeEnd?10:0,"end_left",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.endLabelRight){const n=E[a.id].endRight;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeEnd?10:0,"end_right",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}},Jt=(a,t)=>{const r=a.x,n=a.y,e=Math.abs(t.x-r),i=Math.abs(t.y-n),s=a.width/2,l=a.height/2;return e>=s||i>=l},Kt=(a,t,r)=>{x.warn(`intersection calc abc89: outsidePoint: ${JSON.stringify(t)} insidePoint : ${JSON.stringify(r)} node : x:${a.x} y:${a.y} w:${a.width} h:${a.height}`);const n=a.x,e=a.y,i=Math.abs(n-r.x),s=a.width/2;let l=r.xMath.abs(n-t.x)*c){let f=r.y{x.warn("abc88 cutPathAtIntersect",a,t);let r=[],n=a[0],e=!1;return a.forEach(i=>{if(x.info("abc88 checking point",i,t),!Jt(t,i)&&!e){const s=Kt(t,n,i);x.warn("abc88 inside",i,n,s),x.warn("abc88 intersection",s);let l=!1;r.forEach(c=>{l=l||c.x===s.x&&c.y===s.y}),r.some(c=>c.x===s.x&&c.y===s.y)?x.warn("abc88 no intersect",s,r):r.push(s),e=!0}else x.warn("abc88 outside",i,n),n=i,e||r.push(i)}),x.warn("abc88 returning points",r),r},hr=function(a,t,r,n,e,i,s){let l=r.points,c=!1;const o=i.node(t.v);var h=i.node(t.w);x.info("abc88 InsertEdge: ",r),h.intersect&&o.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(o.intersect(l[0])),x.info("Last point",l[l.length-1],h,h.intersect(l[l.length-1])),l.push(h.intersect(l[l.length-1]))),r.toCluster&&(x.info("to cluster abc88",n[r.toCluster]),l=rt(r.points,n[r.toCluster].node),c=!0),r.fromCluster&&(x.info("from cluster abc88",n[r.fromCluster]),l=rt(l.reverse(),n[r.fromCluster].node).reverse(),c=!0);const f=l.filter(C=>!Number.isNaN(C.y));let y=nt;r.curve&&(e==="graph"||e==="flowchart")&&(y=r.curve);const{x:p,y:u}=qt(r),k=lt().x(p).y(u).curve(y);let g;switch(r.thickness){case"normal":g="edge-thickness-normal";break;case"thick":g="edge-thickness-thick";break;case"invisible":g="edge-thickness-thick";break;default:g=""}switch(r.pattern){case"solid":g+=" edge-pattern-solid";break;case"dotted":g+=" edge-pattern-dotted";break;case"dashed":g+=" edge-pattern-dashed";break}const d=a.append("path").attr("d",k(f)).attr("id",r.id).attr("class"," "+g+(r.classes?" "+r.classes:"")).attr("style",r.style);let b="";switch((w().flowchart.arrowMarkerAbsolute||w().state.arrowMarkerAbsolute)&&(b=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,b=b.replace(/\(/g,"\\("),b=b.replace(/\)/g,"\\)")),x.info("arrowTypeStart",r.arrowTypeStart),x.info("arrowTypeEnd",r.arrowTypeEnd),r.arrowTypeStart){case"arrow_cross":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-crossStart)");break;case"arrow_point":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-pointStart)");break;case"arrow_barb":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-barbStart)");break;case"arrow_circle":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-circleStart)");break;case"aggregation":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-aggregationStart)");break;case"extension":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-extensionStart)");break;case"composition":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-compositionStart)");break;case"dependency":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-dependencyStart)");break;case"lollipop":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-lollipopStart)");break}switch(r.arrowTypeEnd){case"arrow_cross":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-crossEnd)");break;case"arrow_point":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-pointEnd)");break;case"arrow_barb":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-barbEnd)");break;case"arrow_circle":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-circleEnd)");break;case"aggregation":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-aggregationEnd)");break;case"extension":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-extensionEnd)");break;case"composition":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-compositionEnd)");break;case"dependency":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-dependencyEnd)");break;case"lollipop":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-lollipopEnd)");break}let B={};return c&&(B.updatedPath=l),B.originalPath=r.points,B};export{ar as a,lr as b,hr as c,cr as d,sr as e,nr as f,I as g,Mt as h,rr as i,qt as j,_ as l,ir as p,er as s,v as u}; diff --git a/assets/erDiagram-9cfc3649-xP3o3QeA.js b/assets/erDiagram-9cfc3649-wT9fM43B.js similarity index 70% rename from assets/erDiagram-9cfc3649-xP3o3QeA.js rename to assets/erDiagram-9cfc3649-wT9fM43B.js index e38144d..bfd0173 100644 --- a/assets/erDiagram-9cfc3649-xP3o3QeA.js +++ b/assets/erDiagram-9cfc3649-wT9fM43B.js @@ -1,9 +1,9 @@ -import{c as Z,s as Et,g as mt,b as gt,a as kt,v as xt,x as Rt,l as V,z as Ot,h as rt,y as bt,i as Nt,ao as Tt,ar as At}from"./mermaid.core-ygY5oRaR.js";import{G as Mt,l as St}from"./layout-wEoclKsW.js";import{l as wt}from"./line-EJoUorMM.js";import"./app-RP31lnfq.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const It=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function vt(t){return typeof t=="string"&&It.test(t)}const A=[];for(let t=0;t<256;++t)A.push((t+256).toString(16).slice(1));function Dt(t,e=0){return A[t[e+0]]+A[t[e+1]]+A[t[e+2]]+A[t[e+3]]+"-"+A[t[e+4]]+A[t[e+5]]+"-"+A[t[e+6]]+A[t[e+7]]+"-"+A[t[e+8]]+A[t[e+9]]+"-"+A[t[e+10]]+A[t[e+11]]+A[t[e+12]]+A[t[e+13]]+A[t[e+14]]+A[t[e+15]]}function Lt(t){if(!vt(t))throw TypeError("Invalid UUID");let e;const r=new Uint8Array(16);return r[0]=(e=parseInt(t.slice(0,8),16))>>>24,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=e&255,r[4]=(e=parseInt(t.slice(9,13),16))>>>8,r[5]=e&255,r[6]=(e=parseInt(t.slice(14,18),16))>>>8,r[7]=e&255,r[8]=(e=parseInt(t.slice(19,23),16))>>>8,r[9]=e&255,r[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,r[11]=e/4294967296&255,r[12]=e>>>24&255,r[13]=e>>>16&255,r[14]=e>>>8&255,r[15]=e&255,r}function Bt(t){t=unescape(encodeURIComponent(t));const e=[];for(let r=0;r>>32-e}function Ft(t){const e=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof t=="string"){const f=unescape(encodeURIComponent(t));t=[];for(let o=0;o>>0;x=g,g=m,m=it(_,30)>>>0,_=h,h=I}r[0]=r[0]+h>>>0,r[1]=r[1]+_>>>0,r[2]=r[2]+m>>>0,r[3]=r[3]+g>>>0,r[4]=r[4]+x>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,r[0]&255,r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,r[1]&255,r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,r[2]&255,r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,r[3]&255,r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,r[4]&255]}const Wt=Yt("v5",80,Ft),Ut=Wt;var at=function(){var t=function(S,a,n,c){for(n=n||{},c=S.length;c--;n[S[c]]=a);return n},e=[6,8,10,20,22,24,26,27,28],r=[1,10],u=[1,11],l=[1,12],p=[1,13],f=[1,14],o=[1,15],h=[1,21],_=[1,22],m=[1,23],g=[1,24],x=[1,25],y=[6,8,10,13,15,18,19,20,22,24,26,27,28,41,42,43,44,45],N=[1,34],I=[27,28,46,47],F=[41,42,43,44,45],W=[17,34],C=[1,54],T=[1,53],M=[17,34,36,38],R={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,":":13,role:14,BLOCK_START:15,attributes:16,BLOCK_STOP:17,SQS:18,SQE:19,title:20,title_value:21,acc_title:22,acc_title_value:23,acc_descr:24,acc_descr_value:25,acc_descr_multiline_value:26,ALPHANUM:27,ENTITY_NAME:28,attribute:29,attributeType:30,attributeName:31,attributeKeyTypeList:32,attributeComment:33,ATTRIBUTE_WORD:34,attributeKeyType:35,COMMA:36,ATTRIBUTE_KEY:37,COMMENT:38,cardinality:39,relType:40,ZERO_OR_ONE:41,ZERO_OR_MORE:42,ONE_OR_MORE:43,ONLY_ONE:44,MD_PARENT:45,NON_IDENTIFYING:46,IDENTIFYING:47,WORD:48,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:":",15:"BLOCK_START",17:"BLOCK_STOP",18:"SQS",19:"SQE",20:"title",21:"title_value",22:"acc_title",23:"acc_title_value",24:"acc_descr",25:"acc_descr_value",26:"acc_descr_multiline_value",27:"ALPHANUM",28:"ENTITY_NAME",34:"ATTRIBUTE_WORD",36:"COMMA",37:"ATTRIBUTE_KEY",38:"COMMENT",41:"ZERO_OR_ONE",42:"ZERO_OR_MORE",43:"ONE_OR_MORE",44:"ONLY_ONE",45:"MD_PARENT",46:"NON_IDENTIFYING",47:"IDENTIFYING",48:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,4],[9,3],[9,1],[9,7],[9,6],[9,4],[9,2],[9,2],[9,2],[9,1],[11,1],[11,1],[16,1],[16,2],[29,2],[29,3],[29,3],[29,4],[30,1],[31,1],[32,1],[32,3],[35,1],[33,1],[12,3],[39,1],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[14,1],[14,1],[14,1]],performAction:function(a,n,c,d,E,i,K){var s=i.length-1;switch(E){case 1:break;case 2:this.$=[];break;case 3:i[s-1].push(i[s]),this.$=i[s-1];break;case 4:case 5:this.$=i[s];break;case 6:case 7:this.$=[];break;case 8:d.addEntity(i[s-4]),d.addEntity(i[s-2]),d.addRelationship(i[s-4],i[s],i[s-2],i[s-3]);break;case 9:d.addEntity(i[s-3]),d.addAttributes(i[s-3],i[s-1]);break;case 10:d.addEntity(i[s-2]);break;case 11:d.addEntity(i[s]);break;case 12:d.addEntity(i[s-6],i[s-4]),d.addAttributes(i[s-6],i[s-1]);break;case 13:d.addEntity(i[s-5],i[s-3]);break;case 14:d.addEntity(i[s-3],i[s-1]);break;case 15:case 16:this.$=i[s].trim(),d.setAccTitle(this.$);break;case 17:case 18:this.$=i[s].trim(),d.setAccDescription(this.$);break;case 19:case 43:this.$=i[s];break;case 20:case 41:case 42:this.$=i[s].replace(/"/g,"");break;case 21:case 29:this.$=[i[s]];break;case 22:i[s].push(i[s-1]),this.$=i[s];break;case 23:this.$={attributeType:i[s-1],attributeName:i[s]};break;case 24:this.$={attributeType:i[s-2],attributeName:i[s-1],attributeKeyTypeList:i[s]};break;case 25:this.$={attributeType:i[s-2],attributeName:i[s-1],attributeComment:i[s]};break;case 26:this.$={attributeType:i[s-3],attributeName:i[s-2],attributeKeyTypeList:i[s-1],attributeComment:i[s]};break;case 27:case 28:case 31:this.$=i[s];break;case 30:i[s-2].push(i[s]),this.$=i[s-2];break;case 32:this.$=i[s].replace(/"/g,"");break;case 33:this.$={cardA:i[s],relType:i[s-1],cardB:i[s-2]};break;case 34:this.$=d.Cardinality.ZERO_OR_ONE;break;case 35:this.$=d.Cardinality.ZERO_OR_MORE;break;case 36:this.$=d.Cardinality.ONE_OR_MORE;break;case 37:this.$=d.Cardinality.ONLY_ONE;break;case 38:this.$=d.Cardinality.MD_PARENT;break;case 39:this.$=d.Identification.NON_IDENTIFYING;break;case 40:this.$=d.Identification.IDENTIFYING;break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,20:r,22:u,24:l,26:p,27:f,28:o},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:16,11:9,20:r,22:u,24:l,26:p,27:f,28:o},t(e,[2,5]),t(e,[2,6]),t(e,[2,11],{12:17,39:20,15:[1,18],18:[1,19],41:h,42:_,43:m,44:g,45:x}),{21:[1,26]},{23:[1,27]},{25:[1,28]},t(e,[2,18]),t(y,[2,19]),t(y,[2,20]),t(e,[2,4]),{11:29,27:f,28:o},{16:30,17:[1,31],29:32,30:33,34:N},{11:35,27:f,28:o},{40:36,46:[1,37],47:[1,38]},t(I,[2,34]),t(I,[2,35]),t(I,[2,36]),t(I,[2,37]),t(I,[2,38]),t(e,[2,15]),t(e,[2,16]),t(e,[2,17]),{13:[1,39]},{17:[1,40]},t(e,[2,10]),{16:41,17:[2,21],29:32,30:33,34:N},{31:42,34:[1,43]},{34:[2,27]},{19:[1,44]},{39:45,41:h,42:_,43:m,44:g,45:x},t(F,[2,39]),t(F,[2,40]),{14:46,27:[1,49],28:[1,48],48:[1,47]},t(e,[2,9]),{17:[2,22]},t(W,[2,23],{32:50,33:51,35:52,37:C,38:T}),t([17,34,37,38],[2,28]),t(e,[2,14],{15:[1,55]}),t([27,28],[2,33]),t(e,[2,8]),t(e,[2,41]),t(e,[2,42]),t(e,[2,43]),t(W,[2,24],{33:56,36:[1,57],38:T}),t(W,[2,25]),t(M,[2,29]),t(W,[2,32]),t(M,[2,31]),{16:58,17:[1,59],29:32,30:33,34:N},t(W,[2,26]),{35:60,37:C},{17:[1,61]},t(e,[2,13]),t(M,[2,30]),t(e,[2,12])],defaultActions:{34:[2,27],41:[2,22]},parseError:function(a,n){if(n.recoverable)this.trace(a);else{var c=new Error(a);throw c.hash=n,c}},parse:function(a){var n=this,c=[0],d=[],E=[null],i=[],K=this.table,s="",Q=0,st=0,ft=2,ot=1,yt=i.slice.call(arguments,1),b=Object.create(this.lexer),z={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(z.yy[J]=this.yy[J]);b.setInput(a,z.yy),z.yy.lexer=b,z.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var $=b.yylloc;i.push($);var pt=b.options&&b.options.ranges;typeof z.yy.parseError=="function"?this.parseError=z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _t(){var Y;return Y=d.pop()||b.lex()||ot,typeof Y!="number"&&(Y instanceof Array&&(d=Y,Y=d.pop()),Y=n.symbols_[Y]||Y),Y}for(var w,H,v,tt,G={},j,P,lt,q;;){if(H=c[c.length-1],this.defaultActions[H]?v=this.defaultActions[H]:((w===null||typeof w>"u")&&(w=_t()),v=K[H]&&K[H][w]),typeof v>"u"||!v.length||!v[0]){var et="";q=[];for(j in K[H])this.terminals_[j]&&j>ft&&q.push("'"+this.terminals_[j]+"'");b.showPosition?et="Parse error on line "+(Q+1)+`: +import{c as Z,s as Et,g as mt,b as gt,a as kt,v as xt,x as Rt,l as V,z as Ot,h as rt,y as bt,i as Nt,ao as Tt,ar as At}from"./mermaid.core-YBgJFCkH.js";import{G as Mt,l as St}from"./layout-6DvG_ICF.js";import{l as wt}from"./line-QxBjBe1b.js";import"./app-0NopiYEV.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const It=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Dt(t){return typeof t=="string"&&It.test(t)}const A=[];for(let t=0;t<256;++t)A.push((t+256).toString(16).slice(1));function vt(t,e=0){return A[t[e+0]]+A[t[e+1]]+A[t[e+2]]+A[t[e+3]]+"-"+A[t[e+4]]+A[t[e+5]]+"-"+A[t[e+6]]+A[t[e+7]]+"-"+A[t[e+8]]+A[t[e+9]]+"-"+A[t[e+10]]+A[t[e+11]]+A[t[e+12]]+A[t[e+13]]+A[t[e+14]]+A[t[e+15]]}function Lt(t){if(!Dt(t))throw TypeError("Invalid UUID");let e;const r=new Uint8Array(16);return r[0]=(e=parseInt(t.slice(0,8),16))>>>24,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=e&255,r[4]=(e=parseInt(t.slice(9,13),16))>>>8,r[5]=e&255,r[6]=(e=parseInt(t.slice(14,18),16))>>>8,r[7]=e&255,r[8]=(e=parseInt(t.slice(19,23),16))>>>8,r[9]=e&255,r[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,r[11]=e/4294967296&255,r[12]=e>>>24&255,r[13]=e>>>16&255,r[14]=e>>>8&255,r[15]=e&255,r}function Bt(t){t=unescape(encodeURIComponent(t));const e=[];for(let r=0;r>>32-e}function Ft(t){const e=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof t=="string"){const f=unescape(encodeURIComponent(t));t=[];for(let o=0;o>>0;x=g,g=m,m=it(_,30)>>>0,_=h,h=I}r[0]=r[0]+h>>>0,r[1]=r[1]+_>>>0,r[2]=r[2]+m>>>0,r[3]=r[3]+g>>>0,r[4]=r[4]+x>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,r[0]&255,r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,r[1]&255,r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,r[2]&255,r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,r[3]&255,r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,r[4]&255]}const Wt=Yt("v5",80,Ft);var at=function(){var t=function(S,a,n,c){for(n=n||{},c=S.length;c--;n[S[c]]=a);return n},e=[6,8,10,20,22,24,26,27,28],r=[1,10],u=[1,11],l=[1,12],p=[1,13],f=[1,14],o=[1,15],h=[1,21],_=[1,22],m=[1,23],g=[1,24],x=[1,25],y=[6,8,10,13,15,18,19,20,22,24,26,27,28,41,42,43,44,45],N=[1,34],I=[27,28,46,47],F=[41,42,43,44,45],W=[17,34],C=[1,54],T=[1,53],M=[17,34,36,38],R={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,":":13,role:14,BLOCK_START:15,attributes:16,BLOCK_STOP:17,SQS:18,SQE:19,title:20,title_value:21,acc_title:22,acc_title_value:23,acc_descr:24,acc_descr_value:25,acc_descr_multiline_value:26,ALPHANUM:27,ENTITY_NAME:28,attribute:29,attributeType:30,attributeName:31,attributeKeyTypeList:32,attributeComment:33,ATTRIBUTE_WORD:34,attributeKeyType:35,COMMA:36,ATTRIBUTE_KEY:37,COMMENT:38,cardinality:39,relType:40,ZERO_OR_ONE:41,ZERO_OR_MORE:42,ONE_OR_MORE:43,ONLY_ONE:44,MD_PARENT:45,NON_IDENTIFYING:46,IDENTIFYING:47,WORD:48,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:":",15:"BLOCK_START",17:"BLOCK_STOP",18:"SQS",19:"SQE",20:"title",21:"title_value",22:"acc_title",23:"acc_title_value",24:"acc_descr",25:"acc_descr_value",26:"acc_descr_multiline_value",27:"ALPHANUM",28:"ENTITY_NAME",34:"ATTRIBUTE_WORD",36:"COMMA",37:"ATTRIBUTE_KEY",38:"COMMENT",41:"ZERO_OR_ONE",42:"ZERO_OR_MORE",43:"ONE_OR_MORE",44:"ONLY_ONE",45:"MD_PARENT",46:"NON_IDENTIFYING",47:"IDENTIFYING",48:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,4],[9,3],[9,1],[9,7],[9,6],[9,4],[9,2],[9,2],[9,2],[9,1],[11,1],[11,1],[16,1],[16,2],[29,2],[29,3],[29,3],[29,4],[30,1],[31,1],[32,1],[32,3],[35,1],[33,1],[12,3],[39,1],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[14,1],[14,1],[14,1]],performAction:function(a,n,c,d,E,i,K){var s=i.length-1;switch(E){case 1:break;case 2:this.$=[];break;case 3:i[s-1].push(i[s]),this.$=i[s-1];break;case 4:case 5:this.$=i[s];break;case 6:case 7:this.$=[];break;case 8:d.addEntity(i[s-4]),d.addEntity(i[s-2]),d.addRelationship(i[s-4],i[s],i[s-2],i[s-3]);break;case 9:d.addEntity(i[s-3]),d.addAttributes(i[s-3],i[s-1]);break;case 10:d.addEntity(i[s-2]);break;case 11:d.addEntity(i[s]);break;case 12:d.addEntity(i[s-6],i[s-4]),d.addAttributes(i[s-6],i[s-1]);break;case 13:d.addEntity(i[s-5],i[s-3]);break;case 14:d.addEntity(i[s-3],i[s-1]);break;case 15:case 16:this.$=i[s].trim(),d.setAccTitle(this.$);break;case 17:case 18:this.$=i[s].trim(),d.setAccDescription(this.$);break;case 19:case 43:this.$=i[s];break;case 20:case 41:case 42:this.$=i[s].replace(/"/g,"");break;case 21:case 29:this.$=[i[s]];break;case 22:i[s].push(i[s-1]),this.$=i[s];break;case 23:this.$={attributeType:i[s-1],attributeName:i[s]};break;case 24:this.$={attributeType:i[s-2],attributeName:i[s-1],attributeKeyTypeList:i[s]};break;case 25:this.$={attributeType:i[s-2],attributeName:i[s-1],attributeComment:i[s]};break;case 26:this.$={attributeType:i[s-3],attributeName:i[s-2],attributeKeyTypeList:i[s-1],attributeComment:i[s]};break;case 27:case 28:case 31:this.$=i[s];break;case 30:i[s-2].push(i[s]),this.$=i[s-2];break;case 32:this.$=i[s].replace(/"/g,"");break;case 33:this.$={cardA:i[s],relType:i[s-1],cardB:i[s-2]};break;case 34:this.$=d.Cardinality.ZERO_OR_ONE;break;case 35:this.$=d.Cardinality.ZERO_OR_MORE;break;case 36:this.$=d.Cardinality.ONE_OR_MORE;break;case 37:this.$=d.Cardinality.ONLY_ONE;break;case 38:this.$=d.Cardinality.MD_PARENT;break;case 39:this.$=d.Identification.NON_IDENTIFYING;break;case 40:this.$=d.Identification.IDENTIFYING;break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,20:r,22:u,24:l,26:p,27:f,28:o},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:16,11:9,20:r,22:u,24:l,26:p,27:f,28:o},t(e,[2,5]),t(e,[2,6]),t(e,[2,11],{12:17,39:20,15:[1,18],18:[1,19],41:h,42:_,43:m,44:g,45:x}),{21:[1,26]},{23:[1,27]},{25:[1,28]},t(e,[2,18]),t(y,[2,19]),t(y,[2,20]),t(e,[2,4]),{11:29,27:f,28:o},{16:30,17:[1,31],29:32,30:33,34:N},{11:35,27:f,28:o},{40:36,46:[1,37],47:[1,38]},t(I,[2,34]),t(I,[2,35]),t(I,[2,36]),t(I,[2,37]),t(I,[2,38]),t(e,[2,15]),t(e,[2,16]),t(e,[2,17]),{13:[1,39]},{17:[1,40]},t(e,[2,10]),{16:41,17:[2,21],29:32,30:33,34:N},{31:42,34:[1,43]},{34:[2,27]},{19:[1,44]},{39:45,41:h,42:_,43:m,44:g,45:x},t(F,[2,39]),t(F,[2,40]),{14:46,27:[1,49],28:[1,48],48:[1,47]},t(e,[2,9]),{17:[2,22]},t(W,[2,23],{32:50,33:51,35:52,37:C,38:T}),t([17,34,37,38],[2,28]),t(e,[2,14],{15:[1,55]}),t([27,28],[2,33]),t(e,[2,8]),t(e,[2,41]),t(e,[2,42]),t(e,[2,43]),t(W,[2,24],{33:56,36:[1,57],38:T}),t(W,[2,25]),t(M,[2,29]),t(W,[2,32]),t(M,[2,31]),{16:58,17:[1,59],29:32,30:33,34:N},t(W,[2,26]),{35:60,37:C},{17:[1,61]},t(e,[2,13]),t(M,[2,30]),t(e,[2,12])],defaultActions:{34:[2,27],41:[2,22]},parseError:function(a,n){if(n.recoverable)this.trace(a);else{var c=new Error(a);throw c.hash=n,c}},parse:function(a){var n=this,c=[0],d=[],E=[null],i=[],K=this.table,s="",Q=0,st=0,ft=2,ot=1,yt=i.slice.call(arguments,1),b=Object.create(this.lexer),z={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(z.yy[J]=this.yy[J]);b.setInput(a,z.yy),z.yy.lexer=b,z.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var $=b.yylloc;i.push($);var pt=b.options&&b.options.ranges;typeof z.yy.parseError=="function"?this.parseError=z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _t(){var Y;return Y=d.pop()||b.lex()||ot,typeof Y!="number"&&(Y instanceof Array&&(d=Y,Y=d.pop()),Y=n.symbols_[Y]||Y),Y}for(var w,H,D,tt,G={},j,P,lt,q;;){if(H=c[c.length-1],this.defaultActions[H]?D=this.defaultActions[H]:((w===null||typeof w>"u")&&(w=_t()),D=K[H]&&K[H][w]),typeof D>"u"||!D.length||!D[0]){var et="";q=[];for(j in K[H])this.terminals_[j]&&j>ft&&q.push("'"+this.terminals_[j]+"'");b.showPosition?et="Parse error on line "+(Q+1)+`: `+b.showPosition()+` -Expecting `+q.join(", ")+", got '"+(this.terminals_[w]||w)+"'":et="Parse error on line "+(Q+1)+": Unexpected "+(w==ot?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(et,{text:b.match,token:this.terminals_[w]||w,line:b.yylineno,loc:$,expected:q})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+w);switch(v[0]){case 1:c.push(w),E.push(b.yytext),i.push(b.yylloc),c.push(v[1]),w=null,st=b.yyleng,s=b.yytext,Q=b.yylineno,$=b.yylloc;break;case 2:if(P=this.productions_[v[1]][1],G.$=E[E.length-P],G._$={first_line:i[i.length-(P||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(P||1)].first_column,last_column:i[i.length-1].last_column},pt&&(G._$.range=[i[i.length-(P||1)].range[0],i[i.length-1].range[1]]),tt=this.performAction.apply(G,[s,st,Q,z.yy,v[1],E,i].concat(yt)),typeof tt<"u")return tt;P&&(c=c.slice(0,-1*P*2),E=E.slice(0,-1*P),i=i.slice(0,-1*P)),c.push(this.productions_[v[1]][0]),E.push(G.$),i.push(G._$),lt=K[c[c.length-2]][c[c.length-1]],c.push(lt);break;case 3:return!0}}return!0}},O=function(){var S={EOF:1,parseError:function(n,c){if(this.yy.parser)this.yy.parser.parseError(n,c);else throw new Error(n)},setInput:function(a,n){return this.yy=n||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var n=a.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var n=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var E=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +Expecting `+q.join(", ")+", got '"+(this.terminals_[w]||w)+"'":et="Parse error on line "+(Q+1)+": Unexpected "+(w==ot?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(et,{text:b.match,token:this.terminals_[w]||w,line:b.yylineno,loc:$,expected:q})}if(D[0]instanceof Array&&D.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+w);switch(D[0]){case 1:c.push(w),E.push(b.yytext),i.push(b.yylloc),c.push(D[1]),w=null,st=b.yyleng,s=b.yytext,Q=b.yylineno,$=b.yylloc;break;case 2:if(P=this.productions_[D[1]][1],G.$=E[E.length-P],G._$={first_line:i[i.length-(P||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(P||1)].first_column,last_column:i[i.length-1].last_column},pt&&(G._$.range=[i[i.length-(P||1)].range[0],i[i.length-1].range[1]]),tt=this.performAction.apply(G,[s,st,Q,z.yy,D[1],E,i].concat(yt)),typeof tt<"u")return tt;P&&(c=c.slice(0,-1*P*2),E=E.slice(0,-1*P),i=i.slice(0,-1*P)),c.push(this.productions_[D[1]][0]),E.push(G.$),i.push(G._$),lt=K[c[c.length-2]][c[c.length-1]],c.push(lt);break;case 3:return!0}}return!0}},O=function(){var S={EOF:1,parseError:function(n,c){if(this.yy.parser)this.yy.parser.parseError(n,c);else throw new Error(n)},setInput:function(a,n){return this.yy=n||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var n=a.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var n=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var E=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),n=new Array(a.length+1).join("-");return a+this.upcomingInput()+` `+n+"^"},test_match:function(a,n){var c,d,E;if(this.options.backtrack_lexer&&(E={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(E.yylloc.range=this.yylloc.range.slice(0))),d=a[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+a[0].length},this.yytext+=a[0],this.match+=a[0],this.matches=a,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(a[0].length),this.matched+=a[0],c=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),c)return c;if(this._backtrack){for(var i in E)this[i]=E[i];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,n,c,d;this._more||(this.yytext="",this.match="");for(var E=this._currentRules(),i=0;in[0].length)){if(n=c,d=i,this.options.backtrack_lexer){if(a=this.test_match(c,E[i]),a!==!1)return a;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(a=this.test_match(n,E[d]),a!==!1?a:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var n=this.next();return n||this.lex()},begin:function(n){this.conditionStack.push(n)},popState:function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},pushState:function(n){this.begin(n)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(n,c,d,E){switch(d){case 0:return this.begin("acc_title"),22;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),24;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 10;case 8:break;case 9:return 8;case 10:return 28;case 11:return 48;case 12:return 4;case 13:return this.begin("block"),15;case 14:return 36;case 15:break;case 16:return 37;case 17:return 34;case 18:return 34;case 19:return 38;case 20:break;case 21:return this.popState(),17;case 22:return c.yytext[0];case 23:return 18;case 24:return 19;case 25:return 41;case 26:return 43;case 27:return 43;case 28:return 43;case 29:return 41;case 30:return 41;case 31:return 42;case 32:return 42;case 33:return 42;case 34:return 42;case 35:return 42;case 36:return 43;case 37:return 42;case 38:return 43;case 39:return 44;case 40:return 44;case 41:return 44;case 42:return 44;case 43:return 41;case 44:return 42;case 45:return 43;case 46:return 45;case 47:return 46;case 48:return 47;case 49:return 47;case 50:return 46;case 51:return 46;case 52:return 46;case 53:return 27;case 54:return c.yytext[0];case 55:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[14,15,16,17,18,19,20,21,22],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],inclusive:!0}}};return S}();R.lexer=O;function D(){this.yy={}}return D.prototype=R,R.Parser=D,new D}();at.parser=at;const zt=at;let U={},nt=[];const Ht={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},Gt={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},dt=function(t,e=void 0){return U[t]===void 0?(U[t]={attributes:[],alias:e},V.info("Added new entity :",t)):U[t]&&!U[t].alias&&e&&(U[t].alias=e,V.info(`Add alias '${e}' to entity '${t}'`)),U[t]},Kt=()=>U,Vt=function(t,e){let r=dt(t),u;for(u=e.length-1;u>=0;u--)r.attributes.push(e[u]),V.debug("Added attribute ",e[u].attributeName)},Xt=function(t,e,r,u){let l={entityA:t,roleA:e,entityB:r,relSpec:u};nt.push(l),V.debug("Added new relationship :",l)},Qt=()=>nt,jt=function(){U={},nt=[],Ot()},qt={Cardinality:Ht,Identification:Gt,getConfig:()=>Z().er,addEntity:dt,addAttributes:Vt,getEntities:Kt,addRelationship:Xt,getRelationships:Qt,clear:jt,setAccTitle:Et,getAccTitle:mt,setAccDescription:gt,getAccDescription:kt,setDiagramTitle:xt,getDiagramTitle:Rt},L={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},Jt=function(t,e){let r;t.append("defs").append("marker").attr("id",L.MD_PARENT_START).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",L.MD_PARENT_END).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",L.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",L.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",L.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",L.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},B={ERMarkers:L,insertMarkers:Jt},$t=/[^\dA-Za-z](\W)*/g;let k={},X=new Map;const te=function(t){const e=Object.keys(t);for(const r of e)k[r]=t[r]},ee=(t,e,r)=>{const u=k.entityPadding/3,l=k.entityPadding/3,p=k.fontSize*.85,f=e.node().getBBox(),o=[];let h=!1,_=!1,m=0,g=0,x=0,y=0,N=f.height+u*2,I=1;r.forEach(T=>{T.attributeKeyTypeList!==void 0&&T.attributeKeyTypeList.length>0&&(h=!0),T.attributeComment!==void 0&&(_=!0)}),r.forEach(T=>{const M=`${e.node().id}-attr-${I}`;let R=0;const O=At(T.attributeType),D=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(O),S=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(T.attributeName),a={};a.tn=D,a.nn=S;const n=D.node().getBBox(),c=S.node().getBBox();if(m=Math.max(m,n.width),g=Math.max(g,c.width),R=Math.max(n.height,c.height),h){const d=T.attributeKeyTypeList!==void 0?T.attributeKeyTypeList.join(","):"",E=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(d);a.kn=E;const i=E.node().getBBox();x=Math.max(x,i.width),R=Math.max(R,i.height)}if(_){const d=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(T.attributeComment||"");a.cn=d;const E=d.node().getBBox();y=Math.max(y,E.width),R=Math.max(R,E.height)}a.height=R,o.push(a),N+=R+u*2,I+=1});let F=4;h&&(F+=2),_&&(F+=2);const W=m+g+x+y,C={width:Math.max(k.minEntityWidth,Math.max(f.width+k.entityPadding*2,W+l*F)),height:r.length>0?N:Math.max(k.minEntityHeight,f.height+k.entityPadding*2)};if(r.length>0){const T=Math.max(0,(C.width-W-l*F)/(F/2));e.attr("transform","translate("+C.width/2+","+(u+f.height/2)+")");let M=f.height+u*2,R="attributeBoxOdd";o.forEach(O=>{const D=M+u+O.height/2;O.tn.attr("transform","translate("+l+","+D+")");const S=t.insert("rect","#"+O.tn.node().id).classed(`er ${R}`,!0).attr("x",0).attr("y",M).attr("width",m+l*2+T).attr("height",O.height+u*2),a=parseFloat(S.attr("x"))+parseFloat(S.attr("width"));O.nn.attr("transform","translate("+(a+l)+","+D+")");const n=t.insert("rect","#"+O.nn.node().id).classed(`er ${R}`,!0).attr("x",a).attr("y",M).attr("width",g+l*2+T).attr("height",O.height+u*2);let c=parseFloat(n.attr("x"))+parseFloat(n.attr("width"));if(h){O.kn.attr("transform","translate("+(c+l)+","+D+")");const d=t.insert("rect","#"+O.kn.node().id).classed(`er ${R}`,!0).attr("x",c).attr("y",M).attr("width",x+l*2+T).attr("height",O.height+u*2);c=parseFloat(d.attr("x"))+parseFloat(d.attr("width"))}_&&(O.cn.attr("transform","translate("+(c+l)+","+D+")"),t.insert("rect","#"+O.cn.node().id).classed(`er ${R}`,"true").attr("x",c).attr("y",M).attr("width",y+l*2+T).attr("height",O.height+u*2)),M+=O.height+u*2,R=R==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else C.height=Math.max(k.minEntityHeight,N),e.attr("transform","translate("+C.width/2+","+C.height/2+")");return C},re=function(t,e,r){const u=Object.keys(e);let l;return u.forEach(function(p){const f=le(p,"entity");X.set(p,f);const o=t.append("g").attr("id",f);l=l===void 0?f:l;const h="text-"+f,_=o.append("text").classed("er entityLabel",!0).attr("id",h).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",Z().fontFamily).style("font-size",k.fontSize+"px").text(e[p].alias??p),{width:m,height:g}=ee(o,_,e[p].attributes),y=o.insert("rect","#"+h).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",m).attr("height",g).node().getBBox();r.setNode(f,{width:y.width,height:y.height,shape:"rect",id:f})}),l},ie=function(t,e){e.nodes().forEach(function(r){r!==void 0&&e.node(r)!==void 0&&t.select("#"+r).attr("transform","translate("+(e.node(r).x-e.node(r).width/2)+","+(e.node(r).y-e.node(r).height/2)+" )")})},ut=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},ae=function(t,e){return t.forEach(function(r){e.setEdge(X.get(r.entityA),X.get(r.entityB),{relationship:r},ut(r))}),t};let ct=0;const ne=function(t,e,r,u,l){ct++;const p=r.edge(X.get(e.entityA),X.get(e.entityB),ut(e)),f=wt().x(function(N){return N.x}).y(function(N){return N.y}).curve(Tt),o=t.insert("path","#"+u).classed("er relationshipLine",!0).attr("d",f(p.points)).style("stroke",k.stroke).style("fill","none");e.relSpec.relType===l.db.Identification.NON_IDENTIFYING&&o.attr("stroke-dasharray","8,8");let h="";switch(k.arrowMarkerAbsolute&&(h=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,h=h.replace(/\(/g,"\\("),h=h.replace(/\)/g,"\\)")),e.relSpec.cardA){case l.db.Cardinality.ZERO_OR_ONE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ZERO_OR_ONE_END+")");break;case l.db.Cardinality.ZERO_OR_MORE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ZERO_OR_MORE_END+")");break;case l.db.Cardinality.ONE_OR_MORE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ONE_OR_MORE_END+")");break;case l.db.Cardinality.ONLY_ONE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ONLY_ONE_END+")");break;case l.db.Cardinality.MD_PARENT:o.attr("marker-end","url("+h+"#"+B.ERMarkers.MD_PARENT_END+")");break}switch(e.relSpec.cardB){case l.db.Cardinality.ZERO_OR_ONE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ZERO_OR_ONE_START+")");break;case l.db.Cardinality.ZERO_OR_MORE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ZERO_OR_MORE_START+")");break;case l.db.Cardinality.ONE_OR_MORE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ONE_OR_MORE_START+")");break;case l.db.Cardinality.ONLY_ONE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ONLY_ONE_START+")");break;case l.db.Cardinality.MD_PARENT:o.attr("marker-start","url("+h+"#"+B.ERMarkers.MD_PARENT_START+")");break}const _=o.node().getTotalLength(),m=o.node().getPointAtLength(_*.5),g="rel"+ct,y=t.append("text").classed("er relationshipLabel",!0).attr("id",g).attr("x",m.x).attr("y",m.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",Z().fontFamily).style("font-size",k.fontSize+"px").text(e.roleA).node().getBBox();t.insert("rect","#"+g).classed("er relationshipLabelBox",!0).attr("x",m.x-y.width/2).attr("y",m.y-y.height/2).attr("width",y.width).attr("height",y.height)},se=function(t,e,r,u){k=Z().er,V.info("Drawing ER diagram");const l=Z().securityLevel;let p;l==="sandbox"&&(p=rt("#i"+e));const o=(l==="sandbox"?rt(p.nodes()[0].contentDocument.body):rt("body")).select(`[id='${e}']`);B.insertMarkers(o,k);let h;h=new Mt({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:k.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});const _=re(o,u.db.getEntities(),h),m=ae(u.db.getRelationships(),h);St(h),ie(o,h),m.forEach(function(I){ne(o,I,h,_,u)});const g=k.diagramPadding;bt.insertTitle(o,"entityTitleText",k.titleTopMargin,u.db.getDiagramTitle());const x=o.node().getBBox(),y=x.width+g*2,N=x.height+g*2;Nt(o,N,y,k.useMaxWidth),o.attr("viewBox",`${x.x-g} ${x.y-g} ${y} ${N}`)},oe="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function le(t="",e=""){const r=t.replace($t,"");return`${ht(e)}${ht(r)}${Ut(t,oe)}`}function ht(t=""){return t.length>0?`${t}-`:""}const ce={setConf:te,draw:se},he=t=>` +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var n=this.next();return n||this.lex()},begin:function(n){this.conditionStack.push(n)},popState:function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},pushState:function(n){this.begin(n)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(n,c,d,E){switch(d){case 0:return this.begin("acc_title"),22;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),24;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 10;case 8:break;case 9:return 8;case 10:return 28;case 11:return 48;case 12:return 4;case 13:return this.begin("block"),15;case 14:return 36;case 15:break;case 16:return 37;case 17:return 34;case 18:return 34;case 19:return 38;case 20:break;case 21:return this.popState(),17;case 22:return c.yytext[0];case 23:return 18;case 24:return 19;case 25:return 41;case 26:return 43;case 27:return 43;case 28:return 43;case 29:return 41;case 30:return 41;case 31:return 42;case 32:return 42;case 33:return 42;case 34:return 42;case 35:return 42;case 36:return 43;case 37:return 42;case 38:return 43;case 39:return 44;case 40:return 44;case 41:return 44;case 42:return 44;case 43:return 41;case 44:return 42;case 45:return 43;case 46:return 45;case 47:return 46;case 48:return 47;case 49:return 47;case 50:return 46;case 51:return 46;case 52:return 46;case 53:return 27;case 54:return c.yytext[0];case 55:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[14,15,16,17,18,19,20,21,22],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],inclusive:!0}}};return S}();R.lexer=O;function v(){this.yy={}}return v.prototype=R,R.Parser=v,new v}();at.parser=at;const Ut=at;let U={},nt=[];const zt={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},Ht={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},dt=function(t,e=void 0){return U[t]===void 0?(U[t]={attributes:[],alias:e},V.info("Added new entity :",t)):U[t]&&!U[t].alias&&e&&(U[t].alias=e,V.info(`Add alias '${e}' to entity '${t}'`)),U[t]},Gt=()=>U,Kt=function(t,e){let r=dt(t),u;for(u=e.length-1;u>=0;u--)r.attributes.push(e[u]),V.debug("Added attribute ",e[u].attributeName)},Vt=function(t,e,r,u){let l={entityA:t,roleA:e,entityB:r,relSpec:u};nt.push(l),V.debug("Added new relationship :",l)},Xt=()=>nt,Qt=function(){U={},nt=[],Ot()},jt={Cardinality:zt,Identification:Ht,getConfig:()=>Z().er,addEntity:dt,addAttributes:Kt,getEntities:Gt,addRelationship:Vt,getRelationships:Xt,clear:Qt,setAccTitle:Et,getAccTitle:mt,setAccDescription:gt,getAccDescription:kt,setDiagramTitle:xt,getDiagramTitle:Rt},L={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},qt=function(t,e){let r;t.append("defs").append("marker").attr("id",L.MD_PARENT_START).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",L.MD_PARENT_END).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",L.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",L.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",L.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",L.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},B={ERMarkers:L,insertMarkers:qt},Jt=/[^\dA-Za-z](\W)*/g;let k={},X=new Map;const $t=function(t){const e=Object.keys(t);for(const r of e)k[r]=t[r]},te=(t,e,r)=>{const u=k.entityPadding/3,l=k.entityPadding/3,p=k.fontSize*.85,f=e.node().getBBox(),o=[];let h=!1,_=!1,m=0,g=0,x=0,y=0,N=f.height+u*2,I=1;r.forEach(T=>{T.attributeKeyTypeList!==void 0&&T.attributeKeyTypeList.length>0&&(h=!0),T.attributeComment!==void 0&&(_=!0)}),r.forEach(T=>{const M=`${e.node().id}-attr-${I}`;let R=0;const O=At(T.attributeType),v=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(O),S=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(T.attributeName),a={};a.tn=v,a.nn=S;const n=v.node().getBBox(),c=S.node().getBBox();if(m=Math.max(m,n.width),g=Math.max(g,c.width),R=Math.max(n.height,c.height),h){const d=T.attributeKeyTypeList!==void 0?T.attributeKeyTypeList.join(","):"",E=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(d);a.kn=E;const i=E.node().getBBox();x=Math.max(x,i.width),R=Math.max(R,i.height)}if(_){const d=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(T.attributeComment||"");a.cn=d;const E=d.node().getBBox();y=Math.max(y,E.width),R=Math.max(R,E.height)}a.height=R,o.push(a),N+=R+u*2,I+=1});let F=4;h&&(F+=2),_&&(F+=2);const W=m+g+x+y,C={width:Math.max(k.minEntityWidth,Math.max(f.width+k.entityPadding*2,W+l*F)),height:r.length>0?N:Math.max(k.minEntityHeight,f.height+k.entityPadding*2)};if(r.length>0){const T=Math.max(0,(C.width-W-l*F)/(F/2));e.attr("transform","translate("+C.width/2+","+(u+f.height/2)+")");let M=f.height+u*2,R="attributeBoxOdd";o.forEach(O=>{const v=M+u+O.height/2;O.tn.attr("transform","translate("+l+","+v+")");const S=t.insert("rect","#"+O.tn.node().id).classed(`er ${R}`,!0).attr("x",0).attr("y",M).attr("width",m+l*2+T).attr("height",O.height+u*2),a=parseFloat(S.attr("x"))+parseFloat(S.attr("width"));O.nn.attr("transform","translate("+(a+l)+","+v+")");const n=t.insert("rect","#"+O.nn.node().id).classed(`er ${R}`,!0).attr("x",a).attr("y",M).attr("width",g+l*2+T).attr("height",O.height+u*2);let c=parseFloat(n.attr("x"))+parseFloat(n.attr("width"));if(h){O.kn.attr("transform","translate("+(c+l)+","+v+")");const d=t.insert("rect","#"+O.kn.node().id).classed(`er ${R}`,!0).attr("x",c).attr("y",M).attr("width",x+l*2+T).attr("height",O.height+u*2);c=parseFloat(d.attr("x"))+parseFloat(d.attr("width"))}_&&(O.cn.attr("transform","translate("+(c+l)+","+v+")"),t.insert("rect","#"+O.cn.node().id).classed(`er ${R}`,"true").attr("x",c).attr("y",M).attr("width",y+l*2+T).attr("height",O.height+u*2)),M+=O.height+u*2,R=R==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else C.height=Math.max(k.minEntityHeight,N),e.attr("transform","translate("+C.width/2+","+C.height/2+")");return C},ee=function(t,e,r){const u=Object.keys(e);let l;return u.forEach(function(p){const f=oe(p,"entity");X.set(p,f);const o=t.append("g").attr("id",f);l=l===void 0?f:l;const h="text-"+f,_=o.append("text").classed("er entityLabel",!0).attr("id",h).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",Z().fontFamily).style("font-size",k.fontSize+"px").text(e[p].alias??p),{width:m,height:g}=te(o,_,e[p].attributes),y=o.insert("rect","#"+h).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",m).attr("height",g).node().getBBox();r.setNode(f,{width:y.width,height:y.height,shape:"rect",id:f})}),l},re=function(t,e){e.nodes().forEach(function(r){r!==void 0&&e.node(r)!==void 0&&t.select("#"+r).attr("transform","translate("+(e.node(r).x-e.node(r).width/2)+","+(e.node(r).y-e.node(r).height/2)+" )")})},ut=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},ie=function(t,e){return t.forEach(function(r){e.setEdge(X.get(r.entityA),X.get(r.entityB),{relationship:r},ut(r))}),t};let ct=0;const ae=function(t,e,r,u,l){ct++;const p=r.edge(X.get(e.entityA),X.get(e.entityB),ut(e)),f=wt().x(function(N){return N.x}).y(function(N){return N.y}).curve(Tt),o=t.insert("path","#"+u).classed("er relationshipLine",!0).attr("d",f(p.points)).style("stroke",k.stroke).style("fill","none");e.relSpec.relType===l.db.Identification.NON_IDENTIFYING&&o.attr("stroke-dasharray","8,8");let h="";switch(k.arrowMarkerAbsolute&&(h=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,h=h.replace(/\(/g,"\\("),h=h.replace(/\)/g,"\\)")),e.relSpec.cardA){case l.db.Cardinality.ZERO_OR_ONE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ZERO_OR_ONE_END+")");break;case l.db.Cardinality.ZERO_OR_MORE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ZERO_OR_MORE_END+")");break;case l.db.Cardinality.ONE_OR_MORE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ONE_OR_MORE_END+")");break;case l.db.Cardinality.ONLY_ONE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ONLY_ONE_END+")");break;case l.db.Cardinality.MD_PARENT:o.attr("marker-end","url("+h+"#"+B.ERMarkers.MD_PARENT_END+")");break}switch(e.relSpec.cardB){case l.db.Cardinality.ZERO_OR_ONE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ZERO_OR_ONE_START+")");break;case l.db.Cardinality.ZERO_OR_MORE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ZERO_OR_MORE_START+")");break;case l.db.Cardinality.ONE_OR_MORE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ONE_OR_MORE_START+")");break;case l.db.Cardinality.ONLY_ONE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ONLY_ONE_START+")");break;case l.db.Cardinality.MD_PARENT:o.attr("marker-start","url("+h+"#"+B.ERMarkers.MD_PARENT_START+")");break}const _=o.node().getTotalLength(),m=o.node().getPointAtLength(_*.5),g="rel"+ct,y=t.append("text").classed("er relationshipLabel",!0).attr("id",g).attr("x",m.x).attr("y",m.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",Z().fontFamily).style("font-size",k.fontSize+"px").text(e.roleA).node().getBBox();t.insert("rect","#"+g).classed("er relationshipLabelBox",!0).attr("x",m.x-y.width/2).attr("y",m.y-y.height/2).attr("width",y.width).attr("height",y.height)},ne=function(t,e,r,u){k=Z().er,V.info("Drawing ER diagram");const l=Z().securityLevel;let p;l==="sandbox"&&(p=rt("#i"+e));const o=(l==="sandbox"?rt(p.nodes()[0].contentDocument.body):rt("body")).select(`[id='${e}']`);B.insertMarkers(o,k);let h;h=new Mt({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:k.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});const _=ee(o,u.db.getEntities(),h),m=ie(u.db.getRelationships(),h);St(h),re(o,h),m.forEach(function(I){ae(o,I,h,_,u)});const g=k.diagramPadding;bt.insertTitle(o,"entityTitleText",k.titleTopMargin,u.db.getDiagramTitle());const x=o.node().getBBox(),y=x.width+g*2,N=x.height+g*2;Nt(o,N,y,k.useMaxWidth),o.attr("viewBox",`${x.x-g} ${x.y-g} ${y} ${N}`)},se="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function oe(t="",e=""){const r=t.replace(Jt,"");return`${ht(e)}${ht(r)}${Wt(t,se)}`}function ht(t=""){return t.length>0?`${t}-`:""}const le={setConf:$t,draw:ne},ce=t=>` .entityBox { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; @@ -48,4 +48,4 @@ Expecting `+q.join(", ")+", got '"+(this.terminals_[w]||w)+"'":et="Parse error o stroke-width: 1; } -`,de=he,me={parser:zt,db:qt,renderer:ce,styles:de};export{me as diagram}; +`,he=ce,Ee={parser:Ut,db:jt,renderer:le,styles:he};export{Ee as diagram}; diff --git a/assets/exclusive_features.html-Qj0lJyo5.js b/assets/exclusive_features.html-oz4V5ANz.js similarity index 99% rename from assets/exclusive_features.html-Qj0lJyo5.js rename to assets/exclusive_features.html-oz4V5ANz.js index bfe93fb..736bdf6 100644 --- a/assets/exclusive_features.html-Qj0lJyo5.js +++ b/assets/exclusive_features.html-oz4V5ANz.js @@ -1,4 +1,4 @@ -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as p,o as c,c as u,a as n,d as s,b as e,w as o,e as a}from"./app-RP31lnfq.js";const r={},d=a(`

          1、先播放后推流

          • 痛点:推流成功前不能提前播放

          • 场景介绍:

            有些及时推流的场景,存在推流和播放同时发生的场景,这种场景一般是一对一的,譬如说基于 rtmp 推流的行车记录仪,用户在调阅车载摄像头视频的,下发推流命令给设备时,同时开始播放视频,如果播放请求先于推流到达流媒体服务器,那么流媒体服务器通常会立即返回流未找到的错误,为了解决这个问题,一般的解决方案是,通过设备确认推流成功再开启播放,但是这样往往会增加视频打开延时,拉低用户体验。zlmediakit 针对此场景作出特别优化,可以在流不存在时,先不回复播放器,等推流成功后再返回播放成功,如果超时时间内,推流还不上线,那么再返回播放流不存在错误,通过配置文件可以修改此延时:

            [general]
            +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as p,o as c,c as u,a as n,d as s,b as e,w as o,e as a}from"./app-0NopiYEV.js";const r={},d=a(`

            1、先播放后推流

            • 痛点:推流成功前不能提前播放

            • 场景介绍:

              有些及时推流的场景,存在推流和播放同时发生的场景,这种场景一般是一对一的,譬如说基于 rtmp 推流的行车记录仪,用户在调阅车载摄像头视频的,下发推流命令给设备时,同时开始播放视频,如果播放请求先于推流到达流媒体服务器,那么流媒体服务器通常会立即返回流未找到的错误,为了解决这个问题,一般的解决方案是,通过设备确认推流成功再开启播放,但是这样往往会增加视频打开延时,拉低用户体验。zlmediakit 针对此场景作出特别优化,可以在流不存在时,先不回复播放器,等推流成功后再返回播放成功,如果超时时间内,推流还不上线,那么再返回播放流不存在错误,通过配置文件可以修改此延时:

              [general]
               #播放最多等待时间,单位毫秒
               #播放在播放某个流时,如果该流不存在,
               #ZLMediaKit会最多让播放器等待maxStreamWaitMS毫秒
              diff --git a/assets/exclusive_features.html-PNsKskwv.js b/assets/exclusive_features.html-vnOZwbaY.js
              similarity index 99%
              rename from assets/exclusive_features.html-PNsKskwv.js
              rename to assets/exclusive_features.html-vnOZwbaY.js
              index e787a29..30da3b3 100644
              --- a/assets/exclusive_features.html-PNsKskwv.js
              +++ b/assets/exclusive_features.html-vnOZwbaY.js
              @@ -1,4 +1,4 @@
              -import{_ as r}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as c,c as p,a as e,d as n,b as a,w as o,e as s}from"./app-RP31lnfq.js";const u={},d=s(`

              1. Play before Publishing

              • Pain point: Unable to play before successful publishing.

              • Scenario:

                In some real-time streaming scenarios, there is a need for simultaneous streaming and playback, typically in a one-to-one setting. For example, in a car recorder based on RTMP streaming, when a user requests to view the live video from the onboard camera and sends a publishing command to the device, the playback of the video starts simultaneously. If the playback request arrives at the media server before the publishing, the server usually returns an error indicating that the stream is not found. To solve this problem, a common approach is to confirm the successful publishing before starting the playback. However, this often increases the delay in opening the video, resulting in a poor user experience. ZLMediakit optimizes this scenario by allowing the server to hold the player's response if the stream does not exist, and only returns a successful playback response after the publishing is successful. If the publishing does not come online within a timeout period, an error indicating the stream is not found is returned. The delay can be modified through the configuration file:

                [general]
                +import{_ as r}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as c,c as p,a as e,d as n,b as a,w as o,e as s}from"./app-0NopiYEV.js";const u={},d=s(`

                1. Play before Publishing

                • Pain point: Unable to play before successful publishing.

                • Scenario:

                  In some real-time streaming scenarios, there is a need for simultaneous streaming and playback, typically in a one-to-one setting. For example, in a car recorder based on RTMP streaming, when a user requests to view the live video from the onboard camera and sends a publishing command to the device, the playback of the video starts simultaneously. If the playback request arrives at the media server before the publishing, the server usually returns an error indicating that the stream is not found. To solve this problem, a common approach is to confirm the successful publishing before starting the playback. However, this often increases the delay in opening the video, resulting in a poor user experience. ZLMediakit optimizes this scenario by allowing the server to hold the player's response if the stream does not exist, and only returns a successful playback response after the publishing is successful. If the publishing does not come online within a timeout period, an error indicating the stream is not found is returned. The delay can be modified through the configuration file:

                  [general]
                   # Maximum waiting time for playback in milliseconds
                   # When playing a stream that does not exist, ZLMediaKit will allow the player to wait for a maximum of maxStreamWaitMS milliseconds
                   # If the stream is registered successfully within this time, it will immediately return a successful playback response to the player
                  diff --git a/assets/flowDb-170db09d-pscdJplr.js b/assets/flowDb-170db09d-3I9bX383.js
                  similarity index 99%
                  rename from assets/flowDb-170db09d-pscdJplr.js
                  rename to assets/flowDb-170db09d-3I9bX383.js
                  index 518dc62..97f5237 100644
                  --- a/assets/flowDb-170db09d-pscdJplr.js
                  +++ b/assets/flowDb-170db09d-3I9bX383.js
                  @@ -1,4 +1,4 @@
                  -import{c as ft,u as ye,s as me,g as ve,a as Ve,b as Le,v as Ie,x as Re,l as Z1,y as At,z as Ne,j as Oe,h as N1}from"./mermaid.core-ygY5oRaR.js";var ht=function(){var e=function(h1,a,o,p){for(o=o||{},p=h1.length;p--;o[h1[p]]=a);return o},u=[1,4],i=[1,3],n=[1,5],c=[1,8,9,10,11,27,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],l=[2,2],h=[1,13],U=[1,14],F=[1,15],O=[1,16],z=[1,23],c1=[1,25],f1=[1,26],A1=[1,27],S=[1,49],k=[1,48],o1=[1,29],w1=[1,30],U1=[1,31],G1=[1,32],M1=[1,33],B=[1,44],x=[1,46],y=[1,42],m=[1,47],v=[1,43],V=[1,50],L=[1,45],I=[1,51],R=[1,52],K1=[1,34],j1=[1,35],Y1=[1,36],X1=[1,37],L1=[1,57],b=[1,8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],W=[1,61],q=[1,60],Q=[1,62],z1=[8,9,11,73,75],k1=[1,88],b1=[1,93],g1=[1,92],D1=[1,89],F1=[1,85],T1=[1,91],C1=[1,87],S1=[1,94],_1=[1,90],B1=[1,95],x1=[1,86],H1=[8,9,10,11,73,75],N=[8,9,10,11,44,73,75],M=[8,9,10,11,29,42,44,46,48,50,52,54,56,58,61,63,65,66,68,73,75,86,99,102,103,106,108,111,112,113],Et=[8,9,11,42,58,73,75,86,99,102,103,106,108,111,112,113],I1=[42,58,86,99,102,103,106,108,111,112,113],kt=[1,121],bt=[1,120],gt=[1,128],Dt=[1,142],Ft=[1,143],Tt=[1,144],Ct=[1,145],St=[1,130],_t=[1,132],Bt=[1,136],xt=[1,137],yt=[1,138],mt=[1,139],vt=[1,140],Vt=[1,141],Lt=[1,146],It=[1,147],Rt=[1,126],Nt=[1,127],Ot=[1,134],Pt=[1,129],wt=[1,133],Ut=[1,131],it=[8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],Gt=[1,149],T=[8,9,11],K=[8,9,10,11,14,42,58,86,102,103,106,108,111,112,113],f=[1,169],P=[1,165],w=[1,166],A=[1,170],d=[1,167],E=[1,168],y1=[75,113,116],g=[8,9,10,11,12,14,27,29,32,42,58,73,81,82,83,84,85,86,87,102,106,108,111,112,113],Mt=[10,103],l1=[31,47,49,51,53,55,60,62,64,65,67,69,113,114,115],Z=[1,235],J=[1,233],$=[1,237],t1=[1,231],e1=[1,232],s1=[1,234],u1=[1,236],i1=[1,238],m1=[1,255],Kt=[8,9,11,103],H=[8,9,10,11,58,81,102,103,106,107,108,109],rt={trace:function(){},yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeperator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,verticeStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,link:39,node:40,styledVertex:41,AMP:42,vertex:43,STYLE_SEPARATOR:44,idString:45,DOUBLECIRCLESTART:46,DOUBLECIRCLEEND:47,PS:48,PE:49,"(-":50,"-)":51,STADIUMSTART:52,STADIUMEND:53,SUBROUTINESTART:54,SUBROUTINEEND:55,VERTEX_WITH_PROPS_START:56,"NODE_STRING[field]":57,COLON:58,"NODE_STRING[value]":59,PIPE:60,CYLINDERSTART:61,CYLINDEREND:62,DIAMOND_START:63,DIAMOND_STOP:64,TAGEND:65,TRAPSTART:66,TRAPEND:67,INVTRAPSTART:68,INVTRAPEND:69,linkStatement:70,arrowText:71,TESTSTR:72,START_LINK:73,edgeText:74,LINK:75,edgeTextToken:76,STR:77,MD_STR:78,textToken:79,keywords:80,STYLE:81,LINKSTYLE:82,CLASSDEF:83,CLASS:84,CLICK:85,DOWN:86,UP:87,textNoTagsToken:88,stylesOpt:89,"idString[vertex]":90,"idString[class]":91,CALLBACKNAME:92,CALLBACKARGS:93,HREF:94,LINK_TARGET:95,"STR[link]":96,"STR[tooltip]":97,alphaNum:98,DEFAULT:99,numList:100,INTERPOLATE:101,NUM:102,COMMA:103,style:104,styleComponent:105,NODE_STRING:106,UNIT:107,BRKT:108,PCT:109,idStringToken:110,MINUS:111,MULT:112,UNICODE_TEXT:113,TEXT:114,TAGSTART:115,EDGE_TEXT:116,alphaNumToken:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",42:"AMP",44:"STYLE_SEPARATOR",46:"DOUBLECIRCLESTART",47:"DOUBLECIRCLEEND",48:"PS",49:"PE",50:"(-",51:"-)",52:"STADIUMSTART",53:"STADIUMEND",54:"SUBROUTINESTART",55:"SUBROUTINEEND",56:"VERTEX_WITH_PROPS_START",57:"NODE_STRING[field]",58:"COLON",59:"NODE_STRING[value]",60:"PIPE",61:"CYLINDERSTART",62:"CYLINDEREND",63:"DIAMOND_START",64:"DIAMOND_STOP",65:"TAGEND",66:"TRAPSTART",67:"TRAPEND",68:"INVTRAPSTART",69:"INVTRAPEND",72:"TESTSTR",73:"START_LINK",75:"LINK",77:"STR",78:"MD_STR",81:"STYLE",82:"LINKSTYLE",83:"CLASSDEF",84:"CLASS",85:"CLICK",86:"DOWN",87:"UP",90:"idString[vertex]",91:"idString[class]",92:"CALLBACKNAME",93:"CALLBACKARGS",94:"HREF",95:"LINK_TARGET",96:"STR[link]",97:"STR[tooltip]",99:"DEFAULT",101:"INTERPOLATE",102:"NUM",103:"COMMA",106:"NODE_STRING",107:"UNIT",108:"BRKT",109:"PCT",111:"MINUS",112:"MULT",113:"UNICODE_TEXT",114:"TEXT",115:"TAGSTART",116:"EDGE_TEXT",118:"direction_tb",119:"direction_bt",120:"direction_rl",121:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[20,3],[20,4],[20,2],[20,1],[40,1],[40,5],[41,1],[41,3],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,8],[43,4],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,4],[43,4],[43,1],[39,2],[39,3],[39,3],[39,1],[39,3],[74,1],[74,2],[74,1],[74,1],[70,1],[71,3],[30,1],[30,2],[30,1],[30,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[100,1],[100,3],[89,1],[89,3],[104,1],[104,2],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[79,1],[79,1],[79,1],[79,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[76,1],[76,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[45,1],[45,2],[98,1],[98,2],[33,1],[33,1],[33,1],[33,1]],performAction:function(a,o,p,r,C,t,R1){var s=t.length-1;switch(C){case 2:this.$=[];break;case 3:(!Array.isArray(t[s])||t[s].length>0)&&t[s-1].push(t[s]),this.$=t[s-1];break;case 4:case 176:this.$=t[s];break;case 11:r.setDirection("TB"),this.$="TB";break;case 12:r.setDirection(t[s-1]),this.$=t[s-1];break;case 27:this.$=t[s-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=r.addSubGraph(t[s-6],t[s-1],t[s-4]);break;case 34:this.$=r.addSubGraph(t[s-3],t[s-1],t[s-3]);break;case 35:this.$=r.addSubGraph(void 0,t[s-1],void 0);break;case 37:this.$=t[s].trim(),r.setAccTitle(this.$);break;case 38:case 39:this.$=t[s].trim(),r.setAccDescription(this.$);break;case 43:r.addLink(t[s-2].stmt,t[s],t[s-1]),this.$={stmt:t[s],nodes:t[s].concat(t[s-2].nodes)};break;case 44:r.addLink(t[s-3].stmt,t[s-1],t[s-2]),this.$={stmt:t[s-1],nodes:t[s-1].concat(t[s-3].nodes)};break;case 45:this.$={stmt:t[s-1],nodes:t[s-1]};break;case 46:this.$={stmt:t[s],nodes:t[s]};break;case 47:this.$=[t[s]];break;case 48:this.$=t[s-4].concat(t[s]);break;case 49:this.$=t[s];break;case 50:this.$=t[s-2],r.setClass(t[s-2],t[s]);break;case 51:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"square");break;case 52:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"doublecircle");break;case 53:this.$=t[s-5],r.addVertex(t[s-5],t[s-2],"circle");break;case 54:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"ellipse");break;case 55:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"stadium");break;case 56:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"subroutine");break;case 57:this.$=t[s-7],r.addVertex(t[s-7],t[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[t[s-5],t[s-3]]]));break;case 58:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"cylinder");break;case 59:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"round");break;case 60:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"diamond");break;case 61:this.$=t[s-5],r.addVertex(t[s-5],t[s-2],"hexagon");break;case 62:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"odd");break;case 63:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"trapezoid");break;case 64:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"inv_trapezoid");break;case 65:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"lean_right");break;case 66:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"lean_left");break;case 67:this.$=t[s],r.addVertex(t[s]);break;case 68:t[s-1].text=t[s],this.$=t[s-1];break;case 69:case 70:t[s-2].text=t[s-1],this.$=t[s-2];break;case 71:this.$=t[s];break;case 72:var j=r.destructLink(t[s],t[s-2]);this.$={type:j.type,stroke:j.stroke,length:j.length,text:t[s-1]};break;case 73:this.$={text:t[s],type:"text"};break;case 74:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 75:this.$={text:t[s],type:"string"};break;case 76:this.$={text:t[s],type:"markdown"};break;case 77:var j=r.destructLink(t[s]);this.$={type:j.type,stroke:j.stroke,length:j.length};break;case 78:this.$=t[s-1];break;case 79:this.$={text:t[s],type:"text"};break;case 80:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 81:this.$={text:t[s],type:"string"};break;case 82:case 97:this.$={text:t[s],type:"markdown"};break;case 94:this.$={text:t[s],type:"text"};break;case 95:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 96:this.$={text:t[s],type:"text"};break;case 98:this.$=t[s-4],r.addClass(t[s-2],t[s]);break;case 99:this.$=t[s-4],r.setClass(t[s-2],t[s]);break;case 100:case 108:this.$=t[s-1],r.setClickEvent(t[s-1],t[s]);break;case 101:case 109:this.$=t[s-3],r.setClickEvent(t[s-3],t[s-2]),r.setTooltip(t[s-3],t[s]);break;case 102:this.$=t[s-2],r.setClickEvent(t[s-2],t[s-1],t[s]);break;case 103:this.$=t[s-4],r.setClickEvent(t[s-4],t[s-3],t[s-2]),r.setTooltip(t[s-4],t[s]);break;case 104:this.$=t[s-2],r.setLink(t[s-2],t[s]);break;case 105:this.$=t[s-4],r.setLink(t[s-4],t[s-2]),r.setTooltip(t[s-4],t[s]);break;case 106:this.$=t[s-4],r.setLink(t[s-4],t[s-2],t[s]);break;case 107:this.$=t[s-6],r.setLink(t[s-6],t[s-4],t[s]),r.setTooltip(t[s-6],t[s-2]);break;case 110:this.$=t[s-1],r.setLink(t[s-1],t[s]);break;case 111:this.$=t[s-3],r.setLink(t[s-3],t[s-2]),r.setTooltip(t[s-3],t[s]);break;case 112:this.$=t[s-3],r.setLink(t[s-3],t[s-2],t[s]);break;case 113:this.$=t[s-5],r.setLink(t[s-5],t[s-4],t[s]),r.setTooltip(t[s-5],t[s-2]);break;case 114:this.$=t[s-4],r.addVertex(t[s-2],void 0,void 0,t[s]);break;case 115:this.$=t[s-4],r.updateLink([t[s-2]],t[s]);break;case 116:this.$=t[s-4],r.updateLink(t[s-2],t[s]);break;case 117:this.$=t[s-8],r.updateLinkInterpolate([t[s-6]],t[s-2]),r.updateLink([t[s-6]],t[s]);break;case 118:this.$=t[s-8],r.updateLinkInterpolate(t[s-6],t[s-2]),r.updateLink(t[s-6],t[s]);break;case 119:this.$=t[s-6],r.updateLinkInterpolate([t[s-4]],t[s]);break;case 120:this.$=t[s-6],r.updateLinkInterpolate(t[s-4],t[s]);break;case 121:case 123:this.$=[t[s]];break;case 122:case 124:t[s-2].push(t[s]),this.$=t[s-2];break;case 126:this.$=t[s-1]+t[s];break;case 174:this.$=t[s];break;case 175:this.$=t[s-1]+""+t[s];break;case 177:this.$=t[s-1]+""+t[s];break;case 178:this.$={stmt:"dir",value:"TB"};break;case 179:this.$={stmt:"dir",value:"BT"};break;case 180:this.$={stmt:"dir",value:"RL"};break;case 181:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,9:u,10:i,12:n},{1:[3]},e(c,l,{5:6}),{4:7,9:u,10:i,12:n},{4:8,9:u,10:i,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},e(c,[2,9]),e(c,[2,10]),e(c,[2,11]),{8:[1,54],9:[1,55],10:L1,15:53,18:56},e(b,[2,3]),e(b,[2,4]),e(b,[2,5]),e(b,[2,6]),e(b,[2,7]),e(b,[2,8]),{8:W,9:q,11:Q,21:58,39:59,70:63,73:[1,64],75:[1,65]},{8:W,9:q,11:Q,21:66},{8:W,9:q,11:Q,21:67},{8:W,9:q,11:Q,21:68},{8:W,9:q,11:Q,21:69},{8:W,9:q,11:Q,21:70},{8:W,9:q,10:[1,71],11:Q,21:72},e(b,[2,36]),{35:[1,73]},{37:[1,74]},e(b,[2,39]),e(z1,[2,46],{18:75,10:L1}),{10:[1,76]},{10:[1,77]},{10:[1,78]},{10:[1,79]},{14:k1,42:b1,58:g1,77:[1,83],86:D1,92:[1,80],94:[1,81],98:82,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},e(b,[2,178]),e(b,[2,179]),e(b,[2,180]),e(b,[2,181]),e(H1,[2,47]),e(H1,[2,49],{44:[1,96]}),e(N,[2,67],{110:109,29:[1,97],42:S,46:[1,98],48:[1,99],50:[1,100],52:[1,101],54:[1,102],56:[1,103],58:k,61:[1,104],63:[1,105],65:[1,106],66:[1,107],68:[1,108],86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),e(M,[2,174]),e(M,[2,135]),e(M,[2,136]),e(M,[2,137]),e(M,[2,138]),e(M,[2,139]),e(M,[2,140]),e(M,[2,141]),e(M,[2,142]),e(M,[2,143]),e(M,[2,144]),e(M,[2,145]),e(c,[2,12]),e(c,[2,18]),e(c,[2,19]),{9:[1,110]},e(Et,[2,26],{18:111,10:L1}),e(b,[2,27]),{40:112,41:38,42:S,43:39,45:40,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(b,[2,40]),e(b,[2,41]),e(b,[2,42]),e(I1,[2,71],{71:113,60:[1,115],72:[1,114]}),{74:116,76:117,77:[1,118],78:[1,119],113:kt,116:bt},e([42,58,60,72,86,99,102,103,106,108,111,112,113],[2,77]),e(b,[2,28]),e(b,[2,29]),e(b,[2,30]),e(b,[2,31]),e(b,[2,32]),{10:gt,12:Dt,14:Ft,27:Tt,28:122,32:Ct,42:St,58:_t,73:Bt,77:[1,124],78:[1,125],80:135,81:xt,82:yt,83:mt,84:vt,85:Vt,86:Lt,87:It,88:123,102:Rt,106:Nt,108:Ot,111:Pt,112:wt,113:Ut},e(it,l,{5:148}),e(b,[2,37]),e(b,[2,38]),e(z1,[2,45],{42:Gt}),{42:S,45:150,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{99:[1,151],100:152,102:[1,153]},{42:S,45:154,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{42:S,45:155,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(T,[2,100],{10:[1,156],93:[1,157]}),{77:[1,158]},e(T,[2,108],{117:160,10:[1,159],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,110],{10:[1,161]}),e(K,[2,176]),e(K,[2,163]),e(K,[2,164]),e(K,[2,165]),e(K,[2,166]),e(K,[2,167]),e(K,[2,168]),e(K,[2,169]),e(K,[2,170]),e(K,[2,171]),e(K,[2,172]),e(K,[2,173]),{42:S,45:162,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{30:163,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:171,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:173,48:[1,172],65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:174,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:175,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:176,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{106:[1,177]},{30:178,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:179,63:[1,180],65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:181,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:182,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:183,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(M,[2,175]),e(c,[2,20]),e(Et,[2,25]),e(z1,[2,43],{18:184,10:L1}),e(I1,[2,68],{10:[1,185]}),{10:[1,186]},{30:187,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{75:[1,188],76:189,113:kt,116:bt},e(y1,[2,73]),e(y1,[2,75]),e(y1,[2,76]),e(y1,[2,161]),e(y1,[2,162]),{8:W,9:q,10:gt,11:Q,12:Dt,14:Ft,21:191,27:Tt,29:[1,190],32:Ct,42:St,58:_t,73:Bt,80:135,81:xt,82:yt,83:mt,84:vt,85:Vt,86:Lt,87:It,88:192,102:Rt,106:Nt,108:Ot,111:Pt,112:wt,113:Ut},e(g,[2,94]),e(g,[2,96]),e(g,[2,97]),e(g,[2,150]),e(g,[2,151]),e(g,[2,152]),e(g,[2,153]),e(g,[2,154]),e(g,[2,155]),e(g,[2,156]),e(g,[2,157]),e(g,[2,158]),e(g,[2,159]),e(g,[2,160]),e(g,[2,83]),e(g,[2,84]),e(g,[2,85]),e(g,[2,86]),e(g,[2,87]),e(g,[2,88]),e(g,[2,89]),e(g,[2,90]),e(g,[2,91]),e(g,[2,92]),e(g,[2,93]),{6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,193],33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},{10:L1,18:194},{10:[1,195],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{10:[1,196]},{10:[1,197],103:[1,198]},e(Mt,[2,121]),{10:[1,199],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{10:[1,200],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{77:[1,201]},e(T,[2,102],{10:[1,202]}),e(T,[2,104],{10:[1,203]}),{77:[1,204]},e(K,[2,177]),{77:[1,205],95:[1,206]},e(H1,[2,50],{110:109,42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),{31:[1,207],65:f,79:208,113:A,114:d,115:E},e(l1,[2,79]),e(l1,[2,81]),e(l1,[2,82]),e(l1,[2,146]),e(l1,[2,147]),e(l1,[2,148]),e(l1,[2,149]),{47:[1,209],65:f,79:208,113:A,114:d,115:E},{30:210,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{49:[1,211],65:f,79:208,113:A,114:d,115:E},{51:[1,212],65:f,79:208,113:A,114:d,115:E},{53:[1,213],65:f,79:208,113:A,114:d,115:E},{55:[1,214],65:f,79:208,113:A,114:d,115:E},{58:[1,215]},{62:[1,216],65:f,79:208,113:A,114:d,115:E},{64:[1,217],65:f,79:208,113:A,114:d,115:E},{30:218,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{31:[1,219],65:f,79:208,113:A,114:d,115:E},{65:f,67:[1,220],69:[1,221],79:208,113:A,114:d,115:E},{65:f,67:[1,223],69:[1,222],79:208,113:A,114:d,115:E},e(z1,[2,44],{42:Gt}),e(I1,[2,70]),e(I1,[2,69]),{60:[1,224],65:f,79:208,113:A,114:d,115:E},e(I1,[2,72]),e(y1,[2,74]),{30:225,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(it,l,{5:226}),e(g,[2,95]),e(b,[2,35]),{41:227,42:S,43:39,45:40,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{10:Z,58:J,81:$,89:228,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:239,101:[1,240],102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:241,101:[1,242],102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{102:[1,243]},{10:Z,58:J,81:$,89:244,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{42:S,45:245,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(T,[2,101]),{77:[1,246]},{77:[1,247],95:[1,248]},e(T,[2,109]),e(T,[2,111],{10:[1,249]}),e(T,[2,112]),e(N,[2,51]),e(l1,[2,80]),e(N,[2,52]),{49:[1,250],65:f,79:208,113:A,114:d,115:E},e(N,[2,59]),e(N,[2,54]),e(N,[2,55]),e(N,[2,56]),{106:[1,251]},e(N,[2,58]),e(N,[2,60]),{64:[1,252],65:f,79:208,113:A,114:d,115:E},e(N,[2,62]),e(N,[2,63]),e(N,[2,65]),e(N,[2,64]),e(N,[2,66]),e([10,42,58,86,99,102,103,106,108,111,112,113],[2,78]),{31:[1,253],65:f,79:208,113:A,114:d,115:E},{6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,254],33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},e(H1,[2,48]),e(T,[2,114],{103:m1}),e(Kt,[2,123],{105:256,10:Z,58:J,81:$,102:t1,106:e1,107:s1,108:u1,109:i1}),e(H,[2,125]),e(H,[2,127]),e(H,[2,128]),e(H,[2,129]),e(H,[2,130]),e(H,[2,131]),e(H,[2,132]),e(H,[2,133]),e(H,[2,134]),e(T,[2,115],{103:m1}),{10:[1,257]},e(T,[2,116],{103:m1}),{10:[1,258]},e(Mt,[2,122]),e(T,[2,98],{103:m1}),e(T,[2,99],{110:109,42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),e(T,[2,103]),e(T,[2,105],{10:[1,259]}),e(T,[2,106]),{95:[1,260]},{49:[1,261]},{60:[1,262]},{64:[1,263]},{8:W,9:q,11:Q,21:264},e(b,[2,34]),{10:Z,58:J,81:$,102:t1,104:265,105:230,106:e1,107:s1,108:u1,109:i1},e(H,[2,126]),{14:k1,42:b1,58:g1,86:D1,98:266,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},{14:k1,42:b1,58:g1,86:D1,98:267,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},{95:[1,268]},e(T,[2,113]),e(N,[2,53]),{30:269,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(N,[2,61]),e(it,l,{5:270}),e(Kt,[2,124],{105:256,10:Z,58:J,81:$,102:t1,106:e1,107:s1,108:u1,109:i1}),e(T,[2,119],{117:160,10:[1,271],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,120],{117:160,10:[1,272],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,107]),{31:[1,273],65:f,79:208,113:A,114:d,115:E},{6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,274],33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},{10:Z,58:J,81:$,89:275,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:276,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},e(N,[2,57]),e(b,[2,33]),e(T,[2,117],{103:m1}),e(T,[2,118],{103:m1})],defaultActions:{},parseError:function(a,o){if(o.recoverable)this.trace(a);else{var p=new Error(a);throw p.hash=o,p}},parse:function(a){var o=this,p=[0],r=[],C=[null],t=[],R1=this.table,s="",j=0,jt=0,Se=2,Yt=1,_e=t.slice.call(arguments,1),_=Object.create(this.lexer),d1={yy:{}};for(var at in this.yy)Object.prototype.hasOwnProperty.call(this.yy,at)&&(d1.yy[at]=this.yy[at]);_.setInput(a,d1.yy),d1.yy.lexer=_,d1.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var ct=_.yylloc;t.push(ct);var Be=_.options&&_.options.ranges;typeof d1.yy.parseError=="function"?this.parseError=d1.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xe(){var n1;return n1=r.pop()||_.lex()||Yt,typeof n1!="number"&&(n1 instanceof Array&&(r=n1,n1=r.pop()),n1=o.symbols_[n1]||n1),n1}for(var G,E1,Y,ot,v1={},W1,r1,Xt,q1;;){if(E1=p[p.length-1],this.defaultActions[E1]?Y=this.defaultActions[E1]:((G===null||typeof G>"u")&&(G=xe()),Y=R1[E1]&&R1[E1][G]),typeof Y>"u"||!Y.length||!Y[0]){var lt="";q1=[];for(W1 in R1[E1])this.terminals_[W1]&&W1>Se&&q1.push("'"+this.terminals_[W1]+"'");_.showPosition?lt="Parse error on line "+(j+1)+`:
                  +import{c as ft,u as ye,s as me,g as ve,a as Ve,b as Le,v as Ie,x as Re,l as Z1,y as At,z as Ne,j as Oe,h as N1}from"./mermaid.core-YBgJFCkH.js";var ht=function(){var e=function(h1,a,o,p){for(o=o||{},p=h1.length;p--;o[h1[p]]=a);return o},u=[1,4],i=[1,3],n=[1,5],c=[1,8,9,10,11,27,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],l=[2,2],h=[1,13],U=[1,14],F=[1,15],O=[1,16],z=[1,23],c1=[1,25],f1=[1,26],A1=[1,27],S=[1,49],k=[1,48],o1=[1,29],w1=[1,30],U1=[1,31],G1=[1,32],M1=[1,33],B=[1,44],x=[1,46],y=[1,42],m=[1,47],v=[1,43],V=[1,50],L=[1,45],I=[1,51],R=[1,52],K1=[1,34],j1=[1,35],Y1=[1,36],X1=[1,37],L1=[1,57],b=[1,8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],W=[1,61],q=[1,60],Q=[1,62],z1=[8,9,11,73,75],k1=[1,88],b1=[1,93],g1=[1,92],D1=[1,89],F1=[1,85],T1=[1,91],C1=[1,87],S1=[1,94],_1=[1,90],B1=[1,95],x1=[1,86],H1=[8,9,10,11,73,75],N=[8,9,10,11,44,73,75],M=[8,9,10,11,29,42,44,46,48,50,52,54,56,58,61,63,65,66,68,73,75,86,99,102,103,106,108,111,112,113],Et=[8,9,11,42,58,73,75,86,99,102,103,106,108,111,112,113],I1=[42,58,86,99,102,103,106,108,111,112,113],kt=[1,121],bt=[1,120],gt=[1,128],Dt=[1,142],Ft=[1,143],Tt=[1,144],Ct=[1,145],St=[1,130],_t=[1,132],Bt=[1,136],xt=[1,137],yt=[1,138],mt=[1,139],vt=[1,140],Vt=[1,141],Lt=[1,146],It=[1,147],Rt=[1,126],Nt=[1,127],Ot=[1,134],Pt=[1,129],wt=[1,133],Ut=[1,131],it=[8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],Gt=[1,149],T=[8,9,11],K=[8,9,10,11,14,42,58,86,102,103,106,108,111,112,113],f=[1,169],P=[1,165],w=[1,166],A=[1,170],d=[1,167],E=[1,168],y1=[75,113,116],g=[8,9,10,11,12,14,27,29,32,42,58,73,81,82,83,84,85,86,87,102,106,108,111,112,113],Mt=[10,103],l1=[31,47,49,51,53,55,60,62,64,65,67,69,113,114,115],Z=[1,235],J=[1,233],$=[1,237],t1=[1,231],e1=[1,232],s1=[1,234],u1=[1,236],i1=[1,238],m1=[1,255],Kt=[8,9,11,103],H=[8,9,10,11,58,81,102,103,106,107,108,109],rt={trace:function(){},yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeperator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,verticeStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,link:39,node:40,styledVertex:41,AMP:42,vertex:43,STYLE_SEPARATOR:44,idString:45,DOUBLECIRCLESTART:46,DOUBLECIRCLEEND:47,PS:48,PE:49,"(-":50,"-)":51,STADIUMSTART:52,STADIUMEND:53,SUBROUTINESTART:54,SUBROUTINEEND:55,VERTEX_WITH_PROPS_START:56,"NODE_STRING[field]":57,COLON:58,"NODE_STRING[value]":59,PIPE:60,CYLINDERSTART:61,CYLINDEREND:62,DIAMOND_START:63,DIAMOND_STOP:64,TAGEND:65,TRAPSTART:66,TRAPEND:67,INVTRAPSTART:68,INVTRAPEND:69,linkStatement:70,arrowText:71,TESTSTR:72,START_LINK:73,edgeText:74,LINK:75,edgeTextToken:76,STR:77,MD_STR:78,textToken:79,keywords:80,STYLE:81,LINKSTYLE:82,CLASSDEF:83,CLASS:84,CLICK:85,DOWN:86,UP:87,textNoTagsToken:88,stylesOpt:89,"idString[vertex]":90,"idString[class]":91,CALLBACKNAME:92,CALLBACKARGS:93,HREF:94,LINK_TARGET:95,"STR[link]":96,"STR[tooltip]":97,alphaNum:98,DEFAULT:99,numList:100,INTERPOLATE:101,NUM:102,COMMA:103,style:104,styleComponent:105,NODE_STRING:106,UNIT:107,BRKT:108,PCT:109,idStringToken:110,MINUS:111,MULT:112,UNICODE_TEXT:113,TEXT:114,TAGSTART:115,EDGE_TEXT:116,alphaNumToken:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",42:"AMP",44:"STYLE_SEPARATOR",46:"DOUBLECIRCLESTART",47:"DOUBLECIRCLEEND",48:"PS",49:"PE",50:"(-",51:"-)",52:"STADIUMSTART",53:"STADIUMEND",54:"SUBROUTINESTART",55:"SUBROUTINEEND",56:"VERTEX_WITH_PROPS_START",57:"NODE_STRING[field]",58:"COLON",59:"NODE_STRING[value]",60:"PIPE",61:"CYLINDERSTART",62:"CYLINDEREND",63:"DIAMOND_START",64:"DIAMOND_STOP",65:"TAGEND",66:"TRAPSTART",67:"TRAPEND",68:"INVTRAPSTART",69:"INVTRAPEND",72:"TESTSTR",73:"START_LINK",75:"LINK",77:"STR",78:"MD_STR",81:"STYLE",82:"LINKSTYLE",83:"CLASSDEF",84:"CLASS",85:"CLICK",86:"DOWN",87:"UP",90:"idString[vertex]",91:"idString[class]",92:"CALLBACKNAME",93:"CALLBACKARGS",94:"HREF",95:"LINK_TARGET",96:"STR[link]",97:"STR[tooltip]",99:"DEFAULT",101:"INTERPOLATE",102:"NUM",103:"COMMA",106:"NODE_STRING",107:"UNIT",108:"BRKT",109:"PCT",111:"MINUS",112:"MULT",113:"UNICODE_TEXT",114:"TEXT",115:"TAGSTART",116:"EDGE_TEXT",118:"direction_tb",119:"direction_bt",120:"direction_rl",121:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[20,3],[20,4],[20,2],[20,1],[40,1],[40,5],[41,1],[41,3],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,8],[43,4],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,4],[43,4],[43,1],[39,2],[39,3],[39,3],[39,1],[39,3],[74,1],[74,2],[74,1],[74,1],[70,1],[71,3],[30,1],[30,2],[30,1],[30,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[100,1],[100,3],[89,1],[89,3],[104,1],[104,2],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[79,1],[79,1],[79,1],[79,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[76,1],[76,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[45,1],[45,2],[98,1],[98,2],[33,1],[33,1],[33,1],[33,1]],performAction:function(a,o,p,r,C,t,R1){var s=t.length-1;switch(C){case 2:this.$=[];break;case 3:(!Array.isArray(t[s])||t[s].length>0)&&t[s-1].push(t[s]),this.$=t[s-1];break;case 4:case 176:this.$=t[s];break;case 11:r.setDirection("TB"),this.$="TB";break;case 12:r.setDirection(t[s-1]),this.$=t[s-1];break;case 27:this.$=t[s-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=r.addSubGraph(t[s-6],t[s-1],t[s-4]);break;case 34:this.$=r.addSubGraph(t[s-3],t[s-1],t[s-3]);break;case 35:this.$=r.addSubGraph(void 0,t[s-1],void 0);break;case 37:this.$=t[s].trim(),r.setAccTitle(this.$);break;case 38:case 39:this.$=t[s].trim(),r.setAccDescription(this.$);break;case 43:r.addLink(t[s-2].stmt,t[s],t[s-1]),this.$={stmt:t[s],nodes:t[s].concat(t[s-2].nodes)};break;case 44:r.addLink(t[s-3].stmt,t[s-1],t[s-2]),this.$={stmt:t[s-1],nodes:t[s-1].concat(t[s-3].nodes)};break;case 45:this.$={stmt:t[s-1],nodes:t[s-1]};break;case 46:this.$={stmt:t[s],nodes:t[s]};break;case 47:this.$=[t[s]];break;case 48:this.$=t[s-4].concat(t[s]);break;case 49:this.$=t[s];break;case 50:this.$=t[s-2],r.setClass(t[s-2],t[s]);break;case 51:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"square");break;case 52:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"doublecircle");break;case 53:this.$=t[s-5],r.addVertex(t[s-5],t[s-2],"circle");break;case 54:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"ellipse");break;case 55:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"stadium");break;case 56:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"subroutine");break;case 57:this.$=t[s-7],r.addVertex(t[s-7],t[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[t[s-5],t[s-3]]]));break;case 58:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"cylinder");break;case 59:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"round");break;case 60:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"diamond");break;case 61:this.$=t[s-5],r.addVertex(t[s-5],t[s-2],"hexagon");break;case 62:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"odd");break;case 63:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"trapezoid");break;case 64:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"inv_trapezoid");break;case 65:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"lean_right");break;case 66:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"lean_left");break;case 67:this.$=t[s],r.addVertex(t[s]);break;case 68:t[s-1].text=t[s],this.$=t[s-1];break;case 69:case 70:t[s-2].text=t[s-1],this.$=t[s-2];break;case 71:this.$=t[s];break;case 72:var j=r.destructLink(t[s],t[s-2]);this.$={type:j.type,stroke:j.stroke,length:j.length,text:t[s-1]};break;case 73:this.$={text:t[s],type:"text"};break;case 74:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 75:this.$={text:t[s],type:"string"};break;case 76:this.$={text:t[s],type:"markdown"};break;case 77:var j=r.destructLink(t[s]);this.$={type:j.type,stroke:j.stroke,length:j.length};break;case 78:this.$=t[s-1];break;case 79:this.$={text:t[s],type:"text"};break;case 80:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 81:this.$={text:t[s],type:"string"};break;case 82:case 97:this.$={text:t[s],type:"markdown"};break;case 94:this.$={text:t[s],type:"text"};break;case 95:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 96:this.$={text:t[s],type:"text"};break;case 98:this.$=t[s-4],r.addClass(t[s-2],t[s]);break;case 99:this.$=t[s-4],r.setClass(t[s-2],t[s]);break;case 100:case 108:this.$=t[s-1],r.setClickEvent(t[s-1],t[s]);break;case 101:case 109:this.$=t[s-3],r.setClickEvent(t[s-3],t[s-2]),r.setTooltip(t[s-3],t[s]);break;case 102:this.$=t[s-2],r.setClickEvent(t[s-2],t[s-1],t[s]);break;case 103:this.$=t[s-4],r.setClickEvent(t[s-4],t[s-3],t[s-2]),r.setTooltip(t[s-4],t[s]);break;case 104:this.$=t[s-2],r.setLink(t[s-2],t[s]);break;case 105:this.$=t[s-4],r.setLink(t[s-4],t[s-2]),r.setTooltip(t[s-4],t[s]);break;case 106:this.$=t[s-4],r.setLink(t[s-4],t[s-2],t[s]);break;case 107:this.$=t[s-6],r.setLink(t[s-6],t[s-4],t[s]),r.setTooltip(t[s-6],t[s-2]);break;case 110:this.$=t[s-1],r.setLink(t[s-1],t[s]);break;case 111:this.$=t[s-3],r.setLink(t[s-3],t[s-2]),r.setTooltip(t[s-3],t[s]);break;case 112:this.$=t[s-3],r.setLink(t[s-3],t[s-2],t[s]);break;case 113:this.$=t[s-5],r.setLink(t[s-5],t[s-4],t[s]),r.setTooltip(t[s-5],t[s-2]);break;case 114:this.$=t[s-4],r.addVertex(t[s-2],void 0,void 0,t[s]);break;case 115:this.$=t[s-4],r.updateLink([t[s-2]],t[s]);break;case 116:this.$=t[s-4],r.updateLink(t[s-2],t[s]);break;case 117:this.$=t[s-8],r.updateLinkInterpolate([t[s-6]],t[s-2]),r.updateLink([t[s-6]],t[s]);break;case 118:this.$=t[s-8],r.updateLinkInterpolate(t[s-6],t[s-2]),r.updateLink(t[s-6],t[s]);break;case 119:this.$=t[s-6],r.updateLinkInterpolate([t[s-4]],t[s]);break;case 120:this.$=t[s-6],r.updateLinkInterpolate(t[s-4],t[s]);break;case 121:case 123:this.$=[t[s]];break;case 122:case 124:t[s-2].push(t[s]),this.$=t[s-2];break;case 126:this.$=t[s-1]+t[s];break;case 174:this.$=t[s];break;case 175:this.$=t[s-1]+""+t[s];break;case 177:this.$=t[s-1]+""+t[s];break;case 178:this.$={stmt:"dir",value:"TB"};break;case 179:this.$={stmt:"dir",value:"BT"};break;case 180:this.$={stmt:"dir",value:"RL"};break;case 181:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,9:u,10:i,12:n},{1:[3]},e(c,l,{5:6}),{4:7,9:u,10:i,12:n},{4:8,9:u,10:i,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},e(c,[2,9]),e(c,[2,10]),e(c,[2,11]),{8:[1,54],9:[1,55],10:L1,15:53,18:56},e(b,[2,3]),e(b,[2,4]),e(b,[2,5]),e(b,[2,6]),e(b,[2,7]),e(b,[2,8]),{8:W,9:q,11:Q,21:58,39:59,70:63,73:[1,64],75:[1,65]},{8:W,9:q,11:Q,21:66},{8:W,9:q,11:Q,21:67},{8:W,9:q,11:Q,21:68},{8:W,9:q,11:Q,21:69},{8:W,9:q,11:Q,21:70},{8:W,9:q,10:[1,71],11:Q,21:72},e(b,[2,36]),{35:[1,73]},{37:[1,74]},e(b,[2,39]),e(z1,[2,46],{18:75,10:L1}),{10:[1,76]},{10:[1,77]},{10:[1,78]},{10:[1,79]},{14:k1,42:b1,58:g1,77:[1,83],86:D1,92:[1,80],94:[1,81],98:82,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},e(b,[2,178]),e(b,[2,179]),e(b,[2,180]),e(b,[2,181]),e(H1,[2,47]),e(H1,[2,49],{44:[1,96]}),e(N,[2,67],{110:109,29:[1,97],42:S,46:[1,98],48:[1,99],50:[1,100],52:[1,101],54:[1,102],56:[1,103],58:k,61:[1,104],63:[1,105],65:[1,106],66:[1,107],68:[1,108],86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),e(M,[2,174]),e(M,[2,135]),e(M,[2,136]),e(M,[2,137]),e(M,[2,138]),e(M,[2,139]),e(M,[2,140]),e(M,[2,141]),e(M,[2,142]),e(M,[2,143]),e(M,[2,144]),e(M,[2,145]),e(c,[2,12]),e(c,[2,18]),e(c,[2,19]),{9:[1,110]},e(Et,[2,26],{18:111,10:L1}),e(b,[2,27]),{40:112,41:38,42:S,43:39,45:40,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(b,[2,40]),e(b,[2,41]),e(b,[2,42]),e(I1,[2,71],{71:113,60:[1,115],72:[1,114]}),{74:116,76:117,77:[1,118],78:[1,119],113:kt,116:bt},e([42,58,60,72,86,99,102,103,106,108,111,112,113],[2,77]),e(b,[2,28]),e(b,[2,29]),e(b,[2,30]),e(b,[2,31]),e(b,[2,32]),{10:gt,12:Dt,14:Ft,27:Tt,28:122,32:Ct,42:St,58:_t,73:Bt,77:[1,124],78:[1,125],80:135,81:xt,82:yt,83:mt,84:vt,85:Vt,86:Lt,87:It,88:123,102:Rt,106:Nt,108:Ot,111:Pt,112:wt,113:Ut},e(it,l,{5:148}),e(b,[2,37]),e(b,[2,38]),e(z1,[2,45],{42:Gt}),{42:S,45:150,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{99:[1,151],100:152,102:[1,153]},{42:S,45:154,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{42:S,45:155,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(T,[2,100],{10:[1,156],93:[1,157]}),{77:[1,158]},e(T,[2,108],{117:160,10:[1,159],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,110],{10:[1,161]}),e(K,[2,176]),e(K,[2,163]),e(K,[2,164]),e(K,[2,165]),e(K,[2,166]),e(K,[2,167]),e(K,[2,168]),e(K,[2,169]),e(K,[2,170]),e(K,[2,171]),e(K,[2,172]),e(K,[2,173]),{42:S,45:162,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{30:163,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:171,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:173,48:[1,172],65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:174,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:175,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:176,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{106:[1,177]},{30:178,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:179,63:[1,180],65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:181,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:182,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:183,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(M,[2,175]),e(c,[2,20]),e(Et,[2,25]),e(z1,[2,43],{18:184,10:L1}),e(I1,[2,68],{10:[1,185]}),{10:[1,186]},{30:187,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{75:[1,188],76:189,113:kt,116:bt},e(y1,[2,73]),e(y1,[2,75]),e(y1,[2,76]),e(y1,[2,161]),e(y1,[2,162]),{8:W,9:q,10:gt,11:Q,12:Dt,14:Ft,21:191,27:Tt,29:[1,190],32:Ct,42:St,58:_t,73:Bt,80:135,81:xt,82:yt,83:mt,84:vt,85:Vt,86:Lt,87:It,88:192,102:Rt,106:Nt,108:Ot,111:Pt,112:wt,113:Ut},e(g,[2,94]),e(g,[2,96]),e(g,[2,97]),e(g,[2,150]),e(g,[2,151]),e(g,[2,152]),e(g,[2,153]),e(g,[2,154]),e(g,[2,155]),e(g,[2,156]),e(g,[2,157]),e(g,[2,158]),e(g,[2,159]),e(g,[2,160]),e(g,[2,83]),e(g,[2,84]),e(g,[2,85]),e(g,[2,86]),e(g,[2,87]),e(g,[2,88]),e(g,[2,89]),e(g,[2,90]),e(g,[2,91]),e(g,[2,92]),e(g,[2,93]),{6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,193],33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},{10:L1,18:194},{10:[1,195],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{10:[1,196]},{10:[1,197],103:[1,198]},e(Mt,[2,121]),{10:[1,199],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{10:[1,200],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{77:[1,201]},e(T,[2,102],{10:[1,202]}),e(T,[2,104],{10:[1,203]}),{77:[1,204]},e(K,[2,177]),{77:[1,205],95:[1,206]},e(H1,[2,50],{110:109,42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),{31:[1,207],65:f,79:208,113:A,114:d,115:E},e(l1,[2,79]),e(l1,[2,81]),e(l1,[2,82]),e(l1,[2,146]),e(l1,[2,147]),e(l1,[2,148]),e(l1,[2,149]),{47:[1,209],65:f,79:208,113:A,114:d,115:E},{30:210,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{49:[1,211],65:f,79:208,113:A,114:d,115:E},{51:[1,212],65:f,79:208,113:A,114:d,115:E},{53:[1,213],65:f,79:208,113:A,114:d,115:E},{55:[1,214],65:f,79:208,113:A,114:d,115:E},{58:[1,215]},{62:[1,216],65:f,79:208,113:A,114:d,115:E},{64:[1,217],65:f,79:208,113:A,114:d,115:E},{30:218,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{31:[1,219],65:f,79:208,113:A,114:d,115:E},{65:f,67:[1,220],69:[1,221],79:208,113:A,114:d,115:E},{65:f,67:[1,223],69:[1,222],79:208,113:A,114:d,115:E},e(z1,[2,44],{42:Gt}),e(I1,[2,70]),e(I1,[2,69]),{60:[1,224],65:f,79:208,113:A,114:d,115:E},e(I1,[2,72]),e(y1,[2,74]),{30:225,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(it,l,{5:226}),e(g,[2,95]),e(b,[2,35]),{41:227,42:S,43:39,45:40,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{10:Z,58:J,81:$,89:228,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:239,101:[1,240],102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:241,101:[1,242],102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{102:[1,243]},{10:Z,58:J,81:$,89:244,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{42:S,45:245,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(T,[2,101]),{77:[1,246]},{77:[1,247],95:[1,248]},e(T,[2,109]),e(T,[2,111],{10:[1,249]}),e(T,[2,112]),e(N,[2,51]),e(l1,[2,80]),e(N,[2,52]),{49:[1,250],65:f,79:208,113:A,114:d,115:E},e(N,[2,59]),e(N,[2,54]),e(N,[2,55]),e(N,[2,56]),{106:[1,251]},e(N,[2,58]),e(N,[2,60]),{64:[1,252],65:f,79:208,113:A,114:d,115:E},e(N,[2,62]),e(N,[2,63]),e(N,[2,65]),e(N,[2,64]),e(N,[2,66]),e([10,42,58,86,99,102,103,106,108,111,112,113],[2,78]),{31:[1,253],65:f,79:208,113:A,114:d,115:E},{6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,254],33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},e(H1,[2,48]),e(T,[2,114],{103:m1}),e(Kt,[2,123],{105:256,10:Z,58:J,81:$,102:t1,106:e1,107:s1,108:u1,109:i1}),e(H,[2,125]),e(H,[2,127]),e(H,[2,128]),e(H,[2,129]),e(H,[2,130]),e(H,[2,131]),e(H,[2,132]),e(H,[2,133]),e(H,[2,134]),e(T,[2,115],{103:m1}),{10:[1,257]},e(T,[2,116],{103:m1}),{10:[1,258]},e(Mt,[2,122]),e(T,[2,98],{103:m1}),e(T,[2,99],{110:109,42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),e(T,[2,103]),e(T,[2,105],{10:[1,259]}),e(T,[2,106]),{95:[1,260]},{49:[1,261]},{60:[1,262]},{64:[1,263]},{8:W,9:q,11:Q,21:264},e(b,[2,34]),{10:Z,58:J,81:$,102:t1,104:265,105:230,106:e1,107:s1,108:u1,109:i1},e(H,[2,126]),{14:k1,42:b1,58:g1,86:D1,98:266,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},{14:k1,42:b1,58:g1,86:D1,98:267,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},{95:[1,268]},e(T,[2,113]),e(N,[2,53]),{30:269,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(N,[2,61]),e(it,l,{5:270}),e(Kt,[2,124],{105:256,10:Z,58:J,81:$,102:t1,106:e1,107:s1,108:u1,109:i1}),e(T,[2,119],{117:160,10:[1,271],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,120],{117:160,10:[1,272],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,107]),{31:[1,273],65:f,79:208,113:A,114:d,115:E},{6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,274],33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},{10:Z,58:J,81:$,89:275,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:276,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},e(N,[2,57]),e(b,[2,33]),e(T,[2,117],{103:m1}),e(T,[2,118],{103:m1})],defaultActions:{},parseError:function(a,o){if(o.recoverable)this.trace(a);else{var p=new Error(a);throw p.hash=o,p}},parse:function(a){var o=this,p=[0],r=[],C=[null],t=[],R1=this.table,s="",j=0,jt=0,Se=2,Yt=1,_e=t.slice.call(arguments,1),_=Object.create(this.lexer),d1={yy:{}};for(var at in this.yy)Object.prototype.hasOwnProperty.call(this.yy,at)&&(d1.yy[at]=this.yy[at]);_.setInput(a,d1.yy),d1.yy.lexer=_,d1.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var ct=_.yylloc;t.push(ct);var Be=_.options&&_.options.ranges;typeof d1.yy.parseError=="function"?this.parseError=d1.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xe(){var n1;return n1=r.pop()||_.lex()||Yt,typeof n1!="number"&&(n1 instanceof Array&&(r=n1,n1=r.pop()),n1=o.symbols_[n1]||n1),n1}for(var G,E1,Y,ot,v1={},W1,r1,Xt,q1;;){if(E1=p[p.length-1],this.defaultActions[E1]?Y=this.defaultActions[E1]:((G===null||typeof G>"u")&&(G=xe()),Y=R1[E1]&&R1[E1][G]),typeof Y>"u"||!Y.length||!Y[0]){var lt="";q1=[];for(W1 in R1[E1])this.terminals_[W1]&&W1>Se&&q1.push("'"+this.terminals_[W1]+"'");_.showPosition?lt="Parse error on line "+(j+1)+`:
                   `+_.showPosition()+`
                   Expecting `+q1.join(", ")+", got '"+(this.terminals_[G]||G)+"'":lt="Parse error on line "+(j+1)+": Unexpected "+(G==Yt?"end of input":"'"+(this.terminals_[G]||G)+"'"),this.parseError(lt,{text:_.match,token:this.terminals_[G]||G,line:_.yylineno,loc:ct,expected:q1})}if(Y[0]instanceof Array&&Y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E1+", token: "+G);switch(Y[0]){case 1:p.push(G),C.push(_.yytext),t.push(_.yylloc),p.push(Y[1]),G=null,jt=_.yyleng,s=_.yytext,j=_.yylineno,ct=_.yylloc;break;case 2:if(r1=this.productions_[Y[1]][1],v1.$=C[C.length-r1],v1._$={first_line:t[t.length-(r1||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(r1||1)].first_column,last_column:t[t.length-1].last_column},Be&&(v1._$.range=[t[t.length-(r1||1)].range[0],t[t.length-1].range[1]]),ot=this.performAction.apply(v1,[s,jt,j,d1.yy,Y[1],C,t].concat(_e)),typeof ot<"u")return ot;r1&&(p=p.slice(0,-1*r1*2),C=C.slice(0,-1*r1),t=t.slice(0,-1*r1)),p.push(this.productions_[Y[1]][0]),C.push(v1.$),t.push(v1._$),Xt=R1[p[p.length-2]][p[p.length-1]],p.push(Xt);break;case 3:return!0}}return!0}},Ce=function(){var h1={EOF:1,parseError:function(o,p){if(this.yy.parser)this.yy.parser.parseError(o,p);else throw new Error(o)},setInput:function(a,o){return this.yy=o||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var o=a.match(/(?:\r\n?|\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var o=a.length,p=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o),this.offset-=o;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),p.length-1&&(this.yylineno-=p.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:p?(p.length===r.length?this.yylloc.first_column:0)+r[r.length-p.length].length-p[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-o]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
                   `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),o=new Array(a.length+1).join("-");return a+this.upcomingInput()+`
                  diff --git a/assets/flowDiagram-61eb444c-dTODa_2O.js b/assets/flowDiagram-61eb444c-vQNzsoYg.js
                  similarity index 97%
                  rename from assets/flowDiagram-61eb444c-dTODa_2O.js
                  rename to assets/flowDiagram-61eb444c-vQNzsoYg.js
                  index 6052366..d5abae5 100644
                  --- a/assets/flowDiagram-61eb444c-dTODa_2O.js
                  +++ b/assets/flowDiagram-61eb444c-vQNzsoYg.js
                  @@ -1,4 +1,4 @@
                  -import{p as St,f as W}from"./flowDb-170db09d-pscdJplr.js";import{h as S,u as Lt,r as Et,p as _t,l as Tt,d as M,f as tt,G as Nt}from"./layout-wEoclKsW.js";import{h as x,o as P,p as z,q as et,c as J,j as rt,l as R,r as V,t as At}from"./mermaid.core-ygY5oRaR.js";import{a as N,b as at,i as nt,c as _,e as st,d as it,f as Ct,g as It,s as Bt}from"./styles-b966c4ae-SzUJ3e4L.js";import{l as Mt}from"./line-EJoUorMM.js";import"./app-RP31lnfq.js";import"./index-67a42d7d-B7ItSCR5.js";import"./edges-80f1ebb6-89E8mCFH.js";import"./createText-aebacdfe-CTBuskZ8.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";function Dt(r){if(!r.ok)throw new Error(r.status+" "+r.statusText);return r.text()}function Rt(r,e){return fetch(r,e).then(Dt)}function Gt(r){return(e,t)=>Rt(e,t).then(n=>new DOMParser().parseFromString(n,r))}var Pt=Gt("image/svg+xml"),Y={normal:$t,vee:Wt,undirected:Vt};function Ut(r){Y=r}function $t(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function Wt(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function Vt(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function zt(r,e){var t=r;return t.node().appendChild(e.label),N(t,e.labelStyle),t}function Yt(r,e){for(var t=r.append("text"),n=Ht(e.label).split(`
                  +import{p as St,f as W}from"./flowDb-170db09d-3I9bX383.js";import{h as S,u as Lt,r as Et,p as _t,l as Tt,d as M,f as tt,G as Nt}from"./layout-6DvG_ICF.js";import{h as x,o as P,p as z,q as et,c as J,j as rt,l as R,r as V,t as At}from"./mermaid.core-YBgJFCkH.js";import{a as N,b as at,i as nt,c as _,e as st,d as it,f as Ct,g as It,s as Bt}from"./styles-b966c4ae-hKhWXcIa.js";import{l as Mt}from"./line-QxBjBe1b.js";import"./app-0NopiYEV.js";import"./index-67a42d7d-iblPHmxF.js";import"./edges-80f1ebb6-hR1YO9QC.js";import"./createText-aebacdfe-VuGI-o_f.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";function Dt(r){if(!r.ok)throw new Error(r.status+" "+r.statusText);return r.text()}function Rt(r,e){return fetch(r,e).then(Dt)}function Gt(r){return(e,t)=>Rt(e,t).then(n=>new DOMParser().parseFromString(n,r))}var Pt=Gt("image/svg+xml"),Y={normal:$t,vee:Wt,undirected:Vt};function Ut(r){Y=r}function $t(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function Wt(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function Vt(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function zt(r,e){var t=r;return t.node().appendChild(e.label),N(t,e.labelStyle),t}function Yt(r,e){for(var t=r.append("text"),n=Ht(e.label).split(`
                   `),a=0;a0}function T(r,e,t){var n=r.x,a=r.y,s=[],i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;e.forEach(function(p){i=Math.min(i,p.x),o=Math.min(o,p.y)});for(var c=n-r.width/2-i,d=a-r.height/2-o,l=0;l1&&s.sort(function(p,g){var f=p.x-t.x,y=p.y-t.y,k=Math.sqrt(f*f+y*y),I=g.x-t.x,E=g.y-t.y,U=Math.sqrt(I*I+E*E);return kMath.abs(a)*o?(s<0&&(o=-o),c=s===0?0:o*a/s,d=o):(a<0&&(i=-i),c=i,d=a===0?0:i*s/a),{x:t+c,y:n+d}}var Q={rect:ie,ellipse:oe,circle:le,diamond:ce};function se(r){Q=r}function ie(r,e,t){var n=r.insert("rect",":first-child").attr("rx",t.rx).attr("ry",t.ry).attr("x",-e.width/2).attr("y",-e.height/2).attr("width",e.width).attr("height",e.height);return t.intersect=function(a){return Z(t,a)},n}function oe(r,e,t){var n=e.width/2,a=e.height/2,s=r.insert("ellipse",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("rx",n).attr("ry",a);return t.intersect=function(i){return lt(t,n,a,i)},s}function le(r,e,t){var n=Math.max(e.width,e.height)/2,a=r.insert("circle",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("r",n);return t.intersect=function(s){return ae(t,n,s)},a}function ce(r,e,t){var n=e.width*Math.SQRT2/2,a=e.height*Math.SQRT2/2,s=[{x:0,y:-a},{x:-n,y:0},{x:0,y:a},{x:n,y:0}],i=r.insert("polygon",":first-child").attr("points",s.map(function(o){return o.x+","+o.y}).join(" "));return t.intersect=function(o){return T(t,s,o)},i}function de(){var r=function(e,t){fe(t);var n=D(e,"output"),a=D(n,"clusters"),s=D(n,"edgePaths"),i=X(D(n,"edgeLabels"),t),o=q(D(n,"nodes"),t,Q);Tt(t),re(o,t),ee(i,t),F(s,t,Y);var c=H(a,t);te(c,t),pe(t)};return r.createNodes=function(e){return arguments.length?(jt(e),r):q},r.createClusters=function(e){return arguments.length?(Xt(e),r):H},r.createEdgeLabels=function(e){return arguments.length?(Ft(e),r):X},r.createEdgePaths=function(e){return arguments.length?(qt(e),r):F},r.shapes=function(e){return arguments.length?(se(e),r):Q},r.arrows=function(e){return arguments.length?(Ut(e),r):Y},r}var he={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},ue={arrowhead:"normal",curve:P};function fe(r){r.nodes().forEach(function(e){var t=r.node(e);!S(t,"label")&&!r.children(e).length&&(t.label=e),S(t,"paddingX")&&M(t,{paddingLeft:t.paddingX,paddingRight:t.paddingX}),S(t,"paddingY")&&M(t,{paddingTop:t.paddingY,paddingBottom:t.paddingY}),S(t,"padding")&&M(t,{paddingLeft:t.padding,paddingRight:t.padding,paddingTop:t.padding,paddingBottom:t.padding}),M(t,he),tt(["paddingLeft","paddingRight","paddingTop","paddingBottom"],function(n){t[n]=Number(t[n])}),S(t,"width")&&(t._prevWidth=t.width),S(t,"height")&&(t._prevHeight=t.height)}),r.edges().forEach(function(e){var t=r.edge(e);S(t,"label")||(t.label=""),M(t,ue)})}function pe(r){tt(r.nodes(),function(e){var t=r.node(e);S(t,"_prevWidth")?t.width=t._prevWidth:delete t.width,S(t,"_prevHeight")?t.height=t._prevHeight:delete t.height,delete t._prevWidth,delete t._prevHeight})}function D(r,e){var t=r.select("g."+e);return t.empty()&&(t=r.append("g").attr("class",e)),t}function ct(r,e,t){const n=e.width,a=e.height,s=(n+a)*.9,i=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}],o=A(r,s,s,i);return t.intersect=function(c){return T(t,i,c)},o}function dt(r,e,t){const a=e.height,s=a/4,i=e.width+2*s,o=[{x:s,y:0},{x:i-s,y:0},{x:i,y:-a/2},{x:i-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],c=A(r,i,a,o);return t.intersect=function(d){return T(t,o,d)},c}function ht(r,e,t){const n=e.width,a=e.height,s=[{x:-a/2,y:0},{x:n,y:0},{x:n,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function ut(r,e,t){const n=e.width,a=e.height,s=[{x:-2*a/6,y:0},{x:n-a/6,y:0},{x:n+2*a/6,y:-a},{x:a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function ft(r,e,t){const n=e.width,a=e.height,s=[{x:2*a/6,y:0},{x:n+a/6,y:0},{x:n-2*a/6,y:-a},{x:-a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function pt(r,e,t){const n=e.width,a=e.height,s=[{x:-2*a/6,y:0},{x:n+2*a/6,y:0},{x:n-a/6,y:-a},{x:a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function vt(r,e,t){const n=e.width,a=e.height,s=[{x:a/6,y:0},{x:n-a/6,y:0},{x:n+2*a/6,y:-a},{x:-2*a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function yt(r,e,t){const n=e.width,a=e.height,s=[{x:0,y:0},{x:n+a/2,y:0},{x:n,y:-a/2},{x:n+a/2,y:-a},{x:0,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function gt(r,e,t){const n=e.height,a=e.width+n/4,s=r.insert("rect",":first-child").attr("rx",n/2).attr("ry",n/2).attr("x",-a/2).attr("y",-n/2).attr("width",a).attr("height",n);return t.intersect=function(i){return Z(t,i)},s}function wt(r,e,t){const n=e.width,a=e.height,s=[{x:0,y:0},{x:n,y:0},{x:n,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:n+8,y:0},{x:n+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function mt(r,e,t){const n=e.width,a=n/2,s=a/(2.5+n/50),i=e.height+s,o="M 0,"+s+" a "+a+","+s+" 0,0,0 "+n+" 0 a "+a+","+s+" 0,0,0 "+-n+" 0 l 0,"+i+" a "+a+","+s+" 0,0,0 "+n+" 0 l 0,"+-i,c=r.attr("label-offset-y",s).insert("path",":first-child").attr("d",o).attr("transform","translate("+-n/2+","+-(i/2+s)+")");return t.intersect=function(d){const l=Z(t,d),v=l.x-t.x;if(a!=0&&(Math.abs(v)t.height/2-s)){let h=s*s*(1-v*v/(a*a));h!=0&&(h=Math.sqrt(h)),h=s-h,d.y-t.y>0&&(h=-h),l.y+=h}return l},c}function ve(r){r.shapes().question=ct,r.shapes().hexagon=dt,r.shapes().stadium=gt,r.shapes().subroutine=wt,r.shapes().cylinder=mt,r.shapes().rect_left_inv_arrow=ht,r.shapes().lean_right=ut,r.shapes().lean_left=ft,r.shapes().trapezoid=pt,r.shapes().inv_trapezoid=vt,r.shapes().rect_right_inv_arrow=yt}function ye(r){r({question:ct}),r({hexagon:dt}),r({stadium:gt}),r({subroutine:wt}),r({cylinder:mt}),r({rect_left_inv_arrow:ht}),r({lean_right:ut}),r({lean_left:ft}),r({trapezoid:pt}),r({inv_trapezoid:vt}),r({rect_right_inv_arrow:yt})}function A(r,e,t,n){return r.insert("polygon",":first-child").attr("points",n.map(function(a){return a.x+","+a.y}).join(" ")).attr("transform","translate("+-e/2+","+t/2+")")}const ge={addToRender:ve,addToRenderV2:ye},xt={},we=function(r){const e=Object.keys(r);for(const t of e)xt[t]=r[t]},bt=function(r,e,t,n,a,s){const i=n?n.select(`[id="${t}"]`):x(`[id="${t}"]`),o=a||document;Object.keys(r).forEach(function(d){const l=r[d];let v="default";l.classes.length>0&&(v=l.classes.join(" "));const h=z(l.styles);let u=l.text!==void 0?l.text:l.id,p;if(et(J().flowchart.htmlLabels)){const y={label:u.replace(/fa[blrs]?:fa-[\w-]+/g,k=>``)};p=at(i,y).node(),p.parentNode.removeChild(p)}else{const y=o.createElementNS("http://www.w3.org/2000/svg","text");y.setAttribute("style",h.labelStyle.replace("color:","fill:"));const k=u.split(rt.lineBreakRegex);for(const I of k){const E=o.createElementNS("http://www.w3.org/2000/svg","tspan");E.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),E.setAttribute("dy","1em"),E.setAttribute("x","1"),E.textContent=I,y.appendChild(E)}p=y}let g=0,f="";switch(l.type){case"round":g=5,f="rect";break;case"square":f="rect";break;case"diamond":f="question";break;case"hexagon":f="hexagon";break;case"odd":f="rect_left_inv_arrow";break;case"lean_right":f="lean_right";break;case"lean_left":f="lean_left";break;case"trapezoid":f="trapezoid";break;case"inv_trapezoid":f="inv_trapezoid";break;case"odd_right":f="rect_left_inv_arrow";break;case"circle":f="circle";break;case"ellipse":f="ellipse";break;case"stadium":f="stadium";break;case"subroutine":f="subroutine";break;case"cylinder":f="cylinder";break;case"group":f="rect";break;default:f="rect"}R.warn("Adding node",l.id,l.domId),e.setNode(s.db.lookUpDomId(l.id),{labelType:"svg",labelStyle:h.labelStyle,shape:f,label:p,rx:g,ry:g,class:v,style:h.style,id:s.db.lookUpDomId(l.id)})})},kt=function(r,e,t){let n=0,a,s;if(r.defaultStyle!==void 0){const i=z(r.defaultStyle);a=i.style,s=i.labelStyle}r.forEach(function(i){n++;const o="L-"+i.start+"-"+i.end,c="LS-"+i.start,d="LE-"+i.end,l={};i.type==="arrow_open"?l.arrowhead="none":l.arrowhead="normal";let v="",h="";if(i.style!==void 0){const u=z(i.style);v=u.style,h=u.labelStyle}else switch(i.stroke){case"normal":v="fill:none",a!==void 0&&(v=a),s!==void 0&&(h=s);break;case"dotted":v="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":v=" stroke-width: 3.5px;fill:none";break}l.style=v,l.labelStyle=h,i.interpolate!==void 0?l.curve=V(i.interpolate,P):r.defaultInterpolate!==void 0?l.curve=V(r.defaultInterpolate,P):l.curve=V(xt.curve,P),i.text===void 0?i.style!==void 0&&(l.arrowheadStyle="fill: #333"):(l.arrowheadStyle="fill: #333",l.labelpos="c",et(J().flowchart.htmlLabels)?(l.labelType="html",l.label=`${i.text.replace(/fa[blrs]?:fa-[\w-]+/g,u=>``)}`):(l.labelType="text",l.label=i.text.replace(rt.lineBreakRegex,`
                   `),i.style===void 0&&(l.style=l.style||"stroke: #333; stroke-width: 1.5px;fill:none"),l.labelStyle=l.labelStyle.replace("color:","fill:"))),l.id=o,l.class=c+" "+d,l.minlen=i.length||1,e.setEdge(t.db.lookUpDomId(i.start),t.db.lookUpDomId(i.end),l,n)})},me=function(r,e){return R.info("Extracting classes"),e.db.getClasses()},xe=function(r,e,t,n){R.info("Drawing flowchart");const{securityLevel:a,flowchart:s}=J();let i;a==="sandbox"&&(i=x("#i"+e));const o=a==="sandbox"?x(i.nodes()[0].contentDocument.body):x("body"),c=a==="sandbox"?i.nodes()[0].contentDocument:document;let d=n.db.getDirection();d===void 0&&(d="TD");const l=s.nodeSpacing||50,v=s.rankSpacing||50,h=new Nt({multigraph:!0,compound:!0}).setGraph({rankdir:d,nodesep:l,ranksep:v,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});let u;const p=n.db.getSubGraphs();for(let w=p.length-1;w>=0;w--)u=p[w],n.db.addVertex(u.id,u.title,"group",void 0,u.classes);const g=n.db.getVertices();R.warn("Get vertices",g);const f=n.db.getEdges();let y=0;for(y=p.length-1;y>=0;y--){u=p[y],Bt("cluster").append("text");for(let w=0;w{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,be.setConf(r.flowchart),W.clear(),W.setGen("gen-1")}};export{Me as diagram};
                  diff --git a/assets/flowDiagram-v2-2f8f667a-17CncbGG.js b/assets/flowDiagram-v2-2f8f667a-17CncbGG.js
                  deleted file mode 100644
                  index 0f92f20..0000000
                  --- a/assets/flowDiagram-v2-2f8f667a-17CncbGG.js
                  +++ /dev/null
                  @@ -1 +0,0 @@
                  -import{p as e,f as o}from"./flowDb-170db09d-pscdJplr.js";import{f as t,g as a}from"./styles-b966c4ae-SzUJ3e4L.js";import{aq as s}from"./mermaid.core-ygY5oRaR.js";import"./layout-wEoclKsW.js";import"./index-67a42d7d-B7ItSCR5.js";import"./edges-80f1ebb6-89E8mCFH.js";import"./createText-aebacdfe-CTBuskZ8.js";import"./line-EJoUorMM.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";import"./app-RP31lnfq.js";const u={parser:e,db:o,renderer:t,styles:a,init:r=>{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,s({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}}),t.setConf(r.flowchart),o.clear(),o.setGen("gen-2")}};export{u as diagram};
                  diff --git a/assets/flowDiagram-v2-2f8f667a-vyhUgdJw.js b/assets/flowDiagram-v2-2f8f667a-vyhUgdJw.js
                  new file mode 100644
                  index 0000000..36a5b96
                  --- /dev/null
                  +++ b/assets/flowDiagram-v2-2f8f667a-vyhUgdJw.js
                  @@ -0,0 +1 @@
                  +import{p as e,f as o}from"./flowDb-170db09d-3I9bX383.js";import{f as t,g as a}from"./styles-b966c4ae-hKhWXcIa.js";import{aq as s}from"./mermaid.core-YBgJFCkH.js";import"./layout-6DvG_ICF.js";import"./index-67a42d7d-iblPHmxF.js";import"./edges-80f1ebb6-hR1YO9QC.js";import"./createText-aebacdfe-VuGI-o_f.js";import"./line-QxBjBe1b.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";import"./app-0NopiYEV.js";const u={parser:e,db:o,renderer:t,styles:a,init:r=>{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,s({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}}),t.setConf(r.flowchart),o.clear(),o.setGen("gen-2")}};export{u as diagram};
                  diff --git a/assets/flowchart-elk-definition-e097735e-FPGtu502.js b/assets/flowchart-elk-definition-e097735e-s4v8c7Pb.js
                  similarity index 99%
                  rename from assets/flowchart-elk-definition-e097735e-FPGtu502.js
                  rename to assets/flowchart-elk-definition-e097735e-s4v8c7Pb.js
                  index 74da773..f438c44 100644
                  --- a/assets/flowchart-elk-definition-e097735e-FPGtu502.js
                  +++ b/assets/flowchart-elk-definition-e097735e-s4v8c7Pb.js
                  @@ -1,4 +1,4 @@
                  -import{d as bMe,p as wMe}from"./flowDb-170db09d-pscdJplr.js";import{aB as Hee,aC as gMe,l as K1,h as lI,a$ as OH,t as pMe,p as V1n,r as X1n,o as IH,j as vMe}from"./mermaid.core-ygY5oRaR.js";import{i as mMe,a as kMe,l as yMe,b as jMe,j as EMe}from"./edges-80f1ebb6-89E8mCFH.js";import{l as CMe}from"./line-EJoUorMM.js";import"./app-RP31lnfq.js";import"./createText-aebacdfe-CTBuskZ8.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";function PH(Ae){throw new Error('Could not dynamically require "'+Ae+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Uee={exports:{}};(function(Ae,At){(function(ft){Ae.exports=ft()})(function(){return function(){function ft(dt,Vt,Et){function y(Bt,qt){if(!Vt[Bt]){if(!dt[Bt]){var Ge=typeof PH=="function"&&PH;if(!qt&&Ge)return Ge(Bt,!0);if(Ht)return Ht(Bt,!0);var Ki=new Error("Cannot find module '"+Bt+"'");throw Ki.code="MODULE_NOT_FOUND",Ki}var Ii=Vt[Bt]={exports:{}};dt[Bt][0].call(Ii.exports,function(An){var Uc=dt[Bt][1][An];return y(Uc||An)},Ii,Ii.exports,ft,dt,Vt,Et)}return Vt[Bt].exports}for(var Ht=typeof PH=="function"&&PH,Lc=0;Lc0&&arguments[0]!==void 0?arguments[0]:{},Ki=Ge.defaultLayoutOptions,Ii=Ki===void 0?{}:Ki,An=Ge.algorithms,Uc=An===void 0?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:An,Nc=Ge.workerFactory,ju=Ge.workerUrl;if(y(this,Bt),this.defaultLayoutOptions=Ii,this.initialized=!1,typeof ju>"u"&&typeof Nc>"u")throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var vr=Nc;typeof ju<"u"&&typeof Nc>"u"&&(vr=function(q1){return new Worker(q1)});var Jo=vr(ju);if(typeof Jo.postMessage!="function")throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new Lc(Jo),this.worker.postMessage({cmd:"register",algorithms:Uc}).then(function(H1){return qt.initialized=!0}).catch(console.err)}return Et(Bt,[{key:"layout",value:function(Ge){var Ki=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Ii=Ki.layoutOptions,An=Ii===void 0?this.defaultLayoutOptions:Ii,Uc=Ki.logging,Nc=Uc===void 0?!1:Uc,ju=Ki.measureExecutionTime,vr=ju===void 0?!1:ju;return Ge?this.worker.postMessage({cmd:"layout",graph:Ge,layoutOptions:An,options:{logging:Nc,measureExecutionTime:vr}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),Bt}();Vt.default=Ht;var Lc=function(){function Bt(qt){var Ge=this;if(y(this,Bt),qt===void 0)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=qt,this.worker.onmessage=function(Ki){setTimeout(function(){Ge.receive(Ge,Ki)},0)}}return Et(Bt,[{key:"postMessage",value:function(Ge){var Ki=this.id||0;this.id=Ki+1,Ge.id=Ki;var Ii=this;return new Promise(function(An,Uc){Ii.resolvers[Ki]=function(Nc,ju){Nc?(Ii.convertGwtStyleError(Nc),Uc(Nc)):An(ju)},Ii.worker.postMessage(Ge)})}},{key:"receive",value:function(Ge,Ki){var Ii=Ki.data,An=Ge.resolvers[Ii.id];An&&(delete Ge.resolvers[Ii.id],Ii.error?An(Ii.error):An(null,Ii.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(Ge){if(Ge){var Ki=Ge.__java$exception;Ki&&(Ki.cause&&Ki.cause.backingJsObject&&(Ge.cause=Ki.cause.backingJsObject,this.convertGwtStyleError(Ge.cause)),delete Ge.__java$exception)}}}]),Bt}()},{}],2:[function(ft,dt,Vt){(function(Et){(function(){var y;typeof window<"u"?y=window:typeof Et<"u"?y=Et:typeof self<"u"&&(y=self);var Ht;function Lc(){}function Bt(){}function qt(){}function Ge(){}function Ki(){}function Ii(){}function An(){}function Uc(){}function Nc(){}function ju(){}function vr(){}function Jo(){}function H1(){}function q1(){}function ww(){}function Np(){}function G1(){}function Th(){}function Q1n(){}function J1n(){}function zy(){}function Y1n(){}function Z1n(){}function nln(){}function eln(){}function Xg(){}function N(){}function tln(){}function aI(){}function iln(){}function rln(){}function cln(){}function uln(){}function DH(){}function sln(){}function oln(){}function fln(){}function z1(){}function U1(){}function dI(){}function hln(){}function lln(){}function aln(){}function $H(){}function dln(){}function bln(){}function Vg(){}function Qg(){}function wln(){}function gln(){}function pln(){}function vln(){}function FH(){}function W1(){}function Jg(){}function Yg(){}function mln(){}function Vee(){}function bI(){}function kln(){}function yln(){}function jln(){}function Eln(){}function Cln(){}function Tln(){}function Mln(){}function Aln(){}function Sln(){}function Pln(){}function Iln(){}function Oln(){}function Dln(){}function $ln(){}function Fln(){}function xln(){}function Lln(){}function Nln(){}function Bln(){}function Rln(){}function _ln(){}function Kln(){}function Hln(){}function qln(){}function Gln(){}function zln(){}function Uln(){}function Wln(){}function Xln(){}function Vln(){}function Qln(){}function Jln(){}function Yln(){}function xH(){}function Zln(){}function nan(){}function ean(){}function tan(){}function wI(){}function gI(){}function Uy(){}function ian(){}function ran(){}function pI(){}function can(){}function uan(){}function san(){}function Wy(){}function oan(){}function fan(){}function han(){}function lan(){}function aan(){}function dan(){}function ban(){}function wan(){}function gan(){}function LH(){}function pan(){}function van(){}function man(){}function kan(){}function yan(){}function NH(){}function jan(){}function Ean(){}function Can(){}function Tan(){}function Man(){}function Aan(){}function San(){}function Pan(){}function Ian(){}function Oan(){}function Dan(){}function $an(){}function Fan(){}function xan(){}function vI(){}function Lan(){}function Nan(){}function Ban(){}function Ran(){}function _an(){}function BH(){}function Kan(){}function Han(){}function qan(){}function Gan(){}function zan(){}function Uan(){}function Wan(){}function Xan(){}function Van(){}function Qan(){}function Jan(){}function Yan(){}function Zan(){}function ndn(){}function edn(){}function tdn(){}function idn(){}function rdn(){}function cdn(){}function udn(){}function sdn(){}function odn(){}function fdn(){}function hdn(){}function ldn(){}function adn(){}function ddn(){}function bdn(){}function wdn(){}function gdn(){}function pdn(){}function vdn(){}function mdn(){}function kdn(){}function ydn(){}function jdn(){}function Edn(){}function Cdn(){}function Tdn(){}function Mdn(){}function Adn(){}function Sdn(){}function Pdn(){}function Idn(){}function Odn(){}function Ddn(){}function $dn(){}function Fdn(){}function xdn(){}function Ldn(){}function Ndn(){}function Bdn(){}function Rdn(){}function _dn(){}function Kdn(){}function Hdn(){}function qdn(){}function Gdn(){}function zdn(){}function Udn(){}function Wdn(){}function Xdn(){}function Vdn(){}function Qdn(){}function Jdn(){}function Ydn(){}function Zdn(){}function n0n(){}function e0n(){}function t0n(){}function i0n(){}function r0n(){}function c0n(){}function u0n(){}function s0n(){}function o0n(){}function f0n(){}function h0n(){}function l0n(){}function a0n(){}function d0n(){}function b0n(){}function w0n(){}function g0n(){}function p0n(){}function v0n(){}function m0n(){}function k0n(){}function y0n(){}function j0n(){}function E0n(){}function C0n(){}function T0n(){}function M0n(){}function A0n(){}function S0n(){}function P0n(){}function I0n(){}function O0n(){}function D0n(){}function RH(){}function $0n(){}function F0n(){}function x0n(){}function L0n(){}function N0n(){}function B0n(){}function R0n(){}function _0n(){}function K0n(){}function H0n(){}function q0n(){}function G0n(){}function z0n(){}function U0n(){}function W0n(){}function X0n(){}function V0n(){}function Q0n(){}function J0n(){}function Y0n(){}function Z0n(){}function nbn(){}function ebn(){}function tbn(){}function ibn(){}function rbn(){}function cbn(){}function ubn(){}function sbn(){}function obn(){}function fbn(){}function hbn(){}function lbn(){}function abn(){}function dbn(){}function bbn(){}function wbn(){}function gbn(){}function pbn(){}function vbn(){}function mbn(){}function kbn(){}function ybn(){}function jbn(){}function Ebn(){}function Cbn(){}function Tbn(){}function Mbn(){}function Abn(){}function Sbn(){}function Pbn(){}function Ibn(){}function Obn(){}function Dbn(){}function $bn(){}function Fbn(){}function xbn(){}function Lbn(){}function Nbn(){}function Bbn(){}function Rbn(){}function _bn(){}function Kbn(){}function Hbn(){}function qbn(){}function Gbn(){}function zbn(){}function _H(){}function Ubn(){}function Wbn(){}function Xbn(){}function Vbn(){}function Qbn(){}function Jbn(){}function Ybn(){}function Zbn(){}function nwn(){}function ewn(){}function twn(){}function iwn(){}function rwn(){}function cwn(){}function uwn(){}function swn(){}function own(){}function fwn(){}function hwn(){}function lwn(){}function KH(){}function awn(){}function dwn(){}function bwn(){}function wwn(){}function gwn(){}function pwn(){}function HH(){}function qH(){}function vwn(){}function GH(){}function zH(){}function mwn(){}function kwn(){}function ywn(){}function jwn(){}function Ewn(){}function Cwn(){}function Twn(){}function Mwn(){}function Awn(){}function UH(){}function Swn(){}function Pwn(){}function Iwn(){}function Own(){}function Dwn(){}function $wn(){}function Fwn(){}function xwn(){}function Lwn(){}function Nwn(){}function Bwn(){}function Rwn(){}function _wn(){}function Kwn(){}function Hwn(){}function qwn(){}function Gwn(){}function zwn(){}function Uwn(){}function Wwn(){}function Xwn(){}function Vwn(){}function Qwn(){}function Jwn(){}function Ywn(){}function Zwn(){}function ngn(){}function egn(){}function tgn(){}function ign(){}function rgn(){}function cgn(){}function ugn(){}function sgn(){}function ogn(){}function fgn(){}function hgn(){}function lgn(){}function agn(){}function dgn(){}function bgn(){}function wgn(){}function ggn(){}function pgn(){}function vgn(){}function mgn(){}function kgn(){}function ygn(){}function jgn(){}function Egn(){}function Cgn(){}function Tgn(){}function Mgn(){}function Agn(){}function Sgn(){}function Pgn(){}function Ign(){}function Ogn(){}function Dgn(){}function $gn(){}function Fgn(){}function xgn(){}function Lgn(){}function Ngn(){}function Bgn(){}function Rgn(){}function _gn(){}function Kgn(){}function mI(){}function kI(){}function yI(){}function Hgn(){}function qgn(){}function Ggn(){}function zgn(){}function Ugn(){}function WH(){}function Wgn(){}function Xgn(){}function Qee(){}function Vgn(){}function Qgn(){}function Jgn(){}function Ygn(){}function Zgn(){}function n2n(){}function e2n(){}function Zl(){}function t2n(){}function Zg(){}function XH(){}function i2n(){}function r2n(){}function c2n(){}function u2n(){}function s2n(){}function o2n(){}function f2n(){}function h2n(){}function l2n(){}function a2n(){}function d2n(){}function b2n(){}function w2n(){}function g2n(){}function p2n(){}function v2n(){}function m2n(){}function k2n(){}function y2n(){}function j2n(){}function E2n(){}function dn(){}function C2n(){}function T2n(){}function M2n(){}function A2n(){}function S2n(){}function P2n(){}function I2n(){}function O2n(){}function D2n(){}function $2n(){}function jI(){}function F2n(){}function x2n(){}function L2n(){}function N2n(){}function B2n(){}function VH(){}function Xy(){}function Vy(){}function R2n(){}function QH(){}function Qy(){}function _2n(){}function K2n(){}function H2n(){}function q2n(){}function G2n(){}function z2n(){}function Jy(){}function U2n(){}function W2n(){}function X2n(){}function Yy(){}function V2n(){}function JH(){}function Q2n(){}function EI(){}function YH(){}function J2n(){}function Y2n(){}function Z2n(){}function npn(){}function Jee(){}function epn(){}function tpn(){}function ipn(){}function rpn(){}function cpn(){}function upn(){}function spn(){}function opn(){}function fpn(){}function hpn(){}function Bp(){}function CI(){}function lpn(){}function apn(){}function dpn(){}function bpn(){}function wpn(){}function gpn(){}function ppn(){}function vpn(){}function mpn(){}function kpn(){}function ypn(){}function jpn(){}function Epn(){}function Cpn(){}function Tpn(){}function Mpn(){}function Apn(){}function Spn(){}function Ppn(){}function Ipn(){}function Opn(){}function Dpn(){}function $pn(){}function Fpn(){}function xpn(){}function Lpn(){}function Npn(){}function Bpn(){}function Rpn(){}function _pn(){}function Kpn(){}function Hpn(){}function qpn(){}function Gpn(){}function zpn(){}function Upn(){}function Wpn(){}function Xpn(){}function Vpn(){}function Qpn(){}function Jpn(){}function Ypn(){}function Zpn(){}function n3n(){}function e3n(){}function t3n(){}function i3n(){}function r3n(){}function c3n(){}function u3n(){}function s3n(){}function o3n(){}function f3n(){}function h3n(){}function l3n(){}function a3n(){}function d3n(){}function b3n(){}function w3n(){}function g3n(){}function p3n(){}function v3n(){}function m3n(){}function k3n(){}function y3n(){}function j3n(){}function E3n(){}function C3n(){}function T3n(){}function M3n(){}function A3n(){}function S3n(){}function P3n(){}function I3n(){}function O3n(){}function D3n(){}function $3n(){}function F3n(){}function x3n(){}function L3n(){}function N3n(){}function B3n(){}function R3n(){}function _3n(){}function K3n(){}function H3n(){}function q3n(){}function G3n(){}function z3n(){}function U3n(){}function W3n(){}function X3n(){}function V3n(){}function Q3n(){}function J3n(){}function Y3n(){}function Z3n(){}function n4n(){}function e4n(){}function t4n(){}function i4n(){}function ZH(){}function r4n(){}function c4n(){}function TI(){Rv()}function u4n(){pF()}function s4n(){a6()}function o4n(){WT()}function f4n(){YJ()}function h4n(){Go()}function l4n(){fJ()}function a4n(){C7()}function d4n(){q9()}function b4n(){H9()}function w4n(){w8()}function g4n(){v7n()}function p4n(){x2()}function v4n(){Sj()}function m4n(){PSn()}function k4n(){HIn()}function y4n(){sPn()}function j4n(){CMn()}function E4n(){V3()}function C4n(){yl()}function T4n(){qIn()}function M4n(){pAn()}function A4n(){zZ()}function S4n(){IFn()}function P4n(){TMn()}function I4n(){nn()}function O4n(){EMn()}function D4n(){GIn()}function $4n(){WOn()}function F4n(){AMn()}function x4n(){aPn()}function L4n(){m7n()}function N4n(){$Y()}function B4n(){gb()}function R4n(){pOn()}function _4n(){S7()}function K4n(){Ux()}function H4n(){ZF()}function q4n(){Zd()}function G4n(){PV()}function z4n(){MMn()}function U4n(){BBn()}function W4n(){IY()}function X4n(){Bx()}function V4n(){DC()}function Q4n(){nM()}function nq(){Xe()}function J4n(){wT()}function Y4n(){NQ()}function eq(){mM()}function Fo(){dEn()}function tq(){eF()}function Z4n(){pZ()}function iq(n){_n(n)}function nvn(n){this.a=n}function Zy(n){this.a=n}function evn(n){this.a=n}function tvn(n){this.a=n}function ivn(n){this.a=n}function rvn(n){this.a=n}function cvn(n){this.a=n}function uvn(n){this.a=n}function rq(n){this.a=n}function cq(n){this.a=n}function svn(n){this.a=n}function MI(n){this.a=n}function ovn(n){this.a=n}function AI(n){this.a=n}function fvn(n){this.a=n}function SI(n){this.a=n}function hvn(n){this.a=n}function PI(n){this.a=n}function lvn(n){this.a=n}function avn(n){this.a=n}function dvn(n){this.a=n}function uq(n){this.b=n}function bvn(n){this.c=n}function wvn(n){this.a=n}function gvn(n){this.a=n}function pvn(n){this.a=n}function vvn(n){this.a=n}function mvn(n){this.a=n}function kvn(n){this.a=n}function yvn(n){this.a=n}function jvn(n){this.a=n}function Evn(n){this.a=n}function Cvn(n){this.a=n}function Tvn(n){this.a=n}function Mvn(n){this.a=n}function Avn(n){this.a=n}function sq(n){this.a=n}function oq(n){this.a=n}function nj(n){this.a=n}function M9(n){this.a=n}function na(){this.a=[]}function Svn(n,e){n.a=e}function Yee(n,e){n.a=e}function Zee(n,e){n.b=e}function nte(n,e){n.b=e}function ete(n,e){n.b=e}function fq(n,e){n.j=e}function tte(n,e){n.g=e}function ite(n,e){n.i=e}function rte(n,e){n.c=e}function cte(n,e){n.d=e}function ute(n,e){n.d=e}function ste(n,e){n.c=e}function ea(n,e){n.k=e}function ote(n,e){n.c=e}function hq(n,e){n.c=e}function lq(n,e){n.a=e}function fte(n,e){n.a=e}function hte(n,e){n.f=e}function lte(n,e){n.a=e}function ate(n,e){n.b=e}function II(n,e){n.d=e}function ej(n,e){n.i=e}function aq(n,e){n.o=e}function dte(n,e){n.r=e}function bte(n,e){n.a=e}function wte(n,e){n.b=e}function Pvn(n,e){n.e=e}function gte(n,e){n.f=e}function dq(n,e){n.g=e}function pte(n,e){n.e=e}function vte(n,e){n.f=e}function mte(n,e){n.f=e}function kte(n,e){n.n=e}function yte(n,e){n.a=e}function jte(n,e){n.a=e}function Ete(n,e){n.c=e}function Cte(n,e){n.c=e}function Tte(n,e){n.d=e}function Mte(n,e){n.e=e}function Ate(n,e){n.g=e}function Ste(n,e){n.a=e}function Pte(n,e){n.c=e}function Ite(n,e){n.d=e}function Ote(n,e){n.e=e}function Dte(n,e){n.f=e}function $te(n,e){n.j=e}function Fte(n,e){n.a=e}function xte(n,e){n.b=e}function Lte(n,e){n.a=e}function Ivn(n){n.b=n.a}function Ovn(n){n.c=n.d.d}function $v(n){this.d=n}function ta(n){this.a=n}function Rp(n){this.a=n}function bq(n){this.a=n}function Mh(n){this.a=n}function A9(n){this.a=n}function Dvn(n){this.a=n}function wq(n){this.a=n}function S9(n){this.a=n}function gq(n){this.a=n}function pq(n){this.a=n}function vq(n){this.a=n}function L0(n){this.a=n}function P9(n){this.a=n}function I9(n){this.a=n}function mq(n){this.b=n}function _p(n){this.b=n}function Kp(n){this.b=n}function OI(n){this.a=n}function $vn(n){this.a=n}function kq(n){this.a=n}function DI(n){this.c=n}function E(n){this.c=n}function Fvn(n){this.c=n}function yq(n){this.a=n}function jq(n){this.a=n}function Eq(n){this.a=n}function Cq(n){this.a=n}function ut(n){this.a=n}function xvn(n){this.a=n}function Tq(n){this.a=n}function Mq(n){this.a=n}function Lvn(n){this.a=n}function Nvn(n){this.a=n}function Fv(n){this.a=n}function Bvn(n){this.a=n}function Rvn(n){this.a=n}function _vn(n){this.a=n}function Kvn(n){this.a=n}function Hvn(n){this.a=n}function qvn(n){this.a=n}function Gvn(n){this.a=n}function zvn(n){this.a=n}function Uvn(n){this.a=n}function Wvn(n){this.a=n}function Xvn(n){this.a=n}function Vvn(n){this.a=n}function Qvn(n){this.a=n}function Jvn(n){this.a=n}function Yvn(n){this.a=n}function Zvn(n){this.a=n}function n5n(n){this.a=n}function O9(n){this.a=n}function e5n(n){this.a=n}function t5n(n){this.a=n}function tj(n){this.a=n}function i5n(n){this.a=n}function r5n(n){this.a=n}function Hp(n){this.a=n}function Aq(n){this.a=n}function c5n(n){this.a=n}function u5n(n){this.a=n}function s5n(n){this.a=n}function o5n(n){this.a=n}function f5n(n){this.a=n}function Sq(n){this.a=n}function Pq(n){this.a=n}function Iq(n){this.a=n}function ij(n){this.a=n}function rj(n){this.e=n}function qp(n){this.a=n}function h5n(n){this.a=n}function n2(n){this.a=n}function Oq(n){this.a=n}function l5n(n){this.a=n}function a5n(n){this.a=n}function d5n(n){this.a=n}function b5n(n){this.a=n}function w5n(n){this.a=n}function g5n(n){this.a=n}function p5n(n){this.a=n}function v5n(n){this.a=n}function m5n(n){this.a=n}function k5n(n){this.a=n}function y5n(n){this.a=n}function Dq(n){this.a=n}function j5n(n){this.a=n}function E5n(n){this.a=n}function C5n(n){this.a=n}function T5n(n){this.a=n}function M5n(n){this.a=n}function A5n(n){this.a=n}function S5n(n){this.a=n}function P5n(n){this.a=n}function I5n(n){this.a=n}function O5n(n){this.a=n}function D5n(n){this.a=n}function $5n(n){this.a=n}function F5n(n){this.a=n}function x5n(n){this.a=n}function L5n(n){this.a=n}function N5n(n){this.a=n}function B5n(n){this.a=n}function R5n(n){this.a=n}function _5n(n){this.a=n}function K5n(n){this.a=n}function H5n(n){this.a=n}function q5n(n){this.a=n}function G5n(n){this.a=n}function z5n(n){this.a=n}function U5n(n){this.a=n}function W5n(n){this.a=n}function X5n(n){this.a=n}function V5n(n){this.a=n}function Q5n(n){this.a=n}function J5n(n){this.a=n}function Y5n(n){this.a=n}function Z5n(n){this.a=n}function n6n(n){this.a=n}function e6n(n){this.a=n}function t6n(n){this.a=n}function i6n(n){this.a=n}function r6n(n){this.a=n}function c6n(n){this.c=n}function u6n(n){this.b=n}function s6n(n){this.a=n}function o6n(n){this.a=n}function f6n(n){this.a=n}function h6n(n){this.a=n}function l6n(n){this.a=n}function a6n(n){this.a=n}function d6n(n){this.a=n}function b6n(n){this.a=n}function w6n(n){this.a=n}function g6n(n){this.a=n}function p6n(n){this.a=n}function v6n(n){this.a=n}function m6n(n){this.a=n}function k6n(n){this.a=n}function y6n(n){this.a=n}function j6n(n){this.a=n}function E6n(n){this.a=n}function C6n(n){this.a=n}function T6n(n){this.a=n}function M6n(n){this.a=n}function A6n(n){this.a=n}function S6n(n){this.a=n}function P6n(n){this.a=n}function I6n(n){this.a=n}function X1(n){this.a=n}function e2(n){this.a=n}function O6n(n){this.a=n}function D6n(n){this.a=n}function $6n(n){this.a=n}function F6n(n){this.a=n}function x6n(n){this.a=n}function L6n(n){this.a=n}function N6n(n){this.a=n}function B6n(n){this.a=n}function R6n(n){this.a=n}function _6n(n){this.a=n}function K6n(n){this.a=n}function H6n(n){this.a=n}function q6n(n){this.a=n}function G6n(n){this.a=n}function z6n(n){this.a=n}function U6n(n){this.a=n}function cj(n){this.a=n}function W6n(n){this.a=n}function X6n(n){this.a=n}function V6n(n){this.a=n}function Q6n(n){this.a=n}function J6n(n){this.a=n}function Y6n(n){this.a=n}function Z6n(n){this.a=n}function nmn(n){this.a=n}function emn(n){this.a=n}function tmn(n){this.a=n}function imn(n){this.a=n}function rmn(n){this.a=n}function cmn(n){this.a=n}function umn(n){this.a=n}function smn(n){this.a=n}function omn(n){this.a=n}function fmn(n){this.a=n}function hmn(n){this.a=n}function lmn(n){this.a=n}function amn(n){this.a=n}function dmn(n){this.a=n}function bmn(n){this.a=n}function wmn(n){this.a=n}function gmn(n){this.a=n}function pmn(n){this.a=n}function vmn(n){this.a=n}function mmn(n){this.a=n}function kmn(n){this.a=n}function $q(n){this.a=n}function kt(n){this.b=n}function ymn(n){this.f=n}function Fq(n){this.a=n}function jmn(n){this.a=n}function Emn(n){this.a=n}function Cmn(n){this.a=n}function Tmn(n){this.a=n}function Mmn(n){this.a=n}function Amn(n){this.a=n}function Smn(n){this.a=n}function Pmn(n){this.a=n}function D9(n){this.a=n}function Imn(n){this.a=n}function Omn(n){this.b=n}function xq(n){this.c=n}function uj(n){this.e=n}function Dmn(n){this.a=n}function sj(n){this.a=n}function oj(n){this.a=n}function $I(n){this.a=n}function $mn(n){this.a=n}function Fmn(n){this.d=n}function Lq(n){this.a=n}function Nq(n){this.a=n}function cd(n){this.e=n}function Nte(){this.a=0}function gw(){dyn(this)}function X(){RO(this)}function we(){Cu(this)}function FI(){pTn(this)}function xmn(){}function ud(){this.c=p1n}function Bte(n,e){e.Wb(n)}function Lmn(n,e){n.b+=e}function Nmn(n){n.b=new JI}function T(n){return n.e}function Rte(n){return n.a}function _te(n){return n.a}function Kte(n){return n.a}function Hte(n){return n.a}function qte(n){return n.a}function Gte(){return null}function zte(){return null}function Ute(){EG(),iTe()}function Wte(n){n.b.tf(n.e)}function xv(n,e){n.b=e-n.b}function Lv(n,e){n.a=e-n.a}function Bmn(n,e){e.ad(n.a)}function Xte(n,e){si(e,n)}function Vte(n,e,t){n.Od(t,e)}function $9(n,e){n.e=e,e.b=n}function Bq(n){$f(),this.a=n}function Rmn(n){$f(),this.a=n}function _mn(n){$f(),this.a=n}function Rq(n){nb(),this.a=n}function Kmn(n){k3(),aR.be(n)}function ia(){Qyn.call(this)}function _q(){Qyn.call(this)}function Kq(){ia.call(this)}function xI(){ia.call(this)}function Hmn(){ia.call(this)}function F9(){ia.call(this)}function fu(){ia.call(this)}function Nv(){ia.call(this)}function ye(){ia.call(this)}function vs(){ia.call(this)}function qmn(){ia.call(this)}function ic(){ia.call(this)}function Gmn(){ia.call(this)}function zmn(){this.a=this}function fj(){this.Bb|=256}function Umn(){this.b=new Xkn}function Hq(){Hq=N,new we}function qq(){Kq.call(this)}function Wmn(n,e){n.length=e}function hj(n,e){W(n.a,e)}function Qte(n,e){nY(n.c,e)}function Jte(n,e){ci(n.b,e)}function Yte(n,e){KT(n.a,e)}function Zte(n,e){MF(n.a,e)}function Gp(n,e){et(n.e,e)}function t2(n){iM(n.c,n.b)}function nie(n,e){n.kc().Nb(e)}function Gq(n){this.a=Yge(n)}function hi(){this.a=new we}function Xmn(){this.a=new we}function lj(){this.a=new X}function LI(){this.a=new X}function zq(){this.a=new X}function Ns(){this.a=new Oln}function ra(){this.a=new TSn}function Uq(){this.a=new LH}function Wq(){this.a=new h7n}function Vmn(){this.a=new YMn}function Xq(){this.a=new bMn}function Vq(){this.a=new Bjn}function Qmn(){this.a=new X}function Qq(){this.a=new X}function Jmn(){this.a=new X}function Ymn(){this.a=new X}function Zmn(){this.d=new X}function n9n(){this.a=new hi}function e9n(){this.a=new we}function t9n(){this.b=new we}function i9n(){this.b=new X}function Jq(){this.e=new X}function r9n(){this.d=new X}function c9n(){this.a=new C4n}function u9n(){X.call(this)}function Yq(){lj.call(this)}function s9n(){kE.call(this)}function o9n(){Qq.call(this)}function NI(){Bv.call(this)}function Bv(){xmn.call(this)}function i2(){xmn.call(this)}function Zq(){i2.call(this)}function f9n(){zTn.call(this)}function h9n(){zTn.call(this)}function l9n(){uG.call(this)}function a9n(){uG.call(this)}function d9n(){uG.call(this)}function b9n(){sG.call(this)}function hu(){Tt.call(this)}function nG(){B2n.call(this)}function eG(){B2n.call(this)}function w9n(){O9n.call(this)}function g9n(){O9n.call(this)}function p9n(){we.call(this)}function v9n(){we.call(this)}function m9n(){we.call(this)}function k9n(){hi.call(this)}function BI(){RIn.call(this)}function y9n(){fj.call(this)}function RI(){Oz.call(this)}function _I(){Oz.call(this)}function tG(){we.call(this)}function KI(){we.call(this)}function j9n(){we.call(this)}function iG(){Yy.call(this)}function E9n(){Yy.call(this)}function C9n(){iG.call(this)}function T9n(){ZH.call(this)}function M9n(n){hIn.call(this,n)}function A9n(n){hIn.call(this,n)}function rG(n){rq.call(this,n)}function cG(n){n7n.call(this,n)}function eie(n){cG.call(this,n)}function tie(n){n7n.call(this,n)}function zp(){this.a=new Tt}function uG(){this.a=new hi}function sG(){this.a=new we}function S9n(){this.a=new X}function P9n(){this.j=new X}function oG(){this.a=new Rgn}function I9n(){this.a=new T8n}function O9n(){this.a=new X2n}function HI(){HI=N,uR=new V9n}function qI(){qI=N,cR=new X9n}function Rv(){Rv=N,rR=new Bt}function aj(){aj=N,fR=new Xyn}function iie(n){cG.call(this,n)}function rie(n){cG.call(this,n)}function D9n(n){m$.call(this,n)}function $9n(n){m$.call(this,n)}function F9n(n){uEn.call(this,n)}function GI(n){C5e.call(this,n)}function sd(n){_0.call(this,n)}function _v(n){Cj.call(this,n)}function fG(n){Cj.call(this,n)}function x9n(n){Cj.call(this,n)}function _r(n){kCn.call(this,n)}function L9n(n){_r.call(this,n)}function r2(){M9.call(this,{})}function dj(n){c3(),this.a=n}function Kv(n){n.b=null,n.c=0}function cie(n,e){n.e=e,NNn(n,e)}function uie(n,e){n.a=e,h6e(n)}function zI(n,e,t){n.a[e.g]=t}function sie(n,e,t){M4e(t,n,e)}function oie(n,e){$ue(e.i,n.n)}function N9n(n,e){Fwe(n).td(e)}function fie(n,e){return n*n/e}function B9n(n,e){return n.g-e.g}function hie(n){return new nj(n)}function lie(n){return new Z0(n)}function bj(n){_r.call(this,n)}function mr(n){_r.call(this,n)}function R9n(n){_r.call(this,n)}function UI(n){kCn.call(this,n)}function WI(n){AV(),this.a=n}function _9n(n){aEn(),this.a=n}function N0(n){ED(),this.f=n}function XI(n){ED(),this.f=n}function Up(n){_r.call(this,n)}function Hn(n){_r.call(this,n)}function $r(n){_r.call(this,n)}function K9n(n){_r.call(this,n)}function c2(n){_r.call(this,n)}function on(n){return _n(n),n}function K(n){return _n(n),n}function x9(n){return _n(n),n}function hG(n){return _n(n),n}function aie(n){return _n(n),n}function Hv(n){return n.b==n.c}function B0(n){return!!n&&n.b}function die(n){return!!n&&n.k}function bie(n){return!!n&&n.j}function Hu(n){_n(n),this.a=n}function lG(n){return ja(n),n}function qv(n){EW(n,n.length)}function t1(n){_r.call(this,n)}function Sf(n){_r.call(this,n)}function VI(n){_r.call(this,n)}function pw(n){_r.call(this,n)}function Gv(n){_r.call(this,n)}function Ee(n){_r.call(this,n)}function QI(n){Vz.call(this,n,0)}function JI(){iX.call(this,12,3)}function aG(){aG=N,din=new Q1n}function H9n(){H9n=N,ain=new Lc}function wj(){wj=N,dm=new H1}function q9n(){q9n=N,vzn=new ww}function G9n(){throw T(new ye)}function dG(){throw T(new ye)}function z9n(){throw T(new ye)}function wie(){throw T(new ye)}function gie(){throw T(new ye)}function pie(){throw T(new ye)}function YI(){this.a=Ce(pe(Ji))}function u2(n){$f(),this.a=pe(n)}function U9n(n,e){n.Td(e),e.Sd(n)}function vie(n,e){n.a.ec().Mc(e)}function mie(n,e,t){n.c.lf(e,t)}function bG(n){mr.call(this,n)}function Pf(n){Hn.call(this,n)}function i1(){A9.call(this,"")}function zv(){A9.call(this,"")}function V1(){A9.call(this,"")}function R0(){A9.call(this,"")}function wG(n){mr.call(this,n)}function Wp(n){_p.call(this,n)}function ZI(n){lE.call(this,n)}function W9n(n){Wp.call(this,n)}function X9n(){AI.call(this,null)}function V9n(){AI.call(this,null)}function gj(){gj=N,k3()}function Q9n(){Q9n=N,Szn=Z4e()}function J9n(n){return n.a?n.b:0}function kie(n){return n.a?n.b:0}function yie(n,e){return n.a-e.a}function jie(n,e){return n.a-e.a}function Eie(n,e){return n.a-e.a}function pj(n,e){return WX(n,e)}function M(n,e){return pMn(n,e)}function Cie(n,e){return e in n.a}function Y9n(n,e){return n.f=e,n}function Tie(n,e){return n.b=e,n}function Z9n(n,e){return n.c=e,n}function Mie(n,e){return n.g=e,n}function gG(n,e){return n.a=e,n}function pG(n,e){return n.f=e,n}function Aie(n,e){return n.k=e,n}function vG(n,e){return n.a=e,n}function Sie(n,e){return n.e=e,n}function mG(n,e){return n.e=e,n}function Pie(n,e){return n.f=e,n}function Iie(n,e){n.b=!0,n.d=e}function Oie(n,e){n.b=new kr(e)}function Die(n,e,t){e.td(n.a[t])}function $ie(n,e,t){e.we(n.a[t])}function Fie(n,e){return n.b-e.b}function xie(n,e){return n.g-e.g}function Lie(n,e){return n.s-e.s}function Nie(n,e){return n?0:e-1}function n8n(n,e){return n?0:e-1}function Bie(n,e){return n?e-1:0}function Rie(n,e){return e.Yf(n)}function od(n,e){return n.b=e,n}function vj(n,e){return n.a=e,n}function fd(n,e){return n.c=e,n}function hd(n,e){return n.d=e,n}function ld(n,e){return n.e=e,n}function kG(n,e){return n.f=e,n}function Uv(n,e){return n.a=e,n}function Xp(n,e){return n.b=e,n}function Vp(n,e){return n.c=e,n}function gn(n,e){return n.c=e,n}function Dn(n,e){return n.b=e,n}function pn(n,e){return n.d=e,n}function vn(n,e){return n.e=e,n}function _ie(n,e){return n.f=e,n}function mn(n,e){return n.g=e,n}function kn(n,e){return n.a=e,n}function yn(n,e){return n.i=e,n}function jn(n,e){return n.j=e,n}function e8n(n,e){return n.k=e,n}function Kie(n,e){return n.j=e,n}function Hie(n,e){yl(),Hr(e,n)}function qie(n,e,t){Nfe(n.a,e,t)}function t8n(n){mTn.call(this,n)}function yG(n){mTn.call(this,n)}function mj(n){uD.call(this,n)}function i8n(n){u2e.call(this,n)}function Q1(n){Ld.call(this,n)}function r8n(n){XD.call(this,n)}function c8n(n){XD.call(this,n)}function u8n(){Mz.call(this,"")}function Li(){this.a=0,this.b=0}function s8n(){this.b=0,this.a=0}function o8n(n,e){n.b=0,hb(n,e)}function Gie(n,e){n.c=e,n.b=!0}function f8n(n,e){return n.c._b(e)}function xo(n){return n.e&&n.e()}function nO(n){return n?n.d:null}function h8n(n,e){return LDn(n.b,e)}function zie(n){return n?n.g:null}function Uie(n){return n?n.i:null}function J1(n){return Ph(n),n.o}function ad(){ad=N,Mne=h4e()}function l8n(){l8n=N,mi=jve()}function Qp(){Qp=N,g1n=a4e()}function a8n(){a8n=N,hee=l4e()}function jG(){jG=N,oc=s6e()}function EG(){EG=N,Wl=N3()}function d8n(){throw T(new ye)}function b8n(){throw T(new ye)}function w8n(){throw T(new ye)}function g8n(){throw T(new ye)}function p8n(){throw T(new ye)}function v8n(){throw T(new ye)}function kj(n){this.a=new s2(n)}function CG(n){d_n(),gTe(this,n)}function Y1(n){this.a=new AD(n)}function vw(n,e){for(;n.ye(e););}function TG(n,e){for(;n.sd(e););}function mw(n,e){return n.a+=e,n}function eO(n,e){return n.a+=e,n}function r1(n,e){return n.a+=e,n}function dd(n,e){return n.a+=e,n}function Wv(n){return fl(n),n.a}function yj(n){return n.b!=n.d.c}function m8n(n){return n.l|n.m<<22}function MG(n,e){return n.d[e.p]}function k8n(n,e){return Q8e(n,e)}function AG(n,e,t){n.splice(e,t)}function y8n(n){n.c?rBn(n):cBn(n)}function jj(n){this.a=0,this.b=n}function j8n(){this.a=new B7(Pon)}function E8n(){this.b=new B7(won)}function C8n(){this.b=new B7(OK)}function T8n(){this.b=new B7(OK)}function M8n(){throw T(new ye)}function A8n(){throw T(new ye)}function S8n(){throw T(new ye)}function P8n(){throw T(new ye)}function I8n(){throw T(new ye)}function O8n(){throw T(new ye)}function D8n(){throw T(new ye)}function $8n(){throw T(new ye)}function F8n(){throw T(new ye)}function x8n(){throw T(new ye)}function Wie(){throw T(new ic)}function Xie(){throw T(new ic)}function L9(n){this.a=new L8n(n)}function L8n(n){cbe(this,n,cve())}function N9(n){return!n||iTn(n)}function B9(n){return Mf[n]!=-1}function Vie(){_A!=0&&(_A=0),KA=-1}function N8n(){iR==null&&(iR=[])}function Qie(n,e){$x(R(n.a),e)}function Jie(n,e){$x(R(n.a),e)}function R9(n,e){Sw.call(this,n,e)}function Jp(n,e){R9.call(this,n,e)}function SG(n,e){this.b=n,this.c=e}function B8n(n,e){this.b=n,this.a=e}function R8n(n,e){this.a=n,this.b=e}function _8n(n,e){this.a=n,this.b=e}function K8n(n,e){this.a=n,this.b=e}function H8n(n,e){this.a=n,this.b=e}function q8n(n,e){this.a=n,this.b=e}function G8n(n,e){this.a=n,this.b=e}function z8n(n,e){this.a=n,this.b=e}function U8n(n,e){this.a=n,this.b=e}function W8n(n,e){this.b=n,this.a=e}function X8n(n,e){this.b=n,this.a=e}function V8n(n,e){this.b=n,this.a=e}function Q8n(n,e){this.b=n,this.a=e}function Oe(n,e){this.f=n,this.g=e}function Yp(n,e){this.e=n,this.d=e}function bd(n,e){this.g=n,this.i=e}function tO(n,e){this.a=n,this.b=e}function J8n(n,e){this.a=n,this.f=e}function Y8n(n,e){this.b=n,this.c=e}function Yie(n,e){this.a=n,this.b=e}function Z8n(n,e){this.a=n,this.b=e}function iO(n,e){this.a=n,this.b=e}function n7n(n){Bz(n.dc()),this.c=n}function Ej(n){this.b=u(pe(n),83)}function e7n(n){this.a=u(pe(n),83)}function _0(n){this.a=u(pe(n),15)}function t7n(n){this.a=u(pe(n),15)}function Cj(n){this.b=u(pe(n),47)}function Tj(){this.q=new y.Date}function nh(){nh=N,Sin=new tln}function Zp(){Zp=N,X4=new nln}function Xv(n){return n.f.c+n.g.c}function _9(n,e){return n.b.Hc(e)}function i7n(n,e){return n.b.Ic(e)}function r7n(n,e){return n.b.Qc(e)}function c7n(n,e){return n.b.Hc(e)}function u7n(n,e){return n.c.uc(e)}function Ah(n,e){return n.a._b(e)}function s7n(n,e){return tt(n.c,e)}function o7n(n,e){return Uu(n.b,e)}function f7n(n,e){return n>e&&e0}function cO(n,e){return fc(n,e)<0}function n5(n,e){return n.a.get(e)}function lre(n,e){return e.split(n)}function S7n(n,e){return Uu(n.e,e)}function LG(n){return _n(n),!1}function xj(n){xn.call(this,n,21)}function are(n,e){cMn.call(this,n,e)}function Lj(n,e){Oe.call(this,n,e)}function uO(n,e){Oe.call(this,n,e)}function NG(n){_D(),uEn.call(this,n)}function BG(n,e){fCn(n,n.length,e)}function z9(n,e){BCn(n,n.length,e)}function dre(n,e,t){e.ud(n.a.Ge(t))}function bre(n,e,t){e.we(n.a.Fe(t))}function wre(n,e,t){e.td(n.a.Kb(t))}function gre(n,e,t){n.Mb(t)&&e.td(t)}function e5(n,e,t){n.splice(e,0,t)}function pre(n,e){return au(n.e,e)}function Nj(n,e){this.d=n,this.e=e}function P7n(n,e){this.b=n,this.a=e}function I7n(n,e){this.b=n,this.a=e}function RG(n,e){this.b=n,this.a=e}function O7n(n,e){this.a=n,this.b=e}function D7n(n,e){this.a=n,this.b=e}function $7n(n,e){this.a=n,this.b=e}function F7n(n,e){this.a=n,this.b=e}function f2(n,e){this.a=n,this.b=e}function _G(n,e){this.b=n,this.a=e}function KG(n,e){this.b=n,this.a=e}function Bj(n,e){Oe.call(this,n,e)}function Rj(n,e){Oe.call(this,n,e)}function HG(n,e){Oe.call(this,n,e)}function qG(n,e){Oe.call(this,n,e)}function kw(n,e){Oe.call(this,n,e)}function sO(n,e){Oe.call(this,n,e)}function oO(n,e){Oe.call(this,n,e)}function fO(n,e){Oe.call(this,n,e)}function _j(n,e){Oe.call(this,n,e)}function GG(n,e){Oe.call(this,n,e)}function hO(n,e){Oe.call(this,n,e)}function U9(n,e){Oe.call(this,n,e)}function Kj(n,e){Oe.call(this,n,e)}function lO(n,e){Oe.call(this,n,e)}function t5(n,e){Oe.call(this,n,e)}function zG(n,e){Oe.call(this,n,e)}function zt(n,e){Oe.call(this,n,e)}function Hj(n,e){Oe.call(this,n,e)}function x7n(n,e){this.a=n,this.b=e}function L7n(n,e){this.a=n,this.b=e}function N7n(n,e){this.a=n,this.b=e}function B7n(n,e){this.a=n,this.b=e}function R7n(n,e){this.a=n,this.b=e}function _7n(n,e){this.a=n,this.b=e}function K7n(n,e){this.a=n,this.b=e}function H7n(n,e){this.a=n,this.b=e}function q7n(n,e){this.a=n,this.b=e}function UG(n,e){this.b=n,this.a=e}function G7n(n,e){this.b=n,this.a=e}function z7n(n,e){this.b=n,this.a=e}function U7n(n,e){this.b=n,this.a=e}function t3(n,e){this.c=n,this.d=e}function W7n(n,e){this.e=n,this.d=e}function X7n(n,e){this.a=n,this.b=e}function V7n(n,e){this.b=e,this.c=n}function qj(n,e){Oe.call(this,n,e)}function W9(n,e){Oe.call(this,n,e)}function aO(n,e){Oe.call(this,n,e)}function i5(n,e){Oe.call(this,n,e)}function WG(n,e){Oe.call(this,n,e)}function dO(n,e){Oe.call(this,n,e)}function bO(n,e){Oe.call(this,n,e)}function X9(n,e){Oe.call(this,n,e)}function XG(n,e){Oe.call(this,n,e)}function wO(n,e){Oe.call(this,n,e)}function r5(n,e){Oe.call(this,n,e)}function VG(n,e){Oe.call(this,n,e)}function c5(n,e){Oe.call(this,n,e)}function u5(n,e){Oe.call(this,n,e)}function H0(n,e){Oe.call(this,n,e)}function gO(n,e){Oe.call(this,n,e)}function pO(n,e){Oe.call(this,n,e)}function QG(n,e){Oe.call(this,n,e)}function s5(n,e){Oe.call(this,n,e)}function vO(n,e){Oe.call(this,n,e)}function Gj(n,e){Oe.call(this,n,e)}function V9(n,e){Oe.call(this,n,e)}function Q9(n,e){Oe.call(this,n,e)}function h2(n,e){Oe.call(this,n,e)}function mO(n,e){Oe.call(this,n,e)}function JG(n,e){Oe.call(this,n,e)}function kO(n,e){Oe.call(this,n,e)}function yO(n,e){Oe.call(this,n,e)}function YG(n,e){Oe.call(this,n,e)}function jO(n,e){Oe.call(this,n,e)}function EO(n,e){Oe.call(this,n,e)}function CO(n,e){Oe.call(this,n,e)}function TO(n,e){Oe.call(this,n,e)}function ZG(n,e){Oe.call(this,n,e)}function Q7n(n,e){this.b=n,this.a=e}function J7n(n,e){this.a=n,this.b=e}function Y7n(n,e){this.a=n,this.b=e}function Z7n(n,e){this.a=n,this.b=e}function nkn(n,e){this.a=n,this.b=e}function nz(n,e){Oe.call(this,n,e)}function ez(n,e){Oe.call(this,n,e)}function ekn(n,e){this.b=n,this.d=e}function tz(n,e){Oe.call(this,n,e)}function iz(n,e){Oe.call(this,n,e)}function tkn(n,e){this.a=n,this.b=e}function ikn(n,e){this.a=n,this.b=e}function zj(n,e){Oe.call(this,n,e)}function o5(n,e){Oe.call(this,n,e)}function rz(n,e){Oe.call(this,n,e)}function cz(n,e){Oe.call(this,n,e)}function uz(n,e){Oe.call(this,n,e)}function MO(n,e){Oe.call(this,n,e)}function sz(n,e){Oe.call(this,n,e)}function AO(n,e){Oe.call(this,n,e)}function Uj(n,e){Oe.call(this,n,e)}function SO(n,e){Oe.call(this,n,e)}function PO(n,e){Oe.call(this,n,e)}function J9(n,e){Oe.call(this,n,e)}function IO(n,e){Oe.call(this,n,e)}function oz(n,e){Oe.call(this,n,e)}function Y9(n,e){Oe.call(this,n,e)}function fz(n,e){Oe.call(this,n,e)}function vre(n,e){return au(n.c,e)}function mre(n,e){return au(e.b,n)}function kre(n,e){return-n.b.Je(e)}function hz(n,e){return au(n.g,e)}function Z9(n,e){Oe.call(this,n,e)}function l2(n,e){Oe.call(this,n,e)}function rkn(n,e){this.a=n,this.b=e}function ckn(n,e){this.a=n,this.b=e}function fn(n,e){this.a=n,this.b=e}function f5(n,e){Oe.call(this,n,e)}function h5(n,e){Oe.call(this,n,e)}function n8(n,e){Oe.call(this,n,e)}function OO(n,e){Oe.call(this,n,e)}function Wj(n,e){Oe.call(this,n,e)}function l5(n,e){Oe.call(this,n,e)}function DO(n,e){Oe.call(this,n,e)}function Xj(n,e){Oe.call(this,n,e)}function yw(n,e){Oe.call(this,n,e)}function e8(n,e){Oe.call(this,n,e)}function a5(n,e){Oe.call(this,n,e)}function d5(n,e){Oe.call(this,n,e)}function t8(n,e){Oe.call(this,n,e)}function Vj(n,e){Oe.call(this,n,e)}function jw(n,e){Oe.call(this,n,e)}function Qj(n,e){Oe.call(this,n,e)}function ukn(n,e){this.a=n,this.b=e}function skn(n,e){this.a=n,this.b=e}function okn(n,e){this.a=n,this.b=e}function fkn(n,e){this.a=n,this.b=e}function hkn(n,e){this.a=n,this.b=e}function lkn(n,e){this.a=n,this.b=e}function Si(n,e){this.a=n,this.b=e}function Jj(n,e){Oe.call(this,n,e)}function akn(n,e){this.a=n,this.b=e}function dkn(n,e){this.a=n,this.b=e}function bkn(n,e){this.a=n,this.b=e}function wkn(n,e){this.a=n,this.b=e}function gkn(n,e){this.a=n,this.b=e}function pkn(n,e){this.a=n,this.b=e}function vkn(n,e){this.b=n,this.a=e}function mkn(n,e){this.b=n,this.a=e}function kkn(n,e){this.b=n,this.a=e}function ykn(n,e){this.b=n,this.a=e}function jkn(n,e){this.a=n,this.b=e}function Ekn(n,e){this.a=n,this.b=e}function yre(n,e){J9e(n.a,u(e,56))}function Ckn(n,e){f0e(n.a,u(e,11))}function jre(n,e){return h3(),e!=n}function Tkn(){return Q9n(),new Szn}function Mkn(){c$(),this.b=new hi}function Akn(){hM(),this.a=new hi}function Skn(){tX(),lW.call(this)}function a2(n,e){Oe.call(this,n,e)}function Pkn(n,e){this.a=n,this.b=e}function Ikn(n,e){this.a=n,this.b=e}function Yj(n,e){this.a=n,this.b=e}function Okn(n,e){this.a=n,this.b=e}function Dkn(n,e){this.a=n,this.b=e}function $kn(n,e){this.a=n,this.b=e}function Fkn(n,e){this.d=n,this.b=e}function lz(n,e){this.d=n,this.e=e}function xkn(n,e){this.f=n,this.c=e}function i8(n,e){this.b=n,this.c=e}function az(n,e){this.i=n,this.g=e}function Lkn(n,e){this.e=n,this.a=e}function Nkn(n,e){this.a=n,this.b=e}function dz(n,e){n.i=null,nT(n,e)}function Ere(n,e){n&&it($y,n,e)}function Bkn(n,e){return NF(n.a,e)}function Zj(n){return g7(n.c,n.b)}function Vr(n){return n?n.dd():null}function B(n){return n??null}function q0(n){return typeof n===X2}function G0(n){return typeof n===UZ}function ki(n){return typeof n===EL}function el(n,e){return n.Hd().Xb(e)}function nE(n,e){return Rbe(n.Kc(),e)}function gd(n,e){return fc(n,e)==0}function Cre(n,e){return fc(n,e)>=0}function b5(n,e){return fc(n,e)!=0}function Tre(n){return""+(_n(n),n)}function r8(n,e){return n.substr(e)}function Rkn(n){return Fu(n),n.d.gc()}function $O(n){return yme(n,n.c),n}function eE(n){return A5(n==null),n}function w5(n,e){return n.a+=""+e,n}function dr(n,e){return n.a+=""+e,n}function g5(n,e){return n.a+=""+e,n}function rc(n,e){return n.a+=""+e,n}function De(n,e){return n.a+=""+e,n}function bz(n,e){return n.a+=""+e,n}function _kn(n,e){Kt(n,e,n.a,n.a.a)}function ua(n,e){Kt(n,e,n.c.b,n.c)}function Mre(n,e,t){VFn(e,Mx(n,t))}function Are(n,e,t){VFn(e,Mx(n,t))}function Sre(n,e){k0e(new ie(n),e)}function Kkn(n,e){n.q.setTime($d(e))}function Hkn(n,e){kW.call(this,n,e)}function qkn(n,e){kW.call(this,n,e)}function FO(n,e){kW.call(this,n,e)}function Gkn(n){Cu(this),Z5(this,n)}function wz(n){return Ln(n,0),null}function Lo(n){return n.a=0,n.b=0,n}function zkn(n,e){return n.a=e.g+1,n}function Pre(n,e){return n.j[e.p]==2}function gz(n){return lhe(u(n,79))}function Ukn(){Ukn=N,jUn=Fe(qF())}function Wkn(){Wkn=N,RWn=Fe(PNn())}function Xkn(){this.b=new s2(sb(12))}function Vkn(){this.b=0,this.a=!1}function Qkn(){this.b=0,this.a=!1}function p5(n){this.a=n,TI.call(this)}function Jkn(n){this.a=n,TI.call(this)}function In(n,e){ri.call(this,n,e)}function xO(n,e){V0.call(this,n,e)}function Ew(n,e){az.call(this,n,e)}function LO(n,e){H3.call(this,n,e)}function Ykn(n,e){c8.call(this,n,e)}function He(n,e){$j(),it(eI,n,e)}function NO(n,e){return Zu(n.a,0,e)}function Zkn(n,e){return n.a.a.a.cc(e)}function nyn(n,e){return B(n)===B(e)}function Ire(n,e){return ni(n.a,e.a)}function Ore(n,e){return Wc(n.a,e.a)}function Dre(n,e){return xCn(n.a,e.a)}function If(n,e){return n.indexOf(e)}function pd(n,e){return n==e?0:n?1:-1}function tE(n){return n<10?"0"+n:""+n}function $re(n){return pe(n),new p5(n)}function eyn(n){return Bc(n.l,n.m,n.h)}function i3(n){return Gt((_n(n),n))}function Fre(n){return Gt((_n(n),n))}function tyn(n,e){return Wc(n.g,e.g)}function Fr(n){return typeof n===UZ}function xre(n){return n==b0||n==Hb}function Lre(n){return n==b0||n==Kb}function pz(n){return xr(n.b.b,n,0)}function iyn(n){this.a=Tkn(),this.b=n}function ryn(n){this.a=Tkn(),this.b=n}function Nre(n,e){return W(n.a,e),e}function Bre(n,e){return W(n.c,e),n}function cyn(n,e){return cs(n.a,e),n}function Rre(n,e){return wo(),e.a+=n}function _re(n,e){return wo(),e.a+=n}function Kre(n,e){return wo(),e.c+=n}function vz(n,e){S3(n,0,n.length,e)}function Sh(){Tq.call(this,new ba)}function uyn(){xE.call(this,0,0,0,0)}function d2(){ys.call(this,0,0,0,0)}function kr(n){this.a=n.a,this.b=n.b}function tl(n){return n==Zs||n==Ao}function r3(n){return n==Yh||n==Jh}function syn(n){return n==xg||n==Fg}function Cw(n){return n!=Ef&&n!=ql}function qu(n){return n.Lg()&&n.Mg()}function oyn(n){return JE(u(n,118))}function iE(n){return cs(new li,n)}function fyn(n,e){return new H3(e,n)}function Hre(n,e){return new H3(e,n)}function mz(n,e,t){UC(n,e),WC(n,t)}function rE(n,e,t){Rd(n,e),Bd(n,t)}function Yo(n,e,t){nu(n,e),eu(n,t)}function cE(n,e,t){D3(n,e),F3(n,t)}function uE(n,e,t){$3(n,e),x3(n,t)}function BO(n,e){X3(n,e),L3(n,n.D)}function kz(n){xkn.call(this,n,!0)}function hyn(n,e,t){fU.call(this,n,e,t)}function il(n){jl(),qbe.call(this,n)}function lyn(){Lj.call(this,"Head",1)}function ayn(){Lj.call(this,"Tail",3)}function RO(n){n.c=F(Zn,rn,1,0,5,1)}function dyn(n){n.a=F(Zn,rn,1,8,5,1)}function byn(n){Zc(n.xf(),new t5n(n))}function Tw(n){return n!=null?mt(n):0}function qre(n,e){return ob(e,ef(n))}function Gre(n,e){return ob(e,ef(n))}function zre(n,e){return n[n.length]=e}function Ure(n,e){return n[n.length]=e}function yz(n){return zoe(n.b.Kc(),n.a)}function Wre(n,e){return ZC(BD(n.d),e)}function Xre(n,e){return ZC(BD(n.g),e)}function Vre(n,e){return ZC(BD(n.j),e)}function tr(n,e){ri.call(this,n.b,e)}function vd(n){xE.call(this,n,n,n,n)}function jz(n){return n.b&&uL(n),n.a}function Ez(n){return n.b&&uL(n),n.c}function Qre(n,e){vf||(n.b=e)}function _O(n,e,t){return St(n,e,t),t}function wyn(n,e,t){St(n.c[e.g],e.g,t)}function Jre(n,e,t){u(n.c,69).Xh(e,t)}function Yre(n,e,t){Yo(t,t.i+n,t.j+e)}function Zre(n,e){me(bc(n.a),PMn(e))}function nce(n,e){me(Du(n.a),IMn(e))}function v5(n){Je(),cd.call(this,n)}function ece(n){return n==null?0:mt(n)}function gyn(){gyn=N,hK=new f6(cH)}function je(){je=N,new pyn,new X}function pyn(){new we,new we,new we}function Cz(){Cz=N,Hq(),bin=new we}function Zo(){Zo=N,y.Math.log(2)}function ms(){ms=N,Ch=(E7n(),Dne)}function tce(){throw T(new t1(izn))}function ice(){throw T(new t1(izn))}function rce(){throw T(new t1(rzn))}function cce(){throw T(new t1(rzn))}function vyn(n){this.a=n,HU.call(this,n)}function KO(n){this.a=n,Ej.call(this,n)}function HO(n){this.a=n,Ej.call(this,n)}function wi(n,e){mD(n.c,n.c.length,e)}function Kr(n){return n.ae?1:0}function kyn(n,e){return fc(n,e)>0?n:e}function Bc(n,e,t){return{l:n,m:e,h:t}}function uce(n,e){n.a!=null&&Ckn(e,n.a)}function yyn(n){n.a=new aI,n.c=new aI}function sE(n){this.b=n,this.a=new X}function jyn(n){this.b=new san,this.a=n}function Mz(n){vU.call(this),this.a=n}function Eyn(){Lj.call(this,"Range",2)}function Cyn(){kJ(),this.a=new B7(Hrn)}function sce(n,e){pe(e),Iw(n).Jc(new ju)}function oce(n,e){return ns(),e.n.b+=n}function fce(n,e,t){return it(n.g,t,e)}function hce(n,e,t){return it(n.k,t,e)}function lce(n,e){return it(n.a,e.a,e)}function Mw(n,e,t){return _Q(e,t,n.c)}function Az(n){return new fn(n.c,n.d)}function ace(n){return new fn(n.c,n.d)}function Qr(n){return new fn(n.a,n.b)}function Tyn(n,e){return xEe(n.a,e,null)}function dce(n){Hi(n,null),Ci(n,null)}function Myn(n){s$(n,null),o$(n,null)}function Ayn(){c8.call(this,null,null)}function Syn(){wE.call(this,null,null)}function Sz(n){this.a=n,we.call(this)}function bce(n){this.b=(Pn(),new DI(n))}function oE(n){n.j=F(Ain,q,310,0,0,1)}function wce(n,e,t){n.c.Vc(e,u(t,133))}function gce(n,e,t){n.c.ji(e,u(t,133))}function Pyn(n,e){de(n),n.Gc(u(e,15))}function m5(n,e){return Jje(n.c,n.b,e)}function pce(n,e){return new Jyn(n.Kc(),e)}function qO(n,e){return gwe(n.Kc(),e)!=-1}function Pz(n,e){return n.a.Bc(e)!=null}function fE(n){return n.Ob()?n.Pb():null}function Iyn(n){return Hs(n,0,n.length)}function I(n,e){return n!=null&&WF(n,e)}function vce(n,e){n.q.setHours(e),S6(n,e)}function Oyn(n,e){n.c&&(ZU(e),iMn(e))}function mce(n,e,t){u(n.Kb(t),164).Nb(e)}function kce(n,e,t){return SEe(n,e,t),t}function Dyn(n,e,t){n.a=e^1502,n.b=t^tN}function GO(n,e,t){return n.a[e.g][t.g]}function nf(n,e){return n.a[e.c.p][e.p]}function yce(n,e){return n.e[e.c.p][e.p]}function jce(n,e){return n.c[e.c.p][e.p]}function Ece(n,e){return n.j[e.p]=D9e(e)}function Cce(n,e){return DX(n.f,e.tg())}function Tce(n,e){return DX(n.b,e.tg())}function Mce(n,e){return n.a0?e*e/n:e*e*100}function Jce(n,e){return n>0?e/(n*n):e*100}function Yce(n,e,t){return W(e,e$n(n,t))}function Zce(n,e,t){DC(),n.Xe(e)&&t.td(n)}function s3(n,e,t){var i;i=n.Zc(e),i.Rb(t)}function U0(n,e,t){return n.a+=e,n.b+=t,n}function nue(n,e,t){return n.a*=e,n.b*=t,n}function o8(n,e,t){return n.a-=e,n.b-=t,n}function Zz(n,e){return n.a=e.a,n.b=e.b,n}function vE(n){return n.a=-n.a,n.b=-n.b,n}function fjn(n){this.c=n,this.a=1,this.b=1}function hjn(n){this.c=n,nu(n,0),eu(n,0)}function ljn(n){Tt.call(this),V5(this,n)}function ajn(n){yL(),Nmn(this),this.mf(n)}function djn(n,e){Zv(),c8.call(this,n,e)}function nU(n,e){c1(),wE.call(this,n,e)}function bjn(n,e){c1(),wE.call(this,n,e)}function wjn(n,e){c1(),nU.call(this,n,e)}function Gu(n,e,t){Xu.call(this,n,e,t,2)}function JO(n,e){ms(),FE.call(this,n,e)}function gjn(n,e){ms(),JO.call(this,n,e)}function eU(n,e){ms(),JO.call(this,n,e)}function pjn(n,e){ms(),eU.call(this,n,e)}function tU(n,e){ms(),FE.call(this,n,e)}function vjn(n,e){ms(),tU.call(this,n,e)}function mjn(n,e){ms(),FE.call(this,n,e)}function eue(n,e){return n.c.Fc(u(e,133))}function iU(n,e,t){return jM(G8(n,e),t)}function tue(n,e,t){return e.Qk(n.e,n.c,t)}function iue(n,e,t){return e.Rk(n.e,n.c,t)}function YO(n,e){return pl(n.e,u(e,49))}function rue(n,e,t){s6(Du(n.a),e,IMn(t))}function cue(n,e,t){s6(bc(n.a),e,PMn(t))}function rU(n,e){e.$modCount=n.$modCount}function C5(){C5=N,Xm=new kt("root")}function o3(){o3=N,xy=new w9n,new g9n}function kjn(){this.a=new Od,this.b=new Od}function cU(){RIn.call(this),this.Bb|=Yi}function yjn(){Oe.call(this,"GROW_TREE",0)}function uue(n){return n==null?null:CCe(n)}function sue(n){return n==null?null:D5e(n)}function oue(n){return n==null?null:Nr(n)}function fue(n){return n==null?null:Nr(n)}function Ph(n){n.o==null&&u9e(n)}function sn(n){return A5(n==null||q0(n)),n}function Y(n){return A5(n==null||G0(n)),n}function Ce(n){return A5(n==null||ki(n)),n}function uU(n){this.q=new y.Date($d(n))}function f8(n,e){this.c=n,Yp.call(this,n,e)}function mE(n,e){this.a=n,f8.call(this,n,e)}function hue(n,e){this.d=n,Ovn(this),this.b=e}function sU(n,e){P$.call(this,n),this.a=e}function oU(n,e){P$.call(this,n),this.a=e}function lue(n){xQ.call(this,0,0),this.f=n}function fU(n,e,t){IC.call(this,n,e,t,null)}function jjn(n,e,t){IC.call(this,n,e,t,null)}function aue(n,e,t){return n.ue(e,t)<=0?t:e}function due(n,e,t){return n.ue(e,t)<=0?e:t}function bue(n,e){return u(xd(n.b,e),149)}function wue(n,e){return u(xd(n.c,e),229)}function ZO(n){return u(un(n.a,n.b),287)}function Ejn(n){return new fn(n.c,n.d+n.a)}function Cjn(n){return ns(),syn(u(n,197))}function W0(){W0=N,prn=Cn((Qu(),id))}function gue(n,e){e.a?e7e(n,e):zO(n.a,e.b)}function Tjn(n,e){vf||W(n.a,e)}function pue(n,e){return H9(),K3(e.d.i,n)}function vue(n,e){return x2(),new ABn(e,n)}function Df(n,e){return T8(e,ann),n.f=e,n}function hU(n,e,t){return t=os(n,e,3,t),t}function lU(n,e,t){return t=os(n,e,6,t),t}function aU(n,e,t){return t=os(n,e,9,t),t}function h8(n,e,t){++n.j,n.Ki(),A$(n,e,t)}function Mjn(n,e,t){++n.j,n.Hi(e,n.oi(e,t))}function Ajn(n,e,t){var i;i=n.Zc(e),i.Rb(t)}function Sjn(n,e,t){return MZ(n.c,n.b,e,t)}function dU(n,e){return(e&nt)%n.d.length}function ri(n,e){kt.call(this,n),this.a=e}function bU(n,e){xq.call(this,n),this.a=e}function nD(n,e){xq.call(this,n),this.a=e}function Pjn(n,e){this.c=n,Ld.call(this,e)}function Ijn(n,e){this.a=n,Omn.call(this,e)}function l8(n,e){this.a=n,Omn.call(this,e)}function Ojn(n){this.a=(rs(n,Pb),new Pc(n))}function Djn(n){this.a=(rs(n,Pb),new Pc(n))}function a8(n){return!n.a&&(n.a=new vr),n.a}function $jn(n){return n>8?0:n+1}function mue(n,e){return qn(),n==e?0:n?1:-1}function wU(n,e,t){return m2(n,u(e,22),t)}function kue(n,e,t){return n.apply(e,t)}function Fjn(n,e,t){return n.a+=Hs(e,0,t),n}function gU(n,e){var t;return t=n.e,n.e=e,t}function yue(n,e){var t;t=n[eN],t.call(n,e)}function jue(n,e){var t;t=n[eN],t.call(n,e)}function X0(n,e){n.a.Vc(n.b,e),++n.b,n.c=-1}function xjn(n){Cu(n.e),n.d.b=n.d,n.d.a=n.d}function d8(n){n.b?d8(n.b):n.f.c.zc(n.e,n.d)}function Eue(n,e,t){ca(),Svn(n,e.Ce(n.a,t))}function Cue(n,e){return nO(p$n(n.a,e,!0))}function Tue(n,e){return nO(v$n(n.a,e,!0))}function bo(n,e){return pj(new Array(e),n)}function eD(n){return String.fromCharCode(n)}function Mue(n){return n==null?null:n.message}function Ljn(){this.a=new X,this.b=new X}function Njn(){this.a=new LH,this.b=new Umn}function Bjn(){this.b=new Li,this.c=new X}function pU(){this.d=new Li,this.e=new Li}function vU(){this.n=new Li,this.o=new Li}function kE(){this.n=new i2,this.i=new d2}function Rjn(){this.a=new v4n,this.b=new cwn}function _jn(){this.a=new X,this.d=new X}function Kjn(){this.b=new hi,this.a=new hi}function Hjn(){this.b=new we,this.a=new we}function qjn(){this.b=new E8n,this.a=new sgn}function Gjn(){kE.call(this),this.a=new Li}function T5(n){Jbe.call(this,n,(FC(),vR))}function mU(n,e,t,i){xE.call(this,n,e,t,i)}function Aue(n,e,t){t!=null&&JC(e,rx(n,t))}function Sue(n,e,t){t!=null&&YC(e,rx(n,t))}function kU(n,e,t){return t=os(n,e,11,t),t}function st(n,e){return n.a+=e.a,n.b+=e.b,n}function yi(n,e){return n.a-=e.a,n.b-=e.b,n}function Pue(n,e){return n.n.a=(_n(e),e+10)}function Iue(n,e){return n.n.a=(_n(e),e+10)}function Oue(n,e){return e==n||o4(sM(e),n)}function zjn(n,e){return it(n.a,e,"")==null}function Due(n,e){return H9(),!K3(e.d.i,n)}function $ue(n,e){tl(n.f)?Qme(n,e):Fve(n,e)}function Fue(n,e){var t;return t=e.Hh(n.a),t}function V0(n,e){mr.call(this,rm+n+Ra+e)}function g2(n,e,t,i){V.call(this,n,e,t,i)}function yU(n,e,t,i){V.call(this,n,e,t,i)}function Ujn(n,e,t,i){yU.call(this,n,e,t,i)}function Wjn(n,e,t,i){zE.call(this,n,e,t,i)}function tD(n,e,t,i){zE.call(this,n,e,t,i)}function jU(n,e,t,i){zE.call(this,n,e,t,i)}function Xjn(n,e,t,i){tD.call(this,n,e,t,i)}function EU(n,e,t,i){tD.call(this,n,e,t,i)}function Fn(n,e,t,i){jU.call(this,n,e,t,i)}function Vjn(n,e,t,i){EU.call(this,n,e,t,i)}function Qjn(n,e,t,i){yW.call(this,n,e,t,i)}function Jjn(n,e,t){this.a=n,Vz.call(this,e,t)}function Yjn(n,e,t){this.c=e,this.b=t,this.a=n}function xue(n,e,t){return n.d=u(e.Kb(t),164)}function CU(n,e){return n.Aj().Nh().Kh(n,e)}function TU(n,e){return n.Aj().Nh().Ih(n,e)}function Zjn(n,e){return _n(n),B(n)===B(e)}function Mn(n,e){return _n(n),B(n)===B(e)}function iD(n,e){return nO(p$n(n.a,e,!1))}function rD(n,e){return nO(v$n(n.a,e,!1))}function Lue(n,e){return n.b.sd(new D7n(n,e))}function Nue(n,e){return n.b.sd(new $7n(n,e))}function nEn(n,e){return n.b.sd(new F7n(n,e))}function MU(n,e,t){return n.lastIndexOf(e,t)}function Bue(n,e,t){return ni(n[e.b],n[t.b])}function Rue(n,e){return H(e,(nn(),Jk),n)}function _ue(n,e){return Wc(e.a.d.p,n.a.d.p)}function Kue(n,e){return Wc(n.a.d.p,e.a.d.p)}function Hue(n,e){return ni(n.c-n.s,e.c-e.s)}function eEn(n){return n.c?xr(n.c.a,n,0):-1}function que(n){return n<100?null:new Q1(n)}function p2(n){return n==td||n==Eh||n==Ac}function tEn(n,e){return I(e,15)&&oBn(n.c,e)}function Gue(n,e){vf||e&&(n.d=e)}function cD(n,e){var t;return t=e,!!VV(n,t)}function AU(n,e){this.c=n,DD.call(this,n,e)}function iEn(n){this.c=n,FO.call(this,IM,0)}function rEn(n,e){Voe.call(this,n,n.length,e)}function zue(n,e,t){return u(n.c,69).lk(e,t)}function yE(n,e,t){return u(n.c,69).mk(e,t)}function Uue(n,e,t){return tue(n,u(e,332),t)}function SU(n,e,t){return iue(n,u(e,332),t)}function Wue(n,e,t){return txn(n,u(e,332),t)}function cEn(n,e,t){return zve(n,u(e,332),t)}function M5(n,e){return e==null?null:ab(n.b,e)}function PU(n){return G0(n)?(_n(n),n):n.ke()}function jE(n){return!isNaN(n)&&!isFinite(n)}function uEn(n){$f(),this.a=(Pn(),new Wp(n))}function b8(n){h3(),this.d=n,this.a=new gw}function ks(n,e,t){this.a=n,this.b=e,this.c=t}function sEn(n,e,t){this.a=n,this.b=e,this.c=t}function oEn(n,e,t){this.d=n,this.b=t,this.a=e}function uD(n){yyn(this),_s(this),Vi(this,n)}function du(n){RO(this),GU(this.c,0,n.Pc())}function fEn(n){Wu(n.a),uPn(n.c,n.b),n.b=null}function hEn(n){this.a=n,nh(),tu(Date.now())}function lEn(){lEn=N,Xin=new Lc,XA=new Lc}function sD(){sD=N,Rin=new iln,Pzn=new rln}function aEn(){aEn=N,Nne=F(Zn,rn,1,0,5,1)}function dEn(){dEn=N,eee=F(Zn,rn,1,0,5,1)}function IU(){IU=N,tee=F(Zn,rn,1,0,5,1)}function $f(){$f=N,new Bq((Pn(),Pn(),cr))}function Xue(n){return FC(),$e((pPn(),Dzn),n)}function Vue(n){return lf(),$e((LSn(),Bzn),n)}function Que(n){return $T(),$e((qAn(),Gzn),n)}function Jue(n){return RC(),$e((GAn(),zzn),n)}function Yue(n){return dM(),$e((IOn(),Uzn),n)}function Zue(n){return _o(),$e(($Sn(),Vzn),n)}function nse(n){return Tu(),$e((FSn(),Jzn),n)}function ese(n){return Yc(),$e((xSn(),Zzn),n)}function tse(n){return SM(),$e((Ukn(),jUn),n)}function ise(n){return Hd(),$e((mPn(),CUn),n)}function rse(n){return K2(),$e((kPn(),MUn),n)}function cse(n){return d6(),$e((yPn(),PUn),n)}function use(n){return Aj(),$e((yAn(),IUn),n)}function sse(n){return _C(),$e((zAn(),WUn),n)}function ose(n){return W5(),$e((NSn(),bWn),n)}function fse(n){return Qi(),$e((JPn(),vWn),n)}function hse(n){return G3(),$e((vPn(),EWn),n)}function lse(n){return qd(),$e((BSn(),PWn),n)}function OU(n,e){if(!n)throw T(new Hn(e))}function ase(n){return Qn(),$e((vIn(),$Wn),n)}function DU(n){xE.call(this,n.d,n.c,n.a,n.b)}function oD(n){xE.call(this,n.d,n.c,n.a,n.b)}function $U(n,e,t){this.b=n,this.c=e,this.a=t}function EE(n,e,t){this.b=n,this.a=e,this.c=t}function bEn(n,e,t){this.a=n,this.b=e,this.c=t}function FU(n,e,t){this.a=n,this.b=e,this.c=t}function wEn(n,e,t){this.a=n,this.b=e,this.c=t}function xU(n,e,t){this.a=n,this.b=e,this.c=t}function gEn(n,e,t){this.b=n,this.a=e,this.c=t}function CE(n,e,t){this.e=e,this.b=n,this.d=t}function dse(n,e,t){return ca(),n.a.Od(e,t),e}function fD(n){var e;return e=new Dln,e.e=n,e}function LU(n){var e;return e=new Zmn,e.b=n,e}function w8(){w8=N,sS=new Fdn,oS=new xdn}function wo(){wo=N,WWn=new pbn,XWn=new vbn}function bse(n){return aT(),$e((EPn(),HWn),n)}function wse(n){return hf(),$e((TPn(),JWn),n)}function gse(n){return lM(),$e((mOn(),cXn),n)}function pse(n){return q2(),$e((yIn(),uXn),n)}function vse(n){return OC(),$e((JAn(),sXn),n)}function mse(n){return F2(),$e((RSn(),oXn),n)}function kse(n){return Vw(),$e((UPn(),ZWn),n)}function yse(n){return Kd(),$e((HSn(),rXn),n)}function jse(n){return VC(),$e((_Sn(),fXn),n)}function Ese(n){return Pa(),$e((GPn(),hXn),n)}function Cse(n){return V8(),$e((WAn(),lXn),n)}function Tse(n){return ya(),$e((KSn(),dXn),n)}function Mse(n){return eM(),$e((TIn(),bXn),n)}function Ase(n){return K8(),$e((XAn(),wXn),n)}function Sse(n){return A7(),$e((EIn(),gXn),n)}function Pse(n){return h4(),$e((jIn(),pXn),n)}function Ise(n){return or(),$e((zOn(),vXn),n)}function Ose(n){return q3(),$e((GSn(),mXn),n)}function Dse(n){return Nh(),$e((qSn(),yXn),n)}function $se(n){return kC(),$e((YAn(),jXn),n)}function Fse(n){return Ss(),$e((WPn(),EXn),n)}function xse(n){return JT(),$e((CIn(),BQn),n)}function Lse(n){return i6(),$e((zSn(),RQn),n)}function Nse(n){return wb(),$e((MPn(),_Qn),n)}function Bse(n){return ur(),$e((XSn(),UQn),n)}function Rse(n){return Zw(),$e((vOn(),HQn),n)}function _se(n){return Rh(),$e((WSn(),qQn),n)}function Kse(n){return z8(),$e((QAn(),GQn),n)}function Hse(n){return oT(),$e((USn(),WQn),n)}function qse(n){return b6(),$e((zPn(),KQn),n)}function Gse(n){return x8(),$e((VAn(),XQn),n)}function zse(n){return Q3(),$e((QSn(),VQn),n)}function Use(n){return uT(),$e((JSn(),QQn),n)}function Wse(n){return dT(),$e((VSn(),JQn),n)}function Xse(n){return _d(),$e((YSn(),hJn),n)}function Vse(n){return z5(),$e((nSn(),wJn),n)}function Qse(n){return xf(),$e((eSn(),jJn),n)}function Jse(n){return tf(),$e((tSn(),CJn),n)}function Yse(n){return No(),$e((ZAn(),RJn),n)}function Zse(n){return Id(),$e((iSn(),UJn),n)}function noe(n){return c4(),$e((jPn(),WJn),n)}function eoe(n){return k6(),$e((MIn(),VJn),n)}function toe(n){return aC(),$e((uSn(),fYn),n)}function ioe(n){return iT(),$e((cSn(),wYn),n)}function roe(n){return gC(),$e((rSn(),hYn),n)}function coe(n){return CT(),$e((ZSn(),pYn),n)}function uoe(n){return $C(),$e((sSn(),vYn),n)}function soe(n){return f7(),$e((nPn(),mYn),n)}function ooe(n){return qT(),$e((CPn(),FYn),n)}function foe(n){return sT(),$e((tPn(),xYn),n)}function hoe(n){return ET(),$e((ePn(),LYn),n)}function loe(n){return g4(),$e((QPn(),tZn),n)}function aoe(n){return w7(),$e((iPn(),iZn),n)}function doe(n){return Pj(),$e((mAn(),rZn),n)}function boe(n){return Ij(),$e((vAn(),uZn),n)}function woe(n){return L8(),$e((fSn(),sZn),n)}function goe(n){return P7(),$e((XPn(),oZn),n)}function poe(n){return Jv(),$e((kAn(),CZn),n)}function voe(n){return c7(),$e((oSn(),TZn),n)}function moe(n){return Ho(),$e((VPn(),OZn),n)}function koe(n){return y1(),$e((kOn(),$Zn),n)}function yoe(n){return fh(),$e((kIn(),FZn),n)}function joe(n){return vb(),$e((mIn(),_Zn),n)}function Eoe(n){return rr(),$e((Wkn(),RWn),n)}function Coe(n){return B3(),$e((UAn(),BWn),n)}function Toe(n){return sr(),$e((YPn(),ene),n)}function Moe(n){return of(),$e((cPn(),tne),n)}function Aoe(n){return Hh(),$e((PPn(),ine),n)}function Soe(n){return ZT(),$e((SIn(),rne),n)}function Poe(n){return _h(),$e((rPn(),une),n)}function Ioe(n){return us(),$e((SPn(),one),n)}function Ooe(n){return jb(),$e((POn(),fne),n)}function Doe(n){return qw(),$e((ZPn(),hne),n)}function $oe(n){return Mi(),$e((bIn(),lne),n)}function Foe(n){return Mu(),$e((AIn(),ane),n)}function xoe(n){return Qu(),$e((OPn(),vne),n)}function Loe(n){return Lu(),$e((UOn(),mne),n)}function Noe(n){return J(),$e((nIn(),dne),n)}function Boe(n){return AT(),$e((IPn(),kne),n)}function Roe(n){return Vu(),$e((APn(),Ene),n)}function _oe(n){return d4(),$e((yOn(),Lne),n)}function Koe(n,e){return _n(n),n+(_n(e),e)}function Hoe(n,e){return nh(),me(R(n.a),e)}function qoe(n,e){return nh(),me(R(n.a),e)}function hD(n,e){this.c=n,this.a=e,this.b=e-n}function pEn(n,e,t){this.a=n,this.b=e,this.c=t}function NU(n,e,t){this.a=n,this.b=e,this.c=t}function BU(n,e,t){this.a=n,this.b=e,this.c=t}function vEn(n,e,t){this.a=n,this.b=e,this.c=t}function mEn(n,e,t){this.a=n,this.b=e,this.c=t}function s1(n,e,t){this.e=n,this.a=e,this.c=t}function kEn(n,e,t){ms(),QW.call(this,n,e,t)}function lD(n,e,t){ms(),FW.call(this,n,e,t)}function RU(n,e,t){ms(),FW.call(this,n,e,t)}function _U(n,e,t){ms(),FW.call(this,n,e,t)}function yEn(n,e,t){ms(),lD.call(this,n,e,t)}function KU(n,e,t){ms(),lD.call(this,n,e,t)}function jEn(n,e,t){ms(),KU.call(this,n,e,t)}function EEn(n,e,t){ms(),RU.call(this,n,e,t)}function CEn(n,e,t){ms(),_U.call(this,n,e,t)}function g8(n,e){return pe(n),pe(e),new z8n(n,e)}function v2(n,e){return pe(n),pe(e),new NEn(n,e)}function Goe(n,e){return pe(n),pe(e),new BEn(n,e)}function zoe(n,e){return pe(n),pe(e),new W8n(n,e)}function u(n,e){return A5(n==null||WF(n,e)),n}function f3(n){var e;return e=new X,_$(e,n),e}function Uoe(n){var e;return e=new hi,_$(e,n),e}function TEn(n){var e;return e=new Wq,nF(e,n),e}function p8(n){var e;return e=new Tt,nF(e,n),e}function Woe(n){return!n.e&&(n.e=new X),n.e}function Xoe(n){return!n.c&&(n.c=new Bp),n.c}function W(n,e){return n.c[n.c.length]=e,!0}function MEn(n,e){this.c=n,this.b=e,this.a=!1}function HU(n){this.d=n,Ovn(this),this.b=_fe(n.d)}function AEn(){this.a=";,;",this.b="",this.c=""}function Voe(n,e,t){SCn.call(this,e,t),this.a=n}function SEn(n,e,t){this.b=n,Hkn.call(this,e,t)}function qU(n,e,t){this.c=n,Nj.call(this,e,t)}function GU(n,e,t){aY(t,0,n,e,t.length,!1)}function th(n,e,t,i,r){n.b=e,n.c=t,n.d=i,n.a=r}function Qoe(n,e){e&&(n.b=e,n.a=(fl(e),e.a))}function zU(n,e,t,i,r){n.d=e,n.c=t,n.a=i,n.b=r}function UU(n){var e,t;e=n.b,t=n.c,n.b=t,n.c=e}function WU(n){var e,t;t=n.d,e=n.a,n.d=e,n.a=t}function XU(n){return bl(the(Fr(n)?Ks(n):n))}function Joe(n,e){return Wc(GEn(n.d),GEn(e.d))}function Yoe(n,e){return e==(J(),Gn)?n.c:n.d}function h3(){h3=N,don=(J(),Gn),dP=Vn}function PEn(){this.b=K(Y(cn((Go(),xR))))}function IEn(n){return ca(),F(Zn,rn,1,n,5,1)}function Zoe(n){return new fn(n.c+n.b,n.d+n.a)}function nfe(n,e){return Sj(),Wc(n.d.p,e.d.p)}function aD(n){return ne(n.b!=0),Ts(n,n.a.a)}function efe(n){return ne(n.b!=0),Ts(n,n.c.b)}function VU(n,e){if(!n)throw T(new R9n(e))}function TE(n,e){if(!n)throw T(new Hn(e))}function QU(n,e,t){t3.call(this,n,e),this.b=t}function v8(n,e,t){lz.call(this,n,e),this.c=t}function OEn(n,e,t){oIn.call(this,e,t),this.d=n}function JU(n){IU(),Yy.call(this),this.th(n)}function DEn(n,e,t){this.a=n,Ew.call(this,e,t)}function $En(n,e,t){this.a=n,Ew.call(this,e,t)}function ME(n,e,t){lz.call(this,n,e),this.c=t}function FEn(){T3(),khe.call(this,(Z1(),uo))}function xEn(n){return n!=null&&!$F(n,a9,d9)}function tfe(n,e){return(GDn(n)<<4|GDn(e))&Ut}function ife(n,e){return QE(),ex(n,e),new oTn(n,e)}function sa(n,e){var t;n.n&&(t=e,W(n.f,t))}function l3(n,e,t){var i;i=new Z0(t),Ro(n,e,i)}function rfe(n,e){var t;return t=n.c,wV(n,e),t}function YU(n,e){return e<0?n.g=-1:n.g=e,n}function AE(n,e){return H0e(n),n.a*=e,n.b*=e,n}function LEn(n,e,t,i,r){n.c=e,n.d=t,n.b=i,n.a=r}function Ke(n,e){return Kt(n,e,n.c.b,n.c),!0}function ZU(n){n.a.b=n.b,n.b.a=n.a,n.a=n.b=null}function dD(n){this.b=n,this.a=Ed(this.b.a).Ed()}function NEn(n,e){this.b=n,this.a=e,TI.call(this)}function BEn(n,e){this.a=n,this.b=e,TI.call(this)}function REn(n,e){SCn.call(this,e,1040),this.a=n}function m8(n){return n==0||isNaN(n)?n:n<0?-1:1}function cfe(n){return C2(),hh(n)==Pt(ml(n))}function ufe(n){return C2(),ml(n)==Pt(hh(n))}function jd(n,e){return v6(n,new t3(e.a,e.b))}function sfe(n){return!Xi(n)&&n.c.i.c==n.d.i.c}function SE(n){var e;return e=n.n,n.a.b+e.d+e.a}function _En(n){var e;return e=n.n,n.e.b+e.d+e.a}function nW(n){var e;return e=n.n,n.e.a+e.b+e.c}function KEn(n){return Je(),new ih(0,n)}function ofe(n){return n.a?n.a:WD(n)}function A5(n){if(!n)throw T(new Up(null))}function HEn(){HEn=N,mH=(Pn(),new OI(XB))}function PE(){PE=N,new JQ((HI(),uR),(qI(),cR))}function qEn(){qEn=N,jin=F(Wi,q,19,256,0,1)}function bD(n,e,t,i){MQ.call(this,n,e,t,i,0,0)}function ffe(n,e,t){return it(n.b,u(t.b,17),e)}function hfe(n,e,t){return it(n.b,u(t.b,17),e)}function lfe(n,e){return W(n,new fn(e.a,e.b))}function afe(n,e){return n.c=e)throw T(new qq)}function Xfe(n,e,t){return St(e,0,rW(e[0],t[0])),e}function Vfe(n,e,t){e.Ye(t,K(Y(te(n.b,t)))*n.a)}function ACn(n,e,t){return eg(),R3(n,e)&&R3(n,t)}function D5(n){return Mu(),!n.Hc(n1)&&!n.Hc(Gl)}function qE(n){return new fn(n.c+n.b/2,n.d+n.a/2)}function MD(n,e){return e.kh()?pl(n.b,u(e,49)):e}function kW(n,e){this.e=n,this.d=e&64?e|Bf:e}function SCn(n,e){this.c=0,this.d=n,this.b=e|64|Bf}function GE(n){this.b=new Pc(11),this.a=(Ow(),n)}function AD(n){this.b=null,this.a=(Ow(),n||Lin)}function PCn(n){this.a=Y$n(n.a),this.b=new du(n.b)}function ICn(n){this.b=n,b2.call(this,n),$yn(this)}function OCn(n){this.b=n,u8.call(this,n),Fyn(this)}function Y0(n,e,t){this.a=n,g2.call(this,e,t,5,6)}function yW(n,e,t,i){this.b=n,Yt.call(this,e,t,i)}function gi(n,e,t,i,r){D$.call(this,n,e,t,i,r,-1)}function $5(n,e,t,i,r){R8.call(this,n,e,t,i,r,-1)}function V(n,e,t,i){Yt.call(this,n,e,t),this.b=i}function zE(n,e,t,i){v8.call(this,n,e,t),this.b=i}function DCn(n){xkn.call(this,n,!1),this.a=!1}function $Cn(n,e){this.b=n,bvn.call(this,n.b),this.a=e}function FCn(n,e){nb(),Yie.call(this,n,mT(new Hu(e)))}function UE(n,e){return Je(),new xW(n,e,0)}function SD(n,e){return Je(),new xW(6,n,e)}function Qfe(n,e){return Mn(n.substr(0,e.length),e)}function Uu(n,e){return ki(e)?QD(n,e):!!Sr(n.f,e)}function Oi(n,e){for(_n(e);n.Ob();)e.td(n.Pb())}function Pw(n,e,t){jl(),this.e=n,this.d=e,this.a=t}function o1(n,e,t,i){var r;r=n.i,r.i=e,r.a=t,r.b=i}function jW(n){var e;for(e=n;e.f;)e=e.f;return e}function y2(n){var e;return e=t6(n),ne(e!=null),e}function Jfe(n){var e;return e=Lge(n),ne(e!=null),e}function d3(n,e){var t;return t=n.a.gc(),$X(e,t),t-e}function EW(n,e){var t;for(t=0;t0?y.Math.log(n/e):-100}function xCn(n,e){return fc(n,e)<0?-1:fc(n,e)>0?1:0}function SW(n,e,t){return MRn(n,u(e,46),u(t,167))}function LCn(n,e){return u(vW(Ed(n.a)).Xb(e),42).cd()}function uhe(n,e){return P0e(e,n.length),new REn(n,e)}function DD(n,e){this.d=n,ie.call(this,n),this.e=e}function Cd(n){this.d=(_n(n),n),this.a=0,this.c=IM}function PW(n,e){cd.call(this,1),this.a=n,this.b=e}function NCn(n,e){return n.c?NCn(n.c,e):W(n.b,e),n}function she(n,e,t){var i;return i=ub(n,e),g$(n,e,t),i}function IW(n,e){var t;return t=n.slice(0,e),WX(t,n)}function BCn(n,e,t){var i;for(i=0;i=n.g}function KD(n,e,t){var i;return i=Y$(n,e,t),rZ(n,i)}function j2(n,e){var t;t=n.a.length,ub(n,t),g$(n,t,e)}function ZCn(n,e){var t;t=console[n],t.call(console,e)}function nTn(n,e){var t;++n.j,t=n.Vi(),n.Ii(n.oi(t,e))}function mhe(n,e,t){u(e.b,65),Zc(e.a,new NU(n,t,e))}function FW(n,e,t){uj.call(this,e),this.a=n,this.b=t}function xW(n,e,t){cd.call(this,n),this.a=e,this.b=t}function LW(n,e,t){this.a=n,xq.call(this,e),this.b=t}function eTn(n,e,t){this.a=n,aX.call(this,8,e,null,t)}function khe(n){this.a=(_n(xe),xe),this.b=n,new tG}function tTn(n){this.c=n,this.b=this.c.a,this.a=this.c.e}function NW(n){this.c=n,this.b=n.a.d.a,rU(n.a.e,this)}function Wu(n){z0(n.c!=-1),n.d.$c(n.c),n.b=n.c,n.c=-1}function L5(n){return y.Math.sqrt(n.a*n.a+n.b*n.b)}function Md(n,e){return a3(e,n.a.c.length),un(n.a,e)}function Ff(n,e){return B(n)===B(e)||n!=null&&tt(n,e)}function yhe(n){return 0>=n?new PG:sbe(n-1)}function jhe(n){return aw?QD(aw,n):!1}function iTn(n){return n?n.dc():!n.Kc().Ob()}function Gi(n){return!n.a&&n.c?n.c.b:n.a}function Ehe(n){return!n.a&&(n.a=new Yt(zl,n,4)),n.a}function Ad(n){return!n.d&&(n.d=new Yt(ar,n,1)),n.d}function _n(n){if(n==null)throw T(new Nv);return n}function N5(n){n.c?n.c.He():(n.d=!0,S8e(n))}function fl(n){n.c?fl(n.c):(Ta(n),n.d=!0)}function rTn(n){KW(n.a),n.b=F(Zn,rn,1,n.b.length,5,1)}function Che(n,e){return Wc(e.j.c.length,n.j.c.length)}function The(n,e){n.c<0||n.b.b=0?n.Bh(t):bY(n,e)}function cTn(n){var e,t;return e=n.c.i.c,t=n.d.i.c,e==t}function Ahe(n){if(n.p!=4)throw T(new fu);return n.e}function She(n){if(n.p!=3)throw T(new fu);return n.e}function Phe(n){if(n.p!=6)throw T(new fu);return n.f}function Ihe(n){if(n.p!=6)throw T(new fu);return n.k}function Ohe(n){if(n.p!=3)throw T(new fu);return n.j}function Dhe(n){if(n.p!=4)throw T(new fu);return n.j}function BW(n){return!n.b&&(n.b=new sj(new KI)),n.b}function Sd(n){return n.c==-2&&Pte(n,Qve(n.g,n.b)),n.c}function g3(n,e){var t;return t=LD("",n),t.n=e,t.i=1,t}function $he(n,e){yD(u(e.b,65),n),Zc(e.a,new Aq(n))}function Fhe(n,e){me((!n.a&&(n.a=new l8(n,n)),n.a),e)}function uTn(n,e){this.b=n,DD.call(this,n,e),$yn(this)}function sTn(n,e){this.b=n,AU.call(this,n,e),Fyn(this)}function RW(n,e,t,i){bd.call(this,n,e),this.d=t,this.a=i}function VE(n,e,t,i){bd.call(this,n,t),this.a=e,this.f=i}function oTn(n,e){bce.call(this,obe(pe(n),pe(e))),this.a=e}function fTn(){UJ.call(this,Ka,(a8n(),hee)),tEe(this)}function hTn(){UJ.call(this,Vs,(Qp(),g1n)),lje(this)}function lTn(){Oe.call(this,"DELAUNAY_TRIANGULATION",0)}function xhe(n){return String.fromCharCode.apply(null,n)}function it(n,e,t){return ki(e)?yr(n,e,t):_c(n.f,e,t)}function _W(n){return Pn(),n?n.ve():(Ow(),Ow(),Bin)}function Lhe(n,e,t){return L2(),t.pg(n,u(e.cd(),146))}function aTn(n,e){return PE(),new JQ(new Wyn(n),new Uyn(e))}function Nhe(n){return rs(n,AL),KC(qi(qi(5,n),n/10|0))}function QE(){QE=N,fzn=new GI(A(M(Ha,1),OM,42,0,[]))}function dTn(n){return!n.d&&(n.d=new _p(n.c.Cc())),n.d}function p3(n){return!n.a&&(n.a=new W9n(n.c.vc())),n.a}function bTn(n){return!n.b&&(n.b=new Wp(n.c.ec())),n.b}function ch(n,e){for(;e-- >0;)n=n<<1|(n<0?1:0);return n}function pc(n,e){return B(n)===B(e)||n!=null&&tt(n,e)}function Bhe(n,e){return qn(),u(e.b,19).ai&&++i,i}function Oh(n){var e,t;return t=(e=new ud,e),O3(t,n),t}function UD(n){var e,t;return t=(e=new ud,e),VJ(t,n),t}function Zhe(n,e){var t;return t=te(n.f,e),MV(e,t),null}function WD(n){var e;return e=hbe(n),e||null}function CTn(n){return!n.b&&(n.b=new V(bi,n,12,3)),n.b}function n1e(n){return n!=null&&_9(tI,n.toLowerCase())}function e1e(n,e){return ni(bu(n)*zu(n),bu(e)*zu(e))}function t1e(n,e){return ni(bu(n)*zu(n),bu(e)*zu(e))}function i1e(n,e){return ni(n.d.c+n.d.b/2,e.d.c+e.d.b/2)}function r1e(n,e){return ni(n.g.c+n.g.b/2,e.g.c+e.g.b/2)}function TTn(n,e,t){t.a?eu(n,e.b-n.f/2):nu(n,e.a-n.g/2)}function MTn(n,e,t,i){this.a=n,this.b=e,this.c=t,this.d=i}function ATn(n,e,t,i){this.a=n,this.b=e,this.c=t,this.d=i}function ha(n,e,t,i){this.e=n,this.a=e,this.c=t,this.d=i}function STn(n,e,t,i){this.a=n,this.c=e,this.d=t,this.b=i}function PTn(n,e,t,i){ms(),ySn.call(this,e,t,i),this.a=n}function ITn(n,e,t,i){ms(),ySn.call(this,e,t,i),this.a=n}function OTn(n,e){this.a=n,hue.call(this,n,u(n.d,15).Zc(e))}function XD(n){this.f=n,this.c=this.f.e,n.f>0&&qFn(this)}function DTn(n,e,t,i){this.b=n,this.c=i,FO.call(this,e,t)}function $Tn(n){return ne(n.b=0&&Mn(n.substr(t,e.length),e)}function hl(n,e,t,i,r,c,o){return new v$(n.e,e,t,i,r,c,o)}function QTn(n,e,t,i,r,c){this.a=n,z$.call(this,e,t,i,r,c)}function JTn(n,e,t,i,r,c){this.a=n,z$.call(this,e,t,i,r,c)}function YTn(n,e){this.g=n,this.d=A(M(mh,1),E1,10,0,[e])}function f1(n,e){this.e=n,this.a=Zn,this.b=yBn(e),this.c=e}function ZTn(n,e){kE.call(this),eV(this),this.a=n,this.c=e}function M8(n,e,t,i){St(n.c[e.g],t.g,i),St(n.c[t.g],e.g,i)}function ZD(n,e,t,i){St(n.c[e.g],e.g,t),St(n.b[e.g],e.g,i)}function M1e(){return x8(),A(M(ron,1),z,376,0,[uK,iy])}function A1e(){return K8(),A(M(Qcn,1),z,479,0,[Vcn,xS])}function S1e(){return V8(),A(M(Wcn,1),z,419,0,[$S,Ucn])}function P1e(){return OC(),A(M(Rcn,1),z,422,0,[Bcn,s_])}function I1e(){return kC(),A(M(fun,1),z,420,0,[j_,oun])}function O1e(){return z8(),A(M(non,1),z,421,0,[iK,rK])}function D1e(){return z5(),A(M(bJn,1),z,523,0,[Hm,Km])}function $1e(){return No(),A(M(BJn,1),z,520,0,[tw,Bl])}function F1e(){return xf(),A(M(yJn,1),z,516,0,[M0,I1])}function x1e(){return tf(),A(M(EJn,1),z,515,0,[Ja,yf])}function L1e(){return Id(),A(M(zJn,1),z,455,0,[Rl,Lg])}function N1e(){return gC(),A(M(Son,1),z,425,0,[yK,Aon])}function B1e(){return aC(),A(M(Mon,1),z,480,0,[kK,Ton])}function R1e(){return iT(),A(M(Pon,1),z,495,0,[EP,mv])}function _1e(){return $C(),A(M(Oon,1),z,426,0,[Ion,TK])}function K1e(){return c7(),A(M(Ffn,1),z,429,0,[DP,$fn])}function H1e(){return L8(),A(M(afn,1),z,430,0,[FK,IP])}function q1e(){return $T(),A(M(Jin,1),z,428,0,[yR,Qin])}function G1e(){return RC(),A(M(Zin,1),z,427,0,[Yin,jR])}function z1e(){return _C(),A(M(Arn,1),z,424,0,[$R,tS])}function U1e(){return B3(),A(M(NWn,1),z,511,0,[_k,UR])}function sC(n,e,t,i){return t>=0?n.jh(e,t,i):n.Sg(null,t,i)}function n$(n){return n.b.b==0?n.a.$e():aD(n.b)}function W1e(n){if(n.p!=5)throw T(new fu);return ge(n.f)}function X1e(n){if(n.p!=5)throw T(new fu);return ge(n.k)}function VW(n){return B(n.a)===B((eF(),gH))&&Vje(n),n.a}function nMn(n){this.a=u(pe(n),271),this.b=(Pn(),new Hz(n))}function eMn(n,e){bte(this,new fn(n.a,n.b)),wte(this,p8(e))}function Id(){Id=N,Rl=new iz(Y2,0),Lg=new iz(Z2,1)}function xf(){xf=N,M0=new ez(Z2,0),I1=new ez(Y2,1)}function Od(){rie.call(this,new s2(sb(12))),Bz(!0),this.a=2}function e$(n,e,t){Je(),cd.call(this,n),this.b=e,this.a=t}function QW(n,e,t){ms(),uj.call(this,e),this.a=n,this.b=t}function tMn(n){kE.call(this),eV(this),this.a=n,this.c=!0}function iMn(n){var e;e=n.c.d.b,n.b=e,n.a=n.c.d,e.a=n.c.d.b=n}function oC(n){var e;ebe(n.a),byn(n.a),e=new tj(n.a),TQ(e)}function V1e(n,e){aBn(n,!0),Zc(n.e.wf(),new $U(n,!0,e))}function fC(n,e){return LAn(e),Y0e(n,F(be,Le,25,e,15,1),e)}function Q1e(n,e){return C2(),n==Pt(hh(e))||n==Pt(ml(e))}function vc(n,e){return e==null?Vr(Sr(n.f,null)):n5(n.g,e)}function J1e(n){return n.b==0?null:(ne(n.b!=0),Ts(n,n.a.a))}function Gt(n){return Math.max(Math.min(n,nt),-2147483648)|0}function Y1e(n,e){var t=lR[n.charCodeAt(0)];return t??n}function hC(n,e){return tC(n,"set1"),tC(e,"set2"),new Z8n(n,e)}function Z1e(n,e){var t;return t=W0e(n.f,e),st(vE(t),n.f.d)}function R5(n,e){var t,i;return t=e,i=new dI,n_n(n,t,i),i.d}function t$(n,e,t,i){var r;r=new Gjn,e.a[t.g]=r,m2(n.b,i,r)}function JW(n,e,t){var i;i=n.Yg(e),i>=0?n.sh(i,t):_Y(n,e,t)}function Dw(n,e,t){dC(),n&&it(dH,n,e),n&&it($y,n,t)}function rMn(n,e,t){this.i=new X,this.b=n,this.g=e,this.a=t}function lC(n,e,t){this.c=new X,this.e=n,this.f=e,this.b=t}function YW(n,e,t){this.a=new X,this.e=n,this.f=e,this.c=t}function cMn(n,e){oE(this),this.f=e,this.g=n,eC(this),this._d()}function A8(n,e){var t;t=n.q.getHours(),n.q.setDate(e),S6(n,t)}function uMn(n,e){var t;for(pe(e),t=n.a;t;t=t.c)e.Od(t.g,t.i)}function sMn(n){var e;return e=new kj(sb(n.length)),qV(e,n),e}function nle(n){function e(){}return e.prototype=n||{},new e}function ele(n,e){return LOn(n,e)?(FIn(n),!0):!1}function Dh(n,e){if(e==null)throw T(new Nv);return Y2e(n,e)}function tle(n){if(n.qe())return null;var e=n.n;return RA[e]}function S8(n){return n.Db>>16!=3?null:u(n.Cb,33)}function ef(n){return n.Db>>16!=9?null:u(n.Cb,33)}function oMn(n){return n.Db>>16!=6?null:u(n.Cb,79)}function fMn(n){return n.Db>>16!=7?null:u(n.Cb,235)}function hMn(n){return n.Db>>16!=7?null:u(n.Cb,160)}function Pt(n){return n.Db>>16!=11?null:u(n.Cb,33)}function lMn(n,e){var t;return t=n.Yg(e),t>=0?n.lh(t):Ox(n,e)}function aMn(n,e){var t;return t=new iW(e),dxn(t,n),new du(t)}function ZW(n){var e;return e=n.d,e=n.si(n.f),me(n,e),e.Ob()}function dMn(n,e){return n.b+=e.b,n.c+=e.c,n.d+=e.d,n.a+=e.a,n}function i$(n,e){return y.Math.abs(n)0}function bMn(){this.a=new Sh,this.e=new hi,this.g=0,this.i=0}function wMn(n){this.a=n,this.b=F(lJn,q,1944,n.e.length,0,2)}function r$(n,e,t){var i;i=tDn(n,e,t),n.b=new tT(i.c.length)}function tf(){tf=N,Ja=new nz(hN,0),yf=new nz("UP",1)}function aC(){aC=N,kK=new rz(PHn,0),Ton=new rz("FAN",1)}function dC(){dC=N,dH=new we,$y=new we,Ere(Azn,new z2n)}function rle(n){if(n.p!=0)throw T(new fu);return b5(n.f,0)}function cle(n){if(n.p!=0)throw T(new fu);return b5(n.k,0)}function gMn(n){return n.Db>>16!=3?null:u(n.Cb,147)}function y3(n){return n.Db>>16!=6?null:u(n.Cb,235)}function eb(n){return n.Db>>16!=17?null:u(n.Cb,26)}function pMn(n,e){var t=n.a=n.a||[];return t[e]||(t[e]=n.le(e))}function ule(n,e){var t;return t=n.a.get(e),t??new Array}function sle(n,e){var t;t=n.q.getHours(),n.q.setMonth(e),S6(n,t)}function yr(n,e,t){return e==null?_c(n.f,null,t):Gd(n.g,e,t)}function _5(n,e,t,i,r,c){return new Lh(n.e,e,n.aj(),t,i,r,c)}function P8(n,e,t){return n.a=Zu(n.a,0,e)+(""+t)+r8(n.a,e),n}function ole(n,e,t){return W(n.a,(QE(),ex(e,t),new bd(e,t))),n}function nX(n){return _z(n.c),n.e=n.a=n.c,n.c=n.c.c,++n.d,n.a.f}function vMn(n){return _z(n.e),n.c=n.a=n.e,n.e=n.e.e,--n.d,n.a.f}function Ci(n,e){n.d&&Jc(n.d.e,n),n.d=e,n.d&&W(n.d.e,n)}function Hi(n,e){n.c&&Jc(n.c.g,n),n.c=e,n.c&&W(n.c.g,n)}function jr(n,e){n.c&&Jc(n.c.a,n),n.c=e,n.c&&W(n.c.a,n)}function Hr(n,e){n.i&&Jc(n.i.j,n),n.i=e,n.i&&W(n.i.j,n)}function mMn(n,e,t){this.a=e,this.c=n,this.b=(pe(t),new du(t))}function kMn(n,e,t){this.a=e,this.c=n,this.b=(pe(t),new du(t))}function yMn(n,e){this.a=n,this.c=Qr(this.a),this.b=new uC(e)}function fle(n){var e;return Ta(n),e=new hi,gt(n,new Vvn(e))}function tb(n,e){if(n<0||n>e)throw T(new mr(cnn+n+unn+e))}function eX(n,e){return lCn(n.a,e)?TW(n,u(e,22).g,null):null}function hle(n){return yF(),qn(),u(n.a,81).d.e!=0}function jMn(){jMn=N,azn=Fe((aj(),A(M(lzn,1),z,538,0,[fR])))}function EMn(){EMn=N,YQn=Eu(new li,(Qi(),Or),(rr(),Kk))}function tX(){tX=N,ZQn=Eu(new li,(Qi(),Or),(rr(),Kk))}function CMn(){CMn=N,eJn=Eu(new li,(Qi(),Or),(rr(),Kk))}function TMn(){TMn=N,gJn=Ze(new li,(Qi(),Or),(rr(),km))}function ns(){ns=N,mJn=Ze(new li,(Qi(),Or),(rr(),km))}function MMn(){MMn=N,kJn=Ze(new li,(Qi(),Or),(rr(),km))}function c$(){c$=N,TJn=Ze(new li,(Qi(),Or),(rr(),km))}function AMn(){AMn=N,lYn=Eu(new li,(c4(),Gm),(k6(),lK))}function aa(n,e,t,i){this.c=n,this.d=i,s$(this,e),o$(this,t)}function M2(n){this.c=new Tt,this.b=n.b,this.d=n.c,this.a=n.a}function u$(n){this.a=y.Math.cos(n),this.b=y.Math.sin(n)}function s$(n,e){n.a&&Jc(n.a.k,n),n.a=e,n.a&&W(n.a.k,n)}function o$(n,e){n.b&&Jc(n.b.f,n),n.b=e,n.b&&W(n.b.f,n)}function SMn(n,e){mhe(n,n.b,n.c),u(n.b.b,65),e&&u(e.b,65).b}function lle(n,e){vQ(n,e),I(n.Cb,88)&&yb(Ou(u(n.Cb,88)),2)}function f$(n,e){I(n.Cb,88)&&yb(Ou(u(n.Cb,88)),4),Ic(n,e)}function bC(n,e){I(n.Cb,179)&&(u(n.Cb,179).tb=null),Ic(n,e)}function mc(n,e){return er(),R$(e)?new IE(e,n):new i8(e,n)}function ale(n,e){var t,i;t=e.c,i=t!=null,i&&j2(n,new Z0(e.c))}function PMn(n){var e,t;return t=(Qp(),e=new ud,e),O3(t,n),t}function IMn(n){var e,t;return t=(Qp(),e=new ud,e),O3(t,n),t}function OMn(n,e){var t;return t=new Rs(n),e.c[e.c.length]=t,t}function DMn(n,e){var t;return t=u(ab(T2(n.a),e),14),t?t.gc():0}function $Mn(n){var e;return Ta(n),e=(Ow(),Ow(),Nin),qC(n,e)}function FMn(n){for(var e;;)if(e=n.Pb(),!n.Ob())return e}function iX(n,e){tie.call(this,new s2(sb(n))),rs(e,W_n),this.a=e}function uh(n,e,t){KDn(e,t,n.gc()),this.c=n,this.a=e,this.b=t-e}function xMn(n,e,t){var i;KDn(e,t,n.c.length),i=t-e,AG(n.c,e,i)}function dle(n,e){Dyn(n,ge(ui(cl(e,24),FM)),ge(ui(e,FM)))}function Ln(n,e){if(n<0||n>=e)throw T(new mr(cnn+n+unn+e))}function Te(n,e){if(n<0||n>=e)throw T(new wG(cnn+n+unn+e))}function xn(n,e){this.b=(_n(n),n),this.a=e&Ib?e:e|64|Bf}function LMn(n){dyn(this),Wmn(this.a,KV(y.Math.max(8,n))<<1)}function rf(n){return Gr(A(M(di,1),q,8,0,[n.i.n,n.n,n.a]))}function ble(){return lf(),A(M(Bu,1),z,132,0,[Win,ls,Rb])}function wle(){return _o(),A(M(_b,1),z,232,0,[Zr,Fc,nc])}function gle(){return Tu(),A(M(Qzn,1),z,461,0,[Vf,Ol,Co])}function ple(){return Yc(),A(M(Yzn,1),z,462,0,[Wo,Dl,To])}function vle(){return qd(),A(M(zrn,1),z,423,0,[yg,Grn,qR])}function mle(){return W5(),A(M(Krn,1),z,379,0,[NR,LR,BR])}function kle(){return i6(),A(M(Gsn,1),z,378,0,[J_,qsn,oP])}function yle(){return F2(),A(M(Kcn,1),z,314,0,[ap,qk,_cn])}function jle(){return VC(),A(M(qcn,1),z,337,0,[Hcn,DS,o_])}function Ele(){return ya(),A(M(aXn,1),z,450,0,[l_,cv,Tg])}function Cle(){return Kd(),A(M(YR,1),z,361,0,[g0,Fl,w0])}function Tle(){return Nh(),A(M(kXn,1),z,303,0,[zk,Ag,dp])}function Mle(){return q3(),A(M(y_,1),z,292,0,[m_,k_,Gk])}function Ale(){return ur(),A(M(zQn,1),z,452,0,[Bm,Su,xc])}function Sle(){return Rh(),A(M(Zsn,1),z,339,0,[Nl,Ysn,tK])}function Ple(){return oT(),A(M(ion,1),z,375,0,[eon,cK,ton])}function Ile(){return dT(),A(M(hon,1),z,377,0,[fK,pv,ew])}function Ole(){return Q3(),A(M(uon,1),z,336,0,[sK,con,Rm])}function Dle(){return uT(),A(M(fon,1),z,338,0,[oon,oK,son])}function $le(){return _d(),A(M(fJn,1),z,454,0,[ry,_m,aP])}function Fle(){return CT(),A(M(gYn,1),z,442,0,[CK,jK,EK])}function xle(){return f7(),A(M(Fon,1),z,380,0,[CP,Don,$on])}function Lle(){return ET(),A(M(Yon,1),z,381,0,[Jon,IK,Qon])}function Nle(){return sT(),A(M(Xon,1),z,293,0,[PK,Won,Uon])}function Ble(){return w7(),A(M(OK,1),z,437,0,[AP,SP,PP])}function Rle(){return _h(),A(M(Khn,1),z,334,0,[HP,F1,i9])}function _le(){return of(),A(M(Phn,1),z,272,0,[jv,cw,Ev])}function Kle(n,e){return o9e(n,e,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function Hle(n,e,t){var i;return i=O6(n,e,!1),i.b<=e&&i.a<=t}function NMn(n,e,t){var i;i=new Jwn,i.b=e,i.a=t,++e.b,W(n.d,i)}function qle(n,e){var t;return t=(_n(n),n).g,Yz(!!t),_n(e),t(e)}function rX(n,e){var t,i;return i=d3(n,e),t=n.a.Zc(i),new Y8n(n,t)}function Gle(n){return n.Db>>16!=6?null:u(Fx(n),235)}function zle(n){if(n.p!=2)throw T(new fu);return ge(n.f)&Ut}function Ule(n){if(n.p!=2)throw T(new fu);return ge(n.k)&Ut}function Wle(n){return n.a==(T3(),uI)&&Ste(n,C9e(n.g,n.b)),n.a}function A2(n){return n.d==(T3(),uI)&&Ite(n,pke(n.g,n.b)),n.d}function j(n){return ne(n.ai?1:0}function BMn(n,e){var t,i;return t=F$(e),i=t,u(te(n.c,i),19).a}function RMn(n,e){var t;for(t=n+"";t.length0&&n.a[--n.d]==0;);n.a[n.d++]==0&&(n.e=0)}function rAn(n){return n.a?n.e.length==0?n.a.a:n.a.a+(""+n.e):n.c}function rae(n){return!!n.a&&Du(n.a.a).i!=0&&!(n.b&&YF(n.b))}function cae(n){return!!n.u&&bc(n.u.a).i!=0&&!(n.n&&JF(n.n))}function cAn(n){return gD(n.e.Hd().gc()*n.c.Hd().gc(),16,new tvn(n))}function uae(n,e){return xCn(tu(n.q.getTime()),tu(e.q.getTime()))}function Lf(n){return u(af(n,F(GR,MN,17,n.c.length,0,1)),474)}function I8(n){return u(af(n,F(mh,E1,10,n.c.length,0,1)),193)}function sae(n){return ns(),!Xi(n)&&!(!Xi(n)&&n.c.i.c==n.d.i.c)}function uAn(n,e,t){var i;i=(pe(n),new du(n)),N3e(new mMn(i,e,t))}function O8(n,e,t){var i;i=(pe(n),new du(n)),B3e(new kMn(i,e,t))}function sAn(n,e){var t;return t=1-e,n.a[t]=eT(n.a[t],t),eT(n,e)}function oAn(n,e){var t;n.e=new oG,t=Cb(e),wi(t,n.c),eBn(n,t,0)}function Ti(n,e,t,i){var r;r=new XH,r.a=e,r.b=t,r.c=i,Ke(n.a,r)}function Z(n,e,t,i){var r;r=new XH,r.a=e,r.b=t,r.c=i,Ke(n.b,r)}function po(n){var e,t,i;return e=new HCn,t=Zx(e,n),UEe(e),i=t,i}function hX(){var n,e,t;return e=(t=(n=new ud,n),t),W(M1n,e),e}function pC(n){return n.j.c=F(Zn,rn,1,0,5,1),KW(n.c),Khe(n.a),n}function $w(n){return Qv(),I(n.g,10)?u(n.g,10):null}function oae(n){return Iw(n).dc()?!1:(sce(n,new Np),!0)}function fae(n){if(!("stack"in n))try{throw n}catch{}return n}function D8(n,e){if(n<0||n>=e)throw T(new mr(j6e(n,e)));return n}function fAn(n,e,t){if(n<0||et)throw T(new mr(W5e(n,e,t)))}function d$(n,e){if(ci(n.a,e),e.d)throw T(new _r(wKn));e.d=n}function b$(n,e){if(e.$modCount!=n.$modCount)throw T(new vs)}function hAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function lAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function aAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function hae(n,e){return n.a<=n.b?(e.ud(n.a++),!0):!1}function $d(n){var e;return Fr(n)?(e=n,e==-0?0:e):m0e(n)}function vC(n){var e;return fl(n),e=new fln,vw(n.a,new Wvn(e)),e}function dAn(n){var e;return fl(n),e=new oln,vw(n.a,new Uvn(e)),e}function Pi(n,e){this.a=n,$v.call(this,n),tb(e,n.gc()),this.b=e}function lX(n){this.e=n,this.b=this.e.a.entries(),this.a=new Array}function lae(n){return gD(n.e.Hd().gc()*n.c.Hd().gc(),273,new evn(n))}function mC(n){return new Pc((rs(n,AL),KC(qi(qi(5,n),n/10|0))))}function bAn(n){return u(af(n,F(FWn,UKn,11,n.c.length,0,1)),1943)}function aae(n,e,t){return t.f.c.length>0?SW(n.a,e,t):SW(n.b,e,t)}function dae(n,e,t){n.d&&Jc(n.d.e,n),n.d=e,n.d&&Q0(n.d.e,t,n)}function w$(n,e){uTe(e,n),WU(n.d),WU(u(k(n,(nn(),eP)),207))}function H5(n,e){cTe(e,n),UU(n.d),UU(u(k(n,(nn(),eP)),207))}function Fd(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=t.fe()),i}function j3(n,e){var t,i;return t=ub(n,e),i=null,t&&(i=t.ie()),i}function q5(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=t.ie()),i}function $h(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=tY(t)),i}function bae(n,e,t){var i;return i=i4(t),gM(n.g,i,e),gM(n.i,e,t),e}function wae(n,e,t){var i;i=q2e();try{return kue(n,e,t)}finally{Mae(i)}}function wAn(n){var e;e=n.Wg(),this.a=I(e,69)?u(e,69).Zh():e.Kc()}function li(){P9n.call(this),this.j.c=F(Zn,rn,1,0,5,1),this.a=-1}function aX(n,e,t,i){this.d=n,this.n=e,this.g=t,this.o=i,this.p=-1}function gAn(n,e,t,i){this.e=i,this.d=null,this.c=n,this.a=e,this.b=t}function dX(n,e,t){this.d=new r6n(this),this.e=n,this.i=e,this.f=t}function kC(){kC=N,j_=new QG(I4,0),oun=new QG("TOP_LEFT",1)}function pAn(){pAn=N,aon=aTn(Q(1),Q(4)),lon=aTn(Q(1),Q(2))}function vAn(){vAn=N,uZn=Fe((Ij(),A(M(cZn,1),z,551,0,[$K])))}function mAn(){mAn=N,rZn=Fe((Pj(),A(M(lfn,1),z,482,0,[DK])))}function kAn(){kAn=N,CZn=Fe((Jv(),A(M(Dfn,1),z,530,0,[hy])))}function yAn(){yAn=N,IUn=Fe((Aj(),A(M(krn,1),z,481,0,[SR])))}function gae(){return Hd(),A(M(EUn,1),z,406,0,[Ok,Ik,MR,AR])}function pae(){return FC(),A(M(WA,1),z,297,0,[vR,qin,Gin,zin])}function vae(){return d6(),A(M(SUn,1),z,394,0,[Lk,YA,ZA,Nk])}function mae(){return K2(),A(M(TUn,1),z,323,0,[$k,Dk,Fk,xk])}function kae(){return G3(),A(M(jWn,1),z,405,0,[b0,Hb,Kb,kg])}function yae(){return aT(),A(M(KWn,1),z,360,0,[QR,TS,MS,Hk])}function jAn(n,e,t,i){return I(t,54)?new ojn(n,e,t,i):new pW(n,e,t,i)}function jae(){return hf(),A(M(QWn,1),z,411,0,[lp,nv,ev,JR])}function Eae(n){var e;return n.j==(J(),ae)&&(e=GLn(n),au(e,Vn))}function Cae(n,e){var t;t=e.a,Hi(t,e.c.d),Ci(t,e.d.d),fb(t.a,n.n)}function EAn(n,e){return u(yd(KE(u(ct(n.k,e),15).Oc(),jg)),113)}function CAn(n,e){return u(yd(HE(u(ct(n.k,e),15).Oc(),jg)),113)}function Tae(n){return new xn(jbe(u(n.a.dd(),14).gc(),n.a.cd()),16)}function E3(n){return I(n,14)?u(n,14).dc():!n.Kc().Ob()}function S2(n){return Qv(),I(n.g,145)?u(n.g,145):null}function TAn(n){if(n.e.g!=n.b)throw T(new vs);return!!n.c&&n.d>0}function Re(n){return ne(n.b!=n.d.c),n.c=n.b,n.b=n.b.a,++n.a,n.c.c}function bX(n,e){_n(e),St(n.a,n.c,e),n.c=n.c+1&n.a.length-1,MFn(n)}function ll(n,e){_n(e),n.b=n.b-1&n.a.length-1,St(n.a,n.b,e),MFn(n)}function MAn(n,e){var t;for(t=n.j.c.length;t0&&gc(n.g,0,e,0,n.i),e}function IAn(n,e){$j();var t;return t=u(te(eI,n),55),!t||t.wj(e)}function Bae(n){if(n.p!=1)throw T(new fu);return ge(n.f)<<24>>24}function Rae(n){if(n.p!=1)throw T(new fu);return ge(n.k)<<24>>24}function _ae(n){if(n.p!=7)throw T(new fu);return ge(n.k)<<16>>16}function Kae(n){if(n.p!=7)throw T(new fu);return ge(n.f)<<16>>16}function Fh(n){var e;for(e=0;n.Ob();)n.Pb(),e=qi(e,1);return KC(e)}function OAn(n,e){var t;return t=new R0,n.xd(t),t.a+="..",e.yd(t),t.a}function Hae(n,e,t){var i;i=u(te(n.g,t),57),W(n.a.c,new Si(e,i))}function qae(n,e,t){return TD(Y(Vr(Sr(n.f,e))),Y(Vr(Sr(n.f,t))))}function yC(n,e,t){return vM(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function Gae(n,e,t){return m4(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function zae(n,e,t){return b9e(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function pX(n,e){return n==(Qn(),ii)&&e==ii?4:n==ii||e==ii?8:32}function DAn(n,e){return B(e)===B(n)?"(this Map)":e==null?ru:Nr(e)}function Uae(n,e){return u(e==null?Vr(Sr(n.f,null)):n5(n.g,e),281)}function $An(n,e,t){var i;return i=i4(t),it(n.b,i,e),it(n.c,e,t),e}function FAn(n,e){var t;for(t=e;t;)U0(n,t.i,t.j),t=Pt(t);return n}function vX(n,e){var t;return t=C8(f3(new x$(n,e))),DE(new x$(n,e)),t}function sh(n,e){er();var t;return t=u(n,66).Mj(),M5e(t,e),t.Ok(e)}function Wae(n,e,t,i,r){var c;c=m9e(r,t,i),W(e,p6e(r,c)),o5e(n,r,e)}function xAn(n,e,t){n.i=0,n.e=0,e!=t&&(uDn(n,e,t),cDn(n,e,t))}function mX(n,e){var t;t=n.q.getHours(),n.q.setFullYear(e+Tl),S6(n,t)}function Xae(n,e,t){if(t){var i=t.ee();n.a[e]=i(t)}else delete n.a[e]}function g$(n,e,t){if(t){var i=t.ee();t=i(t)}else t=void 0;n.a[e]=t}function LAn(n){if(n<0)throw T(new K9n("Negative array size: "+n))}function bc(n){return n.n||(Ou(n),n.n=new wCn(n,ar,n),Ar(n)),n.n}function G5(n){return ne(n.a=0&&n.a[t]===e[t];t--);return t<0}function KAn(n,e){V3();var t;return t=n.j.g-e.j.g,t!=0?t:0}function HAn(n,e){return _n(e),n.a!=null?$fe(e.Kb(n.a)):UA}function jC(n){var e;return n?new iW(n):(e=new Sh,nF(e,n),e)}function ts(n,e){var t;return e.b.Kb(FPn(n,e.c.Ee(),(t=new Jvn(e),t)))}function EC(n){_J(),Dyn(this,ge(ui(cl(n,24),FM)),ge(ui(n,FM)))}function qAn(){qAn=N,Gzn=Fe(($T(),A(M(Jin,1),z,428,0,[yR,Qin])))}function GAn(){GAn=N,zzn=Fe((RC(),A(M(Zin,1),z,427,0,[Yin,jR])))}function zAn(){zAn=N,WUn=Fe((_C(),A(M(Arn,1),z,424,0,[$R,tS])))}function UAn(){UAn=N,BWn=Fe((B3(),A(M(NWn,1),z,511,0,[_k,UR])))}function WAn(){WAn=N,lXn=Fe((V8(),A(M(Wcn,1),z,419,0,[$S,Ucn])))}function XAn(){XAn=N,wXn=Fe((K8(),A(M(Qcn,1),z,479,0,[Vcn,xS])))}function VAn(){VAn=N,XQn=Fe((x8(),A(M(ron,1),z,376,0,[uK,iy])))}function QAn(){QAn=N,GQn=Fe((z8(),A(M(non,1),z,421,0,[iK,rK])))}function JAn(){JAn=N,sXn=Fe((OC(),A(M(Rcn,1),z,422,0,[Bcn,s_])))}function YAn(){YAn=N,jXn=Fe((kC(),A(M(fun,1),z,420,0,[j_,oun])))}function ZAn(){ZAn=N,RJn=Fe((No(),A(M(BJn,1),z,520,0,[tw,Bl])))}function nSn(){nSn=N,wJn=Fe((z5(),A(M(bJn,1),z,523,0,[Hm,Km])))}function eSn(){eSn=N,jJn=Fe((xf(),A(M(yJn,1),z,516,0,[M0,I1])))}function tSn(){tSn=N,CJn=Fe((tf(),A(M(EJn,1),z,515,0,[Ja,yf])))}function iSn(){iSn=N,UJn=Fe((Id(),A(M(zJn,1),z,455,0,[Rl,Lg])))}function rSn(){rSn=N,hYn=Fe((gC(),A(M(Son,1),z,425,0,[yK,Aon])))}function cSn(){cSn=N,wYn=Fe((iT(),A(M(Pon,1),z,495,0,[EP,mv])))}function uSn(){uSn=N,fYn=Fe((aC(),A(M(Mon,1),z,480,0,[kK,Ton])))}function sSn(){sSn=N,vYn=Fe(($C(),A(M(Oon,1),z,426,0,[Ion,TK])))}function oSn(){oSn=N,TZn=Fe((c7(),A(M(Ffn,1),z,429,0,[DP,$fn])))}function fSn(){fSn=N,sZn=Fe((L8(),A(M(afn,1),z,430,0,[FK,IP])))}function z5(){z5=N,Hm=new ZG("UPPER",0),Km=new ZG("LOWER",1)}function Yae(n,e){var t;t=new r2,la(t,"x",e.a),la(t,"y",e.b),j2(n,t)}function Zae(n,e){var t;t=new r2,la(t,"x",e.a),la(t,"y",e.b),j2(n,t)}function nde(n,e){var t,i;i=!1;do t=JOn(n,e),i=i|t;while(t);return i}function jX(n,e){var t,i;for(t=e,i=0;t>0;)i+=n.a[t],t-=t&-t;return i}function hSn(n,e){var t;for(t=e;t;)U0(n,-t.i,-t.j),t=Pt(t);return n}function $i(n,e){var t,i;for(_n(e),i=n.Kc();i.Ob();)t=i.Pb(),e.td(t)}function lSn(n,e){var t;return t=e.cd(),new bd(t,n.e.pc(t,u(e.dd(),14)))}function Kt(n,e,t,i){var r;r=new aI,r.c=e,r.b=t,r.a=i,i.b=t.a=r,++n.b}function Es(n,e,t){var i;return i=(Ln(e,n.c.length),n.c[e]),n.c[e]=t,i}function ede(n,e,t){return u(e==null?_c(n.f,null,t):Gd(n.g,e,t),281)}function k$(n){return n.c&&n.d?cX(n.c)+"->"+cX(n.d):"e_"+md(n)}function C3(n,e){return(Ta(n),Wv(new $n(n,new UX(e,n.a)))).sd(V4)}function tde(){return Qi(),A(M(Hrn,1),z,356,0,[Qf,$l,Hc,Cc,Or])}function ide(){return J(),A(M(Zi,1),hc,61,0,[Xr,Kn,Vn,ae,Gn])}function rde(n){return gj(),function(){return wae(n,this,arguments)}}function cde(){return Date.now?Date.now():new Date().getTime()}function Xi(n){return!n.c||!n.d?!1:!!n.c.i&&n.c.i==n.d.i}function aSn(n){if(!n.c.Sb())throw T(new ic);return n.a=!0,n.c.Ub()}function $8(n){n.i=0,z9(n.b,null),z9(n.c,null),n.a=null,n.e=null,++n.g}function EX(n){are.call(this,n==null?ru:Nr(n),I(n,78)?u(n,78):null)}function dSn(n){B_n(),Nmn(this),this.a=new Tt,QV(this,n),Ke(this.a,n)}function bSn(){RO(this),this.b=new fn(Ft,Ft),this.a=new fn(Qt,Qt)}function wSn(n,e){this.c=0,this.b=e,qkn.call(this,n,17493),this.a=this.c}function y$(n){CC(),!vf&&(this.c=n,this.e=!0,this.a=new X)}function CC(){CC=N,vf=!0,Fzn=!1,xzn=!1,Nzn=!1,Lzn=!1}function CX(n,e){return I(e,149)?Mn(n.c,u(e,149).c):!1}function TX(n,e){var t;return t=0,n&&(t+=n.f.a/2),e&&(t+=e.f.a/2),t}function j$(n,e){var t;return t=u(xd(n.d,e),23),t||u(xd(n.e,e),23)}function gSn(n){this.b=n,ie.call(this,n),this.a=u(Rn(this.b.a,4),126)}function pSn(n){this.b=n,w2.call(this,n),this.a=u(Rn(this.b.a,4),126)}function Ou(n){return n.t||(n.t=new Amn(n),s6(new _9n(n),0,n.t)),n.t}function ude(){return sr(),A(M(e9,1),z,103,0,[kh,Ao,Zs,Jh,Yh])}function sde(){return qw(),A(M(c9,1),z,249,0,[Hl,Cy,Hhn,r9,qhn])}function ode(){return Ho(),A(M($1,1),z,175,0,[Xn,vi,Zf,Ya,D1])}function fde(){return P7(),A(M(gfn,1),z,316,0,[dfn,xK,wfn,LK,bfn])}function hde(){return b6(),A(M(Usn,1),z,315,0,[zsn,nK,eK,Lm,Nm])}function lde(){return Pa(),A(M(zcn,1),z,335,0,[f_,Gcn,h_,Em,jm])}function ade(){return g4(),A(M(eZn,1),z,355,0,[Ng,Ep,Qm,Vm,Jm])}function dde(){return Vw(),A(M(YWn,1),z,363,0,[SS,IS,OS,PS,AS])}function bde(){return Ss(),A(M(jun,1),z,163,0,[Qk,Sm,xl,Pm,Ub])}function T3(){T3=N;var n,e;cI=(Qp(),e=new fj,e),uI=(n=new BI,n)}function vSn(n){var e;return n.c||(e=n.r,I(e,88)&&(n.c=u(e,26))),n.c}function wde(n){return n.e=3,n.d=n.Yb(),n.e!=2?(n.e=0,!0):!1}function E$(n){var e,t,i;return e=n&Nu,t=n>>22&Nu,i=n<0?Wh:0,Bc(e,t,i)}function gde(n){var e,t,i,r;for(t=n,i=0,r=t.length;i0?g$n(n,e):BNn(n,-e)}function MX(n,e){return e==0||n.e==0?n:e>0?BNn(n,e):g$n(n,-e)}function ve(n){if(Se(n))return n.c=n.a,n.a.Pb();throw T(new ic)}function kSn(n){var e,t;return e=n.c.i,t=n.d.i,e.k==(Qn(),Xt)&&t.k==Xt}function C$(n){var e;return e=new Pd,Pr(e,n),H(e,(nn(),Mr),null),e}function T$(n,e,t){var i;return i=n.Yg(e),i>=0?n._g(i,t,!0):Yd(n,e,t)}function AX(n,e,t,i){var r;for(r=0;re)throw T(new mr(fY(n,e,"index")));return n}function M$(n,e,t,i){var r;return r=F(be,Le,25,e,15,1),Pve(r,n,e,t,i),r}function vde(n,e){var t;t=n.q.getHours()+(e/60|0),n.q.setMinutes(e),S6(n,t)}function mde(n,e){return y.Math.min(al(e.a,n.d.d.c),al(e.b,n.d.d.c))}function O2(n,e){return ki(e)?e==null?MY(n.f,null):$On(n.g,e):MY(n.f,e)}function sf(n){this.c=n,this.a=new E(this.c.a),this.b=new E(this.c.b)}function TC(){this.e=new X,this.c=new X,this.d=new X,this.b=new X}function TSn(){this.g=new zq,this.b=new zq,this.a=new X,this.k=new X}function MSn(n,e,t){this.a=n,this.c=e,this.d=t,W(e.e,this),W(t.b,this)}function ASn(n,e){Hkn.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function SSn(n,e){qkn.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function FX(n,e){FO.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function MC(n,e,t){this.a=n,this.b=e,this.c=t,W(n.t,this),W(e.i,this)}function AC(){this.b=new Tt,this.a=new Tt,this.b=new Tt,this.a=new Tt}function SC(){SC=N,Ym=new kt("org.eclipse.elk.labels.labelManager")}function PSn(){PSn=N,$cn=new ri("separateLayerConnections",(aT(),QR))}function No(){No=N,tw=new tz("REGULAR",0),Bl=new tz("CRITICAL",1)}function x8(){x8=N,uK=new YG("STACKED",0),iy=new YG("SEQUENCED",1)}function L8(){L8=N,FK=new oz("FIXED",0),IP=new oz("CENTER_NODE",1)}function kde(n,e){var t;return t=CEe(n,e),n.b=new tT(t.c.length),Lje(n,t)}function yde(n,e,t){var i;return++n.e,--n.f,i=u(n.d[e].$c(t),133),i.dd()}function ISn(n){var e;return n.a||(e=n.r,I(e,148)&&(n.a=u(e,148))),n.a}function xX(n){if(n.a){if(n.e)return xX(n.e)}else return n;return null}function jde(n,e){return n.pe.p?-1:0}function PC(n,e){return _n(e),n.c=0,"Initial capacity must not be negative")}function $Sn(){$Sn=N,Vzn=Fe((_o(),A(M(_b,1),z,232,0,[Zr,Fc,nc])))}function FSn(){FSn=N,Jzn=Fe((Tu(),A(M(Qzn,1),z,461,0,[Vf,Ol,Co])))}function xSn(){xSn=N,Zzn=Fe((Yc(),A(M(Yzn,1),z,462,0,[Wo,Dl,To])))}function LSn(){LSn=N,Bzn=Fe((lf(),A(M(Bu,1),z,132,0,[Win,ls,Rb])))}function NSn(){NSn=N,bWn=Fe((W5(),A(M(Krn,1),z,379,0,[NR,LR,BR])))}function BSn(){BSn=N,PWn=Fe((qd(),A(M(zrn,1),z,423,0,[yg,Grn,qR])))}function RSn(){RSn=N,oXn=Fe((F2(),A(M(Kcn,1),z,314,0,[ap,qk,_cn])))}function _Sn(){_Sn=N,fXn=Fe((VC(),A(M(qcn,1),z,337,0,[Hcn,DS,o_])))}function KSn(){KSn=N,dXn=Fe((ya(),A(M(aXn,1),z,450,0,[l_,cv,Tg])))}function HSn(){HSn=N,rXn=Fe((Kd(),A(M(YR,1),z,361,0,[g0,Fl,w0])))}function qSn(){qSn=N,yXn=Fe((Nh(),A(M(kXn,1),z,303,0,[zk,Ag,dp])))}function GSn(){GSn=N,mXn=Fe((q3(),A(M(y_,1),z,292,0,[m_,k_,Gk])))}function zSn(){zSn=N,RQn=Fe((i6(),A(M(Gsn,1),z,378,0,[J_,qsn,oP])))}function USn(){USn=N,WQn=Fe((oT(),A(M(ion,1),z,375,0,[eon,cK,ton])))}function WSn(){WSn=N,qQn=Fe((Rh(),A(M(Zsn,1),z,339,0,[Nl,Ysn,tK])))}function XSn(){XSn=N,UQn=Fe((ur(),A(M(zQn,1),z,452,0,[Bm,Su,xc])))}function VSn(){VSn=N,JQn=Fe((dT(),A(M(hon,1),z,377,0,[fK,pv,ew])))}function QSn(){QSn=N,VQn=Fe((Q3(),A(M(uon,1),z,336,0,[sK,con,Rm])))}function JSn(){JSn=N,QQn=Fe((uT(),A(M(fon,1),z,338,0,[oon,oK,son])))}function YSn(){YSn=N,hJn=Fe((_d(),A(M(fJn,1),z,454,0,[ry,_m,aP])))}function ZSn(){ZSn=N,pYn=Fe((CT(),A(M(gYn,1),z,442,0,[CK,jK,EK])))}function nPn(){nPn=N,mYn=Fe((f7(),A(M(Fon,1),z,380,0,[CP,Don,$on])))}function ePn(){ePn=N,LYn=Fe((ET(),A(M(Yon,1),z,381,0,[Jon,IK,Qon])))}function tPn(){tPn=N,xYn=Fe((sT(),A(M(Xon,1),z,293,0,[PK,Won,Uon])))}function iPn(){iPn=N,iZn=Fe((w7(),A(M(OK,1),z,437,0,[AP,SP,PP])))}function rPn(){rPn=N,une=Fe((_h(),A(M(Khn,1),z,334,0,[HP,F1,i9])))}function cPn(){cPn=N,tne=Fe((of(),A(M(Phn,1),z,272,0,[jv,cw,Ev])))}function Pde(){return Mi(),A(M(Ghn,1),z,98,0,[ql,Ef,Tv,td,Eh,Ac])}function wa(n,e){return!n.o&&(n.o=new Xu((Dc(),Ul),S0,n,0)),NF(n.o,e)}function Ide(n){return!n.g&&(n.g=new Qy),!n.g.d&&(n.g.d=new Cmn(n)),n.g.d}function Ode(n){return!n.g&&(n.g=new Qy),!n.g.a&&(n.g.a=new Tmn(n)),n.g.a}function Dde(n){return!n.g&&(n.g=new Qy),!n.g.b&&(n.g.b=new Emn(n)),n.g.b}function N8(n){return!n.g&&(n.g=new Qy),!n.g.c&&(n.g.c=new Mmn(n)),n.g.c}function $de(n,e,t){var i,r;for(r=new H3(e,n),i=0;it||e=0?n._g(t,!0,!0):Yd(n,e,!0)}function Qde(n,e){return ni(K(Y(k(n,(G(),k0)))),K(Y(k(e,k0))))}function aPn(){aPn=N,aYn=Xd(Xd(Dj(new li,(c4(),qm)),(k6(),pP)),aK)}function Jde(n,e,t){var i;return i=tDn(n,e,t),n.b=new tT(i.c.length),JY(n,i)}function Yde(n){if(n.b<=0)throw T(new ic);return--n.b,n.a-=n.c.c,Q(n.a)}function Zde(n){var e;if(!n.a)throw T(new gTn);return e=n.a,n.a=Pt(n.a),e}function n0e(n){for(;!n.a;)if(!nEn(n.c,new Xvn(n)))return!1;return!0}function $2(n){var e;return pe(n),I(n,198)?(e=u(n,198),e):new dvn(n)}function e0e(n){DC(),u(n.We((Xe(),rw)),174).Fc((Mu(),Ty)),n.Ye(eH,null)}function DC(){DC=N,SZn=new n2n,IZn=new e2n,PZn=Rwe((Xe(),eH),SZn,_l,IZn)}function $C(){$C=N,Ion=new sz("LEAF_NUMBER",0),TK=new sz("NODE_SIZE",1)}function t0e(n,e,t){n.a=e,n.c=t,n.b.a.$b(),_s(n.d),n.e.a.c=F(Zn,rn,1,0,5,1)}function $$(n){n.a=F(be,Le,25,n.b+1,15,1),n.c=F(be,Le,25,n.b,15,1),n.d=0}function i0e(n,e){n.a.ue(e.d,n.b)>0&&(W(n.c,new QU(e.c,e.d,n.d)),n.b=e.d)}function zX(n,e){if(n.g==null||e>=n.i)throw T(new xO(e,n.i));return n.g[e]}function dPn(n,e,t){if(W3(n,t),t!=null&&!n.wj(t))throw T(new xI);return t}function bPn(n){var e;if(n.Ek())for(e=n.i-1;e>=0;--e)D(n,e);return gX(n)}function r0e(n){var e,t;if(!n.b)return null;for(t=n.b;e=t.a[0];)t=e;return t}function c0e(n,e){var t,i;return LAn(e),t=(i=n.slice(0,e),WX(i,n)),t.length=e,t}function S3(n,e,t,i){var r;i=(Ow(),i||Lin),r=n.slice(e,t),hY(r,n,e,t,-e,i)}function Cs(n,e,t,i,r){return e<0?Yd(n,t,i):u(t,66).Nj().Pj(n,n.yh(),e,i,r)}function u0e(n){return I(n,172)?""+u(n,172).a:n==null?null:Nr(n)}function s0e(n){return I(n,172)?""+u(n,172).a:n==null?null:Nr(n)}function wPn(n,e){if(e.a)throw T(new _r(wKn));ci(n.a,e),e.a=n,!n.j&&(n.j=e)}function UX(n,e){FO.call(this,e.rd(),e.qd()&-16449),_n(n),this.a=n,this.c=e}function gPn(n,e){var t,i;return i=e/n.c.Hd().gc()|0,t=e%n.c.Hd().gc(),D2(n,i,t)}function Tu(){Tu=N,Vf=new oO(Y2,0),Ol=new oO(I4,1),Co=new oO(Z2,2)}function FC(){FC=N,vR=new Lj("All",0),qin=new lyn,Gin=new Eyn,zin=new ayn}function pPn(){pPn=N,Dzn=Fe((FC(),A(M(WA,1),z,297,0,[vR,qin,Gin,zin])))}function vPn(){vPn=N,EWn=Fe((G3(),A(M(jWn,1),z,405,0,[b0,Hb,Kb,kg])))}function mPn(){mPn=N,CUn=Fe((Hd(),A(M(EUn,1),z,406,0,[Ok,Ik,MR,AR])))}function kPn(){kPn=N,MUn=Fe((K2(),A(M(TUn,1),z,323,0,[$k,Dk,Fk,xk])))}function yPn(){yPn=N,PUn=Fe((d6(),A(M(SUn,1),z,394,0,[Lk,YA,ZA,Nk])))}function jPn(){jPn=N,WJn=Fe((c4(),A(M(won,1),z,393,0,[gP,qm,uy,Gm])))}function EPn(){EPn=N,HWn=Fe((aT(),A(M(KWn,1),z,360,0,[QR,TS,MS,Hk])))}function CPn(){CPn=N,FYn=Fe((qT(),A(M(zon,1),z,340,0,[SK,qon,Gon,Hon])))}function TPn(){TPn=N,JWn=Fe((hf(),A(M(QWn,1),z,411,0,[lp,nv,ev,JR])))}function MPn(){MPn=N,_Qn=Fe((wb(),A(M(Z_,1),z,197,0,[fP,Y_,xg,Fg])))}function APn(){APn=N,Ene=Fe((Vu(),A(M(jne,1),z,396,0,[gs,Yhn,Jhn,Zhn])))}function SPn(){SPn=N,one=Fe((us(),A(M(sne,1),z,285,0,[Ey,yh,Kl,jy])))}function PPn(){PPn=N,ine=Fe((Hh(),A(M(cH,1),z,218,0,[rH,yy,Cv,Sp])))}function IPn(){IPn=N,kne=Fe((AT(),A(M(Qhn,1),z,311,0,[oH,Whn,Vhn,Xhn])))}function OPn(){OPn=N,vne=Fe((Qu(),A(M(o9,1),z,374,0,[Ay,id,My,uw])))}function DPn(){DPn=N,mM(),F1n=Ft,Tee=Qt,x1n=new S9(Ft),Mee=new S9(Qt)}function K8(){K8=N,Vcn=new VG(Xh,0),xS=new VG("IMPROVE_STRAIGHTNESS",1)}function o0e(n,e){return h3(),W(n,new Si(e,Q(e.e.c.length+e.g.c.length)))}function f0e(n,e){return h3(),W(n,new Si(e,Q(e.e.c.length+e.g.c.length)))}function WX(n,e){return U8(e)!=10&&A($u(e),e.hm,e.__elementTypeId$,U8(e),n),n}function Jc(n,e){var t;return t=xr(n,e,0),t==-1?!1:(h1(n,t),!0)}function $Pn(n,e){var t;return t=u(O2(n.e,e),387),t?(ZU(t),t.e):null}function P3(n){var e;return Fr(n)&&(e=0-n,!isNaN(e))?e:bl(z3(n))}function xr(n,e,t){for(;t=0?BT(n,t,!0,!0):Yd(n,e,!0)}function YX(n,e){Qv();var t,i;return t=S2(n),i=S2(e),!!t&&!!i&&!V$n(t.k,i.k)}function a0e(n,e){nu(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function d0e(n,e){eu(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function b0e(n,e){Rd(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function w0e(n,e){Bd(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function BPn(n){(this.q?this.q:(Pn(),Pn(),vh)).Ac(n.q?n.q:(Pn(),Pn(),vh))}function g0e(n,e){return I(e,99)&&u(e,18).Bb&Yi?new LO(e,n):new H3(e,n)}function p0e(n,e){return I(e,99)&&u(e,18).Bb&Yi?new LO(e,n):new H3(e,n)}function RPn(n,e){vrn=new Wy,AUn=e,gm=n,u(gm.b,65),BX(gm,vrn,null),DRn(gm)}function B$(n,e,t){var i;return i=n.g[e],k5(n,e,n.oi(e,t)),n.gi(e,t,i),n.ci(),i}function BC(n,e){var t;return t=n.Xc(e),t>=0?(n.$c(t),!0):!1}function R$(n){var e;return n.d!=n.r&&(e=qs(n),n.e=!!e&&e.Cj()==kGn,n.d=e),n.e}function _$(n,e){var t;for(pe(n),pe(e),t=!1;e.Ob();)t=t|n.Fc(e.Pb());return t}function xd(n,e){var t;return t=u(te(n.e,e),387),t?(Oyn(n,t),t.e):null}function _Pn(n){var e,t;return e=n/60|0,t=n%60,t==0?""+e:""+e+":"+(""+t)}function qr(n,e){var t,i;return Ta(n),i=new FX(e,n.a),t=new iEn(i),new $n(n,t)}function ub(n,e){var t=n.a[e],i=(cF(),dR)[typeof t];return i?i(t):tQ(typeof t)}function v0e(n){switch(n.g){case 0:return nt;case 1:return-1;default:return 0}}function m0e(n){return mJ(n,(I3(),pin))<0?-xce(z3(n)):n.l+n.m*J2+n.h*$a}function U8(n){return n.__elementTypeCategory$==null?10:n.__elementTypeCategory$}function K$(n){var e;return e=n.b.c.length==0?null:un(n.b,0),e!=null&&J$(n,0),e}function KPn(n,e){for(;e[0]0&&arguments[0]!==void 0?arguments[0]:{},Ki=Ge.defaultLayoutOptions,Ii=Ki===void 0?{}:Ki,An=Ge.algorithms,Uc=An===void 0?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:An,Nc=Ge.workerFactory,ju=Ge.workerUrl;if(y(this,Bt),this.defaultLayoutOptions=Ii,this.initialized=!1,typeof ju>"u"&&typeof Nc>"u")throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var vr=Nc;typeof ju<"u"&&typeof Nc>"u"&&(vr=function(q1){return new Worker(q1)});var Jo=vr(ju);if(typeof Jo.postMessage!="function")throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new Lc(Jo),this.worker.postMessage({cmd:"register",algorithms:Uc}).then(function(H1){return qt.initialized=!0}).catch(console.err)}return Et(Bt,[{key:"layout",value:function(Ge){var Ki=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Ii=Ki.layoutOptions,An=Ii===void 0?this.defaultLayoutOptions:Ii,Uc=Ki.logging,Nc=Uc===void 0?!1:Uc,ju=Ki.measureExecutionTime,vr=ju===void 0?!1:ju;return Ge?this.worker.postMessage({cmd:"layout",graph:Ge,layoutOptions:An,options:{logging:Nc,measureExecutionTime:vr}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),Bt}();Vt.default=Ht;var Lc=function(){function Bt(qt){var Ge=this;if(y(this,Bt),qt===void 0)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=qt,this.worker.onmessage=function(Ki){setTimeout(function(){Ge.receive(Ge,Ki)},0)}}return Et(Bt,[{key:"postMessage",value:function(Ge){var Ki=this.id||0;this.id=Ki+1,Ge.id=Ki;var Ii=this;return new Promise(function(An,Uc){Ii.resolvers[Ki]=function(Nc,ju){Nc?(Ii.convertGwtStyleError(Nc),Uc(Nc)):An(ju)},Ii.worker.postMessage(Ge)})}},{key:"receive",value:function(Ge,Ki){var Ii=Ki.data,An=Ge.resolvers[Ii.id];An&&(delete Ge.resolvers[Ii.id],Ii.error?An(Ii.error):An(null,Ii.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(Ge){if(Ge){var Ki=Ge.__java$exception;Ki&&(Ki.cause&&Ki.cause.backingJsObject&&(Ge.cause=Ki.cause.backingJsObject,this.convertGwtStyleError(Ge.cause)),delete Ge.__java$exception)}}}]),Bt}()},{}],2:[function(ft,dt,Vt){(function(Et){(function(){var y;typeof window<"u"?y=window:typeof Et<"u"?y=Et:typeof self<"u"&&(y=self);var Ht;function Lc(){}function Bt(){}function qt(){}function Ge(){}function Ki(){}function Ii(){}function An(){}function Uc(){}function Nc(){}function ju(){}function vr(){}function Jo(){}function H1(){}function q1(){}function ww(){}function Np(){}function G1(){}function Th(){}function Q1n(){}function J1n(){}function zy(){}function Y1n(){}function Z1n(){}function nln(){}function eln(){}function Xg(){}function N(){}function tln(){}function aI(){}function iln(){}function rln(){}function cln(){}function uln(){}function DH(){}function sln(){}function oln(){}function fln(){}function z1(){}function U1(){}function dI(){}function hln(){}function lln(){}function aln(){}function $H(){}function dln(){}function bln(){}function Vg(){}function Qg(){}function wln(){}function gln(){}function pln(){}function vln(){}function FH(){}function W1(){}function Jg(){}function Yg(){}function mln(){}function Vee(){}function bI(){}function kln(){}function yln(){}function jln(){}function Eln(){}function Cln(){}function Tln(){}function Mln(){}function Aln(){}function Sln(){}function Pln(){}function Iln(){}function Oln(){}function Dln(){}function $ln(){}function Fln(){}function xln(){}function Lln(){}function Nln(){}function Bln(){}function Rln(){}function _ln(){}function Kln(){}function Hln(){}function qln(){}function Gln(){}function zln(){}function Uln(){}function Wln(){}function Xln(){}function Vln(){}function Qln(){}function Jln(){}function Yln(){}function xH(){}function Zln(){}function nan(){}function ean(){}function tan(){}function wI(){}function gI(){}function Uy(){}function ian(){}function ran(){}function pI(){}function can(){}function uan(){}function san(){}function Wy(){}function oan(){}function fan(){}function han(){}function lan(){}function aan(){}function dan(){}function ban(){}function wan(){}function gan(){}function LH(){}function pan(){}function van(){}function man(){}function kan(){}function yan(){}function NH(){}function jan(){}function Ean(){}function Can(){}function Tan(){}function Man(){}function Aan(){}function San(){}function Pan(){}function Ian(){}function Oan(){}function Dan(){}function $an(){}function Fan(){}function xan(){}function vI(){}function Lan(){}function Nan(){}function Ban(){}function Ran(){}function _an(){}function BH(){}function Kan(){}function Han(){}function qan(){}function Gan(){}function zan(){}function Uan(){}function Wan(){}function Xan(){}function Van(){}function Qan(){}function Jan(){}function Yan(){}function Zan(){}function ndn(){}function edn(){}function tdn(){}function idn(){}function rdn(){}function cdn(){}function udn(){}function sdn(){}function odn(){}function fdn(){}function hdn(){}function ldn(){}function adn(){}function ddn(){}function bdn(){}function wdn(){}function gdn(){}function pdn(){}function vdn(){}function mdn(){}function kdn(){}function ydn(){}function jdn(){}function Edn(){}function Cdn(){}function Tdn(){}function Mdn(){}function Adn(){}function Sdn(){}function Pdn(){}function Idn(){}function Odn(){}function Ddn(){}function $dn(){}function Fdn(){}function xdn(){}function Ldn(){}function Ndn(){}function Bdn(){}function Rdn(){}function _dn(){}function Kdn(){}function Hdn(){}function qdn(){}function Gdn(){}function zdn(){}function Udn(){}function Wdn(){}function Xdn(){}function Vdn(){}function Qdn(){}function Jdn(){}function Ydn(){}function Zdn(){}function n0n(){}function e0n(){}function t0n(){}function i0n(){}function r0n(){}function c0n(){}function u0n(){}function s0n(){}function o0n(){}function f0n(){}function h0n(){}function l0n(){}function a0n(){}function d0n(){}function b0n(){}function w0n(){}function g0n(){}function p0n(){}function v0n(){}function m0n(){}function k0n(){}function y0n(){}function j0n(){}function E0n(){}function C0n(){}function T0n(){}function M0n(){}function A0n(){}function S0n(){}function P0n(){}function I0n(){}function O0n(){}function D0n(){}function RH(){}function $0n(){}function F0n(){}function x0n(){}function L0n(){}function N0n(){}function B0n(){}function R0n(){}function _0n(){}function K0n(){}function H0n(){}function q0n(){}function G0n(){}function z0n(){}function U0n(){}function W0n(){}function X0n(){}function V0n(){}function Q0n(){}function J0n(){}function Y0n(){}function Z0n(){}function nbn(){}function ebn(){}function tbn(){}function ibn(){}function rbn(){}function cbn(){}function ubn(){}function sbn(){}function obn(){}function fbn(){}function hbn(){}function lbn(){}function abn(){}function dbn(){}function bbn(){}function wbn(){}function gbn(){}function pbn(){}function vbn(){}function mbn(){}function kbn(){}function ybn(){}function jbn(){}function Ebn(){}function Cbn(){}function Tbn(){}function Mbn(){}function Abn(){}function Sbn(){}function Pbn(){}function Ibn(){}function Obn(){}function Dbn(){}function $bn(){}function Fbn(){}function xbn(){}function Lbn(){}function Nbn(){}function Bbn(){}function Rbn(){}function _bn(){}function Kbn(){}function Hbn(){}function qbn(){}function Gbn(){}function zbn(){}function _H(){}function Ubn(){}function Wbn(){}function Xbn(){}function Vbn(){}function Qbn(){}function Jbn(){}function Ybn(){}function Zbn(){}function nwn(){}function ewn(){}function twn(){}function iwn(){}function rwn(){}function cwn(){}function uwn(){}function swn(){}function own(){}function fwn(){}function hwn(){}function lwn(){}function KH(){}function awn(){}function dwn(){}function bwn(){}function wwn(){}function gwn(){}function pwn(){}function HH(){}function qH(){}function vwn(){}function GH(){}function zH(){}function mwn(){}function kwn(){}function ywn(){}function jwn(){}function Ewn(){}function Cwn(){}function Twn(){}function Mwn(){}function Awn(){}function UH(){}function Swn(){}function Pwn(){}function Iwn(){}function Own(){}function Dwn(){}function $wn(){}function Fwn(){}function xwn(){}function Lwn(){}function Nwn(){}function Bwn(){}function Rwn(){}function _wn(){}function Kwn(){}function Hwn(){}function qwn(){}function Gwn(){}function zwn(){}function Uwn(){}function Wwn(){}function Xwn(){}function Vwn(){}function Qwn(){}function Jwn(){}function Ywn(){}function Zwn(){}function ngn(){}function egn(){}function tgn(){}function ign(){}function rgn(){}function cgn(){}function ugn(){}function sgn(){}function ogn(){}function fgn(){}function hgn(){}function lgn(){}function agn(){}function dgn(){}function bgn(){}function wgn(){}function ggn(){}function pgn(){}function vgn(){}function mgn(){}function kgn(){}function ygn(){}function jgn(){}function Egn(){}function Cgn(){}function Tgn(){}function Mgn(){}function Agn(){}function Sgn(){}function Pgn(){}function Ign(){}function Ogn(){}function Dgn(){}function $gn(){}function Fgn(){}function xgn(){}function Lgn(){}function Ngn(){}function Bgn(){}function Rgn(){}function _gn(){}function Kgn(){}function mI(){}function kI(){}function yI(){}function Hgn(){}function qgn(){}function Ggn(){}function zgn(){}function Ugn(){}function WH(){}function Wgn(){}function Xgn(){}function Qee(){}function Vgn(){}function Qgn(){}function Jgn(){}function Ygn(){}function Zgn(){}function n2n(){}function e2n(){}function Zl(){}function t2n(){}function Zg(){}function XH(){}function i2n(){}function r2n(){}function c2n(){}function u2n(){}function s2n(){}function o2n(){}function f2n(){}function h2n(){}function l2n(){}function a2n(){}function d2n(){}function b2n(){}function w2n(){}function g2n(){}function p2n(){}function v2n(){}function m2n(){}function k2n(){}function y2n(){}function j2n(){}function E2n(){}function dn(){}function C2n(){}function T2n(){}function M2n(){}function A2n(){}function S2n(){}function P2n(){}function I2n(){}function O2n(){}function D2n(){}function $2n(){}function jI(){}function F2n(){}function x2n(){}function L2n(){}function N2n(){}function B2n(){}function VH(){}function Xy(){}function Vy(){}function R2n(){}function QH(){}function Qy(){}function _2n(){}function K2n(){}function H2n(){}function q2n(){}function G2n(){}function z2n(){}function Jy(){}function U2n(){}function W2n(){}function X2n(){}function Yy(){}function V2n(){}function JH(){}function Q2n(){}function EI(){}function YH(){}function J2n(){}function Y2n(){}function Z2n(){}function npn(){}function Jee(){}function epn(){}function tpn(){}function ipn(){}function rpn(){}function cpn(){}function upn(){}function spn(){}function opn(){}function fpn(){}function hpn(){}function Bp(){}function CI(){}function lpn(){}function apn(){}function dpn(){}function bpn(){}function wpn(){}function gpn(){}function ppn(){}function vpn(){}function mpn(){}function kpn(){}function ypn(){}function jpn(){}function Epn(){}function Cpn(){}function Tpn(){}function Mpn(){}function Apn(){}function Spn(){}function Ppn(){}function Ipn(){}function Opn(){}function Dpn(){}function $pn(){}function Fpn(){}function xpn(){}function Lpn(){}function Npn(){}function Bpn(){}function Rpn(){}function _pn(){}function Kpn(){}function Hpn(){}function qpn(){}function Gpn(){}function zpn(){}function Upn(){}function Wpn(){}function Xpn(){}function Vpn(){}function Qpn(){}function Jpn(){}function Ypn(){}function Zpn(){}function n3n(){}function e3n(){}function t3n(){}function i3n(){}function r3n(){}function c3n(){}function u3n(){}function s3n(){}function o3n(){}function f3n(){}function h3n(){}function l3n(){}function a3n(){}function d3n(){}function b3n(){}function w3n(){}function g3n(){}function p3n(){}function v3n(){}function m3n(){}function k3n(){}function y3n(){}function j3n(){}function E3n(){}function C3n(){}function T3n(){}function M3n(){}function A3n(){}function S3n(){}function P3n(){}function I3n(){}function O3n(){}function D3n(){}function $3n(){}function F3n(){}function x3n(){}function L3n(){}function N3n(){}function B3n(){}function R3n(){}function _3n(){}function K3n(){}function H3n(){}function q3n(){}function G3n(){}function z3n(){}function U3n(){}function W3n(){}function X3n(){}function V3n(){}function Q3n(){}function J3n(){}function Y3n(){}function Z3n(){}function n4n(){}function e4n(){}function t4n(){}function i4n(){}function ZH(){}function r4n(){}function c4n(){}function TI(){Rv()}function u4n(){pF()}function s4n(){a6()}function o4n(){WT()}function f4n(){YJ()}function h4n(){Go()}function l4n(){fJ()}function a4n(){C7()}function d4n(){q9()}function b4n(){H9()}function w4n(){w8()}function g4n(){v7n()}function p4n(){x2()}function v4n(){Sj()}function m4n(){PSn()}function k4n(){HIn()}function y4n(){sPn()}function j4n(){CMn()}function E4n(){V3()}function C4n(){yl()}function T4n(){qIn()}function M4n(){pAn()}function A4n(){zZ()}function S4n(){IFn()}function P4n(){TMn()}function I4n(){nn()}function O4n(){EMn()}function D4n(){GIn()}function $4n(){WOn()}function F4n(){AMn()}function x4n(){aPn()}function L4n(){m7n()}function N4n(){$Y()}function B4n(){gb()}function R4n(){pOn()}function _4n(){S7()}function K4n(){Ux()}function H4n(){ZF()}function q4n(){Zd()}function G4n(){PV()}function z4n(){MMn()}function U4n(){BBn()}function W4n(){IY()}function X4n(){Bx()}function V4n(){DC()}function Q4n(){nM()}function nq(){Xe()}function J4n(){wT()}function Y4n(){NQ()}function eq(){mM()}function Fo(){dEn()}function tq(){eF()}function Z4n(){pZ()}function iq(n){_n(n)}function nvn(n){this.a=n}function Zy(n){this.a=n}function evn(n){this.a=n}function tvn(n){this.a=n}function ivn(n){this.a=n}function rvn(n){this.a=n}function cvn(n){this.a=n}function uvn(n){this.a=n}function rq(n){this.a=n}function cq(n){this.a=n}function svn(n){this.a=n}function MI(n){this.a=n}function ovn(n){this.a=n}function AI(n){this.a=n}function fvn(n){this.a=n}function SI(n){this.a=n}function hvn(n){this.a=n}function PI(n){this.a=n}function lvn(n){this.a=n}function avn(n){this.a=n}function dvn(n){this.a=n}function uq(n){this.b=n}function bvn(n){this.c=n}function wvn(n){this.a=n}function gvn(n){this.a=n}function pvn(n){this.a=n}function vvn(n){this.a=n}function mvn(n){this.a=n}function kvn(n){this.a=n}function yvn(n){this.a=n}function jvn(n){this.a=n}function Evn(n){this.a=n}function Cvn(n){this.a=n}function Tvn(n){this.a=n}function Mvn(n){this.a=n}function Avn(n){this.a=n}function sq(n){this.a=n}function oq(n){this.a=n}function nj(n){this.a=n}function M9(n){this.a=n}function na(){this.a=[]}function Svn(n,e){n.a=e}function Yee(n,e){n.a=e}function Zee(n,e){n.b=e}function nte(n,e){n.b=e}function ete(n,e){n.b=e}function fq(n,e){n.j=e}function tte(n,e){n.g=e}function ite(n,e){n.i=e}function rte(n,e){n.c=e}function cte(n,e){n.d=e}function ute(n,e){n.d=e}function ste(n,e){n.c=e}function ea(n,e){n.k=e}function ote(n,e){n.c=e}function hq(n,e){n.c=e}function lq(n,e){n.a=e}function fte(n,e){n.a=e}function hte(n,e){n.f=e}function lte(n,e){n.a=e}function ate(n,e){n.b=e}function II(n,e){n.d=e}function ej(n,e){n.i=e}function aq(n,e){n.o=e}function dte(n,e){n.r=e}function bte(n,e){n.a=e}function wte(n,e){n.b=e}function Pvn(n,e){n.e=e}function gte(n,e){n.f=e}function dq(n,e){n.g=e}function pte(n,e){n.e=e}function vte(n,e){n.f=e}function mte(n,e){n.f=e}function kte(n,e){n.n=e}function yte(n,e){n.a=e}function jte(n,e){n.a=e}function Ete(n,e){n.c=e}function Cte(n,e){n.c=e}function Tte(n,e){n.d=e}function Mte(n,e){n.e=e}function Ate(n,e){n.g=e}function Ste(n,e){n.a=e}function Pte(n,e){n.c=e}function Ite(n,e){n.d=e}function Ote(n,e){n.e=e}function Dte(n,e){n.f=e}function $te(n,e){n.j=e}function Fte(n,e){n.a=e}function xte(n,e){n.b=e}function Lte(n,e){n.a=e}function Ivn(n){n.b=n.a}function Ovn(n){n.c=n.d.d}function $v(n){this.d=n}function ta(n){this.a=n}function Rp(n){this.a=n}function bq(n){this.a=n}function Mh(n){this.a=n}function A9(n){this.a=n}function Dvn(n){this.a=n}function wq(n){this.a=n}function S9(n){this.a=n}function gq(n){this.a=n}function pq(n){this.a=n}function vq(n){this.a=n}function L0(n){this.a=n}function P9(n){this.a=n}function I9(n){this.a=n}function mq(n){this.b=n}function _p(n){this.b=n}function Kp(n){this.b=n}function OI(n){this.a=n}function $vn(n){this.a=n}function kq(n){this.a=n}function DI(n){this.c=n}function E(n){this.c=n}function Fvn(n){this.c=n}function yq(n){this.a=n}function jq(n){this.a=n}function Eq(n){this.a=n}function Cq(n){this.a=n}function ut(n){this.a=n}function xvn(n){this.a=n}function Tq(n){this.a=n}function Mq(n){this.a=n}function Lvn(n){this.a=n}function Nvn(n){this.a=n}function Fv(n){this.a=n}function Bvn(n){this.a=n}function Rvn(n){this.a=n}function _vn(n){this.a=n}function Kvn(n){this.a=n}function Hvn(n){this.a=n}function qvn(n){this.a=n}function Gvn(n){this.a=n}function zvn(n){this.a=n}function Uvn(n){this.a=n}function Wvn(n){this.a=n}function Xvn(n){this.a=n}function Vvn(n){this.a=n}function Qvn(n){this.a=n}function Jvn(n){this.a=n}function Yvn(n){this.a=n}function Zvn(n){this.a=n}function n5n(n){this.a=n}function O9(n){this.a=n}function e5n(n){this.a=n}function t5n(n){this.a=n}function tj(n){this.a=n}function i5n(n){this.a=n}function r5n(n){this.a=n}function Hp(n){this.a=n}function Aq(n){this.a=n}function c5n(n){this.a=n}function u5n(n){this.a=n}function s5n(n){this.a=n}function o5n(n){this.a=n}function f5n(n){this.a=n}function Sq(n){this.a=n}function Pq(n){this.a=n}function Iq(n){this.a=n}function ij(n){this.a=n}function rj(n){this.e=n}function qp(n){this.a=n}function h5n(n){this.a=n}function n2(n){this.a=n}function Oq(n){this.a=n}function l5n(n){this.a=n}function a5n(n){this.a=n}function d5n(n){this.a=n}function b5n(n){this.a=n}function w5n(n){this.a=n}function g5n(n){this.a=n}function p5n(n){this.a=n}function v5n(n){this.a=n}function m5n(n){this.a=n}function k5n(n){this.a=n}function y5n(n){this.a=n}function Dq(n){this.a=n}function j5n(n){this.a=n}function E5n(n){this.a=n}function C5n(n){this.a=n}function T5n(n){this.a=n}function M5n(n){this.a=n}function A5n(n){this.a=n}function S5n(n){this.a=n}function P5n(n){this.a=n}function I5n(n){this.a=n}function O5n(n){this.a=n}function D5n(n){this.a=n}function $5n(n){this.a=n}function F5n(n){this.a=n}function x5n(n){this.a=n}function L5n(n){this.a=n}function N5n(n){this.a=n}function B5n(n){this.a=n}function R5n(n){this.a=n}function _5n(n){this.a=n}function K5n(n){this.a=n}function H5n(n){this.a=n}function q5n(n){this.a=n}function G5n(n){this.a=n}function z5n(n){this.a=n}function U5n(n){this.a=n}function W5n(n){this.a=n}function X5n(n){this.a=n}function V5n(n){this.a=n}function Q5n(n){this.a=n}function J5n(n){this.a=n}function Y5n(n){this.a=n}function Z5n(n){this.a=n}function n6n(n){this.a=n}function e6n(n){this.a=n}function t6n(n){this.a=n}function i6n(n){this.a=n}function r6n(n){this.a=n}function c6n(n){this.c=n}function u6n(n){this.b=n}function s6n(n){this.a=n}function o6n(n){this.a=n}function f6n(n){this.a=n}function h6n(n){this.a=n}function l6n(n){this.a=n}function a6n(n){this.a=n}function d6n(n){this.a=n}function b6n(n){this.a=n}function w6n(n){this.a=n}function g6n(n){this.a=n}function p6n(n){this.a=n}function v6n(n){this.a=n}function m6n(n){this.a=n}function k6n(n){this.a=n}function y6n(n){this.a=n}function j6n(n){this.a=n}function E6n(n){this.a=n}function C6n(n){this.a=n}function T6n(n){this.a=n}function M6n(n){this.a=n}function A6n(n){this.a=n}function S6n(n){this.a=n}function P6n(n){this.a=n}function I6n(n){this.a=n}function X1(n){this.a=n}function e2(n){this.a=n}function O6n(n){this.a=n}function D6n(n){this.a=n}function $6n(n){this.a=n}function F6n(n){this.a=n}function x6n(n){this.a=n}function L6n(n){this.a=n}function N6n(n){this.a=n}function B6n(n){this.a=n}function R6n(n){this.a=n}function _6n(n){this.a=n}function K6n(n){this.a=n}function H6n(n){this.a=n}function q6n(n){this.a=n}function G6n(n){this.a=n}function z6n(n){this.a=n}function U6n(n){this.a=n}function cj(n){this.a=n}function W6n(n){this.a=n}function X6n(n){this.a=n}function V6n(n){this.a=n}function Q6n(n){this.a=n}function J6n(n){this.a=n}function Y6n(n){this.a=n}function Z6n(n){this.a=n}function nmn(n){this.a=n}function emn(n){this.a=n}function tmn(n){this.a=n}function imn(n){this.a=n}function rmn(n){this.a=n}function cmn(n){this.a=n}function umn(n){this.a=n}function smn(n){this.a=n}function omn(n){this.a=n}function fmn(n){this.a=n}function hmn(n){this.a=n}function lmn(n){this.a=n}function amn(n){this.a=n}function dmn(n){this.a=n}function bmn(n){this.a=n}function wmn(n){this.a=n}function gmn(n){this.a=n}function pmn(n){this.a=n}function vmn(n){this.a=n}function mmn(n){this.a=n}function kmn(n){this.a=n}function $q(n){this.a=n}function kt(n){this.b=n}function ymn(n){this.f=n}function Fq(n){this.a=n}function jmn(n){this.a=n}function Emn(n){this.a=n}function Cmn(n){this.a=n}function Tmn(n){this.a=n}function Mmn(n){this.a=n}function Amn(n){this.a=n}function Smn(n){this.a=n}function Pmn(n){this.a=n}function D9(n){this.a=n}function Imn(n){this.a=n}function Omn(n){this.b=n}function xq(n){this.c=n}function uj(n){this.e=n}function Dmn(n){this.a=n}function sj(n){this.a=n}function oj(n){this.a=n}function $I(n){this.a=n}function $mn(n){this.a=n}function Fmn(n){this.d=n}function Lq(n){this.a=n}function Nq(n){this.a=n}function cd(n){this.e=n}function Nte(){this.a=0}function gw(){dyn(this)}function X(){RO(this)}function we(){Cu(this)}function FI(){pTn(this)}function xmn(){}function ud(){this.c=p1n}function Bte(n,e){e.Wb(n)}function Lmn(n,e){n.b+=e}function Nmn(n){n.b=new JI}function T(n){return n.e}function Rte(n){return n.a}function _te(n){return n.a}function Kte(n){return n.a}function Hte(n){return n.a}function qte(n){return n.a}function Gte(){return null}function zte(){return null}function Ute(){EG(),iTe()}function Wte(n){n.b.tf(n.e)}function xv(n,e){n.b=e-n.b}function Lv(n,e){n.a=e-n.a}function Bmn(n,e){e.ad(n.a)}function Xte(n,e){si(e,n)}function Vte(n,e,t){n.Od(t,e)}function $9(n,e){n.e=e,e.b=n}function Bq(n){$f(),this.a=n}function Rmn(n){$f(),this.a=n}function _mn(n){$f(),this.a=n}function Rq(n){nb(),this.a=n}function Kmn(n){k3(),aR.be(n)}function ia(){Qyn.call(this)}function _q(){Qyn.call(this)}function Kq(){ia.call(this)}function xI(){ia.call(this)}function Hmn(){ia.call(this)}function F9(){ia.call(this)}function fu(){ia.call(this)}function Nv(){ia.call(this)}function ye(){ia.call(this)}function vs(){ia.call(this)}function qmn(){ia.call(this)}function ic(){ia.call(this)}function Gmn(){ia.call(this)}function zmn(){this.a=this}function fj(){this.Bb|=256}function Umn(){this.b=new Xkn}function Hq(){Hq=N,new we}function qq(){Kq.call(this)}function Wmn(n,e){n.length=e}function hj(n,e){W(n.a,e)}function Qte(n,e){nY(n.c,e)}function Jte(n,e){ci(n.b,e)}function Yte(n,e){KT(n.a,e)}function Zte(n,e){MF(n.a,e)}function Gp(n,e){et(n.e,e)}function t2(n){iM(n.c,n.b)}function nie(n,e){n.kc().Nb(e)}function Gq(n){this.a=Yge(n)}function hi(){this.a=new we}function Xmn(){this.a=new we}function lj(){this.a=new X}function LI(){this.a=new X}function zq(){this.a=new X}function Ns(){this.a=new Oln}function ra(){this.a=new TSn}function Uq(){this.a=new LH}function Wq(){this.a=new h7n}function Vmn(){this.a=new YMn}function Xq(){this.a=new bMn}function Vq(){this.a=new Bjn}function Qmn(){this.a=new X}function Qq(){this.a=new X}function Jmn(){this.a=new X}function Ymn(){this.a=new X}function Zmn(){this.d=new X}function n9n(){this.a=new hi}function e9n(){this.a=new we}function t9n(){this.b=new we}function i9n(){this.b=new X}function Jq(){this.e=new X}function r9n(){this.d=new X}function c9n(){this.a=new C4n}function u9n(){X.call(this)}function Yq(){lj.call(this)}function s9n(){kE.call(this)}function o9n(){Qq.call(this)}function NI(){Bv.call(this)}function Bv(){xmn.call(this)}function i2(){xmn.call(this)}function Zq(){i2.call(this)}function f9n(){zTn.call(this)}function h9n(){zTn.call(this)}function l9n(){uG.call(this)}function a9n(){uG.call(this)}function d9n(){uG.call(this)}function b9n(){sG.call(this)}function hu(){Tt.call(this)}function nG(){B2n.call(this)}function eG(){B2n.call(this)}function w9n(){O9n.call(this)}function g9n(){O9n.call(this)}function p9n(){we.call(this)}function v9n(){we.call(this)}function m9n(){we.call(this)}function k9n(){hi.call(this)}function BI(){RIn.call(this)}function y9n(){fj.call(this)}function RI(){Oz.call(this)}function _I(){Oz.call(this)}function tG(){we.call(this)}function KI(){we.call(this)}function j9n(){we.call(this)}function iG(){Yy.call(this)}function E9n(){Yy.call(this)}function C9n(){iG.call(this)}function T9n(){ZH.call(this)}function M9n(n){hIn.call(this,n)}function A9n(n){hIn.call(this,n)}function rG(n){rq.call(this,n)}function cG(n){n7n.call(this,n)}function eie(n){cG.call(this,n)}function tie(n){n7n.call(this,n)}function zp(){this.a=new Tt}function uG(){this.a=new hi}function sG(){this.a=new we}function S9n(){this.a=new X}function P9n(){this.j=new X}function oG(){this.a=new Rgn}function I9n(){this.a=new T8n}function O9n(){this.a=new X2n}function HI(){HI=N,uR=new V9n}function qI(){qI=N,cR=new X9n}function Rv(){Rv=N,rR=new Bt}function aj(){aj=N,fR=new Xyn}function iie(n){cG.call(this,n)}function rie(n){cG.call(this,n)}function D9n(n){m$.call(this,n)}function $9n(n){m$.call(this,n)}function F9n(n){uEn.call(this,n)}function GI(n){C5e.call(this,n)}function sd(n){_0.call(this,n)}function _v(n){Cj.call(this,n)}function fG(n){Cj.call(this,n)}function x9n(n){Cj.call(this,n)}function _r(n){kCn.call(this,n)}function L9n(n){_r.call(this,n)}function r2(){M9.call(this,{})}function dj(n){c3(),this.a=n}function Kv(n){n.b=null,n.c=0}function cie(n,e){n.e=e,NNn(n,e)}function uie(n,e){n.a=e,h6e(n)}function zI(n,e,t){n.a[e.g]=t}function sie(n,e,t){M4e(t,n,e)}function oie(n,e){$ue(e.i,n.n)}function N9n(n,e){Fwe(n).td(e)}function fie(n,e){return n*n/e}function B9n(n,e){return n.g-e.g}function hie(n){return new nj(n)}function lie(n){return new Z0(n)}function bj(n){_r.call(this,n)}function mr(n){_r.call(this,n)}function R9n(n){_r.call(this,n)}function UI(n){kCn.call(this,n)}function WI(n){AV(),this.a=n}function _9n(n){aEn(),this.a=n}function N0(n){ED(),this.f=n}function XI(n){ED(),this.f=n}function Up(n){_r.call(this,n)}function Hn(n){_r.call(this,n)}function $r(n){_r.call(this,n)}function K9n(n){_r.call(this,n)}function c2(n){_r.call(this,n)}function on(n){return _n(n),n}function K(n){return _n(n),n}function x9(n){return _n(n),n}function hG(n){return _n(n),n}function aie(n){return _n(n),n}function Hv(n){return n.b==n.c}function B0(n){return!!n&&n.b}function die(n){return!!n&&n.k}function bie(n){return!!n&&n.j}function Hu(n){_n(n),this.a=n}function lG(n){return ja(n),n}function qv(n){EW(n,n.length)}function t1(n){_r.call(this,n)}function Sf(n){_r.call(this,n)}function VI(n){_r.call(this,n)}function pw(n){_r.call(this,n)}function Gv(n){_r.call(this,n)}function Ee(n){_r.call(this,n)}function QI(n){Vz.call(this,n,0)}function JI(){iX.call(this,12,3)}function aG(){aG=N,din=new Q1n}function H9n(){H9n=N,ain=new Lc}function wj(){wj=N,dm=new H1}function q9n(){q9n=N,vzn=new ww}function G9n(){throw T(new ye)}function dG(){throw T(new ye)}function z9n(){throw T(new ye)}function wie(){throw T(new ye)}function gie(){throw T(new ye)}function pie(){throw T(new ye)}function YI(){this.a=Ce(pe(Ji))}function u2(n){$f(),this.a=pe(n)}function U9n(n,e){n.Td(e),e.Sd(n)}function vie(n,e){n.a.ec().Mc(e)}function mie(n,e,t){n.c.lf(e,t)}function bG(n){mr.call(this,n)}function Pf(n){Hn.call(this,n)}function i1(){A9.call(this,"")}function zv(){A9.call(this,"")}function V1(){A9.call(this,"")}function R0(){A9.call(this,"")}function wG(n){mr.call(this,n)}function Wp(n){_p.call(this,n)}function ZI(n){lE.call(this,n)}function W9n(n){Wp.call(this,n)}function X9n(){AI.call(this,null)}function V9n(){AI.call(this,null)}function gj(){gj=N,k3()}function Q9n(){Q9n=N,Szn=Z4e()}function J9n(n){return n.a?n.b:0}function kie(n){return n.a?n.b:0}function yie(n,e){return n.a-e.a}function jie(n,e){return n.a-e.a}function Eie(n,e){return n.a-e.a}function pj(n,e){return WX(n,e)}function M(n,e){return pMn(n,e)}function Cie(n,e){return e in n.a}function Y9n(n,e){return n.f=e,n}function Tie(n,e){return n.b=e,n}function Z9n(n,e){return n.c=e,n}function Mie(n,e){return n.g=e,n}function gG(n,e){return n.a=e,n}function pG(n,e){return n.f=e,n}function Aie(n,e){return n.k=e,n}function vG(n,e){return n.a=e,n}function Sie(n,e){return n.e=e,n}function mG(n,e){return n.e=e,n}function Pie(n,e){return n.f=e,n}function Iie(n,e){n.b=!0,n.d=e}function Oie(n,e){n.b=new kr(e)}function Die(n,e,t){e.td(n.a[t])}function $ie(n,e,t){e.we(n.a[t])}function Fie(n,e){return n.b-e.b}function xie(n,e){return n.g-e.g}function Lie(n,e){return n.s-e.s}function Nie(n,e){return n?0:e-1}function n8n(n,e){return n?0:e-1}function Bie(n,e){return n?e-1:0}function Rie(n,e){return e.Yf(n)}function od(n,e){return n.b=e,n}function vj(n,e){return n.a=e,n}function fd(n,e){return n.c=e,n}function hd(n,e){return n.d=e,n}function ld(n,e){return n.e=e,n}function kG(n,e){return n.f=e,n}function Uv(n,e){return n.a=e,n}function Xp(n,e){return n.b=e,n}function Vp(n,e){return n.c=e,n}function gn(n,e){return n.c=e,n}function Dn(n,e){return n.b=e,n}function pn(n,e){return n.d=e,n}function vn(n,e){return n.e=e,n}function _ie(n,e){return n.f=e,n}function mn(n,e){return n.g=e,n}function kn(n,e){return n.a=e,n}function yn(n,e){return n.i=e,n}function jn(n,e){return n.j=e,n}function e8n(n,e){return n.k=e,n}function Kie(n,e){return n.j=e,n}function Hie(n,e){yl(),Hr(e,n)}function qie(n,e,t){Nfe(n.a,e,t)}function t8n(n){mTn.call(this,n)}function yG(n){mTn.call(this,n)}function mj(n){uD.call(this,n)}function i8n(n){u2e.call(this,n)}function Q1(n){Ld.call(this,n)}function r8n(n){XD.call(this,n)}function c8n(n){XD.call(this,n)}function u8n(){Mz.call(this,"")}function Li(){this.a=0,this.b=0}function s8n(){this.b=0,this.a=0}function o8n(n,e){n.b=0,hb(n,e)}function Gie(n,e){n.c=e,n.b=!0}function f8n(n,e){return n.c._b(e)}function xo(n){return n.e&&n.e()}function nO(n){return n?n.d:null}function h8n(n,e){return LDn(n.b,e)}function zie(n){return n?n.g:null}function Uie(n){return n?n.i:null}function J1(n){return Ph(n),n.o}function ad(){ad=N,Mne=h4e()}function l8n(){l8n=N,mi=jve()}function Qp(){Qp=N,g1n=a4e()}function a8n(){a8n=N,hee=l4e()}function jG(){jG=N,oc=s6e()}function EG(){EG=N,Wl=N3()}function d8n(){throw T(new ye)}function b8n(){throw T(new ye)}function w8n(){throw T(new ye)}function g8n(){throw T(new ye)}function p8n(){throw T(new ye)}function v8n(){throw T(new ye)}function kj(n){this.a=new s2(n)}function CG(n){d_n(),gTe(this,n)}function Y1(n){this.a=new AD(n)}function vw(n,e){for(;n.ye(e););}function TG(n,e){for(;n.sd(e););}function mw(n,e){return n.a+=e,n}function eO(n,e){return n.a+=e,n}function r1(n,e){return n.a+=e,n}function dd(n,e){return n.a+=e,n}function Wv(n){return fl(n),n.a}function yj(n){return n.b!=n.d.c}function m8n(n){return n.l|n.m<<22}function MG(n,e){return n.d[e.p]}function k8n(n,e){return Q8e(n,e)}function AG(n,e,t){n.splice(e,t)}function y8n(n){n.c?rBn(n):cBn(n)}function jj(n){this.a=0,this.b=n}function j8n(){this.a=new B7(Pon)}function E8n(){this.b=new B7(won)}function C8n(){this.b=new B7(OK)}function T8n(){this.b=new B7(OK)}function M8n(){throw T(new ye)}function A8n(){throw T(new ye)}function S8n(){throw T(new ye)}function P8n(){throw T(new ye)}function I8n(){throw T(new ye)}function O8n(){throw T(new ye)}function D8n(){throw T(new ye)}function $8n(){throw T(new ye)}function F8n(){throw T(new ye)}function x8n(){throw T(new ye)}function Wie(){throw T(new ic)}function Xie(){throw T(new ic)}function L9(n){this.a=new L8n(n)}function L8n(n){cbe(this,n,cve())}function N9(n){return!n||iTn(n)}function B9(n){return Mf[n]!=-1}function Vie(){_A!=0&&(_A=0),KA=-1}function N8n(){iR==null&&(iR=[])}function Qie(n,e){$x(R(n.a),e)}function Jie(n,e){$x(R(n.a),e)}function R9(n,e){Sw.call(this,n,e)}function Jp(n,e){R9.call(this,n,e)}function SG(n,e){this.b=n,this.c=e}function B8n(n,e){this.b=n,this.a=e}function R8n(n,e){this.a=n,this.b=e}function _8n(n,e){this.a=n,this.b=e}function K8n(n,e){this.a=n,this.b=e}function H8n(n,e){this.a=n,this.b=e}function q8n(n,e){this.a=n,this.b=e}function G8n(n,e){this.a=n,this.b=e}function z8n(n,e){this.a=n,this.b=e}function U8n(n,e){this.a=n,this.b=e}function W8n(n,e){this.b=n,this.a=e}function X8n(n,e){this.b=n,this.a=e}function V8n(n,e){this.b=n,this.a=e}function Q8n(n,e){this.b=n,this.a=e}function Oe(n,e){this.f=n,this.g=e}function Yp(n,e){this.e=n,this.d=e}function bd(n,e){this.g=n,this.i=e}function tO(n,e){this.a=n,this.b=e}function J8n(n,e){this.a=n,this.f=e}function Y8n(n,e){this.b=n,this.c=e}function Yie(n,e){this.a=n,this.b=e}function Z8n(n,e){this.a=n,this.b=e}function iO(n,e){this.a=n,this.b=e}function n7n(n){Bz(n.dc()),this.c=n}function Ej(n){this.b=u(pe(n),83)}function e7n(n){this.a=u(pe(n),83)}function _0(n){this.a=u(pe(n),15)}function t7n(n){this.a=u(pe(n),15)}function Cj(n){this.b=u(pe(n),47)}function Tj(){this.q=new y.Date}function nh(){nh=N,Sin=new tln}function Zp(){Zp=N,X4=new nln}function Xv(n){return n.f.c+n.g.c}function _9(n,e){return n.b.Hc(e)}function i7n(n,e){return n.b.Ic(e)}function r7n(n,e){return n.b.Qc(e)}function c7n(n,e){return n.b.Hc(e)}function u7n(n,e){return n.c.uc(e)}function Ah(n,e){return n.a._b(e)}function s7n(n,e){return tt(n.c,e)}function o7n(n,e){return Uu(n.b,e)}function f7n(n,e){return n>e&&e0}function cO(n,e){return fc(n,e)<0}function n5(n,e){return n.a.get(e)}function lre(n,e){return e.split(n)}function S7n(n,e){return Uu(n.e,e)}function LG(n){return _n(n),!1}function xj(n){xn.call(this,n,21)}function are(n,e){cMn.call(this,n,e)}function Lj(n,e){Oe.call(this,n,e)}function uO(n,e){Oe.call(this,n,e)}function NG(n){_D(),uEn.call(this,n)}function BG(n,e){fCn(n,n.length,e)}function z9(n,e){BCn(n,n.length,e)}function dre(n,e,t){e.ud(n.a.Ge(t))}function bre(n,e,t){e.we(n.a.Fe(t))}function wre(n,e,t){e.td(n.a.Kb(t))}function gre(n,e,t){n.Mb(t)&&e.td(t)}function e5(n,e,t){n.splice(e,0,t)}function pre(n,e){return au(n.e,e)}function Nj(n,e){this.d=n,this.e=e}function P7n(n,e){this.b=n,this.a=e}function I7n(n,e){this.b=n,this.a=e}function RG(n,e){this.b=n,this.a=e}function O7n(n,e){this.a=n,this.b=e}function D7n(n,e){this.a=n,this.b=e}function $7n(n,e){this.a=n,this.b=e}function F7n(n,e){this.a=n,this.b=e}function f2(n,e){this.a=n,this.b=e}function _G(n,e){this.b=n,this.a=e}function KG(n,e){this.b=n,this.a=e}function Bj(n,e){Oe.call(this,n,e)}function Rj(n,e){Oe.call(this,n,e)}function HG(n,e){Oe.call(this,n,e)}function qG(n,e){Oe.call(this,n,e)}function kw(n,e){Oe.call(this,n,e)}function sO(n,e){Oe.call(this,n,e)}function oO(n,e){Oe.call(this,n,e)}function fO(n,e){Oe.call(this,n,e)}function _j(n,e){Oe.call(this,n,e)}function GG(n,e){Oe.call(this,n,e)}function hO(n,e){Oe.call(this,n,e)}function U9(n,e){Oe.call(this,n,e)}function Kj(n,e){Oe.call(this,n,e)}function lO(n,e){Oe.call(this,n,e)}function t5(n,e){Oe.call(this,n,e)}function zG(n,e){Oe.call(this,n,e)}function zt(n,e){Oe.call(this,n,e)}function Hj(n,e){Oe.call(this,n,e)}function x7n(n,e){this.a=n,this.b=e}function L7n(n,e){this.a=n,this.b=e}function N7n(n,e){this.a=n,this.b=e}function B7n(n,e){this.a=n,this.b=e}function R7n(n,e){this.a=n,this.b=e}function _7n(n,e){this.a=n,this.b=e}function K7n(n,e){this.a=n,this.b=e}function H7n(n,e){this.a=n,this.b=e}function q7n(n,e){this.a=n,this.b=e}function UG(n,e){this.b=n,this.a=e}function G7n(n,e){this.b=n,this.a=e}function z7n(n,e){this.b=n,this.a=e}function U7n(n,e){this.b=n,this.a=e}function t3(n,e){this.c=n,this.d=e}function W7n(n,e){this.e=n,this.d=e}function X7n(n,e){this.a=n,this.b=e}function V7n(n,e){this.b=e,this.c=n}function qj(n,e){Oe.call(this,n,e)}function W9(n,e){Oe.call(this,n,e)}function aO(n,e){Oe.call(this,n,e)}function i5(n,e){Oe.call(this,n,e)}function WG(n,e){Oe.call(this,n,e)}function dO(n,e){Oe.call(this,n,e)}function bO(n,e){Oe.call(this,n,e)}function X9(n,e){Oe.call(this,n,e)}function XG(n,e){Oe.call(this,n,e)}function wO(n,e){Oe.call(this,n,e)}function r5(n,e){Oe.call(this,n,e)}function VG(n,e){Oe.call(this,n,e)}function c5(n,e){Oe.call(this,n,e)}function u5(n,e){Oe.call(this,n,e)}function H0(n,e){Oe.call(this,n,e)}function gO(n,e){Oe.call(this,n,e)}function pO(n,e){Oe.call(this,n,e)}function QG(n,e){Oe.call(this,n,e)}function s5(n,e){Oe.call(this,n,e)}function vO(n,e){Oe.call(this,n,e)}function Gj(n,e){Oe.call(this,n,e)}function V9(n,e){Oe.call(this,n,e)}function Q9(n,e){Oe.call(this,n,e)}function h2(n,e){Oe.call(this,n,e)}function mO(n,e){Oe.call(this,n,e)}function JG(n,e){Oe.call(this,n,e)}function kO(n,e){Oe.call(this,n,e)}function yO(n,e){Oe.call(this,n,e)}function YG(n,e){Oe.call(this,n,e)}function jO(n,e){Oe.call(this,n,e)}function EO(n,e){Oe.call(this,n,e)}function CO(n,e){Oe.call(this,n,e)}function TO(n,e){Oe.call(this,n,e)}function ZG(n,e){Oe.call(this,n,e)}function Q7n(n,e){this.b=n,this.a=e}function J7n(n,e){this.a=n,this.b=e}function Y7n(n,e){this.a=n,this.b=e}function Z7n(n,e){this.a=n,this.b=e}function nkn(n,e){this.a=n,this.b=e}function nz(n,e){Oe.call(this,n,e)}function ez(n,e){Oe.call(this,n,e)}function ekn(n,e){this.b=n,this.d=e}function tz(n,e){Oe.call(this,n,e)}function iz(n,e){Oe.call(this,n,e)}function tkn(n,e){this.a=n,this.b=e}function ikn(n,e){this.a=n,this.b=e}function zj(n,e){Oe.call(this,n,e)}function o5(n,e){Oe.call(this,n,e)}function rz(n,e){Oe.call(this,n,e)}function cz(n,e){Oe.call(this,n,e)}function uz(n,e){Oe.call(this,n,e)}function MO(n,e){Oe.call(this,n,e)}function sz(n,e){Oe.call(this,n,e)}function AO(n,e){Oe.call(this,n,e)}function Uj(n,e){Oe.call(this,n,e)}function SO(n,e){Oe.call(this,n,e)}function PO(n,e){Oe.call(this,n,e)}function J9(n,e){Oe.call(this,n,e)}function IO(n,e){Oe.call(this,n,e)}function oz(n,e){Oe.call(this,n,e)}function Y9(n,e){Oe.call(this,n,e)}function fz(n,e){Oe.call(this,n,e)}function vre(n,e){return au(n.c,e)}function mre(n,e){return au(e.b,n)}function kre(n,e){return-n.b.Je(e)}function hz(n,e){return au(n.g,e)}function Z9(n,e){Oe.call(this,n,e)}function l2(n,e){Oe.call(this,n,e)}function rkn(n,e){this.a=n,this.b=e}function ckn(n,e){this.a=n,this.b=e}function fn(n,e){this.a=n,this.b=e}function f5(n,e){Oe.call(this,n,e)}function h5(n,e){Oe.call(this,n,e)}function n8(n,e){Oe.call(this,n,e)}function OO(n,e){Oe.call(this,n,e)}function Wj(n,e){Oe.call(this,n,e)}function l5(n,e){Oe.call(this,n,e)}function DO(n,e){Oe.call(this,n,e)}function Xj(n,e){Oe.call(this,n,e)}function yw(n,e){Oe.call(this,n,e)}function e8(n,e){Oe.call(this,n,e)}function a5(n,e){Oe.call(this,n,e)}function d5(n,e){Oe.call(this,n,e)}function t8(n,e){Oe.call(this,n,e)}function Vj(n,e){Oe.call(this,n,e)}function jw(n,e){Oe.call(this,n,e)}function Qj(n,e){Oe.call(this,n,e)}function ukn(n,e){this.a=n,this.b=e}function skn(n,e){this.a=n,this.b=e}function okn(n,e){this.a=n,this.b=e}function fkn(n,e){this.a=n,this.b=e}function hkn(n,e){this.a=n,this.b=e}function lkn(n,e){this.a=n,this.b=e}function Si(n,e){this.a=n,this.b=e}function Jj(n,e){Oe.call(this,n,e)}function akn(n,e){this.a=n,this.b=e}function dkn(n,e){this.a=n,this.b=e}function bkn(n,e){this.a=n,this.b=e}function wkn(n,e){this.a=n,this.b=e}function gkn(n,e){this.a=n,this.b=e}function pkn(n,e){this.a=n,this.b=e}function vkn(n,e){this.b=n,this.a=e}function mkn(n,e){this.b=n,this.a=e}function kkn(n,e){this.b=n,this.a=e}function ykn(n,e){this.b=n,this.a=e}function jkn(n,e){this.a=n,this.b=e}function Ekn(n,e){this.a=n,this.b=e}function yre(n,e){J9e(n.a,u(e,56))}function Ckn(n,e){f0e(n.a,u(e,11))}function jre(n,e){return h3(),e!=n}function Tkn(){return Q9n(),new Szn}function Mkn(){c$(),this.b=new hi}function Akn(){hM(),this.a=new hi}function Skn(){tX(),lW.call(this)}function a2(n,e){Oe.call(this,n,e)}function Pkn(n,e){this.a=n,this.b=e}function Ikn(n,e){this.a=n,this.b=e}function Yj(n,e){this.a=n,this.b=e}function Okn(n,e){this.a=n,this.b=e}function Dkn(n,e){this.a=n,this.b=e}function $kn(n,e){this.a=n,this.b=e}function Fkn(n,e){this.d=n,this.b=e}function lz(n,e){this.d=n,this.e=e}function xkn(n,e){this.f=n,this.c=e}function i8(n,e){this.b=n,this.c=e}function az(n,e){this.i=n,this.g=e}function Lkn(n,e){this.e=n,this.a=e}function Nkn(n,e){this.a=n,this.b=e}function dz(n,e){n.i=null,nT(n,e)}function Ere(n,e){n&&it($y,n,e)}function Bkn(n,e){return NF(n.a,e)}function Zj(n){return g7(n.c,n.b)}function Vr(n){return n?n.dd():null}function B(n){return n??null}function q0(n){return typeof n===X2}function G0(n){return typeof n===UZ}function ki(n){return typeof n===EL}function el(n,e){return n.Hd().Xb(e)}function nE(n,e){return Rbe(n.Kc(),e)}function gd(n,e){return fc(n,e)==0}function Cre(n,e){return fc(n,e)>=0}function b5(n,e){return fc(n,e)!=0}function Tre(n){return""+(_n(n),n)}function r8(n,e){return n.substr(e)}function Rkn(n){return Fu(n),n.d.gc()}function $O(n){return yme(n,n.c),n}function eE(n){return A5(n==null),n}function w5(n,e){return n.a+=""+e,n}function dr(n,e){return n.a+=""+e,n}function g5(n,e){return n.a+=""+e,n}function rc(n,e){return n.a+=""+e,n}function De(n,e){return n.a+=""+e,n}function bz(n,e){return n.a+=""+e,n}function _kn(n,e){Kt(n,e,n.a,n.a.a)}function ua(n,e){Kt(n,e,n.c.b,n.c)}function Mre(n,e,t){VFn(e,Mx(n,t))}function Are(n,e,t){VFn(e,Mx(n,t))}function Sre(n,e){k0e(new ie(n),e)}function Kkn(n,e){n.q.setTime($d(e))}function Hkn(n,e){kW.call(this,n,e)}function qkn(n,e){kW.call(this,n,e)}function FO(n,e){kW.call(this,n,e)}function Gkn(n){Cu(this),Z5(this,n)}function wz(n){return Ln(n,0),null}function Lo(n){return n.a=0,n.b=0,n}function zkn(n,e){return n.a=e.g+1,n}function Pre(n,e){return n.j[e.p]==2}function gz(n){return lhe(u(n,79))}function Ukn(){Ukn=N,jUn=Fe(qF())}function Wkn(){Wkn=N,RWn=Fe(PNn())}function Xkn(){this.b=new s2(sb(12))}function Vkn(){this.b=0,this.a=!1}function Qkn(){this.b=0,this.a=!1}function p5(n){this.a=n,TI.call(this)}function Jkn(n){this.a=n,TI.call(this)}function In(n,e){ri.call(this,n,e)}function xO(n,e){V0.call(this,n,e)}function Ew(n,e){az.call(this,n,e)}function LO(n,e){H3.call(this,n,e)}function Ykn(n,e){c8.call(this,n,e)}function He(n,e){$j(),it(eI,n,e)}function NO(n,e){return Zu(n.a,0,e)}function Zkn(n,e){return n.a.a.a.cc(e)}function nyn(n,e){return B(n)===B(e)}function Ire(n,e){return ni(n.a,e.a)}function Ore(n,e){return Wc(n.a,e.a)}function Dre(n,e){return xCn(n.a,e.a)}function If(n,e){return n.indexOf(e)}function pd(n,e){return n==e?0:n?1:-1}function tE(n){return n<10?"0"+n:""+n}function $re(n){return pe(n),new p5(n)}function eyn(n){return Bc(n.l,n.m,n.h)}function i3(n){return Gt((_n(n),n))}function Fre(n){return Gt((_n(n),n))}function tyn(n,e){return Wc(n.g,e.g)}function Fr(n){return typeof n===UZ}function xre(n){return n==b0||n==Hb}function Lre(n){return n==b0||n==Kb}function pz(n){return xr(n.b.b,n,0)}function iyn(n){this.a=Tkn(),this.b=n}function ryn(n){this.a=Tkn(),this.b=n}function Nre(n,e){return W(n.a,e),e}function Bre(n,e){return W(n.c,e),n}function cyn(n,e){return cs(n.a,e),n}function Rre(n,e){return wo(),e.a+=n}function _re(n,e){return wo(),e.a+=n}function Kre(n,e){return wo(),e.c+=n}function vz(n,e){S3(n,0,n.length,e)}function Sh(){Tq.call(this,new ba)}function uyn(){xE.call(this,0,0,0,0)}function d2(){ys.call(this,0,0,0,0)}function kr(n){this.a=n.a,this.b=n.b}function tl(n){return n==Zs||n==Ao}function r3(n){return n==Yh||n==Jh}function syn(n){return n==xg||n==Fg}function Cw(n){return n!=Ef&&n!=ql}function qu(n){return n.Lg()&&n.Mg()}function oyn(n){return JE(u(n,118))}function iE(n){return cs(new li,n)}function fyn(n,e){return new H3(e,n)}function Hre(n,e){return new H3(e,n)}function mz(n,e,t){UC(n,e),WC(n,t)}function rE(n,e,t){Rd(n,e),Bd(n,t)}function Yo(n,e,t){nu(n,e),eu(n,t)}function cE(n,e,t){D3(n,e),F3(n,t)}function uE(n,e,t){$3(n,e),x3(n,t)}function BO(n,e){X3(n,e),L3(n,n.D)}function kz(n){xkn.call(this,n,!0)}function hyn(n,e,t){fU.call(this,n,e,t)}function il(n){jl(),qbe.call(this,n)}function lyn(){Lj.call(this,"Head",1)}function ayn(){Lj.call(this,"Tail",3)}function RO(n){n.c=F(Zn,rn,1,0,5,1)}function dyn(n){n.a=F(Zn,rn,1,8,5,1)}function byn(n){Zc(n.xf(),new t5n(n))}function Tw(n){return n!=null?mt(n):0}function qre(n,e){return ob(e,ef(n))}function Gre(n,e){return ob(e,ef(n))}function zre(n,e){return n[n.length]=e}function Ure(n,e){return n[n.length]=e}function yz(n){return zoe(n.b.Kc(),n.a)}function Wre(n,e){return ZC(BD(n.d),e)}function Xre(n,e){return ZC(BD(n.g),e)}function Vre(n,e){return ZC(BD(n.j),e)}function tr(n,e){ri.call(this,n.b,e)}function vd(n){xE.call(this,n,n,n,n)}function jz(n){return n.b&&uL(n),n.a}function Ez(n){return n.b&&uL(n),n.c}function Qre(n,e){vf||(n.b=e)}function _O(n,e,t){return St(n,e,t),t}function wyn(n,e,t){St(n.c[e.g],e.g,t)}function Jre(n,e,t){u(n.c,69).Xh(e,t)}function Yre(n,e,t){Yo(t,t.i+n,t.j+e)}function Zre(n,e){me(bc(n.a),PMn(e))}function nce(n,e){me(Du(n.a),IMn(e))}function v5(n){Je(),cd.call(this,n)}function ece(n){return n==null?0:mt(n)}function gyn(){gyn=N,hK=new f6(cH)}function je(){je=N,new pyn,new X}function pyn(){new we,new we,new we}function Cz(){Cz=N,Hq(),bin=new we}function Zo(){Zo=N,y.Math.log(2)}function ms(){ms=N,Ch=(E7n(),Dne)}function tce(){throw T(new t1(izn))}function ice(){throw T(new t1(izn))}function rce(){throw T(new t1(rzn))}function cce(){throw T(new t1(rzn))}function vyn(n){this.a=n,HU.call(this,n)}function KO(n){this.a=n,Ej.call(this,n)}function HO(n){this.a=n,Ej.call(this,n)}function wi(n,e){mD(n.c,n.c.length,e)}function Kr(n){return n.ae?1:0}function kyn(n,e){return fc(n,e)>0?n:e}function Bc(n,e,t){return{l:n,m:e,h:t}}function uce(n,e){n.a!=null&&Ckn(e,n.a)}function yyn(n){n.a=new aI,n.c=new aI}function sE(n){this.b=n,this.a=new X}function jyn(n){this.b=new san,this.a=n}function Mz(n){vU.call(this),this.a=n}function Eyn(){Lj.call(this,"Range",2)}function Cyn(){kJ(),this.a=new B7(Hrn)}function sce(n,e){pe(e),Iw(n).Jc(new ju)}function oce(n,e){return ns(),e.n.b+=n}function fce(n,e,t){return it(n.g,t,e)}function hce(n,e,t){return it(n.k,t,e)}function lce(n,e){return it(n.a,e.a,e)}function Mw(n,e,t){return _Q(e,t,n.c)}function Az(n){return new fn(n.c,n.d)}function ace(n){return new fn(n.c,n.d)}function Qr(n){return new fn(n.a,n.b)}function Tyn(n,e){return xEe(n.a,e,null)}function dce(n){Hi(n,null),Ci(n,null)}function Myn(n){s$(n,null),o$(n,null)}function Ayn(){c8.call(this,null,null)}function Syn(){wE.call(this,null,null)}function Sz(n){this.a=n,we.call(this)}function bce(n){this.b=(Pn(),new DI(n))}function oE(n){n.j=F(Ain,q,310,0,0,1)}function wce(n,e,t){n.c.Vc(e,u(t,133))}function gce(n,e,t){n.c.ji(e,u(t,133))}function Pyn(n,e){de(n),n.Gc(u(e,15))}function m5(n,e){return Jje(n.c,n.b,e)}function pce(n,e){return new Jyn(n.Kc(),e)}function qO(n,e){return gwe(n.Kc(),e)!=-1}function Pz(n,e){return n.a.Bc(e)!=null}function fE(n){return n.Ob()?n.Pb():null}function Iyn(n){return Hs(n,0,n.length)}function I(n,e){return n!=null&&WF(n,e)}function vce(n,e){n.q.setHours(e),S6(n,e)}function Oyn(n,e){n.c&&(ZU(e),iMn(e))}function mce(n,e,t){u(n.Kb(t),164).Nb(e)}function kce(n,e,t){return SEe(n,e,t),t}function Dyn(n,e,t){n.a=e^1502,n.b=t^tN}function GO(n,e,t){return n.a[e.g][t.g]}function nf(n,e){return n.a[e.c.p][e.p]}function yce(n,e){return n.e[e.c.p][e.p]}function jce(n,e){return n.c[e.c.p][e.p]}function Ece(n,e){return n.j[e.p]=D9e(e)}function Cce(n,e){return DX(n.f,e.tg())}function Tce(n,e){return DX(n.b,e.tg())}function Mce(n,e){return n.a0?e*e/n:e*e*100}function Jce(n,e){return n>0?e/(n*n):e*100}function Yce(n,e,t){return W(e,e$n(n,t))}function Zce(n,e,t){DC(),n.Xe(e)&&t.td(n)}function s3(n,e,t){var i;i=n.Zc(e),i.Rb(t)}function U0(n,e,t){return n.a+=e,n.b+=t,n}function nue(n,e,t){return n.a*=e,n.b*=t,n}function o8(n,e,t){return n.a-=e,n.b-=t,n}function Zz(n,e){return n.a=e.a,n.b=e.b,n}function vE(n){return n.a=-n.a,n.b=-n.b,n}function fjn(n){this.c=n,this.a=1,this.b=1}function hjn(n){this.c=n,nu(n,0),eu(n,0)}function ljn(n){Tt.call(this),V5(this,n)}function ajn(n){yL(),Nmn(this),this.mf(n)}function djn(n,e){Zv(),c8.call(this,n,e)}function nU(n,e){c1(),wE.call(this,n,e)}function bjn(n,e){c1(),wE.call(this,n,e)}function wjn(n,e){c1(),nU.call(this,n,e)}function Gu(n,e,t){Xu.call(this,n,e,t,2)}function JO(n,e){ms(),FE.call(this,n,e)}function gjn(n,e){ms(),JO.call(this,n,e)}function eU(n,e){ms(),JO.call(this,n,e)}function pjn(n,e){ms(),eU.call(this,n,e)}function tU(n,e){ms(),FE.call(this,n,e)}function vjn(n,e){ms(),tU.call(this,n,e)}function mjn(n,e){ms(),FE.call(this,n,e)}function eue(n,e){return n.c.Fc(u(e,133))}function iU(n,e,t){return jM(G8(n,e),t)}function tue(n,e,t){return e.Qk(n.e,n.c,t)}function iue(n,e,t){return e.Rk(n.e,n.c,t)}function YO(n,e){return pl(n.e,u(e,49))}function rue(n,e,t){s6(Du(n.a),e,IMn(t))}function cue(n,e,t){s6(bc(n.a),e,PMn(t))}function rU(n,e){e.$modCount=n.$modCount}function C5(){C5=N,Xm=new kt("root")}function o3(){o3=N,xy=new w9n,new g9n}function kjn(){this.a=new Od,this.b=new Od}function cU(){RIn.call(this),this.Bb|=Yi}function yjn(){Oe.call(this,"GROW_TREE",0)}function uue(n){return n==null?null:CCe(n)}function sue(n){return n==null?null:D5e(n)}function oue(n){return n==null?null:Nr(n)}function fue(n){return n==null?null:Nr(n)}function Ph(n){n.o==null&&u9e(n)}function sn(n){return A5(n==null||q0(n)),n}function Y(n){return A5(n==null||G0(n)),n}function Ce(n){return A5(n==null||ki(n)),n}function uU(n){this.q=new y.Date($d(n))}function f8(n,e){this.c=n,Yp.call(this,n,e)}function mE(n,e){this.a=n,f8.call(this,n,e)}function hue(n,e){this.d=n,Ovn(this),this.b=e}function sU(n,e){P$.call(this,n),this.a=e}function oU(n,e){P$.call(this,n),this.a=e}function lue(n){xQ.call(this,0,0),this.f=n}function fU(n,e,t){IC.call(this,n,e,t,null)}function jjn(n,e,t){IC.call(this,n,e,t,null)}function aue(n,e,t){return n.ue(e,t)<=0?t:e}function due(n,e,t){return n.ue(e,t)<=0?e:t}function bue(n,e){return u(xd(n.b,e),149)}function wue(n,e){return u(xd(n.c,e),229)}function ZO(n){return u(un(n.a,n.b),287)}function Ejn(n){return new fn(n.c,n.d+n.a)}function Cjn(n){return ns(),syn(u(n,197))}function W0(){W0=N,prn=Cn((Qu(),id))}function gue(n,e){e.a?e7e(n,e):zO(n.a,e.b)}function Tjn(n,e){vf||W(n.a,e)}function pue(n,e){return H9(),K3(e.d.i,n)}function vue(n,e){return x2(),new ABn(e,n)}function Df(n,e){return T8(e,ann),n.f=e,n}function hU(n,e,t){return t=os(n,e,3,t),t}function lU(n,e,t){return t=os(n,e,6,t),t}function aU(n,e,t){return t=os(n,e,9,t),t}function h8(n,e,t){++n.j,n.Ki(),A$(n,e,t)}function Mjn(n,e,t){++n.j,n.Hi(e,n.oi(e,t))}function Ajn(n,e,t){var i;i=n.Zc(e),i.Rb(t)}function Sjn(n,e,t){return MZ(n.c,n.b,e,t)}function dU(n,e){return(e&nt)%n.d.length}function ri(n,e){kt.call(this,n),this.a=e}function bU(n,e){xq.call(this,n),this.a=e}function nD(n,e){xq.call(this,n),this.a=e}function Pjn(n,e){this.c=n,Ld.call(this,e)}function Ijn(n,e){this.a=n,Omn.call(this,e)}function l8(n,e){this.a=n,Omn.call(this,e)}function Ojn(n){this.a=(rs(n,Pb),new Pc(n))}function Djn(n){this.a=(rs(n,Pb),new Pc(n))}function a8(n){return!n.a&&(n.a=new vr),n.a}function $jn(n){return n>8?0:n+1}function mue(n,e){return qn(),n==e?0:n?1:-1}function wU(n,e,t){return m2(n,u(e,22),t)}function kue(n,e,t){return n.apply(e,t)}function Fjn(n,e,t){return n.a+=Hs(e,0,t),n}function gU(n,e){var t;return t=n.e,n.e=e,t}function yue(n,e){var t;t=n[eN],t.call(n,e)}function jue(n,e){var t;t=n[eN],t.call(n,e)}function X0(n,e){n.a.Vc(n.b,e),++n.b,n.c=-1}function xjn(n){Cu(n.e),n.d.b=n.d,n.d.a=n.d}function d8(n){n.b?d8(n.b):n.f.c.zc(n.e,n.d)}function Eue(n,e,t){ca(),Svn(n,e.Ce(n.a,t))}function Cue(n,e){return nO(p$n(n.a,e,!0))}function Tue(n,e){return nO(v$n(n.a,e,!0))}function bo(n,e){return pj(new Array(e),n)}function eD(n){return String.fromCharCode(n)}function Mue(n){return n==null?null:n.message}function Ljn(){this.a=new X,this.b=new X}function Njn(){this.a=new LH,this.b=new Umn}function Bjn(){this.b=new Li,this.c=new X}function pU(){this.d=new Li,this.e=new Li}function vU(){this.n=new Li,this.o=new Li}function kE(){this.n=new i2,this.i=new d2}function Rjn(){this.a=new v4n,this.b=new cwn}function _jn(){this.a=new X,this.d=new X}function Kjn(){this.b=new hi,this.a=new hi}function Hjn(){this.b=new we,this.a=new we}function qjn(){this.b=new E8n,this.a=new sgn}function Gjn(){kE.call(this),this.a=new Li}function T5(n){Jbe.call(this,n,(FC(),vR))}function mU(n,e,t,i){xE.call(this,n,e,t,i)}function Aue(n,e,t){t!=null&&JC(e,rx(n,t))}function Sue(n,e,t){t!=null&&YC(e,rx(n,t))}function kU(n,e,t){return t=os(n,e,11,t),t}function st(n,e){return n.a+=e.a,n.b+=e.b,n}function yi(n,e){return n.a-=e.a,n.b-=e.b,n}function Pue(n,e){return n.n.a=(_n(e),e+10)}function Iue(n,e){return n.n.a=(_n(e),e+10)}function Oue(n,e){return e==n||o4(sM(e),n)}function zjn(n,e){return it(n.a,e,"")==null}function Due(n,e){return H9(),!K3(e.d.i,n)}function $ue(n,e){tl(n.f)?Qme(n,e):Fve(n,e)}function Fue(n,e){var t;return t=e.Hh(n.a),t}function V0(n,e){mr.call(this,rm+n+Ra+e)}function g2(n,e,t,i){V.call(this,n,e,t,i)}function yU(n,e,t,i){V.call(this,n,e,t,i)}function Ujn(n,e,t,i){yU.call(this,n,e,t,i)}function Wjn(n,e,t,i){zE.call(this,n,e,t,i)}function tD(n,e,t,i){zE.call(this,n,e,t,i)}function jU(n,e,t,i){zE.call(this,n,e,t,i)}function Xjn(n,e,t,i){tD.call(this,n,e,t,i)}function EU(n,e,t,i){tD.call(this,n,e,t,i)}function Fn(n,e,t,i){jU.call(this,n,e,t,i)}function Vjn(n,e,t,i){EU.call(this,n,e,t,i)}function Qjn(n,e,t,i){yW.call(this,n,e,t,i)}function Jjn(n,e,t){this.a=n,Vz.call(this,e,t)}function Yjn(n,e,t){this.c=e,this.b=t,this.a=n}function xue(n,e,t){return n.d=u(e.Kb(t),164)}function CU(n,e){return n.Aj().Nh().Kh(n,e)}function TU(n,e){return n.Aj().Nh().Ih(n,e)}function Zjn(n,e){return _n(n),B(n)===B(e)}function Mn(n,e){return _n(n),B(n)===B(e)}function iD(n,e){return nO(p$n(n.a,e,!1))}function rD(n,e){return nO(v$n(n.a,e,!1))}function Lue(n,e){return n.b.sd(new D7n(n,e))}function Nue(n,e){return n.b.sd(new $7n(n,e))}function nEn(n,e){return n.b.sd(new F7n(n,e))}function MU(n,e,t){return n.lastIndexOf(e,t)}function Bue(n,e,t){return ni(n[e.b],n[t.b])}function Rue(n,e){return H(e,(nn(),Jk),n)}function _ue(n,e){return Wc(e.a.d.p,n.a.d.p)}function Kue(n,e){return Wc(n.a.d.p,e.a.d.p)}function Hue(n,e){return ni(n.c-n.s,e.c-e.s)}function eEn(n){return n.c?xr(n.c.a,n,0):-1}function que(n){return n<100?null:new Q1(n)}function p2(n){return n==td||n==Eh||n==Ac}function tEn(n,e){return I(e,15)&&oBn(n.c,e)}function Gue(n,e){vf||e&&(n.d=e)}function cD(n,e){var t;return t=e,!!VV(n,t)}function AU(n,e){this.c=n,DD.call(this,n,e)}function iEn(n){this.c=n,FO.call(this,IM,0)}function rEn(n,e){Voe.call(this,n,n.length,e)}function zue(n,e,t){return u(n.c,69).lk(e,t)}function yE(n,e,t){return u(n.c,69).mk(e,t)}function Uue(n,e,t){return tue(n,u(e,332),t)}function SU(n,e,t){return iue(n,u(e,332),t)}function Wue(n,e,t){return txn(n,u(e,332),t)}function cEn(n,e,t){return zve(n,u(e,332),t)}function M5(n,e){return e==null?null:ab(n.b,e)}function PU(n){return G0(n)?(_n(n),n):n.ke()}function jE(n){return!isNaN(n)&&!isFinite(n)}function uEn(n){$f(),this.a=(Pn(),new Wp(n))}function b8(n){h3(),this.d=n,this.a=new gw}function ks(n,e,t){this.a=n,this.b=e,this.c=t}function sEn(n,e,t){this.a=n,this.b=e,this.c=t}function oEn(n,e,t){this.d=n,this.b=t,this.a=e}function uD(n){yyn(this),_s(this),Vi(this,n)}function du(n){RO(this),GU(this.c,0,n.Pc())}function fEn(n){Wu(n.a),uPn(n.c,n.b),n.b=null}function hEn(n){this.a=n,nh(),tu(Date.now())}function lEn(){lEn=N,Xin=new Lc,XA=new Lc}function sD(){sD=N,Rin=new iln,Pzn=new rln}function aEn(){aEn=N,Nne=F(Zn,rn,1,0,5,1)}function dEn(){dEn=N,eee=F(Zn,rn,1,0,5,1)}function IU(){IU=N,tee=F(Zn,rn,1,0,5,1)}function $f(){$f=N,new Bq((Pn(),Pn(),cr))}function Xue(n){return FC(),$e((pPn(),Dzn),n)}function Vue(n){return lf(),$e((LSn(),Bzn),n)}function Que(n){return $T(),$e((qAn(),Gzn),n)}function Jue(n){return RC(),$e((GAn(),zzn),n)}function Yue(n){return dM(),$e((IOn(),Uzn),n)}function Zue(n){return _o(),$e(($Sn(),Vzn),n)}function nse(n){return Tu(),$e((FSn(),Jzn),n)}function ese(n){return Yc(),$e((xSn(),Zzn),n)}function tse(n){return SM(),$e((Ukn(),jUn),n)}function ise(n){return Hd(),$e((mPn(),CUn),n)}function rse(n){return K2(),$e((kPn(),MUn),n)}function cse(n){return d6(),$e((yPn(),PUn),n)}function use(n){return Aj(),$e((yAn(),IUn),n)}function sse(n){return _C(),$e((zAn(),WUn),n)}function ose(n){return W5(),$e((NSn(),bWn),n)}function fse(n){return Qi(),$e((JPn(),vWn),n)}function hse(n){return G3(),$e((vPn(),EWn),n)}function lse(n){return qd(),$e((BSn(),PWn),n)}function OU(n,e){if(!n)throw T(new Hn(e))}function ase(n){return Qn(),$e((vIn(),$Wn),n)}function DU(n){xE.call(this,n.d,n.c,n.a,n.b)}function oD(n){xE.call(this,n.d,n.c,n.a,n.b)}function $U(n,e,t){this.b=n,this.c=e,this.a=t}function EE(n,e,t){this.b=n,this.a=e,this.c=t}function bEn(n,e,t){this.a=n,this.b=e,this.c=t}function FU(n,e,t){this.a=n,this.b=e,this.c=t}function wEn(n,e,t){this.a=n,this.b=e,this.c=t}function xU(n,e,t){this.a=n,this.b=e,this.c=t}function gEn(n,e,t){this.b=n,this.a=e,this.c=t}function CE(n,e,t){this.e=e,this.b=n,this.d=t}function dse(n,e,t){return ca(),n.a.Od(e,t),e}function fD(n){var e;return e=new Dln,e.e=n,e}function LU(n){var e;return e=new Zmn,e.b=n,e}function w8(){w8=N,sS=new Fdn,oS=new xdn}function wo(){wo=N,WWn=new pbn,XWn=new vbn}function bse(n){return aT(),$e((EPn(),HWn),n)}function wse(n){return hf(),$e((TPn(),JWn),n)}function gse(n){return lM(),$e((mOn(),cXn),n)}function pse(n){return q2(),$e((yIn(),uXn),n)}function vse(n){return OC(),$e((JAn(),sXn),n)}function mse(n){return F2(),$e((RSn(),oXn),n)}function kse(n){return Vw(),$e((UPn(),ZWn),n)}function yse(n){return Kd(),$e((HSn(),rXn),n)}function jse(n){return VC(),$e((_Sn(),fXn),n)}function Ese(n){return Pa(),$e((GPn(),hXn),n)}function Cse(n){return V8(),$e((WAn(),lXn),n)}function Tse(n){return ya(),$e((KSn(),dXn),n)}function Mse(n){return eM(),$e((TIn(),bXn),n)}function Ase(n){return K8(),$e((XAn(),wXn),n)}function Sse(n){return A7(),$e((EIn(),gXn),n)}function Pse(n){return h4(),$e((jIn(),pXn),n)}function Ise(n){return or(),$e((zOn(),vXn),n)}function Ose(n){return q3(),$e((GSn(),mXn),n)}function Dse(n){return Nh(),$e((qSn(),yXn),n)}function $se(n){return kC(),$e((YAn(),jXn),n)}function Fse(n){return Ss(),$e((WPn(),EXn),n)}function xse(n){return JT(),$e((CIn(),BQn),n)}function Lse(n){return i6(),$e((zSn(),RQn),n)}function Nse(n){return wb(),$e((MPn(),_Qn),n)}function Bse(n){return ur(),$e((XSn(),UQn),n)}function Rse(n){return Zw(),$e((vOn(),HQn),n)}function _se(n){return Rh(),$e((WSn(),qQn),n)}function Kse(n){return z8(),$e((QAn(),GQn),n)}function Hse(n){return oT(),$e((USn(),WQn),n)}function qse(n){return b6(),$e((zPn(),KQn),n)}function Gse(n){return x8(),$e((VAn(),XQn),n)}function zse(n){return Q3(),$e((QSn(),VQn),n)}function Use(n){return uT(),$e((JSn(),QQn),n)}function Wse(n){return dT(),$e((VSn(),JQn),n)}function Xse(n){return _d(),$e((YSn(),hJn),n)}function Vse(n){return z5(),$e((nSn(),wJn),n)}function Qse(n){return xf(),$e((eSn(),jJn),n)}function Jse(n){return tf(),$e((tSn(),CJn),n)}function Yse(n){return No(),$e((ZAn(),RJn),n)}function Zse(n){return Id(),$e((iSn(),UJn),n)}function noe(n){return c4(),$e((jPn(),WJn),n)}function eoe(n){return k6(),$e((MIn(),VJn),n)}function toe(n){return aC(),$e((uSn(),fYn),n)}function ioe(n){return iT(),$e((cSn(),wYn),n)}function roe(n){return gC(),$e((rSn(),hYn),n)}function coe(n){return CT(),$e((ZSn(),pYn),n)}function uoe(n){return $C(),$e((sSn(),vYn),n)}function soe(n){return f7(),$e((nPn(),mYn),n)}function ooe(n){return qT(),$e((CPn(),FYn),n)}function foe(n){return sT(),$e((tPn(),xYn),n)}function hoe(n){return ET(),$e((ePn(),LYn),n)}function loe(n){return g4(),$e((QPn(),tZn),n)}function aoe(n){return w7(),$e((iPn(),iZn),n)}function doe(n){return Pj(),$e((mAn(),rZn),n)}function boe(n){return Ij(),$e((vAn(),uZn),n)}function woe(n){return L8(),$e((fSn(),sZn),n)}function goe(n){return P7(),$e((XPn(),oZn),n)}function poe(n){return Jv(),$e((kAn(),CZn),n)}function voe(n){return c7(),$e((oSn(),TZn),n)}function moe(n){return Ho(),$e((VPn(),OZn),n)}function koe(n){return y1(),$e((kOn(),$Zn),n)}function yoe(n){return fh(),$e((kIn(),FZn),n)}function joe(n){return vb(),$e((mIn(),_Zn),n)}function Eoe(n){return rr(),$e((Wkn(),RWn),n)}function Coe(n){return B3(),$e((UAn(),BWn),n)}function Toe(n){return sr(),$e((YPn(),ene),n)}function Moe(n){return of(),$e((cPn(),tne),n)}function Aoe(n){return Hh(),$e((PPn(),ine),n)}function Soe(n){return ZT(),$e((SIn(),rne),n)}function Poe(n){return _h(),$e((rPn(),une),n)}function Ioe(n){return us(),$e((SPn(),one),n)}function Ooe(n){return jb(),$e((POn(),fne),n)}function Doe(n){return qw(),$e((ZPn(),hne),n)}function $oe(n){return Mi(),$e((bIn(),lne),n)}function Foe(n){return Mu(),$e((AIn(),ane),n)}function xoe(n){return Qu(),$e((OPn(),vne),n)}function Loe(n){return Lu(),$e((UOn(),mne),n)}function Noe(n){return J(),$e((nIn(),dne),n)}function Boe(n){return AT(),$e((IPn(),kne),n)}function Roe(n){return Vu(),$e((APn(),Ene),n)}function _oe(n){return d4(),$e((yOn(),Lne),n)}function Koe(n,e){return _n(n),n+(_n(e),e)}function Hoe(n,e){return nh(),me(R(n.a),e)}function qoe(n,e){return nh(),me(R(n.a),e)}function hD(n,e){this.c=n,this.a=e,this.b=e-n}function pEn(n,e,t){this.a=n,this.b=e,this.c=t}function NU(n,e,t){this.a=n,this.b=e,this.c=t}function BU(n,e,t){this.a=n,this.b=e,this.c=t}function vEn(n,e,t){this.a=n,this.b=e,this.c=t}function mEn(n,e,t){this.a=n,this.b=e,this.c=t}function s1(n,e,t){this.e=n,this.a=e,this.c=t}function kEn(n,e,t){ms(),QW.call(this,n,e,t)}function lD(n,e,t){ms(),FW.call(this,n,e,t)}function RU(n,e,t){ms(),FW.call(this,n,e,t)}function _U(n,e,t){ms(),FW.call(this,n,e,t)}function yEn(n,e,t){ms(),lD.call(this,n,e,t)}function KU(n,e,t){ms(),lD.call(this,n,e,t)}function jEn(n,e,t){ms(),KU.call(this,n,e,t)}function EEn(n,e,t){ms(),RU.call(this,n,e,t)}function CEn(n,e,t){ms(),_U.call(this,n,e,t)}function g8(n,e){return pe(n),pe(e),new z8n(n,e)}function v2(n,e){return pe(n),pe(e),new NEn(n,e)}function Goe(n,e){return pe(n),pe(e),new BEn(n,e)}function zoe(n,e){return pe(n),pe(e),new W8n(n,e)}function u(n,e){return A5(n==null||WF(n,e)),n}function f3(n){var e;return e=new X,_$(e,n),e}function Uoe(n){var e;return e=new hi,_$(e,n),e}function TEn(n){var e;return e=new Wq,nF(e,n),e}function p8(n){var e;return e=new Tt,nF(e,n),e}function Woe(n){return!n.e&&(n.e=new X),n.e}function Xoe(n){return!n.c&&(n.c=new Bp),n.c}function W(n,e){return n.c[n.c.length]=e,!0}function MEn(n,e){this.c=n,this.b=e,this.a=!1}function HU(n){this.d=n,Ovn(this),this.b=_fe(n.d)}function AEn(){this.a=";,;",this.b="",this.c=""}function Voe(n,e,t){SCn.call(this,e,t),this.a=n}function SEn(n,e,t){this.b=n,Hkn.call(this,e,t)}function qU(n,e,t){this.c=n,Nj.call(this,e,t)}function GU(n,e,t){aY(t,0,n,e,t.length,!1)}function th(n,e,t,i,r){n.b=e,n.c=t,n.d=i,n.a=r}function Qoe(n,e){e&&(n.b=e,n.a=(fl(e),e.a))}function zU(n,e,t,i,r){n.d=e,n.c=t,n.a=i,n.b=r}function UU(n){var e,t;e=n.b,t=n.c,n.b=t,n.c=e}function WU(n){var e,t;t=n.d,e=n.a,n.d=e,n.a=t}function XU(n){return bl(the(Fr(n)?Ks(n):n))}function Joe(n,e){return Wc(GEn(n.d),GEn(e.d))}function Yoe(n,e){return e==(J(),Gn)?n.c:n.d}function h3(){h3=N,don=(J(),Gn),dP=Vn}function PEn(){this.b=K(Y(cn((Go(),xR))))}function IEn(n){return ca(),F(Zn,rn,1,n,5,1)}function Zoe(n){return new fn(n.c+n.b,n.d+n.a)}function nfe(n,e){return Sj(),Wc(n.d.p,e.d.p)}function aD(n){return ne(n.b!=0),Ts(n,n.a.a)}function efe(n){return ne(n.b!=0),Ts(n,n.c.b)}function VU(n,e){if(!n)throw T(new R9n(e))}function TE(n,e){if(!n)throw T(new Hn(e))}function QU(n,e,t){t3.call(this,n,e),this.b=t}function v8(n,e,t){lz.call(this,n,e),this.c=t}function OEn(n,e,t){oIn.call(this,e,t),this.d=n}function JU(n){IU(),Yy.call(this),this.th(n)}function DEn(n,e,t){this.a=n,Ew.call(this,e,t)}function $En(n,e,t){this.a=n,Ew.call(this,e,t)}function ME(n,e,t){lz.call(this,n,e),this.c=t}function FEn(){T3(),khe.call(this,(Z1(),uo))}function xEn(n){return n!=null&&!$F(n,a9,d9)}function tfe(n,e){return(GDn(n)<<4|GDn(e))&Ut}function ife(n,e){return QE(),ex(n,e),new oTn(n,e)}function sa(n,e){var t;n.n&&(t=e,W(n.f,t))}function l3(n,e,t){var i;i=new Z0(t),Ro(n,e,i)}function rfe(n,e){var t;return t=n.c,wV(n,e),t}function YU(n,e){return e<0?n.g=-1:n.g=e,n}function AE(n,e){return H0e(n),n.a*=e,n.b*=e,n}function LEn(n,e,t,i,r){n.c=e,n.d=t,n.b=i,n.a=r}function Ke(n,e){return Kt(n,e,n.c.b,n.c),!0}function ZU(n){n.a.b=n.b,n.b.a=n.a,n.a=n.b=null}function dD(n){this.b=n,this.a=Ed(this.b.a).Ed()}function NEn(n,e){this.b=n,this.a=e,TI.call(this)}function BEn(n,e){this.a=n,this.b=e,TI.call(this)}function REn(n,e){SCn.call(this,e,1040),this.a=n}function m8(n){return n==0||isNaN(n)?n:n<0?-1:1}function cfe(n){return C2(),hh(n)==Pt(ml(n))}function ufe(n){return C2(),ml(n)==Pt(hh(n))}function jd(n,e){return v6(n,new t3(e.a,e.b))}function sfe(n){return!Xi(n)&&n.c.i.c==n.d.i.c}function SE(n){var e;return e=n.n,n.a.b+e.d+e.a}function _En(n){var e;return e=n.n,n.e.b+e.d+e.a}function nW(n){var e;return e=n.n,n.e.a+e.b+e.c}function KEn(n){return Je(),new ih(0,n)}function ofe(n){return n.a?n.a:WD(n)}function A5(n){if(!n)throw T(new Up(null))}function HEn(){HEn=N,mH=(Pn(),new OI(XB))}function PE(){PE=N,new JQ((HI(),uR),(qI(),cR))}function qEn(){qEn=N,jin=F(Wi,q,19,256,0,1)}function bD(n,e,t,i){MQ.call(this,n,e,t,i,0,0)}function ffe(n,e,t){return it(n.b,u(t.b,17),e)}function hfe(n,e,t){return it(n.b,u(t.b,17),e)}function lfe(n,e){return W(n,new fn(e.a,e.b))}function afe(n,e){return n.c=e)throw T(new qq)}function Xfe(n,e,t){return St(e,0,rW(e[0],t[0])),e}function Vfe(n,e,t){e.Ye(t,K(Y(te(n.b,t)))*n.a)}function ACn(n,e,t){return eg(),R3(n,e)&&R3(n,t)}function D5(n){return Mu(),!n.Hc(n1)&&!n.Hc(Gl)}function qE(n){return new fn(n.c+n.b/2,n.d+n.a/2)}function MD(n,e){return e.kh()?pl(n.b,u(e,49)):e}function kW(n,e){this.e=n,this.d=e&64?e|Bf:e}function SCn(n,e){this.c=0,this.d=n,this.b=e|64|Bf}function GE(n){this.b=new Pc(11),this.a=(Ow(),n)}function AD(n){this.b=null,this.a=(Ow(),n||Lin)}function PCn(n){this.a=Y$n(n.a),this.b=new du(n.b)}function ICn(n){this.b=n,b2.call(this,n),$yn(this)}function OCn(n){this.b=n,u8.call(this,n),Fyn(this)}function Y0(n,e,t){this.a=n,g2.call(this,e,t,5,6)}function yW(n,e,t,i){this.b=n,Yt.call(this,e,t,i)}function gi(n,e,t,i,r){D$.call(this,n,e,t,i,r,-1)}function $5(n,e,t,i,r){R8.call(this,n,e,t,i,r,-1)}function V(n,e,t,i){Yt.call(this,n,e,t),this.b=i}function zE(n,e,t,i){v8.call(this,n,e,t),this.b=i}function DCn(n){xkn.call(this,n,!1),this.a=!1}function $Cn(n,e){this.b=n,bvn.call(this,n.b),this.a=e}function FCn(n,e){nb(),Yie.call(this,n,mT(new Hu(e)))}function UE(n,e){return Je(),new xW(n,e,0)}function SD(n,e){return Je(),new xW(6,n,e)}function Qfe(n,e){return Mn(n.substr(0,e.length),e)}function Uu(n,e){return ki(e)?QD(n,e):!!Sr(n.f,e)}function Oi(n,e){for(_n(e);n.Ob();)e.td(n.Pb())}function Pw(n,e,t){jl(),this.e=n,this.d=e,this.a=t}function o1(n,e,t,i){var r;r=n.i,r.i=e,r.a=t,r.b=i}function jW(n){var e;for(e=n;e.f;)e=e.f;return e}function y2(n){var e;return e=t6(n),ne(e!=null),e}function Jfe(n){var e;return e=Lge(n),ne(e!=null),e}function d3(n,e){var t;return t=n.a.gc(),$X(e,t),t-e}function EW(n,e){var t;for(t=0;t0?y.Math.log(n/e):-100}function xCn(n,e){return fc(n,e)<0?-1:fc(n,e)>0?1:0}function SW(n,e,t){return MRn(n,u(e,46),u(t,167))}function LCn(n,e){return u(vW(Ed(n.a)).Xb(e),42).cd()}function uhe(n,e){return P0e(e,n.length),new REn(n,e)}function DD(n,e){this.d=n,ie.call(this,n),this.e=e}function Cd(n){this.d=(_n(n),n),this.a=0,this.c=IM}function PW(n,e){cd.call(this,1),this.a=n,this.b=e}function NCn(n,e){return n.c?NCn(n.c,e):W(n.b,e),n}function she(n,e,t){var i;return i=ub(n,e),g$(n,e,t),i}function IW(n,e){var t;return t=n.slice(0,e),WX(t,n)}function BCn(n,e,t){var i;for(i=0;i=n.g}function KD(n,e,t){var i;return i=Y$(n,e,t),rZ(n,i)}function j2(n,e){var t;t=n.a.length,ub(n,t),g$(n,t,e)}function ZCn(n,e){var t;t=console[n],t.call(console,e)}function nTn(n,e){var t;++n.j,t=n.Vi(),n.Ii(n.oi(t,e))}function mhe(n,e,t){u(e.b,65),Zc(e.a,new NU(n,t,e))}function FW(n,e,t){uj.call(this,e),this.a=n,this.b=t}function xW(n,e,t){cd.call(this,n),this.a=e,this.b=t}function LW(n,e,t){this.a=n,xq.call(this,e),this.b=t}function eTn(n,e,t){this.a=n,aX.call(this,8,e,null,t)}function khe(n){this.a=(_n(xe),xe),this.b=n,new tG}function tTn(n){this.c=n,this.b=this.c.a,this.a=this.c.e}function NW(n){this.c=n,this.b=n.a.d.a,rU(n.a.e,this)}function Wu(n){z0(n.c!=-1),n.d.$c(n.c),n.b=n.c,n.c=-1}function L5(n){return y.Math.sqrt(n.a*n.a+n.b*n.b)}function Md(n,e){return a3(e,n.a.c.length),un(n.a,e)}function Ff(n,e){return B(n)===B(e)||n!=null&&tt(n,e)}function yhe(n){return 0>=n?new PG:sbe(n-1)}function jhe(n){return aw?QD(aw,n):!1}function iTn(n){return n?n.dc():!n.Kc().Ob()}function Gi(n){return!n.a&&n.c?n.c.b:n.a}function Ehe(n){return!n.a&&(n.a=new Yt(zl,n,4)),n.a}function Ad(n){return!n.d&&(n.d=new Yt(ar,n,1)),n.d}function _n(n){if(n==null)throw T(new Nv);return n}function N5(n){n.c?n.c.He():(n.d=!0,S8e(n))}function fl(n){n.c?fl(n.c):(Ta(n),n.d=!0)}function rTn(n){KW(n.a),n.b=F(Zn,rn,1,n.b.length,5,1)}function Che(n,e){return Wc(e.j.c.length,n.j.c.length)}function The(n,e){n.c<0||n.b.b=0?n.Bh(t):bY(n,e)}function cTn(n){var e,t;return e=n.c.i.c,t=n.d.i.c,e==t}function Ahe(n){if(n.p!=4)throw T(new fu);return n.e}function She(n){if(n.p!=3)throw T(new fu);return n.e}function Phe(n){if(n.p!=6)throw T(new fu);return n.f}function Ihe(n){if(n.p!=6)throw T(new fu);return n.k}function Ohe(n){if(n.p!=3)throw T(new fu);return n.j}function Dhe(n){if(n.p!=4)throw T(new fu);return n.j}function BW(n){return!n.b&&(n.b=new sj(new KI)),n.b}function Sd(n){return n.c==-2&&Pte(n,Qve(n.g,n.b)),n.c}function g3(n,e){var t;return t=LD("",n),t.n=e,t.i=1,t}function $he(n,e){yD(u(e.b,65),n),Zc(e.a,new Aq(n))}function Fhe(n,e){me((!n.a&&(n.a=new l8(n,n)),n.a),e)}function uTn(n,e){this.b=n,DD.call(this,n,e),$yn(this)}function sTn(n,e){this.b=n,AU.call(this,n,e),Fyn(this)}function RW(n,e,t,i){bd.call(this,n,e),this.d=t,this.a=i}function VE(n,e,t,i){bd.call(this,n,t),this.a=e,this.f=i}function oTn(n,e){bce.call(this,obe(pe(n),pe(e))),this.a=e}function fTn(){UJ.call(this,Ka,(a8n(),hee)),tEe(this)}function hTn(){UJ.call(this,Vs,(Qp(),g1n)),lje(this)}function lTn(){Oe.call(this,"DELAUNAY_TRIANGULATION",0)}function xhe(n){return String.fromCharCode.apply(null,n)}function it(n,e,t){return ki(e)?yr(n,e,t):_c(n.f,e,t)}function _W(n){return Pn(),n?n.ve():(Ow(),Ow(),Bin)}function Lhe(n,e,t){return L2(),t.pg(n,u(e.cd(),146))}function aTn(n,e){return PE(),new JQ(new Wyn(n),new Uyn(e))}function Nhe(n){return rs(n,AL),KC(qi(qi(5,n),n/10|0))}function QE(){QE=N,fzn=new GI(A(M(Ha,1),OM,42,0,[]))}function dTn(n){return!n.d&&(n.d=new _p(n.c.Cc())),n.d}function p3(n){return!n.a&&(n.a=new W9n(n.c.vc())),n.a}function bTn(n){return!n.b&&(n.b=new Wp(n.c.ec())),n.b}function ch(n,e){for(;e-- >0;)n=n<<1|(n<0?1:0);return n}function pc(n,e){return B(n)===B(e)||n!=null&&tt(n,e)}function Bhe(n,e){return qn(),u(e.b,19).ai&&++i,i}function Oh(n){var e,t;return t=(e=new ud,e),O3(t,n),t}function UD(n){var e,t;return t=(e=new ud,e),VJ(t,n),t}function Zhe(n,e){var t;return t=te(n.f,e),MV(e,t),null}function WD(n){var e;return e=hbe(n),e||null}function CTn(n){return!n.b&&(n.b=new V(bi,n,12,3)),n.b}function n1e(n){return n!=null&&_9(tI,n.toLowerCase())}function e1e(n,e){return ni(bu(n)*zu(n),bu(e)*zu(e))}function t1e(n,e){return ni(bu(n)*zu(n),bu(e)*zu(e))}function i1e(n,e){return ni(n.d.c+n.d.b/2,e.d.c+e.d.b/2)}function r1e(n,e){return ni(n.g.c+n.g.b/2,e.g.c+e.g.b/2)}function TTn(n,e,t){t.a?eu(n,e.b-n.f/2):nu(n,e.a-n.g/2)}function MTn(n,e,t,i){this.a=n,this.b=e,this.c=t,this.d=i}function ATn(n,e,t,i){this.a=n,this.b=e,this.c=t,this.d=i}function ha(n,e,t,i){this.e=n,this.a=e,this.c=t,this.d=i}function STn(n,e,t,i){this.a=n,this.c=e,this.d=t,this.b=i}function PTn(n,e,t,i){ms(),ySn.call(this,e,t,i),this.a=n}function ITn(n,e,t,i){ms(),ySn.call(this,e,t,i),this.a=n}function OTn(n,e){this.a=n,hue.call(this,n,u(n.d,15).Zc(e))}function XD(n){this.f=n,this.c=this.f.e,n.f>0&&qFn(this)}function DTn(n,e,t,i){this.b=n,this.c=i,FO.call(this,e,t)}function $Tn(n){return ne(n.b=0&&Mn(n.substr(t,e.length),e)}function hl(n,e,t,i,r,c,o){return new v$(n.e,e,t,i,r,c,o)}function QTn(n,e,t,i,r,c){this.a=n,z$.call(this,e,t,i,r,c)}function JTn(n,e,t,i,r,c){this.a=n,z$.call(this,e,t,i,r,c)}function YTn(n,e){this.g=n,this.d=A(M(mh,1),E1,10,0,[e])}function f1(n,e){this.e=n,this.a=Zn,this.b=yBn(e),this.c=e}function ZTn(n,e){kE.call(this),eV(this),this.a=n,this.c=e}function M8(n,e,t,i){St(n.c[e.g],t.g,i),St(n.c[t.g],e.g,i)}function ZD(n,e,t,i){St(n.c[e.g],e.g,t),St(n.b[e.g],e.g,i)}function M1e(){return x8(),A(M(ron,1),z,376,0,[uK,iy])}function A1e(){return K8(),A(M(Qcn,1),z,479,0,[Vcn,xS])}function S1e(){return V8(),A(M(Wcn,1),z,419,0,[$S,Ucn])}function P1e(){return OC(),A(M(Rcn,1),z,422,0,[Bcn,s_])}function I1e(){return kC(),A(M(fun,1),z,420,0,[j_,oun])}function O1e(){return z8(),A(M(non,1),z,421,0,[iK,rK])}function D1e(){return z5(),A(M(bJn,1),z,523,0,[Hm,Km])}function $1e(){return No(),A(M(BJn,1),z,520,0,[tw,Bl])}function F1e(){return xf(),A(M(yJn,1),z,516,0,[M0,I1])}function x1e(){return tf(),A(M(EJn,1),z,515,0,[Ja,yf])}function L1e(){return Id(),A(M(zJn,1),z,455,0,[Rl,Lg])}function N1e(){return gC(),A(M(Son,1),z,425,0,[yK,Aon])}function B1e(){return aC(),A(M(Mon,1),z,480,0,[kK,Ton])}function R1e(){return iT(),A(M(Pon,1),z,495,0,[EP,mv])}function _1e(){return $C(),A(M(Oon,1),z,426,0,[Ion,TK])}function K1e(){return c7(),A(M(Ffn,1),z,429,0,[DP,$fn])}function H1e(){return L8(),A(M(afn,1),z,430,0,[FK,IP])}function q1e(){return $T(),A(M(Jin,1),z,428,0,[yR,Qin])}function G1e(){return RC(),A(M(Zin,1),z,427,0,[Yin,jR])}function z1e(){return _C(),A(M(Arn,1),z,424,0,[$R,tS])}function U1e(){return B3(),A(M(NWn,1),z,511,0,[_k,UR])}function sC(n,e,t,i){return t>=0?n.jh(e,t,i):n.Sg(null,t,i)}function n$(n){return n.b.b==0?n.a.$e():aD(n.b)}function W1e(n){if(n.p!=5)throw T(new fu);return ge(n.f)}function X1e(n){if(n.p!=5)throw T(new fu);return ge(n.k)}function VW(n){return B(n.a)===B((eF(),gH))&&Vje(n),n.a}function nMn(n){this.a=u(pe(n),271),this.b=(Pn(),new Hz(n))}function eMn(n,e){bte(this,new fn(n.a,n.b)),wte(this,p8(e))}function Id(){Id=N,Rl=new iz(Y2,0),Lg=new iz(Z2,1)}function xf(){xf=N,M0=new ez(Z2,0),I1=new ez(Y2,1)}function Od(){rie.call(this,new s2(sb(12))),Bz(!0),this.a=2}function e$(n,e,t){Je(),cd.call(this,n),this.b=e,this.a=t}function QW(n,e,t){ms(),uj.call(this,e),this.a=n,this.b=t}function tMn(n){kE.call(this),eV(this),this.a=n,this.c=!0}function iMn(n){var e;e=n.c.d.b,n.b=e,n.a=n.c.d,e.a=n.c.d.b=n}function oC(n){var e;ebe(n.a),byn(n.a),e=new tj(n.a),TQ(e)}function V1e(n,e){aBn(n,!0),Zc(n.e.wf(),new $U(n,!0,e))}function fC(n,e){return LAn(e),Y0e(n,F(be,Le,25,e,15,1),e)}function Q1e(n,e){return C2(),n==Pt(hh(e))||n==Pt(ml(e))}function vc(n,e){return e==null?Vr(Sr(n.f,null)):n5(n.g,e)}function J1e(n){return n.b==0?null:(ne(n.b!=0),Ts(n,n.a.a))}function Gt(n){return Math.max(Math.min(n,nt),-2147483648)|0}function Y1e(n,e){var t=lR[n.charCodeAt(0)];return t??n}function hC(n,e){return tC(n,"set1"),tC(e,"set2"),new Z8n(n,e)}function Z1e(n,e){var t;return t=W0e(n.f,e),st(vE(t),n.f.d)}function R5(n,e){var t,i;return t=e,i=new dI,n_n(n,t,i),i.d}function t$(n,e,t,i){var r;r=new Gjn,e.a[t.g]=r,m2(n.b,i,r)}function JW(n,e,t){var i;i=n.Yg(e),i>=0?n.sh(i,t):_Y(n,e,t)}function Dw(n,e,t){dC(),n&&it(dH,n,e),n&&it($y,n,t)}function rMn(n,e,t){this.i=new X,this.b=n,this.g=e,this.a=t}function lC(n,e,t){this.c=new X,this.e=n,this.f=e,this.b=t}function YW(n,e,t){this.a=new X,this.e=n,this.f=e,this.c=t}function cMn(n,e){oE(this),this.f=e,this.g=n,eC(this),this._d()}function A8(n,e){var t;t=n.q.getHours(),n.q.setDate(e),S6(n,t)}function uMn(n,e){var t;for(pe(e),t=n.a;t;t=t.c)e.Od(t.g,t.i)}function sMn(n){var e;return e=new kj(sb(n.length)),qV(e,n),e}function nle(n){function e(){}return e.prototype=n||{},new e}function ele(n,e){return LOn(n,e)?(FIn(n),!0):!1}function Dh(n,e){if(e==null)throw T(new Nv);return Y2e(n,e)}function tle(n){if(n.qe())return null;var e=n.n;return RA[e]}function S8(n){return n.Db>>16!=3?null:u(n.Cb,33)}function ef(n){return n.Db>>16!=9?null:u(n.Cb,33)}function oMn(n){return n.Db>>16!=6?null:u(n.Cb,79)}function fMn(n){return n.Db>>16!=7?null:u(n.Cb,235)}function hMn(n){return n.Db>>16!=7?null:u(n.Cb,160)}function Pt(n){return n.Db>>16!=11?null:u(n.Cb,33)}function lMn(n,e){var t;return t=n.Yg(e),t>=0?n.lh(t):Ox(n,e)}function aMn(n,e){var t;return t=new iW(e),dxn(t,n),new du(t)}function ZW(n){var e;return e=n.d,e=n.si(n.f),me(n,e),e.Ob()}function dMn(n,e){return n.b+=e.b,n.c+=e.c,n.d+=e.d,n.a+=e.a,n}function i$(n,e){return y.Math.abs(n)0}function bMn(){this.a=new Sh,this.e=new hi,this.g=0,this.i=0}function wMn(n){this.a=n,this.b=F(lJn,q,1944,n.e.length,0,2)}function r$(n,e,t){var i;i=tDn(n,e,t),n.b=new tT(i.c.length)}function tf(){tf=N,Ja=new nz(hN,0),yf=new nz("UP",1)}function aC(){aC=N,kK=new rz(PHn,0),Ton=new rz("FAN",1)}function dC(){dC=N,dH=new we,$y=new we,Ere(Azn,new z2n)}function rle(n){if(n.p!=0)throw T(new fu);return b5(n.f,0)}function cle(n){if(n.p!=0)throw T(new fu);return b5(n.k,0)}function gMn(n){return n.Db>>16!=3?null:u(n.Cb,147)}function y3(n){return n.Db>>16!=6?null:u(n.Cb,235)}function eb(n){return n.Db>>16!=17?null:u(n.Cb,26)}function pMn(n,e){var t=n.a=n.a||[];return t[e]||(t[e]=n.le(e))}function ule(n,e){var t;return t=n.a.get(e),t??new Array}function sle(n,e){var t;t=n.q.getHours(),n.q.setMonth(e),S6(n,t)}function yr(n,e,t){return e==null?_c(n.f,null,t):Gd(n.g,e,t)}function _5(n,e,t,i,r,c){return new Lh(n.e,e,n.aj(),t,i,r,c)}function P8(n,e,t){return n.a=Zu(n.a,0,e)+(""+t)+r8(n.a,e),n}function ole(n,e,t){return W(n.a,(QE(),ex(e,t),new bd(e,t))),n}function nX(n){return _z(n.c),n.e=n.a=n.c,n.c=n.c.c,++n.d,n.a.f}function vMn(n){return _z(n.e),n.c=n.a=n.e,n.e=n.e.e,--n.d,n.a.f}function Ci(n,e){n.d&&Jc(n.d.e,n),n.d=e,n.d&&W(n.d.e,n)}function Hi(n,e){n.c&&Jc(n.c.g,n),n.c=e,n.c&&W(n.c.g,n)}function jr(n,e){n.c&&Jc(n.c.a,n),n.c=e,n.c&&W(n.c.a,n)}function Hr(n,e){n.i&&Jc(n.i.j,n),n.i=e,n.i&&W(n.i.j,n)}function mMn(n,e,t){this.a=e,this.c=n,this.b=(pe(t),new du(t))}function kMn(n,e,t){this.a=e,this.c=n,this.b=(pe(t),new du(t))}function yMn(n,e){this.a=n,this.c=Qr(this.a),this.b=new uC(e)}function fle(n){var e;return Ta(n),e=new hi,gt(n,new Vvn(e))}function tb(n,e){if(n<0||n>e)throw T(new mr(cnn+n+unn+e))}function eX(n,e){return lCn(n.a,e)?TW(n,u(e,22).g,null):null}function hle(n){return yF(),qn(),u(n.a,81).d.e!=0}function jMn(){jMn=N,azn=Fe((aj(),A(M(lzn,1),z,538,0,[fR])))}function EMn(){EMn=N,YQn=Eu(new li,(Qi(),Or),(rr(),Kk))}function tX(){tX=N,ZQn=Eu(new li,(Qi(),Or),(rr(),Kk))}function CMn(){CMn=N,eJn=Eu(new li,(Qi(),Or),(rr(),Kk))}function TMn(){TMn=N,gJn=Ze(new li,(Qi(),Or),(rr(),km))}function ns(){ns=N,mJn=Ze(new li,(Qi(),Or),(rr(),km))}function MMn(){MMn=N,kJn=Ze(new li,(Qi(),Or),(rr(),km))}function c$(){c$=N,TJn=Ze(new li,(Qi(),Or),(rr(),km))}function AMn(){AMn=N,lYn=Eu(new li,(c4(),Gm),(k6(),lK))}function aa(n,e,t,i){this.c=n,this.d=i,s$(this,e),o$(this,t)}function M2(n){this.c=new Tt,this.b=n.b,this.d=n.c,this.a=n.a}function u$(n){this.a=y.Math.cos(n),this.b=y.Math.sin(n)}function s$(n,e){n.a&&Jc(n.a.k,n),n.a=e,n.a&&W(n.a.k,n)}function o$(n,e){n.b&&Jc(n.b.f,n),n.b=e,n.b&&W(n.b.f,n)}function SMn(n,e){mhe(n,n.b,n.c),u(n.b.b,65),e&&u(e.b,65).b}function lle(n,e){vQ(n,e),I(n.Cb,88)&&yb(Ou(u(n.Cb,88)),2)}function f$(n,e){I(n.Cb,88)&&yb(Ou(u(n.Cb,88)),4),Ic(n,e)}function bC(n,e){I(n.Cb,179)&&(u(n.Cb,179).tb=null),Ic(n,e)}function mc(n,e){return er(),R$(e)?new IE(e,n):new i8(e,n)}function ale(n,e){var t,i;t=e.c,i=t!=null,i&&j2(n,new Z0(e.c))}function PMn(n){var e,t;return t=(Qp(),e=new ud,e),O3(t,n),t}function IMn(n){var e,t;return t=(Qp(),e=new ud,e),O3(t,n),t}function OMn(n,e){var t;return t=new Rs(n),e.c[e.c.length]=t,t}function DMn(n,e){var t;return t=u(ab(T2(n.a),e),14),t?t.gc():0}function $Mn(n){var e;return Ta(n),e=(Ow(),Ow(),Nin),qC(n,e)}function FMn(n){for(var e;;)if(e=n.Pb(),!n.Ob())return e}function iX(n,e){tie.call(this,new s2(sb(n))),rs(e,W_n),this.a=e}function uh(n,e,t){KDn(e,t,n.gc()),this.c=n,this.a=e,this.b=t-e}function xMn(n,e,t){var i;KDn(e,t,n.c.length),i=t-e,AG(n.c,e,i)}function dle(n,e){Dyn(n,ge(ui(cl(e,24),FM)),ge(ui(e,FM)))}function Ln(n,e){if(n<0||n>=e)throw T(new mr(cnn+n+unn+e))}function Te(n,e){if(n<0||n>=e)throw T(new wG(cnn+n+unn+e))}function xn(n,e){this.b=(_n(n),n),this.a=e&Ib?e:e|64|Bf}function LMn(n){dyn(this),Wmn(this.a,KV(y.Math.max(8,n))<<1)}function rf(n){return Gr(A(M(di,1),q,8,0,[n.i.n,n.n,n.a]))}function ble(){return lf(),A(M(Bu,1),z,132,0,[Win,ls,Rb])}function wle(){return _o(),A(M(_b,1),z,232,0,[Zr,Fc,nc])}function gle(){return Tu(),A(M(Qzn,1),z,461,0,[Vf,Ol,Co])}function ple(){return Yc(),A(M(Yzn,1),z,462,0,[Wo,Dl,To])}function vle(){return qd(),A(M(zrn,1),z,423,0,[yg,Grn,qR])}function mle(){return W5(),A(M(Krn,1),z,379,0,[NR,LR,BR])}function kle(){return i6(),A(M(Gsn,1),z,378,0,[J_,qsn,oP])}function yle(){return F2(),A(M(Kcn,1),z,314,0,[ap,qk,_cn])}function jle(){return VC(),A(M(qcn,1),z,337,0,[Hcn,DS,o_])}function Ele(){return ya(),A(M(aXn,1),z,450,0,[l_,cv,Tg])}function Cle(){return Kd(),A(M(YR,1),z,361,0,[g0,Fl,w0])}function Tle(){return Nh(),A(M(kXn,1),z,303,0,[zk,Ag,dp])}function Mle(){return q3(),A(M(y_,1),z,292,0,[m_,k_,Gk])}function Ale(){return ur(),A(M(zQn,1),z,452,0,[Bm,Su,xc])}function Sle(){return Rh(),A(M(Zsn,1),z,339,0,[Nl,Ysn,tK])}function Ple(){return oT(),A(M(ion,1),z,375,0,[eon,cK,ton])}function Ile(){return dT(),A(M(hon,1),z,377,0,[fK,pv,ew])}function Ole(){return Q3(),A(M(uon,1),z,336,0,[sK,con,Rm])}function Dle(){return uT(),A(M(fon,1),z,338,0,[oon,oK,son])}function $le(){return _d(),A(M(fJn,1),z,454,0,[ry,_m,aP])}function Fle(){return CT(),A(M(gYn,1),z,442,0,[CK,jK,EK])}function xle(){return f7(),A(M(Fon,1),z,380,0,[CP,Don,$on])}function Lle(){return ET(),A(M(Yon,1),z,381,0,[Jon,IK,Qon])}function Nle(){return sT(),A(M(Xon,1),z,293,0,[PK,Won,Uon])}function Ble(){return w7(),A(M(OK,1),z,437,0,[AP,SP,PP])}function Rle(){return _h(),A(M(Khn,1),z,334,0,[HP,F1,i9])}function _le(){return of(),A(M(Phn,1),z,272,0,[jv,cw,Ev])}function Kle(n,e){return o9e(n,e,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function Hle(n,e,t){var i;return i=O6(n,e,!1),i.b<=e&&i.a<=t}function NMn(n,e,t){var i;i=new Jwn,i.b=e,i.a=t,++e.b,W(n.d,i)}function qle(n,e){var t;return t=(_n(n),n).g,Yz(!!t),_n(e),t(e)}function rX(n,e){var t,i;return i=d3(n,e),t=n.a.Zc(i),new Y8n(n,t)}function Gle(n){return n.Db>>16!=6?null:u(Fx(n),235)}function zle(n){if(n.p!=2)throw T(new fu);return ge(n.f)&Ut}function Ule(n){if(n.p!=2)throw T(new fu);return ge(n.k)&Ut}function Wle(n){return n.a==(T3(),uI)&&Ste(n,C9e(n.g,n.b)),n.a}function A2(n){return n.d==(T3(),uI)&&Ite(n,pke(n.g,n.b)),n.d}function j(n){return ne(n.ai?1:0}function BMn(n,e){var t,i;return t=F$(e),i=t,u(te(n.c,i),19).a}function RMn(n,e){var t;for(t=n+"";t.length0&&n.a[--n.d]==0;);n.a[n.d++]==0&&(n.e=0)}function rAn(n){return n.a?n.e.length==0?n.a.a:n.a.a+(""+n.e):n.c}function rae(n){return!!n.a&&Du(n.a.a).i!=0&&!(n.b&&YF(n.b))}function cae(n){return!!n.u&&bc(n.u.a).i!=0&&!(n.n&&JF(n.n))}function cAn(n){return gD(n.e.Hd().gc()*n.c.Hd().gc(),16,new tvn(n))}function uae(n,e){return xCn(tu(n.q.getTime()),tu(e.q.getTime()))}function Lf(n){return u(af(n,F(GR,MN,17,n.c.length,0,1)),474)}function I8(n){return u(af(n,F(mh,E1,10,n.c.length,0,1)),193)}function sae(n){return ns(),!Xi(n)&&!(!Xi(n)&&n.c.i.c==n.d.i.c)}function uAn(n,e,t){var i;i=(pe(n),new du(n)),N3e(new mMn(i,e,t))}function O8(n,e,t){var i;i=(pe(n),new du(n)),B3e(new kMn(i,e,t))}function sAn(n,e){var t;return t=1-e,n.a[t]=eT(n.a[t],t),eT(n,e)}function oAn(n,e){var t;n.e=new oG,t=Cb(e),wi(t,n.c),eBn(n,t,0)}function Ti(n,e,t,i){var r;r=new XH,r.a=e,r.b=t,r.c=i,Ke(n.a,r)}function Z(n,e,t,i){var r;r=new XH,r.a=e,r.b=t,r.c=i,Ke(n.b,r)}function po(n){var e,t,i;return e=new HCn,t=Zx(e,n),UEe(e),i=t,i}function hX(){var n,e,t;return e=(t=(n=new ud,n),t),W(M1n,e),e}function pC(n){return n.j.c=F(Zn,rn,1,0,5,1),KW(n.c),Khe(n.a),n}function $w(n){return Qv(),I(n.g,10)?u(n.g,10):null}function oae(n){return Iw(n).dc()?!1:(sce(n,new Np),!0)}function fae(n){if(!("stack"in n))try{throw n}catch{}return n}function D8(n,e){if(n<0||n>=e)throw T(new mr(j6e(n,e)));return n}function fAn(n,e,t){if(n<0||et)throw T(new mr(W5e(n,e,t)))}function d$(n,e){if(ci(n.a,e),e.d)throw T(new _r(wKn));e.d=n}function b$(n,e){if(e.$modCount!=n.$modCount)throw T(new vs)}function hAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function lAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function aAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function hae(n,e){return n.a<=n.b?(e.ud(n.a++),!0):!1}function $d(n){var e;return Fr(n)?(e=n,e==-0?0:e):m0e(n)}function vC(n){var e;return fl(n),e=new fln,vw(n.a,new Wvn(e)),e}function dAn(n){var e;return fl(n),e=new oln,vw(n.a,new Uvn(e)),e}function Pi(n,e){this.a=n,$v.call(this,n),tb(e,n.gc()),this.b=e}function lX(n){this.e=n,this.b=this.e.a.entries(),this.a=new Array}function lae(n){return gD(n.e.Hd().gc()*n.c.Hd().gc(),273,new evn(n))}function mC(n){return new Pc((rs(n,AL),KC(qi(qi(5,n),n/10|0))))}function bAn(n){return u(af(n,F(FWn,UKn,11,n.c.length,0,1)),1943)}function aae(n,e,t){return t.f.c.length>0?SW(n.a,e,t):SW(n.b,e,t)}function dae(n,e,t){n.d&&Jc(n.d.e,n),n.d=e,n.d&&Q0(n.d.e,t,n)}function w$(n,e){uTe(e,n),WU(n.d),WU(u(k(n,(nn(),eP)),207))}function H5(n,e){cTe(e,n),UU(n.d),UU(u(k(n,(nn(),eP)),207))}function Fd(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=t.fe()),i}function j3(n,e){var t,i;return t=ub(n,e),i=null,t&&(i=t.ie()),i}function q5(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=t.ie()),i}function $h(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=tY(t)),i}function bae(n,e,t){var i;return i=i4(t),gM(n.g,i,e),gM(n.i,e,t),e}function wae(n,e,t){var i;i=q2e();try{return kue(n,e,t)}finally{Mae(i)}}function wAn(n){var e;e=n.Wg(),this.a=I(e,69)?u(e,69).Zh():e.Kc()}function li(){P9n.call(this),this.j.c=F(Zn,rn,1,0,5,1),this.a=-1}function aX(n,e,t,i){this.d=n,this.n=e,this.g=t,this.o=i,this.p=-1}function gAn(n,e,t,i){this.e=i,this.d=null,this.c=n,this.a=e,this.b=t}function dX(n,e,t){this.d=new r6n(this),this.e=n,this.i=e,this.f=t}function kC(){kC=N,j_=new QG(I4,0),oun=new QG("TOP_LEFT",1)}function pAn(){pAn=N,aon=aTn(Q(1),Q(4)),lon=aTn(Q(1),Q(2))}function vAn(){vAn=N,uZn=Fe((Ij(),A(M(cZn,1),z,551,0,[$K])))}function mAn(){mAn=N,rZn=Fe((Pj(),A(M(lfn,1),z,482,0,[DK])))}function kAn(){kAn=N,CZn=Fe((Jv(),A(M(Dfn,1),z,530,0,[hy])))}function yAn(){yAn=N,IUn=Fe((Aj(),A(M(krn,1),z,481,0,[SR])))}function gae(){return Hd(),A(M(EUn,1),z,406,0,[Ok,Ik,MR,AR])}function pae(){return FC(),A(M(WA,1),z,297,0,[vR,qin,Gin,zin])}function vae(){return d6(),A(M(SUn,1),z,394,0,[Lk,YA,ZA,Nk])}function mae(){return K2(),A(M(TUn,1),z,323,0,[$k,Dk,Fk,xk])}function kae(){return G3(),A(M(jWn,1),z,405,0,[b0,Hb,Kb,kg])}function yae(){return aT(),A(M(KWn,1),z,360,0,[QR,TS,MS,Hk])}function jAn(n,e,t,i){return I(t,54)?new ojn(n,e,t,i):new pW(n,e,t,i)}function jae(){return hf(),A(M(QWn,1),z,411,0,[lp,nv,ev,JR])}function Eae(n){var e;return n.j==(J(),ae)&&(e=GLn(n),au(e,Vn))}function Cae(n,e){var t;t=e.a,Hi(t,e.c.d),Ci(t,e.d.d),fb(t.a,n.n)}function EAn(n,e){return u(yd(KE(u(ct(n.k,e),15).Oc(),jg)),113)}function CAn(n,e){return u(yd(HE(u(ct(n.k,e),15).Oc(),jg)),113)}function Tae(n){return new xn(jbe(u(n.a.dd(),14).gc(),n.a.cd()),16)}function E3(n){return I(n,14)?u(n,14).dc():!n.Kc().Ob()}function S2(n){return Qv(),I(n.g,145)?u(n.g,145):null}function TAn(n){if(n.e.g!=n.b)throw T(new vs);return!!n.c&&n.d>0}function Re(n){return ne(n.b!=n.d.c),n.c=n.b,n.b=n.b.a,++n.a,n.c.c}function bX(n,e){_n(e),St(n.a,n.c,e),n.c=n.c+1&n.a.length-1,MFn(n)}function ll(n,e){_n(e),n.b=n.b-1&n.a.length-1,St(n.a,n.b,e),MFn(n)}function MAn(n,e){var t;for(t=n.j.c.length;t0&&gc(n.g,0,e,0,n.i),e}function IAn(n,e){$j();var t;return t=u(te(eI,n),55),!t||t.wj(e)}function Bae(n){if(n.p!=1)throw T(new fu);return ge(n.f)<<24>>24}function Rae(n){if(n.p!=1)throw T(new fu);return ge(n.k)<<24>>24}function _ae(n){if(n.p!=7)throw T(new fu);return ge(n.k)<<16>>16}function Kae(n){if(n.p!=7)throw T(new fu);return ge(n.f)<<16>>16}function Fh(n){var e;for(e=0;n.Ob();)n.Pb(),e=qi(e,1);return KC(e)}function OAn(n,e){var t;return t=new R0,n.xd(t),t.a+="..",e.yd(t),t.a}function Hae(n,e,t){var i;i=u(te(n.g,t),57),W(n.a.c,new Si(e,i))}function qae(n,e,t){return TD(Y(Vr(Sr(n.f,e))),Y(Vr(Sr(n.f,t))))}function yC(n,e,t){return vM(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function Gae(n,e,t){return m4(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function zae(n,e,t){return b9e(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function pX(n,e){return n==(Qn(),ii)&&e==ii?4:n==ii||e==ii?8:32}function DAn(n,e){return B(e)===B(n)?"(this Map)":e==null?ru:Nr(e)}function Uae(n,e){return u(e==null?Vr(Sr(n.f,null)):n5(n.g,e),281)}function $An(n,e,t){var i;return i=i4(t),it(n.b,i,e),it(n.c,e,t),e}function FAn(n,e){var t;for(t=e;t;)U0(n,t.i,t.j),t=Pt(t);return n}function vX(n,e){var t;return t=C8(f3(new x$(n,e))),DE(new x$(n,e)),t}function sh(n,e){er();var t;return t=u(n,66).Mj(),M5e(t,e),t.Ok(e)}function Wae(n,e,t,i,r){var c;c=m9e(r,t,i),W(e,p6e(r,c)),o5e(n,r,e)}function xAn(n,e,t){n.i=0,n.e=0,e!=t&&(uDn(n,e,t),cDn(n,e,t))}function mX(n,e){var t;t=n.q.getHours(),n.q.setFullYear(e+Tl),S6(n,t)}function Xae(n,e,t){if(t){var i=t.ee();n.a[e]=i(t)}else delete n.a[e]}function g$(n,e,t){if(t){var i=t.ee();t=i(t)}else t=void 0;n.a[e]=t}function LAn(n){if(n<0)throw T(new K9n("Negative array size: "+n))}function bc(n){return n.n||(Ou(n),n.n=new wCn(n,ar,n),Ar(n)),n.n}function G5(n){return ne(n.a=0&&n.a[t]===e[t];t--);return t<0}function KAn(n,e){V3();var t;return t=n.j.g-e.j.g,t!=0?t:0}function HAn(n,e){return _n(e),n.a!=null?$fe(e.Kb(n.a)):UA}function jC(n){var e;return n?new iW(n):(e=new Sh,nF(e,n),e)}function ts(n,e){var t;return e.b.Kb(FPn(n,e.c.Ee(),(t=new Jvn(e),t)))}function EC(n){_J(),Dyn(this,ge(ui(cl(n,24),FM)),ge(ui(n,FM)))}function qAn(){qAn=N,Gzn=Fe(($T(),A(M(Jin,1),z,428,0,[yR,Qin])))}function GAn(){GAn=N,zzn=Fe((RC(),A(M(Zin,1),z,427,0,[Yin,jR])))}function zAn(){zAn=N,WUn=Fe((_C(),A(M(Arn,1),z,424,0,[$R,tS])))}function UAn(){UAn=N,BWn=Fe((B3(),A(M(NWn,1),z,511,0,[_k,UR])))}function WAn(){WAn=N,lXn=Fe((V8(),A(M(Wcn,1),z,419,0,[$S,Ucn])))}function XAn(){XAn=N,wXn=Fe((K8(),A(M(Qcn,1),z,479,0,[Vcn,xS])))}function VAn(){VAn=N,XQn=Fe((x8(),A(M(ron,1),z,376,0,[uK,iy])))}function QAn(){QAn=N,GQn=Fe((z8(),A(M(non,1),z,421,0,[iK,rK])))}function JAn(){JAn=N,sXn=Fe((OC(),A(M(Rcn,1),z,422,0,[Bcn,s_])))}function YAn(){YAn=N,jXn=Fe((kC(),A(M(fun,1),z,420,0,[j_,oun])))}function ZAn(){ZAn=N,RJn=Fe((No(),A(M(BJn,1),z,520,0,[tw,Bl])))}function nSn(){nSn=N,wJn=Fe((z5(),A(M(bJn,1),z,523,0,[Hm,Km])))}function eSn(){eSn=N,jJn=Fe((xf(),A(M(yJn,1),z,516,0,[M0,I1])))}function tSn(){tSn=N,CJn=Fe((tf(),A(M(EJn,1),z,515,0,[Ja,yf])))}function iSn(){iSn=N,UJn=Fe((Id(),A(M(zJn,1),z,455,0,[Rl,Lg])))}function rSn(){rSn=N,hYn=Fe((gC(),A(M(Son,1),z,425,0,[yK,Aon])))}function cSn(){cSn=N,wYn=Fe((iT(),A(M(Pon,1),z,495,0,[EP,mv])))}function uSn(){uSn=N,fYn=Fe((aC(),A(M(Mon,1),z,480,0,[kK,Ton])))}function sSn(){sSn=N,vYn=Fe(($C(),A(M(Oon,1),z,426,0,[Ion,TK])))}function oSn(){oSn=N,TZn=Fe((c7(),A(M(Ffn,1),z,429,0,[DP,$fn])))}function fSn(){fSn=N,sZn=Fe((L8(),A(M(afn,1),z,430,0,[FK,IP])))}function z5(){z5=N,Hm=new ZG("UPPER",0),Km=new ZG("LOWER",1)}function Yae(n,e){var t;t=new r2,la(t,"x",e.a),la(t,"y",e.b),j2(n,t)}function Zae(n,e){var t;t=new r2,la(t,"x",e.a),la(t,"y",e.b),j2(n,t)}function nde(n,e){var t,i;i=!1;do t=JOn(n,e),i=i|t;while(t);return i}function jX(n,e){var t,i;for(t=e,i=0;t>0;)i+=n.a[t],t-=t&-t;return i}function hSn(n,e){var t;for(t=e;t;)U0(n,-t.i,-t.j),t=Pt(t);return n}function $i(n,e){var t,i;for(_n(e),i=n.Kc();i.Ob();)t=i.Pb(),e.td(t)}function lSn(n,e){var t;return t=e.cd(),new bd(t,n.e.pc(t,u(e.dd(),14)))}function Kt(n,e,t,i){var r;r=new aI,r.c=e,r.b=t,r.a=i,i.b=t.a=r,++n.b}function Es(n,e,t){var i;return i=(Ln(e,n.c.length),n.c[e]),n.c[e]=t,i}function ede(n,e,t){return u(e==null?_c(n.f,null,t):Gd(n.g,e,t),281)}function k$(n){return n.c&&n.d?cX(n.c)+"->"+cX(n.d):"e_"+md(n)}function C3(n,e){return(Ta(n),Wv(new $n(n,new UX(e,n.a)))).sd(V4)}function tde(){return Qi(),A(M(Hrn,1),z,356,0,[Qf,$l,Hc,Cc,Or])}function ide(){return J(),A(M(Zi,1),hc,61,0,[Xr,Kn,Vn,ae,Gn])}function rde(n){return gj(),function(){return wae(n,this,arguments)}}function cde(){return Date.now?Date.now():new Date().getTime()}function Xi(n){return!n.c||!n.d?!1:!!n.c.i&&n.c.i==n.d.i}function aSn(n){if(!n.c.Sb())throw T(new ic);return n.a=!0,n.c.Ub()}function $8(n){n.i=0,z9(n.b,null),z9(n.c,null),n.a=null,n.e=null,++n.g}function EX(n){are.call(this,n==null?ru:Nr(n),I(n,78)?u(n,78):null)}function dSn(n){B_n(),Nmn(this),this.a=new Tt,QV(this,n),Ke(this.a,n)}function bSn(){RO(this),this.b=new fn(Ft,Ft),this.a=new fn(Qt,Qt)}function wSn(n,e){this.c=0,this.b=e,qkn.call(this,n,17493),this.a=this.c}function y$(n){CC(),!vf&&(this.c=n,this.e=!0,this.a=new X)}function CC(){CC=N,vf=!0,Fzn=!1,xzn=!1,Nzn=!1,Lzn=!1}function CX(n,e){return I(e,149)?Mn(n.c,u(e,149).c):!1}function TX(n,e){var t;return t=0,n&&(t+=n.f.a/2),e&&(t+=e.f.a/2),t}function j$(n,e){var t;return t=u(xd(n.d,e),23),t||u(xd(n.e,e),23)}function gSn(n){this.b=n,ie.call(this,n),this.a=u(Rn(this.b.a,4),126)}function pSn(n){this.b=n,w2.call(this,n),this.a=u(Rn(this.b.a,4),126)}function Ou(n){return n.t||(n.t=new Amn(n),s6(new _9n(n),0,n.t)),n.t}function ude(){return sr(),A(M(e9,1),z,103,0,[kh,Ao,Zs,Jh,Yh])}function sde(){return qw(),A(M(c9,1),z,249,0,[Hl,Cy,Hhn,r9,qhn])}function ode(){return Ho(),A(M($1,1),z,175,0,[Xn,vi,Zf,Ya,D1])}function fde(){return P7(),A(M(gfn,1),z,316,0,[dfn,xK,wfn,LK,bfn])}function hde(){return b6(),A(M(Usn,1),z,315,0,[zsn,nK,eK,Lm,Nm])}function lde(){return Pa(),A(M(zcn,1),z,335,0,[f_,Gcn,h_,Em,jm])}function ade(){return g4(),A(M(eZn,1),z,355,0,[Ng,Ep,Qm,Vm,Jm])}function dde(){return Vw(),A(M(YWn,1),z,363,0,[SS,IS,OS,PS,AS])}function bde(){return Ss(),A(M(jun,1),z,163,0,[Qk,Sm,xl,Pm,Ub])}function T3(){T3=N;var n,e;cI=(Qp(),e=new fj,e),uI=(n=new BI,n)}function vSn(n){var e;return n.c||(e=n.r,I(e,88)&&(n.c=u(e,26))),n.c}function wde(n){return n.e=3,n.d=n.Yb(),n.e!=2?(n.e=0,!0):!1}function E$(n){var e,t,i;return e=n&Nu,t=n>>22&Nu,i=n<0?Wh:0,Bc(e,t,i)}function gde(n){var e,t,i,r;for(t=n,i=0,r=t.length;i0?g$n(n,e):BNn(n,-e)}function MX(n,e){return e==0||n.e==0?n:e>0?BNn(n,e):g$n(n,-e)}function ve(n){if(Se(n))return n.c=n.a,n.a.Pb();throw T(new ic)}function kSn(n){var e,t;return e=n.c.i,t=n.d.i,e.k==(Qn(),Xt)&&t.k==Xt}function C$(n){var e;return e=new Pd,Pr(e,n),H(e,(nn(),Mr),null),e}function T$(n,e,t){var i;return i=n.Yg(e),i>=0?n._g(i,t,!0):Yd(n,e,t)}function AX(n,e,t,i){var r;for(r=0;re)throw T(new mr(fY(n,e,"index")));return n}function M$(n,e,t,i){var r;return r=F(be,Le,25,e,15,1),Pve(r,n,e,t,i),r}function vde(n,e){var t;t=n.q.getHours()+(e/60|0),n.q.setMinutes(e),S6(n,t)}function mde(n,e){return y.Math.min(al(e.a,n.d.d.c),al(e.b,n.d.d.c))}function O2(n,e){return ki(e)?e==null?MY(n.f,null):$On(n.g,e):MY(n.f,e)}function sf(n){this.c=n,this.a=new E(this.c.a),this.b=new E(this.c.b)}function TC(){this.e=new X,this.c=new X,this.d=new X,this.b=new X}function TSn(){this.g=new zq,this.b=new zq,this.a=new X,this.k=new X}function MSn(n,e,t){this.a=n,this.c=e,this.d=t,W(e.e,this),W(t.b,this)}function ASn(n,e){Hkn.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function SSn(n,e){qkn.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function FX(n,e){FO.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function MC(n,e,t){this.a=n,this.b=e,this.c=t,W(n.t,this),W(e.i,this)}function AC(){this.b=new Tt,this.a=new Tt,this.b=new Tt,this.a=new Tt}function SC(){SC=N,Ym=new kt("org.eclipse.elk.labels.labelManager")}function PSn(){PSn=N,$cn=new ri("separateLayerConnections",(aT(),QR))}function No(){No=N,tw=new tz("REGULAR",0),Bl=new tz("CRITICAL",1)}function x8(){x8=N,uK=new YG("STACKED",0),iy=new YG("SEQUENCED",1)}function L8(){L8=N,FK=new oz("FIXED",0),IP=new oz("CENTER_NODE",1)}function kde(n,e){var t;return t=CEe(n,e),n.b=new tT(t.c.length),Lje(n,t)}function yde(n,e,t){var i;return++n.e,--n.f,i=u(n.d[e].$c(t),133),i.dd()}function ISn(n){var e;return n.a||(e=n.r,I(e,148)&&(n.a=u(e,148))),n.a}function xX(n){if(n.a){if(n.e)return xX(n.e)}else return n;return null}function jde(n,e){return n.pe.p?-1:0}function PC(n,e){return _n(e),n.c=0,"Initial capacity must not be negative")}function $Sn(){$Sn=N,Vzn=Fe((_o(),A(M(_b,1),z,232,0,[Zr,Fc,nc])))}function FSn(){FSn=N,Jzn=Fe((Tu(),A(M(Qzn,1),z,461,0,[Vf,Ol,Co])))}function xSn(){xSn=N,Zzn=Fe((Yc(),A(M(Yzn,1),z,462,0,[Wo,Dl,To])))}function LSn(){LSn=N,Bzn=Fe((lf(),A(M(Bu,1),z,132,0,[Win,ls,Rb])))}function NSn(){NSn=N,bWn=Fe((W5(),A(M(Krn,1),z,379,0,[NR,LR,BR])))}function BSn(){BSn=N,PWn=Fe((qd(),A(M(zrn,1),z,423,0,[yg,Grn,qR])))}function RSn(){RSn=N,oXn=Fe((F2(),A(M(Kcn,1),z,314,0,[ap,qk,_cn])))}function _Sn(){_Sn=N,fXn=Fe((VC(),A(M(qcn,1),z,337,0,[Hcn,DS,o_])))}function KSn(){KSn=N,dXn=Fe((ya(),A(M(aXn,1),z,450,0,[l_,cv,Tg])))}function HSn(){HSn=N,rXn=Fe((Kd(),A(M(YR,1),z,361,0,[g0,Fl,w0])))}function qSn(){qSn=N,yXn=Fe((Nh(),A(M(kXn,1),z,303,0,[zk,Ag,dp])))}function GSn(){GSn=N,mXn=Fe((q3(),A(M(y_,1),z,292,0,[m_,k_,Gk])))}function zSn(){zSn=N,RQn=Fe((i6(),A(M(Gsn,1),z,378,0,[J_,qsn,oP])))}function USn(){USn=N,WQn=Fe((oT(),A(M(ion,1),z,375,0,[eon,cK,ton])))}function WSn(){WSn=N,qQn=Fe((Rh(),A(M(Zsn,1),z,339,0,[Nl,Ysn,tK])))}function XSn(){XSn=N,UQn=Fe((ur(),A(M(zQn,1),z,452,0,[Bm,Su,xc])))}function VSn(){VSn=N,JQn=Fe((dT(),A(M(hon,1),z,377,0,[fK,pv,ew])))}function QSn(){QSn=N,VQn=Fe((Q3(),A(M(uon,1),z,336,0,[sK,con,Rm])))}function JSn(){JSn=N,QQn=Fe((uT(),A(M(fon,1),z,338,0,[oon,oK,son])))}function YSn(){YSn=N,hJn=Fe((_d(),A(M(fJn,1),z,454,0,[ry,_m,aP])))}function ZSn(){ZSn=N,pYn=Fe((CT(),A(M(gYn,1),z,442,0,[CK,jK,EK])))}function nPn(){nPn=N,mYn=Fe((f7(),A(M(Fon,1),z,380,0,[CP,Don,$on])))}function ePn(){ePn=N,LYn=Fe((ET(),A(M(Yon,1),z,381,0,[Jon,IK,Qon])))}function tPn(){tPn=N,xYn=Fe((sT(),A(M(Xon,1),z,293,0,[PK,Won,Uon])))}function iPn(){iPn=N,iZn=Fe((w7(),A(M(OK,1),z,437,0,[AP,SP,PP])))}function rPn(){rPn=N,une=Fe((_h(),A(M(Khn,1),z,334,0,[HP,F1,i9])))}function cPn(){cPn=N,tne=Fe((of(),A(M(Phn,1),z,272,0,[jv,cw,Ev])))}function Pde(){return Mi(),A(M(Ghn,1),z,98,0,[ql,Ef,Tv,td,Eh,Ac])}function wa(n,e){return!n.o&&(n.o=new Xu((Dc(),Ul),S0,n,0)),NF(n.o,e)}function Ide(n){return!n.g&&(n.g=new Qy),!n.g.d&&(n.g.d=new Cmn(n)),n.g.d}function Ode(n){return!n.g&&(n.g=new Qy),!n.g.a&&(n.g.a=new Tmn(n)),n.g.a}function Dde(n){return!n.g&&(n.g=new Qy),!n.g.b&&(n.g.b=new Emn(n)),n.g.b}function N8(n){return!n.g&&(n.g=new Qy),!n.g.c&&(n.g.c=new Mmn(n)),n.g.c}function $de(n,e,t){var i,r;for(r=new H3(e,n),i=0;it||e=0?n._g(t,!0,!0):Yd(n,e,!0)}function Qde(n,e){return ni(K(Y(k(n,(G(),k0)))),K(Y(k(e,k0))))}function aPn(){aPn=N,aYn=Xd(Xd(Dj(new li,(c4(),qm)),(k6(),pP)),aK)}function Jde(n,e,t){var i;return i=tDn(n,e,t),n.b=new tT(i.c.length),JY(n,i)}function Yde(n){if(n.b<=0)throw T(new ic);return--n.b,n.a-=n.c.c,Q(n.a)}function Zde(n){var e;if(!n.a)throw T(new gTn);return e=n.a,n.a=Pt(n.a),e}function n0e(n){for(;!n.a;)if(!nEn(n.c,new Xvn(n)))return!1;return!0}function $2(n){var e;return pe(n),I(n,198)?(e=u(n,198),e):new dvn(n)}function e0e(n){DC(),u(n.We((Xe(),rw)),174).Fc((Mu(),Ty)),n.Ye(eH,null)}function DC(){DC=N,SZn=new n2n,IZn=new e2n,PZn=Rwe((Xe(),eH),SZn,_l,IZn)}function $C(){$C=N,Ion=new sz("LEAF_NUMBER",0),TK=new sz("NODE_SIZE",1)}function t0e(n,e,t){n.a=e,n.c=t,n.b.a.$b(),_s(n.d),n.e.a.c=F(Zn,rn,1,0,5,1)}function $$(n){n.a=F(be,Le,25,n.b+1,15,1),n.c=F(be,Le,25,n.b,15,1),n.d=0}function i0e(n,e){n.a.ue(e.d,n.b)>0&&(W(n.c,new QU(e.c,e.d,n.d)),n.b=e.d)}function zX(n,e){if(n.g==null||e>=n.i)throw T(new xO(e,n.i));return n.g[e]}function dPn(n,e,t){if(W3(n,t),t!=null&&!n.wj(t))throw T(new xI);return t}function bPn(n){var e;if(n.Ek())for(e=n.i-1;e>=0;--e)D(n,e);return gX(n)}function r0e(n){var e,t;if(!n.b)return null;for(t=n.b;e=t.a[0];)t=e;return t}function c0e(n,e){var t,i;return LAn(e),t=(i=n.slice(0,e),WX(i,n)),t.length=e,t}function S3(n,e,t,i){var r;i=(Ow(),i||Lin),r=n.slice(e,t),hY(r,n,e,t,-e,i)}function Cs(n,e,t,i,r){return e<0?Yd(n,t,i):u(t,66).Nj().Pj(n,n.yh(),e,i,r)}function u0e(n){return I(n,172)?""+u(n,172).a:n==null?null:Nr(n)}function s0e(n){return I(n,172)?""+u(n,172).a:n==null?null:Nr(n)}function wPn(n,e){if(e.a)throw T(new _r(wKn));ci(n.a,e),e.a=n,!n.j&&(n.j=e)}function UX(n,e){FO.call(this,e.rd(),e.qd()&-16449),_n(n),this.a=n,this.c=e}function gPn(n,e){var t,i;return i=e/n.c.Hd().gc()|0,t=e%n.c.Hd().gc(),D2(n,i,t)}function Tu(){Tu=N,Vf=new oO(Y2,0),Ol=new oO(I4,1),Co=new oO(Z2,2)}function FC(){FC=N,vR=new Lj("All",0),qin=new lyn,Gin=new Eyn,zin=new ayn}function pPn(){pPn=N,Dzn=Fe((FC(),A(M(WA,1),z,297,0,[vR,qin,Gin,zin])))}function vPn(){vPn=N,EWn=Fe((G3(),A(M(jWn,1),z,405,0,[b0,Hb,Kb,kg])))}function mPn(){mPn=N,CUn=Fe((Hd(),A(M(EUn,1),z,406,0,[Ok,Ik,MR,AR])))}function kPn(){kPn=N,MUn=Fe((K2(),A(M(TUn,1),z,323,0,[$k,Dk,Fk,xk])))}function yPn(){yPn=N,PUn=Fe((d6(),A(M(SUn,1),z,394,0,[Lk,YA,ZA,Nk])))}function jPn(){jPn=N,WJn=Fe((c4(),A(M(won,1),z,393,0,[gP,qm,uy,Gm])))}function EPn(){EPn=N,HWn=Fe((aT(),A(M(KWn,1),z,360,0,[QR,TS,MS,Hk])))}function CPn(){CPn=N,FYn=Fe((qT(),A(M(zon,1),z,340,0,[SK,qon,Gon,Hon])))}function TPn(){TPn=N,JWn=Fe((hf(),A(M(QWn,1),z,411,0,[lp,nv,ev,JR])))}function MPn(){MPn=N,_Qn=Fe((wb(),A(M(Z_,1),z,197,0,[fP,Y_,xg,Fg])))}function APn(){APn=N,Ene=Fe((Vu(),A(M(jne,1),z,396,0,[gs,Yhn,Jhn,Zhn])))}function SPn(){SPn=N,one=Fe((us(),A(M(sne,1),z,285,0,[Ey,yh,Kl,jy])))}function PPn(){PPn=N,ine=Fe((Hh(),A(M(cH,1),z,218,0,[rH,yy,Cv,Sp])))}function IPn(){IPn=N,kne=Fe((AT(),A(M(Qhn,1),z,311,0,[oH,Whn,Vhn,Xhn])))}function OPn(){OPn=N,vne=Fe((Qu(),A(M(o9,1),z,374,0,[Ay,id,My,uw])))}function DPn(){DPn=N,mM(),F1n=Ft,Tee=Qt,x1n=new S9(Ft),Mee=new S9(Qt)}function K8(){K8=N,Vcn=new VG(Xh,0),xS=new VG("IMPROVE_STRAIGHTNESS",1)}function o0e(n,e){return h3(),W(n,new Si(e,Q(e.e.c.length+e.g.c.length)))}function f0e(n,e){return h3(),W(n,new Si(e,Q(e.e.c.length+e.g.c.length)))}function WX(n,e){return U8(e)!=10&&A($u(e),e.hm,e.__elementTypeId$,U8(e),n),n}function Jc(n,e){var t;return t=xr(n,e,0),t==-1?!1:(h1(n,t),!0)}function $Pn(n,e){var t;return t=u(O2(n.e,e),387),t?(ZU(t),t.e):null}function P3(n){var e;return Fr(n)&&(e=0-n,!isNaN(e))?e:bl(z3(n))}function xr(n,e,t){for(;t=0?BT(n,t,!0,!0):Yd(n,e,!0)}function YX(n,e){Qv();var t,i;return t=S2(n),i=S2(e),!!t&&!!i&&!V$n(t.k,i.k)}function a0e(n,e){nu(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function d0e(n,e){eu(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function b0e(n,e){Rd(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function w0e(n,e){Bd(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function BPn(n){(this.q?this.q:(Pn(),Pn(),vh)).Ac(n.q?n.q:(Pn(),Pn(),vh))}function g0e(n,e){return I(e,99)&&u(e,18).Bb&Yi?new LO(e,n):new H3(e,n)}function p0e(n,e){return I(e,99)&&u(e,18).Bb&Yi?new LO(e,n):new H3(e,n)}function RPn(n,e){vrn=new Wy,AUn=e,gm=n,u(gm.b,65),BX(gm,vrn,null),DRn(gm)}function B$(n,e,t){var i;return i=n.g[e],k5(n,e,n.oi(e,t)),n.gi(e,t,i),n.ci(),i}function BC(n,e){var t;return t=n.Xc(e),t>=0?(n.$c(t),!0):!1}function R$(n){var e;return n.d!=n.r&&(e=qs(n),n.e=!!e&&e.Cj()==kGn,n.d=e),n.e}function _$(n,e){var t;for(pe(n),pe(e),t=!1;e.Ob();)t=t|n.Fc(e.Pb());return t}function xd(n,e){var t;return t=u(te(n.e,e),387),t?(Oyn(n,t),t.e):null}function _Pn(n){var e,t;return e=n/60|0,t=n%60,t==0?""+e:""+e+":"+(""+t)}function qr(n,e){var t,i;return Ta(n),i=new FX(e,n.a),t=new iEn(i),new $n(n,t)}function ub(n,e){var t=n.a[e],i=(cF(),dR)[typeof t];return i?i(t):tQ(typeof t)}function v0e(n){switch(n.g){case 0:return nt;case 1:return-1;default:return 0}}function m0e(n){return mJ(n,(I3(),pin))<0?-xce(z3(n)):n.l+n.m*J2+n.h*$a}function U8(n){return n.__elementTypeCategory$==null?10:n.__elementTypeCategory$}function K$(n){var e;return e=n.b.c.length==0?null:un(n.b,0),e!=null&&J$(n,0),e}function KPn(n,e){for(;e[0]=0;)++e[0]}function W8(n,e){this.e=e,this.a=FOn(n),this.a<54?this.f=$d(n):this.c=m7(n)}function HPn(n,e,t,i){Je(),cd.call(this,26),this.c=n,this.a=e,this.d=t,this.b=i}function oh(n,e,t){var i,r;for(i=10,r=0;rn.a[i]&&(i=t);return i}function T0e(n,e){var t;return t=zd(n.e.c,e.e.c),t==0?ni(n.e.d,e.e.d):t}function Fw(n,e){return e.e==0||n.e==0?W4:(a4(),Hx(n,e))}function M0e(n,e){if(!n)throw T(new Hn(P8e("Enum constant undefined: %s",e)))}function X5(){X5=N,MWn=new San,AWn=new Man,CWn=new $an,TWn=new Fan,SWn=new xan}function RC(){RC=N,Yin=new qG("BY_SIZE",0),jR=new qG("BY_SIZE_AND_SHAPE",1)}function _C(){_C=N,$R=new GG("EADES",0),tS=new GG("FRUCHTERMAN_REINGOLD",1)}function V8(){V8=N,$S=new XG("READING_DIRECTION",0),Ucn=new XG("ROTATION",1)}function GPn(){GPn=N,hXn=Fe((Pa(),A(M(zcn,1),z,335,0,[f_,Gcn,h_,Em,jm])))}function zPn(){zPn=N,KQn=Fe((b6(),A(M(Usn,1),z,315,0,[zsn,nK,eK,Lm,Nm])))}function UPn(){UPn=N,ZWn=Fe((Vw(),A(M(YWn,1),z,363,0,[SS,IS,OS,PS,AS])))}function WPn(){WPn=N,EXn=Fe((Ss(),A(M(jun,1),z,163,0,[Qk,Sm,xl,Pm,Ub])))}function XPn(){XPn=N,oZn=Fe((P7(),A(M(gfn,1),z,316,0,[dfn,xK,wfn,LK,bfn])))}function VPn(){VPn=N,OZn=Fe((Ho(),A(M($1,1),z,175,0,[Xn,vi,Zf,Ya,D1])))}function QPn(){QPn=N,tZn=Fe((g4(),A(M(eZn,1),z,355,0,[Ng,Ep,Qm,Vm,Jm])))}function JPn(){JPn=N,vWn=Fe((Qi(),A(M(Hrn,1),z,356,0,[Qf,$l,Hc,Cc,Or])))}function YPn(){YPn=N,ene=Fe((sr(),A(M(e9,1),z,103,0,[kh,Ao,Zs,Jh,Yh])))}function ZPn(){ZPn=N,hne=Fe((qw(),A(M(c9,1),z,249,0,[Hl,Cy,Hhn,r9,qhn])))}function nIn(){nIn=N,dne=Fe((J(),A(M(Zi,1),hc,61,0,[Xr,Kn,Vn,ae,Gn])))}function H$(n,e){var t;return t=u(te(n.a,e),134),t||(t=new pI,it(n.a,e,t)),t}function eIn(n){var e;return e=u(k(n,(G(),p0)),305),e?e.a==n:!1}function tIn(n){var e;return e=u(k(n,(G(),p0)),305),e?e.i==n:!1}function iIn(n,e){return _n(e),mW(n),n.d.Ob()?(e.td(n.d.Pb()),!0):!1}function KC(n){return fc(n,nt)>0?nt:fc(n,Bi)<0?Bi:ge(n)}function sb(n){return n<3?(rs(n,J_n),n+1):n=0&&e=-.01&&n.a<=wf&&(n.a=0),n.b>=-.01&&n.b<=wf&&(n.b=0),n}function cIn(n,e){return e==(sD(),sD(),Pzn)?n.toLocaleLowerCase():n.toLowerCase()}function nV(n){return(n.i&2?"interface ":n.i&1?"":"class ")+(Ph(n),n.o)}function Cr(n){var e,t;t=(e=new RI,e),me((!n.q&&(n.q=new V(co,n,11,10)),n.q),t)}function A0e(n,e){var t;return t=e>0?e-1:e,e8n(Kie(IIn(YU(new zp,t),n.n),n.j),n.k)}function S0e(n,e,t,i){var r;n.j=-1,EY(n,iY(n,e,t),(er(),r=u(e,66).Mj(),r.Ok(i)))}function uIn(n){this.g=n,this.f=new X,this.a=y.Math.min(this.g.c.c,this.g.d.c)}function sIn(n){this.b=new X,this.a=new X,this.c=new X,this.d=new X,this.e=n}function oIn(n,e){this.a=new we,this.e=new we,this.b=(i6(),oP),this.c=n,this.b=e}function fIn(n,e,t){kE.call(this),eV(this),this.a=n,this.c=t,this.b=e.d,this.f=e.e}function hIn(n){this.d=n,this.c=n.c.vc().Kc(),this.b=null,this.a=null,this.e=(aj(),fR)}function Ld(n){if(n<0)throw T(new Hn("Illegal Capacity: "+n));this.g=this.ri(n)}function P0e(n,e){if(0>n||n>e)throw T(new bG("fromIndex: 0, toIndex: "+n+tnn+e))}function I0e(n){var e;if(n.a==n.b.a)throw T(new ic);return e=n.a,n.c=e,n.a=n.a.e,e}function HC(n){var e;z0(!!n.c),e=n.c.a,Ts(n.d,n.c),n.b==n.c?n.b=e:--n.a,n.c=null}function qC(n,e){var t;return Ta(n),t=new DTn(n,n.a.rd(),n.a.qd()|4,e),new $n(n,t)}function O0e(n,e){var t,i;return t=u(ab(n.d,e),14),t?(i=e,n.e.pc(i,t)):null}function GC(n,e){var t,i;for(i=n.Kc();i.Ob();)t=u(i.Pb(),70),H(t,(G(),pp),e)}function D0e(n){var e;return e=K(Y(k(n,(nn(),S1)))),e<0&&(e=0,H(n,S1,e)),e}function $0e(n,e,t){var i;i=y.Math.max(0,n.b/2-.5),g6(t,i,1),W(e,new L7n(t,i))}function F0e(n,e,t){var i;return i=n.a.e[u(e.a,10).p]-n.a.e[u(t.a,10).p],Gt(m8(i))}function lIn(n,e,t,i,r,c){var o;o=C$(i),Hi(o,r),Ci(o,c),Tn(n.a,i,new EE(o,e,t.f))}function aIn(n,e){var t;if(t=R7(n.Tg(),e),!t)throw T(new Hn(Pl+e+MB));return t}function ob(n,e){var t;for(t=n;Pt(t);)if(t=Pt(t),t==e)return!0;return!1}function x0e(n,e){var t,i,r;for(i=e.a.cd(),t=u(e.a.dd(),14).gc(),r=0;r0&&(n.a/=e,n.b/=e),n}function is(n){var e;return n.w?n.w:(e=Gle(n),e&&!e.kh()&&(n.w=e),e)}function q0e(n){var e;return n==null?null:(e=u(n,190),Gve(e,e.length))}function D(n,e){if(n.g==null||e>=n.i)throw T(new xO(e,n.i));return n.li(e,n.g[e])}function G0e(n){var e,t;for(e=n.a.d.j,t=n.c.d.j;e!=t;)ko(n.b,e),e=yT(e);ko(n.b,e)}function z0e(n){var e;for(e=0;e=14&&e<=16))),n}function gIn(n,e,t){var i=function(){return n.apply(i,arguments)};return e.apply(i,t),i}function pIn(n,e,t){var i,r;i=e;do r=K(n.p[i.p])+t,n.p[i.p]=r,i=n.a[i.p];while(i!=e)}function O3(n,e){var t,i;i=n.a,t=Tge(n,e,null),i!=e&&!n.e&&(t=j4(n,e,t)),t&&t.Fi()}function tV(n,e){return Zo(),mo(Cl),y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)}function iV(n,e){return Zo(),mo(Cl),y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)}function X0e(n,e){return yl(),Wc(n.b.c.length-n.e.c.length,e.b.c.length-e.e.c.length)}function xw(n,e){return Uie(J5(n,e,ge(Ni(dh,ch(ge(Ni(e==null?0:mt(e),bh)),15)))))}function vIn(){vIn=N,$Wn=Fe((Qn(),A(M(zR,1),z,267,0,[ii,pi,Xt,Tc,Ju,mf])))}function mIn(){mIn=N,_Zn=Fe((vb(),A(M(UK,1),z,291,0,[zK,gy,wy,GK,dy,by])))}function kIn(){kIn=N,FZn=Fe((fh(),A(M(Rfn,1),z,248,0,[HK,ly,ay,xP,$P,FP])))}function yIn(){yIn=N,uXn=Fe((q2(),A(M(rv,1),z,227,0,[iv,ym,tv,qb,Cg,Eg])))}function jIn(){jIn=N,pXn=Fe((h4(),A(M(sun,1),z,275,0,[Cm,iun,uun,cun,run,tun])))}function EIn(){EIn=N,gXn=Fe((A7(),A(M(eun,1),z,274,0,[LS,Ycn,nun,Jcn,Zcn,p_])))}function CIn(){CIn=N,BQn=Fe((JT(),A(M(Hsn,1),z,313,0,[Q_,_sn,V_,Rsn,Ksn,sP])))}function TIn(){TIn=N,bXn=Fe((eM(),A(M(Xcn,1),z,276,0,[d_,a_,w_,b_,g_,FS])))}function MIn(){MIn=N,VJn=Fe((k6(),A(M(XJn,1),z,327,0,[pP,aK,bK,dK,wK,lK])))}function AIn(){AIn=N,ane=Fe((Mu(),A(M(qP,1),z,273,0,[Gl,n1,Ty,s9,u9,Pp])))}function SIn(){SIn=N,rne=Fe((ZT(),A(M(xhn,1),z,312,0,[uH,Dhn,Fhn,Ihn,$hn,Ohn])))}function V0e(){return jb(),A(M(lr,1),z,93,0,[So,Zh,Po,Oo,jh,eo,ds,Io,no])}function UC(n,e){var t;t=n.a,n.a=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,0,t,n.a))}function WC(n,e){var t;t=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,1,t,n.b))}function D3(n,e){var t;t=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,3,t,n.b))}function Bd(n,e){var t;t=n.f,n.f=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,3,t,n.f))}function Rd(n,e){var t;t=n.g,n.g=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,4,t,n.g))}function nu(n,e){var t;t=n.i,n.i=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,5,t,n.i))}function eu(n,e){var t;t=n.j,n.j=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,6,t,n.j))}function $3(n,e){var t;t=n.j,n.j=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,1,t,n.j))}function F3(n,e){var t;t=n.c,n.c=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,4,t,n.c))}function x3(n,e){var t;t=n.k,n.k=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,2,t,n.k))}function G$(n,e){var t;t=n.d,n.d=e,n.Db&4&&!(n.Db&1)&&et(n,new p$(n,2,t,n.d))}function d1(n,e){var t;t=n.s,n.s=e,n.Db&4&&!(n.Db&1)&&et(n,new p$(n,4,t,n.s))}function hb(n,e){var t;t=n.t,n.t=e,n.Db&4&&!(n.Db&1)&&et(n,new p$(n,5,t,n.t))}function L3(n,e){var t;t=n.F,n.F=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,5,t,e))}function Q8(n,e){var t;return t=u(te(($j(),eI),n),55),t?t.xj(e):F(Zn,rn,1,e,5,1)}function Bh(n,e){var t,i;return t=e in n.a,t&&(i=Dh(n,e).he(),i)?i.a:null}function Q0e(n,e){var t,i,r;return t=(i=(ad(),r=new QH,r),e&&zY(i,e),i),aV(t,n),t}function PIn(n,e,t){if(W3(n,t),!n.Bk()&&t!=null&&!n.wj(t))throw T(new xI);return t}function IIn(n,e){return n.n=e,n.n?(n.f=new X,n.e=new X):(n.f=null,n.e=null),n}function Me(n,e,t,i,r,c){var o;return o=LD(n,e),DIn(t,o),o.i=r?8:0,o.f=i,o.e=r,o.g=c,o}function rV(n,e,t,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=1,this.c=n,this.a=t}function cV(n,e,t,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=2,this.c=n,this.a=t}function uV(n,e,t,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=6,this.c=n,this.a=t}function sV(n,e,t,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=7,this.c=n,this.a=t}function oV(n,e,t,i,r){this.d=e,this.j=i,this.e=r,this.o=-1,this.p=4,this.c=n,this.a=t}function OIn(n,e){var t,i,r,c;for(i=e,r=0,c=i.length;r=0),Q2e(n.d,n.c)<0&&(n.a=n.a-1&n.d.a.length-1,n.b=n.d.c),n.c=-1}function fV(n){return n.a<54?n.f<0?-1:n.f>0?1:0:(!n.c&&(n.c=h7(n.f)),n.c).e}function mo(n){if(!(n>=0))throw T(new Hn("tolerance ("+n+") must be >= 0"));return n}function N3(){return _K||(_K=new kBn,_w(_K,A(M(mg,1),rn,130,0,[new nq]))),_K}function ur(){ur=N,Bm=new kO(K6,0),Su=new kO("INPUT",1),xc=new kO("OUTPUT",2)}function VC(){VC=N,Hcn=new bO("ARD",0),DS=new bO("MSD",1),o_=new bO("MANUAL",2)}function _d(){_d=N,ry=new TO("BARYCENTER",0),_m=new TO(rHn,1),aP=new TO(cHn,2)}function J8(n,e){var t;if(t=n.gc(),e<0||e>t)throw T(new V0(e,t));return new AU(n,e)}function xIn(n,e){var t;return I(e,42)?n.c.Mc(e):(t=NF(n,e),IT(n,e),t)}function wr(n,e,t){return Ca(n,e),Ic(n,t),d1(n,0),hb(n,1),p1(n,!0),g1(n,!0),n}function rs(n,e){if(n<0)throw T(new Hn(e+" cannot be negative but was: "+n));return n}function LIn(n,e){var t,i;for(t=0,i=n.gc();t0?u(un(t.a,i-1),10):null}function Q5(n,e){var t;t=n.k,n.k=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,2,t,n.k))}function JC(n,e){var t;t=n.f,n.f=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,8,t,n.f))}function YC(n,e){var t;t=n.i,n.i=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,7,t,n.i))}function aV(n,e){var t;t=n.a,n.a=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,8,t,n.a))}function dV(n,e){var t;t=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,0,t,n.b))}function bV(n,e){var t;t=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,0,t,n.b))}function wV(n,e){var t;t=n.c,n.c=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,1,t,n.c))}function gV(n,e){var t;t=n.c,n.c=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,1,t,n.c))}function U$(n,e){var t;t=n.c,n.c=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,4,t,n.c))}function pV(n,e){var t;t=n.d,n.d=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,1,t,n.d))}function W$(n,e){var t;t=n.D,n.D=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,2,t,n.D))}function X$(n,e){n.r>0&&n.c0&&n.g!=0&&X$(n.i,e/n.r*n.i.d))}function cbe(n,e,t){var i;n.b=e,n.a=t,i=(n.a&512)==512?new T9n:new ZH,n.c=y7e(i,n.b,n.a)}function zIn(n,e){return zh(n.e,e)?(er(),R$(e)?new IE(e,n):new i8(e,n)):new Nkn(e,n)}function ZC(n,e){return zie(Y5(n.a,e,ge(Ni(dh,ch(ge(Ni(e==null?0:mt(e),bh)),15)))))}function ube(n,e,t){return cb(n,new Hvn(e),new mln,new qvn(t),A(M(Bu,1),z,132,0,[]))}function sbe(n){var e,t;return 0>n?new PG:(e=n+1,t=new wSn(e,n),new oU(null,t))}function obe(n,e){Pn();var t;return t=new s2(1),ki(n)?yr(t,n,e):_c(t.f,n,e),new DI(t)}function fbe(n,e){var t,i;return t=n.o+n.p,i=e.o+e.p,te?(e<<=1,e>0?e:L6):e}function V$(n){switch(Rz(n.e!=3),n.e){case 2:return!1;case 0:return!0}return wde(n)}function WIn(n,e){var t;return I(e,8)?(t=u(e,8),n.a==t.a&&n.b==t.b):!1}function Q$(n,e,t){var i,r,c;return c=e>>5,r=e&31,i=ui(J0(n.n[t][c],ge(Ih(r,1))),3),i}function lbe(n,e){var t,i;for(i=e.vc().Kc();i.Ob();)t=u(i.Pb(),42),XT(n,t.cd(),t.dd())}function abe(n,e){var t;t=new Wy,u(e.b,65),u(e.b,65),u(e.b,65),Zc(e.a,new BU(n,t,e))}function vV(n,e){var t;t=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,21,t,n.b))}function mV(n,e){var t;t=n.d,n.d=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,11,t,n.d))}function nT(n,e){var t;t=n.j,n.j=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,13,t,n.j))}function XIn(n,e,t){var i,r,c;for(c=n.a.length-1,r=n.b,i=0;i>>31;i!=0&&(n[t]=i)}function jbe(n,e){Pn();var t,i;for(i=new X,t=0;t0&&(this.g=this.ri(this.i+(this.i/8|0)+1),n.Qc(this.g))}function $t(n,e){ME.call(this,ree,n,e),this.b=this,this.a=Kc(n.Tg(),On(this.e.Tg(),this.c))}function Z5(n,e){var t,i;for(_n(e),i=e.vc().Kc();i.Ob();)t=u(i.Pb(),42),n.zc(t.cd(),t.dd())}function Dbe(n,e,t){var i;for(i=t.Kc();i.Ob();)if(!yC(n,e,i.Pb()))return!1;return!0}function $be(n,e,t,i,r){var c;return t&&(c=yt(e.Tg(),n.c),r=t.gh(e,-1-(c==-1?i:c),null,r)),r}function Fbe(n,e,t,i,r){var c;return t&&(c=yt(e.Tg(),n.c),r=t.ih(e,-1-(c==-1?i:c),null,r)),r}function dOn(n){var e;if(n.b==-2){if(n.e==0)e=-1;else for(e=0;n.a[e]==0;e++);n.b=e}return n.b}function bOn(n){switch(n.g){case 2:return J(),Gn;case 4:return J(),Vn;default:return n}}function wOn(n){switch(n.g){case 1:return J(),ae;case 3:return J(),Kn;default:return n}}function xbe(n){var e,t,i;return n.j==(J(),Kn)&&(e=GLn(n),t=au(e,Vn),i=au(e,Gn),i||i&&t)}function Lbe(n){var e,t;return e=u(n.e&&n.e(),9),t=u(IW(e,e.length),9),new ks(e,t,e.length)}function Nbe(n,e){le(e,iHn,1),TQ(ire(new tj((Vv(),new GD(n,!1,!1,new BH))))),ce(e)}function Y8(n,e){return qn(),ki(n)?DX(n,Ce(e)):G0(n)?TD(n,Y(e)):q0(n)?Kfe(n,sn(e)):n.wd(e)}function TV(n,e){e.q=n,n.d=y.Math.max(n.d,e.r),n.b+=e.d+(n.a.c.length==0?0:n.c),W(n.a,e)}function R3(n,e){var t,i,r,c;return r=n.c,t=n.c+n.b,c=n.d,i=n.d+n.a,e.a>r&&e.ac&&e.b1||n.Ob())return++n.a,n.g=0,e=n.i,n.Ob(),e;throw T(new ic)}function Vbe(n){gyn();var e;return M7n(hK,n)||(e=new Zwn,e.a=n,wU(hK,n,e)),u(br(hK,n),635)}function Ks(n){var e,t,i,r;return r=n,i=0,r<0&&(r+=$a,i=Wh),t=Gt(r/J2),e=Gt(r-t*J2),Bc(e,t,i)}function Z8(n){var e,t,i;for(i=0,t=new o2(n.a);t.a>22),r=n.h+e.h+(i>>22),Bc(t&Nu,i&Nu,r&Wh)}function xOn(n,e){var t,i,r;return t=n.l-e.l,i=n.m-e.m+(t>>22),r=n.h-e.h+(i>>22),Bc(t&Nu,i&Nu,r&Wh)}function i7(n){var e;return n<128?(e=(QEn(),yin)[n],!e&&(e=yin[n]=new wq(n)),e):new wq(n)}function jt(n){var e;return I(n,78)?n:(e=n&&n.__java$exception,e||(e=new CDn(n),Kmn(e)),e)}function r7(n){if(I(n,186))return u(n,118);if(n)return null;throw T(new c2(Iqn))}function LOn(n,e){if(e==null)return!1;for(;n.a!=n.b;)if(tt(e,vT(n)))return!0;return!1}function OV(n){return n.a.Ob()?!0:n.a!=n.d?!1:(n.a=new lX(n.e.f),n.a.Ob())}function Zt(n,e){var t,i;return t=e.Pc(),i=t.length,i==0?!1:(GU(n.c,n.c.length,t),!0)}function hwe(n,e,t){var i,r;for(r=e.vc().Kc();r.Ob();)i=u(r.Pb(),42),n.yc(i.cd(),i.dd(),t);return n}function NOn(n,e){var t,i;for(i=new E(n.b);i.a=0,"Negative initial capacity"),TE(e>=0,"Non-positive load factor"),Cu(this)}function uF(n,e,t){return n>=128?!1:n<64?b5(ui(Ih(1,n),t),0):b5(ui(Ih(1,n-64),e),0)}function mwe(n,e){return!n||!e||n==e?!1:zd(n.b.c,e.b.c+e.b.b)<0&&zd(e.b.c,n.b.c+n.b.b)<0}function VOn(n){var e,t,i;return t=n.n,i=n.o,e=n.d,new ys(t.a-e.b,t.b-e.d,i.a+(e.b+e.c),i.b+(e.d+e.a))}function kwe(n){var e,t,i,r;for(t=n.a,i=0,r=t.length;ii)throw T(new V0(e,i));return n.hi()&&(t=aMn(n,t)),n.Vh(e,t)}function s7(n,e,t){return t==null?(!n.q&&(n.q=new we),O2(n.q,e)):(!n.q&&(n.q=new we),it(n.q,e,t)),n}function H(n,e,t){return t==null?(!n.q&&(n.q=new we),O2(n.q,e)):(!n.q&&(n.q=new we),it(n.q,e,t)),n}function QOn(n){var e,t;return t=new TC,Pr(t,n),H(t,(dl(),hp),n),e=new we,Cye(n,t,e),QEe(n,t,e),t}function Ewe(n){eg();var e,t,i;for(t=F(di,q,8,2,0,1),i=0,e=0;e<2;e++)i+=.5,t[e]=r3e(i,n);return t}function JOn(n,e){var t,i,r,c;for(t=!1,i=n.a[e].length,c=0;c>=1);return e}function ZOn(n){var e,t;return t=x7(n.h),t==32?(e=x7(n.m),e==32?x7(n.l)+32:e+20-10):t-12}function t6(n){var e;return e=n.a[n.b],e==null?null:(St(n.a,n.b,null),n.b=n.b+1&n.a.length-1,e)}function nDn(n){var e,t;return e=n.t-n.k[n.o.p]*n.d+n.j[n.o.p]>n.f,t=n.u+n.e[n.o.p]*n.d>n.f*n.s*n.d,e||t}function bT(n,e,t){var i,r;return i=new I$(e,t),r=new dI,n.b=zNn(n,n.b,i,r),r.b||++n.c,n.b.b=!1,r.d}function eDn(n,e,t){var i,r,c,o;for(o=c6(e,t),c=0,r=o.Kc();r.Ob();)i=u(r.Pb(),11),it(n.c,i,Q(c++))}function wl(n){var e,t;for(t=new E(n.a.b);t.at&&(t=n[e]);return t}function tDn(n,e,t){var i;return i=new X,XY(n,e,i,(J(),Vn),!0,!1),XY(n,t,i,Gn,!1,!1),i}function oF(n,e,t){var i,r,c,o;return c=null,o=e,r=Fd(o,"labels"),i=new jkn(n,t),c=(Hme(i.a,i.b,r),r),c}function Twe(n,e,t,i){var r;return r=xY(n,e,t,i),!r&&(r=Mge(n,t,i),r&&!rg(n,e,r))?null:r}function Mwe(n,e,t,i){var r;return r=LY(n,e,t,i),!r&&(r=TF(n,t,i),r&&!rg(n,e,r))?null:r}function iDn(n,e){var t;for(t=0;t1||e>=0&&n.b<3)}function o7(n){var e,t,i;for(e=new hu,i=_e(n,0);i.b!=i.d.c;)t=u(Re(i),8),s3(e,0,new kr(t));return e}function ja(n){var e,t;for(t=new E(n.a.b);t.ai?1:0}function QV(n,e){return ANn(n,e)?(Tn(n.b,u(k(e,(G(),Gb)),21),e),Ke(n.a,e),!0):!1}function Bwe(n){var e,t;e=u(k(n,(G(),Au)),10),e&&(t=e.c,Jc(t.a,e),t.a.c.length==0&&Jc(Gi(e).b,t))}function fDn(n){return vf?F($zn,lKn,572,0,0,1):u(af(n.a,F($zn,lKn,572,n.a.c.length,0,1)),842)}function Rwe(n,e,t,i){return QE(),new GI(A(M(Ha,1),OM,42,0,[(ex(n,e),new bd(n,e)),(ex(t,i),new bd(t,i))]))}function Rw(n,e,t){var i,r;return r=(i=new RI,i),wr(r,e,t),me((!n.q&&(n.q=new V(co,n,11,10)),n.q),r),r}function aF(n){var e,t,i,r;for(r=lre($ne,n),t=r.length,i=F(tn,q,2,t,6,1),e=0;e=n.b.c.length||(JV(n,2*e+1),t=2*e+2,t=0&&n[i]===e[i];i--);return i<0?0:cO(ui(n[i],fr),ui(e[i],fr))?-1:1}function _we(n,e){var t,i;for(i=_e(n,0);i.b!=i.d.c;)t=u(Re(i),214),t.e.length>0&&(e.td(t),t.i&&Fge(t))}function bF(n,e){var t,i;return i=u(Rn(n.a,4),126),t=F(bH,qB,415,e,0,1),i!=null&&gc(i,0,t,0,i.length),t}function lDn(n,e){var t;return t=new zx((n.f&256)!=0,n.i,n.a,n.d,(n.f&16)!=0,n.j,n.g,e),n.e!=null||(t.c=n),t}function Kwe(n,e){var t,i;for(i=n.Zb().Cc().Kc();i.Ob();)if(t=u(i.Pb(),14),t.Hc(e))return!0;return!1}function wF(n,e,t,i,r){var c,o;for(o=t;o<=r;o++)for(c=e;c<=i;c++)if(zw(n,c,o))return!0;return!1}function aDn(n,e,t){var i,r,c,o;for(_n(t),o=!1,c=n.Zc(e),r=t.Kc();r.Ob();)i=r.Pb(),c.Rb(i),o=!0;return o}function Hwe(n,e){var t;return n===e?!0:I(e,83)?(t=u(e,83),ZJ(Ed(n),t.vc())):!1}function dDn(n,e,t){var i,r;for(r=t.Kc();r.Ob();)if(i=u(r.Pb(),42),n.re(e,i.dd()))return!0;return!1}function bDn(n,e,t){return n.d[e.p][t.p]||(Bpe(n,e,t),n.d[e.p][t.p]=!0,n.d[t.p][e.p]=!0),n.a[e.p][t.p]}function W3(n,e){if(!n.ai()&&e==null)throw T(new Hn("The 'no null' constraint is violated"));return e}function X3(n,e){n.D==null&&n.B!=null&&(n.D=n.B,n.B=null),W$(n,e==null?null:(_n(e),e)),n.C&&n.yk(null)}function qwe(n,e){var t;return!n||n==e||!ai(e,(G(),m0))?!1:(t=u(k(e,(G(),m0)),10),t!=n)}function gF(n){switch(n.i){case 2:return!0;case 1:return!1;case-1:++n.c;default:return n.pl()}}function wDn(n){switch(n.i){case-2:return!0;case-1:return!1;case 1:--n.c;default:return n.ql()}}function gDn(n){cMn.call(this,"The given string does not match the expected format for individual spacings.",n)}function Vu(){Vu=N,gs=new Jj("ELK",0),Yhn=new Jj("JSON",1),Jhn=new Jj("DOT",2),Zhn=new Jj("SVG",3)}function f7(){f7=N,CP=new AO(Xh,0),Don=new AO("RADIAL_COMPACTION",1),$on=new AO("WEDGE_COMPACTION",2)}function lf(){lf=N,Win=new uO("CONCURRENT",0),ls=new uO("IDENTITY_FINISH",1),Rb=new uO("UNORDERED",2)}function pF(){pF=N,jrn=(Aj(),SR),yrn=new In(pnn,jrn),OUn=new kt(vnn),DUn=new kt(mnn),$Un=new kt(knn)}function V3(){V3=N,xcn=new j0n,Lcn=new E0n,zWn=new C0n,GWn=new T0n,qWn=new M0n,Fcn=(_n(qWn),new uln)}function Q3(){Q3=N,sK=new jO("CONSERVATIVE",0),con=new jO("CONSERVATIVE_SOFT",1),Rm=new jO("SLOPPY",2)}function wT(){wT=N,_hn=new vd(15),cne=new tr((Xe(),nd),_hn),t9=Mp,Lhn=HZn,Nhn=Za,Rhn=Kg,Bhn=BP}function vF(n,e,t){var i,r,c;for(i=new Tt,c=_e(t,0);c.b!=c.d.c;)r=u(Re(c),8),Ke(i,new kr(r));aDn(n,e,i)}function Gwe(n){var e,t,i;for(e=0,i=F(di,q,8,n.b,0,1),t=_e(n,0);t.b!=t.d.c;)i[e++]=u(Re(t),8);return i}function ZV(n){var e;return e=(!n.a&&(n.a=new V(e1,n,9,5)),n.a),e.i!=0?ore(u(D(e,0),678)):null}function zwe(n,e){var t;return t=qi(n,e),cO(h$(n,e),0)|Cre(h$(n,t),0)?t:qi(IM,h$(J0(t,63),1))}function Uwe(n,e){var t;t=cn((xF(),uP))!=null&&e.wg()!=null?K(Y(e.wg()))/K(Y(cn(uP))):1,it(n.b,e,t)}function Wwe(n,e){var t,i;return t=u(n.d.Bc(e),14),t?(i=n.e.hc(),i.Gc(t),n.e.d-=t.gc(),t.$b(),i):null}function nQ(n,e){var t,i;if(i=n.c[e],i!=0)for(n.c[e]=0,n.d-=i,t=e+1;t0)return a3(e-1,n.a.c.length),h1(n.a,e-1);throw T(new qmn)}function Xwe(n,e,t){if(e<0)throw T(new mr(_Hn+e));ee)throw T(new Hn(xM+n+aKn+e));if(n<0||e>t)throw T(new bG(xM+n+rnn+e+tnn+t))}function mDn(n){if(!n.a||!(n.a.i&8))throw T(new $r("Enumeration class expected for layout option "+n.f))}function lb(n){var e;++n.j,n.i==0?n.g=null:n.ihA?n-t>hA:t-n>hA}function kF(n,e){return!n||e&&!n.j||I(n,124)&&u(n,124).a.b==0?0:n.Re()}function pT(n,e){return!n||e&&!n.k||I(n,124)&&u(n,124).a.a==0?0:n.Se()}function h7(n){return jl(),n<0?n!=-1?new VQ(-1,-n):gR:n<=10?xin[Gt(n)]:new VQ(1,n)}function tQ(n){throw cF(),T(new L9n("Unexpected typeof result '"+n+"'; please report this bug to the GWT team"))}function CDn(n){H9n(),oE(this),eC(this),this.e=n,NNn(this,n),this.g=n==null?ru:Nr(n),this.a="",this.b=n,this.a=""}function iQ(){this.a=new qgn,this.f=new O6n(this),this.b=new D6n(this),this.i=new $6n(this),this.e=new F6n(this)}function TDn(){iie.call(this,new _X(sb(16))),rs(2,W_n),this.b=2,this.a=new RW(null,null,0,null),$9(this.a,this.a)}function i6(){i6=N,J_=new vO("DUMMY_NODE_OVER",0),qsn=new vO("DUMMY_NODE_UNDER",1),oP=new vO("EQUAL",2)}function yF(){yF=N,_R=sMn(A(M(e9,1),z,103,0,[(sr(),Zs),Ao])),KR=sMn(A(M(e9,1),z,103,0,[Yh,Jh]))}function jF(n){return(J(),uu).Hc(n.j)?K(Y(k(n,(G(),hv)))):Gr(A(M(di,1),q,8,0,[n.i.n,n.n,n.a])).b}function Zwe(n){var e,t,i,r;for(i=n.b.a,t=i.a.ec().Kc();t.Ob();)e=u(t.Pb(),561),r=new pNn(e,n.e,n.f),W(n.g,r)}function Ca(n,e){var t,i,r;i=n.nk(e,null),r=null,e&&(r=(Qp(),t=new ud,t),O3(r,n.r)),i=df(n,r,i),i&&i.Fi()}function nge(n,e){var t,i;for(i=xu(n.d,1)!=0,t=!0;t;)t=!1,t=e.c.Tf(e.e,i),t=t|_7(n,e,i,!1),i=!i;yV(n)}function rQ(n,e){var t,i,r;return i=!1,t=e.q.d,e.dr&&(JFn(e.q,r),i=t!=e.q.d)),i}function MDn(n,e){var t,i,r,c,o,f,h,l;return h=e.i,l=e.j,i=n.f,r=i.i,c=i.j,o=h-r,f=l-c,t=y.Math.sqrt(o*o+f*f),t}function cQ(n,e){var t,i;return i=OT(n),i||(t=(bL(),Yxn(e)),i=new Fmn(t),me(i.Vk(),n)),i}function l7(n,e){var t,i;return t=u(n.c.Bc(e),14),t?(i=n.hc(),i.Gc(t),n.d-=t.gc(),t.$b(),n.mc(i)):n.jc()}function ADn(n,e){var t;for(t=0;t=n.c.b:n.a<=n.c.b))throw T(new ic);return e=n.a,n.a+=n.c.c,++n.b,Q(e)}function ige(n){var e;return e=new uIn(n),O8(n.a,SWn,new Hu(A(M(Rk,1),rn,369,0,[e]))),e.d&&W(e.f,e.d),e.f}function EF(n){var e;return e=new Mz(n.a),Pr(e,n),H(e,(G(),rt),n),e.o.a=n.g,e.o.b=n.f,e.n.a=n.i,e.n.b=n.j,e}function rge(n,e,t,i){var r,c;for(c=n.Kc();c.Ob();)r=u(c.Pb(),70),r.n.a=e.a+(i.a-r.o.a)/2,r.n.b=e.b,e.b+=r.o.b+t}function cge(n,e,t){var i,r;for(r=e.a.a.ec().Kc();r.Ob();)if(i=u(r.Pb(),57),_Tn(n,i,t))return!0;return!1}function uge(n){var e,t;for(t=new E(n.r);t.a=0?e:-e;i>0;)i%2==0?(t*=t,i=i/2|0):(r*=t,i-=1);return e<0?1/r:r}function hge(n,e){var t,i,r;for(r=1,t=n,i=e>=0?e:-e;i>0;)i%2==0?(t*=t,i=i/2|0):(r*=t,i-=1);return e<0?1/r:r}function FDn(n){var e,t;if(n!=null)for(t=0;t0&&(t=u(un(n.a,n.a.c.length-1),570),QV(t,e))||W(n.a,new dSn(e))}function wge(n){wo();var e,t;e=n.d.c-n.e.c,t=u(n.g,145),Zc(t.b,new _5n(e)),Zc(t.c,new K5n(e)),$i(t.i,new H5n(e))}function BDn(n){var e;return e=new V1,e.a+="VerticalSegment ",rc(e,n.e),e.a+=" ",De(e,Lz(new YI,new E(n.k))),e.a}function gge(n){var e;return e=u(xd(n.c.c,""),229),e||(e=new M2(Vp(Xp(new Zg,""),"Other")),Aa(n.c.c,"",e)),e}function r6(n){var e;return n.Db&64?yo(n):(e=new Bs(yo(n)),e.a+=" (name: ",dr(e,n.zb),e.a+=")",e.a)}function hQ(n,e,t){var i,r;return r=n.sb,n.sb=e,n.Db&4&&!(n.Db&1)&&(i=new gi(n,1,4,r,e),t?t.Ei(i):t=i),t}function CF(n,e){var t,i,r;for(t=0,r=zr(n,e).Kc();r.Ob();)i=u(r.Pb(),11),t+=k(i,(G(),Au))!=null?1:0;return t}function Kw(n,e,t){var i,r,c;for(i=0,c=_e(n,0);c.b!=c.d.c&&(r=K(Y(Re(c))),!(r>t));)r>=e&&++i;return i}function pge(n,e,t){var i,r;return i=new Lh(n.e,3,13,null,(r=e.c,r||(Sn(),Tf)),v1(n,e),!1),t?t.Ei(i):t=i,t}function vge(n,e,t){var i,r;return i=new Lh(n.e,4,13,(r=e.c,r||(Sn(),Tf)),null,v1(n,e),!1),t?t.Ei(i):t=i,t}function lQ(n,e,t){var i,r;return r=n.r,n.r=e,n.Db&4&&!(n.Db&1)&&(i=new gi(n,1,8,r,n.r),t?t.Ei(i):t=i),t}function w1(n,e){var t,i;return t=u(e,676),i=t.vk(),!i&&t.wk(i=I(e,88)?new Fkn(n,u(e,26)):new eAn(n,u(e,148))),i}function a7(n,e,t){var i;n.qi(n.i+1),i=n.oi(e,t),e!=n.i&&gc(n.g,e,n.g,e+1,n.i-e),St(n.g,e,i),++n.i,n.bi(e,t),n.ci()}function mge(n,e){var t;return e.a&&(t=e.a.a.length,n.a?De(n.a,n.b):n.a=new Yu(n.d),iAn(n.a,e.a,e.d.length,t)),n}function kge(n,e){var t,i,r,c;if(e.vi(n.a),c=u(Rn(n.a,8),1936),c!=null)for(t=c,i=0,r=t.length;it)throw T(new mr(xM+n+rnn+e+", size: "+t));if(n>e)throw T(new Hn(xM+n+aKn+e))}function As(n,e,t){if(e<0)bY(n,t);else{if(!t.Ij())throw T(new Hn(Pl+t.ne()+em));u(t,66).Nj().Vj(n,n.yh(),e)}}function Ege(n,e,t,i,r,c,o,f){var h;for(h=t;c=i||e=65&&n<=70?n-65+10:n>=97&&n<=102?n-97+10:n>=48&&n<=57?n-48:0}function zDn(n){var e;return n.Db&64?yo(n):(e=new Bs(yo(n)),e.a+=" (source: ",dr(e,n.d),e.a+=")",e.a)}function Tge(n,e,t){var i,r;return r=n.a,n.a=e,n.Db&4&&!(n.Db&1)&&(i=new gi(n,1,5,r,n.a),t?FJ(t,i):t=i),t}function g1(n,e){var t;t=(n.Bb&256)!=0,e?n.Bb|=256:n.Bb&=-257,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,2,t,e))}function dQ(n,e){var t;t=(n.Bb&256)!=0,e?n.Bb|=256:n.Bb&=-257,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,8,t,e))}function kT(n,e){var t;t=(n.Bb&256)!=0,e?n.Bb|=256:n.Bb&=-257,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,8,t,e))}function p1(n,e){var t;t=(n.Bb&512)!=0,e?n.Bb|=512:n.Bb&=-513,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,3,t,e))}function bQ(n,e){var t;t=(n.Bb&512)!=0,e?n.Bb|=512:n.Bb&=-513,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,9,t,e))}function u6(n,e){var t;return n.b==-1&&n.a&&(t=n.a.Gj(),n.b=t?n.c.Xg(n.a.aj(),t):yt(n.c.Tg(),n.a)),n.c.Og(n.b,e)}function Q(n){var e,t;return n>-129&&n<128?(e=n+128,t=(qEn(),jin)[e],!t&&(t=jin[e]=new gq(n)),t):new gq(n)}function J3(n){var e,t;return n>-129&&n<128?(e=n+128,t=(VEn(),Min)[e],!t&&(t=Min[e]=new vq(n)),t):new vq(n)}function wQ(n){var e,t;return e=n.k,e==(Qn(),Xt)?(t=u(k(n,(G(),ec)),61),t==(J(),Kn)||t==ae):!1}function Mge(n,e,t){var i,r,c;return c=(r=b4(n.b,e),r),c&&(i=u(jM(G8(n,c),""),26),i)?xY(n,i,e,t):null}function TF(n,e,t){var i,r,c;return c=(r=b4(n.b,e),r),c&&(i=u(jM(G8(n,c),""),26),i)?LY(n,i,e,t):null}function UDn(n,e){var t,i;for(i=new ie(n);i.e!=i.i.gc();)if(t=u(oe(i),138),B(e)===B(t))return!0;return!1}function s6(n,e,t){var i;if(i=n.gc(),e>i)throw T(new V0(e,i));if(n.hi()&&n.Hc(t))throw T(new Hn(yk));n.Xh(e,t)}function Age(n,e){var t;if(t=xw(n.i,e),t==null)throw T(new Sf("Node did not exist in input."));return MV(e,t),null}function Sge(n,e){var t;if(t=R7(n,e),I(t,322))return u(t,34);throw T(new Hn(Pl+e+"' is not a valid attribute"))}function Pge(n,e,t){var i,r;for(r=I(e,99)&&u(e,18).Bb&Yi?new LO(e,n):new H3(e,n),i=0;ie?1:n==e?n==0?ni(1/n,1/e):0:isNaN(n)?isNaN(e)?0:1:-1}function Bge(n,e){le(e,"Sort end labels",1),Rt(gt(qr(new $n(null,new xn(n.b,16)),new bdn),new wdn),new gdn),ce(e)}function o6(n,e,t){var i,r;return n.ej()?(r=n.fj(),i=Dx(n,e,t),n.$i(n.Zi(7,Q(t),i,e,r)),i):Dx(n,e,t)}function MF(n,e){var t,i,r;n.d==null?(++n.e,--n.f):(r=e.cd(),t=e.Sh(),i=(t&nt)%n.d.length,yde(n,i,hNn(n,i,t,r)))}function Y3(n,e){var t;t=(n.Bb&Eo)!=0,e?n.Bb|=Eo:n.Bb&=-1025,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,10,t,e))}function Z3(n,e){var t;t=(n.Bb&Ib)!=0,e?n.Bb|=Ib:n.Bb&=-4097,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,12,t,e))}function n4(n,e){var t;t=(n.Bb&mu)!=0,e?n.Bb|=mu:n.Bb&=-8193,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,15,t,e))}function e4(n,e){var t;t=(n.Bb&Bb)!=0,e?n.Bb|=Bb:n.Bb&=-2049,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,11,t,e))}function Rge(n,e){var t;return t=ni(n.b.c,e.b.c),t!=0||(t=ni(n.a.a,e.a.a),t!=0)?t:ni(n.a.b,e.a.b)}function _ge(n,e){var t;if(t=te(n.k,e),t==null)throw T(new Sf("Port did not exist in input."));return MV(e,t),null}function Kge(n){var e,t;for(t=wNn(is(n)).Kc();t.Ob();)if(e=Ce(t.Pb()),A6(n,e))return Vae((C7n(),zne),e);return null}function Hge(n,e){var t,i,r,c,o;for(o=Kc(n.e.Tg(),e),c=0,t=u(n.g,119),r=0;r>10)+rk&Ut,e[1]=(n&1023)+56320&Ut,Hs(e,0,e.length)}function jT(n){var e,t;return t=u(k(n,(nn(),as)),103),t==(sr(),kh)?(e=K(Y(k(n,zS))),e>=1?Ao:Jh):t}function zge(n){switch(u(k(n,(nn(),Qh)),218).g){case 1:return new ewn;case 3:return new uwn;default:return new nwn}}function Ta(n){if(n.c)Ta(n.c);else if(n.d)throw T(new $r("Stream already terminated, can't be modified or used"))}function PF(n){var e;return n.Db&64?yo(n):(e=new Bs(yo(n)),e.a+=" (identifier: ",dr(e,n.k),e.a+=")",e.a)}function QDn(n,e,t){var i,r;return i=(ad(),r=new Xy,r),UC(i,e),WC(i,t),n&&me((!n.a&&(n.a=new Yt(io,n,5)),n.a),i),i}function IF(n,e,t,i){var r,c;return _n(i),_n(t),r=n.xc(e),c=r==null?t:l7n(u(r,15),u(t,14)),c==null?n.Bc(e):n.zc(e,c),c}function Cn(n){var e,t,i,r;return t=(e=u(xo((i=n.gm,r=i.f,r==Ie?i:r)),9),new ks(e,u(bo(e,e.length),9),0)),ko(t,n),t}function Uge(n,e,t){var i,r;for(r=n.a.ec().Kc();r.Ob();)if(i=u(r.Pb(),10),t7(t,u(un(e,i.p),14)))return i;return null}function Wge(n,e,t){var i;try{Awe(n,e,t)}catch(r){throw r=jt(r),I(r,597)?(i=r,T(new EX(i))):T(r)}return e}function vl(n,e){var t;return Fr(n)&&Fr(e)&&(t=n-e,ik>1,n.k=t-1>>1}function OF(){_J();var n,e,t;t=qTe+++Date.now(),n=Gt(y.Math.floor(t*uk))&FM,e=Gt(t-n*enn),this.a=n^1502,this.b=e^tN}function Kh(n){var e,t,i;for(e=new X,i=new E(n.j);i.a34028234663852886e22?Ft:e<-34028234663852886e22?Qt:e}function JDn(n){return n-=n>>1&1431655765,n=(n>>2&858993459)+(n&858993459),n=(n>>4)+n&252645135,n+=n>>8,n+=n>>16,n&63}function YDn(n){var e,t,i,r;for(e=new Djn(n.Hd().gc()),r=0,i=$2(n.Hd().Kc());i.Ob();)t=i.Pb(),ole(e,t,Q(r++));return $5e(e.a)}function Zge(n,e){var t,i,r;for(r=new we,i=e.vc().Kc();i.Ob();)t=u(i.Pb(),42),it(r,t.cd(),Gbe(n,u(t.dd(),15)));return r}function yQ(n,e){n.n.c.length==0&&W(n.n,new lC(n.s,n.t,n.i)),W(n.b,e),iJ(u(un(n.n,n.n.c.length-1),211),e),oRn(n,e)}function Hw(n){return(n.c!=n.b.b||n.i!=n.g.b)&&(n.a.c=F(Zn,rn,1,0,5,1),Zt(n.a,n.b),Zt(n.a,n.g),n.c=n.b.b,n.i=n.g.b),n.a}function DF(n,e){var t,i,r;for(r=0,i=u(e.Kb(n),20).Kc();i.Ob();)t=u(i.Pb(),17),on(sn(k(t,(G(),kf))))||++r;return r}function n2e(n,e){var t,i,r;i=$w(e),r=K(Y(bb(i,(nn(),Mo)))),t=y.Math.max(0,r/2-.5),g6(e,t,1),W(n,new G7n(e,t))}function Ss(){Ss=N,Qk=new Q9(Xh,0),Sm=new Q9("FIRST",1),xl=new Q9(uHn,2),Pm=new Q9("LAST",3),Ub=new Q9(sHn,4)}function Hh(){Hh=N,rH=new Wj(K6,0),yy=new Wj("POLYLINE",1),Cv=new Wj("ORTHOGONAL",2),Sp=new Wj("SPLINES",3)}function ET(){ET=N,Jon=new PO("ASPECT_RATIO_DRIVEN",0),IK=new PO("MAX_SCALE_DRIVEN",1),Qon=new PO("AREA_DRIVEN",2)}function w7(){w7=N,AP=new IO("P1_STRUCTURE",0),SP=new IO("P2_PROCESSING_ORDER",1),PP=new IO("P3_EXECUTION",2)}function CT(){CT=N,CK=new MO("OVERLAP_REMOVAL",0),jK=new MO("COMPACTION",1),EK=new MO("GRAPH_SIZE_CALCULATION",2)}function zd(n,e){return Zo(),mo(Cl),y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)?0:ne?1:pd(isNaN(n),isNaN(e))}function ZDn(n,e){var t,i;for(t=_e(n,0);t.b!=t.d.c;){if(i=x9(Y(Re(t))),i==e)return;if(i>e){a$(t);break}}y8(t,e)}function En(n,e){var t,i,r,c,o;if(t=e.f,Aa(n.c.d,t,e),e.g!=null)for(r=e.g,c=0,o=r.length;ce&&i.ue(n[c-1],n[c])>0;--c)o=n[c],St(n,c,n[c-1]),St(n,c-1,o)}function Ps(n,e,t,i){if(e<0)_Y(n,t,i);else{if(!t.Ij())throw T(new Hn(Pl+t.ne()+em));u(t,66).Nj().Tj(n,n.yh(),e,i)}}function TT(n,e){if(e==n.d)return n.e;if(e==n.e)return n.d;throw T(new Hn("Node "+e+" not part of edge "+n))}function t2e(n,e){switch(e.g){case 2:return n.b;case 1:return n.c;case 4:return n.d;case 3:return n.a;default:return!1}}function n$n(n,e){switch(e.g){case 2:return n.b;case 1:return n.c;case 4:return n.d;case 3:return n.a;default:return!1}}function jQ(n,e,t,i){switch(e){case 3:return n.f;case 4:return n.g;case 5:return n.i;case 6:return n.j}return aQ(n,e,t,i)}function i2e(n){return n.k!=(Qn(),ii)?!1:C3(new $n(null,new Cd(new re(ue(ei(n).a.Kc(),new An)))),new Hbn)}function r2e(n){return n.e==null?n:(!n.c&&(n.c=new zx((n.f&256)!=0,n.i,n.a,n.d,(n.f&16)!=0,n.j,n.g,null)),n.c)}function c2e(n,e){return n.h==tk&&n.m==0&&n.l==0?(e&&(Il=Bc(0,0,0)),eyn((I3(),gin))):(e&&(Il=Bc(n.l,n.m,n.h)),Bc(0,0,0))}function Nr(n){var e;return Array.isArray(n)&&n.im===Xg?J1($u(n))+"@"+(e=mt(n)>>>0,e.toString(16)):n.toString()}function f6(n){var e;this.a=(e=u(n.e&&n.e(),9),new ks(e,u(bo(e,e.length),9),0)),this.b=F(Zn,rn,1,this.a.a.length,5,1)}function u2e(n){var e,t,i;for(this.a=new Sh,i=new E(n);i.a0&&(Te(e-1,n.length),n.charCodeAt(e-1)==58)&&!$F(n,a9,d9))}function $F(n,e,t){var i,r;for(i=0,r=n.length;i=r)return e.c+t;return e.c+e.b.gc()}function l2e(n,e){o3();var t,i,r,c;for(i=bPn(n),r=e,S3(i,0,i.length,r),t=0;t0&&(i+=r,++t);return t>1&&(i+=n.d*(t-1)),i}function CQ(n){var e,t,i;for(i=new i1,i.a+="[",e=0,t=n.gc();e0&&this.b>0&&cW(this.c,this.b,this.a)}function AQ(n){xF(),this.c=uf(A(M(sMe,1),rn,831,0,[LQn])),this.b=new we,this.a=n,it(this.b,uP,1),Zc(NQn,new q6n(this))}function e$n(n,e){var t;return n.d?Uu(n.b,e)?u(te(n.b,e),51):(t=e.Kf(),it(n.b,e,t),t):e.Kf()}function SQ(n,e){var t;return B(n)===B(e)?!0:I(e,91)?(t=u(e,91),n.e==t.e&&n.d==t.d&&Jae(n,t.a)):!1}function B2(n){switch(J(),n.g){case 4:return Kn;case 1:return Vn;case 3:return ae;case 2:return Gn;default:return Xr}}function PQ(n,e){switch(e){case 3:return n.f!=0;case 4:return n.g!=0;case 5:return n.i!=0;case 6:return n.j!=0}return SV(n,e)}function p2e(n){switch(n.g){case 0:return new Lgn;case 1:return new Ngn;default:throw T(new Hn(lB+(n.f!=null?n.f:""+n.g)))}}function t$n(n){switch(n.g){case 0:return new xgn;case 1:return new Bgn;default:throw T(new Hn(AN+(n.f!=null?n.f:""+n.g)))}}function i$n(n){switch(n.g){case 0:return new sG;case 1:return new b9n;default:throw T(new Hn(bA+(n.f!=null?n.f:""+n.g)))}}function v2e(n){switch(n.g){case 1:return new Pgn;case 2:return new kjn;default:throw T(new Hn(lB+(n.f!=null?n.f:""+n.g)))}}function m2e(n){var e,t;if(n.b)return n.b;for(t=vf?null:n.d;t;){if(e=vf?null:t.b,e)return e;t=vf?null:t.d}return e3(),Uin}function k2e(n){var e,t,i;return n.e==0?0:(e=n.d<<5,t=n.a[n.d-1],n.e<0&&(i=dOn(n),i==n.d-1&&(--t,t=t|0)),e-=x7(t),e)}function y2e(n){var e,t,i;return n>5,e=n&31,i=F(be,Le,25,t+1,15,1),i[t]=1<3;)r*=10,--c;n=(n+(r>>1))/r|0}return i.i=n,!0}function E2e(n){return yF(),qn(),!!(n$n(u(n.a,81).j,u(n.b,103))||u(n.a,81).d.e!=0&&n$n(u(n.a,81).j,u(n.b,103)))}function C2e(n){DC(),u(n.We((Xe(),_l)),174).Hc((Lu(),UP))&&(u(n.We(rw),174).Fc((Mu(),Pp)),u(n.We(_l),174).Mc(UP))}function c$n(n,e){var t,i;if(e){for(t=0;t=0;--i)for(e=t[i],r=0;r>1,this.k=e-1>>1}function I2e(n,e){le(e,"End label post-processing",1),Rt(gt(qr(new $n(null,new xn(n.b,16)),new udn),new sdn),new odn),ce(e)}function O2e(n,e,t){var i,r;return i=K(n.p[e.i.p])+K(n.d[e.i.p])+e.n.b+e.a.b,r=K(n.p[t.i.p])+K(n.d[t.i.p])+t.n.b+t.a.b,r-i}function D2e(n,e,t){var i,r;for(i=ui(t,fr),r=0;fc(i,0)!=0&&r0&&(Te(0,e.length),e.charCodeAt(0)==43)?e.substr(1):e))}function F2e(n){var e;return n==null?null:new il((e=jc(n,!0),e.length>0&&(Te(0,e.length),e.charCodeAt(0)==43)?e.substr(1):e))}function LQ(n,e){var t;return n.i>0&&(e.lengthn.i&&St(e,n.i,null),e}function Oc(n,e,t){var i,r,c;return n.ej()?(i=n.i,c=n.fj(),a7(n,i,e),r=n.Zi(3,null,e,i,c),t?t.Ei(r):t=r):a7(n,n.i,e),t}function x2e(n,e,t){var i,r;return i=new Lh(n.e,4,10,(r=e.c,I(r,88)?u(r,26):(Sn(),so)),null,v1(n,e),!1),t?t.Ei(i):t=i,t}function L2e(n,e,t){var i,r;return i=new Lh(n.e,3,10,null,(r=e.c,I(r,88)?u(r,26):(Sn(),so)),v1(n,e),!1),t?t.Ei(i):t=i,t}function o$n(n){W0();var e;return e=new kr(u(n.e.We((Xe(),Kg)),8)),n.B.Hc((Lu(),Mv))&&(e.a<=0&&(e.a=20),e.b<=0&&(e.b=20)),e}function f$n(n){wb();var e;return(n.q?n.q:(Pn(),Pn(),vh))._b((nn(),j0))?e=u(k(n,j0),197):e=u(k(Gi(n),$m),197),e}function bb(n,e){var t,i;return i=null,ai(n,(nn(),rP))&&(t=u(k(n,rP),94),t.Xe(e)&&(i=t.We(e))),i==null&&(i=k(Gi(n),e)),i}function h$n(n,e){var t,i,r;return I(e,42)?(t=u(e,42),i=t.cd(),r=ab(n.Rc(),i),Ff(r,t.dd())&&(r!=null||n.Rc()._b(i))):!1}function NF(n,e){var t,i,r;return n.f>0?(n.qj(),i=e==null?0:mt(e),r=(i&nt)%n.d.length,t=hNn(n,r,i,e),t!=-1):!1}function Ko(n,e){var t,i,r;return n.f>0&&(n.qj(),i=e==null?0:mt(e),r=(i&nt)%n.d.length,t=kY(n,r,i,e),t)?t.dd():null}function g7(n,e){var t,i,r,c;for(c=Kc(n.e.Tg(),e),t=u(n.g,119),r=0;r1?cf(Ih(e.a[1],32),ui(e.a[0],fr)):ui(e.a[0],fr),$d(Ni(e.e,t))))}function p7(n,e){var t;return Fr(n)&&Fr(e)&&(t=n%e,ik>5,e&=31,r=n.d+t+(e==0?0:1),i=F(be,Le,25,r,15,1),Nve(i,n.a,t,e),c=new Pw(n.e,r,i),K5(c),c}function BQ(n,e,t){var i,r;i=u(vc(Pv,e),117),r=u(vc(m9,e),117),t?(yr(Pv,n,i),yr(m9,n,r)):(yr(m9,n,i),yr(Pv,n,r))}function p$n(n,e,t){var i,r,c;for(r=null,c=n.b;c;){if(i=n.a.ue(e,c.d),t&&i==0)return c;i>=0?c=c.a[1]:(r=c,c=c.a[0])}return r}function v$n(n,e,t){var i,r,c;for(r=null,c=n.b;c;){if(i=n.a.ue(e,c.d),t&&i==0)return c;i<=0?c=c.a[0]:(r=c,c=c.a[1])}return r}function K2e(n,e,t,i){var r,c,o;return r=!1,jEe(n.f,t,i)&&(ape(n.f,n.a[e][t],n.a[e][i]),c=n.a[e],o=c[i],c[i]=c[t],c[t]=o,r=!0),r}function RQ(n,e,t,i,r){var c,o,f;for(o=r;e.b!=e.c;)c=u(y2(e),10),f=u(zr(c,i).Xb(0),11),n.d[f.p]=o++,t.c[t.c.length]=f;return o}function _Q(n,e,t){var i,r,c,o,f;return o=n.k,f=e.k,i=t[o.g][f.g],r=Y(bb(n,i)),c=Y(bb(e,i)),y.Math.max((_n(r),r),(_n(c),c))}function H2e(n,e,t){var i,r,c,o;for(i=t/n.c.length,r=0,o=new E(n);o.a2e3&&(wzn=n,KA=y.setTimeout(Vie,10))),_A++==0?(E0e((aG(),din)),!0):!1}function G2e(n,e){var t,i,r;for(i=new re(ue(ei(n).a.Kc(),new An));Se(i);)if(t=u(ve(i),17),r=t.d.i,r.c==e)return!1;return!0}function KQ(n,e){var t,i;if(I(e,245)){i=u(e,245);try{return t=n.vd(i),t==0}catch(r){if(r=jt(r),!I(r,205))throw T(r)}}return!1}function z2e(){return Error.stackTraceLimit>0?(y.Error.stackTraceLimit=Error.stackTraceLimit=64,!0):"stack"in new Error}function U2e(n,e){return Zo(),Zo(),mo(Cl),(y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)?0:ne?1:pd(isNaN(n),isNaN(e)))>0}function HQ(n,e){return Zo(),Zo(),mo(Cl),(y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)?0:ne?1:pd(isNaN(n),isNaN(e)))<0}function y$n(n,e){return Zo(),Zo(),mo(Cl),(y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)?0:ne?1:pd(isNaN(n),isNaN(e)))<=0}function RF(n,e){for(var t=0;!e[t]||e[t]=="";)t++;for(var i=e[t++];tJL)return t.fh();if(i=t.Zg(),i||t==n)break}return i}function qQ(n){return dC(),I(n,156)?u(te($y,Azn),288).vg(n):Uu($y,$u(n))?u(te($y,$u(n)),288).vg(n):null}function X2e(n){if(DT(B4,n))return qn(),z4;if(DT(EB,n))return qn(),qa;throw T(new Hn("Expecting true or false"))}function V2e(n,e){if(e.c==n)return e.d;if(e.d==n)return e.c;throw T(new Hn("Input edge is not connected to the input port."))}function A$n(n,e){return n.e>e.e?1:n.ee.d?n.e:n.d=48&&n<48+y.Math.min(10,10)?n-48:n>=97&&n<97?n-97+10:n>=65&&n<65?n-65+10:-1}function P$n(n,e){var t;return B(e)===B(n)?!0:!I(e,21)||(t=u(e,21),t.gc()!=n.gc())?!1:n.Ic(t)}function Q2e(n,e){var t,i,r,c;return i=n.a.length-1,t=e-n.b&i,c=n.c-e&i,r=n.c-n.b&i,cjn(t=c?(Vwe(n,e),-1):(Qwe(n,e),1)}function J2e(n,e){var t,i;for(t=(Te(e,n.length),n.charCodeAt(e)),i=e+1;ie.e?1:n.fe.f?1:mt(n)-mt(e)}function DT(n,e){return _n(n),e==null?!1:Mn(n,e)?!0:n.length==e.length&&Mn(n.toLowerCase(),e.toLowerCase())}function upe(n,e){var t,i,r,c;for(i=0,r=e.gc();i0&&fc(n,128)<0?(e=ge(n)+128,t=(XEn(),Ein)[e],!t&&(t=Ein[e]=new pq(n)),t):new pq(n)}function O$n(n,e){var t,i;return t=e.Hh(n.a),t&&(i=Ce(Ko((!t.b&&(t.b=new Gu((Sn(),nr),tc,t)),t.b),We)),i!=null)?i:e.ne()}function spe(n,e){var t,i;return t=e.Hh(n.a),t&&(i=Ce(Ko((!t.b&&(t.b=new Gu((Sn(),nr),tc,t)),t.b),We)),i!=null)?i:e.ne()}function ope(n,e){c$();var t,i;for(i=new re(ue(Kh(n).a.Kc(),new An));Se(i);)if(t=u(ve(i),17),t.d.i==e||t.c.i==e)return t;return null}function UQ(n,e,t){this.c=n,this.f=new X,this.e=new Li,this.j=new eW,this.n=new eW,this.b=e,this.g=new ys(e.c,e.d,e.b,e.a),this.a=t}function _F(n){var e,t,i,r;for(this.a=new Sh,this.d=new hi,this.e=0,t=n,i=0,r=t.length;i0):!1}function F$n(n){var e;B(hn(n,(Xe(),Bg)))===B((_h(),HP))&&(Pt(n)?(e=u(hn(Pt(n),Bg),334),gr(n,Bg,e)):gr(n,Bg,i9))}function ape(n,e,t){var i,r;yx(n.e,e,t,(J(),Gn)),yx(n.i,e,t,Vn),n.a&&(r=u(k(e,(G(),rt)),11),i=u(k(t,rt),11),l$(n.g,r,i))}function x$n(n,e,t){var i,r,c;i=e.c.p,c=e.p,n.b[i][c]=new YTn(n,e),t&&(n.a[i][c]=new c6n(e),r=u(k(e,(G(),m0)),10),r&&Tn(n.d,r,e))}function L$n(n,e){var t,i,r;if(W(eS,n),e.Fc(n),t=u(te(DR,n),21),t)for(r=t.Kc();r.Ob();)i=u(r.Pb(),33),xr(eS,i,0)!=-1||L$n(i,e)}function dpe(n,e,t){var i;(Fzn?(m2e(n),!0):xzn||Nzn?(e3(),!0):Lzn&&(e3(),!1))&&(i=new hEn(e),i.b=t,g5e(n,i))}function KF(n,e){var t;t=!n.A.Hc((Qu(),id))||n.q==(Mi(),Ac),n.u.Hc((Mu(),n1))?t?xCe(n,e):a_n(n,e):n.u.Hc(Gl)&&(t?nCe(n,e):M_n(n,e))}function r4(n,e){var t,i;if(++n.j,e!=null&&(t=(i=n.a.Cb,I(i,97)?u(i,97).Jg():null),ome(e,t))){R2(n.a,4,t);return}R2(n.a,4,u(e,126))}function N$n(n,e,t){return new ys(y.Math.min(n.a,e.a)-t/2,y.Math.min(n.b,e.b)-t/2,y.Math.abs(n.a-e.a)+t,y.Math.abs(n.b-e.b)+t)}function bpe(n,e){var t,i;return t=Wc(n.a.c.p,e.a.c.p),t!=0?t:(i=Wc(n.a.d.i.p,e.a.d.i.p),i!=0?i:Wc(e.a.d.p,n.a.d.p))}function wpe(n,e,t){var i,r,c,o;return c=e.j,o=t.j,c!=o?c.g-o.g:(i=n.f[e.p],r=n.f[t.p],i==0&&r==0?0:i==0?-1:r==0?1:ni(i,r))}function B$n(n,e,t){var i,r,c;if(!t[e.d])for(t[e.d]=!0,r=new E(Hw(e));r.a=r)return r;for(e=e>0?e:0;ei&&St(e,i,null),e}function _$n(n,e){var t,i;for(i=n.a.length,e.lengthi&&St(e,i,null),e}function Aa(n,e,t){var i,r,c;return r=u(te(n.e,e),387),r?(c=gU(r,t),Oyn(n,r),c):(i=new qU(n,e,t),it(n.e,e,i),iMn(i),null)}function vpe(n){var e;if(n==null)return null;if(e=a9e(jc(n,!0)),e==null)throw T(new VI("Invalid hexBinary value: '"+n+"'"));return e}function m7(n){return jl(),fc(n,0)<0?fc(n,-1)!=0?new OJ(-1,P3(n)):gR:fc(n,10)<=0?xin[ge(n)]:new OJ(1,n)}function qF(){return SM(),A(M(yUn,1),z,159,0,[mUn,vUn,kUn,hUn,fUn,lUn,bUn,dUn,aUn,pUn,gUn,wUn,sUn,uUn,oUn,rUn,iUn,cUn,eUn,nUn,tUn,TR])}function K$n(n){var e;this.d=new X,this.j=new Li,this.g=new Li,e=n.g.b,this.f=u(k(Gi(e),(nn(),as)),103),this.e=K(Y(xT(e,nw)))}function H$n(n){this.b=new X,this.e=new X,this.d=n,this.a=!Wv(gt(new $n(null,new Cd(new sf(n.b))),new Fv(new qbn))).sd((ca(),V4))}function Ho(){Ho=N,Xn=new Z9("PARENTS",0),vi=new Z9("NODES",1),Zf=new Z9("EDGES",2),Ya=new Z9("PORTS",3),D1=new Z9("LABELS",4)}function qw(){qw=N,Hl=new e8("DISTRIBUTED",0),Cy=new e8("JUSTIFIED",1),Hhn=new e8("BEGIN",2),r9=new e8(I4,3),qhn=new e8("END",4)}function mpe(n){var e;switch(e=n.yi(null),e){case 10:return 0;case 15:return 1;case 14:return 2;case 11:return 3;case 21:return 4}return-1}function GF(n){switch(n.g){case 1:return sr(),Yh;case 4:return sr(),Zs;case 2:return sr(),Ao;case 3:return sr(),Jh}return sr(),kh}function kpe(n,e,t){var i;switch(i=t.q.getFullYear()-Tl+Tl,i<0&&(i=-i),e){case 1:n.a+=i;break;case 2:oh(n,i%100,2);break;default:oh(n,i,e)}}function _e(n,e){var t,i;if(tb(e,n.b),e>=n.b>>1)for(i=n.c,t=n.b;t>e;--t)i=i.b;else for(i=n.a.a,t=0;t=64&&e<128&&(r=cf(r,Ih(1,e-64)));return r}function xT(n,e){var t,i;return i=null,ai(n,(Xe(),Ap))&&(t=u(k(n,Ap),94),t.Xe(e)&&(i=t.We(e))),i==null&&Gi(n)&&(i=k(Gi(n),e)),i}function z$n(n,e){var t,i,r;r=e.d.i,i=r.k,!(i==(Qn(),ii)||i==mf)&&(t=new re(ue(ei(r).a.Kc(),new An)),Se(t)&&it(n.k,e,u(ve(t),17)))}function zF(n,e){var t,i,r;return i=On(n.Tg(),e),t=e-n.Ah(),t<0?(r=n.Yg(i),r>=0?n.lh(r):Ox(n,i)):t<0?Ox(n,i):u(i,66).Nj().Sj(n,n.yh(),t)}function cn(n){var e;if(I(n.a,4)){if(e=qQ(n.a),e==null)throw T(new $r(HHn+n.b+"'. "+KHn+(Ph(Fy),Fy.k)+Etn));return e}else return n.a}function Epe(n){var e;if(n==null)return null;if(e=qCe(jc(n,!0)),e==null)throw T(new VI("Invalid base64Binary value: '"+n+"'"));return e}function oe(n){var e;try{return e=n.i.Xb(n.e),n.mj(),n.g=n.e++,e}catch(t){throw t=jt(t),I(t,73)?(n.mj(),T(new ic)):T(t)}}function UF(n){var e;try{return e=n.c.ki(n.e),n.mj(),n.g=n.e++,e}catch(t){throw t=jt(t),I(t,73)?(n.mj(),T(new ic)):T(t)}}function a6(){a6=N,Trn=(Xe(),yhn),IR=Zfn,FUn=Tp,Crn=nd,BUn=(WT(),irn),NUn=ern,RUn=crn,LUn=nrn,xUn=(pF(),yrn),PR=OUn,Ern=DUn,nS=$Un}function LT(n){switch(DG(),this.c=new X,this.d=n,n.g){case 0:case 2:this.a=_W(qrn),this.b=Ft;break;case 3:case 1:this.a=qrn,this.b=Qt}}function U$n(n,e,t){var i,r;if(n.c)nu(n.c,n.c.i+e),eu(n.c,n.c.j+t);else for(r=new E(n.b);r.a0&&(W(n.b,new MEn(e.a,t)),i=e.a.length,0i&&(e.a+=Iyn(F(Ls,Rf,25,-i,15,1))))}function W$n(n,e){var t,i,r;for(t=n.o,r=u(u(ct(n.r,e),21),84).Kc();r.Ob();)i=u(r.Pb(),111),i.e.a=M3e(i,t.a),i.e.b=t.b*K(Y(i.b.We(JA)))}function Tpe(n,e){var t,i,r,c;return r=n.k,t=K(Y(k(n,(G(),k0)))),c=e.k,i=K(Y(k(e,k0))),c!=(Qn(),Xt)?-1:r!=Xt?1:t==i?0:t=0?n.hh(e,t,i):(n.eh()&&(i=(r=n.Vg(),r>=0?n.Qg(i):n.eh().ih(n,-1-r,null,i))),n.Sg(e,t,i))}function XQ(n,e){switch(e){case 7:!n.e&&(n.e=new Fn(bi,n,7,4)),de(n.e);return;case 8:!n.d&&(n.d=new Fn(bi,n,8,5)),de(n.d);return}FQ(n,e)}function qo(n,e){var t;t=n.Zc(e);try{return t.Pb()}catch(i){throw i=jt(i),I(i,109)?T(new mr("Can't get element "+e)):T(i)}}function VQ(n,e){this.e=n,e=0&&(t.d=n.t);break;case 3:n.t>=0&&(t.a=n.t)}n.C&&(t.b=n.C.b,t.c=n.C.c)}function K2(){K2=N,$k=new Rj(NM,0),Dk=new Rj(lN,1),Fk=new Rj(aN,2),xk=new Rj(dN,3),$k.a=!1,Dk.a=!0,Fk.a=!1,xk.a=!0}function d6(){d6=N,Lk=new Bj(NM,0),YA=new Bj(lN,1),ZA=new Bj(aN,2),Nk=new Bj(dN,3),Lk.a=!1,YA.a=!0,ZA.a=!1,Nk.a=!0}function Ipe(n){var e;e=n.a;do e=u(ve(new re(ue(Lr(e).a.Kc(),new An))),17).c.i,e.k==(Qn(),pi)&&n.b.Fc(e);while(e.k==(Qn(),pi));n.b=va(n.b)}function Ope(n){var e,t,i;for(i=n.c.a,n.p=(pe(i),new du(i)),t=new E(i);t.at.b)return!0}return!1}function WF(n,e){return ki(n)?!!ozn[e]:n.hm?!!n.hm[e]:G0(n)?!!szn[e]:q0(n)?!!uzn[e]:!1}function gr(n,e,t){return t==null?(!n.o&&(n.o=new Xu((Dc(),Ul),S0,n,0)),IT(n.o,e)):(!n.o&&(n.o=new Xu((Dc(),Ul),S0,n,0)),XT(n.o,e,t)),n}function xpe(n,e,t,i){var r,c;c=e.Xe((Xe(),_g))?u(e.We(_g),21):n.j,r=Cge(c),r!=(SM(),TR)&&(t&&!GQ(r)||nY(d9e(n,r,i),e))}function BT(n,e,t,i){var r,c,o;return c=On(n.Tg(),e),r=e-n.Ah(),r<0?(o=n.Yg(c),o>=0?n._g(o,t,!0):Yd(n,c,t)):u(c,66).Nj().Pj(n,n.yh(),r,t,i)}function Lpe(n,e,t,i){var r,c,o;t.mh(e)&&(er(),R$(e)?(r=u(t.ah(e),153),upe(n,r)):(c=(o=e,o?u(i,49).xh(o):null),c&&Bte(t.ah(e),c)))}function Npe(n){switch(n.g){case 1:return Hd(),Ok;case 3:return Hd(),Ik;case 2:return Hd(),AR;case 4:return Hd(),MR;default:return null}}function QQ(n){switch(typeof n){case EL:return m1(n);case UZ:return Gt(n);case X2:return qn(),n?1231:1237;default:return n==null?0:md(n)}}function Bpe(n,e,t){if(n.e)switch(n.b){case 1:d1e(n.c,e,t);break;case 0:b1e(n.c,e,t)}else xAn(n.c,e,t);n.a[e.p][t.p]=n.c.i,n.a[t.p][e.p]=n.c.e}function Y$n(n){var e,t;if(n==null)return null;for(t=F(mh,q,193,n.length,0,2),e=0;e=0)return r;if(n.Fk()){for(i=0;i=r)throw T(new V0(e,r));if(n.hi()&&(i=n.Xc(t),i>=0&&i!=e))throw T(new Hn(yk));return n.mi(e,t)}function JQ(n,e){if(this.a=u(pe(n),245),this.b=u(pe(e),245),n.vd(e)>0||n==(qI(),cR)||e==(HI(),uR))throw T(new Hn("Invalid range: "+OAn(n,e)))}function Z$n(n){var e,t;for(this.b=new X,this.c=n,this.a=!1,t=new E(n.a);t.a0),(e&-e)==e)return Gt(e*xu(n,31)*4656612873077393e-25);do t=xu(n,31),i=t%e;while(t-i+(e-1)<0);return Gt(i)}function m1(n){lEn();var e,t,i;return t=":"+n,i=XA[t],i!=null?Gt((_n(i),i)):(i=Xin[t],e=i==null?I8e(n):Gt((_n(i),i)),c1e(),XA[t]=e,e)}function eFn(n,e,t){le(t,"Compound graph preprocessor",1),n.a=new Od,s_n(n,e,null),pje(n,e),Z9e(n),H(e,(G(),dun),n.a),n.a=null,Cu(n.b),ce(t)}function Kpe(n,e,t){switch(t.g){case 1:n.a=e.a/2,n.b=0;break;case 2:n.a=e.a,n.b=e.b/2;break;case 3:n.a=e.a/2,n.b=e.b;break;case 4:n.a=0,n.b=e.b/2}}function Hpe(n){var e,t,i;for(i=u(ct(n.a,(Vw(),IS)),15).Kc();i.Ob();)t=u(i.Pb(),101),e=hJ(t),b3(n,t,e[0],(Kd(),w0),0),b3(n,t,e[1],g0,1)}function qpe(n){var e,t,i;for(i=u(ct(n.a,(Vw(),OS)),15).Kc();i.Ob();)t=u(i.Pb(),101),e=hJ(t),b3(n,t,e[0],(Kd(),w0),0),b3(n,t,e[1],g0,1)}function XF(n){switch(n.g){case 0:return null;case 1:return new eOn;case 2:return new oG;default:throw T(new Hn(lB+(n.f!=null?n.f:""+n.g)))}}function k7(n,e,t){var i,r;for(lwe(n,e-n.s,t-n.t),r=new E(n.n);r.a1&&(c=_pe(n,e)),c}function VF(n){var e;return n.f&&n.f.kh()&&(e=u(n.f,49),n.f=u(pl(n,e),82),n.f!=e&&n.Db&4&&!(n.Db&1)&&et(n,new gi(n,9,8,e,n.f))),n.f}function QF(n){var e;return n.i&&n.i.kh()&&(e=u(n.i,49),n.i=u(pl(n,e),82),n.i!=e&&n.Db&4&&!(n.Db&1)&&et(n,new gi(n,9,7,e,n.i))),n.i}function ir(n){var e;return n.b&&n.b.Db&64&&(e=n.b,n.b=u(pl(n,e),18),n.b!=e&&n.Db&4&&!(n.Db&1)&&et(n,new gi(n,9,21,e,n.b))),n.b}function KT(n,e){var t,i,r;n.d==null?(++n.e,++n.f):(i=e.Sh(),u8e(n,n.f+1),r=(i&nt)%n.d.length,t=n.d[r],!t&&(t=n.d[r]=n.uj()),t.Fc(e),++n.f)}function nJ(n,e,t){var i;return e.Kj()?!1:e.Zj()!=-2?(i=e.zj(),i==null?t==null:tt(i,t)):e.Hj()==n.e.Tg()&&t==null}function HT(){var n;rs(16,J_n),n=UIn(16),this.b=F(oR,nk,317,n,0,1),this.c=F(oR,nk,317,n,0,1),this.a=null,this.e=null,this.i=0,this.f=n-1,this.g=0}function qh(n){vU.call(this),this.k=(Qn(),ii),this.j=(rs(6,Pb),new Pc(6)),this.b=(rs(2,Pb),new Pc(2)),this.d=new NI,this.f=new Zq,this.a=n}function zpe(n){var e,t;n.c.length<=1||(e=ZNn(n,(J(),ae)),Kxn(n,u(e.a,19).a,u(e.b,19).a),t=ZNn(n,Gn),Kxn(n,u(t.a,19).a,u(t.b,19).a))}function b6(){b6=N,zsn=new V9("SIMPLE",0),nK=new V9(PN,1),eK=new V9("LINEAR_SEGMENTS",2),Lm=new V9("BRANDES_KOEPF",3),Nm=new V9(EHn,4)}function eJ(n,e,t){p2(u(k(e,(nn(),Lt)),98))||(VX(n,e,k1(e,t)),VX(n,e,k1(e,(J(),ae))),VX(n,e,k1(e,Kn)),Pn(),wi(e.j,new i6n(n)))}function tFn(n,e,t,i){var r,c,o;for(r=u(ct(i?n.a:n.b,e),21),o=r.Kc();o.Ob();)if(c=u(o.Pb(),33),aM(n,t,c))return!0;return!1}function JF(n){var e,t;for(t=new ie(n);t.e!=t.i.gc();)if(e=u(oe(t),87),e.e||(!e.d&&(e.d=new Yt(ar,e,1)),e.d).i!=0)return!0;return!1}function YF(n){var e,t;for(t=new ie(n);t.e!=t.i.gc();)if(e=u(oe(t),87),e.e||(!e.d&&(e.d=new Yt(ar,e,1)),e.d).i!=0)return!0;return!1}function Upe(n){var e,t,i;for(e=0,i=new E(n.c.a);i.a102?-1:n<=57?n-48:n<65?-1:n<=70?n-65+10:n<97?-1:n-97+10}function ex(n,e){if(n==null)throw T(new c2("null key in entry: null="+e));if(e==null)throw T(new c2("null value in entry: "+n+"=null"))}function Wpe(n,e){for(var t,i;n.Ob();)if(!e.Ob()||(t=n.Pb(),i=e.Pb(),!(B(t)===B(i)||t!=null&&tt(t,i))))return!1;return!e.Ob()}function rFn(n,e){var t;return t=A(M(Ei,1),pr,25,15,[kF(n.a[0],e),kF(n.a[1],e),kF(n.a[2],e)]),n.d&&(t[0]=y.Math.max(t[0],t[2]),t[2]=t[0]),t}function cFn(n,e){var t;return t=A(M(Ei,1),pr,25,15,[pT(n.a[0],e),pT(n.a[1],e),pT(n.a[2],e)]),n.d&&(t[0]=y.Math.max(t[0],t[2]),t[2]=t[0]),t}function Pa(){Pa=N,f_=new X9("GREEDY",0),Gcn=new X9(fHn,1),h_=new X9(PN,2),Em=new X9("MODEL_ORDER",3),jm=new X9("GREEDY_MODEL_ORDER",4)}function uFn(n,e){var t,i,r;for(n.b[e.g]=1,i=_e(e.d,0);i.b!=i.d.c;)t=u(Re(i),188),r=t.c,n.b[r.g]==1?Ke(n.a,t):n.b[r.g]==2?n.b[r.g]=1:uFn(n,r)}function Xpe(n,e){var t,i,r;for(r=new Pc(e.gc()),i=e.Kc();i.Ob();)t=u(i.Pb(),286),t.c==t.f?l4(n,t,t.c):U5e(n,t)||(r.c[r.c.length]=t);return r}function Vpe(n,e,t){var i,r,c,o,f;for(f=n.r+e,n.r+=e,n.d+=t,i=t/n.n.c.length,r=0,o=new E(n.n);o.ac&&St(e,c,null),e}function f3e(n,e){var t,i;if(i=n.gc(),e==null){for(t=0;t0&&(h+=r),l[a]=o,o+=f*(h+i)}function bFn(n){var e,t,i;for(i=n.f,n.n=F(Ei,pr,25,i,15,1),n.d=F(Ei,pr,25,i,15,1),e=0;e0?n.c:0),++r;n.b=i,n.d=c}function g3e(n,e){var t,i,r,c,o;for(i=0,r=0,t=0,o=new E(e);o.a0?n.g:0),++t;n.c=r,n.d=i}function mFn(n,e){var t;return t=A(M(Ei,1),pr,25,15,[ZQ(n,(_o(),Zr),e),ZQ(n,Fc,e),ZQ(n,nc,e)]),n.f&&(t[0]=y.Math.max(t[0],t[2]),t[2]=t[0]),t}function p3e(n,e,t){var i;try{wM(n,e+n.j,t+n.k,!1,!0)}catch(r){throw r=jt(r),I(r,73)?(i=r,T(new mr(i.g+RM+e+Ji+t+")."))):T(r)}}function v3e(n,e,t){var i;try{wM(n,e+n.j,t+n.k,!0,!1)}catch(r){throw r=jt(r),I(r,73)?(i=r,T(new mr(i.g+RM+e+Ji+t+")."))):T(r)}}function kFn(n){var e;ai(n,(nn(),y0))&&(e=u(k(n,y0),21),e.Hc((jb(),So))?(e.Mc(So),e.Fc(Po)):e.Hc(Po)&&(e.Mc(Po),e.Fc(So)))}function yFn(n){var e;ai(n,(nn(),y0))&&(e=u(k(n,y0),21),e.Hc((jb(),Oo))?(e.Mc(Oo),e.Fc(eo)):e.Hc(eo)&&(e.Mc(eo),e.Fc(Oo)))}function m3e(n,e,t){le(t,"Self-Loop ordering",1),Rt(Vc(gt(gt(qr(new $n(null,new xn(e.b,16)),new P0n),new I0n),new O0n),new D0n),new O5n(n)),ce(t)}function j7(n,e,t,i){var r,c;for(r=e;r0&&(r.b+=e),r}function zT(n,e){var t,i,r;for(r=new Li,i=n.Kc();i.Ob();)t=u(i.Pb(),37),M6(t,0,r.b),r.b+=t.f.b+e,r.a=y.Math.max(r.a,t.f.a);return r.a>0&&(r.a+=e),r}function EFn(n){var e,t,i;for(i=nt,t=new E(n.a);t.a>16==6?n.Cb.ih(n,5,Vo,e):(i=ir(u(On((t=u(Rn(n,16),26),t||n.zh()),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function C3e(n){k3();var e=n.e;if(e&&e.stack){var t=e.stack,i=e+`
                   `;return t.substring(0,i.length)==i&&(t=t.substring(i.length)),t.split(`
                  diff --git a/assets/ganttDiagram-db6931fb-PbozmIQo.js b/assets/ganttDiagram-db6931fb-lnA5WCr2.js
                  similarity index 99%
                  rename from assets/ganttDiagram-db6931fb-PbozmIQo.js
                  rename to assets/ganttDiagram-db6931fb-lnA5WCr2.js
                  index cfc6ecd..6679b35 100644
                  --- a/assets/ganttDiagram-db6931fb-PbozmIQo.js
                  +++ b/assets/ganttDiagram-db6931fb-lnA5WCr2.js
                  @@ -1,4 +1,4 @@
                  -import{au as Be,av as Ze,aw as Xe,ax as qe,ay as Dn,az as Kt,aA as Mn,aB as ye,aC as ke,aD as nt,c as xt,s as Sn,g as _n,v as Un,x as Yn,b as Fn,a as Ln,z as En,m as An,l as qt,h as Pt,i as In,j as Wn,y as On}from"./mermaid.core-ygY5oRaR.js";import{b as zn,t as Ue,c as Hn,a as Nn,l as Vn}from"./linear-qWzY0BiT.js";import{i as Pn}from"./init-Hi12RPRh.js";import"./app-RP31lnfq.js";function Rn(t,e){let n;if(e===void 0)for(const r of t)r!=null&&(n=r)&&(n=r);else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(n=i)&&(n=i)}return n}function Bn(t,e){let n;if(e===void 0)for(const r of t)r!=null&&(n>r||n===void 0&&r>=r)&&(n=r);else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Zn(t){return t}var Bt=1,te=2,ue=3,Rt=4,Ye=1e-6;function Xn(t){return"translate("+t+",0)"}function qn(t){return"translate(0,"+t+")"}function Gn(t){return e=>+t(e)}function jn(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function Qn(){return!this.__axis}function Ge(t,e){var n=[],r=null,i=null,s=6,a=6,y=3,_=typeof window<"u"&&window.devicePixelRatio>1?0:.5,k=t===Bt||t===Rt?-1:1,C=t===Rt||t===te?"x":"y",F=t===Bt||t===ue?Xn:qn;function w(x){var q=r??(e.ticks?e.ticks.apply(e,n):e.domain()),g=i??(e.tickFormat?e.tickFormat.apply(e,n):Zn),L=Math.max(s,0)+y,O=e.range(),W=+O[0]+_,B=+O[O.length-1]+_,Z=(e.bandwidth?jn:Gn)(e.copy(),_),Q=x.selection?x.selection():x,v=Q.selectAll(".domain").data([null]),A=Q.selectAll(".tick").data(q,e).order(),T=A.exit(),Y=A.enter().append("g").attr("class","tick"),D=A.select("line"),b=A.select("text");v=v.merge(v.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),A=A.merge(Y),D=D.merge(Y.append("line").attr("stroke","currentColor").attr(C+"2",k*s)),b=b.merge(Y.append("text").attr("fill","currentColor").attr(C,k*L).attr("dy",t===Bt?"0em":t===ue?"0.71em":"0.32em")),x!==Q&&(v=v.transition(x),A=A.transition(x),D=D.transition(x),b=b.transition(x),T=T.transition(x).attr("opacity",Ye).attr("transform",function(o){return isFinite(o=Z(o))?F(o+_):this.getAttribute("transform")}),Y.attr("opacity",Ye).attr("transform",function(o){var d=this.parentNode.__axis;return F((d&&isFinite(d=d(o))?d:Z(o))+_)})),T.remove(),v.attr("d",t===Rt||t===te?a?"M"+k*a+","+W+"H"+_+"V"+B+"H"+k*a:"M"+_+","+W+"V"+B:a?"M"+W+","+k*a+"V"+_+"H"+B+"V"+k*a:"M"+W+","+_+"H"+B),A.attr("opacity",1).attr("transform",function(o){return F(Z(o)+_)}),D.attr(C+"2",k*s),b.attr(C,k*L).text(g),Q.filter(Qn).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===te?"start":t===Rt?"end":"middle"),Q.each(function(){this.__axis=Z})}return w.scale=function(x){return arguments.length?(e=x,w):e},w.ticks=function(){return n=Array.from(arguments),w},w.tickArguments=function(x){return arguments.length?(n=x==null?[]:Array.from(x),w):n.slice()},w.tickValues=function(x){return arguments.length?(r=x==null?null:Array.from(x),w):r&&r.slice()},w.tickFormat=function(x){return arguments.length?(i=x,w):i},w.tickSize=function(x){return arguments.length?(s=a=+x,w):s},w.tickSizeInner=function(x){return arguments.length?(s=+x,w):s},w.tickSizeOuter=function(x){return arguments.length?(a=+x,w):a},w.tickPadding=function(x){return arguments.length?(y=+x,w):y},w.offset=function(x){return arguments.length?(_=+x,w):_},w}function $n(t){return Ge(Bt,t)}function Jn(t){return Ge(ue,t)}const Kn=Math.PI/180,tr=180/Math.PI,Gt=18,je=.96422,Qe=1,$e=.82521,Je=4/29,wt=6/29,Ke=3*wt*wt,er=wt*wt*wt;function tn(t){if(t instanceof ot)return new ot(t.l,t.a,t.b,t.opacity);if(t instanceof ut)return en(t);t instanceof Xe||(t=Dn(t));var e=ie(t.r),n=ie(t.g),r=ie(t.b),i=ee((.2225045*e+.7168786*n+.0606169*r)/Qe),s,a;return e===n&&n===r?s=a=i:(s=ee((.4360747*e+.3850649*n+.1430804*r)/je),a=ee((.0139322*e+.0971045*n+.7141733*r)/$e)),new ot(116*i-16,500*(s-i),200*(i-a),t.opacity)}function nr(t,e,n,r){return arguments.length===1?tn(t):new ot(t,e,n,r??1)}function ot(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Be(ot,nr,Ze(qe,{brighter(t){return new ot(this.l+Gt*(t??1),this.a,this.b,this.opacity)},darker(t){return new ot(this.l-Gt*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=je*ne(e),t=Qe*ne(t),n=$e*ne(n),new Xe(re(3.1338561*e-1.6168667*t-.4906146*n),re(-.9787684*e+1.9161415*t+.033454*n),re(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ee(t){return t>er?Math.pow(t,1/3):t/Ke+Je}function ne(t){return t>wt?t*t*t:Ke*(t-Je)}function re(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ie(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function rr(t){if(t instanceof ut)return new ut(t.h,t.c,t.l,t.opacity);if(t instanceof ot||(t=tn(t)),t.a===0&&t.b===0)return new ut(NaN,0(t(s=new Date(+s)),s),i.ceil=s=>(t(s=new Date(s-1)),e(s,1),t(s),s),i.round=s=>{const a=i(s),y=i.ceil(s);return s-a(e(s=new Date(+s),a==null?1:Math.floor(a)),s),i.range=(s,a,y)=>{const _=[];if(s=i.ceil(s),y=y==null?1:Math.floor(y),!(s0))return _;let k;do _.push(k=new Date(+s)),e(s,y),t(s);while(kK(a=>{if(a>=a)for(;t(a),!s(a);)a.setTime(a-1)},(a,y)=>{if(a>=a)if(y<0)for(;++y<=0;)for(;e(a,-1),!s(a););else for(;--y>=0;)for(;e(a,1),!s(a););}),n&&(i.count=(s,a)=>(se.setTime(+s),ae.setTime(+a),t(se),t(ae),Math.floor(n(se,ae))),i.every=s=>(s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?a=>r(a)%s===0:a=>i.count(0,a)%s===0):i)),i}const Dt=K(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);Dt.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?K(e=>{e.setTime(Math.floor(e/t)*t)},(e,n)=>{e.setTime(+e+n*t)},(e,n)=>(n-e)/t):Dt);Dt.range;const ft=1e3,rt=ft*60,ht=rt*60,dt=ht*24,pe=dt*7,Fe=dt*30,oe=dt*365,gt=K(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*ft)},(t,e)=>(e-t)/ft,t=>t.getUTCSeconds());gt.range;const Et=K(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ft)},(t,e)=>{t.setTime(+t+e*rt)},(t,e)=>(e-t)/rt,t=>t.getMinutes());Et.range;const or=K(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*rt)},(t,e)=>(e-t)/rt,t=>t.getUTCMinutes());or.range;const At=K(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ft-t.getMinutes()*rt)},(t,e)=>{t.setTime(+t+e*ht)},(t,e)=>(e-t)/ht,t=>t.getHours());At.range;const cr=K(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*ht)},(t,e)=>(e-t)/ht,t=>t.getUTCHours());cr.range;const yt=K(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*rt)/dt,t=>t.getDate()-1);yt.range;const Te=K(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/dt,t=>t.getUTCDate()-1);Te.range;const lr=K(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/dt,t=>Math.floor(t/dt));lr.range;function Tt(t){return K(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,n)=>{e.setDate(e.getDate()+n*7)},(e,n)=>(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*rt)/pe)}const Ot=Tt(0),It=Tt(1),nn=Tt(2),rn=Tt(3),kt=Tt(4),sn=Tt(5),an=Tt(6);Ot.range;It.range;nn.range;rn.range;kt.range;sn.range;an.range;function vt(t){return K(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n*7)},(e,n)=>(n-e)/pe)}const on=vt(0),jt=vt(1),ur=vt(2),fr=vt(3),Mt=vt(4),hr=vt(5),dr=vt(6);on.range;jt.range;ur.range;fr.range;Mt.range;hr.range;dr.range;const Wt=K(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth());Wt.range;const mr=K(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth());mr.range;const mt=K(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());mt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:K(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n*t)});mt.range;const pt=K(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());pt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:K(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)});pt.range;function gr(t,e,n,r,i,s){const a=[[gt,1,ft],[gt,5,5*ft],[gt,15,15*ft],[gt,30,30*ft],[s,1,rt],[s,5,5*rt],[s,15,15*rt],[s,30,30*rt],[i,1,ht],[i,3,3*ht],[i,6,6*ht],[i,12,12*ht],[r,1,dt],[r,2,2*dt],[n,1,pe],[e,1,Fe],[e,3,3*Fe],[t,1,oe]];function y(k,C,F){const w=CL).right(a,w);if(x===a.length)return t.every(Ue(k/oe,C/oe,F));if(x===0)return Dt.every(Math.max(Ue(k,C,F),1));const[q,g]=a[w/a[x-1][2]53)return null;"w"in l||(l.w=1),"Z"in l?(H=le(Yt(l.y,0,1)),j=H.getUTCDay(),H=j>4||j===0?jt.ceil(H):jt(H),H=Te.offset(H,(l.V-1)*7),l.y=H.getUTCFullYear(),l.m=H.getUTCMonth(),l.d=H.getUTCDate()+(l.w+6)%7):(H=ce(Yt(l.y,0,1)),j=H.getDay(),H=j>4||j===0?It.ceil(H):It(H),H=yt.offset(H,(l.V-1)*7),l.y=H.getFullYear(),l.m=H.getMonth(),l.d=H.getDate()+(l.w+6)%7)}else("W"in l||"U"in l)&&("w"in l||(l.w="u"in l?l.u%7:"W"in l?1:0),j="Z"in l?le(Yt(l.y,0,1)).getUTCDay():ce(Yt(l.y,0,1)).getDay(),l.m=0,l.d="W"in l?(l.w+6)%7+l.W*7-(j+5)%7:l.w+l.U*7-(j+6)%7);return"Z"in l?(l.H+=l.Z/100|0,l.M+=l.Z%100,le(l)):ce(l)}}function T(p,E,M,l){for(var R=0,H=E.length,j=M.length,$,et;R=j)return-1;if($=E.charCodeAt(R++),$===37){if($=E.charAt(R++),et=Q[$ in Le?E.charAt(R++):$],!et||(l=et(p,M,l))<0)return-1}else if($!=M.charCodeAt(l++))return-1}return l}function Y(p,E,M){var l=k.exec(E.slice(M));return l?(p.p=C.get(l[0].toLowerCase()),M+l[0].length):-1}function D(p,E,M){var l=x.exec(E.slice(M));return l?(p.w=q.get(l[0].toLowerCase()),M+l[0].length):-1}function b(p,E,M){var l=F.exec(E.slice(M));return l?(p.w=w.get(l[0].toLowerCase()),M+l[0].length):-1}function o(p,E,M){var l=O.exec(E.slice(M));return l?(p.m=W.get(l[0].toLowerCase()),M+l[0].length):-1}function d(p,E,M){var l=g.exec(E.slice(M));return l?(p.m=L.get(l[0].toLowerCase()),M+l[0].length):-1}function m(p,E,M){return T(p,e,E,M)}function u(p,E,M){return T(p,n,E,M)}function S(p,E,M){return T(p,r,E,M)}function c(p){return a[p.getDay()]}function X(p){return s[p.getDay()]}function f(p){return _[p.getMonth()]}function h(p){return y[p.getMonth()]}function U(p){return i[+(p.getHours()>=12)]}function G(p){return 1+~~(p.getMonth()/3)}function z(p){return a[p.getUTCDay()]}function N(p){return s[p.getUTCDay()]}function I(p){return _[p.getUTCMonth()]}function V(p){return y[p.getUTCMonth()]}function st(p){return i[+(p.getUTCHours()>=12)]}function it(p){return 1+~~(p.getUTCMonth()/3)}return{format:function(p){var E=v(p+="",B);return E.toString=function(){return p},E},parse:function(p){var E=A(p+="",!1);return E.toString=function(){return p},E},utcFormat:function(p){var E=v(p+="",Z);return E.toString=function(){return p},E},utcParse:function(p){var E=A(p+="",!0);return E.toString=function(){return p},E}}}var Le={"-":"",_:" ",0:"0"},tt=/^\s*\d+/,Tr=/^%/,vr=/[\\^$*+?|[\]().{}]/g;function P(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",s=i.length;return r+(s[e.toLowerCase(),n]))}function xr(t,e,n){var r=tt.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function wr(t,e,n){var r=tt.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Cr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Dr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Mr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Ee(t,e,n){var r=tt.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Ae(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Sr(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function _r(t,e,n){var r=tt.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Ur(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Ie(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Yr(t,e,n){var r=tt.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function We(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Fr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Lr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Er(t,e,n){var r=tt.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Ar(t,e,n){var r=tt.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Ir(t,e,n){var r=Tr.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Wr(t,e,n){var r=tt.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Or(t,e,n){var r=tt.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Oe(t,e){return P(t.getDate(),e,2)}function zr(t,e){return P(t.getHours(),e,2)}function Hr(t,e){return P(t.getHours()%12||12,e,2)}function Nr(t,e){return P(1+yt.count(mt(t),t),e,3)}function cn(t,e){return P(t.getMilliseconds(),e,3)}function Vr(t,e){return cn(t,e)+"000"}function Pr(t,e){return P(t.getMonth()+1,e,2)}function Rr(t,e){return P(t.getMinutes(),e,2)}function Br(t,e){return P(t.getSeconds(),e,2)}function Zr(t){var e=t.getDay();return e===0?7:e}function Xr(t,e){return P(Ot.count(mt(t)-1,t),e,2)}function ln(t){var e=t.getDay();return e>=4||e===0?kt(t):kt.ceil(t)}function qr(t,e){return t=ln(t),P(kt.count(mt(t),t)+(mt(t).getDay()===4),e,2)}function Gr(t){return t.getDay()}function jr(t,e){return P(It.count(mt(t)-1,t),e,2)}function Qr(t,e){return P(t.getFullYear()%100,e,2)}function $r(t,e){return t=ln(t),P(t.getFullYear()%100,e,2)}function Jr(t,e){return P(t.getFullYear()%1e4,e,4)}function Kr(t,e){var n=t.getDay();return t=n>=4||n===0?kt(t):kt.ceil(t),P(t.getFullYear()%1e4,e,4)}function ti(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+P(e/60|0,"0",2)+P(e%60,"0",2)}function ze(t,e){return P(t.getUTCDate(),e,2)}function ei(t,e){return P(t.getUTCHours(),e,2)}function ni(t,e){return P(t.getUTCHours()%12||12,e,2)}function ri(t,e){return P(1+Te.count(pt(t),t),e,3)}function un(t,e){return P(t.getUTCMilliseconds(),e,3)}function ii(t,e){return un(t,e)+"000"}function si(t,e){return P(t.getUTCMonth()+1,e,2)}function ai(t,e){return P(t.getUTCMinutes(),e,2)}function oi(t,e){return P(t.getUTCSeconds(),e,2)}function ci(t){var e=t.getUTCDay();return e===0?7:e}function li(t,e){return P(on.count(pt(t)-1,t),e,2)}function fn(t){var e=t.getUTCDay();return e>=4||e===0?Mt(t):Mt.ceil(t)}function ui(t,e){return t=fn(t),P(Mt.count(pt(t),t)+(pt(t).getUTCDay()===4),e,2)}function fi(t){return t.getUTCDay()}function hi(t,e){return P(jt.count(pt(t)-1,t),e,2)}function di(t,e){return P(t.getUTCFullYear()%100,e,2)}function mi(t,e){return t=fn(t),P(t.getUTCFullYear()%100,e,2)}function gi(t,e){return P(t.getUTCFullYear()%1e4,e,4)}function yi(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Mt(t):Mt.ceil(t),P(t.getUTCFullYear()%1e4,e,4)}function ki(){return"+0000"}function He(){return"%"}function Ne(t){return+t}function Ve(t){return Math.floor(+t/1e3)}var bt,Qt;pi({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function pi(t){return bt=pr(t),Qt=bt.format,bt.parse,bt.utcFormat,bt.utcParse,bt}function Ti(t){return new Date(t)}function vi(t){return t instanceof Date?+t:+new Date(+t)}function hn(t,e,n,r,i,s,a,y,_,k){var C=Hn(),F=C.invert,w=C.domain,x=k(".%L"),q=k(":%S"),g=k("%I:%M"),L=k("%I %p"),O=k("%a %d"),W=k("%b %d"),B=k("%B"),Z=k("%Y");function Q(v){return(_(v)4&&(x+=7),w.add(x,n));return q.diff(g,"week")+1},y.isoWeekday=function(k){return this.$utils().u(k)?this.day()||7:this.day(this.day()%7?k:k-7)};var _=y.startOf;y.startOf=function(k,C){var F=this.$utils(),w=!!F.u(C)||C;return F.p(k)==="isoweek"?w?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):_.bind(this)(k,C)}}})})(dn);var xi=dn.exports;const wi=ke(xi);var mn={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(ye,function(){var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},r=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,i=/\d\d/,s=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,y={},_=function(g){return(g=+g)+(g>68?1900:2e3)},k=function(g){return function(L){this[g]=+L}},C=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(L){if(!L||L==="Z")return 0;var O=L.match(/([+-]|\d\d)/g),W=60*O[1]+(+O[2]||0);return W===0?0:O[0]==="+"?-W:W}(g)}],F=function(g){var L=y[g];return L&&(L.indexOf?L:L.s.concat(L.f))},w=function(g,L){var O,W=y.meridiem;if(W){for(var B=1;B<=24;B+=1)if(g.indexOf(W(B,0,L))>-1){O=B>12;break}}else O=g===(L?"pm":"PM");return O},x={A:[a,function(g){this.afternoon=w(g,!1)}],a:[a,function(g){this.afternoon=w(g,!0)}],S:[/\d/,function(g){this.milliseconds=100*+g}],SS:[i,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[s,k("seconds")],ss:[s,k("seconds")],m:[s,k("minutes")],mm:[s,k("minutes")],H:[s,k("hours")],h:[s,k("hours")],HH:[s,k("hours")],hh:[s,k("hours")],D:[s,k("day")],DD:[i,k("day")],Do:[a,function(g){var L=y.ordinal,O=g.match(/\d+/);if(this.day=O[0],L)for(var W=1;W<=31;W+=1)L(W).replace(/\[|\]/g,"")===g&&(this.day=W)}],M:[s,k("month")],MM:[i,k("month")],MMM:[a,function(g){var L=F("months"),O=(F("monthsShort")||L.map(function(W){return W.slice(0,3)})).indexOf(g)+1;if(O<1)throw new Error;this.month=O%12||O}],MMMM:[a,function(g){var L=F("months").indexOf(g)+1;if(L<1)throw new Error;this.month=L%12||L}],Y:[/[+-]?\d+/,k("year")],YY:[i,function(g){this.year=_(g)}],YYYY:[/\d{4}/,k("year")],Z:C,ZZ:C};function q(g){var L,O;L=g,O=y&&y.formats;for(var W=(g=L.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(Y,D,b){var o=b&&b.toUpperCase();return D||O[b]||n[b]||O[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(d,m,u){return m||u.slice(1)})})).match(r),B=W.length,Z=0;Z-1)return new Date((c==="X"?1e3:1)*S);var f=q(c)(S),h=f.year,U=f.month,G=f.day,z=f.hours,N=f.minutes,I=f.seconds,V=f.milliseconds,st=f.zone,it=new Date,p=G||(h||U?1:it.getDate()),E=h||it.getFullYear(),M=0;h&&!U||(M=U>0?U-1:it.getMonth());var l=z||0,R=N||0,H=I||0,j=V||0;return st?new Date(Date.UTC(E,M,p,l,R,H,j+60*st.offset*1e3)):X?new Date(Date.UTC(E,M,p,l,R,H,j)):new Date(E,M,p,l,R,H,j)}catch{return new Date("")}}(Q,T,v),this.init(),o&&o!==!0&&(this.$L=this.locale(o).$L),b&&Q!=this.format(T)&&(this.$d=new Date("")),y={}}else if(T instanceof Array)for(var d=T.length,m=1;m<=d;m+=1){A[1]=T[m-1];var u=O.apply(this,A);if(u.isValid()){this.$d=u.$d,this.$L=u.$L,this.init();break}m===d&&(this.$d=new Date(""))}else B.call(this,Z)}}})})(mn);var Ci=mn.exports;const Di=ke(Ci);var gn={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(ye,function(){return function(n,r){var i=r.prototype,s=i.format;i.format=function(a){var y=this,_=this.$locale();if(!this.isValid())return s.bind(this)(a);var k=this.$utils(),C=(a||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(F){switch(F){case"Q":return Math.ceil((y.$M+1)/3);case"Do":return _.ordinal(y.$D);case"gggg":return y.weekYear();case"GGGG":return y.isoWeekYear();case"wo":return _.ordinal(y.week(),"W");case"w":case"ww":return k.s(y.week(),F==="w"?1:2,"0");case"W":case"WW":return k.s(y.isoWeek(),F==="W"?1:2,"0");case"k":case"kk":return k.s(String(y.$H===0?24:y.$H),F==="k"?1:2,"0");case"X":return Math.floor(y.$d.getTime()/1e3);case"x":return y.$d.getTime();case"z":return"["+y.offsetName()+"]";case"zzz":return"["+y.offsetName("long")+"]";default:return F}});return s.bind(this)(C)}}})})(gn);var Mi=gn.exports;const Si=ke(Mi);var he=function(){var t=function(b,o,d,m){for(d=d||{},m=b.length;m--;d[b[m]]=o);return d},e=[6,8,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,32,33,35,37],n=[1,25],r=[1,26],i=[1,27],s=[1,28],a=[1,29],y=[1,30],_=[1,31],k=[1,9],C=[1,10],F=[1,11],w=[1,12],x=[1,13],q=[1,14],g=[1,15],L=[1,16],O=[1,18],W=[1,19],B=[1,20],Z=[1,21],Q=[1,22],v=[1,24],A=[1,32],T={trace:function(){},yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,dateFormat:19,inclusiveEndDates:20,topAxis:21,axisFormat:22,tickInterval:23,excludes:24,includes:25,todayMarker:26,title:27,acc_title:28,acc_title_value:29,acc_descr:30,acc_descr_value:31,acc_descr_multiline_value:32,section:33,clickStatement:34,taskTxt:35,taskData:36,click:37,callbackname:38,callbackargs:39,href:40,clickStatementDebug:41,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",19:"dateFormat",20:"inclusiveEndDates",21:"topAxis",22:"axisFormat",23:"tickInterval",24:"excludes",25:"includes",26:"todayMarker",27:"title",28:"acc_title",29:"acc_title_value",30:"acc_descr",31:"acc_descr_value",32:"acc_descr_multiline_value",33:"section",35:"taskTxt",36:"taskData",37:"click",38:"callbackname",39:"callbackargs",40:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[34,2],[34,3],[34,3],[34,4],[34,3],[34,4],[34,2],[41,2],[41,3],[41,3],[41,4],[41,3],[41,4],[41,2]],performAction:function(o,d,m,u,S,c,X){var f=c.length-1;switch(S){case 1:return c[f-1];case 2:this.$=[];break;case 3:c[f-1].push(c[f]),this.$=c[f-1];break;case 4:case 5:this.$=c[f];break;case 6:case 7:this.$=[];break;case 8:u.setWeekday("monday");break;case 9:u.setWeekday("tuesday");break;case 10:u.setWeekday("wednesday");break;case 11:u.setWeekday("thursday");break;case 12:u.setWeekday("friday");break;case 13:u.setWeekday("saturday");break;case 14:u.setWeekday("sunday");break;case 15:u.setDateFormat(c[f].substr(11)),this.$=c[f].substr(11);break;case 16:u.enableInclusiveEndDates(),this.$=c[f].substr(18);break;case 17:u.TopAxis(),this.$=c[f].substr(8);break;case 18:u.setAxisFormat(c[f].substr(11)),this.$=c[f].substr(11);break;case 19:u.setTickInterval(c[f].substr(13)),this.$=c[f].substr(13);break;case 20:u.setExcludes(c[f].substr(9)),this.$=c[f].substr(9);break;case 21:u.setIncludes(c[f].substr(9)),this.$=c[f].substr(9);break;case 22:u.setTodayMarker(c[f].substr(12)),this.$=c[f].substr(12);break;case 24:u.setDiagramTitle(c[f].substr(6)),this.$=c[f].substr(6);break;case 25:this.$=c[f].trim(),u.setAccTitle(this.$);break;case 26:case 27:this.$=c[f].trim(),u.setAccDescription(this.$);break;case 28:u.addSection(c[f].substr(8)),this.$=c[f].substr(8);break;case 30:u.addTask(c[f-1],c[f]),this.$="task";break;case 31:this.$=c[f-1],u.setClickEvent(c[f-1],c[f],null);break;case 32:this.$=c[f-2],u.setClickEvent(c[f-2],c[f-1],c[f]);break;case 33:this.$=c[f-2],u.setClickEvent(c[f-2],c[f-1],null),u.setLink(c[f-2],c[f]);break;case 34:this.$=c[f-3],u.setClickEvent(c[f-3],c[f-2],c[f-1]),u.setLink(c[f-3],c[f]);break;case 35:this.$=c[f-2],u.setClickEvent(c[f-2],c[f],null),u.setLink(c[f-2],c[f-1]);break;case 36:this.$=c[f-3],u.setClickEvent(c[f-3],c[f-1],c[f]),u.setLink(c[f-3],c[f-2]);break;case 37:this.$=c[f-1],u.setLink(c[f-1],c[f]);break;case 38:case 44:this.$=c[f-1]+" "+c[f];break;case 39:case 40:case 42:this.$=c[f-2]+" "+c[f-1]+" "+c[f];break;case 41:case 43:this.$=c[f-3]+" "+c[f-2]+" "+c[f-1]+" "+c[f];break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:r,14:i,15:s,16:a,17:y,18:_,19:k,20:C,21:F,22:w,23:x,24:q,25:g,26:L,27:O,28:W,30:B,32:Z,33:Q,34:23,35:v,37:A},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:33,11:17,12:n,13:r,14:i,15:s,16:a,17:y,18:_,19:k,20:C,21:F,22:w,23:x,24:q,25:g,26:L,27:O,28:W,30:B,32:Z,33:Q,34:23,35:v,37:A},t(e,[2,5]),t(e,[2,6]),t(e,[2,15]),t(e,[2,16]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),{29:[1,34]},{31:[1,35]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),{36:[1,36]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),{38:[1,37],40:[1,38]},t(e,[2,4]),t(e,[2,25]),t(e,[2,26]),t(e,[2,30]),t(e,[2,31],{39:[1,39],40:[1,40]}),t(e,[2,37],{38:[1,41]}),t(e,[2,32],{40:[1,42]}),t(e,[2,33]),t(e,[2,35],{39:[1,43]}),t(e,[2,34]),t(e,[2,36])],defaultActions:{},parseError:function(o,d){if(d.recoverable)this.trace(o);else{var m=new Error(o);throw m.hash=d,m}},parse:function(o){var d=this,m=[0],u=[],S=[null],c=[],X=this.table,f="",h=0,U=0,G=2,z=1,N=c.slice.call(arguments,1),I=Object.create(this.lexer),V={yy:{}};for(var st in this.yy)Object.prototype.hasOwnProperty.call(this.yy,st)&&(V.yy[st]=this.yy[st]);I.setInput(o,V.yy),V.yy.lexer=I,V.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var it=I.yylloc;c.push(it);var p=I.options&&I.options.ranges;typeof V.yy.parseError=="function"?this.parseError=V.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function E(){var ct;return ct=u.pop()||I.lex()||z,typeof ct!="number"&&(ct instanceof Array&&(u=ct,ct=u.pop()),ct=d.symbols_[ct]||ct),ct}for(var M,l,R,H,j={},$,et,Ut,Vt;;){if(l=m[m.length-1],this.defaultActions[l]?R=this.defaultActions[l]:((M===null||typeof M>"u")&&(M=E()),R=X[l]&&X[l][M]),typeof R>"u"||!R.length||!R[0]){var Jt="";Vt=[];for($ in X[l])this.terminals_[$]&&$>G&&Vt.push("'"+this.terminals_[$]+"'");I.showPosition?Jt="Parse error on line "+(h+1)+`:
                  +import{au as Be,av as Ze,aw as Xe,ax as qe,ay as Dn,az as Kt,aA as Mn,aB as ye,aC as ke,aD as nt,c as xt,s as Sn,g as _n,v as Un,x as Yn,b as Fn,a as Ln,z as En,m as An,l as qt,h as Pt,i as In,j as Wn,y as On}from"./mermaid.core-YBgJFCkH.js";import{b as zn,t as Ue,c as Hn,a as Nn,l as Vn}from"./linear-nks6njEu.js";import{i as Pn}from"./init-Hi12RPRh.js";import"./app-0NopiYEV.js";function Rn(t,e){let n;if(e===void 0)for(const r of t)r!=null&&(n=r)&&(n=r);else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(n=i)&&(n=i)}return n}function Bn(t,e){let n;if(e===void 0)for(const r of t)r!=null&&(n>r||n===void 0&&r>=r)&&(n=r);else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Zn(t){return t}var Bt=1,te=2,ue=3,Rt=4,Ye=1e-6;function Xn(t){return"translate("+t+",0)"}function qn(t){return"translate(0,"+t+")"}function Gn(t){return e=>+t(e)}function jn(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function Qn(){return!this.__axis}function Ge(t,e){var n=[],r=null,i=null,s=6,a=6,y=3,_=typeof window<"u"&&window.devicePixelRatio>1?0:.5,k=t===Bt||t===Rt?-1:1,C=t===Rt||t===te?"x":"y",F=t===Bt||t===ue?Xn:qn;function w(x){var q=r??(e.ticks?e.ticks.apply(e,n):e.domain()),g=i??(e.tickFormat?e.tickFormat.apply(e,n):Zn),L=Math.max(s,0)+y,O=e.range(),W=+O[0]+_,B=+O[O.length-1]+_,Z=(e.bandwidth?jn:Gn)(e.copy(),_),Q=x.selection?x.selection():x,v=Q.selectAll(".domain").data([null]),A=Q.selectAll(".tick").data(q,e).order(),T=A.exit(),Y=A.enter().append("g").attr("class","tick"),D=A.select("line"),b=A.select("text");v=v.merge(v.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),A=A.merge(Y),D=D.merge(Y.append("line").attr("stroke","currentColor").attr(C+"2",k*s)),b=b.merge(Y.append("text").attr("fill","currentColor").attr(C,k*L).attr("dy",t===Bt?"0em":t===ue?"0.71em":"0.32em")),x!==Q&&(v=v.transition(x),A=A.transition(x),D=D.transition(x),b=b.transition(x),T=T.transition(x).attr("opacity",Ye).attr("transform",function(o){return isFinite(o=Z(o))?F(o+_):this.getAttribute("transform")}),Y.attr("opacity",Ye).attr("transform",function(o){var d=this.parentNode.__axis;return F((d&&isFinite(d=d(o))?d:Z(o))+_)})),T.remove(),v.attr("d",t===Rt||t===te?a?"M"+k*a+","+W+"H"+_+"V"+B+"H"+k*a:"M"+_+","+W+"V"+B:a?"M"+W+","+k*a+"V"+_+"H"+B+"V"+k*a:"M"+W+","+_+"H"+B),A.attr("opacity",1).attr("transform",function(o){return F(Z(o)+_)}),D.attr(C+"2",k*s),b.attr(C,k*L).text(g),Q.filter(Qn).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===te?"start":t===Rt?"end":"middle"),Q.each(function(){this.__axis=Z})}return w.scale=function(x){return arguments.length?(e=x,w):e},w.ticks=function(){return n=Array.from(arguments),w},w.tickArguments=function(x){return arguments.length?(n=x==null?[]:Array.from(x),w):n.slice()},w.tickValues=function(x){return arguments.length?(r=x==null?null:Array.from(x),w):r&&r.slice()},w.tickFormat=function(x){return arguments.length?(i=x,w):i},w.tickSize=function(x){return arguments.length?(s=a=+x,w):s},w.tickSizeInner=function(x){return arguments.length?(s=+x,w):s},w.tickSizeOuter=function(x){return arguments.length?(a=+x,w):a},w.tickPadding=function(x){return arguments.length?(y=+x,w):y},w.offset=function(x){return arguments.length?(_=+x,w):_},w}function $n(t){return Ge(Bt,t)}function Jn(t){return Ge(ue,t)}const Kn=Math.PI/180,tr=180/Math.PI,Gt=18,je=.96422,Qe=1,$e=.82521,Je=4/29,wt=6/29,Ke=3*wt*wt,er=wt*wt*wt;function tn(t){if(t instanceof ot)return new ot(t.l,t.a,t.b,t.opacity);if(t instanceof ut)return en(t);t instanceof Xe||(t=Dn(t));var e=ie(t.r),n=ie(t.g),r=ie(t.b),i=ee((.2225045*e+.7168786*n+.0606169*r)/Qe),s,a;return e===n&&n===r?s=a=i:(s=ee((.4360747*e+.3850649*n+.1430804*r)/je),a=ee((.0139322*e+.0971045*n+.7141733*r)/$e)),new ot(116*i-16,500*(s-i),200*(i-a),t.opacity)}function nr(t,e,n,r){return arguments.length===1?tn(t):new ot(t,e,n,r??1)}function ot(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Be(ot,nr,Ze(qe,{brighter(t){return new ot(this.l+Gt*(t??1),this.a,this.b,this.opacity)},darker(t){return new ot(this.l-Gt*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=je*ne(e),t=Qe*ne(t),n=$e*ne(n),new Xe(re(3.1338561*e-1.6168667*t-.4906146*n),re(-.9787684*e+1.9161415*t+.033454*n),re(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ee(t){return t>er?Math.pow(t,1/3):t/Ke+Je}function ne(t){return t>wt?t*t*t:Ke*(t-Je)}function re(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ie(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function rr(t){if(t instanceof ut)return new ut(t.h,t.c,t.l,t.opacity);if(t instanceof ot||(t=tn(t)),t.a===0&&t.b===0)return new ut(NaN,0(t(s=new Date(+s)),s),i.ceil=s=>(t(s=new Date(s-1)),e(s,1),t(s),s),i.round=s=>{const a=i(s),y=i.ceil(s);return s-a(e(s=new Date(+s),a==null?1:Math.floor(a)),s),i.range=(s,a,y)=>{const _=[];if(s=i.ceil(s),y=y==null?1:Math.floor(y),!(s0))return _;let k;do _.push(k=new Date(+s)),e(s,y),t(s);while(kK(a=>{if(a>=a)for(;t(a),!s(a);)a.setTime(a-1)},(a,y)=>{if(a>=a)if(y<0)for(;++y<=0;)for(;e(a,-1),!s(a););else for(;--y>=0;)for(;e(a,1),!s(a););}),n&&(i.count=(s,a)=>(se.setTime(+s),ae.setTime(+a),t(se),t(ae),Math.floor(n(se,ae))),i.every=s=>(s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?a=>r(a)%s===0:a=>i.count(0,a)%s===0):i)),i}const Dt=K(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);Dt.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?K(e=>{e.setTime(Math.floor(e/t)*t)},(e,n)=>{e.setTime(+e+n*t)},(e,n)=>(n-e)/t):Dt);Dt.range;const ft=1e3,rt=ft*60,ht=rt*60,dt=ht*24,pe=dt*7,Fe=dt*30,oe=dt*365,gt=K(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*ft)},(t,e)=>(e-t)/ft,t=>t.getUTCSeconds());gt.range;const Et=K(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ft)},(t,e)=>{t.setTime(+t+e*rt)},(t,e)=>(e-t)/rt,t=>t.getMinutes());Et.range;const or=K(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*rt)},(t,e)=>(e-t)/rt,t=>t.getUTCMinutes());or.range;const At=K(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ft-t.getMinutes()*rt)},(t,e)=>{t.setTime(+t+e*ht)},(t,e)=>(e-t)/ht,t=>t.getHours());At.range;const cr=K(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*ht)},(t,e)=>(e-t)/ht,t=>t.getUTCHours());cr.range;const yt=K(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*rt)/dt,t=>t.getDate()-1);yt.range;const Te=K(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/dt,t=>t.getUTCDate()-1);Te.range;const lr=K(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/dt,t=>Math.floor(t/dt));lr.range;function Tt(t){return K(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,n)=>{e.setDate(e.getDate()+n*7)},(e,n)=>(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*rt)/pe)}const Ot=Tt(0),It=Tt(1),nn=Tt(2),rn=Tt(3),kt=Tt(4),sn=Tt(5),an=Tt(6);Ot.range;It.range;nn.range;rn.range;kt.range;sn.range;an.range;function vt(t){return K(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n*7)},(e,n)=>(n-e)/pe)}const on=vt(0),jt=vt(1),ur=vt(2),fr=vt(3),Mt=vt(4),hr=vt(5),dr=vt(6);on.range;jt.range;ur.range;fr.range;Mt.range;hr.range;dr.range;const Wt=K(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth());Wt.range;const mr=K(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth());mr.range;const mt=K(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());mt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:K(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n*t)});mt.range;const pt=K(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());pt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:K(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)});pt.range;function gr(t,e,n,r,i,s){const a=[[gt,1,ft],[gt,5,5*ft],[gt,15,15*ft],[gt,30,30*ft],[s,1,rt],[s,5,5*rt],[s,15,15*rt],[s,30,30*rt],[i,1,ht],[i,3,3*ht],[i,6,6*ht],[i,12,12*ht],[r,1,dt],[r,2,2*dt],[n,1,pe],[e,1,Fe],[e,3,3*Fe],[t,1,oe]];function y(k,C,F){const w=CL).right(a,w);if(x===a.length)return t.every(Ue(k/oe,C/oe,F));if(x===0)return Dt.every(Math.max(Ue(k,C,F),1));const[q,g]=a[w/a[x-1][2]53)return null;"w"in l||(l.w=1),"Z"in l?(H=le(Yt(l.y,0,1)),j=H.getUTCDay(),H=j>4||j===0?jt.ceil(H):jt(H),H=Te.offset(H,(l.V-1)*7),l.y=H.getUTCFullYear(),l.m=H.getUTCMonth(),l.d=H.getUTCDate()+(l.w+6)%7):(H=ce(Yt(l.y,0,1)),j=H.getDay(),H=j>4||j===0?It.ceil(H):It(H),H=yt.offset(H,(l.V-1)*7),l.y=H.getFullYear(),l.m=H.getMonth(),l.d=H.getDate()+(l.w+6)%7)}else("W"in l||"U"in l)&&("w"in l||(l.w="u"in l?l.u%7:"W"in l?1:0),j="Z"in l?le(Yt(l.y,0,1)).getUTCDay():ce(Yt(l.y,0,1)).getDay(),l.m=0,l.d="W"in l?(l.w+6)%7+l.W*7-(j+5)%7:l.w+l.U*7-(j+6)%7);return"Z"in l?(l.H+=l.Z/100|0,l.M+=l.Z%100,le(l)):ce(l)}}function T(p,E,M,l){for(var R=0,H=E.length,j=M.length,$,et;R=j)return-1;if($=E.charCodeAt(R++),$===37){if($=E.charAt(R++),et=Q[$ in Le?E.charAt(R++):$],!et||(l=et(p,M,l))<0)return-1}else if($!=M.charCodeAt(l++))return-1}return l}function Y(p,E,M){var l=k.exec(E.slice(M));return l?(p.p=C.get(l[0].toLowerCase()),M+l[0].length):-1}function D(p,E,M){var l=x.exec(E.slice(M));return l?(p.w=q.get(l[0].toLowerCase()),M+l[0].length):-1}function b(p,E,M){var l=F.exec(E.slice(M));return l?(p.w=w.get(l[0].toLowerCase()),M+l[0].length):-1}function o(p,E,M){var l=O.exec(E.slice(M));return l?(p.m=W.get(l[0].toLowerCase()),M+l[0].length):-1}function d(p,E,M){var l=g.exec(E.slice(M));return l?(p.m=L.get(l[0].toLowerCase()),M+l[0].length):-1}function m(p,E,M){return T(p,e,E,M)}function u(p,E,M){return T(p,n,E,M)}function S(p,E,M){return T(p,r,E,M)}function c(p){return a[p.getDay()]}function X(p){return s[p.getDay()]}function f(p){return _[p.getMonth()]}function h(p){return y[p.getMonth()]}function U(p){return i[+(p.getHours()>=12)]}function G(p){return 1+~~(p.getMonth()/3)}function z(p){return a[p.getUTCDay()]}function N(p){return s[p.getUTCDay()]}function I(p){return _[p.getUTCMonth()]}function V(p){return y[p.getUTCMonth()]}function st(p){return i[+(p.getUTCHours()>=12)]}function it(p){return 1+~~(p.getUTCMonth()/3)}return{format:function(p){var E=v(p+="",B);return E.toString=function(){return p},E},parse:function(p){var E=A(p+="",!1);return E.toString=function(){return p},E},utcFormat:function(p){var E=v(p+="",Z);return E.toString=function(){return p},E},utcParse:function(p){var E=A(p+="",!0);return E.toString=function(){return p},E}}}var Le={"-":"",_:" ",0:"0"},tt=/^\s*\d+/,Tr=/^%/,vr=/[\\^$*+?|[\]().{}]/g;function P(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",s=i.length;return r+(s[e.toLowerCase(),n]))}function xr(t,e,n){var r=tt.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function wr(t,e,n){var r=tt.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Cr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Dr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Mr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Ee(t,e,n){var r=tt.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Ae(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Sr(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function _r(t,e,n){var r=tt.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Ur(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Ie(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Yr(t,e,n){var r=tt.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function We(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Fr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Lr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Er(t,e,n){var r=tt.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Ar(t,e,n){var r=tt.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Ir(t,e,n){var r=Tr.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Wr(t,e,n){var r=tt.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Or(t,e,n){var r=tt.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Oe(t,e){return P(t.getDate(),e,2)}function zr(t,e){return P(t.getHours(),e,2)}function Hr(t,e){return P(t.getHours()%12||12,e,2)}function Nr(t,e){return P(1+yt.count(mt(t),t),e,3)}function cn(t,e){return P(t.getMilliseconds(),e,3)}function Vr(t,e){return cn(t,e)+"000"}function Pr(t,e){return P(t.getMonth()+1,e,2)}function Rr(t,e){return P(t.getMinutes(),e,2)}function Br(t,e){return P(t.getSeconds(),e,2)}function Zr(t){var e=t.getDay();return e===0?7:e}function Xr(t,e){return P(Ot.count(mt(t)-1,t),e,2)}function ln(t){var e=t.getDay();return e>=4||e===0?kt(t):kt.ceil(t)}function qr(t,e){return t=ln(t),P(kt.count(mt(t),t)+(mt(t).getDay()===4),e,2)}function Gr(t){return t.getDay()}function jr(t,e){return P(It.count(mt(t)-1,t),e,2)}function Qr(t,e){return P(t.getFullYear()%100,e,2)}function $r(t,e){return t=ln(t),P(t.getFullYear()%100,e,2)}function Jr(t,e){return P(t.getFullYear()%1e4,e,4)}function Kr(t,e){var n=t.getDay();return t=n>=4||n===0?kt(t):kt.ceil(t),P(t.getFullYear()%1e4,e,4)}function ti(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+P(e/60|0,"0",2)+P(e%60,"0",2)}function ze(t,e){return P(t.getUTCDate(),e,2)}function ei(t,e){return P(t.getUTCHours(),e,2)}function ni(t,e){return P(t.getUTCHours()%12||12,e,2)}function ri(t,e){return P(1+Te.count(pt(t),t),e,3)}function un(t,e){return P(t.getUTCMilliseconds(),e,3)}function ii(t,e){return un(t,e)+"000"}function si(t,e){return P(t.getUTCMonth()+1,e,2)}function ai(t,e){return P(t.getUTCMinutes(),e,2)}function oi(t,e){return P(t.getUTCSeconds(),e,2)}function ci(t){var e=t.getUTCDay();return e===0?7:e}function li(t,e){return P(on.count(pt(t)-1,t),e,2)}function fn(t){var e=t.getUTCDay();return e>=4||e===0?Mt(t):Mt.ceil(t)}function ui(t,e){return t=fn(t),P(Mt.count(pt(t),t)+(pt(t).getUTCDay()===4),e,2)}function fi(t){return t.getUTCDay()}function hi(t,e){return P(jt.count(pt(t)-1,t),e,2)}function di(t,e){return P(t.getUTCFullYear()%100,e,2)}function mi(t,e){return t=fn(t),P(t.getUTCFullYear()%100,e,2)}function gi(t,e){return P(t.getUTCFullYear()%1e4,e,4)}function yi(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Mt(t):Mt.ceil(t),P(t.getUTCFullYear()%1e4,e,4)}function ki(){return"+0000"}function He(){return"%"}function Ne(t){return+t}function Ve(t){return Math.floor(+t/1e3)}var bt,Qt;pi({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function pi(t){return bt=pr(t),Qt=bt.format,bt.parse,bt.utcFormat,bt.utcParse,bt}function Ti(t){return new Date(t)}function vi(t){return t instanceof Date?+t:+new Date(+t)}function hn(t,e,n,r,i,s,a,y,_,k){var C=Hn(),F=C.invert,w=C.domain,x=k(".%L"),q=k(":%S"),g=k("%I:%M"),L=k("%I %p"),O=k("%a %d"),W=k("%b %d"),B=k("%B"),Z=k("%Y");function Q(v){return(_(v)4&&(x+=7),w.add(x,n));return q.diff(g,"week")+1},y.isoWeekday=function(k){return this.$utils().u(k)?this.day()||7:this.day(this.day()%7?k:k-7)};var _=y.startOf;y.startOf=function(k,C){var F=this.$utils(),w=!!F.u(C)||C;return F.p(k)==="isoweek"?w?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):_.bind(this)(k,C)}}})})(dn);var xi=dn.exports;const wi=ke(xi);var mn={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(ye,function(){var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},r=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,i=/\d\d/,s=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,y={},_=function(g){return(g=+g)+(g>68?1900:2e3)},k=function(g){return function(L){this[g]=+L}},C=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(L){if(!L||L==="Z")return 0;var O=L.match(/([+-]|\d\d)/g),W=60*O[1]+(+O[2]||0);return W===0?0:O[0]==="+"?-W:W}(g)}],F=function(g){var L=y[g];return L&&(L.indexOf?L:L.s.concat(L.f))},w=function(g,L){var O,W=y.meridiem;if(W){for(var B=1;B<=24;B+=1)if(g.indexOf(W(B,0,L))>-1){O=B>12;break}}else O=g===(L?"pm":"PM");return O},x={A:[a,function(g){this.afternoon=w(g,!1)}],a:[a,function(g){this.afternoon=w(g,!0)}],S:[/\d/,function(g){this.milliseconds=100*+g}],SS:[i,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[s,k("seconds")],ss:[s,k("seconds")],m:[s,k("minutes")],mm:[s,k("minutes")],H:[s,k("hours")],h:[s,k("hours")],HH:[s,k("hours")],hh:[s,k("hours")],D:[s,k("day")],DD:[i,k("day")],Do:[a,function(g){var L=y.ordinal,O=g.match(/\d+/);if(this.day=O[0],L)for(var W=1;W<=31;W+=1)L(W).replace(/\[|\]/g,"")===g&&(this.day=W)}],M:[s,k("month")],MM:[i,k("month")],MMM:[a,function(g){var L=F("months"),O=(F("monthsShort")||L.map(function(W){return W.slice(0,3)})).indexOf(g)+1;if(O<1)throw new Error;this.month=O%12||O}],MMMM:[a,function(g){var L=F("months").indexOf(g)+1;if(L<1)throw new Error;this.month=L%12||L}],Y:[/[+-]?\d+/,k("year")],YY:[i,function(g){this.year=_(g)}],YYYY:[/\d{4}/,k("year")],Z:C,ZZ:C};function q(g){var L,O;L=g,O=y&&y.formats;for(var W=(g=L.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(Y,D,b){var o=b&&b.toUpperCase();return D||O[b]||n[b]||O[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(d,m,u){return m||u.slice(1)})})).match(r),B=W.length,Z=0;Z-1)return new Date((c==="X"?1e3:1)*S);var f=q(c)(S),h=f.year,U=f.month,G=f.day,z=f.hours,N=f.minutes,I=f.seconds,V=f.milliseconds,st=f.zone,it=new Date,p=G||(h||U?1:it.getDate()),E=h||it.getFullYear(),M=0;h&&!U||(M=U>0?U-1:it.getMonth());var l=z||0,R=N||0,H=I||0,j=V||0;return st?new Date(Date.UTC(E,M,p,l,R,H,j+60*st.offset*1e3)):X?new Date(Date.UTC(E,M,p,l,R,H,j)):new Date(E,M,p,l,R,H,j)}catch{return new Date("")}}(Q,T,v),this.init(),o&&o!==!0&&(this.$L=this.locale(o).$L),b&&Q!=this.format(T)&&(this.$d=new Date("")),y={}}else if(T instanceof Array)for(var d=T.length,m=1;m<=d;m+=1){A[1]=T[m-1];var u=O.apply(this,A);if(u.isValid()){this.$d=u.$d,this.$L=u.$L,this.init();break}m===d&&(this.$d=new Date(""))}else B.call(this,Z)}}})})(mn);var Ci=mn.exports;const Di=ke(Ci);var gn={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(ye,function(){return function(n,r){var i=r.prototype,s=i.format;i.format=function(a){var y=this,_=this.$locale();if(!this.isValid())return s.bind(this)(a);var k=this.$utils(),C=(a||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(F){switch(F){case"Q":return Math.ceil((y.$M+1)/3);case"Do":return _.ordinal(y.$D);case"gggg":return y.weekYear();case"GGGG":return y.isoWeekYear();case"wo":return _.ordinal(y.week(),"W");case"w":case"ww":return k.s(y.week(),F==="w"?1:2,"0");case"W":case"WW":return k.s(y.isoWeek(),F==="W"?1:2,"0");case"k":case"kk":return k.s(String(y.$H===0?24:y.$H),F==="k"?1:2,"0");case"X":return Math.floor(y.$d.getTime()/1e3);case"x":return y.$d.getTime();case"z":return"["+y.offsetName()+"]";case"zzz":return"["+y.offsetName("long")+"]";default:return F}});return s.bind(this)(C)}}})})(gn);var Mi=gn.exports;const Si=ke(Mi);var he=function(){var t=function(b,o,d,m){for(d=d||{},m=b.length;m--;d[b[m]]=o);return d},e=[6,8,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,32,33,35,37],n=[1,25],r=[1,26],i=[1,27],s=[1,28],a=[1,29],y=[1,30],_=[1,31],k=[1,9],C=[1,10],F=[1,11],w=[1,12],x=[1,13],q=[1,14],g=[1,15],L=[1,16],O=[1,18],W=[1,19],B=[1,20],Z=[1,21],Q=[1,22],v=[1,24],A=[1,32],T={trace:function(){},yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,dateFormat:19,inclusiveEndDates:20,topAxis:21,axisFormat:22,tickInterval:23,excludes:24,includes:25,todayMarker:26,title:27,acc_title:28,acc_title_value:29,acc_descr:30,acc_descr_value:31,acc_descr_multiline_value:32,section:33,clickStatement:34,taskTxt:35,taskData:36,click:37,callbackname:38,callbackargs:39,href:40,clickStatementDebug:41,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",19:"dateFormat",20:"inclusiveEndDates",21:"topAxis",22:"axisFormat",23:"tickInterval",24:"excludes",25:"includes",26:"todayMarker",27:"title",28:"acc_title",29:"acc_title_value",30:"acc_descr",31:"acc_descr_value",32:"acc_descr_multiline_value",33:"section",35:"taskTxt",36:"taskData",37:"click",38:"callbackname",39:"callbackargs",40:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[34,2],[34,3],[34,3],[34,4],[34,3],[34,4],[34,2],[41,2],[41,3],[41,3],[41,4],[41,3],[41,4],[41,2]],performAction:function(o,d,m,u,S,c,X){var f=c.length-1;switch(S){case 1:return c[f-1];case 2:this.$=[];break;case 3:c[f-1].push(c[f]),this.$=c[f-1];break;case 4:case 5:this.$=c[f];break;case 6:case 7:this.$=[];break;case 8:u.setWeekday("monday");break;case 9:u.setWeekday("tuesday");break;case 10:u.setWeekday("wednesday");break;case 11:u.setWeekday("thursday");break;case 12:u.setWeekday("friday");break;case 13:u.setWeekday("saturday");break;case 14:u.setWeekday("sunday");break;case 15:u.setDateFormat(c[f].substr(11)),this.$=c[f].substr(11);break;case 16:u.enableInclusiveEndDates(),this.$=c[f].substr(18);break;case 17:u.TopAxis(),this.$=c[f].substr(8);break;case 18:u.setAxisFormat(c[f].substr(11)),this.$=c[f].substr(11);break;case 19:u.setTickInterval(c[f].substr(13)),this.$=c[f].substr(13);break;case 20:u.setExcludes(c[f].substr(9)),this.$=c[f].substr(9);break;case 21:u.setIncludes(c[f].substr(9)),this.$=c[f].substr(9);break;case 22:u.setTodayMarker(c[f].substr(12)),this.$=c[f].substr(12);break;case 24:u.setDiagramTitle(c[f].substr(6)),this.$=c[f].substr(6);break;case 25:this.$=c[f].trim(),u.setAccTitle(this.$);break;case 26:case 27:this.$=c[f].trim(),u.setAccDescription(this.$);break;case 28:u.addSection(c[f].substr(8)),this.$=c[f].substr(8);break;case 30:u.addTask(c[f-1],c[f]),this.$="task";break;case 31:this.$=c[f-1],u.setClickEvent(c[f-1],c[f],null);break;case 32:this.$=c[f-2],u.setClickEvent(c[f-2],c[f-1],c[f]);break;case 33:this.$=c[f-2],u.setClickEvent(c[f-2],c[f-1],null),u.setLink(c[f-2],c[f]);break;case 34:this.$=c[f-3],u.setClickEvent(c[f-3],c[f-2],c[f-1]),u.setLink(c[f-3],c[f]);break;case 35:this.$=c[f-2],u.setClickEvent(c[f-2],c[f],null),u.setLink(c[f-2],c[f-1]);break;case 36:this.$=c[f-3],u.setClickEvent(c[f-3],c[f-1],c[f]),u.setLink(c[f-3],c[f-2]);break;case 37:this.$=c[f-1],u.setLink(c[f-1],c[f]);break;case 38:case 44:this.$=c[f-1]+" "+c[f];break;case 39:case 40:case 42:this.$=c[f-2]+" "+c[f-1]+" "+c[f];break;case 41:case 43:this.$=c[f-3]+" "+c[f-2]+" "+c[f-1]+" "+c[f];break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:r,14:i,15:s,16:a,17:y,18:_,19:k,20:C,21:F,22:w,23:x,24:q,25:g,26:L,27:O,28:W,30:B,32:Z,33:Q,34:23,35:v,37:A},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:33,11:17,12:n,13:r,14:i,15:s,16:a,17:y,18:_,19:k,20:C,21:F,22:w,23:x,24:q,25:g,26:L,27:O,28:W,30:B,32:Z,33:Q,34:23,35:v,37:A},t(e,[2,5]),t(e,[2,6]),t(e,[2,15]),t(e,[2,16]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),{29:[1,34]},{31:[1,35]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),{36:[1,36]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),{38:[1,37],40:[1,38]},t(e,[2,4]),t(e,[2,25]),t(e,[2,26]),t(e,[2,30]),t(e,[2,31],{39:[1,39],40:[1,40]}),t(e,[2,37],{38:[1,41]}),t(e,[2,32],{40:[1,42]}),t(e,[2,33]),t(e,[2,35],{39:[1,43]}),t(e,[2,34]),t(e,[2,36])],defaultActions:{},parseError:function(o,d){if(d.recoverable)this.trace(o);else{var m=new Error(o);throw m.hash=d,m}},parse:function(o){var d=this,m=[0],u=[],S=[null],c=[],X=this.table,f="",h=0,U=0,G=2,z=1,N=c.slice.call(arguments,1),I=Object.create(this.lexer),V={yy:{}};for(var st in this.yy)Object.prototype.hasOwnProperty.call(this.yy,st)&&(V.yy[st]=this.yy[st]);I.setInput(o,V.yy),V.yy.lexer=I,V.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var it=I.yylloc;c.push(it);var p=I.options&&I.options.ranges;typeof V.yy.parseError=="function"?this.parseError=V.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function E(){var ct;return ct=u.pop()||I.lex()||z,typeof ct!="number"&&(ct instanceof Array&&(u=ct,ct=u.pop()),ct=d.symbols_[ct]||ct),ct}for(var M,l,R,H,j={},$,et,Ut,Vt;;){if(l=m[m.length-1],this.defaultActions[l]?R=this.defaultActions[l]:((M===null||typeof M>"u")&&(M=E()),R=X[l]&&X[l][M]),typeof R>"u"||!R.length||!R[0]){var Jt="";Vt=[];for($ in X[l])this.terminals_[$]&&$>G&&Vt.push("'"+this.terminals_[$]+"'");I.showPosition?Jt="Parse error on line "+(h+1)+`:
                   `+I.showPosition()+`
                   Expecting `+Vt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":Jt="Parse error on line "+(h+1)+": Unexpected "+(M==z?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(Jt,{text:I.match,token:this.terminals_[M]||M,line:I.yylineno,loc:it,expected:Vt})}if(R[0]instanceof Array&&R.length>1)throw new Error("Parse Error: multiple actions possible at state: "+l+", token: "+M);switch(R[0]){case 1:m.push(M),S.push(I.yytext),c.push(I.yylloc),m.push(R[1]),M=null,U=I.yyleng,f=I.yytext,h=I.yylineno,it=I.yylloc;break;case 2:if(et=this.productions_[R[1]][1],j.$=S[S.length-et],j._$={first_line:c[c.length-(et||1)].first_line,last_line:c[c.length-1].last_line,first_column:c[c.length-(et||1)].first_column,last_column:c[c.length-1].last_column},p&&(j._$.range=[c[c.length-(et||1)].range[0],c[c.length-1].range[1]]),H=this.performAction.apply(j,[f,U,h,V.yy,R[1],S,c].concat(N)),typeof H<"u")return H;et&&(m=m.slice(0,-1*et*2),S=S.slice(0,-1*et),c=c.slice(0,-1*et)),m.push(this.productions_[R[1]][0]),S.push(j.$),c.push(j._$),Ut=X[m[m.length-2]][m[m.length-1]],m.push(Ut);break;case 3:return!0}}return!0}},Y=function(){var b={EOF:1,parseError:function(d,m){if(this.yy.parser)this.yy.parser.parseError(d,m);else throw new Error(d)},setInput:function(o,d){return this.yy=d||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var d=o.match(/(?:\r\n?|\n).*/g);return d?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},unput:function(o){var d=o.length,m=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-d),this.offset-=d;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),m.length-1&&(this.yylineno-=m.length-1);var S=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:m?(m.length===u.length?this.yylloc.first_column:0)+u[u.length-m.length].length-m[0].length:this.yylloc.first_column-d},this.options.ranges&&(this.yylloc.range=[S[0],S[0]+this.yyleng-d]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
                   `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(o){this.unput(this.match.slice(o))},pastInput:function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var o=this.pastInput(),d=new Array(o.length+1).join("-");return o+this.upcomingInput()+`
                  diff --git a/assets/gb28181_sip_signaling_packet_capture.html-9YuNK2eX.js b/assets/gb28181_sip_signaling_packet_capture.html-JsEmgfbo.js
                  similarity index 99%
                  rename from assets/gb28181_sip_signaling_packet_capture.html-9YuNK2eX.js
                  rename to assets/gb28181_sip_signaling_packet_capture.html-JsEmgfbo.js
                  index 1173648..2ea2d0a 100644
                  --- a/assets/gb28181_sip_signaling_packet_capture.html-9YuNK2eX.js
                  +++ b/assets/gb28181_sip_signaling_packet_capture.html-JsEmgfbo.js
                  @@ -1,4 +1,4 @@
                  -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as s,e}from"./app-RP31lnfq.js";const p={},t=e(`

                  1、注册

                  • 注册请求:
                  REGISTER sip:130909115229300920@10.64.49.44:7100 SIP/2.0
                  +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as s,e}from"./app-0NopiYEV.js";const p={},t=e(`

                  1、注册

                  • 注册请求:
                  REGISTER sip:130909115229300920@10.64.49.44:7100 SIP/2.0
                   Via: SIP/2.0/UDP 10.64.49.218:7100;rport;branch=z9hG4bK4162288924
                   From: <sip:130909113319427420@10.64.49.218:7100>;tag=382068091
                   To: <sip:130909113319427420@10.64.49.218:7100>
                  diff --git a/assets/gb28181_sip_signaling_packet_capture.html-5xl0QuEj.js b/assets/gb28181_sip_signaling_packet_capture.html-qexCXJj0.js
                  similarity index 99%
                  rename from assets/gb28181_sip_signaling_packet_capture.html-5xl0QuEj.js
                  rename to assets/gb28181_sip_signaling_packet_capture.html-qexCXJj0.js
                  index 1173648..2ea2d0a 100644
                  --- a/assets/gb28181_sip_signaling_packet_capture.html-5xl0QuEj.js
                  +++ b/assets/gb28181_sip_signaling_packet_capture.html-qexCXJj0.js
                  @@ -1,4 +1,4 @@
                  -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as s,e}from"./app-RP31lnfq.js";const p={},t=e(`

                  1、注册

                  • 注册请求:
                  REGISTER sip:130909115229300920@10.64.49.44:7100 SIP/2.0
                  +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as s,e}from"./app-0NopiYEV.js";const p={},t=e(`

                  1、注册

                  • 注册请求:
                  REGISTER sip:130909115229300920@10.64.49.44:7100 SIP/2.0
                   Via: SIP/2.0/UDP 10.64.49.218:7100;rport;branch=z9hG4bK4162288924
                   From: <sip:130909113319427420@10.64.49.218:7100>;tag=382068091
                   To: <sip:130909113319427420@10.64.49.218:7100>
                  diff --git a/assets/generate_ssl_self-signed_certificate_and_test.html-oJ11zSxb.js b/assets/generate_ssl_self-signed_certificate_and_test.html-O1ld5VEe.js
                  similarity index 98%
                  rename from assets/generate_ssl_self-signed_certificate_and_test.html-oJ11zSxb.js
                  rename to assets/generate_ssl_self-signed_certificate_and_test.html-O1ld5VEe.js
                  index 818a3b3..148c7ee 100644
                  --- a/assets/generate_ssl_self-signed_certificate_and_test.html-oJ11zSxb.js
                  +++ b/assets/generate_ssl_self-signed_certificate_and_test.html-O1ld5VEe.js
                  @@ -1,4 +1,4 @@
                  -import{_ as a}from"./generate_ssl_self-signed_certificate_and_test-D4Sbj3Ls.js";import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as e,e as t}from"./app-RP31lnfq.js";const i={},r=t(`

                  1、创建私钥

                   openssl genrsa  -out server.key 2048
                  +import{_ as a}from"./generate_ssl_self-signed_certificate_and_test-D4Sbj3Ls.js";import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as e,e as t}from"./app-0NopiYEV.js";const i={},r=t(`

                  1、创建私钥

                   openssl genrsa  -out server.key 2048
                   

                  2、 创建签名请求文件

                   openssl req -new -key server.key -out server.csr
                   

                  注意,需要输入域名(Common Name (e.g. server FQDN or YOUR name)):

                  Country Name (2 letter code) [AU]:cn
                   State or Province Name (full name) [Some-State]:gd
                  diff --git a/assets/generate_ssl_self-signed_certificate_and_test.html-kbzAeWE6.js b/assets/generate_ssl_self-signed_certificate_and_test.html-vsfOfJt0.js
                  similarity index 99%
                  rename from assets/generate_ssl_self-signed_certificate_and_test.html-kbzAeWE6.js
                  rename to assets/generate_ssl_self-signed_certificate_and_test.html-vsfOfJt0.js
                  index fa7af1d..699926b 100644
                  --- a/assets/generate_ssl_self-signed_certificate_and_test.html-kbzAeWE6.js
                  +++ b/assets/generate_ssl_self-signed_certificate_and_test.html-vsfOfJt0.js
                  @@ -1,4 +1,4 @@
                  -import{_ as a}from"./generate_ssl_self-signed_certificate_and_test-D4Sbj3Ls.js";import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as s,e as t}from"./app-RP31lnfq.js";const i={},r=t(`

                  1. Generate Private Key

                   openssl genrsa  -out server.key 2048
                  +import{_ as a}from"./generate_ssl_self-signed_certificate_and_test-D4Sbj3Ls.js";import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as s,e as t}from"./app-0NopiYEV.js";const i={},r=t(`

                  1. Generate Private Key

                   openssl genrsa  -out server.key 2048
                   

                  2. Create Certificate Signing Request (CSR) File

                   openssl req -new -key server.key -out server.csr
                   

                  Note: You will be prompted to enter the domain name (Common Name (e.g. server FQDN or YOUR name)):

                  Country Name (2 letter code) [AU]:cn
                   State or Province Name (full name) [Some-State]:gd
                  diff --git a/assets/giscus-NkhROb6B.js b/assets/giscus-NkhROb6B.js
                  new file mode 100644
                  index 0000000..28de2fa
                  --- /dev/null
                  +++ b/assets/giscus-NkhROb6B.js
                  @@ -0,0 +1,66 @@
                  +/**
                  + * @license
                  + * Copyright 2019 Google LLC
                  + * SPDX-License-Identifier: BSD-3-Clause
                  + */const H=globalThis,q=H.ShadowRoot&&(H.ShadyCSS===void 0||H.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,K=Symbol(),J=new WeakMap;let ot=class{constructor(t,e,s){if(this._$cssResult$=!0,s!==K)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(q&&t===void 0){const s=e!==void 0&&e.length===1;s&&(t=J.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),s&&J.set(e,t))}return t}toString(){return this.cssText}};const ut=i=>new ot(typeof i=="string"?i:i+"",void 0,K),$t=(i,...t)=>{const e=i.length===1?i[0]:t.reduce((s,r,o)=>s+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(r)+i[o+1],i[0]);return new ot(e,i,K)},_t=(i,t)=>{if(q)i.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(const e of t){const s=document.createElement("style"),r=H.litNonce;r!==void 0&&s.setAttribute("nonce",r),s.textContent=e.cssText,i.appendChild(s)}},F=q?i=>i:i=>i instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return ut(e)})(i):i;/**
                  + * @license
                  + * Copyright 2017 Google LLC
                  + * SPDX-License-Identifier: BSD-3-Clause
                  + */const{is:gt,defineProperty:ft,getOwnPropertyDescriptor:mt,getOwnPropertyNames:At,getOwnPropertySymbols:yt,getPrototypeOf:St}=Object,A=globalThis,Q=A.trustedTypes,vt=Q?Q.emptyScript:"",z=A.reactiveElementPolyfillSupport,U=(i,t)=>i,L={toAttribute(i,t){switch(t){case Boolean:i=i?vt:null;break;case Object:case Array:i=i==null?i:JSON.stringify(i)}return i},fromAttribute(i,t){let e=i;switch(t){case Boolean:e=i!==null;break;case Number:e=i===null?null:Number(i);break;case Object:case Array:try{e=JSON.parse(i)}catch{e=null}}return e}},Y=(i,t)=>!gt(i,t),Z={attribute:!0,type:String,converter:L,reflect:!1,hasChanged:Y};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),A.litPropertyMetadata??(A.litPropertyMetadata=new WeakMap);class E extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=Z){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const s=Symbol(),r=this.getPropertyDescriptor(t,s,e);r!==void 0&&ft(this.prototype,t,r)}}static getPropertyDescriptor(t,e,s){const{get:r,set:o}=mt(this.prototype,t)??{get(){return this[e]},set(n){this[e]=n}};return{get(){return r==null?void 0:r.call(this)},set(n){const a=r==null?void 0:r.call(this);o.call(this,n),this.requestUpdate(t,a,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??Z}static _$Ei(){if(this.hasOwnProperty(U("elementProperties")))return;const t=St(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(U("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(U("properties"))){const e=this.properties,s=[...At(e),...yt(e)];for(const r of s)this.createProperty(r,e[r])}const t=this[Symbol.metadata];if(t!==null){const e=litPropertyMetadata.get(t);if(e!==void 0)for(const[s,r]of e)this.elementProperties.set(s,r)}this._$Eh=new Map;for(const[e,s]of this.elementProperties){const r=this._$Eu(e,s);r!==void 0&&this._$Eh.set(r,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new Set(t.flat(1/0).reverse());for(const r of s)e.unshift(F(r))}else t!==void 0&&e.push(F(t));return e}static _$Eu(t,e){const s=e.attribute;return s===!1?void 0:typeof s=="string"?s:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$Eg=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$ES(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(e=>e(this))}addController(t){var e;(this._$E_??(this._$E_=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((e=t.hostConnected)==null||e.call(t))}removeController(t){var e;(e=this._$E_)==null||e.delete(t)}_$ES(){const t=new Map,e=this.constructor.elementProperties;for(const s of e.keys())this.hasOwnProperty(s)&&(t.set(s,this[s]),delete this[s]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return _t(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$E_)==null||t.forEach(e=>{var s;return(s=e.hostConnected)==null?void 0:s.call(e)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$E_)==null||t.forEach(e=>{var s;return(s=e.hostDisconnected)==null?void 0:s.call(e)})}attributeChangedCallback(t,e,s){this._$AK(t,s)}_$EO(t,e){var o;const s=this.constructor.elementProperties.get(t),r=this.constructor._$Eu(t,s);if(r!==void 0&&s.reflect===!0){const n=(((o=s.converter)==null?void 0:o.toAttribute)!==void 0?s.converter:L).toAttribute(e,s.type);this._$Em=t,n==null?this.removeAttribute(r):this.setAttribute(r,n),this._$Em=null}}_$AK(t,e){var o;const s=this.constructor,r=s._$Eh.get(t);if(r!==void 0&&this._$Em!==r){const n=s.getPropertyOptions(r),a=typeof n.converter=="function"?{fromAttribute:n.converter}:((o=n.converter)==null?void 0:o.fromAttribute)!==void 0?n.converter:L;this._$Em=r,this[r]=a.fromAttribute(e,n.type),this._$Em=null}}requestUpdate(t,e,s){if(t!==void 0){if(s??(s=this.constructor.getPropertyOptions(t)),!(s.hasChanged??Y)(this[t],e))return;this.C(t,e,s)}this.isUpdatePending===!1&&(this._$Eg=this._$EP())}C(t,e,s){this._$AL.has(t)||this._$AL.set(t,e),s.reflect===!0&&this._$Em!==t&&(this._$ET??(this._$ET=new Set)).add(t)}async _$EP(){this.isUpdatePending=!0;try{await this._$Eg}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var s;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[o,n]of this._$Ep)this[o]=n;this._$Ep=void 0}const r=this.constructor.elementProperties;if(r.size>0)for(const[o,n]of r)n.wrapped!==!0||this._$AL.has(o)||this[o]===void 0||this.C(o,this[o],n)}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),(s=this._$E_)==null||s.forEach(r=>{var o;return(o=r.hostUpdate)==null?void 0:o.call(r)}),this.update(e)):this._$Ej()}catch(r){throw t=!1,this._$Ej(),r}t&&this._$AE(e)}willUpdate(t){}_$AE(t){var e;(e=this._$E_)==null||e.forEach(s=>{var r;return(r=s.hostUpdated)==null?void 0:r.call(s)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ej(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Eg}shouldUpdate(t){return!0}update(t){this._$ET&&(this._$ET=this._$ET.forEach(e=>this._$EO(e,this[e]))),this._$Ej()}updated(t){}firstUpdated(t){}}E.elementStyles=[],E.shadowRootOptions={mode:"open"},E[U("elementProperties")]=new Map,E[U("finalized")]=new Map,z==null||z({ReactiveElement:E}),(A.reactiveElementVersions??(A.reactiveElementVersions=[])).push("2.0.3");/**
                  + * @license
                  + * Copyright 2017 Google LLC
                  + * SPDX-License-Identifier: BSD-3-Clause
                  + */const P=globalThis,k=P.trustedTypes,X=k?k.createPolicy("lit-html",{createHTML:i=>i}):void 0,ht="$lit$",m=`lit$${(Math.random()+"").slice(9)}$`,at="?"+m,Et=`<${at}>`,v=document,N=()=>v.createComment(""),R=i=>i===null||typeof i!="object"&&typeof i!="function",ct=Array.isArray,bt=i=>ct(i)||typeof(i==null?void 0:i[Symbol.iterator])=="function",B=`[ 	
                  +\f\r]`,w=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,tt=/-->/g,et=/>/g,y=RegExp(`>|${B}(?:([^\\s"'>=/]+)(${B}*=${B}*(?:[^ 	
                  +\f\r"'\`<>=]|("|')|))|$)`,"g"),st=/'/g,it=/"/g,lt=/^(?:script|style|textarea|title)$/i,Ct=i=>(t,...e)=>({_$litType$:i,strings:t,values:e}),wt=Ct(1),b=Symbol.for("lit-noChange"),l=Symbol.for("lit-nothing"),rt=new WeakMap,S=v.createTreeWalker(v,129);function dt(i,t){if(!Array.isArray(i)||!i.hasOwnProperty("raw"))throw Error("invalid template strings array");return X!==void 0?X.createHTML(t):t}const Ut=(i,t)=>{const e=i.length-1,s=[];let r,o=t===2?"":"",n=w;for(let a=0;a"?(n=r??w,c=-1):u[1]===void 0?c=-2:(c=n.lastIndex-u[2].length,d=u[1],n=u[3]===void 0?y:u[3]==='"'?it:st):n===it||n===st?n=y:n===tt||n===et?n=w:(n=y,r=void 0);const f=n===y&&i[a+1].startsWith("/>")?" ":"";o+=n===w?h+Et:c>=0?(s.push(d),h.slice(0,c)+ht+h.slice(c)+m+f):h+m+(c===-2?a:f)}return[dt(i,o+(i[e]||"")+(t===2?"":"")),s]};class I{constructor({strings:t,_$litType$:e},s){let r;this.parts=[];let o=0,n=0;const a=t.length-1,h=this.parts,[d,u]=Ut(t,e);if(this.el=I.createElement(d,s),S.currentNode=this.el.content,e===2){const c=this.el.content.firstChild;c.replaceWith(...c.childNodes)}for(;(r=S.nextNode())!==null&&h.length0){r.textContent=k?k.emptyScript:"";for(let f=0;f2||s[0]!==""||s[1]!==""?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=l}_$AI(t,e=this,s,r){const o=this.strings;let n=!1;if(o===void 0)t=C(this,t,e,0),n=!R(t)||t!==this._$AH&&t!==b,n&&(this._$AH=t);else{const a=t;let h,d;for(t=o[0],h=0;h{const s=(e==null?void 0:e.renderBefore)??t;let r=s._$litPart$;if(r===void 0){const o=(e==null?void 0:e.renderBefore)??null;s._$litPart$=r=new M(t.insertBefore(N(),o),o,void 0,e??{})}return r._$AI(i),r};/**
                  + * @license
                  + * Copyright 2017 Google LLC
                  + * SPDX-License-Identifier: BSD-3-Clause
                  + */let O=class extends E{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e;const t=super.createRenderRoot();return(e=this.renderOptions).renderBefore??(e.renderBefore=t.firstChild),t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=It(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this._$Do)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._$Do)==null||t.setConnected(!1)}render(){return b}};var nt;O._$litElement$=!0,O.finalized=!0,(nt=globalThis.litElementHydrateSupport)==null||nt.call(globalThis,{LitElement:O});const W=globalThis.litElementPolyfillSupport;W==null||W({LitElement:O});(globalThis.litElementVersions??(globalThis.litElementVersions=[])).push("4.0.3");/**
                  + * @license
                  + * Copyright 2017 Google LLC
                  + * SPDX-License-Identifier: BSD-3-Clause
                  + */const Mt=i=>(t,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(i,t)}):customElements.define(i,t)};/**
                  + * @license
                  + * Copyright 2017 Google LLC
                  + * SPDX-License-Identifier: BSD-3-Clause
                  + */const xt={attribute:!0,type:String,converter:L,reflect:!1,hasChanged:Y},Ht=(i=xt,t,e)=>{const{kind:s,metadata:r}=e;let o=globalThis.litPropertyMetadata.get(r);if(o===void 0&&globalThis.litPropertyMetadata.set(r,o=new Map),o.set(e.name,i),s==="accessor"){const{name:n}=e;return{set(a){const h=t.get.call(this);t.set.call(this,a),this.requestUpdate(n,h,i)},init(a){return a!==void 0&&this.C(n,void 0,i),a}}}if(s==="setter"){const{name:n}=e;return function(a){const h=this[n];t.call(this,a),this.requestUpdate(n,h,i)}}throw Error("Unsupported decorator location: "+s)};function _(i){return(t,e)=>typeof e=="object"?Ht(i,t,e):((s,r,o)=>{const n=r.hasOwnProperty(o);return r.constructor.createProperty(o,n?{...s,wrapped:!0}:s),n?Object.getOwnPropertyDescriptor(r,o):void 0})(i,t,e)}/**
                  + * @license
                  + * Copyright 2020 Google LLC
                  + * SPDX-License-Identifier: BSD-3-Clause
                  + */const Lt=i=>i.strings===void 0;/**
                  + * @license
                  + * Copyright 2017 Google LLC
                  + * SPDX-License-Identifier: BSD-3-Clause
                  + */const kt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Gt=i=>(...t)=>({_$litDirective$:i,values:t});let Dt=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,s){this._$Ct=t,this._$AM=e,this._$Ci=s}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};/**
                  + * @license
                  + * Copyright 2017 Google LLC
                  + * SPDX-License-Identifier: BSD-3-Clause
                  + */const T=(i,t)=>{var s;const e=i._$AN;if(e===void 0)return!1;for(const r of e)(s=r._$AO)==null||s.call(r,t,!1),T(r,t);return!0},G=i=>{let t,e;do{if((t=i._$AM)===void 0)break;e=t._$AN,e.delete(i),i=t}while((e==null?void 0:e.size)===0)},pt=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(e===void 0)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),jt(t)}};function zt(i){this._$AN!==void 0?(G(this),this._$AM=i,pt(this)):this._$AM=i}function Bt(i,t=!1,e=0){const s=this._$AH,r=this._$AN;if(r!==void 0&&r.size!==0)if(t)if(Array.isArray(s))for(let o=e;o{i.type==kt.CHILD&&(i._$AP??(i._$AP=Bt),i._$AQ??(i._$AQ=zt))};class Wt extends Dt{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,s){super._$AT(t,e,s),pt(this),this.isConnected=t._$AU}_$AO(t,e=!0){var s,r;t!==this.isConnected&&(this.isConnected=t,t?(s=this.reconnected)==null||s.call(this):(r=this.disconnected)==null||r.call(this)),e&&(T(this,t),G(this))}setValue(t){if(Lt(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}/**
                  + * @license
                  + * Copyright 2020 Google LLC
                  + * SPDX-License-Identifier: BSD-3-Clause
                  + */const Vt=()=>new qt;class qt{}const V=new WeakMap,Kt=Gt(class extends Wt{render(i){return l}update(i,[t]){var s;const e=t!==this.G;return e&&this.G!==void 0&&this.ot(void 0),(e||this.rt!==this.lt)&&(this.G=t,this.ct=(s=i.options)==null?void 0:s.host,this.ot(this.lt=i.element)),l}ot(i){if(typeof this.G=="function"){const t=this.ct??globalThis;let e=V.get(t);e===void 0&&(e=new WeakMap,V.set(t,e)),e.get(this.G)!==void 0&&this.G.call(this.ct,void 0),e.set(this.G,i),i!==void 0&&this.G.call(this.ct,i)}else this.G.value=i}get rt(){var i,t;return typeof this.G=="function"?(i=V.get(this.ct??globalThis))==null?void 0:i.get(this.G):(t=this.G)==null?void 0:t.value}disconnected(){this.rt===this.lt&&this.ot(void 0)}reconnected(){this.ot(this.lt)}});var Yt=Object.defineProperty,Jt=Object.getOwnPropertyDescriptor,$=(i,t,e,s)=>{for(var r=s>1?void 0:s?Jt(t,e):t,o=i.length-1,n;o>=0;o--)(n=i[o])&&(r=(s?n(t,e,r):n(r))||r);return s&&r&&Yt(t,e,r),r};function Ft(i){return customElements.get(i)?t=>t:Mt(i)}let p=class extends O{constructor(){super(),this.GISCUS_SESSION_KEY="giscus-session",this.GISCUS_DEFAULT_HOST="https://giscus.app",this.ERROR_SUGGESTION="Please consider reporting this error at https://github.com/giscus/giscus/issues/new.",this.__session="",this._iframeRef=Vt(),this.messageEventHandler=this.handleMessageEvent.bind(this),this.hasLoaded=!1,this.host=this.GISCUS_DEFAULT_HOST,this.strict="0",this.reactionsEnabled="1",this.emitMetadata="0",this.inputPosition="bottom",this.theme="light",this.lang="en",this.loading="eager",this.setupSession(),window.addEventListener("message",this.messageEventHandler)}get iframeRef(){var i;return(i=this._iframeRef)==null?void 0:i.value}get _host(){try{return new URL(this.host),this.host}catch{return this.GISCUS_DEFAULT_HOST}}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("message",this.messageEventHandler)}_formatError(i){return`[giscus] An error occurred. Error message: "${i}".`}setupSession(){const i=location.href,t=new URL(i),e=localStorage.getItem(this.GISCUS_SESSION_KEY),s=t.searchParams.get("giscus")??"";if(this.__session="",s){localStorage.setItem(this.GISCUS_SESSION_KEY,JSON.stringify(s)),this.__session=s,t.searchParams.delete("giscus"),t.hash="",history.replaceState(void 0,document.title,t.toString());return}if(e)try{this.__session=JSON.parse(e)}catch(r){localStorage.removeItem(this.GISCUS_SESSION_KEY),console.warn(`${this._formatError(r==null?void 0:r.message)} Session has been cleared.`)}}signOut(){localStorage.removeItem(this.GISCUS_SESSION_KEY),this.__session="",this.update(new Map)}handleMessageEvent(i){if(i.origin!==this._host)return;const{data:t}=i;if(!(typeof t=="object"&&t.giscus))return;if(this.iframeRef&&t.giscus.resizeHeight&&(this.iframeRef.style.height=`${t.giscus.resizeHeight}px`),t.giscus.signOut){console.info("[giscus] User has logged out. Session has been cleared."),this.signOut();return}if(!t.giscus.error)return;const e=t.giscus.error;if(e.includes("Bad credentials")||e.includes("Invalid state value")||e.includes("State has expired")){if(localStorage.getItem(this.GISCUS_SESSION_KEY)!==null){console.warn(`${this._formatError(e)} Session has been cleared.`),this.signOut();return}console.error(`${this._formatError(e)} No session is stored initially. ${this.ERROR_SUGGESTION}`)}if(e.includes("Discussion not found")){console.warn(`[giscus] ${e}. A new discussion will be created if a comment/reaction is submitted.`);return}console.error(`${this._formatError(e)} ${this.ERROR_SUGGESTION}`)}sendMessage(i){var t;!((t=this.iframeRef)!=null&&t.contentWindow)||!this.hasLoaded||this.iframeRef.contentWindow.postMessage({giscus:i},this._host)}updateConfig(){const i={setConfig:{repo:this.repo,repoId:this.repoId,category:this.category,categoryId:this.categoryId,term:this.getTerm(),number:+this.getNumber(),strict:this.strict==="1",reactionsEnabled:this.reactionsEnabled==="1",emitMetadata:this.emitMetadata==="1",inputPosition:this.inputPosition,theme:this.theme,lang:this.lang}};this.sendMessage(i)}firstUpdated(){var i;(i=this.iframeRef)==null||i.addEventListener("load",()=>{var t;(t=this.iframeRef)==null||t.classList.remove("loading"),this.hasLoaded=!0,this.updateConfig()})}requestUpdate(i,t,e){if(!this.hasUpdated||i==="host"){super.requestUpdate(i,t,e);return}this.updateConfig()}getMetaContent(i,t=!1){const e=t?`meta[property='og:${i}'],`:"",s=document.querySelector(e+`meta[name='${i}']`);return s?s.content:""}_getCleanedUrl(){const i=new URL(location.href);return i.searchParams.delete("giscus"),i.hash="",i}getTerm(){switch(this.mapping){case"url":return this._getCleanedUrl().toString();case"title":return document.title;case"og:title":return this.getMetaContent("title",!0);case"specific":return this.term??"";case"number":return"";case"pathname":default:return location.pathname.length<2?"index":location.pathname.substring(1).replace(/\.\w+$/,"")}}getNumber(){return this.mapping==="number"?this.term??"":""}getIframeSrc(){const i=this._getCleanedUrl().toString(),t=`${i}${this.id?"#"+this.id:""}`,e=this.getMetaContent("description",!0),s=this.getMetaContent("giscus:backlink")||i,r={origin:t,session:this.__session,repo:this.repo,repoId:this.repoId??"",category:this.category??"",categoryId:this.categoryId??"",term:this.getTerm(),number:this.getNumber(),strict:this.strict,reactionsEnabled:this.reactionsEnabled,emitMetadata:this.emitMetadata,inputPosition:this.inputPosition,theme:this.theme,description:e,backLink:s},o=this._host,n=this.lang?`/${this.lang}`:"",a=new URLSearchParams(r);return`${o}${n}/widget?${a.toString()}`}render(){return wt`
                  +      
                  +    `}};p.styles=$t`
                  +    :host,
                  +    iframe {
                  +      width: 100%;
                  +      border: none;
                  +      min-height: 150px;
                  +      color-scheme: light dark;
                  +    }
                  +
                  +    iframe.loading {
                  +      opacity: 0;
                  +    }
                  +  `;$([_({reflect:!0})],p.prototype,"host",2);$([_({reflect:!0})],p.prototype,"repo",2);$([_({reflect:!0})],p.prototype,"repoId",2);$([_({reflect:!0})],p.prototype,"category",2);$([_({reflect:!0})],p.prototype,"categoryId",2);$([_({reflect:!0})],p.prototype,"mapping",2);$([_({reflect:!0})],p.prototype,"term",2);$([_({reflect:!0})],p.prototype,"strict",2);$([_({reflect:!0})],p.prototype,"reactionsEnabled",2);$([_({reflect:!0})],p.prototype,"emitMetadata",2);$([_({reflect:!0})],p.prototype,"inputPosition",2);$([_({reflect:!0})],p.prototype,"theme",2);$([_({reflect:!0})],p.prototype,"lang",2);$([_({reflect:!0})],p.prototype,"loading",2);p=$([Ft("giscus-widget")],p);export{p as GiscusWidget};
                  diff --git a/assets/giscus-unEZQsJ0.js b/assets/giscus-unEZQsJ0.js
                  deleted file mode 100644
                  index 003e7bf..0000000
                  --- a/assets/giscus-unEZQsJ0.js
                  +++ /dev/null
                  @@ -1,70 +0,0 @@
                  -/**
                  - * @license
                  - * Copyright 2019 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */const M=window,F=M.ShadowRoot&&(M.ShadyCSS===void 0||M.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Z=Symbol(),Q=new WeakMap;let ct=class{constructor(t,e,s){if(this._$cssResult$=!0,s!==Z)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(F&&t===void 0){const s=e!==void 0&&e.length===1;s&&(t=Q.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),s&&Q.set(e,t))}return t}toString(){return this.cssText}};const ft=i=>new ct(typeof i=="string"?i:i+"",void 0,Z),mt=(i,...t)=>{const e=i.length===1?i[0]:t.reduce((s,n,r)=>s+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(n)+i[r+1],i[0]);return new ct(e,i,Z)},At=(i,t)=>{F?i.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet):t.forEach(e=>{const s=document.createElement("style"),n=M.litNonce;n!==void 0&&s.setAttribute("nonce",n),s.textContent=e.cssText,i.appendChild(s)})},X=F?i=>i:i=>i instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return ft(e)})(i):i;/**
                  - * @license
                  - * Copyright 2017 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */var G;const x=window,tt=x.trustedTypes,yt=tt?tt.emptyScript:"",et=x.reactiveElementPolyfillSupport,Y={toAttribute(i,t){switch(t){case Boolean:i=i?yt:null;break;case Object:case Array:i=i==null?i:JSON.stringify(i)}return i},fromAttribute(i,t){let e=i;switch(t){case Boolean:e=i!==null;break;case Number:e=i===null?null:Number(i);break;case Object:case Array:try{e=JSON.parse(i)}catch{e=null}}return e}},dt=(i,t)=>t!==i&&(t==t||i==i),D={attribute:!0,type:String,converter:Y,reflect:!1,hasChanged:dt},q="finalized";let S=class extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this._$Eu()}static addInitializer(t){var e;this.finalize(),((e=this.h)!==null&&e!==void 0?e:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach((e,s)=>{const n=this._$Ep(s,e);n!==void 0&&(this._$Ev.set(n,s),t.push(n))}),t}static createProperty(t,e=D){if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const s=typeof t=="symbol"?Symbol():"__"+t,n=this.getPropertyDescriptor(t,s,e);n!==void 0&&Object.defineProperty(this.prototype,t,n)}}static getPropertyDescriptor(t,e,s){return{get(){return this[e]},set(n){const r=this[t];this[e]=n,this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||D}static finalize(){if(this.hasOwnProperty(q))return!1;this[q]=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),t.h!==void 0&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const e=this.properties,s=[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)];for(const n of s)this.createProperty(n,e[n])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new Set(t.flat(1/0).reverse());for(const n of s)e.unshift(X(n))}else t!==void 0&&e.push(X(t));return e}static _$Ep(t,e){const s=e.attribute;return s===!1?void 0:typeof s=="string"?s:typeof t=="string"?t.toLowerCase():void 0}_$Eu(){var t;this._$E_=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$Eg(),this.requestUpdate(),(t=this.constructor.h)===null||t===void 0||t.forEach(e=>e(this))}addController(t){var e,s;((e=this._$ES)!==null&&e!==void 0?e:this._$ES=[]).push(t),this.renderRoot!==void 0&&this.isConnected&&((s=t.hostConnected)===null||s===void 0||s.call(t))}removeController(t){var e;(e=this._$ES)===null||e===void 0||e.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach((t,e)=>{this.hasOwnProperty(e)&&(this._$Ei.set(e,this[e]),delete this[e])})}createRenderRoot(){var t;const e=(t=this.shadowRoot)!==null&&t!==void 0?t:this.attachShadow(this.constructor.shadowRootOptions);return At(e,this.constructor.elementStyles),e}connectedCallback(){var t;this.renderRoot===void 0&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$ES)===null||t===void 0||t.forEach(e=>{var s;return(s=e.hostConnected)===null||s===void 0?void 0:s.call(e)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$ES)===null||t===void 0||t.forEach(e=>{var s;return(s=e.hostDisconnected)===null||s===void 0?void 0:s.call(e)})}attributeChangedCallback(t,e,s){this._$AK(t,s)}_$EO(t,e,s=D){var n;const r=this.constructor._$Ep(t,s);if(r!==void 0&&s.reflect===!0){const o=(((n=s.converter)===null||n===void 0?void 0:n.toAttribute)!==void 0?s.converter:Y).toAttribute(e,s.type);this._$El=t,o==null?this.removeAttribute(r):this.setAttribute(r,o),this._$El=null}}_$AK(t,e){var s;const n=this.constructor,r=n._$Ev.get(t);if(r!==void 0&&this._$El!==r){const o=n.getPropertyOptions(r),a=typeof o.converter=="function"?{fromAttribute:o.converter}:((s=o.converter)===null||s===void 0?void 0:s.fromAttribute)!==void 0?o.converter:Y;this._$El=r,this[r]=a.fromAttribute(e,o.type),this._$El=null}}requestUpdate(t,e,s){let n=!0;t!==void 0&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||dt)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),s.reflect===!0&&this._$El!==t&&(this._$EC===void 0&&(this._$EC=new Map),this._$EC.set(t,s))):n=!1),!this.isUpdatePending&&n&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach((n,r)=>this[r]=n),this._$Ei=void 0);let e=!1;const s=this._$AL;try{e=this.shouldUpdate(s),e?(this.willUpdate(s),(t=this._$ES)===null||t===void 0||t.forEach(n=>{var r;return(r=n.hostUpdate)===null||r===void 0?void 0:r.call(n)}),this.update(s)):this._$Ek()}catch(n){throw e=!1,this._$Ek(),n}e&&this._$AE(s)}willUpdate(t){}_$AE(t){var e;(e=this._$ES)===null||e===void 0||e.forEach(s=>{var n;return(n=s.hostUpdated)===null||n===void 0?void 0:n.call(s)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){this._$EC!==void 0&&(this._$EC.forEach((e,s)=>this._$EO(s,this[s],e)),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}};S[q]=!0,S.elementProperties=new Map,S.elementStyles=[],S.shadowRootOptions={mode:"open"},et==null||et({ReactiveElement:S}),((G=x.reactiveElementVersions)!==null&&G!==void 0?G:x.reactiveElementVersions=[]).push("1.6.3");/**
                  - * @license
                  - * Copyright 2017 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */var z;const H=window,E=H.trustedTypes,st=E?E.createPolicy("lit-html",{createHTML:i=>i}):void 0,J="$lit$",f=`lit$${(Math.random()+"").slice(9)}$`,ut="?"+f,St=`<${ut}>`,y=document,O=()=>y.createComment(""),P=i=>i===null||typeof i!="object"&&typeof i!="function",pt=Array.isArray,Et=i=>pt(i)||typeof(i==null?void 0:i[Symbol.iterator])=="function",B=`[ 	
                  -\f\r]`,w=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,it=/-->/g,nt=/>/g,m=RegExp(`>|${B}(?:([^\\s"'>=/]+)(${B}*=${B}*(?:[^ 	
                  -\f\r"'\`<>=]|("|')|))|$)`,"g"),rt=/'/g,ot=/"/g,$t=/^(?:script|style|textarea|title)$/i,bt=i=>(t,...e)=>({_$litType$:i,strings:t,values:e}),Ct=bt(1),b=Symbol.for("lit-noChange"),u=Symbol.for("lit-nothing"),lt=new WeakMap,A=y.createTreeWalker(y,129,null,!1);function _t(i,t){if(!Array.isArray(i)||!i.hasOwnProperty("raw"))throw Error("invalid template strings array");return st!==void 0?st.createHTML(t):t}const wt=(i,t)=>{const e=i.length-1,s=[];let n,r=t===2?"":"",o=w;for(let a=0;a"?(o=n??w,d=-1):c[1]===void 0?d=-2:(d=o.lastIndex-c[2].length,h=c[1],o=c[3]===void 0?m:c[3]==='"'?ot:rt):o===ot||o===rt?o=m:o===it||o===nt?o=w:(o=m,n=void 0);const g=o===m&&i[a+1].startsWith("/>")?" ":"";r+=o===w?l+St:d>=0?(s.push(h),l.slice(0,d)+J+l.slice(d)+f+g):l+f+(d===-2?(s.push(void 0),a):g)}return[_t(i,r+(i[e]||"")+(t===2?"":"")),s]};class T{constructor({strings:t,_$litType$:e},s){let n;this.parts=[];let r=0,o=0;const a=t.length-1,l=this.parts,[h,c]=wt(t,e);if(this.el=T.createElement(h,s),A.currentNode=this.el.content,e===2){const d=this.el.content,$=d.firstChild;$.remove(),d.append(...$.childNodes)}for(;(n=A.nextNode())!==null&&l.length0){n.textContent=E?E.emptyScript:"";for(let g=0;g<$;g++)n.append(d[g],O()),A.nextNode(),l.push({type:2,index:++r});n.append(d[$],O())}}}else if(n.nodeType===8)if(n.data===ut)l.push({type:2,index:r});else{let d=-1;for(;(d=n.data.indexOf(f,d+1))!==-1;)l.push({type:7,index:r}),d+=f.length-1}r++}}static createElement(t,e){const s=y.createElement("template");return s.innerHTML=t,s}}function C(i,t,e=i,s){var n,r,o,a;if(t===b)return t;let l=s!==void 0?(n=e._$Co)===null||n===void 0?void 0:n[s]:e._$Cl;const h=P(t)?void 0:t._$litDirective$;return(l==null?void 0:l.constructor)!==h&&((r=l==null?void 0:l._$AO)===null||r===void 0||r.call(l,!1),h===void 0?l=void 0:(l=new h(i),l._$AT(i,e,s)),s!==void 0?((o=(a=e)._$Co)!==null&&o!==void 0?o:a._$Co=[])[s]=l:e._$Cl=l),l!==void 0&&(t=C(i,l._$AS(i,t.values),l,s)),t}class Ut{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){var e;const{el:{content:s},parts:n}=this._$AD,r=((e=t==null?void 0:t.creationScope)!==null&&e!==void 0?e:y).importNode(s,!0);A.currentNode=r;let o=A.nextNode(),a=0,l=0,h=n[0];for(;h!==void 0;){if(a===h.index){let c;h.type===2?c=new R(o,o.nextSibling,this,t):h.type===1?c=new h.ctor(o,h.name,h.strings,this,t):h.type===6&&(c=new Rt(o,this,t)),this._$AV.push(c),h=n[++l]}a!==(h==null?void 0:h.index)&&(o=A.nextNode(),a++)}return A.currentNode=y,r}v(t){let e=0;for(const s of this._$AV)s!==void 0&&(s.strings!==void 0?(s._$AI(t,s,e),e+=s.strings.length-2):s._$AI(t[e])),e++}}class R{constructor(t,e,s,n){var r;this.type=2,this._$AH=u,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=s,this.options=n,this._$Cp=(r=n==null?void 0:n.isConnected)===null||r===void 0||r}get _$AU(){var t,e;return(e=(t=this._$AM)===null||t===void 0?void 0:t._$AU)!==null&&e!==void 0?e:this._$Cp}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return e!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=C(this,t,e),P(t)?t===u||t==null||t===""?(this._$AH!==u&&this._$AR(),this._$AH=u):t!==this._$AH&&t!==b&&this._(t):t._$litType$!==void 0?this.g(t):t.nodeType!==void 0?this.$(t):Et(t)?this.T(t):this._(t)}k(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}$(t){this._$AH!==t&&(this._$AR(),this._$AH=this.k(t))}_(t){this._$AH!==u&&P(this._$AH)?this._$AA.nextSibling.data=t:this.$(y.createTextNode(t)),this._$AH=t}g(t){var e;const{values:s,_$litType$:n}=t,r=typeof n=="number"?this._$AC(t):(n.el===void 0&&(n.el=T.createElement(_t(n.h,n.h[0]),this.options)),n);if(((e=this._$AH)===null||e===void 0?void 0:e._$AD)===r)this._$AH.v(s);else{const o=new Ut(r,this),a=o.u(this.options);o.v(s),this.$(a),this._$AH=o}}_$AC(t){let e=lt.get(t.strings);return e===void 0&<.set(t.strings,e=new T(t)),e}T(t){pt(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let s,n=0;for(const r of t)n===e.length?e.push(s=new R(this.k(O()),this.k(O()),this,this.options)):s=e[n],s._$AI(r),n++;n2||s[0]!==""||s[1]!==""?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=u}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,e=this,s,n){const r=this.strings;let o=!1;if(r===void 0)t=C(this,t,e,0),o=!P(t)||t!==this._$AH&&t!==b,o&&(this._$AH=t);else{const a=t;let l,h;for(t=r[0],l=0;l{var s,n;const r=(s=e==null?void 0:e.renderBefore)!==null&&s!==void 0?s:t;let o=r._$litPart$;if(o===void 0){const a=(n=e==null?void 0:e.renderBefore)!==null&&n!==void 0?n:null;r._$litPart$=o=new R(t.insertBefore(O(),a),a,void 0,e??{})}return o._$AI(i),o};/**
                  - * @license
                  - * Copyright 2017 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */var j,V;let U=class extends S{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,e;const s=super.createRenderRoot();return(t=(e=this.renderOptions).renderBefore)!==null&&t!==void 0||(e.renderBefore=s.firstChild),s}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=It(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this._$Do)===null||t===void 0||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._$Do)===null||t===void 0||t.setConnected(!1)}render(){return b}};U.finalized=!0,U._$litElement$=!0,(j=globalThis.litElementHydrateSupport)===null||j===void 0||j.call(globalThis,{LitElement:U});const at=globalThis.litElementPolyfillSupport;at==null||at({LitElement:U});((V=globalThis.litElementVersions)!==null&&V!==void 0?V:globalThis.litElementVersions=[]).push("3.3.3");/**
                  - * @license
                  - * Copyright 2017 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */const Mt=i=>t=>typeof t=="function"?((e,s)=>(customElements.define(e,s),s))(i,t):((e,s)=>{const{kind:n,elements:r}=s;return{kind:n,elements:r,finisher(o){customElements.define(e,o)}}})(i,t);/**
                  - * @license
                  - * Copyright 2017 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */const xt=(i,t)=>t.kind==="method"&&t.descriptor&&!("value"in t.descriptor)?{...t,finisher(e){e.createProperty(t.key,i)}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:t.key,initializer(){typeof t.initializer=="function"&&(this[t.key]=t.initializer.call(this))},finisher(e){e.createProperty(t.key,i)}},Ht=(i,t,e)=>{t.constructor.createProperty(e,i)};function v(i){return(t,e)=>e!==void 0?Ht(i,t,e):xt(i,t)}/**
                  - * @license
                  - * Copyright 2021 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */var W;((W=window.HTMLSlotElement)===null||W===void 0?void 0:W.prototype.assignedElements)!=null;/**
                  - * @license
                  - * Copyright 2020 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */const kt=i=>i.strings===void 0;/**
                  - * @license
                  - * Copyright 2017 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */const Lt={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},Gt=i=>(...t)=>({_$litDirective$:i,values:t});let Dt=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,s){this._$Ct=t,this._$AM=e,this._$Ci=s}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};/**
                  - * @license
                  - * Copyright 2017 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */const N=(i,t)=>{var e,s;const n=i._$AN;if(n===void 0)return!1;for(const r of n)(s=(e=r)._$AO)===null||s===void 0||s.call(e,t,!1),N(r,t);return!0},k=i=>{let t,e;do{if((t=i._$AM)===void 0)break;e=t._$AN,e.delete(i),i=t}while((e==null?void 0:e.size)===0)},vt=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(e===void 0)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),jt(t)}};function zt(i){this._$AN!==void 0?(k(this),this._$AM=i,vt(this)):this._$AM=i}function Bt(i,t=!1,e=0){const s=this._$AH,n=this._$AN;if(n!==void 0&&n.size!==0)if(t)if(Array.isArray(s))for(let r=e;r{var t,e,s,n;i.type==Lt.CHILD&&((t=(s=i)._$AP)!==null&&t!==void 0||(s._$AP=Bt),(e=(n=i)._$AQ)!==null&&e!==void 0||(n._$AQ=zt))};class Vt extends Dt{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,s){super._$AT(t,e,s),vt(this),this.isConnected=t._$AU}_$AO(t,e=!0){var s,n;t!==this.isConnected&&(this.isConnected=t,t?(s=this.reconnected)===null||s===void 0||s.call(this):(n=this.disconnected)===null||n===void 0||n.call(this)),e&&(N(this,t),k(this))}setValue(t){if(kt(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}/**
                  - * @license
                  - * Copyright 2020 Google LLC
                  - * SPDX-License-Identifier: BSD-3-Clause
                  - */const Wt=()=>new Kt;class Kt{}const K=new WeakMap,Yt=Gt(class extends Vt{render(i){return u}update(i,[t]){var e;const s=t!==this.G;return s&&this.G!==void 0&&this.ot(void 0),(s||this.rt!==this.lt)&&(this.G=t,this.dt=(e=i.options)===null||e===void 0?void 0:e.host,this.ot(this.lt=i.element)),u}ot(i){var t;if(typeof this.G=="function"){const e=(t=this.dt)!==null&&t!==void 0?t:globalThis;let s=K.get(e);s===void 0&&(s=new WeakMap,K.set(e,s)),s.get(this.G)!==void 0&&this.G.call(this.dt,void 0),s.set(this.G,i),i!==void 0&&this.G.call(this.dt,i)}else this.G.value=i}get rt(){var i,t,e;return typeof this.G=="function"?(t=K.get((i=this.dt)!==null&&i!==void 0?i:globalThis))===null||t===void 0?void 0:t.get(this.G):(e=this.G)===null||e===void 0?void 0:e.value}disconnected(){this.rt===this.lt&&this.ot(void 0)}reconnected(){this.ot(this.lt)}});var qt=Object.defineProperty,Jt=Object.getOwnPropertyDescriptor,_=(i,t,e,s)=>{for(var n=s>1?void 0:s?Jt(t,e):t,r=i.length-1,o;r>=0;r--)(o=i[r])&&(n=(s?o(t,e,n):o(n))||n);return s&&n&&qt(t,e,n),n};function Ft(i){return customElements.get(i)?t=>t:Mt(i)}let p=class extends U{constructor(){super(),this.GISCUS_SESSION_KEY="giscus-session",this.GISCUS_DEFAULT_HOST="https://giscus.app",this.ERROR_SUGGESTION="Please consider reporting this error at https://github.com/giscus/giscus/issues/new.",this.__session="",this._iframeRef=Wt(),this.messageEventHandler=this.handleMessageEvent.bind(this),this.hasLoaded=!1,this.host=this.GISCUS_DEFAULT_HOST,this.strict="0",this.reactionsEnabled="1",this.emitMetadata="0",this.inputPosition="bottom",this.theme="light",this.lang="en",this.loading="eager",this.setupSession(),window.addEventListener("message",this.messageEventHandler)}get iframeRef(){var i;return(i=this._iframeRef)==null?void 0:i.value}get _host(){try{return new URL(this.host),this.host}catch{return this.GISCUS_DEFAULT_HOST}}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("message",this.messageEventHandler)}_formatError(i){return`[giscus] An error occurred. Error message: "${i}".`}setupSession(){const i=location.href,t=new URL(i),e=localStorage.getItem(this.GISCUS_SESSION_KEY),s=t.searchParams.get("giscus")||"";if(this.__session="",s){localStorage.setItem(this.GISCUS_SESSION_KEY,JSON.stringify(s)),this.__session=s,t.searchParams.delete("giscus"),t.hash="",history.replaceState(void 0,document.title,t.toString());return}if(e)try{this.__session=JSON.parse(e)}catch(n){localStorage.removeItem(this.GISCUS_SESSION_KEY),console.warn(`${this._formatError(n==null?void 0:n.message)} Session has been cleared.`)}}signOut(){localStorage.removeItem(this.GISCUS_SESSION_KEY),this.__session="",this.update(new Map)}handleMessageEvent(i){if(i.origin!==this._host)return;const{data:t}=i;if(!(typeof t=="object"&&t.giscus))return;if(this.iframeRef&&t.giscus.resizeHeight&&(this.iframeRef.style.height=`${t.giscus.resizeHeight}px`),t.giscus.signOut){console.log("[giscus] User has logged out. Session has been cleared."),this.signOut();return}if(!t.giscus.error)return;const e=t.giscus.error;if(e.includes("Bad credentials")||e.includes("Invalid state value")||e.includes("State has expired")){if(localStorage.getItem(this.GISCUS_SESSION_KEY)!==null){console.warn(`${this._formatError(e)} Session has been cleared.`),this.signOut();return}console.error(`${this._formatError(e)} No session is stored initially. ${this.ERROR_SUGGESTION}`)}if(e.includes("Discussion not found")){console.warn(`[giscus] ${e}. A new discussion will be created if a comment/reaction is submitted.`);return}console.error(`${this._formatError(e)} ${this.ERROR_SUGGESTION}`)}sendMessage(i){!this.iframeRef||!this.iframeRef.contentWindow||!this.hasLoaded||(console.log({host:this.host,_host:this._host}),this.iframeRef.contentWindow.postMessage({giscus:i},this._host))}updateConfig(){const i={setConfig:{repo:this.repo,repoId:this.repoId,category:this.category,categoryId:this.categoryId,term:this.getTerm(),number:+this.getNumber(),strict:this.strict==="1",reactionsEnabled:this.reactionsEnabled==="1",emitMetadata:this.emitMetadata==="1",inputPosition:this.inputPosition,theme:this.theme,lang:this.lang}};this.sendMessage(i)}firstUpdated(){var i;(i=this.iframeRef)==null||i.addEventListener("load",()=>{var t;(t=this.iframeRef)==null||t.classList.remove("loading"),this.hasLoaded=!0,this.updateConfig()})}requestUpdate(i,t,e){if(!this.hasUpdated||i==="host"){super.requestUpdate(i,t,e);return}this.updateConfig()}getMetaContent(i,t=!1){const e=t?`meta[property='og:${i}'],`:"",s=document.querySelector(e+`meta[name='${i}']`);return s?s.content:""}_getCleanedUrl(){const i=new URL(location.href);return i.searchParams.delete("giscus"),i.hash="",i}getTerm(){switch(this.mapping){case"url":return`${this._getCleanedUrl()}`;case"title":return document.title;case"og:title":return this.getMetaContent("title",!0);case"specific":return this.term||"";case"number":return"";case"pathname":default:return location.pathname.length<2?"index":location.pathname.substring(1).replace(/\.\w+$/,"")}}getNumber(){return this.mapping==="number"&&this.term||""}getIframeSrc(){const i=this._getCleanedUrl().toString(),t=`${i}${this.id?"#"+this.id:""}`,e=this.getMetaContent("description",!0),s=this.getMetaContent("giscus:backlink")||i,n={origin:t,session:this.__session,repo:this.repo,repoId:this.repoId||"",category:this.category||"",categoryId:this.categoryId||"",term:this.getTerm(),number:this.getNumber(),strict:this.strict,reactionsEnabled:this.reactionsEnabled,emitMetadata:this.emitMetadata,inputPosition:this.inputPosition,theme:this.theme,description:e,backLink:s},r=this._host,o=this.lang?`/${this.lang}`:"",a=new URLSearchParams(n);return`${r}${o}/widget?${a}`}render(){return Ct`
                  -      
                  -    `}};p.styles=mt`
                  -    :host,
                  -    iframe {
                  -      width: 100%;
                  -      border: none;
                  -      min-height: 150px;
                  -      color-scheme: light dark;
                  -    }
                  -
                  -    iframe.loading {
                  -      opacity: 0;
                  -    }
                  -  `;_([v({reflect:!0})],p.prototype,"host",2);_([v({reflect:!0})],p.prototype,"repo",2);_([v({reflect:!0})],p.prototype,"repoId",2);_([v({reflect:!0})],p.prototype,"category",2);_([v({reflect:!0})],p.prototype,"categoryId",2);_([v({reflect:!0})],p.prototype,"mapping",2);_([v({reflect:!0})],p.prototype,"term",2);_([v({reflect:!0})],p.prototype,"strict",2);_([v({reflect:!0})],p.prototype,"reactionsEnabled",2);_([v({reflect:!0})],p.prototype,"emitMetadata",2);_([v({reflect:!0})],p.prototype,"inputPosition",2);_([v({reflect:!0})],p.prototype,"theme",2);_([v({reflect:!0})],p.prototype,"lang",2);_([v({reflect:!0})],p.prototype,"loading",2);p=_([Ft("giscus-widget")],p);export{p as GiscusWidget};
                  diff --git a/assets/gitGraphDiagram-6b463803-qYmaBvlu.js b/assets/gitGraphDiagram-6b463803-eKsTNhvP.js
                  similarity index 99%
                  rename from assets/gitGraphDiagram-6b463803-qYmaBvlu.js
                  rename to assets/gitGraphDiagram-6b463803-eKsTNhvP.js
                  index f1088bc..363f996 100644
                  --- a/assets/gitGraphDiagram-6b463803-qYmaBvlu.js
                  +++ b/assets/gitGraphDiagram-6b463803-eKsTNhvP.js
                  @@ -1,4 +1,4 @@
                  -import{c as A,s as Mt,g as Ct,a as At,b as Ot,v as St,x as It,l as G,j as D,z as Gt,h as Pt,y as Nt,as as Ht,at as Bt}from"./mermaid.core-ygY5oRaR.js";import"./app-RP31lnfq.js";var mt=function(){var r=function(q,h,b,k){for(b=b||{},k=q.length;k--;b[q[k]]=h);return b},a=[1,3],o=[1,6],u=[1,4],n=[1,5],c=[2,5],m=[1,12],l=[5,7,13,19,21,23,24,26,28,31,36,39,46],E=[7,13,19,21,23,24,26,28,31,36,39],_=[7,12,13,19,21,23,24,26,28,31,36,39],i=[7,13,46],g=[1,42],p=[1,41],x=[7,13,29,32,34,37,46],f=[1,55],d=[1,56],y=[1,57],H=[7,13,32,34,41,46],w={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,GG:5,document:6,EOF:7,":":8,DIR:9,options:10,body:11,OPT:12,NL:13,line:14,statement:15,commitStatement:16,mergeStatement:17,cherryPickStatement:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,section:24,branchStatement:25,CHECKOUT:26,ref:27,BRANCH:28,ORDER:29,NUM:30,CHERRY_PICK:31,COMMIT_ID:32,STR:33,COMMIT_TAG:34,EMPTYSTR:35,MERGE:36,COMMIT_TYPE:37,commitType:38,COMMIT:39,commit_arg:40,COMMIT_MSG:41,NORMAL:42,REVERSE:43,HIGHLIGHT:44,ID:45,";":46,$accept:0,$end:1},terminals_:{2:"error",5:"GG",7:"EOF",8:":",9:"DIR",12:"OPT",13:"NL",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"section",26:"CHECKOUT",28:"BRANCH",29:"ORDER",30:"NUM",31:"CHERRY_PICK",32:"COMMIT_ID",33:"STR",34:"COMMIT_TAG",35:"EMPTYSTR",36:"MERGE",37:"COMMIT_TYPE",39:"COMMIT",41:"COMMIT_MSG",42:"NORMAL",43:"REVERSE",44:"HIGHLIGHT",45:"ID",46:";"},productions_:[0,[3,2],[3,3],[3,4],[3,5],[6,0],[6,2],[10,2],[10,1],[11,0],[11,2],[14,2],[14,1],[15,1],[15,1],[15,1],[15,2],[15,2],[15,1],[15,1],[15,1],[15,2],[25,2],[25,4],[18,3],[18,5],[18,5],[18,5],[18,5],[17,2],[17,4],[17,4],[17,4],[17,6],[17,6],[17,6],[17,6],[17,6],[17,6],[17,8],[17,8],[17,8],[17,8],[17,8],[17,8],[16,2],[16,3],[16,3],[16,5],[16,5],[16,3],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,3],[16,5],[16,5],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[40,0],[40,1],[38,1],[38,1],[38,1],[27,1],[27,1],[4,1],[4,1],[4,1]],performAction:function(h,b,k,s,T,t,X){var e=t.length-1;switch(T){case 2:return t[e];case 3:return t[e-1];case 4:return s.setDirection(t[e-3]),t[e-1];case 6:s.setOptions(t[e-1]),this.$=t[e];break;case 7:t[e-1]+=t[e],this.$=t[e-1];break;case 9:this.$=[];break;case 10:t[e-1].push(t[e]),this.$=t[e-1];break;case 11:this.$=t[e-1];break;case 16:this.$=t[e].trim(),s.setAccTitle(this.$);break;case 17:case 18:this.$=t[e].trim(),s.setAccDescription(this.$);break;case 19:s.addSection(t[e].substr(8)),this.$=t[e].substr(8);break;case 21:s.checkout(t[e]);break;case 22:s.branch(t[e]);break;case 23:s.branch(t[e-2],t[e]);break;case 24:s.cherryPick(t[e],"",void 0);break;case 25:s.cherryPick(t[e-2],"",t[e]);break;case 26:case 28:s.cherryPick(t[e-2],"","");break;case 27:s.cherryPick(t[e],"",t[e-2]);break;case 29:s.merge(t[e],"","","");break;case 30:s.merge(t[e-2],t[e],"","");break;case 31:s.merge(t[e-2],"",t[e],"");break;case 32:s.merge(t[e-2],"","",t[e]);break;case 33:s.merge(t[e-4],t[e],"",t[e-2]);break;case 34:s.merge(t[e-4],"",t[e],t[e-2]);break;case 35:s.merge(t[e-4],"",t[e-2],t[e]);break;case 36:s.merge(t[e-4],t[e-2],t[e],"");break;case 37:s.merge(t[e-4],t[e-2],"",t[e]);break;case 38:s.merge(t[e-4],t[e],t[e-2],"");break;case 39:s.merge(t[e-6],t[e-4],t[e-2],t[e]);break;case 40:s.merge(t[e-6],t[e],t[e-4],t[e-2]);break;case 41:s.merge(t[e-6],t[e-4],t[e],t[e-2]);break;case 42:s.merge(t[e-6],t[e-2],t[e-4],t[e]);break;case 43:s.merge(t[e-6],t[e],t[e-2],t[e-4]);break;case 44:s.merge(t[e-6],t[e-2],t[e],t[e-4]);break;case 45:s.commit(t[e]);break;case 46:s.commit("","",s.commitType.NORMAL,t[e]);break;case 47:s.commit("","",t[e],"");break;case 48:s.commit("","",t[e],t[e-2]);break;case 49:s.commit("","",t[e-2],t[e]);break;case 50:s.commit("",t[e],s.commitType.NORMAL,"");break;case 51:s.commit("",t[e-2],s.commitType.NORMAL,t[e]);break;case 52:s.commit("",t[e],s.commitType.NORMAL,t[e-2]);break;case 53:s.commit("",t[e-2],t[e],"");break;case 54:s.commit("",t[e],t[e-2],"");break;case 55:s.commit("",t[e-4],t[e-2],t[e]);break;case 56:s.commit("",t[e-4],t[e],t[e-2]);break;case 57:s.commit("",t[e-2],t[e-4],t[e]);break;case 58:s.commit("",t[e],t[e-4],t[e-2]);break;case 59:s.commit("",t[e],t[e-2],t[e-4]);break;case 60:s.commit("",t[e-2],t[e],t[e-4]);break;case 61:s.commit(t[e],"",s.commitType.NORMAL,"");break;case 62:s.commit(t[e],"",s.commitType.NORMAL,t[e-2]);break;case 63:s.commit(t[e-2],"",s.commitType.NORMAL,t[e]);break;case 64:s.commit(t[e-2],"",t[e],"");break;case 65:s.commit(t[e],"",t[e-2],"");break;case 66:s.commit(t[e],t[e-2],s.commitType.NORMAL,"");break;case 67:s.commit(t[e-2],t[e],s.commitType.NORMAL,"");break;case 68:s.commit(t[e-4],"",t[e-2],t[e]);break;case 69:s.commit(t[e-4],"",t[e],t[e-2]);break;case 70:s.commit(t[e-2],"",t[e-4],t[e]);break;case 71:s.commit(t[e],"",t[e-4],t[e-2]);break;case 72:s.commit(t[e],"",t[e-2],t[e-4]);break;case 73:s.commit(t[e-2],"",t[e],t[e-4]);break;case 74:s.commit(t[e-4],t[e],t[e-2],"");break;case 75:s.commit(t[e-4],t[e-2],t[e],"");break;case 76:s.commit(t[e-2],t[e],t[e-4],"");break;case 77:s.commit(t[e],t[e-2],t[e-4],"");break;case 78:s.commit(t[e],t[e-4],t[e-2],"");break;case 79:s.commit(t[e-2],t[e-4],t[e],"");break;case 80:s.commit(t[e-4],t[e],s.commitType.NORMAL,t[e-2]);break;case 81:s.commit(t[e-4],t[e-2],s.commitType.NORMAL,t[e]);break;case 82:s.commit(t[e-2],t[e],s.commitType.NORMAL,t[e-4]);break;case 83:s.commit(t[e],t[e-2],s.commitType.NORMAL,t[e-4]);break;case 84:s.commit(t[e],t[e-4],s.commitType.NORMAL,t[e-2]);break;case 85:s.commit(t[e-2],t[e-4],s.commitType.NORMAL,t[e]);break;case 86:s.commit(t[e-6],t[e-4],t[e-2],t[e]);break;case 87:s.commit(t[e-6],t[e-4],t[e],t[e-2]);break;case 88:s.commit(t[e-6],t[e-2],t[e-4],t[e]);break;case 89:s.commit(t[e-6],t[e],t[e-4],t[e-2]);break;case 90:s.commit(t[e-6],t[e-2],t[e],t[e-4]);break;case 91:s.commit(t[e-6],t[e],t[e-2],t[e-4]);break;case 92:s.commit(t[e-4],t[e-6],t[e-2],t[e]);break;case 93:s.commit(t[e-4],t[e-6],t[e],t[e-2]);break;case 94:s.commit(t[e-2],t[e-6],t[e-4],t[e]);break;case 95:s.commit(t[e],t[e-6],t[e-4],t[e-2]);break;case 96:s.commit(t[e-2],t[e-6],t[e],t[e-4]);break;case 97:s.commit(t[e],t[e-6],t[e-2],t[e-4]);break;case 98:s.commit(t[e],t[e-4],t[e-2],t[e-6]);break;case 99:s.commit(t[e-2],t[e-4],t[e],t[e-6]);break;case 100:s.commit(t[e],t[e-2],t[e-4],t[e-6]);break;case 101:s.commit(t[e-2],t[e],t[e-4],t[e-6]);break;case 102:s.commit(t[e-4],t[e-2],t[e],t[e-6]);break;case 103:s.commit(t[e-4],t[e],t[e-2],t[e-6]);break;case 104:s.commit(t[e-2],t[e-4],t[e-6],t[e]);break;case 105:s.commit(t[e],t[e-4],t[e-6],t[e-2]);break;case 106:s.commit(t[e-2],t[e],t[e-6],t[e-4]);break;case 107:s.commit(t[e],t[e-2],t[e-6],t[e-4]);break;case 108:s.commit(t[e-4],t[e-2],t[e-6],t[e]);break;case 109:s.commit(t[e-4],t[e],t[e-6],t[e-2]);break;case 110:this.$="";break;case 111:this.$=t[e];break;case 112:this.$=s.commitType.NORMAL;break;case 113:this.$=s.commitType.REVERSE;break;case 114:this.$=s.commitType.HIGHLIGHT;break}},table:[{3:1,4:2,5:a,7:o,13:u,46:n},{1:[3]},{3:7,4:2,5:a,7:o,13:u,46:n},{6:8,7:c,8:[1,9],9:[1,10],10:11,13:m},r(l,[2,117]),r(l,[2,118]),r(l,[2,119]),{1:[2,1]},{7:[1,13]},{6:14,7:c,10:11,13:m},{8:[1,15]},r(E,[2,9],{11:16,12:[1,17]}),r(_,[2,8]),{1:[2,2]},{7:[1,18]},{6:19,7:c,10:11,13:m},{7:[2,6],13:[1,22],14:20,15:21,16:23,17:24,18:25,19:[1,26],21:[1,27],23:[1,28],24:[1,29],25:30,26:[1,31],28:[1,35],31:[1,34],36:[1,33],39:[1,32]},r(_,[2,7]),{1:[2,3]},{7:[1,36]},r(E,[2,10]),{4:37,7:o,13:u,46:n},r(E,[2,12]),r(i,[2,13]),r(i,[2,14]),r(i,[2,15]),{20:[1,38]},{22:[1,39]},r(i,[2,18]),r(i,[2,19]),r(i,[2,20]),{27:40,33:g,45:p},r(i,[2,110],{40:43,32:[1,46],33:[1,48],34:[1,44],37:[1,45],41:[1,47]}),{27:49,33:g,45:p},{32:[1,50],34:[1,51]},{27:52,33:g,45:p},{1:[2,4]},r(E,[2,11]),r(i,[2,16]),r(i,[2,17]),r(i,[2,21]),r(x,[2,115]),r(x,[2,116]),r(i,[2,45]),{33:[1,53]},{38:54,42:f,43:d,44:y},{33:[1,58]},{33:[1,59]},r(i,[2,111]),r(i,[2,29],{32:[1,60],34:[1,62],37:[1,61]}),{33:[1,63]},{33:[1,64],35:[1,65]},r(i,[2,22],{29:[1,66]}),r(i,[2,46],{32:[1,68],37:[1,67],41:[1,69]}),r(i,[2,47],{32:[1,71],34:[1,70],41:[1,72]}),r(H,[2,112]),r(H,[2,113]),r(H,[2,114]),r(i,[2,50],{34:[1,73],37:[1,74],41:[1,75]}),r(i,[2,61],{32:[1,78],34:[1,76],37:[1,77]}),{33:[1,79]},{38:80,42:f,43:d,44:y},{33:[1,81]},r(i,[2,24],{34:[1,82]}),{32:[1,83]},{32:[1,84]},{30:[1,85]},{38:86,42:f,43:d,44:y},{33:[1,87]},{33:[1,88]},{33:[1,89]},{33:[1,90]},{33:[1,91]},{33:[1,92]},{38:93,42:f,43:d,44:y},{33:[1,94]},{33:[1,95]},{38:96,42:f,43:d,44:y},{33:[1,97]},r(i,[2,30],{34:[1,99],37:[1,98]}),r(i,[2,31],{32:[1,101],34:[1,100]}),r(i,[2,32],{32:[1,102],37:[1,103]}),{33:[1,104],35:[1,105]},{33:[1,106]},{33:[1,107]},r(i,[2,23]),r(i,[2,48],{32:[1,108],41:[1,109]}),r(i,[2,52],{37:[1,110],41:[1,111]}),r(i,[2,62],{32:[1,113],37:[1,112]}),r(i,[2,49],{32:[1,114],41:[1,115]}),r(i,[2,54],{34:[1,116],41:[1,117]}),r(i,[2,65],{32:[1,119],34:[1,118]}),r(i,[2,51],{37:[1,120],41:[1,121]}),r(i,[2,53],{34:[1,122],41:[1,123]}),r(i,[2,66],{34:[1,125],37:[1,124]}),r(i,[2,63],{32:[1,127],37:[1,126]}),r(i,[2,64],{32:[1,129],34:[1,128]}),r(i,[2,67],{34:[1,131],37:[1,130]}),{38:132,42:f,43:d,44:y},{33:[1,133]},{33:[1,134]},{33:[1,135]},{33:[1,136]},{38:137,42:f,43:d,44:y},r(i,[2,25]),r(i,[2,26]),r(i,[2,27]),r(i,[2,28]),{33:[1,138]},{33:[1,139]},{38:140,42:f,43:d,44:y},{33:[1,141]},{38:142,42:f,43:d,44:y},{33:[1,143]},{33:[1,144]},{33:[1,145]},{33:[1,146]},{33:[1,147]},{33:[1,148]},{33:[1,149]},{38:150,42:f,43:d,44:y},{33:[1,151]},{33:[1,152]},{33:[1,153]},{38:154,42:f,43:d,44:y},{33:[1,155]},{38:156,42:f,43:d,44:y},{33:[1,157]},{33:[1,158]},{33:[1,159]},{38:160,42:f,43:d,44:y},{33:[1,161]},r(i,[2,36],{34:[1,162]}),r(i,[2,37],{37:[1,163]}),r(i,[2,35],{32:[1,164]}),r(i,[2,38],{34:[1,165]}),r(i,[2,33],{37:[1,166]}),r(i,[2,34],{32:[1,167]}),r(i,[2,59],{41:[1,168]}),r(i,[2,72],{32:[1,169]}),r(i,[2,60],{41:[1,170]}),r(i,[2,83],{37:[1,171]}),r(i,[2,73],{32:[1,172]}),r(i,[2,82],{37:[1,173]}),r(i,[2,58],{41:[1,174]}),r(i,[2,71],{32:[1,175]}),r(i,[2,57],{41:[1,176]}),r(i,[2,77],{34:[1,177]}),r(i,[2,70],{32:[1,178]}),r(i,[2,76],{34:[1,179]}),r(i,[2,56],{41:[1,180]}),r(i,[2,84],{37:[1,181]}),r(i,[2,55],{41:[1,182]}),r(i,[2,78],{34:[1,183]}),r(i,[2,79],{34:[1,184]}),r(i,[2,85],{37:[1,185]}),r(i,[2,69],{32:[1,186]}),r(i,[2,80],{37:[1,187]}),r(i,[2,68],{32:[1,188]}),r(i,[2,74],{34:[1,189]}),r(i,[2,75],{34:[1,190]}),r(i,[2,81],{37:[1,191]}),{33:[1,192]},{38:193,42:f,43:d,44:y},{33:[1,194]},{33:[1,195]},{38:196,42:f,43:d,44:y},{33:[1,197]},{33:[1,198]},{33:[1,199]},{33:[1,200]},{38:201,42:f,43:d,44:y},{33:[1,202]},{38:203,42:f,43:d,44:y},{33:[1,204]},{33:[1,205]},{33:[1,206]},{33:[1,207]},{33:[1,208]},{33:[1,209]},{33:[1,210]},{38:211,42:f,43:d,44:y},{33:[1,212]},{33:[1,213]},{33:[1,214]},{38:215,42:f,43:d,44:y},{33:[1,216]},{38:217,42:f,43:d,44:y},{33:[1,218]},{33:[1,219]},{33:[1,220]},{38:221,42:f,43:d,44:y},r(i,[2,39]),r(i,[2,41]),r(i,[2,40]),r(i,[2,42]),r(i,[2,44]),r(i,[2,43]),r(i,[2,100]),r(i,[2,101]),r(i,[2,98]),r(i,[2,99]),r(i,[2,103]),r(i,[2,102]),r(i,[2,107]),r(i,[2,106]),r(i,[2,105]),r(i,[2,104]),r(i,[2,109]),r(i,[2,108]),r(i,[2,97]),r(i,[2,96]),r(i,[2,95]),r(i,[2,94]),r(i,[2,92]),r(i,[2,93]),r(i,[2,91]),r(i,[2,90]),r(i,[2,89]),r(i,[2,88]),r(i,[2,86]),r(i,[2,87])],defaultActions:{7:[2,1],13:[2,2],18:[2,3],36:[2,4]},parseError:function(h,b){if(b.recoverable)this.trace(h);else{var k=new Error(h);throw k.hash=b,k}},parse:function(h){var b=this,k=[0],s=[],T=[null],t=[],X=this.table,e="",rt=0,pt=0,Tt=2,ft=1,Lt=t.slice.call(arguments,1),v=Object.create(this.lexer),Y={yy:{}};for(var ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ct)&&(Y.yy[ct]=this.yy[ct]);v.setInput(h,Y.yy),Y.yy.lexer=v,Y.yy.parser=this,typeof v.yylloc>"u"&&(v.yylloc={});var ot=v.yylloc;t.push(ot);var Rt=v.options&&v.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function vt(){var j;return j=s.pop()||v.lex()||ft,typeof j!="number"&&(j instanceof Array&&(s=j,j=s.pop()),j=b.symbols_[j]||j),j}for(var I,K,V,lt,W={},it,z,bt,st;;){if(K=k[k.length-1],this.defaultActions[K]?V=this.defaultActions[K]:((I===null||typeof I>"u")&&(I=vt()),V=X[K]&&X[K][I]),typeof V>"u"||!V.length||!V[0]){var ht="";st=[];for(it in X[K])this.terminals_[it]&&it>Tt&&st.push("'"+this.terminals_[it]+"'");v.showPosition?ht="Parse error on line "+(rt+1)+`:
                  +import{c as A,s as Mt,g as Ct,a as At,b as Ot,v as St,x as It,l as G,j as D,z as Gt,h as Pt,y as Nt,as as Ht,at as Bt}from"./mermaid.core-YBgJFCkH.js";import"./app-0NopiYEV.js";var mt=function(){var r=function(q,h,b,k){for(b=b||{},k=q.length;k--;b[q[k]]=h);return b},a=[1,3],o=[1,6],u=[1,4],n=[1,5],c=[2,5],m=[1,12],l=[5,7,13,19,21,23,24,26,28,31,36,39,46],E=[7,13,19,21,23,24,26,28,31,36,39],_=[7,12,13,19,21,23,24,26,28,31,36,39],i=[7,13,46],g=[1,42],p=[1,41],x=[7,13,29,32,34,37,46],f=[1,55],d=[1,56],y=[1,57],H=[7,13,32,34,41,46],w={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,GG:5,document:6,EOF:7,":":8,DIR:9,options:10,body:11,OPT:12,NL:13,line:14,statement:15,commitStatement:16,mergeStatement:17,cherryPickStatement:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,section:24,branchStatement:25,CHECKOUT:26,ref:27,BRANCH:28,ORDER:29,NUM:30,CHERRY_PICK:31,COMMIT_ID:32,STR:33,COMMIT_TAG:34,EMPTYSTR:35,MERGE:36,COMMIT_TYPE:37,commitType:38,COMMIT:39,commit_arg:40,COMMIT_MSG:41,NORMAL:42,REVERSE:43,HIGHLIGHT:44,ID:45,";":46,$accept:0,$end:1},terminals_:{2:"error",5:"GG",7:"EOF",8:":",9:"DIR",12:"OPT",13:"NL",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"section",26:"CHECKOUT",28:"BRANCH",29:"ORDER",30:"NUM",31:"CHERRY_PICK",32:"COMMIT_ID",33:"STR",34:"COMMIT_TAG",35:"EMPTYSTR",36:"MERGE",37:"COMMIT_TYPE",39:"COMMIT",41:"COMMIT_MSG",42:"NORMAL",43:"REVERSE",44:"HIGHLIGHT",45:"ID",46:";"},productions_:[0,[3,2],[3,3],[3,4],[3,5],[6,0],[6,2],[10,2],[10,1],[11,0],[11,2],[14,2],[14,1],[15,1],[15,1],[15,1],[15,2],[15,2],[15,1],[15,1],[15,1],[15,2],[25,2],[25,4],[18,3],[18,5],[18,5],[18,5],[18,5],[17,2],[17,4],[17,4],[17,4],[17,6],[17,6],[17,6],[17,6],[17,6],[17,6],[17,8],[17,8],[17,8],[17,8],[17,8],[17,8],[16,2],[16,3],[16,3],[16,5],[16,5],[16,3],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,3],[16,5],[16,5],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[40,0],[40,1],[38,1],[38,1],[38,1],[27,1],[27,1],[4,1],[4,1],[4,1]],performAction:function(h,b,k,s,T,t,X){var e=t.length-1;switch(T){case 2:return t[e];case 3:return t[e-1];case 4:return s.setDirection(t[e-3]),t[e-1];case 6:s.setOptions(t[e-1]),this.$=t[e];break;case 7:t[e-1]+=t[e],this.$=t[e-1];break;case 9:this.$=[];break;case 10:t[e-1].push(t[e]),this.$=t[e-1];break;case 11:this.$=t[e-1];break;case 16:this.$=t[e].trim(),s.setAccTitle(this.$);break;case 17:case 18:this.$=t[e].trim(),s.setAccDescription(this.$);break;case 19:s.addSection(t[e].substr(8)),this.$=t[e].substr(8);break;case 21:s.checkout(t[e]);break;case 22:s.branch(t[e]);break;case 23:s.branch(t[e-2],t[e]);break;case 24:s.cherryPick(t[e],"",void 0);break;case 25:s.cherryPick(t[e-2],"",t[e]);break;case 26:case 28:s.cherryPick(t[e-2],"","");break;case 27:s.cherryPick(t[e],"",t[e-2]);break;case 29:s.merge(t[e],"","","");break;case 30:s.merge(t[e-2],t[e],"","");break;case 31:s.merge(t[e-2],"",t[e],"");break;case 32:s.merge(t[e-2],"","",t[e]);break;case 33:s.merge(t[e-4],t[e],"",t[e-2]);break;case 34:s.merge(t[e-4],"",t[e],t[e-2]);break;case 35:s.merge(t[e-4],"",t[e-2],t[e]);break;case 36:s.merge(t[e-4],t[e-2],t[e],"");break;case 37:s.merge(t[e-4],t[e-2],"",t[e]);break;case 38:s.merge(t[e-4],t[e],t[e-2],"");break;case 39:s.merge(t[e-6],t[e-4],t[e-2],t[e]);break;case 40:s.merge(t[e-6],t[e],t[e-4],t[e-2]);break;case 41:s.merge(t[e-6],t[e-4],t[e],t[e-2]);break;case 42:s.merge(t[e-6],t[e-2],t[e-4],t[e]);break;case 43:s.merge(t[e-6],t[e],t[e-2],t[e-4]);break;case 44:s.merge(t[e-6],t[e-2],t[e],t[e-4]);break;case 45:s.commit(t[e]);break;case 46:s.commit("","",s.commitType.NORMAL,t[e]);break;case 47:s.commit("","",t[e],"");break;case 48:s.commit("","",t[e],t[e-2]);break;case 49:s.commit("","",t[e-2],t[e]);break;case 50:s.commit("",t[e],s.commitType.NORMAL,"");break;case 51:s.commit("",t[e-2],s.commitType.NORMAL,t[e]);break;case 52:s.commit("",t[e],s.commitType.NORMAL,t[e-2]);break;case 53:s.commit("",t[e-2],t[e],"");break;case 54:s.commit("",t[e],t[e-2],"");break;case 55:s.commit("",t[e-4],t[e-2],t[e]);break;case 56:s.commit("",t[e-4],t[e],t[e-2]);break;case 57:s.commit("",t[e-2],t[e-4],t[e]);break;case 58:s.commit("",t[e],t[e-4],t[e-2]);break;case 59:s.commit("",t[e],t[e-2],t[e-4]);break;case 60:s.commit("",t[e-2],t[e],t[e-4]);break;case 61:s.commit(t[e],"",s.commitType.NORMAL,"");break;case 62:s.commit(t[e],"",s.commitType.NORMAL,t[e-2]);break;case 63:s.commit(t[e-2],"",s.commitType.NORMAL,t[e]);break;case 64:s.commit(t[e-2],"",t[e],"");break;case 65:s.commit(t[e],"",t[e-2],"");break;case 66:s.commit(t[e],t[e-2],s.commitType.NORMAL,"");break;case 67:s.commit(t[e-2],t[e],s.commitType.NORMAL,"");break;case 68:s.commit(t[e-4],"",t[e-2],t[e]);break;case 69:s.commit(t[e-4],"",t[e],t[e-2]);break;case 70:s.commit(t[e-2],"",t[e-4],t[e]);break;case 71:s.commit(t[e],"",t[e-4],t[e-2]);break;case 72:s.commit(t[e],"",t[e-2],t[e-4]);break;case 73:s.commit(t[e-2],"",t[e],t[e-4]);break;case 74:s.commit(t[e-4],t[e],t[e-2],"");break;case 75:s.commit(t[e-4],t[e-2],t[e],"");break;case 76:s.commit(t[e-2],t[e],t[e-4],"");break;case 77:s.commit(t[e],t[e-2],t[e-4],"");break;case 78:s.commit(t[e],t[e-4],t[e-2],"");break;case 79:s.commit(t[e-2],t[e-4],t[e],"");break;case 80:s.commit(t[e-4],t[e],s.commitType.NORMAL,t[e-2]);break;case 81:s.commit(t[e-4],t[e-2],s.commitType.NORMAL,t[e]);break;case 82:s.commit(t[e-2],t[e],s.commitType.NORMAL,t[e-4]);break;case 83:s.commit(t[e],t[e-2],s.commitType.NORMAL,t[e-4]);break;case 84:s.commit(t[e],t[e-4],s.commitType.NORMAL,t[e-2]);break;case 85:s.commit(t[e-2],t[e-4],s.commitType.NORMAL,t[e]);break;case 86:s.commit(t[e-6],t[e-4],t[e-2],t[e]);break;case 87:s.commit(t[e-6],t[e-4],t[e],t[e-2]);break;case 88:s.commit(t[e-6],t[e-2],t[e-4],t[e]);break;case 89:s.commit(t[e-6],t[e],t[e-4],t[e-2]);break;case 90:s.commit(t[e-6],t[e-2],t[e],t[e-4]);break;case 91:s.commit(t[e-6],t[e],t[e-2],t[e-4]);break;case 92:s.commit(t[e-4],t[e-6],t[e-2],t[e]);break;case 93:s.commit(t[e-4],t[e-6],t[e],t[e-2]);break;case 94:s.commit(t[e-2],t[e-6],t[e-4],t[e]);break;case 95:s.commit(t[e],t[e-6],t[e-4],t[e-2]);break;case 96:s.commit(t[e-2],t[e-6],t[e],t[e-4]);break;case 97:s.commit(t[e],t[e-6],t[e-2],t[e-4]);break;case 98:s.commit(t[e],t[e-4],t[e-2],t[e-6]);break;case 99:s.commit(t[e-2],t[e-4],t[e],t[e-6]);break;case 100:s.commit(t[e],t[e-2],t[e-4],t[e-6]);break;case 101:s.commit(t[e-2],t[e],t[e-4],t[e-6]);break;case 102:s.commit(t[e-4],t[e-2],t[e],t[e-6]);break;case 103:s.commit(t[e-4],t[e],t[e-2],t[e-6]);break;case 104:s.commit(t[e-2],t[e-4],t[e-6],t[e]);break;case 105:s.commit(t[e],t[e-4],t[e-6],t[e-2]);break;case 106:s.commit(t[e-2],t[e],t[e-6],t[e-4]);break;case 107:s.commit(t[e],t[e-2],t[e-6],t[e-4]);break;case 108:s.commit(t[e-4],t[e-2],t[e-6],t[e]);break;case 109:s.commit(t[e-4],t[e],t[e-6],t[e-2]);break;case 110:this.$="";break;case 111:this.$=t[e];break;case 112:this.$=s.commitType.NORMAL;break;case 113:this.$=s.commitType.REVERSE;break;case 114:this.$=s.commitType.HIGHLIGHT;break}},table:[{3:1,4:2,5:a,7:o,13:u,46:n},{1:[3]},{3:7,4:2,5:a,7:o,13:u,46:n},{6:8,7:c,8:[1,9],9:[1,10],10:11,13:m},r(l,[2,117]),r(l,[2,118]),r(l,[2,119]),{1:[2,1]},{7:[1,13]},{6:14,7:c,10:11,13:m},{8:[1,15]},r(E,[2,9],{11:16,12:[1,17]}),r(_,[2,8]),{1:[2,2]},{7:[1,18]},{6:19,7:c,10:11,13:m},{7:[2,6],13:[1,22],14:20,15:21,16:23,17:24,18:25,19:[1,26],21:[1,27],23:[1,28],24:[1,29],25:30,26:[1,31],28:[1,35],31:[1,34],36:[1,33],39:[1,32]},r(_,[2,7]),{1:[2,3]},{7:[1,36]},r(E,[2,10]),{4:37,7:o,13:u,46:n},r(E,[2,12]),r(i,[2,13]),r(i,[2,14]),r(i,[2,15]),{20:[1,38]},{22:[1,39]},r(i,[2,18]),r(i,[2,19]),r(i,[2,20]),{27:40,33:g,45:p},r(i,[2,110],{40:43,32:[1,46],33:[1,48],34:[1,44],37:[1,45],41:[1,47]}),{27:49,33:g,45:p},{32:[1,50],34:[1,51]},{27:52,33:g,45:p},{1:[2,4]},r(E,[2,11]),r(i,[2,16]),r(i,[2,17]),r(i,[2,21]),r(x,[2,115]),r(x,[2,116]),r(i,[2,45]),{33:[1,53]},{38:54,42:f,43:d,44:y},{33:[1,58]},{33:[1,59]},r(i,[2,111]),r(i,[2,29],{32:[1,60],34:[1,62],37:[1,61]}),{33:[1,63]},{33:[1,64],35:[1,65]},r(i,[2,22],{29:[1,66]}),r(i,[2,46],{32:[1,68],37:[1,67],41:[1,69]}),r(i,[2,47],{32:[1,71],34:[1,70],41:[1,72]}),r(H,[2,112]),r(H,[2,113]),r(H,[2,114]),r(i,[2,50],{34:[1,73],37:[1,74],41:[1,75]}),r(i,[2,61],{32:[1,78],34:[1,76],37:[1,77]}),{33:[1,79]},{38:80,42:f,43:d,44:y},{33:[1,81]},r(i,[2,24],{34:[1,82]}),{32:[1,83]},{32:[1,84]},{30:[1,85]},{38:86,42:f,43:d,44:y},{33:[1,87]},{33:[1,88]},{33:[1,89]},{33:[1,90]},{33:[1,91]},{33:[1,92]},{38:93,42:f,43:d,44:y},{33:[1,94]},{33:[1,95]},{38:96,42:f,43:d,44:y},{33:[1,97]},r(i,[2,30],{34:[1,99],37:[1,98]}),r(i,[2,31],{32:[1,101],34:[1,100]}),r(i,[2,32],{32:[1,102],37:[1,103]}),{33:[1,104],35:[1,105]},{33:[1,106]},{33:[1,107]},r(i,[2,23]),r(i,[2,48],{32:[1,108],41:[1,109]}),r(i,[2,52],{37:[1,110],41:[1,111]}),r(i,[2,62],{32:[1,113],37:[1,112]}),r(i,[2,49],{32:[1,114],41:[1,115]}),r(i,[2,54],{34:[1,116],41:[1,117]}),r(i,[2,65],{32:[1,119],34:[1,118]}),r(i,[2,51],{37:[1,120],41:[1,121]}),r(i,[2,53],{34:[1,122],41:[1,123]}),r(i,[2,66],{34:[1,125],37:[1,124]}),r(i,[2,63],{32:[1,127],37:[1,126]}),r(i,[2,64],{32:[1,129],34:[1,128]}),r(i,[2,67],{34:[1,131],37:[1,130]}),{38:132,42:f,43:d,44:y},{33:[1,133]},{33:[1,134]},{33:[1,135]},{33:[1,136]},{38:137,42:f,43:d,44:y},r(i,[2,25]),r(i,[2,26]),r(i,[2,27]),r(i,[2,28]),{33:[1,138]},{33:[1,139]},{38:140,42:f,43:d,44:y},{33:[1,141]},{38:142,42:f,43:d,44:y},{33:[1,143]},{33:[1,144]},{33:[1,145]},{33:[1,146]},{33:[1,147]},{33:[1,148]},{33:[1,149]},{38:150,42:f,43:d,44:y},{33:[1,151]},{33:[1,152]},{33:[1,153]},{38:154,42:f,43:d,44:y},{33:[1,155]},{38:156,42:f,43:d,44:y},{33:[1,157]},{33:[1,158]},{33:[1,159]},{38:160,42:f,43:d,44:y},{33:[1,161]},r(i,[2,36],{34:[1,162]}),r(i,[2,37],{37:[1,163]}),r(i,[2,35],{32:[1,164]}),r(i,[2,38],{34:[1,165]}),r(i,[2,33],{37:[1,166]}),r(i,[2,34],{32:[1,167]}),r(i,[2,59],{41:[1,168]}),r(i,[2,72],{32:[1,169]}),r(i,[2,60],{41:[1,170]}),r(i,[2,83],{37:[1,171]}),r(i,[2,73],{32:[1,172]}),r(i,[2,82],{37:[1,173]}),r(i,[2,58],{41:[1,174]}),r(i,[2,71],{32:[1,175]}),r(i,[2,57],{41:[1,176]}),r(i,[2,77],{34:[1,177]}),r(i,[2,70],{32:[1,178]}),r(i,[2,76],{34:[1,179]}),r(i,[2,56],{41:[1,180]}),r(i,[2,84],{37:[1,181]}),r(i,[2,55],{41:[1,182]}),r(i,[2,78],{34:[1,183]}),r(i,[2,79],{34:[1,184]}),r(i,[2,85],{37:[1,185]}),r(i,[2,69],{32:[1,186]}),r(i,[2,80],{37:[1,187]}),r(i,[2,68],{32:[1,188]}),r(i,[2,74],{34:[1,189]}),r(i,[2,75],{34:[1,190]}),r(i,[2,81],{37:[1,191]}),{33:[1,192]},{38:193,42:f,43:d,44:y},{33:[1,194]},{33:[1,195]},{38:196,42:f,43:d,44:y},{33:[1,197]},{33:[1,198]},{33:[1,199]},{33:[1,200]},{38:201,42:f,43:d,44:y},{33:[1,202]},{38:203,42:f,43:d,44:y},{33:[1,204]},{33:[1,205]},{33:[1,206]},{33:[1,207]},{33:[1,208]},{33:[1,209]},{33:[1,210]},{38:211,42:f,43:d,44:y},{33:[1,212]},{33:[1,213]},{33:[1,214]},{38:215,42:f,43:d,44:y},{33:[1,216]},{38:217,42:f,43:d,44:y},{33:[1,218]},{33:[1,219]},{33:[1,220]},{38:221,42:f,43:d,44:y},r(i,[2,39]),r(i,[2,41]),r(i,[2,40]),r(i,[2,42]),r(i,[2,44]),r(i,[2,43]),r(i,[2,100]),r(i,[2,101]),r(i,[2,98]),r(i,[2,99]),r(i,[2,103]),r(i,[2,102]),r(i,[2,107]),r(i,[2,106]),r(i,[2,105]),r(i,[2,104]),r(i,[2,109]),r(i,[2,108]),r(i,[2,97]),r(i,[2,96]),r(i,[2,95]),r(i,[2,94]),r(i,[2,92]),r(i,[2,93]),r(i,[2,91]),r(i,[2,90]),r(i,[2,89]),r(i,[2,88]),r(i,[2,86]),r(i,[2,87])],defaultActions:{7:[2,1],13:[2,2],18:[2,3],36:[2,4]},parseError:function(h,b){if(b.recoverable)this.trace(h);else{var k=new Error(h);throw k.hash=b,k}},parse:function(h){var b=this,k=[0],s=[],T=[null],t=[],X=this.table,e="",rt=0,pt=0,Tt=2,ft=1,Lt=t.slice.call(arguments,1),v=Object.create(this.lexer),Y={yy:{}};for(var ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ct)&&(Y.yy[ct]=this.yy[ct]);v.setInput(h,Y.yy),Y.yy.lexer=v,Y.yy.parser=this,typeof v.yylloc>"u"&&(v.yylloc={});var ot=v.yylloc;t.push(ot);var Rt=v.options&&v.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function vt(){var j;return j=s.pop()||v.lex()||ft,typeof j!="number"&&(j instanceof Array&&(s=j,j=s.pop()),j=b.symbols_[j]||j),j}for(var I,K,V,lt,W={},it,z,bt,st;;){if(K=k[k.length-1],this.defaultActions[K]?V=this.defaultActions[K]:((I===null||typeof I>"u")&&(I=vt()),V=X[K]&&X[K][I]),typeof V>"u"||!V.length||!V[0]){var ht="";st=[];for(it in X[K])this.terminals_[it]&&it>Tt&&st.push("'"+this.terminals_[it]+"'");v.showPosition?ht="Parse error on line "+(rt+1)+`:
                   `+v.showPosition()+`
                   Expecting `+st.join(", ")+", got '"+(this.terminals_[I]||I)+"'":ht="Parse error on line "+(rt+1)+": Unexpected "+(I==ft?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(ht,{text:v.match,token:this.terminals_[I]||I,line:v.yylineno,loc:ot,expected:st})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+K+", token: "+I);switch(V[0]){case 1:k.push(I),T.push(v.yytext),t.push(v.yylloc),k.push(V[1]),I=null,pt=v.yyleng,e=v.yytext,rt=v.yylineno,ot=v.yylloc;break;case 2:if(z=this.productions_[V[1]][1],W.$=T[T.length-z],W._$={first_line:t[t.length-(z||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(z||1)].first_column,last_column:t[t.length-1].last_column},Rt&&(W._$.range=[t[t.length-(z||1)].range[0],t[t.length-1].range[1]]),lt=this.performAction.apply(W,[e,pt,rt,Y.yy,V[1],T,t].concat(Lt)),typeof lt<"u")return lt;z&&(k=k.slice(0,-1*z*2),T=T.slice(0,-1*z),t=t.slice(0,-1*z)),k.push(this.productions_[V[1]][0]),T.push(W.$),t.push(W._$),bt=X[k[k.length-2]][k[k.length-1]],k.push(bt);break;case 3:return!0}}return!0}},B=function(){var q={EOF:1,parseError:function(b,k){if(this.yy.parser)this.yy.parser.parseError(b,k);else throw new Error(b)},setInput:function(h,b){return this.yy=b||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var b=h.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},unput:function(h){var b=h.length,k=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b),this.offset-=b;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var T=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===s.length?this.yylloc.first_column:0)+s[s.length-k.length].length-k[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[T[0],T[0]+this.yyleng-b]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
                   `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(h){this.unput(this.match.slice(h))},pastInput:function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var h=this.pastInput(),b=new Array(h.length+1).join("-");return h+this.upcomingInput()+`
                  diff --git a/assets/high_concurrency_implementation_principle.html-6GveguVT.js b/assets/high_concurrency_implementation_principle.html-4A4gHD8-.js
                  similarity index 99%
                  rename from assets/high_concurrency_implementation_principle.html-6GveguVT.js
                  rename to assets/high_concurrency_implementation_principle.html-4A4gHD8-.js
                  index d23b55f..d66ac4c 100644
                  --- a/assets/high_concurrency_implementation_principle.html-6GveguVT.js
                  +++ b/assets/high_concurrency_implementation_principle.html-4A4gHD8-.js
                  @@ -1,4 +1,4 @@
                  -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as c,c as l,a as n,d as s,b as p,w as i,e as u}from"./app-RP31lnfq.js";const k={},r=n("h2",{id:"项目介绍",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#项目介绍","aria-hidden":"true"},"#"),s(" 项目介绍")],-1),d={href:"https://github.com/xiongziliang/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},v=u(`

                  该框架基于 C++11 开发,避免使用裸指针,减少内存拷贝,代码精简可靠,并发性能优异,在 linux 平台下,单一进程即可充分利用多核 CPU 的优势;最大限度的榨干 CPU、网卡性能;轻松达到万兆网卡性能极限。同时也能在高性能的同时,做到极低延时,画面秒开。

                  目前 ZLMediaKit 经过多次版本迭代,编程模型多次升级优化;已经趋于成熟稳定,也在各种生产环境得到了验证,本文主要讨论 ZLMediaKit 高性能实现原理以及项目特点。

                  网络模型对比

                  不同于 SRS 的单线程多协程、node.js/redis 的单线程、NGINX 的多进程模型;ZLMediaKit 采用的是单进程多线程模型。那么为什么 ZLMediaKit 要采用这样的编程模型呢?

                  作为一个多年的 C++服务器后台开发工程师,多年的工作经验告诉我,作为一个服务器程序,对于稳定性要求极高;一个服务器可以性能差点,但是绝不能轻易 core dump;服务中断、重启、异常,对于一个线上已运营项目来说结果是灾难性的。那么我们该怎么确保服务器的稳定?目前有以下手段:

                  • 单线程模型
                  • 单线程+协程
                  • 单线程+多进程
                  • 多线程+锁
                  • 弃用 C/C++

                  采用单线程模型的优点是,服务器简单可靠,不用考虑资源竞争互斥的问题,这样可以比较容易做到高稳定性;采用此模型的典型代表项目有 redis、node.js。但是由于是单线程模型,所以弊端也比较明显;那就是在多核 cpu 上不能充分利用多核 CPU 的算力,性能瓶颈主要在于 CPU(大家应该有过在 redis 中执行 keys *慢慢等待的经历)。

                  img
                  img

                  单线程+协程的方案本质上与纯单线程模型无区别,它们的区别主要编程风格上。纯单线程模型使用的是非阻塞式处处回调方式实现高并发,这种模型会有所谓的回调地狱的问题,编程起来会比较麻烦。而单线程+协程的方案是简化编程方式,采用自然的阻塞式编程风格,在协程库内部管理任务调度,本质也是非阻塞的。但是协程库涉及的比较底层,跟系统息息相关,所以跨平台不是很好做,而且设计实现一个协程库门槛较高。SRS 采用就是这编程模型,由于协程库的限制,SRS 不能在 windows 上运行。

                  为了解决上述单线程模型的问题,很多服务器采用单线程多进程的编程模型;在这种模型下,既有单线程模型的简单可靠的特性,又能充分发挥多核 CPU 的性能,而且某个进程挂了也不会影响其他进程,像 NGINX 就是这种编程模型;但是这种模型也有其局限性。在这种模型下,会话间是相互隔离的,两个会话可能运行在不同的进程上;这样就导致了会话间通信的困难。比如说 A 用户连接在服务器 A 进程上,B 用户连接在服务器 B 进程上;如果两者之间要完成某种数据交互,那么会异常困难,这样必须通过进程间通信来完成。而进程间通信代价和开销比较大,编程起来也比较困难。但是如果会话间无需数据交互(例如 http 服务器),那么这种模型是特别适合的,所以 NGINX 作为 http 服务器也是非常成功的,但是如果是譬如即时聊天的那种需要会话间通信的服务,那么这种开发模型不是很适合。不过现在越来越多的服务都需要支持分布式集群部署,所以单线程多进程方案的缺陷越来越不明显。

                  由于 C/C++是种强类型静态语言,异常处理简单粗暴,动不动就 core dump。C/C++的设计理念就是发现错误及早暴露,在某种意义上来说,崩溃也是种好事,因为这样会引起你的重视,让你能及早发现定位并解决问题,而不是把问题拖延到无法解决的时候再暴露给你。但是这么做对一般人来说,C/C++就不是很友好了,人类并不像机器那样严谨,有点疏忽在所难免,况且有些小问题也无伤大雅,并不需要毁灭式的 core dump 来应对。而且 C/C++的学习曲线异常艰难困苦,很多人好几年也不得要领,所以很多人表示纷纷弃坑,转投 go / erlang / node.js 之类。

                  但是 C/C++由于其性能优越性,以及历史原因,在某些场景下是不二选择,而且 C/C++才是真正的跨平台语言;况且随着智能指针的推出,内存管理不再是难题;而 lambda 语法的支持,让程序上下文绑定不再困难。随着 C++新特性的支持,编译器静态反射机制的完善,现代 C++编程愈发简便快捷。ZLMediaKit 采用的就是 C++11 新标准以及相关理念完成的高性能流媒体服务框架。

                  与上面其它编程模型不同,ZLMediaKit 采用的是多线程开发模型;与传统的多线程模型不同;ZLMediaKit 采用了 C++11 的智能指针来做内存管理,在线程切换时可以完美的管理内存在多线程下共享以及其生命周期。同时互斥锁的粒度消减至极致,几乎可以忽略不计。所以采用多线程模型的 ZLMediaKit 性能损耗极低,每条线程的性能几乎可以媲美单线程模型,同时也可以充分榨干 CPU 的每一核心性能。

                  网络模型详述

                  ZLMediaKit 在启动时会根据 cpu 核心数自动创建若干个 epoll 实例(非 linux 平台为 select);这些 epoll 实例都会有一个线程来运行epoll_wait函数来等待事件的触发。

                  以 ZLMediaKit 的 RTMP 服务为例,在创建一个TcpServer时,ZLMediaKit 会把这个 Tcp 服务的监听套接字加入到每一个 epoll 实例,这样如果收到新的 RTMP 播放请求,那么多个 epoll 实例会在内核的调度下,自动选择负载较轻的线程触发 accept 事件,以下是代码片段:

                  template <typename SessionType>
                  +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as c,c as l,a as n,d as s,b as p,w as i,e as u}from"./app-0NopiYEV.js";const k={},r=n("h2",{id:"项目介绍",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#项目介绍","aria-hidden":"true"},"#"),s(" 项目介绍")],-1),d={href:"https://github.com/xiongziliang/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},v=u(`

                  该框架基于 C++11 开发,避免使用裸指针,减少内存拷贝,代码精简可靠,并发性能优异,在 linux 平台下,单一进程即可充分利用多核 CPU 的优势;最大限度的榨干 CPU、网卡性能;轻松达到万兆网卡性能极限。同时也能在高性能的同时,做到极低延时,画面秒开。

                  目前 ZLMediaKit 经过多次版本迭代,编程模型多次升级优化;已经趋于成熟稳定,也在各种生产环境得到了验证,本文主要讨论 ZLMediaKit 高性能实现原理以及项目特点。

                  网络模型对比

                  不同于 SRS 的单线程多协程、node.js/redis 的单线程、NGINX 的多进程模型;ZLMediaKit 采用的是单进程多线程模型。那么为什么 ZLMediaKit 要采用这样的编程模型呢?

                  作为一个多年的 C++服务器后台开发工程师,多年的工作经验告诉我,作为一个服务器程序,对于稳定性要求极高;一个服务器可以性能差点,但是绝不能轻易 core dump;服务中断、重启、异常,对于一个线上已运营项目来说结果是灾难性的。那么我们该怎么确保服务器的稳定?目前有以下手段:

                  • 单线程模型
                  • 单线程+协程
                  • 单线程+多进程
                  • 多线程+锁
                  • 弃用 C/C++

                  采用单线程模型的优点是,服务器简单可靠,不用考虑资源竞争互斥的问题,这样可以比较容易做到高稳定性;采用此模型的典型代表项目有 redis、node.js。但是由于是单线程模型,所以弊端也比较明显;那就是在多核 cpu 上不能充分利用多核 CPU 的算力,性能瓶颈主要在于 CPU(大家应该有过在 redis 中执行 keys *慢慢等待的经历)。

                  img
                  img

                  单线程+协程的方案本质上与纯单线程模型无区别,它们的区别主要编程风格上。纯单线程模型使用的是非阻塞式处处回调方式实现高并发,这种模型会有所谓的回调地狱的问题,编程起来会比较麻烦。而单线程+协程的方案是简化编程方式,采用自然的阻塞式编程风格,在协程库内部管理任务调度,本质也是非阻塞的。但是协程库涉及的比较底层,跟系统息息相关,所以跨平台不是很好做,而且设计实现一个协程库门槛较高。SRS 采用就是这编程模型,由于协程库的限制,SRS 不能在 windows 上运行。

                  为了解决上述单线程模型的问题,很多服务器采用单线程多进程的编程模型;在这种模型下,既有单线程模型的简单可靠的特性,又能充分发挥多核 CPU 的性能,而且某个进程挂了也不会影响其他进程,像 NGINX 就是这种编程模型;但是这种模型也有其局限性。在这种模型下,会话间是相互隔离的,两个会话可能运行在不同的进程上;这样就导致了会话间通信的困难。比如说 A 用户连接在服务器 A 进程上,B 用户连接在服务器 B 进程上;如果两者之间要完成某种数据交互,那么会异常困难,这样必须通过进程间通信来完成。而进程间通信代价和开销比较大,编程起来也比较困难。但是如果会话间无需数据交互(例如 http 服务器),那么这种模型是特别适合的,所以 NGINX 作为 http 服务器也是非常成功的,但是如果是譬如即时聊天的那种需要会话间通信的服务,那么这种开发模型不是很适合。不过现在越来越多的服务都需要支持分布式集群部署,所以单线程多进程方案的缺陷越来越不明显。

                  由于 C/C++是种强类型静态语言,异常处理简单粗暴,动不动就 core dump。C/C++的设计理念就是发现错误及早暴露,在某种意义上来说,崩溃也是种好事,因为这样会引起你的重视,让你能及早发现定位并解决问题,而不是把问题拖延到无法解决的时候再暴露给你。但是这么做对一般人来说,C/C++就不是很友好了,人类并不像机器那样严谨,有点疏忽在所难免,况且有些小问题也无伤大雅,并不需要毁灭式的 core dump 来应对。而且 C/C++的学习曲线异常艰难困苦,很多人好几年也不得要领,所以很多人表示纷纷弃坑,转投 go / erlang / node.js 之类。

                  但是 C/C++由于其性能优越性,以及历史原因,在某些场景下是不二选择,而且 C/C++才是真正的跨平台语言;况且随着智能指针的推出,内存管理不再是难题;而 lambda 语法的支持,让程序上下文绑定不再困难。随着 C++新特性的支持,编译器静态反射机制的完善,现代 C++编程愈发简便快捷。ZLMediaKit 采用的就是 C++11 新标准以及相关理念完成的高性能流媒体服务框架。

                  与上面其它编程模型不同,ZLMediaKit 采用的是多线程开发模型;与传统的多线程模型不同;ZLMediaKit 采用了 C++11 的智能指针来做内存管理,在线程切换时可以完美的管理内存在多线程下共享以及其生命周期。同时互斥锁的粒度消减至极致,几乎可以忽略不计。所以采用多线程模型的 ZLMediaKit 性能损耗极低,每条线程的性能几乎可以媲美单线程模型,同时也可以充分榨干 CPU 的每一核心性能。

                  网络模型详述

                  ZLMediaKit 在启动时会根据 cpu 核心数自动创建若干个 epoll 实例(非 linux 平台为 select);这些 epoll 实例都会有一个线程来运行epoll_wait函数来等待事件的触发。

                  以 ZLMediaKit 的 RTMP 服务为例,在创建一个TcpServer时,ZLMediaKit 会把这个 Tcp 服务的监听套接字加入到每一个 epoll 实例,这样如果收到新的 RTMP 播放请求,那么多个 epoll 实例会在内核的调度下,自动选择负载较轻的线程触发 accept 事件,以下是代码片段:

                  template <typename SessionType>
                   void start(uint16_t port, const std::string& host = "0.0.0.0", uint32_t backlog = 1024) {
                      start_l<SessionType>(port,host,backlog);
                      //自动加入到所有epoll线程监听
                  diff --git a/assets/high_concurrency_implementation_principle.html-YdXhhjaV.js b/assets/high_concurrency_implementation_principle.html-T5LE0Lmi.js
                  similarity index 99%
                  rename from assets/high_concurrency_implementation_principle.html-YdXhhjaV.js
                  rename to assets/high_concurrency_implementation_principle.html-T5LE0Lmi.js
                  index 4c6d533..6d32503 100644
                  --- a/assets/high_concurrency_implementation_principle.html-YdXhhjaV.js
                  +++ b/assets/high_concurrency_implementation_principle.html-T5LE0Lmi.js
                  @@ -1,4 +1,4 @@
                  -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as c,c as l,a as n,d as s,b as p,w as i,e as u}from"./app-RP31lnfq.js";const k={},r=n("h2",{id:"项目介绍",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#项目介绍","aria-hidden":"true"},"#"),s(" 项目介绍")],-1),d={href:"https://github.com/xiongziliang/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},v=u(`

                  该框架基于 C++11 开发,避免使用裸指针,减少内存拷贝,代码精简可靠,并发性能优异,在 linux 平台下,单一进程即可充分利用多核 CPU 的优势;最大限度的榨干 CPU、网卡性能;轻松达到万兆网卡性能极限。同时也能在高性能的同时,做到极低延时,画面秒开。

                  目前 ZLMediaKit 经过多次版本迭代,编程模型多次升级优化;已经趋于成熟稳定,也在各种生产环境得到了验证,本文主要讨论 ZLMediaKit 高性能实现原理以及项目特点。

                  网络模型对比

                  不同于 SRS 的单线程多协程、node.js/redis 的单线程、NGINX 的多进程模型;ZLMediaKit 采用的是单进程多线程模型。那么为什么 ZLMediaKit 要采用这样的编程模型呢?

                  作为一个多年的 C++服务器后台开发工程师,多年的工作经验告诉我,作为一个服务器程序,对于稳定性要求极高;一个服务器可以性能差点,但是绝不能轻易 core dump;服务中断、重启、异常,对于一个线上已运营项目来说结果是灾难性的。那么我们该怎么确保服务器的稳定?目前有以下手段:

                  • 单线程模型
                  • 单线程+协程
                  • 单线程+多进程
                  • 多线程+锁
                  • 弃用 C/C++

                  采用单线程模型的优点是,服务器简单可靠,不用考虑资源竞争互斥的问题,这样可以比较容易做到高稳定性;采用此模型的典型代表项目有 redis、node.js。但是由于是单线程模型,所以弊端也比较明显;那就是在多核 cpu 上不能充分利用多核 CPU 的算力,性能瓶颈主要在于 CPU(大家应该有过在 redis 中执行 keys *慢慢等待的经历)。

                  img
                  img

                  单线程+协程的方案本质上与纯单线程模型无区别,它们的区别主要编程风格上。纯单线程模型使用的是非阻塞式处处回调方式实现高并发,这种模型会有所谓的回调地狱的问题,编程起来会比较麻烦。而单线程+协程的方案是简化编程方式,采用自然的阻塞式编程风格,在协程库内部管理任务调度,本质也是非阻塞的。但是协程库涉及的比较底层,跟系统息息相关,所以跨平台不是很好做,而且设计实现一个协程库门槛较高。SRS 采用就是这编程模型,由于协程库的限制,SRS 不能在 windows 上运行。

                  为了解决上述单线程模型的问题,很多服务器采用单线程多进程的编程模型;在这种模型下,既有单线程模型的简单可靠的特性,又能充分发挥多核 CPU 的性能,而且某个进程挂了也不会影响其他进程,像 NGINX 就是这种编程模型;但是这种模型也有其局限性。在这种模型下,会话间是相互隔离的,两个会话可能运行在不同的进程上;这样就导致了会话间通信的困难。比如说 A 用户连接在服务器 A 进程上,B 用户连接在服务器 B 进程上;如果两者之间要完成某种数据交互,那么会异常困难,这样必须通过进程间通信来完成。而进程间通信代价和开销比较大,编程起来也比较困难。但是如果会话间无需数据交互(例如 http 服务器),那么这种模型是特别适合的,所以 NGINX 作为 http 服务器也是非常成功的,但是如果是譬如即时聊天的那种需要会话间通信的服务,那么这种开发模型不是很适合。不过现在越来越多的服务都需要支持分布式集群部署,所以单线程多进程方案的缺陷越来越不明显。

                  由于 C/C++是种强类型静态语言,异常处理简单粗暴,动不动就 core dump。C/C++的设计理念就是发现错误及早暴露,在某种意义上来说,崩溃也是种好事,因为这样会引起你的重视,让你能及早发现定位并解决问题,而不是把问题拖延到无法解决的时候再暴露给你。但是这么做对一般人来说,C/C++就不是很友好了,人类并不像机器那样严谨,有点疏忽在所难免,况且有些小问题也无伤大雅,并不需要毁灭式的 core dump 来应对。而且 C/C++的学习曲线异常艰难困苦,很多人好几年也不得要领,所以很多人表示纷纷弃坑,转投 go / erlang / node.js 之类。

                  但是 C/C++由于其性能优越性,以及历史原因,在某些场景下是不二选择,而且 C/C++才是真正的跨平台语言;况且随着智能指针的推出,内存管理不再是难题;而 lambda 语法的支持,让程序上下文绑定不再困难。随着 C++新特性的支持,编译器静态反射机制的完善,现代 C++编程愈发简便快捷。ZLMediaKit 采用的就是 C++11 新标准以及相关理念完成的高性能流媒体服务框架。

                  与上面其它编程模型不同,ZLMediaKit 采用的是多线程开发模型;与传统的多线程模型不同;ZLMediaKit 采用了 C++11 的智能指针来做内存管理,在线程切换时可以完美的管理内存在多线程下共享以及其生命周期。同时互斥锁的粒度消减至极致,几乎可以忽略不计。所以采用多线程模型的 ZLMediaKit 性能损耗极低,每条线程的性能几乎可以媲美单线程模型,同时也可以充分榨干 CPU 的每一核心性能。

                  网络模型详述

                  ZLMediaKit 在启动时会根据 cpu 核心数自动创建若干个 epoll 实例(非 linux 平台为 select);这些 epoll 实例都会有一个线程来运行epoll_wait函数来等待事件的触发。

                  以 ZLMediaKit 的 RTMP 服务为例,在创建一个TcpServer时,ZLMediaKit 会把这个 Tcp 服务的监听套接字加入到每一个 epoll 实例,这样如果收到新的 RTMP 播放请求,那么多个 epoll 实例会在内核的调度下,自动选择负载较轻的线程触发 accept 事件,以下是代码片段:

                  template <typename SessionType>
                  +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as c,c as l,a as n,d as s,b as p,w as i,e as u}from"./app-0NopiYEV.js";const k={},r=n("h2",{id:"项目介绍",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#项目介绍","aria-hidden":"true"},"#"),s(" 项目介绍")],-1),d={href:"https://github.com/xiongziliang/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},v=u(`

                  该框架基于 C++11 开发,避免使用裸指针,减少内存拷贝,代码精简可靠,并发性能优异,在 linux 平台下,单一进程即可充分利用多核 CPU 的优势;最大限度的榨干 CPU、网卡性能;轻松达到万兆网卡性能极限。同时也能在高性能的同时,做到极低延时,画面秒开。

                  目前 ZLMediaKit 经过多次版本迭代,编程模型多次升级优化;已经趋于成熟稳定,也在各种生产环境得到了验证,本文主要讨论 ZLMediaKit 高性能实现原理以及项目特点。

                  网络模型对比

                  不同于 SRS 的单线程多协程、node.js/redis 的单线程、NGINX 的多进程模型;ZLMediaKit 采用的是单进程多线程模型。那么为什么 ZLMediaKit 要采用这样的编程模型呢?

                  作为一个多年的 C++服务器后台开发工程师,多年的工作经验告诉我,作为一个服务器程序,对于稳定性要求极高;一个服务器可以性能差点,但是绝不能轻易 core dump;服务中断、重启、异常,对于一个线上已运营项目来说结果是灾难性的。那么我们该怎么确保服务器的稳定?目前有以下手段:

                  • 单线程模型
                  • 单线程+协程
                  • 单线程+多进程
                  • 多线程+锁
                  • 弃用 C/C++

                  采用单线程模型的优点是,服务器简单可靠,不用考虑资源竞争互斥的问题,这样可以比较容易做到高稳定性;采用此模型的典型代表项目有 redis、node.js。但是由于是单线程模型,所以弊端也比较明显;那就是在多核 cpu 上不能充分利用多核 CPU 的算力,性能瓶颈主要在于 CPU(大家应该有过在 redis 中执行 keys *慢慢等待的经历)。

                  img
                  img

                  单线程+协程的方案本质上与纯单线程模型无区别,它们的区别主要编程风格上。纯单线程模型使用的是非阻塞式处处回调方式实现高并发,这种模型会有所谓的回调地狱的问题,编程起来会比较麻烦。而单线程+协程的方案是简化编程方式,采用自然的阻塞式编程风格,在协程库内部管理任务调度,本质也是非阻塞的。但是协程库涉及的比较底层,跟系统息息相关,所以跨平台不是很好做,而且设计实现一个协程库门槛较高。SRS 采用就是这编程模型,由于协程库的限制,SRS 不能在 windows 上运行。

                  为了解决上述单线程模型的问题,很多服务器采用单线程多进程的编程模型;在这种模型下,既有单线程模型的简单可靠的特性,又能充分发挥多核 CPU 的性能,而且某个进程挂了也不会影响其他进程,像 NGINX 就是这种编程模型;但是这种模型也有其局限性。在这种模型下,会话间是相互隔离的,两个会话可能运行在不同的进程上;这样就导致了会话间通信的困难。比如说 A 用户连接在服务器 A 进程上,B 用户连接在服务器 B 进程上;如果两者之间要完成某种数据交互,那么会异常困难,这样必须通过进程间通信来完成。而进程间通信代价和开销比较大,编程起来也比较困难。但是如果会话间无需数据交互(例如 http 服务器),那么这种模型是特别适合的,所以 NGINX 作为 http 服务器也是非常成功的,但是如果是譬如即时聊天的那种需要会话间通信的服务,那么这种开发模型不是很适合。不过现在越来越多的服务都需要支持分布式集群部署,所以单线程多进程方案的缺陷越来越不明显。

                  由于 C/C++是种强类型静态语言,异常处理简单粗暴,动不动就 core dump。C/C++的设计理念就是发现错误及早暴露,在某种意义上来说,崩溃也是种好事,因为这样会引起你的重视,让你能及早发现定位并解决问题,而不是把问题拖延到无法解决的时候再暴露给你。但是这么做对一般人来说,C/C++就不是很友好了,人类并不像机器那样严谨,有点疏忽在所难免,况且有些小问题也无伤大雅,并不需要毁灭式的 core dump 来应对。而且 C/C++的学习曲线异常艰难困苦,很多人好几年也不得要领,所以很多人表示纷纷弃坑,转投 go / erlang / node.js 之类。

                  但是 C/C++由于其性能优越性,以及历史原因,在某些场景下是不二选择,而且 C/C++才是真正的跨平台语言;况且随着智能指针的推出,内存管理不再是难题;而 lambda 语法的支持,让程序上下文绑定不再困难。随着 C++新特性的支持,编译器静态反射机制的完善,现代 C++编程愈发简便快捷。ZLMediaKit 采用的就是 C++11 新标准以及相关理念完成的高性能流媒体服务框架。

                  与上面其它编程模型不同,ZLMediaKit 采用的是多线程开发模型;与传统的多线程模型不同;ZLMediaKit 采用了 C++11 的智能指针来做内存管理,在线程切换时可以完美的管理内存在多线程下共享以及其生命周期。同时互斥锁的粒度消减至极致,几乎可以忽略不计。所以采用多线程模型的 ZLMediaKit 性能损耗极低,每条线程的性能几乎可以媲美单线程模型,同时也可以充分榨干 CPU 的每一核心性能。

                  网络模型详述

                  ZLMediaKit 在启动时会根据 cpu 核心数自动创建若干个 epoll 实例(非 linux 平台为 select);这些 epoll 实例都会有一个线程来运行epoll_wait函数来等待事件的触发。

                  以 ZLMediaKit 的 RTMP 服务为例,在创建一个TcpServer时,ZLMediaKit 会把这个 Tcp 服务的监听套接字加入到每一个 epoll 实例,这样如果收到新的 RTMP 播放请求,那么多个 epoll 实例会在内核的调度下,自动选择负载较轻的线程触发 accept 事件,以下是代码片段:

                  template <typename SessionType>
                   void start(uint16_t port, const std::string& host = "0.0.0.0", uint32_t backlog = 1024) {
                      start_l<SessionType>(port,host,backlog);
                      //自动加入到所有epoll线程监听
                  diff --git a/assets/hls_high_performance_journey.html-LbBMnisY.js b/assets/hls_high_performance_journey.html-TZBUS8og.js
                  similarity index 99%
                  rename from assets/hls_high_performance_journey.html-LbBMnisY.js
                  rename to assets/hls_high_performance_journey.html-TZBUS8og.js
                  index 16d4e42..c6d26d9 100644
                  --- a/assets/hls_high_performance_journey.html-LbBMnisY.js
                  +++ b/assets/hls_high_performance_journey.html-TZBUS8og.js
                  @@ -1,4 +1,4 @@
                  -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as s,e as p}from"./app-RP31lnfq.js";const t={},e=p(`

                  事情的起因

                  北京冬奥会前夕,zlmediakit 的一位用户完成了 iptv 系统的迁移; 由于 zlmediakit 对 hls 的支持比较完善,支持包括鉴权、统计、溯源等独家特性,所以他把之前的老系统都迁移到 zlmediakit 上了。

                  但是很不幸,在冬奥会开幕式当天,zlmediakit 并没有承受起考验,当 hls 并发数达到 3000 左右时,zlmediakit 线程负载接近 100%,延时非常高,整个服务器基本不可用:

                  图片.png
                  图片.png

                  思考

                  zlmediakit 定位是一个通用的流媒体服务器,主要精力聚焦在 rtsp/rtmp 等协议,对 hls 的优化并不够重视,hls 之前在 zlmediakit 里面实现方式跟 http 文件服务器实现方式基本一致,都是通过直接读取文件的方式提供下载。所以当 hls 播放数比较高时,每个用户播放都需要重新从磁盘读取一遍文件,这时文件 io 承压,由于磁盘慢速度的特性,不能承载太高的并发数。

                  有些朋友可能会问,如果用内存虚拟磁盘能不能提高性能?答案是能,但是由于内存拷贝带宽也存在上限,所以就算 hls 文件都放在内存目录,每次读取文件也会存在多次 memcopy,性能并不能有太大的飞跃。前面冬奥会直播事故那个案例,就是把 hls 文件放在内存目录,但是也就能承载 2000+并发而已。

                  歧途: sendfile

                  为了解决 hls 并发瓶颈这个问题,我首先思考到的是sendfile方案。我们知道,nginx作为 http 服务器的标杆,就支持 sendfile 这个特性。很早之前,我就听说过sendfile多牛逼,它支持直接把文件发送到socket fd;而不用通过用户态和内核态的内存互相拷贝,可以大幅提高文件发送的性能。

                  我们查看 sendfile 的资料,有如下介绍:

                  图片.png
                  图片.png

                  于是,在事故反馈当日,2022 年春节期间的某天深夜,我在严寒之下光着膀子在 zlmediakit 中把 sendfile 特性实现了一遍: 图片.png

                  实现的代码如下:

                  //HttpFileBody.cpp
                  +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as s,e as p}from"./app-0NopiYEV.js";const t={},e=p(`

                  事情的起因

                  北京冬奥会前夕,zlmediakit 的一位用户完成了 iptv 系统的迁移; 由于 zlmediakit 对 hls 的支持比较完善,支持包括鉴权、统计、溯源等独家特性,所以他把之前的老系统都迁移到 zlmediakit 上了。

                  但是很不幸,在冬奥会开幕式当天,zlmediakit 并没有承受起考验,当 hls 并发数达到 3000 左右时,zlmediakit 线程负载接近 100%,延时非常高,整个服务器基本不可用:

                  图片.png
                  图片.png

                  思考

                  zlmediakit 定位是一个通用的流媒体服务器,主要精力聚焦在 rtsp/rtmp 等协议,对 hls 的优化并不够重视,hls 之前在 zlmediakit 里面实现方式跟 http 文件服务器实现方式基本一致,都是通过直接读取文件的方式提供下载。所以当 hls 播放数比较高时,每个用户播放都需要重新从磁盘读取一遍文件,这时文件 io 承压,由于磁盘慢速度的特性,不能承载太高的并发数。

                  有些朋友可能会问,如果用内存虚拟磁盘能不能提高性能?答案是能,但是由于内存拷贝带宽也存在上限,所以就算 hls 文件都放在内存目录,每次读取文件也会存在多次 memcopy,性能并不能有太大的飞跃。前面冬奥会直播事故那个案例,就是把 hls 文件放在内存目录,但是也就能承载 2000+并发而已。

                  歧途: sendfile

                  为了解决 hls 并发瓶颈这个问题,我首先思考到的是sendfile方案。我们知道,nginx作为 http 服务器的标杆,就支持 sendfile 这个特性。很早之前,我就听说过sendfile多牛逼,它支持直接把文件发送到socket fd;而不用通过用户态和内核态的内存互相拷贝,可以大幅提高文件发送的性能。

                  我们查看 sendfile 的资料,有如下介绍:

                  图片.png
                  图片.png

                  于是,在事故反馈当日,2022 年春节期间的某天深夜,我在严寒之下光着膀子在 zlmediakit 中把 sendfile 特性实现了一遍: 图片.png

                  实现的代码如下:

                  //HttpFileBody.cpp
                   int HttpFileBody::sendFile(int fd) {
                   #if  defined(__linux__) || defined(__linux)
                       off_t off = _file_offset;
                  diff --git a/assets/hls_high_performance_journey.html-KWt_INAr.js b/assets/hls_high_performance_journey.html-awr83uM9.js
                  similarity index 99%
                  rename from assets/hls_high_performance_journey.html-KWt_INAr.js
                  rename to assets/hls_high_performance_journey.html-awr83uM9.js
                  index 16d4e42..c6d26d9 100644
                  --- a/assets/hls_high_performance_journey.html-KWt_INAr.js
                  +++ b/assets/hls_high_performance_journey.html-awr83uM9.js
                  @@ -1,4 +1,4 @@
                  -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as s,e as p}from"./app-RP31lnfq.js";const t={},e=p(`

                  事情的起因

                  北京冬奥会前夕,zlmediakit 的一位用户完成了 iptv 系统的迁移; 由于 zlmediakit 对 hls 的支持比较完善,支持包括鉴权、统计、溯源等独家特性,所以他把之前的老系统都迁移到 zlmediakit 上了。

                  但是很不幸,在冬奥会开幕式当天,zlmediakit 并没有承受起考验,当 hls 并发数达到 3000 左右时,zlmediakit 线程负载接近 100%,延时非常高,整个服务器基本不可用:

                  图片.png
                  图片.png

                  思考

                  zlmediakit 定位是一个通用的流媒体服务器,主要精力聚焦在 rtsp/rtmp 等协议,对 hls 的优化并不够重视,hls 之前在 zlmediakit 里面实现方式跟 http 文件服务器实现方式基本一致,都是通过直接读取文件的方式提供下载。所以当 hls 播放数比较高时,每个用户播放都需要重新从磁盘读取一遍文件,这时文件 io 承压,由于磁盘慢速度的特性,不能承载太高的并发数。

                  有些朋友可能会问,如果用内存虚拟磁盘能不能提高性能?答案是能,但是由于内存拷贝带宽也存在上限,所以就算 hls 文件都放在内存目录,每次读取文件也会存在多次 memcopy,性能并不能有太大的飞跃。前面冬奥会直播事故那个案例,就是把 hls 文件放在内存目录,但是也就能承载 2000+并发而已。

                  歧途: sendfile

                  为了解决 hls 并发瓶颈这个问题,我首先思考到的是sendfile方案。我们知道,nginx作为 http 服务器的标杆,就支持 sendfile 这个特性。很早之前,我就听说过sendfile多牛逼,它支持直接把文件发送到socket fd;而不用通过用户态和内核态的内存互相拷贝,可以大幅提高文件发送的性能。

                  我们查看 sendfile 的资料,有如下介绍:

                  图片.png
                  图片.png

                  于是,在事故反馈当日,2022 年春节期间的某天深夜,我在严寒之下光着膀子在 zlmediakit 中把 sendfile 特性实现了一遍: 图片.png

                  实现的代码如下:

                  //HttpFileBody.cpp
                  +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as s,e as p}from"./app-0NopiYEV.js";const t={},e=p(`

                  事情的起因

                  北京冬奥会前夕,zlmediakit 的一位用户完成了 iptv 系统的迁移; 由于 zlmediakit 对 hls 的支持比较完善,支持包括鉴权、统计、溯源等独家特性,所以他把之前的老系统都迁移到 zlmediakit 上了。

                  但是很不幸,在冬奥会开幕式当天,zlmediakit 并没有承受起考验,当 hls 并发数达到 3000 左右时,zlmediakit 线程负载接近 100%,延时非常高,整个服务器基本不可用:

                  图片.png
                  图片.png

                  思考

                  zlmediakit 定位是一个通用的流媒体服务器,主要精力聚焦在 rtsp/rtmp 等协议,对 hls 的优化并不够重视,hls 之前在 zlmediakit 里面实现方式跟 http 文件服务器实现方式基本一致,都是通过直接读取文件的方式提供下载。所以当 hls 播放数比较高时,每个用户播放都需要重新从磁盘读取一遍文件,这时文件 io 承压,由于磁盘慢速度的特性,不能承载太高的并发数。

                  有些朋友可能会问,如果用内存虚拟磁盘能不能提高性能?答案是能,但是由于内存拷贝带宽也存在上限,所以就算 hls 文件都放在内存目录,每次读取文件也会存在多次 memcopy,性能并不能有太大的飞跃。前面冬奥会直播事故那个案例,就是把 hls 文件放在内存目录,但是也就能承载 2000+并发而已。

                  歧途: sendfile

                  为了解决 hls 并发瓶颈这个问题,我首先思考到的是sendfile方案。我们知道,nginx作为 http 服务器的标杆,就支持 sendfile 这个特性。很早之前,我就听说过sendfile多牛逼,它支持直接把文件发送到socket fd;而不用通过用户态和内核态的内存互相拷贝,可以大幅提高文件发送的性能。

                  我们查看 sendfile 的资料,有如下介绍:

                  图片.png
                  图片.png

                  于是,在事故反馈当日,2022 年春节期间的某天深夜,我在严寒之下光着膀子在 zlmediakit 中把 sendfile 特性实现了一遍: 图片.png

                  实现的代码如下:

                  //HttpFileBody.cpp
                   int HttpFileBody::sendFile(int fd) {
                   #if  defined(__linux__) || defined(__linux)
                       off_t off = _file_offset;
                  diff --git a/assets/how_to_create_a_live_steam.html-6xjNfV8d.js b/assets/how_to_create_a_live_steam.html-8eIvXeDo.js
                  similarity index 86%
                  rename from assets/how_to_create_a_live_steam.html-6xjNfV8d.js
                  rename to assets/how_to_create_a_live_steam.html-8eIvXeDo.js
                  index fa7b262..ef3b95c 100644
                  --- a/assets/how_to_create_a_live_steam.html-6xjNfV8d.js
                  +++ b/assets/how_to_create_a_live_steam.html-8eIvXeDo.js
                  @@ -1 +1 @@
                  -import{_ as t}from"./how_to_create_a_live_stream-3lt6j2fI.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as _,a as e}from"./app-RP31lnfq.js";const r={},c=e("figure",null,[e("img",{src:t,alt:"How to create a live steam",tabindex:"0",loading:"lazy"}),e("figcaption",null,"How to create a live steam")],-1),s=[c];function i(l,n){return a(),_("div",null,s)}const p=o(r,[["render",i],["__file","how_to_create_a_live_steam.html.vue"]]);export{p as default};
                  +import{_ as t}from"./how_to_create_a_live_stream-3lt6j2fI.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as _,a as e}from"./app-0NopiYEV.js";const r={},c=e("figure",null,[e("img",{src:t,alt:"How to create a live steam",tabindex:"0",loading:"lazy"}),e("figcaption",null,"How to create a live steam")],-1),s=[c];function i(l,n){return a(),_("div",null,s)}const p=o(r,[["render",i],["__file","how_to_create_a_live_steam.html.vue"]]);export{p as default};
                  diff --git a/assets/how_to_create_a_live_steam.html-ewhkqgEI.js b/assets/how_to_create_a_live_steam.html-j8XiE3eA.js
                  similarity index 86%
                  rename from assets/how_to_create_a_live_steam.html-ewhkqgEI.js
                  rename to assets/how_to_create_a_live_steam.html-j8XiE3eA.js
                  index fa7b262..ef3b95c 100644
                  --- a/assets/how_to_create_a_live_steam.html-ewhkqgEI.js
                  +++ b/assets/how_to_create_a_live_steam.html-j8XiE3eA.js
                  @@ -1 +1 @@
                  -import{_ as t}from"./how_to_create_a_live_stream-3lt6j2fI.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as _,a as e}from"./app-RP31lnfq.js";const r={},c=e("figure",null,[e("img",{src:t,alt:"How to create a live steam",tabindex:"0",loading:"lazy"}),e("figcaption",null,"How to create a live steam")],-1),s=[c];function i(l,n){return a(),_("div",null,s)}const p=o(r,[["render",i],["__file","how_to_create_a_live_steam.html.vue"]]);export{p as default};
                  +import{_ as t}from"./how_to_create_a_live_stream-3lt6j2fI.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as _,a as e}from"./app-0NopiYEV.js";const r={},c=e("figure",null,[e("img",{src:t,alt:"How to create a live steam",tabindex:"0",loading:"lazy"}),e("figcaption",null,"How to create a live steam")],-1),s=[c];function i(l,n){return a(),_("div",null,s)}const p=o(r,[["render",i],["__file","how_to_create_a_live_steam.html.vue"]]);export{p as default};
                  diff --git a/assets/how_to_enable_https_related_functions.html-bzN01TdE.js b/assets/how_to_enable_https_related_functions.html-9i2jCwZ3.js
                  similarity index 99%
                  rename from assets/how_to_enable_https_related_functions.html-bzN01TdE.js
                  rename to assets/how_to_enable_https_related_functions.html-9i2jCwZ3.js
                  index 4d881a2..c06ac7b 100644
                  --- a/assets/how_to_enable_https_related_functions.html-bzN01TdE.js
                  +++ b/assets/how_to_enable_https_related_functions.html-9i2jCwZ3.js
                  @@ -1,4 +1,4 @@
                  -import{_ as e,a as l,b as t,c as d,d as o,e as c,f as r,g as p,h as u,i as m}from"./how_to_enable_https_related_functions_zh_10-dp8gREln.js";import{_ as g}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as b,o as h,c as f,a,d as n,b as v,w as _,e as i}from"./app-RP31lnfq.js";const k={},x=i(`

                  一、编译时开启 openssl 特性

                  zlmediakit 的 https(另外还包括 rtmps/rtsps/webrtc/wss)功能依赖 openssl 库,在编译 zlmediakit 时,应该先在系统默认环境安装 openssl 库,ubuntu 下通过以下命令安装:

                  sudo apt-get install libssl-dev
                  +import{_ as e,a as l,b as t,c as d,d as o,e as c,f as r,g as p,h as u,i as m}from"./how_to_enable_https_related_functions_zh_10-dp8gREln.js";import{_ as g}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as b,o as h,c as f,a,d as n,b as v,w as _,e as i}from"./app-0NopiYEV.js";const k={},x=i(`

                  一、编译时开启 openssl 特性

                  zlmediakit 的 https(另外还包括 rtmps/rtsps/webrtc/wss)功能依赖 openssl 库,在编译 zlmediakit 时,应该先在系统默认环境安装 openssl 库,ubuntu 下通过以下命令安装:

                  sudo apt-get install libssl-dev
                   

                  如果您的系统默认 openssl 版本太老,可以选择自行编译安装 openssl 到自定义路径;此时,在编译 zlmediakit 时可以通过以下命令指定 openssl 自定义安装路径:

                  cd ZLMediaKit
                   mkdir build
                   cd build
                  diff --git a/assets/how_to_enable_https_related_functions.html-O1NMddvq.js b/assets/how_to_enable_https_related_functions.html-kCsRSeM_.js
                  similarity index 99%
                  rename from assets/how_to_enable_https_related_functions.html-O1NMddvq.js
                  rename to assets/how_to_enable_https_related_functions.html-kCsRSeM_.js
                  index 49063ba..20e79e4 100644
                  --- a/assets/how_to_enable_https_related_functions.html-O1NMddvq.js
                  +++ b/assets/how_to_enable_https_related_functions.html-kCsRSeM_.js
                  @@ -1,4 +1,4 @@
                  -import{_ as t,a as s,b as o,c as l,d as r,e as d,f as c,g as u,h as p,i as m}from"./how_to_enable_https_related_functions_zh_10-dp8gREln.js";import{_ as f}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as h,o as g,c as b,a as e,d as i,b as v,w as _,e as a}from"./app-RP31lnfq.js";const k={},y=a(`

                  I. Enable OpenSSL Feature during Compilation

                  The HTTPS feature of zlmediakit (including rtmps/rtsps/webrtc/wss) relies on the OpenSSL library. Before compiling zlmediakit, you should first install the OpenSSL library in the default system environment. On Ubuntu, you can install it using the following command:

                  sudo apt-get install libssl-dev
                  +import{_ as t,a as s,b as o,c as l,d as r,e as d,f as c,g as u,h as p,i as m}from"./how_to_enable_https_related_functions_zh_10-dp8gREln.js";import{_ as f}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as h,o as g,c as b,a as e,d as i,b as v,w as _,e as a}from"./app-0NopiYEV.js";const k={},y=a(`

                  I. Enable OpenSSL Feature during Compilation

                  The HTTPS feature of zlmediakit (including rtmps/rtsps/webrtc/wss) relies on the OpenSSL library. Before compiling zlmediakit, you should first install the OpenSSL library in the default system environment. On Ubuntu, you can install it using the following command:

                  sudo apt-get install libssl-dev
                   

                  If the default version of OpenSSL on your system is too old, you can choose to compile and install OpenSSL to a custom path. In this case, when compiling zlmediakit, you can specify the custom installation path of OpenSSL using the following command:

                  cd ZLMediaKit
                   mkdir build
                   cd build
                  diff --git a/assets/how_to_test_delay.html-fyFCkcjI.js b/assets/how_to_test_delay.html-IVFxpLiU.js
                  similarity index 99%
                  rename from assets/how_to_test_delay.html-fyFCkcjI.js
                  rename to assets/how_to_test_delay.html-IVFxpLiU.js
                  index 6fa12c1..cb5ac32 100644
                  --- a/assets/how_to_test_delay.html-fyFCkcjI.js
                  +++ b/assets/how_to_test_delay.html-IVFxpLiU.js
                  @@ -1,2 +1,2 @@
                  -import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as d,c as h,a,d as e,b as t,w as r,e as s}from"./app-RP31lnfq.js";const c={},y=s('

                  Introduction

                  Some users often ask me in the group why there is a several seconds delay when using ZLMediaKit for stream playback or stream forwarding. Sometimes, the delay can be as long as more than 10 seconds or even half a minute for HLS. The purpose of this article is to clarify the misunderstanding about delay.

                  What is Delay

                  Many users do not fully understand what delay means. They think that the time difference between the displayed frames of any player and the original stream frames is the delay, but this is actually the biggest misconception about delay. Delay is not superficial. Many people are not professional when testing delay and have insufficient understanding of the professionalism of delay testing. I would like to remind everyone that not every player is qualified to perform delay testing!

                  In summary, the overall delay consists of the following components:

                  • Capture Delay

                    When capturing camera or graphics card frames, there is a certain delay in capturing the frames as YUV/RGB data due to limitations such as fps, CPU performance, and memory copying speed. Generally, the delay is in the millisecond range. Since general encoders have restrictions on input data formats, such as requiring consistent input of YUV420P, there will also be a delay in the conversion calculation when converting RGB to YUV420P (this can be reduced using the libyuv library). In general, the capture delay is about milliseconds. If the fps is 30, the capture delay will generally be more than 30 milliseconds, and there may be additional milliseconds of delay during memory copying and color conversion.

                  • Encoding Delay

                    When inputting the original frames into the encoder, the encoded data is not immediately output, especially when B-frames are enabled. Since B-frames require referencing the following P-frames, the delay will be greater. Therefore, in delay-sensitive situations, B-frames are generally not enabled, and in such cases, the encoding delay should be in the millisecond range and not very high.

                  • Upstream Network Transmission Delay

                    After the data is encoded, it needs to be packed into a certain protocol before being written to the socket and transmitted to the streaming server or stream proxy server. Protocol packing involves a certain amount of memory copying and computation, which can increase the delay. However, this delay is very small and can be basically ignored. When uploading data to the server, this delay can be large or small, depending on the network quality.

                  • Server Protocol Conversion Delay

                    After the server receives the data, it needs to perform operations such as reading socket buffer, protocol parsing, demultiplexing, and repacking. However, overall, this delay is relatively small and has little impact. Sometimes, to improve performance, the server may use a mechanism of batching writes, which means that it will forward the data only after receiving a certain amount of data. This delay is generally a few hundred milliseconds, with ZLMediaKit defaulting to around 300 milliseconds. However, ZLMediaKit has this batching write feature disabled by default, so this delay is also very small.

                  • Downstream Network Delay

                    When streaming media forwards video data to the player, there will be a delay caused by network transmission, the size of which depends on the network quality. When low-latency mode is disabled in ZLMediaKit, there will also be additional delay due to the use of MSG_MORE and the disabling of TCP_NODELAY, but low-latency mode is enabled by default in ZLMediaKit.

                  • Player Delay

                    Player delay consists of network reception delay, protocol parsing and demultiplexing delay, decoding delay, cache delay, and rendering delay. Among these delays, the cache delay is the largest. In order to ensure smooth video playback in case of network jitter, general players increase the delay by adding playback buffers. This way, when the network deteriorates, the playback buffering can prevent video stuttering. Moreover, in order to achieve audio-video synchronization, a certain amount of buffering must be ensured. This type of delay is generally in the seconds range, typically around 5 seconds.

                  • Player GOP Cache Delay

                    To display the video immediately, streaming media servers often cache the most recent I-frame, and all subsequent audio-video data after this I-frame is referred to as the GOP (Group of Pictures) cache. If the GOP is not cached, the player has to wait for the next I-frame to successfully decode the video or avoid screen flickering. Obviously, to improve the playback experience, this GOP cache cannot be eliminated. Generally, the GOP duration can be as short as 1-3 seconds or as long as tens of seconds, depending on the settings of the capture-side encoder, which the server cannot change. However, since general players do not discard too many frames after receiving the cache to ensure low latency, and players also want to have a certain amount of buffering to ensure smooth playback, this GOP cache will increase the player's delay.

                  • Overall Delay

                    The sum of all the aforementioned delays is the perceived delay you observe. Sowhen you see a delay in stream playback or stream forwarding using ZLMediaKit, it is a combination of all these factors. It's important to understand that some delays are inherent to the streaming process and cannot be completely eliminated. However, there are ways to optimize the delay and minimize its impact.

                  How to Test Delay

                  Testing delay with general players like VLC is unprofessional. The delay in these players is at least in the order of seconds. In order to achieve smooth playback and audio/video synchronization, these players cannot provide you with real-time delay data.

                  ',8),p={href:"https://github.com/ZLMediaKit/ZLMediaKit/blob/master/player/test_player.cpp",target:"_blank",rel:"noopener noreferrer"},m=s(`

                  What? You're telling me you don't know how to compile ZLMediaKit? Well, in that case, I suggest you use WebRTC player to test the delay. You can also use ffplay:

                  ffplay -i rtmp://xxxxxxx -fflags nobuffer
                  +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as d,c as h,a,d as e,b as t,w as r,e as s}from"./app-0NopiYEV.js";const c={},y=s('

                  Introduction

                  Some users often ask me in the group why there is a several seconds delay when using ZLMediaKit for stream playback or stream forwarding. Sometimes, the delay can be as long as more than 10 seconds or even half a minute for HLS. The purpose of this article is to clarify the misunderstanding about delay.

                  What is Delay

                  Many users do not fully understand what delay means. They think that the time difference between the displayed frames of any player and the original stream frames is the delay, but this is actually the biggest misconception about delay. Delay is not superficial. Many people are not professional when testing delay and have insufficient understanding of the professionalism of delay testing. I would like to remind everyone that not every player is qualified to perform delay testing!

                  In summary, the overall delay consists of the following components:

                  • Capture Delay

                    When capturing camera or graphics card frames, there is a certain delay in capturing the frames as YUV/RGB data due to limitations such as fps, CPU performance, and memory copying speed. Generally, the delay is in the millisecond range. Since general encoders have restrictions on input data formats, such as requiring consistent input of YUV420P, there will also be a delay in the conversion calculation when converting RGB to YUV420P (this can be reduced using the libyuv library). In general, the capture delay is about milliseconds. If the fps is 30, the capture delay will generally be more than 30 milliseconds, and there may be additional milliseconds of delay during memory copying and color conversion.

                  • Encoding Delay

                    When inputting the original frames into the encoder, the encoded data is not immediately output, especially when B-frames are enabled. Since B-frames require referencing the following P-frames, the delay will be greater. Therefore, in delay-sensitive situations, B-frames are generally not enabled, and in such cases, the encoding delay should be in the millisecond range and not very high.

                  • Upstream Network Transmission Delay

                    After the data is encoded, it needs to be packed into a certain protocol before being written to the socket and transmitted to the streaming server or stream proxy server. Protocol packing involves a certain amount of memory copying and computation, which can increase the delay. However, this delay is very small and can be basically ignored. When uploading data to the server, this delay can be large or small, depending on the network quality.

                  • Server Protocol Conversion Delay

                    After the server receives the data, it needs to perform operations such as reading socket buffer, protocol parsing, demultiplexing, and repacking. However, overall, this delay is relatively small and has little impact. Sometimes, to improve performance, the server may use a mechanism of batching writes, which means that it will forward the data only after receiving a certain amount of data. This delay is generally a few hundred milliseconds, with ZLMediaKit defaulting to around 300 milliseconds. However, ZLMediaKit has this batching write feature disabled by default, so this delay is also very small.

                  • Downstream Network Delay

                    When streaming media forwards video data to the player, there will be a delay caused by network transmission, the size of which depends on the network quality. When low-latency mode is disabled in ZLMediaKit, there will also be additional delay due to the use of MSG_MORE and the disabling of TCP_NODELAY, but low-latency mode is enabled by default in ZLMediaKit.

                  • Player Delay

                    Player delay consists of network reception delay, protocol parsing and demultiplexing delay, decoding delay, cache delay, and rendering delay. Among these delays, the cache delay is the largest. In order to ensure smooth video playback in case of network jitter, general players increase the delay by adding playback buffers. This way, when the network deteriorates, the playback buffering can prevent video stuttering. Moreover, in order to achieve audio-video synchronization, a certain amount of buffering must be ensured. This type of delay is generally in the seconds range, typically around 5 seconds.

                  • Player GOP Cache Delay

                    To display the video immediately, streaming media servers often cache the most recent I-frame, and all subsequent audio-video data after this I-frame is referred to as the GOP (Group of Pictures) cache. If the GOP is not cached, the player has to wait for the next I-frame to successfully decode the video or avoid screen flickering. Obviously, to improve the playback experience, this GOP cache cannot be eliminated. Generally, the GOP duration can be as short as 1-3 seconds or as long as tens of seconds, depending on the settings of the capture-side encoder, which the server cannot change. However, since general players do not discard too many frames after receiving the cache to ensure low latency, and players also want to have a certain amount of buffering to ensure smooth playback, this GOP cache will increase the player's delay.

                  • Overall Delay

                    The sum of all the aforementioned delays is the perceived delay you observe. Sowhen you see a delay in stream playback or stream forwarding using ZLMediaKit, it is a combination of all these factors. It's important to understand that some delays are inherent to the streaming process and cannot be completely eliminated. However, there are ways to optimize the delay and minimize its impact.

                  How to Test Delay

                  Testing delay with general players like VLC is unprofessional. The delay in these players is at least in the order of seconds. In order to achieve smooth playback and audio/video synchronization, these players cannot provide you with real-time delay data.

                  ',8),p={href:"https://github.com/ZLMediaKit/ZLMediaKit/blob/master/player/test_player.cpp",target:"_blank",rel:"noopener noreferrer"},m=s(`

                  What? You're telling me you don't know how to compile ZLMediaKit? Well, in that case, I suggest you use WebRTC player to test the delay. You can also use ffplay:

                  ffplay -i rtmp://xxxxxxx -fflags nobuffer
                   
                  `,2),u={href:"http://ffmpeg.org/download.html",target:"_blank",rel:"noopener noreferrer"},f=a("h2",{id:"more-information-about-delay",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#more-information-about-delay","aria-hidden":"true"},"#"),e(" More Information About Delay")],-1);function g(b,v){const o=i("ExternalLinkIcon"),n=i("RouterLink");return d(),h("div",null,[y,a("p",null,[e("Here, I strongly recommend that you write your own bufferless player to test the delay. However, this is obviously beyond the ability of most people. Therefore, ZLMediaKit provides a simple player for testing delay: "),a("a",p,[e("test_player"),t(o)])]),m,a("p",null,[e("If you don't know how to install ffplay, you can download a precompiled version from "),a("a",u,[e("here"),t(o)]),e(".")]),f,a("p",null,[t(n,{to:"/reference/documents/the_nature_of_live_broadcast_delay.html"},{default:r(()=>[e("The Essence of Live Broadcast Delay")]),_:1})]),a("p",null,[t(n,{to:"/reference/test/delay_test.html"},{default:r(()=>[e("Delay-related Testing")]),_:1})])])}const k=l(c,[["render",g],["__file","how_to_test_delay.html.vue"]]);export{k as default}; diff --git a/assets/how_to_test_delay.html-6Q65UhHU.js b/assets/how_to_test_delay.html-r6GaiRI_.js similarity index 99% rename from assets/how_to_test_delay.html-6Q65UhHU.js rename to assets/how_to_test_delay.html-r6GaiRI_.js index 6c1f362..ad7f3d8 100644 --- a/assets/how_to_test_delay.html-6Q65UhHU.js +++ b/assets/how_to_test_delay.html-r6GaiRI_.js @@ -1,2 +1,2 @@ -import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as p,c as d,a as t,d as e,b as a,w as o,e as i}from"./app-RP31lnfq.js";const c={},h=i('

                  引言

                  有些小伙伴们经常在群里面问我,为什么用 ZLMediaKit 拉流代理、推流转发的流播放延时好几秒,长的时候 10 多秒?为什么 HLS 延时更高,动辄延时半分钟?本文的目的在于澄清大家对延时的误解。

                  什么是延时

                  很多小伙伴们并不能明白什么叫延时,认为随便一个播放器播放出来的画面跟原始流画面时间差就是延时,其实这是对延时最大的误解。 延时不是表象,很多人在测试延时时很不专业,对延时测试的专业性认识不足,在此我特别提醒,不是随随便便的播放器都有资格做延时测试的!

                  总而言之,一般整个延时有以下几部分累加组成:

                  • 采集延时

                    在采集摄像头或显卡画面时,由于 fps 的限制和 cpu 性能、内存拷贝速度等客观限制,采集画面成 YUV/RGB 等数据时会有一定的延时,一般延时为毫秒级别。由于一般编码器对输入数据格式存在限制,譬如要求统一输入 YUV420P,这样在做 RGB->YUV420P 转换时,也会有转换计算延时(这个可以通过 libyuv 库来降低)。总而言之,采集延时大概为毫秒级别,如果 fps 为 30,那么一般采集延时会有 30 毫秒以上的延时,在内存拷贝和颜色转换时,又可能增加若干毫秒的延时。

                  • 编码延时

                    在把原始画面输入到编码器时,并不会立即输出编码后的数据,特别是在开启 B 帧时,由于需要参考后面的 P 帧,那么延时会更大,所以延时敏感的情况下一般不开启 B 帧,这种情况下编码延时应该是毫秒级别,不是很大。

                  • 网络上行传输延时

                    编码后的数据,要经过一定的协议打包才能写入 socket,然后传输给推流服务器或拉流代理服务器,协议打包会有一定的内存拷贝和计算量,那么会增加延时,不过这个延时很小,基本忽略不计。数据在上传到服务器时,这个延时可大可小,取决于网络质量。

                  • 服务器转协议延时

                    服务器在收到数据后,要读 socket 缓存、协议解析、解复用、重新打包等操作,不过总体而言,这个延时比较小,基本没什么影响。有时,服务器为了提高性能,会采取合并写的机制,也就是收到一定量的数据后才会一并转发,这个延时一般为几百毫秒,ZLMediaKit 默认 300 毫秒左右,不过 ZLMediaKit 默认关闭合并写,也就是这个延时也很小。

                  • 网络下行延时

                    流媒体在把视频数据转发给播放器时,会存在网络发送,这个延时大小取决于网络质量,ZLMediaKit 在关闭低延时模式时,还会增加 MSG_MORE 和关闭 TCP_NODELAY 导致的延时,不过 ZLMediaKit 默认开启低延时模式。

                  • 播放器延时

                    播放器延时主要有网络接收延时、协议解析解复用延时、解码延时、缓存延时、渲染延时组成,这些延时中缓存延时最大,因为一般的播放器为了保证在网络抖动情况下视频播放的流畅性,会以增加延时为代价,增加播放缓存,这样在网络变差时,不至于播放缓冲卡顿。而且为了音视频同步,也必须确保一定的缓存量。这种延时一般都是秒级别,一般 5 秒左右。

                  • 播放器 GOP 缓存延时

                    流媒体服务器为了能让播放器立即出画面,往往会缓存最近的一个 I 帧,这个 I 帧往后的所有音视频数据被称作为 GOP 缓存。如果不缓存 GOP,那么播放器要等下一个 I 帧才能解码成功或不花屏,显然为了提高播放体验,这个 GOP 缓存是不能去掉的。而一般 GOP 短则 1~3 秒,长则 10 几秒,这个跟采集端编码器设置有关,服务器改变不了。但是由于一般的播放器收到缓存后,并不会丢弃过多的画面来确保低延时。况且播放器还希望有一定的缓存来确保播放的流畅性,所以这个 GOP 缓存将会增大播放器的延时。

                  • 综合延时

                    以上所有的延时累加,就是你观看到的直观延时,那么你看到的延时很高,能怪是服务器的问题吗?在理想的网络状况下,你观看到的直观延时,其实约等于播放器的播放缓存延时,这个锅得由播放器来背。

                  怎么测试延时

                  用 vlc 等通用播放器测试延时是很不专业的,这些播放器延时最少是秒级别的,为了播放流畅度和音视频同步,这些播放器是不可能给你真实的延时数据。

                  ',8),_={href:"https://github.com/ZLMediaKit/ZLMediaKit/blob/master/player/test_player.cpp",target:"_blank",rel:"noopener noreferrer"},f=i(`

                  什么? 你告诉我你不会编译 ZLMediaKit? 那好,退而求其次,我推荐你使用 webrtc 播放来测试 zlm 延时;也可以用 ffplay 测试:

                  ffplay -i rtmp://xxxxxxx -fflags nobuffer
                  +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as p,c as d,a as t,d as e,b as a,w as o,e as i}from"./app-0NopiYEV.js";const c={},h=i('

                  引言

                  有些小伙伴们经常在群里面问我,为什么用 ZLMediaKit 拉流代理、推流转发的流播放延时好几秒,长的时候 10 多秒?为什么 HLS 延时更高,动辄延时半分钟?本文的目的在于澄清大家对延时的误解。

                  什么是延时

                  很多小伙伴们并不能明白什么叫延时,认为随便一个播放器播放出来的画面跟原始流画面时间差就是延时,其实这是对延时最大的误解。 延时不是表象,很多人在测试延时时很不专业,对延时测试的专业性认识不足,在此我特别提醒,不是随随便便的播放器都有资格做延时测试的!

                  总而言之,一般整个延时有以下几部分累加组成:

                  • 采集延时

                    在采集摄像头或显卡画面时,由于 fps 的限制和 cpu 性能、内存拷贝速度等客观限制,采集画面成 YUV/RGB 等数据时会有一定的延时,一般延时为毫秒级别。由于一般编码器对输入数据格式存在限制,譬如要求统一输入 YUV420P,这样在做 RGB->YUV420P 转换时,也会有转换计算延时(这个可以通过 libyuv 库来降低)。总而言之,采集延时大概为毫秒级别,如果 fps 为 30,那么一般采集延时会有 30 毫秒以上的延时,在内存拷贝和颜色转换时,又可能增加若干毫秒的延时。

                  • 编码延时

                    在把原始画面输入到编码器时,并不会立即输出编码后的数据,特别是在开启 B 帧时,由于需要参考后面的 P 帧,那么延时会更大,所以延时敏感的情况下一般不开启 B 帧,这种情况下编码延时应该是毫秒级别,不是很大。

                  • 网络上行传输延时

                    编码后的数据,要经过一定的协议打包才能写入 socket,然后传输给推流服务器或拉流代理服务器,协议打包会有一定的内存拷贝和计算量,那么会增加延时,不过这个延时很小,基本忽略不计。数据在上传到服务器时,这个延时可大可小,取决于网络质量。

                  • 服务器转协议延时

                    服务器在收到数据后,要读 socket 缓存、协议解析、解复用、重新打包等操作,不过总体而言,这个延时比较小,基本没什么影响。有时,服务器为了提高性能,会采取合并写的机制,也就是收到一定量的数据后才会一并转发,这个延时一般为几百毫秒,ZLMediaKit 默认 300 毫秒左右,不过 ZLMediaKit 默认关闭合并写,也就是这个延时也很小。

                  • 网络下行延时

                    流媒体在把视频数据转发给播放器时,会存在网络发送,这个延时大小取决于网络质量,ZLMediaKit 在关闭低延时模式时,还会增加 MSG_MORE 和关闭 TCP_NODELAY 导致的延时,不过 ZLMediaKit 默认开启低延时模式。

                  • 播放器延时

                    播放器延时主要有网络接收延时、协议解析解复用延时、解码延时、缓存延时、渲染延时组成,这些延时中缓存延时最大,因为一般的播放器为了保证在网络抖动情况下视频播放的流畅性,会以增加延时为代价,增加播放缓存,这样在网络变差时,不至于播放缓冲卡顿。而且为了音视频同步,也必须确保一定的缓存量。这种延时一般都是秒级别,一般 5 秒左右。

                  • 播放器 GOP 缓存延时

                    流媒体服务器为了能让播放器立即出画面,往往会缓存最近的一个 I 帧,这个 I 帧往后的所有音视频数据被称作为 GOP 缓存。如果不缓存 GOP,那么播放器要等下一个 I 帧才能解码成功或不花屏,显然为了提高播放体验,这个 GOP 缓存是不能去掉的。而一般 GOP 短则 1~3 秒,长则 10 几秒,这个跟采集端编码器设置有关,服务器改变不了。但是由于一般的播放器收到缓存后,并不会丢弃过多的画面来确保低延时。况且播放器还希望有一定的缓存来确保播放的流畅性,所以这个 GOP 缓存将会增大播放器的延时。

                  • 综合延时

                    以上所有的延时累加,就是你观看到的直观延时,那么你看到的延时很高,能怪是服务器的问题吗?在理想的网络状况下,你观看到的直观延时,其实约等于播放器的播放缓存延时,这个锅得由播放器来背。

                  怎么测试延时

                  用 vlc 等通用播放器测试延时是很不专业的,这些播放器延时最少是秒级别的,为了播放流畅度和音视频同步,这些播放器是不可能给你真实的延时数据。

                  ',8),_={href:"https://github.com/ZLMediaKit/ZLMediaKit/blob/master/player/test_player.cpp",target:"_blank",rel:"noopener noreferrer"},f=i(`

                  什么? 你告诉我你不会编译 ZLMediaKit? 那好,退而求其次,我推荐你使用 webrtc 播放来测试 zlm 延时;也可以用 ffplay 测试:

                  ffplay -i rtmp://xxxxxxx -fflags nobuffer
                   
                  `,2),u={href:"http://ffmpeg.org/download.html",target:"_blank",rel:"noopener noreferrer"},g=t("h2",{id:"关于延时的更多信息",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#关于延时的更多信息","aria-hidden":"true"},"#"),e(" 关于延时的更多信息")],-1);function m(b,x){const r=s("ExternalLinkIcon"),n=s("RouterLink");return p(),d("div",null,[h,t("p",null,[e("在此,我强烈推荐大家自己写个无缓存的播放器测试延时,但是这显然超过了大部人的能力,所以 ZLMediaKit 提供了一个简单的播放器测试延时: "),t("a",_,[e("test_player"),a(r)])]),f,t("p",null,[e("如果你不知道 ffplay 怎么安装,你可以从"),t("a",u,[e("这里"),a(r)]),e("下载编译好的.")]),g,t("p",null,[a(n,{to:"/zh/reference/documents/the_nature_of_live_broadcast_delay.html"},{default:o(()=>[e("直播延时的本质")]),_:1})]),t("p",null,[a(n,{to:"/zh/reference/test/delay_test.html"},{default:o(()=>[e("延时相关测试")]),_:1})])])}const k=l(c,[["render",m],["__file","how_to_test_delay.html.vue"]]);export{k as default}; diff --git a/assets/how_to_use_device_id_as_stream_id.html-HCE1vKo7.js b/assets/how_to_use_device_id_as_stream_id.html-5dSEoDq7.js similarity index 96% rename from assets/how_to_use_device_id_as_stream_id.html-HCE1vKo7.js rename to assets/how_to_use_device_id_as_stream_id.html-5dSEoDq7.js index 1b9bf04..90d9256 100644 --- a/assets/how_to_use_device_id_as_stream_id.html-HCE1vKo7.js +++ b/assets/how_to_use_device_id_as_stream_id.html-5dSEoDq7.js @@ -1 +1 @@ -import{_ as i,a,b as e,c as t,d as o,e as c}from"./how_to_use_device_id_as_stream_id_6-sfQ1h9Fe.js";import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as g,c as r,e as _}from"./app-RP31lnfq.js";const p={},d=_('

                  为了支持 RTP 流的识别(与摄像头 ID 产生关联), 必须通过 源地址ssrc本地端口号 来区分.

                  但是在 issue #338 里面有开发者反馈,有些设备不支持设置 ssrc,ssrc 一直为 0.

                  而源地址端口也会一直变,RTP 推流前 SIP 服务器也不知道摄像头推流端口(甚至 IP 都不知道) 那么区分流只通过源地址也不现实, 因为一个局域网内也可能多个设备, 如果 ZLMediaKit 在公网,那么这些流的 IP 是一致的,而端口是随机的,根本没法跟摄像头 ID 对应起来.

                  所以为了实现 RTP 推流参数的流 ID 与摄像头 ID 产生关联,就基本只剩下本地端口号这条路了,这就意味着一个端口只能接受一个流。

                  在不指定流 ID 时,ZLMediaKit 的行为跟之前完全一样,单端口支持多流,ssrc 作为 stream id。

                  如果指定了该端口绑定的流 ID,那么该端口只能接收一路流。

                  以下是关键代码:

                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  ',13),m=[d];function n(f,l){return g(),r("div",null,m)}const b=s(p,[["render",n],["__file","how_to_use_device_id_as_stream_id.html.vue"]]);export{b as default}; +import{_ as i,a,b as e,c as t,d as o,e as c}from"./how_to_use_device_id_as_stream_id_6-sfQ1h9Fe.js";import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as g,c as r,e as _}from"./app-0NopiYEV.js";const p={},d=_('

                  为了支持 RTP 流的识别(与摄像头 ID 产生关联), 必须通过 源地址ssrc本地端口号 来区分.

                  但是在 issue #338 里面有开发者反馈,有些设备不支持设置 ssrc,ssrc 一直为 0.

                  而源地址端口也会一直变,RTP 推流前 SIP 服务器也不知道摄像头推流端口(甚至 IP 都不知道) 那么区分流只通过源地址也不现实, 因为一个局域网内也可能多个设备, 如果 ZLMediaKit 在公网,那么这些流的 IP 是一致的,而端口是随机的,根本没法跟摄像头 ID 对应起来.

                  所以为了实现 RTP 推流参数的流 ID 与摄像头 ID 产生关联,就基本只剩下本地端口号这条路了,这就意味着一个端口只能接受一个流。

                  在不指定流 ID 时,ZLMediaKit 的行为跟之前完全一样,单端口支持多流,ssrc 作为 stream id。

                  如果指定了该端口绑定的流 ID,那么该端口只能接收一路流。

                  以下是关键代码:

                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  ',13),m=[d];function n(f,l){return g(),r("div",null,m)}const b=s(p,[["render",n],["__file","how_to_use_device_id_as_stream_id.html.vue"]]);export{b as default}; diff --git a/assets/how_to_use_device_id_as_stream_id.html-r4xrBF9F.js b/assets/how_to_use_device_id_as_stream_id.html-CzzjrtPS.js similarity index 96% rename from assets/how_to_use_device_id_as_stream_id.html-r4xrBF9F.js rename to assets/how_to_use_device_id_as_stream_id.html-CzzjrtPS.js index 1b9bf04..90d9256 100644 --- a/assets/how_to_use_device_id_as_stream_id.html-r4xrBF9F.js +++ b/assets/how_to_use_device_id_as_stream_id.html-CzzjrtPS.js @@ -1 +1 @@ -import{_ as i,a,b as e,c as t,d as o,e as c}from"./how_to_use_device_id_as_stream_id_6-sfQ1h9Fe.js";import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as g,c as r,e as _}from"./app-RP31lnfq.js";const p={},d=_('

                  为了支持 RTP 流的识别(与摄像头 ID 产生关联), 必须通过 源地址ssrc本地端口号 来区分.

                  但是在 issue #338 里面有开发者反馈,有些设备不支持设置 ssrc,ssrc 一直为 0.

                  而源地址端口也会一直变,RTP 推流前 SIP 服务器也不知道摄像头推流端口(甚至 IP 都不知道) 那么区分流只通过源地址也不现实, 因为一个局域网内也可能多个设备, 如果 ZLMediaKit 在公网,那么这些流的 IP 是一致的,而端口是随机的,根本没法跟摄像头 ID 对应起来.

                  所以为了实现 RTP 推流参数的流 ID 与摄像头 ID 产生关联,就基本只剩下本地端口号这条路了,这就意味着一个端口只能接受一个流。

                  在不指定流 ID 时,ZLMediaKit 的行为跟之前完全一样,单端口支持多流,ssrc 作为 stream id。

                  如果指定了该端口绑定的流 ID,那么该端口只能接收一路流。

                  以下是关键代码:

                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  ',13),m=[d];function n(f,l){return g(),r("div",null,m)}const b=s(p,[["render",n],["__file","how_to_use_device_id_as_stream_id.html.vue"]]);export{b as default}; +import{_ as i,a,b as e,c as t,d as o,e as c}from"./how_to_use_device_id_as_stream_id_6-sfQ1h9Fe.js";import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as g,c as r,e as _}from"./app-0NopiYEV.js";const p={},d=_('

                  为了支持 RTP 流的识别(与摄像头 ID 产生关联), 必须通过 源地址ssrc本地端口号 来区分.

                  但是在 issue #338 里面有开发者反馈,有些设备不支持设置 ssrc,ssrc 一直为 0.

                  而源地址端口也会一直变,RTP 推流前 SIP 服务器也不知道摄像头推流端口(甚至 IP 都不知道) 那么区分流只通过源地址也不现实, 因为一个局域网内也可能多个设备, 如果 ZLMediaKit 在公网,那么这些流的 IP 是一致的,而端口是随机的,根本没法跟摄像头 ID 对应起来.

                  所以为了实现 RTP 推流参数的流 ID 与摄像头 ID 产生关联,就基本只剩下本地端口号这条路了,这就意味着一个端口只能接受一个流。

                  在不指定流 ID 时,ZLMediaKit 的行为跟之前完全一样,单端口支持多流,ssrc 作为 stream id。

                  如果指定了该端口绑定的流 ID,那么该端口只能接收一路流。

                  以下是关键代码:

                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  image
                  ',13),m=[d];function n(f,l){return g(),r("div",null,m)}const b=s(p,[["render",n],["__file","how_to_use_device_id_as_stream_id.html.vue"]]);export{b as default}; diff --git a/assets/index-67a42d7d-B7ItSCR5.js b/assets/index-67a42d7d-iblPHmxF.js similarity index 97% rename from assets/index-67a42d7d-B7ItSCR5.js rename to assets/index-67a42d7d-iblPHmxF.js index fd11925..2be2e0a 100644 --- a/assets/index-67a42d7d-B7ItSCR5.js +++ b/assets/index-67a42d7d-iblPHmxF.js @@ -1 +1 @@ -import{b as G,i as m,m as O,G as j,l as A}from"./layout-wEoclKsW.js";import{i as M,u as _,s as H,a as V,b as q,p as D,c as U,d as W,e as Y,f as z,g as L,h as C}from"./edges-80f1ebb6-89E8mCFH.js";import{l as i,q as N,c as S,h as T}from"./mermaid.core-ygY5oRaR.js";import{c as K}from"./createText-aebacdfe-CTBuskZ8.js";var Q=4;function Z(e){return G(e,Q)}function x(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:I(e),edges:tt(e)};return m(e.graph())||(t.value=Z(e.graph())),t}function I(e){return O(e.nodes(),function(t){var n=e.node(t),r=e.parent(t),s={v:t};return m(n)||(s.value=n),m(r)||(s.parent=r),s})}function tt(e){return O(e.edges(),function(t){var n=e.edge(t),r={v:t.v,w:t.w};return m(t.name)||(r.name=t.name),m(n)||(r.value=n),r})}let f={},g={},J={};const et=()=>{g={},J={},f={}},X=(e,t)=>(i.trace("In isDecendant",t," ",e," = ",g[t].includes(e)),!!g[t].includes(e)),nt=(e,t)=>(i.info("Decendants of ",t," is ",g[t]),i.info("Edge is ",e),e.v===t||e.w===t?!1:g[t]?g[t].includes(e.v)||X(e.v,t)||X(e.w,t)||g[t].includes(e.w):(i.debug("Tilt, ",t,",not in decendants"),!1)),R=(e,t,n,r)=>{i.warn("Copying children of ",e,"root",r,"data",t.node(e),r);const s=t.children(e)||[];e!==r&&s.push(e),i.warn("Copying (nodes) clusterId",e,"nodes",s),s.forEach(c=>{if(t.children(c).length>0)R(c,t,n,r);else{const d=t.node(c);i.info("cp ",c," to ",r," with parent ",e),n.setNode(c,d),r!==t.parent(c)&&(i.warn("Setting parent",c,t.parent(c)),n.setParent(c,t.parent(c))),e!==r&&c!==e?(i.debug("Setting parent",c,e),n.setParent(c,e)):(i.info("In copy ",e,"root",r,"data",t.node(e),r),i.debug("Not Setting parent for node=",c,"cluster!==rootId",e!==r,"node!==clusterId",c!==e));const l=t.edges(c);i.debug("Copying Edges",l),l.forEach(u=>{i.info("Edge",u);const h=t.edge(u.v,u.w,u.name);i.info("Edge data",h,r);try{nt(u,r)?(i.info("Copying as ",u.v,u.w,h,u.name),n.setEdge(u.v,u.w,h,u.name),i.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):i.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",r," clusterId:",e)}catch(w){i.error(w)}})}i.debug("Removing node",c),t.removeNode(c)})},P=(e,t)=>{const n=t.children(e);let r=[...n];for(const s of n)J[s]=e,r=[...r,...P(s,t)];return r},b=(e,t)=>{i.trace("Searching",e);const n=t.children(e);if(i.trace("Searching children of id ",e,n),n.length<1)return i.trace("This is a valid node",e),e;for(const r of n){const s=b(r,t);if(s)return i.trace("Found replacement for",e," => ",s),s}},E=e=>!f[e]||!f[e].externalConnections?e:f[e]?f[e].id:e,it=(e,t)=>{if(!e||t>10){i.debug("Opting out, no graph ");return}else i.debug("Opting in, graph ");e.nodes().forEach(function(n){e.children(n).length>0&&(i.warn("Cluster identified",n," Replacement id in edges: ",b(n,e)),g[n]=P(n,e),f[n]={id:b(n,e),clusterData:e.node(n)})}),e.nodes().forEach(function(n){const r=e.children(n),s=e.edges();r.length>0?(i.debug("Cluster identified",n,g),s.forEach(c=>{if(c.v!==n&&c.w!==n){const d=X(c.v,n),l=X(c.w,n);d^l&&(i.warn("Edge: ",c," leaves cluster ",n),i.warn("Decendants of XXX ",n,": ",g[n]),f[n].externalConnections=!0)}})):i.debug("Not a cluster ",n,g)}),e.edges().forEach(function(n){const r=e.edge(n);i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let s=n.v,c=n.w;if(i.warn("Fix XXX",f,"ids:",n.v,n.w,"Translating: ",f[n.v]," --- ",f[n.w]),f[n.v]&&f[n.w]&&f[n.v]===f[n.w]){i.warn("Fixing and trixing link to self - removing XXX",n.v,n.w,n.name),i.warn("Fixing and trixing - removing XXX",n.v,n.w,n.name),s=E(n.v),c=E(n.w),e.removeEdge(n.v,n.w,n.name);const d=n.w+"---"+n.v;e.setNode(d,{domId:d,id:d,labelStyle:"",labelText:r.label,padding:0,shape:"labelRect",style:""});const l=structuredClone(r),u=structuredClone(r);l.label="",l.arrowTypeEnd="none",u.label="",l.fromCluster=n.v,u.toCluster=n.v,e.setEdge(s,d,l,n.name+"-cyclic-special"),e.setEdge(d,c,u,n.name+"-cyclic-special")}else(f[n.v]||f[n.w])&&(i.warn("Fixing and trixing - removing XXX",n.v,n.w,n.name),s=E(n.v),c=E(n.w),e.removeEdge(n.v,n.w,n.name),s!==n.v&&(r.fromCluster=n.v),c!==n.w&&(r.toCluster=n.w),i.warn("Fix Replacing with XXX",s,c,n.name),e.setEdge(s,c,r,n.name))}),i.warn("Adjusted Graph",x(e)),p(e,0),i.trace(f)},p=(e,t)=>{if(i.warn("extractor - ",t,x(e),e.children("D")),t>10){i.error("Bailing out");return}let n=e.nodes(),r=!1;for(const s of n){const c=e.children(s);r=r||c.length>0}if(!r){i.debug("Done, no node has children",e.nodes());return}i.debug("Nodes = ",n,t);for(const s of n)if(i.debug("Extracting node",s,f,f[s]&&!f[s].externalConnections,!e.parent(s),e.node(s),e.children("D")," Depth ",t),!f[s])i.debug("Not a cluster",s,t);else if(!f[s].externalConnections&&e.children(s)&&e.children(s).length>0){i.warn("Cluster without external connections, without a parent and with children",s,t);let d=e.graph().rankdir==="TB"?"LR":"TB";f[s]&&f[s].clusterData&&f[s].clusterData.dir&&(d=f[s].clusterData.dir,i.warn("Fixing dir",f[s].clusterData.dir,d));const l=new j({multigraph:!0,compound:!0}).setGraph({rankdir:d,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});i.warn("Old graph before copy",x(e)),R(s,e,l,s),e.setNode(s,{clusterNode:!0,id:s,clusterData:f[s].clusterData,labelText:f[s].labelText,graph:l}),i.warn("New graph after copy node: (",s,")",x(l)),i.debug("Old graph after copy",x(e))}else i.warn("Cluster ** ",s," **not meeting the criteria !externalConnections:",!f[s].externalConnections," no parent: ",!e.parent(s)," children ",e.children(s)&&e.children(s).length>0,e.children("D"),t),i.debug(f);n=e.nodes(),i.warn("New list of nodes",n);for(const s of n){const c=e.node(s);i.warn(" Now next level",s,c),c.clusterNode&&p(c.graph,t+1)}},F=(e,t)=>{if(t.length===0)return[];let n=Object.assign(t);return t.forEach(r=>{const s=e.children(r),c=F(e,s);n=[...n,...c]}),n},st=e=>F(e,e.children()),rt=(e,t)=>{i.info("Creating subgraph rect for ",t.id,t);const n=e.insert("g").attr("class","cluster"+(t.class?" "+t.class:"")).attr("id",t.id),r=n.insert("rect",":first-child"),s=N(S().flowchart.htmlLabels),c=n.insert("g").attr("class","cluster-label"),d=t.labelType==="markdown"?K(c,t.labelText,{style:t.labelStyle,useHtmlLabels:s}):c.node().appendChild(L(t.labelText,t.labelStyle,void 0,!0));let l=d.getBBox();if(N(S().flowchart.htmlLabels)){const a=d.children[0],o=T(d);l=a.getBoundingClientRect(),o.attr("width",l.width),o.attr("height",l.height)}const u=0*t.padding,h=u/2,w=t.width<=l.width+u?l.width+u:t.width;t.width<=l.width+u?t.diff=(l.width-t.width)/2-t.padding/2:t.diff=-t.padding/2,i.trace("Data ",t,JSON.stringify(t)),r.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-w/2).attr("y",t.y-t.height/2-h).attr("width",w).attr("height",t.height+u),s?c.attr("transform","translate("+(t.x-l.width/2)+", "+(t.y-t.height/2)+")"):c.attr("transform","translate("+t.x+", "+(t.y-t.height/2)+")");const v=r.node().getBBox();return t.width=v.width,t.height=v.height,t.intersect=function(a){return C(t,a)},n},at=(e,t)=>{const n=e.insert("g").attr("class","note-cluster").attr("id",t.id),r=n.insert("rect",":first-child"),s=0*t.padding,c=s/2;r.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-c).attr("y",t.y-t.height/2-c).attr("width",t.width+s).attr("height",t.height+s).attr("fill","none");const d=r.node().getBBox();return t.width=d.width,t.height=d.height,t.intersect=function(l){return C(t,l)},n},ct=(e,t)=>{const n=e.insert("g").attr("class",t.classes).attr("id",t.id),r=n.insert("rect",":first-child"),s=n.insert("g").attr("class","cluster-label"),c=n.append("rect"),d=s.node().appendChild(L(t.labelText,t.labelStyle,void 0,!0));let l=d.getBBox();if(N(S().flowchart.htmlLabels)){const a=d.children[0],o=T(d);l=a.getBoundingClientRect(),o.attr("width",l.width),o.attr("height",l.height)}l=d.getBBox();const u=0*t.padding,h=u/2,w=t.width<=l.width+t.padding?l.width+t.padding:t.width;t.width<=l.width+t.padding?t.diff=(l.width+t.padding*0-t.width)/2:t.diff=-t.padding/2,r.attr("class","outer").attr("x",t.x-w/2-h).attr("y",t.y-t.height/2-h).attr("width",w+u).attr("height",t.height+u),c.attr("class","inner").attr("x",t.x-w/2-h).attr("y",t.y-t.height/2-h+l.height-1).attr("width",w+u).attr("height",t.height+u-l.height-3),s.attr("transform","translate("+(t.x-l.width/2)+", "+(t.y-t.height/2-t.padding/3+(N(S().flowchart.htmlLabels)?5:3))+")");const v=r.node().getBBox();return t.height=v.height,t.intersect=function(a){return C(t,a)},n},ot=(e,t)=>{const n=e.insert("g").attr("class",t.classes).attr("id",t.id),r=n.insert("rect",":first-child"),s=0*t.padding,c=s/2;r.attr("class","divider").attr("x",t.x-t.width/2-c).attr("y",t.y-t.height/2).attr("width",t.width+s).attr("height",t.height+s);const d=r.node().getBBox();return t.width=d.width,t.height=d.height,t.diff=-t.padding/2,t.intersect=function(l){return C(t,l)},n},lt={rect:rt,roundedWithTitle:ct,noteGroup:at,divider:ot};let k={};const ft=(e,t)=>{i.trace("Inserting cluster");const n=t.shape||"rect";k[t.id]=lt[n](e,t)},dt=()=>{k={}},$=async(e,t,n,r,s)=>{i.info("Graph in recursive render: XXX",x(t),s);const c=t.graph().rankdir;i.trace("Dir in recursive render - dir:",c);const d=e.insert("g").attr("class","root");t.nodes()?i.info("Recursive render XXX",t.nodes()):i.info("No nodes found for",t),t.edges().length>0&&i.trace("Recursive edges",t.edge(t.edges()[0]));const l=d.insert("g").attr("class","clusters"),u=d.insert("g").attr("class","edgePaths"),h=d.insert("g").attr("class","edgeLabels"),w=d.insert("g").attr("class","nodes");await Promise.all(t.nodes().map(async function(a){const o=t.node(a);if(s!==void 0){const y=JSON.parse(JSON.stringify(s.clusterData));i.info("Setting data for cluster XXX (",a,") ",y,s),t.setNode(s.id,y),t.parent(a)||(i.trace("Setting parent",a,s.id),t.setParent(a,s.id,y))}if(i.info("(Insert) Node XXX"+a+": "+JSON.stringify(t.node(a))),o&&o.clusterNode){i.info("Cluster identified",a,o.width,t.node(a));const y=await $(w,o.graph,n,r,t.node(a)),B=y.elem;_(o,B),o.diff=y.diff||0,i.info("Node bounds (abc123)",a,o,o.width,o.x,o.y),H(B,o),i.warn("Recursive render complete ",B,o)}else t.children(a).length>0?(i.info("Cluster - the non recursive path XXX",a,o.id,o,t),i.info(b(o.id,t)),f[o.id]={id:b(o.id,t),node:o}):(i.info("Node - the non recursive path",a,o.id,o),await V(w,t.node(a),c))})),t.edges().forEach(function(a){const o=t.edge(a.v,a.w,a.name);i.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(a)),i.info("Edge "+a.v+" -> "+a.w+": ",a," ",JSON.stringify(t.edge(a))),i.info("Fix",f,"ids:",a.v,a.w,"Translateing: ",f[a.v],f[a.w]),q(h,o)}),t.edges().forEach(function(a){i.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(a))}),i.info("#############################################"),i.info("### Layout ###"),i.info("#############################################"),i.info(t),A(t),i.info("Graph after layout:",x(t));let v=0;return st(t).forEach(function(a){const o=t.node(a);i.info("Position "+a+": "+JSON.stringify(t.node(a))),i.info("Position "+a+": ("+o.x,","+o.y,") width: ",o.width," height: ",o.height),o&&o.clusterNode?D(o):t.children(a).length>0?(ft(l,o),f[o.id].node=o):D(o)}),t.edges().forEach(function(a){const o=t.edge(a);i.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(o),o);const y=U(u,a,o,f,n,t,r);W(o,y)}),t.nodes().forEach(function(a){const o=t.node(a);i.info(a,o.type,o.diff),o.type==="group"&&(v=o.diff)}),{elem:d,diff:v}},xt=async(e,t,n,r,s)=>{M(e,n,r,s),Y(),z(),dt(),et(),i.warn("Graph at first:",JSON.stringify(x(t))),it(t),i.warn("Graph after:",JSON.stringify(x(t))),await $(e,t,r,s)};export{xt as r}; +import{b as G,i as m,m as O,G as j,l as A}from"./layout-6DvG_ICF.js";import{i as M,u as _,s as H,a as V,b as q,p as D,c as U,d as W,e as Y,f as z,g as L,h as C}from"./edges-80f1ebb6-hR1YO9QC.js";import{l as i,q as N,c as S,h as T}from"./mermaid.core-YBgJFCkH.js";import{c as K}from"./createText-aebacdfe-VuGI-o_f.js";var Q=4;function Z(e){return G(e,Q)}function x(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:I(e),edges:tt(e)};return m(e.graph())||(t.value=Z(e.graph())),t}function I(e){return O(e.nodes(),function(t){var n=e.node(t),r=e.parent(t),s={v:t};return m(n)||(s.value=n),m(r)||(s.parent=r),s})}function tt(e){return O(e.edges(),function(t){var n=e.edge(t),r={v:t.v,w:t.w};return m(t.name)||(r.name=t.name),m(n)||(r.value=n),r})}let f={},g={},J={};const et=()=>{g={},J={},f={}},X=(e,t)=>(i.trace("In isDecendant",t," ",e," = ",g[t].includes(e)),!!g[t].includes(e)),nt=(e,t)=>(i.info("Decendants of ",t," is ",g[t]),i.info("Edge is ",e),e.v===t||e.w===t?!1:g[t]?g[t].includes(e.v)||X(e.v,t)||X(e.w,t)||g[t].includes(e.w):(i.debug("Tilt, ",t,",not in decendants"),!1)),R=(e,t,n,r)=>{i.warn("Copying children of ",e,"root",r,"data",t.node(e),r);const s=t.children(e)||[];e!==r&&s.push(e),i.warn("Copying (nodes) clusterId",e,"nodes",s),s.forEach(c=>{if(t.children(c).length>0)R(c,t,n,r);else{const d=t.node(c);i.info("cp ",c," to ",r," with parent ",e),n.setNode(c,d),r!==t.parent(c)&&(i.warn("Setting parent",c,t.parent(c)),n.setParent(c,t.parent(c))),e!==r&&c!==e?(i.debug("Setting parent",c,e),n.setParent(c,e)):(i.info("In copy ",e,"root",r,"data",t.node(e),r),i.debug("Not Setting parent for node=",c,"cluster!==rootId",e!==r,"node!==clusterId",c!==e));const l=t.edges(c);i.debug("Copying Edges",l),l.forEach(u=>{i.info("Edge",u);const h=t.edge(u.v,u.w,u.name);i.info("Edge data",h,r);try{nt(u,r)?(i.info("Copying as ",u.v,u.w,h,u.name),n.setEdge(u.v,u.w,h,u.name),i.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):i.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",r," clusterId:",e)}catch(w){i.error(w)}})}i.debug("Removing node",c),t.removeNode(c)})},P=(e,t)=>{const n=t.children(e);let r=[...n];for(const s of n)J[s]=e,r=[...r,...P(s,t)];return r},b=(e,t)=>{i.trace("Searching",e);const n=t.children(e);if(i.trace("Searching children of id ",e,n),n.length<1)return i.trace("This is a valid node",e),e;for(const r of n){const s=b(r,t);if(s)return i.trace("Found replacement for",e," => ",s),s}},E=e=>!f[e]||!f[e].externalConnections?e:f[e]?f[e].id:e,it=(e,t)=>{if(!e||t>10){i.debug("Opting out, no graph ");return}else i.debug("Opting in, graph ");e.nodes().forEach(function(n){e.children(n).length>0&&(i.warn("Cluster identified",n," Replacement id in edges: ",b(n,e)),g[n]=P(n,e),f[n]={id:b(n,e),clusterData:e.node(n)})}),e.nodes().forEach(function(n){const r=e.children(n),s=e.edges();r.length>0?(i.debug("Cluster identified",n,g),s.forEach(c=>{if(c.v!==n&&c.w!==n){const d=X(c.v,n),l=X(c.w,n);d^l&&(i.warn("Edge: ",c," leaves cluster ",n),i.warn("Decendants of XXX ",n,": ",g[n]),f[n].externalConnections=!0)}})):i.debug("Not a cluster ",n,g)}),e.edges().forEach(function(n){const r=e.edge(n);i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let s=n.v,c=n.w;if(i.warn("Fix XXX",f,"ids:",n.v,n.w,"Translating: ",f[n.v]," --- ",f[n.w]),f[n.v]&&f[n.w]&&f[n.v]===f[n.w]){i.warn("Fixing and trixing link to self - removing XXX",n.v,n.w,n.name),i.warn("Fixing and trixing - removing XXX",n.v,n.w,n.name),s=E(n.v),c=E(n.w),e.removeEdge(n.v,n.w,n.name);const d=n.w+"---"+n.v;e.setNode(d,{domId:d,id:d,labelStyle:"",labelText:r.label,padding:0,shape:"labelRect",style:""});const l=structuredClone(r),u=structuredClone(r);l.label="",l.arrowTypeEnd="none",u.label="",l.fromCluster=n.v,u.toCluster=n.v,e.setEdge(s,d,l,n.name+"-cyclic-special"),e.setEdge(d,c,u,n.name+"-cyclic-special")}else(f[n.v]||f[n.w])&&(i.warn("Fixing and trixing - removing XXX",n.v,n.w,n.name),s=E(n.v),c=E(n.w),e.removeEdge(n.v,n.w,n.name),s!==n.v&&(r.fromCluster=n.v),c!==n.w&&(r.toCluster=n.w),i.warn("Fix Replacing with XXX",s,c,n.name),e.setEdge(s,c,r,n.name))}),i.warn("Adjusted Graph",x(e)),p(e,0),i.trace(f)},p=(e,t)=>{if(i.warn("extractor - ",t,x(e),e.children("D")),t>10){i.error("Bailing out");return}let n=e.nodes(),r=!1;for(const s of n){const c=e.children(s);r=r||c.length>0}if(!r){i.debug("Done, no node has children",e.nodes());return}i.debug("Nodes = ",n,t);for(const s of n)if(i.debug("Extracting node",s,f,f[s]&&!f[s].externalConnections,!e.parent(s),e.node(s),e.children("D")," Depth ",t),!f[s])i.debug("Not a cluster",s,t);else if(!f[s].externalConnections&&e.children(s)&&e.children(s).length>0){i.warn("Cluster without external connections, without a parent and with children",s,t);let d=e.graph().rankdir==="TB"?"LR":"TB";f[s]&&f[s].clusterData&&f[s].clusterData.dir&&(d=f[s].clusterData.dir,i.warn("Fixing dir",f[s].clusterData.dir,d));const l=new j({multigraph:!0,compound:!0}).setGraph({rankdir:d,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});i.warn("Old graph before copy",x(e)),R(s,e,l,s),e.setNode(s,{clusterNode:!0,id:s,clusterData:f[s].clusterData,labelText:f[s].labelText,graph:l}),i.warn("New graph after copy node: (",s,")",x(l)),i.debug("Old graph after copy",x(e))}else i.warn("Cluster ** ",s," **not meeting the criteria !externalConnections:",!f[s].externalConnections," no parent: ",!e.parent(s)," children ",e.children(s)&&e.children(s).length>0,e.children("D"),t),i.debug(f);n=e.nodes(),i.warn("New list of nodes",n);for(const s of n){const c=e.node(s);i.warn(" Now next level",s,c),c.clusterNode&&p(c.graph,t+1)}},F=(e,t)=>{if(t.length===0)return[];let n=Object.assign(t);return t.forEach(r=>{const s=e.children(r),c=F(e,s);n=[...n,...c]}),n},st=e=>F(e,e.children()),rt=(e,t)=>{i.info("Creating subgraph rect for ",t.id,t);const n=e.insert("g").attr("class","cluster"+(t.class?" "+t.class:"")).attr("id",t.id),r=n.insert("rect",":first-child"),s=N(S().flowchart.htmlLabels),c=n.insert("g").attr("class","cluster-label"),d=t.labelType==="markdown"?K(c,t.labelText,{style:t.labelStyle,useHtmlLabels:s}):c.node().appendChild(L(t.labelText,t.labelStyle,void 0,!0));let l=d.getBBox();if(N(S().flowchart.htmlLabels)){const a=d.children[0],o=T(d);l=a.getBoundingClientRect(),o.attr("width",l.width),o.attr("height",l.height)}const u=0*t.padding,h=u/2,w=t.width<=l.width+u?l.width+u:t.width;t.width<=l.width+u?t.diff=(l.width-t.width)/2-t.padding/2:t.diff=-t.padding/2,i.trace("Data ",t,JSON.stringify(t)),r.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-w/2).attr("y",t.y-t.height/2-h).attr("width",w).attr("height",t.height+u),s?c.attr("transform","translate("+(t.x-l.width/2)+", "+(t.y-t.height/2)+")"):c.attr("transform","translate("+t.x+", "+(t.y-t.height/2)+")");const v=r.node().getBBox();return t.width=v.width,t.height=v.height,t.intersect=function(a){return C(t,a)},n},at=(e,t)=>{const n=e.insert("g").attr("class","note-cluster").attr("id",t.id),r=n.insert("rect",":first-child"),s=0*t.padding,c=s/2;r.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-c).attr("y",t.y-t.height/2-c).attr("width",t.width+s).attr("height",t.height+s).attr("fill","none");const d=r.node().getBBox();return t.width=d.width,t.height=d.height,t.intersect=function(l){return C(t,l)},n},ct=(e,t)=>{const n=e.insert("g").attr("class",t.classes).attr("id",t.id),r=n.insert("rect",":first-child"),s=n.insert("g").attr("class","cluster-label"),c=n.append("rect"),d=s.node().appendChild(L(t.labelText,t.labelStyle,void 0,!0));let l=d.getBBox();if(N(S().flowchart.htmlLabels)){const a=d.children[0],o=T(d);l=a.getBoundingClientRect(),o.attr("width",l.width),o.attr("height",l.height)}l=d.getBBox();const u=0*t.padding,h=u/2,w=t.width<=l.width+t.padding?l.width+t.padding:t.width;t.width<=l.width+t.padding?t.diff=(l.width+t.padding*0-t.width)/2:t.diff=-t.padding/2,r.attr("class","outer").attr("x",t.x-w/2-h).attr("y",t.y-t.height/2-h).attr("width",w+u).attr("height",t.height+u),c.attr("class","inner").attr("x",t.x-w/2-h).attr("y",t.y-t.height/2-h+l.height-1).attr("width",w+u).attr("height",t.height+u-l.height-3),s.attr("transform","translate("+(t.x-l.width/2)+", "+(t.y-t.height/2-t.padding/3+(N(S().flowchart.htmlLabels)?5:3))+")");const v=r.node().getBBox();return t.height=v.height,t.intersect=function(a){return C(t,a)},n},ot=(e,t)=>{const n=e.insert("g").attr("class",t.classes).attr("id",t.id),r=n.insert("rect",":first-child"),s=0*t.padding,c=s/2;r.attr("class","divider").attr("x",t.x-t.width/2-c).attr("y",t.y-t.height/2).attr("width",t.width+s).attr("height",t.height+s);const d=r.node().getBBox();return t.width=d.width,t.height=d.height,t.diff=-t.padding/2,t.intersect=function(l){return C(t,l)},n},lt={rect:rt,roundedWithTitle:ct,noteGroup:at,divider:ot};let k={};const ft=(e,t)=>{i.trace("Inserting cluster");const n=t.shape||"rect";k[t.id]=lt[n](e,t)},dt=()=>{k={}},$=async(e,t,n,r,s)=>{i.info("Graph in recursive render: XXX",x(t),s);const c=t.graph().rankdir;i.trace("Dir in recursive render - dir:",c);const d=e.insert("g").attr("class","root");t.nodes()?i.info("Recursive render XXX",t.nodes()):i.info("No nodes found for",t),t.edges().length>0&&i.trace("Recursive edges",t.edge(t.edges()[0]));const l=d.insert("g").attr("class","clusters"),u=d.insert("g").attr("class","edgePaths"),h=d.insert("g").attr("class","edgeLabels"),w=d.insert("g").attr("class","nodes");await Promise.all(t.nodes().map(async function(a){const o=t.node(a);if(s!==void 0){const y=JSON.parse(JSON.stringify(s.clusterData));i.info("Setting data for cluster XXX (",a,") ",y,s),t.setNode(s.id,y),t.parent(a)||(i.trace("Setting parent",a,s.id),t.setParent(a,s.id,y))}if(i.info("(Insert) Node XXX"+a+": "+JSON.stringify(t.node(a))),o&&o.clusterNode){i.info("Cluster identified",a,o.width,t.node(a));const y=await $(w,o.graph,n,r,t.node(a)),B=y.elem;_(o,B),o.diff=y.diff||0,i.info("Node bounds (abc123)",a,o,o.width,o.x,o.y),H(B,o),i.warn("Recursive render complete ",B,o)}else t.children(a).length>0?(i.info("Cluster - the non recursive path XXX",a,o.id,o,t),i.info(b(o.id,t)),f[o.id]={id:b(o.id,t),node:o}):(i.info("Node - the non recursive path",a,o.id,o),await V(w,t.node(a),c))})),t.edges().forEach(function(a){const o=t.edge(a.v,a.w,a.name);i.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(a)),i.info("Edge "+a.v+" -> "+a.w+": ",a," ",JSON.stringify(t.edge(a))),i.info("Fix",f,"ids:",a.v,a.w,"Translateing: ",f[a.v],f[a.w]),q(h,o)}),t.edges().forEach(function(a){i.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(a))}),i.info("#############################################"),i.info("### Layout ###"),i.info("#############################################"),i.info(t),A(t),i.info("Graph after layout:",x(t));let v=0;return st(t).forEach(function(a){const o=t.node(a);i.info("Position "+a+": "+JSON.stringify(t.node(a))),i.info("Position "+a+": ("+o.x,","+o.y,") width: ",o.width," height: ",o.height),o&&o.clusterNode?D(o):t.children(a).length>0?(ft(l,o),f[o.id].node=o):D(o)}),t.edges().forEach(function(a){const o=t.edge(a);i.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(o),o);const y=U(u,a,o,f,n,t,r);W(o,y)}),t.nodes().forEach(function(a){const o=t.node(a);i.info(a,o.type,o.diff),o.type==="group"&&(v=o.diff)}),{elem:d,diff:v}},xt=async(e,t,n,r,s)=>{M(e,n,r,s),Y(),z(),dt(),et(),i.warn("Graph at first:",JSON.stringify(x(t))),it(t),i.warn("Graph after:",JSON.stringify(x(t))),await $(e,t,r,s)};export{xt as r}; diff --git a/assets/index.html-0naiiwgW.js b/assets/index.html-2dVuyDsF.js similarity index 76% rename from assets/index.html-0naiiwgW.js rename to assets/index.html-2dVuyDsF.js index 5b27809..f0a72d7 100644 --- a/assets/index.html-0naiiwgW.js +++ b/assets/index.html-2dVuyDsF.js @@ -1 +1 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-2eHJyvoI.js b/assets/index.html-4AoKvxIs.js similarity index 76% rename from assets/index.html-2eHJyvoI.js rename to assets/index.html-4AoKvxIs.js index 5b27809..f0a72d7 100644 --- a/assets/index.html-2eHJyvoI.js +++ b/assets/index.html-4AoKvxIs.js @@ -1 +1 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-QWUIdSew.js b/assets/index.html-573jmd7K.js similarity index 99% rename from assets/index.html-QWUIdSew.js rename to assets/index.html-573jmd7K.js index 52bdda9..72882ff 100644 --- a/assets/index.html-QWUIdSew.js +++ b/assets/index.html-573jmd7K.js @@ -1,4 +1,4 @@ -import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as p,c,a as e,b as i,d as t,w as n,e as r}from"./app-RP31lnfq.js";const u={},h=e("h1",{id:"an-high-performance-enterprise-level-streaming-media-service-framework-based-on-c-11",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#an-high-performance-enterprise-level-streaming-media-service-framework-based-on-c-11","aria-hidden":"true"},"#"),t(" An high-performance, enterprise-level streaming media service framework based on C++11.")],-1),m={href:"https://github.com/ZLMediaKit/ZLMediaKit/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"},g=e("img",{src:"https://img.shields.io/badge/license-MIT-green.svg",alt:"badge",loading:"lazy"},null,-1),b={href:"https://en.cppreference.com/",target:"_blank",rel:"noopener noreferrer"},f=e("img",{src:"https://img.shields.io/badge/language-c++-red.svg",alt:"badge",loading:"lazy"},null,-1),_={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},v=e("img",{src:"https://img.shields.io/badge/platform-linux | macos | windows-blue.svg",alt:"badge",loading:"lazy"},null,-1),S={href:"https://github.com/ZLMediaKit/ZLMediaKit/pulls",target:"_blank",rel:"noopener noreferrer"},k=e("img",{src:"https://img.shields.io/badge/PRs-welcome-yellow.svg",alt:"badge",loading:"lazy"},null,-1),P={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},w=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/android.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),T={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},M=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/linux.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),y={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},R=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/macos.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),L={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},H=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/windows.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),x={href:"https://hub.docker.com/r/zlmediakit/zlmediakit/tags",target:"_blank",rel:"noopener noreferrer"},K=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/docker.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),C={href:"https://hub.docker.com/r/zlmediakit/zlmediakit/tags",target:"_blank",rel:"noopener noreferrer"},Z=e("img",{src:"https://img.shields.io/docker/pulls/zlmediakit/zlmediakit",alt:"badge",loading:"lazy"},null,-1),A=e("h2",{id:"project-features",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#project-features","aria-hidden":"true"},"#"),t(" Project Features")],-1),z=e("li",null,"Developed with C++11, avoiding the use of raw pointers, providing stable and reliable code with superior performance.",-1),I=e("li",null,"Supports multiple protocols (RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC), and protocol conversion.",-1),O=e("li",null,"Developed with multiplexing/multithreading/asynchronous network IO models, providing excellent concurrency performance and supporting massive client connections.",-1),E=e("li",null,"The code has undergone extensive stability and performance testing, and has been extensively used in production environments.",-1),W=e("li",null,"Supports all major platforms, including linux, macos, ios, android, and windows.",-1),G=e("li",null,"Supports multiple instruction set platforms, such as x86, arm, risc-v, mips, Loongson, and Shenwei.",-1),F={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/api/include",target:"_blank",rel:"noopener noreferrer"},U={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/server",target:"_blank",rel:"noopener noreferrer"},D=e("li",null,"Bridges the video surveillance protocol stack and the live streaming protocol stack, and provides comprehensive support for RTSP/RTMP.",-1),V=e("li",null,"Fully supports H265/H264/AAC/G711/OPUS.",-1),j=e("li",null,"Provides complete functions, including clustering, on-demand protocol conversion, on-demand push/pull streams, playback before publishing, and continuous publishing after disconnection.",-1),N=e("li",null,"Provides ultimate performance, supporting 10W-level players on a single machine and 100Gb/s-level IO bandwidth capability.",-1),B={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/511",target:"_blank",rel:"noopener noreferrer"},q=e("li",null,"Fully supports IPv6 networks.",-1),Q=r('

                  Project Positioning

                  • Cross-platform streaming media solution for mobile and embedded systems.
                  • Commercial-grade streaming media server.
                  • Network programming secondary development SDK.

                  Feature List

                  Overview of Features

                  ',4),Y=r("
                • RTSP[S]

                  • RTSP[S] server, supports RTMP/MP4/HLS to RTSP[S] conversion, supports devices such as Amazon Echo Show
                  • RTSP[S] player, supports RTSP proxy, supports generating silent audio
                  • RTSP[S] push client and server
                  • Supports four RTP transmission modes: rtp over udp rtp over tcp rtp over http rtp multicast
                  • Server/client fully supports Basic/Digest authentication, asynchronous configurable authentication interface
                  • Supports H265 encoding
                  • The server supports RTSP pushing (including rtp over udp and rtp over tcp)
                  • Supports H264/H265/AAC/G711/OPUS/MJPEG encoding. Other encodings can be forwarded but cannot be converted to protocol
                • ",1),J=e("p",null,"RTMP[S]",-1),X=e("li",null,"RTMP[S] playback server, supports RTSP/MP4/HLS to RTMP conversion",-1),$=e("li",null,"RTMP[S] publishing server, supports recording and publishing streams",-1),ee=e("li",null,"RTMP[S] player, supports RTMP proxy, supports generating silent audio",-1),te=e("li",null,"RTMP[S] push client",-1),ie=e("li",null,"Supports http[s]-flv live streaming server",-1),oe=e("li",null,"Supports http[s]-flv live streaming player",-1),se=e("li",null,"Supports websocket-flv live streaming",-1),ne=e("li",null,"Supports H264/H265/AAC/G711/OPUS encoding. Other encodings can be forwarded but cannot be converted to protocol",-1),re={href:"https://github.com/ksvc/FFmpeg/wiki",target:"_blank",rel:"noopener noreferrer"},ae={href:"https://github.com/veovera/enhanced-rtmp",target:"_blank",rel:"noopener noreferrer"},le=r("
                • HLS

                  • Supports HLS file(mpegts/fmp4) generation and comes with an HTTP file server
                  • Through cookie tracking technology, it can simulate HLS playback as a long connection, which can achieve HLS on-demand pulling, playback statistics, and other businesses
                  • Supports HLS player and can pull HLS to rtsp/rtmp/mp4
                  • Supports H264/H265/AAC/G711/OPUS encoding
                • TS

                  • Supports http[s]-ts live streaming
                  • Supports ws[s]-ts live streaming
                  • Supports H264/H265/AAC/G711/OPUS encoding
                • fMP4

                  • Supports http[s]-fmp4 live streaming
                  • Supports ws[s]-fmp4 live streaming
                  • Supports H264/H265/AAC/G711/OPUS/MJPEG encoding
                • http[s] and WebSocket

                  • The server supports directory index generation, file download, form submission requests
                  • The client provides file downloader (supports resume breakpoint), interface requestor, file uploader
                  • Complete HTTP API server, which can be used as a web backend development framework
                  • Supports cross-domain access
                  • Supports http client/server cookie
                  • Supports WebSocket server and client
                  • Supports http file access authentication
                • GB28181 and RTP Streaming

                  • Supports UDP/TCP RTP (PS/TS/ES) streaming server, which can be converted to RTSP/RTMP/HLS and other protocols
                  • Supports RTSP/RTMP/HLS and other protocol conversion to RTP streaming client, supports TCP/UDP mode, provides corresponding RESTful API, supports active and passive modes
                  • Supports H264/H265/AAC/G711/OPUS encoding
                  • Supports ES/PS/TS/EHOME RTP streaming
                  • Supports ES/PS RTP forwarding
                  • Supports GB28181 active pull mode
                  • Supports two-way voice intercom
                • MP4 VOD and Recording

                  • Supports recording as FLV/HLS/MP4
                  • Supports MP4 file playback for RTSP/RTMP/HTTP-FLV/WS-FLV, supports seek
                  • Supports H264/H265/AAC/G711/OPUS encoding
                • WebRTC

                  • Supports WebRTC streaming and conversion to other protocols
                  • Supports WebRTC playback and conversion from other protocols to WebRTC
                  • Supports two-way echo testing
                  • Supports simulcast streaming
                  • Supports uplink and downlink RTX/NACK packet loss retransmission
                  • Supports single-port, multi-threaded, and client network connection migration (unique in the open source community).
                  • Supports TWCC RTCP dynamic rate control
                  • Supports REMB/PLI/SR/RR RTCP
                  • Supports RTP extension parsing
                  • Supports GOP buffer and instant WebRTC playback
                  • Supports data channels
                  • Supports WebRTC over TCP mode
                  • Excellent NACK and jitter buffer algorithms with outstanding packet loss resistance
                  • Supports WHIP/WHEP protocols
                • ",7),de=r("
                • Others

                  • Supports rich RESTful APIs and webhook events
                  • Supports simple Telnet debugging
                  • Supports hot reloading of configuration files
                  • Supports traffic statistics, stream authentication, and other events
                  • Supports virtual hosts for isolating different domain names
                  • Supports on-demand streaming and automatic shutdown of streams with no viewers
                  • Supports pre-play before streaming to increase the rate of timely stream openings
                  • Provides a complete and powerful C API SDK
                  • Supports FFmpeg stream proxy for any format
                  • Supports HTTP API for real-time screenshot generation and return
                  • Supports on-demand demultiplexing and protocol conversion, reducing CPU usage by only enabling it when someone is watching
                  • Supports cluster deployment in traceable mode, with RTSP/RTMP/HLS/HTTP-TS support for traceable mode and HLS support for edge stations and multiple sources for source stations (using round-robin tracing)
                  • Can reconnect to streaming after abnormal disconnection in RTSP/RTMP/WebRTC pushing within a timeout period, with no impact on the player.
                • ",1),pe=e("h2",{id:"how-to-build",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#how-to-build","aria-hidden":"true"},"#"),t(" How to build")],-1),ce=e("h2",{id:"how-to-use",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#how-to-use","aria-hidden":"true"},"#"),t(" How to use")],-1),ue=e("p",null,"You have three ways to use ZLMediaKit, namely:",-1),he={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/api/include",target:"_blank",rel:"noopener noreferrer"},me={start:"2"},ge=e("li",null,[e("ol",{start:"3"},[e("li",null,"If you want to do c/c++ development and add business logic to increase functions, you can refer to the [test program] here (https://github.com/ZLMediaKit/ZLMediaKit/tree/master/tests).")])],-1),be=r(`

                  Docker image

                  You can download the compiled image from Docker Hub and start it:

                  #This image is automatically compiled and pushed for github continuous integration, keeping it up to date with the code (master branch)
                  +import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as p,c,a as e,b as i,d as t,w as n,e as r}from"./app-0NopiYEV.js";const u={},h=e("h1",{id:"an-high-performance-enterprise-level-streaming-media-service-framework-based-on-c-11",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#an-high-performance-enterprise-level-streaming-media-service-framework-based-on-c-11","aria-hidden":"true"},"#"),t(" An high-performance, enterprise-level streaming media service framework based on C++11.")],-1),m={href:"https://github.com/ZLMediaKit/ZLMediaKit/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"},g=e("img",{src:"https://img.shields.io/badge/license-MIT-green.svg",alt:"badge",loading:"lazy"},null,-1),b={href:"https://en.cppreference.com/",target:"_blank",rel:"noopener noreferrer"},f=e("img",{src:"https://img.shields.io/badge/language-c++-red.svg",alt:"badge",loading:"lazy"},null,-1),_={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},v=e("img",{src:"https://img.shields.io/badge/platform-linux | macos | windows-blue.svg",alt:"badge",loading:"lazy"},null,-1),S={href:"https://github.com/ZLMediaKit/ZLMediaKit/pulls",target:"_blank",rel:"noopener noreferrer"},k=e("img",{src:"https://img.shields.io/badge/PRs-welcome-yellow.svg",alt:"badge",loading:"lazy"},null,-1),P={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},w=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/android.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),T={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},M=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/linux.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),y={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},R=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/macos.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),L={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},H=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/windows.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),x={href:"https://hub.docker.com/r/zlmediakit/zlmediakit/tags",target:"_blank",rel:"noopener noreferrer"},K=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/docker.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),C={href:"https://hub.docker.com/r/zlmediakit/zlmediakit/tags",target:"_blank",rel:"noopener noreferrer"},Z=e("img",{src:"https://img.shields.io/docker/pulls/zlmediakit/zlmediakit",alt:"badge",loading:"lazy"},null,-1),A=e("h2",{id:"project-features",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#project-features","aria-hidden":"true"},"#"),t(" Project Features")],-1),z=e("li",null,"Developed with C++11, avoiding the use of raw pointers, providing stable and reliable code with superior performance.",-1),I=e("li",null,"Supports multiple protocols (RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC), and protocol conversion.",-1),O=e("li",null,"Developed with multiplexing/multithreading/asynchronous network IO models, providing excellent concurrency performance and supporting massive client connections.",-1),E=e("li",null,"The code has undergone extensive stability and performance testing, and has been extensively used in production environments.",-1),W=e("li",null,"Supports all major platforms, including linux, macos, ios, android, and windows.",-1),G=e("li",null,"Supports multiple instruction set platforms, such as x86, arm, risc-v, mips, Loongson, and Shenwei.",-1),F={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/api/include",target:"_blank",rel:"noopener noreferrer"},U={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/server",target:"_blank",rel:"noopener noreferrer"},D=e("li",null,"Bridges the video surveillance protocol stack and the live streaming protocol stack, and provides comprehensive support for RTSP/RTMP.",-1),V=e("li",null,"Fully supports H265/H264/AAC/G711/OPUS.",-1),j=e("li",null,"Provides complete functions, including clustering, on-demand protocol conversion, on-demand push/pull streams, playback before publishing, and continuous publishing after disconnection.",-1),N=e("li",null,"Provides ultimate performance, supporting 10W-level players on a single machine and 100Gb/s-level IO bandwidth capability.",-1),B={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/511",target:"_blank",rel:"noopener noreferrer"},q=e("li",null,"Fully supports IPv6 networks.",-1),Q=r('

                  Project Positioning

                  • Cross-platform streaming media solution for mobile and embedded systems.
                  • Commercial-grade streaming media server.
                  • Network programming secondary development SDK.

                  Feature List

                  Overview of Features

                  ',4),Y=r("
                • RTSP[S]

                  • RTSP[S] server, supports RTMP/MP4/HLS to RTSP[S] conversion, supports devices such as Amazon Echo Show
                  • RTSP[S] player, supports RTSP proxy, supports generating silent audio
                  • RTSP[S] push client and server
                  • Supports four RTP transmission modes: rtp over udp rtp over tcp rtp over http rtp multicast
                  • Server/client fully supports Basic/Digest authentication, asynchronous configurable authentication interface
                  • Supports H265 encoding
                  • The server supports RTSP pushing (including rtp over udp and rtp over tcp)
                  • Supports H264/H265/AAC/G711/OPUS/MJPEG encoding. Other encodings can be forwarded but cannot be converted to protocol
                • ",1),J=e("p",null,"RTMP[S]",-1),X=e("li",null,"RTMP[S] playback server, supports RTSP/MP4/HLS to RTMP conversion",-1),$=e("li",null,"RTMP[S] publishing server, supports recording and publishing streams",-1),ee=e("li",null,"RTMP[S] player, supports RTMP proxy, supports generating silent audio",-1),te=e("li",null,"RTMP[S] push client",-1),ie=e("li",null,"Supports http[s]-flv live streaming server",-1),oe=e("li",null,"Supports http[s]-flv live streaming player",-1),se=e("li",null,"Supports websocket-flv live streaming",-1),ne=e("li",null,"Supports H264/H265/AAC/G711/OPUS encoding. Other encodings can be forwarded but cannot be converted to protocol",-1),re={href:"https://github.com/ksvc/FFmpeg/wiki",target:"_blank",rel:"noopener noreferrer"},ae={href:"https://github.com/veovera/enhanced-rtmp",target:"_blank",rel:"noopener noreferrer"},le=r("
                • HLS

                  • Supports HLS file(mpegts/fmp4) generation and comes with an HTTP file server
                  • Through cookie tracking technology, it can simulate HLS playback as a long connection, which can achieve HLS on-demand pulling, playback statistics, and other businesses
                  • Supports HLS player and can pull HLS to rtsp/rtmp/mp4
                  • Supports H264/H265/AAC/G711/OPUS encoding
                • TS

                  • Supports http[s]-ts live streaming
                  • Supports ws[s]-ts live streaming
                  • Supports H264/H265/AAC/G711/OPUS encoding
                • fMP4

                  • Supports http[s]-fmp4 live streaming
                  • Supports ws[s]-fmp4 live streaming
                  • Supports H264/H265/AAC/G711/OPUS/MJPEG encoding
                • http[s] and WebSocket

                  • The server supports directory index generation, file download, form submission requests
                  • The client provides file downloader (supports resume breakpoint), interface requestor, file uploader
                  • Complete HTTP API server, which can be used as a web backend development framework
                  • Supports cross-domain access
                  • Supports http client/server cookie
                  • Supports WebSocket server and client
                  • Supports http file access authentication
                • GB28181 and RTP Streaming

                  • Supports UDP/TCP RTP (PS/TS/ES) streaming server, which can be converted to RTSP/RTMP/HLS and other protocols
                  • Supports RTSP/RTMP/HLS and other protocol conversion to RTP streaming client, supports TCP/UDP mode, provides corresponding RESTful API, supports active and passive modes
                  • Supports H264/H265/AAC/G711/OPUS encoding
                  • Supports ES/PS/TS/EHOME RTP streaming
                  • Supports ES/PS RTP forwarding
                  • Supports GB28181 active pull mode
                  • Supports two-way voice intercom
                • MP4 VOD and Recording

                  • Supports recording as FLV/HLS/MP4
                  • Supports MP4 file playback for RTSP/RTMP/HTTP-FLV/WS-FLV, supports seek
                  • Supports H264/H265/AAC/G711/OPUS encoding
                • WebRTC

                  • Supports WebRTC streaming and conversion to other protocols
                  • Supports WebRTC playback and conversion from other protocols to WebRTC
                  • Supports two-way echo testing
                  • Supports simulcast streaming
                  • Supports uplink and downlink RTX/NACK packet loss retransmission
                  • Supports single-port, multi-threaded, and client network connection migration (unique in the open source community).
                  • Supports TWCC RTCP dynamic rate control
                  • Supports REMB/PLI/SR/RR RTCP
                  • Supports RTP extension parsing
                  • Supports GOP buffer and instant WebRTC playback
                  • Supports data channels
                  • Supports WebRTC over TCP mode
                  • Excellent NACK and jitter buffer algorithms with outstanding packet loss resistance
                  • Supports WHIP/WHEP protocols
                • ",7),de=r("
                • Others

                  • Supports rich RESTful APIs and webhook events
                  • Supports simple Telnet debugging
                  • Supports hot reloading of configuration files
                  • Supports traffic statistics, stream authentication, and other events
                  • Supports virtual hosts for isolating different domain names
                  • Supports on-demand streaming and automatic shutdown of streams with no viewers
                  • Supports pre-play before streaming to increase the rate of timely stream openings
                  • Provides a complete and powerful C API SDK
                  • Supports FFmpeg stream proxy for any format
                  • Supports HTTP API for real-time screenshot generation and return
                  • Supports on-demand demultiplexing and protocol conversion, reducing CPU usage by only enabling it when someone is watching
                  • Supports cluster deployment in traceable mode, with RTSP/RTMP/HLS/HTTP-TS support for traceable mode and HLS support for edge stations and multiple sources for source stations (using round-robin tracing)
                  • Can reconnect to streaming after abnormal disconnection in RTSP/RTMP/WebRTC pushing within a timeout period, with no impact on the player.
                • ",1),pe=e("h2",{id:"how-to-build",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#how-to-build","aria-hidden":"true"},"#"),t(" How to build")],-1),ce=e("h2",{id:"how-to-use",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#how-to-use","aria-hidden":"true"},"#"),t(" How to use")],-1),ue=e("p",null,"You have three ways to use ZLMediaKit, namely:",-1),he={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/api/include",target:"_blank",rel:"noopener noreferrer"},me={start:"2"},ge=e("li",null,[e("ol",{start:"3"},[e("li",null,"If you want to do c/c++ development and add business logic to increase functions, you can refer to the [test program] here (https://github.com/ZLMediaKit/ZLMediaKit/tree/master/tests).")])],-1),be=r(`

                  Docker image

                  You can download the compiled image from Docker Hub and start it:

                  #This image is automatically compiled and pushed for github continuous integration, keeping it up to date with the code (master branch)
                   docker run -id -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp zlmediakit/zlmediakit:master
                   

                  You can also compile the image according to the Dockerfile:

                  bash build_docker_images.sh
                   
                  `,5);function fe(_e,ve){const o=a("ExternalLinkIcon"),s=a("RouterLink"),l=a("Mermaid");return p(),c("div",null,[h,e("p",null,[e("a",m,[g,i(o)]),e("a",b,[f,i(o)]),e("a",_,[v,i(o)]),e("a",S,[k,i(o)])]),e("p",null,[e("a",P,[w,i(o)]),e("a",T,[M,i(o)]),e("a",y,[R,i(o)]),e("a",L,[H,i(o)])]),e("p",null,[e("a",x,[K,i(o)]),e("a",C,[Z,i(o)])]),A,e("ul",null,[z,I,O,E,W,G,e("li",null,[t("Provides ultra-fast startup, extremely low latency ("),i(s,{to:"/reference/test/delay_test.html"},{default:n(()=>[t("within 500 milliseconds, and can be as low as 100 milliseconds")]),_:1}),t("), and excellent user experience.")]),e("li",null,[t("Provides a comprehensive standard "),e("a",F,[t("C API"),i(o)]),t(" that can be used as an SDK or called by other languages.")]),e("li",null,[t("Provides a complete "),e("a",U,[t("MediaServer"),i(o)]),t(" server, which can be deployed directly as a commercial server without additional development.")]),e("li",null,[t("Provides a complete "),i(s,{to:"/guide/media_server/restful_api.html"},{default:n(()=>[t("restful api")]),_:1}),t(" and "),i(s,{to:"/guide/media_server/web_hook_api.html"},{default:n(()=>[t("web hook")]),_:1}),t(", supporting rich business logic.")]),D,V,j,N,e("li",null,[t("Provides ultimate user experience with "),i(s,{to:"/reference/documents/exclusive_features.html"},{default:n(()=>[t("exclusive features")]),_:1}),t(".")]),e("li",null,[e("a",B,[t("Who is using zlmediakit?"),i(o)])]),q]),Q,i(l,{id:"mermaid-128",code:"eJx1k99PgzAQx9/3V/QRH4jR+GB8MGHQyTKQhnYz2iwLYcyRzLGwTmOc/7vXH9BNGAn0eve5b69H67ruQJRiUzygUZGJQ13sB9K32lRf+TqrBWLBAMHj8ZTFZI5c9/FIpjRESYrINIqOaOiMt3n1UW7f0V7URaasXV2JKq82VzpZZtP+bAN4PGSMuIxeq3EUza7DiDYZZ6RBY3LXDT8Nb+9v7m+4Ge2KDfCChynzuR66YZoyDm83gMMkxlx9u8HxM5myRcJCnPJErIu63b+tEM3GHhqNYoKfmrShDCL/5y2Ki2WZTUrxq/y+9Ac8OYjdQfQ0da6oQGXLMihLsRfzVfawytw8qxE57Nc2z+BAQ8tS7Cdp4ICF6iKv6iUA+idJQLeFRN6ro00TkktF4xk2K0XlZ2H0rTi0TSXCiHab7NuqzpLAgVc7rAxE5Klw5AdJyR4AzsFCOhwwLjFwTjQDhjpAMECf7y7xzOCMXlwVss2y5zq226b4hfSoHfQCcQvEfYA5pZoxE401+25VTiROYvIiLOScOM216TDwI2niTzAzYDu3tOlIIwhTo8fof8CqKcqKNWjbu7Y86WjqA7uLnVSo2ZMSVcIfdihA0w=="}),e("ul",null,[Y,e("li",null,[J,e("ul",null,[X,$,ee,te,ie,oe,se,ne,e("li",null,[t("Supports "),e("a",re,[t("RTMP-H265"),i(o)])]),e("li",null,[t("Supports "),i(s,{to:"/reference/resources/rtmp_support_for_h265_and_opus.html"},{default:n(()=>[t("RTMP-OPUS")]),_:1})]),e("li",null,[t("Supports "),e("a",ae,[t("enhanced-rtmp(H265)"),i(o)])])])]),le,e("li",null,[e("p",null,[i(s,{to:"/guide/protocol/srt/"},{default:n(()=>[t("SRT support")]),_:1})])]),de]),pe,e("p",null,[t("It is recommended to compile on Ubuntu or macOS. Compiling on Windows is cumbersome, and some features are not compiled by default. "),i(s,{to:"/tutorial/"},{default:n(()=>[t("For details, please refer to Quick Start")]),_:1})]),ce,ue,e("ul",null,[e("li",null,[e("ol",null,[e("li",null,[t("Use c api as sdk, please refer to "),e("a",he,[t("here"),i(o)]),t(".")])])]),e("li",null,[e("ol",me,[e("li",null,[t("Used as an independent streaming media server. If you don’t want to do c/c++ development, you can refer to "),i(s,{to:"/guide/media_server/restful_api.html"},{default:n(()=>[t("restful api")]),_:1}),t(" and "),i(s,{to:"/guide/media_server/web_hook_api.html"},{default:n(()=>[t("web hook")]),_:1}),t(".")])])]),ge]),be])}const Pe=d(u,[["render",fe],["__file","index.html.vue"]]);export{Pe as default}; diff --git a/assets/index.html-4Ee7DNZI.js b/assets/index.html-7fV02DDU.js similarity index 76% rename from assets/index.html-4Ee7DNZI.js rename to assets/index.html-7fV02DDU.js index 5b27809..f0a72d7 100644 --- a/assets/index.html-4Ee7DNZI.js +++ b/assets/index.html-7fV02DDU.js @@ -1 +1 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-7ixsX_gh.js b/assets/index.html-7ixsX_gh.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-7ixsX_gh.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-6BkT17JO.js b/assets/index.html-7yq99xxh.js similarity index 76% rename from assets/index.html-6BkT17JO.js rename to assets/index.html-7yq99xxh.js index 5b27809..f0a72d7 100644 --- a/assets/index.html-6BkT17JO.js +++ b/assets/index.html-7yq99xxh.js @@ -1 +1 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-8LlBfneP.js b/assets/index.html-8LlBfneP.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-8LlBfneP.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-H30PqyAG.js b/assets/index.html-DgVFBk67.js similarity index 99% rename from assets/index.html-H30PqyAG.js rename to assets/index.html-DgVFBk67.js index a3dda22..c1bd30e 100644 --- a/assets/index.html-H30PqyAG.js +++ b/assets/index.html-DgVFBk67.js @@ -1,4 +1,4 @@ -import{_ as u}from"./vs_code_zh-ltEPcFYF.js";import{_ as r}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as p,c as v,f as m,a as e,d as s,b as l,w as n,e as b}from"./app-RP31lnfq.js";const h={},_=e("p",null,"本教程将指导您完成编译和运行 ZLMediaKit。",-1),k=e("h2",{id:"构建环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#构建环境","aria-hidden":"true"},"#"),s(" 构建环境")],-1),g=e("div",{class:"hint-container tip"},[e("p",{class:"hint-container-title"},"新手提示"),e("p",null,"如果你是位新手,强烈建议使用 Ubuntu16 以上版本编译 ZLMediaKit,macOS 是次选推荐平台。不推荐使用 CentOS6.x 或 windows 构建与使用。")],-1),f={class:"hint-container info"},x=e("p",{class:"hint-container-title"},"vcpkg",-1),A=e("h3",{id:"支持-c-11-的编译器",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#支持-c-11-的编译器","aria-hidden":"true"},"#"),s(" 支持 C++11 的编译器")],-1),S=e("p",null,"ZLMediaKit 采用了 C++11 的语法和库,要求编译器支持完整的 C++11 标准:",-1),w=e("ul",null,[e("li",null,"Linux: gcc >= 4.8 (4.7 应该也能支持)"),e("li",null,"macOS: Clang >= ??? (我也不知道,估计大部分不会遇到这个问题)"),e("li",null,"Windows: Visual Studio >= 2015 (vs2013 某些版本也能编译通过,如果怕麻烦建议直接 vs2017)")],-1),L=e("div",{class:"language-bash line-numbers-mode","data-ext":"sh"},[e("pre",{class:"language-bash"},[e("code",null,[e("span",{class:"token function"},"sudo"),s(),e("span",{class:"token function"},"apt"),s(),e("span",{class:"token function"},"install"),s(` build-essential +import{_ as u}from"./vs_code_zh-ltEPcFYF.js";import{_ as r}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as p,c as v,f as m,a as e,d as s,b as l,w as n,e as b}from"./app-0NopiYEV.js";const h={},_=e("p",null,"本教程将指导您完成编译和运行 ZLMediaKit。",-1),k=e("h2",{id:"构建环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#构建环境","aria-hidden":"true"},"#"),s(" 构建环境")],-1),g=e("div",{class:"hint-container tip"},[e("p",{class:"hint-container-title"},"新手提示"),e("p",null,"如果你是位新手,强烈建议使用 Ubuntu16 以上版本编译 ZLMediaKit,macOS 是次选推荐平台。不推荐使用 CentOS6.x 或 windows 构建与使用。")],-1),f={class:"hint-container info"},x=e("p",{class:"hint-container-title"},"vcpkg",-1),A=e("h3",{id:"支持-c-11-的编译器",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#支持-c-11-的编译器","aria-hidden":"true"},"#"),s(" 支持 C++11 的编译器")],-1),S=e("p",null,"ZLMediaKit 采用了 C++11 的语法和库,要求编译器支持完整的 C++11 标准:",-1),w=e("ul",null,[e("li",null,"Linux: gcc >= 4.8 (4.7 应该也能支持)"),e("li",null,"macOS: Clang >= ??? (我也不知道,估计大部分不会遇到这个问题)"),e("li",null,"Windows: Visual Studio >= 2015 (vs2013 某些版本也能编译通过,如果怕麻烦建议直接 vs2017)")],-1),L=e("div",{class:"language-bash line-numbers-mode","data-ext":"sh"},[e("pre",{class:"language-bash"},[e("code",null,[e("span",{class:"token function"},"sudo"),s(),e("span",{class:"token function"},"apt"),s(),e("span",{class:"token function"},"install"),s(` build-essential `)])]),e("div",{class:"line-numbers","aria-hidden":"true"},[e("div",{class:"line-number"})])],-1),M=e("div",{class:"language-bash line-numbers-mode","data-ext":"sh"},[e("pre",{class:"language-bash"},[e("code",null,[e("span",{class:"token function"},"sudo"),s(" yum "),e("span",{class:"token parameter variable"},"-y"),s(),e("span",{class:"token function"},"install"),s(` gcc `),e("span",{class:"token function"},"sudo"),s(" yum "),e("span",{class:"token parameter variable"},"-y"),s(),e("span",{class:"token function"},"install"),s(` gcc-c++ `)])]),e("div",{class:"line-numbers","aria-hidden":"true"},[e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1),O=e("p",null,"需要手动切换到高版本 gcc。",-1),K=e("div",{class:"language-bash line-numbers-mode","data-ext":"sh"},[e("pre",{class:"language-bash"},[e("code",null,[e("span",{class:"token function"},"sudo"),s(" yum "),e("span",{class:"token function"},"install"),s(" centos-release-scl "),e("span",{class:"token parameter variable"},"-y"),s(` diff --git a/assets/index.html-DoJnvppU.js b/assets/index.html-DoJnvppU.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-DoJnvppU.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html--S0MBGJo.js b/assets/index.html-DydUlsO3.js similarity index 95% rename from assets/index.html--S0MBGJo.js rename to assets/index.html-DydUlsO3.js index 658d6d4..da7eea9 100644 --- a/assets/index.html--S0MBGJo.js +++ b/assets/index.html-DydUlsO3.js @@ -1,4 +1,4 @@ -import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as a,c as n,a as e,d as t,b as r,e as d}from"./app-RP31lnfq.js";const o={},c=e("h2",{id:"特性",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#特性","aria-hidden":"true"},"#"),t(" 特性")],-1),p=e("li",null,"NACK(重传)",-1),m=e("li",null,"listener 支持",-1),h=e("li",null,"推流只支持 ts 推流",-1),u=e("li",null,"拉流只支持 ts 拉流",-1),v={href:"https://haivision.github.io/srt-rfc/draft-sharabayko-srt.html",target:"_blank",rel:"noopener noreferrer"},_=e("li",null,"版本支持(>=1.3.0)",-1),f=e("li",null,"fec 与加密没有实现",-1),b=d(`

                  使用

                  zlm 中的 srt 根据 streamid 来确定是推流还是拉流,来确定 vhost,app,streamid(ZLM 中的)、

                  srt 中的 streamid 为 #!::key1=value1,key2=value2,key3=value4......

                  h,r 为特殊的 key,来确定 vhost,app,streamid,如果没有 h 则 vhost 为默认值

                  m 为特殊 key 来确定是推流还是拉流,如果为 publish 则为推流,否则为拉流 ,如果不存在 m,则默认为拉流

                  其他 key 与 m 会作为 webhook 的鉴权参数

                  如:

                  #!::h=zlmediakit.com,r=live/test,m=publish
                  +import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as a,c as n,a as e,d as t,b as r,e as d}from"./app-0NopiYEV.js";const o={},c=e("h2",{id:"特性",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#特性","aria-hidden":"true"},"#"),t(" 特性")],-1),p=e("li",null,"NACK(重传)",-1),m=e("li",null,"listener 支持",-1),h=e("li",null,"推流只支持 ts 推流",-1),u=e("li",null,"拉流只支持 ts 拉流",-1),v={href:"https://haivision.github.io/srt-rfc/draft-sharabayko-srt.html",target:"_blank",rel:"noopener noreferrer"},_=e("li",null,"版本支持(>=1.3.0)",-1),f=e("li",null,"fec 与加密没有实现",-1),b=d(`

                  使用

                  zlm 中的 srt 根据 streamid 来确定是推流还是拉流,来确定 vhost,app,streamid(ZLM 中的)、

                  srt 中的 streamid 为 #!::key1=value1,key2=value2,key3=value4......

                  h,r 为特殊的 key,来确定 vhost,app,streamid,如果没有 h 则 vhost 为默认值

                  m 为特殊 key 来确定是推流还是拉流,如果为 publish 则为推流,否则为拉流 ,如果不存在 m,则默认为拉流

                  其他 key 与 m 会作为 webhook 的鉴权参数

                  如:

                  #!::h=zlmediakit.com,r=live/test,m=publish
                   
                   vhost = zlmediakit.com
                   
                  diff --git a/assets/index.html-ENKK1Hev.js b/assets/index.html-ENKK1Hev.js
                  deleted file mode 100644
                  index 5b27809..0000000
                  --- a/assets/index.html-ENKK1Hev.js
                  +++ /dev/null
                  @@ -1 +0,0 @@
                  -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-Eqzq89B-.js b/assets/index.html-Eqzq89B-.js
                  deleted file mode 100644
                  index 5b27809..0000000
                  --- a/assets/index.html-Eqzq89B-.js
                  +++ /dev/null
                  @@ -1 +0,0 @@
                  -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-GZbomDA_.js b/assets/index.html-GZbomDA_.js
                  new file mode 100644
                  index 0000000..f0a72d7
                  --- /dev/null
                  +++ b/assets/index.html-GZbomDA_.js
                  @@ -0,0 +1 @@
                  +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-HA6yUssK.js b/assets/index.html-HA6yUssK.js
                  deleted file mode 100644
                  index 5b27809..0000000
                  --- a/assets/index.html-HA6yUssK.js
                  +++ /dev/null
                  @@ -1 +0,0 @@
                  -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-HbKwkAxu.js b/assets/index.html-HbKwkAxu.js
                  new file mode 100644
                  index 0000000..f0a72d7
                  --- /dev/null
                  +++ b/assets/index.html-HbKwkAxu.js
                  @@ -0,0 +1 @@
                  +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-PSYc6CNH.js b/assets/index.html-HuxOwQjj.js
                  similarity index 71%
                  rename from assets/index.html-PSYc6CNH.js
                  rename to assets/index.html-HuxOwQjj.js
                  index 42c57c6..355847a 100644
                  --- a/assets/index.html-PSYc6CNH.js
                  +++ b/assets/index.html-HuxOwQjj.js
                  @@ -1 +1 @@
                  -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-RP31lnfq.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default};
                  +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-0NopiYEV.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default};
                  diff --git a/assets/index.html-LT2IW6gc.js b/assets/index.html-LT2IW6gc.js
                  deleted file mode 100644
                  index 5b27809..0000000
                  --- a/assets/index.html-LT2IW6gc.js
                  +++ /dev/null
                  @@ -1 +0,0 @@
                  -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-Me4eXu-C.js b/assets/index.html-Me4eXu-C.js
                  deleted file mode 100644
                  index 5b27809..0000000
                  --- a/assets/index.html-Me4eXu-C.js
                  +++ /dev/null
                  @@ -1 +0,0 @@
                  -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-NSMe4qAg.js b/assets/index.html-NSMe4qAg.js
                  deleted file mode 100644
                  index 5b27809..0000000
                  --- a/assets/index.html-NSMe4qAg.js
                  +++ /dev/null
                  @@ -1 +0,0 @@
                  -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-O3xmvgtm.js b/assets/index.html-O3xmvgtm.js
                  new file mode 100644
                  index 0000000..f0a72d7
                  --- /dev/null
                  +++ b/assets/index.html-O3xmvgtm.js
                  @@ -0,0 +1 @@
                  +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-Q3P2N4-E.js b/assets/index.html-Q3P2N4-E.js
                  new file mode 100644
                  index 0000000..f0a72d7
                  --- /dev/null
                  +++ b/assets/index.html-Q3P2N4-E.js
                  @@ -0,0 +1 @@
                  +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-QokpAUdW.js b/assets/index.html-QokpAUdW.js
                  new file mode 100644
                  index 0000000..f0a72d7
                  --- /dev/null
                  +++ b/assets/index.html-QokpAUdW.js
                  @@ -0,0 +1 @@
                  +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-TjtRd5xp.js b/assets/index.html-TjtRd5xp.js
                  deleted file mode 100644
                  index 5b27809..0000000
                  --- a/assets/index.html-TjtRd5xp.js
                  +++ /dev/null
                  @@ -1 +0,0 @@
                  -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-V4YkyuJV.js b/assets/index.html-V4YkyuJV.js
                  deleted file mode 100644
                  index 5b27809..0000000
                  --- a/assets/index.html-V4YkyuJV.js
                  +++ /dev/null
                  @@ -1 +0,0 @@
                  -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default};
                  diff --git a/assets/index.html-bHaf1eq-.js b/assets/index.html-WES3IN89.js
                  similarity index 99%
                  rename from assets/index.html-bHaf1eq-.js
                  rename to assets/index.html-WES3IN89.js
                  index b39972b..77d2a4b 100644
                  --- a/assets/index.html-bHaf1eq-.js
                  +++ b/assets/index.html-WES3IN89.js
                  @@ -1,4 +1,4 @@
                  -import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as c,c as h,a as e,b as l,d as i,w as s,e as o}from"./app-RP31lnfq.js";const p={},u=e("h2",{id:"一个基于-c-11-的高性能运营级流媒体服务框架",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一个基于-c-11-的高性能运营级流媒体服务框架","aria-hidden":"true"},"#"),i(" 一个基于 C++11 的高性能运营级流媒体服务框架")],-1),_={href:"https://github.com/ZLMediaKit/ZLMediaKit/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"},m=e("img",{src:"https://img.shields.io/badge/license-MIT-green.svg",alt:"badge",loading:"lazy"},null,-1),b={href:"https://en.cppreference.com/",target:"_blank",rel:"noopener noreferrer"},g=e("img",{src:"https://img.shields.io/badge/language-c++-red.svg",alt:"badge",loading:"lazy"},null,-1),f={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},k=e("img",{src:"https://img.shields.io/badge/platform-linux | macos | windows-blue.svg",alt:"badge",loading:"lazy"},null,-1),M={href:"https://github.com/ZLMediaKit/ZLMediaKit/pulls",target:"_blank",rel:"noopener noreferrer"},S=e("img",{src:"https://img.shields.io/badge/PRs-welcome-yellow.svg",alt:"badge",loading:"lazy"},null,-1),T={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},P=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/android.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),L={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},v=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/linux.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),R={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},w=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/macos.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),H={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},K=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/windows.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),Z={href:"https://hub.docker.com/r/zlmediakit/zlmediakit/tags",target:"_blank",rel:"noopener noreferrer"},z=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/docker.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),x={href:"https://hub.docker.com/r/zlmediakit/zlmediakit/tags",target:"_blank",rel:"noopener noreferrer"},C=e("img",{src:"https://img.shields.io/docker/pulls/zlmediakit/zlmediakit",alt:"badge",loading:"lazy"},null,-1),A=e("h2",{id:"项目特点",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#项目特点","aria-hidden":"true"},"#"),i(" 项目特点")],-1),y=e("li",null,"基于 C++11 开发,避免使用裸指针,代码稳定可靠,性能优越。",-1),G=e("li",null,"支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支持协议互转。",-1),O=e("li",null,"使用多路复用/多线程/异步网络 IO 模式开发,并发性能优越,支持海量客户端连接。",-1),I=e("li",null,"代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。",-1),V=e("li",null,"支持 linux、macos、ios、android、windows 全平台。",-1),U=e("li",null,"支持 x86、arm、risc-v、mips、龙芯、申威等指令集平台。",-1),W={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/api/include",target:"_blank",rel:"noopener noreferrer"},D={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/server",target:"_blank",rel:"noopener noreferrer"},E=e("li",null,"打通了视频监控协议栈与直播协议栈,对 RTSP/RTMP 支持都很完善。",-1),F=e("li",null,"全面支持 H265/H264/AAC/G711/OPUS。",-1),B=e("li",null,"功能完善,支持集群、按需转协议、按需推拉流、先播后推、断连续推等功能。",-1),N=e("li",null,"极致性能,单机 10W 级别播放器,100Gb/s 级别 io 带宽能力。",-1),Q={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/511",target:"_blank",rel:"noopener noreferrer"},q=e("li",null,"全面支持 ipv6 网络",-1),Y=o('

                  项目定位

                  • 移动嵌入式跨平台流媒体解决方案。
                  • 商用级流媒体服务器。
                  • 网络编程二次开发 SDK。

                  功能清单

                  功能一览

                  ',4),j=o("
                • RTSP[S]

                  • RTSP[S] 服务器,支持 RTMP/MP4/HLS 转 RTSP[S] ,支持亚马逊 echo show 这样的设备
                  • RTSP[S] 播放器,支持 RTSP 代理,支持生成静音音频
                  • RTSP[S] 推流客户端与服务器
                  • 支持 rtp over udp rtp over tcp rtp over http rtp组播 四种 RTP 传输方式
                  • 服务器/客户端完整支持 Basic/Digest 方式的登录鉴权,全异步可配置化的鉴权接口
                  • 支持 H265 编码
                  • 服务器支持 RTSP 推流(包括rtp over udp rtp over tcp方式)
                  • 支持 H264/H265/AAC/G711/OPUS/MJPEG 编码,其他编码能转发但不能转协议
                • ",1),J=e("p",null,"RTMP[S]",-1),X=e("li",null,"RTMP[S] 播放服务器,支持 RTSP/MP4/HLS 转 RTMP",-1),$=e("li",null,"RTMP[S] 发布服务器,支持录制发布流",-1),ee=e("li",null,"RTMP[S] 播放器,支持 RTMP 代理,支持生成静音音频",-1),ie=e("li",null,"RTMP[S] 推流客户端",-1),le=e("li",null,"支持 http[S] -flv 直播服务器",-1),te=e("li",null,"支持 http[S] -flv 直播播放器",-1),ae=e("li",null,"支持 websocket-flv 直播",-1),se=e("li",null,"支持 H264/H265/AAC/G711/OPUS 编码,其他编码能转发但不能转协议",-1),oe={href:"https://github.com/ksvc/FFmpeg/wiki",target:"_blank",rel:"noopener noreferrer"},ne={href:"https://github.com/veovera/enhanced-rtmp",target:"_blank",rel:"noopener noreferrer"},re=o("
                • HLS

                  • 支持 HLS 文件(mpegts/fmp4)生成,自带 HTTP 文件服务器
                  • 通过 cookie 追踪技术,可以模拟 HLS 播放为长连接,可以实现 HLS 按需拉流、播放统计等业务
                  • 支持 HLS 播发器,支持拉流 HLS 转 rtsp/rtmp/mp4
                  • 支持 H264/H265/AAC/G711/OPUS 编码
                • TS

                  • 支持 http[S] -ts 直播
                  • 支持 ws[S] -ts 直播
                  • 支持 H264/H265/AAC/G711/OPUS 编码
                • fMP4

                  • 支持 http[S] -fmp4 直播
                  • 支持 ws[S] -fmp4 直播
                  • 支持 H264/H265/AAC/G711/OPUS/MJPEG 编码
                • HTTP[S] 与 WebSocket

                  • 服务器支持目录索引生成,文件下载,表单提交请求
                  • 客户端提供文件下载器(支持断点续传),接口请求器,文件上传器
                  • 完整 HTTP API 服务器,可以作为 web 后台开发框架
                  • 支持跨域访问
                  • 支持 http 客户端、服务器 cookie
                  • 支持 WebSocket 服务器和客户端
                  • 支持 http 文件访问鉴权
                • GB28181 与 RTP 推流

                  • 支持 UDP/TCP RTP(PS/TS/ES)推流服务器,可以转换成 RTSP/RTMP/HLS 等协议
                  • 支持 RTSP/RTMP/HLS 等协议转 rtp 推流客户端,支持 TCP/UDP 模式,提供相应 restful api,支持主动被动方式
                  • 支持 H264/H265/AAC/G711/OPUS 编码
                  • 支持 es/ps/ts/ehome rtp 推流
                  • 支持 es/ps rtp 转推
                  • 支持 GB28181 主动拉流模式
                  • 支持双向语音对讲
                • MP4 点播与录制

                  • 支持录制为 FLV/HLS/MP4
                  • RTSP/RTMP/HTTP-FLV/WS-FLV 支持 MP4 文件点播,支持 seek
                  • 支持 H264/H265/AAC/G711/OPUS 编码
                • WebRTC

                  • 支持 WebRTC 推流,支持转其他协议
                  • 支持 WebRTC 播放,支持其他协议转 WebRTC
                  • 支持双向 echo test
                  • 支持 simulcast 推流
                  • 支持上下行 rtx/nack 丢包重传
                  • 支持单端口、多线程、客户端网络连接迁移(开源界唯一)
                  • 支持 TWCC rtcp 动态调整码率
                  • 支持 remb/pli/sr/rr rtcp
                  • 支持 rtp 扩展解析
                  • 支持 GOP 缓冲,webrtc 播放秒开
                  • 支持 datachannel
                  • 支持 webrtc over tcp 模式
                  • 优秀的 nack、jitter buffer 算法, 抗丢包能力卓越
                  • 支持 whip/whep 协议
                • ",7),de=o("
                • 其他

                  • 支持丰富的 restful api 以及 web hook 事件
                  • 支持简单的 telnet 调试
                  • 支持配置文件热加载
                  • 支持流量统计、推拉流鉴权等事件
                  • 支持虚拟主机,可以隔离不同域名
                  • 支持按需拉流,无人观看自动关断拉流
                  • 支持先播放后推流,提高及时推流画面打开率
                  • 提供完整强大的 c api sdk
                  • 支持 FFmpeg 拉流代理任意格式的流
                  • 支持 http api 生成并返回实时截图
                  • 支持按需解复用、转协议,当有人观看时才开启转协议,降低 cpu 占用率
                  • 支持溯源模式的集群部署,溯源方式支持 rtsp/rtmp/hls/http-ts, 边沿站支持 hls, 源站支持多个(采用 round robin 方式溯源)
                  • rtsp/rtmp/webrtc 推流异常断开后,可以在超时时间内重连推流,播放器无感知
                • ",1),ce=e("h2",{id:"编译以及测试",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#编译以及测试","aria-hidden":"true"},"#"),i(" 编译以及测试")],-1),he=e("h2",{id:"怎么使用",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#怎么使用","aria-hidden":"true"},"#"),i(" 怎么使用")],-1),pe=e("p",null,"你有三种方法使用 ZLMediaKit,分别是:",-1),ue={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/api/include",target:"_blank",rel:"noopener noreferrer"},_e={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/tests",target:"_blank",rel:"noopener noreferrer"},me=o(`

                  Docker 镜像

                  你可以从 Docker Hub 下载已经编译好的镜像并启动它:

                  #此镜像为github持续集成自动编译推送,跟代码(master分支)保持最新状态
                  +import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as c,c as h,a as e,b as l,d as i,w as s,e as o}from"./app-0NopiYEV.js";const p={},u=e("h2",{id:"一个基于-c-11-的高性能运营级流媒体服务框架",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一个基于-c-11-的高性能运营级流媒体服务框架","aria-hidden":"true"},"#"),i(" 一个基于 C++11 的高性能运营级流媒体服务框架")],-1),_={href:"https://github.com/ZLMediaKit/ZLMediaKit/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"},m=e("img",{src:"https://img.shields.io/badge/license-MIT-green.svg",alt:"badge",loading:"lazy"},null,-1),b={href:"https://en.cppreference.com/",target:"_blank",rel:"noopener noreferrer"},g=e("img",{src:"https://img.shields.io/badge/language-c++-red.svg",alt:"badge",loading:"lazy"},null,-1),f={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},k=e("img",{src:"https://img.shields.io/badge/platform-linux | macos | windows-blue.svg",alt:"badge",loading:"lazy"},null,-1),M={href:"https://github.com/ZLMediaKit/ZLMediaKit/pulls",target:"_blank",rel:"noopener noreferrer"},S=e("img",{src:"https://img.shields.io/badge/PRs-welcome-yellow.svg",alt:"badge",loading:"lazy"},null,-1),T={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},P=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/android.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),L={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},v=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/linux.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),R={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},w=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/macos.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),H={href:"https://github.com/ZLMediaKit/ZLMediaKit",target:"_blank",rel:"noopener noreferrer"},K=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/windows.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),Z={href:"https://hub.docker.com/r/zlmediakit/zlmediakit/tags",target:"_blank",rel:"noopener noreferrer"},z=e("img",{src:"https://github.com/ZLMediaKit/ZLMediaKit/actions/workflows/docker.yml/badge.svg",alt:"badge",loading:"lazy"},null,-1),x={href:"https://hub.docker.com/r/zlmediakit/zlmediakit/tags",target:"_blank",rel:"noopener noreferrer"},C=e("img",{src:"https://img.shields.io/docker/pulls/zlmediakit/zlmediakit",alt:"badge",loading:"lazy"},null,-1),A=e("h2",{id:"项目特点",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#项目特点","aria-hidden":"true"},"#"),i(" 项目特点")],-1),y=e("li",null,"基于 C++11 开发,避免使用裸指针,代码稳定可靠,性能优越。",-1),G=e("li",null,"支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支持协议互转。",-1),O=e("li",null,"使用多路复用/多线程/异步网络 IO 模式开发,并发性能优越,支持海量客户端连接。",-1),I=e("li",null,"代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。",-1),V=e("li",null,"支持 linux、macos、ios、android、windows 全平台。",-1),U=e("li",null,"支持 x86、arm、risc-v、mips、龙芯、申威等指令集平台。",-1),W={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/api/include",target:"_blank",rel:"noopener noreferrer"},D={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/server",target:"_blank",rel:"noopener noreferrer"},E=e("li",null,"打通了视频监控协议栈与直播协议栈,对 RTSP/RTMP 支持都很完善。",-1),F=e("li",null,"全面支持 H265/H264/AAC/G711/OPUS。",-1),B=e("li",null,"功能完善,支持集群、按需转协议、按需推拉流、先播后推、断连续推等功能。",-1),N=e("li",null,"极致性能,单机 10W 级别播放器,100Gb/s 级别 io 带宽能力。",-1),Q={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/511",target:"_blank",rel:"noopener noreferrer"},q=e("li",null,"全面支持 ipv6 网络",-1),Y=o('

                  项目定位

                  • 移动嵌入式跨平台流媒体解决方案。
                  • 商用级流媒体服务器。
                  • 网络编程二次开发 SDK。

                  功能清单

                  功能一览

                  ',4),j=o("
                • RTSP[S]

                  • RTSP[S] 服务器,支持 RTMP/MP4/HLS 转 RTSP[S] ,支持亚马逊 echo show 这样的设备
                  • RTSP[S] 播放器,支持 RTSP 代理,支持生成静音音频
                  • RTSP[S] 推流客户端与服务器
                  • 支持 rtp over udp rtp over tcp rtp over http rtp组播 四种 RTP 传输方式
                  • 服务器/客户端完整支持 Basic/Digest 方式的登录鉴权,全异步可配置化的鉴权接口
                  • 支持 H265 编码
                  • 服务器支持 RTSP 推流(包括rtp over udp rtp over tcp方式)
                  • 支持 H264/H265/AAC/G711/OPUS/MJPEG 编码,其他编码能转发但不能转协议
                • ",1),J=e("p",null,"RTMP[S]",-1),X=e("li",null,"RTMP[S] 播放服务器,支持 RTSP/MP4/HLS 转 RTMP",-1),$=e("li",null,"RTMP[S] 发布服务器,支持录制发布流",-1),ee=e("li",null,"RTMP[S] 播放器,支持 RTMP 代理,支持生成静音音频",-1),ie=e("li",null,"RTMP[S] 推流客户端",-1),le=e("li",null,"支持 http[S] -flv 直播服务器",-1),te=e("li",null,"支持 http[S] -flv 直播播放器",-1),ae=e("li",null,"支持 websocket-flv 直播",-1),se=e("li",null,"支持 H264/H265/AAC/G711/OPUS 编码,其他编码能转发但不能转协议",-1),oe={href:"https://github.com/ksvc/FFmpeg/wiki",target:"_blank",rel:"noopener noreferrer"},ne={href:"https://github.com/veovera/enhanced-rtmp",target:"_blank",rel:"noopener noreferrer"},re=o("
                • HLS

                  • 支持 HLS 文件(mpegts/fmp4)生成,自带 HTTP 文件服务器
                  • 通过 cookie 追踪技术,可以模拟 HLS 播放为长连接,可以实现 HLS 按需拉流、播放统计等业务
                  • 支持 HLS 播发器,支持拉流 HLS 转 rtsp/rtmp/mp4
                  • 支持 H264/H265/AAC/G711/OPUS 编码
                • TS

                  • 支持 http[S] -ts 直播
                  • 支持 ws[S] -ts 直播
                  • 支持 H264/H265/AAC/G711/OPUS 编码
                • fMP4

                  • 支持 http[S] -fmp4 直播
                  • 支持 ws[S] -fmp4 直播
                  • 支持 H264/H265/AAC/G711/OPUS/MJPEG 编码
                • HTTP[S] 与 WebSocket

                  • 服务器支持目录索引生成,文件下载,表单提交请求
                  • 客户端提供文件下载器(支持断点续传),接口请求器,文件上传器
                  • 完整 HTTP API 服务器,可以作为 web 后台开发框架
                  • 支持跨域访问
                  • 支持 http 客户端、服务器 cookie
                  • 支持 WebSocket 服务器和客户端
                  • 支持 http 文件访问鉴权
                • GB28181 与 RTP 推流

                  • 支持 UDP/TCP RTP(PS/TS/ES)推流服务器,可以转换成 RTSP/RTMP/HLS 等协议
                  • 支持 RTSP/RTMP/HLS 等协议转 rtp 推流客户端,支持 TCP/UDP 模式,提供相应 restful api,支持主动被动方式
                  • 支持 H264/H265/AAC/G711/OPUS 编码
                  • 支持 es/ps/ts/ehome rtp 推流
                  • 支持 es/ps rtp 转推
                  • 支持 GB28181 主动拉流模式
                  • 支持双向语音对讲
                • MP4 点播与录制

                  • 支持录制为 FLV/HLS/MP4
                  • RTSP/RTMP/HTTP-FLV/WS-FLV 支持 MP4 文件点播,支持 seek
                  • 支持 H264/H265/AAC/G711/OPUS 编码
                • WebRTC

                  • 支持 WebRTC 推流,支持转其他协议
                  • 支持 WebRTC 播放,支持其他协议转 WebRTC
                  • 支持双向 echo test
                  • 支持 simulcast 推流
                  • 支持上下行 rtx/nack 丢包重传
                  • 支持单端口、多线程、客户端网络连接迁移(开源界唯一)
                  • 支持 TWCC rtcp 动态调整码率
                  • 支持 remb/pli/sr/rr rtcp
                  • 支持 rtp 扩展解析
                  • 支持 GOP 缓冲,webrtc 播放秒开
                  • 支持 datachannel
                  • 支持 webrtc over tcp 模式
                  • 优秀的 nack、jitter buffer 算法, 抗丢包能力卓越
                  • 支持 whip/whep 协议
                • ",7),de=o("
                • 其他

                  • 支持丰富的 restful api 以及 web hook 事件
                  • 支持简单的 telnet 调试
                  • 支持配置文件热加载
                  • 支持流量统计、推拉流鉴权等事件
                  • 支持虚拟主机,可以隔离不同域名
                  • 支持按需拉流,无人观看自动关断拉流
                  • 支持先播放后推流,提高及时推流画面打开率
                  • 提供完整强大的 c api sdk
                  • 支持 FFmpeg 拉流代理任意格式的流
                  • 支持 http api 生成并返回实时截图
                  • 支持按需解复用、转协议,当有人观看时才开启转协议,降低 cpu 占用率
                  • 支持溯源模式的集群部署,溯源方式支持 rtsp/rtmp/hls/http-ts, 边沿站支持 hls, 源站支持多个(采用 round robin 方式溯源)
                  • rtsp/rtmp/webrtc 推流异常断开后,可以在超时时间内重连推流,播放器无感知
                • ",1),ce=e("h2",{id:"编译以及测试",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#编译以及测试","aria-hidden":"true"},"#"),i(" 编译以及测试")],-1),he=e("h2",{id:"怎么使用",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#怎么使用","aria-hidden":"true"},"#"),i(" 怎么使用")],-1),pe=e("p",null,"你有三种方法使用 ZLMediaKit,分别是:",-1),ue={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/api/include",target:"_blank",rel:"noopener noreferrer"},_e={href:"https://github.com/ZLMediaKit/ZLMediaKit/tree/master/tests",target:"_blank",rel:"noopener noreferrer"},me=o(`

                  Docker 镜像

                  你可以从 Docker Hub 下载已经编译好的镜像并启动它:

                  #此镜像为github持续集成自动编译推送,跟代码(master分支)保持最新状态
                   docker run -id -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp zlmediakit/zlmediakit:master
                   

                  你也可以根据 Dockerfile 编译镜像:

                  bash build_docker_images.sh
                   
                  `,5);function be(ge,fe){const t=n("ExternalLinkIcon"),a=n("RouterLink"),r=n("Mermaid");return c(),h("div",null,[u,e("p",null,[e("a",_,[m,l(t)]),e("a",b,[g,l(t)]),e("a",f,[k,l(t)]),e("a",M,[S,l(t)])]),e("p",null,[e("a",T,[P,l(t)]),e("a",L,[v,l(t)]),e("a",R,[w,l(t)]),e("a",H,[K,l(t)])]),e("p",null,[e("a",Z,[z,l(t)]),e("a",x,[C,l(t)])]),A,e("ul",null,[y,G,O,I,V,U,e("li",null,[i("支持画面秒开、极低延时("),l(a,{to:"/zh/reference/test/delay_test.html"},{default:s(()=>[i("500 毫秒内,最低可达 100 毫秒")]),_:1}),i(")。")]),e("li",null,[i("提供完善的标准"),e("a",W,[i("C API"),l(t)]),i(",可以作 SDK 用,或供其他语言调用。")]),e("li",null,[i("提供完整的"),e("a",D,[i("MediaServer"),l(t)]),i("服务器,可以免开发直接部署为商用服务器。")]),e("li",null,[i("提供完善的"),l(a,{to:"/zh/guide/media_server/restful_api.html"},{default:s(()=>[i("restful api")]),_:1}),i("以及"),l(a,{to:"/zh/guide/media_server/web_hook_api.html"},{default:s(()=>[i("web hook")]),_:1}),i(",支持丰富的业务逻辑。")]),E,F,B,N,e("li",null,[i("极致体验,"),l(a,{to:"/zh/reference/documents/exclusive_features.html"},{default:s(()=>[i("独家特性")]),_:1})]),e("li",null,[e("a",Q,[i("谁在使用 zlmediakit?"),l(t)])]),q]),Y,l(r,{id:"mermaid-128",code:"eJx1k99PgzAQx9/3V/QRH4jR+GB8MGHQyTKQhnYz2iwLYcyRzLGwTmOc/7vXH9BNGAn0eve5b69H67ruQJRiUzygUZGJQ13sB9K32lRf+TqrBWLBAMHj8ZTFZI5c9/FIpjRESYrINIqOaOiMt3n1UW7f0V7URaasXV2JKq82VzpZZtP+bAN4PGSMuIxeq3EUza7DiDYZZ6RBY3LXDT8Nb+9v7m+4Ge2KDfCChynzuR66YZoyDm83gMMkxlx9u8HxM5myRcJCnPJErIu63b+tEM3GHhqNYoKfmrShDCL/5y2Ki2WZTUrxq/y+9Ac8OYjdQfQ0da6oQGXLMihLsRfzVfawytw8qxE57Nc2z+BAQ8tS7Cdp4ICF6iKv6iUA+idJQLeFRN6ro00TkktF4xk2K0XlZ2H0rTi0TSXCiHab7NuqzpLAgVc7rAxE5Klw5AdJyR4AzsFCOhwwLjFwTjQDhjpAMECf7y7xzOCMXlwVss2y5zq226b4hfSoHfQCcQvEfYA5pZoxE401+25VTiROYvIiLOScOM216TDwI2niTzAzYDu3tOlIIwhTo8fof8CqKcqKNWjbu7Y86WjqA7uLnVSo2ZMSVcIfdihA0w=="}),e("ul",null,[j,e("li",null,[J,e("ul",null,[X,$,ee,ie,le,te,ae,se,e("li",null,[i("支持"),e("a",oe,[i("RTMP-H265"),l(t)])]),e("li",null,[i("支持"),l(a,{to:"/zh/reference/resources/rtmp_support_for_h265_and_opus.html"},{default:s(()=>[i("RTMP-OPUS")]),_:1})]),e("li",null,[i("支持"),e("a",ne,[i("enhanced-rtmp(H265)"),l(t)])])])]),re,e("li",null,[e("p",null,[l(a,{to:"/zh/guide/protocol/srt/"},{default:s(()=>[i("SRT 支持")]),_:1})])]),de]),ce,e("p",null,[e("strong",null,[i("编译前务必仔细参考 wiki:"),l(a,{to:"/zh/tutorial/"},{default:s(()=>[i("快速开始")]),_:1}),i("操作!!!")])]),he,pe,e("ul",null,[e("li",null,[i("1、使用 c api,作为 sdk 使用,请参考"),e("a",ue,[i("这里"),l(t)]),i(".")]),e("li",null,[i("2、作为独立的流媒体服务器使用,不想做 c/c++开发的,可以参考 "),l(a,{to:"/zh/guide/media_server/restful_api.html"},{default:s(()=>[i("restful api")]),_:1}),i(" 和 "),l(a,{to:"/zh/guide/media_server/web_hook_api.html"},{default:s(()=>[i("web hook")]),_:1}),i(".")]),e("li",null,[i("3、如果想做 c/c++开发,添加业务逻辑增加功能,可以参考这里的"),e("a",_e,[i("测试程序"),l(t)]),i(".")])]),me])}const Se=d(p,[["render",be],["__file","index.html.vue"]]);export{Se as default}; diff --git a/assets/index.html-qlpSloZ0.js b/assets/index.html-ZAfsJ4Zm.js similarity index 71% rename from assets/index.html-qlpSloZ0.js rename to assets/index.html-ZAfsJ4Zm.js index 42c57c6..355847a 100644 --- a/assets/index.html-qlpSloZ0.js +++ b/assets/index.html-ZAfsJ4Zm.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-RP31lnfq.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-0NopiYEV.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-_FbUjyNF.js b/assets/index.html-_FbUjyNF.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-_FbUjyNF.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-_GTitl4a.js b/assets/index.html-_GTitl4a.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-_GTitl4a.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-eQpT8dLR.js b/assets/index.html-bCrAKGJB.js similarity index 82% rename from assets/index.html-eQpT8dLR.js rename to assets/index.html-bCrAKGJB.js index e32e570..ef3579a 100644 --- a/assets/index.html-eQpT8dLR.js +++ b/assets/index.html-bCrAKGJB.js @@ -1 +1 @@ -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as s,c as i,a as e,b as a,w as l,d as t}from"./app-RP31lnfq.js";const c={},d=e("h2",{id:"category",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#category","aria-hidden":"true"},"#"),t(" Category")],-1);function _(u,h){const r=o("RouterLink");return s(),i("div",null,[d,e("ul",null,[e("li",null,[e("p",null,[a(r,{to:"/zh/guide/media_server/play_url_rules.html"},{default:l(()=>[t("Playing URL Rules")]),_:1})])]),e("li",null,[e("p",null,[a(r,{to:"/zh/guide/media_server/start_server.html"},{default:l(()=>[t("Starting and Stopping the Server")]),_:1})])])])])}const f=n(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as s,c as i,a as e,b as a,w as l,d as t}from"./app-0NopiYEV.js";const c={},d=e("h2",{id:"category",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#category","aria-hidden":"true"},"#"),t(" Category")],-1);function _(u,h){const r=o("RouterLink");return s(),i("div",null,[d,e("ul",null,[e("li",null,[e("p",null,[a(r,{to:"/zh/guide/media_server/play_url_rules.html"},{default:l(()=>[t("Playing URL Rules")]),_:1})])]),e("li",null,[e("p",null,[a(r,{to:"/zh/guide/media_server/start_server.html"},{default:l(()=>[t("Starting and Stopping the Server")]),_:1})])])])])}const f=n(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-bV4_5Cgh.js b/assets/index.html-bV4_5Cgh.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-bV4_5Cgh.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-c1k5quBE.js b/assets/index.html-c1k5quBE.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-c1k5quBE.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-crm4JFod.js b/assets/index.html-crm4JFod.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-crm4JFod.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-dNFi-MK4.js b/assets/index.html-dNFi-MK4.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-dNFi-MK4.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-e77v6tHA.js b/assets/index.html-e77v6tHA.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-e77v6tHA.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-eKYx7NZ-.js b/assets/index.html-eKYx7NZ-.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-eKYx7NZ-.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-4AQHrSUy.js b/assets/index.html-eSaWpJP4.js similarity index 99% rename from assets/index.html-4AQHrSUy.js rename to assets/index.html-eSaWpJP4.js index a88cbc5..357e235 100644 --- a/assets/index.html-4AQHrSUy.js +++ b/assets/index.html-eSaWpJP4.js @@ -1,4 +1,4 @@ -import{_ as r}from"./vs_code_zh-ltEPcFYF.js";import{_ as u}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as d,o as p,c as m,f as b,a as e,d as n,b as t,w as a,e as h}from"./app-RP31lnfq.js";const v={},g=e("p",null,"This tutorial will guide you compiling and running ZLMediaKit.",-1),_=e("h2",{id:"build-environment",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#build-environment","aria-hidden":"true"},"#"),n(" Build Environment")],-1),k=e("div",{class:"hint-container tip"},[e("p",{class:"hint-container-title"},"Beginner Notice"),e("p",null,"If you're a beginner, we highly recommend compiling ZLMediaKit using Ubuntu16 or later versions. macOS is the second recommended platform. We don't recommend using CentOS6.x or Windows.")],-1),f={class:"hint-container info"},w=e("p",{class:"hint-container-title"},"vcpkg",-1),y=e("h3",{id:"compiler-supporting-c-11",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#compiler-supporting-c-11","aria-hidden":"true"},"#"),n(" Compiler Supporting C++11")],-1),x=e("p",null,"ZLMediaKit uses C++11 syntax and libraries, hence, it's required that your compiler fully supports the C++11 standard. This means:",-1),A=e("ul",null,[e("li",null,"On Linux, gcc version >= 4.8 (4.7 should also be supported)"),e("li",null,"On macOS, clang >= ??? (it's uncertain, but most likely won't encounter any issues)"),e("li",null,"On Windows, Visual Studio >= 2015 (some versions of VS2013 can also compile, but for a smoother experience, VS2017 is recommended)")],-1),S=e("div",{class:"language-bash line-numbers-mode","data-ext":"sh"},[e("pre",{class:"language-bash"},[e("code",null,[e("span",{class:"token function"},"sudo"),n(),e("span",{class:"token function"},"apt"),n(),e("span",{class:"token function"},"install"),n(` build-essential +import{_ as r}from"./vs_code_zh-ltEPcFYF.js";import{_ as u}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as d,o as p,c as m,f as b,a as e,d as n,b as t,w as a,e as h}from"./app-0NopiYEV.js";const v={},g=e("p",null,"This tutorial will guide you compiling and running ZLMediaKit.",-1),_=e("h2",{id:"build-environment",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#build-environment","aria-hidden":"true"},"#"),n(" Build Environment")],-1),k=e("div",{class:"hint-container tip"},[e("p",{class:"hint-container-title"},"Beginner Notice"),e("p",null,"If you're a beginner, we highly recommend compiling ZLMediaKit using Ubuntu16 or later versions. macOS is the second recommended platform. We don't recommend using CentOS6.x or Windows.")],-1),f={class:"hint-container info"},w=e("p",{class:"hint-container-title"},"vcpkg",-1),y=e("h3",{id:"compiler-supporting-c-11",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#compiler-supporting-c-11","aria-hidden":"true"},"#"),n(" Compiler Supporting C++11")],-1),x=e("p",null,"ZLMediaKit uses C++11 syntax and libraries, hence, it's required that your compiler fully supports the C++11 standard. This means:",-1),A=e("ul",null,[e("li",null,"On Linux, gcc version >= 4.8 (4.7 should also be supported)"),e("li",null,"On macOS, clang >= ??? (it's uncertain, but most likely won't encounter any issues)"),e("li",null,"On Windows, Visual Studio >= 2015 (some versions of VS2013 can also compile, but for a smoother experience, VS2017 is recommended)")],-1),S=e("div",{class:"language-bash line-numbers-mode","data-ext":"sh"},[e("pre",{class:"language-bash"},[e("code",null,[e("span",{class:"token function"},"sudo"),n(),e("span",{class:"token function"},"apt"),n(),e("span",{class:"token function"},"install"),n(` build-essential `)])]),e("div",{class:"line-numbers","aria-hidden":"true"},[e("div",{class:"line-number"})])],-1),L=e("div",{class:"language-bash line-numbers-mode","data-ext":"sh"},[e("pre",{class:"language-bash"},[e("code",null,[e("span",{class:"token function"},"sudo"),n(" yum "),e("span",{class:"token parameter variable"},"-y"),n(),e("span",{class:"token function"},"install"),n(` gcc `),e("span",{class:"token function"},"sudo"),n(" yum "),e("span",{class:"token parameter variable"},"-y"),n(),e("span",{class:"token function"},"install"),n(` gcc-c++ `)])]),e("div",{class:"line-numbers","aria-hidden":"true"},[e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1),O=e("p",null,"You need to manually switch to a higher version of gcc.",-1),M=e("div",{class:"language-bash line-numbers-mode","data-ext":"sh"},[e("pre",{class:"language-bash"},[e("code",null,[e("span",{class:"token function"},"sudo"),n(" yum "),e("span",{class:"token function"},"install"),n(" centos-release-scl "),e("span",{class:"token parameter variable"},"-y"),n(` diff --git a/assets/index.html-frsd07BJ.js b/assets/index.html-frsd07BJ.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-frsd07BJ.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-gSpoAwKN.js b/assets/index.html-gSpoAwKN.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-gSpoAwKN.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-1HU8uRzY.js b/assets/index.html-hehzhF2d.js similarity index 94% rename from assets/index.html-1HU8uRzY.js rename to assets/index.html-hehzhF2d.js index 95f8962..e8e39c5 100644 --- a/assets/index.html-1HU8uRzY.js +++ b/assets/index.html-hehzhF2d.js @@ -1 +1 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as a,c as r,a as e,d as t,b as l,e as n}from"./app-RP31lnfq.js";const p={},u=e("h2",{id:"feature",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#feature","aria-hidden":"true"},"#"),t(" feature")],-1),c=e("li",null,"NACK support",-1),d=e("li",null,"listener support",-1),h=e("li",null,"push stream payload must ts",-1),m=e("li",null,"pull stream payload is ts",-1),_={href:"https://haivision.github.io/srt-rfc/draft-sharabayko-srt.html",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"version support (>=1.3.0)",-1),v=e("li",null,"fec and encrypted not support",-1),y=n('

                  usage

                  zlm get vhost,app,streamid and push or play by streamid of srt like this #!::key1=value1,key2=value2,key3=value4......

                  h and r is special key,to get vhost app streamid, if h not exist ,vhost is default value

                  m is special key, to judge is push or pull, if value is publish the mode is push,otherwise is play, if m not exist, mode is play

                  other key and m ,can use by webhook to auth for play or push

                  like: #!::h=zlmediakit.com,r=live/test,m=publish

                  vhost = zlmediakit.com

                  app = live

                  streamid = test

                  mode is push

                  ',10),k=e("li",null,[e("p",null,"OBS push stream url"),e("p",null,[e("code",null,"srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish")])],-1),b=e("li",null,[e("p",null,"ffmpeg push"),e("p",null,[e("code",null,"ffmpeg -re -stream_loop -1 -i test.ts -c:v copy -c:a copy -f mpegts srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish")])],-1),g=e("li",null,[e("p",null,"ffplay pull"),e("p",null,[e("code",null,"ffplay -i srt://192.168.1.105:9000?streamid=#!::r=live/test")])],-1),x={href:"https://github.com/Haivision/srt/issues/1015",target:"_blank",rel:"noopener noreferrer"};function N(B,V){const s=i("ExternalLinkIcon");return a(),r("div",null,[u,e("ul",null,[c,d,h,m,e("li",null,[t("protocol implement "),e("a",_,[t("reference"),l(s)])]),f,v]),y,e("ul",null,[k,b,g,e("li",null,[e("p",null,[t("vlc not support ,because can't set stream id "),e("a",x,[t("reference"),l(s)])])])])])}const w=o(p,[["render",N],["__file","index.html.vue"]]);export{w as default}; +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as a,c as r,a as e,d as t,b as l,e as n}from"./app-0NopiYEV.js";const p={},u=e("h2",{id:"feature",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#feature","aria-hidden":"true"},"#"),t(" feature")],-1),c=e("li",null,"NACK support",-1),d=e("li",null,"listener support",-1),h=e("li",null,"push stream payload must ts",-1),m=e("li",null,"pull stream payload is ts",-1),_={href:"https://haivision.github.io/srt-rfc/draft-sharabayko-srt.html",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"version support (>=1.3.0)",-1),v=e("li",null,"fec and encrypted not support",-1),y=n('

                  usage

                  zlm get vhost,app,streamid and push or play by streamid of srt like this #!::key1=value1,key2=value2,key3=value4......

                  h and r is special key,to get vhost app streamid, if h not exist ,vhost is default value

                  m is special key, to judge is push or pull, if value is publish the mode is push,otherwise is play, if m not exist, mode is play

                  other key and m ,can use by webhook to auth for play or push

                  like: #!::h=zlmediakit.com,r=live/test,m=publish

                  vhost = zlmediakit.com

                  app = live

                  streamid = test

                  mode is push

                  ',10),k=e("li",null,[e("p",null,"OBS push stream url"),e("p",null,[e("code",null,"srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish")])],-1),b=e("li",null,[e("p",null,"ffmpeg push"),e("p",null,[e("code",null,"ffmpeg -re -stream_loop -1 -i test.ts -c:v copy -c:a copy -f mpegts srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish")])],-1),g=e("li",null,[e("p",null,"ffplay pull"),e("p",null,[e("code",null,"ffplay -i srt://192.168.1.105:9000?streamid=#!::r=live/test")])],-1),x={href:"https://github.com/Haivision/srt/issues/1015",target:"_blank",rel:"noopener noreferrer"};function N(B,V){const s=i("ExternalLinkIcon");return a(),r("div",null,[u,e("ul",null,[c,d,h,m,e("li",null,[t("protocol implement "),e("a",_,[t("reference"),l(s)])]),f,v]),y,e("ul",null,[k,b,g,e("li",null,[e("p",null,[t("vlc not support ,because can't set stream id "),e("a",x,[t("reference"),l(s)])])])])])}const w=o(p,[["render",N],["__file","index.html.vue"]]);export{w as default}; diff --git a/assets/index.html-kIe4zMW_.js b/assets/index.html-kIe4zMW_.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-kIe4zMW_.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-kykmfUZZ.js b/assets/index.html-kykmfUZZ.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-kykmfUZZ.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-ldqAHXhl.js b/assets/index.html-ldqAHXhl.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-ldqAHXhl.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-lxIvJFMs.js b/assets/index.html-lxIvJFMs.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-lxIvJFMs.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-mfTVy5-J.js b/assets/index.html-mfTVy5-J.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-mfTVy5-J.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-n77SzoQa.js b/assets/index.html-n77SzoQa.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-n77SzoQa.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-oytvqk6x.js b/assets/index.html-oytvqk6x.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-oytvqk6x.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-pO6EQ89h.js b/assets/index.html-pO6EQ89h.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-pO6EQ89h.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-ZUO1t91g.js b/assets/index.html-q26KWjF1.js similarity index 82% rename from assets/index.html-ZUO1t91g.js rename to assets/index.html-q26KWjF1.js index 5a44454..d31bb5e 100644 --- a/assets/index.html-ZUO1t91g.js +++ b/assets/index.html-q26KWjF1.js @@ -1 +1 @@ -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as s,c as i,a as e,b as a,w as l,d as t}from"./app-RP31lnfq.js";const c={},d=e("h2",{id:"category",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#category","aria-hidden":"true"},"#"),t(" Category")],-1);function _(u,m){const r=o("RouterLink");return s(),i("div",null,[d,e("ul",null,[e("li",null,[e("p",null,[a(r,{to:"/guide/media_server/play_url_rules.html"},{default:l(()=>[t("Playing URL Rules")]),_:1})])]),e("li",null,[e("p",null,[a(r,{to:"/guide/media_server/start_server.html"},{default:l(()=>[t("Starting and Stopping the Server")]),_:1})])])])])}const f=n(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as s,c as i,a as e,b as a,w as l,d as t}from"./app-0NopiYEV.js";const c={},d=e("h2",{id:"category",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#category","aria-hidden":"true"},"#"),t(" Category")],-1);function _(u,m){const r=o("RouterLink");return s(),i("div",null,[d,e("ul",null,[e("li",null,[e("p",null,[a(r,{to:"/guide/media_server/play_url_rules.html"},{default:l(()=>[t("Playing URL Rules")]),_:1})])]),e("li",null,[e("p",null,[a(r,{to:"/guide/media_server/start_server.html"},{default:l(()=>[t("Starting and Stopping the Server")]),_:1})])])])])}const f=n(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-qXcCxmIQ.js b/assets/index.html-qXcCxmIQ.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-qXcCxmIQ.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-tETo8Lu8.js b/assets/index.html-tETo8Lu8.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-tETo8Lu8.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-uBldBXxN.js b/assets/index.html-uBldBXxN.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-uBldBXxN.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-v6csxUL5.js b/assets/index.html-v6csxUL5.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-v6csxUL5.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-vj58oyHa.js b/assets/index.html-vj58oyHa.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-vj58oyHa.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-xQisrcfM.js b/assets/index.html-xQisrcfM.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-xQisrcfM.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-yFJZvUVc.js b/assets/index.html-yFJZvUVc.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-yFJZvUVc.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-yPXvy2ZK.js b/assets/index.html-yPXvy2ZK.js deleted file mode 100644 index 5b27809..0000000 --- a/assets/index.html-yPXvy2ZK.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-RP31lnfq.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-yYLEULdt.js b/assets/index.html-yYLEULdt.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-yYLEULdt.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-zqagt7gM.js b/assets/index.html-zqagt7gM.js new file mode 100644 index 0000000..f0a72d7 --- /dev/null +++ b/assets/index.html-zqagt7gM.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,b as r}from"./app-0NopiYEV.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/infoDiagram-a336098b-sHgg_VVf.js b/assets/infoDiagram-a336098b-ahMgvA-1.js similarity index 98% rename from assets/infoDiagram-a336098b-sHgg_VVf.js rename to assets/infoDiagram-a336098b-ahMgvA-1.js index bcacc90..1ffeb30 100644 --- a/assets/infoDiagram-a336098b-sHgg_VVf.js +++ b/assets/infoDiagram-a336098b-ahMgvA-1.js @@ -1,4 +1,4 @@ -import{l as Y,aJ as D,i as M}from"./mermaid.core-ygY5oRaR.js";import"./app-RP31lnfq.js";var O=function(){var a=function(u,t,e,n){for(e=e||{},n=u.length;n--;e[u[n]]=t);return e},f=[6,9,10],m={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,s,r,i,d){switch(i.length-1,r){case 1:return s;case 4:break;case 6:s.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},a(f,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},a(f,[2,3]),a(f,[2,4]),a(f,[2,5]),a(f,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(e.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=e,n}},parse:function(t){var e=this,n=[0],s=[],r=[null],i=[],d=this.table,P="",v=0,L=0,N=2,T=1,R=i.slice.call(arguments,1),o=Object.create(this.lexer),p={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(p.yy[E]=this.yy[E]);o.setInput(t,p.yy),p.yy.lexer=o,p.yy.parser=this,typeof o.yylloc>"u"&&(o.yylloc={});var I=o.yylloc;i.push(I);var z=o.options&&o.options.ranges;typeof p.yy.parseError=="function"?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function U(){var y;return y=s.pop()||o.lex()||T,typeof y!="number"&&(y instanceof Array&&(s=y,y=s.pop()),y=e.symbols_[y]||y),y}for(var l,g,h,w,_={},b,c,F,S;;){if(g=n[n.length-1],this.defaultActions[g]?h=this.defaultActions[g]:((l===null||typeof l>"u")&&(l=U()),h=d[g]&&d[g][l]),typeof h>"u"||!h.length||!h[0]){var A="";S=[];for(b in d[g])this.terminals_[b]&&b>N&&S.push("'"+this.terminals_[b]+"'");o.showPosition?A="Parse error on line "+(v+1)+`: +import{l as Y,aJ as D,i as M}from"./mermaid.core-YBgJFCkH.js";import"./app-0NopiYEV.js";var O=function(){var a=function(u,t,e,n){for(e=e||{},n=u.length;n--;e[u[n]]=t);return e},f=[6,9,10],m={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,s,r,i,d){switch(i.length-1,r){case 1:return s;case 4:break;case 6:s.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},a(f,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},a(f,[2,3]),a(f,[2,4]),a(f,[2,5]),a(f,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(e.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=e,n}},parse:function(t){var e=this,n=[0],s=[],r=[null],i=[],d=this.table,P="",v=0,L=0,N=2,T=1,R=i.slice.call(arguments,1),o=Object.create(this.lexer),p={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(p.yy[E]=this.yy[E]);o.setInput(t,p.yy),p.yy.lexer=o,p.yy.parser=this,typeof o.yylloc>"u"&&(o.yylloc={});var I=o.yylloc;i.push(I);var z=o.options&&o.options.ranges;typeof p.yy.parseError=="function"?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function U(){var y;return y=s.pop()||o.lex()||T,typeof y!="number"&&(y instanceof Array&&(s=y,y=s.pop()),y=e.symbols_[y]||y),y}for(var l,g,h,w,_={},b,c,F,S;;){if(g=n[n.length-1],this.defaultActions[g]?h=this.defaultActions[g]:((l===null||typeof l>"u")&&(l=U()),h=d[g]&&d[g][l]),typeof h>"u"||!h.length||!h[0]){var A="";S=[];for(b in d[g])this.terminals_[b]&&b>N&&S.push("'"+this.terminals_[b]+"'");o.showPosition?A="Parse error on line "+(v+1)+`: `+o.showPosition()+` Expecting `+S.join(", ")+", got '"+(this.terminals_[l]||l)+"'":A="Parse error on line "+(v+1)+": Unexpected "+(l==T?"end of input":"'"+(this.terminals_[l]||l)+"'"),this.parseError(A,{text:o.match,token:this.terminals_[l]||l,line:o.yylineno,loc:I,expected:S})}if(h[0]instanceof Array&&h.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+l);switch(h[0]){case 1:n.push(l),r.push(o.yytext),i.push(o.yylloc),n.push(h[1]),l=null,L=o.yyleng,P=o.yytext,v=o.yylineno,I=o.yylloc;break;case 2:if(c=this.productions_[h[1]][1],_.$=r[r.length-c],_._$={first_line:i[i.length-(c||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(c||1)].first_column,last_column:i[i.length-1].last_column},z&&(_._$.range=[i[i.length-(c||1)].range[0],i[i.length-1].range[1]]),w=this.performAction.apply(_,[P,L,v,p.yy,h[1],r,i].concat(R)),typeof w<"u")return w;c&&(n=n.slice(0,-1*c*2),r=r.slice(0,-1*c),i=i.slice(0,-1*c)),n.push(this.productions_[h[1]][0]),r.push(_.$),i.push(_._$),F=d[n[n.length-2]][n[n.length-1]],n.push(F);break;case 3:return!0}}return!0}},k=function(){var u={EOF:1,parseError:function(e,n){if(this.yy.parser)this.yy.parser.parseError(e,n);else throw new Error(e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var e=t.match(/(?:\r\n?|\n).*/g);return e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===s.length?this.yylloc.first_column:0)+s[s.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+` diff --git a/assets/install_zlmediakit_using_vcpkg.html-UmyH2ZVo.js b/assets/install_zlmediakit_using_vcpkg.html-tFAic-l6.js similarity index 99% rename from assets/install_zlmediakit_using_vcpkg.html-UmyH2ZVo.js rename to assets/install_zlmediakit_using_vcpkg.html-tFAic-l6.js index 06f295b..e900805 100644 --- a/assets/install_zlmediakit_using_vcpkg.html-UmyH2ZVo.js +++ b/assets/install_zlmediakit_using_vcpkg.html-tFAic-l6.js @@ -1,4 +1,4 @@ -import{_ as l,a as t}from"./install_zlmediakit_using_vcpkg_2-1HFW-yNt.js";import{_ as c}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as d,o as r,c as o,a as n,d as e,b as s,e as i}from"./app-RP31lnfq.js";const p={},u=n("h2",{id:"introduction",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#introduction","aria-hidden":"true"},"#"),e(" Introduction")],-1),v={href:"https://github.com/JackBoosY",target:"_blank",rel:"noopener noreferrer"},m=i(`

                  Installation Guide

                  1. Install vcpkg

                  Taking Linux platform as an example:

                  # Download vcpkg tool
                  +import{_ as l,a as t}from"./install_zlmediakit_using_vcpkg_2-1HFW-yNt.js";import{_ as c}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as d,o as r,c as o,a as n,d as e,b as s,e as i}from"./app-0NopiYEV.js";const p={},u=n("h2",{id:"introduction",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#introduction","aria-hidden":"true"},"#"),e(" Introduction")],-1),v={href:"https://github.com/JackBoosY",target:"_blank",rel:"noopener noreferrer"},m=i(`

                  Installation Guide

                  1. Install vcpkg

                  Taking Linux platform as an example:

                  # Download vcpkg tool
                   git clone https://github.com/microsoft/vcpkg
                   # Start the installation; if prompted with installation failure, please install the dependencies first
                   ./vcpkg/bootstrap-vcpkg.sh
                  diff --git a/assets/install_zlmediakit_using_vcpkg.html-uKojkOzg.js b/assets/install_zlmediakit_using_vcpkg.html-uFx2Qn-i.js
                  similarity index 99%
                  rename from assets/install_zlmediakit_using_vcpkg.html-uKojkOzg.js
                  rename to assets/install_zlmediakit_using_vcpkg.html-uFx2Qn-i.js
                  index 6ea59b6..c023801 100644
                  --- a/assets/install_zlmediakit_using_vcpkg.html-uKojkOzg.js
                  +++ b/assets/install_zlmediakit_using_vcpkg.html-uFx2Qn-i.js
                  @@ -1,4 +1,4 @@
                  -import{_ as l,a as c}from"./install_zlmediakit_using_vcpkg_2-1HFW-yNt.js";import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as r,c as p,a as n,d as e,b as s,e as i}from"./app-RP31lnfq.js";const o={},u=n("h1",{id:"简介",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#简介","aria-hidden":"true"},"#"),e(" 简介")],-1),v={href:"https://github.com/JackBoosY",target:"_blank",rel:"noopener noreferrer"},m=i(`

                  安装指导

                  1、安装 vcpkg

                  以 linux 平台为例:

                  # 下载vcpkg工具
                  +import{_ as l,a as c}from"./install_zlmediakit_using_vcpkg_2-1HFW-yNt.js";import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as r,c as p,a as n,d as e,b as s,e as i}from"./app-0NopiYEV.js";const o={},u=n("h1",{id:"简介",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#简介","aria-hidden":"true"},"#"),e(" 简介")],-1),v={href:"https://github.com/JackBoosY",target:"_blank",rel:"noopener noreferrer"},m=i(`

                  安装指导

                  1、安装 vcpkg

                  以 linux 平台为例:

                  # 下载vcpkg工具
                   git clone https://github.com/microsoft/vcpkg
                   # 开始安装;如果提示安装失败,请先安装依赖
                   ./vcpkg/bootstrap-vcpkg.sh
                  diff --git a/assets/introduction_to_streaming_media_related_technologies.html-JdpuYj-J.js b/assets/introduction_to_streaming_media_related_technologies.html-Zd-Cue_9.js
                  similarity index 99%
                  rename from assets/introduction_to_streaming_media_related_technologies.html-JdpuYj-J.js
                  rename to assets/introduction_to_streaming_media_related_technologies.html-Zd-Cue_9.js
                  index a603f26..e4efe7a 100644
                  --- a/assets/introduction_to_streaming_media_related_technologies.html-JdpuYj-J.js
                  +++ b/assets/introduction_to_streaming_media_related_technologies.html-Zd-Cue_9.js
                  @@ -1 +1 @@
                  -import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as p,c as e,e as r}from"./app-RP31lnfq.js";const a={},h=r('

                  1、流媒体简介

                  流媒体(streaming media)是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件,这对于实时性要求比较高的场景而言,显然是不现实的,所以流媒体技术为此孕育而生。

                  传统的视频监控、IPTV,以及这几年兴起的视频直播、网络授课都属于流媒体的范畴,从广义上来讲,视频通话,视频会议也属于流媒体。

                  2、视频监控

                  2.1 传统解决方案的现状和挑战

                  视频监控是流媒体技术传统的应用场景,在政府、企业以及现在逐渐流行的个人消费市场有着广泛的应用。特别是近几年来,国内各大城市逐步推进平安城市项目进程,在安防、交通等领域,视频监控市场规模愈发壮大。而且随着室内家居摄像头、车载记录仪的普及,视频监控可以说在人们的生活中无处不在。

                  传统的视频监控解决方案主要建立在基于 LAN 的网络、服务器、录像机和摄像机的基础之上。这些高度复杂的解决方案具有很高的施工和维护成本, 因为传统基础设施价格高昂,并且需要时间来规划、实施和维护。传统的视频监控解决方案也不好扩容维护,对于用户而言,也不友好,操作使用局限在局域网中,已经难以适合新时代的发展。

                  2.2 发展趋势

                  由于一些互联网企业的入局,视频监控行业也在经历一系列的变局,譬如小米摄像头、360 水滴摄像头的流行,也鞭策着传统的视频监控行业相关企业的变革(譬如海康威视推出的萤石云平台),虽然目前这些变革多数还局限于个人消费市场,但从长远来看,视频监控上云,是未来发展的大趋势。

                  基于云的视频监控解决方案由于其高质量、可靠性、安全性、便捷性以及较低的部署和维护成本而越来越受到人们的青睐。

                  预计未来视频监控,将像目前流行的网络直播一样方便,用户安装好摄像头后,接入网络即可视频上云。使用者在浏览器或 APP 即可查看所有摄像头的实时监控以及历史录像,通过 APP 或绑定的手机号码,可以实时接收摄像头发送的事件通知(譬如入侵事件)。

                  2.3 技术难点

                  由于历史原因,传统的视频监控行业技术栈多采用私有协议 SDK、onvif/rtsp 等协议栈。这些协议目前对浏览器而言都不友好,在以前 IE 浏览器还流行的时期,可以通过 ocx 插件的方式来对接这些协议,但是随着 IE 的没落以及目前流行的 chrome、火狐浏览器对原生插件的愈加不友好,通过插件的方式来实现访问监控视频的方式将愈发困难。如果要在 chrome、火狐浏览器上访问监控视频,目前有以下几种方案可行:

                  • rtmp

                    目前主流的 chrome 和火狐浏览器都还支持 flash 插件,所以目前在浏览器上还可以通过 rtmp 方式来访问监控视频。但是由于随着 html5 的普及以及 flash 的停止更新,预计可预见的未来,rtmp 技术将随着 flash 一起行将就木(谷歌宣布 chrome 浏览器 2020 年 12 月将不再支持 flash player)。

                  • http-flv

                  http-flv 直播的方式是一种比较新颖的方式,该技术基于 html5,可以通过无插件的方式实现视频直播,而且由于 rtmp 负载可以平滑的转换成 http-flv 协议,所以正在逐渐取代 rtmp 成为新的直播技术标准,目前各大直播网站(譬如斗鱼直播,bilibili 等)也陆续从 rtmp 切换成该技术。 但是由于浏览器的限制,不能同时打开过多(chrome 限制 6 个)的同域名下的直播窗口,所以该技术也不太适合多路同时打开(譬如 9 宫格视频)的视频监控领域。而且由于 Adobe 的不作为,flv 容器格式停止了更新,对 H265 的支持遥遥无期。

                  • ws-flv

                    ws-flv 直播技术基本与 http-flv 一致,无非是传输介质换成了 websocket 协议,除了解除了 http-flv 不能同时打开过多同域名下的直播窗口的限制,其他技术特性、参数基本与 http-flv 一致。目前看,ws-flv 既适合视频监控(可以同时打开多路监控视频)也适合视频直播行业,是 rtmp 很高的升级替代方案。

                  • webrtc

                    webrtc 是谷歌主导的视频通话技术标准,目前各大主流浏览器都兼容该标准。通过该技术,用户可以在浏览器上实现无插件的视频通话,该技术也可以用于实现低延时的视频直播。目前业界也有很多基于 webrtc 的应用和产品,但是很多局限于视频聊天等低延时交互式场景,在视频监控领域,目前还尚未流行。而且该技术栈目前还在持续更新,技术难点太多,要与视频监控领域融合还需时日。

                  • hls

                    hls 协议是苹果公司主导的技术标准,该技术标准兼容性最佳。不仅桌面浏览器,包括手机浏览器甚至是手机 QQ、手机微信都支持该直播协议。 但是该协议延时比较大,不太适合视频监控等对延时要求很敏感的行业。不过最近苹果公司新推出低延时 hls 直播标准,预计 hls 标准将抢占更大的市场份额。

                  以上直播技术标准目前都不完全契合视频监控行业的需求,如果要达到比较好的用户体验,通常以上技术混合使用。

                  3、视频直播

                  3.1 视频直播的现状和挑战

                  视频直播是近几年才兴起的产业,特别是随着游戏直播、手机直播的流行,视频直播已经司空见惯,进入了每个人的视野。 随着阿里、腾讯等云平台的入局,OBS,SRS 等优秀软件的开源,视频加速 CDN 技术的成熟,打赏、广告等商业模式的落地,目前视频直播产业链已经非常成熟,业界也诞生了斗鱼、虎牙、映客、花椒等知名直播平台。

                  目前而言,这些直播平台使用的技术栈基本都是 rtmp,但是由于 flash 技术即将被淘汰,所以直播行业也将迎来一些变局以及挑战。 现在,基本上所有的直播平台,在 web 端,都已经或正在往 http-flv 方案转型。由于 flv 与 rtmp 同出一门(都是 Adobe 公司产品),负载格式一致,方案升级改造平滑可靠,http-flv 替代 rtmp 具有天然的优势,相信将来 http-flv 能很好的挑起 rtmp 的大梁。

                  3.2 发展趋势

                  视频直播目前从内容上来讲,涵盖了游戏、美女、户外、娱乐、体育等直播;从设备上来讲,涵盖了 PC、手机、web、电视等客户端,市场上也诞生了斗鱼这样的头部企业。从目前来看,视频直播行业市场格局已经比较稳固,进入了平稳发展期。

                  从技术上来讲,直播行业也将迎来一些变革。 一是 rtmp 技术随着 flash 的一起淘汰,web 端 rtmp 播放器将成为历史。 二是随着 webrtc 的强势流行,直播技术栈可能与 webrtc 融合。 三是苹果主导的低延时 hls 的推出,可能最终有大一统之势。

                  不过近期来看,http-flv 是 rtmp 的最佳替代方案,但是和 rtmp 一样,也有不支持 H265 的短板,而且移动端浏览器对此支持并不完善,所以该方案在将来有大概率会被其他方案替代。

                  3.3 技术难点

                  直播行业相对视频监控行业来说,商业化程度更高,更面向于普通消费者,用户规模更大,产业链也更加成熟。但是由于利益格局的划分、巨头间标准制定的角力,目前直播的技术标准和用户体验是割裂的。

                  在桌面 web 端,之前直播技术由 Adobe 旗下的 flash/rtmp 技术主导,不过由于 Adobe 的不作为,以及谷歌苹果等公司的抵制,flash 已经进入死亡倒计时。目前来看,http-flv 已经接手 rtmp 的大旗,成为了新的事实上的桌面 web 端直播标准。但是 http-flv 由于其不支持 H265 的短板(Adobe 官方可能永远也不会支持 H265),其地位也并不稳固,现在也有公司正在尝试使用 webrtc 进行视频直播,但是由于该技术跨界太大,其技术栈又太庞杂,整个上下游产业链也并不完善,目前在直播界,还未看见大规模采用该直播技术的方案实施。

                  在手机 APP 端,由于播放技术自己可以主导,也由于历史沿革原因,目前一般沿用 rtmp 技术方案(需要指出的是微信小程序也支持 rtmp 播放器),用户体验比较好,延时一般 3 秒或以下。

                  在移动 web 端,可采用的直播方案更少,目前基本只能采用苹果公司主导的 hls 方案,但是由于 hls 的技术特性,延时非常大(一般 5 秒以上,最大可达 10 秒以上),其观看体验跟手机 APP、桌面 web 端是严重割裂的。

                  通过我们上述的分析看出,目前直播技术方案,在每种端都不一样,用户体验也差距巨大,目前并没有一种多平台支持、令人满意的通用解决方案。目前要实现一个完善的直播产品,最少要采用包括 rtmp/http-flv/hls 这 3 种技术方案,而且这三种技术方案目前也并不能让人满意(rtmp/http-flv 不支持 H265,hls 延时高)。

                  4、我们的解决方案以及优势

                  目前我们的流媒体服务框架支持 rtsp/rtmp 推流客户端,rtsp/rtmp/http-flv/ws-flv/hls 播放客户端,并且可以无缝把 rtsp/rtmp 推流转换成上述 4 种播放协议,同时我们也支持 mp4 录制存档,必要的时候也可以从 mp4 文件加载成直播流。

                  除了上述功能之外,我们还支持拉流 rtsp/rtmp 代理成 rtsp/rtmp/http-flv/ws-flv/hls,也支持把直播 rtsp/rtmp 流推送到其他的服务器。

                  另外,我们还提供丰富的 http api 以及 http hook api,通过这些 api,我们可以与其他业务服务器一起,打造丰富的业务逻辑。

                  我们的流媒体框架支持 linux、macos、ios、android、windows 全平台,既可以作为商用的流媒体服务器,也可以移植到嵌入式设备中,作为基础流媒体服务组件。

                  代码采用 C++11 标准打造,避免使用裸指针,稳定可靠,采用 epoll 多路复用、线程池、异步网络 IO 模式开发,并发性能优越,已经经受住了长期的高并发验证考验。同时针对及时推流的特征,做了特别的优化,可以减少视频打开延时、提高画面打开成功率,让用户获取画面秒开,延时极低的体验。

                  ',37),l=[h];function i(s,d){return p(),e("div",null,l)}const c=t(a,[["render",i],["__file","introduction_to_streaming_media_related_technologies.html.vue"]]);export{c as default}; +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as p,c as e,e as r}from"./app-0NopiYEV.js";const a={},h=r('

                  1、流媒体简介

                  流媒体(streaming media)是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件,这对于实时性要求比较高的场景而言,显然是不现实的,所以流媒体技术为此孕育而生。

                  传统的视频监控、IPTV,以及这几年兴起的视频直播、网络授课都属于流媒体的范畴,从广义上来讲,视频通话,视频会议也属于流媒体。

                  2、视频监控

                  2.1 传统解决方案的现状和挑战

                  视频监控是流媒体技术传统的应用场景,在政府、企业以及现在逐渐流行的个人消费市场有着广泛的应用。特别是近几年来,国内各大城市逐步推进平安城市项目进程,在安防、交通等领域,视频监控市场规模愈发壮大。而且随着室内家居摄像头、车载记录仪的普及,视频监控可以说在人们的生活中无处不在。

                  传统的视频监控解决方案主要建立在基于 LAN 的网络、服务器、录像机和摄像机的基础之上。这些高度复杂的解决方案具有很高的施工和维护成本, 因为传统基础设施价格高昂,并且需要时间来规划、实施和维护。传统的视频监控解决方案也不好扩容维护,对于用户而言,也不友好,操作使用局限在局域网中,已经难以适合新时代的发展。

                  2.2 发展趋势

                  由于一些互联网企业的入局,视频监控行业也在经历一系列的变局,譬如小米摄像头、360 水滴摄像头的流行,也鞭策着传统的视频监控行业相关企业的变革(譬如海康威视推出的萤石云平台),虽然目前这些变革多数还局限于个人消费市场,但从长远来看,视频监控上云,是未来发展的大趋势。

                  基于云的视频监控解决方案由于其高质量、可靠性、安全性、便捷性以及较低的部署和维护成本而越来越受到人们的青睐。

                  预计未来视频监控,将像目前流行的网络直播一样方便,用户安装好摄像头后,接入网络即可视频上云。使用者在浏览器或 APP 即可查看所有摄像头的实时监控以及历史录像,通过 APP 或绑定的手机号码,可以实时接收摄像头发送的事件通知(譬如入侵事件)。

                  2.3 技术难点

                  由于历史原因,传统的视频监控行业技术栈多采用私有协议 SDK、onvif/rtsp 等协议栈。这些协议目前对浏览器而言都不友好,在以前 IE 浏览器还流行的时期,可以通过 ocx 插件的方式来对接这些协议,但是随着 IE 的没落以及目前流行的 chrome、火狐浏览器对原生插件的愈加不友好,通过插件的方式来实现访问监控视频的方式将愈发困难。如果要在 chrome、火狐浏览器上访问监控视频,目前有以下几种方案可行:

                  • rtmp

                    目前主流的 chrome 和火狐浏览器都还支持 flash 插件,所以目前在浏览器上还可以通过 rtmp 方式来访问监控视频。但是由于随着 html5 的普及以及 flash 的停止更新,预计可预见的未来,rtmp 技术将随着 flash 一起行将就木(谷歌宣布 chrome 浏览器 2020 年 12 月将不再支持 flash player)。

                  • http-flv

                  http-flv 直播的方式是一种比较新颖的方式,该技术基于 html5,可以通过无插件的方式实现视频直播,而且由于 rtmp 负载可以平滑的转换成 http-flv 协议,所以正在逐渐取代 rtmp 成为新的直播技术标准,目前各大直播网站(譬如斗鱼直播,bilibili 等)也陆续从 rtmp 切换成该技术。 但是由于浏览器的限制,不能同时打开过多(chrome 限制 6 个)的同域名下的直播窗口,所以该技术也不太适合多路同时打开(譬如 9 宫格视频)的视频监控领域。而且由于 Adobe 的不作为,flv 容器格式停止了更新,对 H265 的支持遥遥无期。

                  • ws-flv

                    ws-flv 直播技术基本与 http-flv 一致,无非是传输介质换成了 websocket 协议,除了解除了 http-flv 不能同时打开过多同域名下的直播窗口的限制,其他技术特性、参数基本与 http-flv 一致。目前看,ws-flv 既适合视频监控(可以同时打开多路监控视频)也适合视频直播行业,是 rtmp 很高的升级替代方案。

                  • webrtc

                    webrtc 是谷歌主导的视频通话技术标准,目前各大主流浏览器都兼容该标准。通过该技术,用户可以在浏览器上实现无插件的视频通话,该技术也可以用于实现低延时的视频直播。目前业界也有很多基于 webrtc 的应用和产品,但是很多局限于视频聊天等低延时交互式场景,在视频监控领域,目前还尚未流行。而且该技术栈目前还在持续更新,技术难点太多,要与视频监控领域融合还需时日。

                  • hls

                    hls 协议是苹果公司主导的技术标准,该技术标准兼容性最佳。不仅桌面浏览器,包括手机浏览器甚至是手机 QQ、手机微信都支持该直播协议。 但是该协议延时比较大,不太适合视频监控等对延时要求很敏感的行业。不过最近苹果公司新推出低延时 hls 直播标准,预计 hls 标准将抢占更大的市场份额。

                  以上直播技术标准目前都不完全契合视频监控行业的需求,如果要达到比较好的用户体验,通常以上技术混合使用。

                  3、视频直播

                  3.1 视频直播的现状和挑战

                  视频直播是近几年才兴起的产业,特别是随着游戏直播、手机直播的流行,视频直播已经司空见惯,进入了每个人的视野。 随着阿里、腾讯等云平台的入局,OBS,SRS 等优秀软件的开源,视频加速 CDN 技术的成熟,打赏、广告等商业模式的落地,目前视频直播产业链已经非常成熟,业界也诞生了斗鱼、虎牙、映客、花椒等知名直播平台。

                  目前而言,这些直播平台使用的技术栈基本都是 rtmp,但是由于 flash 技术即将被淘汰,所以直播行业也将迎来一些变局以及挑战。 现在,基本上所有的直播平台,在 web 端,都已经或正在往 http-flv 方案转型。由于 flv 与 rtmp 同出一门(都是 Adobe 公司产品),负载格式一致,方案升级改造平滑可靠,http-flv 替代 rtmp 具有天然的优势,相信将来 http-flv 能很好的挑起 rtmp 的大梁。

                  3.2 发展趋势

                  视频直播目前从内容上来讲,涵盖了游戏、美女、户外、娱乐、体育等直播;从设备上来讲,涵盖了 PC、手机、web、电视等客户端,市场上也诞生了斗鱼这样的头部企业。从目前来看,视频直播行业市场格局已经比较稳固,进入了平稳发展期。

                  从技术上来讲,直播行业也将迎来一些变革。 一是 rtmp 技术随着 flash 的一起淘汰,web 端 rtmp 播放器将成为历史。 二是随着 webrtc 的强势流行,直播技术栈可能与 webrtc 融合。 三是苹果主导的低延时 hls 的推出,可能最终有大一统之势。

                  不过近期来看,http-flv 是 rtmp 的最佳替代方案,但是和 rtmp 一样,也有不支持 H265 的短板,而且移动端浏览器对此支持并不完善,所以该方案在将来有大概率会被其他方案替代。

                  3.3 技术难点

                  直播行业相对视频监控行业来说,商业化程度更高,更面向于普通消费者,用户规模更大,产业链也更加成熟。但是由于利益格局的划分、巨头间标准制定的角力,目前直播的技术标准和用户体验是割裂的。

                  在桌面 web 端,之前直播技术由 Adobe 旗下的 flash/rtmp 技术主导,不过由于 Adobe 的不作为,以及谷歌苹果等公司的抵制,flash 已经进入死亡倒计时。目前来看,http-flv 已经接手 rtmp 的大旗,成为了新的事实上的桌面 web 端直播标准。但是 http-flv 由于其不支持 H265 的短板(Adobe 官方可能永远也不会支持 H265),其地位也并不稳固,现在也有公司正在尝试使用 webrtc 进行视频直播,但是由于该技术跨界太大,其技术栈又太庞杂,整个上下游产业链也并不完善,目前在直播界,还未看见大规模采用该直播技术的方案实施。

                  在手机 APP 端,由于播放技术自己可以主导,也由于历史沿革原因,目前一般沿用 rtmp 技术方案(需要指出的是微信小程序也支持 rtmp 播放器),用户体验比较好,延时一般 3 秒或以下。

                  在移动 web 端,可采用的直播方案更少,目前基本只能采用苹果公司主导的 hls 方案,但是由于 hls 的技术特性,延时非常大(一般 5 秒以上,最大可达 10 秒以上),其观看体验跟手机 APP、桌面 web 端是严重割裂的。

                  通过我们上述的分析看出,目前直播技术方案,在每种端都不一样,用户体验也差距巨大,目前并没有一种多平台支持、令人满意的通用解决方案。目前要实现一个完善的直播产品,最少要采用包括 rtmp/http-flv/hls 这 3 种技术方案,而且这三种技术方案目前也并不能让人满意(rtmp/http-flv 不支持 H265,hls 延时高)。

                  4、我们的解决方案以及优势

                  目前我们的流媒体服务框架支持 rtsp/rtmp 推流客户端,rtsp/rtmp/http-flv/ws-flv/hls 播放客户端,并且可以无缝把 rtsp/rtmp 推流转换成上述 4 种播放协议,同时我们也支持 mp4 录制存档,必要的时候也可以从 mp4 文件加载成直播流。

                  除了上述功能之外,我们还支持拉流 rtsp/rtmp 代理成 rtsp/rtmp/http-flv/ws-flv/hls,也支持把直播 rtsp/rtmp 流推送到其他的服务器。

                  另外,我们还提供丰富的 http api 以及 http hook api,通过这些 api,我们可以与其他业务服务器一起,打造丰富的业务逻辑。

                  我们的流媒体框架支持 linux、macos、ios、android、windows 全平台,既可以作为商用的流媒体服务器,也可以移植到嵌入式设备中,作为基础流媒体服务组件。

                  代码采用 C++11 标准打造,避免使用裸指针,稳定可靠,采用 epoll 多路复用、线程池、异步网络 IO 模式开发,并发性能优越,已经经受住了长期的高并发验证考验。同时针对及时推流的特征,做了特别的优化,可以减少视频打开延时、提高画面打开成功率,让用户获取画面秒开,延时极低的体验。

                  ',37),l=[h];function i(s,d){return p(),e("div",null,l)}const c=t(a,[["render",i],["__file","introduction_to_streaming_media_related_technologies.html.vue"]]);export{c as default}; diff --git a/assets/introduction_to_streaming_media_related_technologies.html-tum5EDuc.js b/assets/introduction_to_streaming_media_related_technologies.html-jd9Zwqd3.js similarity index 99% rename from assets/introduction_to_streaming_media_related_technologies.html-tum5EDuc.js rename to assets/introduction_to_streaming_media_related_technologies.html-jd9Zwqd3.js index 6a61982..7760160 100644 --- a/assets/introduction_to_streaming_media_related_technologies.html-tum5EDuc.js +++ b/assets/introduction_to_streaming_media_related_technologies.html-jd9Zwqd3.js @@ -1 +1 @@ -import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as p,c as e,e as r}from"./app-RP31lnfq.js";const a={},h=r('

                  1、流媒体简介

                  流媒体(streaming media)是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件,这对于实时性要求比较高的场景而言,显然是不现实的,所以流媒体技术为此孕育而生。

                  传统的视频监控、IPTV,以及这几年兴起的视频直播、网络授课都属于流媒体的范畴,从广义上来讲,视频通话,视频会议也属于流媒体。

                  2、视频监控

                  2.1 传统解决方案的现状和挑战

                  视频监控是流媒体技术传统的应用场景,在政府、企业以及现在逐渐流行的个人消费市场有着广泛的应用。特别是近几年来,国内各大城市逐步推进平安城市项目进程,在安防、交通等领域,视频监控市场规模愈发壮大。而且随着室内家居摄像头、车载记录仪的普及,视频监控可以说在人们的生活中无处不在。

                  传统的视频监控解决方案主要建立在基于 LAN 的网络、服务器、录像机和摄像机的基础之上。这些高度复杂的解决方案具有很高的施工和维护成本, 因为传统基础设施价格高昂,并且需要时间来规划、实施和维护。传统的视频监控解决方案也不好扩容维护,对于用户而言,也不友好,操作使用局限在局域网中,已经难以适合新时代的发展。

                  2.2 发展趋势

                  由于一些互联网企业的入局,视频监控行业也在经历一系列的变局,譬如小米摄像头、360 水滴摄像头的流行,也鞭策着传统的视频监控行业相关企业的变革(譬如海康威视推出的萤石云平台),虽然目前这些变革多数还局限于个人消费市场,但从长远来看,视频监控上云,是未来发展的大趋势。

                  基于云的视频监控解决方案由于其高质量、可靠性、安全性、便捷性以及较低的部署和维护成本而越来越受到人们的青睐。

                  预计未来视频监控,将像目前流行的网络直播一样方便,用户安装好摄像头后,接入网络即可视频上云。使用者在浏览器或 APP 即可查看所有摄像头的实时监控以及历史录像,通过 APP 或绑定的手机号码,可以实时接收摄像头发送的事件通知(譬如入侵事件)。

                  2.3 技术难点

                  由于历史原因,传统的视频监控行业技术栈多采用私有协议 SDK、onvif/rtsp 等协议栈。这些协议目前对浏览器而言都不友好,在以前 IE 浏览器还流行的时期,可以通过 ocx 插件的方式来对接这些协议,但是随着 IE 的没落以及目前流行的 chrome、火狐浏览器对原生插件的愈加不友好,通过插件的方式来实现访问监控视频的方式将愈发困难。如果要在 chrome、火狐浏览器上访问监控视频,目前有以下几种方案可行:

                  • rtmp

                    目前主流的 chrome 和火狐浏览器都还支持 flash 插件,所以目前在浏览器上还可以通过 rtmp 方式来访问监控视频。但是由于随着 html5 的普及以及 flash 的停止更新,预计可预见的未来,rtmp 技术将随着 flash 一起行将就木(谷歌宣布 chrom 浏览器 2020 年 12 月将不再支持 flash player)。

                  • http-flv

                    http-flv 直播的方式是一种比较新颖的方式,该技术基于 html5,可以通过无插件的方式实现视频直播,而且由于 rtmp 负载可以平滑的转换成 http-flv 协议,所以正在逐渐取代 rtmp 成为新的直播技术标准,目前各大直播网站(譬如斗鱼直播,bilibili 等)也陆续从 rtmp 切换成该技术。 但是由于浏览器的限制,不能同时打开过多(chrome 限制 6 个)的同域名下的直播窗口,所以该技术也不太适合多路同时打开(譬如 9 宫格视频)的视频监控领域。而且由于 Adobe 的不作为,flv 容器格式停止了更新,对 H265 的支持遥遥无期。

                  • ws-flv

                    ws-flv 直播技术基本与 http-flv 一致,无非是传输介质换成了 websocket 协议,除了解除了 http-flv 不能同时打开过多同域名下的直播窗口的限制,其他技术特性、参数基本与 http-flv 一致。目前看,ws-flv 既适合视频监控(可以同时打开多路监控视频)也适合视频直播行业,是 rtmp 很高的升级替代方案。

                  • webrtc

                    webrtc 是谷歌主导的视频通话技术标准,目前各大主流浏览器都兼容该标准。通过该技术,用户可以在浏览器上实现无插件的视频通话,该技术也可以用于实现低延时的视频直播。目前业界也有很多基于 webrtc 的应用和产品,但是很多局限于视频聊天等低延时交互式场景,在视频监控领域,目前还尚未流行。而且该技术栈目前还在持续更新,技术难点太多,要与视频监控领域融合还需时日。

                  • hls

                    hls 协议是苹果公司主导的技术标准,该技术标准兼容性最佳。不仅桌面浏览器,包括手机浏览器甚至是手机 QQ、手机微信都支持该直播协议。 但是该协议延时比较大,不太适合视频监控等对延时要求很敏感的行业。不过最近苹果公司新推出低延时 hls 直播标准,预计 hls 标准将抢占更大的市场份额。

                  以上直播技术标准目前都不完全契合视频监控行业的需求,如果要达到比较好的用户体验,通常以上技术混合使用。

                  3、视频直播

                  3.1 视频直播的现状和挑战

                  视频直播是近几年才兴起的产业,特别是随着游戏直播、手机直播的流行,视频直播已经司空见惯,进入了每个人的视野。 随着阿里、腾讯等云平台的入局,OBS,SRS 等优秀软件的开源,视频加速 CDN 技术的成熟,打赏、广告等商业模式的落地,目前视频直播产业链已经非常成熟,业界也诞生了斗鱼、虎牙、映客、花椒等知名直播平台。

                  目前而言,这些直播平台使用的技术栈基本都是 rtmp,但是由于 flash 技术即将被淘汰,所以直播行业也将迎来一些变局以及挑战。 现在,基本上所有的直播平台,在 web 端,都已经或正在往 http-flv 方案转型。由于 flv 与 rtmp 同出一门(都是 Adobe 公司产品),负载格式一致,方案升级改造平滑可靠,http-flv 替代 rtmp 具有天然的优势,相信将来 http-flv 能很好的挑起 rtmp 的大梁。

                  3.2 发展趋势

                  视频直播目前从内容上来讲,涵盖了游戏、美女、户外、娱乐、体育等直播;从设备上来讲,涵盖了 PC、手机、web、电视等客户端,市场上也诞生了斗鱼这样的头部企业。从目前来看,视频直播行业市场格局已经比较稳固,进入了平稳发展期。

                  从技术上来讲,直播行业也将迎来一些变革。 一是 rtmp 技术随着 flash 的一起淘汰,web 端 rtmp 播放器将成为历史。 二是随着 webrtc 的强势流行,直播技术栈可能与 webrtc 融合。 三是苹果主导的低延时 hls 的推出,可能最终有大一统之势。

                  不过近期来看,http-flv 是 rtmp 的最佳替代方案,但是和 rtmp 一样,也有不支持 H265 的短板,而且移动端浏览器对此支持并不完善,所以该方案在将来有大概率会被其他方案替代。

                  3.3 技术难点

                  直播行业相对视频监控行业来说,商业化程度更高,更面向于普通消费者,用户规模更大,产业链也更加成熟。但是由于利益格局的划分、巨头间标准制定的角力,目前直播的技术标准和用户体验是割裂的。

                  在桌面 web 端,之前直播技术由 Adobe 旗下的 flash/rtmp 技术主导,不过由于 Adobe 的不作为,以及谷歌苹果等公司的抵制,flash 已经进入死亡倒计时。目前来看,http-flv 已经接手 rtmp 的大旗,成为了新的事实上的桌面 web 端直播标准。但是 http-flv 由于其不支持 H265 的短板(Adobe 官方可能永远也不会支持 H265),其地位也并不稳固,现在也有公司正在尝试使用 webrtc 进行视频直播,但是由于该技术跨界太大,其技术栈又太庞杂,整个上下游产业链也并不完善,目前在直播界,还未看见大规模采用该直播技术的方案实施。

                  在手机 APP 端,由于播放技术自己可以主导,也由于历史沿革原因,目前一般沿用 rtmp 技术方案(需要指出的是微信小程序也支持 rtmp 播放器),用户体验比较好,延时一般 3 秒或以下。

                  在移动 web 端,可采用的直播方案更少,目前基本只能采用苹果公司主导的 hls 方案,但是由于 hls 的技术特性,延时非常大(一般 5 秒以上,最大可达 10 秒以上),其观看体验跟手机 APP、桌面 web 端是严重割裂的。

                  通过我们上述的分析看出,目前直播技术方案,在每种端都不一样,用户体验也差距巨大,目前并没有一种多平台支持、令人满意的通用解决方案。目前要实现一个完善的直播产品,最少要采用包括 rtmp/http-flv/hls 这 3 种技术方案,而且这三种技术方案目前也并不能让人满意(rtmp/http-flv 不支持 H265,hls 延时高)。

                  4、我们的解决方案以及优势

                  目前我们的流媒体服务框架支持 rtsp/rtmp 推流客户端,rtsp/rtmp/http-flv/ws-flv/hls 播放客户端,并且可以无缝把 rtsp/rtmp 推流转换成上述 4 种播放协议,同时我们也支持 mp4 录制存档,必要的时候也可以从 mp4 文件加载成直播流。

                  除了上述功能之外,我们还支持拉流 rtsp/rtmp 代理成 rtsp/rtmp/http-flv/ws-flv/hls,也支持把直播 rtsp/rtmp 流推送到其他的服务器。

                  另外,我们还提供丰富的 http api 以及 http hook api,通过这些 api,我们可以与其他业务服务器一起,打造丰富的业务逻辑。

                  我们的流媒体框架支持 linux、macos、ios、android、windows 全平台,既可以作为商用的流媒体服务器,也可以移植到嵌入式设备中,作为基础流媒体服务组件。

                  代码采用 C++11 标准打造,避免使用裸指针,稳定可靠,采用 epoll 多路复用、线程池、异步网络 IO 模式开发,并发性能优越,已经经受住了长期的高并发验证考验。同时针对及时推流的特征,做了特别的优化,可以减少视频打开延时、提高画面打开成功率,让用户获取画面秒开,延时极低的体验。

                  ',35),l=[h];function i(s,d){return p(),e("div",null,l)}const c=t(a,[["render",i],["__file","introduction_to_streaming_media_related_technologies.html.vue"]]);export{c as default}; +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as p,c as e,e as r}from"./app-0NopiYEV.js";const a={},h=r('

                  1、流媒体简介

                  流媒体(streaming media)是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件,这对于实时性要求比较高的场景而言,显然是不现实的,所以流媒体技术为此孕育而生。

                  传统的视频监控、IPTV,以及这几年兴起的视频直播、网络授课都属于流媒体的范畴,从广义上来讲,视频通话,视频会议也属于流媒体。

                  2、视频监控

                  2.1 传统解决方案的现状和挑战

                  视频监控是流媒体技术传统的应用场景,在政府、企业以及现在逐渐流行的个人消费市场有着广泛的应用。特别是近几年来,国内各大城市逐步推进平安城市项目进程,在安防、交通等领域,视频监控市场规模愈发壮大。而且随着室内家居摄像头、车载记录仪的普及,视频监控可以说在人们的生活中无处不在。

                  传统的视频监控解决方案主要建立在基于 LAN 的网络、服务器、录像机和摄像机的基础之上。这些高度复杂的解决方案具有很高的施工和维护成本, 因为传统基础设施价格高昂,并且需要时间来规划、实施和维护。传统的视频监控解决方案也不好扩容维护,对于用户而言,也不友好,操作使用局限在局域网中,已经难以适合新时代的发展。

                  2.2 发展趋势

                  由于一些互联网企业的入局,视频监控行业也在经历一系列的变局,譬如小米摄像头、360 水滴摄像头的流行,也鞭策着传统的视频监控行业相关企业的变革(譬如海康威视推出的萤石云平台),虽然目前这些变革多数还局限于个人消费市场,但从长远来看,视频监控上云,是未来发展的大趋势。

                  基于云的视频监控解决方案由于其高质量、可靠性、安全性、便捷性以及较低的部署和维护成本而越来越受到人们的青睐。

                  预计未来视频监控,将像目前流行的网络直播一样方便,用户安装好摄像头后,接入网络即可视频上云。使用者在浏览器或 APP 即可查看所有摄像头的实时监控以及历史录像,通过 APP 或绑定的手机号码,可以实时接收摄像头发送的事件通知(譬如入侵事件)。

                  2.3 技术难点

                  由于历史原因,传统的视频监控行业技术栈多采用私有协议 SDK、onvif/rtsp 等协议栈。这些协议目前对浏览器而言都不友好,在以前 IE 浏览器还流行的时期,可以通过 ocx 插件的方式来对接这些协议,但是随着 IE 的没落以及目前流行的 chrome、火狐浏览器对原生插件的愈加不友好,通过插件的方式来实现访问监控视频的方式将愈发困难。如果要在 chrome、火狐浏览器上访问监控视频,目前有以下几种方案可行:

                  • rtmp

                    目前主流的 chrome 和火狐浏览器都还支持 flash 插件,所以目前在浏览器上还可以通过 rtmp 方式来访问监控视频。但是由于随着 html5 的普及以及 flash 的停止更新,预计可预见的未来,rtmp 技术将随着 flash 一起行将就木(谷歌宣布 chrom 浏览器 2020 年 12 月将不再支持 flash player)。

                  • http-flv

                    http-flv 直播的方式是一种比较新颖的方式,该技术基于 html5,可以通过无插件的方式实现视频直播,而且由于 rtmp 负载可以平滑的转换成 http-flv 协议,所以正在逐渐取代 rtmp 成为新的直播技术标准,目前各大直播网站(譬如斗鱼直播,bilibili 等)也陆续从 rtmp 切换成该技术。 但是由于浏览器的限制,不能同时打开过多(chrome 限制 6 个)的同域名下的直播窗口,所以该技术也不太适合多路同时打开(譬如 9 宫格视频)的视频监控领域。而且由于 Adobe 的不作为,flv 容器格式停止了更新,对 H265 的支持遥遥无期。

                  • ws-flv

                    ws-flv 直播技术基本与 http-flv 一致,无非是传输介质换成了 websocket 协议,除了解除了 http-flv 不能同时打开过多同域名下的直播窗口的限制,其他技术特性、参数基本与 http-flv 一致。目前看,ws-flv 既适合视频监控(可以同时打开多路监控视频)也适合视频直播行业,是 rtmp 很高的升级替代方案。

                  • webrtc

                    webrtc 是谷歌主导的视频通话技术标准,目前各大主流浏览器都兼容该标准。通过该技术,用户可以在浏览器上实现无插件的视频通话,该技术也可以用于实现低延时的视频直播。目前业界也有很多基于 webrtc 的应用和产品,但是很多局限于视频聊天等低延时交互式场景,在视频监控领域,目前还尚未流行。而且该技术栈目前还在持续更新,技术难点太多,要与视频监控领域融合还需时日。

                  • hls

                    hls 协议是苹果公司主导的技术标准,该技术标准兼容性最佳。不仅桌面浏览器,包括手机浏览器甚至是手机 QQ、手机微信都支持该直播协议。 但是该协议延时比较大,不太适合视频监控等对延时要求很敏感的行业。不过最近苹果公司新推出低延时 hls 直播标准,预计 hls 标准将抢占更大的市场份额。

                  以上直播技术标准目前都不完全契合视频监控行业的需求,如果要达到比较好的用户体验,通常以上技术混合使用。

                  3、视频直播

                  3.1 视频直播的现状和挑战

                  视频直播是近几年才兴起的产业,特别是随着游戏直播、手机直播的流行,视频直播已经司空见惯,进入了每个人的视野。 随着阿里、腾讯等云平台的入局,OBS,SRS 等优秀软件的开源,视频加速 CDN 技术的成熟,打赏、广告等商业模式的落地,目前视频直播产业链已经非常成熟,业界也诞生了斗鱼、虎牙、映客、花椒等知名直播平台。

                  目前而言,这些直播平台使用的技术栈基本都是 rtmp,但是由于 flash 技术即将被淘汰,所以直播行业也将迎来一些变局以及挑战。 现在,基本上所有的直播平台,在 web 端,都已经或正在往 http-flv 方案转型。由于 flv 与 rtmp 同出一门(都是 Adobe 公司产品),负载格式一致,方案升级改造平滑可靠,http-flv 替代 rtmp 具有天然的优势,相信将来 http-flv 能很好的挑起 rtmp 的大梁。

                  3.2 发展趋势

                  视频直播目前从内容上来讲,涵盖了游戏、美女、户外、娱乐、体育等直播;从设备上来讲,涵盖了 PC、手机、web、电视等客户端,市场上也诞生了斗鱼这样的头部企业。从目前来看,视频直播行业市场格局已经比较稳固,进入了平稳发展期。

                  从技术上来讲,直播行业也将迎来一些变革。 一是 rtmp 技术随着 flash 的一起淘汰,web 端 rtmp 播放器将成为历史。 二是随着 webrtc 的强势流行,直播技术栈可能与 webrtc 融合。 三是苹果主导的低延时 hls 的推出,可能最终有大一统之势。

                  不过近期来看,http-flv 是 rtmp 的最佳替代方案,但是和 rtmp 一样,也有不支持 H265 的短板,而且移动端浏览器对此支持并不完善,所以该方案在将来有大概率会被其他方案替代。

                  3.3 技术难点

                  直播行业相对视频监控行业来说,商业化程度更高,更面向于普通消费者,用户规模更大,产业链也更加成熟。但是由于利益格局的划分、巨头间标准制定的角力,目前直播的技术标准和用户体验是割裂的。

                  在桌面 web 端,之前直播技术由 Adobe 旗下的 flash/rtmp 技术主导,不过由于 Adobe 的不作为,以及谷歌苹果等公司的抵制,flash 已经进入死亡倒计时。目前来看,http-flv 已经接手 rtmp 的大旗,成为了新的事实上的桌面 web 端直播标准。但是 http-flv 由于其不支持 H265 的短板(Adobe 官方可能永远也不会支持 H265),其地位也并不稳固,现在也有公司正在尝试使用 webrtc 进行视频直播,但是由于该技术跨界太大,其技术栈又太庞杂,整个上下游产业链也并不完善,目前在直播界,还未看见大规模采用该直播技术的方案实施。

                  在手机 APP 端,由于播放技术自己可以主导,也由于历史沿革原因,目前一般沿用 rtmp 技术方案(需要指出的是微信小程序也支持 rtmp 播放器),用户体验比较好,延时一般 3 秒或以下。

                  在移动 web 端,可采用的直播方案更少,目前基本只能采用苹果公司主导的 hls 方案,但是由于 hls 的技术特性,延时非常大(一般 5 秒以上,最大可达 10 秒以上),其观看体验跟手机 APP、桌面 web 端是严重割裂的。

                  通过我们上述的分析看出,目前直播技术方案,在每种端都不一样,用户体验也差距巨大,目前并没有一种多平台支持、令人满意的通用解决方案。目前要实现一个完善的直播产品,最少要采用包括 rtmp/http-flv/hls 这 3 种技术方案,而且这三种技术方案目前也并不能让人满意(rtmp/http-flv 不支持 H265,hls 延时高)。

                  4、我们的解决方案以及优势

                  目前我们的流媒体服务框架支持 rtsp/rtmp 推流客户端,rtsp/rtmp/http-flv/ws-flv/hls 播放客户端,并且可以无缝把 rtsp/rtmp 推流转换成上述 4 种播放协议,同时我们也支持 mp4 录制存档,必要的时候也可以从 mp4 文件加载成直播流。

                  除了上述功能之外,我们还支持拉流 rtsp/rtmp 代理成 rtsp/rtmp/http-flv/ws-flv/hls,也支持把直播 rtsp/rtmp 流推送到其他的服务器。

                  另外,我们还提供丰富的 http api 以及 http hook api,通过这些 api,我们可以与其他业务服务器一起,打造丰富的业务逻辑。

                  我们的流媒体框架支持 linux、macos、ios、android、windows 全平台,既可以作为商用的流媒体服务器,也可以移植到嵌入式设备中,作为基础流媒体服务组件。

                  代码采用 C++11 标准打造,避免使用裸指针,稳定可靠,采用 epoll 多路复用、线程池、异步网络 IO 模式开发,并发性能优越,已经经受住了长期的高并发验证考验。同时针对及时推流的特征,做了特别的优化,可以减少视频打开延时、提高画面打开成功率,让用户获取画面秒开,延时极低的体验。

                  ',35),l=[h];function i(s,d){return p(),e("div",null,l)}const c=t(a,[["render",i],["__file","introduction_to_streaming_media_related_technologies.html.vue"]]);export{c as default}; diff --git a/assets/journeyDiagram-deae3313-3VZnCGoi.js b/assets/journeyDiagram-deae3313-A-9AYwwK.js similarity index 98% rename from assets/journeyDiagram-deae3313-3VZnCGoi.js rename to assets/journeyDiagram-deae3313-A-9AYwwK.js index b4d0161..161ff4c 100644 --- a/assets/journeyDiagram-deae3313-3VZnCGoi.js +++ b/assets/journeyDiagram-deae3313-A-9AYwwK.js @@ -1,4 +1,4 @@ -import{c as I,v as yt,x as ft,s as dt,g as pt,b as gt,a as mt,z as xt,h as W,i as kt}from"./mermaid.core-ygY5oRaR.js";import{d as _t,f as bt,a as vt,g as it}from"./svgDrawCommon-ad5ef572-nvro2Kxm.js";import{a as Q}from"./arc-IaSnKFUc.js";import"./app-RP31lnfq.js";import"./path-aUcfwwLI.js";var G=function(){var t=function(p,s,r,a){for(r=r||{},a=p.length;a--;r[p[a]]=s);return r},e=[6,8,10,11,12,14,16,17,18],i=[1,9],l=[1,10],n=[1,11],h=[1,12],c=[1,13],f=[1,14],y={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:function(s,r,a,u,d,o,w){var k=o.length-1;switch(d){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:u.addTask(o[k-1],o[k]),this.$="task";break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:function(s,r){if(r.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=r,a}},parse:function(s){var r=this,a=[0],u=[],d=[null],o=[],w=this.table,k="",R=0,Z=0,lt=2,J=1,ct=o.slice.call(arguments,1),x=Object.create(this.lexer),S={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(S.yy[z]=this.yy[z]);x.setInput(s,S.yy),S.yy.lexer=x,S.yy.parser=this,typeof x.yylloc>"u"&&(x.yylloc={});var Y=x.yylloc;o.push(Y);var ht=x.options&&x.options.ranges;typeof S.yy.parseError=="function"?this.parseError=S.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ut(){var T;return T=u.pop()||x.lex()||J,typeof T!="number"&&(T instanceof Array&&(u=T,T=u.pop()),T=r.symbols_[T]||T),T}for(var _,E,b,O,A={},N,$,K,B;;){if(E=a[a.length-1],this.defaultActions[E]?b=this.defaultActions[E]:((_===null||typeof _>"u")&&(_=ut()),b=w[E]&&w[E][_]),typeof b>"u"||!b.length||!b[0]){var q="";B=[];for(N in w[E])this.terminals_[N]&&N>lt&&B.push("'"+this.terminals_[N]+"'");x.showPosition?q="Parse error on line "+(R+1)+`: +import{c as I,v as yt,x as ft,s as dt,g as pt,b as gt,a as mt,z as xt,h as W,i as kt}from"./mermaid.core-YBgJFCkH.js";import{d as _t,f as bt,a as vt,g as it}from"./svgDrawCommon-ad5ef572-Rj64dPCl.js";import{a as Q}from"./arc-zVzTa0l4.js";import"./app-0NopiYEV.js";import"./path-aUcfwwLI.js";var G=function(){var t=function(p,s,r,a){for(r=r||{},a=p.length;a--;r[p[a]]=s);return r},e=[6,8,10,11,12,14,16,17,18],i=[1,9],l=[1,10],n=[1,11],h=[1,12],c=[1,13],f=[1,14],y={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:function(s,r,a,u,d,o,w){var k=o.length-1;switch(d){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:u.addTask(o[k-1],o[k]),this.$="task";break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:function(s,r){if(r.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=r,a}},parse:function(s){var r=this,a=[0],u=[],d=[null],o=[],w=this.table,k="",R=0,Z=0,lt=2,J=1,ct=o.slice.call(arguments,1),x=Object.create(this.lexer),S={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(S.yy[z]=this.yy[z]);x.setInput(s,S.yy),S.yy.lexer=x,S.yy.parser=this,typeof x.yylloc>"u"&&(x.yylloc={});var Y=x.yylloc;o.push(Y);var ht=x.options&&x.options.ranges;typeof S.yy.parseError=="function"?this.parseError=S.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ut(){var T;return T=u.pop()||x.lex()||J,typeof T!="number"&&(T instanceof Array&&(u=T,T=u.pop()),T=r.symbols_[T]||T),T}for(var _,E,b,O,A={},N,$,K,B;;){if(E=a[a.length-1],this.defaultActions[E]?b=this.defaultActions[E]:((_===null||typeof _>"u")&&(_=ut()),b=w[E]&&w[E][_]),typeof b>"u"||!b.length||!b[0]){var q="";B=[];for(N in w[E])this.terminals_[N]&&N>lt&&B.push("'"+this.terminals_[N]+"'");x.showPosition?q="Parse error on line "+(R+1)+`: `+x.showPosition()+` Expecting `+B.join(", ")+", got '"+(this.terminals_[_]||_)+"'":q="Parse error on line "+(R+1)+": Unexpected "+(_==J?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(q,{text:x.match,token:this.terminals_[_]||_,line:x.yylineno,loc:Y,expected:B})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(b[0]){case 1:a.push(_),d.push(x.yytext),o.push(x.yylloc),a.push(b[1]),_=null,Z=x.yyleng,k=x.yytext,R=x.yylineno,Y=x.yylloc;break;case 2:if($=this.productions_[b[1]][1],A.$=d[d.length-$],A._$={first_line:o[o.length-($||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-($||1)].first_column,last_column:o[o.length-1].last_column},ht&&(A._$.range=[o[o.length-($||1)].range[0],o[o.length-1].range[1]]),O=this.performAction.apply(A,[k,Z,R,S.yy,b[1],d,o].concat(ct)),typeof O<"u")return O;$&&(a=a.slice(0,-1*$*2),d=d.slice(0,-1*$),o=o.slice(0,-1*$)),a.push(this.productions_[b[1]][0]),d.push(A.$),o.push(A._$),K=w[a[a.length-2]][a[a.length-1]],a.push(K);break;case 3:return!0}}return!0}},m=function(){var p={EOF:1,parseError:function(r,a){if(this.yy.parser)this.yy.parser.parseError(r,a);else throw new Error(r)},setInput:function(s,r){return this.yy=r||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var r=s.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},unput:function(s){var r=s.length,a=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var d=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===u.length?this.yylloc.first_column:0)+u[u.length-a.length].length-a[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[d[0],d[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(s){this.unput(this.match.slice(s))},pastInput:function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var s=this.pastInput(),r=new Array(s.length+1).join("-");return s+this.upcomingInput()+` diff --git a/assets/layout-6DvG_ICF.js b/assets/layout-6DvG_ICF.js new file mode 100644 index 0000000..ac8b953 --- /dev/null +++ b/assets/layout-6DvG_ICF.js @@ -0,0 +1 @@ +import{A as H,B as fr,S as O,C as x,D as F,E as fn,F as dr,G as cr,H as hr,I as Te,J as lr,K as vr,L as dn,M as X,N as gr,O as Le,P as pr,Q as q,R as an,T as Cn,U as br,V as Ln,W as wr,X as mr,Y as U,Z as In,_ as _r,$ as Ae,a0 as Kn,a1 as Er,a2 as yr,a3 as Ne,a4 as V,a5 as Oe,a6 as xr,a7 as Pn,a8 as on,a9 as Tr,aa as bn,ab as Lr,ac as B,ad as Xn,ae as Vn,af as An}from"./mermaid.core-YBgJFCkH.js";var Ar="[object Symbol]";function $(n){return typeof n=="symbol"||H(n)&&fr(n)==Ar}function M(n,e){for(var r=-1,t=n==null?0:n.length,i=Array(t);++r-1}function T(n){return fn(n)?dr(n):cr(n)}var qr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Wr=/^\w*$/;function $n(n,e){if(x(n))return!1;var r=typeof n;return r=="number"||r=="symbol"||r=="boolean"||n==null||$(n)?!0:Wr.test(n)||!qr.test(n)||e!=null&&n in Object(e)}var jr=500;function Kr(n){var e=hr(n,function(t){return r.size===jr&&r.clear(),t}),r=e.cache;return e}var Xr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Vr=/\\(\\)?/g,Zr=Kr(function(n){var e=[];return n.charCodeAt(0)===46&&e.push(""),n.replace(Xr,function(r,t,i,a){e.push(i?a.replace(Vr,"$1"):t||r)}),e});function $e(n){return n==null?"":Ce(n)}function cn(n,e){return x(n)?n:$n(n,e)?[n]:Zr($e(n))}var Jr=1/0;function Z(n){if(typeof n=="string"||$(n))return n;var e=n+"";return e=="0"&&1/n==-Jr?"-0":e}function hn(n,e){e=cn(e,n);for(var r=0,t=e.length;n!=null&&r0&&r(u)?e>1?ln(u,e-1,r,t,i):Sn(i,u):t||(i[i.length]=u)}return i}function G(n){var e=n==null?0:n.length;return e?ln(n,1):[]}function nt(n){return lr(vr(n,void 0,G),n+"")}function et(n,e,r,t){var i=-1,a=n==null?0:n.length;for(t&&a&&(r=n[++i]);++iu))return!1;var f=a.get(n),d=a.get(e);if(f&&d)return f==e&&d==n;var h=-1,l=!0,g=r&xi?new W:void 0;for(a.set(n,e),a.set(e,n);++h2?e[2]:void 0;for(i&&on(e[0],e[1],i)&&(t=1);++r-1?i[a?e[o]:o]:void 0}}var ha=Math.max;function la(n,e,r){var t=n==null?0:n.length;if(!t)return-1;var i=r==null?0:Gr(r);return i<0&&(i=ha(t+i,0)),Pe(n,C(e),i)}var kn=ca(la);function Ke(n,e){var r=-1,t=fn(n)?Array(n.length):[];return vn(n,function(i,a,o){t[++r]=e(i,a,o)}),t}function E(n,e){var r=x(n)?M:Ke;return r(n,C(e))}function va(n,e){return n==null?n:Oe(n,Gn(e),X)}function ga(n,e){return n&&Dn(n,Gn(e))}function pa(n,e){return n>e}var ba=Object.prototype,wa=ba.hasOwnProperty;function ma(n,e){return n!=null&&wa.call(n,e)}function b(n,e){return n!=null&&qe(n,e,ma)}function _a(n,e){return M(e,function(r){return n[r]})}function N(n){return n==null?[]:_a(n,T(n))}function y(n){return n===void 0}function Xe(n,e){return ne||a&&o&&s&&!u&&!f||t&&o&&s||!r&&s||!i)return 1;if(!t&&!a&&!f&&n=u)return s;var f=r[t];return s*(f=="desc"?-1:1)}}return n.index-e.index}function Aa(n,e,r){e.length?e=M(e,function(a){return x(a)?function(o){return hn(o,a.length===1?a[0]:a)}:a}):e=[V];var t=-1;e=M(e,Cn(C));var i=Ke(n,function(a,o,u){var s=M(e,function(f){return f(a)});return{criteria:s,index:++t,value:a}});return xa(i,function(a,o){return La(a,o,r)})}function Na(n,e){return ya(n,e,function(r,t){return We(n,t)})}var sn=nt(function(n,e){return n==null?{}:Na(n,e)}),Oa=Math.ceil,Ca=Math.max;function Ia(n,e,r,t){for(var i=-1,a=Ca(Oa((e-n)/(r||1)),0),o=Array(a);a--;)o[t?a:++i]=n,n+=r;return o}function Pa(n){return function(e,r,t){return t&&typeof t!="number"&&on(e,r,t)&&(r=t=void 0),e=rn(e),r===void 0?(r=e,e=0):r=rn(r),t=t===void 0?e1&&on(n,e[0],e[1])?e=[]:r>2&&on(e[0],e[1],e[2])&&(e=[e[0]]),Aa(n,ln(e,1),[])}),Sa=1/0,Ra=bn&&1/Mn(new bn([,-0]))[1]==Sa?function(n){return new bn(n)}:kr,Ma=200;function Fa(n,e,r){var t=-1,i=Hr,a=n.length,o=!0,u=[],s=u;if(r)o=!1,i=fa;else if(a>=Ma){var f=e?null:Ra(n);if(f)return Mn(f);o=!1,i=Be,s=new W}else s=e?[]:u;n:for(;++t1?i.setNode(a,r):i.setNode(a)}),this}setNode(e,r){return b(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=P,this._children[e]={},this._children[P][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return b(this._nodes,e)}removeNode(e){var r=this;if(b(this._nodes,e)){var t=function(i){r.removeEdge(r._edgeObjs[i])};delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],c(this.children(e),function(i){r.setParent(i)}),delete this._children[e]),c(T(this._in[e]),t),delete this._in[e],delete this._preds[e],c(T(this._out[e]),t),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(y(r))r=P;else{r+="";for(var t=r;!y(t);t=this.parent(t))if(t===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==P)return r}}children(e){if(y(e)&&(e=P),this._isCompound){var r=this._children[e];if(r)return T(r)}else{if(e===P)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return T(r)}successors(e){var r=this._sucs[e];if(r)return T(r)}neighbors(e){var r=this.predecessors(e);if(r)return Da(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var t=this;c(this._nodes,function(o,u){e(u)&&r.setNode(u,o)}),c(this._edgeObjs,function(o){r.hasNode(o.v)&&r.hasNode(o.w)&&r.setEdge(o,t.edge(o))});var i={};function a(o){var u=t.parent(o);return u===void 0||r.hasNode(u)?(i[o]=u,u):u in i?i[u]:a(u)}return this._isCompound&&c(r.nodes(),function(o){r.setParent(o,a(o))}),r}setDefaultEdgeLabel(e){return Xn(e)||(e=B(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return N(this._edgeObjs)}setPath(e,r){var t=this,i=arguments;return J(e,function(a,o){return i.length>1?t.setEdge(a,o,r):t.setEdge(a,o),o}),this}setEdge(){var e,r,t,i,a=!1,o=arguments[0];typeof o=="object"&&o!==null&&"v"in o?(e=o.v,r=o.w,t=o.name,arguments.length===2&&(i=arguments[1],a=!0)):(e=o,r=arguments[1],t=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),e=""+e,r=""+r,y(t)||(t=""+t);var u=Y(this._isDirected,e,r,t);if(b(this._edgeLabels,u))return a&&(this._edgeLabels[u]=i),this;if(!y(t)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[u]=a?i:this._defaultEdgeLabelFn(e,r,t);var s=Ua(this._isDirected,e,r,t);return e=s.v,r=s.w,Object.freeze(s),this._edgeObjs[u]=s,he(this._preds[r],e),he(this._sucs[e],r),this._in[r][u]=s,this._out[e][u]=s,this._edgeCount++,this}edge(e,r,t){var i=arguments.length===1?mn(this._isDirected,arguments[0]):Y(this._isDirected,e,r,t);return this._edgeLabels[i]}hasEdge(e,r,t){var i=arguments.length===1?mn(this._isDirected,arguments[0]):Y(this._isDirected,e,r,t);return b(this._edgeLabels,i)}removeEdge(e,r,t){var i=arguments.length===1?mn(this._isDirected,arguments[0]):Y(this._isDirected,e,r,t),a=this._edgeObjs[i];return a&&(e=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],le(this._preds[r],e),le(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var t=this._in[e];if(t){var i=N(t);return r?A(i,function(a){return a.v===r}):i}}outEdges(e,r){var t=this._out[e];if(t){var i=N(t);return r?A(i,function(a){return a.w===r}):i}}nodeEdges(e,r){var t=this.inEdges(e,r);if(t)return t.concat(this.outEdges(e,r))}}L.prototype._nodeCount=0;L.prototype._edgeCount=0;function he(n,e){n[e]?n[e]++:n[e]=1}function le(n,e){--n[e]||delete n[e]}function Y(n,e,r,t){var i=""+e,a=""+r;if(!n&&i>a){var o=i;i=a,a=o}return i+ce+a+ce+(y(t)?Ya:t)}function Ua(n,e,r,t){var i=""+e,a=""+r;if(!n&&i>a){var o=i;i=a,a=o}var u={v:i,w:a};return t&&(u.name=t),u}function mn(n,e){return Y(n,e.v,e.w,e.name)}class Ha{constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return ve(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&ve(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,t=r._prev;t!==r;)e.push(JSON.stringify(t,qa)),t=t._prev;return"["+e.join(", ")+"]"}}function ve(n){n._prev._next=n._next,n._next._prev=n._prev,delete n._next,delete n._prev}function qa(n,e){if(n!=="_next"&&n!=="_prev")return e}var Wa=B(1);function ja(n,e){if(n.nodeCount()<=1)return[];var r=Xa(n,e||Wa),t=Ka(r.graph,r.buckets,r.zeroIdx);return G(E(t,function(i){return n.outEdges(i.v,i.w)}))}function Ka(n,e,r){for(var t=[],i=e[e.length-1],a=e[0],o;n.nodeCount();){for(;o=a.dequeue();)_n(n,e,r,o);for(;o=i.dequeue();)_n(n,e,r,o);if(n.nodeCount()){for(var u=e.length-2;u>0;--u)if(o=e[u].dequeue(),o){t=t.concat(_n(n,e,r,o,!0));break}}}return t}function _n(n,e,r,t,i){var a=i?[]:void 0;return c(n.inEdges(t.v),function(o){var u=n.edge(o),s=n.node(o.v);i&&a.push({v:o.v,w:o.w}),s.out-=u,On(e,r,s)}),c(n.outEdges(t.v),function(o){var u=n.edge(o),s=o.w,f=n.node(s);f.in-=u,On(e,r,f)}),n.removeNode(t.v),a}function Xa(n,e){var r=new L,t=0,i=0;c(n.nodes(),function(u){r.setNode(u,{v:u,in:0,out:0})}),c(n.edges(),function(u){var s=r.edge(u.v,u.w)||0,f=e(u),d=s+f;r.setEdge(u.v,u.w,d),i=Math.max(i,r.node(u.v).out+=f),t=Math.max(t,r.node(u.w).in+=f)});var a=D(i+t+3).map(function(){return new Ha}),o=t+1;return c(r.nodes(),function(u){On(a,o,r.node(u))}),{graph:r,buckets:a,zeroIdx:o}}function On(n,e,r){r.out?r.in?n[r.out-r.in+e].enqueue(r):n[n.length-1].enqueue(r):n[0].enqueue(r)}function Va(n){var e=n.graph().acyclicer==="greedy"?ja(n,r(n)):Za(n);c(e,function(t){var i=n.edge(t);n.removeEdge(t),i.forwardName=t.name,i.reversed=!0,n.setEdge(t.w,t.v,i,Un("rev"))});function r(t){return function(i){return t.edge(i).weight}}}function Za(n){var e=[],r={},t={};function i(a){b(t,a)||(t[a]=!0,r[a]=!0,c(n.outEdges(a),function(o){b(r,o.w)?e.push(o):i(o.w)}),delete r[a])}return c(n.nodes(),i),e}function Ja(n){c(n.edges(),function(e){var r=n.edge(e);if(r.reversed){n.removeEdge(e);var t=r.forwardName;delete r.reversed,delete r.forwardName,n.setEdge(e.w,e.v,r,t)}})}function k(n,e,r,t){var i;do i=Un(t);while(n.hasNode(i));return r.dummy=e,n.setNode(i,r),i}function Qa(n){var e=new L().setGraph(n.graph());return c(n.nodes(),function(r){e.setNode(r,n.node(r))}),c(n.edges(),function(r){var t=e.edge(r.v,r.w)||{weight:0,minlen:1},i=n.edge(r);e.setEdge(r.v,r.w,{weight:t.weight+i.weight,minlen:Math.max(t.minlen,i.minlen)})}),e}function Ve(n){var e=new L({multigraph:n.isMultigraph()}).setGraph(n.graph());return c(n.nodes(),function(r){n.children(r).length||e.setNode(r,n.node(r))}),c(n.edges(),function(r){e.setEdge(r,n.edge(r))}),e}function ge(n,e){var r=n.x,t=n.y,i=e.x-r,a=e.y-t,o=n.width/2,u=n.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var s,f;return Math.abs(a)*o>Math.abs(i)*u?(a<0&&(u=-u),s=u*i/a,f=u):(i<0&&(o=-o),s=o,f=o*a/i),{x:r+s,y:t+f}}function pn(n){var e=E(D(Ze(n)+1),function(){return[]});return c(n.nodes(),function(r){var t=n.node(r),i=t.rank;y(i)||(e[i][t.order]=r)}),e}function za(n){var e=j(E(n.nodes(),function(r){return n.node(r).rank}));c(n.nodes(),function(r){var t=n.node(r);b(t,"rank")&&(t.rank-=e)})}function no(n){var e=j(E(n.nodes(),function(a){return n.node(a).rank})),r=[];c(n.nodes(),function(a){var o=n.node(a).rank-e;r[o]||(r[o]=[]),r[o].push(a)});var t=0,i=n.graph().nodeRankFactor;c(r,function(a,o){y(a)&&o%i!==0?--t:t&&c(a,function(u){n.node(u).rank+=t})})}function pe(n,e,r,t){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=t),k(n,"border",i,e)}function Ze(n){return S(E(n.nodes(),function(e){var r=n.node(e).rank;if(!y(r))return r}))}function eo(n,e){var r={lhs:[],rhs:[]};return c(n,function(t){e(t)?r.lhs.push(t):r.rhs.push(t)}),r}function ro(n,e){var r=de();try{return e()}finally{console.log(n+" time: "+(de()-r)+"ms")}}function to(n,e){return e()}function io(n){function e(r){var t=n.children(r),i=n.node(r);if(t.length&&c(t,e),b(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,o=i.maxRank+1;ao.lim&&(u=o,s=!0);var f=A(e.edges(),function(d){return s===me(n,n.node(d.v),u)&&s!==me(n,n.node(d.w),u)});return Yn(f,function(d){return K(e,d)})}function ar(n,e,r,t){var i=r.v,a=r.w;n.removeEdge(i,a),n.setEdge(t.v,t.w,{}),Wn(n),qn(n,e),_o(n,e)}function _o(n,e){var r=kn(n.nodes(),function(i){return!e.node(i).parent}),t=wo(n,r);t=t.slice(1),c(t,function(i){var a=n.node(i).parent,o=e.edge(i,a),u=!1;o||(o=e.edge(a,i),u=!0),e.node(i).rank=e.node(a).rank+(u?o.minlen:-o.minlen)})}function Eo(n,e,r){return n.hasEdge(e,r)}function me(n,e,r){return r.low<=e.lim&&e.lim<=r.lim}function yo(n){switch(n.graph().ranker){case"network-simplex":_e(n);break;case"tight-tree":To(n);break;case"longest-path":xo(n);break;default:_e(n)}}var xo=Hn;function To(n){Hn(n),Qe(n)}function _e(n){R(n)}function Lo(n){var e=k(n,"root",{},"_root"),r=Ao(n),t=S(N(r))-1,i=2*t+1;n.graph().nestingRoot=e,c(n.edges(),function(o){n.edge(o).minlen*=i});var a=No(n)+1;c(n.children(),function(o){or(n,e,i,a,t,r,o)}),n.graph().nodeRankFactor=i}function or(n,e,r,t,i,a,o){var u=n.children(o);if(!u.length){o!==e&&n.setEdge(e,o,{weight:0,minlen:r});return}var s=pe(n,"_bt"),f=pe(n,"_bb"),d=n.node(o);n.setParent(s,o),d.borderTop=s,n.setParent(f,o),d.borderBottom=f,c(u,function(h){or(n,e,r,t,i,a,h);var l=n.node(h),g=l.borderTop?l.borderTop:h,v=l.borderBottom?l.borderBottom:h,p=l.borderTop?t:2*t,m=g!==v?1:i-a[o]+1;n.setEdge(s,g,{weight:p,minlen:m,nestingEdge:!0}),n.setEdge(v,f,{weight:p,minlen:m,nestingEdge:!0})}),n.parent(o)||n.setEdge(e,s,{weight:0,minlen:i+a[o]})}function Ao(n){var e={};function r(t,i){var a=n.children(t);a&&a.length&&c(a,function(o){r(o,i+1)}),e[t]=i}return c(n.children(),function(t){r(t,1)}),e}function No(n){return J(n.edges(),function(e,r){return e+n.edge(r).weight},0)}function Oo(n){var e=n.graph();n.removeNode(e.nestingRoot),delete e.nestingRoot,c(n.edges(),function(r){var t=n.edge(r);t.nestingEdge&&n.removeEdge(r)})}function Co(n,e,r){var t={},i;c(r,function(a){for(var o=n.parent(a),u,s;o;){if(u=n.parent(o),u?(s=t[u],t[u]=o):(s=i,i=o),s&&s!==o){e.setEdge(s,o);return}o=u}})}function Io(n,e,r){var t=Po(n),i=new L({compound:!0}).setGraph({root:t}).setDefaultNodeLabel(function(a){return n.node(a)});return c(n.nodes(),function(a){var o=n.node(a),u=n.parent(a);(o.rank===e||o.minRank<=e&&e<=o.maxRank)&&(i.setNode(a),i.setParent(a,u||t),c(n[r](a),function(s){var f=s.v===a?s.w:s.v,d=i.edge(f,a),h=y(d)?0:d.weight;i.setEdge(f,a,{weight:n.edge(s).weight+h})}),b(o,"minRank")&&i.setNode(a,{borderLeft:o.borderLeft[e],borderRight:o.borderRight[e]}))}),i}function Po(n){for(var e;n.hasNode(e=Un("_root")););return e}function $o(n,e){for(var r=0,t=1;t0;)d%2&&(h+=u[d+1]),d=d-1>>1,u[d]+=f.weight;s+=f.weight*h})),s}function Ro(n){var e={},r=A(n.nodes(),function(u){return!n.children(u).length}),t=S(E(r,function(u){return n.node(u).rank})),i=E(D(t+1),function(){return[]});function a(u){if(!b(e,u)){e[u]=!0;var s=n.node(u);i[s.rank].push(u),c(n.successors(u),a)}}var o=Q(r,function(u){return n.node(u).rank});return c(o,a),i}function Mo(n,e){return E(e,function(r){var t=n.inEdges(r);if(t.length){var i=J(t,function(a,o){var u=n.edge(o),s=n.node(o.v);return{sum:a.sum+u.weight*s.order,weight:a.weight+u.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}function Fo(n,e){var r={};c(n,function(i,a){var o=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};y(i.barycenter)||(o.barycenter=i.barycenter,o.weight=i.weight)}),c(e.edges(),function(i){var a=r[i.v],o=r[i.w];!y(a)&&!y(o)&&(o.indegree++,a.out.push(r[i.w]))});var t=A(r,function(i){return!i.indegree});return Do(t)}function Do(n){var e=[];function r(a){return function(o){o.merged||(y(o.barycenter)||y(a.barycenter)||o.barycenter>=a.barycenter)&&Go(a,o)}}function t(a){return function(o){o.in.push(a),--o.indegree===0&&n.push(o)}}for(;n.length;){var i=n.pop();e.push(i),c(i.in.reverse(),r(i)),c(i.out,t(i))}return E(A(e,function(a){return!a.merged}),function(a){return sn(a,["vs","i","barycenter","weight"])})}function Go(n,e){var r=0,t=0;n.weight&&(r+=n.barycenter*n.weight,t+=n.weight),e.weight&&(r+=e.barycenter*e.weight,t+=e.weight),n.vs=e.vs.concat(n.vs),n.barycenter=r/t,n.weight=t,n.i=Math.min(e.i,n.i),e.merged=!0}function ko(n,e){var r=eo(n,function(d){return b(d,"barycenter")}),t=r.lhs,i=Q(r.rhs,function(d){return-d.i}),a=[],o=0,u=0,s=0;t.sort(Bo(!!e)),s=Ee(a,i,s),c(t,function(d){s+=d.vs.length,a.push(d.vs),o+=d.barycenter*d.weight,u+=d.weight,s=Ee(a,i,s)});var f={vs:G(a)};return u&&(f.barycenter=o/u,f.weight=u),f}function Ee(n,e,r){for(var t;e.length&&(t=un(e)).i<=r;)e.pop(),n.push(t.vs),r++;return r}function Bo(n){return function(e,r){return e.barycenterr.barycenter?1:n?r.i-e.i:e.i-r.i}}function ur(n,e,r,t){var i=n.children(e),a=n.node(e),o=a?a.borderLeft:void 0,u=a?a.borderRight:void 0,s={};o&&(i=A(i,function(v){return v!==o&&v!==u}));var f=Mo(n,i);c(f,function(v){if(n.children(v.v).length){var p=ur(n,v.v,r,t);s[v.v]=p,b(p,"barycenter")&&Uo(v,p)}});var d=Fo(f,r);Yo(d,s);var h=ko(d,t);if(o&&(h.vs=G([o,h.vs,u]),n.predecessors(o).length)){var l=n.node(n.predecessors(o)[0]),g=n.node(n.predecessors(u)[0]);b(h,"barycenter")||(h.barycenter=0,h.weight=0),h.barycenter=(h.barycenter*h.weight+l.order+g.order)/(h.weight+2),h.weight+=2}return h}function Yo(n,e){c(n,function(r){r.vs=G(r.vs.map(function(t){return e[t]?e[t].vs:t}))})}function Uo(n,e){y(n.barycenter)?(n.barycenter=e.barycenter,n.weight=e.weight):(n.barycenter=(n.barycenter*n.weight+e.barycenter*e.weight)/(n.weight+e.weight),n.weight+=e.weight)}function Ho(n){var e=Ze(n),r=ye(n,D(1,e+1),"inEdges"),t=ye(n,D(e-1,-1,-1),"outEdges"),i=Ro(n);xe(n,i);for(var a=Number.POSITIVE_INFINITY,o,u=0,s=0;s<4;++u,++s){qo(u%2?r:t,u%4>=2),i=pn(n);var f=$o(n,i);fo||u>e[s].lim));for(f=s,s=t;(s=n.parent(s))!==f;)a.push(s);return{path:i.concat(a.reverse()),lca:f}}function Ko(n){var e={},r=0;function t(i){var a=r;c(n.children(i),t),e[i]={low:a,lim:r++}}return c(n.children(),t),e}function Xo(n,e){var r={};function t(i,a){var o=0,u=0,s=i.length,f=un(a);return c(a,function(d,h){var l=Zo(n,d),g=l?n.node(l).order:s;(l||d===f)&&(c(a.slice(u,h+1),function(v){c(n.predecessors(v),function(p){var m=n.node(p),_=m.order;(_f)&&sr(r,l,d)})})}function i(a,o){var u=-1,s,f=0;return c(o,function(d,h){if(n.node(d).dummy==="border"){var l=n.predecessors(d);l.length&&(s=n.node(l[0]).order,t(o,f,h,u,s),f=h,u=s)}t(o,f,o.length,s,a.length)}),o}return J(e,i),r}function Zo(n,e){if(n.node(e).dummy)return kn(n.predecessors(e),function(r){return n.node(r).dummy})}function sr(n,e,r){if(e>r){var t=e;e=r,r=t}var i=n[e];i||(n[e]=i={}),i[r]=!0}function Jo(n,e,r){if(e>r){var t=e;e=r,r=t}return b(n[e],r)}function Qo(n,e,r,t){var i={},a={},o={};return c(e,function(u){c(u,function(s,f){i[s]=s,a[s]=s,o[s]=f})}),c(e,function(u){var s=-1;c(u,function(f){var d=t(f);if(d.length){d=Q(d,function(p){return o[p]});for(var h=(d.length-1)/2,l=Math.floor(h),g=Math.ceil(h);l<=g;++l){var v=d[l];a[f]===f&&s-1}function T(n){return fn(n)?dr(n):cr(n)}var qr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Wr=/^\w*$/;function $n(n,e){if(x(n))return!1;var r=typeof n;return r=="number"||r=="symbol"||r=="boolean"||n==null||$(n)?!0:Wr.test(n)||!qr.test(n)||e!=null&&n in Object(e)}var jr=500;function Kr(n){var e=hr(n,function(t){return r.size===jr&&r.clear(),t}),r=e.cache;return e}var Xr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Vr=/\\(\\)?/g,Zr=Kr(function(n){var e=[];return n.charCodeAt(0)===46&&e.push(""),n.replace(Xr,function(r,t,i,a){e.push(i?a.replace(Vr,"$1"):t||r)}),e});const Jr=Zr;function $e(n){return n==null?"":Ce(n)}function cn(n,e){return x(n)?n:$n(n,e)?[n]:Jr($e(n))}var Qr=1/0;function Z(n){if(typeof n=="string"||$(n))return n;var e=n+"";return e=="0"&&1/n==-Qr?"-0":e}function hn(n,e){e=cn(e,n);for(var r=0,t=e.length;n!=null&&r0&&r(s)?e>1?ln(s,e-1,r,t,i):Sn(i,s):t||(i[i.length]=s)}return i}function G(n){var e=n==null?0:n.length;return e?ln(n,1):[]}function et(n){return lr(vr(n,void 0,G),n+"")}function rt(n,e,r,t){var i=-1,a=n==null?0:n.length;for(t&&a&&(r=n[++i]);++is))return!1;var f=a.get(n),d=a.get(e);if(f&&d)return f==e&&d==n;var h=-1,l=!0,g=r&Oi?new W:void 0;for(a.set(n,e),a.set(e,n);++h2?e[2]:void 0;for(i&&on(e[0],e[1],i)&&(t=1);++r-1?i[a?e[o]:o]:void 0}}var wa=Math.max;function ma(n,e,r){var t=n==null?0:n.length;if(!t)return-1;var i=r==null?0:Gr(r);return i<0&&(i=wa(t+i,0)),Pe(n,C(e),i)}var _a=ba(ma);const kn=_a;function Ke(n,e){var r=-1,t=fn(n)?Array(n.length):[];return vn(n,function(i,a,o){t[++r]=e(i,a,o)}),t}function E(n,e){var r=x(n)?R:Ke;return r(n,C(e))}function Ea(n,e){return n==null?n:Oe(n,Gn(e),X)}function ya(n,e){return n&&Dn(n,Gn(e))}function xa(n,e){return n>e}var Ta=Object.prototype,La=Ta.hasOwnProperty;function Aa(n,e){return n!=null&&La.call(n,e)}function b(n,e){return n!=null&&qe(n,e,Aa)}function Na(n,e){return R(e,function(r){return n[r]})}function N(n){return n==null?[]:Na(n,T(n))}function y(n){return n===void 0}function Xe(n,e){return ne||a&&o&&u&&!s&&!f||t&&o&&u||!r&&u||!i)return 1;if(!t&&!a&&!f&&n=s)return u;var f=r[t];return u*(f=="desc"?-1:1)}}return n.index-e.index}function Sa(n,e,r){e.length?e=R(e,function(a){return x(a)?function(o){return hn(o,a.length===1?a[0]:a)}:a}):e=[V];var t=-1;e=R(e,Cn(C));var i=Ke(n,function(a,o,s){var u=R(e,function(f){return f(a)});return{criteria:u,index:++t,value:a}});return Ia(i,function(a,o){return $a(a,o,r)})}function Ma(n,e){return Ca(n,e,function(r,t){return We(n,t)})}var Ra=et(function(n,e){return n==null?{}:Ma(n,e)});const un=Ra;var Fa=Math.ceil,Da=Math.max;function Ga(n,e,r,t){for(var i=-1,a=Da(Fa((e-n)/(r||1)),0),o=Array(a);a--;)o[t?a:++i]=n,n+=r;return o}function ka(n){return function(e,r,t){return t&&typeof t!="number"&&on(e,r,t)&&(r=t=void 0),e=rn(e),r===void 0?(r=e,e=0):r=rn(r),t=t===void 0?e1&&on(n,e[0],e[1])?e=[]:r>2&&on(e[0],e[1],e[2])&&(e=[e[0]]),Sa(n,ln(e,1),[])});const Q=Ua;var Ha=1/0,qa=bn&&1/Rn(new bn([,-0]))[1]==Ha?function(n){return new bn(n)}:kr;const Wa=qa;var ja=200;function Ka(n,e,r){var t=-1,i=Hr,a=n.length,o=!0,s=[],u=s;if(r)o=!1,i=ga;else if(a>=ja){var f=e?null:Wa(n);if(f)return Rn(f);o=!1,i=Be,u=new W}else u=e?[]:s;n:for(;++t1?i.setNode(a,r):i.setNode(a)}),this}setNode(e,r){return b(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=P,this._children[e]={},this._children[P][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return b(this._nodes,e)}removeNode(e){var r=this;if(b(this._nodes,e)){var t=function(i){r.removeEdge(r._edgeObjs[i])};delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],c(this.children(e),function(i){r.setParent(i)}),delete this._children[e]),c(T(this._in[e]),t),delete this._in[e],delete this._preds[e],c(T(this._out[e]),t),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(y(r))r=P;else{r+="";for(var t=r;!y(t);t=this.parent(t))if(t===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==P)return r}}children(e){if(y(e)&&(e=P),this._isCompound){var r=this._children[e];if(r)return T(r)}else{if(e===P)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return T(r)}successors(e){var r=this._sucs[e];if(r)return T(r)}neighbors(e){var r=this.predecessors(e);if(r)return Va(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var t=this;c(this._nodes,function(o,s){e(s)&&r.setNode(s,o)}),c(this._edgeObjs,function(o){r.hasNode(o.v)&&r.hasNode(o.w)&&r.setEdge(o,t.edge(o))});var i={};function a(o){var s=t.parent(o);return s===void 0||r.hasNode(s)?(i[o]=s,s):s in i?i[s]:a(s)}return this._isCompound&&c(r.nodes(),function(o){r.setParent(o,a(o))}),r}setDefaultEdgeLabel(e){return Xn(e)||(e=B(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return N(this._edgeObjs)}setPath(e,r){var t=this,i=arguments;return J(e,function(a,o){return i.length>1?t.setEdge(a,o,r):t.setEdge(a,o),o}),this}setEdge(){var e,r,t,i,a=!1,o=arguments[0];typeof o=="object"&&o!==null&&"v"in o?(e=o.v,r=o.w,t=o.name,arguments.length===2&&(i=arguments[1],a=!0)):(e=o,r=arguments[1],t=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),e=""+e,r=""+r,y(t)||(t=""+t);var s=Y(this._isDirected,e,r,t);if(b(this._edgeLabels,s))return a&&(this._edgeLabels[s]=i),this;if(!y(t)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[s]=a?i:this._defaultEdgeLabelFn(e,r,t);var u=no(this._isDirected,e,r,t);return e=u.v,r=u.w,Object.freeze(u),this._edgeObjs[s]=u,he(this._preds[r],e),he(this._sucs[e],r),this._in[r][s]=u,this._out[e][s]=u,this._edgeCount++,this}edge(e,r,t){var i=arguments.length===1?mn(this._isDirected,arguments[0]):Y(this._isDirected,e,r,t);return this._edgeLabels[i]}hasEdge(e,r,t){var i=arguments.length===1?mn(this._isDirected,arguments[0]):Y(this._isDirected,e,r,t);return b(this._edgeLabels,i)}removeEdge(e,r,t){var i=arguments.length===1?mn(this._isDirected,arguments[0]):Y(this._isDirected,e,r,t),a=this._edgeObjs[i];return a&&(e=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],le(this._preds[r],e),le(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var t=this._in[e];if(t){var i=N(t);return r?A(i,function(a){return a.v===r}):i}}outEdges(e,r){var t=this._out[e];if(t){var i=N(t);return r?A(i,function(a){return a.w===r}):i}}nodeEdges(e,r){var t=this.inEdges(e,r);if(t)return t.concat(this.outEdges(e,r))}}L.prototype._nodeCount=0;L.prototype._edgeCount=0;function he(n,e){n[e]?n[e]++:n[e]=1}function le(n,e){--n[e]||delete n[e]}function Y(n,e,r,t){var i=""+e,a=""+r;if(!n&&i>a){var o=i;i=a,a=o}return i+ce+a+ce+(y(t)?za:t)}function no(n,e,r,t){var i=""+e,a=""+r;if(!n&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return t&&(s.name=t),s}function mn(n,e){return Y(n,e.v,e.w,e.name)}class eo{constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return ve(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&ve(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,t=r._prev;t!==r;)e.push(JSON.stringify(t,ro)),t=t._prev;return"["+e.join(", ")+"]"}}function ve(n){n._prev._next=n._next,n._next._prev=n._prev,delete n._next,delete n._prev}function ro(n,e){if(n!=="_next"&&n!=="_prev")return e}var to=B(1);function io(n,e){if(n.nodeCount()<=1)return[];var r=oo(n,e||to),t=ao(r.graph,r.buckets,r.zeroIdx);return G(E(t,function(i){return n.outEdges(i.v,i.w)}))}function ao(n,e,r){for(var t=[],i=e[e.length-1],a=e[0],o;n.nodeCount();){for(;o=a.dequeue();)_n(n,e,r,o);for(;o=i.dequeue();)_n(n,e,r,o);if(n.nodeCount()){for(var s=e.length-2;s>0;--s)if(o=e[s].dequeue(),o){t=t.concat(_n(n,e,r,o,!0));break}}}return t}function _n(n,e,r,t,i){var a=i?[]:void 0;return c(n.inEdges(t.v),function(o){var s=n.edge(o),u=n.node(o.v);i&&a.push({v:o.v,w:o.w}),u.out-=s,On(e,r,u)}),c(n.outEdges(t.v),function(o){var s=n.edge(o),u=o.w,f=n.node(u);f.in-=s,On(e,r,f)}),n.removeNode(t.v),a}function oo(n,e){var r=new L,t=0,i=0;c(n.nodes(),function(s){r.setNode(s,{v:s,in:0,out:0})}),c(n.edges(),function(s){var u=r.edge(s.v,s.w)||0,f=e(s),d=u+f;r.setEdge(s.v,s.w,d),i=Math.max(i,r.node(s.v).out+=f),t=Math.max(t,r.node(s.w).in+=f)});var a=D(i+t+3).map(function(){return new eo}),o=t+1;return c(r.nodes(),function(s){On(a,o,r.node(s))}),{graph:r,buckets:a,zeroIdx:o}}function On(n,e,r){r.out?r.in?n[r.out-r.in+e].enqueue(r):n[n.length-1].enqueue(r):n[0].enqueue(r)}function so(n){var e=n.graph().acyclicer==="greedy"?io(n,r(n)):uo(n);c(e,function(t){var i=n.edge(t);n.removeEdge(t),i.forwardName=t.name,i.reversed=!0,n.setEdge(t.w,t.v,i,Un("rev"))});function r(t){return function(i){return t.edge(i).weight}}}function uo(n){var e=[],r={},t={};function i(a){b(t,a)||(t[a]=!0,r[a]=!0,c(n.outEdges(a),function(o){b(r,o.w)?e.push(o):i(o.w)}),delete r[a])}return c(n.nodes(),i),e}function fo(n){c(n.edges(),function(e){var r=n.edge(e);if(r.reversed){n.removeEdge(e);var t=r.forwardName;delete r.reversed,delete r.forwardName,n.setEdge(e.w,e.v,r,t)}})}function k(n,e,r,t){var i;do i=Un(t);while(n.hasNode(i));return r.dummy=e,n.setNode(i,r),i}function co(n){var e=new L().setGraph(n.graph());return c(n.nodes(),function(r){e.setNode(r,n.node(r))}),c(n.edges(),function(r){var t=e.edge(r.v,r.w)||{weight:0,minlen:1},i=n.edge(r);e.setEdge(r.v,r.w,{weight:t.weight+i.weight,minlen:Math.max(t.minlen,i.minlen)})}),e}function Ve(n){var e=new L({multigraph:n.isMultigraph()}).setGraph(n.graph());return c(n.nodes(),function(r){n.children(r).length||e.setNode(r,n.node(r))}),c(n.edges(),function(r){e.setEdge(r,n.edge(r))}),e}function ge(n,e){var r=n.x,t=n.y,i=e.x-r,a=e.y-t,o=n.width/2,s=n.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,f;return Math.abs(a)*o>Math.abs(i)*s?(a<0&&(s=-s),u=s*i/a,f=s):(i<0&&(o=-o),u=o,f=o*a/i),{x:r+u,y:t+f}}function pn(n){var e=E(D(Ze(n)+1),function(){return[]});return c(n.nodes(),function(r){var t=n.node(r),i=t.rank;y(i)||(e[i][t.order]=r)}),e}function ho(n){var e=j(E(n.nodes(),function(r){return n.node(r).rank}));c(n.nodes(),function(r){var t=n.node(r);b(t,"rank")&&(t.rank-=e)})}function lo(n){var e=j(E(n.nodes(),function(a){return n.node(a).rank})),r=[];c(n.nodes(),function(a){var o=n.node(a).rank-e;r[o]||(r[o]=[]),r[o].push(a)});var t=0,i=n.graph().nodeRankFactor;c(r,function(a,o){y(a)&&o%i!==0?--t:t&&c(a,function(s){n.node(s).rank+=t})})}function pe(n,e,r,t){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=t),k(n,"border",i,e)}function Ze(n){return S(E(n.nodes(),function(e){var r=n.node(e).rank;if(!y(r))return r}))}function vo(n,e){var r={lhs:[],rhs:[]};return c(n,function(t){e(t)?r.lhs.push(t):r.rhs.push(t)}),r}function go(n,e){var r=de();try{return e()}finally{console.log(n+" time: "+(de()-r)+"ms")}}function po(n,e){return e()}function bo(n){function e(r){var t=n.children(r),i=n.node(r);if(t.length&&c(t,e),b(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,o=i.maxRank+1;ao.lim&&(s=o,u=!0);var f=A(e.edges(),function(d){return u===me(n,n.node(d.v),s)&&u!==me(n,n.node(d.w),s)});return Yn(f,function(d){return K(e,d)})}function ar(n,e,r,t){var i=r.v,a=r.w;n.removeEdge(i,a),n.setEdge(t.v,t.w,{}),Wn(n),qn(n,e),$o(n,e)}function $o(n,e){var r=kn(n.nodes(),function(i){return!e.node(i).parent}),t=Io(n,r);t=t.slice(1),c(t,function(i){var a=n.node(i).parent,o=e.edge(i,a),s=!1;o||(o=e.edge(a,i),s=!0),e.node(i).rank=e.node(a).rank+(s?o.minlen:-o.minlen)})}function So(n,e,r){return n.hasEdge(e,r)}function me(n,e,r){return r.low<=e.lim&&e.lim<=r.lim}function Mo(n){switch(n.graph().ranker){case"network-simplex":_e(n);break;case"tight-tree":Fo(n);break;case"longest-path":Ro(n);break;default:_e(n)}}var Ro=Hn;function Fo(n){Hn(n),Qe(n)}function _e(n){M(n)}function Do(n){var e=k(n,"root",{},"_root"),r=Go(n),t=S(N(r))-1,i=2*t+1;n.graph().nestingRoot=e,c(n.edges(),function(o){n.edge(o).minlen*=i});var a=ko(n)+1;c(n.children(),function(o){or(n,e,i,a,t,r,o)}),n.graph().nodeRankFactor=i}function or(n,e,r,t,i,a,o){var s=n.children(o);if(!s.length){o!==e&&n.setEdge(e,o,{weight:0,minlen:r});return}var u=pe(n,"_bt"),f=pe(n,"_bb"),d=n.node(o);n.setParent(u,o),d.borderTop=u,n.setParent(f,o),d.borderBottom=f,c(s,function(h){or(n,e,r,t,i,a,h);var l=n.node(h),g=l.borderTop?l.borderTop:h,v=l.borderBottom?l.borderBottom:h,p=l.borderTop?t:2*t,m=g!==v?1:i-a[o]+1;n.setEdge(u,g,{weight:p,minlen:m,nestingEdge:!0}),n.setEdge(v,f,{weight:p,minlen:m,nestingEdge:!0})}),n.parent(o)||n.setEdge(e,u,{weight:0,minlen:i+a[o]})}function Go(n){var e={};function r(t,i){var a=n.children(t);a&&a.length&&c(a,function(o){r(o,i+1)}),e[t]=i}return c(n.children(),function(t){r(t,1)}),e}function ko(n){return J(n.edges(),function(e,r){return e+n.edge(r).weight},0)}function Bo(n){var e=n.graph();n.removeNode(e.nestingRoot),delete e.nestingRoot,c(n.edges(),function(r){var t=n.edge(r);t.nestingEdge&&n.removeEdge(r)})}function Yo(n,e,r){var t={},i;c(r,function(a){for(var o=n.parent(a),s,u;o;){if(s=n.parent(o),s?(u=t[s],t[s]=o):(u=i,i=o),u&&u!==o){e.setEdge(u,o);return}o=s}})}function Uo(n,e,r){var t=Ho(n),i=new L({compound:!0}).setGraph({root:t}).setDefaultNodeLabel(function(a){return n.node(a)});return c(n.nodes(),function(a){var o=n.node(a),s=n.parent(a);(o.rank===e||o.minRank<=e&&e<=o.maxRank)&&(i.setNode(a),i.setParent(a,s||t),c(n[r](a),function(u){var f=u.v===a?u.w:u.v,d=i.edge(f,a),h=y(d)?0:d.weight;i.setEdge(f,a,{weight:n.edge(u).weight+h})}),b(o,"minRank")&&i.setNode(a,{borderLeft:o.borderLeft[e],borderRight:o.borderRight[e]}))}),i}function Ho(n){for(var e;n.hasNode(e=Un("_root")););return e}function qo(n,e){for(var r=0,t=1;t0;)d%2&&(h+=s[d+1]),d=d-1>>1,s[d]+=f.weight;u+=f.weight*h})),u}function jo(n){var e={},r=A(n.nodes(),function(s){return!n.children(s).length}),t=S(E(r,function(s){return n.node(s).rank})),i=E(D(t+1),function(){return[]});function a(s){if(!b(e,s)){e[s]=!0;var u=n.node(s);i[u.rank].push(s),c(n.successors(s),a)}}var o=Q(r,function(s){return n.node(s).rank});return c(o,a),i}function Ko(n,e){return E(e,function(r){var t=n.inEdges(r);if(t.length){var i=J(t,function(a,o){var s=n.edge(o),u=n.node(o.v);return{sum:a.sum+s.weight*u.order,weight:a.weight+s.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}function Xo(n,e){var r={};c(n,function(i,a){var o=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};y(i.barycenter)||(o.barycenter=i.barycenter,o.weight=i.weight)}),c(e.edges(),function(i){var a=r[i.v],o=r[i.w];!y(a)&&!y(o)&&(o.indegree++,a.out.push(r[i.w]))});var t=A(r,function(i){return!i.indegree});return Vo(t)}function Vo(n){var e=[];function r(a){return function(o){o.merged||(y(o.barycenter)||y(a.barycenter)||o.barycenter>=a.barycenter)&&Zo(a,o)}}function t(a){return function(o){o.in.push(a),--o.indegree===0&&n.push(o)}}for(;n.length;){var i=n.pop();e.push(i),c(i.in.reverse(),r(i)),c(i.out,t(i))}return E(A(e,function(a){return!a.merged}),function(a){return un(a,["vs","i","barycenter","weight"])})}function Zo(n,e){var r=0,t=0;n.weight&&(r+=n.barycenter*n.weight,t+=n.weight),e.weight&&(r+=e.barycenter*e.weight,t+=e.weight),n.vs=e.vs.concat(n.vs),n.barycenter=r/t,n.weight=t,n.i=Math.min(e.i,n.i),e.merged=!0}function Jo(n,e){var r=vo(n,function(d){return b(d,"barycenter")}),t=r.lhs,i=Q(r.rhs,function(d){return-d.i}),a=[],o=0,s=0,u=0;t.sort(Qo(!!e)),u=Ee(a,i,u),c(t,function(d){u+=d.vs.length,a.push(d.vs),o+=d.barycenter*d.weight,s+=d.weight,u=Ee(a,i,u)});var f={vs:G(a)};return s&&(f.barycenter=o/s,f.weight=s),f}function Ee(n,e,r){for(var t;e.length&&(t=sn(e)).i<=r;)e.pop(),n.push(t.vs),r++;return r}function Qo(n){return function(e,r){return e.barycenterr.barycenter?1:n?r.i-e.i:e.i-r.i}}function sr(n,e,r,t){var i=n.children(e),a=n.node(e),o=a?a.borderLeft:void 0,s=a?a.borderRight:void 0,u={};o&&(i=A(i,function(v){return v!==o&&v!==s}));var f=Ko(n,i);c(f,function(v){if(n.children(v.v).length){var p=sr(n,v.v,r,t);u[v.v]=p,b(p,"barycenter")&&ns(v,p)}});var d=Xo(f,r);zo(d,u);var h=Jo(d,t);if(o&&(h.vs=G([o,h.vs,s]),n.predecessors(o).length)){var l=n.node(n.predecessors(o)[0]),g=n.node(n.predecessors(s)[0]);b(h,"barycenter")||(h.barycenter=0,h.weight=0),h.barycenter=(h.barycenter*h.weight+l.order+g.order)/(h.weight+2),h.weight+=2}return h}function zo(n,e){c(n,function(r){r.vs=G(r.vs.map(function(t){return e[t]?e[t].vs:t}))})}function ns(n,e){y(n.barycenter)?(n.barycenter=e.barycenter,n.weight=e.weight):(n.barycenter=(n.barycenter*n.weight+e.barycenter*e.weight)/(n.weight+e.weight),n.weight+=e.weight)}function es(n){var e=Ze(n),r=ye(n,D(1,e+1),"inEdges"),t=ye(n,D(e-1,-1,-1),"outEdges"),i=jo(n);xe(n,i);for(var a=Number.POSITIVE_INFINITY,o,s=0,u=0;u<4;++s,++u){rs(s%2?r:t,s%4>=2),i=pn(n);var f=qo(n,i);fo||s>e[u].lim));for(f=u,u=t;(u=n.parent(u))!==f;)a.push(u);return{path:i.concat(a.reverse()),lca:f}}function as(n){var e={},r=0;function t(i){var a=r;c(n.children(i),t),e[i]={low:a,lim:r++}}return c(n.children(),t),e}function os(n,e){var r={};function t(i,a){var o=0,s=0,u=i.length,f=sn(a);return c(a,function(d,h){var l=us(n,d),g=l?n.node(l).order:u;(l||d===f)&&(c(a.slice(s,h+1),function(v){c(n.predecessors(v),function(p){var m=n.node(p),_=m.order;(_f)&&ur(r,l,d)})})}function i(a,o){var s=-1,u,f=0;return c(o,function(d,h){if(n.node(d).dummy==="border"){var l=n.predecessors(d);l.length&&(u=n.node(l[0]).order,t(o,f,h,s,u),f=h,s=u)}t(o,f,o.length,u,a.length)}),o}return J(e,i),r}function us(n,e){if(n.node(e).dummy)return kn(n.predecessors(e),function(r){return n.node(r).dummy})}function ur(n,e,r){if(e>r){var t=e;e=r,r=t}var i=n[e];i||(n[e]=i={}),i[r]=!0}function fs(n,e,r){if(e>r){var t=e;e=r,r=t}return b(n[e],r)}function ds(n,e,r,t){var i={},a={},o={};return c(e,function(s){c(s,function(u,f){i[u]=u,a[u]=u,o[u]=f})}),c(e,function(s){var u=-1;c(s,function(f){var d=t(f);if(d.length){d=Q(d,function(p){return o[p]});for(var h=(d.length-1)/2,l=Math.floor(h),g=Math.ceil(h);l<=g;++l){var v=d[l];a[f]===f&&u[e("开源代码")]),_:1}),e(",在商用的情况下请自行替代或剔除; 由于使用本项目而产生的商业纠纷或侵权行为一概与本项目及开发者无关,请自行承担法律风险。 在使用本项目代码时,也应该在授权协议中同时表明本项目依赖的第三方库的协议。")])])}const p=o(_,[["render",d],["__file","license.html.vue"]]);export{p as default}; +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c,a as s,d as e,b as a,w as l}from"./app-0NopiYEV.js";const _={};function d(i,m){const t=n("RouterLink");return r(),c("div",null,[s("p",null,[e("本项目自有代码使用宽松的 MIT 协议,在保留版权信息的情况下可以自由应用于各自商用、非商业的项目。 但是本项目也零碎的使用了一些其他的"),a(t,{to:"/zh/reference/resources/dependency.html"},{default:l(()=>[e("开源代码")]),_:1}),e(",在商用的情况下请自行替代或剔除; 由于使用本项目而产生的商业纠纷或侵权行为一概与本项目及开发者无关,请自行承担法律风险。 在使用本项目代码时,也应该在授权协议中同时表明本项目依赖的第三方库的协议。")])])}const p=o(_,[["render",d],["__file","license.html.vue"]]);export{p as default}; diff --git a/assets/license.html-KA2I3C1f.js b/assets/license.html-qa5ZL8TL.js similarity index 87% rename from assets/license.html-KA2I3C1f.js rename to assets/license.html-qa5ZL8TL.js index b94b866..b3b8d8f 100644 --- a/assets/license.html-KA2I3C1f.js +++ b/assets/license.html-qa5ZL8TL.js @@ -1 +1 @@ -import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as n,c as s,a as c,d as e,b as i,w as a}from"./app-RP31lnfq.js";const l={};function d(h,p){const o=r("RouterLink");return n(),s("div",null,[c("p",null,[e("The self-owned code of this project is licensed under the permissive MIT License and can be freely applied to commercial and non-commercial projects while retaining copyright information. However, this project also uses some scattered "),i(o,{to:"/reference/resources/dependency.html"},{default:a(()=>[e("open source code")]),_:1}),e(" , please replace or remove it for commercial use. Any commercial disputes or infringement caused by using this project have nothing to do with the project and developers and shall be at your own legal risk. When using the code of this project, the license agreement should also indicate the license of the third-party libraries that this project depends on.")])])}const f=t(l,[["render",d],["__file","license.html.vue"]]);export{f as default}; +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as n,c as s,a as c,d as e,b as i,w as a}from"./app-0NopiYEV.js";const l={};function d(h,p){const o=r("RouterLink");return n(),s("div",null,[c("p",null,[e("The self-owned code of this project is licensed under the permissive MIT License and can be freely applied to commercial and non-commercial projects while retaining copyright information. However, this project also uses some scattered "),i(o,{to:"/reference/resources/dependency.html"},{default:a(()=>[e("open source code")]),_:1}),e(" , please replace or remove it for commercial use. Any commercial disputes or infringement caused by using this project have nothing to do with the project and developers and shall be at your own legal risk. When using the code of this project, the license agreement should also indicate the license of the third-party libraries that this project depends on.")])])}const f=t(l,[["render",d],["__file","license.html.vue"]]);export{f as default}; diff --git a/assets/line-EJoUorMM.js b/assets/line-QxBjBe1b.js similarity index 93% rename from assets/line-EJoUorMM.js rename to assets/line-QxBjBe1b.js index 1cf66d9..6da00e1 100644 --- a/assets/line-EJoUorMM.js +++ b/assets/line-QxBjBe1b.js @@ -1 +1 @@ -import{a as h}from"./array-Nw74a44z.js";import{w as d,c as o}from"./path-aUcfwwLI.js";import{o as v}from"./mermaid.core-ygY5oRaR.js";function w(t){return t[0]}function b(t){return t[1]}function P(t,u){var s=o(!0),i=null,l=v,r=null,m=d(e);t=typeof t=="function"?t:t===void 0?w:o(t),u=typeof u=="function"?u:u===void 0?b:o(u);function e(n){var f,g=(n=h(n)).length,p,c=!1,a;for(i==null&&(r=l(a=m())),f=0;f<=g;++f)!(ft?1:n>=t?0:NaN}function hn(n,t){return n==null||t==null?NaN:tn?1:t>=n?0:NaN}function _(n){let t,e,r;n.length!==2?(t=$,e=(u,c)=>$(n(u),c),r=(u,c)=>n(u)-c):(t=n===$||n===hn?n:mn,e=n,r=n);function i(u,c,o=0,s=u.length){if(o>>1;e(u[h],c)<0?o=h+1:s=h}while(o>>1;e(u[h],c)<=0?o=h+1:s=h}while(oo&&r(u[h-1],c)>-r(u[h],c)?h-1:h}return{left:i,center:a,right:f}}function mn(){return 0}function ln(n){return n===null?NaN:+n}const sn=_($),dn=sn.right;_(ln).center;const gn=Math.sqrt(50),yn=Math.sqrt(10),Mn=Math.sqrt(2);function E(n,t,e){const r=(t-n)/Math.max(0,e),i=Math.floor(Math.log10(r)),f=r/Math.pow(10,i),a=f>=gn?10:f>=yn?5:f>=Mn?2:1;let u,c,o;return i<0?(o=Math.pow(10,-i)/a,u=Math.round(n*o),c=Math.round(t*o),u/ot&&--c,o=-o):(o=Math.pow(10,i)*a,u=Math.round(n/o),c=Math.round(t/o),u*ot&&--c),c0))return[];if(n===t)return[n];const r=t=i))return[];const u=f-i+1,c=new Array(u);if(r)if(a<0)for(let o=0;o=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function R(n,t){if((e=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"))<0)return null;var e,r=n.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+n.slice(e+1)]}function v(n){return n=R(Math.abs(n)),n?n[1]:NaN}function jn(n,t){return function(e,r){for(var i=e.length,f=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),f.push(e.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return f.reverse().join(t)}}function Pn(n){return function(t){return t.replace(/[0-9]/g,function(e){return n[+e]})}}var zn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function D(n){if(!(t=zn.exec(n)))throw new Error("invalid format: "+n);var t;return new G({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}D.prototype=G.prototype;function G(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}G.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Fn(n){n:for(var t=n.length,e=1,r=-1,i;e0&&(r=0);break}return r>0?n.slice(0,r)+n.slice(i+1):n}var nn;function $n(n,t){var e=R(n,t);if(!e)return n+"";var r=e[0],i=e[1],f=i-(nn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return f===a?r:f>a?r+new Array(f-a+1).join("0"):f>0?r.slice(0,f)+"."+r.slice(f):"0."+new Array(1-f).join("0")+R(n,Math.max(0,t+f-1))[0]}function Y(n,t){var e=R(n,t);if(!e)return n+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const Z={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:bn,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>Y(n*100,t),r:Y,s:$n,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function J(n){return n}var K=Array.prototype.map,Q=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function En(n){var t=n.grouping===void 0||n.thousands===void 0?J:jn(K.call(n.grouping,Number),n.thousands+""),e=n.currency===void 0?"":n.currency[0]+"",r=n.currency===void 0?"":n.currency[1]+"",i=n.decimal===void 0?".":n.decimal+"",f=n.numerals===void 0?J:Pn(K.call(n.numerals,String)),a=n.percent===void 0?"%":n.percent+"",u=n.minus===void 0?"−":n.minus+"",c=n.nan===void 0?"NaN":n.nan+"";function o(h){h=D(h);var l=h.fill,p=h.align,y=h.sign,S=h.symbol,k=h.zero,b=h.width,I=h.comma,w=h.precision,B=h.trim,d=h.type;d==="n"?(I=!0,d="g"):Z[d]||(w===void 0&&(w=12),B=!0,d="g"),(k||l==="0"&&p==="=")&&(k=!0,l="0",p="=");var en=S==="$"?e:S==="#"&&/[boxX]/.test(d)?"0"+d.toLowerCase():"",on=S==="$"?r:/[%p]/.test(d)?a:"",O=Z[d],an=/[defgprs%]/.test(d);w=w===void 0?6:/[gprs]/.test(d)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function V(m){var N=en,g=on,x,X,j;if(d==="c")g=O(m)+g,m="";else{m=+m;var P=m<0||1/m<0;if(m=isNaN(m)?c:O(Math.abs(m),w),B&&(m=Fn(m)),P&&+m==0&&y!=="+"&&(P=!1),N=(P?y==="("?y:u:y==="-"||y==="("?"":y)+N,g=(d==="s"?Q[8+nn/3]:"")+g+(P&&y==="("?")":""),an){for(x=-1,X=m.length;++xj||j>57){g=(j===46?i+m.slice(x+1):m.slice(x))+g,m=m.slice(0,x);break}}}I&&!k&&(m=t(m,1/0));var z=N.length+m.length+g.length,M=z>1)+N+m+g+M.slice(z);break;default:m=M+N+m+g;break}return f(m)}return V.toString=function(){return h+""},V}function s(h,l){var p=o((h=D(h),h.type="f",h)),y=Math.max(-8,Math.min(8,Math.floor(v(l)/3)))*3,S=Math.pow(10,-y),k=Q[8+y/3];return function(b){return p(S*b)+k}}return{format:o,formatPrefix:s}}var F,tn,rn;Rn({thousands:",",grouping:[3],currency:["$",""]});function Rn(n){return F=En(n),tn=F.format,rn=F.formatPrefix,F}function Dn(n){return Math.max(0,-v(Math.abs(n)))}function In(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(v(t)/3)))*3-v(Math.abs(n)))}function Tn(n,t){return n=Math.abs(n),t=Math.abs(t)-n,Math.max(0,v(t)-v(n))+1}function Ln(n){return function(){return n}}function qn(n){return+n}var W=[0,1];function A(n){return n}function q(n,t){return(t-=n=+n)?function(e){return(e-n)/t}:Ln(isNaN(t)?NaN:.5)}function Cn(n,t){var e;return n>t&&(e=n,n=t,t=e),function(r){return Math.max(n,Math.min(t,r))}}function Gn(n,t,e){var r=n[0],i=n[1],f=t[0],a=t[1];return i2?Bn:Gn,c=o=null,h}function h(l){return l==null||isNaN(l=+l)?f:(c||(c=u(n.map(r),t,e)))(r(a(l)))}return h.invert=function(l){return a(i((o||(o=u(t,n.map(r),T)))(l)))},h.domain=function(l){return arguments.length?(n=Array.from(l,qn),s()):n.slice()},h.range=function(l){return arguments.length?(t=Array.from(l),s()):t.slice()},h.rangeRound=function(l){return t=Array.from(l),e=Sn,s()},h.clamp=function(l){return arguments.length?(a=l?!0:A,s()):a!==A},h.interpolate=function(l){return arguments.length?(e=l,s()):e},h.unknown=function(l){return arguments.length?(f=l,h):f},function(l,p){return r=l,i=p,s()}}function Xn(){return Vn()(A,A)}function Hn(n,t,e,r){var i=wn(n,t,e),f;switch(r=D(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(n),Math.abs(t));return r.precision==null&&!isNaN(f=In(i,a))&&(r.precision=f),rn(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(f=Tn(i,Math.max(Math.abs(n),Math.abs(t))))&&(r.precision=f-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(f=Dn(i))&&(r.precision=f-(r.type==="%")*2);break}}return tn(r)}function Un(n){var t=n.domain;return n.ticks=function(e){var r=t();return pn(r[0],r[r.length-1],e??10)},n.tickFormat=function(e,r){var i=t();return Hn(i[0],i[i.length-1],e??10,r)},n.nice=function(e){e==null&&(e=10);var r=t(),i=0,f=r.length-1,a=r[i],u=r[f],c,o,s=10;for(u0;){if(o=L(a,u,e),o===c)return r[i]=a,r[f]=u,t(r);if(o>0)a=Math.floor(a/o)*o,u=Math.ceil(u/o)*o;else if(o<0)a=Math.ceil(a*o)/o,u=Math.floor(u*o)/o;else break;c=o}return n},n}function Yn(){var n=Xn();return n.copy=function(){return On(n,Yn())},cn.apply(n,arguments),Un(n)}export{On as a,_ as b,Xn as c,Yn as l,wn as t}; diff --git a/assets/linear-qWzY0BiT.js b/assets/linear-qWzY0BiT.js deleted file mode 100644 index 37d403b..0000000 --- a/assets/linear-qWzY0BiT.js +++ /dev/null @@ -1 +0,0 @@ -import{aE as un,aF as T,aG as H,aH as U,aI as fn}from"./mermaid.core-ygY5oRaR.js";import{i as cn}from"./init-Hi12RPRh.js";function $(n,t){return n==null||t==null?NaN:nt?1:n>=t?0:NaN}function hn(n,t){return n==null||t==null?NaN:tn?1:t>=n?0:NaN}function _(n){let t,e,r;n.length!==2?(t=$,e=(u,c)=>$(n(u),c),r=(u,c)=>n(u)-c):(t=n===$||n===hn?n:mn,e=n,r=n);function i(u,c,o=0,l=u.length){if(o>>1;e(u[h],c)<0?o=h+1:l=h}while(o>>1;e(u[h],c)<=0?o=h+1:l=h}while(oo&&r(u[h-1],c)>-r(u[h],c)?h-1:h}return{left:i,center:a,right:f}}function mn(){return 0}function sn(n){return n===null?NaN:+n}const ln=_($),dn=ln.right;_(sn).center;const gn=dn,yn=Math.sqrt(50),Mn=Math.sqrt(10),pn=Math.sqrt(2);function E(n,t,e){const r=(t-n)/Math.max(0,e),i=Math.floor(Math.log10(r)),f=r/Math.pow(10,i),a=f>=yn?10:f>=Mn?5:f>=pn?2:1;let u,c,o;return i<0?(o=Math.pow(10,-i)/a,u=Math.round(n*o),c=Math.round(t*o),u/ot&&--c,o=-o):(o=Math.pow(10,i)*a,u=Math.round(n/o),c=Math.round(t/o),u*ot&&--c),c0))return[];if(n===t)return[n];const r=t=i))return[];const u=f-i+1,c=new Array(u);if(r)if(a<0)for(let o=0;o=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function R(n,t){if((e=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"))<0)return null;var e,r=n.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+n.slice(e+1)]}function v(n){return n=R(Math.abs(n)),n?n[1]:NaN}function Pn(n,t){return function(e,r){for(var i=e.length,f=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),f.push(e.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return f.reverse().join(t)}}function zn(n){return function(t){return t.replace(/[0-9]/g,function(e){return n[+e]})}}var Fn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function D(n){if(!(t=Fn.exec(n)))throw new Error("invalid format: "+n);var t;return new G({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}D.prototype=G.prototype;function G(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}G.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function $n(n){n:for(var t=n.length,e=1,r=-1,i;e0&&(r=0);break}return r>0?n.slice(0,r)+n.slice(i+1):n}var nn;function En(n,t){var e=R(n,t);if(!e)return n+"";var r=e[0],i=e[1],f=i-(nn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return f===a?r:f>a?r+new Array(f-a+1).join("0"):f>0?r.slice(0,f)+"."+r.slice(f):"0."+new Array(1-f).join("0")+R(n,Math.max(0,t+f-1))[0]}function Y(n,t){var e=R(n,t);if(!e)return n+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const Z={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:jn,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>Y(n*100,t),r:Y,s:En,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function J(n){return n}var K=Array.prototype.map,Q=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Rn(n){var t=n.grouping===void 0||n.thousands===void 0?J:Pn(K.call(n.grouping,Number),n.thousands+""),e=n.currency===void 0?"":n.currency[0]+"",r=n.currency===void 0?"":n.currency[1]+"",i=n.decimal===void 0?".":n.decimal+"",f=n.numerals===void 0?J:zn(K.call(n.numerals,String)),a=n.percent===void 0?"%":n.percent+"",u=n.minus===void 0?"−":n.minus+"",c=n.nan===void 0?"NaN":n.nan+"";function o(h){h=D(h);var s=h.fill,p=h.align,y=h.sign,S=h.symbol,k=h.zero,b=h.width,I=h.comma,w=h.precision,B=h.trim,d=h.type;d==="n"?(I=!0,d="g"):Z[d]||(w===void 0&&(w=12),B=!0,d="g"),(k||s==="0"&&p==="=")&&(k=!0,s="0",p="=");var en=S==="$"?e:S==="#"&&/[boxX]/.test(d)?"0"+d.toLowerCase():"",on=S==="$"?r:/[%p]/.test(d)?a:"",O=Z[d],an=/[defgprs%]/.test(d);w=w===void 0?6:/[gprs]/.test(d)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function V(m){var N=en,g=on,x,X,j;if(d==="c")g=O(m)+g,m="";else{m=+m;var P=m<0||1/m<0;if(m=isNaN(m)?c:O(Math.abs(m),w),B&&(m=$n(m)),P&&+m==0&&y!=="+"&&(P=!1),N=(P?y==="("?y:u:y==="-"||y==="("?"":y)+N,g=(d==="s"?Q[8+nn/3]:"")+g+(P&&y==="("?")":""),an){for(x=-1,X=m.length;++xj||j>57){g=(j===46?i+m.slice(x+1):m.slice(x))+g,m=m.slice(0,x);break}}}I&&!k&&(m=t(m,1/0));var z=N.length+m.length+g.length,M=z>1)+N+m+g+M.slice(z);break;default:m=M+N+m+g;break}return f(m)}return V.toString=function(){return h+""},V}function l(h,s){var p=o((h=D(h),h.type="f",h)),y=Math.max(-8,Math.min(8,Math.floor(v(s)/3)))*3,S=Math.pow(10,-y),k=Q[8+y/3];return function(b){return p(S*b)+k}}return{format:o,formatPrefix:l}}var F,tn,rn;Dn({thousands:",",grouping:[3],currency:["$",""]});function Dn(n){return F=Rn(n),tn=F.format,rn=F.formatPrefix,F}function In(n){return Math.max(0,-v(Math.abs(n)))}function Tn(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(v(t)/3)))*3-v(Math.abs(n)))}function Ln(n,t){return n=Math.abs(n),t=Math.abs(t)-n,Math.max(0,v(t)-v(n))+1}function qn(n){return function(){return n}}function Cn(n){return+n}var W=[0,1];function A(n){return n}function q(n,t){return(t-=n=+n)?function(e){return(e-n)/t}:qn(isNaN(t)?NaN:.5)}function Gn(n,t){var e;return n>t&&(e=n,n=t,t=e),function(r){return Math.max(n,Math.min(t,r))}}function Bn(n,t,e){var r=n[0],i=n[1],f=t[0],a=t[1];return i2?On:Bn,c=o=null,h}function h(s){return s==null||isNaN(s=+s)?f:(c||(c=u(n.map(r),t,e)))(r(a(s)))}return h.invert=function(s){return a(i((o||(o=u(t,n.map(r),T)))(s)))},h.domain=function(s){return arguments.length?(n=Array.from(s,Cn),l()):n.slice()},h.range=function(s){return arguments.length?(t=Array.from(s),l()):t.slice()},h.rangeRound=function(s){return t=Array.from(s),e=bn,l()},h.clamp=function(s){return arguments.length?(a=s?!0:A,l()):a!==A},h.interpolate=function(s){return arguments.length?(e=s,l()):e},h.unknown=function(s){return arguments.length?(f=s,h):f},function(s,p){return r=s,i=p,l()}}function Hn(){return Xn()(A,A)}function Un(n,t,e,r){var i=Nn(n,t,e),f;switch(r=D(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(n),Math.abs(t));return r.precision==null&&!isNaN(f=Tn(i,a))&&(r.precision=f),rn(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(f=Ln(i,Math.max(Math.abs(n),Math.abs(t))))&&(r.precision=f-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(f=In(i))&&(r.precision=f-(r.type==="%")*2);break}}return tn(r)}function Yn(n){var t=n.domain;return n.ticks=function(e){var r=t();return wn(r[0],r[r.length-1],e??10)},n.tickFormat=function(e,r){var i=t();return Un(i[0],i[i.length-1],e??10,r)},n.nice=function(e){e==null&&(e=10);var r=t(),i=0,f=r.length-1,a=r[i],u=r[f],c,o,l=10;for(u0;){if(o=L(a,u,e),o===c)return r[i]=a,r[f]=u,t(r);if(o>0)a=Math.floor(a/o)*o,u=Math.ceil(u/o)*o;else if(o<0)a=Math.ceil(a*o)/o,u=Math.floor(u*o)/o;else break;c=o}return n},n}function Zn(){var n=Hn();return n.copy=function(){return Vn(n,Zn())},cn.apply(n,arguments),Yn(n)}export{Vn as a,_ as b,Hn as c,Zn as l,Nn as t}; diff --git a/assets/mermaid.core-YBgJFCkH.js b/assets/mermaid.core-YBgJFCkH.js new file mode 100644 index 0000000..3f8ef97 --- /dev/null +++ b/assets/mermaid.core-YBgJFCkH.js @@ -0,0 +1,92 @@ +import{_ as J}from"./app-0NopiYEV.js";function lh(t){for(var e=[],i=1;i=v?M:""+Array(v+1-B.length).join(y)+M},H={s:P,z:function(M){var v=-M.utcOffset(),y=Math.abs(v),B=Math.floor(y/60),x=y%60;return(v<=0?"+":"-")+P(B,2,"0")+":"+P(x,2,"0")},m:function M(v,y){if(v.date()1)return M(D[0])}else{var $=v.name;X[$]=v,x=$}return!B&&x&&(Y=x),x||!B&&Y},j=function(M,v){if(Xt(M))return M.clone();var y=typeof v=="object"?v:{};return y.date=M,y.args=arguments,new vt(y)},z=H;z.l=Kt,z.i=Xt,z.w=function(M,v){return j(M,{locale:v.$L,utc:v.$u,x:v.$x,$offset:v.$offset})};var vt=function(){function M(y){this.$L=Kt(y.locale,null,!0),this.parse(y),this.$x=this.$x||y.x||{},this[W]=!0}var v=M.prototype;return v.parse=function(y){this.$d=function(B){var x=B.date,b=B.utc;if(x===null)return new Date(NaN);if(z.u(x))return new Date;if(x instanceof Date)return new Date(x);if(typeof x=="string"&&!/Z$/i.test(x)){var D=x.match(S);if(D){var $=D[2]-1||0,G=(D[7]||"0").substring(0,3);return b?new Date(Date.UTC(D[1],$,D[3]||1,D[4]||0,D[5]||0,D[6]||0,G)):new Date(D[1],$,D[3]||1,D[4]||0,D[5]||0,D[6]||0,G)}}return new Date(x)}(y),this.init()},v.init=function(){var y=this.$d;this.$y=y.getFullYear(),this.$M=y.getMonth(),this.$D=y.getDate(),this.$W=y.getDay(),this.$H=y.getHours(),this.$m=y.getMinutes(),this.$s=y.getSeconds(),this.$ms=y.getMilliseconds()},v.$utils=function(){return z},v.isValid=function(){return this.$d.toString()!==k},v.isSame=function(y,B){var x=j(y);return this.startOf(B)<=x&&x<=this.endOf(B)},v.isAfter=function(y,B){return j(y)-1}function l(u){var f=u.replace(n,"");return f.replace(i,function(c,d){return String.fromCharCode(d)})}function h(u){if(!u)return t.BLANK_URL;var f=l(u).replace(r,"").replace(n,"").trim();if(!f)return t.BLANK_URL;if(a(f))return f;var c=f.match(o);if(!c)return f;var d=c[0];return e.test(d)?t.BLANK_URL:f}t.sanitizeUrl=h})(Is);var dh={value:()=>{}};function $s(){for(var t=0,e=arguments.length,i={},r;t=0&&(r=i.slice(n+1),i=i.slice(0,n)),i&&!e.hasOwnProperty(i))throw new Error("unknown type: "+i);return{type:i,name:r}})}Oi.prototype=$s.prototype={constructor:Oi,on:function(t,e){var i=this._,r=ph(t+"",i),n,o=-1,s=r.length;if(arguments.length<2){for(;++o0)for(var i=new Array(n),r=0,n,o;r=0&&(e=t.slice(0,i))!=="xmlns"&&(t=t.slice(i+1)),vo.hasOwnProperty(e)?{space:vo[e],local:t}:t}function mh(t){return function(){var e=this.ownerDocument,i=this.namespaceURI;return i===Zr&&e.documentElement.namespaceURI===Zr?e.createElement(t):e.createElementNS(i,t)}}function _h(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Ds(t){var e=cr(t);return(e.local?_h:mh)(e)}function yh(){}function xn(t){return t==null?yh:function(){return this.querySelector(t)}}function Ch(t){typeof t!="function"&&(t=xn(t));for(var e=this._groups,i=e.length,r=new Array(i),n=0;n=P&&(P=T+1);!(Y=S[P])&&++P<_;);H._next=Y||null}}return s=new yt(s,r),s._enter=a,s._exit=l,s}function Ph(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function qh(){return new yt(this._exit||this._groups.map(qs),this._parents)}function zh(t,e,i){var r=this.enter(),n=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(n=e(n),n&&(n=n.selection())),i==null?o.remove():i(o),r&&n?r.merge(n).order():n}function Wh(t){for(var e=t.selection?t.selection():t,i=this._groups,r=e._groups,n=i.length,o=r.length,s=Math.min(n,o),a=new Array(n),l=0;l=0;)(s=r[n])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function jh(t){t||(t=Uh);function e(f,c){return f&&c?t(f.__data__,c.__data__):!f-!c}for(var i=this._groups,r=i.length,n=new Array(r),o=0;oe?1:t>=e?0:NaN}function Yh(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Vh(){return Array.from(this)}function Gh(){for(var t=this._groups,e=0,i=t.length;e1?this.each((e==null?oc:typeof e=="function"?ac:sc)(t,e,i??"")):Ee(this.node(),t)}function Ee(t,e){return t.style.getPropertyValue(e)||zs(t).getComputedStyle(t,null).getPropertyValue(e)}function hc(t){return function(){delete this[t]}}function cc(t,e){return function(){this[t]=e}}function uc(t,e){return function(){var i=e.apply(this,arguments);i==null?delete this[t]:this[t]=i}}function fc(t,e){return arguments.length>1?this.each((e==null?hc:typeof e=="function"?uc:cc)(t,e)):this.node()[t]}function Ws(t){return t.trim().split(/^|\s+/)}function bn(t){return t.classList||new Hs(t)}function Hs(t){this._node=t,this._names=Ws(t.getAttribute("class")||"")}Hs.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function js(t,e){for(var i=bn(t),r=-1,n=e.length;++r=0&&(i=e.slice(r+1),e=e.slice(0,r)),{type:e,name:i}})}function qc(t){return function(){var e=this.__on;if(e){for(var i=0,r=-1,n=e.length,o;i>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):i===8?ki(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):i===4?ki(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Xc.exec(t))?new gt(e[1],e[2],e[3],1):(e=Kc.exec(t))?new gt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Zc.exec(t))?ki(e[1],e[2],e[3],e[4]):(e=Jc.exec(t))?ki(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Qc.exec(t))?Lo(e[1],e[2]/100,e[3]/100,1):(e=tu.exec(t))?Lo(e[1],e[2]/100,e[3]/100,e[4]):ko.hasOwnProperty(t)?Bo(ko[t]):t==="transparent"?new gt(NaN,NaN,NaN,0):null}function Bo(t){return new gt(t>>16&255,t>>8&255,t&255,1)}function ki(t,e,i,r){return r<=0&&(t=e=i=NaN),new gt(t,e,i,r)}function ru(t){return t instanceof mi||(t=ai(t)),t?(t=t.rgb(),new gt(t.r,t.g,t.b,t.opacity)):new gt}function Jr(t,e,i,r){return arguments.length===1?ru(t):new gt(t,e,i,r??1)}function gt(t,e,i,r){this.r=+t,this.g=+e,this.b=+i,this.opacity=+r}Tn(gt,Jr,Gs(mi,{brighter(t){return t=t==null?Wi:Math.pow(Wi,t),new gt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?oi:Math.pow(oi,t),new gt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new gt(fe(this.r),fe(this.g),fe(this.b),Hi(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ao,formatHex:Ao,formatHex8:nu,formatRgb:Fo,toString:Fo}));function Ao(){return`#${ce(this.r)}${ce(this.g)}${ce(this.b)}`}function nu(){return`#${ce(this.r)}${ce(this.g)}${ce(this.b)}${ce((isNaN(this.opacity)?1:this.opacity)*255)}`}function Fo(){const t=Hi(this.opacity);return`${t===1?"rgb(":"rgba("}${fe(this.r)}, ${fe(this.g)}, ${fe(this.b)}${t===1?")":`, ${t})`}`}function Hi(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function fe(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ce(t){return t=fe(t),(t<16?"0":"")+t.toString(16)}function Lo(t,e,i,r){return r<=0?t=e=i=NaN:i<=0||i>=1?t=e=NaN:e<=0&&(t=NaN),new St(t,e,i,r)}function Xs(t){if(t instanceof St)return new St(t.h,t.s,t.l,t.opacity);if(t instanceof mi||(t=ai(t)),!t)return new St;if(t instanceof St)return t;t=t.rgb();var e=t.r/255,i=t.g/255,r=t.b/255,n=Math.min(e,i,r),o=Math.max(e,i,r),s=NaN,a=o-n,l=(o+n)/2;return a?(e===o?s=(i-r)/a+(i0&&l<1?0:s,new St(s,a,l,t.opacity)}function ou(t,e,i,r){return arguments.length===1?Xs(t):new St(t,e,i,r??1)}function St(t,e,i,r){this.h=+t,this.s=+e,this.l=+i,this.opacity=+r}Tn(St,ou,Gs(mi,{brighter(t){return t=t==null?Wi:Math.pow(Wi,t),new St(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?oi:Math.pow(oi,t),new St(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,i=this.l,r=i+(i<.5?i:1-i)*e,n=2*i-r;return new gt($r(t>=240?t-240:t+120,n,r),$r(t,n,r),$r(t<120?t+240:t-120,n,r),this.opacity)},clamp(){return new St(Eo(this.h),Si(this.s),Si(this.l),Hi(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Hi(this.opacity);return`${t===1?"hsl(":"hsla("}${Eo(this.h)}, ${Si(this.s)*100}%, ${Si(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Eo(t){return t=(t||0)%360,t<0?t+360:t}function Si(t){return Math.max(0,Math.min(1,t||0))}function $r(t,e,i){return(t<60?e+(i-e)*t/60:t<180?i:t<240?e+(i-e)*(240-t)/60:e)*255}const vn=t=>()=>t;function Ks(t,e){return function(i){return t+i*e}}function su(t,e,i){return t=Math.pow(t,i),e=Math.pow(e,i)-t,i=1/i,function(r){return Math.pow(t+r*e,i)}}function pb(t,e){var i=e-t;return i?Ks(t,i>180||i<-180?i-360*Math.round(i/360):i):vn(isNaN(t)?e:t)}function au(t){return(t=+t)==1?Zs:function(e,i){return i-e?su(e,i,t):vn(isNaN(e)?i:e)}}function Zs(t,e){var i=e-t;return i?Ks(t,i):vn(isNaN(t)?e:t)}const Oo=function t(e){var i=au(e);function r(n,o){var s=i((n=Jr(n)).r,(o=Jr(o)).r),a=i(n.g,o.g),l=i(n.b,o.b),h=Zs(n.opacity,o.opacity);return function(u){return n.r=s(u),n.g=a(u),n.b=l(u),n.opacity=h(u),n+""}}return r.gamma=t,r}(1);function ee(t,e){return t=+t,e=+e,function(i){return t*(1-i)+e*i}}var Qr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Dr=new RegExp(Qr.source,"g");function lu(t){return function(){return t}}function hu(t){return function(e){return t(e)+""}}function cu(t,e){var i=Qr.lastIndex=Dr.lastIndex=0,r,n,o,s=-1,a=[],l=[];for(t=t+"",e=e+"";(r=Qr.exec(t))&&(n=Dr.exec(e));)(o=n.index)>i&&(o=e.slice(i,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(n=n[0])?a[s]?a[s]+=n:a[++s]=n:(a[++s]=null,l.push({i:s,x:ee(r,n)})),i=Dr.lastIndex;return i180?u+=360:u-h>180&&(h+=360),c.push({i:f.push(n(f)+"rotate(",null,r)-2,x:ee(h,u)})):u&&f.push(n(f)+"rotate("+u+r)}function a(h,u,f,c){h!==u?c.push({i:f.push(n(f)+"skewX(",null,r)-2,x:ee(h,u)}):u&&f.push(n(f)+"skewX("+u+r)}function l(h,u,f,c,d,_){if(h!==f||u!==c){var k=d.push(n(d)+"scale(",null,",",null,")");_.push({i:k-4,x:ee(h,f)},{i:k-2,x:ee(u,c)})}else(f!==1||c!==1)&&d.push(n(d)+"scale("+f+","+c+")")}return function(h,u){var f=[],c=[];return h=t(h),u=t(u),o(h.translateX,h.translateY,u.translateX,u.translateY,f,c),s(h.rotate,u.rotate,f,c),a(h.skewX,u.skewX,f,c),l(h.scaleX,h.scaleY,u.scaleX,u.scaleY,f,c),h=u=null,function(d){for(var _=-1,k=c.length,S;++_=0&&t._call.call(void 0,e),t=t._next;--Oe}function Io(){ge=(Ui=li.now())+ur,Oe=Xe=0;try{mu()}finally{Oe=0,yu(),ge=0}}function _u(){var t=li.now(),e=t-Ui;e>ta&&(ur-=e,Ui=t)}function yu(){for(var t,e=ji,i,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(i=e._next,e._next=null,e=t?t._next=i:ji=i);Ke=t,en(r)}function en(t){if(!Oe){Xe&&(Xe=clearTimeout(Xe));var e=t-ge;e>24?(t<1/0&&(Xe=setTimeout(Io,t-li.now()-ur)),je&&(je=clearInterval(je))):(je||(Ui=li.now(),je=setInterval(_u,ta)),Oe=1,ea(Io))}}function $o(t,e,i){var r=new Yi;return e=e==null?0:+e,r.restart(n=>{r.stop(),t(n+e)},e,i),r}var Cu=$s("start","end","cancel","interrupt"),xu=[],ra=0,Do=1,rn=2,Mi=3,No=4,nn=5,Ii=6;function fr(t,e,i,r,n,o){var s=t.__transition;if(!s)t.__transition={};else if(i in s)return;bu(t,i,{name:e,index:r,group:n,on:Cu,tween:xu,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:ra})}function Sn(t,e){var i=Ft(t,e);if(i.state>ra)throw new Error("too late; already scheduled");return i}function $t(t,e){var i=Ft(t,e);if(i.state>Mi)throw new Error("too late; already running");return i}function Ft(t,e){var i=t.__transition;if(!i||!(i=i[e]))throw new Error("transition not found");return i}function bu(t,e,i){var r=t.__transition,n;r[e]=i,i.timer=ia(o,0,i.time);function o(h){i.state=Do,i.timer.restart(s,i.delay,i.time),i.delay<=h&&s(h-i.delay)}function s(h){var u,f,c,d;if(i.state!==Do)return l();for(u in r)if(d=r[u],d.name===i.name){if(d.state===Mi)return $o(s);d.state===No?(d.state=Ii,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[u]):+urn&&r.state=0&&(e=e.slice(0,i)),!e||e==="start"})}function Ju(t,e,i){var r,n,o=Zu(e)?Sn:$t;return function(){var s=o(this,t),a=s.on;a!==r&&(n=(r=a).copy()).on(e,i),s.on=n}}function Qu(t,e){var i=this._id;return arguments.length<2?Ft(this.node(),i).on.on(t):this.each(Ju(i,t,e))}function tf(t){return function(){var e=this.parentNode;for(var i in this.__transition)if(+i!==t)return;e&&e.removeChild(this)}}function ef(){return this.on("end.remove",tf(this._id))}function rf(t){var e=this._name,i=this._id;typeof t!="function"&&(t=xn(t));for(var r=this._groups,n=r.length,o=new Array(n),s=0;s1?0:t<-1?Bn:Math.acos(t)}function kb(t){return t>=1?Po:t<=-1?-Po:Math.asin(t)}function aa(t){this._context=t}aa.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function Af(t){return new aa(t)}class la{constructor(e,i){this._context=e,this._x=i}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,i){switch(e=+e,i=+i,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,i):this._context.moveTo(e,i);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,i,e,i):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+i)/2,e,this._y0,e,i);break}}this._x0=e,this._y0=i}}function Ff(t){return new la(t,!0)}function Lf(t){return new la(t,!1)}function re(){}function Vi(t,e,i){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+i)/6)}function dr(t){this._context=t}dr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Vi(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Vi(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Ef(t){return new dr(t)}function ha(t){this._context=t}ha.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Vi(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Of(t){return new ha(t)}function ca(t){this._context=t}ca.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var i=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(i,r):this._context.moveTo(i,r);break;case 3:this._point=4;default:Vi(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Mf(t){return new ca(t)}function ua(t,e){this._basis=new dr(t),this._beta=e}ua.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,i=t.length-1;if(i>0)for(var r=t[0],n=e[0],o=t[i]-r,s=e[i]-n,a=-1,l;++a<=i;)l=a/i,this._basis.point(this._beta*t[a]+(1-this._beta)*(r+l*o),this._beta*e[a]+(1-this._beta)*(n+l*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const If=function t(e){function i(r){return e===1?new dr(r):new ua(r,e)}return i.beta=function(r){return t(+r)},i}(.85);function Gi(t,e,i){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-i),t._x2,t._y2)}function An(t,e){this._context=t,this._k=(1-e)/6}An.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Gi(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Gi(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const $f=function t(e){function i(r){return new An(r,e)}return i.tension=function(r){return t(+r)},i}(0);function Fn(t,e){this._context=t,this._k=(1-e)/6}Fn.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Gi(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Df=function t(e){function i(r){return new Fn(r,e)}return i.tension=function(r){return t(+r)},i}(0);function Ln(t,e){this._context=t,this._k=(1-e)/6}Ln.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gi(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Nf=function t(e){function i(r){return new Ln(r,e)}return i.tension=function(r){return t(+r)},i}(0);function En(t,e,i){var r=t._x1,n=t._y1,o=t._x2,s=t._y2;if(t._l01_a>Ro){var a=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*a-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,n=(n*a-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>Ro){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*h+t._x1*t._l23_2a-e*t._l12_2a)/u,s=(s*h+t._y1*t._l23_2a-i*t._l12_2a)/u}t._context.bezierCurveTo(r,n,o,s,t._x2,t._y2)}function fa(t,e){this._context=t,this._alpha=e}fa.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:En(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Rf=function t(e){function i(r){return e?new fa(r,e):new An(r,0)}return i.alpha=function(r){return t(+r)},i}(.5);function da(t,e){this._context=t,this._alpha=e}da.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:En(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Pf=function t(e){function i(r){return e?new da(r,e):new Fn(r,0)}return i.alpha=function(r){return t(+r)},i}(.5);function pa(t,e){this._context=t,this._alpha=e}pa.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:En(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const qf=function t(e){function i(r){return e?new pa(r,e):new Ln(r,0)}return i.alpha=function(r){return t(+r)},i}(.5);function ga(t){this._context=t}ga.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function zf(t){return new ga(t)}function qo(t){return t<0?-1:1}function zo(t,e,i){var r=t._x1-t._x0,n=e-t._x1,o=(t._y1-t._y0)/(r||n<0&&-0),s=(i-t._y1)/(n||r<0&&-0),a=(o*n+s*r)/(r+n);return(qo(o)+qo(s))*Math.min(Math.abs(o),Math.abs(s),.5*Math.abs(a))||0}function Wo(t,e){var i=t._x1-t._x0;return i?(3*(t._y1-t._y0)/i-e)/2:e}function Nr(t,e,i){var r=t._x0,n=t._y0,o=t._x1,s=t._y1,a=(o-r)/3;t._context.bezierCurveTo(r+a,n+a*e,o-a,s-a*i,o,s)}function Xi(t){this._context=t}Xi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Nr(this,this._t0,Wo(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var i=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Nr(this,Wo(this,i=zo(this,t,e)),i);break;default:Nr(this,this._t0,i=zo(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=i}}};function ma(t){this._context=new _a(t)}(ma.prototype=Object.create(Xi.prototype)).point=function(t,e){Xi.prototype.point.call(this,e,t)};function _a(t){this._context=t}_a.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,i,r,n,o){this._context.bezierCurveTo(e,t,r,i,o,n)}};function Wf(t){return new Xi(t)}function Hf(t){return new ma(t)}function ya(t){this._context=t}ya.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,i=t.length;if(i)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),i===2)this._context.lineTo(t[1],e[1]);else for(var r=Ho(t),n=Ho(e),o=0,s=1;s=0;--e)n[e]=(s[e]-n[e+1])/o[e];for(o[i-1]=(t[i]+n[i-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var i=this._x*(1-this._t)+t*this._t;this._context.lineTo(i,this._y),this._context.lineTo(i,e)}break}}this._x=t,this._y=e}};function Uf(t){return new pr(t,.5)}function Yf(t){return new pr(t,0)}function Vf(t){return new pr(t,1)}function Ze(t,e,i){this.k=t,this.x=e,this.y=i}Ze.prototype={constructor:Ze,scale:function(t){return t===1?this:new Ze(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Ze(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};Ze.prototype;/*! @license DOMPurify 3.0.8 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.8/LICENSE */const{entries:Ca,setPrototypeOf:jo,isFrozen:Gf,getPrototypeOf:Xf,getOwnPropertyDescriptor:On}=Object;let{freeze:ut,seal:Bt,create:xa}=Object,{apply:on,construct:sn}=typeof Reflect<"u"&&Reflect;ut||(ut=function(e){return e});Bt||(Bt=function(e){return e});on||(on=function(e,i,r){return e.apply(i,r)});sn||(sn=function(e,i){return new e(...i)});const Bi=bt(Array.prototype.forEach),Uo=bt(Array.prototype.pop),Ue=bt(Array.prototype.push),$i=bt(String.prototype.toLowerCase),Rr=bt(String.prototype.toString),Kf=bt(String.prototype.match),Ye=bt(String.prototype.replace),Zf=bt(String.prototype.indexOf),Jf=bt(String.prototype.trim),_t=bt(RegExp.prototype.test),Ve=Qf(TypeError);function bt(t){return function(e){for(var i=arguments.length,r=new Array(i>1?i-1:0),n=1;n2&&arguments[2]!==void 0?arguments[2]:$i;jo&&jo(t,null);let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){const o=i(n);o!==n&&(Gf(e)||(e[r]=o),n=o)}t[n]=!0}return t}function td(t){for(let e=0;e/gm),od=Bt(/\${[\w\W]*}/gm),sd=Bt(/^data-[\-\w.\u00B7-\uFFFF]/),ad=Bt(/^aria-[\-\w]+$/),ba=Bt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ld=Bt(/^(?:\w+script|data):/i),hd=Bt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Ta=Bt(/^html$/i);var Ko=Object.freeze({__proto__:null,MUSTACHE_EXPR:rd,ERB_EXPR:nd,TMPLIT_EXPR:od,DATA_ATTR:sd,ARIA_ATTR:ad,IS_ALLOWED_URI:ba,IS_SCRIPT_OR_DATA:ld,ATTR_WHITESPACE:hd,DOCTYPE_NAME:Ta});const cd=function(){return typeof window>"u"?null:window},ud=function(e,i){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null;const n="data-tt-policy-suffix";i&&i.hasAttribute(n)&&(r=i.getAttribute(n));const o="dompurify"+(r?"#"+r:"");try{return e.createPolicy(o,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function va(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:cd();const e=A=>va(A);if(e.version="3.0.8",e.removed=[],!t||!t.document||t.document.nodeType!==9)return e.isSupported=!1,e;let{document:i}=t;const r=i,n=r.currentScript,{DocumentFragment:o,HTMLTemplateElement:s,Node:a,Element:l,NodeFilter:h,NamedNodeMap:u=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:f,DOMParser:c,trustedTypes:d}=t,_=l.prototype,k=Ai(_,"cloneNode"),S=Ai(_,"nextSibling"),R=Ai(_,"childNodes"),T=Ai(_,"parentNode");if(typeof s=="function"){const A=i.createElement("template");A.content&&A.content.ownerDocument&&(i=A.content.ownerDocument)}let P,H="";const{implementation:Y,createNodeIterator:X,createDocumentFragment:W,getElementsByTagName:Xt}=i,{importNode:Kt}=r;let j={};e.isSupported=typeof Ca=="function"&&typeof T=="function"&&Y&&Y.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:z,ERB_EXPR:vt,TMPLIT_EXPR:Zt,DATA_ATTR:M,ARIA_ATTR:v,IS_SCRIPT_OR_DATA:y,ATTR_WHITESPACE:B}=Ko;let{IS_ALLOWED_URI:x}=Ko,b=null;const D=q({},[...Yo,...Pr,...qr,...zr,...Vo]);let $=null;const G=q({},[...Go,...Wr,...Xo,...Fi]);let N=Object.seal(xa(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),K=null,it=null,Nt=!0,kt=!0,Jt=!1,Lt=!0,Z=!1,rt=!1,Rt=!1,Qt=!1,be=!1,xi=!1,bi=!1,eo=!0,io=!1;const Ql="user-content-";let Fr=!0,ze=!1,Te={},ve=null;const ro=q({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let no=null;const oo=q({},["audio","video","img","source","image","track"]);let Lr=null;const so=q({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ti="http://www.w3.org/1998/Math/MathML",vi="http://www.w3.org/2000/svg",Pt="http://www.w3.org/1999/xhtml";let ke=Pt,Er=!1,Or=null;const th=q({},[Ti,vi,Pt],Rr);let We=null;const eh=["application/xhtml+xml","text/html"],ih="text/html";let et=null,Se=null;const rh=i.createElement("form"),ao=function(p){return p instanceof RegExp||p instanceof Function},Mr=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Se&&Se===p)){if((!p||typeof p!="object")&&(p={}),p=le(p),We=eh.indexOf(p.PARSER_MEDIA_TYPE)===-1?ih:p.PARSER_MEDIA_TYPE,et=We==="application/xhtml+xml"?Rr:$i,b="ALLOWED_TAGS"in p?q({},p.ALLOWED_TAGS,et):D,$="ALLOWED_ATTR"in p?q({},p.ALLOWED_ATTR,et):G,Or="ALLOWED_NAMESPACES"in p?q({},p.ALLOWED_NAMESPACES,Rr):th,Lr="ADD_URI_SAFE_ATTR"in p?q(le(so),p.ADD_URI_SAFE_ATTR,et):so,no="ADD_DATA_URI_TAGS"in p?q(le(oo),p.ADD_DATA_URI_TAGS,et):oo,ve="FORBID_CONTENTS"in p?q({},p.FORBID_CONTENTS,et):ro,K="FORBID_TAGS"in p?q({},p.FORBID_TAGS,et):{},it="FORBID_ATTR"in p?q({},p.FORBID_ATTR,et):{},Te="USE_PROFILES"in p?p.USE_PROFILES:!1,Nt=p.ALLOW_ARIA_ATTR!==!1,kt=p.ALLOW_DATA_ATTR!==!1,Jt=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Lt=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Z=p.SAFE_FOR_TEMPLATES||!1,rt=p.WHOLE_DOCUMENT||!1,be=p.RETURN_DOM||!1,xi=p.RETURN_DOM_FRAGMENT||!1,bi=p.RETURN_TRUSTED_TYPE||!1,Qt=p.FORCE_BODY||!1,eo=p.SANITIZE_DOM!==!1,io=p.SANITIZE_NAMED_PROPS||!1,Fr=p.KEEP_CONTENT!==!1,ze=p.IN_PLACE||!1,x=p.ALLOWED_URI_REGEXP||ba,ke=p.NAMESPACE||Pt,N=p.CUSTOM_ELEMENT_HANDLING||{},p.CUSTOM_ELEMENT_HANDLING&&ao(p.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(N.tagNameCheck=p.CUSTOM_ELEMENT_HANDLING.tagNameCheck),p.CUSTOM_ELEMENT_HANDLING&&ao(p.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(N.attributeNameCheck=p.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),p.CUSTOM_ELEMENT_HANDLING&&typeof p.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(N.allowCustomizedBuiltInElements=p.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Z&&(kt=!1),xi&&(be=!0),Te&&(b=q({},Vo),$=[],Te.html===!0&&(q(b,Yo),q($,Go)),Te.svg===!0&&(q(b,Pr),q($,Wr),q($,Fi)),Te.svgFilters===!0&&(q(b,qr),q($,Wr),q($,Fi)),Te.mathMl===!0&&(q(b,zr),q($,Xo),q($,Fi))),p.ADD_TAGS&&(b===D&&(b=le(b)),q(b,p.ADD_TAGS,et)),p.ADD_ATTR&&($===G&&($=le($)),q($,p.ADD_ATTR,et)),p.ADD_URI_SAFE_ATTR&&q(Lr,p.ADD_URI_SAFE_ATTR,et),p.FORBID_CONTENTS&&(ve===ro&&(ve=le(ve)),q(ve,p.FORBID_CONTENTS,et)),Fr&&(b["#text"]=!0),rt&&q(b,["html","head","body"]),b.table&&(q(b,["tbody"]),delete K.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ve('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ve('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');P=p.TRUSTED_TYPES_POLICY,H=P.createHTML("")}else P===void 0&&(P=ud(d,n)),P!==null&&typeof H=="string"&&(H=P.createHTML(""));ut&&ut(p),Se=p}},lo=q({},["mi","mo","mn","ms","mtext"]),ho=q({},["foreignobject","desc","title","annotation-xml"]),nh=q({},["title","style","font","a","script"]),co=q({},[...Pr,...qr,...ed]),uo=q({},[...zr,...id]),oh=function(p){let m=T(p);(!m||!m.tagName)&&(m={namespaceURI:ke,tagName:"template"});const w=$i(p.tagName),U=$i(m.tagName);return Or[p.namespaceURI]?p.namespaceURI===vi?m.namespaceURI===Pt?w==="svg":m.namespaceURI===Ti?w==="svg"&&(U==="annotation-xml"||lo[U]):!!co[w]:p.namespaceURI===Ti?m.namespaceURI===Pt?w==="math":m.namespaceURI===vi?w==="math"&&ho[U]:!!uo[w]:p.namespaceURI===Pt?m.namespaceURI===vi&&!ho[U]||m.namespaceURI===Ti&&!lo[U]?!1:!uo[w]&&(nh[w]||!co[w]):!!(We==="application/xhtml+xml"&&Or[p.namespaceURI]):!1},se=function(p){Ue(e.removed,{element:p});try{p.parentNode.removeChild(p)}catch{p.remove()}},Ir=function(p,m){try{Ue(e.removed,{attribute:m.getAttributeNode(p),from:m})}catch{Ue(e.removed,{attribute:null,from:m})}if(m.removeAttribute(p),p==="is"&&!$[p])if(be||xi)try{se(m)}catch{}else try{m.setAttribute(p,"")}catch{}},fo=function(p){let m=null,w=null;if(Qt)p=""+p;else{const ot=Kf(p,/^[\r\n\t ]+/);w=ot&&ot[0]}We==="application/xhtml+xml"&&ke===Pt&&(p=''+p+"");const U=P?P.createHTML(p):p;if(ke===Pt)try{m=new c().parseFromString(U,We)}catch{}if(!m||!m.documentElement){m=Y.createDocument(ke,"template",null);try{m.documentElement.innerHTML=Er?H:U}catch{}}const nt=m.body||m.documentElement;return p&&w&&nt.insertBefore(i.createTextNode(w),nt.childNodes[0]||null),ke===Pt?Xt.call(m,rt?"html":"body")[0]:rt?m.documentElement:nt},po=function(p){return X.call(p.ownerDocument||p,p,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT,null)},sh=function(p){return p instanceof f&&(typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||!(p.attributes instanceof u)||typeof p.removeAttribute!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function")},go=function(p){return typeof a=="function"&&p instanceof a},qt=function(p,m,w){j[p]&&Bi(j[p],U=>{U.call(e,m,w,Se)})},mo=function(p){let m=null;if(qt("beforeSanitizeElements",p,null),sh(p))return se(p),!0;const w=et(p.nodeName);if(qt("uponSanitizeElement",p,{tagName:w,allowedTags:b}),p.hasChildNodes()&&!go(p.firstElementChild)&&_t(/<[/\w]/g,p.innerHTML)&&_t(/<[/\w]/g,p.textContent))return se(p),!0;if(!b[w]||K[w]){if(!K[w]&&yo(w)&&(N.tagNameCheck instanceof RegExp&&_t(N.tagNameCheck,w)||N.tagNameCheck instanceof Function&&N.tagNameCheck(w)))return!1;if(Fr&&!ve[w]){const U=T(p)||p.parentNode,nt=R(p)||p.childNodes;if(nt&&U){const ot=nt.length;for(let ft=ot-1;ft>=0;--ft)U.insertBefore(k(nt[ft],!0),S(p))}}return se(p),!0}return p instanceof l&&!oh(p)||(w==="noscript"||w==="noembed"||w==="noframes")&&_t(/<\/no(script|embed|frames)/i,p.innerHTML)?(se(p),!0):(Z&&p.nodeType===3&&(m=p.textContent,Bi([z,vt,Zt],U=>{m=Ye(m,U," ")}),p.textContent!==m&&(Ue(e.removed,{element:p.cloneNode()}),p.textContent=m)),qt("afterSanitizeElements",p,null),!1)},_o=function(p,m,w){if(eo&&(m==="id"||m==="name")&&(w in i||w in rh))return!1;if(!(kt&&!it[m]&&_t(M,m))){if(!(Nt&&_t(v,m))){if(!$[m]||it[m]){if(!(yo(p)&&(N.tagNameCheck instanceof RegExp&&_t(N.tagNameCheck,p)||N.tagNameCheck instanceof Function&&N.tagNameCheck(p))&&(N.attributeNameCheck instanceof RegExp&&_t(N.attributeNameCheck,m)||N.attributeNameCheck instanceof Function&&N.attributeNameCheck(m))||m==="is"&&N.allowCustomizedBuiltInElements&&(N.tagNameCheck instanceof RegExp&&_t(N.tagNameCheck,w)||N.tagNameCheck instanceof Function&&N.tagNameCheck(w))))return!1}else if(!Lr[m]){if(!_t(x,Ye(w,B,""))){if(!((m==="src"||m==="xlink:href"||m==="href")&&p!=="script"&&Zf(w,"data:")===0&&no[p])){if(!(Jt&&!_t(y,Ye(w,B,"")))){if(w)return!1}}}}}}return!0},yo=function(p){return p.indexOf("-")>0},Co=function(p){qt("beforeSanitizeAttributes",p,null);const{attributes:m}=p;if(!m)return;const w={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:$};let U=m.length;for(;U--;){const nt=m[U],{name:ot,namespaceURI:ft,value:ae}=nt,He=et(ot);let dt=ot==="value"?ae:Jf(ae);if(w.attrName=He,w.attrValue=dt,w.keepAttr=!0,w.forceKeepAttr=void 0,qt("uponSanitizeAttribute",p,w),dt=w.attrValue,w.forceKeepAttr||(Ir(ot,p),!w.keepAttr))continue;if(!Lt&&_t(/\/>/i,dt)){Ir(ot,p);continue}Z&&Bi([z,vt,Zt],bo=>{dt=Ye(dt,bo," ")});const xo=et(p.nodeName);if(_o(xo,He,dt)){if(io&&(He==="id"||He==="name")&&(Ir(ot,p),dt=Ql+dt),P&&typeof d=="object"&&typeof d.getAttributeType=="function"&&!ft)switch(d.getAttributeType(xo,He)){case"TrustedHTML":{dt=P.createHTML(dt);break}case"TrustedScriptURL":{dt=P.createScriptURL(dt);break}}try{ft?p.setAttributeNS(ft,ot,dt):p.setAttribute(ot,dt),Uo(e.removed)}catch{}}}qt("afterSanitizeAttributes",p,null)},ah=function A(p){let m=null;const w=po(p);for(qt("beforeSanitizeShadowDOM",p,null);m=w.nextNode();)qt("uponSanitizeShadowNode",m,null),!mo(m)&&(m.content instanceof o&&A(m.content),Co(m));qt("afterSanitizeShadowDOM",p,null)};return e.sanitize=function(A){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},m=null,w=null,U=null,nt=null;if(Er=!A,Er&&(A=""),typeof A!="string"&&!go(A))if(typeof A.toString=="function"){if(A=A.toString(),typeof A!="string")throw Ve("dirty is not a string, aborting")}else throw Ve("toString is not a function");if(!e.isSupported)return A;if(Rt||Mr(p),e.removed=[],typeof A=="string"&&(ze=!1),ze){if(A.nodeName){const ae=et(A.nodeName);if(!b[ae]||K[ae])throw Ve("root node is forbidden and cannot be sanitized in-place")}}else if(A instanceof a)m=fo(""),w=m.ownerDocument.importNode(A,!0),w.nodeType===1&&w.nodeName==="BODY"||w.nodeName==="HTML"?m=w:m.appendChild(w);else{if(!be&&!Z&&!rt&&A.indexOf("<")===-1)return P&&bi?P.createHTML(A):A;if(m=fo(A),!m)return be?null:bi?H:""}m&&Qt&&se(m.firstChild);const ot=po(ze?A:m);for(;U=ot.nextNode();)mo(U)||(U.content instanceof o&&ah(U.content),Co(U));if(ze)return A;if(be){if(xi)for(nt=W.call(m.ownerDocument);m.firstChild;)nt.appendChild(m.firstChild);else nt=m;return($.shadowroot||$.shadowrootmode)&&(nt=Kt.call(r,nt,!0)),nt}let ft=rt?m.outerHTML:m.innerHTML;return rt&&b["!doctype"]&&m.ownerDocument&&m.ownerDocument.doctype&&m.ownerDocument.doctype.name&&_t(Ta,m.ownerDocument.doctype.name)&&(ft=" +`+ft),Z&&Bi([z,vt,Zt],ae=>{ft=Ye(ft,ae," ")}),P&&bi?P.createHTML(ft):ft},e.setConfig=function(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Mr(A),Rt=!0},e.clearConfig=function(){Se=null,Rt=!1},e.isValidAttribute=function(A,p,m){Se||Mr({});const w=et(A),U=et(p);return _o(w,U,m)},e.addHook=function(A,p){typeof p=="function"&&(j[A]=j[A]||[],Ue(j[A],p))},e.removeHook=function(A){if(j[A])return Uo(j[A])},e.removeHooks=function(A){j[A]&&(j[A]=[])},e.removeAllHooks=function(){j={}},e}var Ki=va();const Di={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,i)=>(i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+(e-t)*6*i:i<1/2?e:i<2/3?t+(e-t)*(2/3-i)*6:t),hsl2rgb:({h:t,s:e,l:i},r)=>{if(!e)return i*2.55;t/=360,e/=100,i/=100;const n=i<.5?i*(1+e):i+e-i*e,o=2*i-n;switch(r){case"r":return Di.hue2rgb(o,n,t+1/3)*255;case"g":return Di.hue2rgb(o,n,t)*255;case"b":return Di.hue2rgb(o,n,t-1/3)*255}},rgb2hsl:({r:t,g:e,b:i},r)=>{t/=255,e/=255,i/=255;const n=Math.max(t,e,i),o=Math.min(t,e,i),s=(n+o)/2;if(r==="l")return s*100;if(n===o)return 0;const a=n-o,l=s>.5?a/(2-n-o):a/(n+o);if(r==="s")return l*100;switch(n){case t:return((e-i)/a+(ee>i?Math.min(e,Math.max(i,t)):Math.min(i,Math.max(e,t)),round:t=>Math.round(t*1e10)/1e10},dd=fd,pd={dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}},gd=pd,I={channel:Di,lang:dd,unit:gd},te={};for(let t=0;t<=255;t++)te[t]=I.unit.dec2hex(t);const st={ALL:0,RGB:1,HSL:2};class md{constructor(){this.type=st.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=st.ALL}is(e){return this.type===e}}class _d{constructor(e,i){this.color=i,this.changed=!1,this.data=e,this.type=new md}set(e,i){return this.color=i,this.changed=!1,this.data=e,this.type.type=st.ALL,this}_ensureHSL(){const e=this.data,{h:i,s:r,l:n}=e;i===void 0&&(e.h=I.channel.rgb2hsl(e,"h")),r===void 0&&(e.s=I.channel.rgb2hsl(e,"s")),n===void 0&&(e.l=I.channel.rgb2hsl(e,"l"))}_ensureRGB(){const e=this.data,{r:i,g:r,b:n}=e;i===void 0&&(e.r=I.channel.hsl2rgb(e,"r")),r===void 0&&(e.g=I.channel.hsl2rgb(e,"g")),n===void 0&&(e.b=I.channel.hsl2rgb(e,"b"))}get r(){const e=this.data,i=e.r;return!this.type.is(st.HSL)&&i!==void 0?i:(this._ensureHSL(),I.channel.hsl2rgb(e,"r"))}get g(){const e=this.data,i=e.g;return!this.type.is(st.HSL)&&i!==void 0?i:(this._ensureHSL(),I.channel.hsl2rgb(e,"g"))}get b(){const e=this.data,i=e.b;return!this.type.is(st.HSL)&&i!==void 0?i:(this._ensureHSL(),I.channel.hsl2rgb(e,"b"))}get h(){const e=this.data,i=e.h;return!this.type.is(st.RGB)&&i!==void 0?i:(this._ensureRGB(),I.channel.rgb2hsl(e,"h"))}get s(){const e=this.data,i=e.s;return!this.type.is(st.RGB)&&i!==void 0?i:(this._ensureRGB(),I.channel.rgb2hsl(e,"s"))}get l(){const e=this.data,i=e.l;return!this.type.is(st.RGB)&&i!==void 0?i:(this._ensureRGB(),I.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(st.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(st.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(st.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(st.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(st.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(st.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}}const yd=_d,gr=new yd({r:0,g:0,b:0,a:0},"transparent"),Le={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(t.charCodeAt(0)!==35)return;const e=t.match(Le.re);if(!e)return;const i=e[1],r=parseInt(i,16),n=i.length,o=n%4===0,s=n>4,a=s?1:17,l=s?8:4,h=o?0:-1,u=s?255:15;return gr.set({r:(r>>l*(h+3)&u)*a,g:(r>>l*(h+2)&u)*a,b:(r>>l*(h+1)&u)*a,a:o?(r&u)*a/255:1},t)},stringify:t=>{const{r:e,g:i,b:r,a:n}=t;return n<1?`#${te[Math.round(e)]}${te[Math.round(i)]}${te[Math.round(r)]}${te[Math.round(n*255)]}`:`#${te[Math.round(e)]}${te[Math.round(i)]}${te[Math.round(r)]}`}},ue={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(ue.hueRe);if(e){const[,i,r]=e;switch(r){case"grad":return I.channel.clamp.h(parseFloat(i)*.9);case"rad":return I.channel.clamp.h(parseFloat(i)*180/Math.PI);case"turn":return I.channel.clamp.h(parseFloat(i)*360)}}return I.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(e!==104&&e!==72)return;const i=t.match(ue.re);if(!i)return;const[,r,n,o,s,a]=i;return gr.set({h:ue._hue2deg(r),s:I.channel.clamp.s(parseFloat(n)),l:I.channel.clamp.l(parseFloat(o)),a:s?I.channel.clamp.a(a?parseFloat(s)/100:parseFloat(s)):1},t)},stringify:t=>{const{h:e,s:i,l:r,a:n}=t;return n<1?`hsla(${I.lang.round(e)}, ${I.lang.round(i)}%, ${I.lang.round(r)}%, ${n})`:`hsl(${I.lang.round(e)}, ${I.lang.round(i)}%, ${I.lang.round(r)}%)`}},Qe={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=Qe.colors[t];if(e)return Le.parse(e)},stringify:t=>{const e=Le.stringify(t);for(const i in Qe.colors)if(Qe.colors[i]===e)return i}},Je={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(e!==114&&e!==82)return;const i=t.match(Je.re);if(!i)return;const[,r,n,o,s,a,l,h,u]=i;return gr.set({r:I.channel.clamp.r(n?parseFloat(r)*2.55:parseFloat(r)),g:I.channel.clamp.g(s?parseFloat(o)*2.55:parseFloat(o)),b:I.channel.clamp.b(l?parseFloat(a)*2.55:parseFloat(a)),a:h?I.channel.clamp.a(u?parseFloat(h)/100:parseFloat(h)):1},t)},stringify:t=>{const{r:e,g:i,b:r,a:n}=t;return n<1?`rgba(${I.lang.round(e)}, ${I.lang.round(i)}, ${I.lang.round(r)}, ${I.lang.round(n)})`:`rgb(${I.lang.round(e)}, ${I.lang.round(i)}, ${I.lang.round(r)})`}},Mt={format:{keyword:Qe,hex:Le,rgb:Je,rgba:Je,hsl:ue,hsla:ue},parse:t=>{if(typeof t!="string")return t;const e=Le.parse(t)||Je.parse(t)||ue.parse(t)||Qe.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(st.HSL)||t.data.r===void 0?ue.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?Je.stringify(t):Le.stringify(t)},ka=(t,e)=>{const i=Mt.parse(t);for(const r in e)i[r]=I.channel.clamp[r](e[r]);return Mt.stringify(i)},ti=(t,e,i=0,r=1)=>{if(typeof t!="number")return ka(t,{a:e});const n=gr.set({r:I.channel.clamp.r(t),g:I.channel.clamp.g(e),b:I.channel.clamp.b(i),a:I.channel.clamp.a(r)});return Mt.stringify(n)},Cd=t=>{const{r:e,g:i,b:r}=Mt.parse(t),n=.2126*I.channel.toLinear(e)+.7152*I.channel.toLinear(i)+.0722*I.channel.toLinear(r);return I.lang.round(n)},xd=t=>Cd(t)>=.5,bd=xd,_i=t=>!bd(t),Sa=(t,e,i)=>{const r=Mt.parse(t),n=r[e],o=I.channel.clamp[e](n+i);return n!==o&&(r[e]=o),Mt.stringify(r)},F=(t,e)=>Sa(t,"l",e),O=(t,e)=>Sa(t,"l",-e),g=(t,e)=>{const i=Mt.parse(t),r={};for(const n in e)e[n]&&(r[n]=i[n]+e[n]);return ka(t,r)},Td=(t,e,i=50)=>{const{r,g:n,b:o,a:s}=Mt.parse(t),{r:a,g:l,b:h,a:u}=Mt.parse(e),f=i/100,c=f*2-1,d=s-u,k=((c*d===-1?c:(c+d)/(1+c*d))+1)/2,S=1-k,R=r*k+a*S,T=n*k+l*S,P=o*k+h*S,H=s*f+u*(1-f);return ti(R,T,P,H)},C=(t,e=100)=>{const i=Mt.parse(t);return i.r=255-i.r,i.g=255-i.g,i.b=255-i.b,Td(i,t,e)};var wa=typeof global=="object"&&global&&global.Object===Object&&global,vd=typeof self=="object"&&self&&self.Object===Object&&self,Dt=wa||vd||Function("return this")(),Zi=Dt.Symbol,Ba=Object.prototype,kd=Ba.hasOwnProperty,Sd=Ba.toString,Ge=Zi?Zi.toStringTag:void 0;function wd(t){var e=kd.call(t,Ge),i=t[Ge];try{t[Ge]=void 0;var r=!0}catch{}var n=Sd.call(t);return r&&(e?t[Ge]=i:delete t[Ge]),n}var Bd=Object.prototype,Ad=Bd.toString;function Fd(t){return Ad.call(t)}var Ld="[object Null]",Ed="[object Undefined]",Zo=Zi?Zi.toStringTag:void 0;function Re(t){return t==null?t===void 0?Ed:Ld:Zo&&Zo in Object(t)?wd(t):Fd(t)}function ye(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Od="[object AsyncFunction]",Md="[object Function]",Id="[object GeneratorFunction]",$d="[object Proxy]";function Mn(t){if(!ye(t))return!1;var e=Re(t);return e==Md||e==Id||e==Od||e==$d}var Hr=Dt["__core-js_shared__"],Jo=function(){var t=/[^.]+$/.exec(Hr&&Hr.keys&&Hr.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function Dd(t){return!!Jo&&Jo in t}var Nd=Function.prototype,Rd=Nd.toString;function Ce(t){if(t!=null){try{return Rd.call(t)}catch{}try{return t+""}catch{}}return""}var Pd=/[\\^$.*+?()[\]{}|]/g,qd=/^\[object .+?Constructor\]$/,zd=Function.prototype,Wd=Object.prototype,Hd=zd.toString,jd=Wd.hasOwnProperty,Ud=RegExp("^"+Hd.call(jd).replace(Pd,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Yd(t){if(!ye(t)||Dd(t))return!1;var e=Mn(t)?Ud:qd;return e.test(Ce(t))}function Vd(t,e){return t==null?void 0:t[e]}function xe(t,e){var i=Vd(t,e);return Yd(i)?i:void 0}var hi=xe(Object,"create");function Gd(){this.__data__=hi?hi(null):{},this.size=0}function Xd(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var Kd="__lodash_hash_undefined__",Zd=Object.prototype,Jd=Zd.hasOwnProperty;function Qd(t){var e=this.__data__;if(hi){var i=e[t];return i===Kd?void 0:i}return Jd.call(e,t)?e[t]:void 0}var tp=Object.prototype,ep=tp.hasOwnProperty;function ip(t){var e=this.__data__;return hi?e[t]!==void 0:ep.call(e,t)}var rp="__lodash_hash_undefined__";function np(t,e){var i=this.__data__;return this.size+=this.has(t)?0:1,i[t]=hi&&e===void 0?rp:e,this}function me(t){var e=-1,i=t==null?0:t.length;for(this.clear();++e-1}function up(t,e){var i=this.__data__,r=_r(i,t);return r<0?(++this.size,i.push([t,e])):i[r][1]=e,this}function Gt(t){var e=-1,i=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=qp}function xr(t){return t!=null&&Oa(t.length)&&!Mn(t)}function zp(t){return Ci(t)&&xr(t)}function Wp(){return!1}var Ma=typeof exports=="object"&&exports&&!exports.nodeType&&exports,os=Ma&&typeof module=="object"&&module&&!module.nodeType&&module,Hp=os&&os.exports===Ma,ss=Hp?Dt.Buffer:void 0,jp=ss?ss.isBuffer:void 0,Up=jp||Wp;const $n=Up;var Yp="[object Object]",Vp=Function.prototype,Gp=Object.prototype,Ia=Vp.toString,Xp=Gp.hasOwnProperty,Kp=Ia.call(Object);function Zp(t){if(!Ci(t)||Re(t)!=Yp)return!1;var e=La(t);if(e===null)return!0;var i=Xp.call(e,"constructor")&&e.constructor;return typeof i=="function"&&i instanceof i&&Ia.call(i)==Kp}var Jp="[object Arguments]",Qp="[object Array]",tg="[object Boolean]",eg="[object Date]",ig="[object Error]",rg="[object Function]",ng="[object Map]",og="[object Number]",sg="[object Object]",ag="[object RegExp]",lg="[object Set]",hg="[object String]",cg="[object WeakMap]",ug="[object ArrayBuffer]",fg="[object DataView]",dg="[object Float32Array]",pg="[object Float64Array]",gg="[object Int8Array]",mg="[object Int16Array]",_g="[object Int32Array]",yg="[object Uint8Array]",Cg="[object Uint8ClampedArray]",xg="[object Uint16Array]",bg="[object Uint32Array]",V={};V[dg]=V[pg]=V[gg]=V[mg]=V[_g]=V[yg]=V[Cg]=V[xg]=V[bg]=!0;V[Jp]=V[Qp]=V[ug]=V[tg]=V[fg]=V[eg]=V[ig]=V[rg]=V[ng]=V[og]=V[sg]=V[ag]=V[lg]=V[hg]=V[cg]=!1;function Tg(t){return Ci(t)&&Oa(t.length)&&!!V[Re(t)]}function vg(t){return function(e){return t(e)}}var $a=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ei=$a&&typeof module=="object"&&module&&!module.nodeType&&module,kg=ei&&ei.exports===$a,jr=kg&&wa.process,as=function(){try{var t=ei&&ei.require&&ei.require("util").types;return t||jr&&jr.binding&&jr.binding("util")}catch{}}(),ls=as&&as.isTypedArray,Sg=ls?vg(ls):Tg;const Dn=Sg;function ln(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var wg=Object.prototype,Bg=wg.hasOwnProperty;function Ag(t,e,i){var r=t[e];(!(Bg.call(t,e)&&mr(r,i))||i===void 0&&!(e in t))&&In(t,e,i)}function Fg(t,e,i,r){var n=!i;i||(i={});for(var o=-1,s=e.length;++o-1&&t%1==0&&t0){if(++e>=Vg)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var Zg=Kg(Yg);function Jg(t,e){return Zg(Hg(t,e,Pa),t+"")}function Qg(t,e,i){if(!ye(i))return!1;var r=typeof e;return(r=="number"?xr(i)&&Da(e,i.length):r=="string"&&e in i)?mr(i[e],t):!1}function tm(t){return Jg(function(e,i){var r=-1,n=i.length,o=n>1?i[n-1]:void 0,s=n>2?i[2]:void 0;for(o=t.length>3&&typeof o=="function"?(n--,o):void 0,s&&Qg(i[0],i[1],s)&&(o=n<3?void 0:o,n=1),e=Object(e);++r0?ui(qe,--Tt):0,Me--,Q===10&&(Me=1,br--),Q}function wt(){return Q=Tt2||hn(Q)>3?"":" "}function dm(t,e){for(;--e&&wt()&&!(Q<48||Q>102||Q>57&&Q<65||Q>70&&Q<97););return Tr(t,Ri()+(e<6&&de()==32&&wt()==32))}function cn(t){for(;wt();)switch(Q){case t:return Tt;case 34:case 39:t!==34&&t!==39&&cn(Q);break;case 40:t===41&&cn(t);break;case 92:wt();break}return Tt}function pm(t,e){for(;wt()&&t+Q!==57;)if(t+Q===84&&de()===47)break;return"/*"+Tr(e,Tt-1)+"*"+Nn(t===47?t:wt())}function gm(t){for(;!hn(de());)wt();return Tr(t,Tt)}function mm(t){return um(Pi("",null,null,null,[""],t=cm(t),0,[0],t))}function Pi(t,e,i,r,n,o,s,a,l){for(var h=0,u=0,f=s,c=0,d=0,_=0,k=1,S=1,R=1,T=0,P="",H=n,Y=o,X=r,W=P;S;)switch(_=T,T=wt()){case 40:if(_!=108&&ui(W,f-1)==58){sm(W+=Ni(Ur(T),"&","&\f"),"&\f",Ha(h?a[h-1]:0))!=-1&&(R=-1);break}case 34:case 39:case 91:W+=Ur(T);break;case 9:case 10:case 13:case 32:W+=fm(_);break;case 92:W+=dm(Ri()-1,7);continue;case 47:switch(de()){case 42:case 47:Li(_m(pm(wt(),Ri()),e,i,l),l);break;default:W+="/"}break;case 123*k:a[h++]=jt(W)*R;case 125*k:case 59:case 0:switch(T){case 0:case 125:S=0;case 59+u:R==-1&&(W=Ni(W,/\f/g,"")),d>0&&jt(W)-f&&Li(d>32?us(W+";",r,i,f-1,l):us(Ni(W," ","")+";",r,i,f-2,l),l);break;case 59:W+=";";default:if(Li(X=cs(W,e,i,h,u,n,a,P,H=[],Y=[],f,o),o),T===123)if(u===0)Pi(W,e,X,X,H,o,f,a,Y);else switch(c===99&&ui(W,3)===110?100:c){case 100:case 108:case 109:case 115:Pi(t,X,X,r&&Li(cs(t,X,X,0,0,n,a,P,n,H=[],f,Y),Y),n,Y,f,a,r?H:Y);break;default:Pi(W,X,X,X,[""],Y,0,a,Y)}}h=u=d=0,k=R=1,P=W="",f=s;break;case 58:f=1+jt(W),d=_;default:if(k<1){if(T==123)--k;else if(T==125&&k++==0&&hm()==125)continue}switch(W+=Nn(T),T*k){case 38:R=u>0?1:(W+="\f",-1);break;case 44:a[h++]=(jt(W)-1)*R,R=1;break;case 64:de()===45&&(W+=Ur(wt())),c=de(),u=f=jt(P=W+=gm(Ri())),T++;break;case 45:_===45&&jt(W)==2&&(k=0)}}return o}function cs(t,e,i,r,n,o,s,a,l,h,u,f){for(var c=n-1,d=n===0?o:[""],_=am(d),k=0,S=0,R=0;k0?d[T]+" "+P:Ni(P,/&\f/g,d[T])))&&(l[R++]=H);return Rn(t,e,i,n===0?za:a,l,h,u,f)}function _m(t,e,i,r){return Rn(t,e,i,qa,Nn(lm()),fi(t,2,-2),0,r)}function us(t,e,i,r,n){return Rn(t,e,i,Wa,fi(t,0,r),fi(t,r+1,-1),r,n)}function un(t,e){for(var i="",r=0;r{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},Pn=function(t="fatal"){let e=Wt.fatal;typeof t=="string"?(t=t.toLowerCase(),t in Wt&&(e=Wt[t])):typeof t=="number"&&(e=t),E.trace=()=>{},E.debug=()=>{},E.info=()=>{},E.warn=()=>{},E.error=()=>{},E.fatal=()=>{},e<=Wt.fatal&&(E.fatal=console.error?console.error.bind(console,Ct("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Ct("FATAL"))),e<=Wt.error&&(E.error=console.error?console.error.bind(console,Ct("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Ct("ERROR"))),e<=Wt.warn&&(E.warn=console.warn?console.warn.bind(console,Ct("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Ct("WARN"))),e<=Wt.info&&(E.info=console.info?console.info.bind(console,Ct("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Ct("INFO"))),e<=Wt.debug&&(E.debug=console.debug?console.debug.bind(console,Ct("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Ct("DEBUG"))),e<=Wt.trace&&(E.trace=console.debug?console.debug.bind(console,Ct("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Ct("TRACE")))},Ct=t=>`%c${fh().format("ss.SSS")} : ${t} : `,vr=//gi,Im=t=>t?Va(t).replace(/\\n/g,"#br#").split("#br#"):[""],Ya=t=>Ki.sanitize(t),_s=(t,e)=>{var i;if(((i=e.flowchart)==null?void 0:i.htmlLabels)!==!1){const r=e.securityLevel;r==="antiscript"||r==="strict"?t=Ya(t):r!=="loose"&&(t=Va(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=Rm(t))}return t},di=(t,e)=>t&&(e.dompurifyConfig?t=Ki.sanitize(_s(t,e),e.dompurifyConfig).toString():t=Ki.sanitize(_s(t,e),{FORBID_TAGS:["style"]}).toString(),t),$m=(t,e)=>typeof t=="string"?di(t,e):t.flat().map(i=>di(i,e)),Dm=t=>vr.test(t),Nm=t=>t.split(vr),Rm=t=>t.replace(/#br#/g,"
                  "),Va=t=>t.replace(vr,"#br#"),Pm=t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},Ga=t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),qm=function(...t){const e=t.filter(i=>!isNaN(i));return Math.max(...e)},zm=function(...t){const e=t.filter(i=>!isNaN(i));return Math.min(...e)},Sb=function(t){const e=t.split(/(,)/),i=[];for(let r=0;r0&&r+1Math.max(0,t.split(e).length-1),Wm=(t,e)=>{const i=mn(t,"~"),r=mn(e,"~");return i===1&&r===1},Hm=t=>{const e=mn(t,"~");let i=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),i=!0);const r=[...t];let n=r.indexOf("~"),o=r.lastIndexOf("~");for(;n!==-1&&o!==-1&&n!==o;)r[n]="<",r[o]=">",n=r.indexOf("~"),o=r.lastIndexOf("~");return i&&r.unshift("~"),r.join("")},qn={getRows:Im,sanitizeText:di,sanitizeTextOrArray:$m,hasBreaks:Dm,splitBreaks:Nm,lineBreakRegex:vr,removeScript:Ya,getUrl:Pm,evaluate:Ga,getMax:qm,getMin:zm},ct=(t,e)=>e?g(t,{s:-40,l:10}):g(t,{s:-40,l:-10}),kr="#ffffff",Sr="#f2f2f2";let jm=class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||g(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||g(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ct(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ct(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||C(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||C(this.tertiaryColor),this.lineColor=this.lineColor||C(this.background),this.arrowheadColor=this.arrowheadColor||C(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?O(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||O(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||C(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||F(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330}),this.darkMode)for(let d=0;d{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const Um=t=>{const e=new jm;return e.calculate(t),e};let Ym=class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=F(this.primaryColor,16),this.tertiaryColor=g(this.primaryColor,{h:-160}),this.primaryBorderColor=C(this.background),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.tertiaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=F(C("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=ti(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=O("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=O(this.sectionBkgColor,10),this.taskBorderColor=ti(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=ti(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.secondBkg=F(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=F(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=F(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=g(this.primaryColor,{h:64}),this.fillType3=g(this.secondaryColor,{h:64}),this.fillType4=g(this.primaryColor,{h:-64}),this.fillType5=g(this.secondaryColor,{h:-64}),this.fillType6=g(this.primaryColor,{h:128}),this.fillType7=g(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330});for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const Vm=t=>{const e=new Ym;return e.calculate(t),e};let Gm=class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=g(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=g(this.primaryColor,{h:-160}),this.primaryBorderColor=ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.tertiaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=ti(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||O(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||O(this.tertiaryColor,40);for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const Xm=t=>{const e=new Gm;return e.calculate(t),e};let Km=class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=F("#cde498",10),this.primaryBorderColor=ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.primaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.actorBorder=O(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||O(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||O(this.tertiaryColor,40);for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const Zm=t=>{const e=new Km;return e.calculate(t),e};class Jm{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=F(this.contrast,55),this.background="#ffffff",this.tertiaryColor=g(this.primaryColor,{h:-160}),this.primaryBorderColor=ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.tertiaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.secondBkg=F(this.contrast,55),this.border2=this.contrast,this.actorBorder=F(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}}const Qm=t=>{const e=new Jm;return e.calculate(t),e},Yt={base:{getThemeVariables:Um},dark:{getThemeVariables:Vm},default:{getThemeVariables:Xm},forest:{getThemeVariables:Zm},neutral:{getThemeVariables:Qm}},Ht={flowchart:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},theme:"default",maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,fontSize:16},Xa={...Ht,deterministicIDSeed:void 0,themeCSS:void 0,themeVariables:Yt.default.getThemeVariables(),sequence:{...Ht.sequence,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{...Ht.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Ht.c4,useWidth:void 0,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}}},pie:{...Ht.pie,useWidth:984},xyChart:{...Ht.xyChart,useWidth:void 0},requirement:{...Ht.requirement,useWidth:void 0},gitGraph:{...Ht.gitGraph,useMaxWidth:!1},sankey:{...Ht.sankey,useMaxWidth:!1}},Ka=(t,e="")=>Object.keys(t).reduce((i,r)=>Array.isArray(t[r])?i:typeof t[r]=="object"&&t[r]!==null?[...i,e+r,...Ka(t[r],"")]:[...i,e+r],[]),t0=new Set(Ka(Xa,"")),e0=Xa,er=t=>{if(E.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>er(e));return}for(const e of Object.keys(t)){if(E.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!t0.has(e)||t[e]==null){E.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){E.debug("sanitizing object",e),er(t[e]);continue}const i=["themeCSS","fontFamily","altFontFamily"];for(const r of i)e.includes(r)&&(E.debug("sanitizing css option",e),t[e]=i0(t[e]))}if(t.themeVariables)for(const e of Object.keys(t.themeVariables)){const i=t.themeVariables[e];i!=null&&i.match&&!i.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}E.debug("After sanitization",t)}},i0=t=>{let e=0,i=0;for(const r of t){if(e{for(const{id:e,detector:i,loader:r}of t)tl(e,i,r)},tl=(t,e,i)=>{Ie[t]?E.error(`Detector with key ${t} already exists`):Ie[t]={detector:e,loader:i},E.debug(`Detector with key ${t} added${i?" with loader":""}`)},n0=t=>Ie[t].loader,_n=(t,e,{depth:i=2,clobber:r=!1}={})=>{const n={depth:i,clobber:r};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(o=>_n(t,o,n)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(o=>{t.includes(o)||t.push(o)}),t):t===void 0||i<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(o=>{typeof e[o]=="object"&&(t[o]===void 0||typeof t[o]=="object")?(t[o]===void 0&&(t[o]=Array.isArray(e[o])?[]:{}),t[o]=_n(t[o],e[o],{depth:i-1,clobber:r})):(r||typeof t[o]!="object"&&typeof e[o]!="object")&&(t[o]=e[o])}),t)},at=_n,o0="​",s0={curveBasis:Ef,curveBasisClosed:Of,curveBasisOpen:Mf,curveBumpX:Ff,curveBumpY:Lf,curveBundle:If,curveCardinalClosed:Df,curveCardinalOpen:Nf,curveCardinal:$f,curveCatmullRomClosed:Pf,curveCatmullRomOpen:qf,curveCatmullRom:Rf,curveLinear:Af,curveLinearClosed:zf,curveMonotoneX:Wf,curveMonotoneY:Hf,curveNatural:jf,curveStep:Uf,curveStepAfter:Vf,curveStepBefore:Yf},a0=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,l0=function(t,e){const i=el(t,/(?:init\b)|(?:initialize\b)/);let r={};if(Array.isArray(i)){const s=i.map(a=>a.args);er(s),r=at(r,[...s])}else r=i.args;if(!r)return;let n=wr(t,e);const o="config";return r[o]!==void 0&&(n==="flowchart-v2"&&(n="flowchart"),r[n]=r[o],delete r[o]),r},el=function(t,e=null){try{const i=new RegExp(`[%]{2}(?![{]${a0.source})(?=[}][%]{2}).* +`,"ig");t=t.trim().replace(i,"").replace(/'/gm,'"'),E.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let r;const n=[];for(;(r=ii.exec(t))!==null;)if(r.index===ii.lastIndex&&ii.lastIndex++,r&&!e||e&&r[1]&&r[1].match(e)||e&&r[2]&&r[2].match(e)){const o=r[1]?r[1]:r[2],s=r[3]?r[3].trim():r[4]?JSON.parse(r[4].trim()):null;n.push({type:o,args:s})}return n.length===0?{type:t,args:null}:n.length===1?n[0]:n}catch(i){return E.error(`ERROR: ${i.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},h0=function(t){return t.replace(ii,"")},c0=function(t,e){for(const[i,r]of e.entries())if(r.match(t))return i;return-1};function u0(t,e){if(!t)return e;const i=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return s0[i]??e}function f0(t,e){const i=t.trim();if(i)return e.securityLevel!=="loose"?Is.sanitizeUrl(i):i}const d0=(t,...e)=>{const i=t.split("."),r=i.length-1,n=i[r];let o=window;for(let s=0;s{i+=il(n,e),e=n});const r=i/2;return zn(t,r)}function g0(t){return t.length===1?t[0]:p0(t)}const ys=(t,e=2)=>{const i=Math.pow(10,e);return Math.round(t*i)/i},zn=(t,e)=>{let i,r=e;for(const n of t){if(i){const o=il(n,i);if(o=1)return{x:n.x,y:n.y};if(s>0&&s<1)return{x:ys((1-s)*i.x+s*n.x,5),y:ys((1-s)*i.y+s*n.y,5)}}}i=n}throw new Error("Could not find a suitable point for the given distance")},m0=(t,e,i)=>{E.info(`our points ${JSON.stringify(e)}`),e[0]!==i&&(e=e.reverse());const n=zn(e,25),o=t?10:5,s=Math.atan2(e[0].y-n.y,e[0].x-n.x),a={x:0,y:0};return a.x=Math.sin(s)*o+(e[0].x+n.x)/2,a.y=-Math.cos(s)*o+(e[0].y+n.y)/2,a};function _0(t,e,i){const r=structuredClone(i);E.info("our points",r),e!=="start_left"&&e!=="start_right"&&r.reverse();const n=25+t,o=zn(r,n),s=10+t*.5,a=Math.atan2(r[0].y-o.y,r[0].x-o.x),l={x:0,y:0};return e==="start_left"?(l.x=Math.sin(a+Math.PI)*s+(r[0].x+o.x)/2,l.y=-Math.cos(a+Math.PI)*s+(r[0].y+o.y)/2):e==="end_right"?(l.x=Math.sin(a-Math.PI)*s+(r[0].x+o.x)/2-5,l.y=-Math.cos(a-Math.PI)*s+(r[0].y+o.y)/2-5):e==="end_left"?(l.x=Math.sin(a)*s+(r[0].x+o.x)/2-5,l.y=-Math.cos(a)*s+(r[0].y+o.y)/2-5):(l.x=Math.sin(a)*s+(r[0].x+o.x)/2,l.y=-Math.cos(a)*s+(r[0].y+o.y)/2),l}function y0(t){let e="",i="";for(const r of t)r!==void 0&&(r.startsWith("color:")||r.startsWith("text-align:")?i=i+r+";":e=e+r+";");return{style:e,labelStyle:i}}let Cs=0;const C0=()=>(Cs++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Cs);function x0(t){let e="";const i="0123456789abcdef",r=i.length;for(let n=0;nx0(t.length),T0=function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},v0=function(t,e){const i=e.text.replace(qn.lineBreakRegex," "),[,r]=Hn(e.fontSize),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.style("text-anchor",e.anchor),n.style("font-family",e.fontFamily),n.style("font-size",r),n.style("font-weight",e.fontWeight),n.attr("fill",e.fill),e.class!==void 0&&n.attr("class",e.class);const o=n.append("tspan");return o.attr("x",e.x+e.textMargin*2),o.attr("fill",e.fill),o.text(i),n},k0=yi((t,e,i)=>{if(!t||(i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
                  "},i),qn.lineBreakRegex.test(t)))return t;const r=t.split(" "),n=[];let o="";return r.forEach((s,a)=>{const l=ir(`${s} `,i),h=ir(o,i);if(l>e){const{hyphenatedStrings:c,remainingWord:d}=S0(s,e,"-",i);n.push(o,...c),o=d}else h+l>=e?(n.push(o),o=s):o=[o,s].filter(Boolean).join(" ");a+1===r.length&&n.push(o)}),n.filter(s=>s!=="").join(i.joinWith)},(t,e,i)=>`${t}${e}${i.fontSize}${i.fontWeight}${i.fontFamily}${i.joinWith}`),S0=yi((t,e,i="-",r)=>{r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},r);const n=[...t],o=[];let s="";return n.forEach((a,l)=>{const h=`${s}${a}`;if(ir(h,r)>=e){const f=l+1,c=n.length===f,d=`${h}${i}`;o.push(c?h:d),s=""}else s=h}),{hyphenatedStrings:o,remainingWord:s}},(t,e,i="-",r)=>`${t}${e}${i}${r.fontSize}${r.fontWeight}${r.fontFamily}`);function w0(t,e){return Wn(t,e).height}function ir(t,e){return Wn(t,e).width}const Wn=yi((t,e)=>{const{fontSize:i=12,fontFamily:r="Arial",fontWeight:n=400}=e;if(!t)return{width:0,height:0};const[,o]=Hn(i),s=["sans-serif",r],a=t.split(qn.lineBreakRegex),l=[],h=xt("body");if(!h.remove)return{width:0,height:0,lineHeight:0};const u=h.append("svg");for(const c of s){let d=0;const _={width:0,height:0,lineHeight:0};for(const k of a){const S=T0();S.text=k||o0;const R=v0(u,S).style("font-size",o).style("font-weight",n).style("font-family",c),T=(R._groups||R)[0][0].getBBox();if(T.width===0&&T.height===0)throw new Error("svg element not in render tree");_.width=Math.round(Math.max(_.width,T.width)),d=Math.round(T.height),_.height+=d,_.lineHeight=Math.round(Math.max(_.lineHeight,d))}l.push(_)}u.remove();const f=isNaN(l[1].height)||isNaN(l[1].width)||isNaN(l[1].lineHeight)||l[0].height>l[1].height&&l[0].width>l[1].width&&l[0].lineHeight>l[1].lineHeight?0:1;return l[f]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`);class B0{constructor(e=!1,i){this.count=0,this.count=i?i.length:0,this.next=e?()=>this.count++:()=>Date.now()}}let Ei;const A0=function(t){return Ei=Ei||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),Ei.innerHTML=t,unescape(Ei.textContent)};function rl(t){return"str"in t}const F0=(t,e,i,r)=>{var n;if(!r)return;const o=(n=t.node())==null?void 0:n.getBBox();o&&t.append("text").text(r).attr("x",o.x+o.width/2).attr("y",-i).attr("class",e)},Hn=t=>{if(typeof t=="number")return[t,t+"px"];const e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]};function nl(t,e){return im({},t,e)}const ri={assignWithDepth:at,wrapLabel:k0,calculateTextHeight:w0,calculateTextWidth:ir,calculateTextDimensions:Wn,cleanAndMerge:nl,detectInit:l0,detectDirective:el,isSubstringInArray:c0,interpolateToCurve:u0,calcLabelPosition:g0,calcCardinalityPosition:m0,calcTerminalLabelPosition:_0,formatUrl:f0,getStylesFromArray:y0,generateId:C0,random:b0,runFunc:d0,entityDecode:A0,insertTitle:F0,parseFontSize:Hn,InitIDGenerator:B0},xs="10.6.1",$e=Object.freeze(e0);let pt=at({},$e),ol,De=[],ni=at({},$e);const Br=(t,e)=>{let i=at({},t),r={};for(const n of e)ll(n),r=at(r,n);if(i=at(i,r),r.theme&&r.theme in Yt){const n=at({},ol),o=at(n.themeVariables||{},r.themeVariables);i.theme&&i.theme in Yt&&(i.themeVariables=Yt[i.theme].getThemeVariables(o))}return ni=i,hl(ni),ni},L0=t=>(pt=at({},$e),pt=at(pt,t),t.theme&&Yt[t.theme]&&(pt.themeVariables=Yt[t.theme].getThemeVariables(t.themeVariables)),Br(pt,De),pt),E0=t=>{ol=at({},t)},O0=t=>(pt=at(pt,t),Br(pt,De),pt),sl=()=>at({},pt),al=t=>(hl(t),at(ni,t),It()),It=()=>at({},ni),ll=t=>{t&&(["secure",...pt.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(E.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&ll(t[e])}))},M0=t=>{er(t),t.fontFamily&&(!t.themeVariables||!t.themeVariables.fontFamily)&&(t.themeVariables={fontFamily:t.fontFamily}),De.push(t),Br(pt,De)},rr=(t=pt)=>{De=[],Br(t,De)},I0={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},bs={},$0=t=>{bs[t]||(E.warn(I0[t]),bs[t]=!0)},hl=t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&$0("LAZY_LOAD_DEPRECATED")},cl="c4",D0=t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),N0=async()=>{const{diagram:t}=await J(()=>import("./c4Diagram-817c8e44-fGBWpqJm.js"),__vite__mapDeps([0,1,2]));return{id:cl,diagram:t}},R0={id:cl,detector:D0,loader:N0},P0=R0,ul="flowchart",q0=(t,e)=>{var i,r;return((i=e==null?void 0:e.flowchart)==null?void 0:i.defaultRenderer)==="dagre-wrapper"||((r=e==null?void 0:e.flowchart)==null?void 0:r.defaultRenderer)==="elk"?!1:/^\s*graph/.test(t)},z0=async()=>{const{diagram:t}=await J(()=>import("./flowDiagram-61eb444c-vQNzsoYg.js"),__vite__mapDeps([3,4,5,6,7,8,9,10,11,12,2]));return{id:ul,diagram:t}},W0={id:ul,detector:q0,loader:z0},H0=W0,fl="flowchart-v2",j0=(t,e)=>{var i,r,n;return((i=e==null?void 0:e.flowchart)==null?void 0:i.defaultRenderer)==="dagre-d3"||((r=e==null?void 0:e.flowchart)==null?void 0:r.defaultRenderer)==="elk"?!1:/^\s*graph/.test(t)&&((n=e==null?void 0:e.flowchart)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)},U0=async()=>{const{diagram:t}=await J(()=>import("./flowDiagram-v2-2f8f667a-vyhUgdJw.js"),__vite__mapDeps([13,4,6,5,7,8,9,10,11,12,2]));return{id:fl,diagram:t}},Y0={id:fl,detector:j0,loader:U0},V0=Y0,dl="er",G0=t=>/^\s*erDiagram/.test(t),X0=async()=>{const{diagram:t}=await J(()=>import("./erDiagram-9cfc3649-wT9fM43B.js"),__vite__mapDeps([14,5,10,11,12,2]));return{id:dl,diagram:t}},K0={id:dl,detector:G0,loader:X0},Z0=K0,pl="gitGraph",J0=t=>/^\s*gitGraph/.test(t),Q0=async()=>{const{diagram:t}=await J(()=>import("./gitGraphDiagram-6b463803-eKsTNhvP.js"),__vite__mapDeps([15,2]));return{id:pl,diagram:t}},t_={id:pl,detector:J0,loader:Q0},e_=t_,gl="gantt",i_=t=>/^\s*gantt/.test(t),r_=async()=>{const{diagram:t}=await J(()=>import("./ganttDiagram-db6931fb-lnA5WCr2.js"),__vite__mapDeps([16,17,18,2]));return{id:gl,diagram:t}},n_={id:gl,detector:i_,loader:r_},o_=n_,ml="info",s_=t=>/^\s*info/.test(t),a_=async()=>{const{diagram:t}=await J(()=>import("./infoDiagram-a336098b-ahMgvA-1.js"),__vite__mapDeps([19,2]));return{id:ml,diagram:t}},l_={id:ml,detector:s_,loader:a_},_l="pie",h_=t=>/^\s*pie/.test(t),c_=async()=>{const{diagram:t}=await J(()=>import("./pieDiagram-a5166659-88FRZv2h.js"),__vite__mapDeps([20,21,12,22,18,11,2]));return{id:_l,diagram:t}},u_={id:_l,detector:h_,loader:c_},yl="quadrantChart",f_=t=>/^\s*quadrantChart/.test(t),d_=async()=>{const{diagram:t}=await J(()=>import("./quadrantDiagram-6c355bbc-3OwR_3NY.js"),__vite__mapDeps([23,17,18,2]));return{id:yl,diagram:t}},p_={id:yl,detector:f_,loader:d_},g_=p_,Cl="xychart",m_=t=>/^\s*xychart-beta/.test(t),__=async()=>{const{diagram:t}=await J(()=>import("./xychartDiagram-f746c04c-ybRnTgNu.js"),__vite__mapDeps([24,9,18,22,17,10,11,12,2]));return{id:Cl,diagram:t}},y_={id:Cl,detector:m_,loader:__},C_=y_,xl="requirement",x_=t=>/^\s*requirement(Diagram)?/.test(t),b_=async()=>{const{diagram:t}=await J(()=>import("./requirementDiagram-4038b16c-GBigQQoF.js"),__vite__mapDeps([25,5,10,11,12,2]));return{id:xl,diagram:t}},T_={id:xl,detector:x_,loader:b_},v_=T_,bl="sequence",k_=t=>/^\s*sequenceDiagram/.test(t),S_=async()=>{const{diagram:t}=await J(()=>import("./sequenceDiagram-465a088a-qM5g7oLQ.js"),__vite__mapDeps([26,1,2]));return{id:bl,diagram:t}},w_={id:bl,detector:k_,loader:S_},B_=w_,Tl="class",A_=(t,e)=>{var i;return((i=e==null?void 0:e.class)==null?void 0:i.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t)},F_=async()=>{const{diagram:t}=await J(()=>import("./classDiagram-48ab76fb-2huToeoO.js"),__vite__mapDeps([27,28,5,10,11,12,2]));return{id:Tl,diagram:t}},L_={id:Tl,detector:A_,loader:F_},E_=L_,vl="classDiagram",O_=(t,e)=>{var i;return/^\s*classDiagram/.test(t)&&((i=e==null?void 0:e.class)==null?void 0:i.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t)},M_=async()=>{const{diagram:t}=await J(()=>import("./classDiagram-v2-8ecb0bfc-yizWAp91.js"),__vite__mapDeps([29,28,5,7,8,9,10,11,12,2]));return{id:vl,diagram:t}},I_={id:vl,detector:O_,loader:M_},$_=I_,kl="state",D_=(t,e)=>{var i;return((i=e==null?void 0:e.state)==null?void 0:i.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t)},N_=async()=>{const{diagram:t}=await J(()=>import("./stateDiagram-b620d43f-mAYfcJzU.js"),__vite__mapDeps([30,31,5,10,11,12,2]));return{id:kl,diagram:t}},R_={id:kl,detector:D_,loader:N_},P_=R_,Sl="stateDiagram",q_=(t,e)=>{var i;return!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&((i=e==null?void 0:e.state)==null?void 0:i.defaultRenderer)==="dagre-wrapper")},z_=async()=>{const{diagram:t}=await J(()=>import("./stateDiagram-v2-2671c3d1-QZ9kVaW-.js"),__vite__mapDeps([32,31,5,7,8,9,10,11,12,2]));return{id:Sl,diagram:t}},W_={id:Sl,detector:q_,loader:z_},H_=W_,wl="journey",j_=t=>/^\s*journey/.test(t),U_=async()=>{const{diagram:t}=await J(()=>import("./journeyDiagram-deae3313-A-9AYwwK.js"),__vite__mapDeps([33,1,21,12,2]));return{id:wl,diagram:t}},Y_={id:wl,detector:j_,loader:U_},V_=Y_,G_=function(t,e){for(let i of e)t.attr(i[0],i[1])},X_=function(t,e,i){let r=new Map;return i?(r.set("width","100%"),r.set("style",`max-width: ${e}px;`)):(r.set("height",t),r.set("width",e)),r},Bl=function(t,e,i,r){const n=X_(e,i,r);G_(t,n)},K_=function(t,e,i,r){const n=e.node().getBBox(),o=n.width,s=n.height;E.info(`SVG bounds: ${o}x${s}`,n);let a=0,l=0;E.info(`Graph bounds: ${a}x${l}`,t),a=o+i*2,l=s+i*2,E.info(`Calculated bounds: ${a}x${l}`),Bl(e,l,a,r);const h=`${n.x-i} ${n.y-i} ${n.width+2*i} ${n.height+2*i}`;e.attr("viewBox",h)},qi={},Z_=(t,e,i)=>{let r="";return t in qi&&qi[t]?r=qi[t](i):E.warn(`No theme found for ${t}`),` & { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + fill: ${i.textColor} + } + + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${i.errorBkgColor}; + } + & .error-text { + fill: ${i.errorTextColor}; + stroke: ${i.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 2px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${i.lineColor}; + stroke: ${i.lineColor}; + } + & .marker.cross { + stroke: ${i.lineColor}; + } + + & svg { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + } + + ${r} + + ${e} +`},J_=(t,e)=>{e!==void 0&&(qi[t]=e)},Q_=Z_;let jn="",Un="",Yn="";const Vn=t=>di(t,It()),ty=()=>{jn="",Yn="",Un=""},ey=t=>{jn=Vn(t).replace(/^\s+/g,"")},iy=()=>jn,ry=t=>{Yn=Vn(t).replace(/\n\s+/g,` +`)},ny=()=>Yn,oy=t=>{Un=Vn(t)},sy=()=>Un,ay=Object.freeze(Object.defineProperty({__proto__:null,clear:ty,getAccDescription:ny,getAccTitle:iy,getDiagramTitle:sy,setAccDescription:ry,setAccTitle:ey,setDiagramTitle:oy},Symbol.toStringTag,{value:"Module"})),ly=E,hy=Pn,Gn=It,Lb=al,Eb=$e,cy=t=>di(t,Gn()),uy=K_,fy=()=>ay,nr={},or=(t,e,i)=>{var r;if(nr[t])throw new Error(`Diagram ${t} already registered.`);nr[t]=e,i&&tl(t,i),J_(t,e.styles),(r=e.injectUtils)==null||r.call(e,ly,hy,Gn,cy,uy,fy(),()=>{})},Xn=t=>{if(t in nr)return nr[t];throw new dy(t)};class dy extends Error{constructor(e){super(`Diagram ${e} not found.`)}}const py=t=>{var e;const{securityLevel:i}=Gn();let r=xt("body");if(i==="sandbox"){const s=((e=xt(`#i${t}`).node())==null?void 0:e.contentDocument)??document;r=xt(s.body)}return r.select(`#${t}`)},gy=(t,e,i)=>{E.debug(`renering svg for syntax error +`);const r=py(e);r.attr("viewBox","0 0 2412 512"),Bl(r,100,512,!0);const n=r.append("g");n.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),n.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),n.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),n.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),n.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),n.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),n.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),n.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${i}`)},Al={draw:gy},my=Al,_y={db:{},renderer:Al,parser:{parser:{yy:{}},parse:()=>{}}},yy=_y,Fl="flowchart-elk",Cy=(t,e)=>{var i;return!!(/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&((i=e==null?void 0:e.flowchart)==null?void 0:i.defaultRenderer)==="elk")},xy=async()=>{const{diagram:t}=await J(()=>import("./flowchart-elk-definition-e097735e-s4v8c7Pb.js"),__vite__mapDeps([34,4,8,9,10,11,12,2]));return{id:Fl,diagram:t}},by={id:Fl,detector:Cy,loader:xy},Ty=by,Ll="timeline",vy=t=>/^\s*timeline/.test(t),ky=async()=>{const{diagram:t}=await J(()=>import("./timeline-definition-732a2638-_vkJzhaO.js"),__vite__mapDeps([35,21,12,2]));return{id:Ll,diagram:t}},Sy={id:Ll,detector:vy,loader:ky},wy=Sy,El="mindmap",By=t=>/^\s*mindmap/.test(t),Ay=async()=>{const{diagram:t}=await J(()=>import("./mindmap-definition-617cf8dd-vVbSb0k_.js"),__vite__mapDeps([36,9,2]));return{id:El,diagram:t}},Fy={id:El,detector:By,loader:Ay},Ly=Fy,Ol="sankey",Ey=t=>/^\s*sankey-beta/.test(t),Oy=async()=>{const{diagram:t}=await J(()=>import("./sankeyDiagram-6db3d513-gIgv_0rP.js"),__vite__mapDeps([37,22,18,2]));return{id:Ol,diagram:t}},My={id:Ol,detector:Ey,loader:Oy},Iy=My;let Ts=!1;const Kn=()=>{Ts||(Ts=!0,or("error",yy,t=>t.toLowerCase().trim()==="error"),or("---",{db:{clear:()=>{}},styles:{},renderer:{draw:()=>{}},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},t=>t.toLowerCase().trimStart().startsWith("---")),Qa(P0,$_,E_,Z0,o_,l_,u_,v_,B_,Ty,V0,H0,Ly,wy,e_,H_,P_,V_,g_,Iy,C_))};class Ml{constructor(e,i={}){this.text=e,this.metadata=i,this.type="graph",this.text+=` +`;const r=It();try{this.type=wr(e,r)}catch(o){this.type="error",this.detectError=o}const n=Xn(this.type);E.debug("Type "+this.type),this.db=n.db,this.renderer=n.renderer,this.parser=n.parser,this.parser.parser.yy=this.db,this.init=n.init,this.parse()}parse(){var e,i,r,n,o;if(this.detectError)throw this.detectError;(i=(e=this.db).clear)==null||i.call(e);const s=It();(r=this.init)==null||r.call(this,s),this.metadata.title&&((o=(n=this.db).setDiagramTitle)==null||o.call(n,this.metadata.title)),this.parser.parse(this.text)}async render(e,i){await this.renderer.draw(this.text,e,i,this)}getParser(){return this.parser}getType(){return this.type}}const Zn=async(t,e={})=>{const i=wr(t,It());try{Xn(i)}catch{const n=n0(i);if(!n)throw new Ja(`Diagram ${i} not found.`);const{id:o,diagram:s}=await n();or(o,s)}return new Ml(t,e)};let yn=[];const Ob=t=>{yn.push(t)},$y=()=>{yn.forEach(t=>{t()}),yn=[]},Dy="graphics-document document";function Ny(t,e){t.attr("role",Dy),e!==""&&t.attr("aria-roledescription",e)}function Ry(t,e,i,r){if(t.insert!==void 0){if(i){const n=`chart-desc-${r}`;t.attr("aria-describedby",n),t.insert("desc",":first-child").attr("id",n).text(i)}if(e){const n=`chart-title-${r}`;t.attr("aria-labelledby",n),t.insert("title",":first-child").attr("id",n).text(e)}}}const Py=t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart();/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function Il(t){return typeof t>"u"||t===null}function qy(t){return typeof t=="object"&&t!==null}function zy(t){return Array.isArray(t)?t:Il(t)?[]:[t]}function Wy(t,e){var i,r,n,o;if(e)for(o=Object.keys(e),i=0,r=o.length;ia&&(o=" ... ",e=r-a+o.length),i-r>a&&(s=" ...",i=r+a-s.length),{str:o+t.slice(e,i).replace(/\t/g,"→")+s,pos:r-e+o.length}}function Gr(t,e){return ht.repeat(" ",e-t.length)+t}function Zy(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var i=/\r?\n|\r|\0/g,r=[0],n=[],o,s=-1;o=i.exec(t.buffer);)n.push(o.index),r.push(o.index+o[0].length),t.position<=o.index&&s<0&&(s=r.length-2);s<0&&(s=r.length-1);var a="",l,h,u=Math.min(t.line+e.linesAfter,n.length).toString().length,f=e.maxLength-(e.indent+u+3);for(l=1;l<=e.linesBefore&&!(s-l<0);l++)h=Vr(t.buffer,r[s-l],n[s-l],t.position-(r[s]-r[s-l]),f),a=ht.repeat(" ",e.indent)+Gr((t.line-l+1).toString(),u)+" | "+h.str+` +`+a;for(h=Vr(t.buffer,r[s],n[s],t.position,f),a+=ht.repeat(" ",e.indent)+Gr((t.line+1).toString(),u)+" | "+h.str+` +`,a+=ht.repeat("-",e.indent+u+3+h.pos)+`^ +`,l=1;l<=e.linesAfter&&!(s+l>=n.length);l++)h=Vr(t.buffer,r[s+l],n[s+l],t.position-(r[s]-r[s+l]),f),a+=ht.repeat(" ",e.indent)+Gr((t.line+l+1).toString(),u)+" | "+h.str+` +`;return a.replace(/\n$/,"")}var Jy=Zy,Qy=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],tC=["scalar","sequence","mapping"];function eC(t){var e={};return t!==null&&Object.keys(t).forEach(function(i){t[i].forEach(function(r){e[String(r)]=i})}),e}function iC(t,e){if(e=e||{},Object.keys(e).forEach(function(i){if(Qy.indexOf(i)===-1)throw new Ut('Unknown option "'+i+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(i){return i},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=eC(e.styleAliases||null),tC.indexOf(this.kind)===-1)throw new Ut('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var lt=iC;function vs(t,e){var i=[];return t[e].forEach(function(r){var n=i.length;i.forEach(function(o,s){o.tag===r.tag&&o.kind===r.kind&&o.multi===r.multi&&(n=s)}),i[n]=r}),i}function rC(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,i;function r(n){n.multi?(t.multi[n.kind].push(n),t.multi.fallback.push(n)):t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,i=arguments.length;e=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),kC=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function SC(t){return!(t===null||!kC.test(t)||t[t.length-1]==="_")}function wC(t){var e,i;return e=t.replace(/_/g,"").toLowerCase(),i=e[0]==="-"?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?i===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:i*parseFloat(e,10)}var BC=/^[-+]?[0-9]+e/;function AC(t,e){var i;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(ht.isNegativeZero(t))return"-0.0";return i=t.toString(10),BC.test(i)?i.replace("e",".e"):i}function FC(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||ht.isNegativeZero(t))}var LC=new lt("tag:yaml.org,2002:float",{kind:"scalar",resolve:SC,construct:wC,predicate:FC,represent:AC,defaultStyle:"lowercase"}),Dl=lC.extend({implicit:[fC,mC,vC,LC]}),EC=Dl,Nl=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Rl=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function OC(t){return t===null?!1:Nl.exec(t)!==null||Rl.exec(t)!==null}function MC(t){var e,i,r,n,o,s,a,l=0,h=null,u,f,c;if(e=Nl.exec(t),e===null&&(e=Rl.exec(t)),e===null)throw new Error("Date resolve error");if(i=+e[1],r=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(i,r,n));if(o=+e[4],s=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],f=+(e[11]||0),h=(u*60+f)*6e4,e[9]==="-"&&(h=-h)),c=new Date(Date.UTC(i,r,n,o,s,a,l)),h&&c.setTime(c.getTime()-h),c}function IC(t){return t.toISOString()}var $C=new lt("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:OC,construct:MC,instanceOf:Date,represent:IC});function DC(t){return t==="<<"||t===null}var NC=new lt("tag:yaml.org,2002:merge",{kind:"scalar",resolve:DC}),Jn=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function RC(t){if(t===null)return!1;var e,i,r=0,n=t.length,o=Jn;for(i=0;i64)){if(e<0)return!1;r+=6}return r%8===0}function PC(t){var e,i,r=t.replace(/[\r\n=]/g,""),n=r.length,o=Jn,s=0,a=[];for(e=0;e>16&255),a.push(s>>8&255),a.push(s&255)),s=s<<6|o.indexOf(r.charAt(e));return i=n%4*6,i===0?(a.push(s>>16&255),a.push(s>>8&255),a.push(s&255)):i===18?(a.push(s>>10&255),a.push(s>>2&255)):i===12&&a.push(s>>4&255),new Uint8Array(a)}function qC(t){var e="",i=0,r,n,o=t.length,s=Jn;for(r=0;r>18&63],e+=s[i>>12&63],e+=s[i>>6&63],e+=s[i&63]),i=(i<<8)+t[r];return n=o%3,n===0?(e+=s[i>>18&63],e+=s[i>>12&63],e+=s[i>>6&63],e+=s[i&63]):n===2?(e+=s[i>>10&63],e+=s[i>>4&63],e+=s[i<<2&63],e+=s[64]):n===1&&(e+=s[i>>2&63],e+=s[i<<4&63],e+=s[64],e+=s[64]),e}function zC(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}var WC=new lt("tag:yaml.org,2002:binary",{kind:"scalar",resolve:RC,construct:PC,predicate:zC,represent:qC}),HC=Object.prototype.hasOwnProperty,jC=Object.prototype.toString;function UC(t){if(t===null)return!0;var e=[],i,r,n,o,s,a=t;for(i=0,r=a.length;i>10)+55296,(t-65536&1023)+56320)}var Hl=new Array(256),jl=new Array(256);for(var we=0;we<256;we++)Hl[we]=ws(we)?1:0,jl[we]=ws(we);function ux(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||ix,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Ul(t,e){var i={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return i.snippet=Jy(i),new Ut(e,i)}function L(t,e){throw Ul(t,e)}function lr(t,e){t.onWarning&&t.onWarning.call(null,Ul(t,e))}var Bs={YAML:function(e,i,r){var n,o,s;e.version!==null&&L(e,"duplication of %YAML directive"),r.length!==1&&L(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),n===null&&L(e,"ill-formed argument of the YAML directive"),o=parseInt(n[1],10),s=parseInt(n[2],10),o!==1&&L(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&lr(e,"unsupported YAML version of the document")},TAG:function(e,i,r){var n,o;r.length!==2&&L(e,"TAG directive accepts exactly two arguments"),n=r[0],o=r[1],zl.test(n)||L(e,"ill-formed tag handle (first argument) of the TAG directive"),ne.call(e.tagMap,n)&&L(e,'there is a previously declared suffix for "'+n+'" tag handle'),Wl.test(o)||L(e,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch{L(e,"tag prefix is malformed: "+o)}e.tagMap[n]=o}};function ie(t,e,i,r){var n,o,s,a;if(e1&&(t.result+=ht.repeat(` +`,e-1))}function fx(t,e,i){var r,n,o,s,a,l,h,u,f=t.kind,c=t.result,d;if(d=t.input.charCodeAt(t.position),mt(d)||Be(d)||d===35||d===38||d===42||d===33||d===124||d===62||d===39||d===34||d===37||d===64||d===96||(d===63||d===45)&&(n=t.input.charCodeAt(t.position+1),mt(n)||i&&Be(n)))return!1;for(t.kind="scalar",t.result="",o=s=t.position,a=!1;d!==0;){if(d===58){if(n=t.input.charCodeAt(t.position+1),mt(n)||i&&Be(n))break}else if(d===35){if(r=t.input.charCodeAt(t.position-1),mt(r))break}else{if(t.position===t.lineStart&&Ar(t)||i&&Be(d))break;if(Ot(d))if(l=t.line,h=t.lineStart,u=t.lineIndent,tt(t,!1,-1),t.lineIndent>=e){a=!0,d=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=l,t.lineStart=h,t.lineIndent=u;break}}a&&(ie(t,o,s,!1),to(t,t.line-l),o=s=t.position,a=!1),pe(d)||(s=t.position+1),d=t.input.charCodeAt(++t.position)}return ie(t,o,s,!1),t.result?!0:(t.kind=f,t.result=c,!1)}function dx(t,e){var i,r,n;if(i=t.input.charCodeAt(t.position),i!==39)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(i=t.input.charCodeAt(t.position))!==0;)if(i===39)if(ie(t,r,t.position,!0),i=t.input.charCodeAt(++t.position),i===39)r=t.position,t.position++,n=t.position;else return!0;else Ot(i)?(ie(t,r,n,!0),to(t,tt(t,!1,e)),r=n=t.position):t.position===t.lineStart&&Ar(t)?L(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);L(t,"unexpected end of the stream within a single quoted scalar")}function px(t,e){var i,r,n,o,s,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,i=r=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return ie(t,i,t.position,!0),t.position++,!0;if(a===92){if(ie(t,i,t.position,!0),a=t.input.charCodeAt(++t.position),Ot(a))tt(t,!1,e);else if(a<256&&Hl[a])t.result+=jl[a],t.position++;else if((s=lx(a))>0){for(n=s,o=0;n>0;n--)a=t.input.charCodeAt(++t.position),(s=ax(a))>=0?o=(o<<4)+s:L(t,"expected hexadecimal character");t.result+=cx(o),t.position++}else L(t,"unknown escape sequence");i=r=t.position}else Ot(a)?(ie(t,i,r,!0),to(t,tt(t,!1,e)),i=r=t.position):t.position===t.lineStart&&Ar(t)?L(t,"unexpected end of the document within a double quoted scalar"):(t.position++,r=t.position)}L(t,"unexpected end of the stream within a double quoted scalar")}function gx(t,e){var i=!0,r,n,o,s=t.tag,a,l=t.anchor,h,u,f,c,d,_=Object.create(null),k,S,R,T;if(T=t.input.charCodeAt(t.position),T===91)u=93,d=!1,a=[];else if(T===123)u=125,d=!0,a={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=a),T=t.input.charCodeAt(++t.position);T!==0;){if(tt(t,!0,e),T=t.input.charCodeAt(t.position),T===u)return t.position++,t.tag=s,t.anchor=l,t.kind=d?"mapping":"sequence",t.result=a,!0;i?T===44&&L(t,"expected the node content, but found ','"):L(t,"missed comma between flow collection entries"),S=k=R=null,f=c=!1,T===63&&(h=t.input.charCodeAt(t.position+1),mt(h)&&(f=c=!0,t.position++,tt(t,!0,e))),r=t.line,n=t.lineStart,o=t.position,Ne(t,e,sr,!1,!0),S=t.tag,k=t.result,tt(t,!0,e),T=t.input.charCodeAt(t.position),(c||t.line===r)&&T===58&&(f=!0,T=t.input.charCodeAt(++t.position),tt(t,!0,e),Ne(t,e,sr,!1,!0),R=t.result),d?Ae(t,a,_,S,k,R,r,n,o):f?a.push(Ae(t,null,_,S,k,R,r,n,o)):a.push(k),tt(t,!0,e),T=t.input.charCodeAt(t.position),T===44?(i=!0,T=t.input.charCodeAt(++t.position)):i=!1}L(t,"unexpected end of the stream within a flow collection")}function mx(t,e){var i,r,n=Xr,o=!1,s=!1,a=e,l=0,h=!1,u,f;if(f=t.input.charCodeAt(t.position),f===124)r=!1;else if(f===62)r=!0;else return!1;for(t.kind="scalar",t.result="";f!==0;)if(f=t.input.charCodeAt(++t.position),f===43||f===45)Xr===n?n=f===43?ks:rx:L(t,"repeat of a chomping mode identifier");else if((u=hx(f))>=0)u===0?L(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?L(t,"repeat of an indentation width identifier"):(a=e+u-1,s=!0);else break;if(pe(f)){do f=t.input.charCodeAt(++t.position);while(pe(f));if(f===35)do f=t.input.charCodeAt(++t.position);while(!Ot(f)&&f!==0)}for(;f!==0;){for(Qn(t),t.lineIndent=0,f=t.input.charCodeAt(t.position);(!s||t.lineIndenta&&(a=t.lineIndent),Ot(f)){l++;continue}if(t.lineIndente)&&l!==0)L(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(S&&(s=t.line,a=t.lineStart,l=t.position),Ne(t,e,ar,!0,n)&&(S?_=t.result:k=t.result),S||(Ae(t,f,c,d,_,k,s,a,l),d=_=k=null),tt(t,!0,-1),T=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>e)&&T!==0)L(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),f=0,c=t.implicitTypes.length;f"),t.result!==null&&_.kind!==t.kind&&L(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+_.kind+'", not "'+t.kind+'"'),_.resolve(t.result,t.tag)?(t.result=_.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):L(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function bx(t){var e=t.position,i,r,n,o=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(tt(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(o=!0,s=t.input.charCodeAt(++t.position),i=t.position;s!==0&&!mt(s);)s=t.input.charCodeAt(++t.position);for(r=t.input.slice(i,t.position),n=[],r.length<1&&L(t,"directive name must not be less than one character in length");s!==0;){for(;pe(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!Ot(s));break}if(Ot(s))break;for(i=t.position;s!==0&&!mt(s);)s=t.input.charCodeAt(++t.position);n.push(t.input.slice(i,t.position))}s!==0&&Qn(t),ne.call(Bs,r)?Bs[r](t,r,n):lr(t,'unknown document directive "'+r+'"')}if(tt(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,tt(t,!0,-1)):o&&L(t,"directives end mark is expected"),Ne(t,t.lineIndent-1,ar,!1,!0),tt(t,!0,-1),t.checkLineBreaks&&ox.test(t.input.slice(e,t.position))&&lr(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Ar(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,tt(t,!0,-1));return}if(t.position"u"&&(i=e,e=null);var r=Yl(t,i);if(typeof e!="function")return r;for(var n=0,o=r.length;nt.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(e,i,r)=>"<"+i+r.replace(/="([^"]*)"/g,"='$1'")+">"),Ex=t=>{const{text:e,metadata:i}=Fx(t),{displayMode:r,title:n,config:o={}}=i;return r&&(o.gantt||(o.gantt={}),o.gantt.displayMode=r),{title:n,config:o,text:e}},Ox=t=>{const e=ri.detectInit(t)??{},i=ri.detectDirective(t,"wrap");return Array.isArray(i)?e.wrap=i.some(({type:r})=>{}):(i==null?void 0:i.type)==="wrap"&&(e.wrap=!0),{text:h0(t),directive:e}};function Mx(t){const e=Lx(t),i=Ex(e),r=Ox(i.text),n=nl(i.config,r.directive);return t=Py(r.text),{code:t,title:i.title,config:n}}const Ix=5e4,$x="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",Dx="sandbox",Nx="loose",Rx="http://www.w3.org/2000/svg",Px="http://www.w3.org/1999/xlink",qx="http://www.w3.org/1999/xhtml",zx="100%",Wx="100%",Hx="border:0;margin:0;",jx="margin:0",Ux="allow-top-navigation-by-user-activation allow-popups",Yx='The "iframe" tag is not supported by your browser.',Vx=["foreignobject"],Gx=["dominant-baseline"];function Vl(t){const e=Mx(t);return rr(),M0(e.config??{}),e}async function Xx(t,e){Kn(),t=Vl(t).code;try{await Zn(t)}catch(i){if(e!=null&&e.suppressErrors)return!1;throw i}return!0}const Kx=function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(i){return i.substring(0,i.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(i){return i.substring(0,i.length-1)}),e=e.replace(/#\w+;/g,function(i){const r=i.substring(1,i.length-1);return/^\+?\d+$/.test(r)?"fl°°"+r+"¶ß":"fl°"+r+"¶ß"}),e},Zx=function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},Ls=(t,e,i=[])=>` +.${t} ${e} { ${i.join(" !important; ")} !important; }`,Jx=(t,e={})=>{var i;let r="";if(t.themeCSS!==void 0&&(r+=` +${t.themeCSS}`),t.fontFamily!==void 0&&(r+=` +:root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(r+=` +:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),!Yr(e)){const a=t.htmlLabels||((i=t.flowchart)==null?void 0:i.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const l in e){const h=e[l];Yr(h.styles)||a.forEach(u=>{r+=Ls(h.id,u,h.styles)}),Yr(h.textStyles)||(r+=Ls(h.id,"tspan",h.textStyles))}}return r},Qx=(t,e,i,r)=>{const n=Jx(t,i),o=Q_(e,n,t.themeVariables);return un(mm(`${r}{${o}}`),ym)},tb=(t="",e,i)=>{let r=t;return!i&&!e&&(r=r.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),r=Zx(r),r=r.replace(/
                  /g,"
                  "),r},eb=(t="",e)=>{var i,r;const n=(r=(i=e==null?void 0:e.viewBox)==null?void 0:i.baseVal)!=null&&r.height?e.viewBox.baseVal.height+"px":Wx,o=btoa(''+t+"");return``},Es=(t,e,i,r,n)=>{const o=t.append("div");o.attr("id",i),r&&o.attr("style",r);const s=o.append("svg").attr("id",e).attr("width","100%").attr("xmlns",Rx);return n&&s.attr("xmlns:xlink",n),s.append("g"),t};function Os(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const ib=(t,e,i,r)=>{var n,o,s;(n=t.getElementById(e))==null||n.remove(),(o=t.getElementById(i))==null||o.remove(),(s=t.getElementById(r))==null||s.remove()},rb=async function(t,e,i){var r,n,o,s,a,l;Kn();const h=Vl(e);e=h.code;const u=It();E.debug(u),e.length>((u==null?void 0:u.maxTextSize)??Ix)&&(e=$x);const f="#"+t,c="i"+t,d="#"+c,_="d"+t,k="#"+_;let S=xt("body");const R=u.securityLevel===Dx,T=u.securityLevel===Nx,P=u.fontFamily;if(i!==void 0){if(i&&(i.innerHTML=""),R){const b=Os(xt(i),c);S=xt(b.nodes()[0].contentDocument.body),S.node().style.margin=0}else S=xt(i);Es(S,t,_,`font-family: ${P}`,Px)}else{if(ib(document,t,_,c),R){const b=Os(xt("body"),c);S=xt(b.nodes()[0].contentDocument.body),S.node().style.margin=0}else S=xt("body");Es(S,t,_)}e=Kx(e);let H,Y;try{H=await Zn(e,{title:h.title})}catch(b){H=new Ml("error"),Y=b}const X=S.select(k).node(),W=H.type,Xt=X.firstChild,Kt=Xt.firstChild,j=(n=(r=H.renderer).getClasses)==null?void 0:n.call(r,e,H),z=Qx(u,W,j,f),vt=document.createElement("style");vt.innerHTML=z,Xt.insertBefore(vt,Kt);try{await H.renderer.draw(e,t,xs,H)}catch(b){throw my.draw(e,t,xs),b}const Zt=S.select(`${k} svg`),M=(s=(o=H.db).getAccTitle)==null?void 0:s.call(o),v=(l=(a=H.db).getAccDescription)==null?void 0:l.call(a);ob(W,Zt,M,v),S.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",qx);let y=S.select(k).node().innerHTML;if(E.debug("config.arrowMarkerAbsolute",u.arrowMarkerAbsolute),y=tb(y,R,Ga(u.arrowMarkerAbsolute)),R){const b=S.select(k+" svg").node();y=eb(y,b)}else T||(y=Ki.sanitize(y,{ADD_TAGS:Vx,ADD_ATTR:Gx}));if($y(),Y)throw Y;const x=xt(R?d:k).node();return x&&"remove"in x&&x.remove(),{svg:y,bindFunctions:H.db.bindFunctions}};function nb(t={}){var e;t!=null&&t.fontFamily&&!((e=t.themeVariables)!=null&&e.fontFamily)&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),E0(t),t!=null&&t.theme&&t.theme in Yt?t.themeVariables=Yt[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=Yt.default.getThemeVariables(t.themeVariables));const i=typeof t=="object"?L0(t):sl();Pn(i.logLevel),Kn()}function ob(t,e,i,r){Ny(e,t),Ry(e,i,r,e.attr("id"))}const _e=Object.freeze({render:rb,parse:Xx,getDiagramFromText:Zn,initialize:nb,getConfig:It,setConfig:al,getSiteConfig:sl,updateSiteConfig:O0,reset:()=>{rr()},globalReset:()=>{rr($e)},defaultConfig:$e});Pn(It().logLevel);rr(It());const sb=async()=>{E.debug("Loading registered diagrams");const e=(await Promise.allSettled(Object.entries(Ie).map(async([i,{detector:r,loader:n}])=>{if(n)try{Xn(i)}catch{try{const{diagram:s,id:a}=await n();or(a,s,r)}catch(s){throw E.error(`Failed to load external diagram with key ${i}. Removing from detectors.`),delete Ie[i],s}}}))).filter(i=>i.status==="rejected");if(e.length>0){E.error(`Failed to load ${e.length} external diagrams`);for(const i of e)E.error(i);throw new Error(`Failed to load ${e.length} external diagrams`)}},ab=(t,e,i)=>{E.warn(t),rl(t)?(i&&i(t.str,t.hash),e.push({...t,message:t.str,error:t})):(i&&i(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},Gl=async function(t={querySelector:".mermaid"}){try{await lb(t)}catch(e){if(rl(e)&&E.error(e.str),At.parseError&&At.parseError(e),!t.suppressErrors)throw E.error("Use the suppressErrors option to suppress these errors"),e}},lb=async function({postRenderCallback:t,querySelector:e,nodes:i}={querySelector:".mermaid"}){const r=_e.getConfig();E.debug(`${t?"":"No "}Callback function found`);let n;if(i)n=i;else if(e)n=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");E.debug(`Found ${n.length} diagrams`),(r==null?void 0:r.startOnLoad)!==void 0&&(E.debug("Start On Load: "+(r==null?void 0:r.startOnLoad)),_e.updateSiteConfig({startOnLoad:r==null?void 0:r.startOnLoad}));const o=new ri.InitIDGenerator(r.deterministicIds,r.deterministicIDSeed);let s;const a=[];for(const l of Array.from(n)){E.info("Rendering diagram: "+l.id);/*! Check if previously processed */if(l.getAttribute("data-processed"))continue;l.setAttribute("data-processed","true");const h=`mermaid-${o.next()}`;s=l.innerHTML,s=lh(ri.entityDecode(s)).trim().replace(//gi,"
                  ");const u=ri.detectInit(s);u&&E.debug("Detected early reinit: ",u);try{const{svg:f,bindFunctions:c}=await Jl(h,s,l);l.innerHTML=f,t&&await t(h),c&&c(l)}catch(f){ab(f,a,At.parseError)}}if(a.length>0)throw a[0]},Xl=function(t){_e.initialize(t)},hb=async function(t,e,i){E.warn("mermaid.init is deprecated. Please use run instead."),t&&Xl(t);const r={postRenderCallback:i,querySelector:".mermaid"};typeof e=="string"?r.querySelector=e:e&&(e instanceof HTMLElement?r.nodes=[e]:r.nodes=e),await Gl(r)},cb=async(t,{lazyLoad:e=!0}={})=>{Qa(...t),e===!1&&await sb()},Kl=function(){if(At.startOnLoad){const{startOnLoad:t}=_e.getConfig();t&&At.run().catch(e=>E.error("Mermaid failed to initialize",e))}};if(typeof document<"u"){/*! + * Wait for document loaded before starting the execution + */window.addEventListener("load",Kl,!1)}const ub=function(t){At.parseError=t},hr=[];let Kr=!1;const Zl=async()=>{if(!Kr){for(Kr=!0;hr.length>0;){const t=hr.shift();if(t)try{await t()}catch(e){E.error("Error executing queue",e)}}Kr=!1}},fb=async(t,e)=>new Promise((i,r)=>{const n=()=>new Promise((o,s)=>{_e.parse(t,e).then(a=>{o(a),i(a)},a=>{var l;E.error("Error parsing",a),(l=At.parseError)==null||l.call(At,a),s(a),r(a)})});hr.push(n),Zl().catch(r)}),Jl=(t,e,i)=>new Promise((r,n)=>{const o=()=>new Promise((s,a)=>{_e.render(t,e,i).then(l=>{s(l),r(l)},l=>{var h;E.error("Error parsing",l),(h=At.parseError)==null||h.call(At,l),a(l),n(l)})});hr.push(o),Zl().catch(n)}),At={startOnLoad:!0,mermaidAPI:_e,parse:fb,render:Jl,init:hb,run:Gl,registerExternalDiagrams:cb,initialize:Xl,parseError:void 0,contentLoaded:Kl,setParseErrorHandler:ub,detectType:wr},Mb=Object.freeze(Object.defineProperty({__proto__:null,default:At},Symbol.toStringTag,{value:"Module"}));export{mr as $,Ci as A,Re as B,tr as C,ye as D,xr as E,$g as F,Tm as G,yi as H,Qi as I,Zg as J,Hg as K,Fg as L,Na as M,La as N,Fp as O,Lp as P,Fm as Q,as as R,Zi as S,vg as T,Ep as U,$n as V,Ap as W,$p as X,Pe as Y,Ag as Z,oe as _,ny as a,It as a$,is as a0,Dn as a1,Oa as a2,Da as a3,Pa as a4,wp as a5,Dt as a6,Jg as a7,Qg as a8,In as a9,pb as aA,hh as aB,ch as aC,fh as aD,vn as aE,ee as aF,ai as aG,Oo as aH,cu as aI,py as aJ,Tb as aK,e0 as aL,nl as aM,Hn as aN,Bn as aO,_b as aP,xb as aQ,Po as aR,Ro as aS,bb as aT,Cb as aU,gb as aV,mb as aW,kb as aX,vb as aY,yb as aZ,Xm as a_,pn as aa,zp as ab,jg as ac,Mn as ad,Yr as ae,im as af,yt as ag,Vs as ah,xh as ai,I as aj,Mt as ak,Zp as al,ti as am,Zx as an,Ef as ao,lh as ap,Lb as aq,Sb as ar,uy as as,b0 as at,Tn as au,Gs as av,gt as aw,mi as ax,ru as ay,Zs as az,ry as b,Ob as b0,o0 as b1,C0 as b2,ay as b3,_i as b4,F as b5,O as b6,Mb as b7,Gn as c,di as d,at as e,ir as f,iy as g,xt as h,Bl as i,qn as j,w0 as k,E as l,Is as m,vr as n,Af as o,y0 as p,Ga as q,u0 as r,ey as s,K_ as t,Eb as u,oy as v,k0 as w,sy as x,ri as y,ty as z}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/c4Diagram-817c8e44-fGBWpqJm.js","assets/svgDrawCommon-ad5ef572-Rj64dPCl.js","assets/app-0NopiYEV.js","assets/flowDiagram-61eb444c-vQNzsoYg.js","assets/flowDb-170db09d-3I9bX383.js","assets/layout-6DvG_ICF.js","assets/styles-b966c4ae-hKhWXcIa.js","assets/index-67a42d7d-iblPHmxF.js","assets/edges-80f1ebb6-hR1YO9QC.js","assets/createText-aebacdfe-VuGI-o_f.js","assets/line-QxBjBe1b.js","assets/array-Nw74a44z.js","assets/path-aUcfwwLI.js","assets/flowDiagram-v2-2f8f667a-vyhUgdJw.js","assets/erDiagram-9cfc3649-wT9fM43B.js","assets/gitGraphDiagram-6b463803-eKsTNhvP.js","assets/ganttDiagram-db6931fb-lnA5WCr2.js","assets/linear-nks6njEu.js","assets/init-Hi12RPRh.js","assets/infoDiagram-a336098b-ahMgvA-1.js","assets/pieDiagram-a5166659-88FRZv2h.js","assets/arc-zVzTa0l4.js","assets/ordinal-wXG5obU4.js","assets/quadrantDiagram-6c355bbc-3OwR_3NY.js","assets/xychartDiagram-f746c04c-ybRnTgNu.js","assets/requirementDiagram-4038b16c-GBigQQoF.js","assets/sequenceDiagram-465a088a-qM5g7oLQ.js","assets/classDiagram-48ab76fb-2huToeoO.js","assets/styles-4ba6ed67-LzHEaVgv.js","assets/classDiagram-v2-8ecb0bfc-yizWAp91.js","assets/stateDiagram-b620d43f-mAYfcJzU.js","assets/styles-bbc3fe3b-rQ9hJQeS.js","assets/stateDiagram-v2-2671c3d1-QZ9kVaW-.js","assets/journeyDiagram-deae3313-A-9AYwwK.js","assets/flowchart-elk-definition-e097735e-s4v8c7Pb.js","assets/timeline-definition-732a2638-_vkJzhaO.js","assets/mindmap-definition-617cf8dd-vVbSb0k_.js","assets/sankeyDiagram-6db3d513-gIgv_0rP.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} diff --git a/assets/mermaid.core-ygY5oRaR.js b/assets/mermaid.core-ygY5oRaR.js deleted file mode 100644 index 55b8490..0000000 --- a/assets/mermaid.core-ygY5oRaR.js +++ /dev/null @@ -1,92 +0,0 @@ -import{_ as J}from"./app-RP31lnfq.js";function uh(t){for(var e=[],i=1;i=v?M:""+Array(v+1-B.length).join(y)+M},H={s:q,z:function(M){var v=-M.utcOffset(),y=Math.abs(v),B=Math.floor(y/60),x=y%60;return(v<=0?"+":"-")+q(B,2,"0")+":"+q(x,2,"0")},m:function M(v,y){if(v.date()1)return M(D[0])}else{var I=v.name;X[I]=v,x=I}return!B&&x&&(Y=x),x||!B&&Y},j=function(M,v){if(Xt(M))return M.clone();var y=typeof v=="object"?v:{};return y.date=M,y.args=arguments,new vt(y)},z=H;z.l=Kt,z.i=Xt,z.w=function(M,v){return j(M,{locale:v.$L,utc:v.$u,x:v.$x,$offset:v.$offset})};var vt=function(){function M(y){this.$L=Kt(y.locale,null,!0),this.parse(y),this.$x=this.$x||y.x||{},this[W]=!0}var v=M.prototype;return v.parse=function(y){this.$d=function(B){var x=B.date,b=B.utc;if(x===null)return new Date(NaN);if(z.u(x))return new Date;if(x instanceof Date)return new Date(x);if(typeof x=="string"&&!/Z$/i.test(x)){var D=x.match(S);if(D){var I=D[2]-1||0,G=(D[7]||"0").substring(0,3);return b?new Date(Date.UTC(D[1],I,D[3]||1,D[4]||0,D[5]||0,D[6]||0,G)):new Date(D[1],I,D[3]||1,D[4]||0,D[5]||0,D[6]||0,G)}}return new Date(x)}(y),this.init()},v.init=function(){var y=this.$d;this.$y=y.getFullYear(),this.$M=y.getMonth(),this.$D=y.getDate(),this.$W=y.getDay(),this.$H=y.getHours(),this.$m=y.getMinutes(),this.$s=y.getSeconds(),this.$ms=y.getMilliseconds()},v.$utils=function(){return z},v.isValid=function(){return this.$d.toString()!==k},v.isSame=function(y,B){var x=j(y);return this.startOf(B)<=x&&x<=this.endOf(B)},v.isAfter=function(y,B){return j(y)-1}function l(u){var f=u.replace(n,"");return f.replace(i,function(c,d){return String.fromCharCode(d)})}function h(u){if(!u)return t.BLANK_URL;var f=l(u).replace(r,"").replace(n,"").trim();if(!f)return t.BLANK_URL;if(a(f))return f;var c=f.match(o);if(!c)return f;var d=c[0];return e.test(d)?t.BLANK_URL:f}t.sanitizeUrl=h})(Is);var mh={value:()=>{}};function Ds(){for(var t=0,e=arguments.length,i={},r;t=0&&(r=i.slice(n+1),i=i.slice(0,n)),i&&!e.hasOwnProperty(i))throw new Error("unknown type: "+i);return{type:i,name:r}})}Oi.prototype=Ds.prototype={constructor:Oi,on:function(t,e){var i=this._,r=_h(t+"",i),n,o=-1,s=r.length;if(arguments.length<2){for(;++o0)for(var i=new Array(n),r=0,n,o;r=0&&(e=t.slice(0,i))!=="xmlns"&&(t=t.slice(i+1)),vo.hasOwnProperty(e)?{space:vo[e],local:t}:t}function Ch(t){return function(){var e=this.ownerDocument,i=this.namespaceURI;return i===tn&&e.documentElement.namespaceURI===tn?e.createElement(t):e.createElementNS(i,t)}}function xh(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Ns(t){var e=fr(t);return(e.local?xh:Ch)(e)}function bh(){}function vn(t){return t==null?bh:function(){return this.querySelector(t)}}function Th(t){typeof t!="function"&&(t=vn(t));for(var e=this._groups,i=e.length,r=new Array(i),n=0;n=q&&(q=T+1);!(Y=S[q])&&++q<_;);H._next=Y||null}}return s=new yt(s,r),s._enter=a,s._exit=l,s}function Wh(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Hh(){return new yt(this._exit||this._groups.map(zs),this._parents)}function jh(t,e,i){var r=this.enter(),n=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(n=e(n),n&&(n=n.selection())),i==null?o.remove():i(o),r&&n?r.merge(n).order():n}function Uh(t){for(var e=t.selection?t.selection():t,i=this._groups,r=e._groups,n=i.length,o=r.length,s=Math.min(n,o),a=new Array(n),l=0;l=0;)(s=r[n])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function Vh(t){t||(t=Gh);function e(f,c){return f&&c?t(f.__data__,c.__data__):!f-!c}for(var i=this._groups,r=i.length,n=new Array(r),o=0;oe?1:t>=e?0:NaN}function Xh(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Kh(){return Array.from(this)}function Zh(){for(var t=this._groups,e=0,i=t.length;e1?this.each((e==null?lc:typeof e=="function"?cc:hc)(t,e,i??"")):Le(this.node(),t)}function Le(t,e){return t.style.getPropertyValue(e)||Ws(t).getComputedStyle(t,null).getPropertyValue(e)}function fc(t){return function(){delete this[t]}}function dc(t,e){return function(){this[t]=e}}function pc(t,e){return function(){var i=e.apply(this,arguments);i==null?delete this[t]:this[t]=i}}function gc(t,e){return arguments.length>1?this.each((e==null?fc:typeof e=="function"?pc:dc)(t,e)):this.node()[t]}function Hs(t){return t.trim().split(/^|\s+/)}function kn(t){return t.classList||new js(t)}function js(t){this._node=t,this._names=Hs(t.getAttribute("class")||"")}js.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Us(t,e){for(var i=kn(t),r=-1,n=e.length;++r=0&&(i=e.slice(r+1),e=e.slice(0,r)),{type:e,name:i}})}function Hc(t){return function(){var e=this.__on;if(e){for(var i=0,r=-1,n=e.length,o;i>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):i===8?Ti(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):i===4?Ti(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Jc.exec(t))?new gt(e[1],e[2],e[3],1):(e=Qc.exec(t))?new gt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=tu.exec(t))?Ti(e[1],e[2],e[3],e[4]):(e=eu.exec(t))?Ti(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=iu.exec(t))?Lo(e[1],e[2]/100,e[3]/100,1):(e=ru.exec(t))?Lo(e[1],e[2]/100,e[3]/100,e[4]):ko.hasOwnProperty(t)?Bo(ko[t]):t==="transparent"?new gt(NaN,NaN,NaN,0):null}function Bo(t){return new gt(t>>16&255,t>>8&255,t&255,1)}function Ti(t,e,i,r){return r<=0&&(t=e=i=NaN),new gt(t,e,i,r)}function su(t){return t instanceof di||(t=ni(t)),t?(t=t.rgb(),new gt(t.r,t.g,t.b,t.opacity)):new gt}function en(t,e,i,r){return arguments.length===1?su(t):new gt(t,e,i,r??1)}function gt(t,e,i,r){this.r=+t,this.g=+e,this.b=+i,this.opacity=+r}Sn(gt,en,Xs(di,{brighter(t){return t=t==null?ji:Math.pow(ji,t),new gt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?ii:Math.pow(ii,t),new gt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new gt(ue(this.r),ue(this.g),ue(this.b),Ui(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ao,formatHex:Ao,formatHex8:au,formatRgb:Fo,toString:Fo}));function Ao(){return`#${ce(this.r)}${ce(this.g)}${ce(this.b)}`}function au(){return`#${ce(this.r)}${ce(this.g)}${ce(this.b)}${ce((isNaN(this.opacity)?1:this.opacity)*255)}`}function Fo(){const t=Ui(this.opacity);return`${t===1?"rgb(":"rgba("}${ue(this.r)}, ${ue(this.g)}, ${ue(this.b)}${t===1?")":`, ${t})`}`}function Ui(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function ue(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ce(t){return t=ue(t),(t<16?"0":"")+t.toString(16)}function Lo(t,e,i,r){return r<=0?t=e=i=NaN:i<=0||i>=1?t=e=NaN:e<=0&&(t=NaN),new St(t,e,i,r)}function Ks(t){if(t instanceof St)return new St(t.h,t.s,t.l,t.opacity);if(t instanceof di||(t=ni(t)),!t)return new St;if(t instanceof St)return t;t=t.rgb();var e=t.r/255,i=t.g/255,r=t.b/255,n=Math.min(e,i,r),o=Math.max(e,i,r),s=NaN,a=o-n,l=(o+n)/2;return a?(e===o?s=(i-r)/a+(i0&&l<1?0:s,new St(s,a,l,t.opacity)}function lu(t,e,i,r){return arguments.length===1?Ks(t):new St(t,e,i,r??1)}function St(t,e,i,r){this.h=+t,this.s=+e,this.l=+i,this.opacity=+r}Sn(St,lu,Xs(di,{brighter(t){return t=t==null?ji:Math.pow(ji,t),new St(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?ii:Math.pow(ii,t),new St(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,i=this.l,r=i+(i<.5?i:1-i)*e,n=2*i-r;return new gt(Rr(t>=240?t-240:t+120,n,r),Rr(t,n,r),Rr(t<120?t+240:t-120,n,r),this.opacity)},clamp(){return new St(Eo(this.h),vi(this.s),vi(this.l),Ui(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Ui(this.opacity);return`${t===1?"hsl(":"hsla("}${Eo(this.h)}, ${vi(this.s)*100}%, ${vi(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Eo(t){return t=(t||0)%360,t<0?t+360:t}function vi(t){return Math.max(0,Math.min(1,t||0))}function Rr(t,e,i){return(t<60?e+(i-e)*t/60:t<180?i:t<240?e+(i-e)*(240-t)/60:e)*255}const wn=t=>()=>t;function Zs(t,e){return function(i){return t+i*e}}function hu(t,e,i){return t=Math.pow(t,i),e=Math.pow(e,i)-t,i=1/i,function(r){return Math.pow(t+r*e,i)}}function Kb(t,e){var i=e-t;return i?Zs(t,i>180||i<-180?i-360*Math.round(i/360):i):wn(isNaN(t)?e:t)}function cu(t){return(t=+t)==1?Js:function(e,i){return i-e?hu(e,i,t):wn(isNaN(e)?i:e)}}function Js(t,e){var i=e-t;return i?Zs(t,i):wn(isNaN(t)?e:t)}const Oo=function t(e){var i=cu(e);function r(n,o){var s=i((n=en(n)).r,(o=en(o)).r),a=i(n.g,o.g),l=i(n.b,o.b),h=Js(n.opacity,o.opacity);return function(u){return n.r=s(u),n.g=a(u),n.b=l(u),n.opacity=h(u),n+""}}return r.gamma=t,r}(1);function ee(t,e){return t=+t,e=+e,function(i){return t*(1-i)+e*i}}var rn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Pr=new RegExp(rn.source,"g");function uu(t){return function(){return t}}function fu(t){return function(e){return t(e)+""}}function du(t,e){var i=rn.lastIndex=Pr.lastIndex=0,r,n,o,s=-1,a=[],l=[];for(t=t+"",e=e+"";(r=rn.exec(t))&&(n=Pr.exec(e));)(o=n.index)>i&&(o=e.slice(i,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(n=n[0])?a[s]?a[s]+=n:a[++s]=n:(a[++s]=null,l.push({i:s,x:ee(r,n)})),i=Pr.lastIndex;return i180?u+=360:u-h>180&&(h+=360),c.push({i:f.push(n(f)+"rotate(",null,r)-2,x:ee(h,u)})):u&&f.push(n(f)+"rotate("+u+r)}function a(h,u,f,c){h!==u?c.push({i:f.push(n(f)+"skewX(",null,r)-2,x:ee(h,u)}):u&&f.push(n(f)+"skewX("+u+r)}function l(h,u,f,c,d,_){if(h!==f||u!==c){var k=d.push(n(d)+"scale(",null,",",null,")");_.push({i:k-4,x:ee(h,f)},{i:k-2,x:ee(u,c)})}else(f!==1||c!==1)&&d.push(n(d)+"scale("+f+","+c+")")}return function(h,u){var f=[],c=[];return h=t(h),u=t(u),o(h.translateX,h.translateY,u.translateX,u.translateY,f,c),s(h.rotate,u.rotate,f,c),a(h.skewX,u.skewX,f,c),l(h.scaleX,h.scaleY,u.scaleX,u.scaleY,f,c),h=u=null,function(d){for(var _=-1,k=c.length,S;++_=0&&t._call.call(void 0,e),t=t._next;--Ee}function $o(){pe=(Vi=oi.now())+dr,Ee=Ve=0;try{Cu()}finally{Ee=0,bu(),pe=0}}function xu(){var t=oi.now(),e=t-Vi;e>ea&&(dr-=e,Vi=t)}function bu(){for(var t,e=Yi,i,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(i=e._next,e._next=null,e=t?t._next=i:Yi=i);Ge=t,on(r)}function on(t){if(!Ee){Ve&&(Ve=clearTimeout(Ve));var e=t-pe;e>24?(t<1/0&&(Ve=setTimeout($o,t-oi.now()-dr)),We&&(We=clearInterval(We))):(We||(Vi=oi.now(),We=setInterval(xu,ea)),Ee=1,ia($o))}}function Io(t,e,i){var r=new Gi;return e=e==null?0:+e,r.restart(n=>{r.stop(),t(n+e)},e,i),r}var Tu=Ds("start","end","cancel","interrupt"),vu=[],na=0,Do=1,sn=2,Mi=3,No=4,an=5,$i=6;function pr(t,e,i,r,n,o){var s=t.__transition;if(!s)t.__transition={};else if(i in s)return;ku(t,i,{name:e,index:r,group:n,on:Tu,tween:vu,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:na})}function An(t,e){var i=Ft(t,e);if(i.state>na)throw new Error("too late; already scheduled");return i}function It(t,e){var i=Ft(t,e);if(i.state>Mi)throw new Error("too late; already running");return i}function Ft(t,e){var i=t.__transition;if(!i||!(i=i[e]))throw new Error("transition not found");return i}function ku(t,e,i){var r=t.__transition,n;r[e]=i,i.timer=ra(o,0,i.time);function o(h){i.state=Do,i.timer.restart(s,i.delay,i.time),i.delay<=h&&s(h-i.delay)}function s(h){var u,f,c,d;if(i.state!==Do)return l();for(u in r)if(d=r[u],d.name===i.name){if(d.state===Mi)return Io(s);d.state===No?(d.state=$i,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[u]):+usn&&r.state=0&&(e=e.slice(0,i)),!e||e==="start"})}function ef(t,e,i){var r,n,o=tf(e)?An:It;return function(){var s=o(this,t),a=s.on;a!==r&&(n=(r=a).copy()).on(e,i),s.on=n}}function rf(t,e){var i=this._id;return arguments.length<2?Ft(this.node(),i).on.on(t):this.each(ef(i,t,e))}function nf(t){return function(){var e=this.parentNode;for(var i in this.__transition)if(+i!==t)return;e&&e.removeChild(this)}}function of(){return this.on("end.remove",nf(this._id))}function sf(t){var e=this._name,i=this._id;typeof t!="function"&&(t=vn(t));for(var r=this._groups,n=r.length,o=new Array(n),s=0;s1?0:t<-1?Ln:Math.acos(t)}function s1(t){return t>=1?Po:t<=-1?-Po:Math.asin(t)}function la(t){this._context=t}la.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function Ef(t){return new la(t)}class ha{constructor(e,i){this._context=e,this._x=i}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,i){switch(e=+e,i=+i,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,i):this._context.moveTo(e,i);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,i,e,i):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+i)/2,e,this._y0,e,i);break}}this._x0=e,this._y0=i}}function Of(t){return new ha(t,!0)}function Mf(t){return new ha(t,!1)}function re(){}function Xi(t,e,i){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+i)/6)}function gr(t){this._context=t}gr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Xi(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Xi(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function $f(t){return new gr(t)}function ca(t){this._context=t}ca.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Xi(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function If(t){return new ca(t)}function ua(t){this._context=t}ua.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var i=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(i,r):this._context.moveTo(i,r);break;case 3:this._point=4;default:Xi(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Df(t){return new ua(t)}function fa(t,e){this._basis=new gr(t),this._beta=e}fa.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,i=t.length-1;if(i>0)for(var r=t[0],n=e[0],o=t[i]-r,s=e[i]-n,a=-1,l;++a<=i;)l=a/i,this._basis.point(this._beta*t[a]+(1-this._beta)*(r+l*o),this._beta*e[a]+(1-this._beta)*(n+l*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const Nf=function t(e){function i(r){return e===1?new gr(r):new fa(r,e)}return i.beta=function(r){return t(+r)},i}(.85);function Ki(t,e,i){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-i),t._x2,t._y2)}function En(t,e){this._context=t,this._k=(1-e)/6}En.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ki(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Ki(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Rf=function t(e){function i(r){return new En(r,e)}return i.tension=function(r){return t(+r)},i}(0);function On(t,e){this._context=t,this._k=(1-e)/6}On.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Ki(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Pf=function t(e){function i(r){return new On(r,e)}return i.tension=function(r){return t(+r)},i}(0);function Mn(t,e){this._context=t,this._k=(1-e)/6}Mn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ki(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const qf=function t(e){function i(r){return new Mn(r,e)}return i.tension=function(r){return t(+r)},i}(0);function $n(t,e,i){var r=t._x1,n=t._y1,o=t._x2,s=t._y2;if(t._l01_a>Ro){var a=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*a-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,n=(n*a-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>Ro){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*h+t._x1*t._l23_2a-e*t._l12_2a)/u,s=(s*h+t._y1*t._l23_2a-i*t._l12_2a)/u}t._context.bezierCurveTo(r,n,o,s,t._x2,t._y2)}function da(t,e){this._context=t,this._alpha=e}da.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:$n(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const zf=function t(e){function i(r){return e?new da(r,e):new En(r,0)}return i.alpha=function(r){return t(+r)},i}(.5);function pa(t,e){this._context=t,this._alpha=e}pa.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:$n(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Wf=function t(e){function i(r){return e?new pa(r,e):new On(r,0)}return i.alpha=function(r){return t(+r)},i}(.5);function ga(t,e){this._context=t,this._alpha=e}ga.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:$n(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Hf=function t(e){function i(r){return e?new ga(r,e):new Mn(r,0)}return i.alpha=function(r){return t(+r)},i}(.5);function ma(t){this._context=t}ma.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function jf(t){return new ma(t)}function qo(t){return t<0?-1:1}function zo(t,e,i){var r=t._x1-t._x0,n=e-t._x1,o=(t._y1-t._y0)/(r||n<0&&-0),s=(i-t._y1)/(n||r<0&&-0),a=(o*n+s*r)/(r+n);return(qo(o)+qo(s))*Math.min(Math.abs(o),Math.abs(s),.5*Math.abs(a))||0}function Wo(t,e){var i=t._x1-t._x0;return i?(3*(t._y1-t._y0)/i-e)/2:e}function qr(t,e,i){var r=t._x0,n=t._y0,o=t._x1,s=t._y1,a=(o-r)/3;t._context.bezierCurveTo(r+a,n+a*e,o-a,s-a*i,o,s)}function Zi(t){this._context=t}Zi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:qr(this,this._t0,Wo(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var i=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,qr(this,Wo(this,i=zo(this,t,e)),i);break;default:qr(this,this._t0,i=zo(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=i}}};function _a(t){this._context=new ya(t)}(_a.prototype=Object.create(Zi.prototype)).point=function(t,e){Zi.prototype.point.call(this,e,t)};function ya(t){this._context=t}ya.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,i,r,n,o){this._context.bezierCurveTo(e,t,r,i,o,n)}};function Uf(t){return new Zi(t)}function Yf(t){return new _a(t)}function Ca(t){this._context=t}Ca.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,i=t.length;if(i)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),i===2)this._context.lineTo(t[1],e[1]);else for(var r=Ho(t),n=Ho(e),o=0,s=1;s=0;--e)n[e]=(s[e]-n[e+1])/o[e];for(o[i-1]=(t[i]+n[i-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var i=this._x*(1-this._t)+t*this._t;this._context.lineTo(i,this._y),this._context.lineTo(i,e)}break}}this._x=t,this._y=e}};function Gf(t){return new mr(t,.5)}function Xf(t){return new mr(t,0)}function Kf(t){return new mr(t,1)}function Xe(t,e,i){this.k=t,this.x=e,this.y=i}Xe.prototype={constructor:Xe,scale:function(t){return t===1?this:new Xe(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Xe(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};Xe.prototype;/*! @license DOMPurify 3.0.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.6/LICENSE */const{entries:xa,setPrototypeOf:jo,isFrozen:Zf,getPrototypeOf:Jf,getOwnPropertyDescriptor:ba}=Object;let{freeze:ut,seal:Bt,create:Ta}=Object,{apply:ln,construct:hn}=typeof Reflect<"u"&&Reflect;ut||(ut=function(e){return e});Bt||(Bt=function(e){return e});ln||(ln=function(e,i,r){return e.apply(i,r)});hn||(hn=function(e,i){return new e(...i)});const Si=bt(Array.prototype.forEach),Uo=bt(Array.prototype.pop),He=bt(Array.prototype.push),Ii=bt(String.prototype.toLowerCase),zr=bt(String.prototype.toString),Qf=bt(String.prototype.match),je=bt(String.prototype.replace),td=bt(String.prototype.indexOf),ed=bt(String.prototype.trim),_t=bt(RegExp.prototype.test),Ue=id(TypeError);function bt(t){return function(e){for(var i=arguments.length,r=new Array(i>1?i-1:0),n=1;n2&&arguments[2]!==void 0?arguments[2]:Ii;jo&&jo(t,null);let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){const o=i(n);o!==n&&(Zf(e)||(e[r]=o),n=o)}t[n]=!0}return t}function Se(t){const e=Ta(null);for(const[i,r]of xa(t))ba(t,i)!==void 0&&(e[i]=r);return e}function wi(t,e){for(;t!==null;){const r=ba(t,e);if(r){if(r.get)return bt(r.get);if(typeof r.value=="function")return bt(r.value)}t=Jf(t)}function i(r){return console.warn("fallback value for",r),null}return i}const Yo=ut(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Wr=ut(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Hr=ut(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),rd=ut(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),jr=ut(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),nd=ut(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Vo=ut(["#text"]),Go=ut(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),Ur=ut(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Xo=ut(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Bi=ut(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),od=Bt(/\{\{[\w\W]*|[\w\W]*\}\}/gm),sd=Bt(/<%[\w\W]*|[\w\W]*%>/gm),ad=Bt(/\${[\w\W]*}/gm),ld=Bt(/^data-[\-\w.\u00B7-\uFFFF]/),hd=Bt(/^aria-[\-\w]+$/),va=Bt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),cd=Bt(/^(?:\w+script|data):/i),ud=Bt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ka=Bt(/^html$/i);var Ko=Object.freeze({__proto__:null,MUSTACHE_EXPR:od,ERB_EXPR:sd,TMPLIT_EXPR:ad,DATA_ATTR:ld,ARIA_ATTR:hd,IS_ALLOWED_URI:va,IS_SCRIPT_OR_DATA:cd,ATTR_WHITESPACE:ud,DOCTYPE_NAME:ka});const fd=function(){return typeof window>"u"?null:window},dd=function(e,i){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null;const n="data-tt-policy-suffix";i&&i.hasAttribute(n)&&(r=i.getAttribute(n));const o="dompurify"+(r?"#"+r:"");try{return e.createPolicy(o,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function Sa(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:fd();const e=A=>Sa(A);if(e.version="3.0.6",e.removed=[],!t||!t.document||t.document.nodeType!==9)return e.isSupported=!1,e;let{document:i}=t;const r=i,n=r.currentScript,{DocumentFragment:o,HTMLTemplateElement:s,Node:a,Element:l,NodeFilter:h,NamedNodeMap:u=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:f,DOMParser:c,trustedTypes:d}=t,_=l.prototype,k=wi(_,"cloneNode"),S=wi(_,"nextSibling"),P=wi(_,"childNodes"),T=wi(_,"parentNode");if(typeof s=="function"){const A=i.createElement("template");A.content&&A.content.ownerDocument&&(i=A.content.ownerDocument)}let q,H="";const{implementation:Y,createNodeIterator:X,createDocumentFragment:W,getElementsByTagName:Xt}=i,{importNode:Kt}=r;let j={};e.isSupported=typeof xa=="function"&&typeof T=="function"&&Y&&Y.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:z,ERB_EXPR:vt,TMPLIT_EXPR:Zt,DATA_ATTR:M,ARIA_ATTR:v,IS_SCRIPT_OR_DATA:y,ATTR_WHITESPACE:B}=Ko;let{IS_ALLOWED_URI:x}=Ko,b=null;const D=R({},[...Yo,...Wr,...Hr,...jr,...Vo]);let I=null;const G=R({},[...Go,...Ur,...Xo,...Bi]);let N=Object.seal(Ta(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),K=null,it=null,Nt=!0,kt=!0,Jt=!1,Lt=!0,Z=!1,rt=!1,Rt=!1,Qt=!1,xe=!1,_i=!1,yi=!1,ro=!0,no=!1;const ih="user-content-";let Er=!0,qe=!1,be={},Te=null;const oo=R({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let so=null;const ao=R({},["audio","video","img","source","image","track"]);let Or=null;const lo=R({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ci="http://www.w3.org/1998/Math/MathML",xi="http://www.w3.org/2000/svg",Pt="http://www.w3.org/1999/xhtml";let ve=Pt,Mr=!1,$r=null;const rh=R({},[Ci,xi,Pt],zr);let se=null;const nh=["application/xhtml+xml","text/html"],oh="text/html";let et=null,ke=null;const sh=i.createElement("form"),ho=function(p){return p instanceof RegExp||p instanceof Function},Ir=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ke&&ke===p)){if((!p||typeof p!="object")&&(p={}),p=Se(p),se=nh.indexOf(p.PARSER_MEDIA_TYPE)===-1?se=oh:se=p.PARSER_MEDIA_TYPE,et=se==="application/xhtml+xml"?zr:Ii,b="ALLOWED_TAGS"in p?R({},p.ALLOWED_TAGS,et):D,I="ALLOWED_ATTR"in p?R({},p.ALLOWED_ATTR,et):G,$r="ALLOWED_NAMESPACES"in p?R({},p.ALLOWED_NAMESPACES,zr):rh,Or="ADD_URI_SAFE_ATTR"in p?R(Se(lo),p.ADD_URI_SAFE_ATTR,et):lo,so="ADD_DATA_URI_TAGS"in p?R(Se(ao),p.ADD_DATA_URI_TAGS,et):ao,Te="FORBID_CONTENTS"in p?R({},p.FORBID_CONTENTS,et):oo,K="FORBID_TAGS"in p?R({},p.FORBID_TAGS,et):{},it="FORBID_ATTR"in p?R({},p.FORBID_ATTR,et):{},be="USE_PROFILES"in p?p.USE_PROFILES:!1,Nt=p.ALLOW_ARIA_ATTR!==!1,kt=p.ALLOW_DATA_ATTR!==!1,Jt=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Lt=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Z=p.SAFE_FOR_TEMPLATES||!1,rt=p.WHOLE_DOCUMENT||!1,xe=p.RETURN_DOM||!1,_i=p.RETURN_DOM_FRAGMENT||!1,yi=p.RETURN_TRUSTED_TYPE||!1,Qt=p.FORCE_BODY||!1,ro=p.SANITIZE_DOM!==!1,no=p.SANITIZE_NAMED_PROPS||!1,Er=p.KEEP_CONTENT!==!1,qe=p.IN_PLACE||!1,x=p.ALLOWED_URI_REGEXP||va,ve=p.NAMESPACE||Pt,N=p.CUSTOM_ELEMENT_HANDLING||{},p.CUSTOM_ELEMENT_HANDLING&&ho(p.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(N.tagNameCheck=p.CUSTOM_ELEMENT_HANDLING.tagNameCheck),p.CUSTOM_ELEMENT_HANDLING&&ho(p.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(N.attributeNameCheck=p.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),p.CUSTOM_ELEMENT_HANDLING&&typeof p.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(N.allowCustomizedBuiltInElements=p.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Z&&(kt=!1),_i&&(xe=!0),be&&(b=R({},[...Vo]),I=[],be.html===!0&&(R(b,Yo),R(I,Go)),be.svg===!0&&(R(b,Wr),R(I,Ur),R(I,Bi)),be.svgFilters===!0&&(R(b,Hr),R(I,Ur),R(I,Bi)),be.mathMl===!0&&(R(b,jr),R(I,Xo),R(I,Bi))),p.ADD_TAGS&&(b===D&&(b=Se(b)),R(b,p.ADD_TAGS,et)),p.ADD_ATTR&&(I===G&&(I=Se(I)),R(I,p.ADD_ATTR,et)),p.ADD_URI_SAFE_ATTR&&R(Or,p.ADD_URI_SAFE_ATTR,et),p.FORBID_CONTENTS&&(Te===oo&&(Te=Se(Te)),R(Te,p.FORBID_CONTENTS,et)),Er&&(b["#text"]=!0),rt&&R(b,["html","head","body"]),b.table&&(R(b,["tbody"]),delete K.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ue('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ue('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');q=p.TRUSTED_TYPES_POLICY,H=q.createHTML("")}else q===void 0&&(q=dd(d,n)),q!==null&&typeof H=="string"&&(H=q.createHTML(""));ut&&ut(p),ke=p}},co=R({},["mi","mo","mn","ms","mtext"]),uo=R({},["foreignobject","desc","title","annotation-xml"]),ah=R({},["title","style","font","a","script"]),bi=R({},Wr);R(bi,Hr),R(bi,rd);const Dr=R({},jr);R(Dr,nd);const lh=function(p){let m=T(p);(!m||!m.tagName)&&(m={namespaceURI:ve,tagName:"template"});const w=Ii(p.tagName),U=Ii(m.tagName);return $r[p.namespaceURI]?p.namespaceURI===xi?m.namespaceURI===Pt?w==="svg":m.namespaceURI===Ci?w==="svg"&&(U==="annotation-xml"||co[U]):!!bi[w]:p.namespaceURI===Ci?m.namespaceURI===Pt?w==="math":m.namespaceURI===xi?w==="math"&&uo[U]:!!Dr[w]:p.namespaceURI===Pt?m.namespaceURI===xi&&!uo[U]||m.namespaceURI===Ci&&!co[U]?!1:!Dr[w]&&(ah[w]||!bi[w]):!!(se==="application/xhtml+xml"&&$r[p.namespaceURI]):!1},ae=function(p){He(e.removed,{element:p});try{p.parentNode.removeChild(p)}catch{p.remove()}},Nr=function(p,m){try{He(e.removed,{attribute:m.getAttributeNode(p),from:m})}catch{He(e.removed,{attribute:null,from:m})}if(m.removeAttribute(p),p==="is"&&!I[p])if(xe||_i)try{ae(m)}catch{}else try{m.setAttribute(p,"")}catch{}},fo=function(p){let m=null,w=null;if(Qt)p=""+p;else{const ot=Qf(p,/^[\r\n\t ]+/);w=ot&&ot[0]}se==="application/xhtml+xml"&&ve===Pt&&(p=''+p+"");const U=q?q.createHTML(p):p;if(ve===Pt)try{m=new c().parseFromString(U,se)}catch{}if(!m||!m.documentElement){m=Y.createDocument(ve,"template",null);try{m.documentElement.innerHTML=Mr?H:U}catch{}}const nt=m.body||m.documentElement;return p&&w&&nt.insertBefore(i.createTextNode(w),nt.childNodes[0]||null),ve===Pt?Xt.call(m,rt?"html":"body")[0]:rt?m.documentElement:nt},po=function(p){return X.call(p.ownerDocument||p,p,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT,null)},hh=function(p){return p instanceof f&&(typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||!(p.attributes instanceof u)||typeof p.removeAttribute!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function")},go=function(p){return typeof a=="function"&&p instanceof a},qt=function(p,m,w){j[p]&&Si(j[p],U=>{U.call(e,m,w,ke)})},mo=function(p){let m=null;if(qt("beforeSanitizeElements",p,null),hh(p))return ae(p),!0;const w=et(p.nodeName);if(qt("uponSanitizeElement",p,{tagName:w,allowedTags:b}),p.hasChildNodes()&&!go(p.firstElementChild)&&_t(/<[/\w]/g,p.innerHTML)&&_t(/<[/\w]/g,p.textContent))return ae(p),!0;if(!b[w]||K[w]){if(!K[w]&&yo(w)&&(N.tagNameCheck instanceof RegExp&&_t(N.tagNameCheck,w)||N.tagNameCheck instanceof Function&&N.tagNameCheck(w)))return!1;if(Er&&!Te[w]){const U=T(p)||p.parentNode,nt=P(p)||p.childNodes;if(nt&&U){const ot=nt.length;for(let ft=ot-1;ft>=0;--ft)U.insertBefore(k(nt[ft],!0),S(p))}}return ae(p),!0}return p instanceof l&&!lh(p)||(w==="noscript"||w==="noembed"||w==="noframes")&&_t(/<\/no(script|embed|frames)/i,p.innerHTML)?(ae(p),!0):(Z&&p.nodeType===3&&(m=p.textContent,Si([z,vt,Zt],U=>{m=je(m,U," ")}),p.textContent!==m&&(He(e.removed,{element:p.cloneNode()}),p.textContent=m)),qt("afterSanitizeElements",p,null),!1)},_o=function(p,m,w){if(ro&&(m==="id"||m==="name")&&(w in i||w in sh))return!1;if(!(kt&&!it[m]&&_t(M,m))){if(!(Nt&&_t(v,m))){if(!I[m]||it[m]){if(!(yo(p)&&(N.tagNameCheck instanceof RegExp&&_t(N.tagNameCheck,p)||N.tagNameCheck instanceof Function&&N.tagNameCheck(p))&&(N.attributeNameCheck instanceof RegExp&&_t(N.attributeNameCheck,m)||N.attributeNameCheck instanceof Function&&N.attributeNameCheck(m))||m==="is"&&N.allowCustomizedBuiltInElements&&(N.tagNameCheck instanceof RegExp&&_t(N.tagNameCheck,w)||N.tagNameCheck instanceof Function&&N.tagNameCheck(w))))return!1}else if(!Or[m]){if(!_t(x,je(w,B,""))){if(!((m==="src"||m==="xlink:href"||m==="href")&&p!=="script"&&td(w,"data:")===0&&so[p])){if(!(Jt&&!_t(y,je(w,B,"")))){if(w)return!1}}}}}}return!0},yo=function(p){return p.indexOf("-")>0},Co=function(p){qt("beforeSanitizeAttributes",p,null);const{attributes:m}=p;if(!m)return;const w={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:I};let U=m.length;for(;U--;){const nt=m[U],{name:ot,namespaceURI:ft,value:le}=nt,ze=et(ot);let dt=ot==="value"?le:ed(le);if(w.attrName=ze,w.attrValue=dt,w.keepAttr=!0,w.forceKeepAttr=void 0,qt("uponSanitizeAttribute",p,w),dt=w.attrValue,w.forceKeepAttr||(Nr(ot,p),!w.keepAttr))continue;if(!Lt&&_t(/\/>/i,dt)){Nr(ot,p);continue}Z&&Si([z,vt,Zt],bo=>{dt=je(dt,bo," ")});const xo=et(p.nodeName);if(_o(xo,ze,dt)){if(no&&(ze==="id"||ze==="name")&&(Nr(ot,p),dt=ih+dt),q&&typeof d=="object"&&typeof d.getAttributeType=="function"&&!ft)switch(d.getAttributeType(xo,ze)){case"TrustedHTML":{dt=q.createHTML(dt);break}case"TrustedScriptURL":{dt=q.createScriptURL(dt);break}}try{ft?p.setAttributeNS(ft,ot,dt):p.setAttribute(ot,dt),Uo(e.removed)}catch{}}}qt("afterSanitizeAttributes",p,null)},ch=function A(p){let m=null;const w=po(p);for(qt("beforeSanitizeShadowDOM",p,null);m=w.nextNode();)qt("uponSanitizeShadowNode",m,null),!mo(m)&&(m.content instanceof o&&A(m.content),Co(m));qt("afterSanitizeShadowDOM",p,null)};return e.sanitize=function(A){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},m=null,w=null,U=null,nt=null;if(Mr=!A,Mr&&(A=""),typeof A!="string"&&!go(A))if(typeof A.toString=="function"){if(A=A.toString(),typeof A!="string")throw Ue("dirty is not a string, aborting")}else throw Ue("toString is not a function");if(!e.isSupported)return A;if(Rt||Ir(p),e.removed=[],typeof A=="string"&&(qe=!1),qe){if(A.nodeName){const le=et(A.nodeName);if(!b[le]||K[le])throw Ue("root node is forbidden and cannot be sanitized in-place")}}else if(A instanceof a)m=fo(""),w=m.ownerDocument.importNode(A,!0),w.nodeType===1&&w.nodeName==="BODY"||w.nodeName==="HTML"?m=w:m.appendChild(w);else{if(!xe&&!Z&&!rt&&A.indexOf("<")===-1)return q&&yi?q.createHTML(A):A;if(m=fo(A),!m)return xe?null:yi?H:""}m&&Qt&&ae(m.firstChild);const ot=po(qe?A:m);for(;U=ot.nextNode();)mo(U)||(U.content instanceof o&&ch(U.content),Co(U));if(qe)return A;if(xe){if(_i)for(nt=W.call(m.ownerDocument);m.firstChild;)nt.appendChild(m.firstChild);else nt=m;return(I.shadowroot||I.shadowrootmode)&&(nt=Kt.call(r,nt,!0)),nt}let ft=rt?m.outerHTML:m.innerHTML;return rt&&b["!doctype"]&&m.ownerDocument&&m.ownerDocument.doctype&&m.ownerDocument.doctype.name&&_t(ka,m.ownerDocument.doctype.name)&&(ft=" -`+ft),Z&&Si([z,vt,Zt],le=>{ft=je(ft,le," ")}),q&&yi?q.createHTML(ft):ft},e.setConfig=function(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ir(A),Rt=!0},e.clearConfig=function(){ke=null,Rt=!1},e.isValidAttribute=function(A,p,m){ke||Ir({});const w=et(A),U=et(p);return _o(w,U,m)},e.addHook=function(A,p){typeof p=="function"&&(j[A]=j[A]||[],He(j[A],p))},e.removeHook=function(A){if(j[A])return Uo(j[A])},e.removeHooks=function(A){j[A]&&(j[A]=[])},e.removeAllHooks=function(){j={}},e}var Ji=Sa();const Di={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,i)=>(i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+(e-t)*6*i:i<1/2?e:i<2/3?t+(e-t)*(2/3-i)*6:t),hsl2rgb:({h:t,s:e,l:i},r)=>{if(!e)return i*2.55;t/=360,e/=100,i/=100;const n=i<.5?i*(1+e):i+e-i*e,o=2*i-n;switch(r){case"r":return Di.hue2rgb(o,n,t+1/3)*255;case"g":return Di.hue2rgb(o,n,t)*255;case"b":return Di.hue2rgb(o,n,t-1/3)*255}},rgb2hsl:({r:t,g:e,b:i},r)=>{t/=255,e/=255,i/=255;const n=Math.max(t,e,i),o=Math.min(t,e,i),s=(n+o)/2;if(r==="l")return s*100;if(n===o)return 0;const a=n-o,l=s>.5?a/(2-n-o):a/(n+o);if(r==="s")return l*100;switch(n){case t:return((e-i)/a+(ee>i?Math.min(e,Math.max(i,t)):Math.min(i,Math.max(e,t)),round:t=>Math.round(t*1e10)/1e10},md=gd,_d={dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}},yd=_d,Cd={channel:pd,lang:md,unit:yd},$=Cd,te={};for(let t=0;t<=255;t++)te[t]=$.unit.dec2hex(t);const st={ALL:0,RGB:1,HSL:2};class xd{constructor(){this.type=st.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=st.ALL}is(e){return this.type===e}}const bd=xd;class Td{constructor(e,i){this.color=i,this.changed=!1,this.data=e,this.type=new bd}set(e,i){return this.color=i,this.changed=!1,this.data=e,this.type.type=st.ALL,this}_ensureHSL(){const e=this.data,{h:i,s:r,l:n}=e;i===void 0&&(e.h=$.channel.rgb2hsl(e,"h")),r===void 0&&(e.s=$.channel.rgb2hsl(e,"s")),n===void 0&&(e.l=$.channel.rgb2hsl(e,"l"))}_ensureRGB(){const e=this.data,{r:i,g:r,b:n}=e;i===void 0&&(e.r=$.channel.hsl2rgb(e,"r")),r===void 0&&(e.g=$.channel.hsl2rgb(e,"g")),n===void 0&&(e.b=$.channel.hsl2rgb(e,"b"))}get r(){const e=this.data,i=e.r;return!this.type.is(st.HSL)&&i!==void 0?i:(this._ensureHSL(),$.channel.hsl2rgb(e,"r"))}get g(){const e=this.data,i=e.g;return!this.type.is(st.HSL)&&i!==void 0?i:(this._ensureHSL(),$.channel.hsl2rgb(e,"g"))}get b(){const e=this.data,i=e.b;return!this.type.is(st.HSL)&&i!==void 0?i:(this._ensureHSL(),$.channel.hsl2rgb(e,"b"))}get h(){const e=this.data,i=e.h;return!this.type.is(st.RGB)&&i!==void 0?i:(this._ensureRGB(),$.channel.rgb2hsl(e,"h"))}get s(){const e=this.data,i=e.s;return!this.type.is(st.RGB)&&i!==void 0?i:(this._ensureRGB(),$.channel.rgb2hsl(e,"s"))}get l(){const e=this.data,i=e.l;return!this.type.is(st.RGB)&&i!==void 0?i:(this._ensureRGB(),$.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(st.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(st.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(st.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(st.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(st.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(st.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}}const vd=Td,kd=new vd({r:0,g:0,b:0,a:0},"transparent"),_r=kd,wa={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(t.charCodeAt(0)!==35)return;const e=t.match(wa.re);if(!e)return;const i=e[1],r=parseInt(i,16),n=i.length,o=n%4===0,s=n>4,a=s?1:17,l=s?8:4,h=o?0:-1,u=s?255:15;return _r.set({r:(r>>l*(h+3)&u)*a,g:(r>>l*(h+2)&u)*a,b:(r>>l*(h+1)&u)*a,a:o?(r&u)*a/255:1},t)},stringify:t=>{const{r:e,g:i,b:r,a:n}=t;return n<1?`#${te[Math.round(e)]}${te[Math.round(i)]}${te[Math.round(r)]}${te[Math.round(n*255)]}`:`#${te[Math.round(e)]}${te[Math.round(i)]}${te[Math.round(r)]}`}},Ke=wa,Ni={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(Ni.hueRe);if(e){const[,i,r]=e;switch(r){case"grad":return $.channel.clamp.h(parseFloat(i)*.9);case"rad":return $.channel.clamp.h(parseFloat(i)*180/Math.PI);case"turn":return $.channel.clamp.h(parseFloat(i)*360)}}return $.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(e!==104&&e!==72)return;const i=t.match(Ni.re);if(!i)return;const[,r,n,o,s,a]=i;return _r.set({h:Ni._hue2deg(r),s:$.channel.clamp.s(parseFloat(n)),l:$.channel.clamp.l(parseFloat(o)),a:s?$.channel.clamp.a(a?parseFloat(s)/100:parseFloat(s)):1},t)},stringify:t=>{const{h:e,s:i,l:r,a:n}=t;return n<1?`hsla(${$.lang.round(e)}, ${$.lang.round(i)}%, ${$.lang.round(r)}%, ${n})`:`hsl(${$.lang.round(e)}, ${$.lang.round(i)}%, ${$.lang.round(r)}%)`}},Ai=Ni,Ri={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=Ri.colors[t];if(e)return Ke.parse(e)},stringify:t=>{const e=Ke.stringify(t);for(const i in Ri.colors)if(Ri.colors[i]===e)return i}},Zo=Ri,Ba={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(e!==114&&e!==82)return;const i=t.match(Ba.re);if(!i)return;const[,r,n,o,s,a,l,h,u]=i;return _r.set({r:$.channel.clamp.r(n?parseFloat(r)*2.55:parseFloat(r)),g:$.channel.clamp.g(s?parseFloat(o)*2.55:parseFloat(o)),b:$.channel.clamp.b(l?parseFloat(a)*2.55:parseFloat(a)),a:h?$.channel.clamp.a(u?parseFloat(h)/100:parseFloat(h)):1},t)},stringify:t=>{const{r:e,g:i,b:r,a:n}=t;return n<1?`rgba(${$.lang.round(e)}, ${$.lang.round(i)}, ${$.lang.round(r)}, ${$.lang.round(n)})`:`rgb(${$.lang.round(e)}, ${$.lang.round(i)}, ${$.lang.round(r)})`}},Fi=Ba,Sd={format:{keyword:Zo,hex:Ke,rgb:Fi,rgba:Fi,hsl:Ai,hsla:Ai},parse:t=>{if(typeof t!="string")return t;const e=Ke.parse(t)||Fi.parse(t)||Ai.parse(t)||Zo.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(st.HSL)||t.data.r===void 0?Ai.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?Fi.stringify(t):Ke.stringify(t)},Mt=Sd,wd=(t,e)=>{const i=Mt.parse(t);for(const r in e)i[r]=$.channel.clamp[r](e[r]);return Mt.stringify(i)},Aa=wd,Bd=(t,e,i=0,r=1)=>{if(typeof t!="number")return Aa(t,{a:e});const n=_r.set({r:$.channel.clamp.r(t),g:$.channel.clamp.g(e),b:$.channel.clamp.b(i),a:$.channel.clamp.a(r)});return Mt.stringify(n)},Ze=Bd,Ad=t=>{const{r:e,g:i,b:r}=Mt.parse(t),n=.2126*$.channel.toLinear(e)+.7152*$.channel.toLinear(i)+.0722*$.channel.toLinear(r);return $.lang.round(n)},Fd=Ad,Ld=t=>Fd(t)>=.5,Ed=Ld,Od=t=>!Ed(t),pi=Od,Md=(t,e,i)=>{const r=Mt.parse(t),n=r[e],o=$.channel.clamp[e](n+i);return n!==o&&(r[e]=o),Mt.stringify(r)},Fa=Md,$d=(t,e)=>Fa(t,"l",e),F=$d,Id=(t,e)=>Fa(t,"l",-e),O=Id,Dd=(t,e)=>{const i=Mt.parse(t),r={};for(const n in e)e[n]&&(r[n]=i[n]+e[n]);return Aa(t,r)},g=Dd,Nd=(t,e,i=50)=>{const{r,g:n,b:o,a:s}=Mt.parse(t),{r:a,g:l,b:h,a:u}=Mt.parse(e),f=i/100,c=f*2-1,d=s-u,k=((c*d===-1?c:(c+d)/(1+c*d))+1)/2,S=1-k,P=r*k+a*S,T=n*k+l*S,q=o*k+h*S,H=s*f+u*(1-f);return Ze(P,T,q,H)},Rd=Nd,Pd=(t,e=100)=>{const i=Mt.parse(t);return i.r=255-i.r,i.g=255-i.g,i.b=255-i.b,Rd(i,t,e)},C=Pd;var qd=typeof global=="object"&&global&&global.Object===Object&&global;const La=qd;var zd=typeof self=="object"&&self&&self.Object===Object&&self,Wd=La||zd||Function("return this")();const Dt=Wd;var Hd=Dt.Symbol;const Qi=Hd;var Ea=Object.prototype,jd=Ea.hasOwnProperty,Ud=Ea.toString,Ye=Qi?Qi.toStringTag:void 0;function Yd(t){var e=jd.call(t,Ye),i=t[Ye];try{t[Ye]=void 0;var r=!0}catch{}var n=Ud.call(t);return r&&(e?t[Ye]=i:delete t[Ye]),n}var Vd=Object.prototype,Gd=Vd.toString;function Xd(t){return Gd.call(t)}var Kd="[object Null]",Zd="[object Undefined]",Jo=Qi?Qi.toStringTag:void 0;function Ne(t){return t==null?t===void 0?Zd:Kd:Jo&&Jo in Object(t)?Yd(t):Xd(t)}function _e(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Jd="[object AsyncFunction]",Qd="[object Function]",tp="[object GeneratorFunction]",ep="[object Proxy]";function In(t){if(!_e(t))return!1;var e=Ne(t);return e==Qd||e==tp||e==Jd||e==ep}var ip=Dt["__core-js_shared__"];const Yr=ip;var Qo=function(){var t=/[^.]+$/.exec(Yr&&Yr.keys&&Yr.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function rp(t){return!!Qo&&Qo in t}var np=Function.prototype,op=np.toString;function ye(t){if(t!=null){try{return op.call(t)}catch{}try{return t+""}catch{}}return""}var sp=/[\\^$.*+?()[\]{}|]/g,ap=/^\[object .+?Constructor\]$/,lp=Function.prototype,hp=Object.prototype,cp=lp.toString,up=hp.hasOwnProperty,fp=RegExp("^"+cp.call(up).replace(sp,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function dp(t){if(!_e(t)||rp(t))return!1;var e=In(t)?fp:ap;return e.test(ye(t))}function pp(t,e){return t==null?void 0:t[e]}function Ce(t,e){var i=pp(t,e);return dp(i)?i:void 0}var gp=Ce(Object,"create");const si=gp;function mp(){this.__data__=si?si(null):{},this.size=0}function _p(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var yp="__lodash_hash_undefined__",Cp=Object.prototype,xp=Cp.hasOwnProperty;function bp(t){var e=this.__data__;if(si){var i=e[t];return i===yp?void 0:i}return xp.call(e,t)?e[t]:void 0}var Tp=Object.prototype,vp=Tp.hasOwnProperty;function kp(t){var e=this.__data__;return si?e[t]!==void 0:vp.call(e,t)}var Sp="__lodash_hash_undefined__";function wp(t,e){var i=this.__data__;return this.size+=this.has(t)?0:1,i[t]=si&&e===void 0?Sp:e,this}function ge(t){var e=-1,i=t==null?0:t.length;for(this.clear();++e-1}function Mp(t,e){var i=this.__data__,r=Cr(i,t);return r<0?(++this.size,i.push([t,e])):i[r][1]=e,this}function Gt(t){var e=-1,i=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=pg}function Tr(t){return t!=null&&Da(t.length)&&!In(t)}function gg(t){return mi(t)&&Tr(t)}function mg(){return!1}var Na=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ss=Na&&typeof module=="object"&&module&&!module.nodeType&&module,_g=ss&&ss.exports===Na,as=_g?Dt.Buffer:void 0,yg=as?as.isBuffer:void 0,Cg=yg||mg;const Nn=Cg;var xg="[object Object]",bg=Function.prototype,Tg=Object.prototype,Ra=bg.toString,vg=Tg.hasOwnProperty,kg=Ra.call(Object);function Sg(t){if(!mi(t)||Ne(t)!=xg)return!1;var e=$a(t);if(e===null)return!0;var i=vg.call(e,"constructor")&&e.constructor;return typeof i=="function"&&i instanceof i&&Ra.call(i)==kg}var wg="[object Arguments]",Bg="[object Array]",Ag="[object Boolean]",Fg="[object Date]",Lg="[object Error]",Eg="[object Function]",Og="[object Map]",Mg="[object Number]",$g="[object Object]",Ig="[object RegExp]",Dg="[object Set]",Ng="[object String]",Rg="[object WeakMap]",Pg="[object ArrayBuffer]",qg="[object DataView]",zg="[object Float32Array]",Wg="[object Float64Array]",Hg="[object Int8Array]",jg="[object Int16Array]",Ug="[object Int32Array]",Yg="[object Uint8Array]",Vg="[object Uint8ClampedArray]",Gg="[object Uint16Array]",Xg="[object Uint32Array]",V={};V[zg]=V[Wg]=V[Hg]=V[jg]=V[Ug]=V[Yg]=V[Vg]=V[Gg]=V[Xg]=!0;V[wg]=V[Bg]=V[Pg]=V[Ag]=V[qg]=V[Fg]=V[Lg]=V[Eg]=V[Og]=V[Mg]=V[$g]=V[Ig]=V[Dg]=V[Ng]=V[Rg]=!1;function Kg(t){return mi(t)&&Da(t.length)&&!!V[Ne(t)]}function Zg(t){return function(e){return t(e)}}var Pa=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Je=Pa&&typeof module=="object"&&module&&!module.nodeType&&module,Jg=Je&&Je.exports===Pa,Vr=Jg&&La.process,Qg=function(){try{var t=Je&&Je.require&&Je.require("util").types;return t||Vr&&Vr.binding&&Vr.binding("util")}catch{}}();const ls=Qg;var hs=ls&&ls.isTypedArray,tm=hs?Zg(hs):Kg;const Rn=tm;function un(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var em=Object.prototype,im=em.hasOwnProperty;function rm(t,e,i){var r=t[e];(!(im.call(t,e)&&yr(r,i))||i===void 0&&!(e in t))&&Dn(t,e,i)}function nm(t,e,i,r){var n=!i;i||(i={});for(var o=-1,s=e.length;++o-1&&t%1==0&&t0){if(++e>=Tm)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var wm=Sm(bm);const Bm=wm;function Am(t,e){return Bm(ym(t,e,Ha),t+"")}function Fm(t,e,i){if(!_e(i))return!1;var r=typeof e;return(r=="number"?Tr(i)&&qa(e,i.length):r=="string"&&e in i)?yr(i[e],t):!1}function Lm(t){return Am(function(e,i){var r=-1,n=i.length,o=n>1?i[n-1]:void 0,s=n>2?i[2]:void 0;for(o=t.length>3&&typeof o=="function"?(n--,o):void 0,s&&Fm(i[0],i[1],s)&&(o=n<3?void 0:o,n=1),e=Object(e);++r0?li(Pe,--Tt):0,Oe--,Q===10&&(Oe=1,vr--),Q}function wt(){return Q=Tt2||fn(Q)>3?"":" "}function jm(t,e){for(;--e&&wt()&&!(Q<48||Q>102||Q>57&&Q<65||Q>70&&Q<97););return kr(t,qi()+(e<6&&fe()==32&&wt()==32))}function dn(t){for(;wt();)switch(Q){case t:return Tt;case 34:case 39:t!==34&&t!==39&&dn(Q);break;case 40:t===41&&dn(t);break;case 92:wt();break}return Tt}function Um(t,e){for(;wt()&&t+Q!==57;)if(t+Q===84&&fe()===47)break;return"/*"+kr(e,Tt-1)+"*"+Pn(t===47?t:wt())}function Ym(t){for(;!fn(fe());)wt();return kr(t,Tt)}function Vm(t){return Wm(zi("",null,null,null,[""],t=zm(t),0,[0],t))}function zi(t,e,i,r,n,o,s,a,l){for(var h=0,u=0,f=s,c=0,d=0,_=0,k=1,S=1,P=1,T=0,q="",H=n,Y=o,X=r,W=q;S;)switch(_=T,T=wt()){case 40:if(_!=108&&li(W,f-1)==58){Nm(W+=Pi(Gr(T),"&","&\f"),"&\f")!=-1&&(P=-1);break}case 34:case 39:case 91:W+=Gr(T);break;case 9:case 10:case 13:case 32:W+=Hm(_);break;case 92:W+=jm(qi()-1,7);continue;case 47:switch(fe()){case 42:case 47:Li(Gm(Um(wt(),qi()),e,i,l),l);break;default:W+="/"}break;case 123*k:a[h++]=jt(W)*P;case 125*k:case 59:case 0:switch(T){case 0:case 125:S=0;case 59+u:P==-1&&(W=Pi(W,/\f/g,"")),d>0&&jt(W)-f&&Li(d>32?fs(W+";",r,i,f-1,l):fs(Pi(W," ","")+";",r,i,f-2,l),l);break;case 59:W+=";";default:if(Li(X=us(W,e,i,h,u,n,a,q,H=[],Y=[],f,o),o),T===123)if(u===0)zi(W,e,X,X,H,o,f,a,Y);else switch(c===99&&li(W,3)===110?100:c){case 100:case 108:case 109:case 115:zi(t,X,X,r&&Li(us(t,X,X,0,0,n,a,q,n,H=[],f,Y),Y),n,Y,f,a,r?H:Y);break;default:zi(W,X,X,X,[""],Y,0,a,Y)}}h=u=d=0,k=P=1,q=W="",f=s;break;case 58:f=1+jt(W),d=_;default:if(k<1){if(T==123)--k;else if(T==125&&k++==0&&qm()==125)continue}switch(W+=Pn(T),T*k){case 38:P=u>0?1:(W+="\f",-1);break;case 44:a[h++]=(jt(W)-1)*P,P=1;break;case 64:fe()===45&&(W+=Gr(wt())),c=fe(),u=f=jt(q=W+=Ym(qi())),T++;break;case 45:_===45&&jt(W)==2&&(k=0)}}return o}function us(t,e,i,r,n,o,s,a,l,h,u,f){for(var c=n-1,d=n===0?o:[""],_=Rm(d),k=0,S=0,P=0;k0?d[T]+" "+q:Pi(q,/&\f/g,d[T])))&&(l[P++]=H);return qn(t,e,i,n===0?Ua:a,l,h,u,f)}function Gm(t,e,i,r){return qn(t,e,i,ja,Pn(Pm()),hi(t,2,-2),0,r)}function fs(t,e,i,r,n){return qn(t,e,i,Ya,hi(t,0,r),hi(t,r+1,-1),r,n)}function pn(t,e){for(var i="",r=0;r{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},zn=function(t="fatal"){let e=Wt.fatal;typeof t=="string"?(t=t.toLowerCase(),t in Wt&&(e=Wt[t])):typeof t=="number"&&(e=t),E.trace=()=>{},E.debug=()=>{},E.info=()=>{},E.warn=()=>{},E.error=()=>{},E.fatal=()=>{},e<=Wt.fatal&&(E.fatal=console.error?console.error.bind(console,Ct("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Ct("FATAL"))),e<=Wt.error&&(E.error=console.error?console.error.bind(console,Ct("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Ct("ERROR"))),e<=Wt.warn&&(E.warn=console.warn?console.warn.bind(console,Ct("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Ct("WARN"))),e<=Wt.info&&(E.info=console.info?console.info.bind(console,Ct("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Ct("INFO"))),e<=Wt.debug&&(E.debug=console.debug?console.debug.bind(console,Ct("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Ct("DEBUG"))),e<=Wt.trace&&(E.trace=console.debug?console.debug.bind(console,Ct("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Ct("TRACE")))},Ct=t=>`%c${gh().format("ss.SSS")} : ${t} : `,Sr=//gi,m0=t=>t?Ka(t).replace(/\\n/g,"#br#").split("#br#"):[""],Xa=t=>Ji.sanitize(t),ys=(t,e)=>{var i;if(((i=e.flowchart)==null?void 0:i.htmlLabels)!==!1){const r=e.securityLevel;r==="antiscript"||r==="strict"?t=Xa(t):r!=="loose"&&(t=Ka(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=x0(t))}return t},ci=(t,e)=>t&&(e.dompurifyConfig?t=Ji.sanitize(ys(t,e),e.dompurifyConfig).toString():t=Ji.sanitize(ys(t,e),{FORBID_TAGS:["style"]}).toString(),t),_0=(t,e)=>typeof t=="string"?ci(t,e):t.flat().map(i=>ci(i,e)),y0=t=>Sr.test(t),C0=t=>t.split(Sr),x0=t=>t.replace(/#br#/g,"
                  "),Ka=t=>t.replace(Sr,"#br#"),b0=t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},Za=t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),T0=function(...t){const e=t.filter(i=>!isNaN(i));return Math.max(...e)},v0=function(...t){const e=t.filter(i=>!isNaN(i));return Math.min(...e)},a1=function(t){const e=t.split(/(,)/),i=[];for(let r=0;r0&&r+1Math.max(0,t.split(e).length-1),k0=(t,e)=>{const i=Cn(t,"~"),r=Cn(e,"~");return i===1&&r===1},S0=t=>{const e=Cn(t,"~");let i=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),i=!0);const r=[...t];let n=r.indexOf("~"),o=r.lastIndexOf("~");for(;n!==-1&&o!==-1&&n!==o;)r[n]="<",r[o]=">",n=r.indexOf("~"),o=r.lastIndexOf("~");return i&&r.unshift("~"),r.join("")},Wn={getRows:m0,sanitizeText:ci,sanitizeTextOrArray:_0,hasBreaks:y0,splitBreaks:C0,lineBreakRegex:Sr,removeScript:Xa,getUrl:b0,evaluate:Za,getMax:T0,getMin:v0},ct=(t,e)=>e?g(t,{s:-40,l:10}):g(t,{s:-40,l:-10}),wr="#ffffff",Br="#f2f2f2";let w0=class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||g(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||g(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ct(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ct(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||C(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||C(this.tertiaryColor),this.lineColor=this.lineColor||C(this.background),this.arrowheadColor=this.arrowheadColor||C(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?O(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||O(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||C(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||F(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330}),this.darkMode)for(let d=0;d{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const B0=t=>{const e=new w0;return e.calculate(t),e};let A0=class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=F(this.primaryColor,16),this.tertiaryColor=g(this.primaryColor,{h:-160}),this.primaryBorderColor=C(this.background),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.tertiaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=F(C("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=Ze(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=O("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=O(this.sectionBkgColor,10),this.taskBorderColor=Ze(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Ze(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.secondBkg=F(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=F(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=F(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=g(this.primaryColor,{h:64}),this.fillType3=g(this.secondaryColor,{h:64}),this.fillType4=g(this.primaryColor,{h:-64}),this.fillType5=g(this.secondaryColor,{h:-64}),this.fillType6=g(this.primaryColor,{h:128}),this.fillType7=g(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330});for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const F0=t=>{const e=new A0;return e.calculate(t),e};let L0=class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=g(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=g(this.primaryColor,{h:-160}),this.primaryBorderColor=ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.tertiaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=Ze(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||O(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||O(this.tertiaryColor,40);for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const E0=t=>{const e=new L0;return e.calculate(t),e};let O0=class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=F("#cde498",10),this.primaryBorderColor=ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.primaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.actorBorder=O(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||O(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||O(this.tertiaryColor,40);for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const M0=t=>{const e=new O0;return e.calculate(t),e};class $0{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=F(this.contrast,55),this.background="#ffffff",this.tertiaryColor=g(this.primaryColor,{h:-160}),this.primaryBorderColor=ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.tertiaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.secondBkg=F(this.contrast,55),this.border2=this.contrast,this.actorBorder=F(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}}const I0=t=>{const e=new $0;return e.calculate(t),e},Yt={base:{getThemeVariables:B0},dark:{getThemeVariables:F0},default:{getThemeVariables:E0},forest:{getThemeVariables:M0},neutral:{getThemeVariables:I0}},Ht={flowchart:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},theme:"default",maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,fontSize:16},Ja={...Ht,deterministicIDSeed:void 0,themeCSS:void 0,themeVariables:Yt.default.getThemeVariables(),sequence:{...Ht.sequence,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{...Ht.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Ht.c4,useWidth:void 0,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}}},pie:{...Ht.pie,useWidth:984},xyChart:{...Ht.xyChart,useWidth:void 0},requirement:{...Ht.requirement,useWidth:void 0},gitGraph:{...Ht.gitGraph,useMaxWidth:!1},sankey:{...Ht.sankey,useMaxWidth:!1}},Qa=(t,e="")=>Object.keys(t).reduce((i,r)=>Array.isArray(t[r])?i:typeof t[r]=="object"&&t[r]!==null?[...i,e+r,...Qa(t[r],"")]:[...i,e+r],[]),D0=new Set(Qa(Ja,"")),N0=Ja,rr=t=>{if(E.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>rr(e));return}for(const e of Object.keys(t)){if(E.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!D0.has(e)||t[e]==null){E.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){E.debug("sanitizing object",e),rr(t[e]);continue}const i=["themeCSS","fontFamily","altFontFamily"];for(const r of i)e.includes(r)&&(E.debug("sanitizing css option",e),t[e]=R0(t[e]))}if(t.themeVariables)for(const e of Object.keys(t.themeVariables)){const i=t.themeVariables[e];i!=null&&i.match&&!i.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}E.debug("After sanitization",t)}},R0=t=>{let e=0,i=0;for(const r of t){if(e{for(const{id:e,detector:i,loader:r}of t)rl(e,i,r)},rl=(t,e,i)=>{Me[t]?E.error(`Detector with key ${t} already exists`):Me[t]={detector:e,loader:i},E.debug(`Detector with key ${t} added${i?" with loader":""}`)},q0=t=>Me[t].loader,xn=(t,e,{depth:i=2,clobber:r=!1}={})=>{const n={depth:i,clobber:r};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(o=>xn(t,o,n)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(o=>{t.includes(o)||t.push(o)}),t):t===void 0||i<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(o=>{typeof e[o]=="object"&&(t[o]===void 0||typeof t[o]=="object")?(t[o]===void 0&&(t[o]=Array.isArray(e[o])?[]:{}),t[o]=xn(t[o],e[o],{depth:i-1,clobber:r})):(r||typeof t[o]!="object"&&typeof e[o]!="object")&&(t[o]=e[o])}),t)},at=xn,z0="​",W0={curveBasis:$f,curveBasisClosed:If,curveBasisOpen:Df,curveBumpX:Of,curveBumpY:Mf,curveBundle:Nf,curveCardinalClosed:Pf,curveCardinalOpen:qf,curveCardinal:Rf,curveCatmullRomClosed:Wf,curveCatmullRomOpen:Hf,curveCatmullRom:zf,curveLinear:Ef,curveLinearClosed:jf,curveMonotoneX:Uf,curveMonotoneY:Yf,curveNatural:Vf,curveStep:Gf,curveStepAfter:Kf,curveStepBefore:Xf},H0=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,j0=function(t,e){const i=nl(t,/(?:init\b)|(?:initialize\b)/);let r={};if(Array.isArray(i)){const s=i.map(a=>a.args);rr(s),r=at(r,[...s])}else r=i.args;if(!r)return;let n=Ar(t,e);const o="config";return r[o]!==void 0&&(n==="flowchart-v2"&&(n="flowchart"),r[n]=r[o],delete r[o]),r},nl=function(t,e=null){try{const i=new RegExp(`[%]{2}(?![{]${H0.source})(?=[}][%]{2}).* -`,"ig");t=t.trim().replace(i,"").replace(/'/gm,'"'),E.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let r;const n=[];for(;(r=Qe.exec(t))!==null;)if(r.index===Qe.lastIndex&&Qe.lastIndex++,r&&!e||e&&r[1]&&r[1].match(e)||e&&r[2]&&r[2].match(e)){const o=r[1]?r[1]:r[2],s=r[3]?r[3].trim():r[4]?JSON.parse(r[4].trim()):null;n.push({type:o,args:s})}return n.length===0?{type:t,args:null}:n.length===1?n[0]:n}catch(i){return E.error(`ERROR: ${i.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},U0=function(t){return t.replace(Qe,"")},Y0=function(t,e){for(const[i,r]of e.entries())if(r.match(t))return i;return-1};function V0(t,e){if(!t)return e;const i=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return W0[i]??e}function G0(t,e){const i=t.trim();if(i)return e.securityLevel!=="loose"?Is.sanitizeUrl(i):i}const X0=(t,...e)=>{const i=t.split("."),r=i.length-1,n=i[r];let o=window;for(let s=0;s{i+=ol(n,e),e=n});const r=i/2;return Hn(t,r)}function Z0(t){return t.length===1?t[0]:K0(t)}const Cs=(t,e=2)=>{const i=Math.pow(10,e);return Math.round(t*i)/i},Hn=(t,e)=>{let i,r=e;for(const n of t){if(i){const o=ol(n,i);if(o=1)return{x:n.x,y:n.y};if(s>0&&s<1)return{x:Cs((1-s)*i.x+s*n.x,5),y:Cs((1-s)*i.y+s*n.y,5)}}}i=n}throw new Error("Could not find a suitable point for the given distance")},J0=(t,e,i)=>{E.info(`our points ${JSON.stringify(e)}`),e[0]!==i&&(e=e.reverse());const n=Hn(e,25),o=t?10:5,s=Math.atan2(e[0].y-n.y,e[0].x-n.x),a={x:0,y:0};return a.x=Math.sin(s)*o+(e[0].x+n.x)/2,a.y=-Math.cos(s)*o+(e[0].y+n.y)/2,a};function Q0(t,e,i){const r=structuredClone(i);E.info("our points",r),e!=="start_left"&&e!=="start_right"&&r.reverse();const n=25+t,o=Hn(r,n),s=10+t*.5,a=Math.atan2(r[0].y-o.y,r[0].x-o.x),l={x:0,y:0};return e==="start_left"?(l.x=Math.sin(a+Math.PI)*s+(r[0].x+o.x)/2,l.y=-Math.cos(a+Math.PI)*s+(r[0].y+o.y)/2):e==="end_right"?(l.x=Math.sin(a-Math.PI)*s+(r[0].x+o.x)/2-5,l.y=-Math.cos(a-Math.PI)*s+(r[0].y+o.y)/2-5):e==="end_left"?(l.x=Math.sin(a)*s+(r[0].x+o.x)/2-5,l.y=-Math.cos(a)*s+(r[0].y+o.y)/2-5):(l.x=Math.sin(a)*s+(r[0].x+o.x)/2,l.y=-Math.cos(a)*s+(r[0].y+o.y)/2),l}function t_(t){let e="",i="";for(const r of t)r!==void 0&&(r.startsWith("color:")||r.startsWith("text-align:")?i=i+r+";":e=e+r+";");return{style:e,labelStyle:i}}let xs=0;const e_=()=>(xs++,"id-"+Math.random().toString(36).substr(2,12)+"-"+xs);function i_(t){let e="";const i="0123456789abcdef",r=i.length;for(let n=0;ni_(t.length),n_=function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},o_=function(t,e){const i=e.text.replace(Wn.lineBreakRegex," "),[,r]=Un(e.fontSize),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.style("text-anchor",e.anchor),n.style("font-family",e.fontFamily),n.style("font-size",r),n.style("font-weight",e.fontWeight),n.attr("fill",e.fill),e.class!==void 0&&n.attr("class",e.class);const o=n.append("tspan");return o.attr("x",e.x+e.textMargin*2),o.attr("fill",e.fill),o.text(i),n},s_=gi((t,e,i)=>{if(!t||(i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
                  "},i),Wn.lineBreakRegex.test(t)))return t;const r=t.split(" "),n=[];let o="";return r.forEach((s,a)=>{const l=nr(`${s} `,i),h=nr(o,i);if(l>e){const{hyphenatedStrings:c,remainingWord:d}=a_(s,e,"-",i);n.push(o,...c),o=d}else h+l>=e?(n.push(o),o=s):o=[o,s].filter(Boolean).join(" ");a+1===r.length&&n.push(o)}),n.filter(s=>s!=="").join(i.joinWith)},(t,e,i)=>`${t}${e}${i.fontSize}${i.fontWeight}${i.fontFamily}${i.joinWith}`),a_=gi((t,e,i="-",r)=>{r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},r);const n=[...t],o=[];let s="";return n.forEach((a,l)=>{const h=`${s}${a}`;if(nr(h,r)>=e){const f=l+1,c=n.length===f,d=`${h}${i}`;o.push(c?h:d),s=""}else s=h}),{hyphenatedStrings:o,remainingWord:s}},(t,e,i="-",r)=>`${t}${e}${i}${r.fontSize}${r.fontWeight}${r.fontFamily}`);function l_(t,e){return jn(t,e).height}function nr(t,e){return jn(t,e).width}const jn=gi((t,e)=>{const{fontSize:i=12,fontFamily:r="Arial",fontWeight:n=400}=e;if(!t)return{width:0,height:0};const[,o]=Un(i),s=["sans-serif",r],a=t.split(Wn.lineBreakRegex),l=[],h=xt("body");if(!h.remove)return{width:0,height:0,lineHeight:0};const u=h.append("svg");for(const c of s){let d=0;const _={width:0,height:0,lineHeight:0};for(const k of a){const S=n_();S.text=k||z0;const P=o_(u,S).style("font-size",o).style("font-weight",n).style("font-family",c),T=(P._groups||P)[0][0].getBBox();if(T.width===0&&T.height===0)throw new Error("svg element not in render tree");_.width=Math.round(Math.max(_.width,T.width)),d=Math.round(T.height),_.height+=d,_.lineHeight=Math.round(Math.max(_.lineHeight,d))}l.push(_)}u.remove();const f=isNaN(l[1].height)||isNaN(l[1].width)||isNaN(l[1].lineHeight)||l[0].height>l[1].height&&l[0].width>l[1].width&&l[0].lineHeight>l[1].lineHeight?0:1;return l[f]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`);class h_{constructor(e=!1,i){this.count=0,this.count=i?i.length:0,this.next=e?()=>this.count++:()=>Date.now()}}let Ei;const c_=function(t){return Ei=Ei||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),Ei.innerHTML=t,unescape(Ei.textContent)};function sl(t){return"str"in t}const u_=(t,e,i,r)=>{var n;if(!r)return;const o=(n=t.node())==null?void 0:n.getBBox();o&&t.append("text").text(r).attr("x",o.x+o.width/2).attr("y",-i).attr("class",e)},Un=t=>{if(typeof t=="number")return[t,t+"px"];const e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]};function al(t,e){return Om({},t,e)}const ti={assignWithDepth:at,wrapLabel:s_,calculateTextHeight:l_,calculateTextWidth:nr,calculateTextDimensions:jn,cleanAndMerge:al,detectInit:j0,detectDirective:nl,isSubstringInArray:Y0,interpolateToCurve:V0,calcLabelPosition:Z0,calcCardinalityPosition:J0,calcTerminalLabelPosition:Q0,formatUrl:G0,getStylesFromArray:t_,generateId:e_,random:r_,runFunc:X0,entityDecode:c_,insertTitle:u_,parseFontSize:Un,InitIDGenerator:h_},bs="10.6.1",$e=Object.freeze(N0);let pt=at({},$e),ll,Ie=[],ei=at({},$e);const Fr=(t,e)=>{let i=at({},t),r={};for(const n of e)ul(n),r=at(r,n);if(i=at(i,r),r.theme&&r.theme in Yt){const n=at({},ll),o=at(n.themeVariables||{},r.themeVariables);i.theme&&i.theme in Yt&&(i.themeVariables=Yt[i.theme].getThemeVariables(o))}return ei=i,fl(ei),ei},f_=t=>(pt=at({},$e),pt=at(pt,t),t.theme&&Yt[t.theme]&&(pt.themeVariables=Yt[t.theme].getThemeVariables(t.themeVariables)),Fr(pt,Ie),pt),d_=t=>{ll=at({},t)},p_=t=>(pt=at(pt,t),Fr(pt,Ie),pt),hl=()=>at({},pt),cl=t=>(fl(t),at(ei,t),$t()),$t=()=>at({},ei),ul=t=>{t&&(["secure",...pt.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(E.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&ul(t[e])}))},g_=t=>{rr(t),t.fontFamily&&(!t.themeVariables||!t.themeVariables.fontFamily)&&(t.themeVariables={fontFamily:t.fontFamily}),Ie.push(t),Fr(pt,Ie)},or=(t=pt)=>{Ie=[],Fr(t,Ie)},m_={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},Ts={},__=t=>{Ts[t]||(E.warn(m_[t]),Ts[t]=!0)},fl=t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&__("LAZY_LOAD_DEPRECATED")},dl="c4",y_=t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),C_=async()=>{const{diagram:t}=await J(()=>import("./c4Diagram-817c8e44-ubRVp6pW.js"),__vite__mapDeps([0,1,2]));return{id:dl,diagram:t}},x_={id:dl,detector:y_,loader:C_},b_=x_,pl="flowchart",T_=(t,e)=>{var i,r;return((i=e==null?void 0:e.flowchart)==null?void 0:i.defaultRenderer)==="dagre-wrapper"||((r=e==null?void 0:e.flowchart)==null?void 0:r.defaultRenderer)==="elk"?!1:/^\s*graph/.test(t)},v_=async()=>{const{diagram:t}=await J(()=>import("./flowDiagram-61eb444c-dTODa_2O.js"),__vite__mapDeps([3,4,5,6,7,8,9,10,11,12,2]));return{id:pl,diagram:t}},k_={id:pl,detector:T_,loader:v_},S_=k_,gl="flowchart-v2",w_=(t,e)=>{var i,r,n;return((i=e==null?void 0:e.flowchart)==null?void 0:i.defaultRenderer)==="dagre-d3"||((r=e==null?void 0:e.flowchart)==null?void 0:r.defaultRenderer)==="elk"?!1:/^\s*graph/.test(t)&&((n=e==null?void 0:e.flowchart)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)},B_=async()=>{const{diagram:t}=await J(()=>import("./flowDiagram-v2-2f8f667a-17CncbGG.js"),__vite__mapDeps([13,4,6,5,7,8,9,10,11,12,2]));return{id:gl,diagram:t}},A_={id:gl,detector:w_,loader:B_},F_=A_,ml="er",L_=t=>/^\s*erDiagram/.test(t),E_=async()=>{const{diagram:t}=await J(()=>import("./erDiagram-9cfc3649-xP3o3QeA.js"),__vite__mapDeps([14,5,10,11,12,2]));return{id:ml,diagram:t}},O_={id:ml,detector:L_,loader:E_},M_=O_,_l="gitGraph",$_=t=>/^\s*gitGraph/.test(t),I_=async()=>{const{diagram:t}=await J(()=>import("./gitGraphDiagram-6b463803-qYmaBvlu.js"),__vite__mapDeps([15,2]));return{id:_l,diagram:t}},D_={id:_l,detector:$_,loader:I_},N_=D_,yl="gantt",R_=t=>/^\s*gantt/.test(t),P_=async()=>{const{diagram:t}=await J(()=>import("./ganttDiagram-db6931fb-PbozmIQo.js"),__vite__mapDeps([16,17,18,2]));return{id:yl,diagram:t}},q_={id:yl,detector:R_,loader:P_},z_=q_,Cl="info",W_=t=>/^\s*info/.test(t),H_=async()=>{const{diagram:t}=await J(()=>import("./infoDiagram-a336098b-sHgg_VVf.js"),__vite__mapDeps([19,2]));return{id:Cl,diagram:t}},j_={id:Cl,detector:W_,loader:H_},xl="pie",U_=t=>/^\s*pie/.test(t),Y_=async()=>{const{diagram:t}=await J(()=>import("./pieDiagram-a5166659-2AuHdjea.js"),__vite__mapDeps([20,21,12,22,18,11,2]));return{id:xl,diagram:t}},V_={id:xl,detector:U_,loader:Y_},bl="quadrantChart",G_=t=>/^\s*quadrantChart/.test(t),X_=async()=>{const{diagram:t}=await J(()=>import("./quadrantDiagram-6c355bbc-AVZ0kdE9.js"),__vite__mapDeps([23,17,18,2]));return{id:bl,diagram:t}},K_={id:bl,detector:G_,loader:X_},Z_=K_,Tl="xychart",J_=t=>/^\s*xychart-beta/.test(t),Q_=async()=>{const{diagram:t}=await J(()=>import("./xychartDiagram-f746c04c-R7Y2pSYR.js"),__vite__mapDeps([24,9,18,22,17,10,11,12,2]));return{id:Tl,diagram:t}},ty={id:Tl,detector:J_,loader:Q_},ey=ty,vl="requirement",iy=t=>/^\s*requirement(Diagram)?/.test(t),ry=async()=>{const{diagram:t}=await J(()=>import("./requirementDiagram-4038b16c-zPwsi3At.js"),__vite__mapDeps([25,5,10,11,12,2]));return{id:vl,diagram:t}},ny={id:vl,detector:iy,loader:ry},oy=ny,kl="sequence",sy=t=>/^\s*sequenceDiagram/.test(t),ay=async()=>{const{diagram:t}=await J(()=>import("./sequenceDiagram-465a088a-EWh6aK27.js"),__vite__mapDeps([26,1,2]));return{id:kl,diagram:t}},ly={id:kl,detector:sy,loader:ay},hy=ly,Sl="class",cy=(t,e)=>{var i;return((i=e==null?void 0:e.class)==null?void 0:i.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t)},uy=async()=>{const{diagram:t}=await J(()=>import("./classDiagram-48ab76fb-VgeeOHT1.js"),__vite__mapDeps([27,28,5,10,11,12,2]));return{id:Sl,diagram:t}},fy={id:Sl,detector:cy,loader:uy},dy=fy,wl="classDiagram",py=(t,e)=>{var i;return/^\s*classDiagram/.test(t)&&((i=e==null?void 0:e.class)==null?void 0:i.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t)},gy=async()=>{const{diagram:t}=await J(()=>import("./classDiagram-v2-8ecb0bfc-bhA94s1K.js"),__vite__mapDeps([29,28,5,7,8,9,10,11,12,2]));return{id:wl,diagram:t}},my={id:wl,detector:py,loader:gy},_y=my,Bl="state",yy=(t,e)=>{var i;return((i=e==null?void 0:e.state)==null?void 0:i.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t)},Cy=async()=>{const{diagram:t}=await J(()=>import("./stateDiagram-b620d43f-RCXXee-i.js"),__vite__mapDeps([30,31,5,10,11,12,2]));return{id:Bl,diagram:t}},xy={id:Bl,detector:yy,loader:Cy},by=xy,Al="stateDiagram",Ty=(t,e)=>{var i;return!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&((i=e==null?void 0:e.state)==null?void 0:i.defaultRenderer)==="dagre-wrapper")},vy=async()=>{const{diagram:t}=await J(()=>import("./stateDiagram-v2-2671c3d1-YYOgeGqg.js"),__vite__mapDeps([32,31,5,7,8,9,10,11,12,2]));return{id:Al,diagram:t}},ky={id:Al,detector:Ty,loader:vy},Sy=ky,Fl="journey",wy=t=>/^\s*journey/.test(t),By=async()=>{const{diagram:t}=await J(()=>import("./journeyDiagram-deae3313-3VZnCGoi.js"),__vite__mapDeps([33,1,21,12,2]));return{id:Fl,diagram:t}},Ay={id:Fl,detector:wy,loader:By},Fy=Ay,Ly=function(t,e){for(let i of e)t.attr(i[0],i[1])},Ey=function(t,e,i){let r=new Map;return i?(r.set("width","100%"),r.set("style",`max-width: ${e}px;`)):(r.set("height",t),r.set("width",e)),r},Ll=function(t,e,i,r){const n=Ey(e,i,r);Ly(t,n)},Oy=function(t,e,i,r){const n=e.node().getBBox(),o=n.width,s=n.height;E.info(`SVG bounds: ${o}x${s}`,n);let a=0,l=0;E.info(`Graph bounds: ${a}x${l}`,t),a=o+i*2,l=s+i*2,E.info(`Calculated bounds: ${a}x${l}`),Ll(e,l,a,r);const h=`${n.x-i} ${n.y-i} ${n.width+2*i} ${n.height+2*i}`;e.attr("viewBox",h)},Wi={},My=(t,e,i)=>{let r="";return t in Wi&&Wi[t]?r=Wi[t](i):E.warn(`No theme found for ${t}`),` & { - font-family: ${i.fontFamily}; - font-size: ${i.fontSize}; - fill: ${i.textColor} - } - - /* Classes common for multiple diagrams */ - - & .error-icon { - fill: ${i.errorBkgColor}; - } - & .error-text { - fill: ${i.errorTextColor}; - stroke: ${i.errorTextColor}; - } - - & .edge-thickness-normal { - stroke-width: 2px; - } - & .edge-thickness-thick { - stroke-width: 3.5px - } - & .edge-pattern-solid { - stroke-dasharray: 0; - } - - & .edge-pattern-dashed{ - stroke-dasharray: 3; - } - .edge-pattern-dotted { - stroke-dasharray: 2; - } - - & .marker { - fill: ${i.lineColor}; - stroke: ${i.lineColor}; - } - & .marker.cross { - stroke: ${i.lineColor}; - } - - & svg { - font-family: ${i.fontFamily}; - font-size: ${i.fontSize}; - } - - ${r} - - ${e} -`},$y=(t,e)=>{e!==void 0&&(Wi[t]=e)},Iy=My;let Yn="",Vn="",Gn="";const Xn=t=>ci(t,$t()),Dy=()=>{Yn="",Gn="",Vn=""},Ny=t=>{Yn=Xn(t).replace(/^\s+/g,"")},Ry=()=>Yn,Py=t=>{Gn=Xn(t).replace(/\n\s+/g,` -`)},qy=()=>Gn,zy=t=>{Vn=Xn(t)},Wy=()=>Vn,Hy=Object.freeze(Object.defineProperty({__proto__:null,clear:Dy,getAccDescription:qy,getAccTitle:Ry,getDiagramTitle:Wy,setAccDescription:Py,setAccTitle:Ny,setDiagramTitle:zy},Symbol.toStringTag,{value:"Module"})),jy=E,Uy=zn,Kn=$t,f1=cl,d1=$e,Yy=t=>ci(t,Kn()),Vy=Oy,Gy=()=>Hy,sr={},ar=(t,e,i)=>{var r;if(sr[t])throw new Error(`Diagram ${t} already registered.`);sr[t]=e,i&&rl(t,i),$y(t,e.styles),(r=e.injectUtils)==null||r.call(e,jy,Uy,Kn,Yy,Vy,Gy(),()=>{})},Zn=t=>{if(t in sr)return sr[t];throw new Xy(t)};class Xy extends Error{constructor(e){super(`Diagram ${e} not found.`)}}const Ky=t=>{var e;const{securityLevel:i}=Kn();let r=xt("body");if(i==="sandbox"){const s=((e=xt(`#i${t}`).node())==null?void 0:e.contentDocument)??document;r=xt(s.body)}return r.select(`#${t}`)},Zy=(t,e,i)=>{E.debug(`renering svg for syntax error -`);const r=Ky(e);r.attr("viewBox","0 0 2412 512"),Ll(r,100,512,!0);const n=r.append("g");n.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),n.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),n.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),n.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),n.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),n.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),n.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),n.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${i}`)},El={draw:Zy},Jy=El,Qy={db:{},renderer:El,parser:{parser:{yy:{}},parse:()=>{}}},tC=Qy,Ol="flowchart-elk",eC=(t,e)=>{var i;return!!(/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&((i=e==null?void 0:e.flowchart)==null?void 0:i.defaultRenderer)==="elk")},iC=async()=>{const{diagram:t}=await J(()=>import("./flowchart-elk-definition-e097735e-FPGtu502.js"),__vite__mapDeps([34,4,8,9,10,11,12,2]));return{id:Ol,diagram:t}},rC={id:Ol,detector:eC,loader:iC},nC=rC,Ml="timeline",oC=t=>/^\s*timeline/.test(t),sC=async()=>{const{diagram:t}=await J(()=>import("./timeline-definition-732a2638-8ZtyCvMC.js"),__vite__mapDeps([35,21,12,2]));return{id:Ml,diagram:t}},aC={id:Ml,detector:oC,loader:sC},lC=aC,$l="mindmap",hC=t=>/^\s*mindmap/.test(t),cC=async()=>{const{diagram:t}=await J(()=>import("./mindmap-definition-617cf8dd-8E7JbjNQ.js"),__vite__mapDeps([36,9,2]));return{id:$l,diagram:t}},uC={id:$l,detector:hC,loader:cC},fC=uC,Il="sankey",dC=t=>/^\s*sankey-beta/.test(t),pC=async()=>{const{diagram:t}=await J(()=>import("./sankeyDiagram-6db3d513-9q2qHJD9.js"),__vite__mapDeps([37,22,18,2]));return{id:Il,diagram:t}},gC={id:Il,detector:dC,loader:pC},mC=gC;let vs=!1;const Jn=()=>{vs||(vs=!0,ar("error",tC,t=>t.toLowerCase().trim()==="error"),ar("---",{db:{clear:()=>{}},styles:{},renderer:{draw:()=>{}},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},t=>t.toLowerCase().trimStart().startsWith("---")),il(b_,_y,dy,M_,z_,j_,V_,oy,hy,nC,F_,S_,fC,lC,N_,Sy,by,Fy,Z_,mC,ey))};class Dl{constructor(e,i={}){this.text=e,this.metadata=i,this.type="graph",this.text+=` -`;const r=$t();try{this.type=Ar(e,r)}catch(o){this.type="error",this.detectError=o}const n=Zn(this.type);E.debug("Type "+this.type),this.db=n.db,this.renderer=n.renderer,this.parser=n.parser,this.parser.parser.yy=this.db,this.init=n.init,this.parse()}parse(){var e,i,r,n,o;if(this.detectError)throw this.detectError;(i=(e=this.db).clear)==null||i.call(e);const s=$t();(r=this.init)==null||r.call(this,s),this.metadata.title&&((o=(n=this.db).setDiagramTitle)==null||o.call(n,this.metadata.title)),this.parser.parse(this.text)}async render(e,i){await this.renderer.draw(this.text,e,i,this)}getParser(){return this.parser}getType(){return this.type}}const Qn=async(t,e={})=>{const i=Ar(t,$t());try{Zn(i)}catch{const n=q0(i);if(!n)throw new el(`Diagram ${i} not found.`);const{id:o,diagram:s}=await n();ar(o,s)}return new Dl(t,e)};let bn=[];const p1=t=>{bn.push(t)},_C=()=>{bn.forEach(t=>{t()}),bn=[]},yC="graphics-document document";function CC(t,e){t.attr("role",yC),e!==""&&t.attr("aria-roledescription",e)}function xC(t,e,i,r){if(t.insert!==void 0){if(i){const n=`chart-desc-${r}`;t.attr("aria-describedby",n),t.insert("desc",":first-child").attr("id",n).text(i)}if(e){const n=`chart-title-${r}`;t.attr("aria-labelledby",n),t.insert("title",":first-child").attr("id",n).text(e)}}}const bC=t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart();/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function Nl(t){return typeof t>"u"||t===null}function TC(t){return typeof t=="object"&&t!==null}function vC(t){return Array.isArray(t)?t:Nl(t)?[]:[t]}function kC(t,e){var i,r,n,o;if(e)for(o=Object.keys(e),i=0,r=o.length;ia&&(o=" ... ",e=r-a+o.length),i-r>a&&(s=" ...",i=r+a-s.length),{str:o+t.slice(e,i).replace(/\t/g,"→")+s,pos:r-e+o.length}}function Zr(t,e){return ht.repeat(" ",e-t.length)+t}function MC(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var i=/\r?\n|\r|\0/g,r=[0],n=[],o,s=-1;o=i.exec(t.buffer);)n.push(o.index),r.push(o.index+o[0].length),t.position<=o.index&&s<0&&(s=r.length-2);s<0&&(s=r.length-1);var a="",l,h,u=Math.min(t.line+e.linesAfter,n.length).toString().length,f=e.maxLength-(e.indent+u+3);for(l=1;l<=e.linesBefore&&!(s-l<0);l++)h=Kr(t.buffer,r[s-l],n[s-l],t.position-(r[s]-r[s-l]),f),a=ht.repeat(" ",e.indent)+Zr((t.line-l+1).toString(),u)+" | "+h.str+` -`+a;for(h=Kr(t.buffer,r[s],n[s],t.position,f),a+=ht.repeat(" ",e.indent)+Zr((t.line+1).toString(),u)+" | "+h.str+` -`,a+=ht.repeat("-",e.indent+u+3+h.pos)+`^ -`,l=1;l<=e.linesAfter&&!(s+l>=n.length);l++)h=Kr(t.buffer,r[s+l],n[s+l],t.position-(r[s]-r[s+l]),f),a+=ht.repeat(" ",e.indent)+Zr((t.line+l+1).toString(),u)+" | "+h.str+` -`;return a.replace(/\n$/,"")}var $C=MC,IC=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],DC=["scalar","sequence","mapping"];function NC(t){var e={};return t!==null&&Object.keys(t).forEach(function(i){t[i].forEach(function(r){e[String(r)]=i})}),e}function RC(t,e){if(e=e||{},Object.keys(e).forEach(function(i){if(IC.indexOf(i)===-1)throw new Ut('Unknown option "'+i+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(i){return i},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=NC(e.styleAliases||null),DC.indexOf(this.kind)===-1)throw new Ut('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var lt=RC;function ks(t,e){var i=[];return t[e].forEach(function(r){var n=i.length;i.forEach(function(o,s){o.tag===r.tag&&o.kind===r.kind&&o.multi===r.multi&&(n=s)}),i[n]=r}),i}function PC(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,i;function r(n){n.multi?(t.multi[n.kind].push(n),t.multi.fallback.push(n)):t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,i=arguments.length;e=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),sx=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ax(t){return!(t===null||!sx.test(t)||t[t.length-1]==="_")}function lx(t){var e,i;return e=t.replace(/_/g,"").toLowerCase(),i=e[0]==="-"?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?i===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:i*parseFloat(e,10)}var hx=/^[-+]?[0-9]+e/;function cx(t,e){var i;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(ht.isNegativeZero(t))return"-0.0";return i=t.toString(10),hx.test(i)?i.replace("e",".e"):i}function ux(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||ht.isNegativeZero(t))}var fx=new lt("tag:yaml.org,2002:float",{kind:"scalar",resolve:ax,construct:lx,predicate:ux,represent:cx,defaultStyle:"lowercase"}),Pl=jC.extend({implicit:[GC,JC,ox,fx]}),dx=Pl,ql=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),zl=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function px(t){return t===null?!1:ql.exec(t)!==null||zl.exec(t)!==null}function gx(t){var e,i,r,n,o,s,a,l=0,h=null,u,f,c;if(e=ql.exec(t),e===null&&(e=zl.exec(t)),e===null)throw new Error("Date resolve error");if(i=+e[1],r=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(i,r,n));if(o=+e[4],s=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],f=+(e[11]||0),h=(u*60+f)*6e4,e[9]==="-"&&(h=-h)),c=new Date(Date.UTC(i,r,n,o,s,a,l)),h&&c.setTime(c.getTime()-h),c}function mx(t){return t.toISOString()}var _x=new lt("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:px,construct:gx,instanceOf:Date,represent:mx});function yx(t){return t==="<<"||t===null}var Cx=new lt("tag:yaml.org,2002:merge",{kind:"scalar",resolve:yx}),to=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function xx(t){if(t===null)return!1;var e,i,r=0,n=t.length,o=to;for(i=0;i64)){if(e<0)return!1;r+=6}return r%8===0}function bx(t){var e,i,r=t.replace(/[\r\n=]/g,""),n=r.length,o=to,s=0,a=[];for(e=0;e>16&255),a.push(s>>8&255),a.push(s&255)),s=s<<6|o.indexOf(r.charAt(e));return i=n%4*6,i===0?(a.push(s>>16&255),a.push(s>>8&255),a.push(s&255)):i===18?(a.push(s>>10&255),a.push(s>>2&255)):i===12&&a.push(s>>4&255),new Uint8Array(a)}function Tx(t){var e="",i=0,r,n,o=t.length,s=to;for(r=0;r>18&63],e+=s[i>>12&63],e+=s[i>>6&63],e+=s[i&63]),i=(i<<8)+t[r];return n=o%3,n===0?(e+=s[i>>18&63],e+=s[i>>12&63],e+=s[i>>6&63],e+=s[i&63]):n===2?(e+=s[i>>10&63],e+=s[i>>4&63],e+=s[i<<2&63],e+=s[64]):n===1&&(e+=s[i>>2&63],e+=s[i<<4&63],e+=s[64],e+=s[64]),e}function vx(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}var kx=new lt("tag:yaml.org,2002:binary",{kind:"scalar",resolve:xx,construct:bx,predicate:vx,represent:Tx}),Sx=Object.prototype.hasOwnProperty,wx=Object.prototype.toString;function Bx(t){if(t===null)return!0;var e=[],i,r,n,o,s,a=t;for(i=0,r=a.length;i>10)+55296,(t-65536&1023)+56320)}var Yl=new Array(256),Vl=new Array(256);for(var we=0;we<256;we++)Yl[we]=Bs(we)?1:0,Vl[we]=Bs(we);function Vx(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||Rx,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Gl(t,e){var i={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return i.snippet=$C(i),new Ut(e,i)}function L(t,e){throw Gl(t,e)}function cr(t,e){t.onWarning&&t.onWarning.call(null,Gl(t,e))}var As={YAML:function(e,i,r){var n,o,s;e.version!==null&&L(e,"duplication of %YAML directive"),r.length!==1&&L(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),n===null&&L(e,"ill-formed argument of the YAML directive"),o=parseInt(n[1],10),s=parseInt(n[2],10),o!==1&&L(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&cr(e,"unsupported YAML version of the document")},TAG:function(e,i,r){var n,o;r.length!==2&&L(e,"TAG directive accepts exactly two arguments"),n=r[0],o=r[1],jl.test(n)||L(e,"ill-formed tag handle (first argument) of the TAG directive"),ne.call(e.tagMap,n)&&L(e,'there is a previously declared suffix for "'+n+'" tag handle'),Ul.test(o)||L(e,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch{L(e,"tag prefix is malformed: "+o)}e.tagMap[n]=o}};function ie(t,e,i,r){var n,o,s,a;if(e1&&(t.result+=ht.repeat(` -`,e-1))}function Gx(t,e,i){var r,n,o,s,a,l,h,u,f=t.kind,c=t.result,d;if(d=t.input.charCodeAt(t.position),mt(d)||Be(d)||d===35||d===38||d===42||d===33||d===124||d===62||d===39||d===34||d===37||d===64||d===96||(d===63||d===45)&&(n=t.input.charCodeAt(t.position+1),mt(n)||i&&Be(n)))return!1;for(t.kind="scalar",t.result="",o=s=t.position,a=!1;d!==0;){if(d===58){if(n=t.input.charCodeAt(t.position+1),mt(n)||i&&Be(n))break}else if(d===35){if(r=t.input.charCodeAt(t.position-1),mt(r))break}else{if(t.position===t.lineStart&&Lr(t)||i&&Be(d))break;if(Ot(d))if(l=t.line,h=t.lineStart,u=t.lineIndent,tt(t,!1,-1),t.lineIndent>=e){a=!0,d=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=l,t.lineStart=h,t.lineIndent=u;break}}a&&(ie(t,o,s,!1),io(t,t.line-l),o=s=t.position,a=!1),de(d)||(s=t.position+1),d=t.input.charCodeAt(++t.position)}return ie(t,o,s,!1),t.result?!0:(t.kind=f,t.result=c,!1)}function Xx(t,e){var i,r,n;if(i=t.input.charCodeAt(t.position),i!==39)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(i=t.input.charCodeAt(t.position))!==0;)if(i===39)if(ie(t,r,t.position,!0),i=t.input.charCodeAt(++t.position),i===39)r=t.position,t.position++,n=t.position;else return!0;else Ot(i)?(ie(t,r,n,!0),io(t,tt(t,!1,e)),r=n=t.position):t.position===t.lineStart&&Lr(t)?L(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);L(t,"unexpected end of the stream within a single quoted scalar")}function Kx(t,e){var i,r,n,o,s,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,i=r=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return ie(t,i,t.position,!0),t.position++,!0;if(a===92){if(ie(t,i,t.position,!0),a=t.input.charCodeAt(++t.position),Ot(a))tt(t,!1,e);else if(a<256&&Yl[a])t.result+=Vl[a],t.position++;else if((s=jx(a))>0){for(n=s,o=0;n>0;n--)a=t.input.charCodeAt(++t.position),(s=Hx(a))>=0?o=(o<<4)+s:L(t,"expected hexadecimal character");t.result+=Yx(o),t.position++}else L(t,"unknown escape sequence");i=r=t.position}else Ot(a)?(ie(t,i,r,!0),io(t,tt(t,!1,e)),i=r=t.position):t.position===t.lineStart&&Lr(t)?L(t,"unexpected end of the document within a double quoted scalar"):(t.position++,r=t.position)}L(t,"unexpected end of the stream within a double quoted scalar")}function Zx(t,e){var i=!0,r,n,o,s=t.tag,a,l=t.anchor,h,u,f,c,d,_=Object.create(null),k,S,P,T;if(T=t.input.charCodeAt(t.position),T===91)u=93,d=!1,a=[];else if(T===123)u=125,d=!0,a={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=a),T=t.input.charCodeAt(++t.position);T!==0;){if(tt(t,!0,e),T=t.input.charCodeAt(t.position),T===u)return t.position++,t.tag=s,t.anchor=l,t.kind=d?"mapping":"sequence",t.result=a,!0;i?T===44&&L(t,"expected the node content, but found ','"):L(t,"missed comma between flow collection entries"),S=k=P=null,f=c=!1,T===63&&(h=t.input.charCodeAt(t.position+1),mt(h)&&(f=c=!0,t.position++,tt(t,!0,e))),r=t.line,n=t.lineStart,o=t.position,De(t,e,lr,!1,!0),S=t.tag,k=t.result,tt(t,!0,e),T=t.input.charCodeAt(t.position),(c||t.line===r)&&T===58&&(f=!0,T=t.input.charCodeAt(++t.position),tt(t,!0,e),De(t,e,lr,!1,!0),P=t.result),d?Ae(t,a,_,S,k,P,r,n,o):f?a.push(Ae(t,null,_,S,k,P,r,n,o)):a.push(k),tt(t,!0,e),T=t.input.charCodeAt(t.position),T===44?(i=!0,T=t.input.charCodeAt(++t.position)):i=!1}L(t,"unexpected end of the stream within a flow collection")}function Jx(t,e){var i,r,n=Jr,o=!1,s=!1,a=e,l=0,h=!1,u,f;if(f=t.input.charCodeAt(t.position),f===124)r=!1;else if(f===62)r=!0;else return!1;for(t.kind="scalar",t.result="";f!==0;)if(f=t.input.charCodeAt(++t.position),f===43||f===45)Jr===n?n=f===43?Ss:Px:L(t,"repeat of a chomping mode identifier");else if((u=Ux(f))>=0)u===0?L(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?L(t,"repeat of an indentation width identifier"):(a=e+u-1,s=!0);else break;if(de(f)){do f=t.input.charCodeAt(++t.position);while(de(f));if(f===35)do f=t.input.charCodeAt(++t.position);while(!Ot(f)&&f!==0)}for(;f!==0;){for(eo(t),t.lineIndent=0,f=t.input.charCodeAt(t.position);(!s||t.lineIndenta&&(a=t.lineIndent),Ot(f)){l++;continue}if(t.lineIndente)&&l!==0)L(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(S&&(s=t.line,a=t.lineStart,l=t.position),De(t,e,hr,!0,n)&&(S?_=t.result:k=t.result),S||(Ae(t,f,c,d,_,k,s,a,l),d=_=k=null),tt(t,!0,-1),T=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>e)&&T!==0)L(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),f=0,c=t.implicitTypes.length;f"),t.result!==null&&_.kind!==t.kind&&L(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+_.kind+'", not "'+t.kind+'"'),_.resolve(t.result,t.tag)?(t.result=_.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):L(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function rb(t){var e=t.position,i,r,n,o=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(tt(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(o=!0,s=t.input.charCodeAt(++t.position),i=t.position;s!==0&&!mt(s);)s=t.input.charCodeAt(++t.position);for(r=t.input.slice(i,t.position),n=[],r.length<1&&L(t,"directive name must not be less than one character in length");s!==0;){for(;de(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!Ot(s));break}if(Ot(s))break;for(i=t.position;s!==0&&!mt(s);)s=t.input.charCodeAt(++t.position);n.push(t.input.slice(i,t.position))}s!==0&&eo(t),ne.call(As,r)?As[r](t,r,n):cr(t,'unknown document directive "'+r+'"')}if(tt(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,tt(t,!0,-1)):o&&L(t,"directives end mark is expected"),De(t,t.lineIndent-1,hr,!1,!0),tt(t,!0,-1),t.checkLineBreaks&&zx.test(t.input.slice(e,t.position))&&cr(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Lr(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,tt(t,!0,-1));return}if(t.position"u"&&(i=e,e=null);var r=Xl(t,i);if(typeof e!="function")return r;for(var n=0,o=r.length;nt.replace(/\r\n?/g,` -`).replace(/<(\w+)([^>]*)>/g,(e,i,r)=>"<"+i+r.replace(/="([^"]*)"/g,"='$1'")+">"),db=t=>{const{text:e,metadata:i}=ub(t),{displayMode:r,title:n,config:o={}}=i;return r&&(o.gantt||(o.gantt={}),o.gantt.displayMode=r),{title:n,config:o,text:e}},pb=t=>{const e=ti.detectInit(t)??{},i=ti.detectDirective(t,"wrap");return Array.isArray(i)?e.wrap=i.some(({type:r})=>{}):(i==null?void 0:i.type)==="wrap"&&(e.wrap=!0),{text:U0(t),directive:e}};function gb(t){const e=fb(t),i=db(e),r=pb(i.text),n=al(i.config,r.directive);return t=bC(r.text),{code:t,title:i.title,config:n}}const mb=5e4,_b="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",yb="sandbox",Cb="loose",xb="http://www.w3.org/2000/svg",bb="http://www.w3.org/1999/xlink",Tb="http://www.w3.org/1999/xhtml",vb="100%",kb="100%",Sb="border:0;margin:0;",wb="margin:0",Bb="allow-top-navigation-by-user-activation allow-popups",Ab='The "iframe" tag is not supported by your browser.',Fb=["foreignobject"],Lb=["dominant-baseline"];function Kl(t){const e=gb(t);return or(),g_(e.config??{}),e}async function Eb(t,e){Jn(),t=Kl(t).code;try{await Qn(t)}catch(i){if(e!=null&&e.suppressErrors)return!1;throw i}return!0}const Ob=function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(i){return i.substring(0,i.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(i){return i.substring(0,i.length-1)}),e=e.replace(/#\w+;/g,function(i){const r=i.substring(1,i.length-1);return/^\+?\d+$/.test(r)?"fl°°"+r+"¶ß":"fl°"+r+"¶ß"}),e},Mb=function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},Es=(t,e,i=[])=>` -.${t} ${e} { ${i.join(" !important; ")} !important; }`,$b=(t,e={})=>{var i;let r="";if(t.themeCSS!==void 0&&(r+=` -${t.themeCSS}`),t.fontFamily!==void 0&&(r+=` -:root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(r+=` -:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),!Xr(e)){const a=t.htmlLabels||((i=t.flowchart)==null?void 0:i.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const l in e){const h=e[l];Xr(h.styles)||a.forEach(u=>{r+=Es(h.id,u,h.styles)}),Xr(h.textStyles)||(r+=Es(h.id,"tspan",h.textStyles))}}return r},Ib=(t,e,i,r)=>{const n=$b(t,i),o=Iy(e,n,t.themeVariables);return pn(Vm(`${r}{${o}}`),Xm)},Db=(t="",e,i)=>{let r=t;return!i&&!e&&(r=r.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),r=Mb(r),r=r.replace(/
                  /g,"
                  "),r},Nb=(t="",e)=>{var i,r;const n=(r=(i=e==null?void 0:e.viewBox)==null?void 0:i.baseVal)!=null&&r.height?e.viewBox.baseVal.height+"px":kb,o=btoa(''+t+"");return``},Os=(t,e,i,r,n)=>{const o=t.append("div");o.attr("id",i),r&&o.attr("style",r);const s=o.append("svg").attr("id",e).attr("width","100%").attr("xmlns",xb);return n&&s.attr("xmlns:xlink",n),s.append("g"),t};function Ms(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const Rb=(t,e,i,r)=>{var n,o,s;(n=t.getElementById(e))==null||n.remove(),(o=t.getElementById(i))==null||o.remove(),(s=t.getElementById(r))==null||s.remove()},Pb=async function(t,e,i){var r,n,o,s,a,l;Jn();const h=Kl(e);e=h.code;const u=$t();E.debug(u),e.length>((u==null?void 0:u.maxTextSize)??mb)&&(e=_b);const f="#"+t,c="i"+t,d="#"+c,_="d"+t,k="#"+_;let S=xt("body");const P=u.securityLevel===yb,T=u.securityLevel===Cb,q=u.fontFamily;if(i!==void 0){if(i&&(i.innerHTML=""),P){const b=Ms(xt(i),c);S=xt(b.nodes()[0].contentDocument.body),S.node().style.margin=0}else S=xt(i);Os(S,t,_,`font-family: ${q}`,bb)}else{if(Rb(document,t,_,c),P){const b=Ms(xt("body"),c);S=xt(b.nodes()[0].contentDocument.body),S.node().style.margin=0}else S=xt("body");Os(S,t,_)}e=Ob(e);let H,Y;try{H=await Qn(e,{title:h.title})}catch(b){H=new Dl("error"),Y=b}const X=S.select(k).node(),W=H.type,Xt=X.firstChild,Kt=Xt.firstChild,j=(n=(r=H.renderer).getClasses)==null?void 0:n.call(r,e,H),z=Ib(u,W,j,f),vt=document.createElement("style");vt.innerHTML=z,Xt.insertBefore(vt,Kt);try{await H.renderer.draw(e,t,bs,H)}catch(b){throw Jy.draw(e,t,bs),b}const Zt=S.select(`${k} svg`),M=(s=(o=H.db).getAccTitle)==null?void 0:s.call(o),v=(l=(a=H.db).getAccDescription)==null?void 0:l.call(a);zb(W,Zt,M,v),S.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",Tb);let y=S.select(k).node().innerHTML;if(E.debug("config.arrowMarkerAbsolute",u.arrowMarkerAbsolute),y=Db(y,P,Za(u.arrowMarkerAbsolute)),P){const b=S.select(k+" svg").node();y=Nb(y,b)}else T||(y=Ji.sanitize(y,{ADD_TAGS:Fb,ADD_ATTR:Lb}));if(_C(),Y)throw Y;const x=xt(P?d:k).node();return x&&"remove"in x&&x.remove(),{svg:y,bindFunctions:H.db.bindFunctions}};function qb(t={}){var e;t!=null&&t.fontFamily&&!((e=t.themeVariables)!=null&&e.fontFamily)&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),d_(t),t!=null&&t.theme&&t.theme in Yt?t.themeVariables=Yt[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=Yt.default.getThemeVariables(t.themeVariables));const i=typeof t=="object"?f_(t):hl();zn(i.logLevel),Jn()}function zb(t,e,i,r){CC(e,t),xC(e,i,r,e.attr("id"))}const me=Object.freeze({render:Pb,parse:Eb,getDiagramFromText:Qn,initialize:qb,getConfig:$t,setConfig:cl,getSiteConfig:hl,updateSiteConfig:p_,reset:()=>{or()},globalReset:()=>{or($e)},defaultConfig:$e});zn($t().logLevel);or($t());const Wb=async()=>{E.debug("Loading registered diagrams");const e=(await Promise.allSettled(Object.entries(Me).map(async([i,{detector:r,loader:n}])=>{if(n)try{Zn(i)}catch{try{const{diagram:s,id:a}=await n();ar(a,s,r)}catch(s){throw E.error(`Failed to load external diagram with key ${i}. Removing from detectors.`),delete Me[i],s}}}))).filter(i=>i.status==="rejected");if(e.length>0){E.error(`Failed to load ${e.length} external diagrams`);for(const i of e)E.error(i);throw new Error(`Failed to load ${e.length} external diagrams`)}},Hb=(t,e,i)=>{E.warn(t),sl(t)?(i&&i(t.str,t.hash),e.push({...t,message:t.str,error:t})):(i&&i(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},Zl=async function(t={querySelector:".mermaid"}){try{await jb(t)}catch(e){if(sl(e)&&E.error(e.str),At.parseError&&At.parseError(e),!t.suppressErrors)throw E.error("Use the suppressErrors option to suppress these errors"),e}},jb=async function({postRenderCallback:t,querySelector:e,nodes:i}={querySelector:".mermaid"}){const r=me.getConfig();E.debug(`${t?"":"No "}Callback function found`);let n;if(i)n=i;else if(e)n=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");E.debug(`Found ${n.length} diagrams`),(r==null?void 0:r.startOnLoad)!==void 0&&(E.debug("Start On Load: "+(r==null?void 0:r.startOnLoad)),me.updateSiteConfig({startOnLoad:r==null?void 0:r.startOnLoad}));const o=new ti.InitIDGenerator(r.deterministicIds,r.deterministicIDSeed);let s;const a=[];for(const l of Array.from(n)){E.info("Rendering diagram: "+l.id);/*! Check if previously processed */if(l.getAttribute("data-processed"))continue;l.setAttribute("data-processed","true");const h=`mermaid-${o.next()}`;s=l.innerHTML,s=uh(ti.entityDecode(s)).trim().replace(//gi,"
                  ");const u=ti.detectInit(s);u&&E.debug("Detected early reinit: ",u);try{const{svg:f,bindFunctions:c}=await eh(h,s,l);l.innerHTML=f,t&&await t(h),c&&c(l)}catch(f){Hb(f,a,At.parseError)}}if(a.length>0)throw a[0]},Jl=function(t){me.initialize(t)},Ub=async function(t,e,i){E.warn("mermaid.init is deprecated. Please use run instead."),t&&Jl(t);const r={postRenderCallback:i,querySelector:".mermaid"};typeof e=="string"?r.querySelector=e:e&&(e instanceof HTMLElement?r.nodes=[e]:r.nodes=e),await Zl(r)},Yb=async(t,{lazyLoad:e=!0}={})=>{il(...t),e===!1&&await Wb()},Ql=function(){if(At.startOnLoad){const{startOnLoad:t}=me.getConfig();t&&At.run().catch(e=>E.error("Mermaid failed to initialize",e))}};if(typeof document<"u"){/*! - * Wait for document loaded before starting the execution - */window.addEventListener("load",Ql,!1)}const Vb=function(t){At.parseError=t},ur=[];let Qr=!1;const th=async()=>{if(!Qr){for(Qr=!0;ur.length>0;){const t=ur.shift();if(t)try{await t()}catch(e){E.error("Error executing queue",e)}}Qr=!1}},Gb=async(t,e)=>new Promise((i,r)=>{const n=()=>new Promise((o,s)=>{me.parse(t,e).then(a=>{o(a),i(a)},a=>{var l;E.error("Error parsing",a),(l=At.parseError)==null||l.call(At,a),s(a),r(a)})});ur.push(n),th().catch(r)}),eh=(t,e,i)=>new Promise((r,n)=>{const o=()=>new Promise((s,a)=>{me.render(t,e,i).then(l=>{s(l),r(l)},l=>{var h;E.error("Error parsing",l),(h=At.parseError)==null||h.call(At,l),a(l),n(l)})});ur.push(o),th().catch(n)}),At={startOnLoad:!0,mermaidAPI:me,parse:Gb,render:eh,init:Ub,run:Zl,registerExternalDiagrams:Yb,initialize:Jl,parseError:void 0,contentLoaded:Ql,setParseErrorHandler:Vb,detectType:Ar},g1=Object.freeze(Object.defineProperty({__proto__:null,default:At},Symbol.toStringTag,{value:"Module"}));export{yr as $,mi as A,Ne as B,ir as C,_e as D,Tr as E,cm as F,t0 as G,gi as H,er as I,Bm as J,ym as K,nm as L,za as M,$a as N,eg as O,ig as P,u0 as Q,ls as R,Qi as S,Zg as T,rg as U,Nn as V,Qp as W,lg as X,Re as Y,rm as Z,oe as _,qy as a,$t as a$,rs as a0,Rn as a1,Da as a2,qa as a3,Ha as a4,Zp as a5,Dt as a6,Am as a7,Fm as a8,Dn as a9,Kb as aA,fh as aB,dh as aC,gh as aD,wn as aE,ee as aF,ni as aG,Oo as aH,du as aI,Ky as aJ,n1 as aK,N0 as aL,al as aM,Un as aN,Ln as aO,Qb as aP,i1 as aQ,Po as aR,Ro as aS,r1 as aT,e1 as aU,Zb as aV,Jb as aW,s1 as aX,o1 as aY,t1 as aZ,E0 as a_,_n as aa,gg as ab,Cm as ac,In as ad,Xr as ae,Om as af,yt as ag,Gs as ah,vh as ai,$ as aj,Mt as ak,Sg as al,Ze as am,Mb as an,$f as ao,uh as ap,f1 as aq,a1 as ar,Vy as as,r_ as at,Sn as au,Xs as av,gt as aw,di as ax,su as ay,Js as az,Py as b,p1 as b0,z0 as b1,e_ as b2,Hy as b3,pi as b4,F as b5,O as b6,g1 as b7,Kn as c,ci as d,at as e,nr as f,Ry as g,xt as h,Ll as i,Wn as j,l_ as k,E as l,Is as m,Sr as n,Ef as o,t_ as p,Za as q,V0 as r,Ny as s,Oy as t,d1 as u,zy as v,s_ as w,Wy as x,ti as y,Dy as z}; -function __vite__mapDeps(indexes) { - if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ["assets/c4Diagram-817c8e44-ubRVp6pW.js","assets/svgDrawCommon-ad5ef572-nvro2Kxm.js","assets/app-RP31lnfq.js","assets/flowDiagram-61eb444c-dTODa_2O.js","assets/flowDb-170db09d-pscdJplr.js","assets/layout-wEoclKsW.js","assets/styles-b966c4ae-SzUJ3e4L.js","assets/index-67a42d7d-B7ItSCR5.js","assets/edges-80f1ebb6-89E8mCFH.js","assets/createText-aebacdfe-CTBuskZ8.js","assets/line-EJoUorMM.js","assets/array-Nw74a44z.js","assets/path-aUcfwwLI.js","assets/flowDiagram-v2-2f8f667a-17CncbGG.js","assets/erDiagram-9cfc3649-xP3o3QeA.js","assets/gitGraphDiagram-6b463803-qYmaBvlu.js","assets/ganttDiagram-db6931fb-PbozmIQo.js","assets/linear-qWzY0BiT.js","assets/init-Hi12RPRh.js","assets/infoDiagram-a336098b-sHgg_VVf.js","assets/pieDiagram-a5166659-2AuHdjea.js","assets/arc-IaSnKFUc.js","assets/ordinal-wXG5obU4.js","assets/quadrantDiagram-6c355bbc-AVZ0kdE9.js","assets/xychartDiagram-f746c04c-R7Y2pSYR.js","assets/requirementDiagram-4038b16c-zPwsi3At.js","assets/sequenceDiagram-465a088a-EWh6aK27.js","assets/classDiagram-48ab76fb-VgeeOHT1.js","assets/styles-4ba6ed67-2KGnpqeU.js","assets/classDiagram-v2-8ecb0bfc-bhA94s1K.js","assets/stateDiagram-b620d43f-RCXXee-i.js","assets/styles-bbc3fe3b-It40AHsg.js","assets/stateDiagram-v2-2671c3d1-YYOgeGqg.js","assets/journeyDiagram-deae3313-3VZnCGoi.js","assets/flowchart-elk-definition-e097735e-FPGtu502.js","assets/timeline-definition-732a2638-8ZtyCvMC.js","assets/mindmap-definition-617cf8dd-8E7JbjNQ.js","assets/sankeyDiagram-6db3d513-9q2qHJD9.js"] - } - return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) -} \ No newline at end of file diff --git a/assets/mindmap-definition-617cf8dd-8E7JbjNQ.js b/assets/mindmap-definition-617cf8dd-vVbSb0k_.js similarity index 59% rename from assets/mindmap-definition-617cf8dd-8E7JbjNQ.js rename to assets/mindmap-definition-617cf8dd-vVbSb0k_.js index 1c139f5..cadb0f9 100644 --- a/assets/mindmap-definition-617cf8dd-8E7JbjNQ.js +++ b/assets/mindmap-definition-617cf8dd-vVbSb0k_.js @@ -1,75 +1,75 @@ -import{aB as Da,aC as Ul,d as xp,c as sn,l as qr,h as ni,t as Tp,b4 as Cp,b5 as Dp,b6 as Sp}from"./mermaid.core-ygY5oRaR.js";import{c as Lp}from"./createText-aebacdfe-CTBuskZ8.js";import"./app-RP31lnfq.js";var Yl={exports:{}};(function(be,he){(function(ee,ge){be.exports=ge()})(Da,function(){function ee(t){"@babel/helpers - typeof";return ee=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ee(t)}function ge(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function H(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,a=new Array(e);r"u"?null:window,$=D?D.navigator:null;D&&D.document;var _=ee(""),Q=ee({}),ae=ee(function(){}),le=typeof HTMLElement>"u"?"undefined":ee(HTMLElement),J=function(e){return e&&e.instanceString&&Y(e.instanceString)?e.instanceString():null},j=function(e){return e!=null&&ee(e)==_},Y=function(e){return e!=null&&ee(e)===ae},te=function(e){return!pe(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},L=function(e){return e!=null&&ee(e)===Q&&!te(e)&&e.constructor===Object},V=function(e){return e!=null&&ee(e)===Q},R=function(e){return e!=null&&ee(e)===ee(1)&&!isNaN(e)},q=function(e){return R(e)&&Math.floor(e)===e},ce=function(e){if(le!=="undefined")return e!=null&&e instanceof HTMLElement},pe=function(e){return Oe(e)||Me(e)},Oe=function(e){return J(e)==="collection"&&e._private.single},Me=function(e){return J(e)==="collection"&&!e._private.single},Ye=function(e){return J(e)==="core"},at=function(e){return J(e)==="stylesheet"},dt=function(e){return J(e)==="event"},ke=function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},Ve=function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},Ze=function(e){return L(e)&&R(e.x1)&&R(e.x2)&&R(e.y1)&&R(e.y2)},nt=function(e){return V(e)&&Y(e.then)},ht=function(){return $&&$.userAgent.match(/msie|trident|edge/i)},it=function(e,r){r||(r=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var i=[],s=0;sr?1:0},eu=function(e,r){return-1*ts(e,r)},He=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(p-=1),p<1/6?v+(y-v)*6*p:p<1/2?y:p<2/3?v+(y-v)*(2/3-p)*6:v}var h=new RegExp("^"+ln+"$").exec(e);if(h){if(a=parseInt(h[1]),a<0?a=(360- -1*a%360)%360:a>360&&(a=a%360),a/=360,n=parseFloat(h[2]),n<0||n>100||(n=n/100,i=parseFloat(h[3]),i<0||i>100)||(i=i/100,s=h[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(n===0)o=u=l=Math.round(i*255);else{var c=i<.5?i*(1+n):i+n-i*n,d=2*i-c;o=Math.round(255*f(d,c,a+1/3)),u=Math.round(255*f(d,c,a)),l=Math.round(255*f(d,c,a-1/3))}r=[o,u,l,s]}return r},au=function(e){var r,a=new RegExp("^"+dr+"$").exec(e);if(a){r=[];for(var n=[],i=1;i<=3;i++){var s=a[i];if(s[s.length-1]==="%"&&(n[i]=!0),s=parseFloat(s),n[i]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var o=n[1]||n[2]||n[3],u=n[1]&&n[2]&&n[3];if(o&&!u)return;var l=a[4];if(l!==void 0){if(l=parseFloat(l),l<0||l>1)return;r.push(l)}}return r},nu=function(e){return su[e.toLowerCase()]},iu=function(e){return(te(e)?e:null)||nu(e)||tu(e)||au(e)||ru(e)},su={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},rs=function(e){for(var r=e.map,a=e.keys,n=a.length,i=0;i=e||x<0||h&&k>=i}function g(){var A=ii();if(p(A))return m(A);o=setTimeout(g,y(A))}function m(A){return o=void 0,c&&a?d(A):(a=n=void 0,s)}function b(){o!==void 0&&clearTimeout(o),l=0,a=u=n=o=void 0}function E(){return o===void 0?s:m(ii())}function I(){var A=ii(),x=p(A);if(a=arguments,n=this,u=A,x){if(o===void 0)return v(u);if(h)return clearTimeout(o),o=setTimeout(g,e),d(u)}return o===void 0&&(o=setTimeout(g,e)),s}return I.cancel=b,I.flush=E,I}var fn=Yu,si=D?D.performance:null,us=si&&si.now?function(){return si.now()}:function(){return Date.now()},Hu=function(){if(D){if(D.requestAnimationFrame)return function(t){D.requestAnimationFrame(t)};if(D.mozRequestAnimationFrame)return function(t){D.mozRequestAnimationFrame(t)};if(D.webkitRequestAnimationFrame)return function(t){D.webkitRequestAnimationFrame(t)};if(D.msRequestAnimationFrame)return function(t){D.msRequestAnimationFrame(t)}}return function(t){t&&setTimeout(function(){t(us())},1e3/60)}}(),hn=function(e){return Hu(e)},gr=us,Jr=9261,fs=65599,Na=5381,hs=function(e){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Jr,a=r,n;n=e.next(),!n.done;)a=a*fs+n.value|0;return a},Ma=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Jr;return r*fs+e|0},Ia=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Na;return(r<<5)+r+e|0},Xu=function(e,r){return e*2097152+r},wr=function(e){return e[0]*2097152+e[1]},cn=function(e,r){return[Ma(e[0],r[0]),Ia(e[1],r[1])]},Wu=function(e,r){var a={value:0,done:!1},n=0,i=e.length,s={next:function(){return n=0&&!(e[n]===r&&(e.splice(n,1),a));n--);},ui=function(e){e.splice(0,e.length)},ef=function(e,r){for(var a=0;a"u"?"undefined":ee(Set))!==rf?Set:af,dn=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!Ye(e)){Tt("An element must have a core reference and parameters set");return}var n=r.group;if(n==null&&(r.data&&r.data.source!=null&&r.data.target!=null?n="edges":n="nodes"),n!=="nodes"&&n!=="edges"){Tt("An element must be of type `nodes` or `edges`; you specified `"+n+"`");return}this.length=1,this[0]=this;var i=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:n,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?n==="edges":!!r.pannable,active:!1,classes:new jr,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(i.position.x==null&&(i.position.x=0),i.position.y==null&&(i.position.y=0),r.renderedPosition){var s=r.renderedPosition,o=e.pan(),u=e.zoom();i.position={x:(s.x-o.x)/u,y:(s.y-o.y)/u}}var l=[];te(r.classes)?l=r.classes:j(r.classes)&&(l=r.classes.split(/\s+/));for(var f=0,h=l.length;fm?1:0},f=function(g,m,b,E,I){var A;if(b==null&&(b=0),I==null&&(I=a),b<0)throw new Error("lo must be non-negative");for(E==null&&(E=g.length);bB;0<=B?C++:C--)k.push(C);return k}).apply(this).reverse(),x=[],E=0,I=A.length;EG;0<=G?++k:--k)M.push(s(g,b));return M},y=function(g,m,b,E){var I,A,x;for(E==null&&(E=a),I=g[b];b>m;){if(x=b-1>>1,A=g[x],E(I,A)<0){g[b]=A,b=x;continue}break}return g[b]=I},p=function(g,m,b){var E,I,A,x,k;for(b==null&&(b=a),I=g.length,k=m,A=g[m],E=2*m+1;E0;){var A=m.pop(),x=p(A),k=A.id();if(c[k]=x,x!==1/0)for(var C=A.neighborhood().intersect(v),B=0;B0)for(ne.unshift(X);h[me];){var ie=h[me];ne.unshift(ie.edge),ne.unshift(ie.node),ue=ie.node,me=ue.id()}return o.spawn(ne)}}}},lf={kruskal:function(e){e=e||function(b){return 1};for(var r=this.byGroup(),a=r.nodes,n=r.edges,i=a.length,s=new Array(i),o=a,u=function(E){for(var I=0;I0;){if(I(),x++,E===f){for(var k=[],C=i,B=f,G=g[B];k.unshift(C),G!=null&&k.unshift(G),C=p[B],C!=null;)B=C.id(),G=g[B];return{found:!0,distance:h[E],path:this.spawn(k),steps:x}}d[E]=!0;for(var M=b._private.edges,W=0;WG&&(v[B]=G,m[B]=C,b[B]=I),!i){var M=C*f+k;!i&&v[M]>G&&(v[M]=G,m[M]=k,b[M]=I)}}}for(var W=0;W1&&arguments[1]!==void 0?arguments[1]:s,rt=b(Be),je=[],We=rt;;){if(We==null)return r.spawn();var et=m(We),fe=et.edge,O=et.pred;if(je.unshift(We[0]),We.same(_e)&&je.length>0)break;fe!=null&&je.unshift(fe),We=O}return u.spawn(je)},A=0;A=0;f--){var h=l[f],c=h[1],d=h[2];(r[c]===o&&r[d]===u||r[c]===u&&r[d]===o)&&l.splice(f,1)}for(var v=0;vn;){var i=Math.floor(Math.random()*r.length);r=pf(i,e,r),a--}return r},yf={kargerStein:function(){var e=this,r=this.byGroup(),a=r.nodes,n=r.edges;n.unmergeBy(function(ne){return ne.isLoop()});var i=a.length,s=n.length,o=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),u=Math.floor(i/gf);if(i<2){Tt("At least 2 nodes are required for Karger-Stein algorithm");return}for(var l=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=1/0,i=r;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=-1/0,i=r;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=0,i=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;n?e=e.slice(r,a):(a0&&e.splice(0,r));for(var o=0,u=e.length-1;u>=0;u--){var l=e[u];s?isFinite(l)||(e[u]=-1/0,o++):e.splice(u,1)}i&&e.sort(function(c,d){return c-d});var f=e.length,h=Math.floor(f/2);return f%2!==0?e[h+1+o]:(e[h-1+o]+e[h+o])/2},Tf=function(e){return Math.PI*e/180},pn=function(e,r){return Math.atan2(r,e)-Math.PI/2},hi=Math.log2||function(t){return Math.log(t)/Math.log(2)},ws=function(e){return e>0?1:e<0?-1:0},Br=function(e,r){return Math.sqrt(Fr(e,r))},Fr=function(e,r){var a=r.x-e.x,n=r.y-e.y;return a*a+n*n},Cf=function(e){for(var r=e.length,a=0,n=0;n=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},Sf=function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},Lf=function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},Af=function(e,r,a){return{x1:e.x1+r,x2:e.x2+r,y1:e.y1+a,y2:e.y2+a,w:e.w,h:e.h}},xs=function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},Of=function(e,r,a){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,a),e.y2=Math.max(e.y2,a),e.h=e.y2-e.y1},yn=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},mn=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],a,n,i,s;if(r.length===1)a=n=i=s=r[0];else if(r.length===2)a=i=r[0],s=n=r[1];else if(r.length===4){var o=w(r,4);a=o[0],n=o[1],i=o[2],s=o[3]}return e.x1-=s,e.x2+=n,e.y1-=a,e.y2+=i,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},Ts=function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},ci=function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},ra=function(e,r,a){return e.x1<=r&&r<=e.x2&&e.y1<=a&&a<=e.y2},Nf=function(e,r){return ra(e,r.x,r.y)},Cs=function(e,r){return ra(e,r.x1,r.y1)&&ra(e,r.x2,r.y2)},Ds=function(e,r,a,n,i,s,o){var u=Ga(i,s),l=i/2,f=s/2,h;{var c=a-l+u-o,d=n-f-o,v=a+l-u+o,y=d;if(h=Cr(e,r,a,n,c,d,v,y,!1),h.length>0)return h}{var p=a+l+o,g=n-f+u-o,m=p,b=n+f-u+o;if(h=Cr(e,r,a,n,p,g,m,b,!1),h.length>0)return h}{var E=a-l+u-o,I=n+f+o,A=a+l-u+o,x=I;if(h=Cr(e,r,a,n,E,I,A,x,!1),h.length>0)return h}{var k=a-l-o,C=n-f+u-o,B=k,G=n+f-u+o;if(h=Cr(e,r,a,n,k,C,B,G,!1),h.length>0)return h}var M;{var W=a-l+u,F=n-f+u;if(M=Ba(e,r,a,n,W,F,u+o),M.length>0&&M[0]<=W&&M[1]<=F)return[M[0],M[1]]}{var re=a+l-u,K=n-f+u;if(M=Ba(e,r,a,n,re,K,u+o),M.length>0&&M[0]>=re&&M[1]<=K)return[M[0],M[1]]}{var X=a+l-u,ne=n+f-u;if(M=Ba(e,r,a,n,X,ne,u+o),M.length>0&&M[0]>=X&&M[1]>=ne)return[M[0],M[1]]}{var ue=a-l+u,me=n+f-u;if(M=Ba(e,r,a,n,ue,me,u+o),M.length>0&&M[0]<=ue&&M[1]>=me)return[M[0],M[1]]}return[]},Mf=function(e,r,a,n,i,s,o){var u=o,l=Math.min(a,i),f=Math.max(a,i),h=Math.min(n,s),c=Math.max(n,s);return l-u<=e&&e<=f+u&&h-u<=r&&r<=c+u},If=function(e,r,a,n,i,s,o,u,l){var f={x1:Math.min(a,o,i)-l,x2:Math.max(a,o,i)+l,y1:Math.min(n,u,s)-l,y2:Math.max(n,u,s)+l};return!(ef.x2||rf.y2)},Rf=function(e,r,a,n){a-=n;var i=r*r-4*e*a;if(i<0)return[];var s=Math.sqrt(i),o=2*e,u=(-r+s)/o,l=(-r-s)/o;return[u,l]},kf=function(e,r,a,n,i){var s=1e-5;e===0&&(e=s),r/=e,a/=e,n/=e;var o,u,l,f,h,c,d,v;if(u=(3*a-r*r)/9,l=-(27*n)+r*(9*a-2*(r*r)),l/=54,o=u*u*u+l*l,i[1]=0,d=r/3,o>0){h=l+Math.sqrt(o),h=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),c=l-Math.sqrt(o),c=c<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-d+h+c,d+=(h+c)/2,i[4]=i[2]=-d,d=Math.sqrt(3)*(-c+h)/2,i[3]=d,i[5]=-d;return}if(i[5]=i[3]=0,o===0){v=l<0?-Math.pow(-l,1/3):Math.pow(l,1/3),i[0]=-d+2*v,i[4]=i[2]=-(v+d);return}u=-u,f=u*u*u,f=Math.acos(l/Math.sqrt(f)),v=2*Math.sqrt(u),i[0]=-d+v*Math.cos(f/3),i[2]=-d+v*Math.cos((f+2*Math.PI)/3),i[4]=-d+v*Math.cos((f+4*Math.PI)/3)},Pf=function(e,r,a,n,i,s,o,u){var l=1*a*a-4*a*i+2*a*o+4*i*i-4*i*o+o*o+n*n-4*n*s+2*n*u+4*s*s-4*s*u+u*u,f=1*9*a*i-3*a*a-3*a*o-6*i*i+3*i*o+9*n*s-3*n*n-3*n*u-6*s*s+3*s*u,h=1*3*a*a-6*a*i+a*o-a*e+2*i*i+2*i*e-o*e+3*n*n-6*n*s+n*u-n*r+2*s*s+2*s*r-u*r,c=1*a*i-a*a+a*e-i*e+n*s-n*n+n*r-s*r,d=[];kf(l,f,h,c,d);for(var v=1e-7,y=[],p=0;p<6;p+=2)Math.abs(d[p+1])=0&&d[p]<=1&&y.push(d[p]);y.push(1),y.push(0);for(var g=-1,m,b,E,I=0;I=0?El?(e-i)*(e-i)+(r-s)*(r-s):f-c},Ht=function(e,r,a){for(var n,i,s,o,u,l=0,f=0;f=e&&e>=s||n<=e&&e<=s)u=(e-n)/(s-n)*(o-i)+i,u>r&&l++;else continue;return l%2!==0},pr=function(e,r,a,n,i,s,o,u,l){var f=new Array(a.length),h;u[0]!=null?(h=Math.atan(u[1]/u[0]),u[0]<0?h=h+Math.PI/2:h=-h-Math.PI/2):h=u;for(var c=Math.cos(-h),d=Math.sin(-h),v=0;v0){var p=En(f,-l);y=bn(p)}else y=f;return Ht(e,r,y)},Ff=function(e,r,a,n,i,s,o){for(var u=new Array(a.length),l=s/2,f=o/2,h=gi(s,o),c=h*h,d=0;d=0&&p<=1&&m.push(p),g>=0&&g<=1&&m.push(g),m.length===0)return[];var b=m[0]*u[0]+e,E=m[0]*u[1]+r;if(m.length>1){if(m[0]==m[1])return[b,E];var I=m[1]*u[0]+e,A=m[1]*u[1]+r;return[b,E,I,A]}else return[b,E]},vi=function(e,r,a){return r<=e&&e<=a||a<=e&&e<=r?e:e<=r&&r<=a||a<=r&&r<=e?r:a},Cr=function(e,r,a,n,i,s,o,u,l){var f=e-i,h=a-e,c=o-i,d=r-s,v=n-r,y=u-s,p=c*d-y*f,g=h*d-v*f,m=y*h-c*v;if(m!==0){var b=p/m,E=g/m,I=.001,A=0-I,x=1+I;return A<=b&&b<=x&&A<=E&&E<=x?[e+b*h,r+b*v]:l?[e+b*h,r+b*v]:[]}else return p===0||g===0?vi(e,a,o)===o?[o,u]:vi(e,a,i)===i?[i,s]:vi(i,o,a)===a?[a,n]:[]:[]},Fa=function(e,r,a,n,i,s,o,u){var l=[],f,h=new Array(a.length),c=!0;s==null&&(c=!1);var d;if(c){for(var v=0;v0){var y=En(h,-u);d=bn(y)}else d=h}else d=a;for(var p,g,m,b,E=0;E2){for(var K=[l[0],l[1]],X=Math.pow(K[0]-e,2)+Math.pow(K[1]-r,2),ne=1;nef&&(f=E)},get:function(b){return l[b]}},c=0;c0?K=re.edgesTo(F)[0]:K=F.edgesTo(re)[0];var X=n(K);F=F.id(),k[F]>k[M]+X&&(k[F]=k[M]+X,C.nodes.indexOf(F)<0?C.push(F):C.updateItem(F),x[F]=0,A[F]=[]),k[F]==k[M]+X&&(x[F]=x[F]+x[M],A[F].push(M))}else for(var ne=0;ne0;){for(var de=I.pop(),we=0;we0&&o.push(a[u]);o.length!==0&&i.push(n.collection(o))}return i},jf=function(e,r){for(var a=0;a5&&arguments[5]!==void 0?arguments[5]:rh,o=n,u,l,f=0;f=2?za(e,r,a,0,ks,ah):za(e,r,a,0,Rs)},squaredEuclidean:function(e,r,a){return za(e,r,a,0,ks)},manhattan:function(e,r,a){return za(e,r,a,0,Rs)},max:function(e,r,a){return za(e,r,a,-1/0,nh)}};ia["squared-euclidean"]=ia.squaredEuclidean,ia.squaredeuclidean=ia.squaredEuclidean;function xn(t,e,r,a,n,i){var s;return Y(t)?s=t:s=ia[t]||ia.euclidean,e===0&&Y(t)?s(n,i):s(e,r,a,n,i)}var ih=At({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),mi=function(e){return ih(e)},Tn=function(e,r,a,n,i){var s=i!=="kMedoids",o=s?function(h){return a[h]}:function(h){return n[h](a)},u=function(c){return n[c](r)},l=a,f=r;return xn(e,n.length,o,u,l,f)},bi=function(e,r,a){for(var n=a.length,i=new Array(n),s=new Array(n),o=new Array(r),u=null,l=0;la)return!1}return!0},lh=function(e,r,a){for(var n=0;no&&(o=r[l][f],u=f);i[u].push(e[l])}for(var h=0;h=i.threshold||i.mode==="dendrogram"&&e.length===1)return!1;var v=r[s],y=r[n[s]],p;i.mode==="dendrogram"?p={left:v,right:y,key:v.key}:p={value:v.value.concat(y.value),key:v.key},e[v.index]=p,e.splice(y.index,1),r[v.key]=p;for(var g=0;ga[y.key][m.key]&&(u=a[y.key][m.key])):i.linkage==="max"?(u=a[v.key][m.key],a[v.key][m.key]0&&n.push(i);return n},_s=function(e,r,a){for(var n=[],i=0;io&&(s=l,o=r[i*e+l])}s>0&&n.push(s)}for(var f=0;fl&&(u=f,l=h)}a[i]=s[u]}return n=_s(e,r,a),n},Us=function(e){for(var r=this.cy(),a=this.nodes(),n=xh(e),i={},s=0;s=G?(M=G,G=F,W=re):F>M&&(M=F);for(var K=0;K0?1:0;x[C%n.minIterations*o+de]=we,ie+=we}if(ie>0&&(C>=n.minIterations-1||C==n.maxIterations-1)){for(var De=0,xe=0;xe1||A>1)&&(o=!0),h[b]=[],m.outgoers().forEach(function(k){k.isEdge()&&h[b].push(k.id())})}else c[b]=[void 0,m.target().id()]}):s.forEach(function(m){var b=m.id();if(m.isNode()){var E=m.degree(!0);E%2&&(u?l?o=!0:l=b:u=b),h[b]=[],m.connectedEdges().forEach(function(I){return h[b].push(I.id())})}else c[b]=[m.source().id(),m.target().id()]});var d={found:!1,trail:void 0};if(o)return d;if(l&&u)if(i){if(f&&l!=f)return d;f=l}else{if(f&&l!=f&&u!=f)return d;f||(f=l)}else f||(f=s[0].id());var v=function(b){for(var E=b,I=[b],A,x,k;h[E].length;)A=h[E].shift(),x=c[A][0],k=c[A][1],E!=k?(h[k]=h[k].filter(function(C){return C!=A}),E=k):!i&&E!=x&&(h[x]=h[x].filter(function(C){return C!=A}),E=x),I.unshift(A),I.unshift(E);return I},y=[],p=[];for(p=v(f);p.length!=1;)h[p[0]].length==0?(y.unshift(s.getElementById(p.shift())),y.unshift(s.getElementById(p.shift()))):p=v(p.shift()).concat(p);y.unshift(s.getElementById(p.shift()));for(var g in h)if(h[g].length)return d;return d.found=!0,d.trail=this.spawn(y,!0),d}},Dn=function(){var e=this,r={},a=0,n=0,i=[],s=[],o={},u=function(c,d){for(var v=s.length-1,y=[],p=e.spawn();s[v].x!=c||s[v].y!=d;)y.push(s.pop().edge),v--;y.push(s.pop().edge),y.forEach(function(g){var m=g.connectedNodes().intersection(e);p.merge(g),m.forEach(function(b){var E=b.id(),I=b.connectedEdges().intersection(e);p.merge(b),r[E].cutVertex?p.merge(I.filter(function(A){return A.isLoop()})):p.merge(I)})}),i.push(p)},l=function h(c,d,v){c===v&&(n+=1),r[d]={id:a,low:a++,cutVertex:!1};var y=e.getElementById(d).connectedEdges().intersection(e);if(y.size()===0)i.push(e.spawn(e.getElementById(d)));else{var p,g,m,b;y.forEach(function(E){p=E.source().id(),g=E.target().id(),m=p===d?g:p,m!==v&&(b=E.id(),o[b]||(o[b]=!0,s.push({x:d,y:m,edge:E})),m in r?r[d].low=Math.min(r[d].low,r[m].id):(h(c,m,d),r[d].low=Math.min(r[d].low,r[m].low),r[d].id<=r[m].low&&(r[d].cutVertex=!0,u(d,m))))})}};e.forEach(function(h){if(h.isNode()){var c=h.id();c in r||(n=0,l(c,c),r[c].cutVertex=n>1)}});var f=Object.keys(r).filter(function(h){return r[h].cutVertex}).map(function(h){return e.getElementById(h)});return{cut:e.spawn(f),components:i}},Nh={hopcroftTarjanBiconnected:Dn,htbc:Dn,htb:Dn,hopcroftTarjanBiconnectedComponents:Dn},Sn=function(){var e=this,r={},a=0,n=[],i=[],s=e.spawn(e),o=function u(l){i.push(l),r[l]={index:a,low:a++,explored:!1};var f=e.getElementById(l).connectedEdges().intersection(e);if(f.forEach(function(y){var p=y.target().id();p!==l&&(p in r||u(p),r[p].explored||(r[l].low=Math.min(r[l].low,r[p].low)))}),r[l].index===r[l].low){for(var h=e.spawn();;){var c=i.pop();if(h.merge(e.getElementById(c)),r[c].low=r[l].index,r[c].explored=!0,c===l)break}var d=h.edgesWith(h),v=h.merge(d);n.push(v),s=s.difference(v)}};return e.forEach(function(u){if(u.isNode()){var l=u.id();l in r||o(l)}}),{cut:s,components:n}},Mh={tarjanStronglyConnected:Sn,tsc:Sn,tscc:Sn,tarjanStronglyConnectedComponents:Sn},Ys={};[Ra,of,lf,ff,cf,df,yf,_f,aa,na,yi,th,dh,Eh,Lh,Oh,Nh,Mh].forEach(function(t){He(Ys,t)});/*! +import{aB as Da,aC as Yl,d as xp,c as sn,l as Wr,h as ni,t as Tp,b4 as Cp,b5 as Dp,b6 as Sp}from"./mermaid.core-YBgJFCkH.js";import{c as Lp}from"./createText-aebacdfe-VuGI-o_f.js";import"./app-0NopiYEV.js";var Hl={exports:{}};(function(me,he){(function(ee,de){me.exports=de()})(Da,function(){function ee(t){"@babel/helpers - typeof";return ee=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ee(t)}function de(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function H(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,a=new Array(e);r"u"?null:window,$=D?D.navigator:null;D&&D.document;var _=ee(""),Q=ee({}),ne=ee(function(){}),le=typeof HTMLElement>"u"?"undefined":ee(HTMLElement),J=function(e){return e&&e.instanceString&&Y(e.instanceString)?e.instanceString():null},j=function(e){return e!=null&&ee(e)==_},Y=function(e){return e!=null&&ee(e)===ne},te=function(e){return!pe(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},L=function(e){return e!=null&&ee(e)===Q&&!te(e)&&e.constructor===Object},V=function(e){return e!=null&&ee(e)===Q},R=function(e){return e!=null&&ee(e)===ee(1)&&!isNaN(e)},W=function(e){return R(e)&&Math.floor(e)===e},ce=function(e){if(le!=="undefined")return e!=null&&e instanceof HTMLElement},pe=function(e){return Oe(e)||Me(e)},Oe=function(e){return J(e)==="collection"&&e._private.single},Me=function(e){return J(e)==="collection"&&!e._private.single},Ye=function(e){return J(e)==="core"},at=function(e){return J(e)==="stylesheet"},dt=function(e){return J(e)==="event"},ke=function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},Ve=function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},Ze=function(e){return L(e)&&R(e.x1)&&R(e.x2)&&R(e.y1)&&R(e.y2)},nt=function(e){return V(e)&&Y(e.then)},ht=function(){return $&&$.userAgent.match(/msie|trident|edge/i)},it=function(e,r){r||(r=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var i=[],s=0;sr?1:0},tu=function(e,r){return-1*rs(e,r)},He=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(p-=1),p<1/6?v+(y-v)*6*p:p<1/2?y:p<2/3?v+(y-v)*(2/3-p)*6:v}var h=new RegExp("^"+ln+"$").exec(e);if(h){if(a=parseInt(h[1]),a<0?a=(360- -1*a%360)%360:a>360&&(a=a%360),a/=360,n=parseFloat(h[2]),n<0||n>100||(n=n/100,i=parseFloat(h[3]),i<0||i>100)||(i=i/100,s=h[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(n===0)o=u=l=Math.round(i*255);else{var c=i<.5?i*(1+n):i+n-i*n,d=2*i-c;o=Math.round(255*f(d,c,a+1/3)),u=Math.round(255*f(d,c,a)),l=Math.round(255*f(d,c,a-1/3))}r=[o,u,l,s]}return r},nu=function(e){var r,a=new RegExp("^"+dr+"$").exec(e);if(a){r=[];for(var n=[],i=1;i<=3;i++){var s=a[i];if(s[s.length-1]==="%"&&(n[i]=!0),s=parseFloat(s),n[i]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var o=n[1]||n[2]||n[3],u=n[1]&&n[2]&&n[3];if(o&&!u)return;var l=a[4];if(l!==void 0){if(l=parseFloat(l),l<0||l>1)return;r.push(l)}}return r},iu=function(e){return ou[e.toLowerCase()]},su=function(e){return(te(e)?e:null)||iu(e)||ru(e)||nu(e)||au(e)},ou={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},as=function(e){for(var r=e.map,a=e.keys,n=a.length,i=0;i=e||x<0||h&&k>=i}function g(){var A=ii();if(p(A))return m(A);o=setTimeout(g,y(A))}function m(A){return o=void 0,c&&a?d(A):(a=n=void 0,s)}function b(){o!==void 0&&clearTimeout(o),l=0,a=u=n=o=void 0}function E(){return o===void 0?s:m(ii())}function I(){var A=ii(),x=p(A);if(a=arguments,n=this,u=A,x){if(o===void 0)return v(u);if(h)return clearTimeout(o),o=setTimeout(g,e),d(u)}return o===void 0&&(o=setTimeout(g,e)),s}return I.cancel=b,I.flush=E,I}var fn=Hu,si=D?D.performance:null,fs=si&&si.now?function(){return si.now()}:function(){return Date.now()},Xu=function(){if(D){if(D.requestAnimationFrame)return function(t){D.requestAnimationFrame(t)};if(D.mozRequestAnimationFrame)return function(t){D.mozRequestAnimationFrame(t)};if(D.webkitRequestAnimationFrame)return function(t){D.webkitRequestAnimationFrame(t)};if(D.msRequestAnimationFrame)return function(t){D.msRequestAnimationFrame(t)}}return function(t){t&&setTimeout(function(){t(fs())},1e3/60)}}(),hn=function(e){return Xu(e)},gr=fs,Jr=9261,hs=65599,Na=5381,cs=function(e){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Jr,a=r,n;n=e.next(),!n.done;)a=a*hs+n.value|0;return a},Ma=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Jr;return r*hs+e|0},Ia=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Na;return(r<<5)+r+e|0},qu=function(e,r){return e*2097152+r},wr=function(e){return e[0]*2097152+e[1]},cn=function(e,r){return[Ma(e[0],r[0]),Ia(e[1],r[1])]},Wu=function(e,r){var a={value:0,done:!1},n=0,i=e.length,s={next:function(){return n=0&&!(e[n]===r&&(e.splice(n,1),a));n--);},ui=function(e){e.splice(0,e.length)},tf=function(e,r){for(var a=0;a"u"?"undefined":ee(Set))!==af?Set:nf,dn=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!Ye(e)){Tt("An element must have a core reference and parameters set");return}var n=r.group;if(n==null&&(r.data&&r.data.source!=null&&r.data.target!=null?n="edges":n="nodes"),n!=="nodes"&&n!=="edges"){Tt("An element must be of type `nodes` or `edges`; you specified `"+n+"`");return}this.length=1,this[0]=this;var i=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:n,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?n==="edges":!!r.pannable,active:!1,classes:new jr,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(i.position.x==null&&(i.position.x=0),i.position.y==null&&(i.position.y=0),r.renderedPosition){var s=r.renderedPosition,o=e.pan(),u=e.zoom();i.position={x:(s.x-o.x)/u,y:(s.y-o.y)/u}}var l=[];te(r.classes)?l=r.classes:j(r.classes)&&(l=r.classes.split(/\s+/));for(var f=0,h=l.length;fm?1:0},f=function(g,m,b,E,I){var A;if(b==null&&(b=0),I==null&&(I=a),b<0)throw new Error("lo must be non-negative");for(E==null&&(E=g.length);bF;0<=F?C++:C--)k.push(C);return k}).apply(this).reverse(),x=[],E=0,I=A.length;EG;0<=G?++k:--k)M.push(s(g,b));return M},y=function(g,m,b,E){var I,A,x;for(E==null&&(E=a),I=g[b];b>m;){if(x=b-1>>1,A=g[x],E(I,A)<0){g[b]=A,b=x;continue}break}return g[b]=I},p=function(g,m,b){var E,I,A,x,k;for(b==null&&(b=a),I=g.length,k=m,A=g[m],E=2*m+1;E0;){var A=m.pop(),x=p(A),k=A.id();if(c[k]=x,x!==1/0)for(var C=A.neighborhood().intersect(v),F=0;F0)for(ae.unshift(q);h[be];){var ie=h[be];ae.unshift(ie.edge),ae.unshift(ie.node),ue=ie.node,be=ue.id()}return o.spawn(ae)}}}},uf={kruskal:function(e){e=e||function(b){return 1};for(var r=this.byGroup(),a=r.nodes,n=r.edges,i=a.length,s=new Array(i),o=a,u=function(E){for(var I=0;I0;){if(I(),x++,E===f){for(var k=[],C=i,F=f,G=g[F];k.unshift(C),G!=null&&k.unshift(G),C=p[F],C!=null;)F=C.id(),G=g[F];return{found:!0,distance:h[E],path:this.spawn(k),steps:x}}d[E]=!0;for(var M=b._private.edges,X=0;XG&&(v[F]=G,m[F]=C,b[F]=I),!i){var M=C*f+k;!i&&v[M]>G&&(v[M]=G,m[M]=k,b[M]=I)}}}for(var X=0;X1&&arguments[1]!==void 0?arguments[1]:s,rt=b(Be),je=[],qe=rt;;){if(qe==null)return r.spawn();var et=m(qe),fe=et.edge,O=et.pred;if(je.unshift(qe[0]),qe.same(_e)&&je.length>0)break;fe!=null&&je.unshift(fe),qe=O}return u.spawn(je)},A=0;A=0;f--){var h=l[f],c=h[1],d=h[2];(r[c]===o&&r[d]===u||r[c]===u&&r[d]===o)&&l.splice(f,1)}for(var v=0;vn;){var i=Math.floor(Math.random()*r.length);r=yf(i,e,r),a--}return r},mf={kargerStein:function(){var e=this,r=this.byGroup(),a=r.nodes,n=r.edges;n.unmergeBy(function(ae){return ae.isLoop()});var i=a.length,s=n.length,o=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),u=Math.floor(i/pf);if(i<2){Tt("At least 2 nodes are required for Karger-Stein algorithm");return}for(var l=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=1/0,i=r;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=-1/0,i=r;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=0,i=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;n?e=e.slice(r,a):(a0&&e.splice(0,r));for(var o=0,u=e.length-1;u>=0;u--){var l=e[u];s?isFinite(l)||(e[u]=-1/0,o++):e.splice(u,1)}i&&e.sort(function(c,d){return c-d});var f=e.length,h=Math.floor(f/2);return f%2!==0?e[h+1+o]:(e[h-1+o]+e[h+o])/2},Cf=function(e){return Math.PI*e/180},pn=function(e,r){return Math.atan2(r,e)-Math.PI/2},hi=Math.log2||function(t){return Math.log(t)/Math.log(2)},xs=function(e){return e>0?1:e<0?-1:0},Br=function(e,r){return Math.sqrt(Fr(e,r))},Fr=function(e,r){var a=r.x-e.x,n=r.y-e.y;return a*a+n*n},Df=function(e){for(var r=e.length,a=0,n=0;n=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},Lf=function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},Af=function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},Of=function(e,r,a){return{x1:e.x1+r,x2:e.x2+r,y1:e.y1+a,y2:e.y2+a,w:e.w,h:e.h}},Ts=function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},Nf=function(e,r,a){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,a),e.y2=Math.max(e.y2,a),e.h=e.y2-e.y1},yn=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},mn=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],a,n,i,s;if(r.length===1)a=n=i=s=r[0];else if(r.length===2)a=i=r[0],s=n=r[1];else if(r.length===4){var o=w(r,4);a=o[0],n=o[1],i=o[2],s=o[3]}return e.x1-=s,e.x2+=n,e.y1-=a,e.y2+=i,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},Cs=function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},ci=function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},ra=function(e,r,a){return e.x1<=r&&r<=e.x2&&e.y1<=a&&a<=e.y2},Mf=function(e,r){return ra(e,r.x,r.y)},Ds=function(e,r){return ra(e,r.x1,r.y1)&&ra(e,r.x2,r.y2)},Ss=function(e,r,a,n,i,s,o){var u=Ga(i,s),l=i/2,f=s/2,h;{var c=a-l+u-o,d=n-f-o,v=a+l-u+o,y=d;if(h=Cr(e,r,a,n,c,d,v,y,!1),h.length>0)return h}{var p=a+l+o,g=n-f+u-o,m=p,b=n+f-u+o;if(h=Cr(e,r,a,n,p,g,m,b,!1),h.length>0)return h}{var E=a-l+u-o,I=n+f+o,A=a+l-u+o,x=I;if(h=Cr(e,r,a,n,E,I,A,x,!1),h.length>0)return h}{var k=a-l-o,C=n-f+u-o,F=k,G=n+f-u+o;if(h=Cr(e,r,a,n,k,C,F,G,!1),h.length>0)return h}var M;{var X=a-l+u,B=n-f+u;if(M=Ba(e,r,a,n,X,B,u+o),M.length>0&&M[0]<=X&&M[1]<=B)return[M[0],M[1]]}{var re=a+l-u,K=n-f+u;if(M=Ba(e,r,a,n,re,K,u+o),M.length>0&&M[0]>=re&&M[1]<=K)return[M[0],M[1]]}{var q=a+l-u,ae=n+f-u;if(M=Ba(e,r,a,n,q,ae,u+o),M.length>0&&M[0]>=q&&M[1]>=ae)return[M[0],M[1]]}{var ue=a-l+u,be=n+f-u;if(M=Ba(e,r,a,n,ue,be,u+o),M.length>0&&M[0]<=ue&&M[1]>=be)return[M[0],M[1]]}return[]},If=function(e,r,a,n,i,s,o){var u=o,l=Math.min(a,i),f=Math.max(a,i),h=Math.min(n,s),c=Math.max(n,s);return l-u<=e&&e<=f+u&&h-u<=r&&r<=c+u},Rf=function(e,r,a,n,i,s,o,u,l){var f={x1:Math.min(a,o,i)-l,x2:Math.max(a,o,i)+l,y1:Math.min(n,u,s)-l,y2:Math.max(n,u,s)+l};return!(ef.x2||rf.y2)},kf=function(e,r,a,n){a-=n;var i=r*r-4*e*a;if(i<0)return[];var s=Math.sqrt(i),o=2*e,u=(-r+s)/o,l=(-r-s)/o;return[u,l]},Pf=function(e,r,a,n,i){var s=1e-5;e===0&&(e=s),r/=e,a/=e,n/=e;var o,u,l,f,h,c,d,v;if(u=(3*a-r*r)/9,l=-(27*n)+r*(9*a-2*(r*r)),l/=54,o=u*u*u+l*l,i[1]=0,d=r/3,o>0){h=l+Math.sqrt(o),h=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),c=l-Math.sqrt(o),c=c<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-d+h+c,d+=(h+c)/2,i[4]=i[2]=-d,d=Math.sqrt(3)*(-c+h)/2,i[3]=d,i[5]=-d;return}if(i[5]=i[3]=0,o===0){v=l<0?-Math.pow(-l,1/3):Math.pow(l,1/3),i[0]=-d+2*v,i[4]=i[2]=-(v+d);return}u=-u,f=u*u*u,f=Math.acos(l/Math.sqrt(f)),v=2*Math.sqrt(u),i[0]=-d+v*Math.cos(f/3),i[2]=-d+v*Math.cos((f+2*Math.PI)/3),i[4]=-d+v*Math.cos((f+4*Math.PI)/3)},Bf=function(e,r,a,n,i,s,o,u){var l=1*a*a-4*a*i+2*a*o+4*i*i-4*i*o+o*o+n*n-4*n*s+2*n*u+4*s*s-4*s*u+u*u,f=1*9*a*i-3*a*a-3*a*o-6*i*i+3*i*o+9*n*s-3*n*n-3*n*u-6*s*s+3*s*u,h=1*3*a*a-6*a*i+a*o-a*e+2*i*i+2*i*e-o*e+3*n*n-6*n*s+n*u-n*r+2*s*s+2*s*r-u*r,c=1*a*i-a*a+a*e-i*e+n*s-n*n+n*r-s*r,d=[];Pf(l,f,h,c,d);for(var v=1e-7,y=[],p=0;p<6;p+=2)Math.abs(d[p+1])=0&&d[p]<=1&&y.push(d[p]);y.push(1),y.push(0);for(var g=-1,m,b,E,I=0;I=0?El?(e-i)*(e-i)+(r-s)*(r-s):f-c},Ht=function(e,r,a){for(var n,i,s,o,u,l=0,f=0;f=e&&e>=s||n<=e&&e<=s)u=(e-n)/(s-n)*(o-i)+i,u>r&&l++;else continue;return l%2!==0},pr=function(e,r,a,n,i,s,o,u,l){var f=new Array(a.length),h;u[0]!=null?(h=Math.atan(u[1]/u[0]),u[0]<0?h=h+Math.PI/2:h=-h-Math.PI/2):h=u;for(var c=Math.cos(-h),d=Math.sin(-h),v=0;v0){var p=En(f,-l);y=bn(p)}else y=f;return Ht(e,r,y)},Gf=function(e,r,a,n,i,s,o){for(var u=new Array(a.length),l=s/2,f=o/2,h=gi(s,o),c=h*h,d=0;d=0&&p<=1&&m.push(p),g>=0&&g<=1&&m.push(g),m.length===0)return[];var b=m[0]*u[0]+e,E=m[0]*u[1]+r;if(m.length>1){if(m[0]==m[1])return[b,E];var I=m[1]*u[0]+e,A=m[1]*u[1]+r;return[b,E,I,A]}else return[b,E]},vi=function(e,r,a){return r<=e&&e<=a||a<=e&&e<=r?e:e<=r&&r<=a||a<=r&&r<=e?r:a},Cr=function(e,r,a,n,i,s,o,u,l){var f=e-i,h=a-e,c=o-i,d=r-s,v=n-r,y=u-s,p=c*d-y*f,g=h*d-v*f,m=y*h-c*v;if(m!==0){var b=p/m,E=g/m,I=.001,A=0-I,x=1+I;return A<=b&&b<=x&&A<=E&&E<=x?[e+b*h,r+b*v]:l?[e+b*h,r+b*v]:[]}else return p===0||g===0?vi(e,a,o)===o?[o,u]:vi(e,a,i)===i?[i,s]:vi(i,o,a)===a?[a,n]:[]:[]},Fa=function(e,r,a,n,i,s,o,u){var l=[],f,h=new Array(a.length),c=!0;s==null&&(c=!1);var d;if(c){for(var v=0;v0){var y=En(h,-u);d=bn(y)}else d=h}else d=a;for(var p,g,m,b,E=0;E2){for(var K=[l[0],l[1]],q=Math.pow(K[0]-e,2)+Math.pow(K[1]-r,2),ae=1;aef&&(f=E)},get:function(b){return l[b]}},c=0;c0?K=re.edgesTo(B)[0]:K=B.edgesTo(re)[0];var q=n(K);B=B.id(),k[B]>k[M]+q&&(k[B]=k[M]+q,C.nodes.indexOf(B)<0?C.push(B):C.updateItem(B),x[B]=0,A[B]=[]),k[B]==k[M]+q&&(x[B]=x[B]+x[M],A[B].push(M))}else for(var ae=0;ae0;){for(var ge=I.pop(),we=0;we0&&o.push(a[u]);o.length!==0&&i.push(n.collection(o))}return i},eh=function(e,r){for(var a=0;a5&&arguments[5]!==void 0?arguments[5]:ah,o=n,u,l,f=0;f=2?za(e,r,a,0,Ps,nh):za(e,r,a,0,ks)},squaredEuclidean:function(e,r,a){return za(e,r,a,0,Ps)},manhattan:function(e,r,a){return za(e,r,a,0,ks)},max:function(e,r,a){return za(e,r,a,-1/0,ih)}};ia["squared-euclidean"]=ia.squaredEuclidean,ia.squaredeuclidean=ia.squaredEuclidean;function xn(t,e,r,a,n,i){var s;return Y(t)?s=t:s=ia[t]||ia.euclidean,e===0&&Y(t)?s(n,i):s(e,r,a,n,i)}var sh=At({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),mi=function(e){return sh(e)},Tn=function(e,r,a,n,i){var s=i!=="kMedoids",o=s?function(h){return a[h]}:function(h){return n[h](a)},u=function(c){return n[c](r)},l=a,f=r;return xn(e,n.length,o,u,l,f)},bi=function(e,r,a){for(var n=a.length,i=new Array(n),s=new Array(n),o=new Array(r),u=null,l=0;la)return!1}return!0},uh=function(e,r,a){for(var n=0;no&&(o=r[l][f],u=f);i[u].push(e[l])}for(var h=0;h=i.threshold||i.mode==="dendrogram"&&e.length===1)return!1;var v=r[s],y=r[n[s]],p;i.mode==="dendrogram"?p={left:v,right:y,key:v.key}:p={value:v.value.concat(y.value),key:v.key},e[v.index]=p,e.splice(y.index,1),r[v.key]=p;for(var g=0;ga[y.key][m.key]&&(u=a[y.key][m.key])):i.linkage==="max"?(u=a[v.key][m.key],a[v.key][m.key]0&&n.push(i);return n},Us=function(e,r,a){for(var n=[],i=0;io&&(s=l,o=r[i*e+l])}s>0&&n.push(s)}for(var f=0;fl&&(u=f,l=h)}a[i]=s[u]}return n=Us(e,r,a),n},Ys=function(e){for(var r=this.cy(),a=this.nodes(),n=Th(e),i={},s=0;s=G?(M=G,G=B,X=re):B>M&&(M=B);for(var K=0;K0?1:0;x[C%n.minIterations*o+ge]=we,ie+=we}if(ie>0&&(C>=n.minIterations-1||C==n.maxIterations-1)){for(var De=0,xe=0;xe1||A>1)&&(o=!0),h[b]=[],m.outgoers().forEach(function(k){k.isEdge()&&h[b].push(k.id())})}else c[b]=[void 0,m.target().id()]}):s.forEach(function(m){var b=m.id();if(m.isNode()){var E=m.degree(!0);E%2&&(u?l?o=!0:l=b:u=b),h[b]=[],m.connectedEdges().forEach(function(I){return h[b].push(I.id())})}else c[b]=[m.source().id(),m.target().id()]});var d={found:!1,trail:void 0};if(o)return d;if(l&&u)if(i){if(f&&l!=f)return d;f=l}else{if(f&&l!=f&&u!=f)return d;f||(f=l)}else f||(f=s[0].id());var v=function(b){for(var E=b,I=[b],A,x,k;h[E].length;)A=h[E].shift(),x=c[A][0],k=c[A][1],E!=k?(h[k]=h[k].filter(function(C){return C!=A}),E=k):!i&&E!=x&&(h[x]=h[x].filter(function(C){return C!=A}),E=x),I.unshift(A),I.unshift(E);return I},y=[],p=[];for(p=v(f);p.length!=1;)h[p[0]].length==0?(y.unshift(s.getElementById(p.shift())),y.unshift(s.getElementById(p.shift()))):p=v(p.shift()).concat(p);y.unshift(s.getElementById(p.shift()));for(var g in h)if(h[g].length)return d;return d.found=!0,d.trail=this.spawn(y,!0),d}},Dn=function(){var e=this,r={},a=0,n=0,i=[],s=[],o={},u=function(c,d){for(var v=s.length-1,y=[],p=e.spawn();s[v].x!=c||s[v].y!=d;)y.push(s.pop().edge),v--;y.push(s.pop().edge),y.forEach(function(g){var m=g.connectedNodes().intersection(e);p.merge(g),m.forEach(function(b){var E=b.id(),I=b.connectedEdges().intersection(e);p.merge(b),r[E].cutVertex?p.merge(I.filter(function(A){return A.isLoop()})):p.merge(I)})}),i.push(p)},l=function h(c,d,v){c===v&&(n+=1),r[d]={id:a,low:a++,cutVertex:!1};var y=e.getElementById(d).connectedEdges().intersection(e);if(y.size()===0)i.push(e.spawn(e.getElementById(d)));else{var p,g,m,b;y.forEach(function(E){p=E.source().id(),g=E.target().id(),m=p===d?g:p,m!==v&&(b=E.id(),o[b]||(o[b]=!0,s.push({x:d,y:m,edge:E})),m in r?r[d].low=Math.min(r[d].low,r[m].id):(h(c,m,d),r[d].low=Math.min(r[d].low,r[m].low),r[d].id<=r[m].low&&(r[d].cutVertex=!0,u(d,m))))})}};e.forEach(function(h){if(h.isNode()){var c=h.id();c in r||(n=0,l(c,c),r[c].cutVertex=n>1)}});var f=Object.keys(r).filter(function(h){return r[h].cutVertex}).map(function(h){return e.getElementById(h)});return{cut:e.spawn(f),components:i}},Mh={hopcroftTarjanBiconnected:Dn,htbc:Dn,htb:Dn,hopcroftTarjanBiconnectedComponents:Dn},Sn=function(){var e=this,r={},a=0,n=[],i=[],s=e.spawn(e),o=function u(l){i.push(l),r[l]={index:a,low:a++,explored:!1};var f=e.getElementById(l).connectedEdges().intersection(e);if(f.forEach(function(y){var p=y.target().id();p!==l&&(p in r||u(p),r[p].explored||(r[l].low=Math.min(r[l].low,r[p].low)))}),r[l].index===r[l].low){for(var h=e.spawn();;){var c=i.pop();if(h.merge(e.getElementById(c)),r[c].low=r[l].index,r[c].explored=!0,c===l)break}var d=h.edgesWith(h),v=h.merge(d);n.push(v),s=s.difference(v)}};return e.forEach(function(u){if(u.isNode()){var l=u.id();l in r||o(l)}}),{cut:s,components:n}},Ih={tarjanStronglyConnected:Sn,tsc:Sn,tscc:Sn,tarjanStronglyConnectedComponents:Sn},Hs={};[Ra,lf,uf,hf,vf,gf,mf,Uf,aa,na,yi,rh,gh,wh,Ah,Nh,Mh,Ih].forEach(function(t){He(Hs,t)});/*! Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) Licensed under The MIT License (http://opensource.org/licenses/MIT) -*/var Hs=0,Xs=1,Ws=2,yr=function t(e){if(!(this instanceof t))return new t(e);this.id="Thenable/1.0.7",this.state=Hs,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};yr.prototype={fulfill:function(e){return qs(this,Xs,"fulfillValue",e)},reject:function(e){return qs(this,Ws,"rejectReason",e)},then:function(e,r){var a=this,n=new yr;return a.onFulfilled.push(Qs(e,n,"fulfill")),a.onRejected.push(Qs(r,n,"reject")),Ks(a),n.proxy}};var qs=function(e,r,a,n){return e.state===Hs&&(e.state=r,e[a]=n,Ks(e)),e},Ks=function(e){e.state===Xs?Zs(e,"onFulfilled",e.fulfillValue):e.state===Ws&&Zs(e,"onRejected",e.rejectReason)},Zs=function(e,r,a){if(e[r].length!==0){var n=e[r];e[r]=[];var i=function(){for(var o=0;o0}},clearQueue:function(){return function(){var r=this,a=r.length!==void 0,n=a?r:[r],i=this._private.cy||this;if(!i.styleEnabled())return this;for(var s=0;s-1}var Gc=Fc;function zc(t,e){var r=this.__data__,a=An(r,t);return a<0?(++this.size,r.push([t,e])):r[a][1]=e,this}var Vc=zc;function la(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t0&&this.spawn(n).updateStyle().emit("class"),r},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},toggleClass:function(e,r){te(e)||(e=e.match(/\S+/g)||[]);for(var a=this,n=r===void 0,i=[],s=0,o=a.length;s0&&this.spawn(i).updateStyle().emit("class"),a},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,r){var a=this;if(r==null)r=250;else if(r===0)return a;return a.addClass(e),setTimeout(function(){a.removeClass(e)},r),a}};Nn.className=Nn.classNames=Nn.classes;var st={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:gt,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};st.variable="(?:[\\w-.]|(?:\\\\"+st.metaChar+"))+",st.className="(?:[\\w-]|(?:\\\\"+st.metaChar+"))+",st.value=st.string+"|"+st.number,st.id=st.variable,function(){var t,e,r;for(t=st.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&(st.comparatorOp+="|\\!"+e)}();var pt=function(){return{checks:[]}},Pe={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},Di=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort(function(t,e){return eu(t.selector,e.selector)}),Yv=function(){for(var t={},e,r=0;r0&&f.edgeCount>0)return ct("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return ct("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&ct("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},Zv=function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=function(f){return f??""},r=function(f){return j(f)?'"'+f+'"':e(f)},a=function(f){return" "+f+" "},n=function(f,h){var c=f.type,d=f.value;switch(c){case Pe.GROUP:{var v=e(d);return v.substring(0,v.length-1)}case Pe.DATA_COMPARE:{var y=f.field,p=f.operator;return"["+y+a(e(p))+r(d)+"]"}case Pe.DATA_BOOL:{var g=f.operator,m=f.field;return"["+e(g)+m+"]"}case Pe.DATA_EXIST:{var b=f.field;return"["+b+"]"}case Pe.META_COMPARE:{var E=f.operator,I=f.field;return"[["+I+a(e(E))+r(d)+"]]"}case Pe.STATE:return d;case Pe.ID:return"#"+d;case Pe.CLASS:return"."+d;case Pe.PARENT:case Pe.CHILD:return i(f.parent,h)+a(">")+i(f.child,h);case Pe.ANCESTOR:case Pe.DESCENDANT:return i(f.ancestor,h)+" "+i(f.descendant,h);case Pe.COMPOUND_SPLIT:{var A=i(f.left,h),x=i(f.subject,h),k=i(f.right,h);return A+(A.length>0?" ":"")+x+k}case Pe.TRUE:return""}},i=function(f,h){return f.checks.reduce(function(c,d,v){return c+(h===f&&v===0?"$":"")+n(d,h)},"")},s="",o=0;o1&&o=0&&(r=r.replace("!",""),h=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),f=!0),(i||o||f)&&(u=!i&&!s?"":""+e,l=""+a),f&&(e=u=u.toLowerCase(),a=l=l.toLowerCase()),r){case"*=":n=u.indexOf(l)>=0;break;case"$=":n=u.indexOf(l,u.length-l.length)>=0;break;case"^=":n=u.indexOf(l)===0;break;case"=":n=e===a;break;case">":c=!0,n=e>a;break;case">=":c=!0,n=e>=a;break;case"<":c=!0,n=e0;){var f=n.shift();e(f),i.add(f.id()),o&&a(n,i,f)}return t}function ho(t,e,r){if(r.isParent())for(var a=r._private.children,n=0;n1&&arguments[1]!==void 0?arguments[1]:!0;return Ai(this,t,e,ho)};function co(t,e,r){if(r.isChild()){var a=r._private.parent;e.has(a.id())||t.push(a)}}ha.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return Ai(this,t,e,co)};function nd(t,e,r){co(t,e,r),ho(t,e,r)}ha.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return Ai(this,t,e,nd)},ha.ancestors=ha.parents;var $a,vo;$a=vo={data:vt.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:vt.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:vt.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:vt.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:vt.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:vt.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}},$a.attr=$a.data,$a.removeAttr=$a.removeData;var id=vo,Mn={};function Oi(t){return function(e){var r=this;if(e===void 0&&(e=!0),r.length!==0)if(r.isNode()&&!r.removed()){for(var a=0,n=r[0],i=n._private.edges,s=0;se}),minIndegree:ca("indegree",function(t,e){return te}),minOutdegree:ca("outdegree",function(t,e){return te})}),He(Mn,{totalDegree:function(e){for(var r=0,a=this.nodes(),n=0;n0,c=h;h&&(f=f[0]);var d=c?f.position():{x:0,y:0};r!==void 0?l.position(e,r+d[e]):i!==void 0&&l.position({x:i.x+d.x,y:i.y+d.y})}else{var v=a.position(),y=o?a.parent():null,p=y&&y.length>0,g=p;p&&(y=y[0]);var m=g?y.position():{x:0,y:0};return i={x:v.x-m.x,y:v.y-m.y},e===void 0?i:i[e]}else if(!s)return;return this}},rr.modelPosition=rr.point=rr.position,rr.modelPositions=rr.points=rr.positions,rr.renderedPoint=rr.renderedPosition,rr.relativePoint=rr.relativePosition;var sd=go,va,Or;va=Or={},Or.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),a=r.zoom(),n=r.pan(),i=e.x1*a+n.x,s=e.x2*a+n.x,o=e.y1*a+n.y,u=e.y2*a+n.y;return{x1:i,x2:s,y1:o,y2:u,w:s-i,h:u-o}},Or.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var a=r._private;a.compoundBoundsClean=!1,a.bbCache=null,t||r.emitAndNotify("bounds")}}),this)},Or.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var o=s._private,u=s.children(),l=s.pstyle("compound-sizing-wrt-labels").value==="include",f={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},h=u.boundingBox({includeLabels:l,includeOverlays:!1,useCache:!1}),c=o.position;(h.w===0||h.h===0)&&(h={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},h.x1=c.x-h.w/2,h.x2=c.x+h.w/2,h.y1=c.y-h.h/2,h.y2=c.y+h.h/2);function d(C,B,G){var M=0,W=0,F=B+G;return C>0&&F>0&&(M=B/F*C,W=G/F*C),{biasDiff:M,biasComplementDiff:W}}function v(C,B,G,M){if(G.units==="%")switch(M){case"width":return C>0?G.pfValue*C:0;case"height":return B>0?G.pfValue*B:0;case"average":return C>0&&B>0?G.pfValue*(C+B)/2:0;case"min":return C>0&&B>0?C>B?G.pfValue*B:G.pfValue*C:0;case"max":return C>0&&B>0?C>B?G.pfValue*C:G.pfValue*B:0;default:return 0}else return G.units==="px"?G.pfValue:0}var y=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(y=y*100/f.width.val);var p=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(p=p*100/f.width.val);var g=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(g=g*100/f.height.val);var m=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(m=m*100/f.height.val);var b=d(f.width.val-h.w,y,p),E=b.biasDiff,I=b.biasComplementDiff,A=d(f.height.val-h.h,g,m),x=A.biasDiff,k=A.biasComplementDiff;o.autoPadding=v(h.w,h.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),o.autoWidth=Math.max(h.w,f.width.val),c.x=(-E+h.x1+h.x2+I)/2,o.autoHeight=Math.max(h.h,f.height.val),c.y=(-x+h.y1+h.y2+k)/2}for(var a=0;ae.x2?n:e.x2,e.y1=ae.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},Vr=function(e,r){return r==null?e:ar(e,r.x1,r.y1,r.x2,r.y2)},_a=function(e,r,a){return tr(e,r,a)},In=function(e,r,a){if(!r.cy().headless()){var n=r._private,i=n.rstyle,s=i.arrowWidth/2,o=r.pstyle(a+"-arrow-shape").value,u,l;if(o!=="none"){a==="source"?(u=i.srcX,l=i.srcY):a==="target"?(u=i.tgtX,l=i.tgtY):(u=i.midX,l=i.midY);var f=n.arrowBounds=n.arrowBounds||{},h=f[a]=f[a]||{};h.x1=u-s,h.y1=l-s,h.x2=u+s,h.y2=l+s,h.w=h.x2-h.x1,h.h=h.y2-h.y1,yn(h,1),ar(e,h.x1,h.y1,h.x2,h.y2)}}},Ni=function(e,r,a){if(!r.cy().headless()){var n;a?n=a+"-":n="";var i=r._private,s=i.rstyle,o=r.pstyle(n+"label").strValue;if(o){var u=r.pstyle("text-halign"),l=r.pstyle("text-valign"),f=_a(s,"labelWidth",a),h=_a(s,"labelHeight",a),c=_a(s,"labelX",a),d=_a(s,"labelY",a),v=r.pstyle(n+"text-margin-x").pfValue,y=r.pstyle(n+"text-margin-y").pfValue,p=r.isEdge(),g=r.pstyle(n+"text-rotation"),m=r.pstyle("text-outline-width").pfValue,b=r.pstyle("text-border-width").pfValue,E=b/2,I=r.pstyle("text-background-padding").pfValue,A=2,x=h,k=f,C=k/2,B=x/2,G,M,W,F;if(p)G=c-C,M=c+C,W=d-B,F=d+B;else{switch(u.value){case"left":G=c-k,M=c;break;case"center":G=c-C,M=c+C;break;case"right":G=c,M=c+k;break}switch(l.value){case"top":W=d-x,F=d;break;case"center":W=d-B,F=d+B;break;case"bottom":W=d,F=d+x;break}}G+=v-Math.max(m,E)-I-A,M+=v+Math.max(m,E)+I+A,W+=y-Math.max(m,E)-I-A,F+=y+Math.max(m,E)+I+A;var re=a||"main",K=i.labelBounds,X=K[re]=K[re]||{};X.x1=G,X.y1=W,X.x2=M,X.y2=F,X.w=M-G,X.h=F-W;var ne=p&&g.strValue==="autorotate",ue=g.pfValue!=null&&g.pfValue!==0;if(ne||ue){var me=ne?_a(i.rstyle,"labelAngle",a):g.pfValue,ie=Math.cos(me),de=Math.sin(me),we=(G+M)/2,De=(W+F)/2;if(!p){switch(u.value){case"left":we=M;break;case"right":we=G;break}switch(l.value){case"top":De=F;break;case"bottom":De=W;break}}var xe=function(Xe,Ie){return Xe=Xe-we,Ie=Ie-De,{x:Xe*ie-Ie*de+we,y:Xe*de+Ie*ie+De}},Te=xe(G,W),se=xe(G,F),Se=xe(M,W),Ae=xe(M,F);G=Math.min(Te.x,se.x,Se.x,Ae.x),M=Math.max(Te.x,se.x,Se.x,Ae.x),W=Math.min(Te.y,se.y,Se.y,Ae.y),F=Math.max(Te.y,se.y,Se.y,Ae.y)}var Le=re+"Rot",Ne=K[Le]=K[Le]||{};Ne.x1=G,Ne.y1=W,Ne.x2=M,Ne.y2=F,Ne.w=M-G,Ne.h=F-W,ar(e,G,W,M,F),ar(i.labelBounds.all,G,W,M,F)}return e}},od=function(e,r){if(!r.cy().headless()){var a=r.pstyle("outline-opacity").value,n=r.pstyle("outline-width").value;if(a>0&&n>0){var i=r.pstyle("outline-offset").value,s=r.pstyle("shape").value,o=n+i,u=(e.w+o*2)/e.w,l=(e.h+o*2)/e.h,f=0,h=0;["diamond","pentagon","round-triangle"].includes(s)?(u=(e.w+o*2.4)/e.w,h=-o/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(s)?u=(e.w+o*2.4)/e.w:s==="star"?(u=(e.w+o*2.8)/e.w,l=(e.h+o*2.6)/e.h,h=-o/3.8):s==="triangle"?(u=(e.w+o*2.8)/e.w,l=(e.h+o*2.4)/e.h,h=-o/1.4):s==="vee"&&(u=(e.w+o*4.4)/e.w,l=(e.h+o*3.8)/e.h,h=-o*.5);var c=e.h*l-e.h,d=e.w*u-e.w;if(mn(e,[Math.ceil(c/2),Math.ceil(d/2)]),f!=0||h!==0){var v=Af(e,f,h);xs(e,v)}}}},ld=function(e,r){var a=e._private.cy,n=a.styleEnabled(),i=a.headless(),s=Yt(),o=e._private,u=e.isNode(),l=e.isEdge(),f,h,c,d,v,y,p=o.rstyle,g=u&&n?e.pstyle("bounds-expansion").pfValue:[0],m=function($e){return $e.pstyle("display").value!=="none"},b=!n||m(e)&&(!l||m(e.source())&&m(e.target()));if(b){var E=0,I=0;n&&r.includeOverlays&&(E=e.pstyle("overlay-opacity").value,E!==0&&(I=e.pstyle("overlay-padding").value));var A=0,x=0;n&&r.includeUnderlays&&(A=e.pstyle("underlay-opacity").value,A!==0&&(x=e.pstyle("underlay-padding").value));var k=Math.max(I,x),C=0,B=0;if(n&&(C=e.pstyle("width").pfValue,B=C/2),u&&r.includeNodes){var G=e.position();v=G.x,y=G.y;var M=e.outerWidth(),W=M/2,F=e.outerHeight(),re=F/2;f=v-W,h=v+W,c=y-re,d=y+re,ar(s,f,c,h,d),n&&r.includeOutlines&&od(s,e)}else if(l&&r.includeEdges)if(n&&!i){var K=e.pstyle("curve-style").strValue;if(f=Math.min(p.srcX,p.midX,p.tgtX),h=Math.max(p.srcX,p.midX,p.tgtX),c=Math.min(p.srcY,p.midY,p.tgtY),d=Math.max(p.srcY,p.midY,p.tgtY),f-=B,h+=B,c-=B,d+=B,ar(s,f,c,h,d),K==="haystack"){var X=p.haystackPts;if(X&&X.length===2){if(f=X[0].x,c=X[0].y,h=X[1].x,d=X[1].y,f>h){var ne=f;f=h,h=ne}if(c>d){var ue=c;c=d,d=ue}ar(s,f-B,c-B,h+B,d+B)}}else if(K==="bezier"||K==="unbundled-bezier"||K==="segments"||K==="taxi"){var me;switch(K){case"bezier":case"unbundled-bezier":me=p.bezierPts;break;case"segments":case"taxi":me=p.linePts;break}if(me!=null)for(var ie=0;ieh){var se=f;f=h,h=se}if(c>d){var Se=c;c=d,d=Se}f-=B,h+=B,c-=B,d+=B,ar(s,f,c,h,d)}if(n&&r.includeEdges&&l&&(In(s,e,"mid-source"),In(s,e,"mid-target"),In(s,e,"source"),In(s,e,"target")),n){var Ae=e.pstyle("ghost").value==="yes";if(Ae){var Le=e.pstyle("ghost-offset-x").pfValue,Ne=e.pstyle("ghost-offset-y").pfValue;ar(s,s.x1+Le,s.y1+Ne,s.x2+Le,s.y2+Ne)}}var Fe=o.bodyBounds=o.bodyBounds||{};Ts(Fe,s),mn(Fe,g),yn(Fe,1),n&&(f=s.x1,h=s.x2,c=s.y1,d=s.y2,ar(s,f-k,c-k,h+k,d+k));var Xe=o.overlayBounds=o.overlayBounds||{};Ts(Xe,s),mn(Xe,g),yn(Xe,1);var Ie=o.labelBounds=o.labelBounds||{};Ie.all!=null?Lf(Ie.all):Ie.all=Yt(),n&&r.includeLabels&&(r.includeMainLabels&&Ni(s,e,null),l&&(r.includeSourceLabels&&Ni(s,e,"source"),r.includeTargetLabels&&Ni(s,e,"target")))}return s.x1=Qt(s.x1),s.y1=Qt(s.y1),s.x2=Qt(s.x2),s.y2=Qt(s.y2),s.w=Qt(s.x2-s.x1),s.h=Qt(s.y2-s.y1),s.w>0&&s.h>0&&b&&(mn(s,g),yn(s,1)),s},mo=function(e){var r=0,a=function(s){return(s?1:0)<0}},clearQueue:function(){return function(){var r=this,a=r.length!==void 0,n=a?r:[r],i=this._private.cy||this;if(!i.styleEnabled())return this;for(var s=0;s-1}var zc=Gc;function Vc(t,e){var r=this.__data__,a=An(r,t);return a<0?(++this.size,r.push([t,e])):r[a][1]=e,this}var $c=Vc;function la(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t0&&this.spawn(n).updateStyle().emit("class"),r},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},toggleClass:function(e,r){te(e)||(e=e.match(/\S+/g)||[]);for(var a=this,n=r===void 0,i=[],s=0,o=a.length;s0&&this.spawn(i).updateStyle().emit("class"),a},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,r){var a=this;if(r==null)r=250;else if(r===0)return a;return a.addClass(e),setTimeout(function(){a.removeClass(e)},r),a}};Nn.className=Nn.classNames=Nn.classes;var st={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:gt,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};st.variable="(?:[\\w-.]|(?:\\\\"+st.metaChar+"))+",st.className="(?:[\\w-]|(?:\\\\"+st.metaChar+"))+",st.value=st.string+"|"+st.number,st.id=st.variable,function(){var t,e,r;for(t=st.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&(st.comparatorOp+="|\\!"+e)}();var pt=function(){return{checks:[]}},Pe={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},Di=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort(function(t,e){return tu(t.selector,e.selector)}),Hv=function(){for(var t={},e,r=0;r0&&f.edgeCount>0)return ct("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return ct("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&ct("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},Qv=function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=function(f){return f??""},r=function(f){return j(f)?'"'+f+'"':e(f)},a=function(f){return" "+f+" "},n=function(f,h){var c=f.type,d=f.value;switch(c){case Pe.GROUP:{var v=e(d);return v.substring(0,v.length-1)}case Pe.DATA_COMPARE:{var y=f.field,p=f.operator;return"["+y+a(e(p))+r(d)+"]"}case Pe.DATA_BOOL:{var g=f.operator,m=f.field;return"["+e(g)+m+"]"}case Pe.DATA_EXIST:{var b=f.field;return"["+b+"]"}case Pe.META_COMPARE:{var E=f.operator,I=f.field;return"[["+I+a(e(E))+r(d)+"]]"}case Pe.STATE:return d;case Pe.ID:return"#"+d;case Pe.CLASS:return"."+d;case Pe.PARENT:case Pe.CHILD:return i(f.parent,h)+a(">")+i(f.child,h);case Pe.ANCESTOR:case Pe.DESCENDANT:return i(f.ancestor,h)+" "+i(f.descendant,h);case Pe.COMPOUND_SPLIT:{var A=i(f.left,h),x=i(f.subject,h),k=i(f.right,h);return A+(A.length>0?" ":"")+x+k}case Pe.TRUE:return""}},i=function(f,h){return f.checks.reduce(function(c,d,v){return c+(h===f&&v===0?"$":"")+n(d,h)},"")},s="",o=0;o1&&o=0&&(r=r.replace("!",""),h=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),f=!0),(i||o||f)&&(u=!i&&!s?"":""+e,l=""+a),f&&(e=u=u.toLowerCase(),a=l=l.toLowerCase()),r){case"*=":n=u.indexOf(l)>=0;break;case"$=":n=u.indexOf(l,u.length-l.length)>=0;break;case"^=":n=u.indexOf(l)===0;break;case"=":n=e===a;break;case">":c=!0,n=e>a;break;case">=":c=!0,n=e>=a;break;case"<":c=!0,n=e0;){var f=n.shift();e(f),i.add(f.id()),o&&a(n,i,f)}return t}function co(t,e,r){if(r.isParent())for(var a=r._private.children,n=0;n1&&arguments[1]!==void 0?arguments[1]:!0;return Ai(this,t,e,co)};function vo(t,e,r){if(r.isChild()){var a=r._private.parent;e.has(a.id())||t.push(a)}}ha.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return Ai(this,t,e,vo)};function id(t,e,r){vo(t,e,r),co(t,e,r)}ha.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return Ai(this,t,e,id)},ha.ancestors=ha.parents;var $a,go;$a=go={data:vt.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:vt.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:vt.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:vt.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:vt.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:vt.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}},$a.attr=$a.data,$a.removeAttr=$a.removeData;var sd=go,Mn={};function Oi(t){return function(e){var r=this;if(e===void 0&&(e=!0),r.length!==0)if(r.isNode()&&!r.removed()){for(var a=0,n=r[0],i=n._private.edges,s=0;se}),minIndegree:ca("indegree",function(t,e){return te}),minOutdegree:ca("outdegree",function(t,e){return te})}),He(Mn,{totalDegree:function(e){for(var r=0,a=this.nodes(),n=0;n0,c=h;h&&(f=f[0]);var d=c?f.position():{x:0,y:0};r!==void 0?l.position(e,r+d[e]):i!==void 0&&l.position({x:i.x+d.x,y:i.y+d.y})}else{var v=a.position(),y=o?a.parent():null,p=y&&y.length>0,g=p;p&&(y=y[0]);var m=g?y.position():{x:0,y:0};return i={x:v.x-m.x,y:v.y-m.y},e===void 0?i:i[e]}else if(!s)return;return this}},rr.modelPosition=rr.point=rr.position,rr.modelPositions=rr.points=rr.positions,rr.renderedPoint=rr.renderedPosition,rr.relativePoint=rr.relativePosition;var od=po,va,Or;va=Or={},Or.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),a=r.zoom(),n=r.pan(),i=e.x1*a+n.x,s=e.x2*a+n.x,o=e.y1*a+n.y,u=e.y2*a+n.y;return{x1:i,x2:s,y1:o,y2:u,w:s-i,h:u-o}},Or.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var a=r._private;a.compoundBoundsClean=!1,a.bbCache=null,t||r.emitAndNotify("bounds")}}),this)},Or.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var o=s._private,u=s.children(),l=s.pstyle("compound-sizing-wrt-labels").value==="include",f={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},h=u.boundingBox({includeLabels:l,includeOverlays:!1,useCache:!1}),c=o.position;(h.w===0||h.h===0)&&(h={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},h.x1=c.x-h.w/2,h.x2=c.x+h.w/2,h.y1=c.y-h.h/2,h.y2=c.y+h.h/2);function d(C,F,G){var M=0,X=0,B=F+G;return C>0&&B>0&&(M=F/B*C,X=G/B*C),{biasDiff:M,biasComplementDiff:X}}function v(C,F,G,M){if(G.units==="%")switch(M){case"width":return C>0?G.pfValue*C:0;case"height":return F>0?G.pfValue*F:0;case"average":return C>0&&F>0?G.pfValue*(C+F)/2:0;case"min":return C>0&&F>0?C>F?G.pfValue*F:G.pfValue*C:0;case"max":return C>0&&F>0?C>F?G.pfValue*C:G.pfValue*F:0;default:return 0}else return G.units==="px"?G.pfValue:0}var y=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(y=y*100/f.width.val);var p=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(p=p*100/f.width.val);var g=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(g=g*100/f.height.val);var m=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(m=m*100/f.height.val);var b=d(f.width.val-h.w,y,p),E=b.biasDiff,I=b.biasComplementDiff,A=d(f.height.val-h.h,g,m),x=A.biasDiff,k=A.biasComplementDiff;o.autoPadding=v(h.w,h.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),o.autoWidth=Math.max(h.w,f.width.val),c.x=(-E+h.x1+h.x2+I)/2,o.autoHeight=Math.max(h.h,f.height.val),c.y=(-x+h.y1+h.y2+k)/2}for(var a=0;ae.x2?n:e.x2,e.y1=ae.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},Vr=function(e,r){return r==null?e:ar(e,r.x1,r.y1,r.x2,r.y2)},_a=function(e,r,a){return tr(e,r,a)},In=function(e,r,a){if(!r.cy().headless()){var n=r._private,i=n.rstyle,s=i.arrowWidth/2,o=r.pstyle(a+"-arrow-shape").value,u,l;if(o!=="none"){a==="source"?(u=i.srcX,l=i.srcY):a==="target"?(u=i.tgtX,l=i.tgtY):(u=i.midX,l=i.midY);var f=n.arrowBounds=n.arrowBounds||{},h=f[a]=f[a]||{};h.x1=u-s,h.y1=l-s,h.x2=u+s,h.y2=l+s,h.w=h.x2-h.x1,h.h=h.y2-h.y1,yn(h,1),ar(e,h.x1,h.y1,h.x2,h.y2)}}},Ni=function(e,r,a){if(!r.cy().headless()){var n;a?n=a+"-":n="";var i=r._private,s=i.rstyle,o=r.pstyle(n+"label").strValue;if(o){var u=r.pstyle("text-halign"),l=r.pstyle("text-valign"),f=_a(s,"labelWidth",a),h=_a(s,"labelHeight",a),c=_a(s,"labelX",a),d=_a(s,"labelY",a),v=r.pstyle(n+"text-margin-x").pfValue,y=r.pstyle(n+"text-margin-y").pfValue,p=r.isEdge(),g=r.pstyle(n+"text-rotation"),m=r.pstyle("text-outline-width").pfValue,b=r.pstyle("text-border-width").pfValue,E=b/2,I=r.pstyle("text-background-padding").pfValue,A=2,x=h,k=f,C=k/2,F=x/2,G,M,X,B;if(p)G=c-C,M=c+C,X=d-F,B=d+F;else{switch(u.value){case"left":G=c-k,M=c;break;case"center":G=c-C,M=c+C;break;case"right":G=c,M=c+k;break}switch(l.value){case"top":X=d-x,B=d;break;case"center":X=d-F,B=d+F;break;case"bottom":X=d,B=d+x;break}}G+=v-Math.max(m,E)-I-A,M+=v+Math.max(m,E)+I+A,X+=y-Math.max(m,E)-I-A,B+=y+Math.max(m,E)+I+A;var re=a||"main",K=i.labelBounds,q=K[re]=K[re]||{};q.x1=G,q.y1=X,q.x2=M,q.y2=B,q.w=M-G,q.h=B-X;var ae=p&&g.strValue==="autorotate",ue=g.pfValue!=null&&g.pfValue!==0;if(ae||ue){var be=ae?_a(i.rstyle,"labelAngle",a):g.pfValue,ie=Math.cos(be),ge=Math.sin(be),we=(G+M)/2,De=(X+B)/2;if(!p){switch(u.value){case"left":we=M;break;case"right":we=G;break}switch(l.value){case"top":De=B;break;case"bottom":De=X;break}}var xe=function(Xe,Ie){return Xe=Xe-we,Ie=Ie-De,{x:Xe*ie-Ie*ge+we,y:Xe*ge+Ie*ie+De}},Se=xe(G,X),se=xe(G,B),Te=xe(M,X),Ae=xe(M,B);G=Math.min(Se.x,se.x,Te.x,Ae.x),M=Math.max(Se.x,se.x,Te.x,Ae.x),X=Math.min(Se.y,se.y,Te.y,Ae.y),B=Math.max(Se.y,se.y,Te.y,Ae.y)}var Le=re+"Rot",Ne=K[Le]=K[Le]||{};Ne.x1=G,Ne.y1=X,Ne.x2=M,Ne.y2=B,Ne.w=M-G,Ne.h=B-X,ar(e,G,X,M,B),ar(i.labelBounds.all,G,X,M,B)}return e}},ld=function(e,r){if(!r.cy().headless()){var a=r.pstyle("outline-opacity").value,n=r.pstyle("outline-width").value;if(a>0&&n>0){var i=r.pstyle("outline-offset").value,s=r.pstyle("shape").value,o=n+i,u=(e.w+o*2)/e.w,l=(e.h+o*2)/e.h,f=0,h=0;["diamond","pentagon","round-triangle"].includes(s)?(u=(e.w+o*2.4)/e.w,h=-o/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(s)?u=(e.w+o*2.4)/e.w:s==="star"?(u=(e.w+o*2.8)/e.w,l=(e.h+o*2.6)/e.h,h=-o/3.8):s==="triangle"?(u=(e.w+o*2.8)/e.w,l=(e.h+o*2.4)/e.h,h=-o/1.4):s==="vee"&&(u=(e.w+o*4.4)/e.w,l=(e.h+o*3.8)/e.h,h=-o*.5);var c=e.h*l-e.h,d=e.w*u-e.w;if(mn(e,[Math.ceil(c/2),Math.ceil(d/2)]),f!=0||h!==0){var v=Of(e,f,h);Ts(e,v)}}}},ud=function(e,r){var a=e._private.cy,n=a.styleEnabled(),i=a.headless(),s=Yt(),o=e._private,u=e.isNode(),l=e.isEdge(),f,h,c,d,v,y,p=o.rstyle,g=u&&n?e.pstyle("bounds-expansion").pfValue:[0],m=function($e){return $e.pstyle("display").value!=="none"},b=!n||m(e)&&(!l||m(e.source())&&m(e.target()));if(b){var E=0,I=0;n&&r.includeOverlays&&(E=e.pstyle("overlay-opacity").value,E!==0&&(I=e.pstyle("overlay-padding").value));var A=0,x=0;n&&r.includeUnderlays&&(A=e.pstyle("underlay-opacity").value,A!==0&&(x=e.pstyle("underlay-padding").value));var k=Math.max(I,x),C=0,F=0;if(n&&(C=e.pstyle("width").pfValue,F=C/2),u&&r.includeNodes){var G=e.position();v=G.x,y=G.y;var M=e.outerWidth(),X=M/2,B=e.outerHeight(),re=B/2;f=v-X,h=v+X,c=y-re,d=y+re,ar(s,f,c,h,d),n&&r.includeOutlines&&ld(s,e)}else if(l&&r.includeEdges)if(n&&!i){var K=e.pstyle("curve-style").strValue;if(f=Math.min(p.srcX,p.midX,p.tgtX),h=Math.max(p.srcX,p.midX,p.tgtX),c=Math.min(p.srcY,p.midY,p.tgtY),d=Math.max(p.srcY,p.midY,p.tgtY),f-=F,h+=F,c-=F,d+=F,ar(s,f,c,h,d),K==="haystack"){var q=p.haystackPts;if(q&&q.length===2){if(f=q[0].x,c=q[0].y,h=q[1].x,d=q[1].y,f>h){var ae=f;f=h,h=ae}if(c>d){var ue=c;c=d,d=ue}ar(s,f-F,c-F,h+F,d+F)}}else if(K==="bezier"||K==="unbundled-bezier"||K==="segments"||K==="taxi"){var be;switch(K){case"bezier":case"unbundled-bezier":be=p.bezierPts;break;case"segments":case"taxi":be=p.linePts;break}if(be!=null)for(var ie=0;ieh){var se=f;f=h,h=se}if(c>d){var Te=c;c=d,d=Te}f-=F,h+=F,c-=F,d+=F,ar(s,f,c,h,d)}if(n&&r.includeEdges&&l&&(In(s,e,"mid-source"),In(s,e,"mid-target"),In(s,e,"source"),In(s,e,"target")),n){var Ae=e.pstyle("ghost").value==="yes";if(Ae){var Le=e.pstyle("ghost-offset-x").pfValue,Ne=e.pstyle("ghost-offset-y").pfValue;ar(s,s.x1+Le,s.y1+Ne,s.x2+Le,s.y2+Ne)}}var Fe=o.bodyBounds=o.bodyBounds||{};Cs(Fe,s),mn(Fe,g),yn(Fe,1),n&&(f=s.x1,h=s.x2,c=s.y1,d=s.y2,ar(s,f-k,c-k,h+k,d+k));var Xe=o.overlayBounds=o.overlayBounds||{};Cs(Xe,s),mn(Xe,g),yn(Xe,1);var Ie=o.labelBounds=o.labelBounds||{};Ie.all!=null?Af(Ie.all):Ie.all=Yt(),n&&r.includeLabels&&(r.includeMainLabels&&Ni(s,e,null),l&&(r.includeSourceLabels&&Ni(s,e,"source"),r.includeTargetLabels&&Ni(s,e,"target")))}return s.x1=Qt(s.x1),s.y1=Qt(s.y1),s.x2=Qt(s.x2),s.y2=Qt(s.y2),s.w=Qt(s.x2-s.x1),s.h=Qt(s.y2-s.y1),s.w>0&&s.h>0&&b&&(mn(s,g),yn(s,1)),s},bo=function(e){var r=0,a=function(s){return(s?1:0)<0&&arguments[0]!==void 0?arguments[0]:Td,e=arguments.length>1?arguments[1]:void 0,r=0;r=0;o--)s(o);return this},Nr.removeAllListeners=function(){return this.removeListener("*")},Nr.emit=Nr.trigger=function(t,e,r){var a=this.listeners,n=a.length;return this.emitting++,te(e)||(e=[e]),Cd(this,function(i,s){r!=null&&(a=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],n=a.length);for(var o=function(f){var h=a[f];if(h.type===s.type&&(!h.namespace||h.namespace===s.namespace||h.namespace===xd)&&i.eventMatches(i.context,h,s)){var c=[s];e!=null&&ef(c,e),i.beforeEmit(i.context,h,s),h.conf&&h.conf.one&&(i.listeners=i.listeners.filter(function(y){return y!==h}));var d=i.callbackContext(i.context,h,s),v=h.callback.apply(d,c);i.afterEmit(i.context,h,s),v===!1&&(s.stopPropagation(),s.preventDefault())}},u=0;u1&&!s){var o=this.length-1,u=this[o],l=u._private.data.id;this[o]=void 0,this[e]=u,i.set(l,{ele:u,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var r=this._private,a=e._private.data.id,n=r.map,i=n.get(a);if(!i)return this;var s=i.index;return this.unmergeAt(s),this},unmerge:function(e){var r=this._private.cy;if(!e)return this;if(e&&j(e)){var a=e;e=r.mutableElements().filter(a)}for(var n=0;n=0;r--){var a=this[r];e(a)&&this.unmergeAt(r)}return this},map:function(e,r){for(var a=[],n=this,i=0;ia&&(a=u,n=o)}return{value:a,ele:n}},min:function(e,r){for(var a=1/0,n,i=this,s=0;s=0&&i"u"?"undefined":ee(Symbol))!=e&&ee(Symbol.iterator)!=e;r&&(Bn[Symbol.iterator]=function(){var a=this,n={value:void 0,done:!1},i=0,s=this.length;return T({next:function(){return i1&&arguments[1]!==void 0?arguments[1]:!0,a=this[0],n=a.cy();if(n.styleEnabled()&&a){this.cleanStyle();var i=a._private.style[e];return i??(r?n.style().getDefaultProperty(e):null)}},numericStyle:function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var a=r.pstyle(e);return a.pfValue!==void 0?a.pfValue:a.value}},numericStyleUnits:function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},renderedStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=this[0];if(a)return r.style().getRenderedStyle(a,e)},style:function(e,r){var a=this.cy();if(!a.styleEnabled())return this;var n=!1,i=a.style();if(L(e)){var s=e;i.applyBypass(this,s,n),this.emitAndNotify("style")}else if(j(e))if(r===void 0){var o=this[0];return o?i.getStylePropertyValue(o,e):void 0}else i.applyBypass(this,e,r,n),this.emitAndNotify("style");else if(e===void 0){var u=this[0];return u?i.getRawStyle(u):void 0}return this},removeStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=!1,n=r.style(),i=this;if(e===void 0)for(var s=0;s0&&e.push(f[0]),e.push(o[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),Bt.neighbourhood=Bt.neighborhood,Bt.closedNeighbourhood=Bt.closedNeighborhood,Bt.openNeighbourhood=Bt.openNeighborhood,He(Bt,{source:Zt(function(e){var r=this[0],a;return r&&(a=r._private.source||r.cy().collection()),a&&e?a.filter(e):a},"source"),target:Zt(function(e){var r=this[0],a;return r&&(a=r._private.target||r.cy().collection()),a&&e?a.filter(e):a},"target"),sources:zo({attr:"source"}),targets:zo({attr:"target"})});function zo(t){return function(r){for(var a=[],n=0;n0);return s},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),Bt.componentsOf=Bt.components;var Nt=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){Tt("A collection must have a reference to the core");return}var i=new ur,s=!1;if(!r)r=[];else if(r.length>0&&L(r[0])&&!Oe(r[0])){s=!0;for(var o=[],u=new jr,l=0,f=r.length;l0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=r.cy(),n=a._private,i=[],s=[],o,u=0,l=r.length;u0){for(var ue=o.length===r.length?r:new Nt(a,o),me=0;me0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=[],n={},i=r._private.cy;function s(F){for(var re=F._private.edges,K=0;K0&&(t?G.emitAndNotify("remove"):e&&G.emit("remove"));for(var M=0;M0?M=F:G=F;while(Math.abs(W)>s&&++re=i?m(B,re):K===0?re:E(B,G,G+l)}var A=!1;function x(){A=!0,(t!==e||r!==a)&&b()}var k=function(G){return A||x(),t===e&&r===a?G:G===0?0:G===1?1:p(I(G),e,a)};k.getControlPoints=function(){return[{x:t,y:e},{x:r,y:a}]};var C="generateBezier("+[t,e,r,a]+")";return k.toString=function(){return C},k}/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */var Pd=function(){function t(a){return-a.tension*a.x-a.friction*a.v}function e(a,n,i){var s={x:a.x+i.dx*n,v:a.v+i.dv*n,tension:a.tension,friction:a.friction};return{dx:s.v,dv:t(s)}}function r(a,n){var i={dx:a.v,dv:t(a)},s=e(a,n*.5,i),o=e(a,n*.5,s),u=e(a,n,o),l=1/6*(i.dx+2*(s.dx+o.dx)+u.dx),f=1/6*(i.dv+2*(s.dv+o.dv)+u.dv);return a.x=a.x+l*n,a.v=a.v+f*n,a}return function a(n,i,s){var o={x:-1,v:0,tension:null,friction:null},u=[0],l=0,f=1/1e4,h=16/1e3,c,d,v;for(n=parseFloat(n)||500,i=parseFloat(i)||20,s=s||null,o.tension=n,o.friction=i,c=s!==null,c?(l=a(n,i),d=l/s*h):d=h;v=r(v||o,d),u.push(1+v.x),l+=16,Math.abs(v.x)>f&&Math.abs(v.v)>f;);return c?function(y){return u[y*(u.length-1)|0]}:l}}(),Et=function(e,r,a,n){var i=kd(e,r,a,n);return function(s,o,u){return s+(o-s)*i(u)}},Vn={linear:function(e,r,a){return e+(r-e)*a},ease:Et(.25,.1,.25,1),"ease-in":Et(.42,0,1,1),"ease-out":Et(0,0,.58,1),"ease-in-out":Et(.42,0,.58,1),"ease-in-sine":Et(.47,0,.745,.715),"ease-out-sine":Et(.39,.575,.565,1),"ease-in-out-sine":Et(.445,.05,.55,.95),"ease-in-quad":Et(.55,.085,.68,.53),"ease-out-quad":Et(.25,.46,.45,.94),"ease-in-out-quad":Et(.455,.03,.515,.955),"ease-in-cubic":Et(.55,.055,.675,.19),"ease-out-cubic":Et(.215,.61,.355,1),"ease-in-out-cubic":Et(.645,.045,.355,1),"ease-in-quart":Et(.895,.03,.685,.22),"ease-out-quart":Et(.165,.84,.44,1),"ease-in-out-quart":Et(.77,0,.175,1),"ease-in-quint":Et(.755,.05,.855,.06),"ease-out-quint":Et(.23,1,.32,1),"ease-in-out-quint":Et(.86,0,.07,1),"ease-in-expo":Et(.95,.05,.795,.035),"ease-out-expo":Et(.19,1,.22,1),"ease-in-out-expo":Et(1,0,0,1),"ease-in-circ":Et(.6,.04,.98,.335),"ease-out-circ":Et(.075,.82,.165,1),"ease-in-out-circ":Et(.785,.135,.15,.86),spring:function(e,r,a){if(a===0)return Vn.linear;var n=Pd(e,r,a);return function(i,s,o){return i+(s-i)*n(o)}},"cubic-bezier":Et};function _o(t,e,r,a,n){if(a===1||e===r)return r;var i=n(e,r,a);return t==null||((t.roundValue||t.color)&&(i=Math.round(i)),t.min!==void 0&&(i=Math.max(i,t.min)),t.max!==void 0&&(i=Math.min(i,t.max))),i}function Uo(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function pa(t,e,r,a,n){var i=n!=null?n.type:null;r<0?r=0:r>1&&(r=1);var s=Uo(t,n),o=Uo(e,n);if(R(s)&&R(o))return _o(i,s,o,r,a);if(te(s)&&te(o)){for(var u=[],l=0;l0?(d==="spring"&&v.push(s.duration),s.easingImpl=Vn[d].apply(null,v)):s.easingImpl=Vn[d]}var y=s.easingImpl,p;if(s.duration===0?p=1:p=(r-u)/s.duration,s.applying&&(p=s.progress),p<0?p=0:p>1&&(p=1),s.delay==null){var g=s.startPosition,m=s.position;if(m&&n&&!t.locked()){var b={};Wa(g.x,m.x)&&(b.x=pa(g.x,m.x,p,y)),Wa(g.y,m.y)&&(b.y=pa(g.y,m.y,p,y)),t.position(b)}var E=s.startPan,I=s.pan,A=i.pan,x=I!=null&&a;x&&(Wa(E.x,I.x)&&(A.x=pa(E.x,I.x,p,y)),Wa(E.y,I.y)&&(A.y=pa(E.y,I.y,p,y)),t.emit("pan"));var k=s.startZoom,C=s.zoom,B=C!=null&&a;B&&(Wa(k,C)&&(i.zoom=Pa(i.minZoom,pa(k,C,p,y),i.maxZoom)),t.emit("zoom")),(x||B)&&t.emit("viewport");var G=s.style;if(G&&G.length>0&&n){for(var M=0;M=0;x--){var k=A[x];k()}A.splice(0,A.length)},m=d.length-1;m>=0;m--){var b=d[m],E=b._private;if(E.stopped){d.splice(m,1),E.hooked=!1,E.playing=!1,E.started=!1,g(E.frames);continue}!E.playing&&!E.applying||(E.playing&&E.applying&&(E.applying=!1),E.started||Fd(f,b,t),Bd(f,b,t,h),E.applying&&(E.applying=!1),g(E.frames),E.step!=null&&E.step(t),b.completed()&&(d.splice(m,1),E.hooked=!1,E.playing=!1,E.started=!1,g(E.completes)),y=!0)}return!h&&d.length===0&&v.length===0&&a.push(f),y}for(var i=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(a),e.emit("step")}var Gd={animate:vt.animate(),animation:vt.animation(),animated:vt.animated(),clearQueue:vt.clearQueue(),delay:vt.delay(),delayAnimation:vt.delayAnimation(),stop:vt.stop(),addToAnimationPool:function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&hn(function(i){Yo(i,e),r()})}var a=e.renderer();a&&a.beforeRender?a.beforeRender(function(i,s){Yo(s,e)},a.beforeRenderPriorities.animations):r()}},zd={qualifierCompare:function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},eventMatches:function(e,r,a){var n=r.qualifier;return n!=null?e!==a.target&&Oe(a.target)&&n.matches(a.target):!0},addEventFields:function(e,r){r.cy=e,r.target=e},callbackContext:function(e,r,a){return r.qualifier!=null?a.target:e}},$n=function(e){return j(e)?new Sr(e):e},Ho={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new kn(zd,this)),this},emitter:function(){return this._private.emitter},on:function(e,r,a){return this.emitter().on(e,$n(r),a),this},removeListener:function(e,r,a){return this.emitter().removeListener(e,$n(r),a),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,r,a){return this.emitter().one(e,$n(r),a),this},once:function(e,r,a){return this.emitter().one(e,$n(r),a),this},emit:function(e,r){return this.emitter().emit(e,r),this},emitAndNotify:function(e,r){return this.emit(e),this.notify(e,r),this}};vt.eventAliasesOn(Ho);var Ri={png:function(e){var r=this._private.renderer;return e=e||{},r.png(e)},jpg:function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)}};Ri.jpeg=Ri.jpg;var _n={layout:function(e){var r=this;if(e==null){Tt("Layout options must be specified to make a layout");return}if(e.name==null){Tt("A `name` must be specified to make a layout");return}var a=e.name,n=r.extension("layout",a);if(n==null){Tt("No such layout `"+a+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var i;j(e.eles)?i=r.$(e.eles):i=e.eles!=null?e.eles:r.$();var s=new n(He({},e,{cy:r,eles:i}));return s}};_n.createLayout=_n.makeLayout=_n.layout;var Vd={notify:function(e,r){var a=this._private;if(this.batching()){a.batchNotifications=a.batchNotifications||{};var n=a.batchNotifications[e]=a.batchNotifications[e]||this.collection();r!=null&&n.merge(r);return}if(a.notificationsEnabled){var i=this.renderer();this.destroyed()||!i||i.notify(e,r)}},notifications:function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(a){var n=e.batchNotifications[a];n.empty()?r.notify(a):r.notify(a,n)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var r=this;return this.batch(function(){for(var a=Object.keys(e),n=0;n0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(a){var n=a._private;n.rscratch={},n.rstyle={},n.animation.current=[],n.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};ki.invalidateDimensions=ki.resize;var Un={collection:function(e,r){return j(e)?this.$(e):pe(e)?e.collection():te(e)?(r||(r={}),new Nt(this,e,r.unique,r.removed)):new Nt(this)},nodes:function(e){var r=this.$(function(a){return a.isNode()});return e?r.filter(e):r},edges:function(e){var r=this.$(function(a){return a.isEdge()});return e?r.filter(e):r},$:function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},mutableElements:function(){return this._private.elements}};Un.elements=Un.filter=Un.$;var Ft={},qa="t",_d="f";Ft.apply=function(t){for(var e=this,r=e._private,a=r.cy,n=a.collection(),i=0;i0;if(c||h&&d){var v=void 0;c&&d||c?v=l.properties:d&&(v=l.mappedProperties);for(var y=0;y1&&(E=1),o.color){var A=a.valueMin[0],x=a.valueMax[0],k=a.valueMin[1],C=a.valueMax[1],B=a.valueMin[2],G=a.valueMax[2],M=a.valueMin[3]==null?1:a.valueMin[3],W=a.valueMax[3]==null?1:a.valueMax[3],F=[Math.round(A+(x-A)*E),Math.round(k+(C-k)*E),Math.round(B+(G-B)*E),Math.round(M+(W-M)*E)];i={bypass:a.bypass,name:a.name,value:F,strValue:"rgb("+F[0]+", "+F[1]+", "+F[2]+")"}}else if(o.number){var re=a.valueMin+(a.valueMax-a.valueMin)*E;i=this.parse(a.name,re,a.bypass,c)}else return!1;if(!i)return y(),!1;i.mapping=a,a=i;break}case s.data:{for(var K=a.field.split("."),X=h.data,ne=0;ne0&&i>0){for(var o={},u=!1,l=0;l0?t.delayAnimation(s).play().promise().then(b):b()}).then(function(){return t.animation({style:o,duration:i,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,n),t.emitAndNotify("style"),a.transitioning=!1})}else a.transitioning&&(this.removeBypasses(t,n),t.emitAndNotify("style"),a.transitioning=!1)},Ft.checkTrigger=function(t,e,r,a,n,i){var s=this.properties[e],o=n(s);o!=null&&o(r,a)&&i(s)},Ft.checkZOrderTrigger=function(t,e,r,a){var n=this;this.checkTrigger(t,e,r,a,function(i){return i.triggersZOrder},function(){n._private.cy.notify("zorder",t)})},Ft.checkBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBounds},function(n){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache(),n.triggersBoundsOfParallelBeziers&&e==="curve-style"&&(r==="bezier"||a==="bezier")&&t.parallelEdges().forEach(function(i){i.isBundledBezier()&&i.dirtyBoundingBoxCache()}),n.triggersBoundsOfConnectedEdges&&e==="display"&&(r==="none"||a==="none")&&t.connectedEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})},Ft.checkTriggers=function(t,e,r,a){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,a),this.checkBoundsTrigger(t,e,r,a)};var Ka={};Ka.applyBypass=function(t,e,r,a){var n=this,i=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var o=0;on.length?a=a.substr(n.length):a=""}function u(){i.length>s.length?i=i.substr(s.length):i=""}for(;;){var l=a.match(/^\s*$/);if(l)break;var f=a.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){ct("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+a);break}n=f[0];var h=f[1];if(h!=="core"){var c=new Sr(h);if(c.invalid){ct("Skipping parsing of block: Invalid selector found in string stylesheet: "+h),o();continue}}var d=f[2],v=!1;i=d;for(var y=[];;){var p=i.match(/^\s*$/);if(p)break;var g=i.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!g){ct("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+d),v=!0;break}s=g[0];var m=g[1],b=g[2],E=e.properties[m];if(!E){ct("Skipping property: Invalid property name in: "+s),u();continue}var I=r.parse(m,b);if(!I){ct("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:m,val:b}),u()}if(v){o();break}r.selector(h);for(var A=0;A=7&&e[0]==="d"&&(f=new RegExp(o.data.regex).exec(e))){if(r)return!1;var c=o.data;return{name:t,value:f,strValue:""+e,mapped:c,field:f[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(h=new RegExp(o.mapData.regex).exec(e))){if(r||l.multiple)return!1;var d=o.mapData;if(!(l.color||l.number))return!1;var v=this.parse(t,h[4]);if(!v||v.mapped)return!1;var y=this.parse(t,h[5]);if(!y||y.mapped)return!1;if(v.pfValue===y.pfValue||v.strValue===y.strValue)return ct("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+v.strValue+"`"),this.parse(t,v.strValue);if(l.color){var p=v.value,g=y.value,m=p[0]===g[0]&&p[1]===g[1]&&p[2]===g[2]&&(p[3]===g[3]||(p[3]==null||p[3]===1)&&(g[3]==null||g[3]===1));if(m)return!1}return{name:t,value:h,strValue:""+e,mapped:d,field:h[1],fieldMin:parseFloat(h[2]),fieldMax:parseFloat(h[3]),valueMin:v.value,valueMax:y.value,bypass:r}}}if(l.multiple&&a!=="multiple"){var b;if(u?b=e.split(/\s+/):te(e)?b=e:b=[e],l.evenMultiple&&b.length%2!==0)return null;for(var E=[],I=[],A=[],x="",k=!1,C=0;C0?" ":"")+B.strValue}return l.validate&&!l.validate(E,I)?null:l.singleEnum&&k?E.length===1&&j(E[0])?{name:t,value:E[0],strValue:E[0],bypass:r}:null:{name:t,value:E,pfValue:A,strValue:x,bypass:r,units:I}}var G=function(){for(var Ae=0;Ael.max||l.strictMax&&e===l.max))return null;var K={name:t,value:e,strValue:""+e+(M||""),units:M,bypass:r};return l.unitless||M!=="px"&&M!=="em"?K.pfValue=e:K.pfValue=M==="px"||!M?e:this.getEmSizeInPixels()*e,(M==="ms"||M==="s")&&(K.pfValue=M==="ms"?e:1e3*e),(M==="deg"||M==="rad")&&(K.pfValue=M==="rad"?e:Tf(e)),M==="%"&&(K.pfValue=e/100),K}else if(l.propList){var X=[],ne=""+e;if(ne!=="none"){for(var ue=ne.split(/\s*,\s*|\s+/),me=0;me0&&o>0&&!isNaN(a.w)&&!isNaN(a.h)&&a.w>0&&a.h>0){u=Math.min((s-2*r)/a.w,(o-2*r)/a.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=a.minZoom&&(a.maxZoom=r),this},minZoom:function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var r=this._private,a=r.pan,n=r.zoom,i,s,o=!1;if(r.zoomingEnabled||(o=!0),R(e)?s=e:L(e)&&(s=e.level,e.position!=null?i=gn(e.position,n,a):e.renderedPosition!=null&&(i=e.renderedPosition),i!=null&&!r.panningEnabled&&(o=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,i.push("zoom"))}if(n&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var l=e.pan;R(l.x)&&(r.pan.x=l.x,o=!1),R(l.y)&&(r.pan.y=l.y,o=!1),o||i.push("pan")}return i.length>0&&(i.push("viewport"),this.emit(i.join(" ")),this.notify("viewport")),this},center:function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,r){if(this._private.panningEnabled){if(j(e)){var a=e;e=this.mutableElements().filter(a)}else pe(e)||(e=this.mutableElements());if(e.length!==0){var n=e.boundingBox(),i=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var o={x:(i-r*(n.x1+n.x2))/2,y:(s-r*(n.y1+n.y2))/2};return o}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e=this._private,r=e.container,a=this;return e.sizeCache=e.sizeCache||(r?function(){var n=a.window().getComputedStyle(r),i=function(o){return parseFloat(n.getPropertyValue(o))};return{width:r.clientWidth-i("padding-left")-i("padding-right"),height:r.clientHeight-i("padding-top")-i("padding-bottom")}}():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,r=this._private.zoom,a=this.renderedExtent(),n={x1:(a.x1-e.x)/r,x2:(a.x2-e.x)/r,y1:(a.y1-e.y)/r,y2:(a.y2-e.y)/r};return n.w=n.x2-n.x1,n.h=n.y2-n.y1,n},renderedExtent:function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},multiClickDebounceTime:function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this}};$r.centre=$r.center,$r.autolockNodes=$r.autolock,$r.autoungrabifyNodes=$r.autoungrabify;var Za={data:vt.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:vt.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:vt.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:vt.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Za.attr=Za.data,Za.removeAttr=Za.removeData;var Qa=function(e){var r=this;e=He({},e);var a=e.container;a&&!ce(a)&&ce(a[0])&&(a=a[0]);var n=a?a._cyreg:null;n=n||{},n&&n.cy&&(n.cy.destroy(),n={});var i=n.readies=n.readies||[];a&&(a._cyreg=n),n.cy=r;var s=D!==void 0&&a!==void 0&&!e.headless,o=e;o.layout=He({name:s?"grid":"null"},o.layout),o.renderer=He({name:s?"canvas":"null"},o.renderer);var u=function(v,y,p){return y!==void 0?y:p!==void 0?p:v},l=this._private={container:a,ready:!1,options:o,elements:new Nt(this),listeners:[],aniEles:new Nt(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,o.zoomingEnabled),userZoomingEnabled:u(!0,o.userZoomingEnabled),panningEnabled:u(!0,o.panningEnabled),userPanningEnabled:u(!0,o.userPanningEnabled),boxSelectionEnabled:u(!0,o.boxSelectionEnabled),autolock:u(!1,o.autolock,o.autolockNodes),autoungrabify:u(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:u(!1,o.autounselectify),styleEnabled:o.styleEnabled===void 0?s:o.styleEnabled,zoom:R(o.zoom)?o.zoom:1,pan:{x:L(o.pan)&&R(o.pan.x)?o.pan.x:0,y:L(o.pan)&&R(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});var f=function(v,y){var p=v.some(nt);if(p)return sa.all(v).then(y);y(v)};l.styleEnabled&&r.setStyle([]);var h=He({},o,o.renderer);r.initRenderer(h);var c=function(v,y,p){r.notifications(!1);var g=r.mutableElements();g.length>0&&g.remove(),v!=null&&(L(v)||te(v))&&r.add(v),r.one("layoutready",function(b){r.notifications(!0),r.emit(b),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",p),r.emit("done")});var m=He({},r._private.options.layout);m.eles=r.elements(),r.layout(m).run()};f([o.style,o.elements],function(d){var v=d[0],y=d[1];l.styleEnabled&&r.style().append(v),c(y,function(){r.startAnimationLoop(),l.ready=!0,Y(o.ready)&&r.on("ready",o.ready);for(var p=0;p0,u=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l;if(pe(e.roots))l=e.roots;else if(te(e.roots)){for(var f=[],h=0;h0;){var re=F(),K=B(re,M);if(K)re.outgoers().filter(function(Ie){return Ie.isNode()&&a.has(Ie)}).forEach(W);else if(K===null){ct("Detected double maximal shift for node `"+re.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}C();var X=0;if(e.avoidOverlap)for(var ne=0;ne0&&g[0].length<=3?We/2:0),O=2*Math.PI/g[ze].length*Be;return ze===0&&g[0].length===1&&(fe=1),{x:Ne.x+fe*Math.cos(O),y:Ne.y+fe*Math.sin(O)}}else{var et={x:Ne.x+(Be+1-(_e+1)/2)*rt,y:(ze+1)*je};return et}};return a.nodes().layoutPositions(this,e,Xe),this};var Wd={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function qo(t){this.options=He({},Wd,t)}qo.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,i=a.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));for(var s=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},u=e.sweep===void 0?2*Math.PI-2*Math.PI/i.length:e.sweep,l=u/Math.max(1,i.length-1),f,h=0,c=0;c1&&e.avoidOverlap){h*=1.75;var g=Math.cos(l)-Math.cos(0),m=Math.sin(l)-Math.sin(0),b=Math.sqrt(h*h/(g*g+m*m));f=Math.max(b,f)}var E=function(A,x){var k=e.startAngle+x*l*(n?1:-1),C=f*Math.cos(k),B=f*Math.sin(k),G={x:o.x+C,y:o.y+B};return G};return a.nodes().layoutPositions(this,e,E),this};var qd={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Ko(t){this.options=He({},qd,t)}Ko.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=t.cy,n=e.eles,i=n.nodes().not(":parent"),s=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:a.width(),h:a.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],l=0,f=0;f0){var I=Math.abs(m[0].value-E.value);I>=p&&(m=[],g.push(m))}m.push(E)}var A=l+e.minNodeSpacing;if(!e.avoidOverlap){var x=g.length>0&&g[0].length>1,k=Math.min(s.w,s.h)/2-A,C=k/(g.length+x?1:0);A=Math.min(A,C)}for(var B=0,G=0;G1&&e.avoidOverlap){var re=Math.cos(F)-Math.cos(0),K=Math.sin(F)-Math.sin(0),X=Math.sqrt(A*A/(re*re+K*K));B=Math.max(X,B)}M.r=B,B+=A}if(e.equidistant){for(var ne=0,ue=0,me=0;me=t.numIter||(rg(a,t),a.temperature=a.temperature*t.coolingFactor,a.temperature=t.animationThreshold&&i(),hn(h)}};f()}else{for(;l;)l=s(u),u++;Jo(a,t),o()}return this},Wn.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},Wn.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Zd=function(e,r,a){for(var n=a.eles.edges(),i=a.eles.nodes(),s=Yt(a.boundingBox?a.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:n.size(),temperature:a.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=a.eles.components(),l={},f=0;f0){o.graphSet.push(k);for(var f=0;fn.count?0:n.graph},Jd=function t(e,r,a,n){var i=n.graphSet[a];if(-10)var h=n.nodeOverlap*f,c=Math.sqrt(o*o+u*u),d=h*o/c,v=h*u/c;else var y=qn(e,o,u),p=qn(r,-1*o,-1*u),g=p.x-y.x,m=p.y-y.y,b=g*g+m*m,c=Math.sqrt(b),h=(e.nodeRepulsion+r.nodeRepulsion)/b,d=h*g/c,v=h*m/c;e.isLocked||(e.offsetX-=d,e.offsetY-=v),r.isLocked||(r.offsetX+=d,r.offsetY+=v)}},ig=function(e,r,a,n){if(a>0)var i=e.maxX-r.minX;else var i=r.maxX-e.minX;if(n>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return i>=0&&s>=0?Math.sqrt(i*i+s*s):0},qn=function(e,r,a){var n=e.positionX,i=e.positionY,s=e.height||1,o=e.width||1,u=a/r,l=s/o,f={};return r===0&&0a?(f.x=n,f.y=i+s/2,f):0r&&-1*l<=u&&u<=l?(f.x=n-o/2,f.y=i-o*a/2/r,f):0=l)?(f.x=n+s*r/2/a,f.y=i+s/2,f):(0>a&&(u<=-1*l||u>=l)&&(f.x=n-s*r/2/a,f.y=i-s/2),f)},sg=function(e,r){for(var a=0;aa){var p=r.gravity*d/y,g=r.gravity*v/y;c.offsetX+=p,c.offsetY+=g}}}}},lg=function(e,r){var a=[],n=0,i=-1;for(a.push.apply(a,e.graphSet[0]),i+=e.graphSet[0].length;n<=i;){var s=a[n++],o=e.idToIndex[s],u=e.layoutNodes[o],l=u.children;if(0a)var i={x:a*e/n,y:a*r/n};else var i={x:e,y:r};return i},hg=function t(e,r){var a=e.parentId;if(a!=null){var n=r.layoutNodes[r.idToIndex[a]],i=!1;if((n.maxX==null||e.maxX+n.padRight>n.maxX)&&(n.maxX=e.maxX+n.padRight,i=!0),(n.minX==null||e.minX-n.padLeftn.maxY)&&(n.maxY=e.maxY+n.padBottom,i=!0),(n.minY==null||e.minY-n.padTopg&&(v+=p+r.componentSpacing,d=0,y=0,p=0)}}},cg={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function jo(t){this.options=He({},cg,t)}jo.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=a.nodes().not(":parent");e.sort&&(n=n.sort(e.sort));var i=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(i.h===0||i.w===0)a.nodes().layoutPositions(this,e,function(we){return{x:i.x1,y:i.y1}});else{var s=n.size(),o=Math.sqrt(s*i.h/i.w),u=Math.round(o),l=Math.round(i.w/i.h*o),f=function(De){if(De==null)return Math.min(u,l);var xe=Math.min(u,l);xe==u?u=De:l=De},h=function(De){if(De==null)return Math.max(u,l);var xe=Math.max(u,l);xe==u?u=De:l=De},c=e.rows,d=e.cols!=null?e.cols:e.columns;if(c!=null&&d!=null)u=c,l=d;else if(c!=null&&d==null)u=c,l=Math.ceil(s/u);else if(c==null&&d!=null)l=d,u=Math.ceil(s/l);else if(l*u>s){var v=f(),y=h();(v-1)*y>=s?f(v-1):(y-1)*v>=s&&h(y-1)}else for(;l*u=s?h(g+1):f(p+1)}var m=i.w/l,b=i.h/u;if(e.condense&&(m=0,b=0),e.avoidOverlap)for(var E=0;E=l&&(re=0,F++)},X={},ne=0;ne(re=Bf(t,e,K[X],K[X+1],K[X+2],K[X+3])))return p(x,re),!0}else if(C.edgeType==="bezier"||C.edgeType==="multibezier"||C.edgeType==="self"||C.edgeType==="compound"){for(var K=C.allpts,X=0;X+5(re=Pf(t,e,K[X],K[X+1],K[X+2],K[X+3],K[X+4],K[X+5])))return p(x,re),!0}for(var ne=ne||k.source,ue=ue||k.target,me=n.getArrowWidth(B,G),ie=[{name:"source",x:C.arrowStartX,y:C.arrowStartY,angle:C.srcArrowAngle},{name:"target",x:C.arrowEndX,y:C.arrowEndY,angle:C.tgtArrowAngle},{name:"mid-source",x:C.midX,y:C.midY,angle:C.midsrcArrowAngle},{name:"mid-target",x:C.midX,y:C.midY,angle:C.midtgtArrowAngle}],X=0;X0&&(g(ne),g(ue))}function b(x,k,C){return tr(x,k,C)}function E(x,k){var C=x._private,B=c,G;k?G=k+"-":G="",x.boundingBox();var M=C.labelBounds[k||"main"],W=x.pstyle(G+"label").value,F=x.pstyle("text-events").strValue==="yes";if(!(!F||!W)){var re=b(C.rscratch,"labelX",k),K=b(C.rscratch,"labelY",k),X=b(C.rscratch,"labelAngle",k),ne=x.pstyle(G+"text-margin-x").pfValue,ue=x.pstyle(G+"text-margin-y").pfValue,me=M.x1-B-ne,ie=M.x2+B-ne,de=M.y1-B-ue,we=M.y2+B-ue;if(X){var De=Math.cos(X),xe=Math.sin(X),Te=function(Xe,Ie){return Xe=Xe-re,Ie=Ie-K,{x:Xe*De-Ie*xe+re,y:Xe*xe+Ie*De+K}},se=Te(me,de),Se=Te(me,we),Ae=Te(ie,de),Le=Te(ie,we),Ne=[se.x+ne,se.y+ue,Ae.x+ne,Ae.y+ue,Le.x+ne,Le.y+ue,Se.x+ne,Se.y+ue];if(Ht(t,e,Ne))return p(x),!0}else if(ra(M,t,e))return p(x),!0}}for(var I=s.length-1;I>=0;I--){var A=s[I];A.isNode()?g(A)||E(A):m(A)||E(A)||E(A,"source")||E(A,"target")}return o},_r.getAllInBox=function(t,e,r,a){var n=this.getCachedZSortedEles().interactive,i=[],s=Math.min(t,r),o=Math.max(t,r),u=Math.min(e,a),l=Math.max(e,a);t=s,r=o,e=u,a=l;for(var f=Yt({x1:t,y1:e,x2:r,y2:a}),h=0;h0?Math.max(Ee-Ge,0):Math.min(Ee+Ge,0)},W=M(B,k),F=M(G,C),re=!1;m===l?g=Math.abs(W)>Math.abs(F)?n:a:m===u||m===o?(g=a,re=!0):(m===i||m===s)&&(g=n,re=!0);var K=g===a,X=K?F:W,ne=K?G:B,ue=ws(ne),me=!1;!(re&&(E||A))&&(m===o&&ne<0||m===u&&ne>0||m===i&&ne>0||m===s&&ne<0)&&(ue*=-1,X=ue*Math.abs(X),me=!0);var ie;if(E){var de=I<0?1+I:I;ie=de*X}else{var we=I<0?X:0;ie=we+I*ue}var De=function(Ee){return Math.abs(Ee)=Math.abs(X)},xe=De(ie),Te=De(Math.abs(X)-Math.abs(ie)),se=xe||Te;if(se&&!me)if(K){var Se=Math.abs(ne)<=c/2,Ae=Math.abs(B)<=d/2;if(Se){var Le=(f.x1+f.x2)/2,Ne=f.y1,Fe=f.y2;r.segpts=[Le,Ne,Le,Fe]}else if(Ae){var Xe=(f.y1+f.y2)/2,Ie=f.x1,Re=f.x2;r.segpts=[Ie,Xe,Re,Xe]}else r.segpts=[f.x1,f.y2]}else{var $e=Math.abs(ne)<=h/2,ze=Math.abs(G)<=v/2;if($e){var Be=(f.y1+f.y2)/2,_e=f.x1,rt=f.x2;r.segpts=[_e,Be,rt,Be]}else if(ze){var je=(f.x1+f.x2)/2,We=f.y1,et=f.y2;r.segpts=[je,We,je,et]}else r.segpts=[f.x2,f.y1]}else if(K){var fe=f.y1+ie+(p?c/2*ue:0),O=f.x1,oe=f.x2;r.segpts=[O,fe,oe,fe]}else{var Ce=f.x1+ie+(p?h/2*ue:0),ve=f.y1,ye=f.y2;r.segpts=[Ce,ve,Ce,ye]}},Vt.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var a=e.srcPos,n=e.tgtPos,i=e.srcW,s=e.srcH,o=e.tgtW,u=e.tgtH,l=e.srcShape,f=e.tgtShape,h=!R(r.startX)||!R(r.startY),c=!R(r.arrowStartX)||!R(r.arrowStartY),d=!R(r.endX)||!R(r.endY),v=!R(r.arrowEndX)||!R(r.arrowEndY),y=3,p=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,g=y*p,m=Br({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),b=mF.poolIndex()){var re=W;W=F,F=re}var K=C.srcPos=W.position(),X=C.tgtPos=F.position(),ne=C.srcW=W.outerWidth(),ue=C.srcH=W.outerHeight(),me=C.tgtW=F.outerWidth(),ie=C.tgtH=F.outerHeight(),de=C.srcShape=r.nodeShapes[e.getNodeShape(W)],we=C.tgtShape=r.nodeShapes[e.getNodeShape(F)];C.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var De=0;De0){var Se=i,Ae=Fr(Se,ea(r)),Le=Fr(Se,ea(se)),Ne=Ae;if(Le2){var Fe=Fr(Se,{x:se[2],y:se[3]});Fe0){var O=s,oe=Fr(O,ea(r)),Ce=Fr(O,ea(fe)),ve=oe;if(Ce2){var ye=Fr(O,{x:fe[2],y:fe[3]});ye=v||x){p={cp:E,segment:A};break}}if(p)break}var k=p.cp,C=p.segment,B=(v-g)/C.length,G=C.t1-C.t0,M=d?C.t0+G*B:C.t1-G*B;M=Pa(0,M,1),e=ta(k.p0,k.p1,k.p2,M),c=mg(k.p0,k.p1,k.p2,M);break}case"straight":case"segments":case"haystack":{for(var W=0,F,re,K,X,ne=a.allpts.length,ue=0;ue+3=v));ue+=2);var me=v-re,ie=me/F;ie=Pa(0,ie,1),e=Df(K,X,ie),c=ol(K,X);break}}s("labelX",h,e.x),s("labelY",h,e.y),s("labelAutoAngle",h,c)}};l("source"),l("target"),this.applyLabelDimensions(t)}},hr.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))},hr.applyPrefixedLabelDimensions=function(t,e){var r=t._private,a=this.getLabelText(t,e),n=this.calculateLabelDimensions(t,a),i=t.pstyle("line-height").pfValue,s=t.pstyle("text-wrap").strValue,o=tr(r.rscratch,"labelWrapCachedLines",e)||[],u=s!=="wrap"?1:Math.max(o.length,1),l=n.height/u,f=l*i,h=n.width,c=n.height+(u-1)*(i-1)*l;Tr(r.rstyle,"labelWidth",e,h),Tr(r.rscratch,"labelWidth",e,h),Tr(r.rstyle,"labelHeight",e,c),Tr(r.rscratch,"labelHeight",e,c),Tr(r.rscratch,"labelLineHeight",e,f)},hr.getLabelText=function(t,e){var r=t._private,a=e?e+"-":"",n=t.pstyle(a+"label").strValue,i=t.pstyle("text-transform").value,s=function(me,ie){return ie?(Tr(r.rscratch,me,e,ie),ie):tr(r.rscratch,me,e)};if(!n)return"";i=="none"||(i=="uppercase"?n=n.toUpperCase():i=="lowercase"&&(n=n.toLowerCase()));var o=t.pstyle("text-wrap").value;if(o==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var l="​",f=n.split(` -`),h=t.pstyle("text-max-width").pfValue,c=t.pstyle("text-overflow-wrap").value,d=c==="anywhere",v=[],y=/[\s\u200b]+/,p=d?"":" ",g=0;gh){for(var A=m.split(y),x="",k=0;kW)break;F+=n[X],X===n.length-1&&(K=!0)}return K||(F+=re),F}return n},hr.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e},hr.calculateLabelDimensions=function(t,e){var r=this,a=Pr(e,t._private.labelDimsKey),n=r.labelDimCache||(r.labelDimCache=[]),i=n[a];if(i!=null)return i;var s=0,o=t.pstyle("font-style").strValue,u=t.pstyle("font-size").pfValue,l=t.pstyle("font-family").strValue,f=t.pstyle("font-weight").strValue,h=this.labelCalcCanvas,c=this.labelCalcCanvasContext;if(!h){h=this.labelCalcCanvas=document.createElement("canvas"),c=this.labelCalcCanvasContext=h.getContext("2d");var d=h.style;d.position="absolute",d.left="-9999px",d.top="-9999px",d.zIndex="-1",d.visibility="hidden",d.pointerEvents="none"}c.font="".concat(o," ").concat(f," ").concat(u,"px ").concat(l);for(var v=0,y=0,p=e.split(` -`),g=0;g1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),o)for(var u=0;u=t.desktopTapThreshold2}var Er=n(O);Rt&&(t.hoverData.tapholdCancelled=!0);var Rr=function(){var vr=t.hoverData.dragDelta=t.hoverData.dragDelta||[];vr.length===0?(vr.push(Je[0]),vr.push(Je[1])):(vr[0]+=Je[0],vr[1]+=Je[1])};Ce=!0,a(qe,["mousemove","vmousemove","tapdrag"],O,{x:Ee[0],y:Ee[1]});var Ta=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||ve.emit({originalEvent:O,type:"boxstart",position:{x:Ee[0],y:Ee[1]}}),ft[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()};if(t.hoverData.which===3){if(Rt){var Xr={originalEvent:O,type:"cxtdrag",position:{x:Ee[0],y:Ee[1]}};Ke?Ke.emit(Xr):ve.emit(Xr),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||qe!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:O,type:"cxtdragout",position:{x:Ee[0],y:Ee[1]}}),t.hoverData.cxtOver=qe,qe&&qe.emit({originalEvent:O,type:"cxtdragover",position:{x:Ee[0],y:Ee[1]}}))}}else if(t.hoverData.dragging){if(Ce=!0,ve.panningEnabled()&&ve.userPanningEnabled()){var Ca;if(t.hoverData.justStartedPan){var ti=t.hoverData.mdownPos;Ca={x:(Ee[0]-ti[0])*ye,y:(Ee[1]-ti[1])*ye},t.hoverData.justStartedPan=!1}else Ca={x:Je[0]*ye,y:Je[1]*ye};ve.panBy(Ca),ve.emit("dragpan"),t.hoverData.dragged=!0}Ee=t.projectIntoViewport(O.clientX,O.clientY)}else if(ft[4]==1&&(Ke==null||Ke.pannable())){if(Rt){if(!t.hoverData.dragging&&ve.boxSelectionEnabled()&&(Er||!ve.panningEnabled()||!ve.userPanningEnabled()))Ta();else if(!t.hoverData.selecting&&ve.panningEnabled()&&ve.userPanningEnabled()){var Wr=i(Ke,t.hoverData.downs);Wr&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,ft[4]=0,t.data.bgActivePosistion=ea(Ge),t.redrawHint("select",!0),t.redraw())}Ke&&Ke.pannable()&&Ke.active()&&Ke.unactivate()}}else{if(Ke&&Ke.pannable()&&Ke.active()&&Ke.unactivate(),(!Ke||!Ke.grabbed())&&qe!=ot&&(ot&&a(ot,["mouseout","tapdragout"],O,{x:Ee[0],y:Ee[1]}),qe&&a(qe,["mouseover","tapdragover"],O,{x:Ee[0],y:Ee[1]}),t.hoverData.last=qe),Ke)if(Rt){if(ve.boxSelectionEnabled()&&Er)Ke&&Ke.grabbed()&&(p(Dt),Ke.emit("freeon"),Dt.emit("free"),t.dragData.didDrag&&(Ke.emit("dragfreeon"),Dt.emit("dragfree"))),Ta();else if(Ke&&Ke.grabbed()&&t.nodeIsDraggable(Ke)){var Xt=!t.dragData.didDrag;Xt&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||v(Dt,{inDragLayer:!0});var $t={x:0,y:0};if(R(Je[0])&&R(Je[1])&&($t.x+=Je[0],$t.y+=Je[1],Xt)){var Wt=t.hoverData.dragDelta;Wt&&R(Wt[0])&&R(Wt[1])&&($t.x+=Wt[0],$t.y+=Wt[1])}t.hoverData.draggingEles=!0,Dt.silentShift($t).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else Rr();Ce=!0}if(ft[2]=Ee[0],ft[3]=Ee[1],Ce)return O.stopPropagation&&O.stopPropagation(),O.preventDefault&&O.preventDefault(),!1}},!1);var B,G,M;t.registerBinding(e,"mouseup",function(O){var oe=t.hoverData.capture;if(oe){t.hoverData.capture=!1;var Ce=t.cy,ve=t.projectIntoViewport(O.clientX,O.clientY),ye=t.selection,Ue=t.findNearestElement(ve[0],ve[1],!0,!1),Ee=t.dragData.possibleDragElements,Ge=t.hoverData.down,Qe=n(O);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,Ge&&Ge.unactivate(),t.hoverData.which===3){var ft={originalEvent:O,type:"cxttapend",position:{x:ve[0],y:ve[1]}};if(Ge?Ge.emit(ft):Ce.emit(ft),!t.hoverData.cxtDragged){var qe={originalEvent:O,type:"cxttap",position:{x:ve[0],y:ve[1]}};Ge?Ge.emit(qe):Ce.emit(qe)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(a(Ue,["mouseup","tapend","vmouseup"],O,{x:ve[0],y:ve[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(a(Ge,["click","tap","vclick"],O,{x:ve[0],y:ve[1]}),G=!1,O.timeStamp-M<=Ce.multiClickDebounceTime()?(B&&clearTimeout(B),G=!0,M=null,a(Ge,["dblclick","dbltap","vdblclick"],O,{x:ve[0],y:ve[1]})):(B=setTimeout(function(){G||a(Ge,["oneclick","onetap","voneclick"],O,{x:ve[0],y:ve[1]})},Ce.multiClickDebounceTime()),M=O.timeStamp)),Ge==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!n(O)&&(Ce.$(r).unselect(["tapunselect"]),Ee.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=Ee=Ce.collection()),Ue==Ge&&!t.dragData.didDrag&&!t.hoverData.selecting&&Ue!=null&&Ue._private.selectable&&(t.hoverData.dragging||(Ce.selectionType()==="additive"||Qe?Ue.selected()?Ue.unselect(["tapunselect"]):Ue.select(["tapselect"]):Qe||(Ce.$(r).unmerge(Ue).unselect(["tapunselect"]),Ue.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var ot=Ce.collection(t.getAllInBox(ye[0],ye[1],ye[2],ye[3]));t.redrawHint("select",!0),ot.length>0&&t.redrawHint("eles",!0),Ce.emit({type:"boxend",originalEvent:O,position:{x:ve[0],y:ve[1]}});var Ke=function(Rt){return Rt.selectable()&&!Rt.selected()};Ce.selectionType()==="additive"||Qe||Ce.$(r).unmerge(ot).unselect(),ot.emit("box").stdFilter(Ke).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!ye[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var Je=Ge&&Ge.grabbed();p(Ee),Je&&(Ge.emit("freeon"),Ee.emit("free"),t.dragData.didDrag&&(Ge.emit("dragfreeon"),Ee.emit("dragfree")))}}ye[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null}},!1);var W=function(O){if(!t.scrollingPage){var oe=t.cy,Ce=oe.zoom(),ve=oe.pan(),ye=t.projectIntoViewport(O.clientX,O.clientY),Ue=[ye[0]*Ce+ve.x,ye[1]*Ce+ve.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||k()){O.preventDefault();return}if(oe.panningEnabled()&&oe.userPanningEnabled()&&oe.zoomingEnabled()&&oe.userZoomingEnabled()){O.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150);var Ee;O.deltaY!=null?Ee=O.deltaY/-250:O.wheelDeltaY!=null?Ee=O.wheelDeltaY/1e3:Ee=O.wheelDelta/1e3,Ee=Ee*t.wheelSensitivity;var Ge=O.deltaMode===1;Ge&&(Ee*=33);var Qe=oe.zoom()*Math.pow(10,Ee);O.type==="gesturechange"&&(Qe=t.gestureStartZoom*O.scale),oe.zoom({level:Qe,renderedPosition:{x:Ue[0],y:Ue[1]}}),oe.emit(O.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};t.registerBinding(t.container,"wheel",W,!0),t.registerBinding(e,"scroll",function(O){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},!0),t.registerBinding(t.container,"gesturestart",function(O){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||O.preventDefault()},!0),t.registerBinding(t.container,"gesturechange",function(fe){t.hasTouchStarted||W(fe)},!0),t.registerBinding(t.container,"mouseout",function(O){var oe=t.projectIntoViewport(O.clientX,O.clientY);t.cy.emit({originalEvent:O,type:"mouseout",position:{x:oe[0],y:oe[1]}})},!1),t.registerBinding(t.container,"mouseover",function(O){var oe=t.projectIntoViewport(O.clientX,O.clientY);t.cy.emit({originalEvent:O,type:"mouseover",position:{x:oe[0],y:oe[1]}})},!1);var F,re,K,X,ne,ue,me,ie,de,we,De,xe,Te,se=function(O,oe,Ce,ve){return Math.sqrt((Ce-O)*(Ce-O)+(ve-oe)*(ve-oe))},Se=function(O,oe,Ce,ve){return(Ce-O)*(Ce-O)+(ve-oe)*(ve-oe)},Ae;t.registerBinding(t.container,"touchstart",Ae=function(O){if(t.hasTouchStarted=!0,!!C(O)){m(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var oe=t.cy,Ce=t.touchData.now,ve=t.touchData.earlier;if(O.touches[0]){var ye=t.projectIntoViewport(O.touches[0].clientX,O.touches[0].clientY);Ce[0]=ye[0],Ce[1]=ye[1]}if(O.touches[1]){var ye=t.projectIntoViewport(O.touches[1].clientX,O.touches[1].clientY);Ce[2]=ye[0],Ce[3]=ye[1]}if(O.touches[2]){var ye=t.projectIntoViewport(O.touches[2].clientX,O.touches[2].clientY);Ce[4]=ye[0],Ce[5]=ye[1]}if(O.touches[1]){t.touchData.singleTouchMoved=!0,p(t.dragData.touchDragEles);var Ue=t.findContainerClientCoords();de=Ue[0],we=Ue[1],De=Ue[2],xe=Ue[3],F=O.touches[0].clientX-de,re=O.touches[0].clientY-we,K=O.touches[1].clientX-de,X=O.touches[1].clientY-we,Te=0<=F&&F<=De&&0<=K&&K<=De&&0<=re&&re<=xe&&0<=X&&X<=xe;var Ee=oe.pan(),Ge=oe.zoom();ne=se(F,re,K,X),ue=Se(F,re,K,X),me=[(F+K)/2,(re+X)/2],ie=[(me[0]-Ee.x)/Ge,(me[1]-Ee.y)/Ge];var Qe=200,ft=Qe*Qe;if(ue=1){for(var ir=t.touchData.startPosition=[null,null,null,null,null,null],kt=0;kt=t.touchTapThreshold2}if(oe&&t.touchData.cxt){O.preventDefault();var ir=O.touches[0].clientX-de,kt=O.touches[0].clientY-we,Jt=O.touches[1].clientX-de,Ut=O.touches[1].clientY-we,Er=Se(ir,kt,Jt,Ut),Rr=Er/ue,Ta=150,Xr=Ta*Ta,Ca=1.5,ti=Ca*Ca;if(Rr>=ti||Er>=Xr){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Wr={originalEvent:O,type:"cxttapend",position:{x:ye[0],y:ye[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(Wr),t.touchData.start=null):ve.emit(Wr)}}if(oe&&t.touchData.cxt){var Wr={originalEvent:O,type:"cxtdrag",position:{x:ye[0],y:ye[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Wr):ve.emit(Wr),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var Xt=t.findNearestElement(ye[0],ye[1],!0,!0);(!t.touchData.cxtOver||Xt!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:O,type:"cxtdragout",position:{x:ye[0],y:ye[1]}}),t.touchData.cxtOver=Xt,Xt&&Xt.emit({originalEvent:O,type:"cxtdragover",position:{x:ye[0],y:ye[1]}}))}else if(oe&&O.touches[2]&&ve.boxSelectionEnabled())O.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||ve.emit({originalEvent:O,type:"boxstart",position:{x:ye[0],y:ye[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,Ce[4]=1,!Ce||Ce.length===0||Ce[0]===void 0?(Ce[0]=(ye[0]+ye[2]+ye[4])/3,Ce[1]=(ye[1]+ye[3]+ye[5])/3,Ce[2]=(ye[0]+ye[2]+ye[4])/3+1,Ce[3]=(ye[1]+ye[3]+ye[5])/3+1):(Ce[2]=(ye[0]+ye[2]+ye[4])/3,Ce[3]=(ye[1]+ye[3]+ye[5])/3),t.redrawHint("select",!0),t.redraw();else if(oe&&O.touches[1]&&!t.touchData.didSelect&&ve.zoomingEnabled()&&ve.panningEnabled()&&ve.userZoomingEnabled()&&ve.userPanningEnabled()){O.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var $t=t.dragData.touchDragEles;if($t){t.redrawHint("drag",!0);for(var Wt=0;Wt<$t.length;Wt++){var ri=$t[Wt]._private;ri.grabbed=!1,ri.rscratch.inDragLayer=!1}}var vr=t.touchData.start,ir=O.touches[0].clientX-de,kt=O.touches[0].clientY-we,Jt=O.touches[1].clientX-de,Ut=O.touches[1].clientY-we,Fl=se(ir,kt,Jt,Ut),vp=Fl/ne;if(Te){var dp=ir-F,gp=kt-re,pp=Jt-K,yp=Ut-X,mp=(dp+pp)/2,bp=(gp+yp)/2,an=ve.zoom(),qi=an*vp,ai=ve.pan(),Gl=ie[0]*an+ai.x,zl=ie[1]*an+ai.y,Ep={x:-qi/an*(Gl-ai.x-mp)+Gl,y:-qi/an*(zl-ai.y-bp)+zl};if(vr&&vr.active()){var $t=t.dragData.touchDragEles;p($t),t.redrawHint("drag",!0),t.redrawHint("eles",!0),vr.unactivate().emit("freeon"),$t.emit("free"),t.dragData.didDrag&&(vr.emit("dragfreeon"),$t.emit("dragfree"))}ve.viewport({zoom:qi,pan:Ep,cancelOnFailedZoom:!0}),ve.emit("pinchzoom"),ne=Fl,F=ir,re=kt,K=Jt,X=Ut,t.pinching=!0}if(O.touches[0]){var Ge=t.projectIntoViewport(O.touches[0].clientX,O.touches[0].clientY);ye[0]=Ge[0],ye[1]=Ge[1]}if(O.touches[1]){var Ge=t.projectIntoViewport(O.touches[1].clientX,O.touches[1].clientY);ye[2]=Ge[0],ye[3]=Ge[1]}if(O.touches[2]){var Ge=t.projectIntoViewport(O.touches[2].clientX,O.touches[2].clientY);ye[4]=Ge[0],ye[5]=Ge[1]}}else if(O.touches[0]&&!t.touchData.didSelect){var sr=t.touchData.start,Ki=t.touchData.last,Xt;if(!t.hoverData.draggingEles&&!t.swipePanning&&(Xt=t.findNearestElement(ye[0],ye[1],!0,!0)),oe&&sr!=null&&O.preventDefault(),oe&&sr!=null&&t.nodeIsDraggable(sr))if(ft){var $t=t.dragData.touchDragEles,Vl=!t.dragData.didDrag;Vl&&v($t,{inDragLayer:!0}),t.dragData.didDrag=!0;var nn={x:0,y:0};if(R(qe[0])&&R(qe[1])&&(nn.x+=qe[0],nn.y+=qe[1],Vl)){t.redrawHint("eles",!0);var or=t.touchData.dragDelta;or&&R(or[0])&&R(or[1])&&(nn.x+=or[0],nn.y+=or[1])}t.hoverData.draggingEles=!0,$t.silentShift(nn).emit("position drag"),t.redrawHint("drag",!0),t.touchData.startPosition[0]==Ue[0]&&t.touchData.startPosition[1]==Ue[1]&&t.redrawHint("eles",!0),t.redraw()}else{var or=t.touchData.dragDelta=t.touchData.dragDelta||[];or.length===0?(or.push(qe[0]),or.push(qe[1])):(or[0]+=qe[0],or[1]+=qe[1])}if(a(sr||Xt,["touchmove","tapdrag","vmousemove"],O,{x:ye[0],y:ye[1]}),(!sr||!sr.grabbed())&&Xt!=Ki&&(Ki&&Ki.emit({originalEvent:O,type:"tapdragout",position:{x:ye[0],y:ye[1]}}),Xt&&Xt.emit({originalEvent:O,type:"tapdragover",position:{x:ye[0],y:ye[1]}})),t.touchData.last=Xt,oe)for(var Wt=0;Wt0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},!1);var Ne;t.registerBinding(e,"touchcancel",Ne=function(O){var oe=t.touchData.start;t.touchData.capture=!1,oe&&oe.unactivate()});var Fe,Xe,Ie,Re;if(t.registerBinding(e,"touchend",Fe=function(O){var oe=t.touchData.start,Ce=t.touchData.capture;if(Ce)O.touches.length===0&&(t.touchData.capture=!1),O.preventDefault();else return;var ve=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var ye=t.cy,Ue=ye.zoom(),Ee=t.touchData.now,Ge=t.touchData.earlier;if(O.touches[0]){var Qe=t.projectIntoViewport(O.touches[0].clientX,O.touches[0].clientY);Ee[0]=Qe[0],Ee[1]=Qe[1]}if(O.touches[1]){var Qe=t.projectIntoViewport(O.touches[1].clientX,O.touches[1].clientY);Ee[2]=Qe[0],Ee[3]=Qe[1]}if(O.touches[2]){var Qe=t.projectIntoViewport(O.touches[2].clientX,O.touches[2].clientY);Ee[4]=Qe[0],Ee[5]=Qe[1]}oe&&oe.unactivate();var ft;if(t.touchData.cxt){if(ft={originalEvent:O,type:"cxttapend",position:{x:Ee[0],y:Ee[1]}},oe?oe.emit(ft):ye.emit(ft),!t.touchData.cxtDragged){var qe={originalEvent:O,type:"cxttap",position:{x:Ee[0],y:Ee[1]}};oe?oe.emit(qe):ye.emit(qe)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!O.touches[2]&&ye.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var ot=ye.collection(t.getAllInBox(ve[0],ve[1],ve[2],ve[3]));ve[0]=void 0,ve[1]=void 0,ve[2]=void 0,ve[3]=void 0,ve[4]=0,t.redrawHint("select",!0),ye.emit({type:"boxend",originalEvent:O,position:{x:Ee[0],y:Ee[1]}});var Ke=function(Xr){return Xr.selectable()&&!Xr.selected()};ot.emit("box").stdFilter(Ke).select().emit("boxselect"),ot.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(oe!=null&&oe.unactivate(),O.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!O.touches[1]){if(!O.touches[0]){if(!O.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Je=t.dragData.touchDragEles;if(oe!=null){var Dt=oe._private.grabbed;p(Je),t.redrawHint("drag",!0),t.redrawHint("eles",!0),Dt&&(oe.emit("freeon"),Je.emit("free"),t.dragData.didDrag&&(oe.emit("dragfreeon"),Je.emit("dragfree"))),a(oe,["touchend","tapend","vmouseup","tapdragout"],O,{x:Ee[0],y:Ee[1]}),oe.unactivate(),t.touchData.start=null}else{var Rt=t.findNearestElement(Ee[0],Ee[1],!0,!0);a(Rt,["touchend","tapend","vmouseup","tapdragout"],O,{x:Ee[0],y:Ee[1]})}var nr=t.touchData.startPosition[0]-Ee[0],ir=nr*nr,kt=t.touchData.startPosition[1]-Ee[1],Jt=kt*kt,Ut=ir+Jt,Er=Ut*Ue*Ue;t.touchData.singleTouchMoved||(oe||ye.$(":selected").unselect(["tapunselect"]),a(oe,["tap","vclick"],O,{x:Ee[0],y:Ee[1]}),Xe=!1,O.timeStamp-Re<=ye.multiClickDebounceTime()?(Ie&&clearTimeout(Ie),Xe=!0,Re=null,a(oe,["dbltap","vdblclick"],O,{x:Ee[0],y:Ee[1]})):(Ie=setTimeout(function(){Xe||a(oe,["onetap","voneclick"],O,{x:Ee[0],y:Ee[1]})},ye.multiClickDebounceTime()),Re=O.timeStamp)),oe!=null&&!t.dragData.didDrag&&oe._private.selectable&&Er"u"){var $e=[],ze=function(O){return{clientX:O.clientX,clientY:O.clientY,force:1,identifier:O.pointerId,pageX:O.pageX,pageY:O.pageY,radiusX:O.width/2,radiusY:O.height/2,screenX:O.screenX,screenY:O.screenY,target:O.target}},Be=function(O){return{event:O,touch:ze(O)}},_e=function(O){$e.push(Be(O))},rt=function(O){for(var oe=0;oe<$e.length;oe++){var Ce=$e[oe];if(Ce.event.pointerId===O.pointerId){$e.splice(oe,1);return}}},je=function(O){var oe=$e.filter(function(Ce){return Ce.event.pointerId===O.pointerId})[0];oe.event=O,oe.touch=ze(O)},We=function(O){O.touches=$e.map(function(oe){return oe.touch})},et=function(O){return O.pointerType==="mouse"||O.pointerType===4};t.registerBinding(t.container,"pointerdown",function(fe){et(fe)||(fe.preventDefault(),_e(fe),We(fe),Ae(fe))}),t.registerBinding(t.container,"pointerup",function(fe){et(fe)||(rt(fe),We(fe),Fe(fe))}),t.registerBinding(t.container,"pointercancel",function(fe){et(fe)||(rt(fe),We(fe),Ne(fe))}),t.registerBinding(t.container,"pointermove",function(fe){et(fe)||(fe.preventDefault(),je(fe),We(fe),Le(fe))})}};var mr={};mr.generatePolygon=function(t,e){return this.nodeShapes[t]={renderer:this,name:t,points:e,draw:function(a,n,i,s,o){this.renderer.nodeShapeImpl("polygon",a,n,i,s,o,this.points)},intersectLine:function(a,n,i,s,o,u,l){return Fa(o,u,this.points,a,n,i/2,s/2,l)},checkPoint:function(a,n,i,s,o,u,l){return pr(a,n,this.points,u,l,s,o,[0,-1],i)}}},mr.generateEllipse=function(){return this.nodeShapes.ellipse={renderer:this,name:"ellipse",draw:function(e,r,a,n,i){this.renderer.nodeShapeImpl(this.name,e,r,a,n,i)},intersectLine:function(e,r,a,n,i,s,o){return Gf(i,s,e,r,a/2+o,n/2+o)},checkPoint:function(e,r,a,n,i,s,o){return Gr(e,r,n,i,s,o,a)}}},mr.generateRoundPolygon=function(t,e){for(var r=new Array(e.length*2),a=0;a0)return ie[0]}return null},d=Object.keys(h),v=0;v0?c:Ds(i,s,e,r,a,n,o)},checkPoint:function(e,r,a,n,i,s,o){var u=Ga(n,i),l=2*u;if(pr(e,r,this.points,s,o,n,i-l,[0,-1],a)||pr(e,r,this.points,s,o,n-l,i,[0,-1],a))return!0;var f=n/2+2*a,h=i/2+2*a,c=[s-f,o-h,s-f,o,s+f,o,s+f,o-h];return!!(Ht(e,r,c)||Gr(e,r,l,l,s+n/2-u,o+i/2-u,a)||Gr(e,r,l,l,s-n/2+u,o+i/2-u,a))}}},mr.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",_t(3,0)),this.generateRoundPolygon("round-triangle",_t(3,0)),this.generatePolygon("rectangle",_t(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",_t(5,0)),this.generateRoundPolygon("round-pentagon",_t(5,0)),this.generatePolygon("hexagon",_t(6,0)),this.generateRoundPolygon("round-hexagon",_t(6,0)),this.generatePolygon("heptagon",_t(7,0)),this.generateRoundPolygon("round-heptagon",_t(7,0)),this.generatePolygon("octagon",_t(8,0)),this.generateRoundPolygon("round-octagon",_t(8,0));var a=new Array(20);{var n=di(5,0),i=di(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var o=0;o=e.deqFastCost*E)break}else if(l){if(m>=e.deqCost*d||m>=e.deqAvgCost*c)break}else if(b>=e.deqNoDrawCost*$i)break;var I=e.deq(a,p,y);if(I.length>0)for(var A=0;A0&&(e.onDeqd(a,v),!l&&e.shouldRedraw(a,v,p,y)&&i())},o=e.priority||li;n.beforeRender(s,o(a))}}}},Eg=function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:vn;ge(this,t),this.idsByKey=new ur,this.keyForId=new ur,this.cachesByLvl=new ur,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return N(t,[{key:"getIdsFor",value:function(r){r==null&&Tt("Can not get id list for null key");var a=this.idsByKey,n=this.idsByKey.get(r);return n||(n=new jr,a.set(r,n)),n}},{key:"addIdForKey",value:function(r,a){r!=null&&this.getIdsFor(r).add(a)}},{key:"deleteIdForKey",value:function(r,a){r!=null&&this.getIdsFor(r).delete(a)}},{key:"getNumberOfIdsForKey",value:function(r){return r==null?0:this.getIdsFor(r).size}},{key:"updateKeyMappingFor",value:function(r){var a=r.id(),n=this.keyForId.get(a),i=this.getKey(r);this.deleteIdForKey(n,a),this.addIdForKey(i,a),this.keyForId.set(a,i)}},{key:"deleteKeyMappingFor",value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteIdForKey(n,a),this.keyForId.delete(a)}},{key:"keyHasChangedFor",value:function(r){var a=r.id(),n=this.keyForId.get(a),i=this.getKey(r);return n!==i}},{key:"isInvalid",value:function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)}},{key:"getCachesAt",value:function(r){var a=this.cachesByLvl,n=this.lvls,i=a.get(r);return i||(i=new ur,a.set(r,i),n.push(r)),i}},{key:"getCache",value:function(r,a){return this.getCachesAt(a).get(r)}},{key:"get",value:function(r,a){var n=this.getKey(r),i=this.getCache(n,a);return i!=null&&this.updateKeyMappingFor(r),i}},{key:"getForCachedKey",value:function(r,a){var n=this.keyForId.get(r.id()),i=this.getCache(n,a);return i}},{key:"hasCache",value:function(r,a){return this.getCachesAt(a).has(r)}},{key:"has",value:function(r,a){var n=this.getKey(r);return this.hasCache(n,a)}},{key:"setCache",value:function(r,a,n){n.key=r,this.getCachesAt(a).set(r,n)}},{key:"set",value:function(r,a,n){var i=this.getKey(r);this.setCache(i,a,n),this.updateKeyMappingFor(r)}},{key:"deleteCache",value:function(r,a){this.getCachesAt(a).delete(r)}},{key:"delete",value:function(r,a){var n=this.getKey(r);this.deleteCache(n,a)}},{key:"invalidateKey",value:function(r){var a=this;this.lvls.forEach(function(n){return a.deleteCache(r,n)})}},{key:"invalidate",value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteKeyMappingFor(r);var i=this.doesEleInvalidateKey(r);return i&&this.invalidateKey(n),i||this.getNumberOfIdsForKey(n)===0}}]),t}(),pl=25,Jn=50,jn=-4,_i=3,wg=7.99,xg=8,Tg=1024,Cg=1024,Dg=1024,Sg=.2,Lg=.8,Ag=10,Og=.15,Ng=.1,Mg=.9,Ig=.9,Rg=100,kg=1,Ea={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Pg=At({getKey:null,doesEleInvalidateKey:vn,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:ds,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),en=function(e,r){var a=this;a.renderer=e,a.onDequeues=[];var n=Pg(r);He(a,n),a.lookup=new Eg(n.getKey,n.doesEleInvalidateKey),a.setupDequeueing()},St=en.prototype;St.reasons=Ea,St.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]},St.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},a=r[t]=r[t]||[];return a},St.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new ka(function(r,a){return a.reqs-r.reqs});return e},St.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e},St.getElement=function(t,e,r,a,n){var i=this,s=this.renderer,o=s.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!i.allowEdgeTxrCaching&&t.isEdge()||!i.allowParentTxrCaching&&t.isParent())return null;if(a==null&&(a=Math.ceil(hi(o*r))),a=wg||a>_i)return null;var l=Math.pow(2,a),f=e.h*l,h=e.w*l,c=s.eleTextBiggerThanMin(t,l);if(!this.isVisible(t,c))return null;var d=u.get(t,a);if(d&&d.invalidated&&(d.invalidated=!1,d.texture.invalidatedWidth-=d.width),d)return d;var v;if(f<=pl?v=pl:f<=Jn?v=Jn:v=Math.ceil(f/Jn)*Jn,f>Dg||h>Cg)return null;var y=i.getTextureQueue(v),p=y[y.length-2],g=function(){return i.recycleTexture(v,h)||i.addTexture(v,h)};p||(p=y[y.length-1]),p||(p=g()),p.width-p.usedWidtha;G--)C=i.getElement(t,e,r,G,Ea.downscale);B()}else return i.queueElement(t,A.level-1),A;else{var M;if(!b&&!E&&!I)for(var W=a-1;W>=jn;W--){var F=u.get(t,W);if(F){M=F;break}}if(m(M))return i.queueElement(t,a),M;p.context.translate(p.usedWidth,0),p.context.scale(l,l),this.drawElement(p.context,t,e,c,!1),p.context.scale(1/l,1/l),p.context.translate(-p.usedWidth,0)}return d={x:p.usedWidth,texture:p,level:a,scale:l,width:h,height:f,scaledLabelShown:c},p.usedWidth+=Math.ceil(h+xg),p.eleCaches.push(d),u.set(t,a,d),i.checkTextureFullness(p),d},St.invalidateElements=function(t){for(var e=0;e=Sg*t.width&&this.retireTexture(t)},St.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>Lg&&t.fullnessChecks>=Ag?xr(r,t):t.fullnessChecks++},St.retireTexture=function(t){var e=this,r=t.height,a=e.getTextureQueue(r),n=this.lookup;xr(a,t),t.retired=!0;for(var i=t.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,ui(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),xr(n,s),a.push(s),s}},St.queueElement=function(t,e){var r=this,a=r.getElementQueue(),n=r.getElementKeyToQueue(),i=this.getKey(t),s=n[i];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,a.updateItem(s);else{var o={eles:t.spawn().merge(t),level:e,reqs:1,key:i};a.push(o),n[i]=o}},St.dequeue=function(t){for(var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=[],i=e.lookup,s=0;s0;s++){var o=r.pop(),u=o.key,l=o.eles[0],f=i.hasCache(l,o.level);if(a[u]=null,f)continue;n.push(o);var h=e.getBoundingBox(l);e.getElement(l,h,t,o.level,Ea.dequeue)}return n},St.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=this.getKey(t),i=a[n];i!=null&&(i.eles.length===1?(i.reqs=oi,r.updateItem(i),r.pop(),a[n]=null):i.eles.unmerge(t))},St.onDequeue=function(t){this.onDequeues.push(t)},St.offDequeue=function(t){xr(this.onDequeues,t)},St.setupDequeueing=gl.setupDequeueing({deqRedrawThreshold:Rg,deqCost:Og,deqAvgCost:Ng,deqNoDrawCost:Mg,deqFastCost:Ig,deq:function(e,r,a){return e.dequeue(r,a)},onDeqd:function(e,r){for(var a=0;a=Fg||r>ei)return null}a.validateLayersElesOrdering(r,t);var u=a.layersByLevel,l=Math.pow(2,r),f=u[r]=u[r]||[],h,c=a.levelIsComplete(r,t),d,v=function(){var B=function(re){if(a.validateLayersElesOrdering(re,t),a.levelIsComplete(re,t))return d=u[re],!0},G=function(re){if(!d)for(var K=r+re;tn<=K&&K<=ei&&!B(K);K+=re);};G(1),G(-1);for(var M=f.length-1;M>=0;M--){var W=f[M];W.invalid&&xr(f,W)}};if(!c)v();else return f;var y=function(){if(!h){h=Yt();for(var B=0;BHg)return null;var W=a.makeLayer(h,r);if(G!=null){var F=f.indexOf(G)+1;f.splice(F,0,W)}else(B.insert===void 0||B.insert)&&f.unshift(W);return W};if(a.skipping&&!o)return null;for(var g=null,m=t.length/Bg,b=!o,E=0;E=m||!Cs(g.bb,I.boundingBox()))&&(g=p({insert:!0,after:g}),!g))return null;d||b?a.queueLayer(g,I):a.drawEleInLayer(g,I,r,e),g.eles.push(I),x[r]=g}return d||(b?null:f)},It.getEleLevelForLayerLevel=function(t,e){return t},It.drawEleInLayer=function(t,e,r,a){var n=this,i=this.renderer,s=t.context,o=e.boundingBox();o.w===0||o.h===0||!e.visible()||(r=n.getEleLevelForLayerLevel(r,a),i.setImgSmoothing(s,!1),i.drawCachedElement(s,e,null,null,r,Xg),i.setImgSmoothing(s,!0))},It.levelIsComplete=function(t,e){var r=this,a=r.layersByLevel[t];if(!a||a.length===0)return!1;for(var n=0,i=0;i0||s.invalid)return!1;n+=s.eles.length}return n===e.length},It.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var a=0;a0){e=!0;break}}return e},It.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=gr(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,function(a,n,i){e.invalidateLayer(a)}))},It.invalidateLayer=function(t){if(this.lastInvalidationTime=gr(),!t.invalid){var e=t.level,r=t.eles,a=this.layersByLevel[e];xr(a,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var n=0;n3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o=e._private.rscratch;if(!(i&&!e.visible())&&!(o.badLine||o.allpts==null||isNaN(o.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var l=i?e.pstyle("opacity").value:1,f=i?e.pstyle("line-opacity").value:1,h=e.pstyle("curve-style").value,c=e.pstyle("line-style").value,d=e.pstyle("width").pfValue,v=e.pstyle("line-cap").value,y=l*f,p=l*f,g=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:y;h==="straight-triangle"?(s.eleStrokeStyle(t,e,M),s.drawEdgeTrianglePath(e,t,o.allpts)):(t.lineWidth=d,t.lineCap=v,s.eleStrokeStyle(t,e,M),s.drawEdgePath(e,t,o.allpts,c),t.lineCap="butt")},m=function(){n&&s.drawEdgeOverlay(t,e)},b=function(){n&&s.drawEdgeUnderlay(t,e)},E=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p;s.drawArrowheads(t,e,M)},I=function(){s.drawElementText(t,e,null,a)};t.lineJoin="round";var A=e.pstyle("ghost").value==="yes";if(A){var x=e.pstyle("ghost-offset-x").pfValue,k=e.pstyle("ghost-offset-y").pfValue,C=e.pstyle("ghost-opacity").value,B=y*C;t.translate(x,k),g(B),E(B),t.translate(-x,-k)}b(),g(),E(),m(),I(),r&&t.translate(u.x1,u.y1)}};var Tl=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,a){if(a.visible()){var n=a.pstyle("".concat(e,"-opacity")).value;if(n!==0){var i=this,s=i.usePaths(),o=a._private.rscratch,u=a.pstyle("".concat(e,"-padding")).pfValue,l=2*u,f=a.pstyle("".concat(e,"-color")).value;r.lineWidth=l,o.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",i.colorStrokeStyle(r,f[0],f[1],f[2],n),i.drawEdgePath(a,r,o.allpts,"solid")}}}};br.drawEdgeOverlay=Tl("overlay"),br.drawEdgeUnderlay=Tl("underlay"),br.drawEdgePath=function(t,e,r,a){var n=t._private.rscratch,i=e,s,o=!1,u=this.usePaths(),l=t.pstyle("line-dash-pattern").pfValue,f=t.pstyle("line-dash-offset").pfValue;if(u){var h=r.join("$"),c=n.pathCacheKey&&n.pathCacheKey===h;c?(s=e=n.pathCache,o=!0):(s=e=new Path2D,n.pathCacheKey=h,n.pathCache=s)}if(i.setLineDash)switch(a){case"dotted":i.setLineDash([1,1]);break;case"dashed":i.setLineDash(l),i.lineDashOffset=f;break;case"solid":i.setLineDash([]);break}if(!o&&!n.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),n.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var d=2;d+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(a==null){if(i&&!s.eleTextBiggerThanMin(e))return}else if(a===!1)return;if(e.isNode()){var o=e.pstyle("label");if(!o||!o.value)return;var u=s.getLabelJustification(e);t.textAlign=u,t.textBaseline="bottom"}else{var l=e.element()._private.rscratch.badLine,f=e.pstyle("label"),h=e.pstyle("source-label"),c=e.pstyle("target-label");if(l||(!f||!f.value)&&(!h||!h.value)&&(!c||!c.value))return;t.textAlign="center",t.textBaseline="bottom"}var d=!r,v;r&&(v=r,t.translate(-v.x1,-v.y1)),n==null?(s.drawText(t,e,null,d,i),e.isEdge()&&(s.drawText(t,e,"source",d,i),s.drawText(t,e,"target",d,i))):s.drawText(t,e,n,d,i),r&&t.translate(v.x1,v.y1)},Ur.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,a=e.pstyle("font-style").strValue,n=e.pstyle("font-size").pfValue+"px",i=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,o=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,u=e.pstyle("text-outline-opacity").value*o,l=e.pstyle("color").value,f=e.pstyle("text-outline-color").value;t.font=a+" "+s+" "+n+" "+i,t.lineJoin="round",this.colorFillStyle(t,l[0],l[1],l[2],o),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};function ap(t,e,r,a,n){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5;t.beginPath(),t.moveTo(e+i,r),t.lineTo(e+a-i,r),t.quadraticCurveTo(e+a,r,e+a,r+i),t.lineTo(e+a,r+n-i),t.quadraticCurveTo(e+a,r+n,e+a-i,r+n),t.lineTo(e+i,r+n),t.quadraticCurveTo(e,r+n,e,r+n-i),t.lineTo(e,r+i),t.quadraticCurveTo(e,r,e+i,r),t.closePath(),t.fill()}Ur.getTextAngle=function(t,e){var r,a=t._private,n=a.rscratch,i=e?e+"-":"",s=t.pstyle(i+"text-rotation"),o=tr(n,"labelAngle",e);return s.strValue==="autorotate"?r=t.isEdge()?o:0:s.strValue==="none"?r=0:r=s.pfValue,r},Ur.drawText=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=e._private,s=i.rscratch,o=n?e.effectiveOpacity():1;if(!(n&&(o===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=tr(s,"labelX",r),l=tr(s,"labelY",r),f,h,c=this.getLabelText(e,r);if(c!=null&&c!==""&&!isNaN(u)&&!isNaN(l)){this.setupTextStyle(t,e,n);var d=r?r+"-":"",v=tr(s,"labelWidth",r),y=tr(s,"labelHeight",r),p=e.pstyle(d+"text-margin-x").pfValue,g=e.pstyle(d+"text-margin-y").pfValue,m=e.isEdge(),b=e.pstyle("text-halign").value,E=e.pstyle("text-valign").value;m&&(b="center",E="center"),u+=p,l+=g;var I;switch(a?I=this.getTextAngle(e,r):I=0,I!==0&&(f=u,h=l,t.translate(f,h),t.rotate(I),u=0,l=0),E){case"top":break;case"center":l+=y/2;break;case"bottom":l+=y;break}var A=e.pstyle("text-background-opacity").value,x=e.pstyle("text-border-opacity").value,k=e.pstyle("text-border-width").pfValue,C=e.pstyle("text-background-padding").pfValue;if(A>0||k>0&&x>0){var B=u-C;switch(b){case"left":B-=v;break;case"center":B-=v/2;break}var G=l-y-C,M=v+2*C,W=y+2*C;if(A>0){var F=t.fillStyle,re=e.pstyle("text-background-color").value;t.fillStyle="rgba("+re[0]+","+re[1]+","+re[2]+","+A*o+")";var K=e.pstyle("text-background-shape").strValue;K.indexOf("round")===0?ap(t,B,G,M,W,2):t.fillRect(B,G,M,W),t.fillStyle=F}if(k>0&&x>0){var X=t.strokeStyle,ne=t.lineWidth,ue=e.pstyle("text-border-color").value,me=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+ue[0]+","+ue[1]+","+ue[2]+","+x*o+")",t.lineWidth=k,t.setLineDash)switch(me){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=k/4,t.setLineDash([]);break;case"solid":t.setLineDash([]);break}if(t.strokeRect(B,G,M,W),me==="double"){var ie=k/2;t.strokeRect(B+ie,G+ie,M-ie*2,W-ie*2)}t.setLineDash&&t.setLineDash([]),t.lineWidth=ne,t.strokeStyle=X}}var de=2*e.pstyle("text-outline-width").pfValue;if(de>0&&(t.lineWidth=de),e.pstyle("text-wrap").value==="wrap"){var we=tr(s,"labelWrapCachedLines",r),De=tr(s,"labelLineHeight",r),xe=v/2,Te=this.getLabelJustification(e);switch(Te==="auto"||(b==="left"?Te==="left"?u+=-v:Te==="center"&&(u+=-xe):b==="center"?Te==="left"?u+=-xe:Te==="right"&&(u+=xe):b==="right"&&(Te==="center"?u+=xe:Te==="right"&&(u+=v))),E){case"top":l-=(we.length-1)*De;break;case"center":case"bottom":l-=(we.length-1)*De;break}for(var se=0;se0&&t.strokeText(we[se],u,l),t.fillText(we[se],u,l),l+=De}else de>0&&t.strokeText(c,u,l),t.fillText(c,u,l);I!==0&&(t.rotate(-I),t.translate(-f,-h))}}};var wa={};wa.drawNode=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o,u,l=e._private,f=l.rscratch,h=e.position();if(!(!R(h.x)||!R(h.y))&&!(i&&!e.visible())){var c=i?e.effectiveOpacity():1,d=s.usePaths(),v,y=!1,p=e.padding();o=e.width()+2*p,u=e.height()+2*p;var g;r&&(g=r,t.translate(-g.x1,-g.y1));for(var m=e.pstyle("background-image"),b=m.value,E=new Array(b.length),I=new Array(b.length),A=0,x=0;x0&&arguments[0]!==void 0?arguments[0]:W;s.eleFillStyle(t,e,fe)},we=function(){var fe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:K;s.colorStrokeStyle(t,F[0],F[1],F[2],fe)},De=function(){var fe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:me;s.colorStrokeStyle(t,ne[0],ne[1],ne[2],fe)},xe=function(fe,O,oe,Ce){var ve=s.nodePathCache=s.nodePathCache||[],ye=cs(oe==="polygon"?oe+","+Ce.join(","):oe,""+O,""+fe),Ue=ve[ye],Ee,Ge=!1;return Ue!=null?(Ee=Ue,Ge=!0,f.pathCache=Ee):(Ee=new Path2D,ve[ye]=f.pathCache=Ee),{path:Ee,cacheHit:Ge}},Te=e.pstyle("shape").strValue,se=e.pstyle("shape-polygon-points").pfValue;if(d){t.translate(h.x,h.y);var Se=xe(o,u,Te,se);v=Se.path,y=Se.cacheHit}var Ae=function(){if(!y){var fe=h;d&&(fe={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(v||t,fe.x,fe.y,o,u)}d?t.fill(v):t.fill()},Le=function(){for(var fe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,oe=l.backgrounding,Ce=0,ve=0;ve0&&arguments[0]!==void 0?arguments[0]:!1,O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c;s.hasPie(e)&&(s.drawPie(t,e,O),fe&&(d||s.nodeShapes[s.getNodeShape(e)].draw(t,h.x,h.y,o,u)))},Fe=function(){var fe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,O=(G>0?G:-G)*fe,oe=G>0?0:255;G!==0&&(s.colorFillStyle(t,oe,oe,oe,O),d?t.fill(v):t.fill())},Xe=function(){if(M>0){if(t.lineWidth=M,t.lineCap="butt",t.setLineDash)switch(re){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}if(d?t.stroke(v):t.stroke(),re==="double"){t.lineWidth=M/3;var fe=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",d?t.stroke(v):t.stroke(),t.globalCompositeOperation=fe}t.setLineDash&&t.setLineDash([])}},Ie=function(){if(X>0){if(t.lineWidth=X,t.lineCap="butt",t.setLineDash)switch(ue){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var fe=h;d&&(fe={x:0,y:0});var O=s.getNodeShape(e),oe=(o+M+(X+ie))/o,Ce=(u+M+(X+ie))/u,ve=o*oe,ye=u*Ce,Ue=s.nodeShapes[O].points,Ee;if(d){var Ge=xe(ve,ye,O,Ue);Ee=Ge.path}if(O==="ellipse")s.drawEllipsePath(Ee||t,fe.x,fe.y,ve,ye);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(O)){var Qe=0,ft=0,qe=0;O==="round-diamond"?Qe=(M+ie+X)*1.4:O==="round-heptagon"?(Qe=(M+ie+X)*1.075,qe=-(M/2+ie+X)/35):O==="round-hexagon"?Qe=(M+ie+X)*1.12:O==="round-pentagon"?(Qe=(M+ie+X)*1.13,qe=-(M/2+ie+X)/15):O==="round-tag"?(Qe=(M+ie+X)*1.12,ft=(M/2+X+ie)*.07):O==="round-triangle"&&(Qe=(M+ie+X)*(Math.PI/2),qe=-(M+ie/2+X)/Math.PI),Qe!==0&&(oe=(o+Qe)/o,Ce=(u+Qe)/u),s.drawRoundPolygonPath(Ee||t,fe.x+ft,fe.y+qe,o*oe,u*Ce,Ue)}else if(["roundrectangle","round-rectangle"].includes(O))s.drawRoundRectanglePath(Ee||t,fe.x,fe.y,ve,ye);else if(["cutrectangle","cut-rectangle"].includes(O))s.drawCutRectanglePath(Ee||t,fe.x,fe.y,ve,ye);else if(["bottomroundrectangle","bottom-round-rectangle"].includes(O))s.drawBottomRoundRectanglePath(Ee||t,fe.x,fe.y,ve,ye);else if(O==="barrel")s.drawBarrelPath(Ee||t,fe.x,fe.y,ve,ye);else if(O.startsWith("polygon")||["rhomboid","right-rhomboid","round-tag","tag","vee"].includes(O)){var ot=(M+X+ie)/o;Ue=bn(En(Ue,ot)),s.drawPolygonPath(Ee||t,fe.x,fe.y,o,u,Ue)}else{var Ke=(M+X+ie)/o;Ue=bn(En(Ue,-Ke)),s.drawPolygonPath(Ee||t,fe.x,fe.y,o,u,Ue)}if(d?t.stroke(Ee):t.stroke(),ue==="double"){t.lineWidth=M/3;var Je=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",d?t.stroke(Ee):t.stroke(),t.globalCompositeOperation=Je}t.setLineDash&&t.setLineDash([])}},Re=function(){n&&s.drawNodeOverlay(t,e,h,o,u)},$e=function(){n&&s.drawNodeUnderlay(t,e,h,o,u)},ze=function(){s.drawElementText(t,e,null,a)},Be=e.pstyle("ghost").value==="yes";if(Be){var _e=e.pstyle("ghost-offset-x").pfValue,rt=e.pstyle("ghost-offset-y").pfValue,je=e.pstyle("ghost-opacity").value,We=je*c;t.translate(_e,rt),De(),Ie(),de(je*W),Ae(),Le(We,!0),we(je*K),Xe(),Ne(G!==0||M!==0),Le(We,!1),Fe(We),t.translate(-_e,-rt)}d&&t.translate(-h.x,-h.y),$e(),d&&t.translate(h.x,h.y),De(),Ie(),de(),Ae(),Le(c,!0),we(),Xe(),Ne(G!==0||M!==0),Le(c,!1),Fe(),d&&t.translate(-h.x,-h.y),ze(),Re(),r&&t.translate(g.x1,g.y1)}};var Cl=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,a,n,i,s){var o=this;if(a.visible()){var u=a.pstyle("".concat(e,"-padding")).pfValue,l=a.pstyle("".concat(e,"-opacity")).value,f=a.pstyle("".concat(e,"-color")).value,h=a.pstyle("".concat(e,"-shape")).value;if(l>0){if(n=n||a.position(),i==null||s==null){var c=a.padding();i=a.width()+2*c,s=a.height()+2*c}o.colorFillStyle(r,f[0],f[1],f[2],l),o.nodeShapes[h].draw(r,n.x,n.y,i+u*2,s+u*2),r.fill()}}}};wa.drawNodeOverlay=Cl("overlay"),wa.drawNodeUnderlay=Cl("underlay"),wa.hasPie=function(t){return t=t[0],t._private.hasPie},wa.drawPie=function(t,e,r,a){e=e[0],a=a||e.position();var n=e.cy().style(),i=e.pstyle("pie-size"),s=a.x,o=a.y,u=e.width(),l=e.height(),f=Math.min(u,l)/2,h=0,c=this.usePaths();c&&(s=0,o=0),i.units==="%"?f=f*i.pfValue:i.pfValue!==void 0&&(f=i.pfValue/2);for(var d=1;d<=n.pieBackgroundN;d++){var v=e.pstyle("pie-"+d+"-background-size").value,y=e.pstyle("pie-"+d+"-background-color").value,p=e.pstyle("pie-"+d+"-background-opacity").value*r,g=v/100;g+h>1&&(g=1-h);var m=1.5*Math.PI+2*Math.PI*h,b=2*Math.PI*g,E=m+b;v===0||h>=1||h+g>1||(t.beginPath(),t.moveTo(s,o),t.arc(s,o,f,m,E),t.closePath(),this.colorFillStyle(t,y[0],y[1],y[2],p),t.fill(),h+=g)}};var Kt={},np=100;Kt.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/e},Kt.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,a,n=0;ns.minMbLowQualFrames&&(s.motionBlurPxRatio=s.mbPxRBlurry)),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!h&&(f[s.NODE]=!0,f[s.SELECT_BOX]=!0);var m=u.style(),b=u.zoom(),E=n!==void 0?n:b,I=u.pan(),A={x:I.x,y:I.y},x={zoom:b,pan:{x:I.x,y:I.y}},k=s.prevViewport,C=k===void 0||x.zoom!==k.zoom||x.pan.x!==k.pan.x||x.pan.y!==k.pan.y;!C&&!(y&&!v)&&(s.motionBlurPxRatio=1),i&&(A=i),E*=o,A.x*=o,A.y*=o;var B=s.getCachedZSortedEles();function G(Ie,Re,$e,ze,Be){var _e=Ie.globalCompositeOperation;Ie.globalCompositeOperation="destination-out",s.colorFillStyle(Ie,255,255,255,s.motionBlurTransparency),Ie.fillRect(Re,$e,ze,Be),Ie.globalCompositeOperation=_e}function M(Ie,Re){var $e,ze,Be,_e;!s.clearingMotionBlur&&(Ie===l.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]||Ie===l.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG])?($e={x:I.x*d,y:I.y*d},ze=b*d,Be=s.canvasWidth*d,_e=s.canvasHeight*d):($e=A,ze=E,Be=s.canvasWidth,_e=s.canvasHeight),Ie.setTransform(1,0,0,1,0,0),Re==="motionBlur"?G(Ie,0,0,Be,_e):!e&&(Re===void 0||Re)&&Ie.clearRect(0,0,Be,_e),r||(Ie.translate($e.x,$e.y),Ie.scale(ze,ze)),i&&Ie.translate(i.x,i.y),n&&Ie.scale(n,n)}if(h||(s.textureDrawLastFrame=!1),h){if(s.textureDrawLastFrame=!0,!s.textureCache){s.textureCache={},s.textureCache.bb=u.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER];var W=s.data.bufferContexts[s.TEXTURE_BUFFER];W.setTransform(1,0,0,1,0,0),W.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:W,drawOnlyNodeLayer:!0,forcedPxRatio:o*s.textureMult});var x=s.textureCache.viewport={zoom:u.zoom(),pan:u.pan(),width:s.canvasWidth,height:s.canvasHeight};x.mpan={x:(0-x.pan.x)/x.zoom,y:(0-x.pan.y)/x.zoom}}f[s.DRAG]=!1,f[s.NODE]=!1;var F=l.contexts[s.NODE],re=s.textureCache.texture,x=s.textureCache.viewport;F.setTransform(1,0,0,1,0,0),c?G(F,0,0,x.width,x.height):F.clearRect(0,0,x.width,x.height);var K=m.core("outside-texture-bg-color").value,X=m.core("outside-texture-bg-opacity").value;s.colorFillStyle(F,K[0],K[1],K[2],X),F.fillRect(0,0,x.width,x.height);var b=u.zoom();M(F,!1),F.clearRect(x.mpan.x,x.mpan.y,x.width/x.zoom/o,x.height/x.zoom/o),F.drawImage(re,x.mpan.x,x.mpan.y,x.width/x.zoom/o,x.height/x.zoom/o)}else s.textureOnViewport&&!e&&(s.textureCache=null);var ne=u.extent(),ue=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles||s.cy.animated(),me=s.hideEdgesOnViewport&&ue,ie=[];if(ie[s.NODE]=!f[s.NODE]&&c&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,ie[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),ie[s.DRAG]=!f[s.DRAG]&&c&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,ie[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),f[s.NODE]||r||a||ie[s.NODE]){var de=c&&!ie[s.NODE]&&d!==1,F=e||(de?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:l.contexts[s.NODE]),we=c&&!de?"motionBlur":void 0;M(F,we),me?s.drawCachedNodes(F,B.nondrag,o,ne):s.drawLayeredElements(F,B.nondrag,o,ne),s.debug&&s.drawDebugPoints(F,B.nondrag),!r&&!c&&(f[s.NODE]=!1)}if(!a&&(f[s.DRAG]||r||ie[s.DRAG])){var de=c&&!ie[s.DRAG]&&d!==1,F=e||(de?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:l.contexts[s.DRAG]);M(F,c&&!de?"motionBlur":void 0),me?s.drawCachedNodes(F,B.drag,o,ne):s.drawCachedElements(F,B.drag,o,ne),s.debug&&s.drawDebugPoints(F,B.drag),!r&&!c&&(f[s.DRAG]=!1)}if(s.showFps||!a&&f[s.SELECT_BOX]&&!r){var F=e||l.contexts[s.SELECT_BOX];if(M(F),s.selection[4]==1&&(s.hoverData.selecting||s.touchData.selecting)){var b=s.cy.zoom(),De=m.core("selection-box-border-width").value/b;F.lineWidth=De,F.fillStyle="rgba("+m.core("selection-box-color").value[0]+","+m.core("selection-box-color").value[1]+","+m.core("selection-box-color").value[2]+","+m.core("selection-box-opacity").value+")",F.fillRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]),De>0&&(F.strokeStyle="rgba("+m.core("selection-box-border-color").value[0]+","+m.core("selection-box-border-color").value[1]+","+m.core("selection-box-border-color").value[2]+","+m.core("selection-box-opacity").value+")",F.strokeRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]))}if(l.bgActivePosistion&&!s.hoverData.selecting){var b=s.cy.zoom(),xe=l.bgActivePosistion;F.fillStyle="rgba("+m.core("active-bg-color").value[0]+","+m.core("active-bg-color").value[1]+","+m.core("active-bg-color").value[2]+","+m.core("active-bg-opacity").value+")",F.beginPath(),F.arc(xe.x,xe.y,m.core("active-bg-size").pfValue/b,0,2*Math.PI),F.fill()}var Te=s.lastRedrawTime;if(s.showFps&&Te){Te=Math.round(Te);var se=Math.round(1e3/Te);F.setTransform(1,0,0,1,0,0),F.fillStyle="rgba(255, 0, 0, 0.75)",F.strokeStyle="rgba(255, 0, 0, 0.75)",F.lineWidth=1,F.fillText("1 frame = "+Te+" ms = "+se+" fps",0,20);var Se=60;F.strokeRect(0,30,250,20),F.fillRect(0,30,250*Math.min(se/Se,1),20)}r||(f[s.SELECT_BOX]=!1)}if(c&&d!==1){var Ae=l.contexts[s.NODE],Le=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],Ne=l.contexts[s.DRAG],Fe=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],Xe=function(Re,$e,ze){Re.setTransform(1,0,0,1,0,0),ze||!g?Re.clearRect(0,0,s.canvasWidth,s.canvasHeight):G(Re,0,0,s.canvasWidth,s.canvasHeight);var Be=d;Re.drawImage($e,0,0,s.canvasWidth*Be,s.canvasHeight*Be,0,0,s.canvasWidth,s.canvasHeight)};(f[s.NODE]||ie[s.NODE])&&(Xe(Ae,Le,ie[s.NODE]),f[s.NODE]=!1),(f[s.DRAG]||ie[s.DRAG])&&(Xe(Ne,Fe,ie[s.DRAG]),f[s.DRAG]=!1)}s.prevViewport=x,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),c&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!h,s.mbFrames=0,f[s.NODE]=!0,f[s.DRAG]=!0,s.redraw()},np)),e||u.emit("render")};var Ir={};Ir.drawPolygonPath=function(t,e,r,a,n,i){var s=a/2,o=n/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*i[0],r+o*i[1]);for(var u=1;u0&&s>0){d.clearRect(0,0,i,s),d.globalCompositeOperation="source-over";var v=this.getCachedZSortedEles();if(t.full)d.translate(-a.x1*l,-a.y1*l),d.scale(l,l),this.drawElements(d,v),d.scale(1/l,1/l),d.translate(a.x1*l,a.y1*l);else{var y=e.pan(),p={x:y.x*l,y:y.y*l};l*=e.zoom(),d.translate(p.x,p.y),d.scale(l,l),this.drawElements(d,v),d.scale(1/l,1/l),d.translate(-p.x,-p.y)}t.bg&&(d.globalCompositeOperation="destination-over",d.fillStyle=t.bg,d.rect(0,0,i,s),d.fill())}return c};function ip(t,e){for(var r=atob(t),a=new ArrayBuffer(r.length),n=new Uint8Array(a),i=0;i"u"?"undefined":ee(OffscreenCanvas))!=="undefined"?r=new OffscreenCanvas(t,e):(r=document.createElement("canvas"),r.width=t,r.height=e),r},[El,cr,br,Yi,Ur,wa,Kt,Ir,rn,Nl].forEach(function(t){He(ut,t)});var lp=[{name:"null",impl:rl},{name:"base",impl:dl},{name:"canvas",impl:sp}],up=[{type:"layout",extensions:pg},{type:"renderer",extensions:lp}],Il={},Rl={};function kl(t,e,r){var a=r,n=function(k){ct("Can not register `"+e+"` for `"+t+"` since `"+k+"` already exists in the prototype and can not be overridden")};if(t==="core"){if(Qa.prototype[e])return n(e);Qa.prototype[e]=r}else if(t==="collection"){if(Nt.prototype[e])return n(e);Nt.prototype[e]=r}else if(t==="layout"){for(var i=function(k){this.options=k,r.call(this,k),L(this._private)||(this._private={}),this._private.cy=k.cy,this._private.listeners=[],this.createEmitter()},s=i.prototype=Object.create(r.prototype),o=[],u=0;u$&&(this.rect.x-=(this.labelWidth-$)/2,this.setWidth(this.labelWidth)),this.labelHeight>_&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-_)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-_),this.setHeight(this.labelHeight))}}},P.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==T.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},P.prototype.transform=function(D){var $=this.rect.x;$>S.WORLD_BOUNDARY?$=S.WORLD_BOUNDARY:$<-S.WORLD_BOUNDARY&&($=-S.WORLD_BOUNDARY);var _=this.rect.y;_>S.WORLD_BOUNDARY?_=S.WORLD_BOUNDARY:_<-S.WORLD_BOUNDARY&&(_=-S.WORLD_BOUNDARY);var Q=new U($,_),ae=D.inverseTransformPoint(Q);this.setLocation(ae.x,ae.y)},P.prototype.getLeft=function(){return this.rect.x},P.prototype.getRight=function(){return this.rect.x+this.rect.width},P.prototype.getTop=function(){return this.rect.y},P.prototype.getBottom=function(){return this.rect.y+this.rect.height},P.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},ee.exports=P},function(ee,ge,H){function N(T,w){T==null&&w==null?(this.x=0,this.y=0):(this.x=T,this.y=w)}N.prototype.getX=function(){return this.x},N.prototype.getY=function(){return this.y},N.prototype.setX=function(T){this.x=T},N.prototype.setY=function(T){this.y=T},N.prototype.getDifference=function(T){return new DimensionD(this.x-T.x,this.y-T.y)},N.prototype.getCopy=function(){return new N(this.x,this.y)},N.prototype.translate=function(T){return this.x+=T.width,this.y+=T.height,this},ee.exports=N},function(ee,ge,H){var N=H(2),T=H(10),w=H(0),S=H(6),z=H(3),U=H(1),P=H(13),Z=H(12),D=H(11);function $(Q,ae,le){N.call(this,le),this.estimatedSize=T.MIN_VALUE,this.margin=w.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=Q,ae!=null&&ae instanceof S?this.graphManager=ae:ae!=null&&ae instanceof Layout&&(this.graphManager=ae.graphManager)}$.prototype=Object.create(N.prototype);for(var _ in N)$[_]=N[_];$.prototype.getNodes=function(){return this.nodes},$.prototype.getEdges=function(){return this.edges},$.prototype.getGraphManager=function(){return this.graphManager},$.prototype.getParent=function(){return this.parent},$.prototype.getLeft=function(){return this.left},$.prototype.getRight=function(){return this.right},$.prototype.getTop=function(){return this.top},$.prototype.getBottom=function(){return this.bottom},$.prototype.isConnected=function(){return this.isConnected},$.prototype.add=function(Q,ae,le){if(ae==null&&le==null){var J=Q;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(J)>-1)throw"Node already in graph!";return J.owner=this,this.getNodes().push(J),J}else{var j=Q;if(!(this.getNodes().indexOf(ae)>-1&&this.getNodes().indexOf(le)>-1))throw"Source or target not in graph!";if(!(ae.owner==le.owner&&ae.owner==this))throw"Both owners must be this graph!";return ae.owner!=le.owner?null:(j.source=ae,j.target=le,j.isInterGraph=!1,this.getEdges().push(j),ae.edges.push(j),le!=ae&&le.edges.push(j),j)}},$.prototype.remove=function(Q){var ae=Q;if(Q instanceof z){if(ae==null)throw"Node is null!";if(!(ae.owner!=null&&ae.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var le=ae.edges.slice(),J,j=le.length,Y=0;Y-1&&V>-1))throw"Source and/or target doesn't know this edge!";J.source.edges.splice(L,1),J.target!=J.source&&J.target.edges.splice(V,1);var te=J.source.owner.getEdges().indexOf(J);if(te==-1)throw"Not in owner's edge list!";J.source.owner.getEdges().splice(te,1)}},$.prototype.updateLeftTop=function(){for(var Q=T.MAX_VALUE,ae=T.MAX_VALUE,le,J,j,Y=this.getNodes(),te=Y.length,L=0;Lle&&(Q=le),ae>J&&(ae=J)}return Q==T.MAX_VALUE?null:(Y[0].getParent().paddingLeft!=null?j=Y[0].getParent().paddingLeft:j=this.margin,this.left=ae-j,this.top=Q-j,new Z(this.left,this.top))},$.prototype.updateBounds=function(Q){for(var ae=T.MAX_VALUE,le=-T.MAX_VALUE,J=T.MAX_VALUE,j=-T.MAX_VALUE,Y,te,L,V,R,q=this.nodes,ce=q.length,pe=0;peY&&(ae=Y),leL&&(J=L),jY&&(ae=Y),leL&&(J=L),j=this.nodes.length){var ce=0;le.forEach(function(pe){pe.owner==Q&&ce++}),ce==this.nodes.length&&(this.isConnected=!0)}},ee.exports=$},function(ee,ge,H){var N,T=H(1);function w(S){N=H(5),this.layout=S,this.graphs=[],this.edges=[]}w.prototype.addRoot=function(){var S=this.layout.newGraph(),z=this.layout.newNode(null),U=this.add(S,z);return this.setRootGraph(U),this.rootGraph},w.prototype.add=function(S,z,U,P,Z){if(U==null&&P==null&&Z==null){if(S==null)throw"Graph is null!";if(z==null)throw"Parent node is null!";if(this.graphs.indexOf(S)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(S),S.parent!=null)throw"Already has a parent!";if(z.child!=null)throw"Already has a child!";return S.parent=z,z.child=S,S}else{Z=U,P=z,U=S;var D=P.getOwner(),$=Z.getOwner();if(!(D!=null&&D.getGraphManager()==this))throw"Source not in this graph mgr!";if(!($!=null&&$.getGraphManager()==this))throw"Target not in this graph mgr!";if(D==$)return U.isInterGraph=!1,D.add(U,P,Z);if(U.isInterGraph=!0,U.source=P,U.target=Z,this.edges.indexOf(U)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(U),!(U.source!=null&&U.target!=null))throw"Edge source and/or target is null!";if(!(U.source.edges.indexOf(U)==-1&&U.target.edges.indexOf(U)==-1))throw"Edge already in source and/or target incidency list!";return U.source.edges.push(U),U.target.edges.push(U),U}},w.prototype.remove=function(S){if(S instanceof N){var z=S;if(z.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(z==this.rootGraph||z.parent!=null&&z.parent.graphManager==this))throw"Invalid parent node!";var U=[];U=U.concat(z.getEdges());for(var P,Z=U.length,D=0;D=S.getRight()?z[0]+=Math.min(S.getX()-w.getX(),w.getRight()-S.getRight()):S.getX()<=w.getX()&&S.getRight()>=w.getRight()&&(z[0]+=Math.min(w.getX()-S.getX(),S.getRight()-w.getRight())),w.getY()<=S.getY()&&w.getBottom()>=S.getBottom()?z[1]+=Math.min(S.getY()-w.getY(),w.getBottom()-S.getBottom()):S.getY()<=w.getY()&&S.getBottom()>=w.getBottom()&&(z[1]+=Math.min(w.getY()-S.getY(),S.getBottom()-w.getBottom()));var Z=Math.abs((S.getCenterY()-w.getCenterY())/(S.getCenterX()-w.getCenterX()));S.getCenterY()===w.getCenterY()&&S.getCenterX()===w.getCenterX()&&(Z=1);var D=Z*z[0],$=z[1]/Z;z[0]<$?$=z[0]:D=z[1],z[0]=-1*P[0]*($/2+U),z[1]=-1*P[1]*(D/2+U)},T.decideDirectionsForOverlappingNodes=function(w,S,z){w.getCenterX()D)return z[0]=U,z[1]=_,z[2]=Z,z[3]=q,!1;if(PZ)return z[0]=$,z[1]=P,z[2]=V,z[3]=D,!1;if(UZ?(z[0]=ae,z[1]=le,Me=!0):(z[0]=Q,z[1]=_,Me=!0):at===ke&&(U>Z?(z[0]=$,z[1]=_,Me=!0):(z[0]=J,z[1]=le,Me=!0)),-dt===ke?Z>U?(z[2]=R,z[3]=q,Ye=!0):(z[2]=V,z[3]=L,Ye=!0):dt===ke&&(Z>U?(z[2]=te,z[3]=L,Ye=!0):(z[2]=ce,z[3]=q,Ye=!0)),Me&&Ye)return!1;if(U>Z?P>D?(Ve=this.getCardinalDirection(at,ke,4),Ze=this.getCardinalDirection(dt,ke,2)):(Ve=this.getCardinalDirection(-at,ke,3),Ze=this.getCardinalDirection(-dt,ke,1)):P>D?(Ve=this.getCardinalDirection(-at,ke,1),Ze=this.getCardinalDirection(-dt,ke,3)):(Ve=this.getCardinalDirection(at,ke,2),Ze=this.getCardinalDirection(dt,ke,4)),!Me)switch(Ve){case 1:ht=_,nt=U+-Y/ke,z[0]=nt,z[1]=ht;break;case 2:nt=J,ht=P+j*ke,z[0]=nt,z[1]=ht;break;case 3:ht=le,nt=U+Y/ke,z[0]=nt,z[1]=ht;break;case 4:nt=ae,ht=P+-j*ke,z[0]=nt,z[1]=ht;break}if(!Ye)switch(Ze){case 1:tt=L,it=Z+-Oe/ke,z[2]=it,z[3]=tt;break;case 2:it=ce,tt=D+pe*ke,z[2]=it,z[3]=tt;break;case 3:tt=q,it=Z+Oe/ke,z[2]=it,z[3]=tt;break;case 4:it=R,tt=D+-pe*ke,z[2]=it,z[3]=tt;break}}return!1},T.getCardinalDirection=function(w,S,z){return w>S?z:1+z%4},T.getIntersection=function(w,S,z,U){if(U==null)return this.getIntersection2(w,S,z);var P=w.x,Z=w.y,D=S.x,$=S.y,_=z.x,Q=z.y,ae=U.x,le=U.y,J=void 0,j=void 0,Y=void 0,te=void 0,L=void 0,V=void 0,R=void 0,q=void 0,ce=void 0;return Y=$-Z,L=P-D,R=D*Z-P*$,te=le-Q,V=_-ae,q=ae*Q-_*le,ce=Y*V-te*L,ce===0?null:(J=(L*q-V*R)/ce,j=(te*R-Y*q)/ce,new N(J,j))},T.angleOfVector=function(w,S,z,U){var P=void 0;return w!==z?(P=Math.atan((U-S)/(z-w)),z0?1:T<0?-1:0},N.floor=function(T){return T<0?Math.ceil(T):Math.floor(T)},N.ceil=function(T){return T<0?Math.floor(T):Math.ceil(T)},ee.exports=N},function(ee,ge,H){function N(){}N.MAX_VALUE=2147483647,N.MIN_VALUE=-2147483648,ee.exports=N},function(ee,ge,H){var N=function(){function P(Z,D){for(var $=0;$"u"?"undefined":N(w);return w==null||S!="object"&&S!="function"},ee.exports=T},function(ee,ge,H){function N(_){if(Array.isArray(_)){for(var Q=0,ae=Array(_.length);Q<_.length;Q++)ae[Q]=_[Q];return ae}else return Array.from(_)}var T=H(0),w=H(6),S=H(3),z=H(1),U=H(5),P=H(4),Z=H(17),D=H(27);function $(_){D.call(this),this.layoutQuality=T.QUALITY,this.createBendsAsNeeded=T.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=T.DEFAULT_INCREMENTAL,this.animationOnLayout=T.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=T.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=T.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=T.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new w(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,_!=null&&(this.isRemoteUse=_)}$.RANDOM_SEED=1,$.prototype=Object.create(D.prototype),$.prototype.getGraphManager=function(){return this.graphManager},$.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},$.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},$.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},$.prototype.newGraphManager=function(){var _=new w(this);return this.graphManager=_,_},$.prototype.newGraph=function(_){return new U(null,this.graphManager,_)},$.prototype.newNode=function(_){return new S(this.graphManager,_)},$.prototype.newEdge=function(_){return new z(null,null,_)},$.prototype.checkLayoutSuccess=function(){return this.graphManager.getRoot()==null||this.graphManager.getRoot().getNodes().length==0||this.graphManager.includesInvalidEdge()},$.prototype.runLayout=function(){this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters();var _;return this.checkLayoutSuccess()?_=!1:_=this.layout(),T.ANIMATE==="during"?!1:(_&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,_)},$.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},$.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var _=this.graphManager.getAllEdges(),Q=0;Q<_.length;Q++)_[Q];for(var ae=this.graphManager.getRoot().getNodes(),Q=0;Q0&&Q;){for(Y.push(L[0]);Y.length>0&&Q;){var V=Y[0];Y.splice(0,1),j.add(V);for(var R=V.getEdges(),J=0;J-1&&L.splice(Oe,1)}j=new Set,te=new Map}}return _},$.prototype.createDummyNodesForBendpoints=function(_){for(var Q=[],ae=_.source,le=this.graphManager.calcLowestCommonAncestor(_.source,_.target),J=0;J<_.bendpoints.length;J++){var j=this.newNode(null);j.setRect(new Point(0,0),new Dimension(1,1)),le.add(j);var Y=this.newEdge(null);this.graphManager.add(Y,ae,j),Q.add(j),ae=j}var Y=this.newEdge(null);return this.graphManager.add(Y,ae,_.target),this.edgeToDummyNodes.set(_,Q),_.isInterGraph()?this.graphManager.remove(_):le.remove(_),Q},$.prototype.createBendpointsFromDummyNodes=function(){var _=[];_=_.concat(this.graphManager.getAllEdges()),_=[].concat(N(this.edgeToDummyNodes.keys())).concat(_);for(var Q=0;Q<_.length;Q++){var ae=_[Q];if(ae.bendpoints.length>0){for(var le=this.edgeToDummyNodes.get(ae),J=0;J=0&&Q.splice(q,1);var ce=te.getNeighborsList();ce.forEach(function(Me){if(ae.indexOf(Me)<0){var Ye=le.get(Me),at=Ye-1;at==1&&V.push(Me),le.set(Me,at)}})}ae=ae.concat(V),(Q.length==1||Q.length==2)&&(J=!0,j=Q[0])}return j},$.prototype.setGraphManager=function(_){this.graphManager=_},ee.exports=$},function(ee,ge,H){function N(){}N.seed=1,N.x=0,N.nextDouble=function(){return N.x=Math.sin(N.seed++)*1e4,N.x-Math.floor(N.x)},ee.exports=N},function(ee,ge,H){var N=H(4);function T(w,S){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}T.prototype.getWorldOrgX=function(){return this.lworldOrgX},T.prototype.setWorldOrgX=function(w){this.lworldOrgX=w},T.prototype.getWorldOrgY=function(){return this.lworldOrgY},T.prototype.setWorldOrgY=function(w){this.lworldOrgY=w},T.prototype.getWorldExtX=function(){return this.lworldExtX},T.prototype.setWorldExtX=function(w){this.lworldExtX=w},T.prototype.getWorldExtY=function(){return this.lworldExtY},T.prototype.setWorldExtY=function(w){this.lworldExtY=w},T.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},T.prototype.setDeviceOrgX=function(w){this.ldeviceOrgX=w},T.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},T.prototype.setDeviceOrgY=function(w){this.ldeviceOrgY=w},T.prototype.getDeviceExtX=function(){return this.ldeviceExtX},T.prototype.setDeviceExtX=function(w){this.ldeviceExtX=w},T.prototype.getDeviceExtY=function(){return this.ldeviceExtY},T.prototype.setDeviceExtY=function(w){this.ldeviceExtY=w},T.prototype.transformX=function(w){var S=0,z=this.lworldExtX;return z!=0&&(S=this.ldeviceOrgX+(w-this.lworldOrgX)*this.ldeviceExtX/z),S},T.prototype.transformY=function(w){var S=0,z=this.lworldExtY;return z!=0&&(S=this.ldeviceOrgY+(w-this.lworldOrgY)*this.ldeviceExtY/z),S},T.prototype.inverseTransformX=function(w){var S=0,z=this.ldeviceExtX;return z!=0&&(S=this.lworldOrgX+(w-this.ldeviceOrgX)*this.lworldExtX/z),S},T.prototype.inverseTransformY=function(w){var S=0,z=this.ldeviceExtY;return z!=0&&(S=this.lworldOrgY+(w-this.ldeviceOrgY)*this.lworldExtY/z),S},T.prototype.inverseTransformPoint=function(w){var S=new N(this.inverseTransformX(w.x),this.inverseTransformY(w.y));return S},ee.exports=T},function(ee,ge,H){function N(D){if(Array.isArray(D)){for(var $=0,_=Array(D.length);$w.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*w.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(D-w.ADAPTATION_LOWER_NODE_LIMIT)/(w.ADAPTATION_UPPER_NODE_LIMIT-w.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-w.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=w.MAX_NODE_DISPLACEMENT_INCREMENTAL):(D>w.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(w.COOLING_ADAPTATION_FACTOR,1-(D-w.ADAPTATION_LOWER_NODE_LIMIT)/(w.ADAPTATION_UPPER_NODE_LIMIT-w.ADAPTATION_LOWER_NODE_LIMIT)*(1-w.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=w.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},P.prototype.calcSpringForces=function(){for(var D=this.getAllEdges(),$,_=0;_0&&arguments[0]!==void 0?arguments[0]:!0,$=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,_,Q,ae,le,J=this.getAllNodes(),j;if(this.useFRGridVariant)for(this.totalIterations%w.GRID_CALCULATION_CHECK_PERIOD==1&&D&&this.updateGrid(),j=new Set,_=0;_Y||j>Y)&&(D.gravitationForceX=-this.gravityConstant*ae,D.gravitationForceY=-this.gravityConstant*le)):(Y=$.getEstimatedSize()*this.compoundGravityRangeFactor,(J>Y||j>Y)&&(D.gravitationForceX=-this.gravityConstant*ae*this.compoundGravityConstant,D.gravitationForceY=-this.gravityConstant*le*this.compoundGravityConstant))},P.prototype.isConverged=function(){var D,$=!1;return this.totalIterations>this.maxIterations/3&&($=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),D=this.totalDisplacement=J.length||Y>=J[0].length)){for(var te=0;teP}}]),z}();ee.exports=S},function(ee,ge,H){var N=function(){function S(z,U){for(var P=0;P2&&arguments[2]!==void 0?arguments[2]:1,Z=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,D=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;T(this,S),this.sequence1=z,this.sequence2=U,this.match_score=P,this.mismatch_penalty=Z,this.gap_penalty=D,this.iMax=z.length+1,this.jMax=U.length+1,this.grid=new Array(this.iMax);for(var $=0;$=0;z--){var U=this.listeners[z];U.event===w&&U.callback===S&&this.listeners.splice(z,1)}},T.emit=function(w,S){for(var z=0;zU.coolingFactor*U.maxNodeDisplacement&&(this.displacementX=U.coolingFactor*U.maxNodeDisplacement*w.sign(this.displacementX)),Math.abs(this.displacementY)>U.coolingFactor*U.maxNodeDisplacement&&(this.displacementY=U.coolingFactor*U.maxNodeDisplacement*w.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),U.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},S.prototype.propogateDisplacementToChildren=function(U,P){for(var Z=this.getChild().getNodes(),D,$=0;$0)this.positionNodesRadially(L);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var V=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(q){return V.has(q)});this.graphManager.setAllNodesToApplyGravitation(R),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},Y.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%Z.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var L=new Set(this.getAllNodes()),V=this.nodesWithGravity.filter(function(ce){return L.has(ce)});this.graphManager.setAllNodesToApplyGravitation(V),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=Z.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=Z.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var R=!this.isTreeGrowing&&!this.isGrowthFinished,q=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(R,q),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},Y.prototype.getPositionsData=function(){for(var L=this.graphManager.getAllNodes(),V={},R=0;R1){var Me;for(Me=0;Meq&&(q=Math.floor(Oe.y)),pe=Math.floor(Oe.x+P.DEFAULT_COMPONENT_SEPERATION)}this.transform(new _(D.WORLD_CENTER_X-Oe.x/2,D.WORLD_CENTER_Y-Oe.y/2))},Y.radialLayout=function(L,V,R){var q=Math.max(this.maxDiagonalInTree(L),P.DEFAULT_RADIAL_SEPARATION);Y.branchRadialLayout(V,null,0,359,0,q);var ce=J.calculateBounds(L),pe=new j;pe.setDeviceOrgX(ce.getMinX()),pe.setDeviceOrgY(ce.getMinY()),pe.setWorldOrgX(R.x),pe.setWorldOrgY(R.y);for(var Oe=0;Oe1;){var tt=it[0];it.splice(0,1);var yt=ke.indexOf(tt);yt>=0&&ke.splice(yt,1),nt--,Ve--}V!=null?ht=(ke.indexOf(it[0])+1)%nt:ht=0;for(var wt=Math.abs(q-R)/Ve,Pt=ht;Ze!=Ve;Pt=++Pt%nt){var gt=ke[Pt].getOtherEnd(L);if(gt!=V){var dr=(R+Ze*wt)%360,qt=(dr+wt)%360;Y.branchRadialLayout(gt,L,dr,qt,ce+pe,pe),Ze++}}},Y.maxDiagonalInTree=function(L){for(var V=ae.MIN_VALUE,R=0;RV&&(V=ce)}return V},Y.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},Y.prototype.groupZeroDegreeMembers=function(){var L=this,V={};this.memberGroups={},this.idToDummyNode={};for(var R=[],q=this.graphManager.getAllNodes(),ce=0;ce"u"&&(V[Me]=[]),V[Me]=V[Me].concat(pe)}Object.keys(V).forEach(function(Ye){if(V[Ye].length>1){var at="DummyCompound_"+Ye;L.memberGroups[at]=V[Ye];var dt=V[Ye][0].getParent(),ke=new z(L.graphManager);ke.id=at,ke.paddingLeft=dt.paddingLeft||0,ke.paddingRight=dt.paddingRight||0,ke.paddingBottom=dt.paddingBottom||0,ke.paddingTop=dt.paddingTop||0,L.idToDummyNode[at]=ke;var Ve=L.getGraphManager().add(L.newGraph(),ke),Ze=dt.getChild();Ze.add(ke);for(var nt=0;nt=0;L--){var V=this.compoundOrder[L],R=V.id,q=V.paddingLeft,ce=V.paddingTop;this.adjustLocations(this.tiledMemberPack[R],V.rect.x,V.rect.y,q,ce)}},Y.prototype.repopulateZeroDegreeMembers=function(){var L=this,V=this.tiledZeroDegreePack;Object.keys(V).forEach(function(R){var q=L.idToDummyNode[R],ce=q.paddingLeft,pe=q.paddingTop;L.adjustLocations(V[R],q.rect.x,q.rect.y,ce,pe)})},Y.prototype.getToBeTiled=function(L){var V=L.id;if(this.toBeTiled[V]!=null)return this.toBeTiled[V];var R=L.getChild();if(R==null)return this.toBeTiled[V]=!1,!1;for(var q=R.getNodes(),ce=0;ce0)return this.toBeTiled[V]=!1,!1;if(pe.getChild()==null){this.toBeTiled[pe.id]=!1;continue}if(!this.getToBeTiled(pe))return this.toBeTiled[V]=!1,!1}return this.toBeTiled[V]=!0,!0},Y.prototype.getNodeDegree=function(L){L.id;for(var V=L.getEdges(),R=0,q=0;qYe&&(Ye=dt.rect.height)}R+=Ye+L.verticalPadding}},Y.prototype.tileCompoundMembers=function(L,V){var R=this;this.tiledMemberPack=[],Object.keys(L).forEach(function(q){var ce=V[q];R.tiledMemberPack[q]=R.tileNodes(L[q],ce.paddingLeft+ce.paddingRight),ce.rect.width=R.tiledMemberPack[q].width,ce.rect.height=R.tiledMemberPack[q].height})},Y.prototype.tileNodes=function(L,V){var R=P.TILING_PADDING_VERTICAL,q=P.TILING_PADDING_HORIZONTAL,ce={rows:[],rowWidth:[],rowHeight:[],width:0,height:V,verticalPadding:R,horizontalPadding:q};L.sort(function(Me,Ye){return Me.rect.width*Me.rect.height>Ye.rect.width*Ye.rect.height?-1:Me.rect.width*Me.rect.height0&&(Oe+=L.horizontalPadding),L.rowWidth[R]=Oe,L.width0&&(Me+=L.verticalPadding);var Ye=0;Me>L.rowHeight[R]&&(Ye=L.rowHeight[R],L.rowHeight[R]=Me,Ye=L.rowHeight[R]-Ye),L.height+=Ye,L.rows[R].push(V)},Y.prototype.getShortestRowIndex=function(L){for(var V=-1,R=Number.MAX_VALUE,q=0;qR&&(V=q,R=L.rowWidth[q]);return V},Y.prototype.canAddHorizontal=function(L,V,R){var q=this.getShortestRowIndex(L);if(q<0)return!0;var ce=L.rowWidth[q];if(ce+L.horizontalPadding+V<=L.width)return!0;var pe=0;L.rowHeight[q]0&&(pe=R+L.verticalPadding-L.rowHeight[q]);var Oe;L.width-ce>=V+L.horizontalPadding?Oe=(L.height+pe)/(ce+V+L.horizontalPadding):Oe=(L.height+pe)/L.width,pe=R+L.verticalPadding;var Me;return L.widthpe&&V!=R){q.splice(-1,1),L.rows[R].push(ce),L.rowWidth[V]=L.rowWidth[V]-pe,L.rowWidth[R]=L.rowWidth[R]+pe,L.width=L.rowWidth[instance.getLongestRowIndex(L)];for(var Oe=Number.MIN_VALUE,Me=0;MeOe&&(Oe=q[Me].height);V>0&&(Oe+=L.verticalPadding);var Ye=L.rowHeight[V]+L.rowHeight[R];L.rowHeight[V]=Oe,L.rowHeight[R]0)for(var Ze=ce;Ze<=pe;Ze++)Ve[0]+=this.grid[Ze][Oe-1].length+this.grid[Ze][Oe].length-1;if(pe0)for(var Ze=Oe;Ze<=Me;Ze++)Ve[3]+=this.grid[ce-1][Ze].length+this.grid[ce][Ze].length-1;for(var nt=ae.MAX_VALUE,ht,it,tt=0;tt0){var Me;Me=j.getGraphManager().add(j.newGraph(),R),this.processChildrenList(Me,V,j)}}},_.prototype.stop=function(){return this.stopped=!0,this};var ae=function(J){J("layout","cose-bilkent",_)};typeof cytoscape<"u"&&ae(cytoscape),ge.exports=ae}])})})(Xl);var Mp=Xl.exports;const Ip=Ul(Mp);var Ji=function(){var be=function(j,Y,te,L){for(te=te||{},L=j.length;L--;te[j[L]]=Y);return te},he=[1,4],ee=[1,13],ge=[1,12],H=[1,15],N=[1,16],T=[1,20],w=[1,19],S=[6,7,8],z=[1,26],U=[1,24],P=[1,25],Z=[6,7,11],D=[1,6,13,15,16,19,22],$=[1,33],_=[1,34],Q=[1,6,7,11,13,15,16,19,22],ae={trace:function(){},yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:function(Y,te,L,V,R,q,ce){var pe=q.length-1;switch(R){case 6:case 7:return V;case 8:V.getLogger().trace("Stop NL ");break;case 9:V.getLogger().trace("Stop EOF ");break;case 11:V.getLogger().trace("Stop NL2 ");break;case 12:V.getLogger().trace("Stop EOF2 ");break;case 15:V.getLogger().info("Node: ",q[pe].id),V.addNode(q[pe-1].length,q[pe].id,q[pe].descr,q[pe].type);break;case 16:V.getLogger().trace("Icon: ",q[pe]),V.decorateNode({icon:q[pe]});break;case 17:case 21:V.decorateNode({class:q[pe]});break;case 18:V.getLogger().trace("SPACELIST");break;case 19:V.getLogger().trace("Node: ",q[pe].id),V.addNode(0,q[pe].id,q[pe].descr,q[pe].type);break;case 20:V.decorateNode({icon:q[pe]});break;case 25:V.getLogger().trace("node found ..",q[pe-2]),this.$={id:q[pe-1],descr:q[pe-1],type:V.getType(q[pe-2],q[pe])};break;case 26:this.$={id:q[pe],descr:q[pe],type:V.nodeType.DEFAULT};break;case 27:V.getLogger().trace("node found ..",q[pe-3]),this.$={id:q[pe-3],descr:q[pe-1],type:V.getType(q[pe-2],q[pe])};break}},table:[{3:1,4:2,5:3,6:[1,5],8:he},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:he},{6:ee,7:[1,10],9:9,12:11,13:ge,14:14,15:H,16:N,17:17,18:18,19:T,22:w},be(S,[2,3]),{1:[2,2]},be(S,[2,4]),be(S,[2,5]),{1:[2,6],6:ee,12:21,13:ge,14:14,15:H,16:N,17:17,18:18,19:T,22:w},{6:ee,9:22,12:11,13:ge,14:14,15:H,16:N,17:17,18:18,19:T,22:w},{6:z,7:U,10:23,11:P},be(Z,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:T,22:w}),be(Z,[2,18]),be(Z,[2,19]),be(Z,[2,20]),be(Z,[2,21]),be(Z,[2,23]),be(Z,[2,24]),be(Z,[2,26],{19:[1,30]}),{20:[1,31]},{6:z,7:U,10:32,11:P},{1:[2,7],6:ee,12:21,13:ge,14:14,15:H,16:N,17:17,18:18,19:T,22:w},be(D,[2,14],{7:$,11:_}),be(Q,[2,8]),be(Q,[2,9]),be(Q,[2,10]),be(Z,[2,15]),be(Z,[2,16]),be(Z,[2,17]),{20:[1,35]},{21:[1,36]},be(D,[2,13],{7:$,11:_}),be(Q,[2,11]),be(Q,[2,12]),{21:[1,37]},be(Z,[2,25]),be(Z,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(Y,te){if(te.recoverable)this.trace(Y);else{var L=new Error(Y);throw L.hash=te,L}},parse:function(Y){var te=this,L=[0],V=[],R=[null],q=[],ce=this.table,pe="",Oe=0,Me=0,Ye=2,at=1,dt=q.slice.call(arguments,1),ke=Object.create(this.lexer),Ve={yy:{}};for(var Ze in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ze)&&(Ve.yy[Ze]=this.yy[Ze]);ke.setInput(Y,Ve.yy),Ve.yy.lexer=ke,Ve.yy.parser=this,typeof ke.yylloc>"u"&&(ke.yylloc={});var nt=ke.yylloc;q.push(nt);var ht=ke.options&&ke.options.ranges;typeof Ve.yy.parseError=="function"?this.parseError=Ve.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function it(){var er;return er=V.pop()||ke.lex()||at,typeof er!="number"&&(er instanceof Array&&(V=er,er=V.pop()),er=te.symbols_[er]||er),er}for(var tt,yt,wt,Pt,gt={},dr,qt,ln,Zr;;){if(yt=L[L.length-1],this.defaultActions[yt]?wt=this.defaultActions[yt]:((tt===null||typeof tt>"u")&&(tt=it()),wt=ce[yt]&&ce[yt][tt]),typeof wt>"u"||!wt.length||!wt[0]){var Sa="";Zr=[];for(dr in ce[yt])this.terminals_[dr]&&dr>Ye&&Zr.push("'"+this.terminals_[dr]+"'");ke.showPosition?Sa="Parse error on line "+(Oe+1)+`: + */var So=function(e,r){this.recycle(e,r)};function Xa(){return!1}function Rn(){return!0}So.prototype={instanceString:function(){return"event"},recycle:function(e,r){if(this.isImmediatePropagationStopped=this.isPropagationStopped=this.isDefaultPrevented=Xa,e!=null&&e.preventDefault?(this.type=e.type,this.isDefaultPrevented=e.defaultPrevented?Rn:Xa):e!=null&&e.type?r=e:this.type=e,r!=null&&(this.originalEvent=r.originalEvent,this.type=r.type!=null?r.type:this.type,this.cy=r.cy,this.target=r.target,this.position=r.position,this.renderedPosition=r.renderedPosition,this.namespace=r.namespace,this.layout=r.layout),this.cy!=null&&this.position!=null&&this.renderedPosition==null){var a=this.position,n=this.cy.zoom(),i=this.cy.pan();this.renderedPosition={x:a.x*n+i.x,y:a.y*n+i.y}}this.timeStamp=e&&e.timeStamp||Date.now()},preventDefault:function(){this.isDefaultPrevented=Rn;var e=this.originalEvent;e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){this.isPropagationStopped=Rn;var e=this.originalEvent;e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Rn,this.stopPropagation()},isDefaultPrevented:Xa,isPropagationStopped:Xa,isImmediatePropagationStopped:Xa};var Lo=/^([^.]+)(\.(?:[^.]+))?$/,Td=".*",Ao={qualifierCompare:function(e,r){return e===r},eventMatches:function(){return!0},addEventFields:function(){},callbackContext:function(e){return e},beforeEmit:function(){},afterEmit:function(){},bubble:function(){return!1},parent:function(){return null},context:null},Oo=Object.keys(Ao),Cd={};function kn(){for(var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Cd,e=arguments.length>1?arguments[1]:void 0,r=0;r=0;o--)s(o);return this},Nr.removeAllListeners=function(){return this.removeListener("*")},Nr.emit=Nr.trigger=function(t,e,r){var a=this.listeners,n=a.length;return this.emitting++,te(e)||(e=[e]),Dd(this,function(i,s){r!=null&&(a=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],n=a.length);for(var o=function(f){var h=a[f];if(h.type===s.type&&(!h.namespace||h.namespace===s.namespace||h.namespace===Td)&&i.eventMatches(i.context,h,s)){var c=[s];e!=null&&tf(c,e),i.beforeEmit(i.context,h,s),h.conf&&h.conf.one&&(i.listeners=i.listeners.filter(function(y){return y!==h}));var d=i.callbackContext(i.context,h,s),v=h.callback.apply(d,c);i.afterEmit(i.context,h,s),v===!1&&(s.stopPropagation(),s.preventDefault())}},u=0;u1&&!s){var o=this.length-1,u=this[o],l=u._private.data.id;this[o]=void 0,this[e]=u,i.set(l,{ele:u,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var r=this._private,a=e._private.data.id,n=r.map,i=n.get(a);if(!i)return this;var s=i.index;return this.unmergeAt(s),this},unmerge:function(e){var r=this._private.cy;if(!e)return this;if(e&&j(e)){var a=e;e=r.mutableElements().filter(a)}for(var n=0;n=0;r--){var a=this[r];e(a)&&this.unmergeAt(r)}return this},map:function(e,r){for(var a=[],n=this,i=0;ia&&(a=u,n=o)}return{value:a,ele:n}},min:function(e,r){for(var a=1/0,n,i=this,s=0;s=0&&i"u"?"undefined":ee(Symbol))!=e&&ee(Symbol.iterator)!=e;r&&(Bn[Symbol.iterator]=function(){var a=this,n={value:void 0,done:!1},i=0,s=this.length;return T({next:function(){return i1&&arguments[1]!==void 0?arguments[1]:!0,a=this[0],n=a.cy();if(n.styleEnabled()&&a){this.cleanStyle();var i=a._private.style[e];return i??(r?n.style().getDefaultProperty(e):null)}},numericStyle:function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var a=r.pstyle(e);return a.pfValue!==void 0?a.pfValue:a.value}},numericStyleUnits:function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},renderedStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=this[0];if(a)return r.style().getRenderedStyle(a,e)},style:function(e,r){var a=this.cy();if(!a.styleEnabled())return this;var n=!1,i=a.style();if(L(e)){var s=e;i.applyBypass(this,s,n),this.emitAndNotify("style")}else if(j(e))if(r===void 0){var o=this[0];return o?i.getStylePropertyValue(o,e):void 0}else i.applyBypass(this,e,r,n),this.emitAndNotify("style");else if(e===void 0){var u=this[0];return u?i.getRawStyle(u):void 0}return this},removeStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=!1,n=r.style(),i=this;if(e===void 0)for(var s=0;s0&&e.push(f[0]),e.push(o[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),Bt.neighbourhood=Bt.neighborhood,Bt.closedNeighbourhood=Bt.closedNeighborhood,Bt.openNeighbourhood=Bt.openNeighborhood,He(Bt,{source:Zt(function(e){var r=this[0],a;return r&&(a=r._private.source||r.cy().collection()),a&&e?a.filter(e):a},"source"),target:Zt(function(e){var r=this[0],a;return r&&(a=r._private.target||r.cy().collection()),a&&e?a.filter(e):a},"target"),sources:Vo({attr:"source"}),targets:Vo({attr:"target"})});function Vo(t){return function(r){for(var a=[],n=0;n0);return s},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),Bt.componentsOf=Bt.components;var Nt=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){Tt("A collection must have a reference to the core");return}var i=new ur,s=!1;if(!r)r=[];else if(r.length>0&&L(r[0])&&!Oe(r[0])){s=!0;for(var o=[],u=new jr,l=0,f=r.length;l0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=r.cy(),n=a._private,i=[],s=[],o,u=0,l=r.length;u0){for(var ue=o.length===r.length?r:new Nt(a,o),be=0;be0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=[],n={},i=r._private.cy;function s(B){for(var re=B._private.edges,K=0;K0&&(t?G.emitAndNotify("remove"):e&&G.emit("remove"));for(var M=0;M0?M=B:G=B;while(Math.abs(X)>s&&++re=i?m(F,re):K===0?re:E(F,G,G+l)}var A=!1;function x(){A=!0,(t!==e||r!==a)&&b()}var k=function(G){return A||x(),t===e&&r===a?G:G===0?0:G===1?1:p(I(G),e,a)};k.getControlPoints=function(){return[{x:t,y:e},{x:r,y:a}]};var C="generateBezier("+[t,e,r,a]+")";return k.toString=function(){return C},k}/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */var Bd=function(){function t(a){return-a.tension*a.x-a.friction*a.v}function e(a,n,i){var s={x:a.x+i.dx*n,v:a.v+i.dv*n,tension:a.tension,friction:a.friction};return{dx:s.v,dv:t(s)}}function r(a,n){var i={dx:a.v,dv:t(a)},s=e(a,n*.5,i),o=e(a,n*.5,s),u=e(a,n,o),l=1/6*(i.dx+2*(s.dx+o.dx)+u.dx),f=1/6*(i.dv+2*(s.dv+o.dv)+u.dv);return a.x=a.x+l*n,a.v=a.v+f*n,a}return function a(n,i,s){var o={x:-1,v:0,tension:null,friction:null},u=[0],l=0,f=1/1e4,h=16/1e3,c,d,v;for(n=parseFloat(n)||500,i=parseFloat(i)||20,s=s||null,o.tension=n,o.friction=i,c=s!==null,c?(l=a(n,i),d=l/s*h):d=h;v=r(v||o,d),u.push(1+v.x),l+=16,Math.abs(v.x)>f&&Math.abs(v.v)>f;);return c?function(y){return u[y*(u.length-1)|0]}:l}}(),Et=function(e,r,a,n){var i=Pd(e,r,a,n);return function(s,o,u){return s+(o-s)*i(u)}},Vn={linear:function(e,r,a){return e+(r-e)*a},ease:Et(.25,.1,.25,1),"ease-in":Et(.42,0,1,1),"ease-out":Et(0,0,.58,1),"ease-in-out":Et(.42,0,.58,1),"ease-in-sine":Et(.47,0,.745,.715),"ease-out-sine":Et(.39,.575,.565,1),"ease-in-out-sine":Et(.445,.05,.55,.95),"ease-in-quad":Et(.55,.085,.68,.53),"ease-out-quad":Et(.25,.46,.45,.94),"ease-in-out-quad":Et(.455,.03,.515,.955),"ease-in-cubic":Et(.55,.055,.675,.19),"ease-out-cubic":Et(.215,.61,.355,1),"ease-in-out-cubic":Et(.645,.045,.355,1),"ease-in-quart":Et(.895,.03,.685,.22),"ease-out-quart":Et(.165,.84,.44,1),"ease-in-out-quart":Et(.77,0,.175,1),"ease-in-quint":Et(.755,.05,.855,.06),"ease-out-quint":Et(.23,1,.32,1),"ease-in-out-quint":Et(.86,0,.07,1),"ease-in-expo":Et(.95,.05,.795,.035),"ease-out-expo":Et(.19,1,.22,1),"ease-in-out-expo":Et(1,0,0,1),"ease-in-circ":Et(.6,.04,.98,.335),"ease-out-circ":Et(.075,.82,.165,1),"ease-in-out-circ":Et(.785,.135,.15,.86),spring:function(e,r,a){if(a===0)return Vn.linear;var n=Bd(e,r,a);return function(i,s,o){return i+(s-i)*n(o)}},"cubic-bezier":Et};function Uo(t,e,r,a,n){if(a===1||e===r)return r;var i=n(e,r,a);return t==null||((t.roundValue||t.color)&&(i=Math.round(i)),t.min!==void 0&&(i=Math.max(i,t.min)),t.max!==void 0&&(i=Math.min(i,t.max))),i}function Yo(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function pa(t,e,r,a,n){var i=n!=null?n.type:null;r<0?r=0:r>1&&(r=1);var s=Yo(t,n),o=Yo(e,n);if(R(s)&&R(o))return Uo(i,s,o,r,a);if(te(s)&&te(o)){for(var u=[],l=0;l0?(d==="spring"&&v.push(s.duration),s.easingImpl=Vn[d].apply(null,v)):s.easingImpl=Vn[d]}var y=s.easingImpl,p;if(s.duration===0?p=1:p=(r-u)/s.duration,s.applying&&(p=s.progress),p<0?p=0:p>1&&(p=1),s.delay==null){var g=s.startPosition,m=s.position;if(m&&n&&!t.locked()){var b={};qa(g.x,m.x)&&(b.x=pa(g.x,m.x,p,y)),qa(g.y,m.y)&&(b.y=pa(g.y,m.y,p,y)),t.position(b)}var E=s.startPan,I=s.pan,A=i.pan,x=I!=null&&a;x&&(qa(E.x,I.x)&&(A.x=pa(E.x,I.x,p,y)),qa(E.y,I.y)&&(A.y=pa(E.y,I.y,p,y)),t.emit("pan"));var k=s.startZoom,C=s.zoom,F=C!=null&&a;F&&(qa(k,C)&&(i.zoom=Pa(i.minZoom,pa(k,C,p,y),i.maxZoom)),t.emit("zoom")),(x||F)&&t.emit("viewport");var G=s.style;if(G&&G.length>0&&n){for(var M=0;M=0;x--){var k=A[x];k()}A.splice(0,A.length)},m=d.length-1;m>=0;m--){var b=d[m],E=b._private;if(E.stopped){d.splice(m,1),E.hooked=!1,E.playing=!1,E.started=!1,g(E.frames);continue}!E.playing&&!E.applying||(E.playing&&E.applying&&(E.applying=!1),E.started||Gd(f,b,t),Fd(f,b,t,h),E.applying&&(E.applying=!1),g(E.frames),E.step!=null&&E.step(t),b.completed()&&(d.splice(m,1),E.hooked=!1,E.playing=!1,E.started=!1,g(E.completes)),y=!0)}return!h&&d.length===0&&v.length===0&&a.push(f),y}for(var i=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(a),e.emit("step")}var zd={animate:vt.animate(),animation:vt.animation(),animated:vt.animated(),clearQueue:vt.clearQueue(),delay:vt.delay(),delayAnimation:vt.delayAnimation(),stop:vt.stop(),addToAnimationPool:function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&hn(function(i){Ho(i,e),r()})}var a=e.renderer();a&&a.beforeRender?a.beforeRender(function(i,s){Ho(s,e)},a.beforeRenderPriorities.animations):r()}},Vd={qualifierCompare:function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},eventMatches:function(e,r,a){var n=r.qualifier;return n!=null?e!==a.target&&Oe(a.target)&&n.matches(a.target):!0},addEventFields:function(e,r){r.cy=e,r.target=e},callbackContext:function(e,r,a){return r.qualifier!=null?a.target:e}},$n=function(e){return j(e)?new Sr(e):e},Xo={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new kn(Vd,this)),this},emitter:function(){return this._private.emitter},on:function(e,r,a){return this.emitter().on(e,$n(r),a),this},removeListener:function(e,r,a){return this.emitter().removeListener(e,$n(r),a),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,r,a){return this.emitter().one(e,$n(r),a),this},once:function(e,r,a){return this.emitter().one(e,$n(r),a),this},emit:function(e,r){return this.emitter().emit(e,r),this},emitAndNotify:function(e,r){return this.emit(e),this.notify(e,r),this}};vt.eventAliasesOn(Xo);var Ri={png:function(e){var r=this._private.renderer;return e=e||{},r.png(e)},jpg:function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)}};Ri.jpeg=Ri.jpg;var _n={layout:function(e){var r=this;if(e==null){Tt("Layout options must be specified to make a layout");return}if(e.name==null){Tt("A `name` must be specified to make a layout");return}var a=e.name,n=r.extension("layout",a);if(n==null){Tt("No such layout `"+a+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var i;j(e.eles)?i=r.$(e.eles):i=e.eles!=null?e.eles:r.$();var s=new n(He({},e,{cy:r,eles:i}));return s}};_n.createLayout=_n.makeLayout=_n.layout;var $d={notify:function(e,r){var a=this._private;if(this.batching()){a.batchNotifications=a.batchNotifications||{};var n=a.batchNotifications[e]=a.batchNotifications[e]||this.collection();r!=null&&n.merge(r);return}if(a.notificationsEnabled){var i=this.renderer();this.destroyed()||!i||i.notify(e,r)}},notifications:function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(a){var n=e.batchNotifications[a];n.empty()?r.notify(a):r.notify(a,n)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var r=this;return this.batch(function(){for(var a=Object.keys(e),n=0;n0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(a){var n=a._private;n.rscratch={},n.rstyle={},n.animation.current=[],n.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};ki.invalidateDimensions=ki.resize;var Un={collection:function(e,r){return j(e)?this.$(e):pe(e)?e.collection():te(e)?(r||(r={}),new Nt(this,e,r.unique,r.removed)):new Nt(this)},nodes:function(e){var r=this.$(function(a){return a.isNode()});return e?r.filter(e):r},edges:function(e){var r=this.$(function(a){return a.isEdge()});return e?r.filter(e):r},$:function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},mutableElements:function(){return this._private.elements}};Un.elements=Un.filter=Un.$;var Ft={},Wa="t",Ud="f";Ft.apply=function(t){for(var e=this,r=e._private,a=r.cy,n=a.collection(),i=0;i0;if(c||h&&d){var v=void 0;c&&d||c?v=l.properties:d&&(v=l.mappedProperties);for(var y=0;y1&&(E=1),o.color){var A=a.valueMin[0],x=a.valueMax[0],k=a.valueMin[1],C=a.valueMax[1],F=a.valueMin[2],G=a.valueMax[2],M=a.valueMin[3]==null?1:a.valueMin[3],X=a.valueMax[3]==null?1:a.valueMax[3],B=[Math.round(A+(x-A)*E),Math.round(k+(C-k)*E),Math.round(F+(G-F)*E),Math.round(M+(X-M)*E)];i={bypass:a.bypass,name:a.name,value:B,strValue:"rgb("+B[0]+", "+B[1]+", "+B[2]+")"}}else if(o.number){var re=a.valueMin+(a.valueMax-a.valueMin)*E;i=this.parse(a.name,re,a.bypass,c)}else return!1;if(!i)return y(),!1;i.mapping=a,a=i;break}case s.data:{for(var K=a.field.split("."),q=h.data,ae=0;ae0&&i>0){for(var o={},u=!1,l=0;l0?t.delayAnimation(s).play().promise().then(b):b()}).then(function(){return t.animation({style:o,duration:i,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,n),t.emitAndNotify("style"),a.transitioning=!1})}else a.transitioning&&(this.removeBypasses(t,n),t.emitAndNotify("style"),a.transitioning=!1)},Ft.checkTrigger=function(t,e,r,a,n,i){var s=this.properties[e],o=n(s);o!=null&&o(r,a)&&i(s)},Ft.checkZOrderTrigger=function(t,e,r,a){var n=this;this.checkTrigger(t,e,r,a,function(i){return i.triggersZOrder},function(){n._private.cy.notify("zorder",t)})},Ft.checkBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBounds},function(n){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache(),n.triggersBoundsOfParallelBeziers&&e==="curve-style"&&(r==="bezier"||a==="bezier")&&t.parallelEdges().forEach(function(i){i.isBundledBezier()&&i.dirtyBoundingBoxCache()}),n.triggersBoundsOfConnectedEdges&&e==="display"&&(r==="none"||a==="none")&&t.connectedEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})},Ft.checkTriggers=function(t,e,r,a){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,a),this.checkBoundsTrigger(t,e,r,a)};var Ka={};Ka.applyBypass=function(t,e,r,a){var n=this,i=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var o=0;on.length?a=a.substr(n.length):a=""}function u(){i.length>s.length?i=i.substr(s.length):i=""}for(;;){var l=a.match(/^\s*$/);if(l)break;var f=a.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){ct("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+a);break}n=f[0];var h=f[1];if(h!=="core"){var c=new Sr(h);if(c.invalid){ct("Skipping parsing of block: Invalid selector found in string stylesheet: "+h),o();continue}}var d=f[2],v=!1;i=d;for(var y=[];;){var p=i.match(/^\s*$/);if(p)break;var g=i.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!g){ct("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+d),v=!0;break}s=g[0];var m=g[1],b=g[2],E=e.properties[m];if(!E){ct("Skipping property: Invalid property name in: "+s),u();continue}var I=r.parse(m,b);if(!I){ct("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:m,val:b}),u()}if(v){o();break}r.selector(h);for(var A=0;A=7&&e[0]==="d"&&(f=new RegExp(o.data.regex).exec(e))){if(r)return!1;var c=o.data;return{name:t,value:f,strValue:""+e,mapped:c,field:f[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(h=new RegExp(o.mapData.regex).exec(e))){if(r||l.multiple)return!1;var d=o.mapData;if(!(l.color||l.number))return!1;var v=this.parse(t,h[4]);if(!v||v.mapped)return!1;var y=this.parse(t,h[5]);if(!y||y.mapped)return!1;if(v.pfValue===y.pfValue||v.strValue===y.strValue)return ct("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+v.strValue+"`"),this.parse(t,v.strValue);if(l.color){var p=v.value,g=y.value,m=p[0]===g[0]&&p[1]===g[1]&&p[2]===g[2]&&(p[3]===g[3]||(p[3]==null||p[3]===1)&&(g[3]==null||g[3]===1));if(m)return!1}return{name:t,value:h,strValue:""+e,mapped:d,field:h[1],fieldMin:parseFloat(h[2]),fieldMax:parseFloat(h[3]),valueMin:v.value,valueMax:y.value,bypass:r}}}if(l.multiple&&a!=="multiple"){var b;if(u?b=e.split(/\s+/):te(e)?b=e:b=[e],l.evenMultiple&&b.length%2!==0)return null;for(var E=[],I=[],A=[],x="",k=!1,C=0;C0?" ":"")+F.strValue}return l.validate&&!l.validate(E,I)?null:l.singleEnum&&k?E.length===1&&j(E[0])?{name:t,value:E[0],strValue:E[0],bypass:r}:null:{name:t,value:E,pfValue:A,strValue:x,bypass:r,units:I}}var G=function(){for(var Ae=0;Ael.max||l.strictMax&&e===l.max))return null;var K={name:t,value:e,strValue:""+e+(M||""),units:M,bypass:r};return l.unitless||M!=="px"&&M!=="em"?K.pfValue=e:K.pfValue=M==="px"||!M?e:this.getEmSizeInPixels()*e,(M==="ms"||M==="s")&&(K.pfValue=M==="ms"?e:1e3*e),(M==="deg"||M==="rad")&&(K.pfValue=M==="rad"?e:Cf(e)),M==="%"&&(K.pfValue=e/100),K}else if(l.propList){var q=[],ae=""+e;if(ae!=="none"){for(var ue=ae.split(/\s*,\s*|\s+/),be=0;be0&&o>0&&!isNaN(a.w)&&!isNaN(a.h)&&a.w>0&&a.h>0){u=Math.min((s-2*r)/a.w,(o-2*r)/a.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=a.minZoom&&(a.maxZoom=r),this},minZoom:function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var r=this._private,a=r.pan,n=r.zoom,i,s,o=!1;if(r.zoomingEnabled||(o=!0),R(e)?s=e:L(e)&&(s=e.level,e.position!=null?i=gn(e.position,n,a):e.renderedPosition!=null&&(i=e.renderedPosition),i!=null&&!r.panningEnabled&&(o=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,i.push("zoom"))}if(n&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var l=e.pan;R(l.x)&&(r.pan.x=l.x,o=!1),R(l.y)&&(r.pan.y=l.y,o=!1),o||i.push("pan")}return i.length>0&&(i.push("viewport"),this.emit(i.join(" ")),this.notify("viewport")),this},center:function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,r){if(this._private.panningEnabled){if(j(e)){var a=e;e=this.mutableElements().filter(a)}else pe(e)||(e=this.mutableElements());if(e.length!==0){var n=e.boundingBox(),i=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var o={x:(i-r*(n.x1+n.x2))/2,y:(s-r*(n.y1+n.y2))/2};return o}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e=this._private,r=e.container,a=this;return e.sizeCache=e.sizeCache||(r?function(){var n=a.window().getComputedStyle(r),i=function(o){return parseFloat(n.getPropertyValue(o))};return{width:r.clientWidth-i("padding-left")-i("padding-right"),height:r.clientHeight-i("padding-top")-i("padding-bottom")}}():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,r=this._private.zoom,a=this.renderedExtent(),n={x1:(a.x1-e.x)/r,x2:(a.x2-e.x)/r,y1:(a.y1-e.y)/r,y2:(a.y2-e.y)/r};return n.w=n.x2-n.x1,n.h=n.y2-n.y1,n},renderedExtent:function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},multiClickDebounceTime:function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this}};$r.centre=$r.center,$r.autolockNodes=$r.autolock,$r.autoungrabifyNodes=$r.autoungrabify;var Za={data:vt.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:vt.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:vt.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:vt.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Za.attr=Za.data,Za.removeAttr=Za.removeData;var Qa=function(e){var r=this;e=He({},e);var a=e.container;a&&!ce(a)&&ce(a[0])&&(a=a[0]);var n=a?a._cyreg:null;n=n||{},n&&n.cy&&(n.cy.destroy(),n={});var i=n.readies=n.readies||[];a&&(a._cyreg=n),n.cy=r;var s=D!==void 0&&a!==void 0&&!e.headless,o=e;o.layout=He({name:s?"grid":"null"},o.layout),o.renderer=He({name:s?"canvas":"null"},o.renderer);var u=function(v,y,p){return y!==void 0?y:p!==void 0?p:v},l=this._private={container:a,ready:!1,options:o,elements:new Nt(this),listeners:[],aniEles:new Nt(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,o.zoomingEnabled),userZoomingEnabled:u(!0,o.userZoomingEnabled),panningEnabled:u(!0,o.panningEnabled),userPanningEnabled:u(!0,o.userPanningEnabled),boxSelectionEnabled:u(!0,o.boxSelectionEnabled),autolock:u(!1,o.autolock,o.autolockNodes),autoungrabify:u(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:u(!1,o.autounselectify),styleEnabled:o.styleEnabled===void 0?s:o.styleEnabled,zoom:R(o.zoom)?o.zoom:1,pan:{x:L(o.pan)&&R(o.pan.x)?o.pan.x:0,y:L(o.pan)&&R(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});var f=function(v,y){var p=v.some(nt);if(p)return sa.all(v).then(y);y(v)};l.styleEnabled&&r.setStyle([]);var h=He({},o,o.renderer);r.initRenderer(h);var c=function(v,y,p){r.notifications(!1);var g=r.mutableElements();g.length>0&&g.remove(),v!=null&&(L(v)||te(v))&&r.add(v),r.one("layoutready",function(b){r.notifications(!0),r.emit(b),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",p),r.emit("done")});var m=He({},r._private.options.layout);m.eles=r.elements(),r.layout(m).run()};f([o.style,o.elements],function(d){var v=d[0],y=d[1];l.styleEnabled&&r.style().append(v),c(y,function(){r.startAnimationLoop(),l.ready=!0,Y(o.ready)&&r.on("ready",o.ready);for(var p=0;p0,u=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l;if(pe(e.roots))l=e.roots;else if(te(e.roots)){for(var f=[],h=0;h0;){var re=B(),K=F(re,M);if(K)re.outgoers().filter(function(Ie){return Ie.isNode()&&a.has(Ie)}).forEach(X);else if(K===null){ct("Detected double maximal shift for node `"+re.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}C();var q=0;if(e.avoidOverlap)for(var ae=0;ae0&&g[0].length<=3?qe/2:0),O=2*Math.PI/g[ze].length*Be;return ze===0&&g[0].length===1&&(fe=1),{x:Ne.x+fe*Math.cos(O),y:Ne.y+fe*Math.sin(O)}}else{var et={x:Ne.x+(Be+1-(_e+1)/2)*rt,y:(ze+1)*je};return et}};return a.nodes().layoutPositions(this,e,Xe),this};var Wd={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Ko(t){this.options=He({},Wd,t)}Ko.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,i=a.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));for(var s=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},u=e.sweep===void 0?2*Math.PI-2*Math.PI/i.length:e.sweep,l=u/Math.max(1,i.length-1),f,h=0,c=0;c1&&e.avoidOverlap){h*=1.75;var g=Math.cos(l)-Math.cos(0),m=Math.sin(l)-Math.sin(0),b=Math.sqrt(h*h/(g*g+m*m));f=Math.max(b,f)}var E=function(A,x){var k=e.startAngle+x*l*(n?1:-1),C=f*Math.cos(k),F=f*Math.sin(k),G={x:o.x+C,y:o.y+F};return G};return a.nodes().layoutPositions(this,e,E),this};var Kd={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Zo(t){this.options=He({},Kd,t)}Zo.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=t.cy,n=e.eles,i=n.nodes().not(":parent"),s=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:a.width(),h:a.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],l=0,f=0;f0){var I=Math.abs(m[0].value-E.value);I>=p&&(m=[],g.push(m))}m.push(E)}var A=l+e.minNodeSpacing;if(!e.avoidOverlap){var x=g.length>0&&g[0].length>1,k=Math.min(s.w,s.h)/2-A,C=k/(g.length+x?1:0);A=Math.min(A,C)}for(var F=0,G=0;G1&&e.avoidOverlap){var re=Math.cos(B)-Math.cos(0),K=Math.sin(B)-Math.sin(0),q=Math.sqrt(A*A/(re*re+K*K));F=Math.max(q,F)}M.r=F,F+=A}if(e.equidistant){for(var ae=0,ue=0,be=0;be=t.numIter||(ag(a,t),a.temperature=a.temperature*t.coolingFactor,a.temperature=t.animationThreshold&&i(),hn(h)}};f()}else{for(;l;)l=s(u),u++;jo(a,t),o()}return this},qn.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},qn.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Qd=function(e,r,a){for(var n=a.eles.edges(),i=a.eles.nodes(),s=Yt(a.boundingBox?a.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:n.size(),temperature:a.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=a.eles.components(),l={},f=0;f0){o.graphSet.push(k);for(var f=0;fn.count?0:n.graph},jd=function t(e,r,a,n){var i=n.graphSet[a];if(-10)var h=n.nodeOverlap*f,c=Math.sqrt(o*o+u*u),d=h*o/c,v=h*u/c;else var y=Wn(e,o,u),p=Wn(r,-1*o,-1*u),g=p.x-y.x,m=p.y-y.y,b=g*g+m*m,c=Math.sqrt(b),h=(e.nodeRepulsion+r.nodeRepulsion)/b,d=h*g/c,v=h*m/c;e.isLocked||(e.offsetX-=d,e.offsetY-=v),r.isLocked||(r.offsetX+=d,r.offsetY+=v)}},sg=function(e,r,a,n){if(a>0)var i=e.maxX-r.minX;else var i=r.maxX-e.minX;if(n>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return i>=0&&s>=0?Math.sqrt(i*i+s*s):0},Wn=function(e,r,a){var n=e.positionX,i=e.positionY,s=e.height||1,o=e.width||1,u=a/r,l=s/o,f={};return r===0&&0a?(f.x=n,f.y=i+s/2,f):0r&&-1*l<=u&&u<=l?(f.x=n-o/2,f.y=i-o*a/2/r,f):0=l)?(f.x=n+s*r/2/a,f.y=i+s/2,f):(0>a&&(u<=-1*l||u>=l)&&(f.x=n-s*r/2/a,f.y=i-s/2),f)},og=function(e,r){for(var a=0;aa){var p=r.gravity*d/y,g=r.gravity*v/y;c.offsetX+=p,c.offsetY+=g}}}}},ug=function(e,r){var a=[],n=0,i=-1;for(a.push.apply(a,e.graphSet[0]),i+=e.graphSet[0].length;n<=i;){var s=a[n++],o=e.idToIndex[s],u=e.layoutNodes[o],l=u.children;if(0a)var i={x:a*e/n,y:a*r/n};else var i={x:e,y:r};return i},cg=function t(e,r){var a=e.parentId;if(a!=null){var n=r.layoutNodes[r.idToIndex[a]],i=!1;if((n.maxX==null||e.maxX+n.padRight>n.maxX)&&(n.maxX=e.maxX+n.padRight,i=!0),(n.minX==null||e.minX-n.padLeftn.maxY)&&(n.maxY=e.maxY+n.padBottom,i=!0),(n.minY==null||e.minY-n.padTopg&&(v+=p+r.componentSpacing,d=0,y=0,p=0)}}},vg={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function el(t){this.options=He({},vg,t)}el.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=a.nodes().not(":parent");e.sort&&(n=n.sort(e.sort));var i=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(i.h===0||i.w===0)a.nodes().layoutPositions(this,e,function(we){return{x:i.x1,y:i.y1}});else{var s=n.size(),o=Math.sqrt(s*i.h/i.w),u=Math.round(o),l=Math.round(i.w/i.h*o),f=function(De){if(De==null)return Math.min(u,l);var xe=Math.min(u,l);xe==u?u=De:l=De},h=function(De){if(De==null)return Math.max(u,l);var xe=Math.max(u,l);xe==u?u=De:l=De},c=e.rows,d=e.cols!=null?e.cols:e.columns;if(c!=null&&d!=null)u=c,l=d;else if(c!=null&&d==null)u=c,l=Math.ceil(s/u);else if(c==null&&d!=null)l=d,u=Math.ceil(s/l);else if(l*u>s){var v=f(),y=h();(v-1)*y>=s?f(v-1):(y-1)*v>=s&&h(y-1)}else for(;l*u=s?h(g+1):f(p+1)}var m=i.w/l,b=i.h/u;if(e.condense&&(m=0,b=0),e.avoidOverlap)for(var E=0;E=l&&(re=0,B++)},q={},ae=0;ae(re=Ff(t,e,K[q],K[q+1],K[q+2],K[q+3])))return p(x,re),!0}else if(C.edgeType==="bezier"||C.edgeType==="multibezier"||C.edgeType==="self"||C.edgeType==="compound"){for(var K=C.allpts,q=0;q+5(re=Bf(t,e,K[q],K[q+1],K[q+2],K[q+3],K[q+4],K[q+5])))return p(x,re),!0}for(var ae=ae||k.source,ue=ue||k.target,be=n.getArrowWidth(F,G),ie=[{name:"source",x:C.arrowStartX,y:C.arrowStartY,angle:C.srcArrowAngle},{name:"target",x:C.arrowEndX,y:C.arrowEndY,angle:C.tgtArrowAngle},{name:"mid-source",x:C.midX,y:C.midY,angle:C.midsrcArrowAngle},{name:"mid-target",x:C.midX,y:C.midY,angle:C.midtgtArrowAngle}],q=0;q0&&(g(ae),g(ue))}function b(x,k,C){return tr(x,k,C)}function E(x,k){var C=x._private,F=c,G;k?G=k+"-":G="",x.boundingBox();var M=C.labelBounds[k||"main"],X=x.pstyle(G+"label").value,B=x.pstyle("text-events").strValue==="yes";if(!(!B||!X)){var re=b(C.rscratch,"labelX",k),K=b(C.rscratch,"labelY",k),q=b(C.rscratch,"labelAngle",k),ae=x.pstyle(G+"text-margin-x").pfValue,ue=x.pstyle(G+"text-margin-y").pfValue,be=M.x1-F-ae,ie=M.x2+F-ae,ge=M.y1-F-ue,we=M.y2+F-ue;if(q){var De=Math.cos(q),xe=Math.sin(q),Se=function(Xe,Ie){return Xe=Xe-re,Ie=Ie-K,{x:Xe*De-Ie*xe+re,y:Xe*xe+Ie*De+K}},se=Se(be,ge),Te=Se(be,we),Ae=Se(ie,ge),Le=Se(ie,we),Ne=[se.x+ae,se.y+ue,Ae.x+ae,Ae.y+ue,Le.x+ae,Le.y+ue,Te.x+ae,Te.y+ue];if(Ht(t,e,Ne))return p(x),!0}else if(ra(M,t,e))return p(x),!0}}for(var I=s.length-1;I>=0;I--){var A=s[I];A.isNode()?g(A)||E(A):m(A)||E(A)||E(A,"source")||E(A,"target")}return o},_r.getAllInBox=function(t,e,r,a){var n=this.getCachedZSortedEles().interactive,i=[],s=Math.min(t,r),o=Math.max(t,r),u=Math.min(e,a),l=Math.max(e,a);t=s,r=o,e=u,a=l;for(var f=Yt({x1:t,y1:e,x2:r,y2:a}),h=0;h0?Math.max(Ee-Ge,0):Math.min(Ee+Ge,0)},X=M(F,k),B=M(G,C),re=!1;m===l?g=Math.abs(X)>Math.abs(B)?n:a:m===u||m===o?(g=a,re=!0):(m===i||m===s)&&(g=n,re=!0);var K=g===a,q=K?B:X,ae=K?G:F,ue=xs(ae),be=!1;!(re&&(E||A))&&(m===o&&ae<0||m===u&&ae>0||m===i&&ae>0||m===s&&ae<0)&&(ue*=-1,q=ue*Math.abs(q),be=!0);var ie;if(E){var ge=I<0?1+I:I;ie=ge*q}else{var we=I<0?q:0;ie=we+I*ue}var De=function(Ee){return Math.abs(Ee)=Math.abs(q)},xe=De(ie),Se=De(Math.abs(q)-Math.abs(ie)),se=xe||Se;if(se&&!be)if(K){var Te=Math.abs(ae)<=c/2,Ae=Math.abs(F)<=d/2;if(Te){var Le=(f.x1+f.x2)/2,Ne=f.y1,Fe=f.y2;r.segpts=[Le,Ne,Le,Fe]}else if(Ae){var Xe=(f.y1+f.y2)/2,Ie=f.x1,Re=f.x2;r.segpts=[Ie,Xe,Re,Xe]}else r.segpts=[f.x1,f.y2]}else{var $e=Math.abs(ae)<=h/2,ze=Math.abs(G)<=v/2;if($e){var Be=(f.y1+f.y2)/2,_e=f.x1,rt=f.x2;r.segpts=[_e,Be,rt,Be]}else if(ze){var je=(f.x1+f.x2)/2,qe=f.y1,et=f.y2;r.segpts=[je,qe,je,et]}else r.segpts=[f.x2,f.y1]}else if(K){var fe=f.y1+ie+(p?c/2*ue:0),O=f.x1,oe=f.x2;r.segpts=[O,fe,oe,fe]}else{var Ce=f.x1+ie+(p?h/2*ue:0),ve=f.y1,ye=f.y2;r.segpts=[Ce,ve,Ce,ye]}},Vt.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var a=e.srcPos,n=e.tgtPos,i=e.srcW,s=e.srcH,o=e.tgtW,u=e.tgtH,l=e.srcShape,f=e.tgtShape,h=!R(r.startX)||!R(r.startY),c=!R(r.arrowStartX)||!R(r.arrowStartY),d=!R(r.endX)||!R(r.endY),v=!R(r.arrowEndX)||!R(r.arrowEndY),y=3,p=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,g=y*p,m=Br({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),b=mB.poolIndex()){var re=X;X=B,B=re}var K=C.srcPos=X.position(),q=C.tgtPos=B.position(),ae=C.srcW=X.outerWidth(),ue=C.srcH=X.outerHeight(),be=C.tgtW=B.outerWidth(),ie=C.tgtH=B.outerHeight(),ge=C.srcShape=r.nodeShapes[e.getNodeShape(X)],we=C.tgtShape=r.nodeShapes[e.getNodeShape(B)];C.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var De=0;De0){var Te=i,Ae=Fr(Te,ea(r)),Le=Fr(Te,ea(se)),Ne=Ae;if(Le2){var Fe=Fr(Te,{x:se[2],y:se[3]});Fe0){var O=s,oe=Fr(O,ea(r)),Ce=Fr(O,ea(fe)),ve=oe;if(Ce2){var ye=Fr(O,{x:fe[2],y:fe[3]});ye=v||x){p={cp:E,segment:A};break}}if(p)break}var k=p.cp,C=p.segment,F=(v-g)/C.length,G=C.t1-C.t0,M=d?C.t0+G*F:C.t1-G*F;M=Pa(0,M,1),e=ta(k.p0,k.p1,k.p2,M),c=bg(k.p0,k.p1,k.p2,M);break}case"straight":case"segments":case"haystack":{for(var X=0,B,re,K,q,ae=a.allpts.length,ue=0;ue+3=v));ue+=2);var be=v-re,ie=be/B;ie=Pa(0,ie,1),e=Sf(K,q,ie),c=ll(K,q);break}}s("labelX",h,e.x),s("labelY",h,e.y),s("labelAutoAngle",h,c)}};l("source"),l("target"),this.applyLabelDimensions(t)}},hr.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))},hr.applyPrefixedLabelDimensions=function(t,e){var r=t._private,a=this.getLabelText(t,e),n=this.calculateLabelDimensions(t,a),i=t.pstyle("line-height").pfValue,s=t.pstyle("text-wrap").strValue,o=tr(r.rscratch,"labelWrapCachedLines",e)||[],u=s!=="wrap"?1:Math.max(o.length,1),l=n.height/u,f=l*i,h=n.width,c=n.height+(u-1)*(i-1)*l;Tr(r.rstyle,"labelWidth",e,h),Tr(r.rscratch,"labelWidth",e,h),Tr(r.rstyle,"labelHeight",e,c),Tr(r.rscratch,"labelHeight",e,c),Tr(r.rscratch,"labelLineHeight",e,f)},hr.getLabelText=function(t,e){var r=t._private,a=e?e+"-":"",n=t.pstyle(a+"label").strValue,i=t.pstyle("text-transform").value,s=function(be,ie){return ie?(Tr(r.rscratch,be,e,ie),ie):tr(r.rscratch,be,e)};if(!n)return"";i=="none"||(i=="uppercase"?n=n.toUpperCase():i=="lowercase"&&(n=n.toLowerCase()));var o=t.pstyle("text-wrap").value;if(o==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var l="​",f=n.split(` +`),h=t.pstyle("text-max-width").pfValue,c=t.pstyle("text-overflow-wrap").value,d=c==="anywhere",v=[],y=/[\s\u200b]+/,p=d?"":" ",g=0;gh){for(var A=m.split(y),x="",k=0;kX)break;B+=n[q],q===n.length-1&&(K=!0)}return K||(B+=re),B}return n},hr.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e},hr.calculateLabelDimensions=function(t,e){var r=this,a=Pr(e,t._private.labelDimsKey),n=r.labelDimCache||(r.labelDimCache=[]),i=n[a];if(i!=null)return i;var s=0,o=t.pstyle("font-style").strValue,u=t.pstyle("font-size").pfValue,l=t.pstyle("font-family").strValue,f=t.pstyle("font-weight").strValue,h=this.labelCalcCanvas,c=this.labelCalcCanvasContext;if(!h){h=this.labelCalcCanvas=document.createElement("canvas"),c=this.labelCalcCanvasContext=h.getContext("2d");var d=h.style;d.position="absolute",d.left="-9999px",d.top="-9999px",d.zIndex="-1",d.visibility="hidden",d.pointerEvents="none"}c.font="".concat(o," ").concat(f," ").concat(u,"px ").concat(l);for(var v=0,y=0,p=e.split(` +`),g=0;g1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),o)for(var u=0;u=t.desktopTapThreshold2}var Er=n(O);Rt&&(t.hoverData.tapholdCancelled=!0);var Rr=function(){var vr=t.hoverData.dragDelta=t.hoverData.dragDelta||[];vr.length===0?(vr.push(Je[0]),vr.push(Je[1])):(vr[0]+=Je[0],vr[1]+=Je[1])};Ce=!0,a(We,["mousemove","vmousemove","tapdrag"],O,{x:Ee[0],y:Ee[1]});var Ta=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||ve.emit({originalEvent:O,type:"boxstart",position:{x:Ee[0],y:Ee[1]}}),ft[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()};if(t.hoverData.which===3){if(Rt){var Xr={originalEvent:O,type:"cxtdrag",position:{x:Ee[0],y:Ee[1]}};Ke?Ke.emit(Xr):ve.emit(Xr),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||We!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:O,type:"cxtdragout",position:{x:Ee[0],y:Ee[1]}}),t.hoverData.cxtOver=We,We&&We.emit({originalEvent:O,type:"cxtdragover",position:{x:Ee[0],y:Ee[1]}}))}}else if(t.hoverData.dragging){if(Ce=!0,ve.panningEnabled()&&ve.userPanningEnabled()){var Ca;if(t.hoverData.justStartedPan){var ti=t.hoverData.mdownPos;Ca={x:(Ee[0]-ti[0])*ye,y:(Ee[1]-ti[1])*ye},t.hoverData.justStartedPan=!1}else Ca={x:Je[0]*ye,y:Je[1]*ye};ve.panBy(Ca),ve.emit("dragpan"),t.hoverData.dragged=!0}Ee=t.projectIntoViewport(O.clientX,O.clientY)}else if(ft[4]==1&&(Ke==null||Ke.pannable())){if(Rt){if(!t.hoverData.dragging&&ve.boxSelectionEnabled()&&(Er||!ve.panningEnabled()||!ve.userPanningEnabled()))Ta();else if(!t.hoverData.selecting&&ve.panningEnabled()&&ve.userPanningEnabled()){var qr=i(Ke,t.hoverData.downs);qr&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,ft[4]=0,t.data.bgActivePosistion=ea(Ge),t.redrawHint("select",!0),t.redraw())}Ke&&Ke.pannable()&&Ke.active()&&Ke.unactivate()}}else{if(Ke&&Ke.pannable()&&Ke.active()&&Ke.unactivate(),(!Ke||!Ke.grabbed())&&We!=ot&&(ot&&a(ot,["mouseout","tapdragout"],O,{x:Ee[0],y:Ee[1]}),We&&a(We,["mouseover","tapdragover"],O,{x:Ee[0],y:Ee[1]}),t.hoverData.last=We),Ke)if(Rt){if(ve.boxSelectionEnabled()&&Er)Ke&&Ke.grabbed()&&(p(Dt),Ke.emit("freeon"),Dt.emit("free"),t.dragData.didDrag&&(Ke.emit("dragfreeon"),Dt.emit("dragfree"))),Ta();else if(Ke&&Ke.grabbed()&&t.nodeIsDraggable(Ke)){var Xt=!t.dragData.didDrag;Xt&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||v(Dt,{inDragLayer:!0});var $t={x:0,y:0};if(R(Je[0])&&R(Je[1])&&($t.x+=Je[0],$t.y+=Je[1],Xt)){var qt=t.hoverData.dragDelta;qt&&R(qt[0])&&R(qt[1])&&($t.x+=qt[0],$t.y+=qt[1])}t.hoverData.draggingEles=!0,Dt.silentShift($t).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else Rr();Ce=!0}if(ft[2]=Ee[0],ft[3]=Ee[1],Ce)return O.stopPropagation&&O.stopPropagation(),O.preventDefault&&O.preventDefault(),!1}},!1);var F,G,M;t.registerBinding(e,"mouseup",function(O){var oe=t.hoverData.capture;if(oe){t.hoverData.capture=!1;var Ce=t.cy,ve=t.projectIntoViewport(O.clientX,O.clientY),ye=t.selection,Ue=t.findNearestElement(ve[0],ve[1],!0,!1),Ee=t.dragData.possibleDragElements,Ge=t.hoverData.down,Qe=n(O);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,Ge&&Ge.unactivate(),t.hoverData.which===3){var ft={originalEvent:O,type:"cxttapend",position:{x:ve[0],y:ve[1]}};if(Ge?Ge.emit(ft):Ce.emit(ft),!t.hoverData.cxtDragged){var We={originalEvent:O,type:"cxttap",position:{x:ve[0],y:ve[1]}};Ge?Ge.emit(We):Ce.emit(We)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(a(Ue,["mouseup","tapend","vmouseup"],O,{x:ve[0],y:ve[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(a(Ge,["click","tap","vclick"],O,{x:ve[0],y:ve[1]}),G=!1,O.timeStamp-M<=Ce.multiClickDebounceTime()?(F&&clearTimeout(F),G=!0,M=null,a(Ge,["dblclick","dbltap","vdblclick"],O,{x:ve[0],y:ve[1]})):(F=setTimeout(function(){G||a(Ge,["oneclick","onetap","voneclick"],O,{x:ve[0],y:ve[1]})},Ce.multiClickDebounceTime()),M=O.timeStamp)),Ge==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!n(O)&&(Ce.$(r).unselect(["tapunselect"]),Ee.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=Ee=Ce.collection()),Ue==Ge&&!t.dragData.didDrag&&!t.hoverData.selecting&&Ue!=null&&Ue._private.selectable&&(t.hoverData.dragging||(Ce.selectionType()==="additive"||Qe?Ue.selected()?Ue.unselect(["tapunselect"]):Ue.select(["tapselect"]):Qe||(Ce.$(r).unmerge(Ue).unselect(["tapunselect"]),Ue.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var ot=Ce.collection(t.getAllInBox(ye[0],ye[1],ye[2],ye[3]));t.redrawHint("select",!0),ot.length>0&&t.redrawHint("eles",!0),Ce.emit({type:"boxend",originalEvent:O,position:{x:ve[0],y:ve[1]}});var Ke=function(Rt){return Rt.selectable()&&!Rt.selected()};Ce.selectionType()==="additive"||Qe||Ce.$(r).unmerge(ot).unselect(),ot.emit("box").stdFilter(Ke).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!ye[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var Je=Ge&&Ge.grabbed();p(Ee),Je&&(Ge.emit("freeon"),Ee.emit("free"),t.dragData.didDrag&&(Ge.emit("dragfreeon"),Ee.emit("dragfree")))}}ye[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null}},!1);var X=function(O){if(!t.scrollingPage){var oe=t.cy,Ce=oe.zoom(),ve=oe.pan(),ye=t.projectIntoViewport(O.clientX,O.clientY),Ue=[ye[0]*Ce+ve.x,ye[1]*Ce+ve.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||k()){O.preventDefault();return}if(oe.panningEnabled()&&oe.userPanningEnabled()&&oe.zoomingEnabled()&&oe.userZoomingEnabled()){O.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150);var Ee;O.deltaY!=null?Ee=O.deltaY/-250:O.wheelDeltaY!=null?Ee=O.wheelDeltaY/1e3:Ee=O.wheelDelta/1e3,Ee=Ee*t.wheelSensitivity;var Ge=O.deltaMode===1;Ge&&(Ee*=33);var Qe=oe.zoom()*Math.pow(10,Ee);O.type==="gesturechange"&&(Qe=t.gestureStartZoom*O.scale),oe.zoom({level:Qe,renderedPosition:{x:Ue[0],y:Ue[1]}}),oe.emit(O.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};t.registerBinding(t.container,"wheel",X,!0),t.registerBinding(e,"scroll",function(O){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},!0),t.registerBinding(t.container,"gesturestart",function(O){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||O.preventDefault()},!0),t.registerBinding(t.container,"gesturechange",function(fe){t.hasTouchStarted||X(fe)},!0),t.registerBinding(t.container,"mouseout",function(O){var oe=t.projectIntoViewport(O.clientX,O.clientY);t.cy.emit({originalEvent:O,type:"mouseout",position:{x:oe[0],y:oe[1]}})},!1),t.registerBinding(t.container,"mouseover",function(O){var oe=t.projectIntoViewport(O.clientX,O.clientY);t.cy.emit({originalEvent:O,type:"mouseover",position:{x:oe[0],y:oe[1]}})},!1);var B,re,K,q,ae,ue,be,ie,ge,we,De,xe,Se,se=function(O,oe,Ce,ve){return Math.sqrt((Ce-O)*(Ce-O)+(ve-oe)*(ve-oe))},Te=function(O,oe,Ce,ve){return(Ce-O)*(Ce-O)+(ve-oe)*(ve-oe)},Ae;t.registerBinding(t.container,"touchstart",Ae=function(O){if(t.hasTouchStarted=!0,!!C(O)){m(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var oe=t.cy,Ce=t.touchData.now,ve=t.touchData.earlier;if(O.touches[0]){var ye=t.projectIntoViewport(O.touches[0].clientX,O.touches[0].clientY);Ce[0]=ye[0],Ce[1]=ye[1]}if(O.touches[1]){var ye=t.projectIntoViewport(O.touches[1].clientX,O.touches[1].clientY);Ce[2]=ye[0],Ce[3]=ye[1]}if(O.touches[2]){var ye=t.projectIntoViewport(O.touches[2].clientX,O.touches[2].clientY);Ce[4]=ye[0],Ce[5]=ye[1]}if(O.touches[1]){t.touchData.singleTouchMoved=!0,p(t.dragData.touchDragEles);var Ue=t.findContainerClientCoords();ge=Ue[0],we=Ue[1],De=Ue[2],xe=Ue[3],B=O.touches[0].clientX-ge,re=O.touches[0].clientY-we,K=O.touches[1].clientX-ge,q=O.touches[1].clientY-we,Se=0<=B&&B<=De&&0<=K&&K<=De&&0<=re&&re<=xe&&0<=q&&q<=xe;var Ee=oe.pan(),Ge=oe.zoom();ae=se(B,re,K,q),ue=Te(B,re,K,q),be=[(B+K)/2,(re+q)/2],ie=[(be[0]-Ee.x)/Ge,(be[1]-Ee.y)/Ge];var Qe=200,ft=Qe*Qe;if(ue=1){for(var ir=t.touchData.startPosition=[null,null,null,null,null,null],kt=0;kt=t.touchTapThreshold2}if(oe&&t.touchData.cxt){O.preventDefault();var ir=O.touches[0].clientX-ge,kt=O.touches[0].clientY-we,Jt=O.touches[1].clientX-ge,Ut=O.touches[1].clientY-we,Er=Te(ir,kt,Jt,Ut),Rr=Er/ue,Ta=150,Xr=Ta*Ta,Ca=1.5,ti=Ca*Ca;if(Rr>=ti||Er>=Xr){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var qr={originalEvent:O,type:"cxttapend",position:{x:ye[0],y:ye[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(qr),t.touchData.start=null):ve.emit(qr)}}if(oe&&t.touchData.cxt){var qr={originalEvent:O,type:"cxtdrag",position:{x:ye[0],y:ye[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(qr):ve.emit(qr),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var Xt=t.findNearestElement(ye[0],ye[1],!0,!0);(!t.touchData.cxtOver||Xt!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:O,type:"cxtdragout",position:{x:ye[0],y:ye[1]}}),t.touchData.cxtOver=Xt,Xt&&Xt.emit({originalEvent:O,type:"cxtdragover",position:{x:ye[0],y:ye[1]}}))}else if(oe&&O.touches[2]&&ve.boxSelectionEnabled())O.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||ve.emit({originalEvent:O,type:"boxstart",position:{x:ye[0],y:ye[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,Ce[4]=1,!Ce||Ce.length===0||Ce[0]===void 0?(Ce[0]=(ye[0]+ye[2]+ye[4])/3,Ce[1]=(ye[1]+ye[3]+ye[5])/3,Ce[2]=(ye[0]+ye[2]+ye[4])/3+1,Ce[3]=(ye[1]+ye[3]+ye[5])/3+1):(Ce[2]=(ye[0]+ye[2]+ye[4])/3,Ce[3]=(ye[1]+ye[3]+ye[5])/3),t.redrawHint("select",!0),t.redraw();else if(oe&&O.touches[1]&&!t.touchData.didSelect&&ve.zoomingEnabled()&&ve.panningEnabled()&&ve.userZoomingEnabled()&&ve.userPanningEnabled()){O.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var $t=t.dragData.touchDragEles;if($t){t.redrawHint("drag",!0);for(var qt=0;qt<$t.length;qt++){var ri=$t[qt]._private;ri.grabbed=!1,ri.rscratch.inDragLayer=!1}}var vr=t.touchData.start,ir=O.touches[0].clientX-ge,kt=O.touches[0].clientY-we,Jt=O.touches[1].clientX-ge,Ut=O.touches[1].clientY-we,Gl=se(ir,kt,Jt,Ut),vp=Gl/ae;if(Se){var dp=ir-B,gp=kt-re,pp=Jt-K,yp=Ut-q,mp=(dp+pp)/2,bp=(gp+yp)/2,an=ve.zoom(),Ki=an*vp,ai=ve.pan(),zl=ie[0]*an+ai.x,Vl=ie[1]*an+ai.y,Ep={x:-Ki/an*(zl-ai.x-mp)+zl,y:-Ki/an*(Vl-ai.y-bp)+Vl};if(vr&&vr.active()){var $t=t.dragData.touchDragEles;p($t),t.redrawHint("drag",!0),t.redrawHint("eles",!0),vr.unactivate().emit("freeon"),$t.emit("free"),t.dragData.didDrag&&(vr.emit("dragfreeon"),$t.emit("dragfree"))}ve.viewport({zoom:Ki,pan:Ep,cancelOnFailedZoom:!0}),ve.emit("pinchzoom"),ae=Gl,B=ir,re=kt,K=Jt,q=Ut,t.pinching=!0}if(O.touches[0]){var Ge=t.projectIntoViewport(O.touches[0].clientX,O.touches[0].clientY);ye[0]=Ge[0],ye[1]=Ge[1]}if(O.touches[1]){var Ge=t.projectIntoViewport(O.touches[1].clientX,O.touches[1].clientY);ye[2]=Ge[0],ye[3]=Ge[1]}if(O.touches[2]){var Ge=t.projectIntoViewport(O.touches[2].clientX,O.touches[2].clientY);ye[4]=Ge[0],ye[5]=Ge[1]}}else if(O.touches[0]&&!t.touchData.didSelect){var sr=t.touchData.start,Zi=t.touchData.last,Xt;if(!t.hoverData.draggingEles&&!t.swipePanning&&(Xt=t.findNearestElement(ye[0],ye[1],!0,!0)),oe&&sr!=null&&O.preventDefault(),oe&&sr!=null&&t.nodeIsDraggable(sr))if(ft){var $t=t.dragData.touchDragEles,$l=!t.dragData.didDrag;$l&&v($t,{inDragLayer:!0}),t.dragData.didDrag=!0;var nn={x:0,y:0};if(R(We[0])&&R(We[1])&&(nn.x+=We[0],nn.y+=We[1],$l)){t.redrawHint("eles",!0);var or=t.touchData.dragDelta;or&&R(or[0])&&R(or[1])&&(nn.x+=or[0],nn.y+=or[1])}t.hoverData.draggingEles=!0,$t.silentShift(nn).emit("position drag"),t.redrawHint("drag",!0),t.touchData.startPosition[0]==Ue[0]&&t.touchData.startPosition[1]==Ue[1]&&t.redrawHint("eles",!0),t.redraw()}else{var or=t.touchData.dragDelta=t.touchData.dragDelta||[];or.length===0?(or.push(We[0]),or.push(We[1])):(or[0]+=We[0],or[1]+=We[1])}if(a(sr||Xt,["touchmove","tapdrag","vmousemove"],O,{x:ye[0],y:ye[1]}),(!sr||!sr.grabbed())&&Xt!=Zi&&(Zi&&Zi.emit({originalEvent:O,type:"tapdragout",position:{x:ye[0],y:ye[1]}}),Xt&&Xt.emit({originalEvent:O,type:"tapdragover",position:{x:ye[0],y:ye[1]}})),t.touchData.last=Xt,oe)for(var qt=0;qt0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},!1);var Ne;t.registerBinding(e,"touchcancel",Ne=function(O){var oe=t.touchData.start;t.touchData.capture=!1,oe&&oe.unactivate()});var Fe,Xe,Ie,Re;if(t.registerBinding(e,"touchend",Fe=function(O){var oe=t.touchData.start,Ce=t.touchData.capture;if(Ce)O.touches.length===0&&(t.touchData.capture=!1),O.preventDefault();else return;var ve=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var ye=t.cy,Ue=ye.zoom(),Ee=t.touchData.now,Ge=t.touchData.earlier;if(O.touches[0]){var Qe=t.projectIntoViewport(O.touches[0].clientX,O.touches[0].clientY);Ee[0]=Qe[0],Ee[1]=Qe[1]}if(O.touches[1]){var Qe=t.projectIntoViewport(O.touches[1].clientX,O.touches[1].clientY);Ee[2]=Qe[0],Ee[3]=Qe[1]}if(O.touches[2]){var Qe=t.projectIntoViewport(O.touches[2].clientX,O.touches[2].clientY);Ee[4]=Qe[0],Ee[5]=Qe[1]}oe&&oe.unactivate();var ft;if(t.touchData.cxt){if(ft={originalEvent:O,type:"cxttapend",position:{x:Ee[0],y:Ee[1]}},oe?oe.emit(ft):ye.emit(ft),!t.touchData.cxtDragged){var We={originalEvent:O,type:"cxttap",position:{x:Ee[0],y:Ee[1]}};oe?oe.emit(We):ye.emit(We)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!O.touches[2]&&ye.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var ot=ye.collection(t.getAllInBox(ve[0],ve[1],ve[2],ve[3]));ve[0]=void 0,ve[1]=void 0,ve[2]=void 0,ve[3]=void 0,ve[4]=0,t.redrawHint("select",!0),ye.emit({type:"boxend",originalEvent:O,position:{x:Ee[0],y:Ee[1]}});var Ke=function(Xr){return Xr.selectable()&&!Xr.selected()};ot.emit("box").stdFilter(Ke).select().emit("boxselect"),ot.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(oe!=null&&oe.unactivate(),O.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!O.touches[1]){if(!O.touches[0]){if(!O.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Je=t.dragData.touchDragEles;if(oe!=null){var Dt=oe._private.grabbed;p(Je),t.redrawHint("drag",!0),t.redrawHint("eles",!0),Dt&&(oe.emit("freeon"),Je.emit("free"),t.dragData.didDrag&&(oe.emit("dragfreeon"),Je.emit("dragfree"))),a(oe,["touchend","tapend","vmouseup","tapdragout"],O,{x:Ee[0],y:Ee[1]}),oe.unactivate(),t.touchData.start=null}else{var Rt=t.findNearestElement(Ee[0],Ee[1],!0,!0);a(Rt,["touchend","tapend","vmouseup","tapdragout"],O,{x:Ee[0],y:Ee[1]})}var nr=t.touchData.startPosition[0]-Ee[0],ir=nr*nr,kt=t.touchData.startPosition[1]-Ee[1],Jt=kt*kt,Ut=ir+Jt,Er=Ut*Ue*Ue;t.touchData.singleTouchMoved||(oe||ye.$(":selected").unselect(["tapunselect"]),a(oe,["tap","vclick"],O,{x:Ee[0],y:Ee[1]}),Xe=!1,O.timeStamp-Re<=ye.multiClickDebounceTime()?(Ie&&clearTimeout(Ie),Xe=!0,Re=null,a(oe,["dbltap","vdblclick"],O,{x:Ee[0],y:Ee[1]})):(Ie=setTimeout(function(){Xe||a(oe,["onetap","voneclick"],O,{x:Ee[0],y:Ee[1]})},ye.multiClickDebounceTime()),Re=O.timeStamp)),oe!=null&&!t.dragData.didDrag&&oe._private.selectable&&Er"u"){var $e=[],ze=function(O){return{clientX:O.clientX,clientY:O.clientY,force:1,identifier:O.pointerId,pageX:O.pageX,pageY:O.pageY,radiusX:O.width/2,radiusY:O.height/2,screenX:O.screenX,screenY:O.screenY,target:O.target}},Be=function(O){return{event:O,touch:ze(O)}},_e=function(O){$e.push(Be(O))},rt=function(O){for(var oe=0;oe<$e.length;oe++){var Ce=$e[oe];if(Ce.event.pointerId===O.pointerId){$e.splice(oe,1);return}}},je=function(O){var oe=$e.filter(function(Ce){return Ce.event.pointerId===O.pointerId})[0];oe.event=O,oe.touch=ze(O)},qe=function(O){O.touches=$e.map(function(oe){return oe.touch})},et=function(O){return O.pointerType==="mouse"||O.pointerType===4};t.registerBinding(t.container,"pointerdown",function(fe){et(fe)||(fe.preventDefault(),_e(fe),qe(fe),Ae(fe))}),t.registerBinding(t.container,"pointerup",function(fe){et(fe)||(rt(fe),qe(fe),Fe(fe))}),t.registerBinding(t.container,"pointercancel",function(fe){et(fe)||(rt(fe),qe(fe),Ne(fe))}),t.registerBinding(t.container,"pointermove",function(fe){et(fe)||(fe.preventDefault(),je(fe),qe(fe),Le(fe))})}};var mr={};mr.generatePolygon=function(t,e){return this.nodeShapes[t]={renderer:this,name:t,points:e,draw:function(a,n,i,s,o){this.renderer.nodeShapeImpl("polygon",a,n,i,s,o,this.points)},intersectLine:function(a,n,i,s,o,u,l){return Fa(o,u,this.points,a,n,i/2,s/2,l)},checkPoint:function(a,n,i,s,o,u,l){return pr(a,n,this.points,u,l,s,o,[0,-1],i)}}},mr.generateEllipse=function(){return this.nodeShapes.ellipse={renderer:this,name:"ellipse",draw:function(e,r,a,n,i){this.renderer.nodeShapeImpl(this.name,e,r,a,n,i)},intersectLine:function(e,r,a,n,i,s,o){return zf(i,s,e,r,a/2+o,n/2+o)},checkPoint:function(e,r,a,n,i,s,o){return Gr(e,r,n,i,s,o,a)}}},mr.generateRoundPolygon=function(t,e){for(var r=new Array(e.length*2),a=0;a0)return ie[0]}return null},d=Object.keys(h),v=0;v0?c:Ss(i,s,e,r,a,n,o)},checkPoint:function(e,r,a,n,i,s,o){var u=Ga(n,i),l=2*u;if(pr(e,r,this.points,s,o,n,i-l,[0,-1],a)||pr(e,r,this.points,s,o,n-l,i,[0,-1],a))return!0;var f=n/2+2*a,h=i/2+2*a,c=[s-f,o-h,s-f,o,s+f,o,s+f,o-h];return!!(Ht(e,r,c)||Gr(e,r,l,l,s+n/2-u,o+i/2-u,a)||Gr(e,r,l,l,s-n/2+u,o+i/2-u,a))}}},mr.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",_t(3,0)),this.generateRoundPolygon("round-triangle",_t(3,0)),this.generatePolygon("rectangle",_t(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",_t(5,0)),this.generateRoundPolygon("round-pentagon",_t(5,0)),this.generatePolygon("hexagon",_t(6,0)),this.generateRoundPolygon("round-hexagon",_t(6,0)),this.generatePolygon("heptagon",_t(7,0)),this.generateRoundPolygon("round-heptagon",_t(7,0)),this.generatePolygon("octagon",_t(8,0)),this.generateRoundPolygon("round-octagon",_t(8,0));var a=new Array(20);{var n=di(5,0),i=di(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var o=0;o=e.deqFastCost*E)break}else if(l){if(m>=e.deqCost*d||m>=e.deqAvgCost*c)break}else if(b>=e.deqNoDrawCost*$i)break;var I=e.deq(a,p,y);if(I.length>0)for(var A=0;A0&&(e.onDeqd(a,v),!l&&e.shouldRedraw(a,v,p,y)&&i())},o=e.priority||li;n.beforeRender(s,o(a))}}}},wg=function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:vn;de(this,t),this.idsByKey=new ur,this.keyForId=new ur,this.cachesByLvl=new ur,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return N(t,[{key:"getIdsFor",value:function(r){r==null&&Tt("Can not get id list for null key");var a=this.idsByKey,n=this.idsByKey.get(r);return n||(n=new jr,a.set(r,n)),n}},{key:"addIdForKey",value:function(r,a){r!=null&&this.getIdsFor(r).add(a)}},{key:"deleteIdForKey",value:function(r,a){r!=null&&this.getIdsFor(r).delete(a)}},{key:"getNumberOfIdsForKey",value:function(r){return r==null?0:this.getIdsFor(r).size}},{key:"updateKeyMappingFor",value:function(r){var a=r.id(),n=this.keyForId.get(a),i=this.getKey(r);this.deleteIdForKey(n,a),this.addIdForKey(i,a),this.keyForId.set(a,i)}},{key:"deleteKeyMappingFor",value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteIdForKey(n,a),this.keyForId.delete(a)}},{key:"keyHasChangedFor",value:function(r){var a=r.id(),n=this.keyForId.get(a),i=this.getKey(r);return n!==i}},{key:"isInvalid",value:function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)}},{key:"getCachesAt",value:function(r){var a=this.cachesByLvl,n=this.lvls,i=a.get(r);return i||(i=new ur,a.set(r,i),n.push(r)),i}},{key:"getCache",value:function(r,a){return this.getCachesAt(a).get(r)}},{key:"get",value:function(r,a){var n=this.getKey(r),i=this.getCache(n,a);return i!=null&&this.updateKeyMappingFor(r),i}},{key:"getForCachedKey",value:function(r,a){var n=this.keyForId.get(r.id()),i=this.getCache(n,a);return i}},{key:"hasCache",value:function(r,a){return this.getCachesAt(a).has(r)}},{key:"has",value:function(r,a){var n=this.getKey(r);return this.hasCache(n,a)}},{key:"setCache",value:function(r,a,n){n.key=r,this.getCachesAt(a).set(r,n)}},{key:"set",value:function(r,a,n){var i=this.getKey(r);this.setCache(i,a,n),this.updateKeyMappingFor(r)}},{key:"deleteCache",value:function(r,a){this.getCachesAt(a).delete(r)}},{key:"delete",value:function(r,a){var n=this.getKey(r);this.deleteCache(n,a)}},{key:"invalidateKey",value:function(r){var a=this;this.lvls.forEach(function(n){return a.deleteCache(r,n)})}},{key:"invalidate",value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteKeyMappingFor(r);var i=this.doesEleInvalidateKey(r);return i&&this.invalidateKey(n),i||this.getNumberOfIdsForKey(n)===0}}]),t}(),yl=25,Jn=50,jn=-4,_i=3,xg=7.99,Tg=8,Cg=1024,Dg=1024,Sg=1024,Lg=.2,Ag=.8,Og=10,Ng=.15,Mg=.1,Ig=.9,Rg=.9,kg=100,Pg=1,Ea={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Bg=At({getKey:null,doesEleInvalidateKey:vn,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:gs,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),en=function(e,r){var a=this;a.renderer=e,a.onDequeues=[];var n=Bg(r);He(a,n),a.lookup=new wg(n.getKey,n.doesEleInvalidateKey),a.setupDequeueing()},St=en.prototype;St.reasons=Ea,St.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]},St.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},a=r[t]=r[t]||[];return a},St.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new ka(function(r,a){return a.reqs-r.reqs});return e},St.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e},St.getElement=function(t,e,r,a,n){var i=this,s=this.renderer,o=s.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!i.allowEdgeTxrCaching&&t.isEdge()||!i.allowParentTxrCaching&&t.isParent())return null;if(a==null&&(a=Math.ceil(hi(o*r))),a=xg||a>_i)return null;var l=Math.pow(2,a),f=e.h*l,h=e.w*l,c=s.eleTextBiggerThanMin(t,l);if(!this.isVisible(t,c))return null;var d=u.get(t,a);if(d&&d.invalidated&&(d.invalidated=!1,d.texture.invalidatedWidth-=d.width),d)return d;var v;if(f<=yl?v=yl:f<=Jn?v=Jn:v=Math.ceil(f/Jn)*Jn,f>Sg||h>Dg)return null;var y=i.getTextureQueue(v),p=y[y.length-2],g=function(){return i.recycleTexture(v,h)||i.addTexture(v,h)};p||(p=y[y.length-1]),p||(p=g()),p.width-p.usedWidtha;G--)C=i.getElement(t,e,r,G,Ea.downscale);F()}else return i.queueElement(t,A.level-1),A;else{var M;if(!b&&!E&&!I)for(var X=a-1;X>=jn;X--){var B=u.get(t,X);if(B){M=B;break}}if(m(M))return i.queueElement(t,a),M;p.context.translate(p.usedWidth,0),p.context.scale(l,l),this.drawElement(p.context,t,e,c,!1),p.context.scale(1/l,1/l),p.context.translate(-p.usedWidth,0)}return d={x:p.usedWidth,texture:p,level:a,scale:l,width:h,height:f,scaledLabelShown:c},p.usedWidth+=Math.ceil(h+Tg),p.eleCaches.push(d),u.set(t,a,d),i.checkTextureFullness(p),d},St.invalidateElements=function(t){for(var e=0;e=Lg*t.width&&this.retireTexture(t)},St.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>Ag&&t.fullnessChecks>=Og?xr(r,t):t.fullnessChecks++},St.retireTexture=function(t){var e=this,r=t.height,a=e.getTextureQueue(r),n=this.lookup;xr(a,t),t.retired=!0;for(var i=t.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,ui(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),xr(n,s),a.push(s),s}},St.queueElement=function(t,e){var r=this,a=r.getElementQueue(),n=r.getElementKeyToQueue(),i=this.getKey(t),s=n[i];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,a.updateItem(s);else{var o={eles:t.spawn().merge(t),level:e,reqs:1,key:i};a.push(o),n[i]=o}},St.dequeue=function(t){for(var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=[],i=e.lookup,s=0;s0;s++){var o=r.pop(),u=o.key,l=o.eles[0],f=i.hasCache(l,o.level);if(a[u]=null,f)continue;n.push(o);var h=e.getBoundingBox(l);e.getElement(l,h,t,o.level,Ea.dequeue)}return n},St.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=this.getKey(t),i=a[n];i!=null&&(i.eles.length===1?(i.reqs=oi,r.updateItem(i),r.pop(),a[n]=null):i.eles.unmerge(t))},St.onDequeue=function(t){this.onDequeues.push(t)},St.offDequeue=function(t){xr(this.onDequeues,t)},St.setupDequeueing=pl.setupDequeueing({deqRedrawThreshold:kg,deqCost:Ng,deqAvgCost:Mg,deqNoDrawCost:Ig,deqFastCost:Rg,deq:function(e,r,a){return e.dequeue(r,a)},onDeqd:function(e,r){for(var a=0;a=Gg||r>ei)return null}a.validateLayersElesOrdering(r,t);var u=a.layersByLevel,l=Math.pow(2,r),f=u[r]=u[r]||[],h,c=a.levelIsComplete(r,t),d,v=function(){var F=function(re){if(a.validateLayersElesOrdering(re,t),a.levelIsComplete(re,t))return d=u[re],!0},G=function(re){if(!d)for(var K=r+re;tn<=K&&K<=ei&&!F(K);K+=re);};G(1),G(-1);for(var M=f.length-1;M>=0;M--){var X=f[M];X.invalid&&xr(f,X)}};if(!c)v();else return f;var y=function(){if(!h){h=Yt();for(var F=0;FXg)return null;var X=a.makeLayer(h,r);if(G!=null){var B=f.indexOf(G)+1;f.splice(B,0,X)}else(F.insert===void 0||F.insert)&&f.unshift(X);return X};if(a.skipping&&!o)return null;for(var g=null,m=t.length/Fg,b=!o,E=0;E=m||!Ds(g.bb,I.boundingBox()))&&(g=p({insert:!0,after:g}),!g))return null;d||b?a.queueLayer(g,I):a.drawEleInLayer(g,I,r,e),g.eles.push(I),x[r]=g}return d||(b?null:f)},It.getEleLevelForLayerLevel=function(t,e){return t},It.drawEleInLayer=function(t,e,r,a){var n=this,i=this.renderer,s=t.context,o=e.boundingBox();o.w===0||o.h===0||!e.visible()||(r=n.getEleLevelForLayerLevel(r,a),i.setImgSmoothing(s,!1),i.drawCachedElement(s,e,null,null,r,qg),i.setImgSmoothing(s,!0))},It.levelIsComplete=function(t,e){var r=this,a=r.layersByLevel[t];if(!a||a.length===0)return!1;for(var n=0,i=0;i0||s.invalid)return!1;n+=s.eles.length}return n===e.length},It.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var a=0;a0){e=!0;break}}return e},It.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=gr(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,function(a,n,i){e.invalidateLayer(a)}))},It.invalidateLayer=function(t){if(this.lastInvalidationTime=gr(),!t.invalid){var e=t.level,r=t.eles,a=this.layersByLevel[e];xr(a,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var n=0;n3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o=e._private.rscratch;if(!(i&&!e.visible())&&!(o.badLine||o.allpts==null||isNaN(o.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var l=i?e.pstyle("opacity").value:1,f=i?e.pstyle("line-opacity").value:1,h=e.pstyle("curve-style").value,c=e.pstyle("line-style").value,d=e.pstyle("width").pfValue,v=e.pstyle("line-cap").value,y=l*f,p=l*f,g=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:y;h==="straight-triangle"?(s.eleStrokeStyle(t,e,M),s.drawEdgeTrianglePath(e,t,o.allpts)):(t.lineWidth=d,t.lineCap=v,s.eleStrokeStyle(t,e,M),s.drawEdgePath(e,t,o.allpts,c),t.lineCap="butt")},m=function(){n&&s.drawEdgeOverlay(t,e)},b=function(){n&&s.drawEdgeUnderlay(t,e)},E=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p;s.drawArrowheads(t,e,M)},I=function(){s.drawElementText(t,e,null,a)};t.lineJoin="round";var A=e.pstyle("ghost").value==="yes";if(A){var x=e.pstyle("ghost-offset-x").pfValue,k=e.pstyle("ghost-offset-y").pfValue,C=e.pstyle("ghost-opacity").value,F=y*C;t.translate(x,k),g(F),E(F),t.translate(-x,-k)}b(),g(),E(),m(),I(),r&&t.translate(u.x1,u.y1)}};var Cl=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,a){if(a.visible()){var n=a.pstyle("".concat(e,"-opacity")).value;if(n!==0){var i=this,s=i.usePaths(),o=a._private.rscratch,u=a.pstyle("".concat(e,"-padding")).pfValue,l=2*u,f=a.pstyle("".concat(e,"-color")).value;r.lineWidth=l,o.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",i.colorStrokeStyle(r,f[0],f[1],f[2],n),i.drawEdgePath(a,r,o.allpts,"solid")}}}};br.drawEdgeOverlay=Cl("overlay"),br.drawEdgeUnderlay=Cl("underlay"),br.drawEdgePath=function(t,e,r,a){var n=t._private.rscratch,i=e,s,o=!1,u=this.usePaths(),l=t.pstyle("line-dash-pattern").pfValue,f=t.pstyle("line-dash-offset").pfValue;if(u){var h=r.join("$"),c=n.pathCacheKey&&n.pathCacheKey===h;c?(s=e=n.pathCache,o=!0):(s=e=new Path2D,n.pathCacheKey=h,n.pathCache=s)}if(i.setLineDash)switch(a){case"dotted":i.setLineDash([1,1]);break;case"dashed":i.setLineDash(l),i.lineDashOffset=f;break;case"solid":i.setLineDash([]);break}if(!o&&!n.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),n.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var d=2;d+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(a==null){if(i&&!s.eleTextBiggerThanMin(e))return}else if(a===!1)return;if(e.isNode()){var o=e.pstyle("label");if(!o||!o.value)return;var u=s.getLabelJustification(e);t.textAlign=u,t.textBaseline="bottom"}else{var l=e.element()._private.rscratch.badLine,f=e.pstyle("label"),h=e.pstyle("source-label"),c=e.pstyle("target-label");if(l||(!f||!f.value)&&(!h||!h.value)&&(!c||!c.value))return;t.textAlign="center",t.textBaseline="bottom"}var d=!r,v;r&&(v=r,t.translate(-v.x1,-v.y1)),n==null?(s.drawText(t,e,null,d,i),e.isEdge()&&(s.drawText(t,e,"source",d,i),s.drawText(t,e,"target",d,i))):s.drawText(t,e,n,d,i),r&&t.translate(v.x1,v.y1)},Ur.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,a=e.pstyle("font-style").strValue,n=e.pstyle("font-size").pfValue+"px",i=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,o=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,u=e.pstyle("text-outline-opacity").value*o,l=e.pstyle("color").value,f=e.pstyle("text-outline-color").value;t.font=a+" "+s+" "+n+" "+i,t.lineJoin="round",this.colorFillStyle(t,l[0],l[1],l[2],o),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};function Hi(t,e,r,a,n){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5,s=arguments.length>6?arguments[6]:void 0;t.beginPath(),t.moveTo(e+i,r),t.lineTo(e+a-i,r),t.quadraticCurveTo(e+a,r,e+a,r+i),t.lineTo(e+a,r+n-i),t.quadraticCurveTo(e+a,r+n,e+a-i,r+n),t.lineTo(e+i,r+n),t.quadraticCurveTo(e,r+n,e,r+n-i),t.lineTo(e,r+i),t.quadraticCurveTo(e,r,e+i,r),t.closePath(),s?t.stroke():t.fill()}Ur.getTextAngle=function(t,e){var r,a=t._private,n=a.rscratch,i=e?e+"-":"",s=t.pstyle(i+"text-rotation"),o=tr(n,"labelAngle",e);return s.strValue==="autorotate"?r=t.isEdge()?o:0:s.strValue==="none"?r=0:r=s.pfValue,r},Ur.drawText=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=e._private,s=i.rscratch,o=n?e.effectiveOpacity():1;if(!(n&&(o===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=tr(s,"labelX",r),l=tr(s,"labelY",r),f,h,c=this.getLabelText(e,r);if(c!=null&&c!==""&&!isNaN(u)&&!isNaN(l)){this.setupTextStyle(t,e,n);var d=r?r+"-":"",v=tr(s,"labelWidth",r),y=tr(s,"labelHeight",r),p=e.pstyle(d+"text-margin-x").pfValue,g=e.pstyle(d+"text-margin-y").pfValue,m=e.isEdge(),b=e.pstyle("text-halign").value,E=e.pstyle("text-valign").value;m&&(b="center",E="center"),u+=p,l+=g;var I;switch(a?I=this.getTextAngle(e,r):I=0,I!==0&&(f=u,h=l,t.translate(f,h),t.rotate(I),u=0,l=0),E){case"top":break;case"center":l+=y/2;break;case"bottom":l+=y;break}var A=e.pstyle("text-background-opacity").value,x=e.pstyle("text-border-opacity").value,k=e.pstyle("text-border-width").pfValue,C=e.pstyle("text-background-padding").pfValue,F=e.pstyle("text-background-shape").strValue,G=F.indexOf("round")===0,M=2;if(A>0||k>0&&x>0){var X=u-C;switch(b){case"left":X-=v;break;case"center":X-=v/2;break}var B=l-y-C,re=v+2*C,K=y+2*C;if(A>0){var q=t.fillStyle,ae=e.pstyle("text-background-color").value;t.fillStyle="rgba("+ae[0]+","+ae[1]+","+ae[2]+","+A*o+")",G?Hi(t,X,B,re,K,M):t.fillRect(X,B,re,K),t.fillStyle=q}if(k>0&&x>0){var ue=t.strokeStyle,be=t.lineWidth,ie=e.pstyle("text-border-color").value,ge=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+ie[0]+","+ie[1]+","+ie[2]+","+x*o+")",t.lineWidth=k,t.setLineDash)switch(ge){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=k/4,t.setLineDash([]);break;case"solid":t.setLineDash([]);break}if(G?Hi(t,X,B,re,K,M,"stroke"):t.strokeRect(X,B,re,K),ge==="double"){var we=k/2;G?Hi(t,X+we,B+we,re-we*2,K-we*2,M,"stroke"):t.strokeRect(X+we,B+we,re-we*2,K-we*2)}t.setLineDash&&t.setLineDash([]),t.lineWidth=be,t.strokeStyle=ue}}var De=2*e.pstyle("text-outline-width").pfValue;if(De>0&&(t.lineWidth=De),e.pstyle("text-wrap").value==="wrap"){var xe=tr(s,"labelWrapCachedLines",r),Se=tr(s,"labelLineHeight",r),se=v/2,Te=this.getLabelJustification(e);switch(Te==="auto"||(b==="left"?Te==="left"?u+=-v:Te==="center"&&(u+=-se):b==="center"?Te==="left"?u+=-se:Te==="right"&&(u+=se):b==="right"&&(Te==="center"?u+=se:Te==="right"&&(u+=v))),E){case"top":l-=(xe.length-1)*Se;break;case"center":case"bottom":l-=(xe.length-1)*Se;break}for(var Ae=0;Ae0&&t.strokeText(xe[Ae],u,l),t.fillText(xe[Ae],u,l),l+=Se}else De>0&&t.strokeText(c,u,l),t.fillText(c,u,l);I!==0&&(t.rotate(-I),t.translate(-f,-h))}}};var wa={};wa.drawNode=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o,u,l=e._private,f=l.rscratch,h=e.position();if(!(!R(h.x)||!R(h.y))&&!(i&&!e.visible())){var c=i?e.effectiveOpacity():1,d=s.usePaths(),v,y=!1,p=e.padding();o=e.width()+2*p,u=e.height()+2*p;var g;r&&(g=r,t.translate(-g.x1,-g.y1));for(var m=e.pstyle("background-image"),b=m.value,E=new Array(b.length),I=new Array(b.length),A=0,x=0;x0&&arguments[0]!==void 0?arguments[0]:X;s.eleFillStyle(t,e,fe)},we=function(){var fe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:K;s.colorStrokeStyle(t,B[0],B[1],B[2],fe)},De=function(){var fe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:be;s.colorStrokeStyle(t,ae[0],ae[1],ae[2],fe)},xe=function(fe,O,oe,Ce){var ve=s.nodePathCache=s.nodePathCache||[],ye=vs(oe==="polygon"?oe+","+Ce.join(","):oe,""+O,""+fe),Ue=ve[ye],Ee,Ge=!1;return Ue!=null?(Ee=Ue,Ge=!0,f.pathCache=Ee):(Ee=new Path2D,ve[ye]=f.pathCache=Ee),{path:Ee,cacheHit:Ge}},Se=e.pstyle("shape").strValue,se=e.pstyle("shape-polygon-points").pfValue;if(d){t.translate(h.x,h.y);var Te=xe(o,u,Se,se);v=Te.path,y=Te.cacheHit}var Ae=function(){if(!y){var fe=h;d&&(fe={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(v||t,fe.x,fe.y,o,u)}d?t.fill(v):t.fill()},Le=function(){for(var fe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,oe=l.backgrounding,Ce=0,ve=0;ve0&&arguments[0]!==void 0?arguments[0]:!1,O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c;s.hasPie(e)&&(s.drawPie(t,e,O),fe&&(d||s.nodeShapes[s.getNodeShape(e)].draw(t,h.x,h.y,o,u)))},Fe=function(){var fe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,O=(G>0?G:-G)*fe,oe=G>0?0:255;G!==0&&(s.colorFillStyle(t,oe,oe,oe,O),d?t.fill(v):t.fill())},Xe=function(){if(M>0){if(t.lineWidth=M,t.lineCap="butt",t.setLineDash)switch(re){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}if(d?t.stroke(v):t.stroke(),re==="double"){t.lineWidth=M/3;var fe=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",d?t.stroke(v):t.stroke(),t.globalCompositeOperation=fe}t.setLineDash&&t.setLineDash([])}},Ie=function(){if(q>0){if(t.lineWidth=q,t.lineCap="butt",t.setLineDash)switch(ue){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var fe=h;d&&(fe={x:0,y:0});var O=s.getNodeShape(e),oe=(o+M+(q+ie))/o,Ce=(u+M+(q+ie))/u,ve=o*oe,ye=u*Ce,Ue=s.nodeShapes[O].points,Ee;if(d){var Ge=xe(ve,ye,O,Ue);Ee=Ge.path}if(O==="ellipse")s.drawEllipsePath(Ee||t,fe.x,fe.y,ve,ye);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(O)){var Qe=0,ft=0,We=0;O==="round-diamond"?Qe=(M+ie+q)*1.4:O==="round-heptagon"?(Qe=(M+ie+q)*1.075,We=-(M/2+ie+q)/35):O==="round-hexagon"?Qe=(M+ie+q)*1.12:O==="round-pentagon"?(Qe=(M+ie+q)*1.13,We=-(M/2+ie+q)/15):O==="round-tag"?(Qe=(M+ie+q)*1.12,ft=(M/2+q+ie)*.07):O==="round-triangle"&&(Qe=(M+ie+q)*(Math.PI/2),We=-(M+ie/2+q)/Math.PI),Qe!==0&&(oe=(o+Qe)/o,Ce=(u+Qe)/u),s.drawRoundPolygonPath(Ee||t,fe.x+ft,fe.y+We,o*oe,u*Ce,Ue)}else if(["roundrectangle","round-rectangle"].includes(O))s.drawRoundRectanglePath(Ee||t,fe.x,fe.y,ve,ye);else if(["cutrectangle","cut-rectangle"].includes(O))s.drawCutRectanglePath(Ee||t,fe.x,fe.y,ve,ye);else if(["bottomroundrectangle","bottom-round-rectangle"].includes(O))s.drawBottomRoundRectanglePath(Ee||t,fe.x,fe.y,ve,ye);else if(O==="barrel")s.drawBarrelPath(Ee||t,fe.x,fe.y,ve,ye);else if(O.startsWith("polygon")||["rhomboid","right-rhomboid","round-tag","tag","vee"].includes(O)){var ot=(M+q+ie)/o;Ue=bn(En(Ue,ot)),s.drawPolygonPath(Ee||t,fe.x,fe.y,o,u,Ue)}else{var Ke=(M+q+ie)/o;Ue=bn(En(Ue,-Ke)),s.drawPolygonPath(Ee||t,fe.x,fe.y,o,u,Ue)}if(d?t.stroke(Ee):t.stroke(),ue==="double"){t.lineWidth=M/3;var Je=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",d?t.stroke(Ee):t.stroke(),t.globalCompositeOperation=Je}t.setLineDash&&t.setLineDash([])}},Re=function(){n&&s.drawNodeOverlay(t,e,h,o,u)},$e=function(){n&&s.drawNodeUnderlay(t,e,h,o,u)},ze=function(){s.drawElementText(t,e,null,a)},Be=e.pstyle("ghost").value==="yes";if(Be){var _e=e.pstyle("ghost-offset-x").pfValue,rt=e.pstyle("ghost-offset-y").pfValue,je=e.pstyle("ghost-opacity").value,qe=je*c;t.translate(_e,rt),De(),Ie(),ge(je*X),Ae(),Le(qe,!0),we(je*K),Xe(),Ne(G!==0||M!==0),Le(qe,!1),Fe(qe),t.translate(-_e,-rt)}d&&t.translate(-h.x,-h.y),$e(),d&&t.translate(h.x,h.y),De(),Ie(),ge(),Ae(),Le(c,!0),we(),Xe(),Ne(G!==0||M!==0),Le(c,!1),Fe(),d&&t.translate(-h.x,-h.y),ze(),Re(),r&&t.translate(g.x1,g.y1)}};var Dl=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,a,n,i,s){var o=this;if(a.visible()){var u=a.pstyle("".concat(e,"-padding")).pfValue,l=a.pstyle("".concat(e,"-opacity")).value,f=a.pstyle("".concat(e,"-color")).value,h=a.pstyle("".concat(e,"-shape")).value;if(l>0){if(n=n||a.position(),i==null||s==null){var c=a.padding();i=a.width()+2*c,s=a.height()+2*c}o.colorFillStyle(r,f[0],f[1],f[2],l),o.nodeShapes[h].draw(r,n.x,n.y,i+u*2,s+u*2),r.fill()}}}};wa.drawNodeOverlay=Dl("overlay"),wa.drawNodeUnderlay=Dl("underlay"),wa.hasPie=function(t){return t=t[0],t._private.hasPie},wa.drawPie=function(t,e,r,a){e=e[0],a=a||e.position();var n=e.cy().style(),i=e.pstyle("pie-size"),s=a.x,o=a.y,u=e.width(),l=e.height(),f=Math.min(u,l)/2,h=0,c=this.usePaths();c&&(s=0,o=0),i.units==="%"?f=f*i.pfValue:i.pfValue!==void 0&&(f=i.pfValue/2);for(var d=1;d<=n.pieBackgroundN;d++){var v=e.pstyle("pie-"+d+"-background-size").value,y=e.pstyle("pie-"+d+"-background-color").value,p=e.pstyle("pie-"+d+"-background-opacity").value*r,g=v/100;g+h>1&&(g=1-h);var m=1.5*Math.PI+2*Math.PI*h,b=2*Math.PI*g,E=m+b;v===0||h>=1||h+g>1||(t.beginPath(),t.moveTo(s,o),t.arc(s,o,f,m,E),t.closePath(),this.colorFillStyle(t,y[0],y[1],y[2],p),t.fill(),h+=g)}};var Kt={},np=100;Kt.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/e},Kt.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,a,n=0;ns.minMbLowQualFrames&&(s.motionBlurPxRatio=s.mbPxRBlurry)),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!h&&(f[s.NODE]=!0,f[s.SELECT_BOX]=!0);var m=u.style(),b=u.zoom(),E=n!==void 0?n:b,I=u.pan(),A={x:I.x,y:I.y},x={zoom:b,pan:{x:I.x,y:I.y}},k=s.prevViewport,C=k===void 0||x.zoom!==k.zoom||x.pan.x!==k.pan.x||x.pan.y!==k.pan.y;!C&&!(y&&!v)&&(s.motionBlurPxRatio=1),i&&(A=i),E*=o,A.x*=o,A.y*=o;var F=s.getCachedZSortedEles();function G(Ie,Re,$e,ze,Be){var _e=Ie.globalCompositeOperation;Ie.globalCompositeOperation="destination-out",s.colorFillStyle(Ie,255,255,255,s.motionBlurTransparency),Ie.fillRect(Re,$e,ze,Be),Ie.globalCompositeOperation=_e}function M(Ie,Re){var $e,ze,Be,_e;!s.clearingMotionBlur&&(Ie===l.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]||Ie===l.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG])?($e={x:I.x*d,y:I.y*d},ze=b*d,Be=s.canvasWidth*d,_e=s.canvasHeight*d):($e=A,ze=E,Be=s.canvasWidth,_e=s.canvasHeight),Ie.setTransform(1,0,0,1,0,0),Re==="motionBlur"?G(Ie,0,0,Be,_e):!e&&(Re===void 0||Re)&&Ie.clearRect(0,0,Be,_e),r||(Ie.translate($e.x,$e.y),Ie.scale(ze,ze)),i&&Ie.translate(i.x,i.y),n&&Ie.scale(n,n)}if(h||(s.textureDrawLastFrame=!1),h){if(s.textureDrawLastFrame=!0,!s.textureCache){s.textureCache={},s.textureCache.bb=u.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER];var X=s.data.bufferContexts[s.TEXTURE_BUFFER];X.setTransform(1,0,0,1,0,0),X.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:X,drawOnlyNodeLayer:!0,forcedPxRatio:o*s.textureMult});var x=s.textureCache.viewport={zoom:u.zoom(),pan:u.pan(),width:s.canvasWidth,height:s.canvasHeight};x.mpan={x:(0-x.pan.x)/x.zoom,y:(0-x.pan.y)/x.zoom}}f[s.DRAG]=!1,f[s.NODE]=!1;var B=l.contexts[s.NODE],re=s.textureCache.texture,x=s.textureCache.viewport;B.setTransform(1,0,0,1,0,0),c?G(B,0,0,x.width,x.height):B.clearRect(0,0,x.width,x.height);var K=m.core("outside-texture-bg-color").value,q=m.core("outside-texture-bg-opacity").value;s.colorFillStyle(B,K[0],K[1],K[2],q),B.fillRect(0,0,x.width,x.height);var b=u.zoom();M(B,!1),B.clearRect(x.mpan.x,x.mpan.y,x.width/x.zoom/o,x.height/x.zoom/o),B.drawImage(re,x.mpan.x,x.mpan.y,x.width/x.zoom/o,x.height/x.zoom/o)}else s.textureOnViewport&&!e&&(s.textureCache=null);var ae=u.extent(),ue=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles||s.cy.animated(),be=s.hideEdgesOnViewport&&ue,ie=[];if(ie[s.NODE]=!f[s.NODE]&&c&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,ie[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),ie[s.DRAG]=!f[s.DRAG]&&c&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,ie[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),f[s.NODE]||r||a||ie[s.NODE]){var ge=c&&!ie[s.NODE]&&d!==1,B=e||(ge?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:l.contexts[s.NODE]),we=c&&!ge?"motionBlur":void 0;M(B,we),be?s.drawCachedNodes(B,F.nondrag,o,ae):s.drawLayeredElements(B,F.nondrag,o,ae),s.debug&&s.drawDebugPoints(B,F.nondrag),!r&&!c&&(f[s.NODE]=!1)}if(!a&&(f[s.DRAG]||r||ie[s.DRAG])){var ge=c&&!ie[s.DRAG]&&d!==1,B=e||(ge?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:l.contexts[s.DRAG]);M(B,c&&!ge?"motionBlur":void 0),be?s.drawCachedNodes(B,F.drag,o,ae):s.drawCachedElements(B,F.drag,o,ae),s.debug&&s.drawDebugPoints(B,F.drag),!r&&!c&&(f[s.DRAG]=!1)}if(s.showFps||!a&&f[s.SELECT_BOX]&&!r){var B=e||l.contexts[s.SELECT_BOX];if(M(B),s.selection[4]==1&&(s.hoverData.selecting||s.touchData.selecting)){var b=s.cy.zoom(),De=m.core("selection-box-border-width").value/b;B.lineWidth=De,B.fillStyle="rgba("+m.core("selection-box-color").value[0]+","+m.core("selection-box-color").value[1]+","+m.core("selection-box-color").value[2]+","+m.core("selection-box-opacity").value+")",B.fillRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]),De>0&&(B.strokeStyle="rgba("+m.core("selection-box-border-color").value[0]+","+m.core("selection-box-border-color").value[1]+","+m.core("selection-box-border-color").value[2]+","+m.core("selection-box-opacity").value+")",B.strokeRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]))}if(l.bgActivePosistion&&!s.hoverData.selecting){var b=s.cy.zoom(),xe=l.bgActivePosistion;B.fillStyle="rgba("+m.core("active-bg-color").value[0]+","+m.core("active-bg-color").value[1]+","+m.core("active-bg-color").value[2]+","+m.core("active-bg-opacity").value+")",B.beginPath(),B.arc(xe.x,xe.y,m.core("active-bg-size").pfValue/b,0,2*Math.PI),B.fill()}var Se=s.lastRedrawTime;if(s.showFps&&Se){Se=Math.round(Se);var se=Math.round(1e3/Se);B.setTransform(1,0,0,1,0,0),B.fillStyle="rgba(255, 0, 0, 0.75)",B.strokeStyle="rgba(255, 0, 0, 0.75)",B.lineWidth=1,B.fillText("1 frame = "+Se+" ms = "+se+" fps",0,20);var Te=60;B.strokeRect(0,30,250,20),B.fillRect(0,30,250*Math.min(se/Te,1),20)}r||(f[s.SELECT_BOX]=!1)}if(c&&d!==1){var Ae=l.contexts[s.NODE],Le=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],Ne=l.contexts[s.DRAG],Fe=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],Xe=function(Re,$e,ze){Re.setTransform(1,0,0,1,0,0),ze||!g?Re.clearRect(0,0,s.canvasWidth,s.canvasHeight):G(Re,0,0,s.canvasWidth,s.canvasHeight);var Be=d;Re.drawImage($e,0,0,s.canvasWidth*Be,s.canvasHeight*Be,0,0,s.canvasWidth,s.canvasHeight)};(f[s.NODE]||ie[s.NODE])&&(Xe(Ae,Le,ie[s.NODE]),f[s.NODE]=!1),(f[s.DRAG]||ie[s.DRAG])&&(Xe(Ne,Fe,ie[s.DRAG]),f[s.DRAG]=!1)}s.prevViewport=x,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),c&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!h,s.mbFrames=0,f[s.NODE]=!0,f[s.DRAG]=!0,s.redraw()},np)),e||u.emit("render")};var Ir={};Ir.drawPolygonPath=function(t,e,r,a,n,i){var s=a/2,o=n/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*i[0],r+o*i[1]);for(var u=1;u0&&s>0){d.clearRect(0,0,i,s),d.globalCompositeOperation="source-over";var v=this.getCachedZSortedEles();if(t.full)d.translate(-a.x1*l,-a.y1*l),d.scale(l,l),this.drawElements(d,v),d.scale(1/l,1/l),d.translate(a.x1*l,a.y1*l);else{var y=e.pan(),p={x:y.x*l,y:y.y*l};l*=e.zoom(),d.translate(p.x,p.y),d.scale(l,l),this.drawElements(d,v),d.scale(1/l,1/l),d.translate(-p.x,-p.y)}t.bg&&(d.globalCompositeOperation="destination-over",d.fillStyle=t.bg,d.rect(0,0,i,s),d.fill())}return c};function ip(t,e){for(var r=atob(t),a=new ArrayBuffer(r.length),n=new Uint8Array(a),i=0;i"u"?"undefined":ee(OffscreenCanvas))!=="undefined"?r=new OffscreenCanvas(t,e):(r=document.createElement("canvas"),r.width=t,r.height=e),r},[wl,cr,br,Yi,Ur,wa,Kt,Ir,rn,Ml].forEach(function(t){He(ut,t)});var lp=[{name:"null",impl:al},{name:"base",impl:gl},{name:"canvas",impl:sp}],up=[{type:"layout",extensions:yg},{type:"renderer",extensions:lp}],Rl={},kl={};function Pl(t,e,r){var a=r,n=function(k){ct("Can not register `"+e+"` for `"+t+"` since `"+k+"` already exists in the prototype and can not be overridden")};if(t==="core"){if(Qa.prototype[e])return n(e);Qa.prototype[e]=r}else if(t==="collection"){if(Nt.prototype[e])return n(e);Nt.prototype[e]=r}else if(t==="layout"){for(var i=function(k){this.options=k,r.call(this,k),L(this._private)||(this._private={}),this._private.cy=k.cy,this._private.listeners=[],this.createEmitter()},s=i.prototype=Object.create(r.prototype),o=[],u=0;u$&&(this.rect.x-=(this.labelWidth-$)/2,this.setWidth(this.labelWidth)),this.labelHeight>_&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-_)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-_),this.setHeight(this.labelHeight))}}},P.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==T.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},P.prototype.transform=function(D){var $=this.rect.x;$>S.WORLD_BOUNDARY?$=S.WORLD_BOUNDARY:$<-S.WORLD_BOUNDARY&&($=-S.WORLD_BOUNDARY);var _=this.rect.y;_>S.WORLD_BOUNDARY?_=S.WORLD_BOUNDARY:_<-S.WORLD_BOUNDARY&&(_=-S.WORLD_BOUNDARY);var Q=new U($,_),ne=D.inverseTransformPoint(Q);this.setLocation(ne.x,ne.y)},P.prototype.getLeft=function(){return this.rect.x},P.prototype.getRight=function(){return this.rect.x+this.rect.width},P.prototype.getTop=function(){return this.rect.y},P.prototype.getBottom=function(){return this.rect.y+this.rect.height},P.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},ee.exports=P},function(ee,de,H){function N(T,w){T==null&&w==null?(this.x=0,this.y=0):(this.x=T,this.y=w)}N.prototype.getX=function(){return this.x},N.prototype.getY=function(){return this.y},N.prototype.setX=function(T){this.x=T},N.prototype.setY=function(T){this.y=T},N.prototype.getDifference=function(T){return new DimensionD(this.x-T.x,this.y-T.y)},N.prototype.getCopy=function(){return new N(this.x,this.y)},N.prototype.translate=function(T){return this.x+=T.width,this.y+=T.height,this},ee.exports=N},function(ee,de,H){var N=H(2),T=H(10),w=H(0),S=H(6),z=H(3),U=H(1),P=H(13),Z=H(12),D=H(11);function $(Q,ne,le){N.call(this,le),this.estimatedSize=T.MIN_VALUE,this.margin=w.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=Q,ne!=null&&ne instanceof S?this.graphManager=ne:ne!=null&&ne instanceof Layout&&(this.graphManager=ne.graphManager)}$.prototype=Object.create(N.prototype);for(var _ in N)$[_]=N[_];$.prototype.getNodes=function(){return this.nodes},$.prototype.getEdges=function(){return this.edges},$.prototype.getGraphManager=function(){return this.graphManager},$.prototype.getParent=function(){return this.parent},$.prototype.getLeft=function(){return this.left},$.prototype.getRight=function(){return this.right},$.prototype.getTop=function(){return this.top},$.prototype.getBottom=function(){return this.bottom},$.prototype.isConnected=function(){return this.isConnected},$.prototype.add=function(Q,ne,le){if(ne==null&&le==null){var J=Q;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(J)>-1)throw"Node already in graph!";return J.owner=this,this.getNodes().push(J),J}else{var j=Q;if(!(this.getNodes().indexOf(ne)>-1&&this.getNodes().indexOf(le)>-1))throw"Source or target not in graph!";if(!(ne.owner==le.owner&&ne.owner==this))throw"Both owners must be this graph!";return ne.owner!=le.owner?null:(j.source=ne,j.target=le,j.isInterGraph=!1,this.getEdges().push(j),ne.edges.push(j),le!=ne&&le.edges.push(j),j)}},$.prototype.remove=function(Q){var ne=Q;if(Q instanceof z){if(ne==null)throw"Node is null!";if(!(ne.owner!=null&&ne.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var le=ne.edges.slice(),J,j=le.length,Y=0;Y-1&&V>-1))throw"Source and/or target doesn't know this edge!";J.source.edges.splice(L,1),J.target!=J.source&&J.target.edges.splice(V,1);var te=J.source.owner.getEdges().indexOf(J);if(te==-1)throw"Not in owner's edge list!";J.source.owner.getEdges().splice(te,1)}},$.prototype.updateLeftTop=function(){for(var Q=T.MAX_VALUE,ne=T.MAX_VALUE,le,J,j,Y=this.getNodes(),te=Y.length,L=0;Lle&&(Q=le),ne>J&&(ne=J)}return Q==T.MAX_VALUE?null:(Y[0].getParent().paddingLeft!=null?j=Y[0].getParent().paddingLeft:j=this.margin,this.left=ne-j,this.top=Q-j,new Z(this.left,this.top))},$.prototype.updateBounds=function(Q){for(var ne=T.MAX_VALUE,le=-T.MAX_VALUE,J=T.MAX_VALUE,j=-T.MAX_VALUE,Y,te,L,V,R,W=this.nodes,ce=W.length,pe=0;peY&&(ne=Y),leL&&(J=L),jY&&(ne=Y),leL&&(J=L),j=this.nodes.length){var ce=0;le.forEach(function(pe){pe.owner==Q&&ce++}),ce==this.nodes.length&&(this.isConnected=!0)}},ee.exports=$},function(ee,de,H){var N,T=H(1);function w(S){N=H(5),this.layout=S,this.graphs=[],this.edges=[]}w.prototype.addRoot=function(){var S=this.layout.newGraph(),z=this.layout.newNode(null),U=this.add(S,z);return this.setRootGraph(U),this.rootGraph},w.prototype.add=function(S,z,U,P,Z){if(U==null&&P==null&&Z==null){if(S==null)throw"Graph is null!";if(z==null)throw"Parent node is null!";if(this.graphs.indexOf(S)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(S),S.parent!=null)throw"Already has a parent!";if(z.child!=null)throw"Already has a child!";return S.parent=z,z.child=S,S}else{Z=U,P=z,U=S;var D=P.getOwner(),$=Z.getOwner();if(!(D!=null&&D.getGraphManager()==this))throw"Source not in this graph mgr!";if(!($!=null&&$.getGraphManager()==this))throw"Target not in this graph mgr!";if(D==$)return U.isInterGraph=!1,D.add(U,P,Z);if(U.isInterGraph=!0,U.source=P,U.target=Z,this.edges.indexOf(U)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(U),!(U.source!=null&&U.target!=null))throw"Edge source and/or target is null!";if(!(U.source.edges.indexOf(U)==-1&&U.target.edges.indexOf(U)==-1))throw"Edge already in source and/or target incidency list!";return U.source.edges.push(U),U.target.edges.push(U),U}},w.prototype.remove=function(S){if(S instanceof N){var z=S;if(z.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(z==this.rootGraph||z.parent!=null&&z.parent.graphManager==this))throw"Invalid parent node!";var U=[];U=U.concat(z.getEdges());for(var P,Z=U.length,D=0;D=S.getRight()?z[0]+=Math.min(S.getX()-w.getX(),w.getRight()-S.getRight()):S.getX()<=w.getX()&&S.getRight()>=w.getRight()&&(z[0]+=Math.min(w.getX()-S.getX(),S.getRight()-w.getRight())),w.getY()<=S.getY()&&w.getBottom()>=S.getBottom()?z[1]+=Math.min(S.getY()-w.getY(),w.getBottom()-S.getBottom()):S.getY()<=w.getY()&&S.getBottom()>=w.getBottom()&&(z[1]+=Math.min(w.getY()-S.getY(),S.getBottom()-w.getBottom()));var Z=Math.abs((S.getCenterY()-w.getCenterY())/(S.getCenterX()-w.getCenterX()));S.getCenterY()===w.getCenterY()&&S.getCenterX()===w.getCenterX()&&(Z=1);var D=Z*z[0],$=z[1]/Z;z[0]<$?$=z[0]:D=z[1],z[0]=-1*P[0]*($/2+U),z[1]=-1*P[1]*(D/2+U)},T.decideDirectionsForOverlappingNodes=function(w,S,z){w.getCenterX()D)return z[0]=U,z[1]=_,z[2]=Z,z[3]=W,!1;if(PZ)return z[0]=$,z[1]=P,z[2]=V,z[3]=D,!1;if(UZ?(z[0]=ne,z[1]=le,Me=!0):(z[0]=Q,z[1]=_,Me=!0):at===ke&&(U>Z?(z[0]=$,z[1]=_,Me=!0):(z[0]=J,z[1]=le,Me=!0)),-dt===ke?Z>U?(z[2]=R,z[3]=W,Ye=!0):(z[2]=V,z[3]=L,Ye=!0):dt===ke&&(Z>U?(z[2]=te,z[3]=L,Ye=!0):(z[2]=ce,z[3]=W,Ye=!0)),Me&&Ye)return!1;if(U>Z?P>D?(Ve=this.getCardinalDirection(at,ke,4),Ze=this.getCardinalDirection(dt,ke,2)):(Ve=this.getCardinalDirection(-at,ke,3),Ze=this.getCardinalDirection(-dt,ke,1)):P>D?(Ve=this.getCardinalDirection(-at,ke,1),Ze=this.getCardinalDirection(-dt,ke,3)):(Ve=this.getCardinalDirection(at,ke,2),Ze=this.getCardinalDirection(dt,ke,4)),!Me)switch(Ve){case 1:ht=_,nt=U+-Y/ke,z[0]=nt,z[1]=ht;break;case 2:nt=J,ht=P+j*ke,z[0]=nt,z[1]=ht;break;case 3:ht=le,nt=U+Y/ke,z[0]=nt,z[1]=ht;break;case 4:nt=ne,ht=P+-j*ke,z[0]=nt,z[1]=ht;break}if(!Ye)switch(Ze){case 1:tt=L,it=Z+-Oe/ke,z[2]=it,z[3]=tt;break;case 2:it=ce,tt=D+pe*ke,z[2]=it,z[3]=tt;break;case 3:tt=W,it=Z+Oe/ke,z[2]=it,z[3]=tt;break;case 4:it=R,tt=D+-pe*ke,z[2]=it,z[3]=tt;break}}return!1},T.getCardinalDirection=function(w,S,z){return w>S?z:1+z%4},T.getIntersection=function(w,S,z,U){if(U==null)return this.getIntersection2(w,S,z);var P=w.x,Z=w.y,D=S.x,$=S.y,_=z.x,Q=z.y,ne=U.x,le=U.y,J=void 0,j=void 0,Y=void 0,te=void 0,L=void 0,V=void 0,R=void 0,W=void 0,ce=void 0;return Y=$-Z,L=P-D,R=D*Z-P*$,te=le-Q,V=_-ne,W=ne*Q-_*le,ce=Y*V-te*L,ce===0?null:(J=(L*W-V*R)/ce,j=(te*R-Y*W)/ce,new N(J,j))},T.angleOfVector=function(w,S,z,U){var P=void 0;return w!==z?(P=Math.atan((U-S)/(z-w)),z0?1:T<0?-1:0},N.floor=function(T){return T<0?Math.ceil(T):Math.floor(T)},N.ceil=function(T){return T<0?Math.floor(T):Math.ceil(T)},ee.exports=N},function(ee,de,H){function N(){}N.MAX_VALUE=2147483647,N.MIN_VALUE=-2147483648,ee.exports=N},function(ee,de,H){var N=function(){function P(Z,D){for(var $=0;$"u"?"undefined":N(w);return w==null||S!="object"&&S!="function"},ee.exports=T},function(ee,de,H){function N(_){if(Array.isArray(_)){for(var Q=0,ne=Array(_.length);Q<_.length;Q++)ne[Q]=_[Q];return ne}else return Array.from(_)}var T=H(0),w=H(6),S=H(3),z=H(1),U=H(5),P=H(4),Z=H(17),D=H(27);function $(_){D.call(this),this.layoutQuality=T.QUALITY,this.createBendsAsNeeded=T.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=T.DEFAULT_INCREMENTAL,this.animationOnLayout=T.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=T.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=T.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=T.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new w(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,_!=null&&(this.isRemoteUse=_)}$.RANDOM_SEED=1,$.prototype=Object.create(D.prototype),$.prototype.getGraphManager=function(){return this.graphManager},$.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},$.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},$.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},$.prototype.newGraphManager=function(){var _=new w(this);return this.graphManager=_,_},$.prototype.newGraph=function(_){return new U(null,this.graphManager,_)},$.prototype.newNode=function(_){return new S(this.graphManager,_)},$.prototype.newEdge=function(_){return new z(null,null,_)},$.prototype.checkLayoutSuccess=function(){return this.graphManager.getRoot()==null||this.graphManager.getRoot().getNodes().length==0||this.graphManager.includesInvalidEdge()},$.prototype.runLayout=function(){this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters();var _;return this.checkLayoutSuccess()?_=!1:_=this.layout(),T.ANIMATE==="during"?!1:(_&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,_)},$.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},$.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var _=this.graphManager.getAllEdges(),Q=0;Q<_.length;Q++)_[Q];for(var ne=this.graphManager.getRoot().getNodes(),Q=0;Q0&&Q;){for(Y.push(L[0]);Y.length>0&&Q;){var V=Y[0];Y.splice(0,1),j.add(V);for(var R=V.getEdges(),J=0;J-1&&L.splice(Oe,1)}j=new Set,te=new Map}}return _},$.prototype.createDummyNodesForBendpoints=function(_){for(var Q=[],ne=_.source,le=this.graphManager.calcLowestCommonAncestor(_.source,_.target),J=0;J<_.bendpoints.length;J++){var j=this.newNode(null);j.setRect(new Point(0,0),new Dimension(1,1)),le.add(j);var Y=this.newEdge(null);this.graphManager.add(Y,ne,j),Q.add(j),ne=j}var Y=this.newEdge(null);return this.graphManager.add(Y,ne,_.target),this.edgeToDummyNodes.set(_,Q),_.isInterGraph()?this.graphManager.remove(_):le.remove(_),Q},$.prototype.createBendpointsFromDummyNodes=function(){var _=[];_=_.concat(this.graphManager.getAllEdges()),_=[].concat(N(this.edgeToDummyNodes.keys())).concat(_);for(var Q=0;Q<_.length;Q++){var ne=_[Q];if(ne.bendpoints.length>0){for(var le=this.edgeToDummyNodes.get(ne),J=0;J=0&&Q.splice(W,1);var ce=te.getNeighborsList();ce.forEach(function(Me){if(ne.indexOf(Me)<0){var Ye=le.get(Me),at=Ye-1;at==1&&V.push(Me),le.set(Me,at)}})}ne=ne.concat(V),(Q.length==1||Q.length==2)&&(J=!0,j=Q[0])}return j},$.prototype.setGraphManager=function(_){this.graphManager=_},ee.exports=$},function(ee,de,H){function N(){}N.seed=1,N.x=0,N.nextDouble=function(){return N.x=Math.sin(N.seed++)*1e4,N.x-Math.floor(N.x)},ee.exports=N},function(ee,de,H){var N=H(4);function T(w,S){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}T.prototype.getWorldOrgX=function(){return this.lworldOrgX},T.prototype.setWorldOrgX=function(w){this.lworldOrgX=w},T.prototype.getWorldOrgY=function(){return this.lworldOrgY},T.prototype.setWorldOrgY=function(w){this.lworldOrgY=w},T.prototype.getWorldExtX=function(){return this.lworldExtX},T.prototype.setWorldExtX=function(w){this.lworldExtX=w},T.prototype.getWorldExtY=function(){return this.lworldExtY},T.prototype.setWorldExtY=function(w){this.lworldExtY=w},T.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},T.prototype.setDeviceOrgX=function(w){this.ldeviceOrgX=w},T.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},T.prototype.setDeviceOrgY=function(w){this.ldeviceOrgY=w},T.prototype.getDeviceExtX=function(){return this.ldeviceExtX},T.prototype.setDeviceExtX=function(w){this.ldeviceExtX=w},T.prototype.getDeviceExtY=function(){return this.ldeviceExtY},T.prototype.setDeviceExtY=function(w){this.ldeviceExtY=w},T.prototype.transformX=function(w){var S=0,z=this.lworldExtX;return z!=0&&(S=this.ldeviceOrgX+(w-this.lworldOrgX)*this.ldeviceExtX/z),S},T.prototype.transformY=function(w){var S=0,z=this.lworldExtY;return z!=0&&(S=this.ldeviceOrgY+(w-this.lworldOrgY)*this.ldeviceExtY/z),S},T.prototype.inverseTransformX=function(w){var S=0,z=this.ldeviceExtX;return z!=0&&(S=this.lworldOrgX+(w-this.ldeviceOrgX)*this.lworldExtX/z),S},T.prototype.inverseTransformY=function(w){var S=0,z=this.ldeviceExtY;return z!=0&&(S=this.lworldOrgY+(w-this.ldeviceOrgY)*this.lworldExtY/z),S},T.prototype.inverseTransformPoint=function(w){var S=new N(this.inverseTransformX(w.x),this.inverseTransformY(w.y));return S},ee.exports=T},function(ee,de,H){function N(D){if(Array.isArray(D)){for(var $=0,_=Array(D.length);$w.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*w.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(D-w.ADAPTATION_LOWER_NODE_LIMIT)/(w.ADAPTATION_UPPER_NODE_LIMIT-w.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-w.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=w.MAX_NODE_DISPLACEMENT_INCREMENTAL):(D>w.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(w.COOLING_ADAPTATION_FACTOR,1-(D-w.ADAPTATION_LOWER_NODE_LIMIT)/(w.ADAPTATION_UPPER_NODE_LIMIT-w.ADAPTATION_LOWER_NODE_LIMIT)*(1-w.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=w.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},P.prototype.calcSpringForces=function(){for(var D=this.getAllEdges(),$,_=0;_0&&arguments[0]!==void 0?arguments[0]:!0,$=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,_,Q,ne,le,J=this.getAllNodes(),j;if(this.useFRGridVariant)for(this.totalIterations%w.GRID_CALCULATION_CHECK_PERIOD==1&&D&&this.updateGrid(),j=new Set,_=0;_Y||j>Y)&&(D.gravitationForceX=-this.gravityConstant*ne,D.gravitationForceY=-this.gravityConstant*le)):(Y=$.getEstimatedSize()*this.compoundGravityRangeFactor,(J>Y||j>Y)&&(D.gravitationForceX=-this.gravityConstant*ne*this.compoundGravityConstant,D.gravitationForceY=-this.gravityConstant*le*this.compoundGravityConstant))},P.prototype.isConverged=function(){var D,$=!1;return this.totalIterations>this.maxIterations/3&&($=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),D=this.totalDisplacement=J.length||Y>=J[0].length)){for(var te=0;teP}}]),z}();ee.exports=S},function(ee,de,H){var N=function(){function S(z,U){for(var P=0;P2&&arguments[2]!==void 0?arguments[2]:1,Z=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,D=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;T(this,S),this.sequence1=z,this.sequence2=U,this.match_score=P,this.mismatch_penalty=Z,this.gap_penalty=D,this.iMax=z.length+1,this.jMax=U.length+1,this.grid=new Array(this.iMax);for(var $=0;$=0;z--){var U=this.listeners[z];U.event===w&&U.callback===S&&this.listeners.splice(z,1)}},T.emit=function(w,S){for(var z=0;zU.coolingFactor*U.maxNodeDisplacement&&(this.displacementX=U.coolingFactor*U.maxNodeDisplacement*w.sign(this.displacementX)),Math.abs(this.displacementY)>U.coolingFactor*U.maxNodeDisplacement&&(this.displacementY=U.coolingFactor*U.maxNodeDisplacement*w.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),U.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},S.prototype.propogateDisplacementToChildren=function(U,P){for(var Z=this.getChild().getNodes(),D,$=0;$0)this.positionNodesRadially(L);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var V=new Set(this.getAllNodes()),R=this.nodesWithGravity.filter(function(W){return V.has(W)});this.graphManager.setAllNodesToApplyGravitation(R),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},Y.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%Z.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var L=new Set(this.getAllNodes()),V=this.nodesWithGravity.filter(function(ce){return L.has(ce)});this.graphManager.setAllNodesToApplyGravitation(V),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=Z.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=Z.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var R=!this.isTreeGrowing&&!this.isGrowthFinished,W=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(R,W),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},Y.prototype.getPositionsData=function(){for(var L=this.graphManager.getAllNodes(),V={},R=0;R1){var Me;for(Me=0;MeW&&(W=Math.floor(Oe.y)),pe=Math.floor(Oe.x+P.DEFAULT_COMPONENT_SEPERATION)}this.transform(new _(D.WORLD_CENTER_X-Oe.x/2,D.WORLD_CENTER_Y-Oe.y/2))},Y.radialLayout=function(L,V,R){var W=Math.max(this.maxDiagonalInTree(L),P.DEFAULT_RADIAL_SEPARATION);Y.branchRadialLayout(V,null,0,359,0,W);var ce=J.calculateBounds(L),pe=new j;pe.setDeviceOrgX(ce.getMinX()),pe.setDeviceOrgY(ce.getMinY()),pe.setWorldOrgX(R.x),pe.setWorldOrgY(R.y);for(var Oe=0;Oe1;){var tt=it[0];it.splice(0,1);var yt=ke.indexOf(tt);yt>=0&&ke.splice(yt,1),nt--,Ve--}V!=null?ht=(ke.indexOf(it[0])+1)%nt:ht=0;for(var wt=Math.abs(W-R)/Ve,Pt=ht;Ze!=Ve;Pt=++Pt%nt){var gt=ke[Pt].getOtherEnd(L);if(gt!=V){var dr=(R+Ze*wt)%360,Wt=(dr+wt)%360;Y.branchRadialLayout(gt,L,dr,Wt,ce+pe,pe),Ze++}}},Y.maxDiagonalInTree=function(L){for(var V=ne.MIN_VALUE,R=0;RV&&(V=ce)}return V},Y.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},Y.prototype.groupZeroDegreeMembers=function(){var L=this,V={};this.memberGroups={},this.idToDummyNode={};for(var R=[],W=this.graphManager.getAllNodes(),ce=0;ce"u"&&(V[Me]=[]),V[Me]=V[Me].concat(pe)}Object.keys(V).forEach(function(Ye){if(V[Ye].length>1){var at="DummyCompound_"+Ye;L.memberGroups[at]=V[Ye];var dt=V[Ye][0].getParent(),ke=new z(L.graphManager);ke.id=at,ke.paddingLeft=dt.paddingLeft||0,ke.paddingRight=dt.paddingRight||0,ke.paddingBottom=dt.paddingBottom||0,ke.paddingTop=dt.paddingTop||0,L.idToDummyNode[at]=ke;var Ve=L.getGraphManager().add(L.newGraph(),ke),Ze=dt.getChild();Ze.add(ke);for(var nt=0;nt=0;L--){var V=this.compoundOrder[L],R=V.id,W=V.paddingLeft,ce=V.paddingTop;this.adjustLocations(this.tiledMemberPack[R],V.rect.x,V.rect.y,W,ce)}},Y.prototype.repopulateZeroDegreeMembers=function(){var L=this,V=this.tiledZeroDegreePack;Object.keys(V).forEach(function(R){var W=L.idToDummyNode[R],ce=W.paddingLeft,pe=W.paddingTop;L.adjustLocations(V[R],W.rect.x,W.rect.y,ce,pe)})},Y.prototype.getToBeTiled=function(L){var V=L.id;if(this.toBeTiled[V]!=null)return this.toBeTiled[V];var R=L.getChild();if(R==null)return this.toBeTiled[V]=!1,!1;for(var W=R.getNodes(),ce=0;ce0)return this.toBeTiled[V]=!1,!1;if(pe.getChild()==null){this.toBeTiled[pe.id]=!1;continue}if(!this.getToBeTiled(pe))return this.toBeTiled[V]=!1,!1}return this.toBeTiled[V]=!0,!0},Y.prototype.getNodeDegree=function(L){L.id;for(var V=L.getEdges(),R=0,W=0;WYe&&(Ye=dt.rect.height)}R+=Ye+L.verticalPadding}},Y.prototype.tileCompoundMembers=function(L,V){var R=this;this.tiledMemberPack=[],Object.keys(L).forEach(function(W){var ce=V[W];R.tiledMemberPack[W]=R.tileNodes(L[W],ce.paddingLeft+ce.paddingRight),ce.rect.width=R.tiledMemberPack[W].width,ce.rect.height=R.tiledMemberPack[W].height})},Y.prototype.tileNodes=function(L,V){var R=P.TILING_PADDING_VERTICAL,W=P.TILING_PADDING_HORIZONTAL,ce={rows:[],rowWidth:[],rowHeight:[],width:0,height:V,verticalPadding:R,horizontalPadding:W};L.sort(function(Me,Ye){return Me.rect.width*Me.rect.height>Ye.rect.width*Ye.rect.height?-1:Me.rect.width*Me.rect.height0&&(Oe+=L.horizontalPadding),L.rowWidth[R]=Oe,L.width0&&(Me+=L.verticalPadding);var Ye=0;Me>L.rowHeight[R]&&(Ye=L.rowHeight[R],L.rowHeight[R]=Me,Ye=L.rowHeight[R]-Ye),L.height+=Ye,L.rows[R].push(V)},Y.prototype.getShortestRowIndex=function(L){for(var V=-1,R=Number.MAX_VALUE,W=0;WR&&(V=W,R=L.rowWidth[W]);return V},Y.prototype.canAddHorizontal=function(L,V,R){var W=this.getShortestRowIndex(L);if(W<0)return!0;var ce=L.rowWidth[W];if(ce+L.horizontalPadding+V<=L.width)return!0;var pe=0;L.rowHeight[W]0&&(pe=R+L.verticalPadding-L.rowHeight[W]);var Oe;L.width-ce>=V+L.horizontalPadding?Oe=(L.height+pe)/(ce+V+L.horizontalPadding):Oe=(L.height+pe)/L.width,pe=R+L.verticalPadding;var Me;return L.widthpe&&V!=R){W.splice(-1,1),L.rows[R].push(ce),L.rowWidth[V]=L.rowWidth[V]-pe,L.rowWidth[R]=L.rowWidth[R]+pe,L.width=L.rowWidth[instance.getLongestRowIndex(L)];for(var Oe=Number.MIN_VALUE,Me=0;MeOe&&(Oe=W[Me].height);V>0&&(Oe+=L.verticalPadding);var Ye=L.rowHeight[V]+L.rowHeight[R];L.rowHeight[V]=Oe,L.rowHeight[R]0)for(var Ze=ce;Ze<=pe;Ze++)Ve[0]+=this.grid[Ze][Oe-1].length+this.grid[Ze][Oe].length-1;if(pe0)for(var Ze=Oe;Ze<=Me;Ze++)Ve[3]+=this.grid[ce-1][Ze].length+this.grid[ce][Ze].length-1;for(var nt=ne.MAX_VALUE,ht,it,tt=0;tt0){var Me;Me=j.getGraphManager().add(j.newGraph(),R),this.processChildrenList(Me,V,j)}}},_.prototype.stop=function(){return this.stopped=!0,this};var ne=function(J){J("layout","cose-bilkent",_)};typeof cytoscape<"u"&&ne(cytoscape),de.exports=ne}])})})(ql);var Mp=ql.exports;const Ip=Yl(Mp);var ji=function(){var me=function(j,Y,te,L){for(te=te||{},L=j.length;L--;te[j[L]]=Y);return te},he=[1,4],ee=[1,13],de=[1,12],H=[1,15],N=[1,16],T=[1,20],w=[1,19],S=[6,7,8],z=[1,26],U=[1,24],P=[1,25],Z=[6,7,11],D=[1,6,13,15,16,19,22],$=[1,33],_=[1,34],Q=[1,6,7,11,13,15,16,19,22],ne={trace:function(){},yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:function(Y,te,L,V,R,W,ce){var pe=W.length-1;switch(R){case 6:case 7:return V;case 8:V.getLogger().trace("Stop NL ");break;case 9:V.getLogger().trace("Stop EOF ");break;case 11:V.getLogger().trace("Stop NL2 ");break;case 12:V.getLogger().trace("Stop EOF2 ");break;case 15:V.getLogger().info("Node: ",W[pe].id),V.addNode(W[pe-1].length,W[pe].id,W[pe].descr,W[pe].type);break;case 16:V.getLogger().trace("Icon: ",W[pe]),V.decorateNode({icon:W[pe]});break;case 17:case 21:V.decorateNode({class:W[pe]});break;case 18:V.getLogger().trace("SPACELIST");break;case 19:V.getLogger().trace("Node: ",W[pe].id),V.addNode(0,W[pe].id,W[pe].descr,W[pe].type);break;case 20:V.decorateNode({icon:W[pe]});break;case 25:V.getLogger().trace("node found ..",W[pe-2]),this.$={id:W[pe-1],descr:W[pe-1],type:V.getType(W[pe-2],W[pe])};break;case 26:this.$={id:W[pe],descr:W[pe],type:V.nodeType.DEFAULT};break;case 27:V.getLogger().trace("node found ..",W[pe-3]),this.$={id:W[pe-3],descr:W[pe-1],type:V.getType(W[pe-2],W[pe])};break}},table:[{3:1,4:2,5:3,6:[1,5],8:he},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:he},{6:ee,7:[1,10],9:9,12:11,13:de,14:14,15:H,16:N,17:17,18:18,19:T,22:w},me(S,[2,3]),{1:[2,2]},me(S,[2,4]),me(S,[2,5]),{1:[2,6],6:ee,12:21,13:de,14:14,15:H,16:N,17:17,18:18,19:T,22:w},{6:ee,9:22,12:11,13:de,14:14,15:H,16:N,17:17,18:18,19:T,22:w},{6:z,7:U,10:23,11:P},me(Z,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:T,22:w}),me(Z,[2,18]),me(Z,[2,19]),me(Z,[2,20]),me(Z,[2,21]),me(Z,[2,23]),me(Z,[2,24]),me(Z,[2,26],{19:[1,30]}),{20:[1,31]},{6:z,7:U,10:32,11:P},{1:[2,7],6:ee,12:21,13:de,14:14,15:H,16:N,17:17,18:18,19:T,22:w},me(D,[2,14],{7:$,11:_}),me(Q,[2,8]),me(Q,[2,9]),me(Q,[2,10]),me(Z,[2,15]),me(Z,[2,16]),me(Z,[2,17]),{20:[1,35]},{21:[1,36]},me(D,[2,13],{7:$,11:_}),me(Q,[2,11]),me(Q,[2,12]),{21:[1,37]},me(Z,[2,25]),me(Z,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(Y,te){if(te.recoverable)this.trace(Y);else{var L=new Error(Y);throw L.hash=te,L}},parse:function(Y){var te=this,L=[0],V=[],R=[null],W=[],ce=this.table,pe="",Oe=0,Me=0,Ye=2,at=1,dt=W.slice.call(arguments,1),ke=Object.create(this.lexer),Ve={yy:{}};for(var Ze in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ze)&&(Ve.yy[Ze]=this.yy[Ze]);ke.setInput(Y,Ve.yy),Ve.yy.lexer=ke,Ve.yy.parser=this,typeof ke.yylloc>"u"&&(ke.yylloc={});var nt=ke.yylloc;W.push(nt);var ht=ke.options&&ke.options.ranges;typeof Ve.yy.parseError=="function"?this.parseError=Ve.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function it(){var er;return er=V.pop()||ke.lex()||at,typeof er!="number"&&(er instanceof Array&&(V=er,er=V.pop()),er=te.symbols_[er]||er),er}for(var tt,yt,wt,Pt,gt={},dr,Wt,ln,Zr;;){if(yt=L[L.length-1],this.defaultActions[yt]?wt=this.defaultActions[yt]:((tt===null||typeof tt>"u")&&(tt=it()),wt=ce[yt]&&ce[yt][tt]),typeof wt>"u"||!wt.length||!wt[0]){var Sa="";Zr=[];for(dr in ce[yt])this.terminals_[dr]&&dr>Ye&&Zr.push("'"+this.terminals_[dr]+"'");ke.showPosition?Sa="Parse error on line "+(Oe+1)+`: `+ke.showPosition()+` -Expecting `+Zr.join(", ")+", got '"+(this.terminals_[tt]||tt)+"'":Sa="Parse error on line "+(Oe+1)+": Unexpected "+(tt==at?"end of input":"'"+(this.terminals_[tt]||tt)+"'"),this.parseError(Sa,{text:ke.match,token:this.terminals_[tt]||tt,line:ke.yylineno,loc:nt,expected:Zr})}if(wt[0]instanceof Array&&wt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+tt);switch(wt[0]){case 1:L.push(tt),R.push(ke.yytext),q.push(ke.yylloc),L.push(wt[1]),tt=null,Me=ke.yyleng,pe=ke.yytext,Oe=ke.yylineno,nt=ke.yylloc;break;case 2:if(qt=this.productions_[wt[1]][1],gt.$=R[R.length-qt],gt._$={first_line:q[q.length-(qt||1)].first_line,last_line:q[q.length-1].last_line,first_column:q[q.length-(qt||1)].first_column,last_column:q[q.length-1].last_column},ht&&(gt._$.range=[q[q.length-(qt||1)].range[0],q[q.length-1].range[1]]),Pt=this.performAction.apply(gt,[pe,Me,Oe,Ve.yy,wt[1],R,q].concat(dt)),typeof Pt<"u")return Pt;qt&&(L=L.slice(0,-1*qt*2),R=R.slice(0,-1*qt),q=q.slice(0,-1*qt)),L.push(this.productions_[wt[1]][0]),R.push(gt.$),q.push(gt._$),ln=ce[L[L.length-2]][L[L.length-1]],L.push(ln);break;case 3:return!0}}return!0}},le=function(){var j={EOF:1,parseError:function(te,L){if(this.yy.parser)this.yy.parser.parseError(te,L);else throw new Error(te)},setInput:function(Y,te){return this.yy=te||this.yy||{},this._input=Y,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Y=this._input[0];this.yytext+=Y,this.yyleng++,this.offset++,this.match+=Y,this.matched+=Y;var te=Y.match(/(?:\r\n?|\n).*/g);return te?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Y},unput:function(Y){var te=Y.length,L=Y.split(/(?:\r\n?|\n)/g);this._input=Y+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-te),this.offset-=te;var V=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),L.length-1&&(this.yylineno-=L.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:L?(L.length===V.length?this.yylloc.first_column:0)+V[V.length-L.length].length-L[0].length:this.yylloc.first_column-te},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-te]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +Expecting `+Zr.join(", ")+", got '"+(this.terminals_[tt]||tt)+"'":Sa="Parse error on line "+(Oe+1)+": Unexpected "+(tt==at?"end of input":"'"+(this.terminals_[tt]||tt)+"'"),this.parseError(Sa,{text:ke.match,token:this.terminals_[tt]||tt,line:ke.yylineno,loc:nt,expected:Zr})}if(wt[0]instanceof Array&&wt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+tt);switch(wt[0]){case 1:L.push(tt),R.push(ke.yytext),W.push(ke.yylloc),L.push(wt[1]),tt=null,Me=ke.yyleng,pe=ke.yytext,Oe=ke.yylineno,nt=ke.yylloc;break;case 2:if(Wt=this.productions_[wt[1]][1],gt.$=R[R.length-Wt],gt._$={first_line:W[W.length-(Wt||1)].first_line,last_line:W[W.length-1].last_line,first_column:W[W.length-(Wt||1)].first_column,last_column:W[W.length-1].last_column},ht&&(gt._$.range=[W[W.length-(Wt||1)].range[0],W[W.length-1].range[1]]),Pt=this.performAction.apply(gt,[pe,Me,Oe,Ve.yy,wt[1],R,W].concat(dt)),typeof Pt<"u")return Pt;Wt&&(L=L.slice(0,-1*Wt*2),R=R.slice(0,-1*Wt),W=W.slice(0,-1*Wt)),L.push(this.productions_[wt[1]][0]),R.push(gt.$),W.push(gt._$),ln=ce[L[L.length-2]][L[L.length-1]],L.push(ln);break;case 3:return!0}}return!0}},le=function(){var j={EOF:1,parseError:function(te,L){if(this.yy.parser)this.yy.parser.parseError(te,L);else throw new Error(te)},setInput:function(Y,te){return this.yy=te||this.yy||{},this._input=Y,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Y=this._input[0];this.yytext+=Y,this.yyleng++,this.offset++,this.match+=Y,this.matched+=Y;var te=Y.match(/(?:\r\n?|\n).*/g);return te?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Y},unput:function(Y){var te=Y.length,L=Y.split(/(?:\r\n?|\n)/g);this._input=Y+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-te),this.offset-=te;var V=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),L.length-1&&(this.yylineno-=L.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:L?(L.length===V.length?this.yylloc.first_column:0)+V[V.length-L.length].length-L[0].length:this.yylloc.first_column-te},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-te]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(Y){this.unput(this.match.slice(Y))},pastInput:function(){var Y=this.matched.substr(0,this.matched.length-this.match.length);return(Y.length>20?"...":"")+Y.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Y=this.match;return Y.length<20&&(Y+=this._input.substr(0,20-Y.length)),(Y.substr(0,20)+(Y.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Y=this.pastInput(),te=new Array(Y.length+1).join("-");return Y+this.upcomingInput()+` -`+te+"^"},test_match:function(Y,te){var L,V,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),V=Y[0].match(/(?:\r\n?|\n).*/g),V&&(this.yylineno+=V.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:V?V[V.length-1].length-V[V.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Y[0].length},this.yytext+=Y[0],this.match+=Y[0],this.matches=Y,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Y[0].length),this.matched+=Y[0],L=this.performAction.call(this,this.yy,this,te,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),L)return L;if(this._backtrack){for(var q in R)this[q]=R[q];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Y,te,L,V;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),q=0;qte[0].length)){if(te=L,V=q,this.options.backtrack_lexer){if(Y=this.test_match(L,R[q]),Y!==!1)return Y;if(this._backtrack){te=!1;continue}else return!1}else if(!this.options.flex)break}return te?(Y=this.test_match(te,R[V]),Y!==!1?Y:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var te=this.next();return te||this.lex()},begin:function(te){this.conditionStack.push(te)},popState:function(){var te=this.conditionStack.length-1;return te>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(te){return te=this.conditionStack.length-1-Math.abs(te||0),te>=0?this.conditionStack[te]:"INITIAL"},pushState:function(te){this.begin(te)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(te,L,V,R){switch(V){case 0:return te.getLogger().trace("Found comment",L.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:this.popState();break;case 5:te.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return te.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:te.getLogger().trace("end icon"),this.popState();break;case 10:return te.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return te.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return te.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return te.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:return this.begin("NODE"),19;case 15:return this.begin("NODE"),19;case 16:return this.begin("NODE"),19;case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:te.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return te.getLogger().trace("description:",L.yytext),"NODE_DESCR";case 26:this.popState();break;case 27:return this.popState(),te.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),te.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),te.getLogger().trace("node end ...",L.yytext),"NODE_DEND";case 30:return this.popState(),te.getLogger().trace("node end (("),"NODE_DEND";case 31:return this.popState(),te.getLogger().trace("node end (-"),"NODE_DEND";case 32:return this.popState(),te.getLogger().trace("node end (-"),"NODE_DEND";case 33:return this.popState(),te.getLogger().trace("node end (("),"NODE_DEND";case 34:return this.popState(),te.getLogger().trace("node end (("),"NODE_DEND";case 35:return te.getLogger().trace("Long description:",L.yytext),20;case 36:return te.getLogger().trace("Long description:",L.yytext),20}},rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return j}();ae.lexer=le;function J(){this.yy={}}return J.prototype=ae,ae.Parser=J,new J}();Ji.parser=Ji;const Rp=Ji,on=be=>xp(be,sn());let jt=[],Wl=0,ji={};const kp=()=>{jt=[],Wl=0,ji={}},Pp=function(be){for(let he=jt.length-1;he>=0;he--)if(jt[he].leveljt.length>0?jt[0]:null,Fp=(be,he,ee,ge)=>{qr.info("addNode",be,he,ee,ge);const H=sn(),N={id:Wl++,nodeId:on(he),level:be,descr:on(ee),type:ge,children:[],width:sn().mindmap.maxNodeWidth};switch(N.type){case mt.ROUNDED_RECT:N.padding=2*H.mindmap.padding;break;case mt.RECT:N.padding=2*H.mindmap.padding;break;case mt.HEXAGON:N.padding=2*H.mindmap.padding;break;default:N.padding=H.mindmap.padding}const T=Pp(be);if(T)T.children.push(N),jt.push(N);else if(jt.length===0)jt.push(N);else{let w=new Error('There can be only one root. No parent could be found for ("'+N.descr+'")');throw w.hash={text:"branch "+name,token:"branch "+name,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+name+'"']},w}},mt={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Gp=(be,he)=>{switch(qr.debug("In get type",be,he),be){case"[":return mt.RECT;case"(":return he===")"?mt.ROUNDED_RECT:mt.CLOUD;case"((":return mt.CIRCLE;case")":return mt.CLOUD;case"))":return mt.BANG;case"{{":return mt.HEXAGON;default:return mt.DEFAULT}},ql=(be,he)=>{ji[be]=he},zp=be=>{const he=jt[jt.length-1];be&&be.icon&&(he.icon=on(be.icon)),be&&be.class&&(he.class=on(be.class))},Kr=be=>{switch(be){case mt.DEFAULT:return"no-border";case mt.RECT:return"rect";case mt.ROUNDED_RECT:return"rounded-rect";case mt.CIRCLE:return"circle";case mt.CLOUD:return"cloud";case mt.BANG:return"bang";case mt.HEXAGON:return"hexgon";default:return"no-border"}};let Kl;const Vp=be=>{Kl=be},$p=()=>qr,_p=be=>jt[be],es=be=>ji[be],Up=Object.freeze(Object.defineProperty({__proto__:null,addNode:Fp,clear:kp,decorateNode:zp,getElementById:es,getLogger:$p,getMindmap:Bp,getNodeById:_p,getType:Gp,nodeType:mt,get parseError(){return Kl},sanitizeText:on,setElementForId:ql,setErrorHandler:Vp,type2Str:Kr},Symbol.toStringTag,{value:"Module"})),Zl=12,Yp=function(be,he,ee){be.append("path").attr("id","node-"+he.id).attr("class","node-bkg node-"+Kr(he.type)).attr("d",`M0 ${he.height-5} v${-he.height+2*5} q0,-5 5,-5 h${he.width-2*5} q5,0 5,5 v${he.height-5} H0 Z`),be.append("line").attr("class","node-line-"+ee).attr("x1",0).attr("y1",he.height).attr("x2",he.width).attr("y2",he.height)},Hp=function(be,he){be.append("rect").attr("id","node-"+he.id).attr("class","node-bkg node-"+Kr(he.type)).attr("height",he.height).attr("width",he.width)},Xp=function(be,he){const ee=he.width,ge=he.height,H=.15*ee,N=.25*ee,T=.35*ee,w=.2*ee;be.append("path").attr("id","node-"+he.id).attr("class","node-bkg node-"+Kr(he.type)).attr("d",`M0 0 a${H},${H} 0 0,1 ${ee*.25},${-1*ee*.1} +`+te+"^"},test_match:function(Y,te){var L,V,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),V=Y[0].match(/(?:\r\n?|\n).*/g),V&&(this.yylineno+=V.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:V?V[V.length-1].length-V[V.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Y[0].length},this.yytext+=Y[0],this.match+=Y[0],this.matches=Y,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Y[0].length),this.matched+=Y[0],L=this.performAction.call(this,this.yy,this,te,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),L)return L;if(this._backtrack){for(var W in R)this[W]=R[W];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Y,te,L,V;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),W=0;Wte[0].length)){if(te=L,V=W,this.options.backtrack_lexer){if(Y=this.test_match(L,R[W]),Y!==!1)return Y;if(this._backtrack){te=!1;continue}else return!1}else if(!this.options.flex)break}return te?(Y=this.test_match(te,R[V]),Y!==!1?Y:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var te=this.next();return te||this.lex()},begin:function(te){this.conditionStack.push(te)},popState:function(){var te=this.conditionStack.length-1;return te>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(te){return te=this.conditionStack.length-1-Math.abs(te||0),te>=0?this.conditionStack[te]:"INITIAL"},pushState:function(te){this.begin(te)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(te,L,V,R){switch(V){case 0:return te.getLogger().trace("Found comment",L.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:this.popState();break;case 5:te.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return te.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:te.getLogger().trace("end icon"),this.popState();break;case 10:return te.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return te.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return te.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return te.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:return this.begin("NODE"),19;case 15:return this.begin("NODE"),19;case 16:return this.begin("NODE"),19;case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:te.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return te.getLogger().trace("description:",L.yytext),"NODE_DESCR";case 26:this.popState();break;case 27:return this.popState(),te.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),te.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),te.getLogger().trace("node end ...",L.yytext),"NODE_DEND";case 30:return this.popState(),te.getLogger().trace("node end (("),"NODE_DEND";case 31:return this.popState(),te.getLogger().trace("node end (-"),"NODE_DEND";case 32:return this.popState(),te.getLogger().trace("node end (-"),"NODE_DEND";case 33:return this.popState(),te.getLogger().trace("node end (("),"NODE_DEND";case 34:return this.popState(),te.getLogger().trace("node end (("),"NODE_DEND";case 35:return te.getLogger().trace("Long description:",L.yytext),20;case 36:return te.getLogger().trace("Long description:",L.yytext),20}},rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return j}();ne.lexer=le;function J(){this.yy={}}return J.prototype=ne,ne.Parser=J,new J}();ji.parser=ji;const Rp=ji,on=me=>xp(me,sn());let jt=[],Wl=0,es={};const kp=()=>{jt=[],Wl=0,es={}},Pp=function(me){for(let he=jt.length-1;he>=0;he--)if(jt[he].leveljt.length>0?jt[0]:null,Fp=(me,he,ee,de)=>{Wr.info("addNode",me,he,ee,de);const H=sn(),N={id:Wl++,nodeId:on(he),level:me,descr:on(ee),type:de,children:[],width:sn().mindmap.maxNodeWidth};switch(N.type){case mt.ROUNDED_RECT:N.padding=2*H.mindmap.padding;break;case mt.RECT:N.padding=2*H.mindmap.padding;break;case mt.HEXAGON:N.padding=2*H.mindmap.padding;break;default:N.padding=H.mindmap.padding}const T=Pp(me);if(T)T.children.push(N),jt.push(N);else if(jt.length===0)jt.push(N);else{let w=new Error('There can be only one root. No parent could be found for ("'+N.descr+'")');throw w.hash={text:"branch "+name,token:"branch "+name,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+name+'"']},w}},mt={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Gp=(me,he)=>{switch(Wr.debug("In get type",me,he),me){case"[":return mt.RECT;case"(":return he===")"?mt.ROUNDED_RECT:mt.CLOUD;case"((":return mt.CIRCLE;case")":return mt.CLOUD;case"))":return mt.BANG;case"{{":return mt.HEXAGON;default:return mt.DEFAULT}},Kl=(me,he)=>{es[me]=he},zp=me=>{const he=jt[jt.length-1];me&&me.icon&&(he.icon=on(me.icon)),me&&me.class&&(he.class=on(me.class))},Kr=me=>{switch(me){case mt.DEFAULT:return"no-border";case mt.RECT:return"rect";case mt.ROUNDED_RECT:return"rounded-rect";case mt.CIRCLE:return"circle";case mt.CLOUD:return"cloud";case mt.BANG:return"bang";case mt.HEXAGON:return"hexgon";default:return"no-border"}};let Zl;const Vp=me=>{Zl=me},$p=()=>Wr,_p=me=>jt[me],ts=me=>es[me],Up=Object.freeze(Object.defineProperty({__proto__:null,addNode:Fp,clear:kp,decorateNode:zp,getElementById:ts,getLogger:$p,getMindmap:Bp,getNodeById:_p,getType:Gp,nodeType:mt,get parseError(){return Zl},sanitizeText:on,setElementForId:Kl,setErrorHandler:Vp,type2Str:Kr},Symbol.toStringTag,{value:"Module"})),Ql=12,Yp=function(me,he,ee){me.append("path").attr("id","node-"+he.id).attr("class","node-bkg node-"+Kr(he.type)).attr("d",`M0 ${he.height-5} v${-he.height+2*5} q0,-5 5,-5 h${he.width-2*5} q5,0 5,5 v${he.height-5} H0 Z`),me.append("line").attr("class","node-line-"+ee).attr("x1",0).attr("y1",he.height).attr("x2",he.width).attr("y2",he.height)},Hp=function(me,he){me.append("rect").attr("id","node-"+he.id).attr("class","node-bkg node-"+Kr(he.type)).attr("height",he.height).attr("width",he.width)},Xp=function(me,he){const ee=he.width,de=he.height,H=.15*ee,N=.25*ee,T=.35*ee,w=.2*ee;me.append("path").attr("id","node-"+he.id).attr("class","node-bkg node-"+Kr(he.type)).attr("d",`M0 0 a${H},${H} 0 0,1 ${ee*.25},${-1*ee*.1} a${T},${T} 1 0,1 ${ee*.4},${-1*ee*.1} a${N},${N} 1 0,1 ${ee*.35},${1*ee*.2} - a${H},${H} 1 0,1 ${ee*.15},${1*ge*.35} - a${w},${w} 1 0,1 ${-1*ee*.15},${1*ge*.65} + a${H},${H} 1 0,1 ${ee*.15},${1*de*.35} + a${w},${w} 1 0,1 ${-1*ee*.15},${1*de*.65} a${N},${H} 1 0,1 ${-1*ee*.25},${ee*.15} a${T},${T} 1 0,1 ${-1*ee*.5},0 a${H},${H} 1 0,1 ${-1*ee*.25},${-1*ee*.15} - a${H},${H} 1 0,1 ${-1*ee*.1},${-1*ge*.35} - a${w},${w} 1 0,1 ${ee*.1},${-1*ge*.65} + a${H},${H} 1 0,1 ${-1*ee*.1},${-1*de*.35} + a${w},${w} 1 0,1 ${ee*.1},${-1*de*.65} - H0 V0 Z`)},Wp=function(be,he){const ee=he.width,ge=he.height,H=.15*ee;be.append("path").attr("id","node-"+he.id).attr("class","node-bkg node-"+Kr(he.type)).attr("d",`M0 0 a${H},${H} 1 0,0 ${ee*.25},${-1*ge*.1} + H0 V0 Z`)},qp=function(me,he){const ee=he.width,de=he.height,H=.15*ee;me.append("path").attr("id","node-"+he.id).attr("class","node-bkg node-"+Kr(he.type)).attr("d",`M0 0 a${H},${H} 1 0,0 ${ee*.25},${-1*de*.1} a${H},${H} 1 0,0 ${ee*.25},0 a${H},${H} 1 0,0 ${ee*.25},0 - a${H},${H} 1 0,0 ${ee*.25},${1*ge*.1} + a${H},${H} 1 0,0 ${ee*.25},${1*de*.1} - a${H},${H} 1 0,0 ${ee*.15},${1*ge*.33} - a${H*.8},${H*.8} 1 0,0 0,${1*ge*.34} - a${H},${H} 1 0,0 ${-1*ee*.15},${1*ge*.33} + a${H},${H} 1 0,0 ${ee*.15},${1*de*.33} + a${H*.8},${H*.8} 1 0,0 0,${1*de*.34} + a${H},${H} 1 0,0 ${-1*ee*.15},${1*de*.33} - a${H},${H} 1 0,0 ${-1*ee*.25},${ge*.15} + a${H},${H} 1 0,0 ${-1*ee*.25},${de*.15} a${H},${H} 1 0,0 ${-1*ee*.25},0 a${H},${H} 1 0,0 ${-1*ee*.25},0 - a${H},${H} 1 0,0 ${-1*ee*.25},${-1*ge*.15} + a${H},${H} 1 0,0 ${-1*ee*.25},${-1*de*.15} - a${H},${H} 1 0,0 ${-1*ee*.1},${-1*ge*.33} - a${H*.8},${H*.8} 1 0,0 0,${-1*ge*.34} - a${H},${H} 1 0,0 ${ee*.1},${-1*ge*.33} + a${H},${H} 1 0,0 ${-1*ee*.1},${-1*de*.33} + a${H*.8},${H*.8} 1 0,0 0,${-1*de*.34} + a${H},${H} 1 0,0 ${ee*.1},${-1*de*.33} - H0 V0 Z`)},qp=function(be,he){be.append("circle").attr("id","node-"+he.id).attr("class","node-bkg node-"+Kr(he.type)).attr("r",he.width/2)};function Kp(be,he,ee,ge,H){return be.insert("polygon",":first-child").attr("points",ge.map(function(N){return N.x+","+N.y}).join(" ")).attr("transform","translate("+(H.width-he)/2+", "+ee+")")}const Zp=function(be,he){const ee=he.height,H=ee/4,N=he.width-he.padding+2*H,T=[{x:H,y:0},{x:N-H,y:0},{x:N,y:-ee/2},{x:N-H,y:-ee},{x:H,y:-ee},{x:0,y:-ee/2}];Kp(be,N,ee,T,he)},Qp=function(be,he){be.append("rect").attr("id","node-"+he.id).attr("class","node-bkg node-"+Kr(he.type)).attr("height",he.height).attr("rx",he.padding).attr("ry",he.padding).attr("width",he.width)},Jp=function(be,he,ee,ge){const H=ge.htmlLabels,N=ee%(Zl-1),T=be.append("g");he.section=N;let w="section-"+N;N<0&&(w+=" section-root"),T.attr("class",(he.class?he.class+" ":"")+"mindmap-node "+w);const S=T.append("g"),z=T.append("g"),U=he.descr.replace(/()/g,` -`);Lp(z,U,{useHtmlLabels:H,width:he.width,classes:"mindmap-node-label"}),H||z.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const P=z.node().getBBox(),Z=ge.fontSize.replace?ge.fontSize.replace("px",""):ge.fontSize;if(he.height=P.height+Z*1.1*.5+he.padding,he.width=P.width+2*he.padding,he.icon)if(he.type===mt.CIRCLE)he.height+=50,he.width+=50,T.append("foreignObject").attr("height","50px").attr("width",he.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+N+" "+he.icon),z.attr("transform","translate("+he.width/2+", "+(he.height/2-1.5*he.padding)+")");else{he.width+=50;const D=he.height;he.height=Math.max(D,60);const $=Math.abs(he.height-D);T.append("foreignObject").attr("width","60px").attr("height",he.height).attr("style","text-align: center;margin-top:"+$/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+N+" "+he.icon),z.attr("transform","translate("+(25+he.width/2)+", "+($/2+he.padding/2)+")")}else if(H){const D=(he.width-P.width)/2,$=(he.height-P.height)/2;z.attr("transform","translate("+D+", "+$+")")}else{const D=he.width/2,$=he.padding/2;z.attr("transform","translate("+D+", "+$+")")}switch(he.type){case mt.DEFAULT:Yp(S,he,N);break;case mt.ROUNDED_RECT:Qp(S,he);break;case mt.RECT:Hp(S,he);break;case mt.CIRCLE:S.attr("transform","translate("+he.width/2+", "+ +he.height/2+")"),qp(S,he);break;case mt.CLOUD:Xp(S,he);break;case mt.BANG:Wp(S,he);break;case mt.HEXAGON:Zp(S,he);break}return ql(he.id,T),he.height},jp=function(he,ee,ge,H,N){const T=N%(Zl-1),w=ge.x+ge.width/2,S=ge.y+ge.height/2,z=ee.x+ee.width/2,U=ee.y+ee.height/2,P=z>w?w+Math.abs(w-z)/2:w-Math.abs(w-z)/2,Z=U>S?S+Math.abs(S-U)/2:S-Math.abs(S-U)/2,D=z>w?Math.abs(w-P)/2+w:-Math.abs(w-P)/2+w,$=U>S?Math.abs(S-Z)/2+S:-Math.abs(S-Z)/2+S;he.append("path").attr("d",ge.direction==="TB"||ge.direction==="BT"?`M${w},${S} Q${w},${$} ${P},${Z} T${z},${U}`:`M${w},${S} Q${D},${S} ${P},${Z} T${z},${U}`).attr("class","edge section-edge-"+T+" edge-depth-"+H)},ey=function(be){const he=es(be.id),ee=be.x||0,ge=be.y||0;he.attr("transform","translate("+ee+","+ge+")")},Ql={drawNode:Jp,positionNode:ey,drawEdge:jp};Hl.use(Ip);function Jl(be,he,ee,ge){Ql.drawNode(be,he,ee,ge),he.children&&he.children.forEach((H,N)=>{Jl(be,H,ee<0?N:ee,ge)})}function ty(be,he){he.edges().map((ee,ge)=>{const H=ee.data();if(ee[0]._private.bodyBounds){const N=ee[0]._private.rscratch;qr.trace("Edge: ",ge,H),be.insert("path").attr("d",`M ${N.startX},${N.startY} L ${N.midX},${N.midY} L${N.endX},${N.endY} `).attr("class","edge section-edge-"+H.section+" edge-depth-"+H.depth)}})}function jl(be,he,ee,ge){he.add({group:"nodes",data:{id:be.id,labelText:be.descr,height:be.height,width:be.width,level:ge,nodeId:be.id,padding:be.padding,type:be.type},position:{x:be.x,y:be.y}}),be.children&&be.children.forEach(H=>{jl(H,he,ee,ge+1),he.add({group:"edges",data:{id:`${be.id}_${H.id}`,source:be.id,target:H.id,depth:ge,section:H.section}})})}function ry(be,he){return new Promise(ee=>{const ge=ni("body").append("div").attr("id","cy").attr("style","display:none"),H=Hl({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});ge.remove(),jl(be,H,he,0),H.nodes().forEach(function(N){N.layoutDimensions=()=>{const T=N.data();return{w:T.width,h:T.height}}}),H.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),H.ready(N=>{qr.info("Ready",N),ee(H)})})}function ay(be){be.nodes().map((he,ee)=>{const ge=he.data();ge.x=he.position().x,ge.y=he.position().y,Ql.positionNode(ge);const H=es(ge.nodeId);qr.info("Id:",ee,"Position: (",he.position().x,", ",he.position().y,")",ge),H.attr("transform",`translate(${he.position().x-ge.width/2}, ${he.position().y-ge.height/2})`),H.attr("attr",`apa-${ee})`)})}const ny=async(be,he,ee,ge)=>{const H=sn();H.htmlLabels=!1,qr.debug(`Rendering mindmap diagram -`+be,ge.parser);const N=sn().securityLevel;let T;N==="sandbox"&&(T=ni("#i"+he));const S=(N==="sandbox"?ni(T.nodes()[0].contentDocument.body):ni("body")).select("#"+he);S.append("g");const z=ge.db.getMindmap(),U=S.append("g");U.attr("class","mindmap-edges");const P=S.append("g");P.attr("class","mindmap-nodes"),Jl(P,z,-1,H);const Z=await ry(z,H);ty(U,Z),ay(Z),Tp(void 0,S,H.mindmap.padding,H.mindmap.useMaxWidth)},iy={draw:ny},sy=be=>{let he="";for(let ee=0;ee)/g,` +`);Lp(z,U,{useHtmlLabels:H,width:he.width,classes:"mindmap-node-label"}),H||z.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const P=z.node().getBBox(),Z=de.fontSize.replace?de.fontSize.replace("px",""):de.fontSize;if(he.height=P.height+Z*1.1*.5+he.padding,he.width=P.width+2*he.padding,he.icon)if(he.type===mt.CIRCLE)he.height+=50,he.width+=50,T.append("foreignObject").attr("height","50px").attr("width",he.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+N+" "+he.icon),z.attr("transform","translate("+he.width/2+", "+(he.height/2-1.5*he.padding)+")");else{he.width+=50;const D=he.height;he.height=Math.max(D,60);const $=Math.abs(he.height-D);T.append("foreignObject").attr("width","60px").attr("height",he.height).attr("style","text-align: center;margin-top:"+$/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+N+" "+he.icon),z.attr("transform","translate("+(25+he.width/2)+", "+($/2+he.padding/2)+")")}else if(H){const D=(he.width-P.width)/2,$=(he.height-P.height)/2;z.attr("transform","translate("+D+", "+$+")")}else{const D=he.width/2,$=he.padding/2;z.attr("transform","translate("+D+", "+$+")")}switch(he.type){case mt.DEFAULT:Yp(S,he,N);break;case mt.ROUNDED_RECT:Qp(S,he);break;case mt.RECT:Hp(S,he);break;case mt.CIRCLE:S.attr("transform","translate("+he.width/2+", "+ +he.height/2+")"),Wp(S,he);break;case mt.CLOUD:Xp(S,he);break;case mt.BANG:qp(S,he);break;case mt.HEXAGON:Zp(S,he);break}return Kl(he.id,T),he.height},jp=function(he,ee,de,H,N){const T=N%(Ql-1),w=de.x+de.width/2,S=de.y+de.height/2,z=ee.x+ee.width/2,U=ee.y+ee.height/2,P=z>w?w+Math.abs(w-z)/2:w-Math.abs(w-z)/2,Z=U>S?S+Math.abs(S-U)/2:S-Math.abs(S-U)/2,D=z>w?Math.abs(w-P)/2+w:-Math.abs(w-P)/2+w,$=U>S?Math.abs(S-Z)/2+S:-Math.abs(S-Z)/2+S;he.append("path").attr("d",de.direction==="TB"||de.direction==="BT"?`M${w},${S} Q${w},${$} ${P},${Z} T${z},${U}`:`M${w},${S} Q${D},${S} ${P},${Z} T${z},${U}`).attr("class","edge section-edge-"+T+" edge-depth-"+H)},ey=function(me){const he=ts(me.id),ee=me.x||0,de=me.y||0;he.attr("transform","translate("+ee+","+de+")")},Jl={drawNode:Jp,positionNode:ey,drawEdge:jp};Xl.use(Ip);function jl(me,he,ee,de){Jl.drawNode(me,he,ee,de),he.children&&he.children.forEach((H,N)=>{jl(me,H,ee<0?N:ee,de)})}function ty(me,he){he.edges().map((ee,de)=>{const H=ee.data();if(ee[0]._private.bodyBounds){const N=ee[0]._private.rscratch;Wr.trace("Edge: ",de,H),me.insert("path").attr("d",`M ${N.startX},${N.startY} L ${N.midX},${N.midY} L${N.endX},${N.endY} `).attr("class","edge section-edge-"+H.section+" edge-depth-"+H.depth)}})}function eu(me,he,ee,de){he.add({group:"nodes",data:{id:me.id,labelText:me.descr,height:me.height,width:me.width,level:de,nodeId:me.id,padding:me.padding,type:me.type},position:{x:me.x,y:me.y}}),me.children&&me.children.forEach(H=>{eu(H,he,ee,de+1),he.add({group:"edges",data:{id:`${me.id}_${H.id}`,source:me.id,target:H.id,depth:de,section:H.section}})})}function ry(me,he){return new Promise(ee=>{const de=ni("body").append("div").attr("id","cy").attr("style","display:none"),H=Xl({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});de.remove(),eu(me,H,he,0),H.nodes().forEach(function(N){N.layoutDimensions=()=>{const T=N.data();return{w:T.width,h:T.height}}}),H.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),H.ready(N=>{Wr.info("Ready",N),ee(H)})})}function ay(me){me.nodes().map((he,ee)=>{const de=he.data();de.x=he.position().x,de.y=he.position().y,Jl.positionNode(de);const H=ts(de.nodeId);Wr.info("Id:",ee,"Position: (",he.position().x,", ",he.position().y,")",de),H.attr("transform",`translate(${he.position().x-de.width/2}, ${he.position().y-de.height/2})`),H.attr("attr",`apa-${ee})`)})}const ny=async(me,he,ee,de)=>{const H=sn();H.htmlLabels=!1,Wr.debug(`Rendering mindmap diagram +`+me,de.parser);const N=sn().securityLevel;let T;N==="sandbox"&&(T=ni("#i"+he));const S=(N==="sandbox"?ni(T.nodes()[0].contentDocument.body):ni("body")).select("#"+he);S.append("g");const z=de.db.getMindmap(),U=S.append("g");U.attr("class","mindmap-edges");const P=S.append("g");P.attr("class","mindmap-nodes"),jl(P,z,-1,H);const Z=await ry(z,H);ty(U,Z),ay(Z),Tp(void 0,S,H.mindmap.padding,H.mindmap.useMaxWidth)},iy={draw:ny},sy=me=>{let he="";for(let ee=0;ee Why is private chat not recommended
                  1. Private chat on QQ is difficult to trace and organize, making it hard to form documentation. There are often repetitive questions, which do not benefit the project.

                  2. The efficiency of communication on QQ is actually quite low. Although it allows for timely responses, the threshold for asking questions is too low. Questioners often need the respondent's progressive guidance to clarify their questions, which wastes a lot of time.

                  3. Private chat messages on QQ are not timely and often interrupt the respondent's current work process. In contrast, GitHub issues can be handled in a unified manner, saving more time.

                  4. Other users cannot participate in answering questions through private chat on QQ, and others cannot see the questions and answers. This is not conducive to divergent thinking and knowledge dissemination.

                  Private chat for technical consultations is generally only accepted from the following individuals with selfless friendship relationships:

                  1. Those who have submitted pull requests or other forms of code contributions.
                  2. Those who have open-sourced projects based on ZLMediaKit.
                  3. Those who have actively answered related technical questions in QQ groups or issues.
                  4. Those who have shared self-written ZLMediaKit-related documents.
                  5. Those who have sponsored the ZLMediaKit project or the author.
                  6. Those who have made any contributions to the development and promotion of ZLMediaKit.
                  ',4),a=[s];function r(h,l){return i(),t("div",null,a)}const p=e(n,[["render",r],["__file","not_recommended_qq.html.vue"]]);export{p as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as i,c as t,e as o}from"./app-0NopiYEV.js";const n={},s=o('
                  1. Private chat on QQ is difficult to trace and organize, making it hard to form documentation. There are often repetitive questions, which do not benefit the project.

                  2. The efficiency of communication on QQ is actually quite low. Although it allows for timely responses, the threshold for asking questions is too low. Questioners often need the respondent's progressive guidance to clarify their questions, which wastes a lot of time.

                  3. Private chat messages on QQ are not timely and often interrupt the respondent's current work process. In contrast, GitHub issues can be handled in a unified manner, saving more time.

                  4. Other users cannot participate in answering questions through private chat on QQ, and others cannot see the questions and answers. This is not conducive to divergent thinking and knowledge dissemination.

                  Private chat for technical consultations is generally only accepted from the following individuals with selfless friendship relationships:

                  1. Those who have submitted pull requests or other forms of code contributions.
                  2. Those who have open-sourced projects based on ZLMediaKit.
                  3. Those who have actively answered related technical questions in QQ groups or issues.
                  4. Those who have shared self-written ZLMediaKit-related documents.
                  5. Those who have sponsored the ZLMediaKit project or the author.
                  6. Those who have made any contributions to the development and promotion of ZLMediaKit.
                  ',4),a=[s];function r(h,l){return i(),t("div",null,a)}const p=e(n,[["render",r],["__file","not_recommended_qq.html.vue"]]);export{p as default}; diff --git a/assets/not_recommended_qq.html-xL5JJUt8.js b/assets/not_recommended_qq.html-sTyZQjjb.js similarity index 96% rename from assets/not_recommended_qq.html-xL5JJUt8.js rename to assets/not_recommended_qq.html-sTyZQjjb.js index 5512616..fdc5ba2 100644 --- a/assets/not_recommended_qq.html-xL5JJUt8.js +++ b/assets/not_recommended_qq.html-sTyZQjjb.js @@ -1 +1 @@ -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as e,c as l,e as t}from"./app-RP31lnfq.js";const a={},r=t('

                  为什么不建议私聊

                  • 1、QQ 私聊不好追溯和整理,很难形成文档,很多重复问题, 不能对项目有所益处。

                  • 2、QQ 沟通效率其实很低下,虽然能回答及时,但是提问门槛太低,提问者不够重视,往往需要回答者循环渐进引导才能大体把问题说清楚,这样很浪费时间。

                  • 3、QQ 私聊消息不定时,很容易中断回答者当前工作进程,而 github issue 可以统一处理,这样更节约时间。

                  • 4、QQ 私聊其他用户不能参与回答,别人也看不到问题和答案,不利于思维发散和知识传播。

                  一般只接受以下无私交友谊关系人员的私聊技术咨询

                  • 1、提交过 pr 或其他形式的代码
                  • 2、开源过基于 zlmediakit 的项目
                  • 3、在 qq 群或 issue 上热心解答过相关技术问题
                  • 4、分享过自写的 zlmediakit 相关文档
                  • 5、赞助过 zlmediakit 项目或本人
                  • 6、做过一切对 zlmediakit 发展和推广有贡献的事情
                  ',4),d=[r];function o(c,n){return e(),l("div",null,d)}const h=i(a,[["render",o],["__file","not_recommended_qq.html.vue"]]);export{h as default}; +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as e,c as l,e as t}from"./app-0NopiYEV.js";const a={},r=t('

                  为什么不建议私聊

                  • 1、QQ 私聊不好追溯和整理,很难形成文档,很多重复问题, 不能对项目有所益处。

                  • 2、QQ 沟通效率其实很低下,虽然能回答及时,但是提问门槛太低,提问者不够重视,往往需要回答者循环渐进引导才能大体把问题说清楚,这样很浪费时间。

                  • 3、QQ 私聊消息不定时,很容易中断回答者当前工作进程,而 github issue 可以统一处理,这样更节约时间。

                  • 4、QQ 私聊其他用户不能参与回答,别人也看不到问题和答案,不利于思维发散和知识传播。

                  一般只接受以下无私交友谊关系人员的私聊技术咨询

                  • 1、提交过 pr 或其他形式的代码
                  • 2、开源过基于 zlmediakit 的项目
                  • 3、在 qq 群或 issue 上热心解答过相关技术问题
                  • 4、分享过自写的 zlmediakit 相关文档
                  • 5、赞助过 zlmediakit 项目或本人
                  • 6、做过一切对 zlmediakit 发展和推广有贡献的事情
                  ',4),d=[r];function o(c,n){return e(),l("div",null,d)}const h=i(a,[["render",o],["__file","not_recommended_qq.html.vue"]]);export{h as default}; diff --git a/assets/on-demand_push_streaming.html-U3DF-hcL.js b/assets/on-demand_push_streaming.html-MaKthO1-.js similarity index 88% rename from assets/on-demand_push_streaming.html-U3DF-hcL.js rename to assets/on-demand_push_streaming.html-MaKthO1-.js index a37ac6f..199c56e 100644 --- a/assets/on-demand_push_streaming.html-U3DF-hcL.js +++ b/assets/on-demand_push_streaming.html-MaKthO1-.js @@ -1 +1 @@ -import{_ as t}from"./on-demand_push_streaming_zh-CK4xj1dh.js";import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as a,a as e}from"./app-RP31lnfq.js";const s={},i=e("p",null,"The MediaServer process of ZLMediaKit can be used to implement on-demand push streaming:",-1),r=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),_=[i,r];function m(c,l){return o(),a("div",null,_)}const f=n(s,[["render",m],["__file","on-demand_push_streaming.html.vue"]]);export{f as default}; +import{_ as t}from"./on-demand_push_streaming_zh-CK4xj1dh.js";import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as a,a as e}from"./app-0NopiYEV.js";const s={},i=e("p",null,"The MediaServer process of ZLMediaKit can be used to implement on-demand push streaming:",-1),r=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),_=[i,r];function m(c,l){return o(),a("div",null,_)}const f=n(s,[["render",m],["__file","on-demand_push_streaming.html.vue"]]);export{f as default}; diff --git a/assets/on-demand_push_streaming.html-CeB1-Ozz.js b/assets/on-demand_push_streaming.html-NzG-8Joc.js similarity index 87% rename from assets/on-demand_push_streaming.html-CeB1-Ozz.js rename to assets/on-demand_push_streaming.html-NzG-8Joc.js index 2468761..f291e74 100644 --- a/assets/on-demand_push_streaming.html-CeB1-Ozz.js +++ b/assets/on-demand_push_streaming.html-NzG-8Joc.js @@ -1 +1 @@ -import{_ as t}from"./on-demand_push_streaming_zh-CK4xj1dh.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as n,a as e}from"./app-RP31lnfq.js";const _={},i=e("p",null,"使用 ZLMediaKit 的 MediaServer 进程可以实现按需推流:",-1),s=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),r=[i,s];function c(l,m){return a(),n("div",null,r)}const u=o(_,[["render",c],["__file","on-demand_push_streaming.html.vue"]]);export{u as default}; +import{_ as t}from"./on-demand_push_streaming_zh-CK4xj1dh.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as n,a as e}from"./app-0NopiYEV.js";const _={},i=e("p",null,"使用 ZLMediaKit 的 MediaServer 进程可以实现按需推流:",-1),s=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),r=[i,s];function c(l,m){return a(),n("div",null,r)}const u=o(_,[["render",c],["__file","on-demand_push_streaming.html.vue"]]);export{u as default}; diff --git a/assets/on-demand_streaming.html-rK6BuTeq.js b/assets/on-demand_streaming.html-VwCpE1JK.js similarity index 87% rename from assets/on-demand_streaming.html-rK6BuTeq.js rename to assets/on-demand_streaming.html-VwCpE1JK.js index 405f1b8..6c321bc 100644 --- a/assets/on-demand_streaming.html-rK6BuTeq.js +++ b/assets/on-demand_streaming.html-VwCpE1JK.js @@ -1 +1 @@ -import{_ as t}from"./on-demand_streaming_zh-h19pTlmd.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as n,a as e}from"./app-RP31lnfq.js";const i={},r=e("p",null,"使用 ZLMediaKit 的 MediaServer 进程可以实现按需拉流:",-1),_=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),s=[r,_];function c(l,m){return a(),n("div",null,s)}const u=o(i,[["render",c],["__file","on-demand_streaming.html.vue"]]);export{u as default}; +import{_ as t}from"./on-demand_streaming_zh-h19pTlmd.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as n,a as e}from"./app-0NopiYEV.js";const i={},r=e("p",null,"使用 ZLMediaKit 的 MediaServer 进程可以实现按需拉流:",-1),_=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),s=[r,_];function c(l,m){return a(),n("div",null,s)}const u=o(i,[["render",c],["__file","on-demand_streaming.html.vue"]]);export{u as default}; diff --git a/assets/on-demand_streaming.html-JbtempAZ.js b/assets/on-demand_streaming.html-rje6YlXl.js similarity index 88% rename from assets/on-demand_streaming.html-JbtempAZ.js rename to assets/on-demand_streaming.html-rje6YlXl.js index fde7e06..a6616c7 100644 --- a/assets/on-demand_streaming.html-JbtempAZ.js +++ b/assets/on-demand_streaming.html-rje6YlXl.js @@ -1 +1 @@ -import{_ as t}from"./on-demand_streaming_zh-h19pTlmd.js";import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as a,a as e}from"./app-RP31lnfq.js";const i={},s=e("p",null,"The MediaServer process of ZLMediaKit can be used to implement on-demand pull streaming:",-1),r=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),_=[s,r];function m(c,l){return o(),a("div",null,_)}const u=n(i,[["render",m],["__file","on-demand_streaming.html.vue"]]);export{u as default}; +import{_ as t}from"./on-demand_streaming_zh-h19pTlmd.js";import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as a,a as e}from"./app-0NopiYEV.js";const i={},s=e("p",null,"The MediaServer process of ZLMediaKit can be used to implement on-demand pull streaming:",-1),r=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),_=[s,r];function m(c,l){return o(),a("div",null,_)}const u=n(i,[["render",m],["__file","on-demand_streaming.html.vue"]]);export{u as default}; diff --git a/assets/oncetoken.html-78LEt8yV.js b/assets/oncetoken.html-KoxT1WJ9.js similarity index 99% rename from assets/oncetoken.html-78LEt8yV.js rename to assets/oncetoken.html-KoxT1WJ9.js index f7c4b32..f90ed88 100644 --- a/assets/oncetoken.html-78LEt8yV.js +++ b/assets/oncetoken.html-KoxT1WJ9.js @@ -1,4 +1,4 @@ -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as a,e as t}from"./app-RP31lnfq.js";const p={},o=t(`

                  ZLMediaKit 里面大量用到了一个名叫onceToken对象, 很多小伙伴对这个工具类不明就里,下面我在此解释下其作用: onceToken 主要使用 C/C++的 RAII 思想,确保在变量构造和析构时执行自定义代码;主要应用场景有如下:

                  • 1、作为全局变量用,在程序加载时执行特定代码,例如生成默认配置文件:
                  ////////////HLS相关配置///////////
                  +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as a,e as t}from"./app-0NopiYEV.js";const p={},o=t(`

                  ZLMediaKit 里面大量用到了一个名叫onceToken对象, 很多小伙伴对这个工具类不明就里,下面我在此解释下其作用: onceToken 主要使用 C/C++的 RAII 思想,确保在变量构造和析构时执行自定义代码;主要应用场景有如下:

                  • 1、作为全局变量用,在程序加载时执行特定代码,例如生成默认配置文件:
                  ////////////HLS相关配置///////////
                   namespace Hls {
                   #define HLS_FIELD "hls."
                   //HLS切片时长,单位秒
                  diff --git a/assets/oncetoken.html-O4EgeeD_.js b/assets/oncetoken.html-pNonh94A.js
                  similarity index 99%
                  rename from assets/oncetoken.html-O4EgeeD_.js
                  rename to assets/oncetoken.html-pNonh94A.js
                  index 4552c56..bff4e00 100644
                  --- a/assets/oncetoken.html-O4EgeeD_.js
                  +++ b/assets/oncetoken.html-pNonh94A.js
                  @@ -1,4 +1,4 @@
                  -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as a,e as t}from"./app-RP31lnfq.js";const p={},e=t(`

                  Within ZLMediaKit, there is extensive use of an object called onceToken. Many developers are unfamiliar with this utility class, so I will explain its purpose below: The onceToken primarily applies the RAII (Resource Acquisition Is Initialization) concept from C/C++, ensuring the execution of custom code during variable construction and destruction. It is mainly used in the following scenarios:

                  1. Used as a global variable to execute specific code during program loading, such as generating default configuration files:

                    ////////////HLS-related configurations///////////
                    +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as a,e as t}from"./app-0NopiYEV.js";const p={},e=t(`

                    Within ZLMediaKit, there is extensive use of an object called onceToken. Many developers are unfamiliar with this utility class, so I will explain its purpose below: The onceToken primarily applies the RAII (Resource Acquisition Is Initialization) concept from C/C++, ensuring the execution of custom code during variable construction and destruction. It is mainly used in the following scenarios:

                    1. Used as a global variable to execute specific code during program loading, such as generating default configuration files:

                      ////////////HLS-related configurations///////////
                       namespace Hls {
                       #define HLS_FIELD "hls."
                       //HLS segment duration in seconds
                      diff --git a/assets/online_test.html-_btmASEE.js b/assets/online_test.html-X04CV8WE.js
                      similarity index 88%
                      rename from assets/online_test.html-_btmASEE.js
                      rename to assets/online_test.html-X04CV8WE.js
                      index 2f9290d..3354f59 100644
                      --- a/assets/online_test.html-_btmASEE.js
                      +++ b/assets/online_test.html-X04CV8WE.js
                      @@ -1 +1 @@
                      -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as n,c as r,a as e,b as a,w as i,d as t}from"./app-RP31lnfq.js";const d={},c=e("h2",{id:"测试地址",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#测试地址","aria-hidden":"true"},"#"),t(" 测试地址")],-1),_=e("ul",null,[e("li",null,"http/hls/http-flv/ws-flv 地址: http://zlmediakit.com:8888/"),e("li",null,"https 地址: https://zlmediakit.com/"),e("li",null,"rtsp 地址: zlmediakit.com:554"),e("li",null,"rtmp 地址: zlmediakit.com:1935"),e("li",null,"GB28181 UDP/TCP 地址: zlmediakit.com:10000")],-1),h=e("h2",{id:"开始测试",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#开始测试","aria-hidden":"true"},"#"),t(" 开始测试")],-1);function m(u,p){const l=s("RouterLink");return n(),r("div",null,[c,_,h,e("p",null,[a(l,{to:"/zh/guide/media_server/push_test.html"},{default:i(()=>[t("推流测试")]),_:1}),a(l,{to:"/zh/guide/media_server/play_url_rules.html"},{default:i(()=>[t("播放测试")]),_:1})])])}const v=o(d,[["render",m],["__file","online_test.html.vue"]]);export{v as default};
                      +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as n,c as r,a as e,b as a,w as i,d as t}from"./app-0NopiYEV.js";const d={},c=e("h2",{id:"测试地址",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#测试地址","aria-hidden":"true"},"#"),t(" 测试地址")],-1),_=e("ul",null,[e("li",null,"http/hls/http-flv/ws-flv 地址: http://zlmediakit.com:8888/"),e("li",null,"https 地址: https://zlmediakit.com/"),e("li",null,"rtsp 地址: zlmediakit.com:554"),e("li",null,"rtmp 地址: zlmediakit.com:1935"),e("li",null,"GB28181 UDP/TCP 地址: zlmediakit.com:10000")],-1),h=e("h2",{id:"开始测试",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#开始测试","aria-hidden":"true"},"#"),t(" 开始测试")],-1);function m(u,p){const l=s("RouterLink");return n(),r("div",null,[c,_,h,e("p",null,[a(l,{to:"/zh/guide/media_server/push_test.html"},{default:i(()=>[t("推流测试")]),_:1}),a(l,{to:"/zh/guide/media_server/play_url_rules.html"},{default:i(()=>[t("播放测试")]),_:1})])])}const v=o(d,[["render",m],["__file","online_test.html.vue"]]);export{v as default};
                      diff --git a/assets/online_test.html-nhAROswz.js b/assets/online_test.html-XBO_M5q9.js
                      similarity index 87%
                      rename from assets/online_test.html-nhAROswz.js
                      rename to assets/online_test.html-XBO_M5q9.js
                      index e756569..7677461 100644
                      --- a/assets/online_test.html-nhAROswz.js
                      +++ b/assets/online_test.html-XBO_M5q9.js
                      @@ -1 +1 @@
                      -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c as o,a as t,b as s,w as i,d as e}from"./app-RP31lnfq.js";const d={},c=t("h2",{id:"testing-url",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#testing-url","aria-hidden":"true"},"#"),e(" Testing Url")],-1),_=t("ul",null,[t("li",null,"http/hls/http-flv/ws-flv: http://zlmediakit.com:8888/"),t("li",null,"https: https://zlmediakit.com/"),t("li",null,"rtsp: zlmediakit.com:554"),t("li",null,"rtmp: zlmediakit.com:1935"),t("li",null,"GB28181 UDP/TCP: zlmediakit.com:10000")],-1),h=t("h2",{id:"start-testing",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#start-testing","aria-hidden":"true"},"#"),e(" Start testing")],-1);function u(m,p){const l=n("RouterLink");return r(),o("div",null,[c,_,h,t("p",null,[s(l,{to:"/guide/media_server/push_test.html"},{default:i(()=>[e("Push test")]),_:1}),s(l,{to:"/guide/media_server/play_url_rules.html"},{default:i(()=>[e("Play test")]),_:1})])])}const g=a(d,[["render",u],["__file","online_test.html.vue"]]);export{g as default};
                      +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c as o,a as t,b as s,w as i,d as e}from"./app-0NopiYEV.js";const d={},c=t("h2",{id:"testing-url",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#testing-url","aria-hidden":"true"},"#"),e(" Testing Url")],-1),_=t("ul",null,[t("li",null,"http/hls/http-flv/ws-flv: http://zlmediakit.com:8888/"),t("li",null,"https: https://zlmediakit.com/"),t("li",null,"rtsp: zlmediakit.com:554"),t("li",null,"rtmp: zlmediakit.com:1935"),t("li",null,"GB28181 UDP/TCP: zlmediakit.com:10000")],-1),h=t("h2",{id:"start-testing",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#start-testing","aria-hidden":"true"},"#"),e(" Start testing")],-1);function u(m,p){const l=n("RouterLink");return r(),o("div",null,[c,_,h,t("p",null,[s(l,{to:"/guide/media_server/push_test.html"},{default:i(()=>[e("Push test")]),_:1}),s(l,{to:"/guide/media_server/play_url_rules.html"},{default:i(()=>[e("Play test")]),_:1})])])}const g=a(d,[["render",u],["__file","online_test.html.vue"]]);export{g as default};
                      diff --git a/assets/performance_testing.html-_cSl4nbI.js b/assets/performance_testing.html-RUXKMema.js
                      similarity index 98%
                      rename from assets/performance_testing.html-_cSl4nbI.js
                      rename to assets/performance_testing.html-RUXKMema.js
                      index 7826122..c6d86e3 100644
                      --- a/assets/performance_testing.html-_cSl4nbI.js
                      +++ b/assets/performance_testing.html-RUXKMema.js
                      @@ -1 +1 @@
                      -import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as i,c,a as t,d as e,b as n,w as r,e as o}from"./app-RP31lnfq.js";const h={},_=t("h2",{id:"一、最新性能测试",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#一、最新性能测试","aria-hidden":"true"},"#"),e(" 一、最新性能测试")],-1),u=t("h3",{id:"_1-1、测试环境",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#_1-1、测试环境","aria-hidden":"true"},"#"),e(" 1.1、测试环境")],-1),g=t("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz 4 核 8 线程",-1),x=t("li",null,"操作系统:CentOS release 6.3 (Final)",-1),p=t("li",null,"内存:16GB",-1),y=t("li",null,"网卡:127.0.0.1",-1),f={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},m=t("li",null,"编译器:gcc (GCC) 8.2.0",-1),b=t("li",null,"编译类型:Release",-1),K=o('

                      1.2、测试数据

                      推流性能测试内存占用部分存在不准确问题(原因是当时测试时有个多 gop 缓存 bug)

                      客户端类型流个数cpu内存网络 io4 物理核 cpu 理论性能
                      rtsp 播放20K160%203M5Gb/s约 100K
                      rtsp 播放32.2K235%220M7.78Gb/s约 100K
                      rtsp 推流10K264%760M2.39Gb/s约 30K
                      rtmp 播放10K148%81M2.33Gb/s约 50K
                      rtmp 播放30K450%246M7Gb/s约 50K
                      rtmp 推流10K224%1.6G2.16Gb/s约 30K

                      1.3、测试详细数据

                      ',4),k=t("h2",{id:"二、较早的性能测试记录",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#二、较早的性能测试记录","aria-hidden":"true"},"#"),e(" 二、较早的性能测试记录")],-1),M={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/406",target:"_blank",rel:"noopener noreferrer"},G={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/961",target:"_blank",rel:"noopener noreferrer"},L={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/1271",target:"_blank",rel:"noopener noreferrer"},z=t("h2",{id:"三、性能测试与优化",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#三、性能测试与优化","aria-hidden":"true"},"#"),e(" 三、性能测试与优化")],-1),v={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/540",target:"_blank",rel:"noopener noreferrer"};function Z(C,B){const s=a("ExternalLinkIcon"),l=a("RouterLink");return i(),c("div",null,[_,u,t("ul",null,[g,x,p,y,t("li",null,[e("测试码流: "),t("a",f,[e("200kbps.768x320.flv"),n(s)])]),m,b]),K,t("ul",null,[t("li",null,[n(l,{to:"/zh/reference/test/rtmp_pull_stream_performance_test.html"},{default:r(()=>[e("rtmp 拉流")]),_:1})]),t("li",null,[n(l,{to:"/zh/reference/test/rtmp_push_stream_performance_test.html"},{default:r(()=>[e("rtmp 推流")]),_:1})]),t("li",null,[n(l,{to:"/zh/reference/test/rtsp_pull_stream_performance_test.html"},{default:r(()=>[e("rtsp 拉流")]),_:1})]),t("li",null,[n(l,{to:"/zh/reference/test/rtsp_push_stream_performance_test.html"},{default:r(()=>[e("rtsp 推流")]),_:1})])]),k,t("ul",null,[t("li",null,[t("a",M,[e("rtmp 拉流性能测试"),n(s)])]),t("li",null,[t("a",G,[e("GB28181 性能测试"),n(s)])]),t("li",null,[t("a",L,[e("rtsp 音频拉流性能测试"),n(s)])]),t("li",null,[n(l,{to:"/zh/reference/test/benchmark.html"},{default:r(()=>[e("过时的性能测试记录")]),_:1})])]),z,t("ul",null,[t("li",null,[n(l,{to:"/zh/reference/development_log/rtsp_performance_optimization.html"},{default:r(()=>[e("rtsp 性能优化与测试")]),_:1})]),t("li",null,[n(l,{to:"/zh/reference/development_log/hls_high_performance_journey.html"},{default:r(()=>[e("hls 性能优化与测试")]),_:1})]),t("li",null,[t("a",v,[e("rtmp 性能优化"),n(s)])])])])}const V=d(h,[["render",Z],["__file","performance_testing.html.vue"]]);export{V as default}; +import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as i,c,a as t,d as e,b as n,w as r,e as o}from"./app-0NopiYEV.js";const h={},_=t("h2",{id:"一、最新性能测试",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#一、最新性能测试","aria-hidden":"true"},"#"),e(" 一、最新性能测试")],-1),u=t("h3",{id:"_1-1、测试环境",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#_1-1、测试环境","aria-hidden":"true"},"#"),e(" 1.1、测试环境")],-1),g=t("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz 4 核 8 线程",-1),x=t("li",null,"操作系统:CentOS release 6.3 (Final)",-1),p=t("li",null,"内存:16GB",-1),y=t("li",null,"网卡:127.0.0.1",-1),f={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},m=t("li",null,"编译器:gcc (GCC) 8.2.0",-1),b=t("li",null,"编译类型:Release",-1),K=o('

                      1.2、测试数据

                      推流性能测试内存占用部分存在不准确问题(原因是当时测试时有个多 gop 缓存 bug)

                      客户端类型流个数cpu内存网络 io4 物理核 cpu 理论性能
                      rtsp 播放20K160%203M5Gb/s约 100K
                      rtsp 播放32.2K235%220M7.78Gb/s约 100K
                      rtsp 推流10K264%760M2.39Gb/s约 30K
                      rtmp 播放10K148%81M2.33Gb/s约 50K
                      rtmp 播放30K450%246M7Gb/s约 50K
                      rtmp 推流10K224%1.6G2.16Gb/s约 30K

                      1.3、测试详细数据

                      ',4),k=t("h2",{id:"二、较早的性能测试记录",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#二、较早的性能测试记录","aria-hidden":"true"},"#"),e(" 二、较早的性能测试记录")],-1),M={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/406",target:"_blank",rel:"noopener noreferrer"},G={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/961",target:"_blank",rel:"noopener noreferrer"},L={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/1271",target:"_blank",rel:"noopener noreferrer"},z=t("h2",{id:"三、性能测试与优化",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#三、性能测试与优化","aria-hidden":"true"},"#"),e(" 三、性能测试与优化")],-1),v={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/540",target:"_blank",rel:"noopener noreferrer"};function Z(C,B){const s=a("ExternalLinkIcon"),l=a("RouterLink");return i(),c("div",null,[_,u,t("ul",null,[g,x,p,y,t("li",null,[e("测试码流: "),t("a",f,[e("200kbps.768x320.flv"),n(s)])]),m,b]),K,t("ul",null,[t("li",null,[n(l,{to:"/zh/reference/test/rtmp_pull_stream_performance_test.html"},{default:r(()=>[e("rtmp 拉流")]),_:1})]),t("li",null,[n(l,{to:"/zh/reference/test/rtmp_push_stream_performance_test.html"},{default:r(()=>[e("rtmp 推流")]),_:1})]),t("li",null,[n(l,{to:"/zh/reference/test/rtsp_pull_stream_performance_test.html"},{default:r(()=>[e("rtsp 拉流")]),_:1})]),t("li",null,[n(l,{to:"/zh/reference/test/rtsp_push_stream_performance_test.html"},{default:r(()=>[e("rtsp 推流")]),_:1})])]),k,t("ul",null,[t("li",null,[t("a",M,[e("rtmp 拉流性能测试"),n(s)])]),t("li",null,[t("a",G,[e("GB28181 性能测试"),n(s)])]),t("li",null,[t("a",L,[e("rtsp 音频拉流性能测试"),n(s)])]),t("li",null,[n(l,{to:"/zh/reference/test/benchmark.html"},{default:r(()=>[e("过时的性能测试记录")]),_:1})])]),z,t("ul",null,[t("li",null,[n(l,{to:"/zh/reference/development_log/rtsp_performance_optimization.html"},{default:r(()=>[e("rtsp 性能优化与测试")]),_:1})]),t("li",null,[n(l,{to:"/zh/reference/development_log/hls_high_performance_journey.html"},{default:r(()=>[e("hls 性能优化与测试")]),_:1})]),t("li",null,[t("a",v,[e("rtmp 性能优化"),n(s)])])])])}const V=d(h,[["render",Z],["__file","performance_testing.html.vue"]]);export{V as default}; diff --git a/assets/performance_testing.html-KTW2LASt.js b/assets/performance_testing.html-oRt7mc3-.js similarity index 98% rename from assets/performance_testing.html-KTW2LASt.js rename to assets/performance_testing.html-oRt7mc3-.js index 210cb34..b3ad802 100644 --- a/assets/performance_testing.html-KTW2LASt.js +++ b/assets/performance_testing.html-oRt7mc3-.js @@ -1 +1 @@ -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as d,c as o,a as t,d as e,b as r,w as l,e as c}from"./app-RP31lnfq.js";const h={},_=t("h2",{id:"_1-latest-performance-test",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#_1-latest-performance-test","aria-hidden":"true"},"#"),e(" 1. Latest Performance Test:")],-1),m=t("h3",{id:"_1-1-test-environment",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#_1-1-test-environment","aria-hidden":"true"},"#"),e(" 1.1 Test Environment")],-1),u=t("li",null,"CPU: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz, 4 cores, 8 threads",-1),g=t("li",null,"Operating System: CentOS release 6.3 (Final)",-1),p=t("li",null,"Memory: 16GB",-1),x=t("li",null,"Network Card: 127.0.0.1",-1),f={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},y=t("li",null,"Compiler: gcc (GCC) 8.2.0",-1),P=t("li",null,"Compilation Type: Release",-1),b=c('

                      1.2 Test Data

                      There were inaccuracies in the memory usage during the push streaming performance test (due to a multi-GOP caching bug at the time of testing).

                      Client TypeStream CountCPUMemoryNetwork IOTheoretical Performance of 4 Physical Cores
                      RTSP Play20K160%203M5Gb/sApproximately 100K
                      RTSP Play32.2K235%220M7.78Gb/sApproximately 100K
                      RTSP Push10K264%760M2.39Gb/sApproximately 30K
                      RTMP Play10K148%81M2.33Gb/sApproximately 50K
                      RTMP Play30K450%246M7Gb/sApproximately 50K
                      RTMP Push10K224%1.6G2.16Gb/sApproximately 30K

                      1.3 Detailed Test Data

                      ',4),T=t("h2",{id:"_2-earlier-performance-test-records",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#_2-earlier-performance-test-records","aria-hidden":"true"},"#"),e(" 2. Earlier Performance Test Records")],-1),M={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/406",target:"_blank",rel:"noopener noreferrer"},R={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/961",target:"_blank",rel:"noopener noreferrer"},K={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/1271",target:"_blank",rel:"noopener noreferrer"},k=t("h2",{id:"_3-performance-testing-and-optimization",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#_3-performance-testing-and-optimization","aria-hidden":"true"},"#"),e(" 3. Performance Testing and Optimization")],-1),S={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/540",target:"_blank",rel:"noopener noreferrer"};function C(L,G){const a=s("ExternalLinkIcon"),n=s("RouterLink");return d(),o("div",null,[_,m,t("ul",null,[u,g,p,x,t("li",null,[e("Test Stream: "),t("a",f,[e("200kbps.768x320.flv"),r(a)])]),y,P]),b,t("ul",null,[t("li",null,[r(n,{to:"/reference/test/rtmp_pull_stream_performance_test.html"},{default:l(()=>[e("RTMP Pull Stream")]),_:1})]),t("li",null,[r(n,{to:"/reference/test/rtmp_push_stream_performance_test.html"},{default:l(()=>[e("RTMP Push Stream")]),_:1})]),t("li",null,[r(n,{to:"/reference/test/rtsp_pull_stream_performance_test.html"},{default:l(()=>[e("RTSP Pull Stream")]),_:1})]),t("li",null,[r(n,{to:"/reference/test/rtsp_push_stream_performance_test.html"},{default:l(()=>[e("RTSP Push Stream")]),_:1})])]),T,t("ul",null,[t("li",null,[t("a",M,[e("RTMP Pull Stream Performance Test"),r(a)])]),t("li",null,[t("a",R,[e("GB28181 Performance Test"),r(a)])]),t("li",null,[t("a",K,[e("RTSP Audio Pull Stream Performance Test"),r(a)])]),t("li",null,[r(n,{to:"/reference/test/benchmark.html"},{default:l(()=>[e("Outdated Performance Test Records")]),_:1})])]),k,t("ul",null,[t("li",null,[r(n,{to:"/reference/development_log/rtsp_performance_optimization.html"},{default:l(()=>[e("RTSP Performance Optimization and Testing")]),_:1})]),t("li",null,[r(n,{to:"/reference/development_log/hls_high_performance_journey.html"},{default:l(()=>[e("HLS Performance Optimization and Testing")]),_:1})]),t("li",null,[t("a",S,[e("RTMP Performance Optimization"),r(a)])])])])}const z=i(h,[["render",C],["__file","performance_testing.html.vue"]]);export{z as default}; +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as d,c as o,a as t,d as e,b as r,w as l,e as c}from"./app-0NopiYEV.js";const h={},_=t("h2",{id:"_1-latest-performance-test",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#_1-latest-performance-test","aria-hidden":"true"},"#"),e(" 1. Latest Performance Test:")],-1),m=t("h3",{id:"_1-1-test-environment",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#_1-1-test-environment","aria-hidden":"true"},"#"),e(" 1.1 Test Environment")],-1),u=t("li",null,"CPU: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz, 4 cores, 8 threads",-1),g=t("li",null,"Operating System: CentOS release 6.3 (Final)",-1),p=t("li",null,"Memory: 16GB",-1),x=t("li",null,"Network Card: 127.0.0.1",-1),f={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},y=t("li",null,"Compiler: gcc (GCC) 8.2.0",-1),P=t("li",null,"Compilation Type: Release",-1),b=c('

                      1.2 Test Data

                      There were inaccuracies in the memory usage during the push streaming performance test (due to a multi-GOP caching bug at the time of testing).

                      Client TypeStream CountCPUMemoryNetwork IOTheoretical Performance of 4 Physical Cores
                      RTSP Play20K160%203M5Gb/sApproximately 100K
                      RTSP Play32.2K235%220M7.78Gb/sApproximately 100K
                      RTSP Push10K264%760M2.39Gb/sApproximately 30K
                      RTMP Play10K148%81M2.33Gb/sApproximately 50K
                      RTMP Play30K450%246M7Gb/sApproximately 50K
                      RTMP Push10K224%1.6G2.16Gb/sApproximately 30K

                      1.3 Detailed Test Data

                      ',4),T=t("h2",{id:"_2-earlier-performance-test-records",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#_2-earlier-performance-test-records","aria-hidden":"true"},"#"),e(" 2. Earlier Performance Test Records")],-1),M={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/406",target:"_blank",rel:"noopener noreferrer"},R={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/961",target:"_blank",rel:"noopener noreferrer"},K={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/1271",target:"_blank",rel:"noopener noreferrer"},k=t("h2",{id:"_3-performance-testing-and-optimization",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#_3-performance-testing-and-optimization","aria-hidden":"true"},"#"),e(" 3. Performance Testing and Optimization")],-1),S={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/540",target:"_blank",rel:"noopener noreferrer"};function C(L,G){const a=s("ExternalLinkIcon"),n=s("RouterLink");return d(),o("div",null,[_,m,t("ul",null,[u,g,p,x,t("li",null,[e("Test Stream: "),t("a",f,[e("200kbps.768x320.flv"),r(a)])]),y,P]),b,t("ul",null,[t("li",null,[r(n,{to:"/reference/test/rtmp_pull_stream_performance_test.html"},{default:l(()=>[e("RTMP Pull Stream")]),_:1})]),t("li",null,[r(n,{to:"/reference/test/rtmp_push_stream_performance_test.html"},{default:l(()=>[e("RTMP Push Stream")]),_:1})]),t("li",null,[r(n,{to:"/reference/test/rtsp_pull_stream_performance_test.html"},{default:l(()=>[e("RTSP Pull Stream")]),_:1})]),t("li",null,[r(n,{to:"/reference/test/rtsp_push_stream_performance_test.html"},{default:l(()=>[e("RTSP Push Stream")]),_:1})])]),T,t("ul",null,[t("li",null,[t("a",M,[e("RTMP Pull Stream Performance Test"),r(a)])]),t("li",null,[t("a",R,[e("GB28181 Performance Test"),r(a)])]),t("li",null,[t("a",K,[e("RTSP Audio Pull Stream Performance Test"),r(a)])]),t("li",null,[r(n,{to:"/reference/test/benchmark.html"},{default:l(()=>[e("Outdated Performance Test Records")]),_:1})])]),k,t("ul",null,[t("li",null,[r(n,{to:"/reference/development_log/rtsp_performance_optimization.html"},{default:l(()=>[e("RTSP Performance Optimization and Testing")]),_:1})]),t("li",null,[r(n,{to:"/reference/development_log/hls_high_performance_journey.html"},{default:l(()=>[e("HLS Performance Optimization and Testing")]),_:1})]),t("li",null,[t("a",S,[e("RTMP Performance Optimization"),r(a)])])])])}const z=i(h,[["render",C],["__file","performance_testing.html.vue"]]);export{z as default}; diff --git a/assets/photoswipe.esm-08_zHRDQ.js b/assets/photoswipe.esm-08_zHRDQ.js new file mode 100644 index 0000000..4048314 --- /dev/null +++ b/assets/photoswipe.esm-08_zHRDQ.js @@ -0,0 +1,4 @@ +/*! + * PhotoSwipe 5.4.3 - https://photoswipe.com + * (c) 2023 Dmytro Semenov + */function f(r,t,i){const e=document.createElement(t);return r&&(e.className=r),i&&i.appendChild(e),e}function p(r,t){return r.x=t.x,r.y=t.y,t.id!==void 0&&(r.id=t.id),r}function M(r){r.x=Math.round(r.x),r.y=Math.round(r.y)}function A(r,t){const i=Math.abs(r.x-t.x),e=Math.abs(r.y-t.y);return Math.sqrt(i*i+e*e)}function x(r,t){return r.x===t.x&&r.y===t.y}function I(r,t,i){return Math.min(Math.max(r,t),i)}function b(r,t,i){let e=`translate3d(${r}px,${t||0}px,0)`;return i!==void 0&&(e+=` scale3d(${i},${i},1)`),e}function y(r,t,i,e){r.style.transform=b(t,i,e)}const $="cubic-bezier(.4,0,.22,1)";function R(r,t,i,e){r.style.transition=t?`${t} ${i}ms ${e||$}`:"none"}function L(r,t,i){r.style.width=typeof t=="number"?`${t}px`:t,r.style.height=typeof i=="number"?`${i}px`:i}function U(r){R(r)}function q(r){return"decode"in r?r.decode().catch(()=>{}):r.complete?Promise.resolve(r):new Promise((t,i)=>{r.onload=()=>t(r),r.onerror=i})}const _={IDLE:"idle",LOADING:"loading",LOADED:"loaded",ERROR:"error"};function G(r){return"button"in r&&r.button===1||r.ctrlKey||r.metaKey||r.altKey||r.shiftKey}function K(r,t,i=document){let e=[];if(r instanceof Element)e=[r];else if(r instanceof NodeList||Array.isArray(r))e=Array.from(r);else{const s=typeof r=="string"?r:t;s&&(e=Array.from(i.querySelectorAll(s)))}return e}function C(){return!!(navigator.vendor&&navigator.vendor.match(/apple/i))}let F=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>{F=!0}}))}catch{}class X{constructor(){this._pool=[]}add(t,i,e,s){this._toggleListener(t,i,e,s)}remove(t,i,e,s){this._toggleListener(t,i,e,s,!0)}removeAll(){this._pool.forEach(t=>{this._toggleListener(t.target,t.type,t.listener,t.passive,!0,!0)}),this._pool=[]}_toggleListener(t,i,e,s,n,o){if(!t)return;const a=n?"removeEventListener":"addEventListener";i.split(" ").forEach(l=>{if(l){o||(n?this._pool=this._pool.filter(d=>d.type!==l||d.listener!==e||d.target!==t):this._pool.push({target:t,type:l,listener:e,passive:s}));const c=F?{passive:s||!1}:!1;t[a](l,e,c)}})}}function B(r,t){if(r.getViewportSizeFn){const i=r.getViewportSizeFn(r,t);if(i)return i}return{x:document.documentElement.clientWidth,y:window.innerHeight}}function S(r,t,i,e,s){let n=0;if(t.paddingFn)n=t.paddingFn(i,e,s)[r];else if(t.padding)n=t.padding[r];else{const o="padding"+r[0].toUpperCase()+r.slice(1);t[o]&&(n=t[o])}return Number(n)||0}function N(r,t,i,e){return{x:t.x-S("left",r,t,i,e)-S("right",r,t,i,e),y:t.y-S("top",r,t,i,e)-S("bottom",r,t,i,e)}}class Y{constructor(t){this.slide=t,this.currZoomLevel=1,this.center={x:0,y:0},this.max={x:0,y:0},this.min={x:0,y:0}}update(t){this.currZoomLevel=t,this.slide.width?(this._updateAxis("x"),this._updateAxis("y"),this.slide.pswp.dispatch("calcBounds",{slide:this.slide})):this.reset()}_updateAxis(t){const{pswp:i}=this.slide,e=this.slide[t==="x"?"width":"height"]*this.currZoomLevel,n=S(t==="x"?"left":"top",i.options,i.viewportSize,this.slide.data,this.slide.index),o=this.slide.panAreaSize[t];this.center[t]=Math.round((o-e)/2)+n,this.max[t]=e>o?Math.round(o-e)+n:this.center[t],this.min[t]=e>o?n:this.center[t]}reset(){this.center.x=0,this.center.y=0,this.max.x=0,this.max.y=0,this.min.x=0,this.min.y=0}correctPan(t,i){return I(i,this.max[t],this.min[t])}}const T=4e3;class k{constructor(t,i,e,s){this.pswp=s,this.options=t,this.itemData=i,this.index=e,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,e){const s={x:t,y:i};this.elementSize=s,this.panAreaSize=e;const n=e.x/s.x,o=e.y/s.y;this.fit=Math.min(1,no?n:o),this.vFill=Math.min(1,o),this.initial=this._getInitial(),this.secondary=this._getSecondary(),this.max=Math.max(this.initial,this.secondary,this._getMax()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}_parseZoomLevelOption(t){const i=t+"ZoomLevel",e=this.options[i];if(e)return typeof e=="function"?e(this):e==="fill"?this.fill:e==="fit"?this.fit:Number(e)}_getSecondary(){let t=this._parseZoomLevelOption("secondary");return t||(t=Math.min(1,this.fit*3),this.elementSize&&t*this.elementSize.x>T&&(t=T/this.elementSize.x),t)}_getInitial(){return this._parseZoomLevelOption("initial")||this.fit}_getMax(){return this._parseZoomLevelOption("max")||Math.max(1,this.fit*4)}}class j{constructor(t,i,e){this.data=t,this.index=i,this.pswp=e,this.isActive=i===e.currIndex,this.currentResolution=0,this.panAreaSize={x:0,y:0},this.pan={x:0,y:0},this.isFirstSlide=this.isActive&&!e.opener.isOpen,this.zoomLevels=new k(e.options,t,i,e),this.pswp.dispatch("gettingData",{slide:this,data:this.data,index:i}),this.content=this.pswp.contentLoader.getContentBySlide(this),this.container=f("pswp__zoom-wrap","div"),this.holderElement=null,this.currZoomLevel=1,this.width=this.content.width,this.height=this.content.height,this.heavyAppended=!1,this.bounds=new Y(this),this.prevDisplayedWidth=-1,this.prevDisplayedHeight=-1,this.pswp.dispatch("slideInit",{slide:this})}setIsActive(t){t&&!this.isActive?this.activate():!t&&this.isActive&&this.deactivate()}append(t){this.holderElement=t,this.container.style.transformOrigin="0 0",this.data&&(this.calculateSize(),this.load(),this.updateContentSize(),this.appendHeavy(),this.holderElement.appendChild(this.container),this.zoomAndPanToInitial(),this.pswp.dispatch("firstZoomPan",{slide:this}),this.applyCurrentZoomPan(),this.pswp.dispatch("afterSetContent",{slide:this}),this.isActive&&this.activate())}load(){this.content.load(!1),this.pswp.dispatch("slideLoad",{slide:this})}appendHeavy(){const{pswp:t}=this;this.heavyAppended||!t.opener.isOpen||t.mainScroll.isShifted()||!this.isActive&&!!0||this.pswp.dispatch("appendHeavy",{slide:this}).defaultPrevented||(this.heavyAppended=!0,this.content.append(),this.pswp.dispatch("appendHeavyContent",{slide:this}))}activate(){this.isActive=!0,this.appendHeavy(),this.content.activate(),this.pswp.dispatch("slideActivate",{slide:this})}deactivate(){this.isActive=!1,this.content.deactivate(),this.currZoomLevel!==this.zoomLevels.initial&&this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize(),this.pswp.dispatch("slideDeactivate",{slide:this})}destroy(){this.content.hasSlide=!1,this.content.remove(),this.container.remove(),this.pswp.dispatch("slideDestroy",{slide:this})}resize(){this.currZoomLevel===this.zoomLevels.initial||!this.isActive?(this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize()):(this.calculateSize(),this.bounds.update(this.currZoomLevel),this.panTo(this.pan.x,this.pan.y))}updateContentSize(t){const i=this.currentResolution||this.zoomLevels.initial;if(!i)return;const e=Math.round(this.width*i)||this.pswp.viewportSize.x,s=Math.round(this.height*i)||this.pswp.viewportSize.y;!this.sizeChanged(e,s)&&!t||this.content.setDisplayedSize(e,s)}sizeChanged(t,i){return t!==this.prevDisplayedWidth||i!==this.prevDisplayedHeight?(this.prevDisplayedWidth=t,this.prevDisplayedHeight=i,!0):!1}getPlaceholderElement(){var t;return(t=this.content.placeholder)===null||t===void 0?void 0:t.element}zoomTo(t,i,e,s){const{pswp:n}=this;if(!this.isZoomable()||n.mainScroll.isShifted())return;n.dispatch("beforeZoomTo",{destZoomLevel:t,centerPoint:i,transitionDuration:e}),n.animations.stopAllPan();const o=this.currZoomLevel;s||(t=I(t,this.zoomLevels.min,this.zoomLevels.max)),this.setZoomLevel(t),this.pan.x=this.calculateZoomToPanOffset("x",i,o),this.pan.y=this.calculateZoomToPanOffset("y",i,o),M(this.pan);const a=()=>{this._setResolution(t),this.applyCurrentZoomPan()};e?n.animations.startTransition({isPan:!0,name:"zoomTo",target:this.container,transform:this.getCurrentTransform(),onComplete:a,duration:e,easing:n.options.easing}):a()}toggleZoom(t){this.zoomTo(this.currZoomLevel===this.zoomLevels.initial?this.zoomLevels.secondary:this.zoomLevels.initial,t,this.pswp.options.zoomAnimationDuration)}setZoomLevel(t){this.currZoomLevel=t,this.bounds.update(this.currZoomLevel)}calculateZoomToPanOffset(t,i,e){if(this.bounds.max[t]-this.bounds.min[t]===0)return this.bounds.center[t];i||(i=this.pswp.getViewportCenterPoint()),e||(e=this.zoomLevels.initial);const n=this.currZoomLevel/e;return this.bounds.correctPan(t,(this.pan[t]-i[t])*n+i[t])}panTo(t,i){this.pan.x=this.bounds.correctPan("x",t),this.pan.y=this.bounds.correctPan("y",i),this.applyCurrentZoomPan()}isPannable(){return!!this.width&&this.currZoomLevel>this.zoomLevels.fit}isZoomable(){return!!this.width&&this.content.isZoomable()}applyCurrentZoomPan(){this._applyZoomTransform(this.pan.x,this.pan.y,this.currZoomLevel),this===this.pswp.currSlide&&this.pswp.dispatch("zoomPanUpdate",{slide:this})}zoomAndPanToInitial(){this.currZoomLevel=this.zoomLevels.initial,this.bounds.update(this.currZoomLevel),p(this.pan,this.bounds.center),this.pswp.dispatch("initialZoomPan",{slide:this})}_applyZoomTransform(t,i,e){e/=this.currentResolution||this.zoomLevels.initial,y(this.container,t,i,e)}calculateSize(){const{pswp:t}=this;p(this.panAreaSize,N(t.options,t.viewportSize,this.data,this.index)),this.zoomLevels.update(this.width,this.height,this.panAreaSize),t.dispatch("calcSlideSize",{slide:this})}getCurrentTransform(){const t=this.currZoomLevel/(this.currentResolution||this.zoomLevels.initial);return b(this.pan.x,this.pan.y,t)}_setResolution(t){t!==this.currentResolution&&(this.currentResolution=t,this.updateContentSize(),this.pswp.dispatch("resolutionChanged"))}}const Q=.35,J=.6,z=.4,E=.5;function tt(r,t){return r*t/(1-t)}class it{constructor(t){this.gestures=t,this.pswp=t.pswp,this.startPan={x:0,y:0}}start(){this.pswp.currSlide&&p(this.startPan,this.pswp.currSlide.pan),this.pswp.animations.stopAll()}change(){const{p1:t,prevP1:i,dragAxis:e}=this.gestures,{currSlide:s}=this.pswp;if(e==="y"&&this.pswp.options.closeOnVerticalDrag&&s&&s.currZoomLevel<=s.zoomLevels.fit&&!this.gestures.isMultitouch){const n=s.pan.y+(t.y-i.y);if(!this.pswp.dispatch("verticalDrag",{panY:n}).defaultPrevented){this._setPanWithFriction("y",n,J);const o=1-Math.abs(this._getVerticalDragRatio(s.pan.y));this.pswp.applyBgOpacity(o),s.applyCurrentZoomPan()}}else this._panOrMoveMainScroll("x")||(this._panOrMoveMainScroll("y"),s&&(M(s.pan),s.applyCurrentZoomPan()))}end(){const{velocity:t}=this.gestures,{mainScroll:i,currSlide:e}=this.pswp;let s=0;if(this.pswp.animations.stopAll(),i.isShifted()){const o=(i.x-i.getCurrSlideX())/this.pswp.viewportSize.x;t.x<-E&&o<0||t.x<.1&&o<-.5?(s=1,t.x=Math.min(t.x,0)):(t.x>E&&o>0||t.x>-.1&&o>.5)&&(s=-1,t.x=Math.max(t.x,0)),i.moveIndexBy(s,!0,t.x)}e&&e.currZoomLevel>e.zoomLevels.max||this.gestures.isMultitouch?this.gestures.zoomLevels.correctZoomPan(!0):(this._finishPanGestureForAxis("x"),this._finishPanGestureForAxis("y"))}_finishPanGestureForAxis(t){const{velocity:i}=this.gestures,{currSlide:e}=this.pswp;if(!e)return;const{pan:s,bounds:n}=e,o=s[t],a=this.pswp.bgOpacity<1&&t==="y",l=o+tt(i[t],.995);if(a){const v=this._getVerticalDragRatio(o),w=this._getVerticalDragRatio(l);if(v<0&&w<-z||v>0&&w>z){this.pswp.close();return}}const c=n.correctPan(t,l);if(o===c)return;const d=c===l?1:.82,u=this.pswp.bgOpacity,m=c-o;this.pswp.animations.startSpring({name:"panGesture"+t,isPan:!0,start:o,end:c,velocity:i[t],dampingRatio:d,onUpdate:v=>{if(a&&this.pswp.bgOpacity<1){const w=1-(c-v)/m;this.pswp.applyBgOpacity(I(u+(1-u)*w,0,1))}s[t]=Math.floor(v),e.applyCurrentZoomPan()}})}_panOrMoveMainScroll(t){const{p1:i,dragAxis:e,prevP1:s,isMultitouch:n}=this.gestures,{currSlide:o,mainScroll:a}=this.pswp,h=i[t]-s[t],l=a.x+h;if(!h||!o)return!1;if(t==="x"&&!o.isPannable()&&!n)return a.moveTo(l,!0),!0;const{bounds:c}=o,d=o.pan[t]+h;if(this.pswp.options.allowPanToNext&&e==="x"&&t==="x"&&!n){const u=a.getCurrSlideX(),m=a.x-u,v=h>0,w=!v;if(d>c.min[t]&&v){if(c.min[t]<=this.startPan[t])return a.moveTo(l,!0),!0;this._setPanWithFriction(t,d)}else if(d0)return a.moveTo(Math.max(l,u),!0),!0;if(m<0)return a.moveTo(Math.min(l,u),!0),!0}else this._setPanWithFriction(t,d)}else t==="y"?!a.isShifted()&&c.min.y!==c.max.y&&this._setPanWithFriction(t,d):this._setPanWithFriction(t,d);return!1}_getVerticalDragRatio(t){var i,e;return(t-((i=(e=this.pswp.currSlide)===null||e===void 0?void 0:e.bounds.center.y)!==null&&i!==void 0?i:0))/(this.pswp.viewportSize.y/3)}_setPanWithFriction(t,i,e){const{currSlide:s}=this.pswp;if(!s)return;const{pan:n,bounds:o}=s;if(o.correctPan(t,i)!==i||e){const h=Math.round(i-n[t]);n[t]+=h*(e||Q)}else n[t]=i}}const et=.05,st=.15;function O(r,t,i){return r.x=(t.x+i.x)/2,r.y=(t.y+i.y)/2,r}class nt{constructor(t){this.gestures=t,this._startPan={x:0,y:0},this._startZoomPoint={x:0,y:0},this._zoomPoint={x:0,y:0},this._wasOverFitZoomLevel=!1,this._startZoomLevel=1}start(){const{currSlide:t}=this.gestures.pswp;t&&(this._startZoomLevel=t.currZoomLevel,p(this._startPan,t.pan)),this.gestures.pswp.animations.stopAllPan(),this._wasOverFitZoomLevel=!1}change(){const{p1:t,startP1:i,p2:e,startP2:s,pswp:n}=this.gestures,{currSlide:o}=n;if(!o)return;const a=o.zoomLevels.min,h=o.zoomLevels.max;if(!o.isZoomable()||n.mainScroll.isShifted())return;O(this._startZoomPoint,i,s),O(this._zoomPoint,t,e);let l=1/A(i,s)*A(t,e)*this._startZoomLevel;if(l>o.zoomLevels.initial+o.zoomLevels.initial/15&&(this._wasOverFitZoomLevel=!0),lh&&(l=h+(l-h)*et);o.pan.x=this._calculatePanForZoomLevel("x",l),o.pan.y=this._calculatePanForZoomLevel("y",l),o.setZoomLevel(l),o.applyCurrentZoomPan()}end(){const{pswp:t}=this.gestures,{currSlide:i}=t;(!i||i.currZoomLevele.zoomLevels.max?n=e.zoomLevels.max:(o=!1,n=s);const a=i.bgOpacity,h=i.bgOpacity<1,l=p({x:0,y:0},e.pan);let c=p({x:0,y:0},l);t&&(this._zoomPoint.x=0,this._zoomPoint.y=0,this._startZoomPoint.x=0,this._startZoomPoint.y=0,this._startZoomLevel=s,p(this._startPan,l)),o&&(c={x:this._calculatePanForZoomLevel("x",n),y:this._calculatePanForZoomLevel("y",n)}),e.setZoomLevel(n),c={x:e.bounds.correctPan("x",c.x),y:e.bounds.correctPan("y",c.y)},e.setZoomLevel(s);const d=!x(c,l);if(!d&&!o&&!h){e._setResolution(n),e.applyCurrentZoomPan();return}i.animations.stopAllPan(),i.animations.startSpring({isPan:!0,start:0,end:1e3,velocity:0,dampingRatio:1,naturalFrequency:40,onUpdate:u=>{if(u/=1e3,d||o){if(d&&(e.pan.x=l.x+(c.x-l.x)*u,e.pan.y=l.y+(c.y-l.y)*u),o){const m=s+(n-s)*u;e.setZoomLevel(m)}e.applyCurrentZoomPan()}h&&i.bgOpacity<1&&i.applyBgOpacity(I(a+(1-a)*u,0,1))},onComplete:()=>{e._setResolution(n),e.applyCurrentZoomPan()}})}}function Z(r){return!!r.target.closest(".pswp__container")}class ot{constructor(t){this.gestures=t}click(t,i){const e=i.target.classList,s=e.contains("pswp__img"),n=e.contains("pswp__item")||e.contains("pswp__zoom-wrap");s?this._doClickOrTapAction("imageClick",t,i):n&&this._doClickOrTapAction("bgClick",t,i)}tap(t,i){Z(i)&&this._doClickOrTapAction("tap",t,i)}doubleTap(t,i){Z(i)&&this._doClickOrTapAction("doubleTap",t,i)}_doClickOrTapAction(t,i,e){var s;const{pswp:n}=this.gestures,{currSlide:o}=n,a=t+"Action",h=n.options[a];if(!n.dispatch(a,{point:i,originalEvent:e}).defaultPrevented){if(typeof h=="function"){h.call(n,i,e);return}switch(h){case"close":case"next":n[h]();break;case"zoom":o==null||o.toggleZoom(i);break;case"zoom-or-close":o!=null&&o.isZoomable()&&o.zoomLevels.secondary!==o.zoomLevels.initial?o.toggleZoom(i):n.options.clickToCloseNonZoomable&&n.close();break;case"toggle-controls":(s=this.gestures.pswp.element)===null||s===void 0||s.classList.toggle("pswp--ui-visible");break}}}}const rt=10,at=300,ht=25;class lt{constructor(t){this.pswp=t,this.dragAxis=null,this.p1={x:0,y:0},this.p2={x:0,y:0},this.prevP1={x:0,y:0},this.prevP2={x:0,y:0},this.startP1={x:0,y:0},this.startP2={x:0,y:0},this.velocity={x:0,y:0},this._lastStartP1={x:0,y:0},this._intervalP1={x:0,y:0},this._numActivePoints=0,this._ongoingPointers=[],this._touchEventEnabled="ontouchstart"in window,this._pointerEventEnabled=!!window.PointerEvent,this.supportsTouch=this._touchEventEnabled||this._pointerEventEnabled&&navigator.maxTouchPoints>1,this._numActivePoints=0,this._intervalTime=0,this._velocityCalculated=!1,this.isMultitouch=!1,this.isDragging=!1,this.isZooming=!1,this.raf=null,this._tapTimer=null,this.supportsTouch||(t.options.allowPanToNext=!1),this.drag=new it(this),this.zoomLevels=new nt(this),this.tapHandler=new ot(this),t.on("bindEvents",()=>{t.events.add(t.scrollWrap,"click",this._onClick.bind(this)),this._pointerEventEnabled?this._bindEvents("pointer","down","up","cancel"):this._touchEventEnabled?(this._bindEvents("touch","start","end","cancel"),t.scrollWrap&&(t.scrollWrap.ontouchmove=()=>{},t.scrollWrap.ontouchend=()=>{})):this._bindEvents("mouse","down","up")})}_bindEvents(t,i,e,s){const{pswp:n}=this,{events:o}=n,a=s?t+s:"";o.add(n.scrollWrap,t+i,this.onPointerDown.bind(this)),o.add(window,t+"move",this.onPointerMove.bind(this)),o.add(window,t+e,this.onPointerUp.bind(this)),a&&o.add(n.scrollWrap,a,this.onPointerUp.bind(this))}onPointerDown(t){const i=t.type==="mousedown"||t.pointerType==="mouse";if(i&&t.button>0)return;const{pswp:e}=this;if(!e.opener.isOpen){t.preventDefault();return}e.dispatch("pointerDown",{originalEvent:t}).defaultPrevented||(i&&(e.mouseDetected(),this._preventPointerEventBehaviour(t,"down")),e.animations.stopAll(),this._updatePoints(t,"down"),this._numActivePoints===1&&(this.dragAxis=null,p(this.startP1,this.p1)),this._numActivePoints>1?(this._clearTapTimer(),this.isMultitouch=!0):this.isMultitouch=!1)}onPointerMove(t){this._preventPointerEventBehaviour(t,"move"),this._numActivePoints&&(this._updatePoints(t,"move"),!this.pswp.dispatch("pointerMove",{originalEvent:t}).defaultPrevented&&(this._numActivePoints===1&&!this.isDragging?(this.dragAxis||this._calculateDragDirection(),this.dragAxis&&!this.isDragging&&(this.isZooming&&(this.isZooming=!1,this.zoomLevels.end()),this.isDragging=!0,this._clearTapTimer(),this._updateStartPoints(),this._intervalTime=Date.now(),this._velocityCalculated=!1,p(this._intervalP1,this.p1),this.velocity.x=0,this.velocity.y=0,this.drag.start(),this._rafStopLoop(),this._rafRenderLoop())):this._numActivePoints>1&&!this.isZooming&&(this._finishDrag(),this.isZooming=!0,this._updateStartPoints(),this.zoomLevels.start(),this._rafStopLoop(),this._rafRenderLoop())))}_finishDrag(){this.isDragging&&(this.isDragging=!1,this._velocityCalculated||this._updateVelocity(!0),this.drag.end(),this.dragAxis=null)}onPointerUp(t){this._numActivePoints&&(this._updatePoints(t,"up"),!this.pswp.dispatch("pointerUp",{originalEvent:t}).defaultPrevented&&(this._numActivePoints===0&&(this._rafStopLoop(),this.isDragging?this._finishDrag():!this.isZooming&&!this.isMultitouch&&this._finishTap(t)),this._numActivePoints<2&&this.isZooming&&(this.isZooming=!1,this.zoomLevels.end(),this._numActivePoints===1&&(this.dragAxis=null,this._updateStartPoints()))))}_rafRenderLoop(){(this.isDragging||this.isZooming)&&(this._updateVelocity(),this.isDragging?x(this.p1,this.prevP1)||this.drag.change():(!x(this.p1,this.prevP1)||!x(this.p2,this.prevP2))&&this.zoomLevels.change(),this._updatePrevPoints(),this.raf=requestAnimationFrame(this._rafRenderLoop.bind(this)))}_updateVelocity(t){const i=Date.now(),e=i-this._intervalTime;e<50&&!t||(this.velocity.x=this._getVelocity("x",e),this.velocity.y=this._getVelocity("y",e),this._intervalTime=i,p(this._intervalP1,this.p1),this._velocityCalculated=!0)}_finishTap(t){const{mainScroll:i}=this.pswp;if(i.isShifted()){i.moveIndexBy(0,!0);return}if(t.type.indexOf("cancel")>0)return;if(t.type==="mouseup"||t.pointerType==="mouse"){this.tapHandler.click(this.startP1,t);return}const e=this.pswp.options.doubleTapAction?at:0;this._tapTimer?(this._clearTapTimer(),A(this._lastStartP1,this.startP1){this.tapHandler.tap(this.startP1,t),this._clearTapTimer()},e))}_clearTapTimer(){this._tapTimer&&(clearTimeout(this._tapTimer),this._tapTimer=null)}_getVelocity(t,i){const e=this.p1[t]-this._intervalP1[t];return Math.abs(e)>1&&i>5?e/i:0}_rafStopLoop(){this.raf&&(cancelAnimationFrame(this.raf),this.raf=null)}_preventPointerEventBehaviour(t,i){this.pswp.applyFilters("preventPointerEvent",!0,t,i)&&t.preventDefault()}_updatePoints(t,i){if(this._pointerEventEnabled){const e=t,s=this._ongoingPointers.findIndex(n=>n.id===e.pointerId);i==="up"&&s>-1?this._ongoingPointers.splice(s,1):i==="down"&&s===-1?this._ongoingPointers.push(this._convertEventPosToPoint(e,{x:0,y:0})):s>-1&&this._convertEventPosToPoint(e,this._ongoingPointers[s]),this._numActivePoints=this._ongoingPointers.length,this._numActivePoints>0&&p(this.p1,this._ongoingPointers[0]),this._numActivePoints>1&&p(this.p2,this._ongoingPointers[1])}else{const e=t;this._numActivePoints=0,e.type.indexOf("touch")>-1?e.touches&&e.touches.length>0&&(this._convertEventPosToPoint(e.touches[0],this.p1),this._numActivePoints++,e.touches.length>1&&(this._convertEventPosToPoint(e.touches[1],this.p2),this._numActivePoints++)):(this._convertEventPosToPoint(t,this.p1),i==="up"?this._numActivePoints=0:this._numActivePoints++)}}_updatePrevPoints(){p(this.prevP1,this.p1),p(this.prevP2,this.p2)}_updateStartPoints(){p(this.startP1,this.p1),p(this.startP2,this.p2),this._updatePrevPoints()}_calculateDragDirection(){if(this.pswp.mainScroll.isShifted())this.dragAxis="x";else{const t=Math.abs(this.p1.x-this.startP1.x)-Math.abs(this.p1.y-this.startP1.y);if(t!==0){const i=t>0?"x":"y";Math.abs(this.p1[i]-this.startP1[i])>=rt&&(this.dragAxis=i)}}}_convertEventPosToPoint(t,i){return i.x=t.pageX-this.pswp.offset.x,i.y=t.pageY-this.pswp.offset.y,"pointerId"in t?i.id=t.pointerId:t.identifier!==void 0&&(i.id=t.identifier),i}_onClick(t){this.pswp.mainScroll.isShifted()&&(t.preventDefault(),t.stopPropagation())}}const ct=.35;class dt{constructor(t){this.pswp=t,this.x=0,this.slideWidth=0,this._currPositionIndex=0,this._prevPositionIndex=0,this._containerShiftIndex=-1,this.itemHolders=[]}resize(t){const{pswp:i}=this,e=Math.round(i.viewportSize.x+i.viewportSize.x*i.options.spacing),s=e!==this.slideWidth;s&&(this.slideWidth=e,this.moveTo(this.getCurrSlideX())),this.itemHolders.forEach((n,o)=>{s&&y(n.el,(o+this._containerShiftIndex)*this.slideWidth),t&&n.slide&&n.slide.resize()})}resetPosition(){this._currPositionIndex=0,this._prevPositionIndex=0,this.slideWidth=0,this._containerShiftIndex=-1}appendHolders(){this.itemHolders=[];for(let t=0;t<3;t++){const i=f("pswp__item","div",this.pswp.container);i.setAttribute("role","group"),i.setAttribute("aria-roledescription","slide"),i.setAttribute("aria-hidden","true"),i.style.display=t===1?"block":"none",this.itemHolders.push({el:i})}}canBeSwiped(){return this.pswp.getNumItems()>1}moveIndexBy(t,i,e){const{pswp:s}=this;let n=s.potentialIndex+t;const o=s.getNumItems();if(s.canLoop()){n=s.getLoopedIndex(n);const h=(t+o)%o;h<=o/2?t=h:t=h-o}else n<0?n=0:n>=o&&(n=o-1),t=n-s.potentialIndex;s.potentialIndex=n,this._currPositionIndex-=t,s.animations.stopMainScroll();const a=this.getCurrSlideX();if(!i)this.moveTo(a),this.updateCurrItem();else{s.animations.startSpring({isMainScroll:!0,start:this.x,end:a,velocity:e||0,naturalFrequency:30,dampingRatio:1,onUpdate:l=>{this.moveTo(l)},onComplete:()=>{this.updateCurrItem(),s.appendHeavy()}});let h=s.potentialIndex-s.currIndex;if(s.canLoop()){const l=(h+o)%o;l<=o/2?h=l:h=l-o}Math.abs(h)>1&&this.updateCurrItem()}return!!t}getCurrSlideX(){return this.slideWidth*this._currPositionIndex}isShifted(){return this.x!==this.getCurrSlideX()}updateCurrItem(){var t;const{pswp:i}=this,e=this._prevPositionIndex-this._currPositionIndex;if(!e)return;this._prevPositionIndex=this._currPositionIndex,i.currIndex=i.potentialIndex;let s=Math.abs(e),n;s>=3&&(this._containerShiftIndex+=e+(e>0?-3:3),s=3);for(let o=0;o0?(n=this.itemHolders.shift(),n&&(this.itemHolders[2]=n,this._containerShiftIndex++,y(n.el,(this._containerShiftIndex+2)*this.slideWidth),i.setContent(n,i.currIndex-s+o+2))):(n=this.itemHolders.pop(),n&&(this.itemHolders.unshift(n),this._containerShiftIndex--,y(n.el,this._containerShiftIndex*this.slideWidth),i.setContent(n,i.currIndex+s-o-2)));Math.abs(this._containerShiftIndex)>50&&!this.isShifted()&&(this.resetPosition(),this.resize()),i.animations.stopAllPan(),this.itemHolders.forEach((o,a)=>{o.slide&&o.slide.setIsActive(a===1)}),i.currSlide=(t=this.itemHolders[1])===null||t===void 0?void 0:t.slide,i.contentLoader.updateLazy(e),i.currSlide&&i.currSlide.applyCurrentZoomPan(),i.dispatch("change")}moveTo(t,i){if(!this.pswp.canLoop()&&i){let e=(this.slideWidth*this._currPositionIndex-t)/this.slideWidth;e+=this.pswp.currIndex;const s=Math.round(t-this.x);(e<0&&s>0||e>=this.pswp.getNumItems()-1&&s<0)&&(t=this.x+s*ct)}this.x=t,this.pswp.container&&y(this.pswp.container,t),this.pswp.dispatch("moveMainScroll",{x:t,dragging:i??!1})}}const pt={Escape:27,z:90,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,Tab:9},g=(r,t)=>t?r:pt[r];class ut{constructor(t){this.pswp=t,this._wasFocused=!1,t.on("bindEvents",()=>{t.options.trapFocus&&(t.options.initialPointerPos||this._focusRoot(),t.events.add(document,"focusin",this._onFocusIn.bind(this))),t.events.add(document,"keydown",this._onKeyDown.bind(this))});const i=document.activeElement;t.on("destroy",()=>{t.options.returnFocus&&i&&this._wasFocused&&i.focus()})}_focusRoot(){!this._wasFocused&&this.pswp.element&&(this.pswp.element.focus(),this._wasFocused=!0)}_onKeyDown(t){const{pswp:i}=this;if(i.dispatch("keydown",{originalEvent:t}).defaultPrevented||G(t))return;let e,s,n=!1;const o="key"in t;switch(o?t.key:t.keyCode){case g("Escape",o):i.options.escKey&&(e="close");break;case g("z",o):e="toggleZoom";break;case g("ArrowLeft",o):s="x";break;case g("ArrowUp",o):s="y";break;case g("ArrowRight",o):s="x",n=!0;break;case g("ArrowDown",o):n=!0,s="y";break;case g("Tab",o):this._focusRoot();break}if(s){t.preventDefault();const{currSlide:a}=i;i.options.arrowKeys&&s==="x"&&i.getNumItems()>1?e=n?"next":"prev":a&&a.currZoomLevel>a.zoomLevels.fit&&(a.pan[s]+=n?-80:80,a.panTo(a.pan.x,a.pan.y))}e&&(t.preventDefault(),i[e]())}_onFocusIn(t){const{template:i}=this.pswp;i&&document!==t.target&&i!==t.target&&!i.contains(t.target)&&i.focus()}}const mt="cubic-bezier(.4,0,.22,1)";class ft{constructor(t){var i;this.props=t;const{target:e,onComplete:s,transform:n,onFinish:o=()=>{},duration:a=333,easing:h=mt}=t;this.onFinish=o;const l=n?"transform":"opacity",c=(i=t[l])!==null&&i!==void 0?i:"";this._target=e,this._onComplete=s,this._finished=!1,this._onTransitionEnd=this._onTransitionEnd.bind(this),this._helperTimeout=setTimeout(()=>{R(e,l,a,h),this._helperTimeout=setTimeout(()=>{e.addEventListener("transitionend",this._onTransitionEnd,!1),e.addEventListener("transitioncancel",this._onTransitionEnd,!1),this._helperTimeout=setTimeout(()=>{this._finalizeAnimation()},a+500),e.style[l]=c},30)},0)}_onTransitionEnd(t){t.target===this._target&&this._finalizeAnimation()}_finalizeAnimation(){this._finished||(this._finished=!0,this.onFinish(),this._onComplete&&this._onComplete())}destroy(){this._helperTimeout&&clearTimeout(this._helperTimeout),U(this._target),this._target.removeEventListener("transitionend",this._onTransitionEnd,!1),this._target.removeEventListener("transitioncancel",this._onTransitionEnd,!1),this._finished||this._finalizeAnimation()}}const _t=12,vt=.75;class gt{constructor(t,i,e){this.velocity=t*1e3,this._dampingRatio=i||vt,this._naturalFrequency=e||_t,this._dampedFrequency=this._naturalFrequency,this._dampingRatio<1&&(this._dampedFrequency*=Math.sqrt(1-this._dampingRatio*this._dampingRatio))}easeFrame(t,i){let e=0,s;i/=1e3;const n=Math.E**(-this._dampingRatio*this._naturalFrequency*i);if(this._dampingRatio===1)s=this.velocity+this._naturalFrequency*t,e=(t+s*i)*n,this.velocity=e*-this._naturalFrequency+s*n;else if(this._dampingRatio<1){s=1/this._dampedFrequency*(this._dampingRatio*this._naturalFrequency*t+this.velocity);const o=Math.cos(this._dampedFrequency*i),a=Math.sin(this._dampedFrequency*i);e=n*(t*o+s*a),this.velocity=e*-this._naturalFrequency*this._dampingRatio+n*(-this._dampedFrequency*t*a+this._dampedFrequency*s*o)}return e}}class yt{constructor(t){this.props=t,this._raf=0;const{start:i,end:e,velocity:s,onUpdate:n,onComplete:o,onFinish:a=()=>{},dampingRatio:h,naturalFrequency:l}=t;this.onFinish=a;const c=new gt(s,h,l);let d=Date.now(),u=i-e;const m=()=>{this._raf&&(u=c.easeFrame(u,Date.now()-d),Math.abs(u)<1&&Math.abs(c.velocity)<50?(n(e),o&&o(),this.onFinish()):(d=Date.now(),n(u+e),this._raf=requestAnimationFrame(m)))};this._raf=requestAnimationFrame(m)}destroy(){this._raf>=0&&cancelAnimationFrame(this._raf),this._raf=0}}class wt{constructor(){this.activeAnimations=[]}startSpring(t){this._start(t,!0)}startTransition(t){this._start(t)}_start(t,i){const e=i?new yt(t):new ft(t);return this.activeAnimations.push(e),e.onFinish=()=>this.stop(e),e}stop(t){t.destroy();const i=this.activeAnimations.indexOf(t);i>-1&&this.activeAnimations.splice(i,1)}stopAll(){this.activeAnimations.forEach(t=>{t.destroy()}),this.activeAnimations=[]}stopAllPan(){this.activeAnimations=this.activeAnimations.filter(t=>t.props.isPan?(t.destroy(),!1):!0)}stopMainScroll(){this.activeAnimations=this.activeAnimations.filter(t=>t.props.isMainScroll?(t.destroy(),!1):!0)}isPanRunning(){return this.activeAnimations.some(t=>t.props.isPan)}}class Pt{constructor(t){this.pswp=t,t.events.add(t.element,"wheel",this._onWheel.bind(this))}_onWheel(t){t.preventDefault();const{currSlide:i}=this.pswp;let{deltaX:e,deltaY:s}=t;if(i&&!this.pswp.dispatch("wheel",{originalEvent:t}).defaultPrevented)if(t.ctrlKey||this.pswp.options.wheelToZoom){if(i.isZoomable()){let n=-s;t.deltaMode===1?n*=.05:n*=t.deltaMode?1:.002,n=2**n;const o=i.currZoomLevel*n;i.zoomTo(o,{x:t.clientX,y:t.clientY})}}else i.isPannable()&&(t.deltaMode===1&&(e*=18,s*=18),i.panTo(i.pan.x-e,i.pan.y-s))}}function St(r){if(typeof r=="string")return r;if(!r||!r.isCustomSVG)return"";const t=r;let i='",i}class xt{constructor(t,i){var e;const s=i.name||i.className;let n=i.html;if(t.options[s]===!1)return;typeof t.options[s+"SVG"]=="string"&&(n=t.options[s+"SVG"]),t.dispatch("uiElementCreate",{data:i});let o="";i.isButton?(o+="pswp__button ",o+=i.className||`pswp__button--${i.name}`):o+=i.className||`pswp__${i.name}`;let a=i.isButton?i.tagName||"button":i.tagName||"div";a=a.toLowerCase();const h=f(o,a);if(i.isButton){a==="button"&&(h.type="button");let{title:d}=i;const{ariaLabel:u}=i;typeof t.options[s+"Title"]=="string"&&(d=t.options[s+"Title"]),d&&(h.title=d);const m=u||d;m&&h.setAttribute("aria-label",m)}h.innerHTML=St(n),i.onInit&&i.onInit(h,t),i.onClick&&(h.onclick=d=>{typeof i.onClick=="string"?t[i.onClick]():typeof i.onClick=="function"&&i.onClick(d,h,t)});const l=i.appendTo||"bar";let c=t.element;l==="bar"?(t.topBar||(t.topBar=f("pswp__top-bar pswp__hide-on-close","div",t.scrollWrap)),c=t.topBar):(h.classList.add("pswp__hide-on-close"),l==="wrapper"&&(c=t.scrollWrap)),(e=c)===null||e===void 0||e.appendChild(t.applyFilters("uiElement",h,i))}}function H(r,t,i){r.classList.add("pswp__button--arrow"),r.setAttribute("aria-controls","pswp__items"),t.on("change",()=>{t.options.loop||(i?r.disabled=!(t.currIndex0))})}const bt={name:"arrowPrev",className:"pswp__button--arrow--prev",title:"Previous",order:10,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"prev",onInit:H},It={name:"arrowNext",className:"pswp__button--arrow--next",title:"Next",order:11,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"next",onInit:(r,t)=>{H(r,t,!0)}},At={name:"close",title:"Close",order:20,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-close"},onClick:"close"},Lt={name:"zoom",title:"Zoom",order:10,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-zoom"},onClick:"toggleZoom"},Ct={name:"preloader",appendTo:"bar",order:7,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-loading"},onInit:(r,t)=>{let i,e=null;const s=(a,h)=>{r.classList.toggle("pswp__preloader--"+a,h)},n=a=>{i!==a&&(i=a,s("active",a))},o=()=>{var a;if(!((a=t.currSlide)!==null&&a!==void 0&&a.content.isLoading())){n(!1),e&&(clearTimeout(e),e=null);return}e||(e=setTimeout(()=>{var h;n(!!(!((h=t.currSlide)===null||h===void 0)&&h.content.isLoading())),e=null},t.options.preloaderDelay))};t.on("change",o),t.on("loadComplete",a=>{t.currSlide===a.slide&&o()}),t.ui&&(t.ui.updatePreloaderVisibility=o)}},Tt={name:"counter",order:5,onInit:(r,t)=>{t.on("change",()=>{r.innerText=t.currIndex+1+t.options.indexIndicatorSep+t.getNumItems()})}};function D(r,t){r.classList.toggle("pswp--zoomed-in",t)}class zt{constructor(t){this.pswp=t,this.isRegistered=!1,this.uiElementsData=[],this.items=[],this.updatePreloaderVisibility=()=>{},this._lastUpdatedZoomLevel=void 0}init(){const{pswp:t}=this;this.isRegistered=!1,this.uiElementsData=[At,bt,It,Lt,Ct,Tt],t.dispatch("uiRegister"),this.uiElementsData.sort((i,e)=>(i.order||0)-(e.order||0)),this.items=[],this.isRegistered=!0,this.uiElementsData.forEach(i=>{this.registerElement(i)}),t.on("change",()=>{var i;(i=t.element)===null||i===void 0||i.classList.toggle("pswp--one-slide",t.getNumItems()===1)}),t.on("zoomPanUpdate",()=>this._onZoomPanUpdate())}registerElement(t){this.isRegistered?this.items.push(new xt(this.pswp,t)):this.uiElementsData.push(t)}_onZoomPanUpdate(){const{template:t,currSlide:i,options:e}=this.pswp;if(this.pswp.opener.isClosing||!t||!i)return;let{currZoomLevel:s}=i;if(this.pswp.opener.isOpen||(s=i.zoomLevels.initial),s===this._lastUpdatedZoomLevel)return;this._lastUpdatedZoomLevel=s;const n=i.zoomLevels.initial-i.zoomLevels.secondary;if(Math.abs(n)<.01||!i.isZoomable()){D(t,!1),t.classList.remove("pswp--zoom-allowed");return}t.classList.add("pswp--zoom-allowed");const o=s===i.zoomLevels.initial?i.zoomLevels.secondary:i.zoomLevels.initial;D(t,o<=s),(e.imageClickAction==="zoom"||e.imageClickAction==="zoom-or-close")&&t.classList.add("pswp--click-to-zoom")}}function Et(r){const t=r.getBoundingClientRect();return{x:t.left,y:t.top,w:t.width}}function Ot(r,t,i){const e=r.getBoundingClientRect(),s=e.width/t,n=e.height/i,o=s>n?s:n,a=(e.width-t*o)/2,h=(e.height-i*o)/2,l={x:e.left+a,y:e.top+h,w:t*o};return l.innerRect={w:e.width,h:e.height,x:a,y:h},l}function Zt(r,t,i){const e=i.dispatch("thumbBounds",{index:r,itemData:t,instance:i});if(e.thumbBounds)return e.thumbBounds;const{element:s}=t;let n,o;if(s&&i.options.thumbSelector!==!1){const a=i.options.thumbSelector||"img";o=s.matches(a)?s:s.querySelector(a)}return o=i.applyFilters("thumbEl",o,t,r),o&&(t.thumbCropped?n=Ot(o,t.width||t.w||0,t.height||t.h||0):n=Et(o)),i.applyFilters("thumbBounds",n,t,r)}class Dt{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class Mt{constructor(){this._listeners={},this._filters={},this.pswp=void 0,this.options=void 0}addFilter(t,i,e=100){var s,n,o;this._filters[t]||(this._filters[t]=[]),(s=this._filters[t])===null||s===void 0||s.push({fn:i,priority:e}),(n=this._filters[t])===null||n===void 0||n.sort((a,h)=>a.priority-h.priority),(o=this.pswp)===null||o===void 0||o.addFilter(t,i,e)}removeFilter(t,i){this._filters[t]&&(this._filters[t]=this._filters[t].filter(e=>e.fn!==i)),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){var e;return(e=this._filters[t])===null||e===void 0||e.forEach(s=>{i[0]=s.fn.apply(this,i)}),i[0]}on(t,i){var e,s;this._listeners[t]||(this._listeners[t]=[]),(e=this._listeners[t])===null||e===void 0||e.push(i),(s=this.pswp)===null||s===void 0||s.on(t,i)}off(t,i){var e;this._listeners[t]&&(this._listeners[t]=this._listeners[t].filter(s=>i!==s)),(e=this.pswp)===null||e===void 0||e.off(t,i)}dispatch(t,i){var e;if(this.pswp)return this.pswp.dispatch(t,i);const s=new Dt(t,i);return(e=this._listeners[t])===null||e===void 0||e.forEach(n=>{n.call(this,s)}),s}}class Rt{constructor(t,i){if(this.element=f("pswp__img pswp__img--placeholder",t?"img":"div",i),t){const e=this.element;e.decoding="async",e.alt="",e.src=t,e.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,i){this.element&&(this.element.tagName==="IMG"?(L(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=b(0,0,t/250)):L(this.element,t,i))}destroy(){var t;(t=this.element)!==null&&t!==void 0&&t.parentNode&&this.element.remove(),this.element=null}}class Ft{constructor(t,i,e){this.instance=i,this.data=t,this.index=e,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=_.IDLE,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout(()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)},1e3)}load(t,i){if(this.slide&&this.usePlaceholder())if(this.placeholder){const e=this.placeholder.element;e&&!e.parentElement&&this.slide.container.prepend(e)}else{const e=this.instance.applyFilters("placeholderSrc",this.data.msrc&&this.slide.isFirstSlide?this.data.msrc:!1,this);this.placeholder=new Rt(e,this.slide.container)}this.element&&!i||this.instance.dispatch("contentLoad",{content:this,isLazy:t}).defaultPrevented||(this.isImageContent()?(this.element=f("pswp__img","img"),this.displayedImageWidth&&this.loadImage(t)):(this.element=f("pswp__content","div"),this.element.innerHTML=this.data.html||""),i&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var i,e;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const s=this.element;this.updateSrcsetSizes(),this.data.srcset&&(s.srcset=this.data.srcset),s.src=(i=this.data.src)!==null&&i!==void 0?i:"",s.alt=(e=this.data.alt)!==null&&e!==void 0?e:"",this.state=_.LOADING,s.complete?this.onLoaded():(s.onload=()=>{this.onLoaded()},s.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=_.LOADED,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder())}onError(){this.state=_.ERROR,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===_.LOADING,this)}isError(){return this.state===_.ERROR}isImageContent(){return this.type==="image"}setDisplayedSize(t,i){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,i),!this.instance.dispatch("contentResize",{content:this,width:t,height:i}).defaultPrevented&&(L(this.element,t,i),this.isImageContent()&&!this.isError()))){const e=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=i,e?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:i,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==_.ERROR,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,!this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented&&(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var t,i;let e=f("pswp__error-msg","div");e.innerText=(t=(i=this.instance.options)===null||i===void 0?void 0:i.errorMsg)!==null&&t!==void 0?t:"",e=this.instance.applyFilters("contentErrorElement",e,this),this.element=f("pswp__content pswp__error-msg-container","div"),this.element.appendChild(e),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===_.ERROR){this.displayError();return}if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||C())?(this.isDecoding=!0,this.element.decode().catch(()=>{}).finally(()=>{this.isDecoding=!1,this.appendImage()})):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){this.instance.dispatch("contentActivate",{content:this}).defaultPrevented||!this.slide||(this.isImageContent()&&this.isDecoding&&!C()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,!this.instance.dispatch("contentRemove",{content:this}).defaultPrevented&&(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder()))}}const Bt=5;function W(r,t,i){const e=t.createContentFromData(r,i);let s;const{options:n}=t;if(n){s=new k(n,r,-1);let o;t.pswp?o=t.pswp.viewportSize:o=B(n,t);const a=N(n,o,r,i);s.update(e.width,e.height,a)}return e.lazyLoad(),s&&e.setDisplayedSize(Math.ceil(e.width*s.initial),Math.ceil(e.height*s.initial)),e}function Nt(r,t){const i=t.getItemData(r);if(!t.dispatch("lazyLoadSlide",{index:r,itemData:i}).defaultPrevented)return W(i,t,r)}class kt{constructor(t){this.pswp=t,this.limit=Math.max(t.options.preload[0]+t.options.preload[1]+1,Bt),this._cachedItems=[]}updateLazy(t){const{pswp:i}=this;if(i.dispatch("lazyLoad").defaultPrevented)return;const{preload:e}=i.options,s=t===void 0?!0:t>=0;let n;for(n=0;n<=e[1];n++)this.loadSlideByIndex(i.currIndex+(s?n:-n));for(n=1;n<=e[0];n++)this.loadSlideByIndex(i.currIndex+(s?-n:n))}loadSlideByIndex(t){const i=this.pswp.getLoopedIndex(t);let e=this.getContentByIndex(i);e||(e=Nt(i,this.pswp),e&&this.addToCache(e))}getContentBySlide(t){let i=this.getContentByIndex(t.index);return i||(i=this.pswp.createContentFromData(t.data,t.index),this.addToCache(i)),i.setSlide(t),i}addToCache(t){if(this.removeByIndex(t.index),this._cachedItems.push(t),this._cachedItems.length>this.limit){const i=this._cachedItems.findIndex(e=>!e.isAttached&&!e.hasSlide);i!==-1&&this._cachedItems.splice(i,1)[0].destroy()}}removeByIndex(t){const i=this._cachedItems.findIndex(e=>e.index===t);i!==-1&&this._cachedItems.splice(i,1)}getContentByIndex(t){return this._cachedItems.find(i=>i.index===t)}destroy(){this._cachedItems.forEach(t=>t.destroy()),this._cachedItems=[]}}class Ht extends Mt{getNumItems(){var t;let i=0;const e=(t=this.options)===null||t===void 0?void 0:t.dataSource;e&&"length"in e?i=e.length:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),e.items&&(i=e.items.length));const s=this.dispatch("numItems",{dataSource:e,numItems:i});return this.applyFilters("numItems",s.numItems,e)}createContentFromData(t,i){return new Ft(t,this,i)}getItemData(t){var i;const e=(i=this.options)===null||i===void 0?void 0:i.dataSource;let s={};Array.isArray(e)?s=e[t]:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),s=e.items[t]);let n=s;n instanceof Element&&(n=this._domElementToItemData(n));const o=this.dispatch("itemData",{itemData:n||{},index:t});return this.applyFilters("itemData",o.itemData,t)}_getGalleryDOMElements(t){var i,e;return(i=this.options)!==null&&i!==void 0&&i.children||(e=this.options)!==null&&e!==void 0&&e.childSelector?K(this.options.children,this.options.childSelector,t)||[]:[t]}_domElementToItemData(t){const i={element:t},e=t.tagName==="A"?t:t.querySelector("a");if(e){i.src=e.dataset.pswpSrc||e.href,e.dataset.pswpSrcset&&(i.srcset=e.dataset.pswpSrcset),i.width=e.dataset.pswpWidth?parseInt(e.dataset.pswpWidth,10):0,i.height=e.dataset.pswpHeight?parseInt(e.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,e.dataset.pswpType&&(i.type=e.dataset.pswpType);const n=t.querySelector("img");if(n){var s;i.msrc=n.currentSrc||n.src,i.alt=(s=n.getAttribute("alt"))!==null&&s!==void 0?s:""}(e.dataset.pswpCropped||e.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,e)}lazyLoadData(t,i){return W(t,this,i)}}const P=.003;class Wt{constructor(t){this.pswp=t,this.isClosed=!0,this.isOpen=!1,this.isClosing=!1,this.isOpening=!1,this._duration=void 0,this._useAnimation=!1,this._croppedZoom=!1,this._animateRootOpacity=!1,this._animateBgOpacity=!1,this._placeholder=void 0,this._opacityElement=void 0,this._cropContainer1=void 0,this._cropContainer2=void 0,this._thumbBounds=void 0,this._prepareOpen=this._prepareOpen.bind(this),t.on("firstZoomPan",this._prepareOpen)}open(){this._prepareOpen(),this._start()}close(){if(this.isClosed||this.isClosing||this.isOpening)return;const t=this.pswp.currSlide;this.isOpen=!1,this.isOpening=!1,this.isClosing=!0,this._duration=this.pswp.options.hideAnimationDuration,t&&t.currZoomLevel*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps(),setTimeout(()=>{this._start()},this._croppedZoom?30:0)}_prepareOpen(){if(this.pswp.off("firstZoomPan",this._prepareOpen),!this.isOpening){const t=this.pswp.currSlide;this.isOpening=!0,this.isClosing=!1,this._duration=this.pswp.options.showAnimationDuration,t&&t.zoomLevels.initial*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps()}}_applyStartProps(){const{pswp:t}=this,i=this.pswp.currSlide,{options:e}=t;if(e.showHideAnimationType==="fade"?(e.showHideOpacity=!0,this._thumbBounds=void 0):e.showHideAnimationType==="none"?(e.showHideOpacity=!1,this._duration=0,this._thumbBounds=void 0):this.isOpening&&t._initialThumbBounds?this._thumbBounds=t._initialThumbBounds:this._thumbBounds=this.pswp.getThumbBounds(),this._placeholder=i==null?void 0:i.getPlaceholderElement(),t.animations.stopAll(),this._useAnimation=!!(this._duration&&this._duration>50),this._animateZoom=!!this._thumbBounds&&(i==null?void 0:i.content.usePlaceholder())&&(!this.isClosing||!t.mainScroll.isShifted()),!this._animateZoom)this._animateRootOpacity=!0,this.isOpening&&i&&(i.zoomAndPanToInitial(),i.applyCurrentZoomPan());else{var s;this._animateRootOpacity=(s=e.showHideOpacity)!==null&&s!==void 0?s:!1}if(this._animateBgOpacity=!this._animateRootOpacity&&this.pswp.options.bgOpacity>P,this._opacityElement=this._animateRootOpacity?t.element:t.bg,!this._useAnimation){this._duration=0,this._animateZoom=!1,this._animateBgOpacity=!1,this._animateRootOpacity=!0,this.isOpening&&(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1));return}if(this._animateZoom&&this._thumbBounds&&this._thumbBounds.innerRect){var n;this._croppedZoom=!0,this._cropContainer1=this.pswp.container,this._cropContainer2=(n=this.pswp.currSlide)===null||n===void 0?void 0:n.holderElement,t.container&&(t.container.style.overflow="hidden",t.container.style.width=t.viewportSize.x+"px")}else this._croppedZoom=!1;this.isOpening?(this._animateRootOpacity?(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1)):(this._animateBgOpacity&&t.bg&&(t.bg.style.opacity=String(P)),t.element&&(t.element.style.opacity="1")),this._animateZoom&&(this._setClosedStateZoomPan(),this._placeholder&&(this._placeholder.style.willChange="transform",this._placeholder.style.opacity=String(P)))):this.isClosing&&(t.mainScroll.itemHolders[0]&&(t.mainScroll.itemHolders[0].el.style.display="none"),t.mainScroll.itemHolders[2]&&(t.mainScroll.itemHolders[2].el.style.display="none"),this._croppedZoom&&t.mainScroll.x!==0&&(t.mainScroll.resetPosition(),t.mainScroll.resize()))}_start(){this.isOpening&&this._useAnimation&&this._placeholder&&this._placeholder.tagName==="IMG"?new Promise(t=>{let i=!1,e=!0;q(this._placeholder).finally(()=>{i=!0,e||t(!0)}),setTimeout(()=>{e=!1,i&&t(!0)},50),setTimeout(t,250)}).finally(()=>this._initiate()):this._initiate()}_initiate(){var t,i;(t=this.pswp.element)===null||t===void 0||t.style.setProperty("--pswp-transition-duration",this._duration+"ms"),this.pswp.dispatch(this.isOpening?"openingAnimationStart":"closingAnimationStart"),this.pswp.dispatch("initialZoom"+(this.isOpening?"In":"Out")),(i=this.pswp.element)===null||i===void 0||i.classList.toggle("pswp--ui-visible",this.isOpening),this.isOpening?(this._placeholder&&(this._placeholder.style.opacity="1"),this._animateToOpenState()):this.isClosing&&this._animateToClosedState(),this._useAnimation||this._onAnimationComplete()}_onAnimationComplete(){const{pswp:t}=this;if(this.isOpen=this.isOpening,this.isClosed=this.isClosing,this.isOpening=!1,this.isClosing=!1,t.dispatch(this.isOpen?"openingAnimationEnd":"closingAnimationEnd"),t.dispatch("initialZoom"+(this.isOpen?"InEnd":"OutEnd")),this.isClosed)t.destroy();else if(this.isOpen){var i;this._animateZoom&&t.container&&(t.container.style.overflow="visible",t.container.style.width="100%"),(i=t.currSlide)===null||i===void 0||i.applyCurrentZoomPan()}}_animateToOpenState(){const{pswp:t}=this;this._animateZoom&&(this._croppedZoom&&this._cropContainer1&&this._cropContainer2&&(this._animateTo(this._cropContainer1,"transform","translate3d(0,0,0)"),this._animateTo(this._cropContainer2,"transform","none")),t.currSlide&&(t.currSlide.zoomAndPanToInitial(),this._animateTo(t.currSlide.container,"transform",t.currSlide.getCurrentTransform()))),this._animateBgOpacity&&t.bg&&this._animateTo(t.bg,"opacity",String(t.options.bgOpacity)),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","1")}_animateToClosedState(){const{pswp:t}=this;this._animateZoom&&this._setClosedStateZoomPan(!0),this._animateBgOpacity&&t.bgOpacity>.01&&t.bg&&this._animateTo(t.bg,"opacity","0"),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","0")}_setClosedStateZoomPan(t){if(!this._thumbBounds)return;const{pswp:i}=this,{innerRect:e}=this._thumbBounds,{currSlide:s,viewportSize:n}=i;if(this._croppedZoom&&e&&this._cropContainer1&&this._cropContainer2){const o=-n.x+(this._thumbBounds.x-e.x)+e.w,a=-n.y+(this._thumbBounds.y-e.y)+e.h,h=n.x-e.w,l=n.y-e.h;t?(this._animateTo(this._cropContainer1,"transform",b(o,a)),this._animateTo(this._cropContainer2,"transform",b(h,l))):(y(this._cropContainer1,o,a),y(this._cropContainer2,h,l))}s&&(p(s.pan,e||this._thumbBounds),s.currZoomLevel=this._thumbBounds.w/s.width,t?this._animateTo(s.container,"transform",s.getCurrentTransform()):s.applyCurrentZoomPan())}_animateTo(t,i,e){if(!this._duration){t.style[i]=e;return}const{animations:s}=this.pswp,n={duration:this._duration,easing:this.pswp.options.easing,onComplete:()=>{s.activeAnimations.length||this._onAnimationComplete()},target:t};n[i]=e,s.startTransition(n)}}const Vt={allowPanToNext:!0,spacing:.1,loop:!0,pinchToClose:!0,closeOnVerticalDrag:!0,hideAnimationDuration:333,showAnimationDuration:333,zoomAnimationDuration:333,escKey:!0,arrowKeys:!0,trapFocus:!0,returnFocus:!0,maxWidthToAnimate:4e3,clickToCloseNonZoomable:!0,imageClickAction:"zoom-or-close",bgClickAction:"close",tapAction:"toggle-controls",doubleTapAction:"zoom",indexIndicatorSep:" / ",preloaderDelay:2e3,bgOpacity:.8,index:0,errorMsg:"The image cannot be loaded",preload:[1,2],easing:"cubic-bezier(.4,0,.22,1)"};class $t extends Ht{constructor(t){super(),this.options=this._prepareOptions(t||{}),this.offset={x:0,y:0},this._prevViewportSize={x:0,y:0},this.viewportSize={x:0,y:0},this.bgOpacity=1,this.currIndex=0,this.potentialIndex=0,this.isOpen=!1,this.isDestroying=!1,this.hasMouse=!1,this._initialItemData={},this._initialThumbBounds=void 0,this.topBar=void 0,this.element=void 0,this.template=void 0,this.container=void 0,this.scrollWrap=void 0,this.currSlide=void 0,this.events=new X,this.animations=new wt,this.mainScroll=new dt(this),this.gestures=new lt(this),this.opener=new Wt(this),this.keyboard=new ut(this),this.contentLoader=new kt(this)}init(){if(this.isOpen||this.isDestroying)return!1;this.isOpen=!0,this.dispatch("init"),this.dispatch("beforeOpen"),this._createMainStructure();let t="pswp--open";return this.gestures.supportsTouch&&(t+=" pswp--touch"),this.options.mainClass&&(t+=" "+this.options.mainClass),this.element&&(this.element.className+=" "+t),this.currIndex=this.options.index||0,this.potentialIndex=this.currIndex,this.dispatch("firstUpdate"),this.scrollWheel=new Pt(this),(Number.isNaN(this.currIndex)||this.currIndex<0||this.currIndex>=this.getNumItems())&&(this.currIndex=0),this.gestures.supportsTouch||this.mouseDetected(),this.updateSize(),this.offset.y=window.pageYOffset,this._initialItemData=this.getItemData(this.currIndex),this.dispatch("gettingData",{index:this.currIndex,data:this._initialItemData,slide:void 0}),this._initialThumbBounds=this.getThumbBounds(),this.dispatch("initialLayout"),this.on("openingAnimationEnd",()=>{const{itemHolders:i}=this.mainScroll;i[0]&&(i[0].el.style.display="block",this.setContent(i[0],this.currIndex-1)),i[2]&&(i[2].el.style.display="block",this.setContent(i[2],this.currIndex+1)),this.appendHeavy(),this.contentLoader.updateLazy(),this.events.add(window,"resize",this._handlePageResize.bind(this)),this.events.add(window,"scroll",this._updatePageScrollOffset.bind(this)),this.dispatch("bindEvents")}),this.mainScroll.itemHolders[1]&&this.setContent(this.mainScroll.itemHolders[1],this.currIndex),this.dispatch("change"),this.opener.open(),this.dispatch("afterInit"),!0}getLoopedIndex(t){const i=this.getNumItems();return this.options.loop&&(t>i-1&&(t-=i),t<0&&(t+=i)),I(t,0,i-1)}appendHeavy(){this.mainScroll.itemHolders.forEach(t=>{var i;(i=t.slide)===null||i===void 0||i.appendHeavy()})}goTo(t){this.mainScroll.moveIndexBy(this.getLoopedIndex(t)-this.potentialIndex)}next(){this.goTo(this.potentialIndex+1)}prev(){this.goTo(this.potentialIndex-1)}zoomTo(...t){var i;(i=this.currSlide)===null||i===void 0||i.zoomTo(...t)}toggleZoom(){var t;(t=this.currSlide)===null||t===void 0||t.toggleZoom()}close(){!this.opener.isOpen||this.isDestroying||(this.isDestroying=!0,this.dispatch("close"),this.events.removeAll(),this.opener.close())}destroy(){var t;if(!this.isDestroying){this.options.showHideAnimationType="none",this.close();return}this.dispatch("destroy"),this._listeners={},this.scrollWrap&&(this.scrollWrap.ontouchmove=null,this.scrollWrap.ontouchend=null),(t=this.element)===null||t===void 0||t.remove(),this.mainScroll.itemHolders.forEach(i=>{var e;(e=i.slide)===null||e===void 0||e.destroy()}),this.contentLoader.destroy(),this.events.removeAll()}refreshSlideContent(t){this.contentLoader.removeByIndex(t),this.mainScroll.itemHolders.forEach((i,e)=>{var s,n;let o=((s=(n=this.currSlide)===null||n===void 0?void 0:n.index)!==null&&s!==void 0?s:0)-1+e;if(this.canLoop()&&(o=this.getLoopedIndex(o)),o===t&&(this.setContent(i,t,!0),e===1)){var a;this.currSlide=i.slide,(a=i.slide)===null||a===void 0||a.setIsActive(!0)}}),this.dispatch("change")}setContent(t,i,e){if(this.canLoop()&&(i=this.getLoopedIndex(i)),t.slide){if(t.slide.index===i&&!e)return;t.slide.destroy(),t.slide=void 0}if(!this.canLoop()&&(i<0||i>=this.getNumItems()))return;const s=this.getItemData(i);t.slide=new j(s,i,this),i===this.currIndex&&(this.currSlide=t.slide),t.slide.append(t.el)}getViewportCenterPoint(){return{x:this.viewportSize.x/2,y:this.viewportSize.y/2}}updateSize(t){if(this.isDestroying)return;const i=B(this.options,this);!t&&x(i,this._prevViewportSize)||(p(this._prevViewportSize,i),this.dispatch("beforeResize"),p(this.viewportSize,this._prevViewportSize),this._updatePageScrollOffset(),this.dispatch("viewportSize"),this.mainScroll.resize(this.opener.isOpen),!this.hasMouse&&window.matchMedia("(any-hover: hover)").matches&&this.mouseDetected(),this.dispatch("resize"))}applyBgOpacity(t){this.bgOpacity=Math.max(t,0),this.bg&&(this.bg.style.opacity=String(this.bgOpacity*this.options.bgOpacity))}mouseDetected(){if(!this.hasMouse){var t;this.hasMouse=!0,(t=this.element)===null||t===void 0||t.classList.add("pswp--has_mouse")}}_handlePageResize(){this.updateSize(),/iPhone|iPad|iPod/i.test(window.navigator.userAgent)&&setTimeout(()=>{this.updateSize()},500)}_updatePageScrollOffset(){this.setScrollOffset(0,window.pageYOffset)}setScrollOffset(t,i){this.offset.x=t,this.offset.y=i,this.dispatch("updateScrollOffset")}_createMainStructure(){this.element=f("pswp","div"),this.element.setAttribute("tabindex","-1"),this.element.setAttribute("role","dialog"),this.template=this.element,this.bg=f("pswp__bg","div",this.element),this.scrollWrap=f("pswp__scroll-wrap","section",this.element),this.container=f("pswp__container","div",this.scrollWrap),this.scrollWrap.setAttribute("aria-roledescription","carousel"),this.container.setAttribute("aria-live","off"),this.container.setAttribute("id","pswp__items"),this.mainScroll.appendHolders(),this.ui=new zt(this),this.ui.init(),(this.options.appendToEl||document.body).appendChild(this.element)}getThumbBounds(){return Zt(this.currIndex,this.currSlide?this.currSlide.data:this._initialItemData,this)}canLoop(){return this.options.loop&&this.getNumItems()>2}_prepareOptions(t){return window.matchMedia("(prefers-reduced-motion), (update: slow)").matches&&(t.showHideAnimationType="none",t.zoomAnimationDuration=0),{...Vt,...t}}}export{$t as default}; diff --git a/assets/photoswipe.esm-i2ohwMnJ.js b/assets/photoswipe.esm-i2ohwMnJ.js deleted file mode 100644 index d46f602..0000000 --- a/assets/photoswipe.esm-i2ohwMnJ.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * PhotoSwipe 5.4.3 - https://photoswipe.com - * (c) 2023 Dmytro Semenov - */function f(r,t,i){const e=document.createElement(t);return r&&(e.className=r),i&&i.appendChild(e),e}function p(r,t){return r.x=t.x,r.y=t.y,t.id!==void 0&&(r.id=t.id),r}function M(r){r.x=Math.round(r.x),r.y=Math.round(r.y)}function A(r,t){const i=Math.abs(r.x-t.x),e=Math.abs(r.y-t.y);return Math.sqrt(i*i+e*e)}function x(r,t){return r.x===t.x&&r.y===t.y}function I(r,t,i){return Math.min(Math.max(r,t),i)}function b(r,t,i){let e=`translate3d(${r}px,${t||0}px,0)`;return i!==void 0&&(e+=` scale3d(${i},${i},1)`),e}function y(r,t,i,e){r.style.transform=b(t,i,e)}const $="cubic-bezier(.4,0,.22,1)";function R(r,t,i,e){r.style.transition=t?`${t} ${i}ms ${e||$}`:"none"}function L(r,t,i){r.style.width=typeof t=="number"?`${t}px`:t,r.style.height=typeof i=="number"?`${i}px`:i}function U(r){R(r)}function q(r){return"decode"in r?r.decode().catch(()=>{}):r.complete?Promise.resolve(r):new Promise((t,i)=>{r.onload=()=>t(r),r.onerror=i})}const _={IDLE:"idle",LOADING:"loading",LOADED:"loaded",ERROR:"error"};function G(r){return"button"in r&&r.button===1||r.ctrlKey||r.metaKey||r.altKey||r.shiftKey}function K(r,t,i=document){let e=[];if(r instanceof Element)e=[r];else if(r instanceof NodeList||Array.isArray(r))e=Array.from(r);else{const s=typeof r=="string"?r:t;s&&(e=Array.from(i.querySelectorAll(s)))}return e}function C(){return!!(navigator.vendor&&navigator.vendor.match(/apple/i))}let F=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>{F=!0}}))}catch{}class X{constructor(){this._pool=[]}add(t,i,e,s){this._toggleListener(t,i,e,s)}remove(t,i,e,s){this._toggleListener(t,i,e,s,!0)}removeAll(){this._pool.forEach(t=>{this._toggleListener(t.target,t.type,t.listener,t.passive,!0,!0)}),this._pool=[]}_toggleListener(t,i,e,s,n,o){if(!t)return;const a=n?"removeEventListener":"addEventListener";i.split(" ").forEach(l=>{if(l){o||(n?this._pool=this._pool.filter(d=>d.type!==l||d.listener!==e||d.target!==t):this._pool.push({target:t,type:l,listener:e,passive:s}));const c=F?{passive:s||!1}:!1;t[a](l,e,c)}})}}function B(r,t){if(r.getViewportSizeFn){const i=r.getViewportSizeFn(r,t);if(i)return i}return{x:document.documentElement.clientWidth,y:window.innerHeight}}function S(r,t,i,e,s){let n=0;if(t.paddingFn)n=t.paddingFn(i,e,s)[r];else if(t.padding)n=t.padding[r];else{const o="padding"+r[0].toUpperCase()+r.slice(1);t[o]&&(n=t[o])}return Number(n)||0}function N(r,t,i,e){return{x:t.x-S("left",r,t,i,e)-S("right",r,t,i,e),y:t.y-S("top",r,t,i,e)-S("bottom",r,t,i,e)}}class Y{constructor(t){this.slide=t,this.currZoomLevel=1,this.center={x:0,y:0},this.max={x:0,y:0},this.min={x:0,y:0}}update(t){this.currZoomLevel=t,this.slide.width?(this._updateAxis("x"),this._updateAxis("y"),this.slide.pswp.dispatch("calcBounds",{slide:this.slide})):this.reset()}_updateAxis(t){const{pswp:i}=this.slide,e=this.slide[t==="x"?"width":"height"]*this.currZoomLevel,n=S(t==="x"?"left":"top",i.options,i.viewportSize,this.slide.data,this.slide.index),o=this.slide.panAreaSize[t];this.center[t]=Math.round((o-e)/2)+n,this.max[t]=e>o?Math.round(o-e)+n:this.center[t],this.min[t]=e>o?n:this.center[t]}reset(){this.center.x=0,this.center.y=0,this.max.x=0,this.max.y=0,this.min.x=0,this.min.y=0}correctPan(t,i){return I(i,this.max[t],this.min[t])}}const T=4e3;class k{constructor(t,i,e,s){this.pswp=s,this.options=t,this.itemData=i,this.index=e,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,e){const s={x:t,y:i};this.elementSize=s,this.panAreaSize=e;const n=e.x/s.x,o=e.y/s.y;this.fit=Math.min(1,no?n:o),this.vFill=Math.min(1,o),this.initial=this._getInitial(),this.secondary=this._getSecondary(),this.max=Math.max(this.initial,this.secondary,this._getMax()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}_parseZoomLevelOption(t){const i=t+"ZoomLevel",e=this.options[i];if(e)return typeof e=="function"?e(this):e==="fill"?this.fill:e==="fit"?this.fit:Number(e)}_getSecondary(){let t=this._parseZoomLevelOption("secondary");return t||(t=Math.min(1,this.fit*3),this.elementSize&&t*this.elementSize.x>T&&(t=T/this.elementSize.x),t)}_getInitial(){return this._parseZoomLevelOption("initial")||this.fit}_getMax(){return this._parseZoomLevelOption("max")||Math.max(1,this.fit*4)}}class j{constructor(t,i,e){this.data=t,this.index=i,this.pswp=e,this.isActive=i===e.currIndex,this.currentResolution=0,this.panAreaSize={x:0,y:0},this.pan={x:0,y:0},this.isFirstSlide=this.isActive&&!e.opener.isOpen,this.zoomLevels=new k(e.options,t,i,e),this.pswp.dispatch("gettingData",{slide:this,data:this.data,index:i}),this.content=this.pswp.contentLoader.getContentBySlide(this),this.container=f("pswp__zoom-wrap","div"),this.holderElement=null,this.currZoomLevel=1,this.width=this.content.width,this.height=this.content.height,this.heavyAppended=!1,this.bounds=new Y(this),this.prevDisplayedWidth=-1,this.prevDisplayedHeight=-1,this.pswp.dispatch("slideInit",{slide:this})}setIsActive(t){t&&!this.isActive?this.activate():!t&&this.isActive&&this.deactivate()}append(t){this.holderElement=t,this.container.style.transformOrigin="0 0",this.data&&(this.calculateSize(),this.load(),this.updateContentSize(),this.appendHeavy(),this.holderElement.appendChild(this.container),this.zoomAndPanToInitial(),this.pswp.dispatch("firstZoomPan",{slide:this}),this.applyCurrentZoomPan(),this.pswp.dispatch("afterSetContent",{slide:this}),this.isActive&&this.activate())}load(){this.content.load(!1),this.pswp.dispatch("slideLoad",{slide:this})}appendHeavy(){const{pswp:t}=this,i=!0;this.heavyAppended||!t.opener.isOpen||t.mainScroll.isShifted()||!this.isActive&&!i||this.pswp.dispatch("appendHeavy",{slide:this}).defaultPrevented||(this.heavyAppended=!0,this.content.append(),this.pswp.dispatch("appendHeavyContent",{slide:this}))}activate(){this.isActive=!0,this.appendHeavy(),this.content.activate(),this.pswp.dispatch("slideActivate",{slide:this})}deactivate(){this.isActive=!1,this.content.deactivate(),this.currZoomLevel!==this.zoomLevels.initial&&this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize(),this.pswp.dispatch("slideDeactivate",{slide:this})}destroy(){this.content.hasSlide=!1,this.content.remove(),this.container.remove(),this.pswp.dispatch("slideDestroy",{slide:this})}resize(){this.currZoomLevel===this.zoomLevels.initial||!this.isActive?(this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize()):(this.calculateSize(),this.bounds.update(this.currZoomLevel),this.panTo(this.pan.x,this.pan.y))}updateContentSize(t){const i=this.currentResolution||this.zoomLevels.initial;if(!i)return;const e=Math.round(this.width*i)||this.pswp.viewportSize.x,s=Math.round(this.height*i)||this.pswp.viewportSize.y;!this.sizeChanged(e,s)&&!t||this.content.setDisplayedSize(e,s)}sizeChanged(t,i){return t!==this.prevDisplayedWidth||i!==this.prevDisplayedHeight?(this.prevDisplayedWidth=t,this.prevDisplayedHeight=i,!0):!1}getPlaceholderElement(){var t;return(t=this.content.placeholder)===null||t===void 0?void 0:t.element}zoomTo(t,i,e,s){const{pswp:n}=this;if(!this.isZoomable()||n.mainScroll.isShifted())return;n.dispatch("beforeZoomTo",{destZoomLevel:t,centerPoint:i,transitionDuration:e}),n.animations.stopAllPan();const o=this.currZoomLevel;s||(t=I(t,this.zoomLevels.min,this.zoomLevels.max)),this.setZoomLevel(t),this.pan.x=this.calculateZoomToPanOffset("x",i,o),this.pan.y=this.calculateZoomToPanOffset("y",i,o),M(this.pan);const a=()=>{this._setResolution(t),this.applyCurrentZoomPan()};e?n.animations.startTransition({isPan:!0,name:"zoomTo",target:this.container,transform:this.getCurrentTransform(),onComplete:a,duration:e,easing:n.options.easing}):a()}toggleZoom(t){this.zoomTo(this.currZoomLevel===this.zoomLevels.initial?this.zoomLevels.secondary:this.zoomLevels.initial,t,this.pswp.options.zoomAnimationDuration)}setZoomLevel(t){this.currZoomLevel=t,this.bounds.update(this.currZoomLevel)}calculateZoomToPanOffset(t,i,e){if(this.bounds.max[t]-this.bounds.min[t]===0)return this.bounds.center[t];i||(i=this.pswp.getViewportCenterPoint()),e||(e=this.zoomLevels.initial);const n=this.currZoomLevel/e;return this.bounds.correctPan(t,(this.pan[t]-i[t])*n+i[t])}panTo(t,i){this.pan.x=this.bounds.correctPan("x",t),this.pan.y=this.bounds.correctPan("y",i),this.applyCurrentZoomPan()}isPannable(){return!!this.width&&this.currZoomLevel>this.zoomLevels.fit}isZoomable(){return!!this.width&&this.content.isZoomable()}applyCurrentZoomPan(){this._applyZoomTransform(this.pan.x,this.pan.y,this.currZoomLevel),this===this.pswp.currSlide&&this.pswp.dispatch("zoomPanUpdate",{slide:this})}zoomAndPanToInitial(){this.currZoomLevel=this.zoomLevels.initial,this.bounds.update(this.currZoomLevel),p(this.pan,this.bounds.center),this.pswp.dispatch("initialZoomPan",{slide:this})}_applyZoomTransform(t,i,e){e/=this.currentResolution||this.zoomLevels.initial,y(this.container,t,i,e)}calculateSize(){const{pswp:t}=this;p(this.panAreaSize,N(t.options,t.viewportSize,this.data,this.index)),this.zoomLevels.update(this.width,this.height,this.panAreaSize),t.dispatch("calcSlideSize",{slide:this})}getCurrentTransform(){const t=this.currZoomLevel/(this.currentResolution||this.zoomLevels.initial);return b(this.pan.x,this.pan.y,t)}_setResolution(t){t!==this.currentResolution&&(this.currentResolution=t,this.updateContentSize(),this.pswp.dispatch("resolutionChanged"))}}const Q=.35,J=.6,z=.4,E=.5;function tt(r,t){return r*t/(1-t)}class it{constructor(t){this.gestures=t,this.pswp=t.pswp,this.startPan={x:0,y:0}}start(){this.pswp.currSlide&&p(this.startPan,this.pswp.currSlide.pan),this.pswp.animations.stopAll()}change(){const{p1:t,prevP1:i,dragAxis:e}=this.gestures,{currSlide:s}=this.pswp;if(e==="y"&&this.pswp.options.closeOnVerticalDrag&&s&&s.currZoomLevel<=s.zoomLevels.fit&&!this.gestures.isMultitouch){const n=s.pan.y+(t.y-i.y);if(!this.pswp.dispatch("verticalDrag",{panY:n}).defaultPrevented){this._setPanWithFriction("y",n,J);const o=1-Math.abs(this._getVerticalDragRatio(s.pan.y));this.pswp.applyBgOpacity(o),s.applyCurrentZoomPan()}}else this._panOrMoveMainScroll("x")||(this._panOrMoveMainScroll("y"),s&&(M(s.pan),s.applyCurrentZoomPan()))}end(){const{velocity:t}=this.gestures,{mainScroll:i,currSlide:e}=this.pswp;let s=0;if(this.pswp.animations.stopAll(),i.isShifted()){const o=(i.x-i.getCurrSlideX())/this.pswp.viewportSize.x;t.x<-E&&o<0||t.x<.1&&o<-.5?(s=1,t.x=Math.min(t.x,0)):(t.x>E&&o>0||t.x>-.1&&o>.5)&&(s=-1,t.x=Math.max(t.x,0)),i.moveIndexBy(s,!0,t.x)}e&&e.currZoomLevel>e.zoomLevels.max||this.gestures.isMultitouch?this.gestures.zoomLevels.correctZoomPan(!0):(this._finishPanGestureForAxis("x"),this._finishPanGestureForAxis("y"))}_finishPanGestureForAxis(t){const{velocity:i}=this.gestures,{currSlide:e}=this.pswp;if(!e)return;const{pan:s,bounds:n}=e,o=s[t],a=this.pswp.bgOpacity<1&&t==="y",h=.995,l=o+tt(i[t],h);if(a){const v=this._getVerticalDragRatio(o),w=this._getVerticalDragRatio(l);if(v<0&&w<-z||v>0&&w>z){this.pswp.close();return}}const c=n.correctPan(t,l);if(o===c)return;const d=c===l?1:.82,u=this.pswp.bgOpacity,m=c-o;this.pswp.animations.startSpring({name:"panGesture"+t,isPan:!0,start:o,end:c,velocity:i[t],dampingRatio:d,onUpdate:v=>{if(a&&this.pswp.bgOpacity<1){const w=1-(c-v)/m;this.pswp.applyBgOpacity(I(u+(1-u)*w,0,1))}s[t]=Math.floor(v),e.applyCurrentZoomPan()}})}_panOrMoveMainScroll(t){const{p1:i,dragAxis:e,prevP1:s,isMultitouch:n}=this.gestures,{currSlide:o,mainScroll:a}=this.pswp,h=i[t]-s[t],l=a.x+h;if(!h||!o)return!1;if(t==="x"&&!o.isPannable()&&!n)return a.moveTo(l,!0),!0;const{bounds:c}=o,d=o.pan[t]+h;if(this.pswp.options.allowPanToNext&&e==="x"&&t==="x"&&!n){const u=a.getCurrSlideX(),m=a.x-u,v=h>0,w=!v;if(d>c.min[t]&&v){if(c.min[t]<=this.startPan[t])return a.moveTo(l,!0),!0;this._setPanWithFriction(t,d)}else if(d0)return a.moveTo(Math.max(l,u),!0),!0;if(m<0)return a.moveTo(Math.min(l,u),!0),!0}else this._setPanWithFriction(t,d)}else t==="y"?!a.isShifted()&&c.min.y!==c.max.y&&this._setPanWithFriction(t,d):this._setPanWithFriction(t,d);return!1}_getVerticalDragRatio(t){var i,e;return(t-((i=(e=this.pswp.currSlide)===null||e===void 0?void 0:e.bounds.center.y)!==null&&i!==void 0?i:0))/(this.pswp.viewportSize.y/3)}_setPanWithFriction(t,i,e){const{currSlide:s}=this.pswp;if(!s)return;const{pan:n,bounds:o}=s;if(o.correctPan(t,i)!==i||e){const h=Math.round(i-n[t]);n[t]+=h*(e||Q)}else n[t]=i}}const et=.05,st=.15;function O(r,t,i){return r.x=(t.x+i.x)/2,r.y=(t.y+i.y)/2,r}class nt{constructor(t){this.gestures=t,this._startPan={x:0,y:0},this._startZoomPoint={x:0,y:0},this._zoomPoint={x:0,y:0},this._wasOverFitZoomLevel=!1,this._startZoomLevel=1}start(){const{currSlide:t}=this.gestures.pswp;t&&(this._startZoomLevel=t.currZoomLevel,p(this._startPan,t.pan)),this.gestures.pswp.animations.stopAllPan(),this._wasOverFitZoomLevel=!1}change(){const{p1:t,startP1:i,p2:e,startP2:s,pswp:n}=this.gestures,{currSlide:o}=n;if(!o)return;const a=o.zoomLevels.min,h=o.zoomLevels.max;if(!o.isZoomable()||n.mainScroll.isShifted())return;O(this._startZoomPoint,i,s),O(this._zoomPoint,t,e);let l=1/A(i,s)*A(t,e)*this._startZoomLevel;if(l>o.zoomLevels.initial+o.zoomLevels.initial/15&&(this._wasOverFitZoomLevel=!0),lh&&(l=h+(l-h)*et);o.pan.x=this._calculatePanForZoomLevel("x",l),o.pan.y=this._calculatePanForZoomLevel("y",l),o.setZoomLevel(l),o.applyCurrentZoomPan()}end(){const{pswp:t}=this.gestures,{currSlide:i}=t;(!i||i.currZoomLevele.zoomLevels.max?n=e.zoomLevels.max:(o=!1,n=s);const a=i.bgOpacity,h=i.bgOpacity<1,l=p({x:0,y:0},e.pan);let c=p({x:0,y:0},l);t&&(this._zoomPoint.x=0,this._zoomPoint.y=0,this._startZoomPoint.x=0,this._startZoomPoint.y=0,this._startZoomLevel=s,p(this._startPan,l)),o&&(c={x:this._calculatePanForZoomLevel("x",n),y:this._calculatePanForZoomLevel("y",n)}),e.setZoomLevel(n),c={x:e.bounds.correctPan("x",c.x),y:e.bounds.correctPan("y",c.y)},e.setZoomLevel(s);const d=!x(c,l);if(!d&&!o&&!h){e._setResolution(n),e.applyCurrentZoomPan();return}i.animations.stopAllPan(),i.animations.startSpring({isPan:!0,start:0,end:1e3,velocity:0,dampingRatio:1,naturalFrequency:40,onUpdate:u=>{if(u/=1e3,d||o){if(d&&(e.pan.x=l.x+(c.x-l.x)*u,e.pan.y=l.y+(c.y-l.y)*u),o){const m=s+(n-s)*u;e.setZoomLevel(m)}e.applyCurrentZoomPan()}h&&i.bgOpacity<1&&i.applyBgOpacity(I(a+(1-a)*u,0,1))},onComplete:()=>{e._setResolution(n),e.applyCurrentZoomPan()}})}}function Z(r){return!!r.target.closest(".pswp__container")}class ot{constructor(t){this.gestures=t}click(t,i){const e=i.target.classList,s=e.contains("pswp__img"),n=e.contains("pswp__item")||e.contains("pswp__zoom-wrap");s?this._doClickOrTapAction("imageClick",t,i):n&&this._doClickOrTapAction("bgClick",t,i)}tap(t,i){Z(i)&&this._doClickOrTapAction("tap",t,i)}doubleTap(t,i){Z(i)&&this._doClickOrTapAction("doubleTap",t,i)}_doClickOrTapAction(t,i,e){var s;const{pswp:n}=this.gestures,{currSlide:o}=n,a=t+"Action",h=n.options[a];if(!n.dispatch(a,{point:i,originalEvent:e}).defaultPrevented){if(typeof h=="function"){h.call(n,i,e);return}switch(h){case"close":case"next":n[h]();break;case"zoom":o==null||o.toggleZoom(i);break;case"zoom-or-close":o!=null&&o.isZoomable()&&o.zoomLevels.secondary!==o.zoomLevels.initial?o.toggleZoom(i):n.options.clickToCloseNonZoomable&&n.close();break;case"toggle-controls":(s=this.gestures.pswp.element)===null||s===void 0||s.classList.toggle("pswp--ui-visible");break}}}}const rt=10,at=300,ht=25;class lt{constructor(t){this.pswp=t,this.dragAxis=null,this.p1={x:0,y:0},this.p2={x:0,y:0},this.prevP1={x:0,y:0},this.prevP2={x:0,y:0},this.startP1={x:0,y:0},this.startP2={x:0,y:0},this.velocity={x:0,y:0},this._lastStartP1={x:0,y:0},this._intervalP1={x:0,y:0},this._numActivePoints=0,this._ongoingPointers=[],this._touchEventEnabled="ontouchstart"in window,this._pointerEventEnabled=!!window.PointerEvent,this.supportsTouch=this._touchEventEnabled||this._pointerEventEnabled&&navigator.maxTouchPoints>1,this._numActivePoints=0,this._intervalTime=0,this._velocityCalculated=!1,this.isMultitouch=!1,this.isDragging=!1,this.isZooming=!1,this.raf=null,this._tapTimer=null,this.supportsTouch||(t.options.allowPanToNext=!1),this.drag=new it(this),this.zoomLevels=new nt(this),this.tapHandler=new ot(this),t.on("bindEvents",()=>{t.events.add(t.scrollWrap,"click",this._onClick.bind(this)),this._pointerEventEnabled?this._bindEvents("pointer","down","up","cancel"):this._touchEventEnabled?(this._bindEvents("touch","start","end","cancel"),t.scrollWrap&&(t.scrollWrap.ontouchmove=()=>{},t.scrollWrap.ontouchend=()=>{})):this._bindEvents("mouse","down","up")})}_bindEvents(t,i,e,s){const{pswp:n}=this,{events:o}=n,a=s?t+s:"";o.add(n.scrollWrap,t+i,this.onPointerDown.bind(this)),o.add(window,t+"move",this.onPointerMove.bind(this)),o.add(window,t+e,this.onPointerUp.bind(this)),a&&o.add(n.scrollWrap,a,this.onPointerUp.bind(this))}onPointerDown(t){const i=t.type==="mousedown"||t.pointerType==="mouse";if(i&&t.button>0)return;const{pswp:e}=this;if(!e.opener.isOpen){t.preventDefault();return}e.dispatch("pointerDown",{originalEvent:t}).defaultPrevented||(i&&(e.mouseDetected(),this._preventPointerEventBehaviour(t,"down")),e.animations.stopAll(),this._updatePoints(t,"down"),this._numActivePoints===1&&(this.dragAxis=null,p(this.startP1,this.p1)),this._numActivePoints>1?(this._clearTapTimer(),this.isMultitouch=!0):this.isMultitouch=!1)}onPointerMove(t){this._preventPointerEventBehaviour(t,"move"),this._numActivePoints&&(this._updatePoints(t,"move"),!this.pswp.dispatch("pointerMove",{originalEvent:t}).defaultPrevented&&(this._numActivePoints===1&&!this.isDragging?(this.dragAxis||this._calculateDragDirection(),this.dragAxis&&!this.isDragging&&(this.isZooming&&(this.isZooming=!1,this.zoomLevels.end()),this.isDragging=!0,this._clearTapTimer(),this._updateStartPoints(),this._intervalTime=Date.now(),this._velocityCalculated=!1,p(this._intervalP1,this.p1),this.velocity.x=0,this.velocity.y=0,this.drag.start(),this._rafStopLoop(),this._rafRenderLoop())):this._numActivePoints>1&&!this.isZooming&&(this._finishDrag(),this.isZooming=!0,this._updateStartPoints(),this.zoomLevels.start(),this._rafStopLoop(),this._rafRenderLoop())))}_finishDrag(){this.isDragging&&(this.isDragging=!1,this._velocityCalculated||this._updateVelocity(!0),this.drag.end(),this.dragAxis=null)}onPointerUp(t){this._numActivePoints&&(this._updatePoints(t,"up"),!this.pswp.dispatch("pointerUp",{originalEvent:t}).defaultPrevented&&(this._numActivePoints===0&&(this._rafStopLoop(),this.isDragging?this._finishDrag():!this.isZooming&&!this.isMultitouch&&this._finishTap(t)),this._numActivePoints<2&&this.isZooming&&(this.isZooming=!1,this.zoomLevels.end(),this._numActivePoints===1&&(this.dragAxis=null,this._updateStartPoints()))))}_rafRenderLoop(){(this.isDragging||this.isZooming)&&(this._updateVelocity(),this.isDragging?x(this.p1,this.prevP1)||this.drag.change():(!x(this.p1,this.prevP1)||!x(this.p2,this.prevP2))&&this.zoomLevels.change(),this._updatePrevPoints(),this.raf=requestAnimationFrame(this._rafRenderLoop.bind(this)))}_updateVelocity(t){const i=Date.now(),e=i-this._intervalTime;e<50&&!t||(this.velocity.x=this._getVelocity("x",e),this.velocity.y=this._getVelocity("y",e),this._intervalTime=i,p(this._intervalP1,this.p1),this._velocityCalculated=!0)}_finishTap(t){const{mainScroll:i}=this.pswp;if(i.isShifted()){i.moveIndexBy(0,!0);return}if(t.type.indexOf("cancel")>0)return;if(t.type==="mouseup"||t.pointerType==="mouse"){this.tapHandler.click(this.startP1,t);return}const e=this.pswp.options.doubleTapAction?at:0;this._tapTimer?(this._clearTapTimer(),A(this._lastStartP1,this.startP1){this.tapHandler.tap(this.startP1,t),this._clearTapTimer()},e))}_clearTapTimer(){this._tapTimer&&(clearTimeout(this._tapTimer),this._tapTimer=null)}_getVelocity(t,i){const e=this.p1[t]-this._intervalP1[t];return Math.abs(e)>1&&i>5?e/i:0}_rafStopLoop(){this.raf&&(cancelAnimationFrame(this.raf),this.raf=null)}_preventPointerEventBehaviour(t,i){this.pswp.applyFilters("preventPointerEvent",!0,t,i)&&t.preventDefault()}_updatePoints(t,i){if(this._pointerEventEnabled){const e=t,s=this._ongoingPointers.findIndex(n=>n.id===e.pointerId);i==="up"&&s>-1?this._ongoingPointers.splice(s,1):i==="down"&&s===-1?this._ongoingPointers.push(this._convertEventPosToPoint(e,{x:0,y:0})):s>-1&&this._convertEventPosToPoint(e,this._ongoingPointers[s]),this._numActivePoints=this._ongoingPointers.length,this._numActivePoints>0&&p(this.p1,this._ongoingPointers[0]),this._numActivePoints>1&&p(this.p2,this._ongoingPointers[1])}else{const e=t;this._numActivePoints=0,e.type.indexOf("touch")>-1?e.touches&&e.touches.length>0&&(this._convertEventPosToPoint(e.touches[0],this.p1),this._numActivePoints++,e.touches.length>1&&(this._convertEventPosToPoint(e.touches[1],this.p2),this._numActivePoints++)):(this._convertEventPosToPoint(t,this.p1),i==="up"?this._numActivePoints=0:this._numActivePoints++)}}_updatePrevPoints(){p(this.prevP1,this.p1),p(this.prevP2,this.p2)}_updateStartPoints(){p(this.startP1,this.p1),p(this.startP2,this.p2),this._updatePrevPoints()}_calculateDragDirection(){if(this.pswp.mainScroll.isShifted())this.dragAxis="x";else{const t=Math.abs(this.p1.x-this.startP1.x)-Math.abs(this.p1.y-this.startP1.y);if(t!==0){const i=t>0?"x":"y";Math.abs(this.p1[i]-this.startP1[i])>=rt&&(this.dragAxis=i)}}}_convertEventPosToPoint(t,i){return i.x=t.pageX-this.pswp.offset.x,i.y=t.pageY-this.pswp.offset.y,"pointerId"in t?i.id=t.pointerId:t.identifier!==void 0&&(i.id=t.identifier),i}_onClick(t){this.pswp.mainScroll.isShifted()&&(t.preventDefault(),t.stopPropagation())}}const ct=.35;class dt{constructor(t){this.pswp=t,this.x=0,this.slideWidth=0,this._currPositionIndex=0,this._prevPositionIndex=0,this._containerShiftIndex=-1,this.itemHolders=[]}resize(t){const{pswp:i}=this,e=Math.round(i.viewportSize.x+i.viewportSize.x*i.options.spacing),s=e!==this.slideWidth;s&&(this.slideWidth=e,this.moveTo(this.getCurrSlideX())),this.itemHolders.forEach((n,o)=>{s&&y(n.el,(o+this._containerShiftIndex)*this.slideWidth),t&&n.slide&&n.slide.resize()})}resetPosition(){this._currPositionIndex=0,this._prevPositionIndex=0,this.slideWidth=0,this._containerShiftIndex=-1}appendHolders(){this.itemHolders=[];for(let t=0;t<3;t++){const i=f("pswp__item","div",this.pswp.container);i.setAttribute("role","group"),i.setAttribute("aria-roledescription","slide"),i.setAttribute("aria-hidden","true"),i.style.display=t===1?"block":"none",this.itemHolders.push({el:i})}}canBeSwiped(){return this.pswp.getNumItems()>1}moveIndexBy(t,i,e){const{pswp:s}=this;let n=s.potentialIndex+t;const o=s.getNumItems();if(s.canLoop()){n=s.getLoopedIndex(n);const h=(t+o)%o;h<=o/2?t=h:t=h-o}else n<0?n=0:n>=o&&(n=o-1),t=n-s.potentialIndex;s.potentialIndex=n,this._currPositionIndex-=t,s.animations.stopMainScroll();const a=this.getCurrSlideX();if(!i)this.moveTo(a),this.updateCurrItem();else{s.animations.startSpring({isMainScroll:!0,start:this.x,end:a,velocity:e||0,naturalFrequency:30,dampingRatio:1,onUpdate:l=>{this.moveTo(l)},onComplete:()=>{this.updateCurrItem(),s.appendHeavy()}});let h=s.potentialIndex-s.currIndex;if(s.canLoop()){const l=(h+o)%o;l<=o/2?h=l:h=l-o}Math.abs(h)>1&&this.updateCurrItem()}return!!t}getCurrSlideX(){return this.slideWidth*this._currPositionIndex}isShifted(){return this.x!==this.getCurrSlideX()}updateCurrItem(){var t;const{pswp:i}=this,e=this._prevPositionIndex-this._currPositionIndex;if(!e)return;this._prevPositionIndex=this._currPositionIndex,i.currIndex=i.potentialIndex;let s=Math.abs(e),n;s>=3&&(this._containerShiftIndex+=e+(e>0?-3:3),s=3);for(let o=0;o0?(n=this.itemHolders.shift(),n&&(this.itemHolders[2]=n,this._containerShiftIndex++,y(n.el,(this._containerShiftIndex+2)*this.slideWidth),i.setContent(n,i.currIndex-s+o+2))):(n=this.itemHolders.pop(),n&&(this.itemHolders.unshift(n),this._containerShiftIndex--,y(n.el,this._containerShiftIndex*this.slideWidth),i.setContent(n,i.currIndex+s-o-2)));Math.abs(this._containerShiftIndex)>50&&!this.isShifted()&&(this.resetPosition(),this.resize()),i.animations.stopAllPan(),this.itemHolders.forEach((o,a)=>{o.slide&&o.slide.setIsActive(a===1)}),i.currSlide=(t=this.itemHolders[1])===null||t===void 0?void 0:t.slide,i.contentLoader.updateLazy(e),i.currSlide&&i.currSlide.applyCurrentZoomPan(),i.dispatch("change")}moveTo(t,i){if(!this.pswp.canLoop()&&i){let e=(this.slideWidth*this._currPositionIndex-t)/this.slideWidth;e+=this.pswp.currIndex;const s=Math.round(t-this.x);(e<0&&s>0||e>=this.pswp.getNumItems()-1&&s<0)&&(t=this.x+s*ct)}this.x=t,this.pswp.container&&y(this.pswp.container,t),this.pswp.dispatch("moveMainScroll",{x:t,dragging:i??!1})}}const pt={Escape:27,z:90,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,Tab:9},g=(r,t)=>t?r:pt[r];class ut{constructor(t){this.pswp=t,this._wasFocused=!1,t.on("bindEvents",()=>{t.options.trapFocus&&(t.options.initialPointerPos||this._focusRoot(),t.events.add(document,"focusin",this._onFocusIn.bind(this))),t.events.add(document,"keydown",this._onKeyDown.bind(this))});const i=document.activeElement;t.on("destroy",()=>{t.options.returnFocus&&i&&this._wasFocused&&i.focus()})}_focusRoot(){!this._wasFocused&&this.pswp.element&&(this.pswp.element.focus(),this._wasFocused=!0)}_onKeyDown(t){const{pswp:i}=this;if(i.dispatch("keydown",{originalEvent:t}).defaultPrevented||G(t))return;let e,s,n=!1;const o="key"in t;switch(o?t.key:t.keyCode){case g("Escape",o):i.options.escKey&&(e="close");break;case g("z",o):e="toggleZoom";break;case g("ArrowLeft",o):s="x";break;case g("ArrowUp",o):s="y";break;case g("ArrowRight",o):s="x",n=!0;break;case g("ArrowDown",o):n=!0,s="y";break;case g("Tab",o):this._focusRoot();break}if(s){t.preventDefault();const{currSlide:a}=i;i.options.arrowKeys&&s==="x"&&i.getNumItems()>1?e=n?"next":"prev":a&&a.currZoomLevel>a.zoomLevels.fit&&(a.pan[s]+=n?-80:80,a.panTo(a.pan.x,a.pan.y))}e&&(t.preventDefault(),i[e]())}_onFocusIn(t){const{template:i}=this.pswp;i&&document!==t.target&&i!==t.target&&!i.contains(t.target)&&i.focus()}}const mt="cubic-bezier(.4,0,.22,1)";class ft{constructor(t){var i;this.props=t;const{target:e,onComplete:s,transform:n,onFinish:o=()=>{},duration:a=333,easing:h=mt}=t;this.onFinish=o;const l=n?"transform":"opacity",c=(i=t[l])!==null&&i!==void 0?i:"";this._target=e,this._onComplete=s,this._finished=!1,this._onTransitionEnd=this._onTransitionEnd.bind(this),this._helperTimeout=setTimeout(()=>{R(e,l,a,h),this._helperTimeout=setTimeout(()=>{e.addEventListener("transitionend",this._onTransitionEnd,!1),e.addEventListener("transitioncancel",this._onTransitionEnd,!1),this._helperTimeout=setTimeout(()=>{this._finalizeAnimation()},a+500),e.style[l]=c},30)},0)}_onTransitionEnd(t){t.target===this._target&&this._finalizeAnimation()}_finalizeAnimation(){this._finished||(this._finished=!0,this.onFinish(),this._onComplete&&this._onComplete())}destroy(){this._helperTimeout&&clearTimeout(this._helperTimeout),U(this._target),this._target.removeEventListener("transitionend",this._onTransitionEnd,!1),this._target.removeEventListener("transitioncancel",this._onTransitionEnd,!1),this._finished||this._finalizeAnimation()}}const _t=12,vt=.75;class gt{constructor(t,i,e){this.velocity=t*1e3,this._dampingRatio=i||vt,this._naturalFrequency=e||_t,this._dampedFrequency=this._naturalFrequency,this._dampingRatio<1&&(this._dampedFrequency*=Math.sqrt(1-this._dampingRatio*this._dampingRatio))}easeFrame(t,i){let e=0,s;i/=1e3;const n=Math.E**(-this._dampingRatio*this._naturalFrequency*i);if(this._dampingRatio===1)s=this.velocity+this._naturalFrequency*t,e=(t+s*i)*n,this.velocity=e*-this._naturalFrequency+s*n;else if(this._dampingRatio<1){s=1/this._dampedFrequency*(this._dampingRatio*this._naturalFrequency*t+this.velocity);const o=Math.cos(this._dampedFrequency*i),a=Math.sin(this._dampedFrequency*i);e=n*(t*o+s*a),this.velocity=e*-this._naturalFrequency*this._dampingRatio+n*(-this._dampedFrequency*t*a+this._dampedFrequency*s*o)}return e}}class yt{constructor(t){this.props=t,this._raf=0;const{start:i,end:e,velocity:s,onUpdate:n,onComplete:o,onFinish:a=()=>{},dampingRatio:h,naturalFrequency:l}=t;this.onFinish=a;const c=new gt(s,h,l);let d=Date.now(),u=i-e;const m=()=>{this._raf&&(u=c.easeFrame(u,Date.now()-d),Math.abs(u)<1&&Math.abs(c.velocity)<50?(n(e),o&&o(),this.onFinish()):(d=Date.now(),n(u+e),this._raf=requestAnimationFrame(m)))};this._raf=requestAnimationFrame(m)}destroy(){this._raf>=0&&cancelAnimationFrame(this._raf),this._raf=0}}class wt{constructor(){this.activeAnimations=[]}startSpring(t){this._start(t,!0)}startTransition(t){this._start(t)}_start(t,i){const e=i?new yt(t):new ft(t);return this.activeAnimations.push(e),e.onFinish=()=>this.stop(e),e}stop(t){t.destroy();const i=this.activeAnimations.indexOf(t);i>-1&&this.activeAnimations.splice(i,1)}stopAll(){this.activeAnimations.forEach(t=>{t.destroy()}),this.activeAnimations=[]}stopAllPan(){this.activeAnimations=this.activeAnimations.filter(t=>t.props.isPan?(t.destroy(),!1):!0)}stopMainScroll(){this.activeAnimations=this.activeAnimations.filter(t=>t.props.isMainScroll?(t.destroy(),!1):!0)}isPanRunning(){return this.activeAnimations.some(t=>t.props.isPan)}}class Pt{constructor(t){this.pswp=t,t.events.add(t.element,"wheel",this._onWheel.bind(this))}_onWheel(t){t.preventDefault();const{currSlide:i}=this.pswp;let{deltaX:e,deltaY:s}=t;if(i&&!this.pswp.dispatch("wheel",{originalEvent:t}).defaultPrevented)if(t.ctrlKey||this.pswp.options.wheelToZoom){if(i.isZoomable()){let n=-s;t.deltaMode===1?n*=.05:n*=t.deltaMode?1:.002,n=2**n;const o=i.currZoomLevel*n;i.zoomTo(o,{x:t.clientX,y:t.clientY})}}else i.isPannable()&&(t.deltaMode===1&&(e*=18,s*=18),i.panTo(i.pan.x-e,i.pan.y-s))}}function St(r){if(typeof r=="string")return r;if(!r||!r.isCustomSVG)return"";const t=r;let i='",i}class xt{constructor(t,i){var e;const s=i.name||i.className;let n=i.html;if(t.options[s]===!1)return;typeof t.options[s+"SVG"]=="string"&&(n=t.options[s+"SVG"]),t.dispatch("uiElementCreate",{data:i});let o="";i.isButton?(o+="pswp__button ",o+=i.className||`pswp__button--${i.name}`):o+=i.className||`pswp__${i.name}`;let a=i.isButton?i.tagName||"button":i.tagName||"div";a=a.toLowerCase();const h=f(o,a);if(i.isButton){a==="button"&&(h.type="button");let{title:d}=i;const{ariaLabel:u}=i;typeof t.options[s+"Title"]=="string"&&(d=t.options[s+"Title"]),d&&(h.title=d);const m=u||d;m&&h.setAttribute("aria-label",m)}h.innerHTML=St(n),i.onInit&&i.onInit(h,t),i.onClick&&(h.onclick=d=>{typeof i.onClick=="string"?t[i.onClick]():typeof i.onClick=="function"&&i.onClick(d,h,t)});const l=i.appendTo||"bar";let c=t.element;l==="bar"?(t.topBar||(t.topBar=f("pswp__top-bar pswp__hide-on-close","div",t.scrollWrap)),c=t.topBar):(h.classList.add("pswp__hide-on-close"),l==="wrapper"&&(c=t.scrollWrap)),(e=c)===null||e===void 0||e.appendChild(t.applyFilters("uiElement",h,i))}}function H(r,t,i){r.classList.add("pswp__button--arrow"),r.setAttribute("aria-controls","pswp__items"),t.on("change",()=>{t.options.loop||(i?r.disabled=!(t.currIndex0))})}const bt={name:"arrowPrev",className:"pswp__button--arrow--prev",title:"Previous",order:10,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"prev",onInit:H},It={name:"arrowNext",className:"pswp__button--arrow--next",title:"Next",order:11,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"next",onInit:(r,t)=>{H(r,t,!0)}},At={name:"close",title:"Close",order:20,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-close"},onClick:"close"},Lt={name:"zoom",title:"Zoom",order:10,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-zoom"},onClick:"toggleZoom"},Ct={name:"preloader",appendTo:"bar",order:7,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-loading"},onInit:(r,t)=>{let i,e=null;const s=(a,h)=>{r.classList.toggle("pswp__preloader--"+a,h)},n=a=>{i!==a&&(i=a,s("active",a))},o=()=>{var a;if(!((a=t.currSlide)!==null&&a!==void 0&&a.content.isLoading())){n(!1),e&&(clearTimeout(e),e=null);return}e||(e=setTimeout(()=>{var h;n(!!(!((h=t.currSlide)===null||h===void 0)&&h.content.isLoading())),e=null},t.options.preloaderDelay))};t.on("change",o),t.on("loadComplete",a=>{t.currSlide===a.slide&&o()}),t.ui&&(t.ui.updatePreloaderVisibility=o)}},Tt={name:"counter",order:5,onInit:(r,t)=>{t.on("change",()=>{r.innerText=t.currIndex+1+t.options.indexIndicatorSep+t.getNumItems()})}};function D(r,t){r.classList.toggle("pswp--zoomed-in",t)}class zt{constructor(t){this.pswp=t,this.isRegistered=!1,this.uiElementsData=[],this.items=[],this.updatePreloaderVisibility=()=>{},this._lastUpdatedZoomLevel=void 0}init(){const{pswp:t}=this;this.isRegistered=!1,this.uiElementsData=[At,bt,It,Lt,Ct,Tt],t.dispatch("uiRegister"),this.uiElementsData.sort((i,e)=>(i.order||0)-(e.order||0)),this.items=[],this.isRegistered=!0,this.uiElementsData.forEach(i=>{this.registerElement(i)}),t.on("change",()=>{var i;(i=t.element)===null||i===void 0||i.classList.toggle("pswp--one-slide",t.getNumItems()===1)}),t.on("zoomPanUpdate",()=>this._onZoomPanUpdate())}registerElement(t){this.isRegistered?this.items.push(new xt(this.pswp,t)):this.uiElementsData.push(t)}_onZoomPanUpdate(){const{template:t,currSlide:i,options:e}=this.pswp;if(this.pswp.opener.isClosing||!t||!i)return;let{currZoomLevel:s}=i;if(this.pswp.opener.isOpen||(s=i.zoomLevels.initial),s===this._lastUpdatedZoomLevel)return;this._lastUpdatedZoomLevel=s;const n=i.zoomLevels.initial-i.zoomLevels.secondary;if(Math.abs(n)<.01||!i.isZoomable()){D(t,!1),t.classList.remove("pswp--zoom-allowed");return}t.classList.add("pswp--zoom-allowed");const o=s===i.zoomLevels.initial?i.zoomLevels.secondary:i.zoomLevels.initial;D(t,o<=s),(e.imageClickAction==="zoom"||e.imageClickAction==="zoom-or-close")&&t.classList.add("pswp--click-to-zoom")}}function Et(r){const t=r.getBoundingClientRect();return{x:t.left,y:t.top,w:t.width}}function Ot(r,t,i){const e=r.getBoundingClientRect(),s=e.width/t,n=e.height/i,o=s>n?s:n,a=(e.width-t*o)/2,h=(e.height-i*o)/2,l={x:e.left+a,y:e.top+h,w:t*o};return l.innerRect={w:e.width,h:e.height,x:a,y:h},l}function Zt(r,t,i){const e=i.dispatch("thumbBounds",{index:r,itemData:t,instance:i});if(e.thumbBounds)return e.thumbBounds;const{element:s}=t;let n,o;if(s&&i.options.thumbSelector!==!1){const a=i.options.thumbSelector||"img";o=s.matches(a)?s:s.querySelector(a)}return o=i.applyFilters("thumbEl",o,t,r),o&&(t.thumbCropped?n=Ot(o,t.width||t.w||0,t.height||t.h||0):n=Et(o)),i.applyFilters("thumbBounds",n,t,r)}class Dt{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class Mt{constructor(){this._listeners={},this._filters={},this.pswp=void 0,this.options=void 0}addFilter(t,i,e=100){var s,n,o;this._filters[t]||(this._filters[t]=[]),(s=this._filters[t])===null||s===void 0||s.push({fn:i,priority:e}),(n=this._filters[t])===null||n===void 0||n.sort((a,h)=>a.priority-h.priority),(o=this.pswp)===null||o===void 0||o.addFilter(t,i,e)}removeFilter(t,i){this._filters[t]&&(this._filters[t]=this._filters[t].filter(e=>e.fn!==i)),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){var e;return(e=this._filters[t])===null||e===void 0||e.forEach(s=>{i[0]=s.fn.apply(this,i)}),i[0]}on(t,i){var e,s;this._listeners[t]||(this._listeners[t]=[]),(e=this._listeners[t])===null||e===void 0||e.push(i),(s=this.pswp)===null||s===void 0||s.on(t,i)}off(t,i){var e;this._listeners[t]&&(this._listeners[t]=this._listeners[t].filter(s=>i!==s)),(e=this.pswp)===null||e===void 0||e.off(t,i)}dispatch(t,i){var e;if(this.pswp)return this.pswp.dispatch(t,i);const s=new Dt(t,i);return(e=this._listeners[t])===null||e===void 0||e.forEach(n=>{n.call(this,s)}),s}}class Rt{constructor(t,i){if(this.element=f("pswp__img pswp__img--placeholder",t?"img":"div",i),t){const e=this.element;e.decoding="async",e.alt="",e.src=t,e.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,i){this.element&&(this.element.tagName==="IMG"?(L(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=b(0,0,t/250)):L(this.element,t,i))}destroy(){var t;(t=this.element)!==null&&t!==void 0&&t.parentNode&&this.element.remove(),this.element=null}}class Ft{constructor(t,i,e){this.instance=i,this.data=t,this.index=e,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=_.IDLE,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout(()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)},1e3)}load(t,i){if(this.slide&&this.usePlaceholder())if(this.placeholder){const e=this.placeholder.element;e&&!e.parentElement&&this.slide.container.prepend(e)}else{const e=this.instance.applyFilters("placeholderSrc",this.data.msrc&&this.slide.isFirstSlide?this.data.msrc:!1,this);this.placeholder=new Rt(e,this.slide.container)}this.element&&!i||this.instance.dispatch("contentLoad",{content:this,isLazy:t}).defaultPrevented||(this.isImageContent()?(this.element=f("pswp__img","img"),this.displayedImageWidth&&this.loadImage(t)):(this.element=f("pswp__content","div"),this.element.innerHTML=this.data.html||""),i&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var i,e;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const s=this.element;this.updateSrcsetSizes(),this.data.srcset&&(s.srcset=this.data.srcset),s.src=(i=this.data.src)!==null&&i!==void 0?i:"",s.alt=(e=this.data.alt)!==null&&e!==void 0?e:"",this.state=_.LOADING,s.complete?this.onLoaded():(s.onload=()=>{this.onLoaded()},s.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=_.LOADED,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder())}onError(){this.state=_.ERROR,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===_.LOADING,this)}isError(){return this.state===_.ERROR}isImageContent(){return this.type==="image"}setDisplayedSize(t,i){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,i),!this.instance.dispatch("contentResize",{content:this,width:t,height:i}).defaultPrevented&&(L(this.element,t,i),this.isImageContent()&&!this.isError()))){const e=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=i,e?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:i,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==_.ERROR,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,!this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented&&(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var t,i;let e=f("pswp__error-msg","div");e.innerText=(t=(i=this.instance.options)===null||i===void 0?void 0:i.errorMsg)!==null&&t!==void 0?t:"",e=this.instance.applyFilters("contentErrorElement",e,this),this.element=f("pswp__content pswp__error-msg-container","div"),this.element.appendChild(e),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===_.ERROR){this.displayError();return}if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||C())?(this.isDecoding=!0,this.element.decode().catch(()=>{}).finally(()=>{this.isDecoding=!1,this.appendImage()})):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){this.instance.dispatch("contentActivate",{content:this}).defaultPrevented||!this.slide||(this.isImageContent()&&this.isDecoding&&!C()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,!this.instance.dispatch("contentRemove",{content:this}).defaultPrevented&&(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder()))}}const Bt=5;function W(r,t,i){const e=t.createContentFromData(r,i);let s;const{options:n}=t;if(n){s=new k(n,r,-1);let o;t.pswp?o=t.pswp.viewportSize:o=B(n,t);const a=N(n,o,r,i);s.update(e.width,e.height,a)}return e.lazyLoad(),s&&e.setDisplayedSize(Math.ceil(e.width*s.initial),Math.ceil(e.height*s.initial)),e}function Nt(r,t){const i=t.getItemData(r);if(!t.dispatch("lazyLoadSlide",{index:r,itemData:i}).defaultPrevented)return W(i,t,r)}class kt{constructor(t){this.pswp=t,this.limit=Math.max(t.options.preload[0]+t.options.preload[1]+1,Bt),this._cachedItems=[]}updateLazy(t){const{pswp:i}=this;if(i.dispatch("lazyLoad").defaultPrevented)return;const{preload:e}=i.options,s=t===void 0?!0:t>=0;let n;for(n=0;n<=e[1];n++)this.loadSlideByIndex(i.currIndex+(s?n:-n));for(n=1;n<=e[0];n++)this.loadSlideByIndex(i.currIndex+(s?-n:n))}loadSlideByIndex(t){const i=this.pswp.getLoopedIndex(t);let e=this.getContentByIndex(i);e||(e=Nt(i,this.pswp),e&&this.addToCache(e))}getContentBySlide(t){let i=this.getContentByIndex(t.index);return i||(i=this.pswp.createContentFromData(t.data,t.index),this.addToCache(i)),i.setSlide(t),i}addToCache(t){if(this.removeByIndex(t.index),this._cachedItems.push(t),this._cachedItems.length>this.limit){const i=this._cachedItems.findIndex(e=>!e.isAttached&&!e.hasSlide);i!==-1&&this._cachedItems.splice(i,1)[0].destroy()}}removeByIndex(t){const i=this._cachedItems.findIndex(e=>e.index===t);i!==-1&&this._cachedItems.splice(i,1)}getContentByIndex(t){return this._cachedItems.find(i=>i.index===t)}destroy(){this._cachedItems.forEach(t=>t.destroy()),this._cachedItems=[]}}class Ht extends Mt{getNumItems(){var t;let i=0;const e=(t=this.options)===null||t===void 0?void 0:t.dataSource;e&&"length"in e?i=e.length:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),e.items&&(i=e.items.length));const s=this.dispatch("numItems",{dataSource:e,numItems:i});return this.applyFilters("numItems",s.numItems,e)}createContentFromData(t,i){return new Ft(t,this,i)}getItemData(t){var i;const e=(i=this.options)===null||i===void 0?void 0:i.dataSource;let s={};Array.isArray(e)?s=e[t]:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),s=e.items[t]);let n=s;n instanceof Element&&(n=this._domElementToItemData(n));const o=this.dispatch("itemData",{itemData:n||{},index:t});return this.applyFilters("itemData",o.itemData,t)}_getGalleryDOMElements(t){var i,e;return(i=this.options)!==null&&i!==void 0&&i.children||(e=this.options)!==null&&e!==void 0&&e.childSelector?K(this.options.children,this.options.childSelector,t)||[]:[t]}_domElementToItemData(t){const i={element:t},e=t.tagName==="A"?t:t.querySelector("a");if(e){i.src=e.dataset.pswpSrc||e.href,e.dataset.pswpSrcset&&(i.srcset=e.dataset.pswpSrcset),i.width=e.dataset.pswpWidth?parseInt(e.dataset.pswpWidth,10):0,i.height=e.dataset.pswpHeight?parseInt(e.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,e.dataset.pswpType&&(i.type=e.dataset.pswpType);const n=t.querySelector("img");if(n){var s;i.msrc=n.currentSrc||n.src,i.alt=(s=n.getAttribute("alt"))!==null&&s!==void 0?s:""}(e.dataset.pswpCropped||e.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,e)}lazyLoadData(t,i){return W(t,this,i)}}const P=.003;class Wt{constructor(t){this.pswp=t,this.isClosed=!0,this.isOpen=!1,this.isClosing=!1,this.isOpening=!1,this._duration=void 0,this._useAnimation=!1,this._croppedZoom=!1,this._animateRootOpacity=!1,this._animateBgOpacity=!1,this._placeholder=void 0,this._opacityElement=void 0,this._cropContainer1=void 0,this._cropContainer2=void 0,this._thumbBounds=void 0,this._prepareOpen=this._prepareOpen.bind(this),t.on("firstZoomPan",this._prepareOpen)}open(){this._prepareOpen(),this._start()}close(){if(this.isClosed||this.isClosing||this.isOpening)return;const t=this.pswp.currSlide;this.isOpen=!1,this.isOpening=!1,this.isClosing=!0,this._duration=this.pswp.options.hideAnimationDuration,t&&t.currZoomLevel*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps(),setTimeout(()=>{this._start()},this._croppedZoom?30:0)}_prepareOpen(){if(this.pswp.off("firstZoomPan",this._prepareOpen),!this.isOpening){const t=this.pswp.currSlide;this.isOpening=!0,this.isClosing=!1,this._duration=this.pswp.options.showAnimationDuration,t&&t.zoomLevels.initial*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps()}}_applyStartProps(){const{pswp:t}=this,i=this.pswp.currSlide,{options:e}=t;if(e.showHideAnimationType==="fade"?(e.showHideOpacity=!0,this._thumbBounds=void 0):e.showHideAnimationType==="none"?(e.showHideOpacity=!1,this._duration=0,this._thumbBounds=void 0):this.isOpening&&t._initialThumbBounds?this._thumbBounds=t._initialThumbBounds:this._thumbBounds=this.pswp.getThumbBounds(),this._placeholder=i==null?void 0:i.getPlaceholderElement(),t.animations.stopAll(),this._useAnimation=!!(this._duration&&this._duration>50),this._animateZoom=!!this._thumbBounds&&(i==null?void 0:i.content.usePlaceholder())&&(!this.isClosing||!t.mainScroll.isShifted()),!this._animateZoom)this._animateRootOpacity=!0,this.isOpening&&i&&(i.zoomAndPanToInitial(),i.applyCurrentZoomPan());else{var s;this._animateRootOpacity=(s=e.showHideOpacity)!==null&&s!==void 0?s:!1}if(this._animateBgOpacity=!this._animateRootOpacity&&this.pswp.options.bgOpacity>P,this._opacityElement=this._animateRootOpacity?t.element:t.bg,!this._useAnimation){this._duration=0,this._animateZoom=!1,this._animateBgOpacity=!1,this._animateRootOpacity=!0,this.isOpening&&(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1));return}if(this._animateZoom&&this._thumbBounds&&this._thumbBounds.innerRect){var n;this._croppedZoom=!0,this._cropContainer1=this.pswp.container,this._cropContainer2=(n=this.pswp.currSlide)===null||n===void 0?void 0:n.holderElement,t.container&&(t.container.style.overflow="hidden",t.container.style.width=t.viewportSize.x+"px")}else this._croppedZoom=!1;this.isOpening?(this._animateRootOpacity?(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1)):(this._animateBgOpacity&&t.bg&&(t.bg.style.opacity=String(P)),t.element&&(t.element.style.opacity="1")),this._animateZoom&&(this._setClosedStateZoomPan(),this._placeholder&&(this._placeholder.style.willChange="transform",this._placeholder.style.opacity=String(P)))):this.isClosing&&(t.mainScroll.itemHolders[0]&&(t.mainScroll.itemHolders[0].el.style.display="none"),t.mainScroll.itemHolders[2]&&(t.mainScroll.itemHolders[2].el.style.display="none"),this._croppedZoom&&t.mainScroll.x!==0&&(t.mainScroll.resetPosition(),t.mainScroll.resize()))}_start(){this.isOpening&&this._useAnimation&&this._placeholder&&this._placeholder.tagName==="IMG"?new Promise(t=>{let i=!1,e=!0;q(this._placeholder).finally(()=>{i=!0,e||t(!0)}),setTimeout(()=>{e=!1,i&&t(!0)},50),setTimeout(t,250)}).finally(()=>this._initiate()):this._initiate()}_initiate(){var t,i;(t=this.pswp.element)===null||t===void 0||t.style.setProperty("--pswp-transition-duration",this._duration+"ms"),this.pswp.dispatch(this.isOpening?"openingAnimationStart":"closingAnimationStart"),this.pswp.dispatch("initialZoom"+(this.isOpening?"In":"Out")),(i=this.pswp.element)===null||i===void 0||i.classList.toggle("pswp--ui-visible",this.isOpening),this.isOpening?(this._placeholder&&(this._placeholder.style.opacity="1"),this._animateToOpenState()):this.isClosing&&this._animateToClosedState(),this._useAnimation||this._onAnimationComplete()}_onAnimationComplete(){const{pswp:t}=this;if(this.isOpen=this.isOpening,this.isClosed=this.isClosing,this.isOpening=!1,this.isClosing=!1,t.dispatch(this.isOpen?"openingAnimationEnd":"closingAnimationEnd"),t.dispatch("initialZoom"+(this.isOpen?"InEnd":"OutEnd")),this.isClosed)t.destroy();else if(this.isOpen){var i;this._animateZoom&&t.container&&(t.container.style.overflow="visible",t.container.style.width="100%"),(i=t.currSlide)===null||i===void 0||i.applyCurrentZoomPan()}}_animateToOpenState(){const{pswp:t}=this;this._animateZoom&&(this._croppedZoom&&this._cropContainer1&&this._cropContainer2&&(this._animateTo(this._cropContainer1,"transform","translate3d(0,0,0)"),this._animateTo(this._cropContainer2,"transform","none")),t.currSlide&&(t.currSlide.zoomAndPanToInitial(),this._animateTo(t.currSlide.container,"transform",t.currSlide.getCurrentTransform()))),this._animateBgOpacity&&t.bg&&this._animateTo(t.bg,"opacity",String(t.options.bgOpacity)),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","1")}_animateToClosedState(){const{pswp:t}=this;this._animateZoom&&this._setClosedStateZoomPan(!0),this._animateBgOpacity&&t.bgOpacity>.01&&t.bg&&this._animateTo(t.bg,"opacity","0"),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","0")}_setClosedStateZoomPan(t){if(!this._thumbBounds)return;const{pswp:i}=this,{innerRect:e}=this._thumbBounds,{currSlide:s,viewportSize:n}=i;if(this._croppedZoom&&e&&this._cropContainer1&&this._cropContainer2){const o=-n.x+(this._thumbBounds.x-e.x)+e.w,a=-n.y+(this._thumbBounds.y-e.y)+e.h,h=n.x-e.w,l=n.y-e.h;t?(this._animateTo(this._cropContainer1,"transform",b(o,a)),this._animateTo(this._cropContainer2,"transform",b(h,l))):(y(this._cropContainer1,o,a),y(this._cropContainer2,h,l))}s&&(p(s.pan,e||this._thumbBounds),s.currZoomLevel=this._thumbBounds.w/s.width,t?this._animateTo(s.container,"transform",s.getCurrentTransform()):s.applyCurrentZoomPan())}_animateTo(t,i,e){if(!this._duration){t.style[i]=e;return}const{animations:s}=this.pswp,n={duration:this._duration,easing:this.pswp.options.easing,onComplete:()=>{s.activeAnimations.length||this._onAnimationComplete()},target:t};n[i]=e,s.startTransition(n)}}const Vt={allowPanToNext:!0,spacing:.1,loop:!0,pinchToClose:!0,closeOnVerticalDrag:!0,hideAnimationDuration:333,showAnimationDuration:333,zoomAnimationDuration:333,escKey:!0,arrowKeys:!0,trapFocus:!0,returnFocus:!0,maxWidthToAnimate:4e3,clickToCloseNonZoomable:!0,imageClickAction:"zoom-or-close",bgClickAction:"close",tapAction:"toggle-controls",doubleTapAction:"zoom",indexIndicatorSep:" / ",preloaderDelay:2e3,bgOpacity:.8,index:0,errorMsg:"The image cannot be loaded",preload:[1,2],easing:"cubic-bezier(.4,0,.22,1)"};class $t extends Ht{constructor(t){super(),this.options=this._prepareOptions(t||{}),this.offset={x:0,y:0},this._prevViewportSize={x:0,y:0},this.viewportSize={x:0,y:0},this.bgOpacity=1,this.currIndex=0,this.potentialIndex=0,this.isOpen=!1,this.isDestroying=!1,this.hasMouse=!1,this._initialItemData={},this._initialThumbBounds=void 0,this.topBar=void 0,this.element=void 0,this.template=void 0,this.container=void 0,this.scrollWrap=void 0,this.currSlide=void 0,this.events=new X,this.animations=new wt,this.mainScroll=new dt(this),this.gestures=new lt(this),this.opener=new Wt(this),this.keyboard=new ut(this),this.contentLoader=new kt(this)}init(){if(this.isOpen||this.isDestroying)return!1;this.isOpen=!0,this.dispatch("init"),this.dispatch("beforeOpen"),this._createMainStructure();let t="pswp--open";return this.gestures.supportsTouch&&(t+=" pswp--touch"),this.options.mainClass&&(t+=" "+this.options.mainClass),this.element&&(this.element.className+=" "+t),this.currIndex=this.options.index||0,this.potentialIndex=this.currIndex,this.dispatch("firstUpdate"),this.scrollWheel=new Pt(this),(Number.isNaN(this.currIndex)||this.currIndex<0||this.currIndex>=this.getNumItems())&&(this.currIndex=0),this.gestures.supportsTouch||this.mouseDetected(),this.updateSize(),this.offset.y=window.pageYOffset,this._initialItemData=this.getItemData(this.currIndex),this.dispatch("gettingData",{index:this.currIndex,data:this._initialItemData,slide:void 0}),this._initialThumbBounds=this.getThumbBounds(),this.dispatch("initialLayout"),this.on("openingAnimationEnd",()=>{const{itemHolders:i}=this.mainScroll;i[0]&&(i[0].el.style.display="block",this.setContent(i[0],this.currIndex-1)),i[2]&&(i[2].el.style.display="block",this.setContent(i[2],this.currIndex+1)),this.appendHeavy(),this.contentLoader.updateLazy(),this.events.add(window,"resize",this._handlePageResize.bind(this)),this.events.add(window,"scroll",this._updatePageScrollOffset.bind(this)),this.dispatch("bindEvents")}),this.mainScroll.itemHolders[1]&&this.setContent(this.mainScroll.itemHolders[1],this.currIndex),this.dispatch("change"),this.opener.open(),this.dispatch("afterInit"),!0}getLoopedIndex(t){const i=this.getNumItems();return this.options.loop&&(t>i-1&&(t-=i),t<0&&(t+=i)),I(t,0,i-1)}appendHeavy(){this.mainScroll.itemHolders.forEach(t=>{var i;(i=t.slide)===null||i===void 0||i.appendHeavy()})}goTo(t){this.mainScroll.moveIndexBy(this.getLoopedIndex(t)-this.potentialIndex)}next(){this.goTo(this.potentialIndex+1)}prev(){this.goTo(this.potentialIndex-1)}zoomTo(...t){var i;(i=this.currSlide)===null||i===void 0||i.zoomTo(...t)}toggleZoom(){var t;(t=this.currSlide)===null||t===void 0||t.toggleZoom()}close(){!this.opener.isOpen||this.isDestroying||(this.isDestroying=!0,this.dispatch("close"),this.events.removeAll(),this.opener.close())}destroy(){var t;if(!this.isDestroying){this.options.showHideAnimationType="none",this.close();return}this.dispatch("destroy"),this._listeners={},this.scrollWrap&&(this.scrollWrap.ontouchmove=null,this.scrollWrap.ontouchend=null),(t=this.element)===null||t===void 0||t.remove(),this.mainScroll.itemHolders.forEach(i=>{var e;(e=i.slide)===null||e===void 0||e.destroy()}),this.contentLoader.destroy(),this.events.removeAll()}refreshSlideContent(t){this.contentLoader.removeByIndex(t),this.mainScroll.itemHolders.forEach((i,e)=>{var s,n;let o=((s=(n=this.currSlide)===null||n===void 0?void 0:n.index)!==null&&s!==void 0?s:0)-1+e;if(this.canLoop()&&(o=this.getLoopedIndex(o)),o===t&&(this.setContent(i,t,!0),e===1)){var a;this.currSlide=i.slide,(a=i.slide)===null||a===void 0||a.setIsActive(!0)}}),this.dispatch("change")}setContent(t,i,e){if(this.canLoop()&&(i=this.getLoopedIndex(i)),t.slide){if(t.slide.index===i&&!e)return;t.slide.destroy(),t.slide=void 0}if(!this.canLoop()&&(i<0||i>=this.getNumItems()))return;const s=this.getItemData(i);t.slide=new j(s,i,this),i===this.currIndex&&(this.currSlide=t.slide),t.slide.append(t.el)}getViewportCenterPoint(){return{x:this.viewportSize.x/2,y:this.viewportSize.y/2}}updateSize(t){if(this.isDestroying)return;const i=B(this.options,this);!t&&x(i,this._prevViewportSize)||(p(this._prevViewportSize,i),this.dispatch("beforeResize"),p(this.viewportSize,this._prevViewportSize),this._updatePageScrollOffset(),this.dispatch("viewportSize"),this.mainScroll.resize(this.opener.isOpen),!this.hasMouse&&window.matchMedia("(any-hover: hover)").matches&&this.mouseDetected(),this.dispatch("resize"))}applyBgOpacity(t){this.bgOpacity=Math.max(t,0),this.bg&&(this.bg.style.opacity=String(this.bgOpacity*this.options.bgOpacity))}mouseDetected(){if(!this.hasMouse){var t;this.hasMouse=!0,(t=this.element)===null||t===void 0||t.classList.add("pswp--has_mouse")}}_handlePageResize(){this.updateSize(),/iPhone|iPad|iPod/i.test(window.navigator.userAgent)&&setTimeout(()=>{this.updateSize()},500)}_updatePageScrollOffset(){this.setScrollOffset(0,window.pageYOffset)}setScrollOffset(t,i){this.offset.x=t,this.offset.y=i,this.dispatch("updateScrollOffset")}_createMainStructure(){this.element=f("pswp","div"),this.element.setAttribute("tabindex","-1"),this.element.setAttribute("role","dialog"),this.template=this.element,this.bg=f("pswp__bg","div",this.element),this.scrollWrap=f("pswp__scroll-wrap","section",this.element),this.container=f("pswp__container","div",this.scrollWrap),this.scrollWrap.setAttribute("aria-roledescription","carousel"),this.container.setAttribute("aria-live","off"),this.container.setAttribute("id","pswp__items"),this.mainScroll.appendHolders(),this.ui=new zt(this),this.ui.init(),(this.options.appendToEl||document.body).appendChild(this.element)}getThumbBounds(){return Zt(this.currIndex,this.currSlide?this.currSlide.data:this._initialItemData,this)}canLoop(){return this.options.loop&&this.getNumItems()>2}_prepareOptions(t){return window.matchMedia("(prefers-reduced-motion), (update: slow)").matches&&(t.showHideAnimationType="none",t.zoomAnimationDuration=0),{...Vt,...t}}}export{$t as default}; diff --git a/assets/pieDiagram-a5166659-2AuHdjea.js b/assets/pieDiagram-a5166659-88FRZv2h.js similarity index 98% rename from assets/pieDiagram-a5166659-2AuHdjea.js rename to assets/pieDiagram-a5166659-88FRZv2h.js index 57159bf..3b59297 100644 --- a/assets/pieDiagram-a5166659-2AuHdjea.js +++ b/assets/pieDiagram-a5166659-88FRZv2h.js @@ -1,4 +1,4 @@ -import{aK as q,aL as at,v as lt,x as ot,s as ct,g as ht,b as ut,a as yt,z as ft,d as pt,c as et,l as it,aM as gt,aJ as dt,i as mt,aN as _t}from"./mermaid.core-ygY5oRaR.js";import{a as tt}from"./arc-IaSnKFUc.js";import{o as vt}from"./ordinal-wXG5obU4.js";import{a as xt}from"./array-Nw74a44z.js";import{c as z}from"./path-aUcfwwLI.js";import"./app-RP31lnfq.js";import"./init-Hi12RPRh.js";function kt(e,u){return ue?1:u>=e?0:NaN}function bt(e){return e}function St(){var e=bt,u=kt,$=null,f=z(0),b=z(q),w=z(0);function c(r){var l,g=(r=xt(r)).length,S,A,O=0,m=new Array(g),k=new Array(g),_=+f.apply(this,arguments),h=Math.min(q,Math.max(-q,b.apply(this,arguments)-_)),T,I=Math.min(Math.abs(h)/g,w.apply(this,arguments)),p=I*(h<0?-1:1),t;for(l=0;l0&&(O+=t);for(u!=null?m.sort(function(i,n){return u(k[i],k[n])}):$!=null&&m.sort(function(i,n){return $(r[i],r[n])}),l=0,A=O?(h-g*p)/O:0;l0?t*A:0)+p,k[S]={data:r[S],index:l,value:t,startAngle:_,endAngle:T,padAngle:I};return k}return c.value=function(r){return arguments.length?(e=typeof r=="function"?r:z(+r),c):e},c.sortValues=function(r){return arguments.length?(u=r,$=null,c):u},c.sort=function(r){return arguments.length?($=r,u=null,c):$},c.startAngle=function(r){return arguments.length?(f=typeof r=="function"?r:z(+r),c):f},c.endAngle=function(r){return arguments.length?(b=typeof r=="function"?r:z(+r),c):b},c.padAngle=function(r){return arguments.length?(w=typeof r=="function"?r:z(+r),c):w},c}var H=function(){var e=function(p,t,i,n){for(i=i||{},n=p.length;n--;i[p[n]]=t);return i},u=[1,3],$=[1,4],f=[1,5],b=[1,6],w=[1,10,12,14,16,18,19,20,21,22],c=[2,4],r=[1,5,10,12,14,16,18,19,20,21,22],l=[20,21,22],g=[2,7],S=[1,12],A=[1,13],O=[1,14],m=[1,15],k=[1,16],_=[1,17],h={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,PIE:5,document:6,showData:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,section:19,NEWLINE:20,";":21,EOF:22,$accept:0,$end:1},terminals_:{2:"error",5:"PIE",7:"showData",10:"txt",11:"value",12:"title",13:"title_value",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"section",20:"NEWLINE",21:";",22:"EOF"},productions_:[0,[3,2],[3,2],[3,3],[6,0],[6,2],[8,2],[9,0],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[4,1],[4,1],[4,1]],performAction:function(t,i,n,a,o,s,P){var v=s.length-1;switch(o){case 3:a.setShowData(!0);break;case 6:this.$=s[v-1];break;case 8:a.addSection(s[v-1],a.cleanupValue(s[v]));break;case 9:this.$=s[v].trim(),a.setDiagramTitle(this.$);break;case 10:this.$=s[v].trim(),a.setAccTitle(this.$);break;case 11:case 12:this.$=s[v].trim(),a.setAccDescription(this.$);break;case 13:a.addSection(s[v].substr(8)),this.$=s[v].substr(8);break}},table:[{3:1,4:2,5:u,20:$,21:f,22:b},{1:[3]},{3:7,4:2,5:u,20:$,21:f,22:b},e(w,c,{6:8,7:[1,9]}),e(r,[2,14]),e(r,[2,15]),e(r,[2,16]),{1:[2,1]},e(l,g,{8:10,9:11,1:[2,2],10:S,12:A,14:O,16:m,18:k,19:_}),e(w,c,{6:18}),e(w,[2,5]),{4:19,20:$,21:f,22:b},{11:[1,20]},{13:[1,21]},{15:[1,22]},{17:[1,23]},e(l,[2,12]),e(l,[2,13]),e(l,g,{8:10,9:11,1:[2,3],10:S,12:A,14:O,16:m,18:k,19:_}),e(w,[2,6]),e(l,[2,8]),e(l,[2,9]),e(l,[2,10]),e(l,[2,11])],defaultActions:{7:[2,1]},parseError:function(t,i){if(i.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=i,n}},parse:function(t){var i=this,n=[0],a=[],o=[null],s=[],P=this.table,v="",d=0,V=0,F=2,M=1,B=s.slice.call(arguments,1),y=Object.create(this.lexer),N={yy:{}};for(var Y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Y)&&(N.yy[Y]=this.yy[Y]);y.setInput(t,N.yy),N.yy.lexer=y,N.yy.parser=this,typeof y.yylloc>"u"&&(y.yylloc={});var J=y.yylloc;s.push(J);var st=y.options&&y.options.ranges;typeof N.yy.parseError=="function"?this.parseError=N.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function rt(){var C;return C=a.pop()||y.lex()||M,typeof C!="number"&&(C instanceof Array&&(a=C,C=a.pop()),C=i.symbols_[C]||C),C}for(var x,L,E,K,R={},j,D,X,W;;){if(L=n[n.length-1],this.defaultActions[L]?E=this.defaultActions[L]:((x===null||typeof x>"u")&&(x=rt()),E=P[L]&&P[L][x]),typeof E>"u"||!E.length||!E[0]){var Z="";W=[];for(j in P[L])this.terminals_[j]&&j>F&&W.push("'"+this.terminals_[j]+"'");y.showPosition?Z="Parse error on line "+(d+1)+`: +import{aK as q,aL as at,v as lt,x as ot,s as ct,g as ht,b as ut,a as yt,z as ft,d as pt,c as et,l as it,aM as gt,aJ as dt,i as mt,aN as _t}from"./mermaid.core-YBgJFCkH.js";import{a as tt}from"./arc-zVzTa0l4.js";import{o as vt}from"./ordinal-wXG5obU4.js";import{a as xt}from"./array-Nw74a44z.js";import{c as z}from"./path-aUcfwwLI.js";import"./app-0NopiYEV.js";import"./init-Hi12RPRh.js";function kt(e,u){return ue?1:u>=e?0:NaN}function bt(e){return e}function St(){var e=bt,u=kt,$=null,f=z(0),b=z(q),w=z(0);function c(r){var l,g=(r=xt(r)).length,S,A,O=0,m=new Array(g),k=new Array(g),_=+f.apply(this,arguments),h=Math.min(q,Math.max(-q,b.apply(this,arguments)-_)),T,I=Math.min(Math.abs(h)/g,w.apply(this,arguments)),p=I*(h<0?-1:1),t;for(l=0;l0&&(O+=t);for(u!=null?m.sort(function(i,n){return u(k[i],k[n])}):$!=null&&m.sort(function(i,n){return $(r[i],r[n])}),l=0,A=O?(h-g*p)/O:0;l0?t*A:0)+p,k[S]={data:r[S],index:l,value:t,startAngle:_,endAngle:T,padAngle:I};return k}return c.value=function(r){return arguments.length?(e=typeof r=="function"?r:z(+r),c):e},c.sortValues=function(r){return arguments.length?(u=r,$=null,c):u},c.sort=function(r){return arguments.length?($=r,u=null,c):$},c.startAngle=function(r){return arguments.length?(f=typeof r=="function"?r:z(+r),c):f},c.endAngle=function(r){return arguments.length?(b=typeof r=="function"?r:z(+r),c):b},c.padAngle=function(r){return arguments.length?(w=typeof r=="function"?r:z(+r),c):w},c}var H=function(){var e=function(p,t,i,n){for(i=i||{},n=p.length;n--;i[p[n]]=t);return i},u=[1,3],$=[1,4],f=[1,5],b=[1,6],w=[1,10,12,14,16,18,19,20,21,22],c=[2,4],r=[1,5,10,12,14,16,18,19,20,21,22],l=[20,21,22],g=[2,7],S=[1,12],A=[1,13],O=[1,14],m=[1,15],k=[1,16],_=[1,17],h={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,PIE:5,document:6,showData:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,section:19,NEWLINE:20,";":21,EOF:22,$accept:0,$end:1},terminals_:{2:"error",5:"PIE",7:"showData",10:"txt",11:"value",12:"title",13:"title_value",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"section",20:"NEWLINE",21:";",22:"EOF"},productions_:[0,[3,2],[3,2],[3,3],[6,0],[6,2],[8,2],[9,0],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[4,1],[4,1],[4,1]],performAction:function(t,i,n,a,o,s,P){var v=s.length-1;switch(o){case 3:a.setShowData(!0);break;case 6:this.$=s[v-1];break;case 8:a.addSection(s[v-1],a.cleanupValue(s[v]));break;case 9:this.$=s[v].trim(),a.setDiagramTitle(this.$);break;case 10:this.$=s[v].trim(),a.setAccTitle(this.$);break;case 11:case 12:this.$=s[v].trim(),a.setAccDescription(this.$);break;case 13:a.addSection(s[v].substr(8)),this.$=s[v].substr(8);break}},table:[{3:1,4:2,5:u,20:$,21:f,22:b},{1:[3]},{3:7,4:2,5:u,20:$,21:f,22:b},e(w,c,{6:8,7:[1,9]}),e(r,[2,14]),e(r,[2,15]),e(r,[2,16]),{1:[2,1]},e(l,g,{8:10,9:11,1:[2,2],10:S,12:A,14:O,16:m,18:k,19:_}),e(w,c,{6:18}),e(w,[2,5]),{4:19,20:$,21:f,22:b},{11:[1,20]},{13:[1,21]},{15:[1,22]},{17:[1,23]},e(l,[2,12]),e(l,[2,13]),e(l,g,{8:10,9:11,1:[2,3],10:S,12:A,14:O,16:m,18:k,19:_}),e(w,[2,6]),e(l,[2,8]),e(l,[2,9]),e(l,[2,10]),e(l,[2,11])],defaultActions:{7:[2,1]},parseError:function(t,i){if(i.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=i,n}},parse:function(t){var i=this,n=[0],a=[],o=[null],s=[],P=this.table,v="",d=0,V=0,F=2,M=1,B=s.slice.call(arguments,1),y=Object.create(this.lexer),N={yy:{}};for(var Y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Y)&&(N.yy[Y]=this.yy[Y]);y.setInput(t,N.yy),N.yy.lexer=y,N.yy.parser=this,typeof y.yylloc>"u"&&(y.yylloc={});var J=y.yylloc;s.push(J);var st=y.options&&y.options.ranges;typeof N.yy.parseError=="function"?this.parseError=N.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function rt(){var C;return C=a.pop()||y.lex()||M,typeof C!="number"&&(C instanceof Array&&(a=C,C=a.pop()),C=i.symbols_[C]||C),C}for(var x,L,E,K,R={},j,D,X,W;;){if(L=n[n.length-1],this.defaultActions[L]?E=this.defaultActions[L]:((x===null||typeof x>"u")&&(x=rt()),E=P[L]&&P[L][x]),typeof E>"u"||!E.length||!E[0]){var Z="";W=[];for(j in P[L])this.terminals_[j]&&j>F&&W.push("'"+this.terminals_[j]+"'");y.showPosition?Z="Parse error on line "+(d+1)+`: `+y.showPosition()+` Expecting `+W.join(", ")+", got '"+(this.terminals_[x]||x)+"'":Z="Parse error on line "+(d+1)+": Unexpected "+(x==M?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(Z,{text:y.match,token:this.terminals_[x]||x,line:y.yylineno,loc:J,expected:W})}if(E[0]instanceof Array&&E.length>1)throw new Error("Parse Error: multiple actions possible at state: "+L+", token: "+x);switch(E[0]){case 1:n.push(x),o.push(y.yytext),s.push(y.yylloc),n.push(E[1]),x=null,V=y.yyleng,v=y.yytext,d=y.yylineno,J=y.yylloc;break;case 2:if(D=this.productions_[E[1]][1],R.$=o[o.length-D],R._$={first_line:s[s.length-(D||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(D||1)].first_column,last_column:s[s.length-1].last_column},st&&(R._$.range=[s[s.length-(D||1)].range[0],s[s.length-1].range[1]]),K=this.performAction.apply(R,[v,V,d,N.yy,E[1],o,s].concat(B)),typeof K<"u")return K;D&&(n=n.slice(0,-1*D*2),o=o.slice(0,-1*D),s=s.slice(0,-1*D)),n.push(this.productions_[E[1]][0]),o.push(R.$),s.push(R._$),X=P[n[n.length-2]][n[n.length-1]],n.push(X);break;case 3:return!0}}return!0}},T=function(){var p={EOF:1,parseError:function(i,n){if(this.yy.parser)this.yy.parser.parseError(i,n);else throw new Error(i)},setInput:function(t,i){return this.yy=i||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var i=t.match(/(?:\r\n?|\n).*/g);return i?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var i=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var o=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===a.length?this.yylloc.first_column:0)+a[a.length-n.length].length-n[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[o[0],o[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+` diff --git a/assets/play_url_rules.html-Nq1zV90a.js b/assets/play_url_rules.html-GF2zY0uE.js similarity index 99% rename from assets/play_url_rules.html-Nq1zV90a.js rename to assets/play_url_rules.html-GF2zY0uE.js index 03264c2..17d8948 100644 --- a/assets/play_url_rules.html-Nq1zV90a.js +++ b/assets/play_url_rules.html-GF2zY0uE.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as d,e as i}from"./app-RP31lnfq.js";const c={},l=i('

                      1、url 的组成部分

                      rtsp://somedomain.com:554/live/0?token=abcdefg&field=value为例,该 url 分为以下几个部分:

                      • 协议(scheam) : rtsp 协议,默认端口 554
                      • 虚拟主机(vhost) : somedomain.com,该字段既可以是域名也可以是 ip,如果是 ip 则对应的虚拟主机为__defaultVhost__
                      • 服务端口号(port) : 554,如果不指定端口号,则使用协议默认端口号
                      • 应用名(app) : live
                      • 流ID(streamid) : 0
                      • 参数(args) : token=abcdefg&field=value

                      2、ZLMediaKit 中的流媒体源

                      在 ZLMediaKit 中,流媒体源是一种可以被用于直播转发、推流转发等功能的数据对象,在本项目中被称作为MediaSource,目前支持 5 种类型的流媒体源,分别是RtspMediaSourceRtmpMediaSourceHlsMediaSourceTSMediaSourceFMP4MediaSource

                      定位一个流媒体源,主要通过 4 个元素(我们后续称其为 4 元组),分别是:

                      • 协议(scheam)
                      • 虚拟主机(vhost)
                      • 应用名(app)
                      • 流ID(streamid)

                      RtspMediaSource支持 rtsp 播放、rtsp 推流、webrtc 播放、webrtc 推流。

                      RtmpMediaSource支持 rtmp 推流/播放、http-flv 播放、ws-flv 播放。

                      HlsMediaSource支持 hls 播放。

                      TSMediaSource 支持 http-ts 播放、ws-ts 播放。

                      FMP4MediaSource 支持 http-fmp4 播放、ws-fmp4 播放。

                      3、流媒体源对应的播放 url

                      假定有一个RtspMediaSource,它的 4 元组分别为 rtsp(RtspMediaSource固定为rtsp)somedomain.comlive0 那么播放这个流媒体源的 url 对应为:

                      • rtsp://somedomain.com/live/0
                      • rtsps://somedomain.com/live/0
                      • rtsp://127.0.0.1/live/0?vhost=somedomain.com
                      • rtsps://127.0.0.1/live/0?vhost=somedomain.com

                      如果有一个RtmpMediaSource,它的 4 元组分别为 rtmp(RtmpMediaSource固定为rtmp)somedomain.comlive0 那么播放这个流媒体源的 url 对应为:

                      • rtmp://somedomain.com/live/0
                      • rtmps://somedomain.com/live/0
                      • rtmp://127.0.0.1/live/0?vhost=somedomain.com
                      • rtmps://127.0.0.1/live/0?vhost=somedomain.com

                      rtmp 类型的流媒体源也支持http-flvwebsocket直播,对应的 url 如下:

                      老代码 flv 直播后缀为.flv,新代码才改成了.live.flv

                      • http://somedomain.com/live/0.live.flv
                      • https://somedomain.com/live/0.live.flv
                      • http://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • https://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • ws://somedomain.com/live/0.live.flv
                      • wss://somedomain.com/live/0.live.flv
                      • ws://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • wss://127.0.0.1/live/0.live.flv?vhost=somedomain.com

                      当然,ZLMediaKit 一般会把 rtsp、rtmp 流媒体源互相转换,也会转换成 hls/http-ts/ws-ts/http-fmp4/ws-fmp4,播放的 url 如下:

                      • HLS(mpegts)

                        • http://somedomain.com/live/0/hls.m3u8
                        • https://somedomain.com/live/0/hls.m3u8
                        • http://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
                        • https://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
                      • HLS(fmp4)

                        • http://somedomain.com/live/0/hls.fmp4.m3u8
                        • https://somedomain.com/live/0/hls.fmp4.m3u8
                        • http://127.0.0.1/live/0/hls.fmp4.m3u8?vhost=somedomain.com
                        • https://127.0.0.1/live/0/hls.fmp4.m3u8?vhost=somedomain.com
                      • HTTP-TS/WS-TS(后缀为.live.ts,目的是为了解决与 hls 的冲突)

                        • http://somedomain.com/live/0.live.ts
                        • https://somedomain.com/live/0.live.ts
                        • http://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • https://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • ws://somedomain.com/live/0.live.ts
                        • wss://somedomain.com/live/0.live.ts
                        • ws://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • wss://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                      • HTTP-fMP4/WS-fMP4(后缀为.live.mp4,目的是为了解决与 mp4 点播的冲突)

                        • http://somedomain.com/live/0.live.mp4
                        • https://somedomain.com/live/0.live.mp4
                        • http://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • https://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • ws://somedomain.com/live/0.live.mp4
                        • wss://somedomain.com/live/0.live.mp4
                        • ws://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • wss://127.0.0.1/live/0.live.mp4?vhost=somedomain.com

                      一般而言,上述 url 在 ZLMediaKit 都有效,因为 ZLMediaKit 默认转换流媒体源。

                      4、点播 url

                      ZLMediaKit 的点播一般通过 mp4 文件来实现,推荐大家使用 http mp4 点播,这样是最简单,服务器也无需解复用 mp4 文件,当然 ZLMediaKit 目前也支持 rtsp、rtmp、http-flv、websocket-flv 的 mp4 点播, 对应的 url 跟直播 url 类似,不在赘述,这里只介绍区别。

                      • ZLMediaKit 对点播限制应用名,默认为record
                      • 假如一个 mp4 文件放置在 http 根目录 record 文件夹(www/record)下,他的相对路径为:www/record/0.mp4,那么点播 url 则为:
                        • rtsp://somedomain.com/record/0.mp4
                        • rtmp://somedomain.com/record/0.mp4
                        • http://somedomain.com/record/0.mp4(这里是通用的 http 文件点播,服务器不用解复用文件)
                        • http://somedomain.com/record/0.mp4.live.flv(这里是 http-flv 直播,不是 http 点播,服务器需要解复用文件)
                        • ws://somedomain.com/record/0.mp4.live.flv
                        • http://somedomain.com/record/0.mp4.live.ts(这里是 http-ts 直播,不是 http 点播,服务器需要解复用文件)
                        • ws://somedomain.com/record/0.mp4.live.ts
                        • http://somedomain.com/record/0.mp4.live.mp4(这里是 http-fmp4 直播,不是 http 点播,服务器需要解复用文件)
                        • ws://somedomain.com/record/0.mp4.live.mp4
                      • 如果开启了虚拟主机,那么点播文件需要放置在 www/somedomain.com/record/0.mp4

                      5、webrtc 推流/播放

                      webrtc播放跟上述方式不太一样,webrtc 协议本身不定义信令交互协议,用户自己去实现sdp+icecandidate交换逻辑,所以webrtc并没有一个标准的播放器,需要自己使用 js 或 native sdk 去实现播放。

                      zlmediakit实现的webrtc sdp+icecandidate交换方式是http post方式,接口名为/index/api/webrtc, 该接口使用 post content 传递 offer sdp, 同时 url query 参数传递媒体源 4 元组中的app steam_id,由于 http 协议本身支持vhost,所以不需要另外指定vhostwebrtczlmediakit中可以认为是 rtsp 协议的另外表现形式,他们推流、播放使用的数据源都相同,都是RtspMediaSource

                      在 webrtc 推流时,交互webrtc sdp+icecandidate的 http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=push

                      在 webrtc 播放时,交互webrtc sdp+icecandidate的 http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=play

                      zlmeiakit 工程自带 webrtc 测试播放/推流器,用户启动 zlmediakit 后,浏览器访问http://127.0.0.1/webrtc/就可以访问之。

                      另外,zlmediakit 也支持使用 webrtc 播放 mp4 文件,http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=record&stream=test.mp4&type=play

                      6、url 参数

                      ZLMediaKit 会识别 url 中问号后面的字符串为 url 参数,其格式跟 http 一致,其中参数vhost是 ZLMediaKit 内置支持的参数,支持指定 vhost。 url 参数主要用于播放、推流鉴权,在触发 hook api 时,会把这些参数提交给第三方业务服务器

                      ',35),t=[l];function m(s,p){return o(),d("div",null,t)}const h=e(c,[["render",m],["__file","play_url_rules.html.vue"]]);export{h as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as d,e as i}from"./app-0NopiYEV.js";const c={},l=i('

                      1、url 的组成部分

                      rtsp://somedomain.com:554/live/0?token=abcdefg&field=value为例,该 url 分为以下几个部分:

                      • 协议(scheam) : rtsp 协议,默认端口 554
                      • 虚拟主机(vhost) : somedomain.com,该字段既可以是域名也可以是 ip,如果是 ip 则对应的虚拟主机为__defaultVhost__
                      • 服务端口号(port) : 554,如果不指定端口号,则使用协议默认端口号
                      • 应用名(app) : live
                      • 流ID(streamid) : 0
                      • 参数(args) : token=abcdefg&field=value

                      2、ZLMediaKit 中的流媒体源

                      在 ZLMediaKit 中,流媒体源是一种可以被用于直播转发、推流转发等功能的数据对象,在本项目中被称作为MediaSource,目前支持 5 种类型的流媒体源,分别是RtspMediaSourceRtmpMediaSourceHlsMediaSourceTSMediaSourceFMP4MediaSource

                      定位一个流媒体源,主要通过 4 个元素(我们后续称其为 4 元组),分别是:

                      • 协议(scheam)
                      • 虚拟主机(vhost)
                      • 应用名(app)
                      • 流ID(streamid)

                      RtspMediaSource支持 rtsp 播放、rtsp 推流、webrtc 播放、webrtc 推流。

                      RtmpMediaSource支持 rtmp 推流/播放、http-flv 播放、ws-flv 播放。

                      HlsMediaSource支持 hls 播放。

                      TSMediaSource 支持 http-ts 播放、ws-ts 播放。

                      FMP4MediaSource 支持 http-fmp4 播放、ws-fmp4 播放。

                      3、流媒体源对应的播放 url

                      假定有一个RtspMediaSource,它的 4 元组分别为 rtsp(RtspMediaSource固定为rtsp)somedomain.comlive0 那么播放这个流媒体源的 url 对应为:

                      • rtsp://somedomain.com/live/0
                      • rtsps://somedomain.com/live/0
                      • rtsp://127.0.0.1/live/0?vhost=somedomain.com
                      • rtsps://127.0.0.1/live/0?vhost=somedomain.com

                      如果有一个RtmpMediaSource,它的 4 元组分别为 rtmp(RtmpMediaSource固定为rtmp)somedomain.comlive0 那么播放这个流媒体源的 url 对应为:

                      • rtmp://somedomain.com/live/0
                      • rtmps://somedomain.com/live/0
                      • rtmp://127.0.0.1/live/0?vhost=somedomain.com
                      • rtmps://127.0.0.1/live/0?vhost=somedomain.com

                      rtmp 类型的流媒体源也支持http-flvwebsocket直播,对应的 url 如下:

                      老代码 flv 直播后缀为.flv,新代码才改成了.live.flv

                      • http://somedomain.com/live/0.live.flv
                      • https://somedomain.com/live/0.live.flv
                      • http://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • https://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • ws://somedomain.com/live/0.live.flv
                      • wss://somedomain.com/live/0.live.flv
                      • ws://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • wss://127.0.0.1/live/0.live.flv?vhost=somedomain.com

                      当然,ZLMediaKit 一般会把 rtsp、rtmp 流媒体源互相转换,也会转换成 hls/http-ts/ws-ts/http-fmp4/ws-fmp4,播放的 url 如下:

                      • HLS(mpegts)

                        • http://somedomain.com/live/0/hls.m3u8
                        • https://somedomain.com/live/0/hls.m3u8
                        • http://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
                        • https://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
                      • HLS(fmp4)

                        • http://somedomain.com/live/0/hls.fmp4.m3u8
                        • https://somedomain.com/live/0/hls.fmp4.m3u8
                        • http://127.0.0.1/live/0/hls.fmp4.m3u8?vhost=somedomain.com
                        • https://127.0.0.1/live/0/hls.fmp4.m3u8?vhost=somedomain.com
                      • HTTP-TS/WS-TS(后缀为.live.ts,目的是为了解决与 hls 的冲突)

                        • http://somedomain.com/live/0.live.ts
                        • https://somedomain.com/live/0.live.ts
                        • http://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • https://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • ws://somedomain.com/live/0.live.ts
                        • wss://somedomain.com/live/0.live.ts
                        • ws://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • wss://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                      • HTTP-fMP4/WS-fMP4(后缀为.live.mp4,目的是为了解决与 mp4 点播的冲突)

                        • http://somedomain.com/live/0.live.mp4
                        • https://somedomain.com/live/0.live.mp4
                        • http://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • https://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • ws://somedomain.com/live/0.live.mp4
                        • wss://somedomain.com/live/0.live.mp4
                        • ws://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • wss://127.0.0.1/live/0.live.mp4?vhost=somedomain.com

                      一般而言,上述 url 在 ZLMediaKit 都有效,因为 ZLMediaKit 默认转换流媒体源。

                      4、点播 url

                      ZLMediaKit 的点播一般通过 mp4 文件来实现,推荐大家使用 http mp4 点播,这样是最简单,服务器也无需解复用 mp4 文件,当然 ZLMediaKit 目前也支持 rtsp、rtmp、http-flv、websocket-flv 的 mp4 点播, 对应的 url 跟直播 url 类似,不在赘述,这里只介绍区别。

                      • ZLMediaKit 对点播限制应用名,默认为record
                      • 假如一个 mp4 文件放置在 http 根目录 record 文件夹(www/record)下,他的相对路径为:www/record/0.mp4,那么点播 url 则为:
                        • rtsp://somedomain.com/record/0.mp4
                        • rtmp://somedomain.com/record/0.mp4
                        • http://somedomain.com/record/0.mp4(这里是通用的 http 文件点播,服务器不用解复用文件)
                        • http://somedomain.com/record/0.mp4.live.flv(这里是 http-flv 直播,不是 http 点播,服务器需要解复用文件)
                        • ws://somedomain.com/record/0.mp4.live.flv
                        • http://somedomain.com/record/0.mp4.live.ts(这里是 http-ts 直播,不是 http 点播,服务器需要解复用文件)
                        • ws://somedomain.com/record/0.mp4.live.ts
                        • http://somedomain.com/record/0.mp4.live.mp4(这里是 http-fmp4 直播,不是 http 点播,服务器需要解复用文件)
                        • ws://somedomain.com/record/0.mp4.live.mp4
                      • 如果开启了虚拟主机,那么点播文件需要放置在 www/somedomain.com/record/0.mp4

                      5、webrtc 推流/播放

                      webrtc播放跟上述方式不太一样,webrtc 协议本身不定义信令交互协议,用户自己去实现sdp+icecandidate交换逻辑,所以webrtc并没有一个标准的播放器,需要自己使用 js 或 native sdk 去实现播放。

                      zlmediakit实现的webrtc sdp+icecandidate交换方式是http post方式,接口名为/index/api/webrtc, 该接口使用 post content 传递 offer sdp, 同时 url query 参数传递媒体源 4 元组中的app steam_id,由于 http 协议本身支持vhost,所以不需要另外指定vhostwebrtczlmediakit中可以认为是 rtsp 协议的另外表现形式,他们推流、播放使用的数据源都相同,都是RtspMediaSource

                      在 webrtc 推流时,交互webrtc sdp+icecandidate的 http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=push

                      在 webrtc 播放时,交互webrtc sdp+icecandidate的 http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=play

                      zlmeiakit 工程自带 webrtc 测试播放/推流器,用户启动 zlmediakit 后,浏览器访问http://127.0.0.1/webrtc/就可以访问之。

                      另外,zlmediakit 也支持使用 webrtc 播放 mp4 文件,http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=record&stream=test.mp4&type=play

                      6、url 参数

                      ZLMediaKit 会识别 url 中问号后面的字符串为 url 参数,其格式跟 http 一致,其中参数vhost是 ZLMediaKit 内置支持的参数,支持指定 vhost。 url 参数主要用于播放、推流鉴权,在触发 hook api 时,会把这些参数提交给第三方业务服务器

                      ',35),t=[l];function m(s,p){return o(),d("div",null,t)}const h=e(c,[["render",m],["__file","play_url_rules.html.vue"]]);export{h as default}; diff --git a/assets/play_url_rules.html-jL-erR3n.js b/assets/play_url_rules.html-qwXh8ebF.js similarity index 99% rename from assets/play_url_rules.html-jL-erR3n.js rename to assets/play_url_rules.html-qwXh8ebF.js index 8976824..485f058 100644 --- a/assets/play_url_rules.html-jL-erR3n.js +++ b/assets/play_url_rules.html-qwXh8ebF.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as i,e as d}from"./app-RP31lnfq.js";const t={},a=d('

                      1. Components of a URL

                      Taking rtsp://somedomain.com:554/live/0?token=abcdefg&field=value as an example, this URL is divided into the following parts:

                      • Protocol(scheam): RTSP protocol, default port 554
                      • Virtual Host(vhost): somedomain.com. This field can be either a domain name or an IP. If it is an IP, the corresponding virtual host is __defaultVhost__
                      • Server Port(port): 554. If the port number is not specified, the protocol's default port number is used
                      • Application Name(app): live
                      • Stream ID(streamid): 0
                      • Parameters(args): token=abcdefg&field=value

                      2. Stream Media Source in ZLMediaKit

                      In ZLMediaKit, a stream media source is a data object that can be used for functions such as live broadcasting and stream forwarding, and is referred to as MediaSource in this project. Currently, it supports five types of stream media sources, namely RtspMediaSource, RtmpMediaSource, HlsMediaSource, TSMediaSource, FMP4MediaSource.

                      Identifying a stream media source is mainly based on four elements (referred to as 4-tuples hereafter), which are:

                      • Protocol(scheam)
                      • Virtual Host(vhost)
                      • Application Name(app)
                      • Stream ID(streamid)

                      RtspMediaSource supports RTSP playback, RTSP streaming, WebRTC playback, and WebRTC streaming.

                      RtmpMediaSource supports RTMP streaming/playback, HTTP-FLV playback, and WS-FLV playback.

                      HlsMediaSource supports HLS playback.

                      TSMediaSource supports HTTP-TS playback and WS-TS playback.

                      FMP4MediaSource supports HTTP-FMP4 playback and WS-FMP4 playback.

                      3. Playback URLs Corresponding to the Stream Media Source

                      Suppose there is a RtspMediaSource, and its 4-tuple are rtsp (RtspMediaSource is always rtsp), somedomain.com, live, and 0 Then the URLs for playing this stream media source correspond to:

                      • rtsp://somedomain.com/live/0
                      • rtsps://somedomain.com/live/0
                      • rtsp://127.0.0.1/live/0?vhost=somedomain.com
                      • rtsps://127.0.0.1/live/0?vhost=somedomain.com

                      If there is a RtmpMediaSource, and its 4-tuple are rtmp (RtmpMediaSource is always rtmp), somedomain.com, live, and 0 Then the URLs for playing this stream media source correspond to:

                      • rtmp://somedomain.com/live/0
                      • rtmps://somedomain.com/live/0
                      • rtmp://127.0.0.1/live/0?vhost=somedomain.com
                      • rtmps://127.0.0.1/live/0?vhost=somedomain.com

                      RTMP types of stream media sources also support live streaming through http-flv, websocket, and other protocols. The corresponding URLs are as follows:

                      Note: Old code live broadcast suffix is .flv, and it has been changed to .live.flv in the new code

                      • http://somedomain.com/live/0.live.flv
                      • https://somedomain.com/live/0.live.flv
                      • http://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • https://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • ws://somedomain.com/live/0.live.flv
                      • wss://somedomain.com/live/0.live.flv
                      • ws://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • wss://127.0.0.1/live/0.live.flv?vhost=somedomain.com

                      Sure, ZLMediaKit typically converts RTSP and RTMP media streams to each other and also transforms them into HLS/HTTP-TS/WS-TS/HTTP-fMP4/WS-fMP4. The playback URLs are as follows:

                      • HLS

                        • http://somedomain.com/live/0/hls.m3u8
                        • https://somedomain.com/live/0/hls.m3u8
                        • http://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
                        • https://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
                      • HTTP-TS/WS-TS (with the suffix .live.ts, to resolve the conflict with HLS)

                        • http://somedomain.com/live/0.live.ts
                        • https://somedomain.com/live/0.live.ts
                        • http://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • https://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • ws://somedomain.com/live/0.live.ts
                        • wss://somedomain.com/live/0.live.ts
                        • ws://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • wss://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                      • HTTP-fMP4/WS-fMP4 (with the suffix .live.mp4, to resolve the conflict with MP4 on-demand)

                        • http://somedomain.com/live/0.live.mp4
                        • https://somedomain.com/live/0.live.mp4
                        • http://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • https://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • ws://somedomain.com/live/0.live.mp4
                        • wss://somedomain.com/live/0.live.mp4
                        • ws://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • wss://127.0.0.1/live/0.live.mp4?vhost=somedomain.com

                      Generally speaking, all the above URLs are valid in ZLMediaKit, as ZLMediaKit converts media sources by default.

                      4. Video-on-Demand URL

                      ZLMediaKit typically implements video-on-demand via MP4 files, and we recommend using HTTP MP4 on-demand as it is the simplest method and the server does not need to demultiplex the MP4 files. ZLMediaKit currently also supports RTSP, RTMP, HTTP-FLV, and WebSocket-FLV MP4 on-demand. The corresponding URLs are similar to live broadcast URLs and will not be elaborated here; only the differences are discussed.

                      • ZLMediaKit restricts the application name for on-demand to the default record.
                      • Suppose an MP4 file is placed in the HTTP root directory record folder (www/record). Its relative path is www/record/0.mp4, then the on-demand URL would be:
                        • rtsp://somedomain.com/record/0.mp4
                        • rtmp://somedomain.com/record/0.mp4
                        • http://somedomain.com/record/0.mp4 (This is a generic HTTP file on-demand; the server does not need to demultiplex the file)
                        • http://somedomain.com/record/0.mp4.live.flv (This is HTTP-FLV live streaming, not HTTP on-demand; the server needs to demultiplex the file)
                        • ws://somedomain.com/record/0.mp4.live.flv
                        • http://somedomain.com/record/0.mp4.live.ts (This is HTTP-TS live streaming, not HTTP on-demand; the server needs to demultiplex the file)
                        • ws://somedomain.com/record/0.mp4.live.ts
                        • http://somedomain.com/record/0.mp4.live.mp4 (This is HTTP-fMP4 live streaming, not HTTP on-demand; the server needs to demultiplex the file)
                        • ws://somedomain.com/record/0.mp4.live.mp4
                      • If virtual hosting is enabled, then the on-demand files should be placed in www/somedomain.com/record/0.mp4.

                      5. WebRTC Push/Pull

                      WebRTC playback is slightly different from the methods mentioned above. The WebRTC protocol itself does not define a signaling interaction protocol, and users need to implement the sdp+icecandidate exchange logic themselves. So, WebRTC does not have a standard player, and you need to use JS or a native SDK to implement playback.

                      ZLMediaKit implements the WebRTC SDP+icecandidate exchange method via HTTP POST. The interface name is /index/api/webrtc. This interface uses POST content to pass the offer sdp while passing the media source's four-tuple app stream_id in the URL query parameters. Since HTTP inherently supports vhost, there's no need to specify vhost separately. WebRTC in ZLMediaKit can be considered another representation of the RTSP protocol. Their push and playback use the same data source, which is RtspMediaSource.

                      When pushing WebRTC, the HTTP POST interface for exchanging WebRTC SDP+icecandidate is similar to: http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=push

                      When playing WebRTC, the HTTP POST interface for exchanging WebRTC SDP+icecandidate is similar to: http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=play.

                      ZLMediaKit comes with a WebRTC test player/pusher. After starting ZLMediaKit, you can access it by visiting http://127.0.0.1/webrtc/ in your browser.

                      Additionally, ZLMediaKit also supports playing MP4 files via WebRTC. The HTTP POST interface is similar to: http://127.0.0.1/index/api/webrtc?app=record&stream=test.mp4&type=play.

                      6. URL Parameters

                      ZLMediaKit recognizes the string after the question mark in the URL as parameters, which are consistent with HTTP formats. Among them, vhost is a built-in parameter supported by ZLMediaKit, which allows specifying a virtual host. URL parameters are mainly used for streaming and playback authentication. When triggering the hook API, these parameters will be submitted to the third-party business server.

                      ',35),c=[a];function s(l,r){return o(),i("div",null,c)}const p=e(t,[["render",s],["__file","play_url_rules.html.vue"]]);export{p as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as i,e as d}from"./app-0NopiYEV.js";const t={},a=d('

                      1. Components of a URL

                      Taking rtsp://somedomain.com:554/live/0?token=abcdefg&field=value as an example, this URL is divided into the following parts:

                      • Protocol(scheam): RTSP protocol, default port 554
                      • Virtual Host(vhost): somedomain.com. This field can be either a domain name or an IP. If it is an IP, the corresponding virtual host is __defaultVhost__
                      • Server Port(port): 554. If the port number is not specified, the protocol's default port number is used
                      • Application Name(app): live
                      • Stream ID(streamid): 0
                      • Parameters(args): token=abcdefg&field=value

                      2. Stream Media Source in ZLMediaKit

                      In ZLMediaKit, a stream media source is a data object that can be used for functions such as live broadcasting and stream forwarding, and is referred to as MediaSource in this project. Currently, it supports five types of stream media sources, namely RtspMediaSource, RtmpMediaSource, HlsMediaSource, TSMediaSource, FMP4MediaSource.

                      Identifying a stream media source is mainly based on four elements (referred to as 4-tuples hereafter), which are:

                      • Protocol(scheam)
                      • Virtual Host(vhost)
                      • Application Name(app)
                      • Stream ID(streamid)

                      RtspMediaSource supports RTSP playback, RTSP streaming, WebRTC playback, and WebRTC streaming.

                      RtmpMediaSource supports RTMP streaming/playback, HTTP-FLV playback, and WS-FLV playback.

                      HlsMediaSource supports HLS playback.

                      TSMediaSource supports HTTP-TS playback and WS-TS playback.

                      FMP4MediaSource supports HTTP-FMP4 playback and WS-FMP4 playback.

                      3. Playback URLs Corresponding to the Stream Media Source

                      Suppose there is a RtspMediaSource, and its 4-tuple are rtsp (RtspMediaSource is always rtsp), somedomain.com, live, and 0 Then the URLs for playing this stream media source correspond to:

                      • rtsp://somedomain.com/live/0
                      • rtsps://somedomain.com/live/0
                      • rtsp://127.0.0.1/live/0?vhost=somedomain.com
                      • rtsps://127.0.0.1/live/0?vhost=somedomain.com

                      If there is a RtmpMediaSource, and its 4-tuple are rtmp (RtmpMediaSource is always rtmp), somedomain.com, live, and 0 Then the URLs for playing this stream media source correspond to:

                      • rtmp://somedomain.com/live/0
                      • rtmps://somedomain.com/live/0
                      • rtmp://127.0.0.1/live/0?vhost=somedomain.com
                      • rtmps://127.0.0.1/live/0?vhost=somedomain.com

                      RTMP types of stream media sources also support live streaming through http-flv, websocket, and other protocols. The corresponding URLs are as follows:

                      Note: Old code live broadcast suffix is .flv, and it has been changed to .live.flv in the new code

                      • http://somedomain.com/live/0.live.flv
                      • https://somedomain.com/live/0.live.flv
                      • http://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • https://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • ws://somedomain.com/live/0.live.flv
                      • wss://somedomain.com/live/0.live.flv
                      • ws://127.0.0.1/live/0.live.flv?vhost=somedomain.com
                      • wss://127.0.0.1/live/0.live.flv?vhost=somedomain.com

                      Sure, ZLMediaKit typically converts RTSP and RTMP media streams to each other and also transforms them into HLS/HTTP-TS/WS-TS/HTTP-fMP4/WS-fMP4. The playback URLs are as follows:

                      • HLS

                        • http://somedomain.com/live/0/hls.m3u8
                        • https://somedomain.com/live/0/hls.m3u8
                        • http://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
                        • https://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
                      • HTTP-TS/WS-TS (with the suffix .live.ts, to resolve the conflict with HLS)

                        • http://somedomain.com/live/0.live.ts
                        • https://somedomain.com/live/0.live.ts
                        • http://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • https://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • ws://somedomain.com/live/0.live.ts
                        • wss://somedomain.com/live/0.live.ts
                        • ws://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                        • wss://127.0.0.1/live/0.live.ts?vhost=somedomain.com
                      • HTTP-fMP4/WS-fMP4 (with the suffix .live.mp4, to resolve the conflict with MP4 on-demand)

                        • http://somedomain.com/live/0.live.mp4
                        • https://somedomain.com/live/0.live.mp4
                        • http://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • https://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • ws://somedomain.com/live/0.live.mp4
                        • wss://somedomain.com/live/0.live.mp4
                        • ws://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
                        • wss://127.0.0.1/live/0.live.mp4?vhost=somedomain.com

                      Generally speaking, all the above URLs are valid in ZLMediaKit, as ZLMediaKit converts media sources by default.

                      4. Video-on-Demand URL

                      ZLMediaKit typically implements video-on-demand via MP4 files, and we recommend using HTTP MP4 on-demand as it is the simplest method and the server does not need to demultiplex the MP4 files. ZLMediaKit currently also supports RTSP, RTMP, HTTP-FLV, and WebSocket-FLV MP4 on-demand. The corresponding URLs are similar to live broadcast URLs and will not be elaborated here; only the differences are discussed.

                      • ZLMediaKit restricts the application name for on-demand to the default record.
                      • Suppose an MP4 file is placed in the HTTP root directory record folder (www/record). Its relative path is www/record/0.mp4, then the on-demand URL would be:
                        • rtsp://somedomain.com/record/0.mp4
                        • rtmp://somedomain.com/record/0.mp4
                        • http://somedomain.com/record/0.mp4 (This is a generic HTTP file on-demand; the server does not need to demultiplex the file)
                        • http://somedomain.com/record/0.mp4.live.flv (This is HTTP-FLV live streaming, not HTTP on-demand; the server needs to demultiplex the file)
                        • ws://somedomain.com/record/0.mp4.live.flv
                        • http://somedomain.com/record/0.mp4.live.ts (This is HTTP-TS live streaming, not HTTP on-demand; the server needs to demultiplex the file)
                        • ws://somedomain.com/record/0.mp4.live.ts
                        • http://somedomain.com/record/0.mp4.live.mp4 (This is HTTP-fMP4 live streaming, not HTTP on-demand; the server needs to demultiplex the file)
                        • ws://somedomain.com/record/0.mp4.live.mp4
                      • If virtual hosting is enabled, then the on-demand files should be placed in www/somedomain.com/record/0.mp4.

                      5. WebRTC Push/Pull

                      WebRTC playback is slightly different from the methods mentioned above. The WebRTC protocol itself does not define a signaling interaction protocol, and users need to implement the sdp+icecandidate exchange logic themselves. So, WebRTC does not have a standard player, and you need to use JS or a native SDK to implement playback.

                      ZLMediaKit implements the WebRTC SDP+icecandidate exchange method via HTTP POST. The interface name is /index/api/webrtc. This interface uses POST content to pass the offer sdp while passing the media source's four-tuple app stream_id in the URL query parameters. Since HTTP inherently supports vhost, there's no need to specify vhost separately. WebRTC in ZLMediaKit can be considered another representation of the RTSP protocol. Their push and playback use the same data source, which is RtspMediaSource.

                      When pushing WebRTC, the HTTP POST interface for exchanging WebRTC SDP+icecandidate is similar to: http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=push

                      When playing WebRTC, the HTTP POST interface for exchanging WebRTC SDP+icecandidate is similar to: http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=play.

                      ZLMediaKit comes with a WebRTC test player/pusher. After starting ZLMediaKit, you can access it by visiting http://127.0.0.1/webrtc/ in your browser.

                      Additionally, ZLMediaKit also supports playing MP4 files via WebRTC. The HTTP POST interface is similar to: http://127.0.0.1/index/api/webrtc?app=record&stream=test.mp4&type=play.

                      6. URL Parameters

                      ZLMediaKit recognizes the string after the question mark in the URL as parameters, which are consistent with HTTP formats. Among them, vhost is a built-in parameter supported by ZLMediaKit, which allows specifying a virtual host. URL parameters are mainly used for streaming and playback authentication. When triggering the hook API, these parameters will be submitted to the third-party business server.

                      ',35),c=[a];function s(l,r){return o(),i("div",null,c)}const p=e(t,[["render",s],["__file","play_url_rules.html.vue"]]);export{p as default}; diff --git a/assets/playback_authentication.html--oFuX02K.js b/assets/playback_authentication.html-AsKcZv3x.js similarity index 87% rename from assets/playback_authentication.html--oFuX02K.js rename to assets/playback_authentication.html-AsKcZv3x.js index 92ba900..49bbb94 100644 --- a/assets/playback_authentication.html--oFuX02K.js +++ b/assets/playback_authentication.html-AsKcZv3x.js @@ -1 +1 @@ -import{_ as t}from"./playback_authentication_zh-gjAAn9Yd.js";import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as i,a as e}from"./app-RP31lnfq.js";const n={},c=e("p",null,"使用 ZLMediaKit 的 MediaServer 进程可以实现播放鉴权:",-1),_=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),r=[c,_];function l(s,m){return o(),i("div",null,r)}const u=a(n,[["render",l],["__file","playback_authentication.html.vue"]]);export{u as default}; +import{_ as t}from"./playback_authentication_zh-gjAAn9Yd.js";import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as i,a as e}from"./app-0NopiYEV.js";const n={},c=e("p",null,"使用 ZLMediaKit 的 MediaServer 进程可以实现播放鉴权:",-1),_=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),r=[c,_];function l(s,m){return o(),i("div",null,r)}const u=a(n,[["render",l],["__file","playback_authentication.html.vue"]]);export{u as default}; diff --git a/assets/playback_authentication.html-SRognS60.js b/assets/playback_authentication.html-G685IkfQ.js similarity index 88% rename from assets/playback_authentication.html-SRognS60.js rename to assets/playback_authentication.html-G685IkfQ.js index 7d7d2dc..fba98d5 100644 --- a/assets/playback_authentication.html-SRognS60.js +++ b/assets/playback_authentication.html-G685IkfQ.js @@ -1 +1 @@ -import{_ as t}from"./playback_authentication_zh-gjAAn9Yd.js";import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as i,a as e}from"./app-RP31lnfq.js";const n={},c=e("p",null,"The MediaServer process of ZLMediaKit can be used to implement playback authentication:",-1),s=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),_=[c,s];function l(r,m){return o(),i("div",null,_)}const f=a(n,[["render",l],["__file","playback_authentication.html.vue"]]);export{f as default}; +import{_ as t}from"./playback_authentication_zh-gjAAn9Yd.js";import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as i,a as e}from"./app-0NopiYEV.js";const n={},c=e("p",null,"The MediaServer process of ZLMediaKit can be used to implement playback authentication:",-1),s=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),_=[c,s];function l(r,m){return o(),i("div",null,_)}const f=a(n,[["render",l],["__file","playback_authentication.html.vue"]]);export{f as default}; diff --git a/assets/push_authentication.html-RYBrWv6d.js b/assets/push_authentication.html-_wCQpvPn.js similarity index 87% rename from assets/push_authentication.html-RYBrWv6d.js rename to assets/push_authentication.html-_wCQpvPn.js index 05e0834..fa38559 100644 --- a/assets/push_authentication.html-RYBrWv6d.js +++ b/assets/push_authentication.html-_wCQpvPn.js @@ -1 +1 @@ -import{_ as t}from"./push_authentication_zh-OS4qAsfx.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as i,a as e}from"./app-RP31lnfq.js";const n={},_=e("p",null,"使用 ZLMediaKit 的 MediaServer 进程可以实现推流鉴权:",-1),s=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),c=[_,s];function r(l,m){return a(),i("div",null,c)}const p=o(n,[["render",r],["__file","push_authentication.html.vue"]]);export{p as default}; +import{_ as t}from"./push_authentication_zh-OS4qAsfx.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as i,a as e}from"./app-0NopiYEV.js";const n={},_=e("p",null,"使用 ZLMediaKit 的 MediaServer 进程可以实现推流鉴权:",-1),s=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),c=[_,s];function r(l,m){return a(),i("div",null,c)}const p=o(n,[["render",r],["__file","push_authentication.html.vue"]]);export{p as default}; diff --git a/assets/push_authentication.html-buPamLTW.js b/assets/push_authentication.html-oaOjOtnq.js similarity index 88% rename from assets/push_authentication.html-buPamLTW.js rename to assets/push_authentication.html-oaOjOtnq.js index 78320a8..1cbce8a 100644 --- a/assets/push_authentication.html-buPamLTW.js +++ b/assets/push_authentication.html-oaOjOtnq.js @@ -1 +1 @@ -import{_ as t}from"./push_authentication_zh-OS4qAsfx.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as i,a as e}from"./app-RP31lnfq.js";const n={},s=e("p",null,"The MediaServer process of ZLMediaKit can be used to implement push authentication:",-1),c=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),_=[s,c];function r(l,m){return a(),i("div",null,_)}const h=o(n,[["render",r],["__file","push_authentication.html.vue"]]);export{h as default}; +import{_ as t}from"./push_authentication_zh-OS4qAsfx.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as i,a as e}from"./app-0NopiYEV.js";const n={},s=e("p",null,"The MediaServer process of ZLMediaKit can be used to implement push authentication:",-1),c=e("figure",null,[e("img",{src:t,alt:"image",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image")],-1),_=[s,c];function r(l,m){return a(),i("div",null,_)}const h=o(n,[["render",r],["__file","push_authentication.html.vue"]]);export{h as default}; diff --git a/assets/push_streaming.html-rR7nCAyc.js b/assets/push_streaming.html-JqhELNzW.js similarity index 99% rename from assets/push_streaming.html-rR7nCAyc.js rename to assets/push_streaming.html-JqhELNzW.js index 7ffa239..a433e44 100644 --- a/assets/push_streaming.html-rR7nCAyc.js +++ b/assets/push_streaming.html-JqhELNzW.js @@ -1,3 +1,3 @@ -import{_ as o,a as d,b as p,c}from"./gb28181_push_streaming_4-qWTnfswt.js";import{_ as u}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as h,c as _,a as e,d as a,b as t,w as s,e as n}from"./app-RP31lnfq.js";const m={},g=n('

                      介绍

                      ZLMediaKit 支持 GB28181 的 ps-rtp 推流,支持的编码格式分别为 h264/h265/aac/g711/opus。 在收到 GB28181 推流后,ZLMediaKit 会依次做以下事情:

                      • rtp 排序去重。
                      • rtp 解析成 ps 或 ts。
                      • ps 或 ts 解析成h264/h265/aac/g711/opus
                      • 输入到复用器,生成 rtsp/rtmp/ts/fmp4 等格式,以便转换成其他协议或容器。

                      简单使用

                      ZLMediaKit 默认开启 10000 端口用于接收 UDP/TCP 的 GB28181 推流,由于国标推流不好测试,ZLMediaKit 同时也支持 rtp_mpegts 推流,代码会自适应判断是否为 ps 还是 ts。 所以如果大家没有摄像头的情况下,可以用 FFmpeg 简单测试,基本上体验跟国标推流并无二致。

                      ',5),f=n(`
                    2. ffmpeg 推流命令:

                       ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
                      +import{_ as o,a as d,b as p,c}from"./gb28181_push_streaming_4-qWTnfswt.js";import{_ as u}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as h,c as _,a as e,d as a,b as t,w as s,e as n}from"./app-0NopiYEV.js";const m={},g=n('

                      介绍

                      ZLMediaKit 支持 GB28181 的 ps-rtp 推流,支持的编码格式分别为 h264/h265/aac/g711/opus。 在收到 GB28181 推流后,ZLMediaKit 会依次做以下事情:

                      • rtp 排序去重。
                      • rtp 解析成 ps 或 ts。
                      • ps 或 ts 解析成h264/h265/aac/g711/opus
                      • 输入到复用器,生成 rtsp/rtmp/ts/fmp4 等格式,以便转换成其他协议或容器。

                      简单使用

                      ZLMediaKit 默认开启 10000 端口用于接收 UDP/TCP 的 GB28181 推流,由于国标推流不好测试,ZLMediaKit 同时也支持 rtp_mpegts 推流,代码会自适应判断是否为 ps 还是 ts。 所以如果大家没有摄像头的情况下,可以用 FFmpeg 简单测试,基本上体验跟国标推流并无二致。

                      ',5),f=n(`
                    3. ffmpeg 推流命令:

                       ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
                       
                    4. `,1),b=e("p",null,"MediaServer 收到推流后的日志:",-1),v=e("figure",null,[e("img",{src:o,alt:"图片",tabindex:"0",loading:"lazy"}),e("figcaption",null,"图片")],-1),k=e("code",null,"rtp",-1),x=e("code",null,"BFC2C622",-1),L=e("p",null,"需要指出的是,国标推流的 app 固定为 rtp,你只能通过代码来修改它,stream_id 为 rtp 流的 ssrc,这个是随机的,在 FFmpeg 中貌似没法控制。",-1),M={href:"https://github.com/xia-chu/ZLMediaKit/issues/267",target:"_blank",rel:"noopener noreferrer"},K=e("h2",{id:"高阶使用",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#高阶使用","aria-hidden":"true"},"#"),a(" 高阶使用")],-1),Z=e("p",null,"在推流给 10000 端口时,您可能发现有个缺陷,就是 stream_id 是 ssrc,比较抽象,可能还没法控制。",-1),w=n(`

                      在使用 openRtpServer 接口动态开启国标收流端口后,这个端口只能产生一个流,也就是说,一个摄像头需要一个服务器端口用于接收国标推流。

                      • 以下是演示范例(postman 工具调用 openRtpServer 接口创建随机端口):
                      图片
                      图片
                      • 然后启动 FFmpeg 推流
                       ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:50077
                       
                      • 以下是推流后注册的服务器日志

                        图片
                        图片
                      • 需要指出的是,如果 openRtpServer 接口创建的端口一直没收到流(或者解析不出流),那么会自动关闭和释放。

                      调试文件生成

                      如果你的 MediaServer 能收到国标推流,但是未出现媒体注册相关日志,那么有可能是流有些异常,你可以修改配置文件rtp_proxy.dumpDir指定调试文件导出目录, 这样 ZLMediaKit 会把国标流导出到该文件夹,就像这样:

                      图片
                      图片

                      你可以直接用 ffplay 播放mp2/video后缀的文件rtp后缀的文件,你可以用测试工具test_rtp调试,或者你可以把它分享给其他人帮你分析原因。

                      让 ZLMediaKit 往其他国标服务器推流

                      ',11),B=e("ul",null,[e("li",null,"postman 调用 startSendRtp 接口推送国标流:")],-1),y=e("figure",null,[e("img",{src:"https://user-images.githubusercontent.com/11495632/93873636-a0576500-fd04-11ea-8b0f-98fb3f60c778.png",alt:"图片",width:"1551",tabindex:"0",loading:"lazy"}),e("figcaption",null,"图片")],-1),z=e("figure",null,[e("img",{src:d,alt:"图片",tabindex:"0",loading:"lazy"}),e("figcaption",null,"图片")],-1),S=e("ul",null,[e("li",null,"上图中是推送国标流给自己,当然你也可以推送给其他服务器,支持 udp/tcp 方式推流。")],-1),F=e("h2",{id:"性能",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#性能","aria-hidden":"true"},"#"),a(" 性能")],-1),G={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/961",target:"_blank",rel:"noopener noreferrer"},C=e("h2",{id:"丢包问题调试",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#丢包问题调试","aria-hidden":"true"},"#"),a(" 丢包问题调试")],-1),R=e("p",null,"如果在测试 GB28181 UDP 推流时,频繁打印以下日志:",-1),V=e("figure",null,[e("img",{src:p,alt:"图片",tabindex:"0",loading:"lazy"}),e("figcaption",null,"图片")],-1),I={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/1221",target:"_blank",rel:"noopener noreferrer"},N=e("h2",{id:"相关文章推荐阅读",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#相关文章推荐阅读","aria-hidden":"true"},"#"),a(" 相关文章推荐阅读")],-1),P={href:"https://notemi.cn/wvp---zlmedia-kit---mediaserverui-to-realize-streaming-playback-and-recording-of-camera-gb28181.html",target:"_blank",rel:"noopener noreferrer"},U={href:"http://dlgcy.com/gb28181-solution-zlmediakit-mediaserverui/",target:"_blank",rel:"noopener noreferrer"},D={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/2217",target:"_blank",rel:"noopener noreferrer"};function E(T,W){const r=l("RouterLink"),i=l("ExternalLinkIcon");return h(),_("div",null,[g,e("ul",null,[f,e("li",null,[b,v,e("p",null,[a("上图中,这个推流的 rtp ssrc 为 BFC2C622(16 进制打印),这个流的 app 为"),k,a(", stream_id 为"),x,a(",您可以根据"),t(r,{to:"/guide/media_server/play_url_rules.html"},{default:s(()=>[a("wiki")]),_:1}),a("来组合成 url 并播放这个流。")])])]),L,e("p",null,[a("另外,每次推流时,请更换 ssrc,否则 ZLMediaKit 发现推流端 ip 和端口变化后,会直接丢弃 rtp 包(现象如此"),e("a",M,[a("issue"),t(i)]),a(");这样做的目的是为了防止两个设备使用同一个 ssrc 推流时互相干扰。")]),K,Z,e("p",null,[a("那么我们能否自定义 stream_id? 答案是肯定的,ZLMediaKit 通过"),t(r,{to:"/guide/media_server/restful_api.html#24indexapiopenrtpserver"},{default:s(()=>[a("restful api")]),_:1}),a("可以动态开启国标收流端口(同时支持 udp/tcp 模式)。")]),w,e("p",null,[a("你可以使用"),t(r,{to:"/guide/media_server/restful_api.html#27indexapistartsendrtp"},{default:s(()=>[a("restful api")]),_:1}),a("让 ZLMediaKit 生成国标流并往其他服务器推送,支持其他任何已注册的流转国标流。")]),B,y,z,S,F,e("p",null,[a("GB28181 的推流性能测试,请参考:"),e("a",G,[a("#961"),t(i)])]),C,R,V,e("p",null,[a("请查看此"),e("a",I,[a("issue"),t(i)]),a(",特别提示,wifi 情况下,由于无线网络干扰严重,丢包问题很可能确实是网络质量差导致的。")]),N,e("ul",null,[e("li",null,[e("p",null,[e("a",P,[a("WVP+ZLMediaKit+MediaServerUI 实现摄像头 GB28181 推流播放录制"),t(i)])])]),e("li",null,[e("p",null,[e("a",U,[a("使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放"),t(i)])])]),e("li",null,[e("p",null,[e("a",D,[a("GB28181 语音对讲"),t(i)])])])])])}const H=u(m,[["render",E],["__file","push_streaming.html.vue"]]);export{H as default}; diff --git a/assets/push_streaming.html-ieJcZ8zc.js b/assets/push_streaming.html-MRQ3SR8R.js similarity index 99% rename from assets/push_streaming.html-ieJcZ8zc.js rename to assets/push_streaming.html-MRQ3SR8R.js index 5c3ef16..2154bc7 100644 --- a/assets/push_streaming.html-ieJcZ8zc.js +++ b/assets/push_streaming.html-MRQ3SR8R.js @@ -1,3 +1,3 @@ -import{a as o,b as d,_ as p,c}from"./gb28181_push_streaming_4-qWTnfswt.js";import{_ as h}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as u,c as _,a as e,d as a,b as t,w as s,e as l}from"./app-RP31lnfq.js";const m={},g=l(`

                      介绍

                      ZLMediaKit 支持 GB28181 的 ps-rtp 推流,支持的编码格式分别为 h264/h265/aac/g711/opus。 在收到 GB28181 推流后,ZLMediaKit 会依次做以下事情:

                      • rtp 排序去重。
                      • rtp 解析成 ps 或 ts。
                      • ps 或 ts 解析成h264/h265/aac/g711/opus
                      • 输入到复用器,生成 rtsp/rtmp/ts/fmp4 等格式,以便转换成其他协议或容器。

                      简单使用

                      ZLMediaKit 默认开启 10000 端口用于接收 UDP/TCP 的 GB28181 推流,由于国标推流不好测试,ZLMediaKit 同时也支持 rtp_mpegts 推流,代码会自适应判断是否为 ps 还是 ts。 所以如果大家没有摄像头的情况下,可以用 FFmpeg 简单测试,基本上体验跟国标推流并无二致。

                      • ffmpeg 推流命令:
                       ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
                      +import{a as o,b as d,_ as p,c}from"./gb28181_push_streaming_4-qWTnfswt.js";import{_ as h}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as u,c as _,a as e,d as a,b as t,w as s,e as l}from"./app-0NopiYEV.js";const m={},g=l(`

                      介绍

                      ZLMediaKit 支持 GB28181 的 ps-rtp 推流,支持的编码格式分别为 h264/h265/aac/g711/opus。 在收到 GB28181 推流后,ZLMediaKit 会依次做以下事情:

                      • rtp 排序去重。
                      • rtp 解析成 ps 或 ts。
                      • ps 或 ts 解析成h264/h265/aac/g711/opus
                      • 输入到复用器,生成 rtsp/rtmp/ts/fmp4 等格式,以便转换成其他协议或容器。

                      简单使用

                      ZLMediaKit 默认开启 10000 端口用于接收 UDP/TCP 的 GB28181 推流,由于国标推流不好测试,ZLMediaKit 同时也支持 rtp_mpegts 推流,代码会自适应判断是否为 ps 还是 ts。 所以如果大家没有摄像头的情况下,可以用 FFmpeg 简单测试,基本上体验跟国标推流并无二致。

                      • ffmpeg 推流命令:
                       ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
                       
                      • MediaServer 收到推流后的日志: 图片
                      ',8),f=e("code",null,"rtp",-1),b=e("code",null,"BFC2C622",-1),v=e("p",null,"需要指出的是,国标推流的 app 固定为 rtp,你只能通过代码来修改它,stream_id 为 rtp 流的 ssrc,这个是随机的,在 FFmpeg 中貌似没法控制。",-1),k={href:"https://github.com/xia-chu/ZLMediaKit/issues/267",target:"_blank",rel:"noopener noreferrer"},x=e("h2",{id:"高阶使用",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#高阶使用","aria-hidden":"true"},"#"),a(" 高阶使用")],-1),L=e("p",null,"在推流给 10000 端口时,您可能发现有个缺陷,就是 stream_id 是 ssrc,比较抽象,可能还没法控制。",-1),M=l(`

                      在使用 openRtpServer 接口动态开启国标收流端口后,这个端口只能产生一个流,也就是说,一个摄像头需要一个服务器端口用于接收国标推流。

                      • 以下是演示范例(postman 工具调用 openRtpServer 接口创建随机端口):
                      图片
                      图片
                      • 然后启动 FFmpeg 推流
                       ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:50077
                       
                      • 以下是推流后注册的服务器日志 图片

                      • 需要指出的是,如果 openRtpServer 接口创建的端口一直没收到流(或者解析不出流),那么会自动关闭和释放。

                      调试文件生成

                      如果你的 MediaServer 能收到国标推流,但是未出现媒体注册相关日志,那么有可能是流有些异常,你可以修改配置文件rtp_proxy.dumpDir指定调试文件导出目录, 这样 ZLMediaKit 会把国标流导出到该文件夹,就像这样:

                      图片
                      图片

                      你可以直接用 ffplay 播放mp2/video后缀的文件rtp后缀的文件,你可以用测试工具test_rtp调试,或者你可以把它分享给其他人帮你分析原因。

                      让 ZLMediaKit 往其他国标服务器推流

                      ',11),K=e("ul",null,[e("li",null,"postman 调用 startSendRtp 接口推送国标流:")],-1),Z=e("figure",null,[e("img",{src:"https://user-images.githubusercontent.com/11495632/93873636-a0576500-fd04-11ea-8b0f-98fb3f60c778.png",alt:"图片",width:"1551",tabindex:"0",loading:"lazy"}),e("figcaption",null,"图片")],-1),z=e("figure",null,[e("img",{src:o,alt:"图片",tabindex:"0",loading:"lazy"}),e("figcaption",null,"图片")],-1),w=e("ul",null,[e("li",null,"上图中是推送国标流给自己,当然你也可以推送给其他服务器,支持 udp/tcp 方式推流。")],-1),B=e("h2",{id:"性能",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#性能","aria-hidden":"true"},"#"),a(" 性能")],-1),y={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/961",target:"_blank",rel:"noopener noreferrer"},S=e("h2",{id:"丢包问题调试",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#丢包问题调试","aria-hidden":"true"},"#"),a(" 丢包问题调试")],-1),F=e("p",null,"如果在测试 GB28181 UDP 推流时,频繁打印以下日志:",-1),G=e("figure",null,[e("img",{src:d,alt:"图片",tabindex:"0",loading:"lazy"}),e("figcaption",null,"图片")],-1),C={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/1221",target:"_blank",rel:"noopener noreferrer"},R=e("h2",{id:"相关文章推荐阅读",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#相关文章推荐阅读","aria-hidden":"true"},"#"),a(" 相关文章推荐阅读")],-1),V={href:"https://notemi.cn/wvp---zlmedia-kit---mediaserverui-to-realize-streaming-playback-and-recording-of-camera-gb28181.html",target:"_blank",rel:"noopener noreferrer"},I={href:"http://dlgcy.com/gb28181-solution-zlmediakit-mediaserverui/",target:"_blank",rel:"noopener noreferrer"},N={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/2217",target:"_blank",rel:"noopener noreferrer"};function P(U,D){const r=n("RouterLink"),i=n("ExternalLinkIcon");return u(),_("div",null,[g,e("p",null,[a("上图中,这个推流的 rtp ssrc 为 BFC2C622(16 进制打印),这个流的 app 为"),f,a(", stream_id 为"),b,a(",您可以根据"),t(r,{to:"/zh/guide/media_server/play_url_rules.html"},{default:s(()=>[a("wiki")]),_:1}),a("来组合成 url 并播放这个流。")]),v,e("p",null,[a("另外,每次推流时,请更换 ssrc,否则 ZLMediaKit 发现推流端 ip 和端口变化后,会直接丢弃 rtp 包(现象如此"),e("a",k,[a("issue"),t(i)]),a(");这样做的目的是为了防止两个设备使用同一个 ssrc 推流时互相干扰。")]),x,L,e("p",null,[a("那么我们能否自定义 stream_id? 答案是肯定的,ZLMediaKit 通过"),t(r,{to:"/zh/guide/media_server/restful_api.html#24indexapiopenrtpserver"},{default:s(()=>[a("restful api")]),_:1}),a("可以动态开启国标收流端口(同时支持 udp/tcp 模式)。")]),M,e("p",null,[a("你可以使用"),t(r,{to:"/zh/guide/media_server/restful_api.html#27indexapistartsendrtp"},{default:s(()=>[a("restful api")]),_:1}),a("让 ZLMediaKit 生成国标流并往其他服务器推送,支持其他任何已注册的流转国标流。")]),K,Z,z,w,B,e("p",null,[a("GB28181 的推流性能测试,请参考:"),e("a",y,[a("#961"),t(i)])]),S,F,G,e("p",null,[a("请查看此"),e("a",C,[a("issue"),t(i)]),a(",特别提示,wifi 情况下,由于无线网络干扰严重,丢包问题很可能确实是网络质量差导致的。")]),R,e("p",null,[e("a",V,[a("WVP+ZLMediaKit+MediaServerUI 实现摄像头 GB28181 推流播放录制"),t(i)])]),e("p",null,[e("a",I,[a("使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放"),t(i)])]),e("p",null,[e("a",N,[a("GB28181 语音对讲"),t(i)])])])}const j=h(m,[["render",P],["__file","push_streaming.html.vue"]]);export{j as default}; diff --git a/assets/push_test.html-fOBpg7dv.js b/assets/push_test.html-dzpZPZVg.js similarity index 98% rename from assets/push_test.html-fOBpg7dv.js rename to assets/push_test.html-dzpZPZVg.js index 05e575c..1e19a83 100644 --- a/assets/push_test.html-fOBpg7dv.js +++ b/assets/push_test.html-dzpZPZVg.js @@ -1,4 +1,4 @@ -import{_ as s}from"./push_test-WgKOKRFc.js";import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as r,c as p,a as i,d as a,b as l,w as o,e as c}from"./app-RP31lnfq.js";const d={},m=c(`

                      Push Testing

                      ZLMediaKit supports RTSP/RTMP/RTP push streaming. Typically, OBS/FFmpeg is used for push testing. The FFmpeg push commands are as follows:

                      1. Pushing via RTSP:

                        # H.264 push
                        +import{_ as s}from"./push_test-WgKOKRFc.js";import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as r,c as p,a as i,d as a,b as l,w as o,e as c}from"./app-0NopiYEV.js";const d={},m=c(`

                        Push Testing

                        ZLMediaKit supports RTSP/RTMP/RTP push streaming. Typically, OBS/FFmpeg is used for push testing. The FFmpeg push commands are as follows:

                        1. Pushing via RTSP:

                          # H.264 push
                           ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test
                           # H.265 push
                           ffmpeg -re -i "/path/to/test.mp4" -vcodec h265 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test
                          diff --git a/assets/push_test.html-78JMVV7F.js b/assets/push_test.html-n5-72YJ1.js
                          similarity index 98%
                          rename from assets/push_test.html-78JMVV7F.js
                          rename to assets/push_test.html-n5-72YJ1.js
                          index ef20aa5..846a539 100644
                          --- a/assets/push_test.html-78JMVV7F.js
                          +++ b/assets/push_test.html-n5-72YJ1.js
                          @@ -1,4 +1,4 @@
                          -import{_ as s}from"./push_test-WgKOKRFc.js";import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as r,c as p,a as l,d as a,b as i,w as c,e as o}from"./app-RP31lnfq.js";const d={},m=o(`

                          推流测试

                          ZLMediaKit 支持 rtsp/rtmp/rtp 推流,一般通常使用 obs/ffmpeg 推流测试,其中 FFmpeg 推流命令支持以下:

                          • 1、使用 rtsp 方式推流
                          # h264推流
                          +import{_ as s}from"./push_test-WgKOKRFc.js";import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as r,c as p,a as l,d as a,b as i,w as c,e as o}from"./app-0NopiYEV.js";const d={},m=o(`

                          推流测试

                          ZLMediaKit 支持 rtsp/rtmp/rtp 推流,一般通常使用 obs/ffmpeg 推流测试,其中 FFmpeg 推流命令支持以下:

                          • 1、使用 rtsp 方式推流
                          # h264推流
                           ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test
                           # h265推流
                           ffmpeg -re -i "/path/to/test.mp4" -vcodec h265 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test
                          diff --git a/assets/quadrantDiagram-6c355bbc-AVZ0kdE9.js b/assets/quadrantDiagram-6c355bbc-3OwR_3NY.js
                          similarity index 99%
                          rename from assets/quadrantDiagram-6c355bbc-AVZ0kdE9.js
                          rename to assets/quadrantDiagram-6c355bbc-3OwR_3NY.js
                          index 3bdda52..a9d9983 100644
                          --- a/assets/quadrantDiagram-6c355bbc-AVZ0kdE9.js
                          +++ b/assets/quadrantDiagram-6c355bbc-3OwR_3NY.js
                          @@ -1,4 +1,4 @@
                          -import{a_ as vt,c as yt,aL as D,l as ot,s as Lt,g as Ct,v as zt,x as bt,a as Et,b as Dt,z as It,h as gt,i as Bt,d as wt}from"./mermaid.core-ygY5oRaR.js";import{l as mt}from"./linear-qWzY0BiT.js";import"./app-RP31lnfq.js";import"./init-Hi12RPRh.js";var pt=function(){var e=function(K,n,r,l){for(r=r||{},l=K.length;l--;r[K[l]]=n);return r},s=[1,3],h=[1,4],x=[1,5],f=[1,6],d=[1,7],c=[1,5,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],g=[1,5,6,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],i=[32,33,34],y=[2,7],p=[1,13],B=[1,17],N=[1,18],V=[1,19],I=[1,20],b=[1,21],M=[1,22],X=[1,23],C=[1,24],it=[1,25],at=[1,26],nt=[1,27],U=[1,30],Q=[1,31],T=[1,32],m=[1,33],_=[1,34],t=[1,35],A=[1,36],S=[1,37],k=[1,38],F=[1,39],P=[1,40],v=[1,41],L=[1,42],O=[1,57],Y=[1,58],z=[5,22,26,32,33,34,40,41,42,43,44,45,46,47,48,49,50,51],ht={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,SPACE:5,QUADRANT:6,document:7,line:8,statement:9,axisDetails:10,quadrantDetails:11,points:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,text:21,point_start:22,point_x:23,point_y:24,"X-AXIS":25,"AXIS-TEXT-DELIMITER":26,"Y-AXIS":27,QUADRANT_1:28,QUADRANT_2:29,QUADRANT_3:30,QUADRANT_4:31,NEWLINE:32,SEMI:33,EOF:34,alphaNumToken:35,textNoTagsToken:36,STR:37,MD_STR:38,alphaNum:39,PUNCTUATION:40,AMP:41,NUM:42,ALPHA:43,COMMA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,UNDERSCORE:50,MINUS:51,$accept:0,$end:1},terminals_:{2:"error",5:"SPACE",6:"QUADRANT",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",22:"point_start",23:"point_x",24:"point_y",25:"X-AXIS",26:"AXIS-TEXT-DELIMITER",27:"Y-AXIS",28:"QUADRANT_1",29:"QUADRANT_2",30:"QUADRANT_3",31:"QUADRANT_4",32:"NEWLINE",33:"SEMI",34:"EOF",37:"STR",38:"MD_STR",40:"PUNCTUATION",41:"AMP",42:"NUM",43:"ALPHA",44:"COMMA",45:"PLUS",46:"EQUALS",47:"MULT",48:"DOT",49:"BRKT",50:"UNDERSCORE",51:"MINUS"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,1],[9,1],[9,1],[9,2],[9,2],[9,2],[9,1],[9,1],[12,4],[10,4],[10,3],[10,2],[10,4],[10,3],[10,2],[11,2],[11,2],[11,2],[11,2],[4,1],[4,1],[4,1],[21,1],[21,2],[21,1],[21,1],[39,1],[39,2],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[36,1],[36,1],[36,1]],performAction:function(n,r,l,o,q,a,et){var u=a.length-1;switch(q){case 12:this.$=a[u].trim(),o.setDiagramTitle(this.$);break;case 13:this.$=a[u].trim(),o.setAccTitle(this.$);break;case 14:case 15:this.$=a[u].trim(),o.setAccDescription(this.$);break;case 16:o.addSection(a[u].substr(8)),this.$=a[u].substr(8);break;case 17:o.addPoint(a[u-3],a[u-1],a[u]);break;case 18:o.setXAxisLeftText(a[u-2]),o.setXAxisRightText(a[u]);break;case 19:a[u-1].text+=" ⟶ ",o.setXAxisLeftText(a[u-1]);break;case 20:o.setXAxisLeftText(a[u]);break;case 21:o.setYAxisBottomText(a[u-2]),o.setYAxisTopText(a[u]);break;case 22:a[u-1].text+=" ⟶ ",o.setYAxisBottomText(a[u-1]);break;case 23:o.setYAxisBottomText(a[u]);break;case 24:o.setQuadrant1Text(a[u]);break;case 25:o.setQuadrant2Text(a[u]);break;case 26:o.setQuadrant3Text(a[u]);break;case 27:o.setQuadrant4Text(a[u]);break;case 31:this.$={text:a[u],type:"text"};break;case 32:this.$={text:a[u-1].text+""+a[u],type:a[u-1].type};break;case 33:this.$={text:a[u],type:"text"};break;case 34:this.$={text:a[u],type:"markdown"};break;case 35:this.$=a[u];break;case 36:this.$=a[u-1]+""+a[u];break}},table:[{3:1,4:2,5:s,6:h,32:x,33:f,34:d},{1:[3]},{3:8,4:2,5:s,6:h,32:x,33:f,34:d},{3:9,4:2,5:s,6:h,32:x,33:f,34:d},e(c,[2,4],{7:10}),e(g,[2,28]),e(g,[2,29]),e(g,[2,30]),{1:[2,1]},{1:[2,2]},e(i,y,{8:11,9:12,10:14,11:15,12:16,21:28,35:29,1:[2,3],5:p,13:B,15:N,17:V,19:I,20:b,25:M,27:X,28:C,29:it,30:at,31:nt,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),e(c,[2,5]),{4:43,32:x,33:f,34:d},e(i,y,{10:14,11:15,12:16,21:28,35:29,9:44,5:p,13:B,15:N,17:V,19:I,20:b,25:M,27:X,28:C,29:it,30:at,31:nt,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),e(i,[2,9]),e(i,[2,10]),e(i,[2,11]),{14:[1,45]},{16:[1,46]},{18:[1,47]},e(i,[2,15]),e(i,[2,16]),{21:48,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:49,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:50,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:51,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:52,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:53,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{5:O,22:[1,54],35:56,36:55,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y},e(z,[2,31]),e(z,[2,33]),e(z,[2,34]),e(z,[2,37]),e(z,[2,38]),e(z,[2,39]),e(z,[2,40]),e(z,[2,41]),e(z,[2,42]),e(z,[2,43]),e(z,[2,44]),e(z,[2,45]),e(z,[2,46]),e(z,[2,47]),e(c,[2,6]),e(i,[2,8]),e(i,[2,12]),e(i,[2,13]),e(i,[2,14]),e(i,[2,20],{36:55,35:56,5:O,26:[1,59],40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,23],{36:55,35:56,5:O,26:[1,60],40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,24],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,25],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,26],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,27],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),{23:[1,61]},e(z,[2,32]),e(z,[2,48]),e(z,[2,49]),e(z,[2,50]),e(i,[2,19],{35:29,21:62,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),e(i,[2,22],{35:29,21:63,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),{24:[1,64]},e(i,[2,18],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,21],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,17])],defaultActions:{8:[2,1],9:[2,2]},parseError:function(n,r){if(r.recoverable)this.trace(n);else{var l=new Error(n);throw l.hash=r,l}},parse:function(n){var r=this,l=[0],o=[],q=[null],a=[],et=this.table,u="",st=0,qt=0,St=2,Tt=1,kt=a.slice.call(arguments,1),E=Object.create(this.lexer),Z={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(Z.yy[dt]=this.yy[dt]);E.setInput(n,Z.yy),Z.yy.lexer=E,Z.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var ut=E.yylloc;a.push(ut);var Ft=E.options&&E.options.ranges;typeof Z.yy.parseError=="function"?this.parseError=Z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pt(){var j;return j=o.pop()||E.lex()||Tt,typeof j!="number"&&(j instanceof Array&&(o=j,j=o.pop()),j=r.symbols_[j]||j),j}for(var W,J,H,xt,tt={},rt,$,_t,lt;;){if(J=l[l.length-1],this.defaultActions[J]?H=this.defaultActions[J]:((W===null||typeof W>"u")&&(W=Pt()),H=et[J]&&et[J][W]),typeof H>"u"||!H.length||!H[0]){var ft="";lt=[];for(rt in et[J])this.terminals_[rt]&&rt>St&<.push("'"+this.terminals_[rt]+"'");E.showPosition?ft="Parse error on line "+(st+1)+`:
                          +import{a_ as vt,c as yt,aL as D,l as ot,s as Lt,g as Ct,v as zt,x as bt,a as Et,b as Dt,z as It,h as gt,i as Bt,d as wt}from"./mermaid.core-YBgJFCkH.js";import{l as mt}from"./linear-nks6njEu.js";import"./app-0NopiYEV.js";import"./init-Hi12RPRh.js";var pt=function(){var e=function(K,n,r,l){for(r=r||{},l=K.length;l--;r[K[l]]=n);return r},s=[1,3],h=[1,4],x=[1,5],f=[1,6],d=[1,7],c=[1,5,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],g=[1,5,6,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],i=[32,33,34],y=[2,7],p=[1,13],B=[1,17],N=[1,18],V=[1,19],I=[1,20],b=[1,21],M=[1,22],X=[1,23],C=[1,24],it=[1,25],at=[1,26],nt=[1,27],U=[1,30],Q=[1,31],T=[1,32],m=[1,33],_=[1,34],t=[1,35],A=[1,36],S=[1,37],k=[1,38],F=[1,39],P=[1,40],v=[1,41],L=[1,42],O=[1,57],Y=[1,58],z=[5,22,26,32,33,34,40,41,42,43,44,45,46,47,48,49,50,51],ht={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,SPACE:5,QUADRANT:6,document:7,line:8,statement:9,axisDetails:10,quadrantDetails:11,points:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,text:21,point_start:22,point_x:23,point_y:24,"X-AXIS":25,"AXIS-TEXT-DELIMITER":26,"Y-AXIS":27,QUADRANT_1:28,QUADRANT_2:29,QUADRANT_3:30,QUADRANT_4:31,NEWLINE:32,SEMI:33,EOF:34,alphaNumToken:35,textNoTagsToken:36,STR:37,MD_STR:38,alphaNum:39,PUNCTUATION:40,AMP:41,NUM:42,ALPHA:43,COMMA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,UNDERSCORE:50,MINUS:51,$accept:0,$end:1},terminals_:{2:"error",5:"SPACE",6:"QUADRANT",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",22:"point_start",23:"point_x",24:"point_y",25:"X-AXIS",26:"AXIS-TEXT-DELIMITER",27:"Y-AXIS",28:"QUADRANT_1",29:"QUADRANT_2",30:"QUADRANT_3",31:"QUADRANT_4",32:"NEWLINE",33:"SEMI",34:"EOF",37:"STR",38:"MD_STR",40:"PUNCTUATION",41:"AMP",42:"NUM",43:"ALPHA",44:"COMMA",45:"PLUS",46:"EQUALS",47:"MULT",48:"DOT",49:"BRKT",50:"UNDERSCORE",51:"MINUS"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,1],[9,1],[9,1],[9,2],[9,2],[9,2],[9,1],[9,1],[12,4],[10,4],[10,3],[10,2],[10,4],[10,3],[10,2],[11,2],[11,2],[11,2],[11,2],[4,1],[4,1],[4,1],[21,1],[21,2],[21,1],[21,1],[39,1],[39,2],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[36,1],[36,1],[36,1]],performAction:function(n,r,l,o,q,a,et){var u=a.length-1;switch(q){case 12:this.$=a[u].trim(),o.setDiagramTitle(this.$);break;case 13:this.$=a[u].trim(),o.setAccTitle(this.$);break;case 14:case 15:this.$=a[u].trim(),o.setAccDescription(this.$);break;case 16:o.addSection(a[u].substr(8)),this.$=a[u].substr(8);break;case 17:o.addPoint(a[u-3],a[u-1],a[u]);break;case 18:o.setXAxisLeftText(a[u-2]),o.setXAxisRightText(a[u]);break;case 19:a[u-1].text+=" ⟶ ",o.setXAxisLeftText(a[u-1]);break;case 20:o.setXAxisLeftText(a[u]);break;case 21:o.setYAxisBottomText(a[u-2]),o.setYAxisTopText(a[u]);break;case 22:a[u-1].text+=" ⟶ ",o.setYAxisBottomText(a[u-1]);break;case 23:o.setYAxisBottomText(a[u]);break;case 24:o.setQuadrant1Text(a[u]);break;case 25:o.setQuadrant2Text(a[u]);break;case 26:o.setQuadrant3Text(a[u]);break;case 27:o.setQuadrant4Text(a[u]);break;case 31:this.$={text:a[u],type:"text"};break;case 32:this.$={text:a[u-1].text+""+a[u],type:a[u-1].type};break;case 33:this.$={text:a[u],type:"text"};break;case 34:this.$={text:a[u],type:"markdown"};break;case 35:this.$=a[u];break;case 36:this.$=a[u-1]+""+a[u];break}},table:[{3:1,4:2,5:s,6:h,32:x,33:f,34:d},{1:[3]},{3:8,4:2,5:s,6:h,32:x,33:f,34:d},{3:9,4:2,5:s,6:h,32:x,33:f,34:d},e(c,[2,4],{7:10}),e(g,[2,28]),e(g,[2,29]),e(g,[2,30]),{1:[2,1]},{1:[2,2]},e(i,y,{8:11,9:12,10:14,11:15,12:16,21:28,35:29,1:[2,3],5:p,13:B,15:N,17:V,19:I,20:b,25:M,27:X,28:C,29:it,30:at,31:nt,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),e(c,[2,5]),{4:43,32:x,33:f,34:d},e(i,y,{10:14,11:15,12:16,21:28,35:29,9:44,5:p,13:B,15:N,17:V,19:I,20:b,25:M,27:X,28:C,29:it,30:at,31:nt,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),e(i,[2,9]),e(i,[2,10]),e(i,[2,11]),{14:[1,45]},{16:[1,46]},{18:[1,47]},e(i,[2,15]),e(i,[2,16]),{21:48,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:49,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:50,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:51,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:52,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:53,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{5:O,22:[1,54],35:56,36:55,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y},e(z,[2,31]),e(z,[2,33]),e(z,[2,34]),e(z,[2,37]),e(z,[2,38]),e(z,[2,39]),e(z,[2,40]),e(z,[2,41]),e(z,[2,42]),e(z,[2,43]),e(z,[2,44]),e(z,[2,45]),e(z,[2,46]),e(z,[2,47]),e(c,[2,6]),e(i,[2,8]),e(i,[2,12]),e(i,[2,13]),e(i,[2,14]),e(i,[2,20],{36:55,35:56,5:O,26:[1,59],40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,23],{36:55,35:56,5:O,26:[1,60],40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,24],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,25],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,26],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,27],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),{23:[1,61]},e(z,[2,32]),e(z,[2,48]),e(z,[2,49]),e(z,[2,50]),e(i,[2,19],{35:29,21:62,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),e(i,[2,22],{35:29,21:63,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),{24:[1,64]},e(i,[2,18],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,21],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,17])],defaultActions:{8:[2,1],9:[2,2]},parseError:function(n,r){if(r.recoverable)this.trace(n);else{var l=new Error(n);throw l.hash=r,l}},parse:function(n){var r=this,l=[0],o=[],q=[null],a=[],et=this.table,u="",st=0,qt=0,St=2,Tt=1,kt=a.slice.call(arguments,1),E=Object.create(this.lexer),Z={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(Z.yy[dt]=this.yy[dt]);E.setInput(n,Z.yy),Z.yy.lexer=E,Z.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var ut=E.yylloc;a.push(ut);var Ft=E.options&&E.options.ranges;typeof Z.yy.parseError=="function"?this.parseError=Z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pt(){var j;return j=o.pop()||E.lex()||Tt,typeof j!="number"&&(j instanceof Array&&(o=j,j=o.pop()),j=r.symbols_[j]||j),j}for(var W,J,H,xt,tt={},rt,$,_t,lt;;){if(J=l[l.length-1],this.defaultActions[J]?H=this.defaultActions[J]:((W===null||typeof W>"u")&&(W=Pt()),H=et[J]&&et[J][W]),typeof H>"u"||!H.length||!H[0]){var ft="";lt=[];for(rt in et[J])this.terminals_[rt]&&rt>St&<.push("'"+this.terminals_[rt]+"'");E.showPosition?ft="Parse error on line "+(st+1)+`:
                           `+E.showPosition()+`
                           Expecting `+lt.join(", ")+", got '"+(this.terminals_[W]||W)+"'":ft="Parse error on line "+(st+1)+": Unexpected "+(W==Tt?"end of input":"'"+(this.terminals_[W]||W)+"'"),this.parseError(ft,{text:E.match,token:this.terminals_[W]||W,line:E.yylineno,loc:ut,expected:lt})}if(H[0]instanceof Array&&H.length>1)throw new Error("Parse Error: multiple actions possible at state: "+J+", token: "+W);switch(H[0]){case 1:l.push(W),q.push(E.yytext),a.push(E.yylloc),l.push(H[1]),W=null,qt=E.yyleng,u=E.yytext,st=E.yylineno,ut=E.yylloc;break;case 2:if($=this.productions_[H[1]][1],tt.$=q[q.length-$],tt._$={first_line:a[a.length-($||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-($||1)].first_column,last_column:a[a.length-1].last_column},Ft&&(tt._$.range=[a[a.length-($||1)].range[0],a[a.length-1].range[1]]),xt=this.performAction.apply(tt,[u,qt,st,Z.yy,H[1],q,a].concat(kt)),typeof xt<"u")return xt;$&&(l=l.slice(0,-1*$*2),q=q.slice(0,-1*$),a=a.slice(0,-1*$)),l.push(this.productions_[H[1]][0]),q.push(tt.$),a.push(tt._$),_t=et[l[l.length-2]][l[l.length-1]],l.push(_t);break;case 3:return!0}}return!0}},At=function(){var K={EOF:1,parseError:function(r,l){if(this.yy.parser)this.yy.parser.parseError(r,l);else throw new Error(r)},setInput:function(n,r){return this.yy=r||this.yy||{},this._input=n,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var n=this._input[0];this.yytext+=n,this.yyleng++,this.offset++,this.match+=n,this.matched+=n;var r=n.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),n},unput:function(n){var r=n.length,l=n.split(/(?:\r\n?|\n)/g);this._input=n+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var o=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),l.length-1&&(this.yylineno-=l.length-1);var q=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:l?(l.length===o.length?this.yylloc.first_column:0)+o[o.length-l.length].length-l[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[q[0],q[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
                           `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(n){this.unput(this.match.slice(n))},pastInput:function(){var n=this.matched.substr(0,this.matched.length-this.match.length);return(n.length>20?"...":"")+n.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var n=this.match;return n.length<20&&(n+=this._input.substr(0,20-n.length)),(n.substr(0,20)+(n.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var n=this.pastInput(),r=new Array(n.length+1).join("-");return n+this.upcomingInput()+`
                          diff --git a/assets/requirementDiagram-4038b16c-zPwsi3At.js b/assets/requirementDiagram-4038b16c-GBigQQoF.js
                          similarity index 99%
                          rename from assets/requirementDiagram-4038b16c-zPwsi3At.js
                          rename to assets/requirementDiagram-4038b16c-GBigQQoF.js
                          index 28f9010..c3d499b 100644
                          --- a/assets/requirementDiagram-4038b16c-zPwsi3At.js
                          +++ b/assets/requirementDiagram-4038b16c-GBigQQoF.js
                          @@ -1,4 +1,4 @@
                          -import{c as Te,s as Ce,g as Fe,b as Me,a as De,l as Ne,z as Pe,h as oe,i as Ye,j as ke}from"./mermaid.core-ygY5oRaR.js";import{G as Ue,l as Be}from"./layout-wEoclKsW.js";import{l as Qe}from"./line-EJoUorMM.js";import"./app-RP31lnfq.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";var ce=function(){var e=function(V,i,r,a){for(r=r||{},a=V.length;a--;r[V[a]]=i);return r},t=[1,3],l=[1,4],c=[1,5],u=[1,6],d=[5,6,8,9,11,13,31,32,33,34,35,36,44,62,63],p=[1,18],h=[2,7],o=[1,22],g=[1,23],R=[1,24],A=[1,25],T=[1,26],N=[1,27],v=[1,20],k=[1,28],x=[1,29],F=[62,63],de=[5,8,9,11,13,31,32,33,34,35,36,44,51,53,62,63],pe=[1,47],fe=[1,48],ye=[1,49],_e=[1,50],ge=[1,51],Ee=[1,52],Re=[1,53],O=[53,54],M=[1,64],D=[1,60],P=[1,61],Y=[1,62],U=[1,63],B=[1,65],z=[1,69],j=[1,70],X=[1,67],J=[1,68],m=[5,8,9,11,13,31,32,33,34,35,36,44,62,63],ie={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,requirementType:17,requirementName:18,STRUCT_START:19,requirementBody:20,ID:21,COLONSEP:22,id:23,TEXT:24,text:25,RISK:26,riskLevel:27,VERIFYMTHD:28,verifyType:29,STRUCT_STOP:30,REQUIREMENT:31,FUNCTIONAL_REQUIREMENT:32,INTERFACE_REQUIREMENT:33,PERFORMANCE_REQUIREMENT:34,PHYSICAL_REQUIREMENT:35,DESIGN_CONSTRAINT:36,LOW_RISK:37,MED_RISK:38,HIGH_RISK:39,VERIFY_ANALYSIS:40,VERIFY_DEMONSTRATION:41,VERIFY_INSPECTION:42,VERIFY_TEST:43,ELEMENT:44,elementName:45,elementBody:46,TYPE:47,type:48,DOCREF:49,ref:50,END_ARROW_L:51,relationship:52,LINE:53,END_ARROW_R:54,CONTAINS:55,COPIES:56,DERIVES:57,SATISFIES:58,VERIFIES:59,REFINES:60,TRACES:61,unqString:62,qString:63,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",19:"STRUCT_START",21:"ID",22:"COLONSEP",24:"TEXT",26:"RISK",28:"VERIFYMTHD",30:"STRUCT_STOP",31:"REQUIREMENT",32:"FUNCTIONAL_REQUIREMENT",33:"INTERFACE_REQUIREMENT",34:"PERFORMANCE_REQUIREMENT",35:"PHYSICAL_REQUIREMENT",36:"DESIGN_CONSTRAINT",37:"LOW_RISK",38:"MED_RISK",39:"HIGH_RISK",40:"VERIFY_ANALYSIS",41:"VERIFY_DEMONSTRATION",42:"VERIFY_INSPECTION",43:"VERIFY_TEST",44:"ELEMENT",47:"TYPE",49:"DOCREF",51:"END_ARROW_L",53:"LINE",54:"END_ARROW_R",55:"CONTAINS",56:"COPIES",57:"DERIVES",58:"SATISFIES",59:"VERIFIES",60:"REFINES",61:"TRACES",62:"unqString",63:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[14,5],[20,5],[20,5],[20,5],[20,5],[20,2],[20,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[27,1],[27,1],[27,1],[29,1],[29,1],[29,1],[29,1],[15,5],[46,5],[46,5],[46,2],[46,1],[16,5],[16,5],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[18,1],[18,1],[23,1],[23,1],[25,1],[25,1],[45,1],[45,1],[48,1],[48,1],[50,1],[50,1]],performAction:function(i,r,a,n,f,s,W){var _=s.length-1;switch(f){case 4:this.$=s[_].trim(),n.setAccTitle(this.$);break;case 5:case 6:this.$=s[_].trim(),n.setAccDescription(this.$);break;case 7:this.$=[];break;case 13:n.addRequirement(s[_-3],s[_-4]);break;case 14:n.setNewReqId(s[_-2]);break;case 15:n.setNewReqText(s[_-2]);break;case 16:n.setNewReqRisk(s[_-2]);break;case 17:n.setNewReqVerifyMethod(s[_-2]);break;case 20:this.$=n.RequirementType.REQUIREMENT;break;case 21:this.$=n.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 22:this.$=n.RequirementType.INTERFACE_REQUIREMENT;break;case 23:this.$=n.RequirementType.PERFORMANCE_REQUIREMENT;break;case 24:this.$=n.RequirementType.PHYSICAL_REQUIREMENT;break;case 25:this.$=n.RequirementType.DESIGN_CONSTRAINT;break;case 26:this.$=n.RiskLevel.LOW_RISK;break;case 27:this.$=n.RiskLevel.MED_RISK;break;case 28:this.$=n.RiskLevel.HIGH_RISK;break;case 29:this.$=n.VerifyType.VERIFY_ANALYSIS;break;case 30:this.$=n.VerifyType.VERIFY_DEMONSTRATION;break;case 31:this.$=n.VerifyType.VERIFY_INSPECTION;break;case 32:this.$=n.VerifyType.VERIFY_TEST;break;case 33:n.addElement(s[_-3]);break;case 34:n.setNewElementType(s[_-2]);break;case 35:n.setNewElementDocRef(s[_-2]);break;case 38:n.addRelationship(s[_-2],s[_],s[_-4]);break;case 39:n.addRelationship(s[_-2],s[_-4],s[_]);break;case 40:this.$=n.Relationships.CONTAINS;break;case 41:this.$=n.Relationships.COPIES;break;case 42:this.$=n.Relationships.DERIVES;break;case 43:this.$=n.Relationships.SATISFIES;break;case 44:this.$=n.Relationships.VERIFIES;break;case 45:this.$=n.Relationships.REFINES;break;case 46:this.$=n.Relationships.TRACES;break}},table:[{3:1,4:2,6:t,9:l,11:c,13:u},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:l,11:c,13:u},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(d,[2,6]),{3:12,4:2,6:t,9:l,11:c,13:u},{1:[2,2]},{4:17,5:p,7:13,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},e(d,[2,4]),e(d,[2,5]),{1:[2,1]},{8:[1,30]},{4:17,5:p,7:31,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:32,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:33,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:34,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:35,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{18:36,62:[1,37],63:[1,38]},{45:39,62:[1,40],63:[1,41]},{51:[1,42],53:[1,43]},e(F,[2,20]),e(F,[2,21]),e(F,[2,22]),e(F,[2,23]),e(F,[2,24]),e(F,[2,25]),e(de,[2,49]),e(de,[2,50]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{19:[1,44]},{19:[2,47]},{19:[2,48]},{19:[1,45]},{19:[2,53]},{19:[2,54]},{52:46,55:pe,56:fe,57:ye,58:_e,59:ge,60:Ee,61:Re},{52:54,55:pe,56:fe,57:ye,58:_e,59:ge,60:Ee,61:Re},{5:[1,55]},{5:[1,56]},{53:[1,57]},e(O,[2,40]),e(O,[2,41]),e(O,[2,42]),e(O,[2,43]),e(O,[2,44]),e(O,[2,45]),e(O,[2,46]),{54:[1,58]},{5:M,20:59,21:D,24:P,26:Y,28:U,30:B},{5:z,30:j,46:66,47:X,49:J},{23:71,62:k,63:x},{23:72,62:k,63:x},e(m,[2,13]),{22:[1,73]},{22:[1,74]},{22:[1,75]},{22:[1,76]},{5:M,20:77,21:D,24:P,26:Y,28:U,30:B},e(m,[2,19]),e(m,[2,33]),{22:[1,78]},{22:[1,79]},{5:z,30:j,46:80,47:X,49:J},e(m,[2,37]),e(m,[2,38]),e(m,[2,39]),{23:81,62:k,63:x},{25:82,62:[1,83],63:[1,84]},{27:85,37:[1,86],38:[1,87],39:[1,88]},{29:89,40:[1,90],41:[1,91],42:[1,92],43:[1,93]},e(m,[2,18]),{48:94,62:[1,95],63:[1,96]},{50:97,62:[1,98],63:[1,99]},e(m,[2,36]),{5:[1,100]},{5:[1,101]},{5:[2,51]},{5:[2,52]},{5:[1,102]},{5:[2,26]},{5:[2,27]},{5:[2,28]},{5:[1,103]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[2,32]},{5:[1,104]},{5:[2,55]},{5:[2,56]},{5:[1,105]},{5:[2,57]},{5:[2,58]},{5:M,20:106,21:D,24:P,26:Y,28:U,30:B},{5:M,20:107,21:D,24:P,26:Y,28:U,30:B},{5:M,20:108,21:D,24:P,26:Y,28:U,30:B},{5:M,20:109,21:D,24:P,26:Y,28:U,30:B},{5:z,30:j,46:110,47:X,49:J},{5:z,30:j,46:111,47:X,49:J},e(m,[2,14]),e(m,[2,15]),e(m,[2,16]),e(m,[2,17]),e(m,[2,34]),e(m,[2,35])],defaultActions:{8:[2,2],12:[2,1],30:[2,3],31:[2,8],32:[2,9],33:[2,10],34:[2,11],35:[2,12],37:[2,47],38:[2,48],40:[2,53],41:[2,54],83:[2,51],84:[2,52],86:[2,26],87:[2,27],88:[2,28],90:[2,29],91:[2,30],92:[2,31],93:[2,32],95:[2,55],96:[2,56],98:[2,57],99:[2,58]},parseError:function(i,r){if(r.recoverable)this.trace(i);else{var a=new Error(i);throw a.hash=r,a}},parse:function(i){var r=this,a=[0],n=[],f=[null],s=[],W=this.table,_="",Z=0,me=0,Ve=2,Ie=1,qe=s.slice.call(arguments,1),E=Object.create(this.lexer),L={yy:{}};for(var re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,re)&&(L.yy[re]=this.yy[re]);E.setInput(i,L.yy),L.yy.lexer=E,L.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var se=E.yylloc;s.push(se);var Oe=E.options&&E.options.ranges;typeof L.yy.parseError=="function"?this.parseError=L.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Le(){var $;return $=n.pop()||E.lex()||Ie,typeof $!="number"&&($ instanceof Array&&(n=$,$=n.pop()),$=r.symbols_[$]||$),$}for(var I,C,S,ae,Q={},ee,w,be,te;;){if(C=a[a.length-1],this.defaultActions[C]?S=this.defaultActions[C]:((I===null||typeof I>"u")&&(I=Le()),S=W[C]&&W[C][I]),typeof S>"u"||!S.length||!S[0]){var le="";te=[];for(ee in W[C])this.terminals_[ee]&&ee>Ve&&te.push("'"+this.terminals_[ee]+"'");E.showPosition?le="Parse error on line "+(Z+1)+`:
                          +import{c as Te,s as Ce,g as Fe,b as Me,a as De,l as Ne,z as Pe,h as oe,i as Ye,j as ke}from"./mermaid.core-YBgJFCkH.js";import{G as Ue,l as Be}from"./layout-6DvG_ICF.js";import{l as Qe}from"./line-QxBjBe1b.js";import"./app-0NopiYEV.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";var ce=function(){var e=function(V,i,r,a){for(r=r||{},a=V.length;a--;r[V[a]]=i);return r},t=[1,3],l=[1,4],c=[1,5],u=[1,6],d=[5,6,8,9,11,13,31,32,33,34,35,36,44,62,63],p=[1,18],h=[2,7],o=[1,22],g=[1,23],R=[1,24],A=[1,25],T=[1,26],N=[1,27],v=[1,20],k=[1,28],x=[1,29],F=[62,63],de=[5,8,9,11,13,31,32,33,34,35,36,44,51,53,62,63],pe=[1,47],fe=[1,48],ye=[1,49],_e=[1,50],ge=[1,51],Ee=[1,52],Re=[1,53],O=[53,54],M=[1,64],D=[1,60],P=[1,61],Y=[1,62],U=[1,63],B=[1,65],z=[1,69],j=[1,70],X=[1,67],J=[1,68],m=[5,8,9,11,13,31,32,33,34,35,36,44,62,63],ie={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,requirementType:17,requirementName:18,STRUCT_START:19,requirementBody:20,ID:21,COLONSEP:22,id:23,TEXT:24,text:25,RISK:26,riskLevel:27,VERIFYMTHD:28,verifyType:29,STRUCT_STOP:30,REQUIREMENT:31,FUNCTIONAL_REQUIREMENT:32,INTERFACE_REQUIREMENT:33,PERFORMANCE_REQUIREMENT:34,PHYSICAL_REQUIREMENT:35,DESIGN_CONSTRAINT:36,LOW_RISK:37,MED_RISK:38,HIGH_RISK:39,VERIFY_ANALYSIS:40,VERIFY_DEMONSTRATION:41,VERIFY_INSPECTION:42,VERIFY_TEST:43,ELEMENT:44,elementName:45,elementBody:46,TYPE:47,type:48,DOCREF:49,ref:50,END_ARROW_L:51,relationship:52,LINE:53,END_ARROW_R:54,CONTAINS:55,COPIES:56,DERIVES:57,SATISFIES:58,VERIFIES:59,REFINES:60,TRACES:61,unqString:62,qString:63,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",19:"STRUCT_START",21:"ID",22:"COLONSEP",24:"TEXT",26:"RISK",28:"VERIFYMTHD",30:"STRUCT_STOP",31:"REQUIREMENT",32:"FUNCTIONAL_REQUIREMENT",33:"INTERFACE_REQUIREMENT",34:"PERFORMANCE_REQUIREMENT",35:"PHYSICAL_REQUIREMENT",36:"DESIGN_CONSTRAINT",37:"LOW_RISK",38:"MED_RISK",39:"HIGH_RISK",40:"VERIFY_ANALYSIS",41:"VERIFY_DEMONSTRATION",42:"VERIFY_INSPECTION",43:"VERIFY_TEST",44:"ELEMENT",47:"TYPE",49:"DOCREF",51:"END_ARROW_L",53:"LINE",54:"END_ARROW_R",55:"CONTAINS",56:"COPIES",57:"DERIVES",58:"SATISFIES",59:"VERIFIES",60:"REFINES",61:"TRACES",62:"unqString",63:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[14,5],[20,5],[20,5],[20,5],[20,5],[20,2],[20,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[27,1],[27,1],[27,1],[29,1],[29,1],[29,1],[29,1],[15,5],[46,5],[46,5],[46,2],[46,1],[16,5],[16,5],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[18,1],[18,1],[23,1],[23,1],[25,1],[25,1],[45,1],[45,1],[48,1],[48,1],[50,1],[50,1]],performAction:function(i,r,a,n,f,s,W){var _=s.length-1;switch(f){case 4:this.$=s[_].trim(),n.setAccTitle(this.$);break;case 5:case 6:this.$=s[_].trim(),n.setAccDescription(this.$);break;case 7:this.$=[];break;case 13:n.addRequirement(s[_-3],s[_-4]);break;case 14:n.setNewReqId(s[_-2]);break;case 15:n.setNewReqText(s[_-2]);break;case 16:n.setNewReqRisk(s[_-2]);break;case 17:n.setNewReqVerifyMethod(s[_-2]);break;case 20:this.$=n.RequirementType.REQUIREMENT;break;case 21:this.$=n.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 22:this.$=n.RequirementType.INTERFACE_REQUIREMENT;break;case 23:this.$=n.RequirementType.PERFORMANCE_REQUIREMENT;break;case 24:this.$=n.RequirementType.PHYSICAL_REQUIREMENT;break;case 25:this.$=n.RequirementType.DESIGN_CONSTRAINT;break;case 26:this.$=n.RiskLevel.LOW_RISK;break;case 27:this.$=n.RiskLevel.MED_RISK;break;case 28:this.$=n.RiskLevel.HIGH_RISK;break;case 29:this.$=n.VerifyType.VERIFY_ANALYSIS;break;case 30:this.$=n.VerifyType.VERIFY_DEMONSTRATION;break;case 31:this.$=n.VerifyType.VERIFY_INSPECTION;break;case 32:this.$=n.VerifyType.VERIFY_TEST;break;case 33:n.addElement(s[_-3]);break;case 34:n.setNewElementType(s[_-2]);break;case 35:n.setNewElementDocRef(s[_-2]);break;case 38:n.addRelationship(s[_-2],s[_],s[_-4]);break;case 39:n.addRelationship(s[_-2],s[_-4],s[_]);break;case 40:this.$=n.Relationships.CONTAINS;break;case 41:this.$=n.Relationships.COPIES;break;case 42:this.$=n.Relationships.DERIVES;break;case 43:this.$=n.Relationships.SATISFIES;break;case 44:this.$=n.Relationships.VERIFIES;break;case 45:this.$=n.Relationships.REFINES;break;case 46:this.$=n.Relationships.TRACES;break}},table:[{3:1,4:2,6:t,9:l,11:c,13:u},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:l,11:c,13:u},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(d,[2,6]),{3:12,4:2,6:t,9:l,11:c,13:u},{1:[2,2]},{4:17,5:p,7:13,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},e(d,[2,4]),e(d,[2,5]),{1:[2,1]},{8:[1,30]},{4:17,5:p,7:31,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:32,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:33,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:34,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:35,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{18:36,62:[1,37],63:[1,38]},{45:39,62:[1,40],63:[1,41]},{51:[1,42],53:[1,43]},e(F,[2,20]),e(F,[2,21]),e(F,[2,22]),e(F,[2,23]),e(F,[2,24]),e(F,[2,25]),e(de,[2,49]),e(de,[2,50]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{19:[1,44]},{19:[2,47]},{19:[2,48]},{19:[1,45]},{19:[2,53]},{19:[2,54]},{52:46,55:pe,56:fe,57:ye,58:_e,59:ge,60:Ee,61:Re},{52:54,55:pe,56:fe,57:ye,58:_e,59:ge,60:Ee,61:Re},{5:[1,55]},{5:[1,56]},{53:[1,57]},e(O,[2,40]),e(O,[2,41]),e(O,[2,42]),e(O,[2,43]),e(O,[2,44]),e(O,[2,45]),e(O,[2,46]),{54:[1,58]},{5:M,20:59,21:D,24:P,26:Y,28:U,30:B},{5:z,30:j,46:66,47:X,49:J},{23:71,62:k,63:x},{23:72,62:k,63:x},e(m,[2,13]),{22:[1,73]},{22:[1,74]},{22:[1,75]},{22:[1,76]},{5:M,20:77,21:D,24:P,26:Y,28:U,30:B},e(m,[2,19]),e(m,[2,33]),{22:[1,78]},{22:[1,79]},{5:z,30:j,46:80,47:X,49:J},e(m,[2,37]),e(m,[2,38]),e(m,[2,39]),{23:81,62:k,63:x},{25:82,62:[1,83],63:[1,84]},{27:85,37:[1,86],38:[1,87],39:[1,88]},{29:89,40:[1,90],41:[1,91],42:[1,92],43:[1,93]},e(m,[2,18]),{48:94,62:[1,95],63:[1,96]},{50:97,62:[1,98],63:[1,99]},e(m,[2,36]),{5:[1,100]},{5:[1,101]},{5:[2,51]},{5:[2,52]},{5:[1,102]},{5:[2,26]},{5:[2,27]},{5:[2,28]},{5:[1,103]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[2,32]},{5:[1,104]},{5:[2,55]},{5:[2,56]},{5:[1,105]},{5:[2,57]},{5:[2,58]},{5:M,20:106,21:D,24:P,26:Y,28:U,30:B},{5:M,20:107,21:D,24:P,26:Y,28:U,30:B},{5:M,20:108,21:D,24:P,26:Y,28:U,30:B},{5:M,20:109,21:D,24:P,26:Y,28:U,30:B},{5:z,30:j,46:110,47:X,49:J},{5:z,30:j,46:111,47:X,49:J},e(m,[2,14]),e(m,[2,15]),e(m,[2,16]),e(m,[2,17]),e(m,[2,34]),e(m,[2,35])],defaultActions:{8:[2,2],12:[2,1],30:[2,3],31:[2,8],32:[2,9],33:[2,10],34:[2,11],35:[2,12],37:[2,47],38:[2,48],40:[2,53],41:[2,54],83:[2,51],84:[2,52],86:[2,26],87:[2,27],88:[2,28],90:[2,29],91:[2,30],92:[2,31],93:[2,32],95:[2,55],96:[2,56],98:[2,57],99:[2,58]},parseError:function(i,r){if(r.recoverable)this.trace(i);else{var a=new Error(i);throw a.hash=r,a}},parse:function(i){var r=this,a=[0],n=[],f=[null],s=[],W=this.table,_="",Z=0,me=0,Ve=2,Ie=1,qe=s.slice.call(arguments,1),E=Object.create(this.lexer),L={yy:{}};for(var re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,re)&&(L.yy[re]=this.yy[re]);E.setInput(i,L.yy),L.yy.lexer=E,L.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var se=E.yylloc;s.push(se);var Oe=E.options&&E.options.ranges;typeof L.yy.parseError=="function"?this.parseError=L.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Le(){var $;return $=n.pop()||E.lex()||Ie,typeof $!="number"&&($ instanceof Array&&(n=$,$=n.pop()),$=r.symbols_[$]||$),$}for(var I,C,S,ae,Q={},ee,w,be,te;;){if(C=a[a.length-1],this.defaultActions[C]?S=this.defaultActions[C]:((I===null||typeof I>"u")&&(I=Le()),S=W[C]&&W[C][I]),typeof S>"u"||!S.length||!S[0]){var le="";te=[];for(ee in W[C])this.terminals_[ee]&&ee>Ve&&te.push("'"+this.terminals_[ee]+"'");E.showPosition?le="Parse error on line "+(Z+1)+`:
                           `+E.showPosition()+`
                           Expecting `+te.join(", ")+", got '"+(this.terminals_[I]||I)+"'":le="Parse error on line "+(Z+1)+": Unexpected "+(I==Ie?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(le,{text:E.match,token:this.terminals_[I]||I,line:E.yylineno,loc:se,expected:te})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+I);switch(S[0]){case 1:a.push(I),f.push(E.yytext),s.push(E.yylloc),a.push(S[1]),I=null,me=E.yyleng,_=E.yytext,Z=E.yylineno,se=E.yylloc;break;case 2:if(w=this.productions_[S[1]][1],Q.$=f[f.length-w],Q._$={first_line:s[s.length-(w||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(w||1)].first_column,last_column:s[s.length-1].last_column},Oe&&(Q._$.range=[s[s.length-(w||1)].range[0],s[s.length-1].range[1]]),ae=this.performAction.apply(Q,[_,me,Z,L.yy,S[1],f,s].concat(qe)),typeof ae<"u")return ae;w&&(a=a.slice(0,-1*w*2),f=f.slice(0,-1*w),s=s.slice(0,-1*w)),a.push(this.productions_[S[1]][0]),f.push(Q.$),s.push(Q._$),be=W[a[a.length-2]][a[a.length-1]],a.push(be);break;case 3:return!0}}return!0}},$e=function(){var V={EOF:1,parseError:function(r,a){if(this.yy.parser)this.yy.parser.parseError(r,a);else throw new Error(r)},setInput:function(i,r){return this.yy=r||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var r=i.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},unput:function(i){var r=i.length,a=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var f=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===n.length?this.yylloc.first_column:0)+n[n.length-a.length].length-a[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[f[0],f[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
                           `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(i){this.unput(this.match.slice(i))},pastInput:function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var i=this.pastInput(),r=new Array(i.length+1).join("-");return i+this.upcomingInput()+`
                          diff --git a/assets/restful_api.html-ooPhYVAr.js b/assets/restful_api.html-4yfdZ-oL.js
                          similarity index 99%
                          rename from assets/restful_api.html-ooPhYVAr.js
                          rename to assets/restful_api.html-4yfdZ-oL.js
                          index 8733dd5..bbbdb99 100644
                          --- a/assets/restful_api.html-ooPhYVAr.js
                          +++ b/assets/restful_api.html-4yfdZ-oL.js
                          @@ -1,4 +1,4 @@
                          -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as p,o as l,c as i,a as t,d as n,b as e,e as a}from"./app-RP31lnfq.js";const r={},c=t("h2",{id:"下载-postman-配置文件-可以在线测试-restful-api",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#下载-postman-配置文件-可以在线测试-restful-api","aria-hidden":"true"},"#"),n(" 下载 postman 配置文件(可以在线测试 restful api)")],-1),d={href:"https://github.com/xia-chu/ZLMediaKit/tree/master/postman",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/xia-chu/ZLMediaKit/blob/master/server/WebApi.cpp#L261",target:"_blank",rel:"noopener noreferrer"},k=a(`

                          API 预览

                          MediaServer 是 ZLMediaKit 的主进程,目前支持以下 http api 接口,这些接口全部支持 GET/POST 方式,

                                "/index/api/addFFmpegSource",
                          +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as p,o as l,c as i,a as t,d as n,b as e,e as a}from"./app-0NopiYEV.js";const r={},c=t("h2",{id:"下载-postman-配置文件-可以在线测试-restful-api",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#下载-postman-配置文件-可以在线测试-restful-api","aria-hidden":"true"},"#"),n(" 下载 postman 配置文件(可以在线测试 restful api)")],-1),d={href:"https://github.com/xia-chu/ZLMediaKit/tree/master/postman",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/xia-chu/ZLMediaKit/blob/master/server/WebApi.cpp#L261",target:"_blank",rel:"noopener noreferrer"},k=a(`

                          API 预览

                          MediaServer 是 ZLMediaKit 的主进程,目前支持以下 http api 接口,这些接口全部支持 GET/POST 方式,

                                "/index/api/addFFmpegSource",
                                 "/index/api/addStreamProxy",
                                 "/index/api/close_stream",
                                 "/index/api/close_streams",
                          diff --git a/assets/restful_api.html-EFSP9jqZ.js b/assets/restful_api.html-ojzFkZh8.js
                          similarity index 99%
                          rename from assets/restful_api.html-EFSP9jqZ.js
                          rename to assets/restful_api.html-ojzFkZh8.js
                          index 6c80fc4..79bccd0 100644
                          --- a/assets/restful_api.html-EFSP9jqZ.js
                          +++ b/assets/restful_api.html-ojzFkZh8.js
                          @@ -1,4 +1,4 @@
                          -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as p,c as i,a as t,d as e,b as s,e as a}from"./app-RP31lnfq.js";const r={},c=t("h2",{id:"download-postman-configuration-file-to-test-restful-api",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#download-postman-configuration-file-to-test-restful-api","aria-hidden":"true"},"#"),e(" Download postman configuration file (to test RESTful API)")],-1),d={href:"https://github.com/xia-chu/ZLMediaKit/tree/master/postman",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/xia-chu/ZLMediaKit/blob/master/server/WebApi.cpp#L261",target:"_blank",rel:"noopener noreferrer"},k=a(`

                          API Preview

                          MediaServer is the main process of ZLMediaKit and currently supports the following HTTP API endpoints. All these endpoints support both GET and POST methods.

                                "/index/api/addFFmpegSource",
                          +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as p,c as i,a as t,d as e,b as s,e as a}from"./app-0NopiYEV.js";const r={},c=t("h2",{id:"download-postman-configuration-file-to-test-restful-api",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#download-postman-configuration-file-to-test-restful-api","aria-hidden":"true"},"#"),e(" Download postman configuration file (to test RESTful API)")],-1),d={href:"https://github.com/xia-chu/ZLMediaKit/tree/master/postman",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/xia-chu/ZLMediaKit/blob/master/server/WebApi.cpp#L261",target:"_blank",rel:"noopener noreferrer"},k=a(`

                          API Preview

                          MediaServer is the main process of ZLMediaKit and currently supports the following HTTP API endpoints. All these endpoints support both GET and POST methods.

                                "/index/api/addFFmpegSource",
                                 "/index/api/addStreamProxy",
                                 "/index/api/close_stream",
                                 "/index/api/close_streams",
                          diff --git a/assets/rtmp_playback_compatibility_issues.html-k6HlsNbH.js b/assets/rtmp_playback_compatibility_issues.html-NhoJKAeu.js
                          similarity index 94%
                          rename from assets/rtmp_playback_compatibility_issues.html-k6HlsNbH.js
                          rename to assets/rtmp_playback_compatibility_issues.html-NhoJKAeu.js
                          index 4ba5bf1..b442326 100644
                          --- a/assets/rtmp_playback_compatibility_issues.html-k6HlsNbH.js
                          +++ b/assets/rtmp_playback_compatibility_issues.html-NhoJKAeu.js
                          @@ -1 +1 @@
                          -import{_ as p}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c,e}from"./app-RP31lnfq.js";const a={},o=e("

                          一般来说 rtmp 的规范是 先发送 metadata ,然后发送 config 帧,然后发送关键帧 然后是普通帧

                          config 帧收到后就能初始化解码器了

                          但是有些流不太一样,并没有收到视频的 config 帧就收到其他帧了

                          这个时候视频 Track 并没创建和初始化

                          初步怀疑是 nginx 的 rtmp 服务器兼容性不好

                          zlm 的推流器会严格按照先发送 metadata ,然后发送 config 帧,然后发送关键帧 然后是普通帧的流程来做

                          也会缓存所有的 config 帧

                          ffplay 能播放成功是因为它是根据数据量和时间来判断播放成功

                          只要数据量达到一定量或者时间达到一定时间 就会触发播放成功的事件

                          这样做的好处是 播放成功率高 坏处是打开视频时间长

                          ",10),i=[o];function _(n,s){return t(),c("div",null,i)}const f=p(a,[["render",_],["__file","rtmp_playback_compatibility_issues.html.vue"]]);export{f as default}; +import{_ as p}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c,e}from"./app-0NopiYEV.js";const a={},o=e("

                          一般来说 rtmp 的规范是 先发送 metadata ,然后发送 config 帧,然后发送关键帧 然后是普通帧

                          config 帧收到后就能初始化解码器了

                          但是有些流不太一样,并没有收到视频的 config 帧就收到其他帧了

                          这个时候视频 Track 并没创建和初始化

                          初步怀疑是 nginx 的 rtmp 服务器兼容性不好

                          zlm 的推流器会严格按照先发送 metadata ,然后发送 config 帧,然后发送关键帧 然后是普通帧的流程来做

                          也会缓存所有的 config 帧

                          ffplay 能播放成功是因为它是根据数据量和时间来判断播放成功

                          只要数据量达到一定量或者时间达到一定时间 就会触发播放成功的事件

                          这样做的好处是 播放成功率高 坏处是打开视频时间长

                          ",10),i=[o];function _(n,s){return t(),c("div",null,i)}const f=p(a,[["render",_],["__file","rtmp_playback_compatibility_issues.html.vue"]]);export{f as default}; diff --git a/assets/rtmp_playback_compatibility_issues.html-Q-7KXOkl.js b/assets/rtmp_playback_compatibility_issues.html-fNEuKIs-.js similarity index 95% rename from assets/rtmp_playback_compatibility_issues.html-Q-7KXOkl.js rename to assets/rtmp_playback_compatibility_issues.html-fNEuKIs-.js index beccc4f..c7953bf 100644 --- a/assets/rtmp_playback_compatibility_issues.html-Q-7KXOkl.js +++ b/assets/rtmp_playback_compatibility_issues.html-fNEuKIs-.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as t,e as i}from"./app-RP31lnfq.js";const s={},o=i("

                          In general, the specification for RTMP is to first send metadata, followed by config frames, then keyframes, and finally regular frames.

                          Once the config frames are received, the decoder can be initialized.

                          However, some streams are different, as they receive other frames before receiving the config frame for the video.

                          In this case, the video track is not created and initialized.

                          There is a preliminary suspicion that the compatibility of the Nginx RTMP server is not good.

                          ZLMediaKit's streaming tool strictly follows the process of sending metadata first, then config frames, followed by keyframes, and finally regular frames.

                          It also caches all config frames.

                          FFplay can successfully play due to its determination of playback success based on data volume and time.

                          As long as the data volume reaches a certain threshold or the time reaches a certain duration, it triggers the event of successful playback.

                          The advantage of this approach is a high success rate in playback, but the downside is a longer video opening time.

                          ",10),r=[o];function c(n,l){return a(),t("div",null,r)}const d=e(s,[["render",c],["__file","rtmp_playback_compatibility_issues.html.vue"]]);export{d as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as t,e as i}from"./app-0NopiYEV.js";const s={},o=i("

                          In general, the specification for RTMP is to first send metadata, followed by config frames, then keyframes, and finally regular frames.

                          Once the config frames are received, the decoder can be initialized.

                          However, some streams are different, as they receive other frames before receiving the config frame for the video.

                          In this case, the video track is not created and initialized.

                          There is a preliminary suspicion that the compatibility of the Nginx RTMP server is not good.

                          ZLMediaKit's streaming tool strictly follows the process of sending metadata first, then config frames, followed by keyframes, and finally regular frames.

                          It also caches all config frames.

                          FFplay can successfully play due to its determination of playback success based on data volume and time.

                          As long as the data volume reaches a certain threshold or the time reaches a certain duration, it triggers the event of successful playback.

                          The advantage of this approach is a high success rate in playback, but the downside is a longer video opening time.

                          ",10),r=[o];function c(n,l){return a(),t("div",null,r)}const d=e(s,[["render",c],["__file","rtmp_playback_compatibility_issues.html.vue"]]);export{d as default}; diff --git a/assets/rtmp_pull_stream_performance_test.html--cK45yxC.js b/assets/rtmp_pull_stream_performance_test.html--AjSCAb6.js similarity index 98% rename from assets/rtmp_pull_stream_performance_test.html--cK45yxC.js rename to assets/rtmp_pull_stream_performance_test.html--AjSCAb6.js index c801637..212a16b 100644 --- a/assets/rtmp_pull_stream_performance_test.html--cK45yxC.js +++ b/assets/rtmp_pull_stream_performance_test.html--AjSCAb6.js @@ -1,4 +1,4 @@ -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as l,c as t,a as e,d as n,b as r,e as d}from"./app-RP31lnfq.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),m=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),g={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),_=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=d(`
                          diff --git a/conf/config.ini b/conf/config.ini
                          +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as l,c as t,a as e,d as n,b as r,e as d}from"./app-0NopiYEV.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),m=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),g={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),_=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=d(`
                          diff --git a/conf/config.ini b/conf/config.ini
                           index c2d4613f..99ce5c84 100644
                           --- a/conf/config.ini
                           +++ b/conf/config.ini
                          diff --git a/assets/rtmp_pull_stream_performance_test.html-to7s8Gb2.js b/assets/rtmp_pull_stream_performance_test.html-UV-5J8vg.js
                          similarity index 98%
                          rename from assets/rtmp_pull_stream_performance_test.html-to7s8Gb2.js
                          rename to assets/rtmp_pull_stream_performance_test.html-UV-5J8vg.js
                          index 441663f..8a4cf64 100644
                          --- a/assets/rtmp_pull_stream_performance_test.html-to7s8Gb2.js
                          +++ b/assets/rtmp_pull_stream_performance_test.html-UV-5J8vg.js
                          @@ -1,4 +1,4 @@
                          -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as l,c as t,a as e,d as n,b as r,e as d}from"./app-RP31lnfq.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),m=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),g={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),_=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=d(`
                          diff --git a/conf/config.ini b/conf/config.ini
                          +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as l,c as t,a as e,d as n,b as r,e as d}from"./app-0NopiYEV.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),m=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),g={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),_=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=d(`
                          diff --git a/conf/config.ini b/conf/config.ini
                           index c2d4613f..99ce5c84 100644
                           --- a/conf/config.ini
                           +++ b/conf/config.ini
                          diff --git a/assets/rtmp_push_stream_performance_test.html-xYGtJwVp.js b/assets/rtmp_push_stream_performance_test.html-VzlWIKzU.js
                          similarity index 98%
                          rename from assets/rtmp_push_stream_performance_test.html-xYGtJwVp.js
                          rename to assets/rtmp_push_stream_performance_test.html-VzlWIKzU.js
                          index 2bb70f1..2027ea6 100644
                          --- a/assets/rtmp_push_stream_performance_test.html-xYGtJwVp.js
                          +++ b/assets/rtmp_push_stream_performance_test.html-VzlWIKzU.js
                          @@ -1,4 +1,4 @@
                          -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as l,c as r,a as e,d as n,b as d,e as t}from"./app-RP31lnfq.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),m=e("li",null,"测试日期:2022/5/18",-1),p=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),_={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),g=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=t(`
                          diff --git a/conf/config.ini b/conf/config.ini
                          +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as l,c as r,a as e,d as n,b as d,e as t}from"./app-0NopiYEV.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),m=e("li",null,"测试日期:2022/5/18",-1),p=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),_={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),g=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=t(`
                          diff --git a/conf/config.ini b/conf/config.ini
                           index c2d4613f..99ce5c84 100644
                           --- a/conf/config.ini
                           +++ b/conf/config.ini
                          diff --git a/assets/rtmp_push_stream_performance_test.html-4Td-mBqD.js b/assets/rtmp_push_stream_performance_test.html-YYy_fCwZ.js
                          similarity index 98%
                          rename from assets/rtmp_push_stream_performance_test.html-4Td-mBqD.js
                          rename to assets/rtmp_push_stream_performance_test.html-YYy_fCwZ.js
                          index b130b5c..c1f8599 100644
                          --- a/assets/rtmp_push_stream_performance_test.html-4Td-mBqD.js
                          +++ b/assets/rtmp_push_stream_performance_test.html-YYy_fCwZ.js
                          @@ -1,4 +1,4 @@
                          -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as l,c as r,a as e,d as n,b as d,e as t}from"./app-RP31lnfq.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),m=e("li",null,"测试日期:2022/5/18",-1),p=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),_={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),g=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=t(`
                          diff --git a/conf/config.ini b/conf/config.ini
                          +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as l,c as r,a as e,d as n,b as d,e as t}from"./app-0NopiYEV.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),m=e("li",null,"测试日期:2022/5/18",-1),p=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),_={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),g=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=t(`
                          diff --git a/conf/config.ini b/conf/config.ini
                           index c2d4613f..99ce5c84 100644
                           --- a/conf/config.ini
                           +++ b/conf/config.ini
                          diff --git a/assets/rtmp_support_for_h265_and_opus.html-4jQr5c69.js b/assets/rtmp_support_for_h265_and_opus.html-Ja2UBaOZ.js
                          similarity index 97%
                          rename from assets/rtmp_support_for_h265_and_opus.html-4jQr5c69.js
                          rename to assets/rtmp_support_for_h265_and_opus.html-Ja2UBaOZ.js
                          index 9b5b8eb..c43ac78 100644
                          --- a/assets/rtmp_support_for_h265_and_opus.html-4jQr5c69.js
                          +++ b/assets/rtmp_support_for_h265_and_opus.html-Ja2UBaOZ.js
                          @@ -1 +1 @@
                          -import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as a,c,a as e,d as t,b as r}from"./app-RP31lnfq.js";const d={},_=e("h2",{id:"背景",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#背景","aria-hidden":"true"},"#"),t(" 背景")],-1),i=e("p",null,"rtmp/flv 是直播行业事实上的标准,这两者在国内直播领域应用非常广泛。在浏览器上要实现无插件的低延时直播播放,基本绕不开 rtmp/flv. 由于 rtmp/flv 是 Adobe 设计的私有协议,原生是不支持 H265(视频监控应用广泛)和 opus(RTC 应用广泛)的,而目前视频监控、RTC 相关行业都有使用直播基础设施的需求,所以对 rtmp 进行修改,使其添加对 H265 和 opus 的支持比较重要。",-1),p=e("h2",{id:"实现方式",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#实现方式","aria-hidden":"true"},"#"),t(" 实现方式")],-1),h=e("strong",null,"12",-1),l={href:"https://github.com/ksvc/FFmpeg/wiki",target:"_blank",rel:"noopener noreferrer"},m=e("strong",null,"13",-1),u={href:"https://gitee.com/xia-chu/FFmpeg",target:"_blank",rel:"noopener noreferrer"},f=e("h2",{id:"服务器实现",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#服务器实现","aria-hidden":"true"},"#"),t(" 服务器实现")],-1),g=e("p",null,"ZLMediaKit 已经实现了 rtsp/rtmp/mp4/hls 对 h265/opus 的全面支持, 欢迎各位测试使用。",-1);function x(b,k){const o=n("ExternalLinkIcon");return a(),c("div",null,[_,i,p,e("p",null,[t("rtmp 通过 codec id 来判断编码格式,同时通过 message type 来区分数据类型(包括音频包、视频包),所以音视频的 codec_id 是可以相同的(相同类型不冲突即可); 例如 H264 的 codec id 为 7,G711A 的 codec id 也为 7。 目前国内默认定义 H265 的 codec id 为"),h,t("(由金山云首先"),e("a",l,[t("实现并公布"),r(o)]),t("). 而对 opus 的 rtmp 扩展目前还未有广泛共识,作者在与相关人士讨论后,协商定义其 codec id 为"),m,t(",目前已经实现了对 FFmpeg(基于最新版本)的修改,添加了对"),e("a",u,[t("h265/opus 的 rtmp 扩展"),r(o)]),t(".")]),f,g])}const H=s(d,[["render",x],["__file","rtmp_support_for_h265_and_opus.html.vue"]]);export{H as default};
                          +import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as a,c,a as e,d as t,b as r}from"./app-0NopiYEV.js";const d={},_=e("h2",{id:"背景",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#背景","aria-hidden":"true"},"#"),t(" 背景")],-1),i=e("p",null,"rtmp/flv 是直播行业事实上的标准,这两者在国内直播领域应用非常广泛。在浏览器上要实现无插件的低延时直播播放,基本绕不开 rtmp/flv. 由于 rtmp/flv 是 Adobe 设计的私有协议,原生是不支持 H265(视频监控应用广泛)和 opus(RTC 应用广泛)的,而目前视频监控、RTC 相关行业都有使用直播基础设施的需求,所以对 rtmp 进行修改,使其添加对 H265 和 opus 的支持比较重要。",-1),p=e("h2",{id:"实现方式",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#实现方式","aria-hidden":"true"},"#"),t(" 实现方式")],-1),h=e("strong",null,"12",-1),l={href:"https://github.com/ksvc/FFmpeg/wiki",target:"_blank",rel:"noopener noreferrer"},m=e("strong",null,"13",-1),u={href:"https://gitee.com/xia-chu/FFmpeg",target:"_blank",rel:"noopener noreferrer"},f=e("h2",{id:"服务器实现",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#服务器实现","aria-hidden":"true"},"#"),t(" 服务器实现")],-1),g=e("p",null,"ZLMediaKit 已经实现了 rtsp/rtmp/mp4/hls 对 h265/opus 的全面支持, 欢迎各位测试使用。",-1);function x(b,k){const o=n("ExternalLinkIcon");return a(),c("div",null,[_,i,p,e("p",null,[t("rtmp 通过 codec id 来判断编码格式,同时通过 message type 来区分数据类型(包括音频包、视频包),所以音视频的 codec_id 是可以相同的(相同类型不冲突即可); 例如 H264 的 codec id 为 7,G711A 的 codec id 也为 7。 目前国内默认定义 H265 的 codec id 为"),h,t("(由金山云首先"),e("a",l,[t("实现并公布"),r(o)]),t("). 而对 opus 的 rtmp 扩展目前还未有广泛共识,作者在与相关人士讨论后,协商定义其 codec id 为"),m,t(",目前已经实现了对 FFmpeg(基于最新版本)的修改,添加了对"),e("a",u,[t("h265/opus 的 rtmp 扩展"),r(o)]),t(".")]),f,g])}const H=s(d,[["render",x],["__file","rtmp_support_for_h265_and_opus.html.vue"]]);export{H as default};
                          diff --git a/assets/rtmp_support_for_h265_and_opus.html-Pv_q6lJG.js b/assets/rtmp_support_for_h265_and_opus.html-a8ynJZrM.js
                          similarity index 97%
                          rename from assets/rtmp_support_for_h265_and_opus.html-Pv_q6lJG.js
                          rename to assets/rtmp_support_for_h265_and_opus.html-a8ynJZrM.js
                          index 277a6c8..7688509 100644
                          --- a/assets/rtmp_support_for_h265_and_opus.html-Pv_q6lJG.js
                          +++ b/assets/rtmp_support_for_h265_and_opus.html-a8ynJZrM.js
                          @@ -1 +1 @@
                          -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as r,c as s,a as e,d as t,b as n}from"./app-RP31lnfq.js";const d={},c=e("h2",{id:"background",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#background","aria-hidden":"true"},"#"),t(" Background")],-1),h=e("p",null,"RTMP/FLV is the de facto standard in the live streaming industry, and they are widely used in the domestic live streaming field. To achieve plugin-free low-latency live streaming playback in web browsers, RTMP/FLV is essential. Since RTMP/FLV is a proprietary protocol designed by Adobe, it does not natively support H.265 (widely used in video surveillance applications) and Opus (widely used in RTC applications). However, there is a growing demand for live streaming infrastructure in the video surveillance and RTC industries. Therefore, it is important to modify RTMP to add support for H.265 and Opus.",-1),l=e("h2",{id:"implementation-approach",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#implementation-approach","aria-hidden":"true"},"#"),t(" Implementation Approach")],-1),p=e("strong",null,"12",-1),u={href:"https://github.com/ksvc/FFmpeg/wiki",target:"_blank",rel:"noopener noreferrer"},m=e("strong",null,"13",-1),_={href:"https://gitee.com/xia-chu/FFmpeg",target:"_blank",rel:"noopener noreferrer"},f=e("h2",{id:"server-implementation",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#server-implementation","aria-hidden":"true"},"#"),t(" Server Implementation")],-1),g=e("p",null,"ZLMediaKit has already implemented comprehensive support for H.265/Opus in RTSP/RTMP/MP4/HLS. Feel free to test and use it.",-1);function v(y,b){const o=i("ExternalLinkIcon");return r(),s("div",null,[c,h,l,e("p",null,[t("RTMP determines the encoding format through codec ID and distinguishes data types (including audio packets and video packets) through message type. Therefore, the codec_id for audio and video can be the same as long as they are of the same type and do not conflict. For example, the codec ID for H.264 is 7, and the codec ID for G.711A is also 7. Currently, the default codec ID for H.265 in China is "),p,t(" (implemented and published by "),e("a",u,[t("金山云"),n(o)]),t("). As for the RTMP extension for Opus, there is currently no widespread consensus. After discussions with relevant individuals, the author has negotiated and defined its codec ID as "),m,t(". The modification has already been implemented for FFmpeg (based on the latest version) to add support for"),e("a",_,[t("h265/opus RTMP extension"),n(o)]),t(".")]),f,g])}const x=a(d,[["render",v],["__file","rtmp_support_for_h265_and_opus.html.vue"]]);export{x as default};
                          +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as r,c as s,a as e,d as t,b as n}from"./app-0NopiYEV.js";const d={},c=e("h2",{id:"background",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#background","aria-hidden":"true"},"#"),t(" Background")],-1),h=e("p",null,"RTMP/FLV is the de facto standard in the live streaming industry, and they are widely used in the domestic live streaming field. To achieve plugin-free low-latency live streaming playback in web browsers, RTMP/FLV is essential. Since RTMP/FLV is a proprietary protocol designed by Adobe, it does not natively support H.265 (widely used in video surveillance applications) and Opus (widely used in RTC applications). However, there is a growing demand for live streaming infrastructure in the video surveillance and RTC industries. Therefore, it is important to modify RTMP to add support for H.265 and Opus.",-1),l=e("h2",{id:"implementation-approach",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#implementation-approach","aria-hidden":"true"},"#"),t(" Implementation Approach")],-1),p=e("strong",null,"12",-1),u={href:"https://github.com/ksvc/FFmpeg/wiki",target:"_blank",rel:"noopener noreferrer"},m=e("strong",null,"13",-1),_={href:"https://gitee.com/xia-chu/FFmpeg",target:"_blank",rel:"noopener noreferrer"},f=e("h2",{id:"server-implementation",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#server-implementation","aria-hidden":"true"},"#"),t(" Server Implementation")],-1),g=e("p",null,"ZLMediaKit has already implemented comprehensive support for H.265/Opus in RTSP/RTMP/MP4/HLS. Feel free to test and use it.",-1);function v(y,b){const o=i("ExternalLinkIcon");return r(),s("div",null,[c,h,l,e("p",null,[t("RTMP determines the encoding format through codec ID and distinguishes data types (including audio packets and video packets) through message type. Therefore, the codec_id for audio and video can be the same as long as they are of the same type and do not conflict. For example, the codec ID for H.264 is 7, and the codec ID for G.711A is also 7. Currently, the default codec ID for H.265 in China is "),p,t(" (implemented and published by "),e("a",u,[t("金山云"),n(o)]),t("). As for the RTMP extension for Opus, there is currently no widespread consensus. After discussions with relevant individuals, the author has negotiated and defined its codec ID as "),m,t(". The modification has already been implemented for FFmpeg (based on the latest version) to add support for"),e("a",_,[t("h265/opus RTMP extension"),n(o)]),t(".")]),f,g])}const x=a(d,[["render",v],["__file","rtmp_support_for_h265_and_opus.html.vue"]]);export{x as default};
                          diff --git a/assets/rtsp_performance_optimization.html-INqzsvFD.js b/assets/rtsp_performance_optimization.html-jqJ1nUFL.js
                          similarity index 98%
                          rename from assets/rtsp_performance_optimization.html-INqzsvFD.js
                          rename to assets/rtsp_performance_optimization.html-jqJ1nUFL.js
                          index 0282592..06705d7 100644
                          --- a/assets/rtsp_performance_optimization.html-INqzsvFD.js
                          +++ b/assets/rtsp_performance_optimization.html-jqJ1nUFL.js
                          @@ -1 +1 @@
                          -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as r,c as l,a as e,d as a,b as i,e as c}from"./app-RP31lnfq.js";const o={},d=e("h2",{id:"概述",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#概述","aria-hidden":"true"},"#"),a(" 概述")],-1),h={href:"https://github.com/xiongziliang/ZLMediaKit/commit/b169f94cce1ecbab50248f25ee3b33dd40602fe1",target:"_blank",rel:"noopener noreferrer"},g=e("ul",null,[e("li",null,[e("strong",null,"缓存时间戳相同的 RTP 包(意味着是同一帧数据),作为一个数据包进行分发"),a("。")])],-1),p=e("p",null,[a("理论上,这样做可以大大"),e("strong",null,"减少多线程分发时线程切换次数、多余发送逻辑代码的执行以及系统调用次数"),a(",预期在不增加播放延时的情况下能大幅提高 rtsp 服务器的性能.")],-1),u=e("h2",{id:"测试",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#测试","aria-hidden":"true"},"#"),a(" 测试")],-1),m=e("p",null,"为了验证本次优化的预期目标,我在 linux 服务器上做了一系列的测试对比,以下是测试环境:",-1),b=e("li",null,"操作系统:ubuntu16 desktop 64bit",-1),_=e("li",null,"cpu: 4 核心的 Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz",-1),f=e("li",null,"编译器:gcc 5.4.0,开启 Release 编译(cmake -DCMAKE_BUILD_TYPE=Release)",-1),x=e("li",null,"malloc 库:连接 jemalloc",-1),z=e("li",null,"网络: 127.0.0.1 本地循环网络",-1),y={href:"https://github.com/xiongziliang/ZLMediaKit/blob/master/tests/test_benchmark.cpp",target:"_blank",rel:"noopener noreferrer"},M={href:"https://github.com/xiongziliang/ZLMediaKit/tree/master/server",target:"_blank",rel:"noopener noreferrer"},k=e("li",null,"测试码流:4K H264 的 RTSP 流,通过 MP4 Rtsp 点播实现,文件 200 秒,190MB,码流大概 8Mb/s",-1),K=e("li",null,"测试方法:通过 test_benchmark 播放 500 路 RTSP 4K 点播,总码流大概 4Gb/s,分别测试新老版本的 MediaServer 的进程。",-1),L=c('

                          测试数据

                          • 启动的播放器个数: image
                          • 实时码流: image

                          性能对比

                          老版本数据

                          • cpu 使用率(浮动比较大,最高 200%+):

                            imageimage

                          • 性能分析(perf top):

                            image
                            image
                          • 总结: cpu 占用主要发生在内核态的系统调用(syscall)、tcp_sendmsg、内存拷贝。

                          新版本数据

                          • cpu 使用率(浮动比较小,50%以下):

                            imageimage

                          • 后面我又测试了 2000 个播放器,掉了一批,最后稳定在 1800 个左右,实时流量 17.5Gb/s(单向)左右,cpu 占用 300%左右:

                            imageimageimageimage

                          • 性能分析(perf top):

                            image
                            image
                          • 总结:cpu 占用主要发生在内核态内存拷贝,系统调用(syscall)、tcp_sendmsg 的开销很小。

                          总结

                          本次性能测试基本证明了预想,性能提升大概有 4 倍以上。 本机器为 i7-4790 4 核心 8 线程的,所以 cpu 占用率最高为 800%,现在 ZLMediaKit 在上面支撑 500 个 4K RTSP 播放器,实时流量大概 4Gb/s 时 cpu 使用率 50%不到,通过简单换算,该 cpu 可以支撑大概 8000 个 4K RTSP 播放器,实时流量最高能达到 64Gb/s,考虑到性能折损,我们保守估计可以支持 6000 个 4K RTSP 播放器,50Gb/s 的流量。

                          最后

                          在 ZLMediaKit 流媒体服务器中,通过智能指针引用计数的方式实现了多线程的数据分发,不管分发多少次,数据拷贝次数都是固定的,所以 ZLMediaKit 可以达到如此夸张的性能参数,但是在测试中,我们也能发现,性能占用已经大部分发生在内核态了,应用层的 cpu 占用反而不是瓶颈了。这是因为在内核态,写 socket 缓存需要做内存拷贝,随着播放器个数的增加,内存拷贝会越来越多,此时性能瓶颈不再是应用层,而是由于内存带宽瓶颈导致的内核性能瓶颈。

                          ',11);function R(P,T){const t=s("ExternalLinkIcon");return r(),l("div",null,[d,e("p",null,[a("在最近 ZLMediaKit 的一次提交中,我对 rtsp 服务器的性能做了一次"),e("a",h,[a("改进"),i(t)]),a(",本次改进中,核心的思想是:")]),g,p,u,m,e("ul",null,[b,_,f,x,z,e("li",null,[a("测试客户端:"),e("a",y,[a("test_benchmark"),i(t)])]),e("li",null,[a("测试服务器:"),e("a",M,[a("MediaServer"),i(t)])]),k,K]),L])}const v=n(o,[["render",R],["__file","rtsp_performance_optimization.html.vue"]]);export{v as default}; +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as r,c as l,a as e,d as a,b as i,e as c}from"./app-0NopiYEV.js";const o={},d=e("h2",{id:"概述",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#概述","aria-hidden":"true"},"#"),a(" 概述")],-1),h={href:"https://github.com/xiongziliang/ZLMediaKit/commit/b169f94cce1ecbab50248f25ee3b33dd40602fe1",target:"_blank",rel:"noopener noreferrer"},g=e("ul",null,[e("li",null,[e("strong",null,"缓存时间戳相同的 RTP 包(意味着是同一帧数据),作为一个数据包进行分发"),a("。")])],-1),p=e("p",null,[a("理论上,这样做可以大大"),e("strong",null,"减少多线程分发时线程切换次数、多余发送逻辑代码的执行以及系统调用次数"),a(",预期在不增加播放延时的情况下能大幅提高 rtsp 服务器的性能.")],-1),u=e("h2",{id:"测试",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#测试","aria-hidden":"true"},"#"),a(" 测试")],-1),m=e("p",null,"为了验证本次优化的预期目标,我在 linux 服务器上做了一系列的测试对比,以下是测试环境:",-1),b=e("li",null,"操作系统:ubuntu16 desktop 64bit",-1),_=e("li",null,"cpu: 4 核心的 Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz",-1),f=e("li",null,"编译器:gcc 5.4.0,开启 Release 编译(cmake -DCMAKE_BUILD_TYPE=Release)",-1),x=e("li",null,"malloc 库:连接 jemalloc",-1),z=e("li",null,"网络: 127.0.0.1 本地循环网络",-1),y={href:"https://github.com/xiongziliang/ZLMediaKit/blob/master/tests/test_benchmark.cpp",target:"_blank",rel:"noopener noreferrer"},M={href:"https://github.com/xiongziliang/ZLMediaKit/tree/master/server",target:"_blank",rel:"noopener noreferrer"},k=e("li",null,"测试码流:4K H264 的 RTSP 流,通过 MP4 Rtsp 点播实现,文件 200 秒,190MB,码流大概 8Mb/s",-1),K=e("li",null,"测试方法:通过 test_benchmark 播放 500 路 RTSP 4K 点播,总码流大概 4Gb/s,分别测试新老版本的 MediaServer 的进程。",-1),L=c('

                          测试数据

                          • 启动的播放器个数: image
                          • 实时码流: image

                          性能对比

                          老版本数据

                          • cpu 使用率(浮动比较大,最高 200%+):

                            imageimage

                          • 性能分析(perf top):

                            image
                            image
                          • 总结: cpu 占用主要发生在内核态的系统调用(syscall)、tcp_sendmsg、内存拷贝。

                          新版本数据

                          • cpu 使用率(浮动比较小,50%以下):

                            imageimage

                          • 后面我又测试了 2000 个播放器,掉了一批,最后稳定在 1800 个左右,实时流量 17.5Gb/s(单向)左右,cpu 占用 300%左右:

                            imageimageimageimage

                          • 性能分析(perf top):

                            image
                            image
                          • 总结:cpu 占用主要发生在内核态内存拷贝,系统调用(syscall)、tcp_sendmsg 的开销很小。

                          总结

                          本次性能测试基本证明了预想,性能提升大概有 4 倍以上。 本机器为 i7-4790 4 核心 8 线程的,所以 cpu 占用率最高为 800%,现在 ZLMediaKit 在上面支撑 500 个 4K RTSP 播放器,实时流量大概 4Gb/s 时 cpu 使用率 50%不到,通过简单换算,该 cpu 可以支撑大概 8000 个 4K RTSP 播放器,实时流量最高能达到 64Gb/s,考虑到性能折损,我们保守估计可以支持 6000 个 4K RTSP 播放器,50Gb/s 的流量。

                          最后

                          在 ZLMediaKit 流媒体服务器中,通过智能指针引用计数的方式实现了多线程的数据分发,不管分发多少次,数据拷贝次数都是固定的,所以 ZLMediaKit 可以达到如此夸张的性能参数,但是在测试中,我们也能发现,性能占用已经大部分发生在内核态了,应用层的 cpu 占用反而不是瓶颈了。这是因为在内核态,写 socket 缓存需要做内存拷贝,随着播放器个数的增加,内存拷贝会越来越多,此时性能瓶颈不再是应用层,而是由于内存带宽瓶颈导致的内核性能瓶颈。

                          ',11);function R(P,T){const t=s("ExternalLinkIcon");return r(),l("div",null,[d,e("p",null,[a("在最近 ZLMediaKit 的一次提交中,我对 rtsp 服务器的性能做了一次"),e("a",h,[a("改进"),i(t)]),a(",本次改进中,核心的思想是:")]),g,p,u,m,e("ul",null,[b,_,f,x,z,e("li",null,[a("测试客户端:"),e("a",y,[a("test_benchmark"),i(t)])]),e("li",null,[a("测试服务器:"),e("a",M,[a("MediaServer"),i(t)])]),k,K]),L])}const v=n(o,[["render",R],["__file","rtsp_performance_optimization.html.vue"]]);export{v as default}; diff --git a/assets/rtsp_performance_optimization.html-KRKhmZXI.js b/assets/rtsp_performance_optimization.html-oVbOTUnc.js similarity index 98% rename from assets/rtsp_performance_optimization.html-KRKhmZXI.js rename to assets/rtsp_performance_optimization.html-oVbOTUnc.js index 86bb8e6..c4d0f60 100644 --- a/assets/rtsp_performance_optimization.html-KRKhmZXI.js +++ b/assets/rtsp_performance_optimization.html-oVbOTUnc.js @@ -1 +1 @@ -import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as l,c as r,a as e,d as a,b as i,e as c}from"./app-RP31lnfq.js";const o={},d=e("h2",{id:"概述",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#概述","aria-hidden":"true"},"#"),a(" 概述")],-1),h={href:"https://github.com/xiongziliang/ZLMediaKit/commit/b169f94cce1ecbab50248f25ee3b33dd40602fe1",target:"_blank",rel:"noopener noreferrer"},u=e("ul",null,[e("li",null,[e("strong",null,"缓存时间戳相同的 RTP 包(意味着是同一帧数据),作为一个数据包进行分发"),a("。")])],-1),g=e("p",null,[a("理论上,这样做可以大大"),e("strong",null,"减少多线程分发时线程切换次数、多余发送逻辑代码的执行以及系统调用次数"),a(",预期在不增加播放延时的情况下能大幅提高 rtsp 服务器的性能.")],-1),p=e("h2",{id:"测试",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#测试","aria-hidden":"true"},"#"),a(" 测试")],-1),m=e("p",null,"为了验证本次优化的预期目标,我在 linux 服务器上做了一系列的测试对比,以下是测试环境:",-1),b=e("li",null,"操作系统:ubuntu16 desktop 64bit",-1),_=e("li",null,"cpu: 4 核心的 Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz",-1),f=e("li",null,"编译器:gcc 5.4.0,开启 Release 编译(cmake -DCMAKE_BUILD_TYPE=Release)",-1),x=e("li",null,"malloc 库:连接 jemalloc",-1),z=e("li",null,"网络: 127.0.0.1 本地循环网络",-1),y={href:"https://github.com/xiongziliang/ZLMediaKit/blob/master/tests/test_benchmark.cpp",target:"_blank",rel:"noopener noreferrer"},M={href:"https://github.com/xiongziliang/ZLMediaKit/tree/master/server",target:"_blank",rel:"noopener noreferrer"},k=e("li",null,"测试码流:4K H264 的 RTSP 流,通过 MP4 Rtsp 点播实现,文件 200 秒,190MB,码流大概 8Mb/s",-1),K=e("li",null,"测试方法:通过 test_benchmark 播放 500 路 RTSP 4K 点播,总码流大概 4Gb/s,分别测试新老版本的 MediaServer 的进程。",-1),L=c('

                          测试数据

                          • 启动的播放器个数: image
                          • 实时码流: image

                          性能对比

                          老版本数据

                          • cpu 使用率(浮动比较大,最高 200%+): imageimage

                          • 性能分析(perf top): image

                          • 总结 : cpu 占用主要发生在内核态的系统调用(syscall)、tcp_sendmsg、内存拷贝。

                          新版本数据:

                          • cpu 使用率(浮动比较小,50%以下): imageimage

                          • 后面我又测试了 2000 个播放器,掉了一批,最后稳定在 1800 个左右,实时流量 17.5Gb/s(单向)左右,cpu 占用 300%左右: imageimageimageimage

                          • 性能分析(perf top): image

                          • 总结 : cpu 占用主要发生在内核态内存拷贝,系统调用(syscall)、tcp_sendmsg 的开销很小。

                          总结

                          本次性能测试基本证明了预想,性能提升大概有 4 倍以上。 本机器为 i7-4790 4 核心 8 线程的,所以 cpu 占用率最高为 800%,现在 ZLMediaKit 在上面支撑 500 个 4K RTSP 播放器,实时流量大概 4Gb/s 时 cpu 使用率 50%不到,通过简单换算,该 cpu 可以支撑大概 8000 个 4K RTSP 播放器,实时流量最高能达到 64Gb/s,考虑到性能折损,我们保守估计可以支持 6000 个 4K RTSP 播放器,50Gb/s 的流量。

                          最后

                          在 ZLMediaKit 流媒体服务器中,通过智能指针引用计数的方式实现了多线程的数据分发,不管分发多少次,数据拷贝次数都是固定的,所以 ZLMediaKit 可以达到如此夸张的性能参数,但是在测试中,我们也能发现,性能占用已经大部分发生在内核态了,应用层的 cpu 占用反而不是瓶颈了。这是因为在内核态,写 socket 缓存需要做内存拷贝,随着播放器个数的增加,内存拷贝会越来越多,此时性能瓶颈不再是应用层,而是由于内存带宽瓶颈导致的内核性能瓶颈。

                          ',11);function R(P,T){const t=n("ExternalLinkIcon");return l(),r("div",null,[d,e("p",null,[a("在最近 ZLMediaKit 的一次提交中,我对 rtsp 服务器的性能做了一次"),e("a",h,[a("改进"),i(t)]),a(",本次改进中,核心的思想是:")]),u,g,p,m,e("ul",null,[b,_,f,x,z,e("li",null,[a("测试客户端:"),e("a",y,[a("test_benchmark"),i(t)])]),e("li",null,[a("测试服务器:"),e("a",M,[a("MediaServer"),i(t)])]),k,K]),L])}const v=s(o,[["render",R],["__file","rtsp_performance_optimization.html.vue"]]);export{v as default}; +import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as l,c as r,a as e,d as a,b as i,e as c}from"./app-0NopiYEV.js";const o={},d=e("h2",{id:"概述",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#概述","aria-hidden":"true"},"#"),a(" 概述")],-1),h={href:"https://github.com/xiongziliang/ZLMediaKit/commit/b169f94cce1ecbab50248f25ee3b33dd40602fe1",target:"_blank",rel:"noopener noreferrer"},u=e("ul",null,[e("li",null,[e("strong",null,"缓存时间戳相同的 RTP 包(意味着是同一帧数据),作为一个数据包进行分发"),a("。")])],-1),g=e("p",null,[a("理论上,这样做可以大大"),e("strong",null,"减少多线程分发时线程切换次数、多余发送逻辑代码的执行以及系统调用次数"),a(",预期在不增加播放延时的情况下能大幅提高 rtsp 服务器的性能.")],-1),p=e("h2",{id:"测试",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#测试","aria-hidden":"true"},"#"),a(" 测试")],-1),m=e("p",null,"为了验证本次优化的预期目标,我在 linux 服务器上做了一系列的测试对比,以下是测试环境:",-1),b=e("li",null,"操作系统:ubuntu16 desktop 64bit",-1),_=e("li",null,"cpu: 4 核心的 Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz",-1),f=e("li",null,"编译器:gcc 5.4.0,开启 Release 编译(cmake -DCMAKE_BUILD_TYPE=Release)",-1),x=e("li",null,"malloc 库:连接 jemalloc",-1),z=e("li",null,"网络: 127.0.0.1 本地循环网络",-1),y={href:"https://github.com/xiongziliang/ZLMediaKit/blob/master/tests/test_benchmark.cpp",target:"_blank",rel:"noopener noreferrer"},M={href:"https://github.com/xiongziliang/ZLMediaKit/tree/master/server",target:"_blank",rel:"noopener noreferrer"},k=e("li",null,"测试码流:4K H264 的 RTSP 流,通过 MP4 Rtsp 点播实现,文件 200 秒,190MB,码流大概 8Mb/s",-1),K=e("li",null,"测试方法:通过 test_benchmark 播放 500 路 RTSP 4K 点播,总码流大概 4Gb/s,分别测试新老版本的 MediaServer 的进程。",-1),L=c('

                          测试数据

                          • 启动的播放器个数: image
                          • 实时码流: image

                          性能对比

                          老版本数据

                          • cpu 使用率(浮动比较大,最高 200%+): imageimage

                          • 性能分析(perf top): image

                          • 总结 : cpu 占用主要发生在内核态的系统调用(syscall)、tcp_sendmsg、内存拷贝。

                          新版本数据:

                          • cpu 使用率(浮动比较小,50%以下): imageimage

                          • 后面我又测试了 2000 个播放器,掉了一批,最后稳定在 1800 个左右,实时流量 17.5Gb/s(单向)左右,cpu 占用 300%左右: imageimageimageimage

                          • 性能分析(perf top): image

                          • 总结 : cpu 占用主要发生在内核态内存拷贝,系统调用(syscall)、tcp_sendmsg 的开销很小。

                          总结

                          本次性能测试基本证明了预想,性能提升大概有 4 倍以上。 本机器为 i7-4790 4 核心 8 线程的,所以 cpu 占用率最高为 800%,现在 ZLMediaKit 在上面支撑 500 个 4K RTSP 播放器,实时流量大概 4Gb/s 时 cpu 使用率 50%不到,通过简单换算,该 cpu 可以支撑大概 8000 个 4K RTSP 播放器,实时流量最高能达到 64Gb/s,考虑到性能折损,我们保守估计可以支持 6000 个 4K RTSP 播放器,50Gb/s 的流量。

                          最后

                          在 ZLMediaKit 流媒体服务器中,通过智能指针引用计数的方式实现了多线程的数据分发,不管分发多少次,数据拷贝次数都是固定的,所以 ZLMediaKit 可以达到如此夸张的性能参数,但是在测试中,我们也能发现,性能占用已经大部分发生在内核态了,应用层的 cpu 占用反而不是瓶颈了。这是因为在内核态,写 socket 缓存需要做内存拷贝,随着播放器个数的增加,内存拷贝会越来越多,此时性能瓶颈不再是应用层,而是由于内存带宽瓶颈导致的内核性能瓶颈。

                          ',11);function R(P,T){const t=n("ExternalLinkIcon");return l(),r("div",null,[d,e("p",null,[a("在最近 ZLMediaKit 的一次提交中,我对 rtsp 服务器的性能做了一次"),e("a",h,[a("改进"),i(t)]),a(",本次改进中,核心的思想是:")]),u,g,p,m,e("ul",null,[b,_,f,x,z,e("li",null,[a("测试客户端:"),e("a",y,[a("test_benchmark"),i(t)])]),e("li",null,[a("测试服务器:"),e("a",M,[a("MediaServer"),i(t)])]),k,K]),L])}const v=s(o,[["render",R],["__file","rtsp_performance_optimization.html.vue"]]);export{v as default}; diff --git a/assets/rtsp_pull_stream_performance_test.html-3HmmZM3c.js b/assets/rtsp_pull_stream_performance_test.html-78O1mXMt.js similarity index 98% rename from assets/rtsp_pull_stream_performance_test.html-3HmmZM3c.js rename to assets/rtsp_pull_stream_performance_test.html-78O1mXMt.js index 55a83f5..0c3320b 100644 --- a/assets/rtsp_pull_stream_performance_test.html-3HmmZM3c.js +++ b/assets/rtsp_pull_stream_performance_test.html-78O1mXMt.js @@ -1,4 +1,4 @@ -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as l,c as t,a as e,d as n,b as r,e as d}from"./app-RP31lnfq.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),u=e("li",null,"代码版本:git hash: c7d7999f",-1),m=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),g={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),_=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=d(`
                          diff --git a/conf/config.ini b/conf/config.ini
                          +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as l,c as t,a as e,d as n,b as r,e as d}from"./app-0NopiYEV.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),u=e("li",null,"代码版本:git hash: c7d7999f",-1),m=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),g={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),_=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=d(`
                          diff --git a/conf/config.ini b/conf/config.ini
                           index c2d4613f..99ce5c84 100644
                           --- a/conf/config.ini
                           +++ b/conf/config.ini
                          diff --git a/assets/rtsp_pull_stream_performance_test.html-sTQrF5Xo.js b/assets/rtsp_pull_stream_performance_test.html-waVb8kwe.js
                          similarity index 98%
                          rename from assets/rtsp_pull_stream_performance_test.html-sTQrF5Xo.js
                          rename to assets/rtsp_pull_stream_performance_test.html-waVb8kwe.js
                          index 55a83f5..0c3320b 100644
                          --- a/assets/rtsp_pull_stream_performance_test.html-sTQrF5Xo.js
                          +++ b/assets/rtsp_pull_stream_performance_test.html-waVb8kwe.js
                          @@ -1,4 +1,4 @@
                          -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as l,c as t,a as e,d as n,b as r,e as d}from"./app-RP31lnfq.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),u=e("li",null,"代码版本:git hash: c7d7999f",-1),m=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),g={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),_=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=d(`
                          diff --git a/conf/config.ini b/conf/config.ini
                          +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as l,c as t,a as e,d as n,b as r,e as d}from"./app-0NopiYEV.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),u=e("li",null,"代码版本:git hash: c7d7999f",-1),m=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),g={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),_=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=d(`
                          diff --git a/conf/config.ini b/conf/config.ini
                           index c2d4613f..99ce5c84 100644
                           --- a/conf/config.ini
                           +++ b/conf/config.ini
                          diff --git a/assets/rtsp_push_process.html-W2QVXDCD.js b/assets/rtsp_push_process.html-5BXn5aZU.js
                          similarity index 99%
                          rename from assets/rtsp_push_process.html-W2QVXDCD.js
                          rename to assets/rtsp_push_process.html-5BXn5aZU.js
                          index 194b6b2..42daead 100644
                          --- a/assets/rtsp_push_process.html-W2QVXDCD.js
                          +++ b/assets/rtsp_push_process.html-5BXn5aZU.js
                          @@ -1,4 +1,4 @@
                          -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as n,e as s}from"./app-RP31lnfq.js";const t={},d=s(`

                          1. The client sends an ANNOUNCE command.

                          This step primarily involves transmitting the SDP. Generally, before this command, an OPTIONS command is sent to probe the server's support for the streaming protocol. However, to reduce the number of interactions, the ANNOUNCE command can be directly sent. If not supported, the server naturally responds with an error code.

                          ANNOUNCE rtsp://10.0.9.130:554/live/2.sdp RTSP/1.0
                          +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as n,e as s}from"./app-0NopiYEV.js";const t={},d=s(`

                          1. The client sends an ANNOUNCE command.

                          This step primarily involves transmitting the SDP. Generally, before this command, an OPTIONS command is sent to probe the server's support for the streaming protocol. However, to reduce the number of interactions, the ANNOUNCE command can be directly sent. If not supported, the server naturally responds with an error code.

                          ANNOUNCE rtsp://10.0.9.130:554/live/2.sdp RTSP/1.0
                           CSeq: 1
                           User-Agent: EasyPusher v1.2.16.1105
                           Content-Type: application/sdp
                          diff --git a/assets/rtsp_push_process.html-PFNRXi6Z.js b/assets/rtsp_push_process.html-ZQbam1ye.js
                          similarity index 99%
                          rename from assets/rtsp_push_process.html-PFNRXi6Z.js
                          rename to assets/rtsp_push_process.html-ZQbam1ye.js
                          index a71a2d2..ce2b4a3 100644
                          --- a/assets/rtsp_push_process.html-PFNRXi6Z.js
                          +++ b/assets/rtsp_push_process.html-ZQbam1ye.js
                          @@ -1,4 +1,4 @@
                          -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as e,c as n,e as s}from"./app-RP31lnfq.js";const d={},p=s(`

                          1、客户端发送 ANNOUNCE 命令

                          此步骤主要传输 SDP,一般而言在这个命令之前还需要 OPTIONS 命令侦探服务器是否支持推流协议,但是为了减少交互次数,可以直接发送 ANNOUNCE 命令,如果不支持,服务器自然响应错误代码。

                          ANNOUNCE rtsp://10.0.9.130:554/live/2.sdp RTSP/1.0
                          +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as e,c as n,e as s}from"./app-0NopiYEV.js";const d={},p=s(`

                          1、客户端发送 ANNOUNCE 命令

                          此步骤主要传输 SDP,一般而言在这个命令之前还需要 OPTIONS 命令侦探服务器是否支持推流协议,但是为了减少交互次数,可以直接发送 ANNOUNCE 命令,如果不支持,服务器自然响应错误代码。

                          ANNOUNCE rtsp://10.0.9.130:554/live/2.sdp RTSP/1.0
                           CSeq: 1
                           User-Agent: EasyPusher v1.2.16.1105
                           Content-Type: application/sdp
                          diff --git a/assets/rtsp_push_stream_performance_test.html-8OJV-kxN.js b/assets/rtsp_push_stream_performance_test.html-YskCMXrz.js
                          similarity index 98%
                          rename from assets/rtsp_push_stream_performance_test.html-8OJV-kxN.js
                          rename to assets/rtsp_push_stream_performance_test.html-YskCMXrz.js
                          index 100d481..949a85a 100644
                          --- a/assets/rtsp_push_stream_performance_test.html-8OJV-kxN.js
                          +++ b/assets/rtsp_push_stream_performance_test.html-YskCMXrz.js
                          @@ -1,4 +1,4 @@
                          -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as l,c as d,a as e,d as n,b as r,e as t}from"./app-RP31lnfq.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),m=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),_={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),g=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=t(`
                          diff --git a/conf/config.ini b/conf/config.ini
                          +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as l,c as d,a as e,d as n,b as r,e as t}from"./app-0NopiYEV.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),m=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),_={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),g=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=t(`
                          diff --git a/conf/config.ini b/conf/config.ini
                           index c2d4613f..99ce5c84 100644
                           --- a/conf/config.ini
                           +++ b/conf/config.ini
                          diff --git a/assets/rtsp_push_stream_performance_test.html-mR4FJY9Z.js b/assets/rtsp_push_stream_performance_test.html-x031EUqu.js
                          similarity index 98%
                          rename from assets/rtsp_push_stream_performance_test.html-mR4FJY9Z.js
                          rename to assets/rtsp_push_stream_performance_test.html-x031EUqu.js
                          index 100d481..949a85a 100644
                          --- a/assets/rtsp_push_stream_performance_test.html-mR4FJY9Z.js
                          +++ b/assets/rtsp_push_stream_performance_test.html-x031EUqu.js
                          @@ -1,4 +1,4 @@
                          -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as l,c as d,a as e,d as n,b as r,e as t}from"./app-RP31lnfq.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),m=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),_={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),g=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=t(`
                          diff --git a/conf/config.ini b/conf/config.ini
                          +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as l,c as d,a as e,d as n,b as r,e as t}from"./app-0NopiYEV.js";const c={},o=e("h2",{id:"一、测试环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一、测试环境","aria-hidden":"true"},"#"),n(" 一、测试环境")],-1),p=e("li",null,"测试日期:2022/5/18",-1),m=e("li",null,"代码版本:git hash: c7d7999f",-1),u=e("li",null,"cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz",-1),v=e("li",null,"操作系统:CentOS release 6.3 (Final)",-1),b=e("li",null,"内存:16GB",-1),h=e("li",null,"网卡:127.0.0.1",-1),_={href:"https://raw.githubusercontent.com/ossrs/srs/develop/trunk/doc/source.200kbps.768x320.flv",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"编译器:gcc (GCC) 8.2.0",-1),g=e("li",null,"zlmediakit 编译类型:Release",-1),k=e("li",null,"malloc 库:ptmalloc(未开启 jemalloc)",-1),x=e("li",null,"config.ini 配置文件修改(主要开启合并写、按需转协议):",-1),y=t(`
                          diff --git a/conf/config.ini b/conf/config.ini
                           index c2d4613f..99ce5c84 100644
                           --- a/conf/config.ini
                           +++ b/conf/config.ini
                          diff --git a/assets/sankeyDiagram-6db3d513-9q2qHJD9.js b/assets/sankeyDiagram-6db3d513-gIgv_0rP.js
                          similarity index 88%
                          rename from assets/sankeyDiagram-6db3d513-9q2qHJD9.js
                          rename to assets/sankeyDiagram-6db3d513-gIgv_0rP.js
                          index 0af654f..ba7632c 100644
                          --- a/assets/sankeyDiagram-6db3d513-9q2qHJD9.js
                          +++ b/assets/sankeyDiagram-6db3d513-gIgv_0rP.js
                          @@ -1,8 +1,8 @@
                          -import{c as rt,g as mt,s as _t,a as kt,b as xt,x as vt,v as bt,z as wt,j as St,u as Lt,h as Y,i as Et}from"./mermaid.core-ygY5oRaR.js";import{o as At}from"./ordinal-wXG5obU4.js";import"./app-RP31lnfq.js";import"./init-Hi12RPRh.js";function Tt(t){for(var n=t.length/6|0,i=new Array(n),l=0;l=l)&&(i=l);else{let l=-1;for(let u of t)(u=n(u,++l,t))!=null&&(i=u)&&(i=u)}return i}function yt(t,n){let i;if(n===void 0)for(const l of t)l!=null&&(i>l||i===void 0&&l>=l)&&(i=l);else{let l=-1;for(let u of t)(u=n(u,++l,t))!=null&&(i>u||i===void 0&&u>=u)&&(i=u)}return i}function Z(t,n){let i=0;if(n===void 0)for(let l of t)(l=+l)&&(i+=l);else{let l=-1;for(let u of t)(u=+n(u,++l,t))&&(i+=u)}return i}function Nt(t){return t.target.depth}function Pt(t){return t.depth}function Ct(t,n){return n-1-t.height}function dt(t,n){return t.sourceLinks.length?t.depth:n-1}function It(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?yt(t.sourceLinks,Nt)-1:0}function G(t){return function(){return t}}function lt(t,n){return H(t.source,n.source)||t.index-n.index}function at(t,n){return H(t.target,n.target)||t.index-n.index}function H(t,n){return t.y0-n.y0}function J(t){return t.value}function Ot(t){return t.index}function $t(t){return t.nodes}function zt(t){return t.links}function ct(t,n){const i=t.get(n);if(!i)throw new Error("missing: "+n);return i}function ut({nodes:t}){for(const n of t){let i=n.y0,l=i;for(const u of n.sourceLinks)u.y0=i+u.width/2,i+=u.width;for(const u of n.targetLinks)u.y1=l+u.width/2,l+=u.width}}function jt(){let t=0,n=0,i=1,l=1,u=24,k=8,g,m=Ot,s=dt,o,c,p=$t,b=zt,y=6;function x(){const e={nodes:p.apply(null,arguments),links:b.apply(null,arguments)};return E(e),L(e),A(e),N(e),S(e),ut(e),e}x.update=function(e){return ut(e),e},x.nodeId=function(e){return arguments.length?(m=typeof e=="function"?e:G(e),x):m},x.nodeAlign=function(e){return arguments.length?(s=typeof e=="function"?e:G(e),x):s},x.nodeSort=function(e){return arguments.length?(o=e,x):o},x.nodeWidth=function(e){return arguments.length?(u=+e,x):u},x.nodePadding=function(e){return arguments.length?(k=g=+e,x):k},x.nodes=function(e){return arguments.length?(p=typeof e=="function"?e:G(e),x):p},x.links=function(e){return arguments.length?(b=typeof e=="function"?e:G(e),x):b},x.linkSort=function(e){return arguments.length?(c=e,x):c},x.size=function(e){return arguments.length?(t=n=0,i=+e[0],l=+e[1],x):[i-t,l-n]},x.extent=function(e){return arguments.length?(t=+e[0][0],i=+e[1][0],n=+e[0][1],l=+e[1][1],x):[[t,n],[i,l]]},x.iterations=function(e){return arguments.length?(y=+e,x):y};function E({nodes:e,links:f}){for(const[h,r]of e.entries())r.index=h,r.sourceLinks=[],r.targetLinks=[];const a=new Map(e.map((h,r)=>[m(h,r,e),h]));for(const[h,r]of f.entries()){r.index=h;let{source:_,target:v}=r;typeof _!="object"&&(_=r.source=ct(a,_)),typeof v!="object"&&(v=r.target=ct(a,v)),_.sourceLinks.push(r),v.targetLinks.push(r)}if(c!=null)for(const{sourceLinks:h,targetLinks:r}of e)h.sort(c),r.sort(c)}function L({nodes:e}){for(const f of e)f.value=f.fixedValue===void 0?Math.max(Z(f.sourceLinks,J),Z(f.targetLinks,J)):f.fixedValue}function A({nodes:e}){const f=e.length;let a=new Set(e),h=new Set,r=0;for(;a.size;){for(const _ of a){_.depth=r;for(const{target:v}of _.sourceLinks)h.add(v)}if(++r>f)throw new Error("circular link");a=h,h=new Set}}function N({nodes:e}){const f=e.length;let a=new Set(e),h=new Set,r=0;for(;a.size;){for(const _ of a){_.height=r;for(const{source:v}of _.targetLinks)h.add(v)}if(++r>f)throw new Error("circular link");a=h,h=new Set}}function P({nodes:e}){const f=ot(e,r=>r.depth)+1,a=(i-t-u)/(f-1),h=new Array(f);for(const r of e){const _=Math.max(0,Math.min(f-1,Math.floor(s.call(null,r,f))));r.layer=_,r.x0=t+_*a,r.x1=r.x0+u,h[_]?h[_].push(r):h[_]=[r]}if(o)for(const r of h)r.sort(o);return h}function z(e){const f=yt(e,a=>(l-n-(a.length-1)*g)/Z(a,J));for(const a of e){let h=n;for(const r of a){r.y0=h,r.y1=h+r.value*f,h=r.y1+g;for(const _ of r.sourceLinks)_.width=_.value*f}h=(l-h+g)/(a.length+1);for(let r=0;ra.length)-1)),z(f);for(let a=0;a0))continue;let V=(U/j-v.y0)*f;v.y0+=V,v.y1+=V,w(v)}o===void 0&&_.sort(H),C(_,a)}}function $(e,f,a){for(let h=e.length,r=h-2;r>=0;--r){const _=e[r];for(const v of _){let U=0,j=0;for(const{target:F,value:K}of v.sourceLinks){let W=K*(F.layer-v.layer);U+=R(v,F)*W,j+=W}if(!(j>0))continue;let V=(U/j-v.y0)*f;v.y0+=V,v.y1+=V,w(v)}o===void 0&&_.sort(H),C(_,a)}}function C(e,f){const a=e.length>>1,h=e[a];d(e,h.y0-g,a-1,f),I(e,h.y1+g,a+1,f),d(e,l,e.length-1,f),I(e,n,0,f)}function I(e,f,a,h){for(;a1e-6&&(r.y0+=_,r.y1+=_),f=r.y1+g}}function d(e,f,a,h){for(;a>=0;--a){const r=e[a],_=(r.y1-f)*h;_>1e-6&&(r.y0-=_,r.y1-=_),f=r.y0-g}}function w({sourceLinks:e,targetLinks:f}){if(c===void 0){for(const{source:{sourceLinks:a}}of f)a.sort(at);for(const{target:{targetLinks:a}}of e)a.sort(lt)}}function O(e){if(c===void 0)for(const{sourceLinks:f,targetLinks:a}of e)f.sort(at),a.sort(lt)}function T(e,f){let a=e.y0-(e.sourceLinks.length-1)*g/2;for(const{target:h,width:r}of e.sourceLinks){if(h===f)break;a+=r+g}for(const{source:h,width:r}of f.targetLinks){if(h===e)break;a-=r}return a}function R(e,f){let a=f.y0-(f.targetLinks.length-1)*g/2;for(const{source:h,width:r}of f.targetLinks){if(h===e)break;a+=r+g}for(const{target:h,width:r}of e.sourceLinks){if(h===f)break;a-=r}return a}return x}var tt=Math.PI,et=2*tt,D=1e-6,Dt=et-D;function nt(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function gt(){return new nt}nt.prototype=gt.prototype={constructor:nt,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,i,l){this._+="Q"+ +t+","+ +n+","+(this._x1=+i)+","+(this._y1=+l)},bezierCurveTo:function(t,n,i,l,u,k){this._+="C"+ +t+","+ +n+","+ +i+","+ +l+","+(this._x1=+u)+","+(this._y1=+k)},arcTo:function(t,n,i,l,u){t=+t,n=+n,i=+i,l=+l,u=+u;var k=this._x1,g=this._y1,m=i-t,s=l-n,o=k-t,c=g-n,p=o*o+c*c;if(u<0)throw new Error("negative radius: "+u);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(p>D)if(!(Math.abs(c*m-s*o)>D)||!u)this._+="L"+(this._x1=t)+","+(this._y1=n);else{var b=i-k,y=l-g,x=m*m+s*s,E=b*b+y*y,L=Math.sqrt(x),A=Math.sqrt(p),N=u*Math.tan((tt-Math.acos((x+p-E)/(2*L*A)))/2),P=N/A,z=N/L;Math.abs(P-1)>D&&(this._+="L"+(t+P*o)+","+(n+P*c)),this._+="A"+u+","+u+",0,0,"+ +(c*b>o*y)+","+(this._x1=t+z*m)+","+(this._y1=n+z*s)}},arc:function(t,n,i,l,u,k){t=+t,n=+n,i=+i,k=!!k;var g=i*Math.cos(l),m=i*Math.sin(l),s=t+g,o=n+m,c=1^k,p=k?l-u:u-l;if(i<0)throw new Error("negative radius: "+i);this._x1===null?this._+="M"+s+","+o:(Math.abs(this._x1-s)>D||Math.abs(this._y1-o)>D)&&(this._+="L"+s+","+o),i&&(p<0&&(p=p%et+et),p>Dt?this._+="A"+i+","+i+",0,1,"+c+","+(t-g)+","+(n-m)+"A"+i+","+i+",0,1,"+c+","+(this._x1=s)+","+(this._y1=o):p>D&&(this._+="A"+i+","+i+",0,"+ +(p>=tt)+","+c+","+(this._x1=t+i*Math.cos(u))+","+(this._y1=n+i*Math.sin(u))))},rect:function(t,n,i,l){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +i+"v"+ +l+"h"+-i+"Z"},toString:function(){return this._}};function ht(t){return function(){return t}}function Bt(t){return t[0]}function Rt(t){return t[1]}var Ut=Array.prototype.slice;function Vt(t){return t.source}function Ft(t){return t.target}function Wt(t){var n=Vt,i=Ft,l=Bt,u=Rt,k=null;function g(){var m,s=Ut.call(arguments),o=n.apply(this,s),c=i.apply(this,s);if(k||(k=m=gt()),t(k,+l.apply(this,(s[0]=o,s)),+u.apply(this,s),+l.apply(this,(s[0]=c,s)),+u.apply(this,s)),m)return k=null,m+""||null}return g.source=function(m){return arguments.length?(n=m,g):n},g.target=function(m){return arguments.length?(i=m,g):i},g.x=function(m){return arguments.length?(l=typeof m=="function"?m:ht(+m),g):l},g.y=function(m){return arguments.length?(u=typeof m=="function"?m:ht(+m),g):u},g.context=function(m){return arguments.length?(k=m??null,g):k},g}function Yt(t,n,i,l,u){t.moveTo(n,i),t.bezierCurveTo(n=(n+l)/2,i,n,u,l,u)}function Gt(){return Wt(Yt)}function Ht(t){return[t.source.x1,t.y0]}function Xt(t){return[t.target.x0,t.y1]}function qt(){return Gt().source(Ht).target(Xt)}var it=function(){var t=function(m,s,o,c){for(o=o||{},c=m.length;c--;o[m[c]]=s);return o},n=[1,9],i=[1,10],l=[1,5,10,12],u={trace:function(){},yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:function(s,o,c,p,b,y,x){var E=y.length-1;switch(b){case 7:const L=p.findOrCreateNode(y[E-4].trim().replaceAll('""','"')),A=p.findOrCreateNode(y[E-2].trim().replaceAll('""','"')),N=parseFloat(y[E].trim());p.addLink(L,A,N);break;case 8:case 9:case 11:this.$=y[E];break;case 10:this.$=y[E-1];break}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:n,20:i},{1:[2,6],7:11,10:[1,12]},t(i,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(l,[2,8]),t(l,[2,9]),{19:[1,16]},t(l,[2,11]),{1:[2,1]},{1:[2,5]},t(i,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:n,20:i},{15:18,16:7,17:8,18:n,20:i},{18:[1,19]},t(i,[2,3]),{12:[1,20]},t(l,[2,10]),{15:21,16:7,17:8,18:n,20:i},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:function(s,o){if(o.recoverable)this.trace(s);else{var c=new Error(s);throw c.hash=o,c}},parse:function(s){var o=this,c=[0],p=[],b=[null],y=[],x=this.table,E="",L=0,A=0,N=2,P=1,z=y.slice.call(arguments,1),S=Object.create(this.lexer),M={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(M.yy[$]=this.yy[$]);S.setInput(s,M.yy),M.yy.lexer=S,M.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var C=S.yylloc;y.push(C);var I=S.options&&S.options.ranges;typeof M.yy.parseError=="function"?this.parseError=M.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function d(){var v;return v=p.pop()||S.lex()||P,typeof v!="number"&&(v instanceof Array&&(p=v,v=p.pop()),v=o.symbols_[v]||v),v}for(var w,O,T,R,e={},f,a,h,r;;){if(O=c[c.length-1],this.defaultActions[O]?T=this.defaultActions[O]:((w===null||typeof w>"u")&&(w=d()),T=x[O]&&x[O][w]),typeof T>"u"||!T.length||!T[0]){var _="";r=[];for(f in x[O])this.terminals_[f]&&f>N&&r.push("'"+this.terminals_[f]+"'");S.showPosition?_="Parse error on line "+(L+1)+`:
                          +import{c as rt,g as mt,s as _t,a as kt,b as xt,x as vt,v as bt,z as wt,j as St,u as Lt,h as Y,i as Et}from"./mermaid.core-YBgJFCkH.js";import{o as At}from"./ordinal-wXG5obU4.js";import"./app-0NopiYEV.js";import"./init-Hi12RPRh.js";function Tt(t){for(var n=t.length/6|0,i=new Array(n),l=0;l=l)&&(i=l);else{let l=-1;for(let u of t)(u=n(u,++l,t))!=null&&(i=u)&&(i=u)}return i}function yt(t,n){let i;if(n===void 0)for(const l of t)l!=null&&(i>l||i===void 0&&l>=l)&&(i=l);else{let l=-1;for(let u of t)(u=n(u,++l,t))!=null&&(i>u||i===void 0&&u>=u)&&(i=u)}return i}function Z(t,n){let i=0;if(n===void 0)for(let l of t)(l=+l)&&(i+=l);else{let l=-1;for(let u of t)(u=+n(u,++l,t))&&(i+=u)}return i}function Nt(t){return t.target.depth}function Pt(t){return t.depth}function Ct(t,n){return n-1-t.height}function dt(t,n){return t.sourceLinks.length?t.depth:n-1}function It(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?yt(t.sourceLinks,Nt)-1:0}function G(t){return function(){return t}}function lt(t,n){return H(t.source,n.source)||t.index-n.index}function at(t,n){return H(t.target,n.target)||t.index-n.index}function H(t,n){return t.y0-n.y0}function J(t){return t.value}function Ot(t){return t.index}function $t(t){return t.nodes}function zt(t){return t.links}function ct(t,n){const i=t.get(n);if(!i)throw new Error("missing: "+n);return i}function ut({nodes:t}){for(const n of t){let i=n.y0,l=i;for(const u of n.sourceLinks)u.y0=i+u.width/2,i+=u.width;for(const u of n.targetLinks)u.y1=l+u.width/2,l+=u.width}}function jt(){let t=0,n=0,i=1,l=1,u=24,k=8,g,m=Ot,s=dt,o,c,p=$t,b=zt,y=6;function x(){const e={nodes:p.apply(null,arguments),links:b.apply(null,arguments)};return E(e),L(e),A(e),N(e),S(e),ut(e),e}x.update=function(e){return ut(e),e},x.nodeId=function(e){return arguments.length?(m=typeof e=="function"?e:G(e),x):m},x.nodeAlign=function(e){return arguments.length?(s=typeof e=="function"?e:G(e),x):s},x.nodeSort=function(e){return arguments.length?(o=e,x):o},x.nodeWidth=function(e){return arguments.length?(u=+e,x):u},x.nodePadding=function(e){return arguments.length?(k=g=+e,x):k},x.nodes=function(e){return arguments.length?(p=typeof e=="function"?e:G(e),x):p},x.links=function(e){return arguments.length?(b=typeof e=="function"?e:G(e),x):b},x.linkSort=function(e){return arguments.length?(c=e,x):c},x.size=function(e){return arguments.length?(t=n=0,i=+e[0],l=+e[1],x):[i-t,l-n]},x.extent=function(e){return arguments.length?(t=+e[0][0],i=+e[1][0],n=+e[0][1],l=+e[1][1],x):[[t,n],[i,l]]},x.iterations=function(e){return arguments.length?(y=+e,x):y};function E({nodes:e,links:f}){for(const[h,r]of e.entries())r.index=h,r.sourceLinks=[],r.targetLinks=[];const a=new Map(e.map((h,r)=>[m(h,r,e),h]));for(const[h,r]of f.entries()){r.index=h;let{source:_,target:v}=r;typeof _!="object"&&(_=r.source=ct(a,_)),typeof v!="object"&&(v=r.target=ct(a,v)),_.sourceLinks.push(r),v.targetLinks.push(r)}if(c!=null)for(const{sourceLinks:h,targetLinks:r}of e)h.sort(c),r.sort(c)}function L({nodes:e}){for(const f of e)f.value=f.fixedValue===void 0?Math.max(Z(f.sourceLinks,J),Z(f.targetLinks,J)):f.fixedValue}function A({nodes:e}){const f=e.length;let a=new Set(e),h=new Set,r=0;for(;a.size;){for(const _ of a){_.depth=r;for(const{target:v}of _.sourceLinks)h.add(v)}if(++r>f)throw new Error("circular link");a=h,h=new Set}}function N({nodes:e}){const f=e.length;let a=new Set(e),h=new Set,r=0;for(;a.size;){for(const _ of a){_.height=r;for(const{source:v}of _.targetLinks)h.add(v)}if(++r>f)throw new Error("circular link");a=h,h=new Set}}function I({nodes:e}){const f=ot(e,r=>r.depth)+1,a=(i-t-u)/(f-1),h=new Array(f);for(const r of e){const _=Math.max(0,Math.min(f-1,Math.floor(s.call(null,r,f))));r.layer=_,r.x0=t+_*a,r.x1=r.x0+u,h[_]?h[_].push(r):h[_]=[r]}if(o)for(const r of h)r.sort(o);return h}function z(e){const f=yt(e,a=>(l-n-(a.length-1)*g)/Z(a,J));for(const a of e){let h=n;for(const r of a){r.y0=h,r.y1=h+r.value*f,h=r.y1+g;for(const _ of r.sourceLinks)_.width=_.value*f}h=(l-h+g)/(a.length+1);for(let r=0;ra.length)-1)),z(f);for(let a=0;a0))continue;let V=(U/j-v.y0)*f;v.y0+=V,v.y1+=V,w(v)}o===void 0&&_.sort(H),P(_,a)}}function $(e,f,a){for(let h=e.length,r=h-2;r>=0;--r){const _=e[r];for(const v of _){let U=0,j=0;for(const{target:W,value:K}of v.sourceLinks){let F=K*(W.layer-v.layer);U+=R(v,W)*F,j+=F}if(!(j>0))continue;let V=(U/j-v.y0)*f;v.y0+=V,v.y1+=V,w(v)}o===void 0&&_.sort(H),P(_,a)}}function P(e,f){const a=e.length>>1,h=e[a];d(e,h.y0-g,a-1,f),C(e,h.y1+g,a+1,f),d(e,l,e.length-1,f),C(e,n,0,f)}function C(e,f,a,h){for(;a1e-6&&(r.y0+=_,r.y1+=_),f=r.y1+g}}function d(e,f,a,h){for(;a>=0;--a){const r=e[a],_=(r.y1-f)*h;_>1e-6&&(r.y0-=_,r.y1-=_),f=r.y0-g}}function w({sourceLinks:e,targetLinks:f}){if(c===void 0){for(const{source:{sourceLinks:a}}of f)a.sort(at);for(const{target:{targetLinks:a}}of e)a.sort(lt)}}function O(e){if(c===void 0)for(const{sourceLinks:f,targetLinks:a}of e)f.sort(at),a.sort(lt)}function T(e,f){let a=e.y0-(e.sourceLinks.length-1)*g/2;for(const{target:h,width:r}of e.sourceLinks){if(h===f)break;a+=r+g}for(const{source:h,width:r}of f.targetLinks){if(h===e)break;a-=r}return a}function R(e,f){let a=f.y0-(f.targetLinks.length-1)*g/2;for(const{source:h,width:r}of f.targetLinks){if(h===e)break;a+=r+g}for(const{target:h,width:r}of e.sourceLinks){if(h===f)break;a-=r}return a}return x}var tt=Math.PI,et=2*tt,D=1e-6,Dt=et-D;function nt(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function gt(){return new nt}nt.prototype=gt.prototype={constructor:nt,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,i,l){this._+="Q"+ +t+","+ +n+","+(this._x1=+i)+","+(this._y1=+l)},bezierCurveTo:function(t,n,i,l,u,k){this._+="C"+ +t+","+ +n+","+ +i+","+ +l+","+(this._x1=+u)+","+(this._y1=+k)},arcTo:function(t,n,i,l,u){t=+t,n=+n,i=+i,l=+l,u=+u;var k=this._x1,g=this._y1,m=i-t,s=l-n,o=k-t,c=g-n,p=o*o+c*c;if(u<0)throw new Error("negative radius: "+u);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(p>D)if(!(Math.abs(c*m-s*o)>D)||!u)this._+="L"+(this._x1=t)+","+(this._y1=n);else{var b=i-k,y=l-g,x=m*m+s*s,E=b*b+y*y,L=Math.sqrt(x),A=Math.sqrt(p),N=u*Math.tan((tt-Math.acos((x+p-E)/(2*L*A)))/2),I=N/A,z=N/L;Math.abs(I-1)>D&&(this._+="L"+(t+I*o)+","+(n+I*c)),this._+="A"+u+","+u+",0,0,"+ +(c*b>o*y)+","+(this._x1=t+z*m)+","+(this._y1=n+z*s)}},arc:function(t,n,i,l,u,k){t=+t,n=+n,i=+i,k=!!k;var g=i*Math.cos(l),m=i*Math.sin(l),s=t+g,o=n+m,c=1^k,p=k?l-u:u-l;if(i<0)throw new Error("negative radius: "+i);this._x1===null?this._+="M"+s+","+o:(Math.abs(this._x1-s)>D||Math.abs(this._y1-o)>D)&&(this._+="L"+s+","+o),i&&(p<0&&(p=p%et+et),p>Dt?this._+="A"+i+","+i+",0,1,"+c+","+(t-g)+","+(n-m)+"A"+i+","+i+",0,1,"+c+","+(this._x1=s)+","+(this._y1=o):p>D&&(this._+="A"+i+","+i+",0,"+ +(p>=tt)+","+c+","+(this._x1=t+i*Math.cos(u))+","+(this._y1=n+i*Math.sin(u))))},rect:function(t,n,i,l){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +i+"v"+ +l+"h"+-i+"Z"},toString:function(){return this._}};function ht(t){return function(){return t}}function Bt(t){return t[0]}function Rt(t){return t[1]}var Ut=Array.prototype.slice;function Vt(t){return t.source}function Wt(t){return t.target}function Ft(t){var n=Vt,i=Wt,l=Bt,u=Rt,k=null;function g(){var m,s=Ut.call(arguments),o=n.apply(this,s),c=i.apply(this,s);if(k||(k=m=gt()),t(k,+l.apply(this,(s[0]=o,s)),+u.apply(this,s),+l.apply(this,(s[0]=c,s)),+u.apply(this,s)),m)return k=null,m+""||null}return g.source=function(m){return arguments.length?(n=m,g):n},g.target=function(m){return arguments.length?(i=m,g):i},g.x=function(m){return arguments.length?(l=typeof m=="function"?m:ht(+m),g):l},g.y=function(m){return arguments.length?(u=typeof m=="function"?m:ht(+m),g):u},g.context=function(m){return arguments.length?(k=m??null,g):k},g}function Yt(t,n,i,l,u){t.moveTo(n,i),t.bezierCurveTo(n=(n+l)/2,i,n,u,l,u)}function Gt(){return Ft(Yt)}function Ht(t){return[t.source.x1,t.y0]}function Xt(t){return[t.target.x0,t.y1]}function qt(){return Gt().source(Ht).target(Xt)}var it=function(){var t=function(m,s,o,c){for(o=o||{},c=m.length;c--;o[m[c]]=s);return o},n=[1,9],i=[1,10],l=[1,5,10,12],u={trace:function(){},yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:function(s,o,c,p,b,y,x){var E=y.length-1;switch(b){case 7:const L=p.findOrCreateNode(y[E-4].trim().replaceAll('""','"')),A=p.findOrCreateNode(y[E-2].trim().replaceAll('""','"')),N=parseFloat(y[E].trim());p.addLink(L,A,N);break;case 8:case 9:case 11:this.$=y[E];break;case 10:this.$=y[E-1];break}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:n,20:i},{1:[2,6],7:11,10:[1,12]},t(i,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(l,[2,8]),t(l,[2,9]),{19:[1,16]},t(l,[2,11]),{1:[2,1]},{1:[2,5]},t(i,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:n,20:i},{15:18,16:7,17:8,18:n,20:i},{18:[1,19]},t(i,[2,3]),{12:[1,20]},t(l,[2,10]),{15:21,16:7,17:8,18:n,20:i},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:function(s,o){if(o.recoverable)this.trace(s);else{var c=new Error(s);throw c.hash=o,c}},parse:function(s){var o=this,c=[0],p=[],b=[null],y=[],x=this.table,E="",L=0,A=0,N=2,I=1,z=y.slice.call(arguments,1),S=Object.create(this.lexer),M={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(M.yy[$]=this.yy[$]);S.setInput(s,M.yy),M.yy.lexer=S,M.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var P=S.yylloc;y.push(P);var C=S.options&&S.options.ranges;typeof M.yy.parseError=="function"?this.parseError=M.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function d(){var v;return v=p.pop()||S.lex()||I,typeof v!="number"&&(v instanceof Array&&(p=v,v=p.pop()),v=o.symbols_[v]||v),v}for(var w,O,T,R,e={},f,a,h,r;;){if(O=c[c.length-1],this.defaultActions[O]?T=this.defaultActions[O]:((w===null||typeof w>"u")&&(w=d()),T=x[O]&&x[O][w]),typeof T>"u"||!T.length||!T[0]){var _="";r=[];for(f in x[O])this.terminals_[f]&&f>N&&r.push("'"+this.terminals_[f]+"'");S.showPosition?_="Parse error on line "+(L+1)+`:
                           `+S.showPosition()+`
                          -Expecting `+r.join(", ")+", got '"+(this.terminals_[w]||w)+"'":_="Parse error on line "+(L+1)+": Unexpected "+(w==P?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(_,{text:S.match,token:this.terminals_[w]||w,line:S.yylineno,loc:C,expected:r})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+w);switch(T[0]){case 1:c.push(w),b.push(S.yytext),y.push(S.yylloc),c.push(T[1]),w=null,A=S.yyleng,E=S.yytext,L=S.yylineno,C=S.yylloc;break;case 2:if(a=this.productions_[T[1]][1],e.$=b[b.length-a],e._$={first_line:y[y.length-(a||1)].first_line,last_line:y[y.length-1].last_line,first_column:y[y.length-(a||1)].first_column,last_column:y[y.length-1].last_column},I&&(e._$.range=[y[y.length-(a||1)].range[0],y[y.length-1].range[1]]),R=this.performAction.apply(e,[E,A,L,M.yy,T[1],b,y].concat(z)),typeof R<"u")return R;a&&(c=c.slice(0,-1*a*2),b=b.slice(0,-1*a),y=y.slice(0,-1*a)),c.push(this.productions_[T[1]][0]),b.push(e.$),y.push(e._$),h=x[c[c.length-2]][c[c.length-1]],c.push(h);break;case 3:return!0}}return!0}},k=function(){var m={EOF:1,parseError:function(o,c){if(this.yy.parser)this.yy.parser.parseError(o,c);else throw new Error(o)},setInput:function(s,o){return this.yy=o||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var o=s.match(/(?:\r\n?|\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},unput:function(s){var o=s.length,c=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o),this.offset-=o;var p=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===p.length?this.yylloc.first_column:0)+p[p.length-c.length].length-c[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-o]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
                          +Expecting `+r.join(", ")+", got '"+(this.terminals_[w]||w)+"'":_="Parse error on line "+(L+1)+": Unexpected "+(w==I?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(_,{text:S.match,token:this.terminals_[w]||w,line:S.yylineno,loc:P,expected:r})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+w);switch(T[0]){case 1:c.push(w),b.push(S.yytext),y.push(S.yylloc),c.push(T[1]),w=null,A=S.yyleng,E=S.yytext,L=S.yylineno,P=S.yylloc;break;case 2:if(a=this.productions_[T[1]][1],e.$=b[b.length-a],e._$={first_line:y[y.length-(a||1)].first_line,last_line:y[y.length-1].last_line,first_column:y[y.length-(a||1)].first_column,last_column:y[y.length-1].last_column},C&&(e._$.range=[y[y.length-(a||1)].range[0],y[y.length-1].range[1]]),R=this.performAction.apply(e,[E,A,L,M.yy,T[1],b,y].concat(z)),typeof R<"u")return R;a&&(c=c.slice(0,-1*a*2),b=b.slice(0,-1*a),y=y.slice(0,-1*a)),c.push(this.productions_[T[1]][0]),b.push(e.$),y.push(e._$),h=x[c[c.length-2]][c[c.length-1]],c.push(h);break;case 3:return!0}}return!0}},k=function(){var m={EOF:1,parseError:function(o,c){if(this.yy.parser)this.yy.parser.parseError(o,c);else throw new Error(o)},setInput:function(s,o){return this.yy=o||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var o=s.match(/(?:\r\n?|\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},unput:function(s){var o=s.length,c=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o),this.offset-=o;var p=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===p.length?this.yylloc.first_column:0)+p[p.length-c.length].length-c[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-o]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
                           `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(s){this.unput(this.match.slice(s))},pastInput:function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var s=this.pastInput(),o=new Array(s.length+1).join("-");return s+this.upcomingInput()+`
                           `+o+"^"},test_match:function(s,o){var c,p,b;if(this.options.backtrack_lexer&&(b={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(b.yylloc.range=this.yylloc.range.slice(0))),p=s[0].match(/(?:\r\n?|\n).*/g),p&&(this.yylineno+=p.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:p?p[p.length-1].length-p[p.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+s[0].length},this.yytext+=s[0],this.match+=s[0],this.matches=s,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(s[0].length),this.matched+=s[0],c=this.performAction.call(this,this.yy,this,o,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),c)return c;if(this._backtrack){for(var y in b)this[y]=b[y];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var s,o,c,p;this._more||(this.yytext="",this.match="");for(var b=this._currentRules(),y=0;yo[0].length)){if(o=c,p=y,this.options.backtrack_lexer){if(s=this.test_match(c,b[y]),s!==!1)return s;if(this._backtrack){o=!1;continue}else return!1}else if(!this.options.flex)break}return o?(s=this.test_match(o,b[p]),s!==!1?s:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
                          -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var o=this.next();return o||this.lex()},begin:function(o){this.conditionStack.push(o)},popState:function(){var o=this.conditionStack.length-1;return o>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(o){return o=this.conditionStack.length-1-Math.abs(o||0),o>=0?this.conditionStack[o]:"INITIAL"},pushState:function(o){this.begin(o)},stateStackSize:function(){return this.conditionStack.length},options:{easy_keword_rules:!0},performAction:function(o,c,p,b){switch(p){case 0:return this.pushState("csv"),4;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;case 5:return 20;case 6:return this.popState("escaped_text"),18;case 7:return 19}},rules:[/^(?:sankey-beta\b)/,/^(?:$)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:(\u002C))/,/^(?:(\u0022))/,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/,/^(?:(\u0022)(?!(\u0022)))/,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return m}();u.lexer=k;function g(){this.yy={}}return g.prototype=u,u.Parser=g,new g}();it.parser=it;const X=it;let q=[],Q=[],B={};const Qt=()=>{q=[],Q=[],B={},wt()};class Kt{constructor(n,i,l=0){this.source=n,this.target=i,this.value=l}}const Zt=(t,n,i)=>{q.push(new Kt(t,n,i))};class Jt{constructor(n){this.ID=n}}const te=t=>(t=St.sanitizeText(t,rt()),B[t]||(B[t]=new Jt(t),Q.push(B[t])),B[t]),ee=()=>Q,ne=()=>q,ie=()=>({nodes:Q.map(t=>({id:t.ID})),links:q.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),se={nodesMap:B,getConfig:()=>rt().sankey,getNodes:ee,getLinks:ne,getGraph:ie,addLink:Zt,findOrCreateNode:te,getAccTitle:mt,setAccTitle:_t,getAccDescription:kt,setAccDescription:xt,getDiagramTitle:vt,setDiagramTitle:bt,clear:Qt},pt=class st{static next(n){return new st(n+ ++st.count)}constructor(n){this.id=n,this.href=`#${n}`}toString(){return"url("+this.href+")"}};pt.count=0;let ft=pt;const re={left:Pt,right:Ct,center:It,justify:dt},oe=function(t,n,i,l){const{securityLevel:u,sankey:k}=rt(),g=Lt.sankey;let m;u==="sandbox"&&(m=Y("#i"+n));const s=u==="sandbox"?Y(m.nodes()[0].contentDocument.body):Y("body"),o=u==="sandbox"?s.select(`[id="${n}"]`):Y(`[id="${n}"]`),c=(k==null?void 0:k.width)??g.width,p=(k==null?void 0:k.height)??g.width,b=(k==null?void 0:k.useMaxWidth)??g.useMaxWidth,y=(k==null?void 0:k.nodeAlignment)??g.nodeAlignment,x=(k==null?void 0:k.prefix)??g.prefix,E=(k==null?void 0:k.suffix)??g.suffix,L=(k==null?void 0:k.showValues)??g.showValues;Et(o,p,c,b);const A=l.db.getGraph(),N=re[y],P=10;jt().nodeId(d=>d.id).nodeWidth(P).nodePadding(10+(L?15:0)).nodeAlign(N).extent([[0,0],[c,p]])(A);const S=At(Mt);o.append("g").attr("class","nodes").selectAll(".node").data(A.nodes).join("g").attr("class","node").attr("id",d=>(d.uid=ft.next("node-")).id).attr("transform",function(d){return"translate("+d.x0+","+d.y0+")"}).attr("x",d=>d.x0).attr("y",d=>d.y0).append("rect").attr("height",d=>d.y1-d.y0).attr("width",d=>d.x1-d.x0).attr("fill",d=>S(d.id));const M=({id:d,value:w})=>L?`${d}
                          -${x}${Math.round(w*100)/100}${E}`:d;o.append("g").attr("class","node-labels").attr("font-family","sans-serif").attr("font-size",14).selectAll("text").data(A.nodes).join("text").attr("x",d=>d.x0(d.y1+d.y0)/2).attr("dy",`${L?"0":"0.35"}em`).attr("text-anchor",d=>d.x0(w.uid=ft.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",w=>w.source.x1).attr("x2",w=>w.target.x0);d.append("stop").attr("offset","0%").attr("stop-color",w=>S(w.source.id)),d.append("stop").attr("offset","100%").attr("stop-color",w=>S(w.target.id))}let I;switch(C){case"gradient":I=d=>d.uid;break;case"source":I=d=>S(d.source.id);break;case"target":I=d=>S(d.target.id);break;default:I=C}$.append("path").attr("d",qt()).attr("stroke",I).attr("stroke-width",d=>Math.max(1,d.width))},le={draw:oe},ae=t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,`
                          +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var o=this.next();return o||this.lex()},begin:function(o){this.conditionStack.push(o)},popState:function(){var o=this.conditionStack.length-1;return o>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(o){return o=this.conditionStack.length-1-Math.abs(o||0),o>=0?this.conditionStack[o]:"INITIAL"},pushState:function(o){this.begin(o)},stateStackSize:function(){return this.conditionStack.length},options:{easy_keword_rules:!0},performAction:function(o,c,p,b){switch(p){case 0:return this.pushState("csv"),4;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;case 5:return 20;case 6:return this.popState("escaped_text"),18;case 7:return 19}},rules:[/^(?:sankey-beta\b)/,/^(?:$)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:(\u002C))/,/^(?:(\u0022))/,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/,/^(?:(\u0022)(?!(\u0022)))/,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return m}();u.lexer=k;function g(){this.yy={}}return g.prototype=u,u.Parser=g,new g}();it.parser=it;const X=it;let q=[],Q=[],B={};const Qt=()=>{q=[],Q=[],B={},wt()};class Kt{constructor(n,i,l=0){this.source=n,this.target=i,this.value=l}}const Zt=(t,n,i)=>{q.push(new Kt(t,n,i))};class Jt{constructor(n){this.ID=n}}const te=t=>(t=St.sanitizeText(t,rt()),B[t]||(B[t]=new Jt(t),Q.push(B[t])),B[t]),ee=()=>Q,ne=()=>q,ie=()=>({nodes:Q.map(t=>({id:t.ID})),links:q.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),se={nodesMap:B,getConfig:()=>rt().sankey,getNodes:ee,getLinks:ne,getGraph:ie,addLink:Zt,findOrCreateNode:te,getAccTitle:mt,setAccTitle:_t,getAccDescription:kt,setAccDescription:xt,getDiagramTitle:vt,setDiagramTitle:bt,clear:Qt},pt=class st{static next(n){return new st(n+ ++st.count)}constructor(n){this.id=n,this.href=`#${n}`}toString(){return"url("+this.href+")"}};pt.count=0;let ft=pt;const re={left:Pt,right:Ct,center:It,justify:dt},oe=function(t,n,i,l){const{securityLevel:u,sankey:k}=rt(),g=Lt.sankey;let m;u==="sandbox"&&(m=Y("#i"+n));const s=u==="sandbox"?Y(m.nodes()[0].contentDocument.body):Y("body"),o=u==="sandbox"?s.select(`[id="${n}"]`):Y(`[id="${n}"]`),c=(k==null?void 0:k.width)??g.width,p=(k==null?void 0:k.height)??g.width,b=(k==null?void 0:k.useMaxWidth)??g.useMaxWidth,y=(k==null?void 0:k.nodeAlignment)??g.nodeAlignment,x=(k==null?void 0:k.prefix)??g.prefix,E=(k==null?void 0:k.suffix)??g.suffix,L=(k==null?void 0:k.showValues)??g.showValues;Et(o,p,c,b);const A=l.db.getGraph(),N=re[y];jt().nodeId(d=>d.id).nodeWidth(10).nodePadding(10+(L?15:0)).nodeAlign(N).extent([[0,0],[c,p]])(A);const S=At(Mt);o.append("g").attr("class","nodes").selectAll(".node").data(A.nodes).join("g").attr("class","node").attr("id",d=>(d.uid=ft.next("node-")).id).attr("transform",function(d){return"translate("+d.x0+","+d.y0+")"}).attr("x",d=>d.x0).attr("y",d=>d.y0).append("rect").attr("height",d=>d.y1-d.y0).attr("width",d=>d.x1-d.x0).attr("fill",d=>S(d.id));const M=({id:d,value:w})=>L?`${d}
                          +${x}${Math.round(w*100)/100}${E}`:d;o.append("g").attr("class","node-labels").attr("font-family","sans-serif").attr("font-size",14).selectAll("text").data(A.nodes).join("text").attr("x",d=>d.x0(d.y1+d.y0)/2).attr("dy",`${L?"0":"0.35"}em`).attr("text-anchor",d=>d.x0(w.uid=ft.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",w=>w.source.x1).attr("x2",w=>w.target.x0);d.append("stop").attr("offset","0%").attr("stop-color",w=>S(w.source.id)),d.append("stop").attr("offset","100%").attr("stop-color",w=>S(w.target.id))}let C;switch(P){case"gradient":C=d=>d.uid;break;case"source":C=d=>S(d.source.id);break;case"target":C=d=>S(d.target.id);break;default:C=P}$.append("path").attr("d",qt()).attr("stroke",C).attr("stroke-width",d=>Math.max(1,d.width))},le={draw:oe},ae=t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,`
                           `).trim(),ce=X.parse.bind(X);X.parse=t=>ce(ae(t));const de={parser:X,db:se,renderer:le};export{de as diagram};
                          diff --git a/assets/sequenceDiagram-465a088a-EWh6aK27.js b/assets/sequenceDiagram-465a088a-qM5g7oLQ.js
                          similarity index 99%
                          rename from assets/sequenceDiagram-465a088a-EWh6aK27.js
                          rename to assets/sequenceDiagram-465a088a-qM5g7oLQ.js
                          index b394c45..7c1604f 100644
                          --- a/assets/sequenceDiagram-465a088a-EWh6aK27.js
                          +++ b/assets/sequenceDiagram-465a088a-qM5g7oLQ.js
                          @@ -1,4 +1,4 @@
                          -import{g as ke,x as Le,v as Ie,c as dt,s as ae,b as Ae,a as Ne,z as Se,l as U,d as Mt,j as w,e as Me,h as St,i as Re,y as O,m as re,aN as oe,b0 as De,b1 as Ve}from"./mermaid.core-ygY5oRaR.js";import{d as Ce,a as Oe,g as Rt,b as Be,c as Ye,e as Gt}from"./svgDrawCommon-ad5ef572-nvro2Kxm.js";import"./app-RP31lnfq.js";var qt=function(){var t=function(ht,m,_,k){for(_=_||{},k=ht.length;k--;_[ht[k]]=m);return _},e=[1,2],o=[1,3],i=[1,4],s=[2,4],n=[1,9],c=[1,11],h=[1,13],p=[1,14],a=[1,16],x=[1,17],E=[1,18],u=[1,24],g=[1,25],b=[1,26],P=[1,27],I=[1,28],R=[1,29],N=[1,30],F=[1,31],S=[1,32],tt=[1,33],W=[1,34],K=[1,35],Z=[1,36],q=[1,37],Y=[1,38],C=[1,39],G=[1,41],z=[1,42],X=[1,43],Q=[1,44],j=[1,45],y=[1,46],v=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],L=[4,5,16,50,52,53],pt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],et=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],A=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],$t=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],lt=[68,69,70],nt=[1,120],Ct={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,DOTTED_ARROW:74,SOLID_CROSS:75,DOTTED_CROSS:76,SOLID_POINT:77,DOTTED_POINT:78,TXT:79,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"DOTTED_ARROW",75:"SOLID_CROSS",76:"DOTTED_CROSS",77:"SOLID_POINT",78:"DOTTED_POINT",79:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:function(m,_,k,T,M,l,vt){var d=l.length-1;switch(M){case 3:return T.apply(l[d]),l[d];case 4:case 9:this.$=[];break;case 5:case 10:l[d-1].push(l[d]),this.$=l[d-1];break;case 6:case 7:case 11:case 12:this.$=l[d];break;case 8:case 13:this.$=[];break;case 15:l[d].type="createParticipant",this.$=l[d];break;case 16:l[d-1].unshift({type:"boxStart",boxData:T.parseBoxData(l[d-2])}),l[d-1].push({type:"boxEnd",boxText:l[d-2]}),this.$=l[d-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(l[d-2]),sequenceIndexStep:Number(l[d-1]),sequenceVisible:!0,signalType:T.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(l[d-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:T.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:T.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:T.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:T.LINETYPE.ACTIVE_START,actor:l[d-1]};break;case 23:this.$={type:"activeEnd",signalType:T.LINETYPE.ACTIVE_END,actor:l[d-1]};break;case 29:T.setDiagramTitle(l[d].substring(6)),this.$=l[d].substring(6);break;case 30:T.setDiagramTitle(l[d].substring(7)),this.$=l[d].substring(7);break;case 31:this.$=l[d].trim(),T.setAccTitle(this.$);break;case 32:case 33:this.$=l[d].trim(),T.setAccDescription(this.$);break;case 34:l[d-1].unshift({type:"loopStart",loopText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.LOOP_START}),l[d-1].push({type:"loopEnd",loopText:l[d-2],signalType:T.LINETYPE.LOOP_END}),this.$=l[d-1];break;case 35:l[d-1].unshift({type:"rectStart",color:T.parseMessage(l[d-2]),signalType:T.LINETYPE.RECT_START}),l[d-1].push({type:"rectEnd",color:T.parseMessage(l[d-2]),signalType:T.LINETYPE.RECT_END}),this.$=l[d-1];break;case 36:l[d-1].unshift({type:"optStart",optText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.OPT_START}),l[d-1].push({type:"optEnd",optText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.OPT_END}),this.$=l[d-1];break;case 37:l[d-1].unshift({type:"altStart",altText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.ALT_START}),l[d-1].push({type:"altEnd",signalType:T.LINETYPE.ALT_END}),this.$=l[d-1];break;case 38:l[d-1].unshift({type:"parStart",parText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.PAR_START}),l[d-1].push({type:"parEnd",signalType:T.LINETYPE.PAR_END}),this.$=l[d-1];break;case 39:l[d-1].unshift({type:"parStart",parText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.PAR_OVER_START}),l[d-1].push({type:"parEnd",signalType:T.LINETYPE.PAR_END}),this.$=l[d-1];break;case 40:l[d-1].unshift({type:"criticalStart",criticalText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.CRITICAL_START}),l[d-1].push({type:"criticalEnd",signalType:T.LINETYPE.CRITICAL_END}),this.$=l[d-1];break;case 41:l[d-1].unshift({type:"breakStart",breakText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.BREAK_START}),l[d-1].push({type:"breakEnd",optText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.BREAK_END}),this.$=l[d-1];break;case 43:this.$=l[d-3].concat([{type:"option",optionText:T.parseMessage(l[d-1]),signalType:T.LINETYPE.CRITICAL_OPTION},l[d]]);break;case 45:this.$=l[d-3].concat([{type:"and",parText:T.parseMessage(l[d-1]),signalType:T.LINETYPE.PAR_AND},l[d]]);break;case 47:this.$=l[d-3].concat([{type:"else",altText:T.parseMessage(l[d-1]),signalType:T.LINETYPE.ALT_ELSE},l[d]]);break;case 48:l[d-3].draw="participant",l[d-3].type="addParticipant",l[d-3].description=T.parseMessage(l[d-1]),this.$=l[d-3];break;case 49:l[d-1].draw="participant",l[d-1].type="addParticipant",this.$=l[d-1];break;case 50:l[d-3].draw="actor",l[d-3].type="addParticipant",l[d-3].description=T.parseMessage(l[d-1]),this.$=l[d-3];break;case 51:l[d-1].draw="actor",l[d-1].type="addParticipant",this.$=l[d-1];break;case 52:l[d-1].type="destroyParticipant",this.$=l[d-1];break;case 53:this.$=[l[d-1],{type:"addNote",placement:l[d-2],actor:l[d-1].actor,text:l[d]}];break;case 54:l[d-2]=[].concat(l[d-1],l[d-1]).slice(0,2),l[d-2][0]=l[d-2][0].actor,l[d-2][1]=l[d-2][1].actor,this.$=[l[d-1],{type:"addNote",placement:T.PLACEMENT.OVER,actor:l[d-2].slice(0,2),text:l[d]}];break;case 55:this.$=[l[d-1],{type:"addLinks",actor:l[d-1].actor,text:l[d]}];break;case 56:this.$=[l[d-1],{type:"addALink",actor:l[d-1].actor,text:l[d]}];break;case 57:this.$=[l[d-1],{type:"addProperties",actor:l[d-1].actor,text:l[d]}];break;case 58:this.$=[l[d-1],{type:"addDetails",actor:l[d-1].actor,text:l[d]}];break;case 61:this.$=[l[d-2],l[d]];break;case 62:this.$=l[d];break;case 63:this.$=T.PLACEMENT.LEFTOF;break;case 64:this.$=T.PLACEMENT.RIGHTOF;break;case 65:this.$=[l[d-4],l[d-1],{type:"addMessage",from:l[d-4].actor,to:l[d-1].actor,signalType:l[d-3],msg:l[d],activate:!0},{type:"activeStart",signalType:T.LINETYPE.ACTIVE_START,actor:l[d-1]}];break;case 66:this.$=[l[d-4],l[d-1],{type:"addMessage",from:l[d-4].actor,to:l[d-1].actor,signalType:l[d-3],msg:l[d]},{type:"activeEnd",signalType:T.LINETYPE.ACTIVE_END,actor:l[d-4]}];break;case 67:this.$=[l[d-3],l[d-1],{type:"addMessage",from:l[d-3].actor,to:l[d-1].actor,signalType:l[d-2],msg:l[d]}];break;case 68:this.$={type:"addParticipant",actor:l[d]};break;case 69:this.$=T.LINETYPE.SOLID_OPEN;break;case 70:this.$=T.LINETYPE.DOTTED_OPEN;break;case 71:this.$=T.LINETYPE.SOLID;break;case 72:this.$=T.LINETYPE.DOTTED;break;case 73:this.$=T.LINETYPE.SOLID_CROSS;break;case 74:this.$=T.LINETYPE.DOTTED_CROSS;break;case 75:this.$=T.LINETYPE.SOLID_POINT;break;case 76:this.$=T.LINETYPE.DOTTED_POINT;break;case 77:this.$=T.parseMessage(l[d].trim().substring(1));break}},table:[{3:1,4:e,5:o,6:i},{1:[3]},{3:5,4:e,5:o,6:i},{3:6,4:e,5:o,6:i},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],s,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:n,5:c,8:8,9:10,12:12,13:h,14:p,17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},t(v,[2,5]),{9:47,12:12,13:h,14:p,17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},t(v,[2,7]),t(v,[2,8]),t(v,[2,14]),{12:48,50:q,52:Y,53:C},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:y},{22:55,70:y},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(v,[2,29]),t(v,[2,30]),{32:[1,61]},{34:[1,62]},t(v,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:y},{22:72,70:y},{22:73,70:y},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82]},{55:83,57:[1,84],65:[1,85],66:[1,86]},{22:87,70:y},{22:88,70:y},{22:89,70:y},{22:90,70:y},t([5,51,64,71,72,73,74,75,76,77,78,79],[2,68]),t(v,[2,6]),t(v,[2,15]),t(L,[2,9],{10:91}),t(v,[2,17]),{5:[1,93],19:[1,92]},{5:[1,94]},t(v,[2,21]),{5:[1,95]},{5:[1,96]},t(v,[2,24]),t(v,[2,25]),t(v,[2,26]),t(v,[2,27]),t(v,[2,28]),t(v,[2,31]),t(v,[2,32]),t(pt,s,{7:97}),t(pt,s,{7:98}),t(pt,s,{7:99}),t(et,s,{40:100,7:101}),t(A,s,{42:102,7:103}),t(A,s,{7:103,42:104}),t($t,s,{45:105,7:106}),t(pt,s,{7:107}),{5:[1,109],51:[1,108]},{5:[1,111],51:[1,110]},{5:[1,112]},{22:115,68:[1,113],69:[1,114],70:y},t(lt,[2,69]),t(lt,[2,70]),t(lt,[2,71]),t(lt,[2,72]),t(lt,[2,73]),t(lt,[2,74]),t(lt,[2,75]),t(lt,[2,76]),{22:116,70:y},{22:118,58:117,70:y},{70:[2,63]},{70:[2,64]},{56:119,79:nt},{56:121,79:nt},{56:122,79:nt},{56:123,79:nt},{4:[1,126],5:[1,128],11:125,12:127,16:[1,124],50:q,52:Y,53:C},{5:[1,129]},t(v,[2,19]),t(v,[2,20]),t(v,[2,22]),t(v,[2,23]),{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,130],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,131],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,132],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{16:[1,133]},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,46],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,49:[1,134],50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{16:[1,135]},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,44],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,48:[1,136],50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{16:[1,137]},{16:[1,138]},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,42],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,47:[1,139],50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,140],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{15:[1,141]},t(v,[2,49]),{15:[1,142]},t(v,[2,51]),t(v,[2,52]),{22:143,70:y},{22:144,70:y},{56:145,79:nt},{56:146,79:nt},{56:147,79:nt},{64:[1,148],79:[2,62]},{5:[2,55]},{5:[2,77]},{5:[2,56]},{5:[2,57]},{5:[2,58]},t(v,[2,16]),t(L,[2,10]),{12:149,50:q,52:Y,53:C},t(L,[2,12]),t(L,[2,13]),t(v,[2,18]),t(v,[2,34]),t(v,[2,35]),t(v,[2,36]),t(v,[2,37]),{15:[1,150]},t(v,[2,38]),{15:[1,151]},t(v,[2,39]),t(v,[2,40]),{15:[1,152]},t(v,[2,41]),{5:[1,153]},{5:[1,154]},{56:155,79:nt},{56:156,79:nt},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:157,70:y},t(L,[2,11]),t(et,s,{7:101,40:158}),t(A,s,{7:103,42:159}),t($t,s,{7:106,45:160}),t(v,[2,48]),t(v,[2,50]),{5:[2,65]},{5:[2,66]},{79:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],85:[2,63],86:[2,64],119:[2,55],120:[2,77],121:[2,56],122:[2,57],123:[2,58],145:[2,67],146:[2,53],147:[2,54],155:[2,65],156:[2,66],157:[2,61],158:[2,47],159:[2,45],160:[2,43]},parseError:function(m,_){if(_.recoverable)this.trace(m);else{var k=new Error(m);throw k.hash=_,k}},parse:function(m){var _=this,k=[0],T=[],M=[null],l=[],vt=this.table,d="",It=0,te=0,we=2,ee=1,ve=l.slice.call(arguments,1),B=Object.create(this.lexer),ut={yy:{}};for(var Bt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Bt)&&(ut.yy[Bt]=this.yy[Bt]);B.setInput(m,ut.yy),ut.yy.lexer=B,ut.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var Yt=B.yylloc;l.push(Yt);var _e=B.options&&B.options.ranges;typeof ut.yy.parseError=="function"?this.parseError=ut.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pe(){var rt;return rt=T.pop()||B.lex()||ee,typeof rt!="number"&&(rt instanceof Array&&(T=rt,rt=T.pop()),rt=_.symbols_[rt]||rt),rt}for(var H,ft,$,Ft,yt={},At,at,ie,Nt;;){if(ft=k[k.length-1],this.defaultActions[ft]?$=this.defaultActions[ft]:((H===null||typeof H>"u")&&(H=Pe()),$=vt[ft]&&vt[ft][H]),typeof $>"u"||!$.length||!$[0]){var Wt="";Nt=[];for(At in vt[ft])this.terminals_[At]&&At>we&&Nt.push("'"+this.terminals_[At]+"'");B.showPosition?Wt="Parse error on line "+(It+1)+`:
                          +import{g as ke,x as Le,v as Ie,c as dt,s as ae,b as Ae,a as Ne,z as Se,l as U,d as Mt,j as w,e as Me,h as St,i as Re,y as O,m as re,aN as oe,b0 as De,b1 as Ve}from"./mermaid.core-YBgJFCkH.js";import{d as Ce,a as Oe,g as Rt,b as Be,c as Ye,e as Gt}from"./svgDrawCommon-ad5ef572-Rj64dPCl.js";import"./app-0NopiYEV.js";var qt=function(){var t=function(ht,m,_,k){for(_=_||{},k=ht.length;k--;_[ht[k]]=m);return _},e=[1,2],o=[1,3],i=[1,4],s=[2,4],n=[1,9],c=[1,11],h=[1,13],p=[1,14],a=[1,16],x=[1,17],E=[1,18],u=[1,24],g=[1,25],b=[1,26],P=[1,27],I=[1,28],R=[1,29],N=[1,30],F=[1,31],S=[1,32],tt=[1,33],W=[1,34],K=[1,35],Z=[1,36],q=[1,37],Y=[1,38],C=[1,39],G=[1,41],z=[1,42],X=[1,43],Q=[1,44],j=[1,45],y=[1,46],v=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],L=[4,5,16,50,52,53],pt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],et=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],A=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],$t=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],lt=[68,69,70],nt=[1,120],Ct={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,DOTTED_ARROW:74,SOLID_CROSS:75,DOTTED_CROSS:76,SOLID_POINT:77,DOTTED_POINT:78,TXT:79,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"DOTTED_ARROW",75:"SOLID_CROSS",76:"DOTTED_CROSS",77:"SOLID_POINT",78:"DOTTED_POINT",79:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:function(m,_,k,T,M,l,vt){var d=l.length-1;switch(M){case 3:return T.apply(l[d]),l[d];case 4:case 9:this.$=[];break;case 5:case 10:l[d-1].push(l[d]),this.$=l[d-1];break;case 6:case 7:case 11:case 12:this.$=l[d];break;case 8:case 13:this.$=[];break;case 15:l[d].type="createParticipant",this.$=l[d];break;case 16:l[d-1].unshift({type:"boxStart",boxData:T.parseBoxData(l[d-2])}),l[d-1].push({type:"boxEnd",boxText:l[d-2]}),this.$=l[d-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(l[d-2]),sequenceIndexStep:Number(l[d-1]),sequenceVisible:!0,signalType:T.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(l[d-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:T.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:T.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:T.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:T.LINETYPE.ACTIVE_START,actor:l[d-1]};break;case 23:this.$={type:"activeEnd",signalType:T.LINETYPE.ACTIVE_END,actor:l[d-1]};break;case 29:T.setDiagramTitle(l[d].substring(6)),this.$=l[d].substring(6);break;case 30:T.setDiagramTitle(l[d].substring(7)),this.$=l[d].substring(7);break;case 31:this.$=l[d].trim(),T.setAccTitle(this.$);break;case 32:case 33:this.$=l[d].trim(),T.setAccDescription(this.$);break;case 34:l[d-1].unshift({type:"loopStart",loopText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.LOOP_START}),l[d-1].push({type:"loopEnd",loopText:l[d-2],signalType:T.LINETYPE.LOOP_END}),this.$=l[d-1];break;case 35:l[d-1].unshift({type:"rectStart",color:T.parseMessage(l[d-2]),signalType:T.LINETYPE.RECT_START}),l[d-1].push({type:"rectEnd",color:T.parseMessage(l[d-2]),signalType:T.LINETYPE.RECT_END}),this.$=l[d-1];break;case 36:l[d-1].unshift({type:"optStart",optText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.OPT_START}),l[d-1].push({type:"optEnd",optText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.OPT_END}),this.$=l[d-1];break;case 37:l[d-1].unshift({type:"altStart",altText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.ALT_START}),l[d-1].push({type:"altEnd",signalType:T.LINETYPE.ALT_END}),this.$=l[d-1];break;case 38:l[d-1].unshift({type:"parStart",parText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.PAR_START}),l[d-1].push({type:"parEnd",signalType:T.LINETYPE.PAR_END}),this.$=l[d-1];break;case 39:l[d-1].unshift({type:"parStart",parText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.PAR_OVER_START}),l[d-1].push({type:"parEnd",signalType:T.LINETYPE.PAR_END}),this.$=l[d-1];break;case 40:l[d-1].unshift({type:"criticalStart",criticalText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.CRITICAL_START}),l[d-1].push({type:"criticalEnd",signalType:T.LINETYPE.CRITICAL_END}),this.$=l[d-1];break;case 41:l[d-1].unshift({type:"breakStart",breakText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.BREAK_START}),l[d-1].push({type:"breakEnd",optText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.BREAK_END}),this.$=l[d-1];break;case 43:this.$=l[d-3].concat([{type:"option",optionText:T.parseMessage(l[d-1]),signalType:T.LINETYPE.CRITICAL_OPTION},l[d]]);break;case 45:this.$=l[d-3].concat([{type:"and",parText:T.parseMessage(l[d-1]),signalType:T.LINETYPE.PAR_AND},l[d]]);break;case 47:this.$=l[d-3].concat([{type:"else",altText:T.parseMessage(l[d-1]),signalType:T.LINETYPE.ALT_ELSE},l[d]]);break;case 48:l[d-3].draw="participant",l[d-3].type="addParticipant",l[d-3].description=T.parseMessage(l[d-1]),this.$=l[d-3];break;case 49:l[d-1].draw="participant",l[d-1].type="addParticipant",this.$=l[d-1];break;case 50:l[d-3].draw="actor",l[d-3].type="addParticipant",l[d-3].description=T.parseMessage(l[d-1]),this.$=l[d-3];break;case 51:l[d-1].draw="actor",l[d-1].type="addParticipant",this.$=l[d-1];break;case 52:l[d-1].type="destroyParticipant",this.$=l[d-1];break;case 53:this.$=[l[d-1],{type:"addNote",placement:l[d-2],actor:l[d-1].actor,text:l[d]}];break;case 54:l[d-2]=[].concat(l[d-1],l[d-1]).slice(0,2),l[d-2][0]=l[d-2][0].actor,l[d-2][1]=l[d-2][1].actor,this.$=[l[d-1],{type:"addNote",placement:T.PLACEMENT.OVER,actor:l[d-2].slice(0,2),text:l[d]}];break;case 55:this.$=[l[d-1],{type:"addLinks",actor:l[d-1].actor,text:l[d]}];break;case 56:this.$=[l[d-1],{type:"addALink",actor:l[d-1].actor,text:l[d]}];break;case 57:this.$=[l[d-1],{type:"addProperties",actor:l[d-1].actor,text:l[d]}];break;case 58:this.$=[l[d-1],{type:"addDetails",actor:l[d-1].actor,text:l[d]}];break;case 61:this.$=[l[d-2],l[d]];break;case 62:this.$=l[d];break;case 63:this.$=T.PLACEMENT.LEFTOF;break;case 64:this.$=T.PLACEMENT.RIGHTOF;break;case 65:this.$=[l[d-4],l[d-1],{type:"addMessage",from:l[d-4].actor,to:l[d-1].actor,signalType:l[d-3],msg:l[d],activate:!0},{type:"activeStart",signalType:T.LINETYPE.ACTIVE_START,actor:l[d-1]}];break;case 66:this.$=[l[d-4],l[d-1],{type:"addMessage",from:l[d-4].actor,to:l[d-1].actor,signalType:l[d-3],msg:l[d]},{type:"activeEnd",signalType:T.LINETYPE.ACTIVE_END,actor:l[d-4]}];break;case 67:this.$=[l[d-3],l[d-1],{type:"addMessage",from:l[d-3].actor,to:l[d-1].actor,signalType:l[d-2],msg:l[d]}];break;case 68:this.$={type:"addParticipant",actor:l[d]};break;case 69:this.$=T.LINETYPE.SOLID_OPEN;break;case 70:this.$=T.LINETYPE.DOTTED_OPEN;break;case 71:this.$=T.LINETYPE.SOLID;break;case 72:this.$=T.LINETYPE.DOTTED;break;case 73:this.$=T.LINETYPE.SOLID_CROSS;break;case 74:this.$=T.LINETYPE.DOTTED_CROSS;break;case 75:this.$=T.LINETYPE.SOLID_POINT;break;case 76:this.$=T.LINETYPE.DOTTED_POINT;break;case 77:this.$=T.parseMessage(l[d].trim().substring(1));break}},table:[{3:1,4:e,5:o,6:i},{1:[3]},{3:5,4:e,5:o,6:i},{3:6,4:e,5:o,6:i},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],s,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:n,5:c,8:8,9:10,12:12,13:h,14:p,17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},t(v,[2,5]),{9:47,12:12,13:h,14:p,17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},t(v,[2,7]),t(v,[2,8]),t(v,[2,14]),{12:48,50:q,52:Y,53:C},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:y},{22:55,70:y},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(v,[2,29]),t(v,[2,30]),{32:[1,61]},{34:[1,62]},t(v,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:y},{22:72,70:y},{22:73,70:y},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82]},{55:83,57:[1,84],65:[1,85],66:[1,86]},{22:87,70:y},{22:88,70:y},{22:89,70:y},{22:90,70:y},t([5,51,64,71,72,73,74,75,76,77,78,79],[2,68]),t(v,[2,6]),t(v,[2,15]),t(L,[2,9],{10:91}),t(v,[2,17]),{5:[1,93],19:[1,92]},{5:[1,94]},t(v,[2,21]),{5:[1,95]},{5:[1,96]},t(v,[2,24]),t(v,[2,25]),t(v,[2,26]),t(v,[2,27]),t(v,[2,28]),t(v,[2,31]),t(v,[2,32]),t(pt,s,{7:97}),t(pt,s,{7:98}),t(pt,s,{7:99}),t(et,s,{40:100,7:101}),t(A,s,{42:102,7:103}),t(A,s,{7:103,42:104}),t($t,s,{45:105,7:106}),t(pt,s,{7:107}),{5:[1,109],51:[1,108]},{5:[1,111],51:[1,110]},{5:[1,112]},{22:115,68:[1,113],69:[1,114],70:y},t(lt,[2,69]),t(lt,[2,70]),t(lt,[2,71]),t(lt,[2,72]),t(lt,[2,73]),t(lt,[2,74]),t(lt,[2,75]),t(lt,[2,76]),{22:116,70:y},{22:118,58:117,70:y},{70:[2,63]},{70:[2,64]},{56:119,79:nt},{56:121,79:nt},{56:122,79:nt},{56:123,79:nt},{4:[1,126],5:[1,128],11:125,12:127,16:[1,124],50:q,52:Y,53:C},{5:[1,129]},t(v,[2,19]),t(v,[2,20]),t(v,[2,22]),t(v,[2,23]),{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,130],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,131],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,132],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{16:[1,133]},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,46],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,49:[1,134],50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{16:[1,135]},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,44],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,48:[1,136],50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{16:[1,137]},{16:[1,138]},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,42],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,47:[1,139],50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,140],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{15:[1,141]},t(v,[2,49]),{15:[1,142]},t(v,[2,51]),t(v,[2,52]),{22:143,70:y},{22:144,70:y},{56:145,79:nt},{56:146,79:nt},{56:147,79:nt},{64:[1,148],79:[2,62]},{5:[2,55]},{5:[2,77]},{5:[2,56]},{5:[2,57]},{5:[2,58]},t(v,[2,16]),t(L,[2,10]),{12:149,50:q,52:Y,53:C},t(L,[2,12]),t(L,[2,13]),t(v,[2,18]),t(v,[2,34]),t(v,[2,35]),t(v,[2,36]),t(v,[2,37]),{15:[1,150]},t(v,[2,38]),{15:[1,151]},t(v,[2,39]),t(v,[2,40]),{15:[1,152]},t(v,[2,41]),{5:[1,153]},{5:[1,154]},{56:155,79:nt},{56:156,79:nt},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:157,70:y},t(L,[2,11]),t(et,s,{7:101,40:158}),t(A,s,{7:103,42:159}),t($t,s,{7:106,45:160}),t(v,[2,48]),t(v,[2,50]),{5:[2,65]},{5:[2,66]},{79:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],85:[2,63],86:[2,64],119:[2,55],120:[2,77],121:[2,56],122:[2,57],123:[2,58],145:[2,67],146:[2,53],147:[2,54],155:[2,65],156:[2,66],157:[2,61],158:[2,47],159:[2,45],160:[2,43]},parseError:function(m,_){if(_.recoverable)this.trace(m);else{var k=new Error(m);throw k.hash=_,k}},parse:function(m){var _=this,k=[0],T=[],M=[null],l=[],vt=this.table,d="",It=0,te=0,we=2,ee=1,ve=l.slice.call(arguments,1),B=Object.create(this.lexer),ut={yy:{}};for(var Bt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Bt)&&(ut.yy[Bt]=this.yy[Bt]);B.setInput(m,ut.yy),ut.yy.lexer=B,ut.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var Yt=B.yylloc;l.push(Yt);var _e=B.options&&B.options.ranges;typeof ut.yy.parseError=="function"?this.parseError=ut.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pe(){var rt;return rt=T.pop()||B.lex()||ee,typeof rt!="number"&&(rt instanceof Array&&(T=rt,rt=T.pop()),rt=_.symbols_[rt]||rt),rt}for(var H,ft,$,Ft,yt={},At,at,ie,Nt;;){if(ft=k[k.length-1],this.defaultActions[ft]?$=this.defaultActions[ft]:((H===null||typeof H>"u")&&(H=Pe()),$=vt[ft]&&vt[ft][H]),typeof $>"u"||!$.length||!$[0]){var Wt="";Nt=[];for(At in vt[ft])this.terminals_[At]&&At>we&&Nt.push("'"+this.terminals_[At]+"'");B.showPosition?Wt="Parse error on line "+(It+1)+`:
                           `+B.showPosition()+`
                           Expecting `+Nt.join(", ")+", got '"+(this.terminals_[H]||H)+"'":Wt="Parse error on line "+(It+1)+": Unexpected "+(H==ee?"end of input":"'"+(this.terminals_[H]||H)+"'"),this.parseError(Wt,{text:B.match,token:this.terminals_[H]||H,line:B.yylineno,loc:Yt,expected:Nt})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ft+", token: "+H);switch($[0]){case 1:k.push(H),M.push(B.yytext),l.push(B.yylloc),k.push($[1]),H=null,te=B.yyleng,d=B.yytext,It=B.yylineno,Yt=B.yylloc;break;case 2:if(at=this.productions_[$[1]][1],yt.$=M[M.length-at],yt._$={first_line:l[l.length-(at||1)].first_line,last_line:l[l.length-1].last_line,first_column:l[l.length-(at||1)].first_column,last_column:l[l.length-1].last_column},_e&&(yt._$.range=[l[l.length-(at||1)].range[0],l[l.length-1].range[1]]),Ft=this.performAction.apply(yt,[d,te,It,ut.yy,$[1],M,l].concat(ve)),typeof Ft<"u")return Ft;at&&(k=k.slice(0,-1*at*2),M=M.slice(0,-1*at),l=l.slice(0,-1*at)),k.push(this.productions_[$[1]][0]),M.push(yt.$),l.push(yt._$),ie=vt[k[k.length-2]][k[k.length-1]],k.push(ie);break;case 3:return!0}}return!0}},me=function(){var ht={EOF:1,parseError:function(_,k){if(this.yy.parser)this.yy.parser.parseError(_,k);else throw new Error(_)},setInput:function(m,_){return this.yy=_||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var _=m.match(/(?:\r\n?|\n).*/g);return _?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},unput:function(m){var _=m.length,k=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-_),this.offset-=_;var T=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var M=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===T.length?this.yylloc.first_column:0)+T[T.length-k.length].length-k[0].length:this.yylloc.first_column-_},this.options.ranges&&(this.yylloc.range=[M[0],M[0]+this.yyleng-_]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
                           `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(m){this.unput(this.match.slice(m))},pastInput:function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var m=this.pastInput(),_=new Array(m.length+1).join("-");return m+this.upcomingInput()+`
                          diff --git a/assets/sequence_diagram.html-pYWqjJ8u.js b/assets/sequence_diagram.html-ZomyBXSL.js
                          similarity index 97%
                          rename from assets/sequence_diagram.html-pYWqjJ8u.js
                          rename to assets/sequence_diagram.html-ZomyBXSL.js
                          index 0e35665..81c5155 100644
                          --- a/assets/sequence_diagram.html-pYWqjJ8u.js
                          +++ b/assets/sequence_diagram.html-ZomyBXSL.js
                          @@ -1 +1 @@
                          -import{_ as c}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as r,c as d,b as o}from"./app-RP31lnfq.js";const m={};function a(x,n){const e=i("Mermaid");return r(),d("div",null,[o(e,{id:"mermaid-0",code:"eJyFUstuwjAQvPMVeywSgTuHSi3lUPWFSntoL8jES3BxbHft8Pj7bmICiASaiyN7d3Z2ZpIk6QQVNA7hzSQPmAsjYVJorUwG00AocpiQTdH7Tlnr8bdAk+KDEhmJvAP8OUFBpcoJE2CixQ6pcf39/IJSiScVGk8jkSOJxvWXLQjuC68Mj4Yp0pphq6o4ApLb2xPYYX1NJUEfPFDwbkAhd4NlCC5Z6PVg48sDHFfORbqq0I4QDcTREtMVqAWEJYKPWuBWMXhbZxvhYS2htOjB2BD7exBIZRmz3eAcltau4Cbiz7hmtrCFkV3ANZooVxt0k63QGt7H049FoeFu8gg3Qso4ng3c7roQLG/BEoPb+3vcq22haEy5QnsPcy6cs/x2kLpb4cRGSM4Z7rWokXyRlrFiur0akTBjeZBQNgiVYNHiA1ClU+9g5wngeU7qxrH5sbt6i7qv3+9fqi/PCloZcGQzYvgr5Z+eL1JtPZtdT0BqaTjPbTUDjWzZ+2KyXi2sFW6QPAtBJ75cTZfBGf9JpP/z1QyYicudZmBv5rX8jC71/AFzcIE+"}),o(e,{id:"mermaid-1",code:"eJyFU01T4zAMvfdX6EhnSHvvgcPCnvarMywHuHSMoySmiW1kJaX/Hjkm0GkM5GJHkd6Tnl6Koliw4RY38M8WN9gpW8K2D42xNdwyoepgS05jCIuYG/C5R6vxxqiaVLcAebwiNtp4ZRm2rToizcIPv/9gadQvw7NPiSTSXasOSc0S7l1P8KMPxkoTcIs0CMGYlciguLo6IdhMYYqtBg5AHPyauPPrhtkXVTusDyEe4CXzUen9iPYBMUO8blDvwVTADUJIquCLEfBcZa7hzSRm6TCAdZzqL4HJ1LV0e8BHaJzbw0XC30nOrnK9LZeAA9okXA565DxXMfKJhm/NxvjFYBQcY70nMyhGOR077VpgB9pZpniVAfWIsBwJz3Fn0sxoQu+9k9C76svLSTLCWmZGwjInW1pbWl9cCoReR99VfXu+7Sn1p31yx8ga256WuVqtPst/hzY2Tl+TwH+RfhckoFsXZGUTA1Km4Nx9IwfaMj9o3h9/HQwGD0gBKkcnTvvSIxZ3ciuRvnfJzNTKpuFOXe3Tr59re26x/0jyHq2UQXgFLzR4/Q=="}),o(e,{id:"mermaid-2",code:"eJxtkT9rxDAMxfd8Co0tXMh+w0H/bG2h0Kldii6nxOKc2JXkHO2nr+MUepB4Mch6v6cn13VdGZunPbx6/D5ie4a7ZC4I/6BxGKu5Q+kr0djSI2MvOFSQT0QxbjniaEVKsip/PL/QifGJbfX0HpLAfVIeSRXeSKasL10LC+rD4Uq/TJfLMk+ipiCmsREbYuPMYt35qblouZxXiH9ZCvEfU6hb1nt4cJSjcwfmqMizmcNMIhlYNW9iBybc97l+oSO4EM5wE8bPufe2+GyBoV4FwbxBMhIFFIIJPZ92245goTysUszMZSFX36apbbNxl3z1Cxw9oG4="}),o(e,{id:"mermaid-3",code:"eJx1UL1OwzAQ3vMUN4LUiD1DJX42QKrUCRZ0da/xqYlt7s5F4ulxAmlR03r093tfXdeVsXXUwCpvOlbPoYX7bD4Kf6NxDNXAUfrMFBw9MbaCfQXlJRRjxwmDTWKSGfL+8kpbxme2GfQWs8BDVg6kCmuSQ9GPrKMd1MvlP4sGxDTdifUJ1ISwh3SqLUNJ/c05aUaLS1ENPHpye+AdmKfJqGR6VEgkPauW+xdgwm1b/r9oAz7GPdzE8PFHvx3TLtlDfd59hWU6MhIFFIIDdrxdXM0FixM2u2hwPm7UwHo2hWbnSpVd7qofrXmm7w=="})])}const s=c(m,[["render",a],["__file","sequence_diagram.html.vue"]]);export{s as default};
                          +import{_ as c}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as r,c as d,b as o}from"./app-0NopiYEV.js";const m={};function a(x,n){const e=i("Mermaid");return r(),d("div",null,[o(e,{id:"mermaid-0",code:"eJyFUstuwjAQvPMVeywSgTuHSi3lUPWFSntoL8jES3BxbHft8Pj7bmICiASaiyN7d3Z2ZpIk6QQVNA7hzSQPmAsjYVJorUwG00AocpiQTdH7Tlnr8bdAk+KDEhmJvAP8OUFBpcoJE2CixQ6pcf39/IJSiScVGk8jkSOJxvWXLQjuC68Mj4Yp0pphq6o4ApLb2xPYYX1NJUEfPFDwbkAhd4NlCC5Z6PVg48sDHFfORbqq0I4QDcTREtMVqAWEJYKPWuBWMXhbZxvhYS2htOjB2BD7exBIZRmz3eAcltau4Cbiz7hmtrCFkV3ANZooVxt0k63QGt7H049FoeFu8gg3Qso4ng3c7roQLG/BEoPb+3vcq22haEy5QnsPcy6cs/x2kLpb4cRGSM4Z7rWokXyRlrFiur0akTBjeZBQNgiVYNHiA1ClU+9g5wngeU7qxrH5sbt6i7qv3+9fqi/PCloZcGQzYvgr5Z+eL1JtPZtdT0BqaTjPbTUDjWzZ+2KyXi2sFW6QPAtBJ75cTZfBGf9JpP/z1QyYicudZmBv5rX8jC71/AFzcIE+"}),o(e,{id:"mermaid-1",code:"eJyFU01T4zAMvfdX6EhnSHvvgcPCnvarMywHuHSMoySmiW1kJaX/Hjkm0GkM5GJHkd6Tnl6Koliw4RY38M8WN9gpW8K2D42xNdwyoepgS05jCIuYG/C5R6vxxqiaVLcAebwiNtp4ZRm2rToizcIPv/9gadQvw7NPiSTSXasOSc0S7l1P8KMPxkoTcIs0CMGYlciguLo6IdhMYYqtBg5AHPyauPPrhtkXVTusDyEe4CXzUen9iPYBMUO8blDvwVTADUJIquCLEfBcZa7hzSRm6TCAdZzqL4HJ1LV0e8BHaJzbw0XC30nOrnK9LZeAA9okXA565DxXMfKJhm/NxvjFYBQcY70nMyhGOR077VpgB9pZpniVAfWIsBwJz3Fn0sxoQu+9k9C76svLSTLCWmZGwjInW1pbWl9cCoReR99VfXu+7Sn1p31yx8ga256WuVqtPst/hzY2Tl+TwH+RfhckoFsXZGUTA1Km4Nx9IwfaMj9o3h9/HQwGD0gBKkcnTvvSIxZ3ciuRvnfJzNTKpuFOXe3Tr59re26x/0jyHq2UQXgFLzR4/Q=="}),o(e,{id:"mermaid-2",code:"eJxtkT9rxDAMxfd8Co0tXMh+w0H/bG2h0Kldii6nxOKc2JXkHO2nr+MUepB4Mch6v6cn13VdGZunPbx6/D5ie4a7ZC4I/6BxGKu5Q+kr0djSI2MvOFSQT0QxbjniaEVKsip/PL/QifGJbfX0HpLAfVIeSRXeSKasL10LC+rD4Uq/TJfLMk+ipiCmsREbYuPMYt35qblouZxXiH9ZCvEfU6hb1nt4cJSjcwfmqMizmcNMIhlYNW9iBybc97l+oSO4EM5wE8bPufe2+GyBoV4FwbxBMhIFFIIJPZ92245goTysUszMZSFX36apbbNxl3z1Cxw9oG4="}),o(e,{id:"mermaid-3",code:"eJx1UL1OwzAQ3vMUN4LUiD1DJX42QKrUCRZ0da/xqYlt7s5F4ulxAmlR03r093tfXdeVsXXUwCpvOlbPoYX7bD4Kf6NxDNXAUfrMFBw9MbaCfQXlJRRjxwmDTWKSGfL+8kpbxme2GfQWs8BDVg6kCmuSQ9GPrKMd1MvlP4sGxDTdifUJ1ISwh3SqLUNJ/c05aUaLS1ENPHpye+AdmKfJqGR6VEgkPauW+xdgwm1b/r9oAz7GPdzE8PFHvx3TLtlDfd59hWU6MhIFFIIDdrxdXM0FixM2u2hwPm7UwHo2hWbnSpVd7qofrXmm7w=="})])}const s=c(m,[["render",a],["__file","sequence_diagram.html.vue"]]);export{s as default};
                          diff --git a/assets/sequence_diagram.html-vJK6hfro.js b/assets/sequence_diagram.html-pEkXoaBs.js
                          similarity index 97%
                          rename from assets/sequence_diagram.html-vJK6hfro.js
                          rename to assets/sequence_diagram.html-pEkXoaBs.js
                          index ece2832..bcd9ad2 100644
                          --- a/assets/sequence_diagram.html-vJK6hfro.js
                          +++ b/assets/sequence_diagram.html-pEkXoaBs.js
                          @@ -1 +1 @@
                          -import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as i,c as r,b as m}from"./app-RP31lnfq.js";const d={};function o(c,s){const e=a("Mermaid");return i(),r("div",null,[m(e,{id:"mermaid-0",code:"eJyNUktPwkAQvvMr9giJhXsPnrypiYk3L6TaRRuhre3i4yaKBiwGHyQ+glETERJDqvFFAPXPdLf15F9w25WmUFSapt2dme+bmW+G47gIklAa8oCUip/VTWIUyXOOvnbDiLheHa5kobwAJyRhURMyEUAfVdCQtCCpgowAOWqSyjs+a4Q8c1PTUJSESQmFQYd5vF3GN08hj/V2ZZ/nrdY53rsm1X36dam9MD8T4MbHA+yABxrS1YSGMmpiCSGVS6VXE2u6+/MxjvlKHrY8ngCyn4gnlzVSfHfMmivBqYkPbnHzFFdZawOwoYVSFZ9zVmufwb66Jad+i8uHa3AeLCnKclRHGhQySVlByZSSlcWY1TaszovHP5RwsELnftuuNDSoo1Q2DQRVigqiOOuxzmjK+kZsDHc3cd1gYxxWty89H4yMkopJSjlfxxhTvBcLuEGl2JoUDvDe5Zh7emzg3RK7h7J6aXuD4KnCuHBPMVQeZg3A+mccAOWL+OOO6sNM8Xj873DvZLWa/wVSMUnhFe88fp40fetwULB7z2F3jslFuNtfd4OcXFnttlPfsqsGa79/O766BX8/ZJikJxFqI2wIzRioDZdNq1P76WiULQhGfgNzyghy"}),m(e,{id:"mermaid-1",code:"eJyNUstOwlAQ3fMVXUpiYd+FK3fqD7ghVa7aKKWWq25BUUGeKvFBatREbBODjfEBAYSf6Z2WFb/gbatNgUZtmnZyZ86cmXMuy7IhLOAtxDFQzA+VNJQ1eM/Q19QKITubQts7SFxF8wK/LvOJEEMfiZexsCpIvIgZOGtCrU+utanM8uISigv8goCnQS7LaZYcVMjD21Te+Lwz61mjXScn96CU6NcmcMo8Poadm/NxMBwj45QUlXFCim5gLLFrW7vRvZT98zCW3oKXfaePDzneiIPbBuT7lt6wR7zSSfWRNK+I4i44AQsclGr5njHaJRc26hUt9ZFUTvfQCrORTG7OpLCM+ERMTOLYWnJHjIeNTsHofjj9Axs6VBOacXQX0ksTteAmZobpujU4dvGmmgElT0oV6/kZyirJfXi4sKvieLNJCcYaQ02HYsYTNzxrI181clSEXJWc3Abp4inOuZGvctxAX2E2TwZPdHj3KBKJ/F7uREa7+VehWdMg1yKHr8PLpncaDPJfAidhds/hJnDBYOPh8s7odCx131QKVKUp60e9nGe+iGI0iiP5H/ZTRr87Fd3oNr43cjwKtGDivkC5Chc/9V/nmg7O"}),m(e,{id:"mermaid-2",code:"eJzT1dXlKsksyUm1Ung2ae2zKftedm55NreZCyRenFpYmpqXnOqSmZhelJjLpQAEBYlFJZnJmQWJeSVQDU9nrsCQifLxTU3JTPTOLMGQerJ3wfNZLU92zHratfDZnF4gCTIArAxunoKunR2SGQpWCkUlxQX6RSW5BfoZJSUFumk5ZfrlxWAqI6cYru/F+u3PNjaBzULSDTIMq61AL89Y/3TCsmdzOoFehpii82L5sqf9E8tTkxQy8vOzNfLz4gtyEis1wYZiNUVBF9W1Vk/7m55N3fB0QsezzVPf7+lBNh3DaSCtcOdbQVjPOiY87ZrPBQA0g8TU"}),m(e,{id:"mermaid-3",code:"eJzT1dXlKsksyUm1UnjWt+LZ1saXnVuezW3mAokXpxaWpuYlp7pkJqYXJeZyKQBBQWJRSWZyZkFiXglUw9OZKzBkonx8U1MyE70zSzCknuxd8HxWy5Mds552LXw2pxdIggwAK4Obp6BrZ4dkhoKVQlFJcYF+UUluAUTNi/Xbn21sAmtCUgbShdV4oN9mrH86YdmzOZ1Av0GM0HmxfNnT/onlqUkKGfn52Rr5efEFpUk5mcUZmmBzsRqkoIvqMqun/U3Ppm54OqHj2eap7/f0IFuA4TqQVrgXrSCsZx0TnnbN5wIAep+7Xw=="})])}const U=n(d,[["render",o],["__file","sequence_diagram.html.vue"]]);export{U as default};
                          +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as i,c as r,b as m}from"./app-0NopiYEV.js";const d={};function o(c,s){const e=a("Mermaid");return i(),r("div",null,[m(e,{id:"mermaid-0",code:"eJyNUktPwkAQvvMr9giJhXsPnrypiYk3L6TaRRuhre3i4yaKBiwGHyQ+glETERJDqvFFAPXPdLf15F9w25WmUFSapt2dme+bmW+G47gIklAa8oCUip/VTWIUyXOOvnbDiLheHa5kobwAJyRhURMyEUAfVdCQtCCpgowAOWqSyjs+a4Q8c1PTUJSESQmFQYd5vF3GN08hj/V2ZZ/nrdY53rsm1X36dam9MD8T4MbHA+yABxrS1YSGMmpiCSGVS6VXE2u6+/MxjvlKHrY8ngCyn4gnlzVSfHfMmivBqYkPbnHzFFdZawOwoYVSFZ9zVmufwb66Jad+i8uHa3AeLCnKclRHGhQySVlByZSSlcWY1TaszovHP5RwsELnftuuNDSoo1Q2DQRVigqiOOuxzmjK+kZsDHc3cd1gYxxWty89H4yMkopJSjlfxxhTvBcLuEGl2JoUDvDe5Zh7emzg3RK7h7J6aXuD4KnCuHBPMVQeZg3A+mccAOWL+OOO6sNM8Xj873DvZLWa/wVSMUnhFe88fp40fetwULB7z2F3jslFuNtfd4OcXFnttlPfsqsGa79/O766BX8/ZJikJxFqI2wIzRioDZdNq1P76WiULQhGfgNzyghy"}),m(e,{id:"mermaid-1",code:"eJyNUstOwlAQ3fMVXUpiYd+FK3fqD7ghVa7aKKWWq25BUUGeKvFBatREbBODjfEBAYSf6Z2WFb/gbatNgUZtmnZyZ86cmXMuy7IhLOAtxDFQzA+VNJQ1eM/Q19QKITubQts7SFxF8wK/LvOJEEMfiZexsCpIvIgZOGtCrU+utanM8uISigv8goCnQS7LaZYcVMjD21Te+Lwz61mjXScn96CU6NcmcMo8Poadm/NxMBwj45QUlXFCim5gLLFrW7vRvZT98zCW3oKXfaePDzneiIPbBuT7lt6wR7zSSfWRNK+I4i44AQsclGr5njHaJRc26hUt9ZFUTvfQCrORTG7OpLCM+ERMTOLYWnJHjIeNTsHofjj9Axs6VBOacXQX0ksTteAmZobpujU4dvGmmgElT0oV6/kZyirJfXi4sKvieLNJCcYaQ02HYsYTNzxrI181clSEXJWc3Abp4inOuZGvctxAX2E2TwZPdHj3KBKJ/F7uREa7+VehWdMg1yKHr8PLpncaDPJfAidhds/hJnDBYOPh8s7odCx131QKVKUp60e9nGe+iGI0iiP5H/ZTRr87Fd3oNr43cjwKtGDivkC5Chc/9V/nmg7O"}),m(e,{id:"mermaid-2",code:"eJzT1dXlKsksyUm1Ung2ae2zKftedm55NreZCyRenFpYmpqXnOqSmZhelJjLpQAEBYlFJZnJmQWJeSVQDU9nrsCQifLxTU3JTPTOLMGQerJ3wfNZLU92zHratfDZnF4gCTIArAxunoKunR2SGQpWCkUlxQX6RSW5BfoZJSUFumk5ZfrlxWAqI6cYru/F+u3PNjaBzULSDTIMq61AL89Y/3TCsmdzOoFehpii82L5sqf9E8tTkxQy8vOzNfLz4gtyEis1wYZiNUVBF9W1Vk/7m55N3fB0QsezzVPf7+lBNh3DaSCtcOdbQVjPOiY87ZrPBQA0g8TU"}),m(e,{id:"mermaid-3",code:"eJzT1dXlKsksyUm1UnjWt+LZ1saXnVuezW3mAokXpxaWpuYlp7pkJqYXJeZyKQBBQWJRSWZyZkFiXglUw9OZKzBkonx8U1MyE70zSzCknuxd8HxWy5Mds552LXw2pxdIggwAK4Obp6BrZ4dkhoKVQlFJcYF+UUluAUTNi/Xbn21sAmtCUgbShdV4oN9mrH86YdmzOZ1Av0GM0HmxfNnT/onlqUkKGfn52Rr5efEFpUk5mcUZmmBzsRqkoIvqMqun/U3Ppm54OqHj2eap7/f0IFuA4TqQVrgXrSCsZx0TnnbN5wIAep+7Xw=="})])}const U=n(d,[["render",o],["__file","sequence_diagram.html.vue"]]);export{U as default};
                          diff --git a/assets/start.html-VhG07QWF.js b/assets/start.html-3NE1XKNN.js
                          similarity index 99%
                          rename from assets/start.html-VhG07QWF.js
                          rename to assets/start.html-3NE1XKNN.js
                          index 7bf25bf..0213bf4 100644
                          --- a/assets/start.html-VhG07QWF.js
                          +++ b/assets/start.html-3NE1XKNN.js
                          @@ -1,4 +1,4 @@
                          -import{_ as r}from"./vs_code_zh-ltEPcFYF.js";import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as c,c as p,a as e,d as a,b as n,w as i,e as t}from"./app-RP31lnfq.js";const u={},m=t(`

                          1. Obtain the Source Code

                          Please refrain from downloading the source code in zip package format directly from GitHub. Instead, you should clone the ZLMediaKit code using git. This is due to ZLMediaKit's reliance on multiple third-party project codes which are not included in the zip package. Follow these steps to do this:

                          # It's recommended for users in China to download from the synchronized mirror site, gitee
                          +import{_ as r}from"./vs_code_zh-ltEPcFYF.js";import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as c,c as p,a as e,d as a,b as n,w as i,e as t}from"./app-0NopiYEV.js";const u={},m=t(`

                          1. Obtain the Source Code

                          Please refrain from downloading the source code in zip package format directly from GitHub. Instead, you should clone the ZLMediaKit code using git. This is due to ZLMediaKit's reliance on multiple third-party project codes which are not included in the zip package. Follow these steps to do this:

                          # It's recommended for users in China to download from the synchronized mirror site, gitee
                           git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
                           cd ZLMediaKit
                           # Remember to execute this command
                          diff --git a/assets/start.html-fkf1t7c5.js b/assets/start.html-zUlbdSif.js
                          similarity index 99%
                          rename from assets/start.html-fkf1t7c5.js
                          rename to assets/start.html-zUlbdSif.js
                          index 7e6f4bd..91eb042 100644
                          --- a/assets/start.html-fkf1t7c5.js
                          +++ b/assets/start.html-zUlbdSif.js
                          @@ -1,4 +1,4 @@
                          -import{_ as c}from"./vs_code_zh-ltEPcFYF.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as d,o as p,c as r,a,d as e,b as n,w as l,e as s}from"./app-RP31lnfq.js";const u={},m=s(`

                          1、获取代码

                          请不要使用 github 下载 zip 包的方式下载源码,务必使用 git 克隆 ZLMediaKit 的代码,因为 ZLMediaKit 依赖于第三方代码,zip 包不会下载第三方依赖源码,你可以这样操作:

                          #国内用户推荐从同步镜像网站gitee下载
                          +import{_ as c}from"./vs_code_zh-ltEPcFYF.js";import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as d,o as p,c as r,a,d as e,b as n,w as l,e as s}from"./app-0NopiYEV.js";const u={},m=s(`

                          1、获取代码

                          请不要使用 github 下载 zip 包的方式下载源码,务必使用 git 克隆 ZLMediaKit 的代码,因为 ZLMediaKit 依赖于第三方代码,zip 包不会下载第三方依赖源码,你可以这样操作:

                          #国内用户推荐从同步镜像网站gitee下载
                           git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
                           cd ZLMediaKit
                           #千万不要忘记执行这句命令
                          diff --git a/assets/start_server.html-I5K79p0Y.js b/assets/start_server.html-JlFNgj-K.js
                          similarity index 98%
                          rename from assets/start_server.html-I5K79p0Y.js
                          rename to assets/start_server.html-JlFNgj-K.js
                          index 37439d4..b266821 100644
                          --- a/assets/start_server.html-I5K79p0Y.js
                          +++ b/assets/start_server.html-JlFNgj-K.js
                          @@ -1,4 +1,4 @@
                          -import{_ as e,a,b as l}from"./start_server_3-RVnx99XR.js";import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as r,e as n}from"./app-RP31lnfq.js";const d={},t=n(`

                          程序所在路径

                          在编译 zlmediakit 后,会生成 MediaServer 主程序,该程序相对路径为release/\${platform}/\${build_type}/MediaServer

                          \${platform}根据您的操作系统,可能为windows/linux/mac,\${build_type}根据您 cmake 时指定的编译类型,可能为Debug/Release.

                          启动与参数

                          • 先参考启动参数帮助:
                          xzl-mac-pro:Debug xzl$ ./MediaServer -h
                          +import{_ as e,a,b as l}from"./start_server_3-RVnx99XR.js";import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as r,e as n}from"./app-0NopiYEV.js";const d={},t=n(`

                          程序所在路径

                          在编译 zlmediakit 后,会生成 MediaServer 主程序,该程序相对路径为release/\${platform}/\${build_type}/MediaServer

                          \${platform}根据您的操作系统,可能为windows/linux/mac,\${build_type}根据您 cmake 时指定的编译类型,可能为Debug/Release.

                          启动与参数

                          • 先参考启动参数帮助:
                          xzl-mac-pro:Debug xzl$ ./MediaServer -h
                             -h  --help     无参  默认:null                                                    选填  打印此信息
                             -d  --daemon   无参  默认:null                                                    选填  是否以Daemon方式启动
                             -l  --level    有参  默认:0                                                       选填  日志等级,LTrace~LError(0~4)
                          diff --git a/assets/start_server.html-z23wbtOj.js b/assets/start_server.html-iaR_8o9S.js
                          similarity index 98%
                          rename from assets/start_server.html-z23wbtOj.js
                          rename to assets/start_server.html-iaR_8o9S.js
                          index 2e627be..717395b 100644
                          --- a/assets/start_server.html-z23wbtOj.js
                          +++ b/assets/start_server.html-iaR_8o9S.js
                          @@ -1,4 +1,4 @@
                          -import{_ as e,a,b as t}from"./start_server_3-RVnx99XR.js";import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as r,c as s,e as n}from"./app-RP31lnfq.js";const l={},o=n(`

                          Program Path

                          After compiling ZLMediaKit, the MediaServer main program is generated. The relative path of the program is release/\${platform}/\${build_type}/MediaServer.

                          \${platform} depends on your operating system, which may be windows/linux/mac, and \${build_type} depends on the compile type you specified when using cmake, which could be Debug/Release.

                          Start-up and Parameters

                          • First, please refer to the help for startup parameters:
                          xzl-mac-pro:Debug xzl$ ./MediaServer -h
                          +import{_ as e,a,b as t}from"./start_server_3-RVnx99XR.js";import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as r,c as s,e as n}from"./app-0NopiYEV.js";const l={},o=n(`

                          Program Path

                          After compiling ZLMediaKit, the MediaServer main program is generated. The relative path of the program is release/\${platform}/\${build_type}/MediaServer.

                          \${platform} depends on your operating system, which may be windows/linux/mac, and \${build_type} depends on the compile type you specified when using cmake, which could be Debug/Release.

                          Start-up and Parameters

                          • First, please refer to the help for startup parameters:
                          xzl-mac-pro:Debug xzl$ ./MediaServer -h
                             -h  --help     no argument  default:null                                          optional  print this information
                             -d  --daemon   no argument  default:null                                          optional  start in Daemon mode or not
                             -l  --level    argument     default:0                                             optional  log level, LTrace~LError(0~4)
                          diff --git a/assets/stateDiagram-b620d43f-RCXXee-i.js b/assets/stateDiagram-b620d43f-mAYfcJzU.js
                          similarity index 97%
                          rename from assets/stateDiagram-b620d43f-RCXXee-i.js
                          rename to assets/stateDiagram-b620d43f-mAYfcJzU.js
                          index 7645c48..ddb21a7 100644
                          --- a/assets/stateDiagram-b620d43f-RCXXee-i.js
                          +++ b/assets/stateDiagram-b620d43f-mAYfcJzU.js
                          @@ -1 +1 @@
                          -import{p as P,d as N,s as W}from"./styles-bbc3fe3b-It40AHsg.js";import{c as t,h as H,l as b,i as R,j as T,ao as v,y as U}from"./mermaid.core-ygY5oRaR.js";import{G as C,l as F}from"./layout-wEoclKsW.js";import{l as $}from"./line-EJoUorMM.js";import"./app-RP31lnfq.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const O=e=>e.append("circle").attr("class","start-state").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit).attr("cy",t().state.padding+t().state.sizeUnit),X=e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",t().state.textHeight).attr("class","divider").attr("x2",t().state.textHeight*2).attr("y1",0).attr("y2",0),J=(e,i)=>{const o=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+2*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.id),c=o.node().getBBox();return e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",c.width+2*t().state.padding).attr("height",c.height+2*t().state.padding).attr("rx",t().state.radius),o},Y=(e,i)=>{const o=function(l,m,w){const E=l.append("tspan").attr("x",2*t().state.padding).text(m);w||E.attr("dy",t().state.textHeight)},s=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+1.3*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.descriptions[0]).node().getBBox(),g=s.height,p=e.append("text").attr("x",t().state.padding).attr("y",g+t().state.padding*.4+t().state.dividerMargin+t().state.textHeight).attr("class","state-description");let a=!0,r=!0;i.descriptions.forEach(function(l){a||(o(p,l,r),r=!1),a=!1});const y=e.append("line").attr("x1",t().state.padding).attr("y1",t().state.padding+g+t().state.dividerMargin/2).attr("y2",t().state.padding+g+t().state.dividerMargin/2).attr("class","descr-divider"),x=p.node().getBBox(),d=Math.max(x.width,s.width);return y.attr("x2",d+3*t().state.padding),e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",d+2*t().state.padding).attr("height",x.height+g+2*t().state.padding).attr("rx",t().state.radius),e},I=(e,i,o)=>{const c=t().state.padding,s=2*t().state.padding,g=e.node().getBBox(),p=g.width,a=g.x,r=e.append("text").attr("x",0).attr("y",t().state.titleShift).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.id),x=r.node().getBBox().width+s;let d=Math.max(x,p);d===p&&(d=d+s);let l;const m=e.node().getBBox();i.doc,l=a-c,x>p&&(l=(p-d)/2+c),Math.abs(a-m.x)p&&(l=a-(x-p)/2);const w=1-t().state.textHeight;return e.insert("rect",":first-child").attr("x",l).attr("y",w).attr("class",o?"alt-composit":"composit").attr("width",d).attr("height",m.height+t().state.textHeight+t().state.titleShift+1).attr("rx","0"),r.attr("x",l+c),x<=p&&r.attr("x",a+(d-s)/2-x/2+c),e.insert("rect",":first-child").attr("x",l).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",d).attr("height",t().state.textHeight*3).attr("rx",t().state.radius),e.insert("rect",":first-child").attr("x",l).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",d).attr("height",m.height+3+2*t().state.textHeight).attr("rx",t().state.radius),e},_=e=>(e.append("circle").attr("class","end-state-outer").attr("r",t().state.sizeUnit+t().state.miniPadding).attr("cx",t().state.padding+t().state.sizeUnit+t().state.miniPadding).attr("cy",t().state.padding+t().state.sizeUnit+t().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit+2).attr("cy",t().state.padding+t().state.sizeUnit+2)),q=(e,i)=>{let o=t().state.forkWidth,c=t().state.forkHeight;if(i.parentId){let s=o;o=c,c=s}return e.append("rect").style("stroke","black").style("fill","black").attr("width",o).attr("height",c).attr("x",t().state.padding).attr("y",t().state.padding)},Z=(e,i,o,c)=>{let s=0;const g=c.append("text");g.style("text-anchor","start"),g.attr("class","noteText");let p=e.replace(/\r\n/g,"
                          ");p=p.replace(/\n/g,"
                          ");const a=p.split(T.lineBreakRegex);let r=1.25*t().state.noteMargin;for(const y of a){const x=y.trim();if(x.length>0){const d=g.append("tspan");if(d.text(x),r===0){const l=d.node().getBBox();r+=l.height}s+=r,d.attr("x",i+t().state.noteMargin),d.attr("y",o+s+1.25*t().state.noteMargin)}}return{textWidth:g.node().getBBox().width,textHeight:s}},j=(e,i)=>{i.attr("class","state-note");const o=i.append("rect").attr("x",0).attr("y",t().state.padding),c=i.append("g"),{textWidth:s,textHeight:g}=Z(e,0,0,c);return o.attr("height",g+2*t().state.noteMargin),o.attr("width",s+t().state.noteMargin*2),o},L=function(e,i){const o=i.id,c={id:o,label:i.id,width:0,height:0},s=e.append("g").attr("id",o).attr("class","stateGroup");i.type==="start"&&O(s),i.type==="end"&&_(s),(i.type==="fork"||i.type==="join")&&q(s,i),i.type==="note"&&j(i.note.text,s),i.type==="divider"&&X(s),i.type==="default"&&i.descriptions.length===0&&J(s,i),i.type==="default"&&i.descriptions.length>0&&Y(s,i);const g=s.node().getBBox();return c.width=g.width+2*t().state.padding,c.height=g.height+2*t().state.padding,c};let G=0;const K=function(e,i,o){const c=function(r){switch(r){case N.relationType.AGGREGATION:return"aggregation";case N.relationType.EXTENSION:return"extension";case N.relationType.COMPOSITION:return"composition";case N.relationType.DEPENDENCY:return"dependency"}};i.points=i.points.filter(r=>!Number.isNaN(r.y));const s=i.points,g=$().x(function(r){return r.x}).y(function(r){return r.y}).curve(v),p=e.append("path").attr("d",g(s)).attr("id","edge"+G).attr("class","transition");let a="";if(t().state.arrowMarkerAbsolute&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replace(/\(/g,"\\("),a=a.replace(/\)/g,"\\)")),p.attr("marker-end","url("+a+"#"+c(N.relationType.DEPENDENCY)+"End)"),o.title!==void 0){const r=e.append("g").attr("class","stateLabel"),{x:y,y:x}=U.calcLabelPosition(i.points),d=T.getRows(o.title);let l=0;const m=[];let w=0,E=0;for(let u=0;u<=d.length;u++){const h=r.append("text").attr("text-anchor","middle").text(d[u]).attr("x",y).attr("y",x+l),f=h.node().getBBox();w=Math.max(w,f.width),E=Math.min(E,f.x),b.info(f.x,y,x+l),l===0&&(l=h.node().getBBox().height,b.info("Title height",l,x)),m.push(h)}let k=l*d.length;if(d.length>1){const u=(d.length-1)*l*.5;m.forEach((h,f)=>h.attr("y",x+f*l-u)),k=l*d.length}const n=r.node().getBBox();r.insert("rect",":first-child").attr("class","box").attr("x",y-w/2-t().state.padding/2).attr("y",x-k/2-t().state.padding/2-3.5).attr("width",w+t().state.padding).attr("height",k+t().state.padding),b.info(n)}G++};let B;const z={},Q=function(){},V=function(e){e.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},D=function(e,i,o,c){B=t().state;const s=t().securityLevel;let g;s==="sandbox"&&(g=H("#i"+i));const p=s==="sandbox"?H(g.nodes()[0].contentDocument.body):H("body"),a=s==="sandbox"?g.nodes()[0].contentDocument:document;b.debug("Rendering diagram "+e);const r=p.select(`[id='${i}']`);V(r);const y=c.db.getRootDoc();A(y,r,void 0,!1,p,a,c);const x=B.padding,d=r.node().getBBox(),l=d.width+x*2,m=d.height+x*2,w=l*1.75;R(r,m,w,B.useMaxWidth),r.attr("viewBox",`${d.x-B.padding} ${d.y-B.padding} `+l+" "+m)},tt=e=>e?e.length*B.fontSizeFactor:1,A=(e,i,o,c,s,g,p)=>{const a=new C({compound:!0,multigraph:!0});let r,y=!0;for(r=0;r{const f=h.parentElement;let S=0,M=0;f&&(f.parentElement&&(S=f.parentElement.getBBox().width),M=parseInt(f.getAttribute("data-x-shift"),10),Number.isNaN(M)&&(M=0)),h.setAttribute("x1",0-M+8),h.setAttribute("x2",S-M-8)})):b.debug("No Node "+n+": "+JSON.stringify(a.node(n)))});let E=w.getBBox();a.edges().forEach(function(n){n!==void 0&&a.edge(n)!==void 0&&(b.debug("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(a.edge(n))),K(i,a.edge(n),a.edge(n).relation))}),E=w.getBBox();const k={id:o||"root",label:o||"root",width:0,height:0};return k.width=E.width+2*B.padding,k.height=E.height+2*B.padding,b.debug("Doc rendered",k,a),k},et={setConf:Q,draw:D},ct={parser:P,db:N,renderer:et,styles:W,init:e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute,N.clear()}};export{ct as diagram}; +import{p as P,d as N,s as W}from"./styles-bbc3fe3b-rQ9hJQeS.js";import{c as t,h as H,l as b,i as R,j as T,ao as v,y as U}from"./mermaid.core-YBgJFCkH.js";import{G as C,l as F}from"./layout-6DvG_ICF.js";import{l as $}from"./line-QxBjBe1b.js";import"./app-0NopiYEV.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const O=e=>e.append("circle").attr("class","start-state").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit).attr("cy",t().state.padding+t().state.sizeUnit),X=e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",t().state.textHeight).attr("class","divider").attr("x2",t().state.textHeight*2).attr("y1",0).attr("y2",0),J=(e,i)=>{const o=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+2*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.id),c=o.node().getBBox();return e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",c.width+2*t().state.padding).attr("height",c.height+2*t().state.padding).attr("rx",t().state.radius),o},Y=(e,i)=>{const o=function(l,m,w){const E=l.append("tspan").attr("x",2*t().state.padding).text(m);w||E.attr("dy",t().state.textHeight)},s=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+1.3*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.descriptions[0]).node().getBBox(),g=s.height,p=e.append("text").attr("x",t().state.padding).attr("y",g+t().state.padding*.4+t().state.dividerMargin+t().state.textHeight).attr("class","state-description");let a=!0,r=!0;i.descriptions.forEach(function(l){a||(o(p,l,r),r=!1),a=!1});const y=e.append("line").attr("x1",t().state.padding).attr("y1",t().state.padding+g+t().state.dividerMargin/2).attr("y2",t().state.padding+g+t().state.dividerMargin/2).attr("class","descr-divider"),x=p.node().getBBox(),d=Math.max(x.width,s.width);return y.attr("x2",d+3*t().state.padding),e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",d+2*t().state.padding).attr("height",x.height+g+2*t().state.padding).attr("rx",t().state.radius),e},I=(e,i,o)=>{const c=t().state.padding,s=2*t().state.padding,g=e.node().getBBox(),p=g.width,a=g.x,r=e.append("text").attr("x",0).attr("y",t().state.titleShift).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.id),x=r.node().getBBox().width+s;let d=Math.max(x,p);d===p&&(d=d+s);let l;const m=e.node().getBBox();i.doc,l=a-c,x>p&&(l=(p-d)/2+c),Math.abs(a-m.x)p&&(l=a-(x-p)/2);const w=1-t().state.textHeight;return e.insert("rect",":first-child").attr("x",l).attr("y",w).attr("class",o?"alt-composit":"composit").attr("width",d).attr("height",m.height+t().state.textHeight+t().state.titleShift+1).attr("rx","0"),r.attr("x",l+c),x<=p&&r.attr("x",a+(d-s)/2-x/2+c),e.insert("rect",":first-child").attr("x",l).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",d).attr("height",t().state.textHeight*3).attr("rx",t().state.radius),e.insert("rect",":first-child").attr("x",l).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",d).attr("height",m.height+3+2*t().state.textHeight).attr("rx",t().state.radius),e},_=e=>(e.append("circle").attr("class","end-state-outer").attr("r",t().state.sizeUnit+t().state.miniPadding).attr("cx",t().state.padding+t().state.sizeUnit+t().state.miniPadding).attr("cy",t().state.padding+t().state.sizeUnit+t().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit+2).attr("cy",t().state.padding+t().state.sizeUnit+2)),q=(e,i)=>{let o=t().state.forkWidth,c=t().state.forkHeight;if(i.parentId){let s=o;o=c,c=s}return e.append("rect").style("stroke","black").style("fill","black").attr("width",o).attr("height",c).attr("x",t().state.padding).attr("y",t().state.padding)},Z=(e,i,o,c)=>{let s=0;const g=c.append("text");g.style("text-anchor","start"),g.attr("class","noteText");let p=e.replace(/\r\n/g,"
                          ");p=p.replace(/\n/g,"
                          ");const a=p.split(T.lineBreakRegex);let r=1.25*t().state.noteMargin;for(const y of a){const x=y.trim();if(x.length>0){const d=g.append("tspan");if(d.text(x),r===0){const l=d.node().getBBox();r+=l.height}s+=r,d.attr("x",i+t().state.noteMargin),d.attr("y",o+s+1.25*t().state.noteMargin)}}return{textWidth:g.node().getBBox().width,textHeight:s}},j=(e,i)=>{i.attr("class","state-note");const o=i.append("rect").attr("x",0).attr("y",t().state.padding),c=i.append("g"),{textWidth:s,textHeight:g}=Z(e,0,0,c);return o.attr("height",g+2*t().state.noteMargin),o.attr("width",s+t().state.noteMargin*2),o},L=function(e,i){const o=i.id,c={id:o,label:i.id,width:0,height:0},s=e.append("g").attr("id",o).attr("class","stateGroup");i.type==="start"&&O(s),i.type==="end"&&_(s),(i.type==="fork"||i.type==="join")&&q(s,i),i.type==="note"&&j(i.note.text,s),i.type==="divider"&&X(s),i.type==="default"&&i.descriptions.length===0&&J(s,i),i.type==="default"&&i.descriptions.length>0&&Y(s,i);const g=s.node().getBBox();return c.width=g.width+2*t().state.padding,c.height=g.height+2*t().state.padding,c};let G=0;const K=function(e,i,o){const c=function(r){switch(r){case N.relationType.AGGREGATION:return"aggregation";case N.relationType.EXTENSION:return"extension";case N.relationType.COMPOSITION:return"composition";case N.relationType.DEPENDENCY:return"dependency"}};i.points=i.points.filter(r=>!Number.isNaN(r.y));const s=i.points,g=$().x(function(r){return r.x}).y(function(r){return r.y}).curve(v),p=e.append("path").attr("d",g(s)).attr("id","edge"+G).attr("class","transition");let a="";if(t().state.arrowMarkerAbsolute&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replace(/\(/g,"\\("),a=a.replace(/\)/g,"\\)")),p.attr("marker-end","url("+a+"#"+c(N.relationType.DEPENDENCY)+"End)"),o.title!==void 0){const r=e.append("g").attr("class","stateLabel"),{x:y,y:x}=U.calcLabelPosition(i.points),d=T.getRows(o.title);let l=0;const m=[];let w=0,E=0;for(let u=0;u<=d.length;u++){const h=r.append("text").attr("text-anchor","middle").text(d[u]).attr("x",y).attr("y",x+l),f=h.node().getBBox();w=Math.max(w,f.width),E=Math.min(E,f.x),b.info(f.x,y,x+l),l===0&&(l=h.node().getBBox().height,b.info("Title height",l,x)),m.push(h)}let k=l*d.length;if(d.length>1){const u=(d.length-1)*l*.5;m.forEach((h,f)=>h.attr("y",x+f*l-u)),k=l*d.length}const n=r.node().getBBox();r.insert("rect",":first-child").attr("class","box").attr("x",y-w/2-t().state.padding/2).attr("y",x-k/2-t().state.padding/2-3.5).attr("width",w+t().state.padding).attr("height",k+t().state.padding),b.info(n)}G++};let B;const z={},Q=function(){},V=function(e){e.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},D=function(e,i,o,c){B=t().state;const s=t().securityLevel;let g;s==="sandbox"&&(g=H("#i"+i));const p=s==="sandbox"?H(g.nodes()[0].contentDocument.body):H("body"),a=s==="sandbox"?g.nodes()[0].contentDocument:document;b.debug("Rendering diagram "+e);const r=p.select(`[id='${i}']`);V(r);const y=c.db.getRootDoc();A(y,r,void 0,!1,p,a,c);const x=B.padding,d=r.node().getBBox(),l=d.width+x*2,m=d.height+x*2,w=l*1.75;R(r,m,w,B.useMaxWidth),r.attr("viewBox",`${d.x-B.padding} ${d.y-B.padding} `+l+" "+m)},tt=e=>e?e.length*B.fontSizeFactor:1,A=(e,i,o,c,s,g,p)=>{const a=new C({compound:!0,multigraph:!0});let r,y=!0;for(r=0;r{const f=h.parentElement;let S=0,M=0;f&&(f.parentElement&&(S=f.parentElement.getBBox().width),M=parseInt(f.getAttribute("data-x-shift"),10),Number.isNaN(M)&&(M=0)),h.setAttribute("x1",0-M+8),h.setAttribute("x2",S-M-8)})):b.debug("No Node "+n+": "+JSON.stringify(a.node(n)))});let E=w.getBBox();a.edges().forEach(function(n){n!==void 0&&a.edge(n)!==void 0&&(b.debug("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(a.edge(n))),K(i,a.edge(n),a.edge(n).relation))}),E=w.getBBox();const k={id:o||"root",label:o||"root",width:0,height:0};return k.width=E.width+2*B.padding,k.height=E.height+2*B.padding,b.debug("Doc rendered",k,a),k},et={setConf:Q,draw:D},ct={parser:P,db:N,renderer:et,styles:W,init:e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute,N.clear()}};export{ct as diagram}; diff --git a/assets/stateDiagram-v2-2671c3d1-YYOgeGqg.js b/assets/stateDiagram-v2-2671c3d1-QZ9kVaW-.js similarity index 92% rename from assets/stateDiagram-v2-2671c3d1-YYOgeGqg.js rename to assets/stateDiagram-v2-2671c3d1-QZ9kVaW-.js index c54825d..7f65256 100644 --- a/assets/stateDiagram-v2-2671c3d1-YYOgeGqg.js +++ b/assets/stateDiagram-v2-2671c3d1-QZ9kVaW-.js @@ -1 +1 @@ -import{p as J,d as B,s as Q,D as H,a as X,S as Z,b as F,c as I}from"./styles-bbc3fe3b-It40AHsg.js";import{G as tt}from"./layout-wEoclKsW.js";import{l as E,c as g,h as x,y as et,i as ot,j as w}from"./mermaid.core-ygY5oRaR.js";import{r as st}from"./index-67a42d7d-B7ItSCR5.js";import"./app-RP31lnfq.js";import"./edges-80f1ebb6-89E8mCFH.js";import"./createText-aebacdfe-CTBuskZ8.js";import"./line-EJoUorMM.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const h="rect",C="rectWithTitle",nt="start",ct="end",it="divider",rt="roundedWithTitle",lt="note",at="noteGroup",_="statediagram",dt="state",Et=`${_}-${dt}`,U="transition",St="note",Tt="note-edge",pt=`${U} ${Tt}`,_t=`${_}-${St}`,ut="cluster",Dt=`${_}-${ut}`,bt="cluster-alt",ft=`${_}-${bt}`,V="parent",Y="note",At="state",N="----",ht=`${N}${Y}`,M=`${N}${V}`,W="fill:none",z="fill: #333",m="c",j="text",q="normal";let y={},d=0;const yt=function(t){const n=Object.keys(t);for(const e of n)t[e]},gt=function(t,n){return n.db.extract(n.db.getRootDocV2()),n.db.getClasses()};function $t(t){return t==null?"":t.classes?t.classes.join(" "):""}function R(t="",n=0,e="",c=N){const i=e!==null&&e.length>0?`${c}${e}`:"";return`${At}-${t}${i}-${n}`}const A=(t,n,e,c,i,r)=>{const o=e.id,u=$t(c[o]);if(o!=="root"){let T=h;e.start===!0&&(T=nt),e.start===!1&&(T=ct),e.type!==H&&(T=e.type),y[o]||(y[o]={id:o,shape:T,description:w.sanitizeText(o,g()),classes:`${u} ${Et}`});const s=y[o];e.description&&(Array.isArray(s.description)?(s.shape=C,s.description.push(e.description)):s.description.length>0?(s.shape=C,s.description===o?s.description=[e.description]:s.description=[s.description,e.description]):(s.shape=h,s.description=e.description),s.description=w.sanitizeTextOrArray(s.description,g())),s.description.length===1&&s.shape===C&&(s.shape=h),!s.type&&e.doc&&(E.info("Setting cluster for ",o,G(e)),s.type="group",s.dir=G(e),s.shape=e.type===X?it:rt,s.classes=s.classes+" "+Dt+" "+(r?ft:""));const p={labelStyle:"",shape:s.shape,labelText:s.description,classes:s.classes,style:"",id:o,dir:s.dir,domId:R(o,d),type:s.type,padding:15};if(p.centerLabel=!0,e.note){const l={labelStyle:"",shape:lt,labelText:e.note.text,classes:_t,style:"",id:o+ht+"-"+d,domId:R(o,d,Y),type:s.type,padding:15},a={labelStyle:"",shape:at,labelText:e.note.text,classes:s.classes,style:"",id:o+M,domId:R(o,d,V),type:"group",padding:0};d++;const D=o+M;t.setNode(D,a),t.setNode(l.id,l),t.setNode(o,p),t.setParent(o,D),t.setParent(l.id,D);let S=o,b=l.id;e.note.position==="left of"&&(S=l.id,b=o),t.setEdge(S,b,{arrowhead:"none",arrowType:"",style:W,labelStyle:"",classes:pt,arrowheadStyle:z,labelpos:m,labelType:j,thickness:q})}else t.setNode(o,p)}n&&n.id!=="root"&&(E.trace("Setting node ",o," to be child of its parent ",n.id),t.setParent(o,n.id)),e.doc&&(E.trace("Adding nodes children "),xt(t,e,e.doc,c,i,!r))},xt=(t,n,e,c,i,r)=>{E.trace("items",e),e.forEach(o=>{switch(o.stmt){case F:A(t,n,o,c,i,r);break;case H:A(t,n,o,c,i,r);break;case Z:{A(t,n,o.state1,c,i,r),A(t,n,o.state2,c,i,r);const u={id:"edge"+d,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:W,labelStyle:"",label:w.sanitizeText(o.description,g()),arrowheadStyle:z,labelpos:m,labelType:j,thickness:q,classes:U};t.setEdge(o.state1.id,o.state2.id,u,d),d++}break}})},G=(t,n=I)=>{let e=n;if(t.doc)for(let c=0;c{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,B.clear()}};export{Ht as diagram}; +import{p as J,d as B,s as Q,D as H,a as X,S as Z,b as F,c as I}from"./styles-bbc3fe3b-rQ9hJQeS.js";import{G as tt}from"./layout-6DvG_ICF.js";import{l as E,c as g,h as x,y as et,i as ot,j as w}from"./mermaid.core-YBgJFCkH.js";import{r as st}from"./index-67a42d7d-iblPHmxF.js";import"./app-0NopiYEV.js";import"./edges-80f1ebb6-hR1YO9QC.js";import"./createText-aebacdfe-VuGI-o_f.js";import"./line-QxBjBe1b.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const h="rect",C="rectWithTitle",nt="start",ct="end",it="divider",rt="roundedWithTitle",lt="note",at="noteGroup",_="statediagram",dt="state",Et=`${_}-${dt}`,U="transition",St="note",Tt="note-edge",pt=`${U} ${Tt}`,_t=`${_}-${St}`,ut="cluster",Dt=`${_}-${ut}`,bt="cluster-alt",ft=`${_}-${bt}`,V="parent",Y="note",At="state",N="----",ht=`${N}${Y}`,M=`${N}${V}`,W="fill:none",z="fill: #333",m="c",j="text",q="normal";let y={},d=0;const yt=function(t){const n=Object.keys(t);for(const e of n)t[e]},gt=function(t,n){return n.db.extract(n.db.getRootDocV2()),n.db.getClasses()};function $t(t){return t==null?"":t.classes?t.classes.join(" "):""}function R(t="",n=0,e="",c=N){const i=e!==null&&e.length>0?`${c}${e}`:"";return`${At}-${t}${i}-${n}`}const A=(t,n,e,c,i,r)=>{const o=e.id,u=$t(c[o]);if(o!=="root"){let T=h;e.start===!0&&(T=nt),e.start===!1&&(T=ct),e.type!==H&&(T=e.type),y[o]||(y[o]={id:o,shape:T,description:w.sanitizeText(o,g()),classes:`${u} ${Et}`});const s=y[o];e.description&&(Array.isArray(s.description)?(s.shape=C,s.description.push(e.description)):s.description.length>0?(s.shape=C,s.description===o?s.description=[e.description]:s.description=[s.description,e.description]):(s.shape=h,s.description=e.description),s.description=w.sanitizeTextOrArray(s.description,g())),s.description.length===1&&s.shape===C&&(s.shape=h),!s.type&&e.doc&&(E.info("Setting cluster for ",o,G(e)),s.type="group",s.dir=G(e),s.shape=e.type===X?it:rt,s.classes=s.classes+" "+Dt+" "+(r?ft:""));const p={labelStyle:"",shape:s.shape,labelText:s.description,classes:s.classes,style:"",id:o,dir:s.dir,domId:R(o,d),type:s.type,padding:15};if(p.centerLabel=!0,e.note){const l={labelStyle:"",shape:lt,labelText:e.note.text,classes:_t,style:"",id:o+ht+"-"+d,domId:R(o,d,Y),type:s.type,padding:15},a={labelStyle:"",shape:at,labelText:e.note.text,classes:s.classes,style:"",id:o+M,domId:R(o,d,V),type:"group",padding:0};d++;const D=o+M;t.setNode(D,a),t.setNode(l.id,l),t.setNode(o,p),t.setParent(o,D),t.setParent(l.id,D);let S=o,b=l.id;e.note.position==="left of"&&(S=l.id,b=o),t.setEdge(S,b,{arrowhead:"none",arrowType:"",style:W,labelStyle:"",classes:pt,arrowheadStyle:z,labelpos:m,labelType:j,thickness:q})}else t.setNode(o,p)}n&&n.id!=="root"&&(E.trace("Setting node ",o," to be child of its parent ",n.id),t.setParent(o,n.id)),e.doc&&(E.trace("Adding nodes children "),xt(t,e,e.doc,c,i,!r))},xt=(t,n,e,c,i,r)=>{E.trace("items",e),e.forEach(o=>{switch(o.stmt){case F:A(t,n,o,c,i,r);break;case H:A(t,n,o,c,i,r);break;case Z:{A(t,n,o.state1,c,i,r),A(t,n,o.state2,c,i,r);const u={id:"edge"+d,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:W,labelStyle:"",label:w.sanitizeText(o.description,g()),arrowheadStyle:z,labelpos:m,labelType:j,thickness:q,classes:U};t.setEdge(o.state1.id,o.state2.id,u,d),d++}break}})},G=(t,n=I)=>{let e=n;if(t.doc)for(let c=0;c{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,B.clear()}};export{Ht as diagram}; diff --git a/assets/styles-4ba6ed67-2KGnpqeU.js b/assets/styles-4ba6ed67-LzHEaVgv.js similarity index 99% rename from assets/styles-4ba6ed67-2KGnpqeU.js rename to assets/styles-4ba6ed67-LzHEaVgv.js index 6282d06..170bb0a 100644 --- a/assets/styles-4ba6ed67-2KGnpqeU.js +++ b/assets/styles-4ba6ed67-LzHEaVgv.js @@ -1,4 +1,4 @@ -import{s as Xe,g as We,a as qe,b as He,c as F,v as Je,x as Ze,j as v,z as $e,l as et,y as Pe,h as U,d as tt,ar as ye}from"./mermaid.core-ygY5oRaR.js";var De=function(){var e=function(L,u,a,o){for(a=a||{},o=L.length;o--;a[L[o]]=u);return a},n=[1,16],r=[1,17],h=[1,18],l=[1,37],A=[1,38],g=[1,24],D=[1,22],B=[1,23],_=[1,29],ne=[1,30],ue=[1,31],re=[1,32],ae=[1,33],le=[1,34],ce=[1,25],oe=[1,26],he=[1,27],Ae=[1,28],d=[1,42],E=[1,39],C=[1,40],m=[1,41],k=[1,43],pe=[1,9],c=[1,8,9],Y=[1,54],K=[1,55],j=[1,56],Q=[1,57],X=[1,58],fe=[1,59],de=[1,60],W=[1,8,9,38],Ne=[1,71],V=[1,8,9,12,13,21,36,38,41,58,59,60,61,62,63,64,69,71],q=[1,8,9,12,13,19,21,36,38,41,45,58,59,60,61,62,63,64,69,71,84,86,87,88,89],H=[13,84,86,87,88,89],M=[13,63,64,84,86,87,88,89],ve=[13,58,59,60,61,62,84,86,87,88,89],Ee=[1,90],Ce=[1,8,9,36,38,41],J=[1,8,9,21],me={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,className:17,classLiteralName:18,GENERICTYPE:19,relationStatement:20,LABEL:21,namespaceStatement:22,classStatement:23,memberStatement:24,annotationStatement:25,clickStatement:26,cssClassStatement:27,noteStatement:28,direction:29,acc_title:30,acc_title_value:31,acc_descr:32,acc_descr_value:33,acc_descr_multiline_value:34,namespaceIdentifier:35,STRUCT_START:36,classStatements:37,STRUCT_STOP:38,NAMESPACE:39,classIdentifier:40,STYLE_SEPARATOR:41,members:42,CLASS:43,ANNOTATION_START:44,ANNOTATION_END:45,MEMBER:46,SEPARATOR:47,relation:48,NOTE_FOR:49,noteText:50,NOTE:51,direction_tb:52,direction_bt:53,direction_rl:54,direction_lr:55,relationType:56,lineType:57,AGGREGATION:58,EXTENSION:59,COMPOSITION:60,DEPENDENCY:61,LOLLIPOP:62,LINE:63,DOTTED_LINE:64,CALLBACK:65,LINK:66,LINK_TARGET:67,CLICK:68,CALLBACK_NAME:69,CALLBACK_ARGS:70,HREF:71,CSSCLASS:72,commentToken:73,textToken:74,graphCodeTokens:75,textNoTagsToken:76,TAGSTART:77,TAGEND:78,"==":79,"--":80,PCT:81,DEFAULT:82,SPACE:83,MINUS:84,keywords:85,UNICODE_TEXT:86,NUM:87,ALPHA:88,BQUOTE_STR:89,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",19:"GENERICTYPE",21:"LABEL",30:"acc_title",31:"acc_title_value",32:"acc_descr",33:"acc_descr_value",34:"acc_descr_multiline_value",36:"STRUCT_START",38:"STRUCT_STOP",39:"NAMESPACE",41:"STYLE_SEPARATOR",43:"CLASS",44:"ANNOTATION_START",45:"ANNOTATION_END",46:"MEMBER",47:"SEPARATOR",49:"NOTE_FOR",51:"NOTE",52:"direction_tb",53:"direction_bt",54:"direction_rl",55:"direction_lr",58:"AGGREGATION",59:"EXTENSION",60:"COMPOSITION",61:"DEPENDENCY",62:"LOLLIPOP",63:"LINE",64:"DOTTED_LINE",65:"CALLBACK",66:"LINK",67:"LINK_TARGET",68:"CLICK",69:"CALLBACK_NAME",70:"CALLBACK_ARGS",71:"HREF",72:"CSSCLASS",75:"graphCodeTokens",77:"TAGSTART",78:"TAGEND",79:"==",80:"--",81:"PCT",82:"DEFAULT",83:"SPACE",84:"MINUS",85:"keywords",86:"UNICODE_TEXT",87:"NUM",88:"ALPHA",89:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,2],[17,1],[17,1],[17,2],[17,2],[17,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[22,4],[22,5],[35,2],[37,1],[37,2],[37,3],[23,1],[23,3],[23,4],[23,6],[40,2],[40,3],[25,4],[42,1],[42,2],[24,1],[24,2],[24,1],[24,1],[20,3],[20,4],[20,4],[20,5],[28,3],[28,2],[29,1],[29,1],[29,1],[29,1],[48,3],[48,2],[48,2],[48,1],[56,1],[56,1],[56,1],[56,1],[56,1],[57,1],[57,1],[26,3],[26,4],[26,3],[26,4],[26,4],[26,5],[26,3],[26,4],[26,4],[26,5],[26,4],[26,5],[26,5],[26,6],[27,3],[73,1],[73,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[76,1],[76,1],[76,1],[76,1],[16,1],[16,1],[16,1],[16,1],[18,1],[50,1]],performAction:function(u,a,o,i,p,t,G){var s=t.length-1;switch(p){case 8:this.$=t[s-1];break;case 9:case 11:case 12:this.$=t[s];break;case 10:case 13:this.$=t[s-1]+t[s];break;case 14:case 15:this.$=t[s-1]+"~"+t[s]+"~";break;case 16:i.addRelation(t[s]);break;case 17:t[s-1].title=i.cleanupLabel(t[s]),i.addRelation(t[s-1]);break;case 26:this.$=t[s].trim(),i.setAccTitle(this.$);break;case 27:case 28:this.$=t[s].trim(),i.setAccDescription(this.$);break;case 29:i.addClassesToNamespace(t[s-3],t[s-1]);break;case 30:i.addClassesToNamespace(t[s-4],t[s-1]);break;case 31:this.$=t[s],i.addNamespace(t[s]);break;case 32:this.$=[t[s]];break;case 33:this.$=[t[s-1]];break;case 34:t[s].unshift(t[s-2]),this.$=t[s];break;case 36:i.setCssClass(t[s-2],t[s]);break;case 37:i.addMembers(t[s-3],t[s-1]);break;case 38:i.setCssClass(t[s-5],t[s-3]),i.addMembers(t[s-5],t[s-1]);break;case 39:this.$=t[s],i.addClass(t[s]);break;case 40:this.$=t[s-1],i.addClass(t[s-1]),i.setClassLabel(t[s-1],t[s]);break;case 41:i.addAnnotation(t[s],t[s-2]);break;case 42:this.$=[t[s]];break;case 43:t[s].push(t[s-1]),this.$=t[s];break;case 44:break;case 45:i.addMember(t[s-1],i.cleanupLabel(t[s]));break;case 46:break;case 47:break;case 48:this.$={id1:t[s-2],id2:t[s],relation:t[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 49:this.$={id1:t[s-3],id2:t[s],relation:t[s-1],relationTitle1:t[s-2],relationTitle2:"none"};break;case 50:this.$={id1:t[s-3],id2:t[s],relation:t[s-2],relationTitle1:"none",relationTitle2:t[s-1]};break;case 51:this.$={id1:t[s-4],id2:t[s],relation:t[s-2],relationTitle1:t[s-3],relationTitle2:t[s-1]};break;case 52:i.addNote(t[s],t[s-1]);break;case 53:i.addNote(t[s]);break;case 54:i.setDirection("TB");break;case 55:i.setDirection("BT");break;case 56:i.setDirection("RL");break;case 57:i.setDirection("LR");break;case 58:this.$={type1:t[s-2],type2:t[s],lineType:t[s-1]};break;case 59:this.$={type1:"none",type2:t[s],lineType:t[s-1]};break;case 60:this.$={type1:t[s-1],type2:"none",lineType:t[s]};break;case 61:this.$={type1:"none",type2:"none",lineType:t[s]};break;case 62:this.$=i.relationType.AGGREGATION;break;case 63:this.$=i.relationType.EXTENSION;break;case 64:this.$=i.relationType.COMPOSITION;break;case 65:this.$=i.relationType.DEPENDENCY;break;case 66:this.$=i.relationType.LOLLIPOP;break;case 67:this.$=i.lineType.LINE;break;case 68:this.$=i.lineType.DOTTED_LINE;break;case 69:case 75:this.$=t[s-2],i.setClickEvent(t[s-1],t[s]);break;case 70:case 76:this.$=t[s-3],i.setClickEvent(t[s-2],t[s-1]),i.setTooltip(t[s-2],t[s]);break;case 71:this.$=t[s-2],i.setLink(t[s-1],t[s]);break;case 72:this.$=t[s-3],i.setLink(t[s-2],t[s-1],t[s]);break;case 73:this.$=t[s-3],i.setLink(t[s-2],t[s-1]),i.setTooltip(t[s-2],t[s]);break;case 74:this.$=t[s-4],i.setLink(t[s-3],t[s-2],t[s]),i.setTooltip(t[s-3],t[s-1]);break;case 77:this.$=t[s-3],i.setClickEvent(t[s-2],t[s-1],t[s]);break;case 78:this.$=t[s-4],i.setClickEvent(t[s-3],t[s-2],t[s-1]),i.setTooltip(t[s-3],t[s]);break;case 79:this.$=t[s-3],i.setLink(t[s-2],t[s]);break;case 80:this.$=t[s-4],i.setLink(t[s-3],t[s-1],t[s]);break;case 81:this.$=t[s-4],i.setLink(t[s-3],t[s-1]),i.setTooltip(t[s-3],t[s]);break;case 82:this.$=t[s-5],i.setLink(t[s-4],t[s-2],t[s]),i.setTooltip(t[s-4],t[s-1]);break;case 83:i.setCssClass(t[s-1],t[s]);break}},table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:35,17:19,18:36,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:n,32:r,34:h,35:20,39:l,40:21,43:A,44:g,46:D,47:B,49:_,51:ne,52:ue,53:re,54:ae,55:le,65:ce,66:oe,68:he,72:Ae,84:d,86:E,87:C,88:m,89:k},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(pe,[2,5],{8:[1,44]}),{8:[1,45]},e(c,[2,16],{21:[1,46]}),e(c,[2,18]),e(c,[2,19]),e(c,[2,20]),e(c,[2,21]),e(c,[2,22]),e(c,[2,23]),e(c,[2,24]),e(c,[2,25]),{31:[1,47]},{33:[1,48]},e(c,[2,28]),e(c,[2,44],{48:49,56:52,57:53,13:[1,50],21:[1,51],58:Y,59:K,60:j,61:Q,62:X,63:fe,64:de}),{36:[1,61]},e(W,[2,35],{36:[1,63],41:[1,62]}),e(c,[2,46]),e(c,[2,47]),{16:64,84:d,86:E,87:C,88:m},{16:35,17:65,18:36,84:d,86:E,87:C,88:m,89:k},{16:35,17:66,18:36,84:d,86:E,87:C,88:m,89:k},{16:35,17:67,18:36,84:d,86:E,87:C,88:m,89:k},{13:[1,68]},{16:35,17:69,18:36,84:d,86:E,87:C,88:m,89:k},{13:Ne,50:70},e(c,[2,54]),e(c,[2,55]),e(c,[2,56]),e(c,[2,57]),e(V,[2,11],{16:35,18:36,17:72,19:[1,73],84:d,86:E,87:C,88:m,89:k}),e(V,[2,12],{19:[1,74]}),{15:75,16:76,84:d,86:E,87:C,88:m},{16:35,17:77,18:36,84:d,86:E,87:C,88:m,89:k},e(q,[2,97]),e(q,[2,98]),e(q,[2,99]),e(q,[2,100]),e([1,8,9,12,13,19,21,36,38,41,58,59,60,61,62,63,64,69,71],[2,101]),e(pe,[2,6],{10:5,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,17:19,35:20,40:21,16:35,18:36,5:78,30:n,32:r,34:h,39:l,43:A,44:g,46:D,47:B,49:_,51:ne,52:ue,53:re,54:ae,55:le,65:ce,66:oe,68:he,72:Ae,84:d,86:E,87:C,88:m,89:k}),{5:79,10:5,16:35,17:19,18:36,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:n,32:r,34:h,35:20,39:l,40:21,43:A,44:g,46:D,47:B,49:_,51:ne,52:ue,53:re,54:ae,55:le,65:ce,66:oe,68:he,72:Ae,84:d,86:E,87:C,88:m,89:k},e(c,[2,17]),e(c,[2,26]),e(c,[2,27]),{13:[1,81],16:35,17:80,18:36,84:d,86:E,87:C,88:m,89:k},{48:82,56:52,57:53,58:Y,59:K,60:j,61:Q,62:X,63:fe,64:de},e(c,[2,45]),{57:83,63:fe,64:de},e(H,[2,61],{56:84,58:Y,59:K,60:j,61:Q,62:X}),e(M,[2,62]),e(M,[2,63]),e(M,[2,64]),e(M,[2,65]),e(M,[2,66]),e(ve,[2,67]),e(ve,[2,68]),{8:[1,86],23:87,37:85,40:21,43:A},{16:88,84:d,86:E,87:C,88:m},{42:89,46:Ee},{45:[1,91]},{13:[1,92]},{13:[1,93]},{69:[1,94],71:[1,95]},{16:96,84:d,86:E,87:C,88:m},{13:Ne,50:97},e(c,[2,53]),e(c,[2,102]),e(V,[2,13]),e(V,[2,14]),e(V,[2,15]),{36:[2,31]},{15:98,16:76,36:[2,9],84:d,86:E,87:C,88:m},e(Ce,[2,39],{11:99,12:[1,100]}),e(pe,[2,7]),{9:[1,101]},e(J,[2,48]),{16:35,17:102,18:36,84:d,86:E,87:C,88:m,89:k},{13:[1,104],16:35,17:103,18:36,84:d,86:E,87:C,88:m,89:k},e(H,[2,60],{56:105,58:Y,59:K,60:j,61:Q,62:X}),e(H,[2,59]),{38:[1,106]},{23:87,37:107,40:21,43:A},{8:[1,108],38:[2,32]},e(W,[2,36],{36:[1,109]}),{38:[1,110]},{38:[2,42],42:111,46:Ee},{16:35,17:112,18:36,84:d,86:E,87:C,88:m,89:k},e(c,[2,69],{13:[1,113]}),e(c,[2,71],{13:[1,115],67:[1,114]}),e(c,[2,75],{13:[1,116],70:[1,117]}),{13:[1,118]},e(c,[2,83]),e(c,[2,52]),{36:[2,10]},e(Ce,[2,40]),{13:[1,119]},{1:[2,4]},e(J,[2,50]),e(J,[2,49]),{16:35,17:120,18:36,84:d,86:E,87:C,88:m,89:k},e(H,[2,58]),e(c,[2,29]),{38:[1,121]},{23:87,37:122,38:[2,33],40:21,43:A},{42:123,46:Ee},e(W,[2,37]),{38:[2,43]},e(c,[2,41]),e(c,[2,70]),e(c,[2,72]),e(c,[2,73],{67:[1,124]}),e(c,[2,76]),e(c,[2,77],{13:[1,125]}),e(c,[2,79],{13:[1,127],67:[1,126]}),{14:[1,128]},e(J,[2,51]),e(c,[2,30]),{38:[2,34]},{38:[1,129]},e(c,[2,74]),e(c,[2,78]),e(c,[2,80]),e(c,[2,81],{67:[1,130]}),e(Ce,[2,8]),e(W,[2,38]),e(c,[2,82])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],75:[2,31],98:[2,10],101:[2,4],111:[2,43],122:[2,34]},parseError:function(u,a){if(a.recoverable)this.trace(u);else{var o=new Error(u);throw o.hash=a,o}},parse:function(u){var a=this,o=[0],i=[],p=[null],t=[],G=this.table,s="",Z=0,Le=0,Ye=2,xe=1,Ke=t.slice.call(arguments,1),b=Object.create(this.lexer),I={yy:{}};for(var ge in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ge)&&(I.yy[ge]=this.yy[ge]);b.setInput(u,I.yy),I.yy.lexer=b,I.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var ke=b.yylloc;t.push(ke);var je=b.options&&b.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Qe(){var N;return N=i.pop()||b.lex()||xe,typeof N!="number"&&(N instanceof Array&&(i=N,N=i.pop()),N=a.symbols_[N]||N),N}for(var T,O,y,Te,w={},$,S,Ie,ee;;){if(O=o[o.length-1],this.defaultActions[O]?y=this.defaultActions[O]:((T===null||typeof T>"u")&&(T=Qe()),y=G[O]&&G[O][T]),typeof y>"u"||!y.length||!y[0]){var Fe="";ee=[];for($ in G[O])this.terminals_[$]&&$>Ye&&ee.push("'"+this.terminals_[$]+"'");b.showPosition?Fe="Parse error on line "+(Z+1)+`: +import{s as Xe,g as We,a as qe,b as He,c as F,v as Je,x as Ze,j as v,z as $e,l as et,y as Pe,h as U,d as tt,ar as ye}from"./mermaid.core-YBgJFCkH.js";var De=function(){var e=function(L,u,a,o){for(a=a||{},o=L.length;o--;a[L[o]]=u);return a},n=[1,16],r=[1,17],h=[1,18],l=[1,37],A=[1,38],g=[1,24],D=[1,22],B=[1,23],_=[1,29],ne=[1,30],ue=[1,31],re=[1,32],ae=[1,33],le=[1,34],ce=[1,25],oe=[1,26],he=[1,27],Ae=[1,28],d=[1,42],E=[1,39],C=[1,40],m=[1,41],k=[1,43],pe=[1,9],c=[1,8,9],Y=[1,54],K=[1,55],j=[1,56],Q=[1,57],X=[1,58],fe=[1,59],de=[1,60],W=[1,8,9,38],Ne=[1,71],V=[1,8,9,12,13,21,36,38,41,58,59,60,61,62,63,64,69,71],q=[1,8,9,12,13,19,21,36,38,41,45,58,59,60,61,62,63,64,69,71,84,86,87,88,89],H=[13,84,86,87,88,89],M=[13,63,64,84,86,87,88,89],ve=[13,58,59,60,61,62,84,86,87,88,89],Ee=[1,90],Ce=[1,8,9,36,38,41],J=[1,8,9,21],me={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,className:17,classLiteralName:18,GENERICTYPE:19,relationStatement:20,LABEL:21,namespaceStatement:22,classStatement:23,memberStatement:24,annotationStatement:25,clickStatement:26,cssClassStatement:27,noteStatement:28,direction:29,acc_title:30,acc_title_value:31,acc_descr:32,acc_descr_value:33,acc_descr_multiline_value:34,namespaceIdentifier:35,STRUCT_START:36,classStatements:37,STRUCT_STOP:38,NAMESPACE:39,classIdentifier:40,STYLE_SEPARATOR:41,members:42,CLASS:43,ANNOTATION_START:44,ANNOTATION_END:45,MEMBER:46,SEPARATOR:47,relation:48,NOTE_FOR:49,noteText:50,NOTE:51,direction_tb:52,direction_bt:53,direction_rl:54,direction_lr:55,relationType:56,lineType:57,AGGREGATION:58,EXTENSION:59,COMPOSITION:60,DEPENDENCY:61,LOLLIPOP:62,LINE:63,DOTTED_LINE:64,CALLBACK:65,LINK:66,LINK_TARGET:67,CLICK:68,CALLBACK_NAME:69,CALLBACK_ARGS:70,HREF:71,CSSCLASS:72,commentToken:73,textToken:74,graphCodeTokens:75,textNoTagsToken:76,TAGSTART:77,TAGEND:78,"==":79,"--":80,PCT:81,DEFAULT:82,SPACE:83,MINUS:84,keywords:85,UNICODE_TEXT:86,NUM:87,ALPHA:88,BQUOTE_STR:89,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",19:"GENERICTYPE",21:"LABEL",30:"acc_title",31:"acc_title_value",32:"acc_descr",33:"acc_descr_value",34:"acc_descr_multiline_value",36:"STRUCT_START",38:"STRUCT_STOP",39:"NAMESPACE",41:"STYLE_SEPARATOR",43:"CLASS",44:"ANNOTATION_START",45:"ANNOTATION_END",46:"MEMBER",47:"SEPARATOR",49:"NOTE_FOR",51:"NOTE",52:"direction_tb",53:"direction_bt",54:"direction_rl",55:"direction_lr",58:"AGGREGATION",59:"EXTENSION",60:"COMPOSITION",61:"DEPENDENCY",62:"LOLLIPOP",63:"LINE",64:"DOTTED_LINE",65:"CALLBACK",66:"LINK",67:"LINK_TARGET",68:"CLICK",69:"CALLBACK_NAME",70:"CALLBACK_ARGS",71:"HREF",72:"CSSCLASS",75:"graphCodeTokens",77:"TAGSTART",78:"TAGEND",79:"==",80:"--",81:"PCT",82:"DEFAULT",83:"SPACE",84:"MINUS",85:"keywords",86:"UNICODE_TEXT",87:"NUM",88:"ALPHA",89:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,2],[17,1],[17,1],[17,2],[17,2],[17,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[22,4],[22,5],[35,2],[37,1],[37,2],[37,3],[23,1],[23,3],[23,4],[23,6],[40,2],[40,3],[25,4],[42,1],[42,2],[24,1],[24,2],[24,1],[24,1],[20,3],[20,4],[20,4],[20,5],[28,3],[28,2],[29,1],[29,1],[29,1],[29,1],[48,3],[48,2],[48,2],[48,1],[56,1],[56,1],[56,1],[56,1],[56,1],[57,1],[57,1],[26,3],[26,4],[26,3],[26,4],[26,4],[26,5],[26,3],[26,4],[26,4],[26,5],[26,4],[26,5],[26,5],[26,6],[27,3],[73,1],[73,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[76,1],[76,1],[76,1],[76,1],[16,1],[16,1],[16,1],[16,1],[18,1],[50,1]],performAction:function(u,a,o,i,p,t,G){var s=t.length-1;switch(p){case 8:this.$=t[s-1];break;case 9:case 11:case 12:this.$=t[s];break;case 10:case 13:this.$=t[s-1]+t[s];break;case 14:case 15:this.$=t[s-1]+"~"+t[s]+"~";break;case 16:i.addRelation(t[s]);break;case 17:t[s-1].title=i.cleanupLabel(t[s]),i.addRelation(t[s-1]);break;case 26:this.$=t[s].trim(),i.setAccTitle(this.$);break;case 27:case 28:this.$=t[s].trim(),i.setAccDescription(this.$);break;case 29:i.addClassesToNamespace(t[s-3],t[s-1]);break;case 30:i.addClassesToNamespace(t[s-4],t[s-1]);break;case 31:this.$=t[s],i.addNamespace(t[s]);break;case 32:this.$=[t[s]];break;case 33:this.$=[t[s-1]];break;case 34:t[s].unshift(t[s-2]),this.$=t[s];break;case 36:i.setCssClass(t[s-2],t[s]);break;case 37:i.addMembers(t[s-3],t[s-1]);break;case 38:i.setCssClass(t[s-5],t[s-3]),i.addMembers(t[s-5],t[s-1]);break;case 39:this.$=t[s],i.addClass(t[s]);break;case 40:this.$=t[s-1],i.addClass(t[s-1]),i.setClassLabel(t[s-1],t[s]);break;case 41:i.addAnnotation(t[s],t[s-2]);break;case 42:this.$=[t[s]];break;case 43:t[s].push(t[s-1]),this.$=t[s];break;case 44:break;case 45:i.addMember(t[s-1],i.cleanupLabel(t[s]));break;case 46:break;case 47:break;case 48:this.$={id1:t[s-2],id2:t[s],relation:t[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 49:this.$={id1:t[s-3],id2:t[s],relation:t[s-1],relationTitle1:t[s-2],relationTitle2:"none"};break;case 50:this.$={id1:t[s-3],id2:t[s],relation:t[s-2],relationTitle1:"none",relationTitle2:t[s-1]};break;case 51:this.$={id1:t[s-4],id2:t[s],relation:t[s-2],relationTitle1:t[s-3],relationTitle2:t[s-1]};break;case 52:i.addNote(t[s],t[s-1]);break;case 53:i.addNote(t[s]);break;case 54:i.setDirection("TB");break;case 55:i.setDirection("BT");break;case 56:i.setDirection("RL");break;case 57:i.setDirection("LR");break;case 58:this.$={type1:t[s-2],type2:t[s],lineType:t[s-1]};break;case 59:this.$={type1:"none",type2:t[s],lineType:t[s-1]};break;case 60:this.$={type1:t[s-1],type2:"none",lineType:t[s]};break;case 61:this.$={type1:"none",type2:"none",lineType:t[s]};break;case 62:this.$=i.relationType.AGGREGATION;break;case 63:this.$=i.relationType.EXTENSION;break;case 64:this.$=i.relationType.COMPOSITION;break;case 65:this.$=i.relationType.DEPENDENCY;break;case 66:this.$=i.relationType.LOLLIPOP;break;case 67:this.$=i.lineType.LINE;break;case 68:this.$=i.lineType.DOTTED_LINE;break;case 69:case 75:this.$=t[s-2],i.setClickEvent(t[s-1],t[s]);break;case 70:case 76:this.$=t[s-3],i.setClickEvent(t[s-2],t[s-1]),i.setTooltip(t[s-2],t[s]);break;case 71:this.$=t[s-2],i.setLink(t[s-1],t[s]);break;case 72:this.$=t[s-3],i.setLink(t[s-2],t[s-1],t[s]);break;case 73:this.$=t[s-3],i.setLink(t[s-2],t[s-1]),i.setTooltip(t[s-2],t[s]);break;case 74:this.$=t[s-4],i.setLink(t[s-3],t[s-2],t[s]),i.setTooltip(t[s-3],t[s-1]);break;case 77:this.$=t[s-3],i.setClickEvent(t[s-2],t[s-1],t[s]);break;case 78:this.$=t[s-4],i.setClickEvent(t[s-3],t[s-2],t[s-1]),i.setTooltip(t[s-3],t[s]);break;case 79:this.$=t[s-3],i.setLink(t[s-2],t[s]);break;case 80:this.$=t[s-4],i.setLink(t[s-3],t[s-1],t[s]);break;case 81:this.$=t[s-4],i.setLink(t[s-3],t[s-1]),i.setTooltip(t[s-3],t[s]);break;case 82:this.$=t[s-5],i.setLink(t[s-4],t[s-2],t[s]),i.setTooltip(t[s-4],t[s-1]);break;case 83:i.setCssClass(t[s-1],t[s]);break}},table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:35,17:19,18:36,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:n,32:r,34:h,35:20,39:l,40:21,43:A,44:g,46:D,47:B,49:_,51:ne,52:ue,53:re,54:ae,55:le,65:ce,66:oe,68:he,72:Ae,84:d,86:E,87:C,88:m,89:k},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(pe,[2,5],{8:[1,44]}),{8:[1,45]},e(c,[2,16],{21:[1,46]}),e(c,[2,18]),e(c,[2,19]),e(c,[2,20]),e(c,[2,21]),e(c,[2,22]),e(c,[2,23]),e(c,[2,24]),e(c,[2,25]),{31:[1,47]},{33:[1,48]},e(c,[2,28]),e(c,[2,44],{48:49,56:52,57:53,13:[1,50],21:[1,51],58:Y,59:K,60:j,61:Q,62:X,63:fe,64:de}),{36:[1,61]},e(W,[2,35],{36:[1,63],41:[1,62]}),e(c,[2,46]),e(c,[2,47]),{16:64,84:d,86:E,87:C,88:m},{16:35,17:65,18:36,84:d,86:E,87:C,88:m,89:k},{16:35,17:66,18:36,84:d,86:E,87:C,88:m,89:k},{16:35,17:67,18:36,84:d,86:E,87:C,88:m,89:k},{13:[1,68]},{16:35,17:69,18:36,84:d,86:E,87:C,88:m,89:k},{13:Ne,50:70},e(c,[2,54]),e(c,[2,55]),e(c,[2,56]),e(c,[2,57]),e(V,[2,11],{16:35,18:36,17:72,19:[1,73],84:d,86:E,87:C,88:m,89:k}),e(V,[2,12],{19:[1,74]}),{15:75,16:76,84:d,86:E,87:C,88:m},{16:35,17:77,18:36,84:d,86:E,87:C,88:m,89:k},e(q,[2,97]),e(q,[2,98]),e(q,[2,99]),e(q,[2,100]),e([1,8,9,12,13,19,21,36,38,41,58,59,60,61,62,63,64,69,71],[2,101]),e(pe,[2,6],{10:5,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,17:19,35:20,40:21,16:35,18:36,5:78,30:n,32:r,34:h,39:l,43:A,44:g,46:D,47:B,49:_,51:ne,52:ue,53:re,54:ae,55:le,65:ce,66:oe,68:he,72:Ae,84:d,86:E,87:C,88:m,89:k}),{5:79,10:5,16:35,17:19,18:36,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:n,32:r,34:h,35:20,39:l,40:21,43:A,44:g,46:D,47:B,49:_,51:ne,52:ue,53:re,54:ae,55:le,65:ce,66:oe,68:he,72:Ae,84:d,86:E,87:C,88:m,89:k},e(c,[2,17]),e(c,[2,26]),e(c,[2,27]),{13:[1,81],16:35,17:80,18:36,84:d,86:E,87:C,88:m,89:k},{48:82,56:52,57:53,58:Y,59:K,60:j,61:Q,62:X,63:fe,64:de},e(c,[2,45]),{57:83,63:fe,64:de},e(H,[2,61],{56:84,58:Y,59:K,60:j,61:Q,62:X}),e(M,[2,62]),e(M,[2,63]),e(M,[2,64]),e(M,[2,65]),e(M,[2,66]),e(ve,[2,67]),e(ve,[2,68]),{8:[1,86],23:87,37:85,40:21,43:A},{16:88,84:d,86:E,87:C,88:m},{42:89,46:Ee},{45:[1,91]},{13:[1,92]},{13:[1,93]},{69:[1,94],71:[1,95]},{16:96,84:d,86:E,87:C,88:m},{13:Ne,50:97},e(c,[2,53]),e(c,[2,102]),e(V,[2,13]),e(V,[2,14]),e(V,[2,15]),{36:[2,31]},{15:98,16:76,36:[2,9],84:d,86:E,87:C,88:m},e(Ce,[2,39],{11:99,12:[1,100]}),e(pe,[2,7]),{9:[1,101]},e(J,[2,48]),{16:35,17:102,18:36,84:d,86:E,87:C,88:m,89:k},{13:[1,104],16:35,17:103,18:36,84:d,86:E,87:C,88:m,89:k},e(H,[2,60],{56:105,58:Y,59:K,60:j,61:Q,62:X}),e(H,[2,59]),{38:[1,106]},{23:87,37:107,40:21,43:A},{8:[1,108],38:[2,32]},e(W,[2,36],{36:[1,109]}),{38:[1,110]},{38:[2,42],42:111,46:Ee},{16:35,17:112,18:36,84:d,86:E,87:C,88:m,89:k},e(c,[2,69],{13:[1,113]}),e(c,[2,71],{13:[1,115],67:[1,114]}),e(c,[2,75],{13:[1,116],70:[1,117]}),{13:[1,118]},e(c,[2,83]),e(c,[2,52]),{36:[2,10]},e(Ce,[2,40]),{13:[1,119]},{1:[2,4]},e(J,[2,50]),e(J,[2,49]),{16:35,17:120,18:36,84:d,86:E,87:C,88:m,89:k},e(H,[2,58]),e(c,[2,29]),{38:[1,121]},{23:87,37:122,38:[2,33],40:21,43:A},{42:123,46:Ee},e(W,[2,37]),{38:[2,43]},e(c,[2,41]),e(c,[2,70]),e(c,[2,72]),e(c,[2,73],{67:[1,124]}),e(c,[2,76]),e(c,[2,77],{13:[1,125]}),e(c,[2,79],{13:[1,127],67:[1,126]}),{14:[1,128]},e(J,[2,51]),e(c,[2,30]),{38:[2,34]},{38:[1,129]},e(c,[2,74]),e(c,[2,78]),e(c,[2,80]),e(c,[2,81],{67:[1,130]}),e(Ce,[2,8]),e(W,[2,38]),e(c,[2,82])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],75:[2,31],98:[2,10],101:[2,4],111:[2,43],122:[2,34]},parseError:function(u,a){if(a.recoverable)this.trace(u);else{var o=new Error(u);throw o.hash=a,o}},parse:function(u){var a=this,o=[0],i=[],p=[null],t=[],G=this.table,s="",Z=0,Le=0,Ye=2,xe=1,Ke=t.slice.call(arguments,1),b=Object.create(this.lexer),I={yy:{}};for(var ge in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ge)&&(I.yy[ge]=this.yy[ge]);b.setInput(u,I.yy),I.yy.lexer=b,I.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var ke=b.yylloc;t.push(ke);var je=b.options&&b.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Qe(){var N;return N=i.pop()||b.lex()||xe,typeof N!="number"&&(N instanceof Array&&(i=N,N=i.pop()),N=a.symbols_[N]||N),N}for(var T,O,y,Te,w={},$,S,Ie,ee;;){if(O=o[o.length-1],this.defaultActions[O]?y=this.defaultActions[O]:((T===null||typeof T>"u")&&(T=Qe()),y=G[O]&&G[O][T]),typeof y>"u"||!y.length||!y[0]){var Fe="";ee=[];for($ in G[O])this.terminals_[$]&&$>Ye&&ee.push("'"+this.terminals_[$]+"'");b.showPosition?Fe="Parse error on line "+(Z+1)+`: `+b.showPosition()+` Expecting `+ee.join(", ")+", got '"+(this.terminals_[T]||T)+"'":Fe="Parse error on line "+(Z+1)+": Unexpected "+(T==xe?"end of input":"'"+(this.terminals_[T]||T)+"'"),this.parseError(Fe,{text:b.match,token:this.terminals_[T]||T,line:b.yylineno,loc:ke,expected:ee})}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+T);switch(y[0]){case 1:o.push(T),p.push(b.yytext),t.push(b.yylloc),o.push(y[1]),T=null,Le=b.yyleng,s=b.yytext,Z=b.yylineno,ke=b.yylloc;break;case 2:if(S=this.productions_[y[1]][1],w.$=p[p.length-S],w._$={first_line:t[t.length-(S||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(S||1)].first_column,last_column:t[t.length-1].last_column},je&&(w._$.range=[t[t.length-(S||1)].range[0],t[t.length-1].range[1]]),Te=this.performAction.apply(w,[s,Le,Z,I.yy,y[1],p,t].concat(Ke)),typeof Te<"u")return Te;S&&(o=o.slice(0,-1*S*2),p=p.slice(0,-1*S),t=t.slice(0,-1*S)),o.push(this.productions_[y[1]][0]),p.push(w.$),t.push(w._$),Ie=G[o[o.length-2]][o[o.length-1]],o.push(Ie);break;case 3:return!0}}return!0}},ze=function(){var L={EOF:1,parseError:function(a,o){if(this.yy.parser)this.yy.parser.parseError(a,o);else throw new Error(a)},setInput:function(u,a){return this.yy=a||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var a=u.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},unput:function(u){var a=u.length,o=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),o.length-1&&(this.yylineno-=o.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:o?(o.length===i.length?this.yylloc.first_column:0)+i[i.length-o.length].length-o[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(u){this.unput(this.match.slice(u))},pastInput:function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var u=this.pastInput(),a=new Array(u.length+1).join("-");return u+this.upcomingInput()+` diff --git a/assets/styles-b966c4ae-SzUJ3e4L.js b/assets/styles-b966c4ae-SzUJ3e4L.js deleted file mode 100644 index 2213e4b..0000000 --- a/assets/styles-b966c4ae-SzUJ3e4L.js +++ /dev/null @@ -1,110 +0,0 @@ -import{G as V}from"./layout-wEoclKsW.js";import{ag as D,ah as M,ai as R,aj as j,ak as F,al as U,ad as H,p as N,l as y,q as W,c as C,j as G,r as $,o as E,h as _,y as X,t as J,am as K}from"./mermaid.core-ygY5oRaR.js";import{r as Q}from"./index-67a42d7d-B7ItSCR5.js";function Y(e){return typeof e=="string"?new D([document.querySelectorAll(e)],[document.documentElement]):new D([R(e)],M)}const Z=(e,r)=>j.lang.round(F.parse(e)[r]),O=Z;function be(e,r){return!!e.children(r).length}function fe(e){return L(e.v)+":"+L(e.w)+":"+L(e.name)}var ee=/:/g;function L(e){return e?String(e).replace(ee,"\\:"):""}function te(e,r){r&&e.attr("style",r)}function ue(e,r,c){r&&e.attr("class",r).attr("class",c+" "+e.attr("class"))}function we(e,r){var c=r.graph();if(U(c)){var a=c.transition;if(H(a))return a(e)}return e}function le(e,r){var c=e.append("foreignObject").attr("width","100000"),a=c.append("xhtml:div");a.attr("xmlns","http://www.w3.org/1999/xhtml");var i=r.label;switch(typeof i){case"function":a.insert(i);break;case"object":a.insert(function(){return i});break;default:a.html(i)}te(a,r.labelStyle),a.style("display","inline-block"),a.style("white-space","nowrap");var d=a.node().getBoundingClientRect();return c.attr("width",d.width).attr("height",d.height),c}const z={},re=function(e){const r=Object.keys(e);for(const c of r)z[c]=e[c]},q=function(e,r,c,a,i,d){const u=a.select(`[id="${c}"]`);Object.keys(e).forEach(function(p){const l=e[p];let g="default";l.classes.length>0&&(g=l.classes.join(" ")),g=g+" flowchart-label";const w=N(l.styles);let t=l.text!==void 0?l.text:l.id,s;if(y.info("vertex",l,l.labelType),l.labelType==="markdown")y.info("vertex",l,l.labelType);else if(W(C().flowchart.htmlLabels)){const m={label:t.replace(/fa[blrs]?:fa-[\w-]+/g,k=>``)};s=le(u,m).node(),s.parentNode.removeChild(s)}else{const m=i.createElementNS("http://www.w3.org/2000/svg","text");m.setAttribute("style",w.labelStyle.replace("color:","fill:"));const k=t.split(G.lineBreakRegex);for(const T of k){const v=i.createElementNS("http://www.w3.org/2000/svg","tspan");v.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),v.setAttribute("dy","1em"),v.setAttribute("x","1"),v.textContent=T,m.appendChild(v)}s=m}let b=0,o="";switch(l.type){case"round":b=5,o="rect";break;case"square":o="rect";break;case"diamond":o="question";break;case"hexagon":o="hexagon";break;case"odd":o="rect_left_inv_arrow";break;case"lean_right":o="lean_right";break;case"lean_left":o="lean_left";break;case"trapezoid":o="trapezoid";break;case"inv_trapezoid":o="inv_trapezoid";break;case"odd_right":o="rect_left_inv_arrow";break;case"circle":o="circle";break;case"ellipse":o="ellipse";break;case"stadium":o="stadium";break;case"subroutine":o="subroutine";break;case"cylinder":o="cylinder";break;case"group":o="rect";break;case"doublecircle":o="doublecircle";break;default:o="rect"}r.setNode(l.id,{labelStyle:w.labelStyle,shape:o,labelText:t,labelType:l.labelType,rx:b,ry:b,class:g,style:w.style,id:l.id,link:l.link,linkTarget:l.linkTarget,tooltip:d.db.getTooltip(l.id)||"",domId:d.db.lookUpDomId(l.id),haveCallback:l.haveCallback,width:l.type==="group"?500:void 0,dir:l.dir,type:l.type,props:l.props,padding:C().flowchart.padding}),y.info("setNode",{labelStyle:w.labelStyle,labelType:l.labelType,shape:o,labelText:t,rx:b,ry:b,class:g,style:w.style,id:l.id,domId:d.db.lookUpDomId(l.id),width:l.type==="group"?500:void 0,type:l.type,dir:l.dir,props:l.props,padding:C().flowchart.padding})})},P=function(e,r,c){y.info("abc78 edges = ",e);let a=0,i={},d,u;if(e.defaultStyle!==void 0){const n=N(e.defaultStyle);d=n.style,u=n.labelStyle}e.forEach(function(n){a++;const p="L-"+n.start+"-"+n.end;i[p]===void 0?(i[p]=0,y.info("abc78 new entry",p,i[p])):(i[p]++,y.info("abc78 new entry",p,i[p]));let l=p+"-"+i[p];y.info("abc78 new link id to be used is",p,l,i[p]);const g="LS-"+n.start,w="LE-"+n.end,t={style:"",labelStyle:""};switch(t.minlen=n.length||1,n.type==="arrow_open"?t.arrowhead="none":t.arrowhead="normal",t.arrowTypeStart="arrow_open",t.arrowTypeEnd="arrow_open",n.type){case"double_arrow_cross":t.arrowTypeStart="arrow_cross";case"arrow_cross":t.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":t.arrowTypeStart="arrow_point";case"arrow_point":t.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":t.arrowTypeStart="arrow_circle";case"arrow_circle":t.arrowTypeEnd="arrow_circle";break}let s="",b="";switch(n.stroke){case"normal":s="fill:none;",d!==void 0&&(s=d),u!==void 0&&(b=u),t.thickness="normal",t.pattern="solid";break;case"dotted":t.thickness="normal",t.pattern="dotted",t.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":t.thickness="thick",t.pattern="solid",t.style="stroke-width: 3.5px;fill:none;";break;case"invisible":t.thickness="invisible",t.pattern="solid",t.style="stroke-width: 0;fill:none;";break}if(n.style!==void 0){const o=N(n.style);s=o.style,b=o.labelStyle}t.style=t.style+=s,t.labelStyle=t.labelStyle+=b,n.interpolate!==void 0?t.curve=$(n.interpolate,E):e.defaultInterpolate!==void 0?t.curve=$(e.defaultInterpolate,E):t.curve=$(z.curve,E),n.text===void 0?n.style!==void 0&&(t.arrowheadStyle="fill: #333"):(t.arrowheadStyle="fill: #333",t.labelpos="c"),t.labelType=n.labelType,t.label=n.text.replace(G.lineBreakRegex,` -`),n.style===void 0&&(t.style=t.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),t.labelStyle=t.labelStyle.replace("color:","fill:"),t.id=l,t.classes="flowchart-link "+g+" "+w,r.setEdge(n.start,n.end,t,a)})},ae=function(e,r){return r.db.getClasses()},oe=async function(e,r,c,a){y.info("Drawing flowchart");let i=a.db.getDirection();i===void 0&&(i="TD");const{securityLevel:d,flowchart:u}=C(),n=u.nodeSpacing||50,p=u.rankSpacing||50;let l;d==="sandbox"&&(l=_("#i"+r));const g=d==="sandbox"?_(l.nodes()[0].contentDocument.body):_("body"),w=d==="sandbox"?l.nodes()[0].contentDocument:document,t=new V({multigraph:!0,compound:!0}).setGraph({rankdir:i,nodesep:n,ranksep:p,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}});let s;const b=a.db.getSubGraphs();y.info("Subgraphs - ",b);for(let f=b.length-1;f>=0;f--)s=b[f],y.info("Subgraph - ",s),a.db.addVertex(s.id,{text:s.title,type:s.labelType},"group",void 0,s.classes,s.dir);const o=a.db.getVertices(),m=a.db.getEdges();y.info("Edges",m);let k=0;for(k=b.length-1;k>=0;k--){s=b[k],Y("cluster").append("text");for(let f=0;f{const c=O,a=c(e,"r"),i=c(e,"g"),d=c(e,"b");return K(a,i,d,r)},se=e=>`.label { - font-family: ${e.fontFamily}; - color: ${e.nodeTextColor||e.textColor}; - } - .cluster-label text { - fill: ${e.titleColor}; - } - .cluster-label span,p { - color: ${e.titleColor}; - } - - .label text,span,p { - fill: ${e.nodeTextColor||e.textColor}; - color: ${e.nodeTextColor||e.textColor}; - } - - .node rect, - .node circle, - .node ellipse, - .node polygon, - .node path { - fill: ${e.mainBkg}; - stroke: ${e.nodeBorder}; - stroke-width: 1px; - } - .flowchart-label text { - text-anchor: middle; - } - // .flowchart-label .text-outer-tspan { - // text-anchor: middle; - // } - // .flowchart-label .text-inner-tspan { - // text-anchor: start; - // } - - .node .label { - text-align: center; - } - .node.clickable { - cursor: pointer; - } - - .arrowheadPath { - fill: ${e.arrowheadColor}; - } - - .edgePath .path { - stroke: ${e.lineColor}; - stroke-width: 2.0px; - } - - .flowchart-link { - stroke: ${e.lineColor}; - fill: none; - } - - .edgeLabel { - background-color: ${e.edgeLabelBackground}; - rect { - opacity: 0.5; - background-color: ${e.edgeLabelBackground}; - fill: ${e.edgeLabelBackground}; - } - text-align: center; - } - - /* For html labels only */ - .labelBkg { - background-color: ${ne(e.edgeLabelBackground,.5)}; - // background-color: - } - - .cluster rect { - fill: ${e.clusterBkg}; - stroke: ${e.clusterBorder}; - stroke-width: 1px; - } - - .cluster text { - fill: ${e.titleColor}; - } - - .cluster span,p { - color: ${e.titleColor}; - } - /* .cluster div { - color: ${e.titleColor}; - } */ - - div.mermaidTooltip { - position: absolute; - text-align: center; - max-width: 200px; - padding: 2px; - font-family: ${e.fontFamily}; - font-size: 12px; - background: ${e.tertiaryColor}; - border: 1px solid ${e.border2}; - border-radius: 2px; - pointer-events: none; - z-index: 100; - } - - .flowchartTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${e.textColor}; - } -`,ye=se;export{te as a,le as b,we as c,ue as d,fe as e,he as f,ye as g,be as i,Y as s}; diff --git a/assets/styles-b966c4ae-hKhWXcIa.js b/assets/styles-b966c4ae-hKhWXcIa.js new file mode 100644 index 0000000..ce48656 --- /dev/null +++ b/assets/styles-b966c4ae-hKhWXcIa.js @@ -0,0 +1,110 @@ +import{G as V}from"./layout-6DvG_ICF.js";import{ag as D,ah as M,ai as R,aj as j,ak as F,al as U,ad as H,p as N,l as y,q as W,c as C,j as G,r as $,o as E,h as _,y as X,t as J,am as K}from"./mermaid.core-YBgJFCkH.js";import{r as Q}from"./index-67a42d7d-iblPHmxF.js";function Y(e){return typeof e=="string"?new D([document.querySelectorAll(e)],[document.documentElement]):new D([R(e)],M)}const Z=(e,r)=>j.lang.round(F.parse(e)[r]);function pe(e,r){return!!e.children(r).length}function be(e){return L(e.v)+":"+L(e.w)+":"+L(e.name)}var O=/:/g;function L(e){return e?String(e).replace(O,"\\:"):""}function ee(e,r){r&&e.attr("style",r)}function fe(e,r,c){r&&e.attr("class",r).attr("class",c+" "+e.attr("class"))}function ue(e,r){var c=r.graph();if(U(c)){var a=c.transition;if(H(a))return a(e)}return e}function te(e,r){var c=e.append("foreignObject").attr("width","100000"),a=c.append("xhtml:div");a.attr("xmlns","http://www.w3.org/1999/xhtml");var i=r.label;switch(typeof i){case"function":a.insert(i);break;case"object":a.insert(function(){return i});break;default:a.html(i)}ee(a,r.labelStyle),a.style("display","inline-block"),a.style("white-space","nowrap");var d=a.node().getBoundingClientRect();return c.attr("width",d.width).attr("height",d.height),c}const z={},le=function(e){const r=Object.keys(e);for(const c of r)z[c]=e[c]},q=function(e,r,c,a,i,d){const u=a.select(`[id="${c}"]`);Object.keys(e).forEach(function(p){const l=e[p];let g="default";l.classes.length>0&&(g=l.classes.join(" ")),g=g+" flowchart-label";const w=N(l.styles);let t=l.text!==void 0?l.text:l.id,s;if(y.info("vertex",l,l.labelType),l.labelType==="markdown")y.info("vertex",l,l.labelType);else if(W(C().flowchart.htmlLabels)){const m={label:t.replace(/fa[blrs]?:fa-[\w-]+/g,k=>``)};s=te(u,m).node(),s.parentNode.removeChild(s)}else{const m=i.createElementNS("http://www.w3.org/2000/svg","text");m.setAttribute("style",w.labelStyle.replace("color:","fill:"));const k=t.split(G.lineBreakRegex);for(const T of k){const v=i.createElementNS("http://www.w3.org/2000/svg","tspan");v.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),v.setAttribute("dy","1em"),v.setAttribute("x","1"),v.textContent=T,m.appendChild(v)}s=m}let b=0,o="";switch(l.type){case"round":b=5,o="rect";break;case"square":o="rect";break;case"diamond":o="question";break;case"hexagon":o="hexagon";break;case"odd":o="rect_left_inv_arrow";break;case"lean_right":o="lean_right";break;case"lean_left":o="lean_left";break;case"trapezoid":o="trapezoid";break;case"inv_trapezoid":o="inv_trapezoid";break;case"odd_right":o="rect_left_inv_arrow";break;case"circle":o="circle";break;case"ellipse":o="ellipse";break;case"stadium":o="stadium";break;case"subroutine":o="subroutine";break;case"cylinder":o="cylinder";break;case"group":o="rect";break;case"doublecircle":o="doublecircle";break;default:o="rect"}r.setNode(l.id,{labelStyle:w.labelStyle,shape:o,labelText:t,labelType:l.labelType,rx:b,ry:b,class:g,style:w.style,id:l.id,link:l.link,linkTarget:l.linkTarget,tooltip:d.db.getTooltip(l.id)||"",domId:d.db.lookUpDomId(l.id),haveCallback:l.haveCallback,width:l.type==="group"?500:void 0,dir:l.dir,type:l.type,props:l.props,padding:C().flowchart.padding}),y.info("setNode",{labelStyle:w.labelStyle,labelType:l.labelType,shape:o,labelText:t,rx:b,ry:b,class:g,style:w.style,id:l.id,domId:d.db.lookUpDomId(l.id),width:l.type==="group"?500:void 0,type:l.type,dir:l.dir,props:l.props,padding:C().flowchart.padding})})},P=function(e,r,c){y.info("abc78 edges = ",e);let a=0,i={},d,u;if(e.defaultStyle!==void 0){const n=N(e.defaultStyle);d=n.style,u=n.labelStyle}e.forEach(function(n){a++;const p="L-"+n.start+"-"+n.end;i[p]===void 0?(i[p]=0,y.info("abc78 new entry",p,i[p])):(i[p]++,y.info("abc78 new entry",p,i[p]));let l=p+"-"+i[p];y.info("abc78 new link id to be used is",p,l,i[p]);const g="LS-"+n.start,w="LE-"+n.end,t={style:"",labelStyle:""};switch(t.minlen=n.length||1,n.type==="arrow_open"?t.arrowhead="none":t.arrowhead="normal",t.arrowTypeStart="arrow_open",t.arrowTypeEnd="arrow_open",n.type){case"double_arrow_cross":t.arrowTypeStart="arrow_cross";case"arrow_cross":t.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":t.arrowTypeStart="arrow_point";case"arrow_point":t.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":t.arrowTypeStart="arrow_circle";case"arrow_circle":t.arrowTypeEnd="arrow_circle";break}let s="",b="";switch(n.stroke){case"normal":s="fill:none;",d!==void 0&&(s=d),u!==void 0&&(b=u),t.thickness="normal",t.pattern="solid";break;case"dotted":t.thickness="normal",t.pattern="dotted",t.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":t.thickness="thick",t.pattern="solid",t.style="stroke-width: 3.5px;fill:none;";break;case"invisible":t.thickness="invisible",t.pattern="solid",t.style="stroke-width: 0;fill:none;";break}if(n.style!==void 0){const o=N(n.style);s=o.style,b=o.labelStyle}t.style=t.style+=s,t.labelStyle=t.labelStyle+=b,n.interpolate!==void 0?t.curve=$(n.interpolate,E):e.defaultInterpolate!==void 0?t.curve=$(e.defaultInterpolate,E):t.curve=$(z.curve,E),n.text===void 0?n.style!==void 0&&(t.arrowheadStyle="fill: #333"):(t.arrowheadStyle="fill: #333",t.labelpos="c"),t.labelType=n.labelType,t.label=n.text.replace(G.lineBreakRegex,` +`),n.style===void 0&&(t.style=t.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),t.labelStyle=t.labelStyle.replace("color:","fill:"),t.id=l,t.classes="flowchart-link "+g+" "+w,r.setEdge(n.start,n.end,t,a)})},re=function(e,r){return r.db.getClasses()},ae=async function(e,r,c,a){y.info("Drawing flowchart");let i=a.db.getDirection();i===void 0&&(i="TD");const{securityLevel:d,flowchart:u}=C(),n=u.nodeSpacing||50,p=u.rankSpacing||50;let l;d==="sandbox"&&(l=_("#i"+r));const g=d==="sandbox"?_(l.nodes()[0].contentDocument.body):_("body"),w=d==="sandbox"?l.nodes()[0].contentDocument:document,t=new V({multigraph:!0,compound:!0}).setGraph({rankdir:i,nodesep:n,ranksep:p,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}});let s;const b=a.db.getSubGraphs();y.info("Subgraphs - ",b);for(let f=b.length-1;f>=0;f--)s=b[f],y.info("Subgraph - ",s),a.db.addVertex(s.id,{text:s.title,type:s.labelType},"group",void 0,s.classes,s.dir);const o=a.db.getVertices(),m=a.db.getEdges();y.info("Edges",m);let k=0;for(k=b.length-1;k>=0;k--){s=b[k],Y("cluster").append("text");for(let f=0;f{const c=Z,a=c(e,"r"),i=c(e,"g"),d=c(e,"b");return K(a,i,d,r)},ne=e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span,p { + color: ${e.titleColor}; + } + + .label text,span,p { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${oe(e.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${e.clusterBkg}; + stroke: ${e.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span,p { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } +`,he=ne;export{ee as a,te as b,ue as c,fe as d,be as e,we as f,he as g,pe as i,Y as s}; diff --git a/assets/styles-bbc3fe3b-It40AHsg.js b/assets/styles-bbc3fe3b-rQ9hJQeS.js similarity index 99% rename from assets/styles-bbc3fe3b-It40AHsg.js rename to assets/styles-bbc3fe3b-rQ9hJQeS.js index 50bee7a..42fec0f 100644 --- a/assets/styles-bbc3fe3b-It40AHsg.js +++ b/assets/styles-bbc3fe3b-rQ9hJQeS.js @@ -1,4 +1,4 @@ -import{c as Y,g as Ut,s as zt,a as Mt,b as Ht,v as Xt,x as Kt,l as D,j as ot,z as Wt,b2 as Jt}from"./mermaid.core-ygY5oRaR.js";var gt=function(){var t=function(C,r,n,i){for(n=n||{},i=C.length;i--;n[C[i]]=r);return n},s=[1,2],a=[1,3],h=[1,4],f=[2,4],d=[1,9],y=[1,11],k=[1,15],u=[1,16],E=[1,17],T=[1,18],R=[1,30],G=[1,19],j=[1,20],U=[1,21],z=[1,22],M=[1,23],H=[1,25],X=[1,26],K=[1,27],W=[1,28],J=[1,29],q=[1,32],Q=[1,33],Z=[1,34],tt=[1,35],w=[1,31],c=[1,4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],et=[1,4,5,13,14,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],Dt=[4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],ht={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,cssClassStatement:11,idStatement:12,DESCR:13,"-->":14,HIDE_EMPTY:15,scale:16,WIDTH:17,COMPOSIT_STATE:18,STRUCT_START:19,STRUCT_STOP:20,STATE_DESCR:21,AS:22,ID:23,FORK:24,JOIN:25,CHOICE:26,CONCURRENT:27,note:28,notePosition:29,NOTE_TEXT:30,direction:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,classDef:37,CLASSDEF_ID:38,CLASSDEF_STYLEOPTS:39,DEFAULT:40,class:41,CLASSENTITY_IDS:42,STYLECLASS:43,direction_tb:44,direction_bt:45,direction_rl:46,direction_lr:47,eol:48,";":49,EDGE_STATE:50,STYLE_SEPARATOR:51,left_of:52,right_of:53,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",13:"DESCR",14:"-->",15:"HIDE_EMPTY",16:"scale",17:"WIDTH",18:"COMPOSIT_STATE",19:"STRUCT_START",20:"STRUCT_STOP",21:"STATE_DESCR",22:"AS",23:"ID",24:"FORK",25:"JOIN",26:"CHOICE",27:"CONCURRENT",28:"note",30:"NOTE_TEXT",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"classDef",38:"CLASSDEF_ID",39:"CLASSDEF_STYLEOPTS",40:"DEFAULT",41:"class",42:"CLASSENTITY_IDS",43:"STYLECLASS",44:"direction_tb",45:"direction_bt",46:"direction_rl",47:"direction_lr",49:";",50:"EDGE_STATE",51:"STYLE_SEPARATOR",52:"left_of",53:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[31,1],[31,1],[31,1],[31,1],[48,1],[48,1],[12,1],[12,1],[12,3],[12,3],[29,1],[29,1]],performAction:function(r,n,i,o,p,e,$){var l=e.length-1;switch(p){case 3:return o.setRootDoc(e[l]),e[l];case 4:this.$=[];break;case 5:e[l]!="nl"&&(e[l-1].push(e[l]),this.$=e[l-1]);break;case 6:case 7:this.$=e[l];break;case 8:this.$="nl";break;case 11:this.$=e[l];break;case 12:const B=e[l-1];B.description=o.trimColon(e[l]),this.$=B;break;case 13:this.$={stmt:"relation",state1:e[l-2],state2:e[l]};break;case 14:const ft=o.trimColon(e[l]);this.$={stmt:"relation",state1:e[l-3],state2:e[l-1],description:ft};break;case 18:this.$={stmt:"state",id:e[l-3],type:"default",description:"",doc:e[l-1]};break;case 19:var v=e[l],O=e[l-2].trim();if(e[l].match(":")){var st=e[l].split(":");v=st[0],O=[O,st[1]]}this.$={stmt:"state",id:v,type:"default",description:O};break;case 20:this.$={stmt:"state",id:e[l-3],type:"default",description:e[l-5],doc:e[l-1]};break;case 21:this.$={stmt:"state",id:e[l],type:"fork"};break;case 22:this.$={stmt:"state",id:e[l],type:"join"};break;case 23:this.$={stmt:"state",id:e[l],type:"choice"};break;case 24:this.$={stmt:"state",id:o.getDividerId(),type:"divider"};break;case 25:this.$={stmt:"state",id:e[l-1].trim(),note:{position:e[l-2].trim(),text:e[l].trim()}};break;case 28:this.$=e[l].trim(),o.setAccTitle(this.$);break;case 29:case 30:this.$=e[l].trim(),o.setAccDescription(this.$);break;case 31:case 32:this.$={stmt:"classDef",id:e[l-1].trim(),classes:e[l].trim()};break;case 33:this.$={stmt:"applyClass",id:e[l-1].trim(),styleClass:e[l].trim()};break;case 34:o.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 35:o.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 36:o.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 37:o.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 40:case 41:this.$={stmt:"state",id:e[l].trim(),type:"default",description:""};break;case 42:this.$={stmt:"state",id:e[l-2].trim(),classes:[e[l].trim()],type:"default",description:""};break;case 43:this.$={stmt:"state",id:e[l-2].trim(),classes:[e[l].trim()],type:"default",description:""};break}},table:[{3:1,4:s,5:a,6:h},{1:[3]},{3:5,4:s,5:a,6:h},{3:6,4:s,5:a,6:h},t([1,4,5,15,16,18,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],f,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:k,16:u,18:E,21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,5]),{9:36,10:12,11:13,12:14,15:k,16:u,18:E,21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,7]),t(c,[2,8]),t(c,[2,9]),t(c,[2,10]),t(c,[2,11],{13:[1,37],14:[1,38]}),t(c,[2,15]),{17:[1,39]},t(c,[2,17],{19:[1,40]}),{22:[1,41]},t(c,[2,21]),t(c,[2,22]),t(c,[2,23]),t(c,[2,24]),{29:42,30:[1,43],52:[1,44],53:[1,45]},t(c,[2,27]),{33:[1,46]},{35:[1,47]},t(c,[2,30]),{38:[1,48],40:[1,49]},{42:[1,50]},t(et,[2,40],{51:[1,51]}),t(et,[2,41],{51:[1,52]}),t(c,[2,34]),t(c,[2,35]),t(c,[2,36]),t(c,[2,37]),t(c,[2,6]),t(c,[2,12]),{12:53,23:R,50:w},t(c,[2,16]),t(Dt,f,{7:54}),{23:[1,55]},{23:[1,56]},{22:[1,57]},{23:[2,44]},{23:[2,45]},t(c,[2,28]),t(c,[2,29]),{39:[1,58]},{39:[1,59]},{43:[1,60]},{23:[1,61]},{23:[1,62]},t(c,[2,13],{13:[1,63]}),{4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:k,16:u,18:E,20:[1,64],21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,19],{19:[1,65]}),{30:[1,66]},{23:[1,67]},t(c,[2,31]),t(c,[2,32]),t(c,[2,33]),t(et,[2,42]),t(et,[2,43]),t(c,[2,14]),t(c,[2,18]),t(Dt,f,{7:68}),t(c,[2,25]),t(c,[2,26]),{4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:k,16:u,18:E,20:[1,69],21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,20])],defaultActions:{5:[2,1],6:[2,2],44:[2,44],45:[2,45]},parseError:function(r,n){if(n.recoverable)this.trace(r);else{var i=new Error(r);throw i.hash=n,i}},parse:function(r){var n=this,i=[0],o=[],p=[null],e=[],$=this.table,l="",v=0,O=0,st=2,B=1,ft=e.slice.call(arguments,1),S=Object.create(this.lexer),A={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(A.yy[dt]=this.yy[dt]);S.setInput(r,A.yy),A.yy.lexer=S,A.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var yt=S.yylloc;e.push(yt);var Gt=S.options&&S.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function jt(){var x;return x=o.pop()||S.lex()||B,typeof x!="number"&&(x instanceof Array&&(o=x,x=o.pop()),x=n.symbols_[x]||x),x}for(var _,L,m,pt,N={},it,b,Ct,rt;;){if(L=i[i.length-1],this.defaultActions[L]?m=this.defaultActions[L]:((_===null||typeof _>"u")&&(_=jt()),m=$[L]&&$[L][_]),typeof m>"u"||!m.length||!m[0]){var St="";rt=[];for(it in $[L])this.terminals_[it]&&it>st&&rt.push("'"+this.terminals_[it]+"'");S.showPosition?St="Parse error on line "+(v+1)+`: +import{c as Y,g as Ut,s as zt,a as Mt,b as Ht,v as Xt,x as Kt,l as D,j as ot,z as Wt,b2 as Jt}from"./mermaid.core-YBgJFCkH.js";var gt=function(){var t=function(C,r,n,i){for(n=n||{},i=C.length;i--;n[C[i]]=r);return n},s=[1,2],a=[1,3],h=[1,4],f=[2,4],d=[1,9],y=[1,11],k=[1,15],u=[1,16],E=[1,17],T=[1,18],R=[1,30],G=[1,19],j=[1,20],U=[1,21],z=[1,22],M=[1,23],H=[1,25],X=[1,26],K=[1,27],W=[1,28],J=[1,29],q=[1,32],Q=[1,33],Z=[1,34],tt=[1,35],w=[1,31],c=[1,4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],et=[1,4,5,13,14,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],Dt=[4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],ht={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,cssClassStatement:11,idStatement:12,DESCR:13,"-->":14,HIDE_EMPTY:15,scale:16,WIDTH:17,COMPOSIT_STATE:18,STRUCT_START:19,STRUCT_STOP:20,STATE_DESCR:21,AS:22,ID:23,FORK:24,JOIN:25,CHOICE:26,CONCURRENT:27,note:28,notePosition:29,NOTE_TEXT:30,direction:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,classDef:37,CLASSDEF_ID:38,CLASSDEF_STYLEOPTS:39,DEFAULT:40,class:41,CLASSENTITY_IDS:42,STYLECLASS:43,direction_tb:44,direction_bt:45,direction_rl:46,direction_lr:47,eol:48,";":49,EDGE_STATE:50,STYLE_SEPARATOR:51,left_of:52,right_of:53,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",13:"DESCR",14:"-->",15:"HIDE_EMPTY",16:"scale",17:"WIDTH",18:"COMPOSIT_STATE",19:"STRUCT_START",20:"STRUCT_STOP",21:"STATE_DESCR",22:"AS",23:"ID",24:"FORK",25:"JOIN",26:"CHOICE",27:"CONCURRENT",28:"note",30:"NOTE_TEXT",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"classDef",38:"CLASSDEF_ID",39:"CLASSDEF_STYLEOPTS",40:"DEFAULT",41:"class",42:"CLASSENTITY_IDS",43:"STYLECLASS",44:"direction_tb",45:"direction_bt",46:"direction_rl",47:"direction_lr",49:";",50:"EDGE_STATE",51:"STYLE_SEPARATOR",52:"left_of",53:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[31,1],[31,1],[31,1],[31,1],[48,1],[48,1],[12,1],[12,1],[12,3],[12,3],[29,1],[29,1]],performAction:function(r,n,i,o,p,e,$){var l=e.length-1;switch(p){case 3:return o.setRootDoc(e[l]),e[l];case 4:this.$=[];break;case 5:e[l]!="nl"&&(e[l-1].push(e[l]),this.$=e[l-1]);break;case 6:case 7:this.$=e[l];break;case 8:this.$="nl";break;case 11:this.$=e[l];break;case 12:const B=e[l-1];B.description=o.trimColon(e[l]),this.$=B;break;case 13:this.$={stmt:"relation",state1:e[l-2],state2:e[l]};break;case 14:const ft=o.trimColon(e[l]);this.$={stmt:"relation",state1:e[l-3],state2:e[l-1],description:ft};break;case 18:this.$={stmt:"state",id:e[l-3],type:"default",description:"",doc:e[l-1]};break;case 19:var v=e[l],O=e[l-2].trim();if(e[l].match(":")){var st=e[l].split(":");v=st[0],O=[O,st[1]]}this.$={stmt:"state",id:v,type:"default",description:O};break;case 20:this.$={stmt:"state",id:e[l-3],type:"default",description:e[l-5],doc:e[l-1]};break;case 21:this.$={stmt:"state",id:e[l],type:"fork"};break;case 22:this.$={stmt:"state",id:e[l],type:"join"};break;case 23:this.$={stmt:"state",id:e[l],type:"choice"};break;case 24:this.$={stmt:"state",id:o.getDividerId(),type:"divider"};break;case 25:this.$={stmt:"state",id:e[l-1].trim(),note:{position:e[l-2].trim(),text:e[l].trim()}};break;case 28:this.$=e[l].trim(),o.setAccTitle(this.$);break;case 29:case 30:this.$=e[l].trim(),o.setAccDescription(this.$);break;case 31:case 32:this.$={stmt:"classDef",id:e[l-1].trim(),classes:e[l].trim()};break;case 33:this.$={stmt:"applyClass",id:e[l-1].trim(),styleClass:e[l].trim()};break;case 34:o.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 35:o.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 36:o.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 37:o.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 40:case 41:this.$={stmt:"state",id:e[l].trim(),type:"default",description:""};break;case 42:this.$={stmt:"state",id:e[l-2].trim(),classes:[e[l].trim()],type:"default",description:""};break;case 43:this.$={stmt:"state",id:e[l-2].trim(),classes:[e[l].trim()],type:"default",description:""};break}},table:[{3:1,4:s,5:a,6:h},{1:[3]},{3:5,4:s,5:a,6:h},{3:6,4:s,5:a,6:h},t([1,4,5,15,16,18,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],f,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:k,16:u,18:E,21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,5]),{9:36,10:12,11:13,12:14,15:k,16:u,18:E,21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,7]),t(c,[2,8]),t(c,[2,9]),t(c,[2,10]),t(c,[2,11],{13:[1,37],14:[1,38]}),t(c,[2,15]),{17:[1,39]},t(c,[2,17],{19:[1,40]}),{22:[1,41]},t(c,[2,21]),t(c,[2,22]),t(c,[2,23]),t(c,[2,24]),{29:42,30:[1,43],52:[1,44],53:[1,45]},t(c,[2,27]),{33:[1,46]},{35:[1,47]},t(c,[2,30]),{38:[1,48],40:[1,49]},{42:[1,50]},t(et,[2,40],{51:[1,51]}),t(et,[2,41],{51:[1,52]}),t(c,[2,34]),t(c,[2,35]),t(c,[2,36]),t(c,[2,37]),t(c,[2,6]),t(c,[2,12]),{12:53,23:R,50:w},t(c,[2,16]),t(Dt,f,{7:54}),{23:[1,55]},{23:[1,56]},{22:[1,57]},{23:[2,44]},{23:[2,45]},t(c,[2,28]),t(c,[2,29]),{39:[1,58]},{39:[1,59]},{43:[1,60]},{23:[1,61]},{23:[1,62]},t(c,[2,13],{13:[1,63]}),{4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:k,16:u,18:E,20:[1,64],21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,19],{19:[1,65]}),{30:[1,66]},{23:[1,67]},t(c,[2,31]),t(c,[2,32]),t(c,[2,33]),t(et,[2,42]),t(et,[2,43]),t(c,[2,14]),t(c,[2,18]),t(Dt,f,{7:68}),t(c,[2,25]),t(c,[2,26]),{4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:k,16:u,18:E,20:[1,69],21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,20])],defaultActions:{5:[2,1],6:[2,2],44:[2,44],45:[2,45]},parseError:function(r,n){if(n.recoverable)this.trace(r);else{var i=new Error(r);throw i.hash=n,i}},parse:function(r){var n=this,i=[0],o=[],p=[null],e=[],$=this.table,l="",v=0,O=0,st=2,B=1,ft=e.slice.call(arguments,1),S=Object.create(this.lexer),A={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(A.yy[dt]=this.yy[dt]);S.setInput(r,A.yy),A.yy.lexer=S,A.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var yt=S.yylloc;e.push(yt);var Gt=S.options&&S.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function jt(){var x;return x=o.pop()||S.lex()||B,typeof x!="number"&&(x instanceof Array&&(o=x,x=o.pop()),x=n.symbols_[x]||x),x}for(var _,L,m,pt,N={},it,b,Ct,rt;;){if(L=i[i.length-1],this.defaultActions[L]?m=this.defaultActions[L]:((_===null||typeof _>"u")&&(_=jt()),m=$[L]&&$[L][_]),typeof m>"u"||!m.length||!m[0]){var St="";rt=[];for(it in $[L])this.terminals_[it]&&it>st&&rt.push("'"+this.terminals_[it]+"'");S.showPosition?St="Parse error on line "+(v+1)+`: `+S.showPosition()+` Expecting `+rt.join(", ")+", got '"+(this.terminals_[_]||_)+"'":St="Parse error on line "+(v+1)+": Unexpected "+(_==B?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(St,{text:S.match,token:this.terminals_[_]||_,line:S.yylineno,loc:yt,expected:rt})}if(m[0]instanceof Array&&m.length>1)throw new Error("Parse Error: multiple actions possible at state: "+L+", token: "+_);switch(m[0]){case 1:i.push(_),p.push(S.yytext),e.push(S.yylloc),i.push(m[1]),_=null,O=S.yyleng,l=S.yytext,v=S.yylineno,yt=S.yylloc;break;case 2:if(b=this.productions_[m[1]][1],N.$=p[p.length-b],N._$={first_line:e[e.length-(b||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(b||1)].first_column,last_column:e[e.length-1].last_column},Gt&&(N._$.range=[e[e.length-(b||1)].range[0],e[e.length-1].range[1]]),pt=this.performAction.apply(N,[l,O,v,A.yy,m[1],p,e].concat(ft)),typeof pt<"u")return pt;b&&(i=i.slice(0,-1*b*2),p=p.slice(0,-1*b),e=e.slice(0,-1*b)),i.push(this.productions_[m[1]][0]),p.push(N.$),e.push(N._$),Ct=$[i[i.length-2]][i[i.length-1]],i.push(Ct);break;case 3:return!0}}return!0}},Yt=function(){var C={EOF:1,parseError:function(n,i){if(this.yy.parser)this.yy.parser.parseError(n,i);else throw new Error(n)},setInput:function(r,n){return this.yy=n||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var n=r.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},unput:function(r){var n=r.length,i=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var o=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===o.length?this.yylloc.first_column:0)+o[o.length-i.length].length-i[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(r){this.unput(this.match.slice(r))},pastInput:function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var r=this.pastInput(),n=new Array(r.length+1).join("-");return r+this.upcomingInput()+` diff --git a/assets/svgDrawCommon-ad5ef572-nvro2Kxm.js b/assets/svgDrawCommon-ad5ef572-Rj64dPCl.js similarity index 95% rename from assets/svgDrawCommon-ad5ef572-nvro2Kxm.js rename to assets/svgDrawCommon-ad5ef572-Rj64dPCl.js index 851bbce..ce3e2f4 100644 --- a/assets/svgDrawCommon-ad5ef572-nvro2Kxm.js +++ b/assets/svgDrawCommon-ad5ef572-Rj64dPCl.js @@ -1 +1 @@ -import{n as o,m as i}from"./mermaid.core-ygY5oRaR.js";const c=(s,t)=>{const r=s.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.rx!==void 0&&r.attr("rx",t.rx),t.ry!==void 0&&r.attr("ry",t.ry),t.attrs!==void 0)for(const e in t.attrs)r.attr(e,t.attrs[e]);return t.class!==void 0&&r.attr("class",t.class),r},x=(s,t)=>{const r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};c(s,r).lower()},d=(s,t)=>{const r=t.text.replace(o," "),e=s.append("text");e.attr("x",t.x),e.attr("y",t.y),e.attr("class","legend"),e.style("text-anchor",t.anchor),t.class!==void 0&&e.attr("class",t.class);const n=e.append("tspan");return n.attr("x",t.x+t.textMargin*2),n.text(r),e},h=(s,t,r,e)=>{const n=s.append("image");n.attr("x",t),n.attr("y",r);const a=i.sanitizeUrl(e);n.attr("xlink:href",a)},y=(s,t,r,e)=>{const n=s.append("use");n.attr("x",t),n.attr("y",r);const a=i.sanitizeUrl(e);n.attr("xlink:href",`#${a}`)},g=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),p=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0});export{x as a,y as b,h as c,c as d,p as e,d as f,g}; +import{n as o,m as i}from"./mermaid.core-YBgJFCkH.js";const c=(s,t)=>{const r=s.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.rx!==void 0&&r.attr("rx",t.rx),t.ry!==void 0&&r.attr("ry",t.ry),t.attrs!==void 0)for(const e in t.attrs)r.attr(e,t.attrs[e]);return t.class!==void 0&&r.attr("class",t.class),r},x=(s,t)=>{const r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};c(s,r).lower()},d=(s,t)=>{const r=t.text.replace(o," "),e=s.append("text");e.attr("x",t.x),e.attr("y",t.y),e.attr("class","legend"),e.style("text-anchor",t.anchor),t.class!==void 0&&e.attr("class",t.class);const n=e.append("tspan");return n.attr("x",t.x+t.textMargin*2),n.text(r),e},h=(s,t,r,e)=>{const n=s.append("image");n.attr("x",t),n.attr("y",r);const a=i.sanitizeUrl(e);n.attr("xlink:href",a)},y=(s,t,r,e)=>{const n=s.append("use");n.attr("x",t),n.attr("y",r);const a=i.sanitizeUrl(e);n.attr("xlink:href",`#${a}`)},g=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),p=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0});export{x as a,y as b,h as c,c as d,p as e,d as f,g}; diff --git a/assets/thanks.html-EDBrN2Yb.js b/assets/thanks.html-FSlc_7wN.js similarity index 98% rename from assets/thanks.html-EDBrN2Yb.js rename to assets/thanks.html-FSlc_7wN.js index 3f34581..0bd688e 100644 --- a/assets/thanks.html-EDBrN2Yb.js +++ b/assets/thanks.html-FSlc_7wN.js @@ -1 +1 @@ -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as h,o as i,c as s,a as e,d as r,b as t,e as n}from"./app-RP31lnfq.js";const _={},c=e("h2",{id:"特别感谢",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#特别感谢","aria-hidden":"true"},"#"),r(" 特别感谢")],-1),l={href:"https://github.com/ireader",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/ireader/media-server",target:"_blank",rel:"noopener noreferrer"},f=e("h2",{id:"致谢",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#致谢","aria-hidden":"true"},"#"),r(" 致谢")],-1),p=e("p",null,"感谢以下各位对本项目包括但不限于代码贡献、问题反馈、资金捐赠等各种方式的支持!以下排名不分先后:",-1),m={href:"https://github.com/ireader",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/gemfield",target:"_blank",rel:"noopener noreferrer"},d={href:"https://github.com/nanguantong2",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/tsingeye",target:"_blank",rel:"noopener noreferrer"},k={href:"https://github.com/chenxiaolei",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/zqsong",target:"_blank",rel:"noopener noreferrer"},w={href:"https://github.com/baiyfcu",target:"_blank",rel:"noopener noreferrer"},x={href:"https://github.com/3503207480",target:"_blank",rel:"noopener noreferrer"},q={href:"https://github.com/DroidChow",target:"_blank",rel:"noopener noreferrer"},j={href:"https://github.com/HuoQiShuai",target:"_blank",rel:"noopener noreferrer"},z={href:"https://github.com/ChinaCCF",target:"_blank",rel:"noopener noreferrer"},L={href:"https://github.com/JerryLinGd",target:"_blank",rel:"noopener noreferrer"},C={href:"https://www.linkingvision.com/",target:"_blank",rel:"noopener noreferrer"},v={href:"https://github.com/taotaobujue2008",target:"_blank",rel:"noopener noreferrer"},T=e("a",{href:"mailto:409257224@qq.com"},"好心情",-1),J={href:"https://github.com/MingZhuLiu",target:"_blank",rel:"noopener noreferrer"},A={href:"https://github.com/wasphin",target:"_blank",rel:"noopener noreferrer"},D={href:"https://github.com/doodoocoder",target:"_blank",rel:"noopener noreferrer"},Z={href:"https://github.com/Colibrow",target:"_blank",rel:"noopener noreferrer"},B={href:"https://github.com/swwheihei",target:"_blank",rel:"noopener noreferrer"},H={href:"https://gitee.com/kkkkk5G",target:"_blank",rel:"noopener noreferrer"},K=e("a",{href:"mailto:zhouweimin@supremind.com"},"Zhou Weimin",-1),N={href:"https://github.com/jim-king-2000",target:"_blank",rel:"noopener noreferrer"},W=e("a",{href:"mailto:392293307@qq.com"},"西瓜丶",-1),P={href:"https://github.com/MingZhuLiu",target:"_blank",rel:"noopener noreferrer"},S={href:"https://github.com/chengxiaosheng",target:"_blank",rel:"noopener noreferrer"},G=e("a",{href:"mailto:2381267071@qq.com"},"big panda",-1),V={href:"https://github.com/tanningzhong",target:"_blank",rel:"noopener noreferrer"},X={href:"https://github.com/hctym1995",target:"_blank",rel:"noopener noreferrer"},E={href:"https://gitee.com/kingyuanyuan",target:"_blank",rel:"noopener noreferrer"},F=e("a",{href:"mailto:sunhui200475@163.com"},"sunhui",-1),M=e("a",{href:"mailto:fangpengcheng@bilibili.com"},"mirs",-1),I=e("a",{href:"mailto:kevin__cheng@outlook.com"},"Kevin Cheng",-1),O=e("a",{href:"mailto:root@oopy.org"},"Liu Jiang",-1),R={href:"https://github.com/alongl",target:"_blank",rel:"noopener noreferrer"},Q=n('qingcilyg1949zhlong大裤衩droid.chow',5),U={href:"https://github.com/musicwood",target:"_blank",rel:"noopener noreferrer"},Y={href:"https://github.com/CharleyWangHZ",target:"_blank",rel:"noopener noreferrer"},$={href:"https://github.com/johzzy",target:"_blank",rel:"noopener noreferrer"},ee={href:"https://github.com/DoubleX69",target:"_blank",rel:"noopener noreferrer"},re={href:"https://github.com/lawrencehj",target:"_blank",rel:"noopener noreferrer"},oe=e("a",{href:"mailto:xyyangkun@163.com"},"yangkun",-1),te=e("a",{href:"mailto:holychaossword@hotmail.com"},"Xinghua Zhao",-1),ne={href:"https://github.com/brokensword2018",target:"_blank",rel:"noopener noreferrer"},ae={href:"https://github.com/rqb500",target:"_blank",rel:"noopener noreferrer"},he={href:"https://github.com/alexliyu7352",target:"_blank",rel:"noopener noreferrer"},ie={href:"https://github.com/Dw9",target:"_blank",rel:"noopener noreferrer"},se=n('明月惊鹊cgmhejilinalexliyu7352cgm',5),_e={href:"https://github.com/HaoruiWang",target:"_blank",rel:"noopener noreferrer"},ce=e("a",{href:"mailto:joshuafc@foxmail.com"},"joshuafc",-1),le={href:"https://github.com/JayChen0519",target:"_blank",rel:"noopener noreferrer"},ge=e("a",{href:"mailto:zuoxue@qq.com"},"zx",-1),fe=e("a",{href:"mailto:wangcker@163.com"},"wangcker",-1),pe=e("a",{href:"mailto:wp@zafu.edu.cn"},"WuPeng",-1),me={href:"https://github.com/starry",target:"_blank",rel:"noopener noreferrer"},be={href:"https://github.com/mtdxc",target:"_blank",rel:"noopener noreferrer"},de={href:"https://github.com/hugangfeng333",target:"_blank",rel:"noopener noreferrer"},ue={href:"https://github.com/zhao85",target:"_blank",rel:"noopener noreferrer"},ke={href:"https://github.com/dreamisdream",target:"_blank",rel:"noopener noreferrer"},ye={href:"https://github.com/dcan123",target:"_blank",rel:"noopener noreferrer"},we={href:"https://github.com/duiniuluantanqin",target:"_blank",rel:"noopener noreferrer"},xe={href:"https://gitee.com/leon14631",target:"_blank",rel:"noopener noreferrer"},qe={href:"https://github.com/custompal",target:"_blank",rel:"noopener noreferrer"},je={href:"https://github.com/PioLing",target:"_blank",rel:"noopener noreferrer"},ze={href:"https://github.com/ZSC714725",target:"_blank",rel:"noopener noreferrer"},Le={href:"https://github.com/gongluck",target:"_blank",rel:"noopener noreferrer"},Ce={href:"https://github.com/a-ucontrol",target:"_blank",rel:"noopener noreferrer"},ve={href:"https://github.com/TalusL",target:"_blank",rel:"noopener noreferrer"},Te={href:"https://github.com/AHAOAHA",target:"_blank",rel:"noopener noreferrer"},Je={href:"https://github.com/TempoTian",target:"_blank",rel:"noopener noreferrer"},Ae={href:"https://github.com/yjkhtddx",target:"_blank",rel:"noopener noreferrer"},De={href:"https://github.com/ljx0305",target:"_blank",rel:"noopener noreferrer"},Ze={href:"https://github.com/zhu410289616",target:"_blank",rel:"noopener noreferrer"},Be={href:"https://github.com/1461521844lijin",target:"_blank",rel:"noopener noreferrer"},He={href:"https://github.com/PioLing",target:"_blank",rel:"noopener noreferrer"},Ke={href:"https://github.com/BackT0TheFuture",target:"_blank",rel:"noopener noreferrer"},Ne={href:"https://github.com/perara",target:"_blank",rel:"noopener noreferrer"},We={href:"https://github.com/codeRATny",target:"_blank",rel:"noopener noreferrer"},Pe={href:"https://github.com/dengjfzh",target:"_blank",rel:"noopener noreferrer"},Se={href:"https://github.com/ixingqiao",target:"_blank",rel:"noopener noreferrer"},Ge={href:"https://github.com/xuandu",target:"_blank",rel:"noopener noreferrer"},Ve={href:"https://github.com/tbago",target:"_blank",rel:"noopener noreferrer"},Xe={href:"https://github.com/Luosh",target:"_blank",rel:"noopener noreferrer"},Ee={href:"https://github.com/linxiaoyan",target:"_blank",rel:"noopener noreferrer"},Fe={href:"https://github.com/mc373906408",target:"_blank",rel:"noopener noreferrer"},Me={href:"https://github.com/Deepslient",target:"_blank",rel:"noopener noreferrer"},Ie={href:"https://github.com/rayjay214",target:"_blank",rel:"noopener noreferrer"},Oe={href:"https://github.com/ArmstrongCN",target:"_blank",rel:"noopener noreferrer"},Re={href:"https://github.com/leibnewton",target:"_blank",rel:"noopener noreferrer"},Qe={href:"https://github.com/1002victor",target:"_blank",rel:"noopener noreferrer"},Ue=e("p",null,"同时感谢 JetBrains 对开源项目的支持,本项目使用 CLion 开发与调试:",-1),Ye={href:"https://jb.gg/OpenSourceSupport",target:"_blank",rel:"noopener noreferrer"},$e=e("img",{src:"https://resources.jetbrains.com/storage/products/company/brand/logos/CLion.svg",alt:"JetBrains",tabindex:"0",loading:"lazy"},null,-1),er=e("figcaption",null,"JetBrains",-1);function rr(or,tr){const o=h("ExternalLinkIcon");return i(),s("div",null,[c,e("p",null,[r("本项目采用了"),e("a",l,[r("老陈"),t(o)]),r(" 的 "),e("a",g,[r("media-server"),t(o)]),r(" 库, 本项目的 ts/fmp4/mp4/ps 容器格式的复用解复用都依赖 media-server 库。在实现本项目诸多功能时,老陈多次给予了无私热情关键的帮助, 特此对他表示诚挚的感谢!")]),f,p,e("p",null,[e("a",m,[r("老陈"),t(o)]),e("a",b,[r("Gemfield"),t(o)]),e("a",d,[r("南冠彤"),t(o)]),e("a",u,[r("凹凸慢"),t(o)]),e("a",k,[r("chenxiaolei"),t(o)]),e("a",y,[r("史前小虫"),t(o)]),e("a",w,[r("清涩绿茶"),t(o)]),e("a",x,[r("3503207480"),t(o)]),e("a",q,[r("DroidChow"),t(o)]),e("a",j,[r("阿塞"),t(o)]),e("a",z,[r("火宣"),t(o)]),e("a",L,[r("γ 瑞 γ ミ"),t(o)]),e("a",C,[r("linkingvision"),t(o)]),e("a",v,[r("茄子"),t(o)]),T,e("a",J,[r("浮沉"),t(o)]),e("a",A,[r("Xiaofeng Wang"),t(o)]),e("a",D,[r("doodoocoder"),t(o)]),e("a",Z,[r("qingci"),t(o)]),e("a",B,[r("swwheihei"),t(o)]),e("a",H,[r("KKKKK5G"),t(o)]),K,e("a",N,[r("Jim Jin"),t(o)]),W,e("a",P,[r("MingZhuLiu"),t(o)]),e("a",S,[r("chengxiaosheng"),t(o)]),G,e("a",V,[r("tanningzhong"),t(o)]),e("a",X,[r("hctym1995"),t(o)]),e("a",E,[r("hewenyuan"),t(o)]),F,M,I,O,e("a",R,[r("along"),t(o)]),Q,e("a",U,[r("陈晓林"),t(o)]),e("a",Y,[r("CharleyWangHZ"),t(o)]),e("a",$,[r("Johnny"),t(o)]),e("a",ee,[r("DoubleX69"),t(o)]),e("a",re,[r("lawrencehj"),t(o)]),oe,te,e("a",ne,[r("hejilin"),t(o)]),e("a",ae,[r("rqb500"),t(o)]),e("a",he,[r("Alex"),t(o)]),e("a",ie,[r("Dw9"),t(o)]),se,e("a",_e,[r("haorui wang"),t(o)]),ce,e("a",le,[r("JayChen0519"),t(o)]),ge,fe,pe,e("a",me,[r("starry"),t(o)]),e("a",be,[r("mtdxc"),t(o)]),e("a",de,[r("胡刚风"),t(o)]),e("a",ue,[r("zhao85"),t(o)]),e("a",ke,[r("dreamisdream"),t(o)]),e("a",ye,[r("dingcan"),t(o)]),e("a",we,[r("Haibo Chen"),t(o)]),e("a",xe,[r("Leon"),t(o)]),e("a",qe,[r("custompal"),t(o)]),e("a",je,[r("PioLing"),t(o)]),e("a",ze,[r("KevinZang"),t(o)]),e("a",Le,[r("gongluck"),t(o)]),e("a",Ce,[r("a-ucontrol"),t(o)]),e("a",ve,[r("TalusL"),t(o)]),e("a",Te,[r("ahaooahaz"),t(o)]),e("a",Je,[r("TempoTian"),t(o)]),e("a",Ae,[r("Derek Liu"),t(o)]),e("a",De,[r("ljx0305"),t(o)]),e("a",Ze,[r("朱如洪 "),t(o)]),e("a",Be,[r("lijin"),t(o)]),e("a",He,[r("PioLing"),t(o)]),e("a",Ke,[r("BackT0TheFuture"),t(o)]),e("a",Ne,[r("perara"),t(o)]),e("a",We,[r("codeRATny"),t(o)]),e("a",Pe,[r("dengjfzh"),t(o)]),e("a",Se,[r("百鸣"),t(o)]),e("a",Ge,[r("fruit Juice"),t(o)]),e("a",Ve,[r("tbago"),t(o)]),e("a",Xe,[r("Luosh"),t(o)]),e("a",Ee,[r("linxiaoyan87"),t(o)]),e("a",Fe,[r("waken"),t(o)]),e("a",Me,[r("Deepslient"),t(o)]),e("a",Ie,[r("imp_rayjay"),t(o)]),e("a",Oe,[r("ArmstrongCN"),t(o)]),e("a",Re,[r("leibnewton"),t(o)]),e("a",Qe,[r("1002victor"),t(o)])]),Ue,e("figure",null,[e("a",Ye,[$e,t(o)]),er])])}const hr=a(_,[["render",rr],["__file","thanks.html.vue"]]);export{hr as default}; +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as h,o as i,c as s,a as e,d as r,b as t,e as n}from"./app-0NopiYEV.js";const _={},c=e("h2",{id:"特别感谢",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#特别感谢","aria-hidden":"true"},"#"),r(" 特别感谢")],-1),l={href:"https://github.com/ireader",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/ireader/media-server",target:"_blank",rel:"noopener noreferrer"},f=e("h2",{id:"致谢",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#致谢","aria-hidden":"true"},"#"),r(" 致谢")],-1),p=e("p",null,"感谢以下各位对本项目包括但不限于代码贡献、问题反馈、资金捐赠等各种方式的支持!以下排名不分先后:",-1),m={href:"https://github.com/ireader",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/gemfield",target:"_blank",rel:"noopener noreferrer"},d={href:"https://github.com/nanguantong2",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/tsingeye",target:"_blank",rel:"noopener noreferrer"},k={href:"https://github.com/chenxiaolei",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/zqsong",target:"_blank",rel:"noopener noreferrer"},w={href:"https://github.com/baiyfcu",target:"_blank",rel:"noopener noreferrer"},x={href:"https://github.com/3503207480",target:"_blank",rel:"noopener noreferrer"},q={href:"https://github.com/DroidChow",target:"_blank",rel:"noopener noreferrer"},j={href:"https://github.com/HuoQiShuai",target:"_blank",rel:"noopener noreferrer"},z={href:"https://github.com/ChinaCCF",target:"_blank",rel:"noopener noreferrer"},L={href:"https://github.com/JerryLinGd",target:"_blank",rel:"noopener noreferrer"},C={href:"https://www.linkingvision.com/",target:"_blank",rel:"noopener noreferrer"},v={href:"https://github.com/taotaobujue2008",target:"_blank",rel:"noopener noreferrer"},T=e("a",{href:"mailto:409257224@qq.com"},"好心情",-1),J={href:"https://github.com/MingZhuLiu",target:"_blank",rel:"noopener noreferrer"},A={href:"https://github.com/wasphin",target:"_blank",rel:"noopener noreferrer"},D={href:"https://github.com/doodoocoder",target:"_blank",rel:"noopener noreferrer"},Z={href:"https://github.com/Colibrow",target:"_blank",rel:"noopener noreferrer"},B={href:"https://github.com/swwheihei",target:"_blank",rel:"noopener noreferrer"},H={href:"https://gitee.com/kkkkk5G",target:"_blank",rel:"noopener noreferrer"},K=e("a",{href:"mailto:zhouweimin@supremind.com"},"Zhou Weimin",-1),N={href:"https://github.com/jim-king-2000",target:"_blank",rel:"noopener noreferrer"},W=e("a",{href:"mailto:392293307@qq.com"},"西瓜丶",-1),P={href:"https://github.com/MingZhuLiu",target:"_blank",rel:"noopener noreferrer"},S={href:"https://github.com/chengxiaosheng",target:"_blank",rel:"noopener noreferrer"},G=e("a",{href:"mailto:2381267071@qq.com"},"big panda",-1),V={href:"https://github.com/tanningzhong",target:"_blank",rel:"noopener noreferrer"},X={href:"https://github.com/hctym1995",target:"_blank",rel:"noopener noreferrer"},E={href:"https://gitee.com/kingyuanyuan",target:"_blank",rel:"noopener noreferrer"},F=e("a",{href:"mailto:sunhui200475@163.com"},"sunhui",-1),M=e("a",{href:"mailto:fangpengcheng@bilibili.com"},"mirs",-1),I=e("a",{href:"mailto:kevin__cheng@outlook.com"},"Kevin Cheng",-1),O=e("a",{href:"mailto:root@oopy.org"},"Liu Jiang",-1),R={href:"https://github.com/alongl",target:"_blank",rel:"noopener noreferrer"},Q=n('qingcilyg1949zhlong大裤衩droid.chow',5),U={href:"https://github.com/musicwood",target:"_blank",rel:"noopener noreferrer"},Y={href:"https://github.com/CharleyWangHZ",target:"_blank",rel:"noopener noreferrer"},$={href:"https://github.com/johzzy",target:"_blank",rel:"noopener noreferrer"},ee={href:"https://github.com/DoubleX69",target:"_blank",rel:"noopener noreferrer"},re={href:"https://github.com/lawrencehj",target:"_blank",rel:"noopener noreferrer"},oe=e("a",{href:"mailto:xyyangkun@163.com"},"yangkun",-1),te=e("a",{href:"mailto:holychaossword@hotmail.com"},"Xinghua Zhao",-1),ne={href:"https://github.com/brokensword2018",target:"_blank",rel:"noopener noreferrer"},ae={href:"https://github.com/rqb500",target:"_blank",rel:"noopener noreferrer"},he={href:"https://github.com/alexliyu7352",target:"_blank",rel:"noopener noreferrer"},ie={href:"https://github.com/Dw9",target:"_blank",rel:"noopener noreferrer"},se=n('明月惊鹊cgmhejilinalexliyu7352cgm',5),_e={href:"https://github.com/HaoruiWang",target:"_blank",rel:"noopener noreferrer"},ce=e("a",{href:"mailto:joshuafc@foxmail.com"},"joshuafc",-1),le={href:"https://github.com/JayChen0519",target:"_blank",rel:"noopener noreferrer"},ge=e("a",{href:"mailto:zuoxue@qq.com"},"zx",-1),fe=e("a",{href:"mailto:wangcker@163.com"},"wangcker",-1),pe=e("a",{href:"mailto:wp@zafu.edu.cn"},"WuPeng",-1),me={href:"https://github.com/starry",target:"_blank",rel:"noopener noreferrer"},be={href:"https://github.com/mtdxc",target:"_blank",rel:"noopener noreferrer"},de={href:"https://github.com/hugangfeng333",target:"_blank",rel:"noopener noreferrer"},ue={href:"https://github.com/zhao85",target:"_blank",rel:"noopener noreferrer"},ke={href:"https://github.com/dreamisdream",target:"_blank",rel:"noopener noreferrer"},ye={href:"https://github.com/dcan123",target:"_blank",rel:"noopener noreferrer"},we={href:"https://github.com/duiniuluantanqin",target:"_blank",rel:"noopener noreferrer"},xe={href:"https://gitee.com/leon14631",target:"_blank",rel:"noopener noreferrer"},qe={href:"https://github.com/custompal",target:"_blank",rel:"noopener noreferrer"},je={href:"https://github.com/PioLing",target:"_blank",rel:"noopener noreferrer"},ze={href:"https://github.com/ZSC714725",target:"_blank",rel:"noopener noreferrer"},Le={href:"https://github.com/gongluck",target:"_blank",rel:"noopener noreferrer"},Ce={href:"https://github.com/a-ucontrol",target:"_blank",rel:"noopener noreferrer"},ve={href:"https://github.com/TalusL",target:"_blank",rel:"noopener noreferrer"},Te={href:"https://github.com/AHAOAHA",target:"_blank",rel:"noopener noreferrer"},Je={href:"https://github.com/TempoTian",target:"_blank",rel:"noopener noreferrer"},Ae={href:"https://github.com/yjkhtddx",target:"_blank",rel:"noopener noreferrer"},De={href:"https://github.com/ljx0305",target:"_blank",rel:"noopener noreferrer"},Ze={href:"https://github.com/zhu410289616",target:"_blank",rel:"noopener noreferrer"},Be={href:"https://github.com/1461521844lijin",target:"_blank",rel:"noopener noreferrer"},He={href:"https://github.com/PioLing",target:"_blank",rel:"noopener noreferrer"},Ke={href:"https://github.com/BackT0TheFuture",target:"_blank",rel:"noopener noreferrer"},Ne={href:"https://github.com/perara",target:"_blank",rel:"noopener noreferrer"},We={href:"https://github.com/codeRATny",target:"_blank",rel:"noopener noreferrer"},Pe={href:"https://github.com/dengjfzh",target:"_blank",rel:"noopener noreferrer"},Se={href:"https://github.com/ixingqiao",target:"_blank",rel:"noopener noreferrer"},Ge={href:"https://github.com/xuandu",target:"_blank",rel:"noopener noreferrer"},Ve={href:"https://github.com/tbago",target:"_blank",rel:"noopener noreferrer"},Xe={href:"https://github.com/Luosh",target:"_blank",rel:"noopener noreferrer"},Ee={href:"https://github.com/linxiaoyan",target:"_blank",rel:"noopener noreferrer"},Fe={href:"https://github.com/mc373906408",target:"_blank",rel:"noopener noreferrer"},Me={href:"https://github.com/Deepslient",target:"_blank",rel:"noopener noreferrer"},Ie={href:"https://github.com/rayjay214",target:"_blank",rel:"noopener noreferrer"},Oe={href:"https://github.com/ArmstrongCN",target:"_blank",rel:"noopener noreferrer"},Re={href:"https://github.com/leibnewton",target:"_blank",rel:"noopener noreferrer"},Qe={href:"https://github.com/1002victor",target:"_blank",rel:"noopener noreferrer"},Ue=e("p",null,"同时感谢 JetBrains 对开源项目的支持,本项目使用 CLion 开发与调试:",-1),Ye={href:"https://jb.gg/OpenSourceSupport",target:"_blank",rel:"noopener noreferrer"},$e=e("img",{src:"https://resources.jetbrains.com/storage/products/company/brand/logos/CLion.svg",alt:"JetBrains",tabindex:"0",loading:"lazy"},null,-1),er=e("figcaption",null,"JetBrains",-1);function rr(or,tr){const o=h("ExternalLinkIcon");return i(),s("div",null,[c,e("p",null,[r("本项目采用了"),e("a",l,[r("老陈"),t(o)]),r(" 的 "),e("a",g,[r("media-server"),t(o)]),r(" 库, 本项目的 ts/fmp4/mp4/ps 容器格式的复用解复用都依赖 media-server 库。在实现本项目诸多功能时,老陈多次给予了无私热情关键的帮助, 特此对他表示诚挚的感谢!")]),f,p,e("p",null,[e("a",m,[r("老陈"),t(o)]),e("a",b,[r("Gemfield"),t(o)]),e("a",d,[r("南冠彤"),t(o)]),e("a",u,[r("凹凸慢"),t(o)]),e("a",k,[r("chenxiaolei"),t(o)]),e("a",y,[r("史前小虫"),t(o)]),e("a",w,[r("清涩绿茶"),t(o)]),e("a",x,[r("3503207480"),t(o)]),e("a",q,[r("DroidChow"),t(o)]),e("a",j,[r("阿塞"),t(o)]),e("a",z,[r("火宣"),t(o)]),e("a",L,[r("γ 瑞 γ ミ"),t(o)]),e("a",C,[r("linkingvision"),t(o)]),e("a",v,[r("茄子"),t(o)]),T,e("a",J,[r("浮沉"),t(o)]),e("a",A,[r("Xiaofeng Wang"),t(o)]),e("a",D,[r("doodoocoder"),t(o)]),e("a",Z,[r("qingci"),t(o)]),e("a",B,[r("swwheihei"),t(o)]),e("a",H,[r("KKKKK5G"),t(o)]),K,e("a",N,[r("Jim Jin"),t(o)]),W,e("a",P,[r("MingZhuLiu"),t(o)]),e("a",S,[r("chengxiaosheng"),t(o)]),G,e("a",V,[r("tanningzhong"),t(o)]),e("a",X,[r("hctym1995"),t(o)]),e("a",E,[r("hewenyuan"),t(o)]),F,M,I,O,e("a",R,[r("along"),t(o)]),Q,e("a",U,[r("陈晓林"),t(o)]),e("a",Y,[r("CharleyWangHZ"),t(o)]),e("a",$,[r("Johnny"),t(o)]),e("a",ee,[r("DoubleX69"),t(o)]),e("a",re,[r("lawrencehj"),t(o)]),oe,te,e("a",ne,[r("hejilin"),t(o)]),e("a",ae,[r("rqb500"),t(o)]),e("a",he,[r("Alex"),t(o)]),e("a",ie,[r("Dw9"),t(o)]),se,e("a",_e,[r("haorui wang"),t(o)]),ce,e("a",le,[r("JayChen0519"),t(o)]),ge,fe,pe,e("a",me,[r("starry"),t(o)]),e("a",be,[r("mtdxc"),t(o)]),e("a",de,[r("胡刚风"),t(o)]),e("a",ue,[r("zhao85"),t(o)]),e("a",ke,[r("dreamisdream"),t(o)]),e("a",ye,[r("dingcan"),t(o)]),e("a",we,[r("Haibo Chen"),t(o)]),e("a",xe,[r("Leon"),t(o)]),e("a",qe,[r("custompal"),t(o)]),e("a",je,[r("PioLing"),t(o)]),e("a",ze,[r("KevinZang"),t(o)]),e("a",Le,[r("gongluck"),t(o)]),e("a",Ce,[r("a-ucontrol"),t(o)]),e("a",ve,[r("TalusL"),t(o)]),e("a",Te,[r("ahaooahaz"),t(o)]),e("a",Je,[r("TempoTian"),t(o)]),e("a",Ae,[r("Derek Liu"),t(o)]),e("a",De,[r("ljx0305"),t(o)]),e("a",Ze,[r("朱如洪 "),t(o)]),e("a",Be,[r("lijin"),t(o)]),e("a",He,[r("PioLing"),t(o)]),e("a",Ke,[r("BackT0TheFuture"),t(o)]),e("a",Ne,[r("perara"),t(o)]),e("a",We,[r("codeRATny"),t(o)]),e("a",Pe,[r("dengjfzh"),t(o)]),e("a",Se,[r("百鸣"),t(o)]),e("a",Ge,[r("fruit Juice"),t(o)]),e("a",Ve,[r("tbago"),t(o)]),e("a",Xe,[r("Luosh"),t(o)]),e("a",Ee,[r("linxiaoyan87"),t(o)]),e("a",Fe,[r("waken"),t(o)]),e("a",Me,[r("Deepslient"),t(o)]),e("a",Ie,[r("imp_rayjay"),t(o)]),e("a",Oe,[r("ArmstrongCN"),t(o)]),e("a",Re,[r("leibnewton"),t(o)]),e("a",Qe,[r("1002victor"),t(o)])]),Ue,e("figure",null,[e("a",Ye,[$e,t(o)]),er])])}const hr=a(_,[["render",rr],["__file","thanks.html.vue"]]);export{hr as default}; diff --git a/assets/thanks.html-9FVCd-fN.js b/assets/thanks.html-Rcdc4mKk.js similarity index 98% rename from assets/thanks.html-9FVCd-fN.js rename to assets/thanks.html-Rcdc4mKk.js index f97c8b5..bbe6d20 100644 --- a/assets/thanks.html-9FVCd-fN.js +++ b/assets/thanks.html-Rcdc4mKk.js @@ -1 +1 @@ -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as h,o as i,c as s,a as e,d as r,b as t,e as n}from"./app-RP31lnfq.js";const l={},c=e("h2",{id:"special-thanks",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#special-thanks","aria-hidden":"true"},"#"),r(" Special Thanks")],-1),_={href:"https://github.com/ireader/media-server",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/ireader",target:"_blank",rel:"noopener noreferrer"},p=e("h2",{id:"acknowledgments",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#acknowledgments","aria-hidden":"true"},"#"),r(" Acknowledgments")],-1),f=e("p",null,"Thanks to all those who have supported this project in various ways, including but not limited to code contributions, problem feedback, and donations. The following list is not in any particular order:",-1),d={href:"https://github.com/ireader",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/gemfield",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/nanguantong2",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/tsingeye",target:"_blank",rel:"noopener noreferrer"},k={href:"https://github.com/chenxiaolei",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/zqsong",target:"_blank",rel:"noopener noreferrer"},w={href:"https://github.com/baiyfcu",target:"_blank",rel:"noopener noreferrer"},x={href:"https://github.com/3503207480",target:"_blank",rel:"noopener noreferrer"},q={href:"https://github.com/DroidChow",target:"_blank",rel:"noopener noreferrer"},j={href:"https://github.com/HuoQiShuai",target:"_blank",rel:"noopener noreferrer"},L={href:"https://github.com/ChinaCCF",target:"_blank",rel:"noopener noreferrer"},z={href:"https://github.com/JerryLinGd",target:"_blank",rel:"noopener noreferrer"},v={href:"https://www.linkingvision.com/",target:"_blank",rel:"noopener noreferrer"},C={href:"https://github.com/taotaobujue2008",target:"_blank",rel:"noopener noreferrer"},T=e("a",{href:"mailto:409257224@qq.com"},"好心情",-1),J={href:"https://github.com/MingZhuLiu",target:"_blank",rel:"noopener noreferrer"},A={href:"https://github.com/wasphin",target:"_blank",rel:"noopener noreferrer"},D={href:"https://github.com/doodoocoder",target:"_blank",rel:"noopener noreferrer"},Z={href:"https://github.com/Colibrow",target:"_blank",rel:"noopener noreferrer"},B={href:"https://github.com/swwheihei",target:"_blank",rel:"noopener noreferrer"},H={href:"https://gitee.com/kkkkk5G",target:"_blank",rel:"noopener noreferrer"},K=e("a",{href:"mailto:zhouweimin@supremind.com"},"Zhou Weimin",-1),S={href:"https://github.com/jim-king-2000",target:"_blank",rel:"noopener noreferrer"},W=e("a",{href:"mailto:392293307@qq.com"},"西瓜丶",-1),P={href:"https://github.com/MingZhuLiu",target:"_blank",rel:"noopener noreferrer"},G={href:"https://github.com/chengxiaosheng",target:"_blank",rel:"noopener noreferrer"},N=e("a",{href:"mailto:2381267071@qq.com"},"big panda",-1),V={href:"https://github.com/tanningzhong",target:"_blank",rel:"noopener noreferrer"},X={href:"https://github.com/hctym1995",target:"_blank",rel:"noopener noreferrer"},E={href:"https://gitee.com/kingyuanyuan",target:"_blank",rel:"noopener noreferrer"},F=e("a",{href:"mailto:sunhui200475@163.com"},"sunhui",-1),M=e("a",{href:"mailto:fangpengcheng@bilibili.com"},"mirs",-1),I=e("a",{href:"mailto:kevin__cheng@outlook.com"},"Kevin Cheng",-1),O=e("a",{href:"mailto:root@oopy.org"},"Liu Jiang",-1),R={href:"https://github.com/alongl",target:"_blank",rel:"noopener noreferrer"},Q=n('qingcilyg1949zhlong大裤衩droid.chow',5),U={href:"https://github.com/musicwood",target:"_blank",rel:"noopener noreferrer"},Y={href:"https://github.com/CharleyWangHZ",target:"_blank",rel:"noopener noreferrer"},$={href:"https://github.com/johzzy",target:"_blank",rel:"noopener noreferrer"},ee={href:"https://github.com/DoubleX69",target:"_blank",rel:"noopener noreferrer"},re={href:"https://github.com/lawrencehj",target:"_blank",rel:"noopener noreferrer"},oe=e("a",{href:"mailto:xyyangkun@163.com"},"yangkun",-1),te=e("a",{href:"mailto:holychaossword@hotmail.com"},"Xinghua Zhao",-1),ne={href:"https://github.com/brokensword2018",target:"_blank",rel:"noopener noreferrer"},ae={href:"https://github.com/rqb500",target:"_blank",rel:"noopener noreferrer"},he={href:"https://github.com/alexliyu7352",target:"_blank",rel:"noopener noreferrer"},ie={href:"https://github.com/Dw9",target:"_blank",rel:"noopener noreferrer"},se=n('明月惊鹊cgmhejilinalexliyu7352cgm',5),le={href:"https://github.com/HaoruiWang",target:"_blank",rel:"noopener noreferrer"},ce=e("a",{href:"mailto:joshuafc@foxmail.com"},"joshuafc",-1),_e={href:"https://github.com/JayChen0519",target:"_blank",rel:"noopener noreferrer"},ge=e("a",{href:"mailto:zuoxue@qq.com"},"zx",-1),pe=e("a",{href:"mailto:wangcker@163.com"},"wangcker",-1),fe=e("a",{href:"mailto:wp@zafu.edu.cn"},"WuPeng",-1),de={href:"https://github.com/starry",target:"_blank",rel:"noopener noreferrer"},me={href:"https://github.com/mtdxc",target:"_blank",rel:"noopener noreferrer"},ue={href:"https://github.com/hugangfeng333",target:"_blank",rel:"noopener noreferrer"},be={href:"https://github.com/zhao85",target:"_blank",rel:"noopener noreferrer"},ke={href:"https://github.com/dreamisdream",target:"_blank",rel:"noopener noreferrer"},ye={href:"https://github.com/dcan123",target:"_blank",rel:"noopener noreferrer"},we={href:"https://github.com/duiniuluantanqin",target:"_blank",rel:"noopener noreferrer"},xe={href:"https://gitee.com/leon14631",target:"_blank",rel:"noopener noreferrer"},qe={href:"https://github.com/custompal",target:"_blank",rel:"noopener noreferrer"},je={href:"https://github.com/PioLing",target:"_blank",rel:"noopener noreferrer"},Le={href:"https://github.com/ZSC714725",target:"_blank",rel:"noopener noreferrer"},ze={href:"https://github.com/gongluck",target:"_blank",rel:"noopener noreferrer"},ve={href:"https://github.com/a-ucontrol",target:"_blank",rel:"noopener noreferrer"},Ce={href:"https://github.com/TalusL",target:"_blank",rel:"noopener noreferrer"},Te={href:"https://github.com/AHAOAHA",target:"_blank",rel:"noopener noreferrer"},Je={href:"https://github.com/TempoTian",target:"_blank",rel:"noopener noreferrer"},Ae={href:"https://github.com/yjkhtddx",target:"_blank",rel:"noopener noreferrer"},De={href:"https://github.com/ljx0305",target:"_blank",rel:"noopener noreferrer"},Ze={href:"https://github.com/zhu410289616",target:"_blank",rel:"noopener noreferrer"},Be={href:"https://github.com/1461521844lijin",target:"_blank",rel:"noopener noreferrer"},He={href:"https://github.com/PioLing",target:"_blank",rel:"noopener noreferrer"},Ke={href:"https://github.com/BackT0TheFuture",target:"_blank",rel:"noopener noreferrer"},Se={href:"https://github.com/perara",target:"_blank",rel:"noopener noreferrer"},We={href:"https://github.com/codeRATny",target:"_blank",rel:"noopener noreferrer"},Pe={href:"https://github.com/dengjfzh",target:"_blank",rel:"noopener noreferrer"},Ge={href:"https://github.com/ixingqiao",target:"_blank",rel:"noopener noreferrer"},Ne={href:"https://github.com/xuandu",target:"_blank",rel:"noopener noreferrer"},Ve={href:"https://github.com/tbago",target:"_blank",rel:"noopener noreferrer"},Xe={href:"https://github.com/Luosh",target:"_blank",rel:"noopener noreferrer"},Ee={href:"https://github.com/linxiaoyan",target:"_blank",rel:"noopener noreferrer"},Fe={href:"https://github.com/mc373906408",target:"_blank",rel:"noopener noreferrer"},Me={href:"https://github.com/Deepslient",target:"_blank",rel:"noopener noreferrer"},Ie=e("p",null,"Also thank to JetBrains for their support for open source project, we developed and debugged zlmediakit with CLion:",-1),Oe={href:"https://jb.gg/OpenSourceSupport",target:"_blank",rel:"noopener noreferrer"},Re=e("img",{src:"https://resources.jetbrains.com/storage/products/company/brand/logos/CLion.svg",alt:"JetBrains",tabindex:"0",loading:"lazy"},null,-1),Qe=e("figcaption",null,"JetBrains",-1);function Ue(Ye,$e){const o=h("ExternalLinkIcon");return i(),s("div",null,[c,e("p",null,[r("This project uses the "),e("a",_,[r("media-server"),t(o)]),r(" library developed by "),e("a",g,[r("Lao Chen"),t(o)]),r(". The reuse and de-multiplexing of ts/fmp4/mp4/ps container formats in this project depend on the media-server library. Lao Chen has provided invaluable help and support multiple times in implementing many functions of this project, and we would like to express our sincere gratitude to him!")]),p,f,e("p",null,[e("a",d,[r("老陈"),t(o)]),e("a",m,[r("Gemfield"),t(o)]),e("a",u,[r("南冠彤"),t(o)]),e("a",b,[r("凹凸慢"),t(o)]),e("a",k,[r("chenxiaolei"),t(o)]),e("a",y,[r("史前小虫"),t(o)]),e("a",w,[r("清涩绿茶"),t(o)]),e("a",x,[r("3503207480"),t(o)]),e("a",q,[r("DroidChow"),t(o)]),e("a",j,[r("阿塞"),t(o)]),e("a",L,[r("火宣"),t(o)]),e("a",z,[r("γ 瑞 γ ミ"),t(o)]),e("a",v,[r("linkingvision"),t(o)]),e("a",C,[r("茄子"),t(o)]),T,e("a",J,[r("浮沉"),t(o)]),e("a",A,[r("Xiaofeng Wang"),t(o)]),e("a",D,[r("doodoocoder"),t(o)]),e("a",Z,[r("qingci"),t(o)]),e("a",B,[r("swwheihei"),t(o)]),e("a",H,[r("KKKKK5G"),t(o)]),K,e("a",S,[r("Jim Jin"),t(o)]),W,e("a",P,[r("MingZhuLiu"),t(o)]),e("a",G,[r("chengxiaosheng"),t(o)]),N,e("a",V,[r("tanningzhong"),t(o)]),e("a",X,[r("hctym1995"),t(o)]),e("a",E,[r("hewenyuan"),t(o)]),F,M,I,O,e("a",R,[r("along"),t(o)]),Q,e("a",U,[r("陈晓林"),t(o)]),e("a",Y,[r("CharleyWangHZ"),t(o)]),e("a",$,[r("Johnny"),t(o)]),e("a",ee,[r("DoubleX69"),t(o)]),e("a",re,[r("lawrencehj"),t(o)]),oe,te,e("a",ne,[r("hejilin"),t(o)]),e("a",ae,[r("rqb500"),t(o)]),e("a",he,[r("Alex"),t(o)]),e("a",ie,[r("Dw9"),t(o)]),se,e("a",le,[r("haorui wang"),t(o)]),ce,e("a",_e,[r("JayChen0519"),t(o)]),ge,pe,fe,e("a",de,[r("starry"),t(o)]),e("a",me,[r("mtdxc"),t(o)]),e("a",ue,[r("胡刚风"),t(o)]),e("a",be,[r("zhao85"),t(o)]),e("a",ke,[r("dreamisdream"),t(o)]),e("a",ye,[r("dingcan"),t(o)]),e("a",we,[r("Haibo Chen"),t(o)]),e("a",xe,[r("Leon"),t(o)]),e("a",qe,[r("custompal"),t(o)]),e("a",je,[r("PioLing"),t(o)]),e("a",Le,[r("KevinZang"),t(o)]),e("a",ze,[r("gongluck"),t(o)]),e("a",ve,[r("a-ucontrol"),t(o)]),e("a",Ce,[r("TalusL"),t(o)]),e("a",Te,[r("ahaooahaz"),t(o)]),e("a",Je,[r("TempoTian"),t(o)]),e("a",Ae,[r("Derek Liu"),t(o)]),e("a",De,[r("ljx0305"),t(o)]),e("a",Ze,[r("朱如洪 "),t(o)]),e("a",Be,[r("lijin"),t(o)]),e("a",He,[r("PioLing"),t(o)]),e("a",Ke,[r("BackT0TheFuture"),t(o)]),e("a",Se,[r("perara"),t(o)]),e("a",We,[r("codeRATny"),t(o)]),e("a",Pe,[r("dengjfzh"),t(o)]),e("a",Ge,[r("百鸣"),t(o)]),e("a",Ne,[r("fruit Juice"),t(o)]),e("a",Ve,[r("tbago"),t(o)]),e("a",Xe,[r("Luosh"),t(o)]),e("a",Ee,[r("linxiaoyan87"),t(o)]),e("a",Fe,[r("waken"),t(o)]),e("a",Me,[r("Deepslient"),t(o)])]),Ie,e("figure",null,[e("a",Oe,[Re,t(o)]),Qe])])}const or=a(l,[["render",Ue],["__file","thanks.html.vue"]]);export{or as default}; +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as h,o as i,c as s,a as e,d as r,b as t,e as n}from"./app-0NopiYEV.js";const l={},c=e("h2",{id:"special-thanks",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#special-thanks","aria-hidden":"true"},"#"),r(" Special Thanks")],-1),_={href:"https://github.com/ireader/media-server",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/ireader",target:"_blank",rel:"noopener noreferrer"},p=e("h2",{id:"acknowledgments",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#acknowledgments","aria-hidden":"true"},"#"),r(" Acknowledgments")],-1),f=e("p",null,"Thanks to all those who have supported this project in various ways, including but not limited to code contributions, problem feedback, and donations. The following list is not in any particular order:",-1),d={href:"https://github.com/ireader",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/gemfield",target:"_blank",rel:"noopener noreferrer"},u={href:"https://github.com/nanguantong2",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/tsingeye",target:"_blank",rel:"noopener noreferrer"},k={href:"https://github.com/chenxiaolei",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/zqsong",target:"_blank",rel:"noopener noreferrer"},w={href:"https://github.com/baiyfcu",target:"_blank",rel:"noopener noreferrer"},x={href:"https://github.com/3503207480",target:"_blank",rel:"noopener noreferrer"},q={href:"https://github.com/DroidChow",target:"_blank",rel:"noopener noreferrer"},j={href:"https://github.com/HuoQiShuai",target:"_blank",rel:"noopener noreferrer"},L={href:"https://github.com/ChinaCCF",target:"_blank",rel:"noopener noreferrer"},z={href:"https://github.com/JerryLinGd",target:"_blank",rel:"noopener noreferrer"},v={href:"https://www.linkingvision.com/",target:"_blank",rel:"noopener noreferrer"},C={href:"https://github.com/taotaobujue2008",target:"_blank",rel:"noopener noreferrer"},T=e("a",{href:"mailto:409257224@qq.com"},"好心情",-1),J={href:"https://github.com/MingZhuLiu",target:"_blank",rel:"noopener noreferrer"},A={href:"https://github.com/wasphin",target:"_blank",rel:"noopener noreferrer"},D={href:"https://github.com/doodoocoder",target:"_blank",rel:"noopener noreferrer"},Z={href:"https://github.com/Colibrow",target:"_blank",rel:"noopener noreferrer"},B={href:"https://github.com/swwheihei",target:"_blank",rel:"noopener noreferrer"},H={href:"https://gitee.com/kkkkk5G",target:"_blank",rel:"noopener noreferrer"},K=e("a",{href:"mailto:zhouweimin@supremind.com"},"Zhou Weimin",-1),S={href:"https://github.com/jim-king-2000",target:"_blank",rel:"noopener noreferrer"},W=e("a",{href:"mailto:392293307@qq.com"},"西瓜丶",-1),P={href:"https://github.com/MingZhuLiu",target:"_blank",rel:"noopener noreferrer"},G={href:"https://github.com/chengxiaosheng",target:"_blank",rel:"noopener noreferrer"},N=e("a",{href:"mailto:2381267071@qq.com"},"big panda",-1),V={href:"https://github.com/tanningzhong",target:"_blank",rel:"noopener noreferrer"},X={href:"https://github.com/hctym1995",target:"_blank",rel:"noopener noreferrer"},E={href:"https://gitee.com/kingyuanyuan",target:"_blank",rel:"noopener noreferrer"},F=e("a",{href:"mailto:sunhui200475@163.com"},"sunhui",-1),M=e("a",{href:"mailto:fangpengcheng@bilibili.com"},"mirs",-1),I=e("a",{href:"mailto:kevin__cheng@outlook.com"},"Kevin Cheng",-1),O=e("a",{href:"mailto:root@oopy.org"},"Liu Jiang",-1),R={href:"https://github.com/alongl",target:"_blank",rel:"noopener noreferrer"},Q=n('qingcilyg1949zhlong大裤衩droid.chow',5),U={href:"https://github.com/musicwood",target:"_blank",rel:"noopener noreferrer"},Y={href:"https://github.com/CharleyWangHZ",target:"_blank",rel:"noopener noreferrer"},$={href:"https://github.com/johzzy",target:"_blank",rel:"noopener noreferrer"},ee={href:"https://github.com/DoubleX69",target:"_blank",rel:"noopener noreferrer"},re={href:"https://github.com/lawrencehj",target:"_blank",rel:"noopener noreferrer"},oe=e("a",{href:"mailto:xyyangkun@163.com"},"yangkun",-1),te=e("a",{href:"mailto:holychaossword@hotmail.com"},"Xinghua Zhao",-1),ne={href:"https://github.com/brokensword2018",target:"_blank",rel:"noopener noreferrer"},ae={href:"https://github.com/rqb500",target:"_blank",rel:"noopener noreferrer"},he={href:"https://github.com/alexliyu7352",target:"_blank",rel:"noopener noreferrer"},ie={href:"https://github.com/Dw9",target:"_blank",rel:"noopener noreferrer"},se=n('明月惊鹊cgmhejilinalexliyu7352cgm',5),le={href:"https://github.com/HaoruiWang",target:"_blank",rel:"noopener noreferrer"},ce=e("a",{href:"mailto:joshuafc@foxmail.com"},"joshuafc",-1),_e={href:"https://github.com/JayChen0519",target:"_blank",rel:"noopener noreferrer"},ge=e("a",{href:"mailto:zuoxue@qq.com"},"zx",-1),pe=e("a",{href:"mailto:wangcker@163.com"},"wangcker",-1),fe=e("a",{href:"mailto:wp@zafu.edu.cn"},"WuPeng",-1),de={href:"https://github.com/starry",target:"_blank",rel:"noopener noreferrer"},me={href:"https://github.com/mtdxc",target:"_blank",rel:"noopener noreferrer"},ue={href:"https://github.com/hugangfeng333",target:"_blank",rel:"noopener noreferrer"},be={href:"https://github.com/zhao85",target:"_blank",rel:"noopener noreferrer"},ke={href:"https://github.com/dreamisdream",target:"_blank",rel:"noopener noreferrer"},ye={href:"https://github.com/dcan123",target:"_blank",rel:"noopener noreferrer"},we={href:"https://github.com/duiniuluantanqin",target:"_blank",rel:"noopener noreferrer"},xe={href:"https://gitee.com/leon14631",target:"_blank",rel:"noopener noreferrer"},qe={href:"https://github.com/custompal",target:"_blank",rel:"noopener noreferrer"},je={href:"https://github.com/PioLing",target:"_blank",rel:"noopener noreferrer"},Le={href:"https://github.com/ZSC714725",target:"_blank",rel:"noopener noreferrer"},ze={href:"https://github.com/gongluck",target:"_blank",rel:"noopener noreferrer"},ve={href:"https://github.com/a-ucontrol",target:"_blank",rel:"noopener noreferrer"},Ce={href:"https://github.com/TalusL",target:"_blank",rel:"noopener noreferrer"},Te={href:"https://github.com/AHAOAHA",target:"_blank",rel:"noopener noreferrer"},Je={href:"https://github.com/TempoTian",target:"_blank",rel:"noopener noreferrer"},Ae={href:"https://github.com/yjkhtddx",target:"_blank",rel:"noopener noreferrer"},De={href:"https://github.com/ljx0305",target:"_blank",rel:"noopener noreferrer"},Ze={href:"https://github.com/zhu410289616",target:"_blank",rel:"noopener noreferrer"},Be={href:"https://github.com/1461521844lijin",target:"_blank",rel:"noopener noreferrer"},He={href:"https://github.com/PioLing",target:"_blank",rel:"noopener noreferrer"},Ke={href:"https://github.com/BackT0TheFuture",target:"_blank",rel:"noopener noreferrer"},Se={href:"https://github.com/perara",target:"_blank",rel:"noopener noreferrer"},We={href:"https://github.com/codeRATny",target:"_blank",rel:"noopener noreferrer"},Pe={href:"https://github.com/dengjfzh",target:"_blank",rel:"noopener noreferrer"},Ge={href:"https://github.com/ixingqiao",target:"_blank",rel:"noopener noreferrer"},Ne={href:"https://github.com/xuandu",target:"_blank",rel:"noopener noreferrer"},Ve={href:"https://github.com/tbago",target:"_blank",rel:"noopener noreferrer"},Xe={href:"https://github.com/Luosh",target:"_blank",rel:"noopener noreferrer"},Ee={href:"https://github.com/linxiaoyan",target:"_blank",rel:"noopener noreferrer"},Fe={href:"https://github.com/mc373906408",target:"_blank",rel:"noopener noreferrer"},Me={href:"https://github.com/Deepslient",target:"_blank",rel:"noopener noreferrer"},Ie=e("p",null,"Also thank to JetBrains for their support for open source project, we developed and debugged zlmediakit with CLion:",-1),Oe={href:"https://jb.gg/OpenSourceSupport",target:"_blank",rel:"noopener noreferrer"},Re=e("img",{src:"https://resources.jetbrains.com/storage/products/company/brand/logos/CLion.svg",alt:"JetBrains",tabindex:"0",loading:"lazy"},null,-1),Qe=e("figcaption",null,"JetBrains",-1);function Ue(Ye,$e){const o=h("ExternalLinkIcon");return i(),s("div",null,[c,e("p",null,[r("This project uses the "),e("a",_,[r("media-server"),t(o)]),r(" library developed by "),e("a",g,[r("Lao Chen"),t(o)]),r(". The reuse and de-multiplexing of ts/fmp4/mp4/ps container formats in this project depend on the media-server library. Lao Chen has provided invaluable help and support multiple times in implementing many functions of this project, and we would like to express our sincere gratitude to him!")]),p,f,e("p",null,[e("a",d,[r("老陈"),t(o)]),e("a",m,[r("Gemfield"),t(o)]),e("a",u,[r("南冠彤"),t(o)]),e("a",b,[r("凹凸慢"),t(o)]),e("a",k,[r("chenxiaolei"),t(o)]),e("a",y,[r("史前小虫"),t(o)]),e("a",w,[r("清涩绿茶"),t(o)]),e("a",x,[r("3503207480"),t(o)]),e("a",q,[r("DroidChow"),t(o)]),e("a",j,[r("阿塞"),t(o)]),e("a",L,[r("火宣"),t(o)]),e("a",z,[r("γ 瑞 γ ミ"),t(o)]),e("a",v,[r("linkingvision"),t(o)]),e("a",C,[r("茄子"),t(o)]),T,e("a",J,[r("浮沉"),t(o)]),e("a",A,[r("Xiaofeng Wang"),t(o)]),e("a",D,[r("doodoocoder"),t(o)]),e("a",Z,[r("qingci"),t(o)]),e("a",B,[r("swwheihei"),t(o)]),e("a",H,[r("KKKKK5G"),t(o)]),K,e("a",S,[r("Jim Jin"),t(o)]),W,e("a",P,[r("MingZhuLiu"),t(o)]),e("a",G,[r("chengxiaosheng"),t(o)]),N,e("a",V,[r("tanningzhong"),t(o)]),e("a",X,[r("hctym1995"),t(o)]),e("a",E,[r("hewenyuan"),t(o)]),F,M,I,O,e("a",R,[r("along"),t(o)]),Q,e("a",U,[r("陈晓林"),t(o)]),e("a",Y,[r("CharleyWangHZ"),t(o)]),e("a",$,[r("Johnny"),t(o)]),e("a",ee,[r("DoubleX69"),t(o)]),e("a",re,[r("lawrencehj"),t(o)]),oe,te,e("a",ne,[r("hejilin"),t(o)]),e("a",ae,[r("rqb500"),t(o)]),e("a",he,[r("Alex"),t(o)]),e("a",ie,[r("Dw9"),t(o)]),se,e("a",le,[r("haorui wang"),t(o)]),ce,e("a",_e,[r("JayChen0519"),t(o)]),ge,pe,fe,e("a",de,[r("starry"),t(o)]),e("a",me,[r("mtdxc"),t(o)]),e("a",ue,[r("胡刚风"),t(o)]),e("a",be,[r("zhao85"),t(o)]),e("a",ke,[r("dreamisdream"),t(o)]),e("a",ye,[r("dingcan"),t(o)]),e("a",we,[r("Haibo Chen"),t(o)]),e("a",xe,[r("Leon"),t(o)]),e("a",qe,[r("custompal"),t(o)]),e("a",je,[r("PioLing"),t(o)]),e("a",Le,[r("KevinZang"),t(o)]),e("a",ze,[r("gongluck"),t(o)]),e("a",ve,[r("a-ucontrol"),t(o)]),e("a",Ce,[r("TalusL"),t(o)]),e("a",Te,[r("ahaooahaz"),t(o)]),e("a",Je,[r("TempoTian"),t(o)]),e("a",Ae,[r("Derek Liu"),t(o)]),e("a",De,[r("ljx0305"),t(o)]),e("a",Ze,[r("朱如洪 "),t(o)]),e("a",Be,[r("lijin"),t(o)]),e("a",He,[r("PioLing"),t(o)]),e("a",Ke,[r("BackT0TheFuture"),t(o)]),e("a",Se,[r("perara"),t(o)]),e("a",We,[r("codeRATny"),t(o)]),e("a",Pe,[r("dengjfzh"),t(o)]),e("a",Ge,[r("百鸣"),t(o)]),e("a",Ne,[r("fruit Juice"),t(o)]),e("a",Ve,[r("tbago"),t(o)]),e("a",Xe,[r("Luosh"),t(o)]),e("a",Ee,[r("linxiaoyan87"),t(o)]),e("a",Fe,[r("waken"),t(o)]),e("a",Me,[r("Deepslient"),t(o)])]),Ie,e("figure",null,[e("a",Oe,[Re,t(o)]),Qe])])}const or=a(l,[["render",Ue],["__file","thanks.html.vue"]]);export{or as default}; diff --git a/assets/the_nature_of_live_broadcast_delay.html-PF-gA_DU.js b/assets/the_nature_of_live_broadcast_delay.html-bjchJaZD.js similarity index 97% rename from assets/the_nature_of_live_broadcast_delay.html-PF-gA_DU.js rename to assets/the_nature_of_live_broadcast_delay.html-bjchJaZD.js index b7a46eb..cc35cf0 100644 --- a/assets/the_nature_of_live_broadcast_delay.html-PF-gA_DU.js +++ b/assets/the_nature_of_live_broadcast_delay.html-bjchJaZD.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as t,e as c}from"./app-RP31lnfq.js";const l={},i=c("
                          • 1、所谓直播就是正在发生的事情,流逝多少时间产生多少数据。

                          • 2、那么直播为什么会有延时?本质是,直播为了提升体验,会给缓存一部分历史数据(比如说为了提高画面打开速度做 GOP 缓存)。

                          • 3、那是不是没有 GOP 缓存就不会有延时呢?答案是错误的,因为不仅仅你的服务器有缓存,播放器也有缓存。播放器在点击开始播放出现画面会有时间差,那么为什么播放器要这么做?原因是播放器为了提高播放流畅度,做了缓存。直播数据传到播放器我们可以认为是一根水管,这跟水管水量时大时小,有时干脆断流,如果不用缓存一下,那么画面会卡顿。

                          • 4、假定我们削掉服务器和播放器所有的缓存,那么是不是就没有延时呢?Too yong too simple!记住,缓存是永远无法消灭的。假定网络是根水管,我们掐住它 5 秒,然后再放开手,那么这 5 秒的数据会消失吗?并不会!直播是正在发生的事情,它会源源不断产生水量,会把水管涨粗,在这 5 秒内,播放器就得干等数据,等网络恢复了,那么这 5 秒的数据会一股脑怼给播放器,然后又是接着的源源不断过来的直播数据,这样播放器就多了 5 秒的数据,而这多出来 5 秒的数据要么直接丢弃要么加快播放速度,否则永远都不会凭空消灭掉。

                          • 5、很遗憾的告诉你,几乎所有标准播放器,都不会直接丢数据或加快播放速度。

                          • 6、那细心的小伙伴会问我,为什么 UDP 直播延时更低?原因是 UDP 这根管子上有很多破洞,水量太大了直接漏了,表现形式就是数据直接丢了,那么播放器就得花屏了。

                          • 7、TCP 水管涨粗可以理解为网络链路缓存的增加(路由器缓存增加),如果滞留的水量太大了怎么办?那么先是撑满网络链路缓存,然后撑满发送端 Socket 缓存,然后撑满发送端应用逻辑缓存,如果还放不下,那么对不起,服务器只能掐断 TCP 了。

                          ",1),_=[i];function r(d,s){return o(),t("div",null,_)}const a=e(l,[["render",r],["__file","the_nature_of_live_broadcast_delay.html.vue"]]);export{a as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as t,e as c}from"./app-0NopiYEV.js";const l={},i=c("
                          • 1、所谓直播就是正在发生的事情,流逝多少时间产生多少数据。

                          • 2、那么直播为什么会有延时?本质是,直播为了提升体验,会给缓存一部分历史数据(比如说为了提高画面打开速度做 GOP 缓存)。

                          • 3、那是不是没有 GOP 缓存就不会有延时呢?答案是错误的,因为不仅仅你的服务器有缓存,播放器也有缓存。播放器在点击开始播放出现画面会有时间差,那么为什么播放器要这么做?原因是播放器为了提高播放流畅度,做了缓存。直播数据传到播放器我们可以认为是一根水管,这跟水管水量时大时小,有时干脆断流,如果不用缓存一下,那么画面会卡顿。

                          • 4、假定我们削掉服务器和播放器所有的缓存,那么是不是就没有延时呢?Too yong too simple!记住,缓存是永远无法消灭的。假定网络是根水管,我们掐住它 5 秒,然后再放开手,那么这 5 秒的数据会消失吗?并不会!直播是正在发生的事情,它会源源不断产生水量,会把水管涨粗,在这 5 秒内,播放器就得干等数据,等网络恢复了,那么这 5 秒的数据会一股脑怼给播放器,然后又是接着的源源不断过来的直播数据,这样播放器就多了 5 秒的数据,而这多出来 5 秒的数据要么直接丢弃要么加快播放速度,否则永远都不会凭空消灭掉。

                          • 5、很遗憾的告诉你,几乎所有标准播放器,都不会直接丢数据或加快播放速度。

                          • 6、那细心的小伙伴会问我,为什么 UDP 直播延时更低?原因是 UDP 这根管子上有很多破洞,水量太大了直接漏了,表现形式就是数据直接丢了,那么播放器就得花屏了。

                          • 7、TCP 水管涨粗可以理解为网络链路缓存的增加(路由器缓存增加),如果滞留的水量太大了怎么办?那么先是撑满网络链路缓存,然后撑满发送端 Socket 缓存,然后撑满发送端应用逻辑缓存,如果还放不下,那么对不起,服务器只能掐断 TCP 了。

                          ",1),_=[i];function r(d,s){return o(),t("div",null,_)}const a=e(l,[["render",r],["__file","the_nature_of_live_broadcast_delay.html.vue"]]);export{a as default}; diff --git a/assets/the_nature_of_live_broadcast_delay.html-SrNo_kM-.js b/assets/the_nature_of_live_broadcast_delay.html-uU6VtFJR.js similarity index 97% rename from assets/the_nature_of_live_broadcast_delay.html-SrNo_kM-.js rename to assets/the_nature_of_live_broadcast_delay.html-uU6VtFJR.js index aeffa99..d7073ad 100644 --- a/assets/the_nature_of_live_broadcast_delay.html-SrNo_kM-.js +++ b/assets/the_nature_of_live_broadcast_delay.html-uU6VtFJR.js @@ -1 +1 @@ -import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c as a,e as o}from"./app-RP31lnfq.js";const i={},s=o("
                          1. Live streaming is the representation of ongoing events, generating data as time passes.

                          2. So why is there a delay in live streaming? The essence lies in the fact that, in order to enhance the user experience, live streaming caches a portion of historical data (such as using GOP caching to improve video loading speed).

                          3. Does this mean that without GOP caching, there would be no delay? The answer is incorrect because not only does your server have a cache, but the player also has its own cache. There is a time difference between when the player clicks "Play" and when the video appears. Why does the player do this? The reason is to improve the smoothness of playback by implementing caching. We can consider the transmission of live streaming data to the player as a pipeline. Just like a pipeline can have varying water flow rates and even interruptions, if we don't use a "bucket" to buffer it, the video may stutter.

                          4. Let's assume we remove all the caches from both the server and the player. Does that mean there would be no delay? Too young, too simple! Remember, caches can never be completely eliminated. Let's say the network is a water pipe, and we block it for 5 seconds before releasing it. Will the data from those 5 seconds disappear? No! Live streaming is an ongoing event, continuously generating "water flow." It will cause the pipe to expand. During those 5 seconds, the player has to wait for the data, and once the network is restored, the player will receive a surge of data from those 5 seconds. Then, the continuous flow of live streaming data resumes. As a result, the player ends up with an extra 5 seconds of data, which can either be discarded or played back at an accelerated speed. Otherwise, it will never magically disappear.

                          5. Unfortunately, I have to tell you that almost all standard players do not directly discard data or accelerate playback speed.

                          6. Now, an observant friend may ask, why does UDP live streaming have lower latency? The reason is that UDP, as a "pipe," has many holes, allowing excessive water to leak out. The result is direct data loss, causing the player to experience screen glitches.

                          7. The expansion of the TCP pipeline can be understood as an increase in network link buffering (router buffering). What if there is too much water accumulation? First, it fills up the network link buffer, then the sending-side socket buffer, and then the sending-side application logic buffer. If there is still not enough space, I'm sorry, but the server has no choice but to sever the TCP connection.

                          ",1),n=[s];function r(l,h){return t(),a("div",null,n)}const p=e(i,[["render",r],["__file","the_nature_of_live_broadcast_delay.html.vue"]]);export{p as default}; +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c as a,e as o}from"./app-0NopiYEV.js";const i={},s=o("
                          1. Live streaming is the representation of ongoing events, generating data as time passes.

                          2. So why is there a delay in live streaming? The essence lies in the fact that, in order to enhance the user experience, live streaming caches a portion of historical data (such as using GOP caching to improve video loading speed).

                          3. Does this mean that without GOP caching, there would be no delay? The answer is incorrect because not only does your server have a cache, but the player also has its own cache. There is a time difference between when the player clicks "Play" and when the video appears. Why does the player do this? The reason is to improve the smoothness of playback by implementing caching. We can consider the transmission of live streaming data to the player as a pipeline. Just like a pipeline can have varying water flow rates and even interruptions, if we don't use a "bucket" to buffer it, the video may stutter.

                          4. Let's assume we remove all the caches from both the server and the player. Does that mean there would be no delay? Too young, too simple! Remember, caches can never be completely eliminated. Let's say the network is a water pipe, and we block it for 5 seconds before releasing it. Will the data from those 5 seconds disappear? No! Live streaming is an ongoing event, continuously generating "water flow." It will cause the pipe to expand. During those 5 seconds, the player has to wait for the data, and once the network is restored, the player will receive a surge of data from those 5 seconds. Then, the continuous flow of live streaming data resumes. As a result, the player ends up with an extra 5 seconds of data, which can either be discarded or played back at an accelerated speed. Otherwise, it will never magically disappear.

                          5. Unfortunately, I have to tell you that almost all standard players do not directly discard data or accelerate playback speed.

                          6. Now, an observant friend may ask, why does UDP live streaming have lower latency? The reason is that UDP, as a "pipe," has many holes, allowing excessive water to leak out. The result is direct data loss, causing the player to experience screen glitches.

                          7. The expansion of the TCP pipeline can be understood as an increase in network link buffering (router buffering). What if there is too much water accumulation? First, it fills up the network link buffer, then the sending-side socket buffer, and then the sending-side application logic buffer. If there is still not enough space, I'm sorry, but the server has no choice but to sever the TCP connection.

                          ",1),n=[s];function r(l,h){return t(),a("div",null,n)}const p=e(i,[["render",r],["__file","the_nature_of_live_broadcast_delay.html.vue"]]);export{p as default}; diff --git a/assets/timeline-definition-732a2638-8ZtyCvMC.js b/assets/timeline-definition-732a2638-_vkJzhaO.js similarity index 99% rename from assets/timeline-definition-732a2638-8ZtyCvMC.js rename to assets/timeline-definition-732a2638-_vkJzhaO.js index 3004a1a..efb8c50 100644 --- a/assets/timeline-definition-732a2638-8ZtyCvMC.js +++ b/assets/timeline-definition-732a2638-_vkJzhaO.js @@ -1,4 +1,4 @@ -import{b3 as ft,z as gt,c as mt,l as E,h as G,t as xt,b4 as bt,b5 as _t,b6 as kt}from"./mermaid.core-ygY5oRaR.js";import{a as D}from"./arc-IaSnKFUc.js";import"./app-RP31lnfq.js";import"./path-aUcfwwLI.js";var K=function(){var n=function(g,i,r,c){for(r=r||{},c=g.length;c--;r[g[c]]=i);return r},t=[6,8,10,11,12,14,16,17,20,21],e=[1,9],a=[1,10],s=[1,11],h=[1,12],l=[1,13],p=[1,16],y=[1,17],f={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:function(i,r,c,d,u,o,$){var x=o.length-1;switch(u){case 1:return o[x-1];case 2:this.$=[];break;case 3:o[x-1].push(o[x]),this.$=o[x-1];break;case 4:case 5:this.$=o[x];break;case 6:case 7:this.$=[];break;case 8:d.getCommonDb().setDiagramTitle(o[x].substr(6)),this.$=o[x].substr(6);break;case 9:this.$=o[x].trim(),d.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=o[x].trim(),d.getCommonDb().setAccDescription(this.$);break;case 12:d.addSection(o[x].substr(8)),this.$=o[x].substr(8);break;case 15:d.addTask(o[x],0,""),this.$=o[x];break;case 16:d.addEvent(o[x].substr(2)),this.$=o[x];break}},table:[{3:1,4:[1,2]},{1:[3]},n(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:e,12:a,14:s,16:h,17:l,18:14,19:15,20:p,21:y},n(t,[2,7],{1:[2,1]}),n(t,[2,3]),{9:18,11:e,12:a,14:s,16:h,17:l,18:14,19:15,20:p,21:y},n(t,[2,5]),n(t,[2,6]),n(t,[2,8]),{13:[1,19]},{15:[1,20]},n(t,[2,11]),n(t,[2,12]),n(t,[2,13]),n(t,[2,14]),n(t,[2,15]),n(t,[2,16]),n(t,[2,4]),n(t,[2,9]),n(t,[2,10])],defaultActions:{},parseError:function(i,r){if(r.recoverable)this.trace(i);else{var c=new Error(i);throw c.hash=r,c}},parse:function(i){var r=this,c=[0],d=[],u=[null],o=[],$=this.table,x="",T=0,W=0,C=2,A=1,B=o.slice.call(arguments,1),k=Object.create(this.lexer),w={yy:{}};for(var v in this.yy)Object.prototype.hasOwnProperty.call(this.yy,v)&&(w.yy[v]=this.yy[v]);k.setInput(i,w.yy),w.yy.lexer=k,w.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var I=k.yylloc;o.push(I);var P=k.options&&k.options.ranges;typeof w.yy.parseError=="function"?this.parseError=w.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function z(){var M;return M=d.pop()||k.lex()||A,typeof M!="number"&&(M instanceof Array&&(d=M,M=d.pop()),M=r.symbols_[M]||M),M}for(var _,L,S,Z,R={},O,N,Y,j;;){if(L=c[c.length-1],this.defaultActions[L]?S=this.defaultActions[L]:((_===null||typeof _>"u")&&(_=z()),S=$[L]&&$[L][_]),typeof S>"u"||!S.length||!S[0]){var J="";j=[];for(O in $[L])this.terminals_[O]&&O>C&&j.push("'"+this.terminals_[O]+"'");k.showPosition?J="Parse error on line "+(T+1)+`: +import{b3 as ft,z as gt,c as mt,l as E,h as G,t as xt,b4 as bt,b5 as _t,b6 as kt}from"./mermaid.core-YBgJFCkH.js";import{a as D}from"./arc-zVzTa0l4.js";import"./app-0NopiYEV.js";import"./path-aUcfwwLI.js";var K=function(){var n=function(g,i,r,c){for(r=r||{},c=g.length;c--;r[g[c]]=i);return r},t=[6,8,10,11,12,14,16,17,20,21],e=[1,9],a=[1,10],s=[1,11],h=[1,12],l=[1,13],p=[1,16],y=[1,17],f={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:function(i,r,c,d,u,o,$){var x=o.length-1;switch(u){case 1:return o[x-1];case 2:this.$=[];break;case 3:o[x-1].push(o[x]),this.$=o[x-1];break;case 4:case 5:this.$=o[x];break;case 6:case 7:this.$=[];break;case 8:d.getCommonDb().setDiagramTitle(o[x].substr(6)),this.$=o[x].substr(6);break;case 9:this.$=o[x].trim(),d.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=o[x].trim(),d.getCommonDb().setAccDescription(this.$);break;case 12:d.addSection(o[x].substr(8)),this.$=o[x].substr(8);break;case 15:d.addTask(o[x],0,""),this.$=o[x];break;case 16:d.addEvent(o[x].substr(2)),this.$=o[x];break}},table:[{3:1,4:[1,2]},{1:[3]},n(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:e,12:a,14:s,16:h,17:l,18:14,19:15,20:p,21:y},n(t,[2,7],{1:[2,1]}),n(t,[2,3]),{9:18,11:e,12:a,14:s,16:h,17:l,18:14,19:15,20:p,21:y},n(t,[2,5]),n(t,[2,6]),n(t,[2,8]),{13:[1,19]},{15:[1,20]},n(t,[2,11]),n(t,[2,12]),n(t,[2,13]),n(t,[2,14]),n(t,[2,15]),n(t,[2,16]),n(t,[2,4]),n(t,[2,9]),n(t,[2,10])],defaultActions:{},parseError:function(i,r){if(r.recoverable)this.trace(i);else{var c=new Error(i);throw c.hash=r,c}},parse:function(i){var r=this,c=[0],d=[],u=[null],o=[],$=this.table,x="",T=0,W=0,C=2,A=1,B=o.slice.call(arguments,1),k=Object.create(this.lexer),w={yy:{}};for(var v in this.yy)Object.prototype.hasOwnProperty.call(this.yy,v)&&(w.yy[v]=this.yy[v]);k.setInput(i,w.yy),w.yy.lexer=k,w.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var I=k.yylloc;o.push(I);var P=k.options&&k.options.ranges;typeof w.yy.parseError=="function"?this.parseError=w.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function z(){var M;return M=d.pop()||k.lex()||A,typeof M!="number"&&(M instanceof Array&&(d=M,M=d.pop()),M=r.symbols_[M]||M),M}for(var _,L,S,Z,R={},O,N,Y,j;;){if(L=c[c.length-1],this.defaultActions[L]?S=this.defaultActions[L]:((_===null||typeof _>"u")&&(_=z()),S=$[L]&&$[L][_]),typeof S>"u"||!S.length||!S[0]){var J="";j=[];for(O in $[L])this.terminals_[O]&&O>C&&j.push("'"+this.terminals_[O]+"'");k.showPosition?J="Parse error on line "+(T+1)+`: `+k.showPosition()+` Expecting `+j.join(", ")+", got '"+(this.terminals_[_]||_)+"'":J="Parse error on line "+(T+1)+": Unexpected "+(_==A?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(J,{text:k.match,token:this.terminals_[_]||_,line:k.yylineno,loc:I,expected:j})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+L+", token: "+_);switch(S[0]){case 1:c.push(_),u.push(k.yytext),o.push(k.yylloc),c.push(S[1]),_=null,W=k.yyleng,x=k.yytext,T=k.yylineno,I=k.yylloc;break;case 2:if(N=this.productions_[S[1]][1],R.$=u[u.length-N],R._$={first_line:o[o.length-(N||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(N||1)].first_column,last_column:o[o.length-1].last_column},P&&(R._$.range=[o[o.length-(N||1)].range[0],o[o.length-1].range[1]]),Z=this.performAction.apply(R,[x,W,T,w.yy,S[1],u,o].concat(B)),typeof Z<"u")return Z;N&&(c=c.slice(0,-1*N*2),u=u.slice(0,-1*N),o=o.slice(0,-1*N)),c.push(this.productions_[S[1]][0]),u.push(R.$),o.push(R._$),Y=$[c[c.length-2]][c[c.length-1]],c.push(Y);break;case 3:return!0}}return!0}},b=function(){var g={EOF:1,parseError:function(r,c){if(this.yy.parser)this.yy.parser.parseError(r,c);else throw new Error(r)},setInput:function(i,r){return this.yy=r||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var r=i.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},unput:function(i){var r=i.length,c=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var u=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[u[0],u[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(i){this.unput(this.match.slice(i))},pastInput:function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var i=this.pastInput(),r=new Array(i.length+1).join("-");return i+this.upcomingInput()+` diff --git a/assets/use_cases.html-QYVpPIZi.js b/assets/use_cases.html-SNBvnwbO.js similarity index 92% rename from assets/use_cases.html-QYVpPIZi.js rename to assets/use_cases.html-SNBvnwbO.js index e871f1d..82ad133 100644 --- a/assets/use_cases.html-QYVpPIZi.js +++ b/assets/use_cases.html-SNBvnwbO.js @@ -1 +1 @@ -import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c as a,a as t,d as e,b as c}from"./app-RP31lnfq.js";const _={},i={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/511",target:"_blank",rel:"noopener noreferrer"};function l(d,m){const o=n("ExternalLinkIcon");return r(),a("div",null,[t("p",null,[e("本项目已经得到不少公司和个人开发者的认可,据作者不完全统计, 使用本项目的公司包括知名的互联网巨头、国内排名前列的云服务公司、多家知名的 AI 独角兽公司, 以及一系列中小型公司。使用者可以通过在 "),t("a",i,[e("issue"),c(o)]),e(" 上粘贴公司的大名和相关项目介绍为本项目背书,感谢支持!")])])}const p=s(_,[["render",l],["__file","use_cases.html.vue"]]);export{p as default}; +import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c as a,a as t,d as e,b as c}from"./app-0NopiYEV.js";const _={},i={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/511",target:"_blank",rel:"noopener noreferrer"};function l(d,m){const o=n("ExternalLinkIcon");return r(),a("div",null,[t("p",null,[e("本项目已经得到不少公司和个人开发者的认可,据作者不完全统计, 使用本项目的公司包括知名的互联网巨头、国内排名前列的云服务公司、多家知名的 AI 独角兽公司, 以及一系列中小型公司。使用者可以通过在 "),t("a",i,[e("issue"),c(o)]),e(" 上粘贴公司的大名和相关项目介绍为本项目背书,感谢支持!")])])}const p=s(_,[["render",l],["__file","use_cases.html.vue"]]);export{p as default}; diff --git a/assets/use_cases.html-X6CGr-4A.js b/assets/use_cases.html-ocJvSQIH.js similarity index 92% rename from assets/use_cases.html-X6CGr-4A.js rename to assets/use_cases.html-ocJvSQIH.js index 05e5677..e1847fe 100644 --- a/assets/use_cases.html-X6CGr-4A.js +++ b/assets/use_cases.html-ocJvSQIH.js @@ -1 +1 @@ -import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as r,c as a,a as n,d as e,b as i}from"./app-RP31lnfq.js";const c={},l={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/511",target:"_blank",rel:"noopener noreferrer"};function d(p,m){const o=t("ExternalLinkIcon");return r(),a("div",null,[n("p",null,[e("This project has received recognition from numerous companies and individual developers. According to the author's incomplete statistics, these companies include well-known internet giants, leading cloud service providers in China, several renowned AI unicorns, as well as a range of small and medium-sized companies. Users can endorse this project by pasting their company name and relevant project introduction on the "),n("a",l,[e("issue"),i(o)]),e(" page. We appreciate your support!")])])}const h=s(c,[["render",d],["__file","use_cases.html.vue"]]);export{h as default}; +import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as r,c as a,a as n,d as e,b as i}from"./app-0NopiYEV.js";const c={},l={href:"https://github.com/ZLMediaKit/ZLMediaKit/issues/511",target:"_blank",rel:"noopener noreferrer"};function d(p,m){const o=t("ExternalLinkIcon");return r(),a("div",null,[n("p",null,[e("This project has received recognition from numerous companies and individual developers. According to the author's incomplete statistics, these companies include well-known internet giants, leading cloud service providers in China, several renowned AI unicorns, as well as a range of small and medium-sized companies. Users can endorse this project by pasting their company name and relevant project introduction on the "),n("a",l,[e("issue"),i(o)]),e(" page. We appreciate your support!")])])}const h=s(c,[["render",d],["__file","use_cases.html.vue"]]);export{h as default}; diff --git a/assets/video_conferencing_related_resources.html-n9vvOPci.js b/assets/video_conferencing_related_resources.html-JT3FqRo7.js similarity index 96% rename from assets/video_conferencing_related_resources.html-n9vvOPci.js rename to assets/video_conferencing_related_resources.html-JT3FqRo7.js index f8d6ebe..b499ed9 100644 --- a/assets/video_conferencing_related_resources.html-n9vvOPci.js +++ b/assets/video_conferencing_related_resources.html-JT3FqRo7.js @@ -1 +1 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as i,c as a,a as e,d as r,b as n}from"./app-RP31lnfq.js";const c={},s={href:"https://www.bilibili.com/video/BV1AK411R7NG/",target:"_blank",rel:"noopener noreferrer"},_={href:"https://user-images.githubusercontent.com/11495632/204230234-04da9d84-ffc7-4d32-bda3-04c72474205f.png",target:"_blank",rel:"noopener noreferrer"},d={href:"https://user-images.githubusercontent.com/11495632/204230272-13448d78-b6da-40f2-94b9-da517fa5cc0b.png",target:"_blank",rel:"noopener noreferrer"},u={href:"https://user-images.githubusercontent.com/11495632/204230325-1b395c6f-c094-414d-9d4e-8ea04120eed6.png",target:"_blank",rel:"noopener noreferrer"},b=e("p",null,"WebRTC",-1),f={href:"https://www.bilibili.com/video/BV1kq4y1u7cN/",target:"_blank",rel:"noopener noreferrer"},h={href:"https://www.bilibili.com/video/BV1SR4y1t7V4/",target:"_blank",rel:"noopener noreferrer"},p={href:"https://www.bilibili.com/video/BV1Eg411N7TJ/",target:"_blank",rel:"noopener noreferrer"},m={href:"https://www.bilibili.com/video/BV1uL4y1i7KP/",target:"_blank",rel:"noopener noreferrer"};function g(w,k){const t=l("ExternalLinkIcon");return i(),a("div",null,[e("ul",null,[e("li",null,[e("p",null,[e("a",s,[r("Random Tech Talking"),n(t)])]),e("ul",null,[e("li",null,[r("相关素材: "),e("a",_,[r("webrtc over tcp"),n(t)]),r("、"),e("a",d,[r("webrtc over udp"),n(t)]),r("、"),e("a",u,[r("webrtc 时序图"),n(t)]),r("。")])])]),e("li",null,[b,e("ul",null,[e("li",null,[e("a",f,[r("ZLMediaKit 源代码讲解 1"),n(t)])]),e("li",null,[e("a",h,[r("ZLMediaKit 源代码讲解 2"),n(t)])]),e("li",null,[e("a",p,[r("ZLMediaKit webrtc 使用演示"),n(t)])]),e("li",null,[e("a",m,[r("ZLMediaKit webrtc 实现"),n(t)])])])])])])}const B=o(c,[["render",g],["__file","video_conferencing_related_resources.html.vue"]]);export{B as default}; +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as i,c as a,a as e,d as r,b as n}from"./app-0NopiYEV.js";const c={},s={href:"https://www.bilibili.com/video/BV1AK411R7NG/",target:"_blank",rel:"noopener noreferrer"},_={href:"https://user-images.githubusercontent.com/11495632/204230234-04da9d84-ffc7-4d32-bda3-04c72474205f.png",target:"_blank",rel:"noopener noreferrer"},d={href:"https://user-images.githubusercontent.com/11495632/204230272-13448d78-b6da-40f2-94b9-da517fa5cc0b.png",target:"_blank",rel:"noopener noreferrer"},u={href:"https://user-images.githubusercontent.com/11495632/204230325-1b395c6f-c094-414d-9d4e-8ea04120eed6.png",target:"_blank",rel:"noopener noreferrer"},b=e("p",null,"WebRTC",-1),f={href:"https://www.bilibili.com/video/BV1kq4y1u7cN/",target:"_blank",rel:"noopener noreferrer"},h={href:"https://www.bilibili.com/video/BV1SR4y1t7V4/",target:"_blank",rel:"noopener noreferrer"},p={href:"https://www.bilibili.com/video/BV1Eg411N7TJ/",target:"_blank",rel:"noopener noreferrer"},m={href:"https://www.bilibili.com/video/BV1uL4y1i7KP/",target:"_blank",rel:"noopener noreferrer"};function g(w,k){const t=l("ExternalLinkIcon");return i(),a("div",null,[e("ul",null,[e("li",null,[e("p",null,[e("a",s,[r("Random Tech Talking"),n(t)])]),e("ul",null,[e("li",null,[r("相关素材: "),e("a",_,[r("webrtc over tcp"),n(t)]),r("、"),e("a",d,[r("webrtc over udp"),n(t)]),r("、"),e("a",u,[r("webrtc 时序图"),n(t)]),r("。")])])]),e("li",null,[b,e("ul",null,[e("li",null,[e("a",f,[r("ZLMediaKit 源代码讲解 1"),n(t)])]),e("li",null,[e("a",h,[r("ZLMediaKit 源代码讲解 2"),n(t)])]),e("li",null,[e("a",p,[r("ZLMediaKit webrtc 使用演示"),n(t)])]),e("li",null,[e("a",m,[r("ZLMediaKit webrtc 实现"),n(t)])])])])])])}const B=o(c,[["render",g],["__file","video_conferencing_related_resources.html.vue"]]);export{B as default}; diff --git a/assets/video_conferencing_related_resources.html-OEgzQpTs.js b/assets/video_conferencing_related_resources.html-pKTKpfIG.js similarity index 96% rename from assets/video_conferencing_related_resources.html-OEgzQpTs.js rename to assets/video_conferencing_related_resources.html-pKTKpfIG.js index f306521..98ec8dd 100644 --- a/assets/video_conferencing_related_resources.html-OEgzQpTs.js +++ b/assets/video_conferencing_related_resources.html-pKTKpfIG.js @@ -1 +1 @@ -import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as i,c as a,a as e,d as r,b as n}from"./app-RP31lnfq.js";const c={},s={href:"https://www.bilibili.com/video/BV1AK411R7NG/",target:"_blank",rel:"noopener noreferrer"},_={href:"https://user-images.githubusercontent.com/11495632/204230234-04da9d84-ffc7-4d32-bda3-04c72474205f.png",target:"_blank",rel:"noopener noreferrer"},d={href:"https://user-images.githubusercontent.com/11495632/204230272-13448d78-b6da-40f2-94b9-da517fa5cc0b.png",target:"_blank",rel:"noopener noreferrer"},u={href:"https://user-images.githubusercontent.com/11495632/204230325-1b395c6f-c094-414d-9d4e-8ea04120eed6.png",target:"_blank",rel:"noopener noreferrer"},b=e("p",null,"WebRTC",-1),p={href:"https://www.bilibili.com/video/BV1kq4y1u7cN/",target:"_blank",rel:"noopener noreferrer"},f={href:"https://www.bilibili.com/video/BV1SR4y1t7V4/",target:"_blank",rel:"noopener noreferrer"},h={href:"https://www.bilibili.com/video/BV1Eg411N7TJ/",target:"_blank",rel:"noopener noreferrer"},m={href:"https://www.bilibili.com/video/BV1uL4y1i7KP/",target:"_blank",rel:"noopener noreferrer"};function g(w,k){const t=l("ExternalLinkIcon");return i(),a("div",null,[e("ul",null,[e("li",null,[e("p",null,[e("a",s,[r("Random Tech Talking"),n(t)])]),e("ul",null,[e("li",null,[r("Related materials:"),e("a",_,[r("webrtc over tcp"),n(t)]),r("、"),e("a",d,[r("webrtc over udp"),n(t)]),r("、"),e("a",u,[r("webrtc 时序图"),n(t)]),r("。")])])]),e("li",null,[b,e("ul",null,[e("li",null,[e("a",p,[r("ZLMediaKit Source Code Explanation 1"),n(t)])]),e("li",null,[e("a",f,[r("ZLMediaKit Source Code Explanation 2"),n(t)])]),e("li",null,[e("a",h,[r("ZLMediaKit webrtc Usage Demonstration"),n(t)])]),e("li",null,[e("a",m,[r("ZLMediaKit webrtc Implementation"),n(t)])])])])])])}const x=o(c,[["render",g],["__file","video_conferencing_related_resources.html.vue"]]);export{x as default}; +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as i,c as a,a as e,d as r,b as n}from"./app-0NopiYEV.js";const c={},s={href:"https://www.bilibili.com/video/BV1AK411R7NG/",target:"_blank",rel:"noopener noreferrer"},_={href:"https://user-images.githubusercontent.com/11495632/204230234-04da9d84-ffc7-4d32-bda3-04c72474205f.png",target:"_blank",rel:"noopener noreferrer"},d={href:"https://user-images.githubusercontent.com/11495632/204230272-13448d78-b6da-40f2-94b9-da517fa5cc0b.png",target:"_blank",rel:"noopener noreferrer"},u={href:"https://user-images.githubusercontent.com/11495632/204230325-1b395c6f-c094-414d-9d4e-8ea04120eed6.png",target:"_blank",rel:"noopener noreferrer"},b=e("p",null,"WebRTC",-1),p={href:"https://www.bilibili.com/video/BV1kq4y1u7cN/",target:"_blank",rel:"noopener noreferrer"},f={href:"https://www.bilibili.com/video/BV1SR4y1t7V4/",target:"_blank",rel:"noopener noreferrer"},h={href:"https://www.bilibili.com/video/BV1Eg411N7TJ/",target:"_blank",rel:"noopener noreferrer"},m={href:"https://www.bilibili.com/video/BV1uL4y1i7KP/",target:"_blank",rel:"noopener noreferrer"};function g(w,k){const t=l("ExternalLinkIcon");return i(),a("div",null,[e("ul",null,[e("li",null,[e("p",null,[e("a",s,[r("Random Tech Talking"),n(t)])]),e("ul",null,[e("li",null,[r("Related materials:"),e("a",_,[r("webrtc over tcp"),n(t)]),r("、"),e("a",d,[r("webrtc over udp"),n(t)]),r("、"),e("a",u,[r("webrtc 时序图"),n(t)]),r("。")])])]),e("li",null,[b,e("ul",null,[e("li",null,[e("a",p,[r("ZLMediaKit Source Code Explanation 1"),n(t)])]),e("li",null,[e("a",f,[r("ZLMediaKit Source Code Explanation 2"),n(t)])]),e("li",null,[e("a",h,[r("ZLMediaKit webrtc Usage Demonstration"),n(t)])]),e("li",null,[e("a",m,[r("ZLMediaKit webrtc Implementation"),n(t)])])])])])])}const x=o(c,[["render",g],["__file","video_conferencing_related_resources.html.vue"]]);export{x as default}; diff --git a/assets/web_hook_api.html-Ur1FSiPS.js b/assets/web_hook_api.html-4eZenSeJ.js similarity index 99% rename from assets/web_hook_api.html-Ur1FSiPS.js rename to assets/web_hook_api.html-4eZenSeJ.js index 8755af1..dc193c5 100644 --- a/assets/web_hook_api.html-Ur1FSiPS.js +++ b/assets/web_hook_api.html-4eZenSeJ.js @@ -1,4 +1,4 @@ -import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as p,o,c as l,a as n,d as s,b as r,e}from"./app-RP31lnfq.js";const c={},d=e(`

                          HOOK 预览

                          MediaServer 可以把内部的一些事件通过 http post 第三方 http 服务器的方式通知出去,以下是相关的默认配置:

                          [hook]
                          +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as p,o,c as l,a as n,d as s,b as r,e}from"./app-0NopiYEV.js";const c={},d=e(`

                          HOOK 预览

                          MediaServer 可以把内部的一些事件通过 http post 第三方 http 服务器的方式通知出去,以下是相关的默认配置:

                          [hook]
                           enable=1
                           admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
                           timeoutSec=10
                          diff --git a/assets/web_hook_api.html-adtpDhAG.js b/assets/web_hook_api.html-nXr7pFGe.js
                          similarity index 86%
                          rename from assets/web_hook_api.html-adtpDhAG.js
                          rename to assets/web_hook_api.html-nXr7pFGe.js
                          index 13a66a9..feff500 100644
                          --- a/assets/web_hook_api.html-adtpDhAG.js
                          +++ b/assets/web_hook_api.html-nXr7pFGe.js
                          @@ -1 +1 @@
                          -const e=JSON.parse('{"key":"v-4436fd0b","path":"/guide/media_server/web_hook_api.html","title":"Web Hook","lang":"en-US","frontmatter":{"title":"Web Hook","description":"Web Hook Preview MediaServer can notify certain internal events through HTTP POST to a third-party HTTP server. The following are the relevant default configurations: If it is a...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://docs.ZLMediaKit.com/zh/guide/media_server/web_hook_api.html"}],["meta",{"property":"og:url","content":"https://docs.ZLMediaKit.com/guide/media_server/web_hook_api.html"}],["meta",{"property":"og:site_name","content":"ZLMediaKit"}],["meta",{"property":"og:title","content":"Web Hook"}],["meta",{"property":"og:description","content":"Web Hook Preview MediaServer can notify certain internal events through HTTP POST to a third-party HTTP server. The following are the relevant default configurations: If it is a..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-12-05T08:36:26.000Z"}],["meta",{"property":"article:author","content":"ZLMediaKit"}],["meta",{"property":"article:modified_time","content":"2023-12-05T08:36:26.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Web Hook\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2023-12-05T08:36:26.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"ZLMediaKit\\",\\"url\\":\\"https://docs.ZLMediaKit.com\\"}]}"]]},"headers":[{"level":2,"title":"Web Hook Preview","slug":"web-hook-preview","link":"#web-hook-preview","children":[]},{"level":2,"title":"Explanation","slug":"explanation","link":"#explanation","children":[{"level":3,"title":"1. enable:","slug":"_1-enable","link":"#_1-enable","children":[]},{"level":3,"title":"2. timeoutSec:","slug":"_2-timeoutsec","link":"#_2-timeoutsec","children":[]},{"level":3,"title":"3. admin_params:","slug":"_3-admin-params","link":"#_3-admin-params","children":[]},{"level":3,"title":"4. on_flow_report:","slug":"_4-on-flow-report","link":"#_4-on-flow-report","children":[]},{"level":3,"title":"5. on_http_access:","slug":"_5-on-http-access","link":"#_5-on-http-access","children":[]},{"level":3,"title":"6. on_play:","slug":"_6-on-play","link":"#_6-on-play","children":[]},{"level":3,"title":"7. on_publish:","slug":"_7-on-publish","link":"#_7-on-publish","children":[]},{"level":3,"title":"8、on_record_mp4:","slug":"_8、on-record-mp4","link":"#_8、on-record-mp4","children":[]},{"level":3,"title":"9、on_rtsp_realm:","slug":"_9、on-rtsp-realm","link":"#_9、on-rtsp-realm","children":[]},{"level":3,"title":"10、on_rtsp_auth:","slug":"_10、on-rtsp-auth","link":"#_10、on-rtsp-auth","children":[]},{"level":3,"title":"11、on_shell_login:","slug":"_11、on-shell-login","link":"#_11、on-shell-login","children":[]},{"level":3,"title":"12、on_stream_changed:","slug":"_12、on-stream-changed","link":"#_12、on-stream-changed","children":[]},{"level":3,"title":"13、on_stream_none_reader:","slug":"_13、on-stream-none-reader","link":"#_13、on-stream-none-reader","children":[]},{"level":3,"title":"14、on_stream_not_found:","slug":"_14、on-stream-not-found","link":"#_14、on-stream-not-found","children":[]},{"level":3,"title":"15、on_server_started","slug":"_15、on-server-started","link":"#_15、on-server-started","children":[]},{"level":3,"title":"16、on_server_keepalive","slug":"_16、on-server-keepalive","link":"#_16、on-server-keepalive","children":[]},{"level":3,"title":"17、on_rtp_server_timeout","slug":"_17、on-rtp-server-timeout","link":"#_17、on-rtp-server-timeout","children":[]}]}],"git":{"createdTime":1700423759000,"updatedTime":1701765386000,"contributors":[{"name":"Alex","email":"liyu7352@gmail.com","commits":4},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1}]},"readingTime":{"minutes":12.8,"words":3841},"filePathRelative":"guide/media_server/web_hook_api.md","localizedDate":"November 19, 2023","autoDesc":true}');export{e as data};
                          +const e=JSON.parse('{"key":"v-4436fd0b","path":"/guide/media_server/web_hook_api.html","title":"Web Hook","lang":"en-US","frontmatter":{"title":"Web Hook","description":"Web Hook Preview MediaServer can notify certain internal events through HTTP POST to a third-party HTTP server. The following are the relevant default configurations: If it is a...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://docs.ZLMediaKit.com/zh/guide/media_server/web_hook_api.html"}],["meta",{"property":"og:url","content":"https://docs.ZLMediaKit.com/guide/media_server/web_hook_api.html"}],["meta",{"property":"og:site_name","content":"ZLMediaKit"}],["meta",{"property":"og:title","content":"Web Hook"}],["meta",{"property":"og:description","content":"Web Hook Preview MediaServer can notify certain internal events through HTTP POST to a third-party HTTP server. The following are the relevant default configurations: If it is a..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-01-09T10:52:06.000Z"}],["meta",{"property":"article:author","content":"ZLMediaKit"}],["meta",{"property":"article:modified_time","content":"2024-01-09T10:52:06.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Web Hook\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2024-01-09T10:52:06.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"ZLMediaKit\\",\\"url\\":\\"https://docs.ZLMediaKit.com\\"}]}"]]},"headers":[{"level":2,"title":"Web Hook Preview","slug":"web-hook-preview","link":"#web-hook-preview","children":[]},{"level":2,"title":"Explanation","slug":"explanation","link":"#explanation","children":[{"level":3,"title":"1. enable:","slug":"_1-enable","link":"#_1-enable","children":[]},{"level":3,"title":"2. timeoutSec:","slug":"_2-timeoutsec","link":"#_2-timeoutsec","children":[]},{"level":3,"title":"3. admin_params:","slug":"_3-admin-params","link":"#_3-admin-params","children":[]},{"level":3,"title":"4. on_flow_report:","slug":"_4-on-flow-report","link":"#_4-on-flow-report","children":[]},{"level":3,"title":"5. on_http_access:","slug":"_5-on-http-access","link":"#_5-on-http-access","children":[]},{"level":3,"title":"6. on_play:","slug":"_6-on-play","link":"#_6-on-play","children":[]},{"level":3,"title":"7. on_publish:","slug":"_7-on-publish","link":"#_7-on-publish","children":[]},{"level":3,"title":"8、on_record_mp4:","slug":"_8、on-record-mp4","link":"#_8、on-record-mp4","children":[]},{"level":3,"title":"9、on_rtsp_realm:","slug":"_9、on-rtsp-realm","link":"#_9、on-rtsp-realm","children":[]},{"level":3,"title":"10、on_rtsp_auth:","slug":"_10、on-rtsp-auth","link":"#_10、on-rtsp-auth","children":[]},{"level":3,"title":"11、on_shell_login:","slug":"_11、on-shell-login","link":"#_11、on-shell-login","children":[]},{"level":3,"title":"12、on_stream_changed:","slug":"_12、on-stream-changed","link":"#_12、on-stream-changed","children":[]},{"level":3,"title":"13、on_stream_none_reader:","slug":"_13、on-stream-none-reader","link":"#_13、on-stream-none-reader","children":[]},{"level":3,"title":"14、on_stream_not_found:","slug":"_14、on-stream-not-found","link":"#_14、on-stream-not-found","children":[]},{"level":3,"title":"15、on_server_started","slug":"_15、on-server-started","link":"#_15、on-server-started","children":[]},{"level":3,"title":"16、on_server_keepalive","slug":"_16、on-server-keepalive","link":"#_16、on-server-keepalive","children":[]},{"level":3,"title":"17、on_rtp_server_timeout","slug":"_17、on-rtp-server-timeout","link":"#_17、on-rtp-server-timeout","children":[]}]}],"git":{"createdTime":1700423759000,"updatedTime":1704797526000,"contributors":[{"name":"Alex","email":"liyu7352@gmail.com","commits":4},{"name":"Mr.Hope","email":"mister-hope@outlook.com","commits":1},{"name":"罐罐咪","email":"70076074+kumv-net@users.noreply.github.com","commits":1}]},"readingTime":{"minutes":12.8,"words":3841},"filePathRelative":"guide/media_server/web_hook_api.md","localizedDate":"November 19, 2023","autoDesc":true}');export{e as data};
                          diff --git a/assets/web_hook_api.html-zeVeDSz2.js b/assets/web_hook_api.html-yTBnNLfz.js
                          similarity index 99%
                          rename from assets/web_hook_api.html-zeVeDSz2.js
                          rename to assets/web_hook_api.html-yTBnNLfz.js
                          index f2f1355..16bdae2 100644
                          --- a/assets/web_hook_api.html-zeVeDSz2.js
                          +++ b/assets/web_hook_api.html-yTBnNLfz.js
                          @@ -1,4 +1,4 @@
                          -import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as p,c as l,a as e,d as n,b as r,e as s}from"./app-RP31lnfq.js";const c={},i=s(`

                          Web Hook Preview

                          MediaServer can notify certain internal events through HTTP POST to a third-party HTTP server. The following are the relevant default configurations:

                          [hook]
                          +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as p,c as l,a as e,d as n,b as r,e as s}from"./app-0NopiYEV.js";const c={},i=s(`

                          Web Hook Preview

                          MediaServer can notify certain internal events through HTTP POST to a third-party HTTP server. The following are the relevant default configurations:

                          [hook]
                           enable=1
                           admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
                           timeoutSec=10
                          @@ -462,7 +462,7 @@ import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as p,
                           
                           {
                              "code" : 0,
                          -   "msg" : "success
                          +   "msg" : "success"
                           }
                           

                15、on_server_started

                • Explanation:

                  Server startup event, can be used to monitor server crashes and restarts. This event is not sensitive to replies.

                • Trigger request:

                  POST /index/hook/on_server_started HTTP/1.1
                   Accept: */*
                  @@ -559,7 +559,7 @@ import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as p,
                   
                   {
                      "code" : 0,
                  -   "msg" : "success
                  +   "msg" : "success"
                   }
                   

                16、on_server_keepalive

                • Explanation:

                  The server periodically reports time, which can be configured. The default interval is 10 seconds.

                • Trigger request:

                  POST /index/hook/on_server_keepalive HTTP/1.1
                   Accept: */*
                  diff --git a/assets/webrtc_compilation_and_use.html-WDwwQCrP.js b/assets/webrtc_compilation_and_use.html-Wir4WmSI.js
                  similarity index 99%
                  rename from assets/webrtc_compilation_and_use.html-WDwwQCrP.js
                  rename to assets/webrtc_compilation_and_use.html-Wir4WmSI.js
                  index 97d0d46..a65cd00 100644
                  --- a/assets/webrtc_compilation_and_use.html-WDwwQCrP.js
                  +++ b/assets/webrtc_compilation_and_use.html-Wir4WmSI.js
                  @@ -1,4 +1,4 @@
                  -import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as p,c,a as n,d as s,b as e,e as t}from"./app-RP31lnfq.js";const o={},r=t(`

                  环境

                  编译机器:
                  +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as p,c,a as n,d as s,b as e,e as t}from"./app-0NopiYEV.js";const o={},r=t(`

                  环境

                  编译机器:
                   centos 7.6
                   gcc version 5.4.0 (GCC)
                   cmake version 3.20.5
                  diff --git a/assets/webrtc_compilation_and_use.html-lpFe_5AD.js b/assets/webrtc_compilation_and_use.html-ifqCJvPh.js
                  similarity index 99%
                  rename from assets/webrtc_compilation_and_use.html-lpFe_5AD.js
                  rename to assets/webrtc_compilation_and_use.html-ifqCJvPh.js
                  index 95f640e..2a82f8c 100644
                  --- a/assets/webrtc_compilation_and_use.html-lpFe_5AD.js
                  +++ b/assets/webrtc_compilation_and_use.html-ifqCJvPh.js
                  @@ -1,4 +1,4 @@
                  -import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o,c as r,a as n,d as s,b as a,e as t}from"./app-RP31lnfq.js";const c={},p=t(`

                  Environment

                  machine
                  +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o,c as r,a as n,d as s,b as a,e as t}from"./app-0NopiYEV.js";const c={},p=t(`

                  Environment

                  machine
                   centos 7.6
                   gcc version 5.4.0 (GCC)
                   cmake version 3.20.5
                  diff --git a/assets/webrtc_signaling_interaction_format.html-wdNPDtQj.js b/assets/webrtc_signaling_interaction_format.html-6nmFHnea.js
                  similarity index 99%
                  rename from assets/webrtc_signaling_interaction_format.html-wdNPDtQj.js
                  rename to assets/webrtc_signaling_interaction_format.html-6nmFHnea.js
                  index b04e482..02d70eb 100644
                  --- a/assets/webrtc_signaling_interaction_format.html-wdNPDtQj.js
                  +++ b/assets/webrtc_signaling_interaction_format.html-6nmFHnea.js
                  @@ -1,4 +1,4 @@
                  -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as e,e as s}from"./app-RP31lnfq.js";const t={},r=s(`

                  Introduction

                  zlmediakit has added support for the whip/whep standard in the WebRTC signaling format. The test url are as follows:

                  Push stream:https://zlmediakit.com/index/api/whip?app=live&stream=test

                  Pull stream:https://zlmediakit.com/index/api/whep?app=live&stream=test

                  The subsequent sections of this article will cover the private signaling format.

                  1. Basic Format of WebRTC SDP Exchange Request

                  • Request URL: /index/api/webrtc?app=live&stream=test&type=[push/play/echo]

                  • Request Method: HTTP POST

                  • Request Body: WebRTC offer SDP

                  • Response Body:

                    {
                    +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as e,e as s}from"./app-0NopiYEV.js";const t={},r=s(`

                    Introduction

                    zlmediakit has added support for the whip/whep standard in the WebRTC signaling format. The test url are as follows:

                    Push stream:https://zlmediakit.com/index/api/whip?app=live&stream=test

                    Pull stream:https://zlmediakit.com/index/api/whep?app=live&stream=test

                    The subsequent sections of this article will cover the private signaling format.

                    1. Basic Format of WebRTC SDP Exchange Request

                    • Request URL: /index/api/webrtc?app=live&stream=test&type=[push/play/echo]

                    • Request Method: HTTP POST

                    • Request Body: WebRTC offer SDP

                    • Response Body:

                      {
                         "code": 0,
                         "id": "zlm_1",
                         "sdp": "v=0\\r\\no=mozilla...THIS_IS_SDPARTA-99.0 6880954646154322397 0 IN IP4 172.18.190.185\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0 1\\r\\na=msid-semantic: WMS *\\r\\na=ice-lite\\r\\nm=audio 8000 UDP/TLS/RTP/SAVPF 0\\r\\nc=IN IP4 172.18.190.185\\r\\na=rtcp:8000 IN IP4 172.18.190.185\\r\\na=ice-ufrag:rBK+uR9AAAA=_2\\r\\na=ice-pwd:H4rtFC1xhef0ynU2lk8z22ha\\r\\na=fingerprint:sha-256 6E:EF:E7:75:56:2A:66:DF:6C:9D:72:B6:A5:21:35:73:19:66:D8:00:F4:BC:36:59:61:1B:5D:35:13:99:14:AE\\r\\na=setup:passive\\r\\na=mid:0\\r\\na=ice-lite\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2/sendonly urn:ietf:params:rtp-hdrext:csrc-audio-level\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtpmap:0 PCMU/8000/1\\r\\na=candidate:udpcandidate 1 udp 120 172.18.190.185 8000 typ host\\r\\nm=video 8000 UDP/TLS/RTP/SAVPF 126 127\\r\\nc=IN IP4 172.18.190.185\\r\\na=rtcp:8000 IN IP4 172.18.190.185\\r\\na=ice-ufrag:rBK+uR9AAAA=_2\\r\\na=ice-pwd:H4rtFC1xhef0ynU2lk8z22ha\\r\\na=fingerprint:sha-256 6E:EF:E7:75:56:2A:66:DF:6C:9D:72:B6:A5:21:35:73:19:66:D8:00:F4:BC:36:59:61:1B:5D:35:13:99:14:AE\\r\\na=setup:passive\\r\\na=mid:1\\r\\na=ice-lite\\r\\na=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:toffset\\r\\na=extmap:6/sendonly http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\\r\\na=extmap:7 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtpmap:126 H264/90000\\r\\na=rtcp-fb:126 ccm fir\\r\\na=rtcp-fb:126 goog-remb\\r\\na=rtcp-fb:126 nack\\r\\na=rtcp-fb:126 nack pli\\r\\na=rtcp-fb:126 transport-cc\\r\\na=fmtp:126 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f;x-google-max-bitrate=8000;x-google-min-bitrate=4000;x-google-start-bitrate=6000\\r\\na=rtpmap:127 rtx/90000\\r\\na=fmtp:127 apt=126\\r\\na=candidate:udpcandidate 1 udp 120 172.18.190.185 8000 typ host\\r\\n",
                      diff --git a/assets/webrtc_signaling_interaction_format.html-Vcq-5dzR.js b/assets/webrtc_signaling_interaction_format.html-KYtlkjHG.js
                      similarity index 99%
                      rename from assets/webrtc_signaling_interaction_format.html-Vcq-5dzR.js
                      rename to assets/webrtc_signaling_interaction_format.html-KYtlkjHG.js
                      index b2e781a..61b94a9 100644
                      --- a/assets/webrtc_signaling_interaction_format.html-Vcq-5dzR.js
                      +++ b/assets/webrtc_signaling_interaction_format.html-KYtlkjHG.js
                      @@ -1,4 +1,4 @@
                      -import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as e,e as s}from"./app-RP31lnfq.js";const t={},r=s(`

                      前言

                      zlmediakit webrtc 信令格式新增支持 whip/whep 标准,测试地址如下:

                      推流:https://zlmediakit.com/index/api/whip?app=live&stream=test

                      拉流:https://zlmediakit.com/index/api/whep?app=live&stream=test

                      本文后续篇幅为私有信令格式。

                      一、webrtc sdp 交换请求基本格式

                      • 请求地址: /index/api/webrtc?app=live&stream=test&type=[push/play/echo]
                      • 请求方式: http post
                      • 请求 body: webrtc offer sdp
                      • 回复 body:
                      {
                      +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as e,e as s}from"./app-0NopiYEV.js";const t={},r=s(`

                      前言

                      zlmediakit webrtc 信令格式新增支持 whip/whep 标准,测试地址如下:

                      推流:https://zlmediakit.com/index/api/whip?app=live&stream=test

                      拉流:https://zlmediakit.com/index/api/whep?app=live&stream=test

                      本文后续篇幅为私有信令格式。

                      一、webrtc sdp 交换请求基本格式

                      • 请求地址: /index/api/webrtc?app=live&stream=test&type=[push/play/echo]
                      • 请求方式: http post
                      • 请求 body: webrtc offer sdp
                      • 回复 body:
                      {
                         "code": 0,
                         "id": "zlm_1",
                         "sdp": "v=0\\r\\no=mozilla...THIS_IS_SDPARTA-99.0 6880954646154322397 0 IN IP4 172.18.190.185\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0 1\\r\\na=msid-semantic: WMS *\\r\\na=ice-lite\\r\\nm=audio 8000 UDP/TLS/RTP/SAVPF 0\\r\\nc=IN IP4 172.18.190.185\\r\\na=rtcp:8000 IN IP4 172.18.190.185\\r\\na=ice-ufrag:rBK+uR9AAAA=_2\\r\\na=ice-pwd:H4rtFC1xhef0ynU2lk8z22ha\\r\\na=fingerprint:sha-256 6E:EF:E7:75:56:2A:66:DF:6C:9D:72:B6:A5:21:35:73:19:66:D8:00:F4:BC:36:59:61:1B:5D:35:13:99:14:AE\\r\\na=setup:passive\\r\\na=mid:0\\r\\na=ice-lite\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2/sendonly urn:ietf:params:rtp-hdrext:csrc-audio-level\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtpmap:0 PCMU/8000/1\\r\\na=candidate:udpcandidate 1 udp 120 172.18.190.185 8000 typ host\\r\\nm=video 8000 UDP/TLS/RTP/SAVPF 126 127\\r\\nc=IN IP4 172.18.190.185\\r\\na=rtcp:8000 IN IP4 172.18.190.185\\r\\na=ice-ufrag:rBK+uR9AAAA=_2\\r\\na=ice-pwd:H4rtFC1xhef0ynU2lk8z22ha\\r\\na=fingerprint:sha-256 6E:EF:E7:75:56:2A:66:DF:6C:9D:72:B6:A5:21:35:73:19:66:D8:00:F4:BC:36:59:61:1B:5D:35:13:99:14:AE\\r\\na=setup:passive\\r\\na=mid:1\\r\\na=ice-lite\\r\\na=extmap:4 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:toffset\\r\\na=extmap:6/sendonly http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\\r\\na=extmap:7 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtpmap:126 H264/90000\\r\\na=rtcp-fb:126 ccm fir\\r\\na=rtcp-fb:126 goog-remb\\r\\na=rtcp-fb:126 nack\\r\\na=rtcp-fb:126 nack pli\\r\\na=rtcp-fb:126 transport-cc\\r\\na=fmtp:126 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f;x-google-max-bitrate=8000;x-google-min-bitrate=4000;x-google-start-bitrate=6000\\r\\na=rtpmap:127 rtx/90000\\r\\na=fmtp:127 apt=126\\r\\na=candidate:udpcandidate 1 udp 120 172.18.190.185 8000 typ host\\r\\n",
                      diff --git a/assets/xychartDiagram-f746c04c-R7Y2pSYR.js b/assets/xychartDiagram-f746c04c-ybRnTgNu.js
                      similarity index 77%
                      rename from assets/xychartDiagram-f746c04c-R7Y2pSYR.js
                      rename to assets/xychartDiagram-f746c04c-ybRnTgNu.js
                      index 466912e..f96a3e6 100644
                      --- a/assets/xychartDiagram-f746c04c-R7Y2pSYR.js
                      +++ b/assets/xychartDiagram-f746c04c-ybRnTgNu.js
                      @@ -1,7 +1,7 @@
                      -import{a_ as zt,a$ as ot,aM as wt,aL as Ft,s as Nt,g as Xt,v as Yt,x as St,a as Ht,b as $t,z as Ut,l as _t,aJ as qt,i as jt,d as Gt}from"./mermaid.core-ygY5oRaR.js";import{a as Qt}from"./createText-aebacdfe-CTBuskZ8.js";import{i as Kt}from"./init-Hi12RPRh.js";import{o as Jt}from"./ordinal-wXG5obU4.js";import{l as ft}from"./linear-qWzY0BiT.js";import{l as pt}from"./line-EJoUorMM.js";import"./app-RP31lnfq.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";function Zt(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s"u"&&(k.yylloc={});var tt=k.yylloc;a.push(tt);var Wt=k.options&&k.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var I;return I=g.pop()||k.lex()||xt,typeof I!="number"&&(I instanceof Array&&(g=I,I=g.pop()),I=l.symbols_[I]||I),I}for(var D,W,E,it,O={},q,M,dt,j;;){if(W=u[u.length-1],this.defaultActions[W]?E=this.defaultActions[W]:((D===null||typeof D>"u")&&(D=Ot()),E=F[W]&&F[W][D]),typeof E>"u"||!E.length||!E[0]){var et="";j=[];for(q in F[W])this.terminals_[q]&&q>Vt&&j.push("'"+this.terminals_[q]+"'");k.showPosition?et="Parse error on line "+(U+1)+`:
                      +import{a_ as zt,a$ as ot,aM as wt,aL as Ft,s as Nt,g as Xt,v as Yt,x as St,a as Ht,b as $t,z as Ut,l as _t,aJ as qt,i as jt,d as Gt}from"./mermaid.core-YBgJFCkH.js";import{a as Qt}from"./createText-aebacdfe-VuGI-o_f.js";import{i as Kt}from"./init-Hi12RPRh.js";import{o as Jt}from"./ordinal-wXG5obU4.js";import{l as ft}from"./linear-nks6njEu.js";import{l as pt}from"./line-QxBjBe1b.js";import"./app-0NopiYEV.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";function Zt(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s"u"&&(k.yylloc={});var tt=k.yylloc;a.push(tt);var Wt=k.options&&k.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var I;return I=g.pop()||k.lex()||xt,typeof I!="number"&&(I instanceof Array&&(g=I,I=g.pop()),I=l.symbols_[I]||I),I}for(var D,W,E,it,O={},q,M,dt,j;;){if(W=u[u.length-1],this.defaultActions[W]?E=this.defaultActions[W]:((D===null||typeof D>"u")&&(D=Ot()),E=F[W]&&F[W][D]),typeof E>"u"||!E.length||!E[0]){var et="";j=[];for(q in F[W])this.terminals_[q]&&q>Vt&&j.push("'"+this.terminals_[q]+"'");k.showPosition?et="Parse error on line "+(U+1)+`:
                       `+k.showPosition()+`
                       Expecting `+j.join(", ")+", got '"+(this.terminals_[D]||D)+"'":et="Parse error on line "+(U+1)+": Unexpected "+(D==xt?"end of input":"'"+(this.terminals_[D]||D)+"'"),this.parseError(et,{text:k.match,token:this.terminals_[D]||D,line:k.yylineno,loc:tt,expected:j})}if(E[0]instanceof Array&&E.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+D);switch(E[0]){case 1:u.push(D),b.push(k.yytext),a.push(k.yylloc),u.push(E[1]),D=null,gt=k.yyleng,x=k.yytext,U=k.yylineno,tt=k.yylloc;break;case 2:if(M=this.productions_[E[1]][1],O.$=b[b.length-M],O._$={first_line:a[a.length-(M||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(M||1)].first_column,last_column:a[a.length-1].last_column},Wt&&(O._$.range=[a[a.length-(M||1)].range[0],a[a.length-1].range[1]]),it=this.performAction.apply(O,[x,gt,U,B.yy,E[1],b,a].concat(Bt)),typeof it<"u")return it;M&&(u=u.slice(0,-1*M*2),b=b.slice(0,-1*M),a=a.slice(0,-1*M)),u.push(this.productions_[E[1]][0]),b.push(O.$),a.push(O._$),dt=F[u[u.length-2]][u[u.length-1]],u.push(dt);break;case 3:return!0}}return!0}},It=function(){var V={EOF:1,parseError:function(l,u){if(this.yy.parser)this.yy.parser.parseError(l,u);else throw new Error(l)},setInput:function(r,l){return this.yy=l||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var l=r.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},unput:function(r){var l=r.length,u=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),u.length-1&&(this.yylineno-=u.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:u?(u.length===g.length?this.yylloc.first_column:0)+g[g.length-u.length].length-u[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
                       `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(r){this.unput(this.match.slice(r))},pastInput:function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var r=this.pastInput(),l=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
                       `+l+"^"},test_match:function(r,l){var u,g,b;if(this.options.backtrack_lexer&&(b={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(b.yylloc.range=this.yylloc.range.slice(0))),g=r[0].match(/(?:\r\n?|\n).*/g),g&&(this.yylineno+=g.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:g?g[g.length-1].length-g[g.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+r[0].length},this.yytext+=r[0],this.match+=r[0],this.matches=r,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(r[0].length),this.matched+=r[0],u=this.performAction.call(this,this.yy,this,l,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),u)return u;if(this._backtrack){for(var a in b)this[a]=b[a];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var r,l,u,g;this._more||(this.yytext="",this.match="");for(var b=this._currentRules(),a=0;al[0].length)){if(l=u,g=a,this.options.backtrack_lexer){if(r=this.test_match(u,b[a]),r!==!1)return r;if(this._backtrack){l=!1;continue}else return!1}else if(!this.options.flex)break}return l?(r=this.test_match(l,b[g]),r!==!1?r:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
                      -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var l=this.next();return l||this.lex()},begin:function(l){this.conditionStack.push(l)},popState:function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},pushState:function(l){this.begin(l)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(l,u,g,b){switch(g){case 0:break;case 1:break;case 2:return this.popState(),34;case 3:return this.popState(),34;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";case 17:return this.pushState("axis_data"),"Y_AXIS";case 18:return this.pushState("axis_band_data"),24;case 19:return 31;case 20:return this.pushState("data"),16;case 21:return this.pushState("data"),18;case 22:return this.pushState("data_inner"),24;case 23:return 27;case 24:return this.popState(),26;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\)                                    \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+                  \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return V}();K.lexer=It;function J(){this.yy={}}return J.prototype=K,K.Parser=J,new J}();nt.parser=nt;const ti=nt;function mt(e){return e.type==="bar"}function Ct(e){return e.type==="band"}function N(e){return e.type==="linear"}class kt{constructor(t){this.parentGroup=t}getMaxDimension(t,i){if(!this.parentGroup)return{width:t.reduce((o,c)=>Math.max(c.length,o),0)*i,height:i};const s={width:0,height:0},n=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",i);for(const o of t){const c=Qt(n,1,o),f=c?c.width:o.length*i,d=c?c.height:i;s.width=Math.max(s.width,f),s.height=Math.max(s.height,d)}return n.remove(),s}}const yt=.7,bt=.2;class Rt{constructor(t,i,s,n){this.axisConfig=t,this.title=i,this.textDimensionCalculator=s,this.axisThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){const t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){yt*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(yt*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let i=t.height;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const s=this.getLabelDimension(),n=bt*t.width;this.outerPadding=Math.min(s.width/2,n);const o=s.height+this.axisConfig.labelPadding*2;this.labelTextHeight=s.height,o<=i&&(i-=o,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const s=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=s.height+this.axisConfig.titlePadding*2;this.titleTextHeight=s.height,n<=i&&(i-=n,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-i}calculateSpaceIfDrawnVertical(t){let i=t.width;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const s=this.getLabelDimension(),n=bt*t.height;this.outerPadding=Math.min(s.height/2,n);const o=s.width+this.axisConfig.labelPadding*2;o<=i&&(i-=o,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const s=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=s.height+this.axisConfig.titlePadding*2;this.titleTextHeight=s.height,n<=i&&(i-=n,this.showTitle=!0)}this.boundingRect.width=t.width-i,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${i},${this.boundingRect.y} L ${i},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(i=>({text:i.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(i),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){const i=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(s=>({path:`M ${i},${this.getScaleValue(s)} L ${i-this.axisConfig.tickLength},${this.getScaleValue(s)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(i=>({text:i.toString(),x:this.getScaleValue(i),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(s=>({path:`M ${this.getScaleValue(s)},${i} L ${this.getScaleValue(s)},${i+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(i=>({text:i.toString(),x:this.getScaleValue(i),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(s=>({path:`M ${this.getScaleValue(s)},${i+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(s)},${i+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}class ii extends Rt{constructor(t,i,s,n,o){super(t,n,o,i),this.categories=s,this.scale=st().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=st().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),_t.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)||this.getRange()[0]}}class ei extends Rt{constructor(t,i,s,n,o){super(t,n,o,i),this.domain=s,this.scale=ft().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=ft().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}}function At(e,t,i,s){const n=new kt(s);return Ct(e)?new ii(t,i,e.categories,e.title,n):new ei(t,i,[e.min,e.max],e.title,n)}class si{constructor(t,i,s,n){this.textDimensionCalculator=t,this.chartConfig=i,this.chartData=s,this.chartThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){const i=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),s=Math.max(i.width,t.width),n=i.height+2*this.chartConfig.titlePadding;return i.width<=s&&i.height<=n&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=s,this.boundingRect.height=n,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}}function ni(e,t,i,s){const n=new kt(s);return new si(n,e,t,i)}class ai{constructor(t,i,s,n,o){this.plotData=t,this.xAxis=i,this.yAxis=s,this.orientation=n,this.plotIndex=o}getDrawableElement(){const t=this.plotData.data.map(s=>[this.xAxis.getScaleValue(s[0]),this.yAxis.getScaleValue(s[1])]);let i;return this.orientation==="horizontal"?i=pt().y(s=>s[0]).x(s=>s[1])(t):i=pt().x(s=>s[0]).y(s=>s[1])(t),i?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:i,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}class oi{constructor(t,i,s,n,o,c){this.barData=t,this.boundingRect=i,this.xAxis=s,this.yAxis=n,this.orientation=o,this.plotIndex=c}getDrawableElement(){const t=this.barData.data.map(o=>[this.xAxis.getScaleValue(o[0]),this.yAxis.getScaleValue(o[1])]),i=.05,s=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-i),n=s/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(o=>({x:this.boundingRect.x,y:o[0]-n,height:s,width:o[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(o=>({x:o[0]-n,y:o[1],width:s,height:this.boundingRect.y+this.boundingRect.height-o[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}class ri{constructor(t,i,s){this.chartConfig=t,this.chartData=i,this.chartThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0}}setAxes(t,i){this.xAxis=t,this.yAxis=i}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");const t=[];for(const[i,s]of this.chartData.plots.entries())switch(s.type){case"line":{const n=new ai(s,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...n.getDrawableElement())}break;case"bar":{const n=new oi(s,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...n.getDrawableElement())}break}return t}}function hi(e,t,i){return new ri(e,t,i)}class li{constructor(t,i,s,n){this.chartConfig=t,this.chartData=i,this.componentStore={title:ni(t,i,s,n),plot:hi(t,i,s),xAxis:At(i.xAxis,t.xAxis,{titleColor:s.xAxisTitleColor,labelColor:s.xAxisLabelColor,tickColor:s.xAxisTickColor,axisLineColor:s.xAxisLineColor},n),yAxis:At(i.yAxis,t.yAxis,{titleColor:s.yAxisTitleColor,labelColor:s.yAxisLabelColor,tickColor:s.yAxisTickColor,axisLineColor:s.yAxisLineColor},n)}}calculateVerticalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,s=0,n=0,o=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),c=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),f=this.componentStore.plot.calculateSpace({width:o,height:c});t-=f.width,i-=f.height,f=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),n=f.height,i-=f.height,this.componentStore.xAxis.setAxisPosition("bottom"),f=this.componentStore.xAxis.calculateSpace({width:t,height:i}),i-=f.height,this.componentStore.yAxis.setAxisPosition("left"),f=this.componentStore.yAxis.calculateSpace({width:t,height:i}),s=f.width,t-=f.width,t>0&&(o+=t,t=0),i>0&&(c+=i,i=0),this.componentStore.plot.calculateSpace({width:o,height:c}),this.componentStore.plot.setBoundingBoxXY({x:s,y:n}),this.componentStore.xAxis.setRange([s,s+o]),this.componentStore.xAxis.setBoundingBoxXY({x:s,y:n+c}),this.componentStore.yAxis.setRange([n,n+c]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:n}),this.chartData.plots.some(d=>mt(d))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizonatalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,s=0,n=0,o=0,c=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),f=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),d=this.componentStore.plot.calculateSpace({width:c,height:f});t-=d.width,i-=d.height,d=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),s=d.height,i-=d.height,this.componentStore.xAxis.setAxisPosition("left"),d=this.componentStore.xAxis.calculateSpace({width:t,height:i}),t-=d.width,n=d.width,this.componentStore.yAxis.setAxisPosition("top"),d=this.componentStore.yAxis.calculateSpace({width:t,height:i}),i-=d.height,o=s+d.height,t>0&&(c+=t,t=0),i>0&&(f+=i,i=0),this.componentStore.plot.calculateSpace({width:c,height:f}),this.componentStore.plot.setBoundingBoxXY({x:n,y:o}),this.componentStore.yAxis.setRange([n,n+c]),this.componentStore.yAxis.setBoundingBoxXY({x:n,y:s}),this.componentStore.xAxis.setRange([o,o+f]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:o}),this.chartData.plots.some(R=>mt(R))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizonatalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const i of Object.values(this.componentStore))t.push(...i.getDrawableElements());return t}}class ci{static build(t,i,s,n){return new li(t,i,s,n).getDrawableElement()}}let X=0,Tt,Y=Lt(),H=Dt(),y=Pt(),at=H.plotColorPalette.split(",").map(e=>e.trim()),G=!1,rt=!1;function Dt(){const e=zt(),t=ot();return wt(e.xyChart,t.themeVariables.xyChart)}function Lt(){const e=ot();return wt(Ft.xyChart,e.xyChart)}function Pt(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function ht(e){const t=ot();return Gt(e.trim(),t)}function ui(e){Tt=e}function gi(e){e==="horizontal"?Y.chartOrientation="horizontal":Y.chartOrientation="vertical"}function xi(e){y.xAxis.title=ht(e.text)}function vt(e,t){y.xAxis={type:"linear",title:y.xAxis.title,min:e,max:t},G=!0}function di(e){y.xAxis={type:"band",title:y.xAxis.title,categories:e.map(t=>ht(t.text))},G=!0}function fi(e){y.yAxis.title=ht(e.text)}function pi(e,t){y.yAxis={type:"linear",title:y.yAxis.title,min:e,max:t},rt=!0}function mi(e){const t=Math.min(...e),i=Math.max(...e),s=N(y.yAxis)?y.yAxis.min:1/0,n=N(y.yAxis)?y.yAxis.max:-1/0;y.yAxis={type:"linear",title:y.yAxis.title,min:Math.min(s,t),max:Math.max(n,i)}}function Et(e){let t=[];if(e.length===0)return t;if(!G){const i=N(y.xAxis)?y.xAxis.min:1/0,s=N(y.xAxis)?y.xAxis.max:-1/0;vt(Math.min(i,1),Math.max(s,e.length))}if(rt||mi(e),Ct(y.xAxis)&&(t=y.xAxis.categories.map((i,s)=>[i,e[s]])),N(y.xAxis)){const i=y.xAxis.min,s=y.xAxis.max,n=(s-i+1)/e.length,o=[];for(let c=i;c<=s;c+=n)o.push(`${c}`);t=o.map((c,f)=>[c,e[f]])}return t}function Mt(e){return at[e===0?0:e%at.length]}function yi(e,t){const i=Et(t);y.plots.push({type:"line",strokeFill:Mt(X),strokeWidth:2,data:i}),X++}function bi(e,t){const i=Et(t);y.plots.push({type:"bar",fill:Mt(X),data:i}),X++}function Ai(){if(y.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return y.title=St(),ci.build(Y,y,H,Tt)}function wi(){return H}function Si(){return Y}const _i=function(){Ut(),X=0,Y=Lt(),y=Pt(),H=Dt(),at=H.plotColorPalette.split(",").map(e=>e.trim()),G=!1,rt=!1},Ci={getDrawableElem:Ai,clear:_i,setAccTitle:Nt,getAccTitle:Xt,setDiagramTitle:Yt,getDiagramTitle:St,getAccDescription:Ht,setAccDescription:$t,setOrientation:gi,setXAxisTitle:xi,setXAxisRangeData:vt,setXAxisBand:di,setYAxisTitle:fi,setYAxisRangeData:pi,setLineData:yi,setBarData:bi,setTmpSVGG:ui,getChartThemeConfig:wi,getChartConfig:Si},ki=(e,t,i,s)=>{const n=s.db,o=n.getChartThemeConfig(),c=n.getChartConfig();function f(p){return p==="top"?"text-before-edge":"middle"}function d(p){return p==="left"?"start":p==="right"?"end":"middle"}function R(p){return`translate(${p.x}, ${p.y}) rotate(${p.rotation||0})`}_t.debug(`Rendering xychart chart
                      -`+e);const C=qt(t),A=C.append("g").attr("class","main"),m=A.append("rect").attr("width",c.width).attr("height",c.height).attr("class","background");jt(C,c.height,c.width,!0),C.attr("viewBox",`0 0 ${c.width} ${c.height}`),m.attr("fill",o.backgroundColor),n.setTmpSVGG(C.append("g").attr("class","mermaid-tmp-group"));const T=n.getDrawableElem(),S={};function L(p){let _=A,h="";for(const[P]of p.entries()){let z=A;P>0&&S[h]&&(z=S[h]),h+=p[P],_=S[h],_||(_=S[h]=z.append("g").attr("class",p[P]))}return _}for(const p of T){if(p.data.length===0)continue;const _=L(p.groupTexts);switch(p.type){case"rect":_.selectAll("rect").data(p.data).enter().append("rect").attr("x",h=>h.x).attr("y",h=>h.y).attr("width",h=>h.width).attr("height",h=>h.height).attr("fill",h=>h.fill).attr("stroke",h=>h.strokeFill).attr("stroke-width",h=>h.strokeWidth);break;case"text":_.selectAll("text").data(p.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",h=>h.fill).attr("font-size",h=>h.fontSize).attr("dominant-baseline",h=>f(h.verticalPos)).attr("text-anchor",h=>d(h.horizontalPos)).attr("transform",h=>R(h)).text(h=>h.text);break;case"path":_.selectAll("path").data(p.data).enter().append("path").attr("d",h=>h.path).attr("fill",h=>h.fill?h.fill:"none").attr("stroke",h=>h.strokeFill).attr("stroke-width",h=>h.strokeWidth);break}}},Ri={draw:ki},Bi={parser:ti,db:Ci,renderer:Ri};export{Bi as diagram};
                      +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var l=this.next();return l||this.lex()},begin:function(l){this.conditionStack.push(l)},popState:function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},pushState:function(l){this.begin(l)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(l,u,g,b){switch(g){case 0:break;case 1:break;case 2:return this.popState(),34;case 3:return this.popState(),34;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";case 17:return this.pushState("axis_data"),"Y_AXIS";case 18:return this.pushState("axis_band_data"),24;case 19:return 31;case 20:return this.pushState("data"),16;case 21:return this.pushState("data"),18;case 22:return this.pushState("data_inner"),24;case 23:return 27;case 24:return this.popState(),26;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\)                                    \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+                  \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return V}();K.lexer=It;function J(){this.yy={}}return J.prototype=K,K.Parser=J,new J}();nt.parser=nt;const ti=nt;function mt(e){return e.type==="bar"}function Ct(e){return e.type==="band"}function N(e){return e.type==="linear"}class kt{constructor(t){this.parentGroup=t}getMaxDimension(t,i){if(!this.parentGroup)return{width:t.reduce((o,c)=>Math.max(c.length,o),0)*i,height:i};const s={width:0,height:0},n=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",i);for(const o of t){const c=Qt(n,1,o),f=c?c.width:o.length*i,d=c?c.height:i;s.width=Math.max(s.width,f),s.height=Math.max(s.height,d)}return n.remove(),s}}const yt=.7,bt=.2;class Rt{constructor(t,i,s,n){this.axisConfig=t,this.title=i,this.textDimensionCalculator=s,this.axisThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){const t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){yt*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(yt*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let i=t.height;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const s=this.getLabelDimension(),n=bt*t.width;this.outerPadding=Math.min(s.width/2,n);const o=s.height+this.axisConfig.labelPadding*2;this.labelTextHeight=s.height,o<=i&&(i-=o,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const s=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=s.height+this.axisConfig.titlePadding*2;this.titleTextHeight=s.height,n<=i&&(i-=n,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-i}calculateSpaceIfDrawnVertical(t){let i=t.width;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const s=this.getLabelDimension(),n=bt*t.height;this.outerPadding=Math.min(s.height/2,n);const o=s.width+this.axisConfig.labelPadding*2;o<=i&&(i-=o,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const s=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=s.height+this.axisConfig.titlePadding*2;this.titleTextHeight=s.height,n<=i&&(i-=n,this.showTitle=!0)}this.boundingRect.width=t.width-i,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${i},${this.boundingRect.y} L ${i},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(i=>({text:i.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(i),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){const i=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(s=>({path:`M ${i},${this.getScaleValue(s)} L ${i-this.axisConfig.tickLength},${this.getScaleValue(s)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(i=>({text:i.toString(),x:this.getScaleValue(i),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(s=>({path:`M ${this.getScaleValue(s)},${i} L ${this.getScaleValue(s)},${i+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(i=>({text:i.toString(),x:this.getScaleValue(i),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(s=>({path:`M ${this.getScaleValue(s)},${i+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(s)},${i+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}class ii extends Rt{constructor(t,i,s,n,o){super(t,n,o,i),this.categories=s,this.scale=st().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=st().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),_t.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)||this.getRange()[0]}}class ei extends Rt{constructor(t,i,s,n,o){super(t,n,o,i),this.domain=s,this.scale=ft().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=ft().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}}function At(e,t,i,s){const n=new kt(s);return Ct(e)?new ii(t,i,e.categories,e.title,n):new ei(t,i,[e.min,e.max],e.title,n)}class si{constructor(t,i,s,n){this.textDimensionCalculator=t,this.chartConfig=i,this.chartData=s,this.chartThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){const i=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),s=Math.max(i.width,t.width),n=i.height+2*this.chartConfig.titlePadding;return i.width<=s&&i.height<=n&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=s,this.boundingRect.height=n,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}}function ni(e,t,i,s){const n=new kt(s);return new si(n,e,t,i)}class ai{constructor(t,i,s,n,o){this.plotData=t,this.xAxis=i,this.yAxis=s,this.orientation=n,this.plotIndex=o}getDrawableElement(){const t=this.plotData.data.map(s=>[this.xAxis.getScaleValue(s[0]),this.yAxis.getScaleValue(s[1])]);let i;return this.orientation==="horizontal"?i=pt().y(s=>s[0]).x(s=>s[1])(t):i=pt().x(s=>s[0]).y(s=>s[1])(t),i?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:i,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}class oi{constructor(t,i,s,n,o,c){this.barData=t,this.boundingRect=i,this.xAxis=s,this.yAxis=n,this.orientation=o,this.plotIndex=c}getDrawableElement(){const t=this.barData.data.map(o=>[this.xAxis.getScaleValue(o[0]),this.yAxis.getScaleValue(o[1])]),s=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),n=s/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(o=>({x:this.boundingRect.x,y:o[0]-n,height:s,width:o[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(o=>({x:o[0]-n,y:o[1],width:s,height:this.boundingRect.y+this.boundingRect.height-o[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}class ri{constructor(t,i,s){this.chartConfig=t,this.chartData=i,this.chartThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0}}setAxes(t,i){this.xAxis=t,this.yAxis=i}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");const t=[];for(const[i,s]of this.chartData.plots.entries())switch(s.type){case"line":{const n=new ai(s,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...n.getDrawableElement())}break;case"bar":{const n=new oi(s,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...n.getDrawableElement())}break}return t}}function hi(e,t,i){return new ri(e,t,i)}class li{constructor(t,i,s,n){this.chartConfig=t,this.chartData=i,this.componentStore={title:ni(t,i,s,n),plot:hi(t,i,s),xAxis:At(i.xAxis,t.xAxis,{titleColor:s.xAxisTitleColor,labelColor:s.xAxisLabelColor,tickColor:s.xAxisTickColor,axisLineColor:s.xAxisLineColor},n),yAxis:At(i.yAxis,t.yAxis,{titleColor:s.yAxisTitleColor,labelColor:s.yAxisLabelColor,tickColor:s.yAxisTickColor,axisLineColor:s.yAxisLineColor},n)}}calculateVerticalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,s=0,n=0,o=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),c=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),f=this.componentStore.plot.calculateSpace({width:o,height:c});t-=f.width,i-=f.height,f=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),n=f.height,i-=f.height,this.componentStore.xAxis.setAxisPosition("bottom"),f=this.componentStore.xAxis.calculateSpace({width:t,height:i}),i-=f.height,this.componentStore.yAxis.setAxisPosition("left"),f=this.componentStore.yAxis.calculateSpace({width:t,height:i}),s=f.width,t-=f.width,t>0&&(o+=t,t=0),i>0&&(c+=i,i=0),this.componentStore.plot.calculateSpace({width:o,height:c}),this.componentStore.plot.setBoundingBoxXY({x:s,y:n}),this.componentStore.xAxis.setRange([s,s+o]),this.componentStore.xAxis.setBoundingBoxXY({x:s,y:n+c}),this.componentStore.yAxis.setRange([n,n+c]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:n}),this.chartData.plots.some(d=>mt(d))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizonatalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,s=0,n=0,o=0,c=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),f=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),d=this.componentStore.plot.calculateSpace({width:c,height:f});t-=d.width,i-=d.height,d=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),s=d.height,i-=d.height,this.componentStore.xAxis.setAxisPosition("left"),d=this.componentStore.xAxis.calculateSpace({width:t,height:i}),t-=d.width,n=d.width,this.componentStore.yAxis.setAxisPosition("top"),d=this.componentStore.yAxis.calculateSpace({width:t,height:i}),i-=d.height,o=s+d.height,t>0&&(c+=t,t=0),i>0&&(f+=i,i=0),this.componentStore.plot.calculateSpace({width:c,height:f}),this.componentStore.plot.setBoundingBoxXY({x:n,y:o}),this.componentStore.yAxis.setRange([n,n+c]),this.componentStore.yAxis.setBoundingBoxXY({x:n,y:s}),this.componentStore.xAxis.setRange([o,o+f]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:o}),this.chartData.plots.some(R=>mt(R))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizonatalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const i of Object.values(this.componentStore))t.push(...i.getDrawableElements());return t}}class ci{static build(t,i,s,n){return new li(t,i,s,n).getDrawableElement()}}let X=0,Tt,Y=Pt(),H=Dt(),y=Lt(),at=H.plotColorPalette.split(",").map(e=>e.trim()),G=!1,rt=!1;function Dt(){const e=zt(),t=ot();return wt(e.xyChart,t.themeVariables.xyChart)}function Pt(){const e=ot();return wt(Ft.xyChart,e.xyChart)}function Lt(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function ht(e){const t=ot();return Gt(e.trim(),t)}function ui(e){Tt=e}function gi(e){e==="horizontal"?Y.chartOrientation="horizontal":Y.chartOrientation="vertical"}function xi(e){y.xAxis.title=ht(e.text)}function vt(e,t){y.xAxis={type:"linear",title:y.xAxis.title,min:e,max:t},G=!0}function di(e){y.xAxis={type:"band",title:y.xAxis.title,categories:e.map(t=>ht(t.text))},G=!0}function fi(e){y.yAxis.title=ht(e.text)}function pi(e,t){y.yAxis={type:"linear",title:y.yAxis.title,min:e,max:t},rt=!0}function mi(e){const t=Math.min(...e),i=Math.max(...e),s=N(y.yAxis)?y.yAxis.min:1/0,n=N(y.yAxis)?y.yAxis.max:-1/0;y.yAxis={type:"linear",title:y.yAxis.title,min:Math.min(s,t),max:Math.max(n,i)}}function Et(e){let t=[];if(e.length===0)return t;if(!G){const i=N(y.xAxis)?y.xAxis.min:1/0,s=N(y.xAxis)?y.xAxis.max:-1/0;vt(Math.min(i,1),Math.max(s,e.length))}if(rt||mi(e),Ct(y.xAxis)&&(t=y.xAxis.categories.map((i,s)=>[i,e[s]])),N(y.xAxis)){const i=y.xAxis.min,s=y.xAxis.max,n=(s-i+1)/e.length,o=[];for(let c=i;c<=s;c+=n)o.push(`${c}`);t=o.map((c,f)=>[c,e[f]])}return t}function Mt(e){return at[e===0?0:e%at.length]}function yi(e,t){const i=Et(t);y.plots.push({type:"line",strokeFill:Mt(X),strokeWidth:2,data:i}),X++}function bi(e,t){const i=Et(t);y.plots.push({type:"bar",fill:Mt(X),data:i}),X++}function Ai(){if(y.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return y.title=St(),ci.build(Y,y,H,Tt)}function wi(){return H}function Si(){return Y}const _i=function(){Ut(),X=0,Y=Pt(),y=Lt(),H=Dt(),at=H.plotColorPalette.split(",").map(e=>e.trim()),G=!1,rt=!1},Ci={getDrawableElem:Ai,clear:_i,setAccTitle:Nt,getAccTitle:Xt,setDiagramTitle:Yt,getDiagramTitle:St,getAccDescription:Ht,setAccDescription:$t,setOrientation:gi,setXAxisTitle:xi,setXAxisRangeData:vt,setXAxisBand:di,setYAxisTitle:fi,setYAxisRangeData:pi,setLineData:yi,setBarData:bi,setTmpSVGG:ui,getChartThemeConfig:wi,getChartConfig:Si},ki=(e,t,i,s)=>{const n=s.db,o=n.getChartThemeConfig(),c=n.getChartConfig();function f(p){return p==="top"?"text-before-edge":"middle"}function d(p){return p==="left"?"start":p==="right"?"end":"middle"}function R(p){return`translate(${p.x}, ${p.y}) rotate(${p.rotation||0})`}_t.debug(`Rendering xychart chart
                      +`+e);const C=qt(t),A=C.append("g").attr("class","main"),m=A.append("rect").attr("width",c.width).attr("height",c.height).attr("class","background");jt(C,c.height,c.width,!0),C.attr("viewBox",`0 0 ${c.width} ${c.height}`),m.attr("fill",o.backgroundColor),n.setTmpSVGG(C.append("g").attr("class","mermaid-tmp-group"));const T=n.getDrawableElem(),S={};function P(p){let _=A,h="";for(const[L]of p.entries()){let z=A;L>0&&S[h]&&(z=S[h]),h+=p[L],_=S[h],_||(_=S[h]=z.append("g").attr("class",p[L]))}return _}for(const p of T){if(p.data.length===0)continue;const _=P(p.groupTexts);switch(p.type){case"rect":_.selectAll("rect").data(p.data).enter().append("rect").attr("x",h=>h.x).attr("y",h=>h.y).attr("width",h=>h.width).attr("height",h=>h.height).attr("fill",h=>h.fill).attr("stroke",h=>h.strokeFill).attr("stroke-width",h=>h.strokeWidth);break;case"text":_.selectAll("text").data(p.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",h=>h.fill).attr("font-size",h=>h.fontSize).attr("dominant-baseline",h=>f(h.verticalPos)).attr("text-anchor",h=>d(h.horizontalPos)).attr("transform",h=>R(h)).text(h=>h.text);break;case"path":_.selectAll("path").data(p.data).enter().append("path").attr("d",h=>h.path).attr("fill",h=>h.fill?h.fill:"none").attr("stroke",h=>h.strokeFill).attr("stroke-width",h=>h.strokeWidth);break}}},Ri={draw:ki},Bi={parser:ti,db:Ci,renderer:Ri};export{Bi as diagram};
                      diff --git a/assets/zltoolkit_source_code_study_notes.html-JZCYuLhh.js b/assets/zltoolkit_source_code_study_notes.html-3EZc_Boy.js
                      similarity index 86%
                      rename from assets/zltoolkit_source_code_study_notes.html-JZCYuLhh.js
                      rename to assets/zltoolkit_source_code_study_notes.html-3EZc_Boy.js
                      index 3c2fa82..c0945f6 100644
                      --- a/assets/zltoolkit_source_code_study_notes.html-JZCYuLhh.js
                      +++ b/assets/zltoolkit_source_code_study_notes.html-3EZc_Boy.js
                      @@ -1 +1 @@
                      -import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c,a as e,d as s,b as _}from"./app-RP31lnfq.js";const l={},a={href:"https://blog.csdn.net/youlezhe/category_11460699.html",target:"_blank",rel:"noopener noreferrer"};function d(i,m){const o=n("ExternalLinkIcon");return r(),c("div",null,[e("p",null,[e("a",a,[s("zltoolkit 源码分析"),_(o)])])])}const p=t(l,[["render",d],["__file","zltoolkit_source_code_study_notes.html.vue"]]);export{p as default};
                      +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c,a as e,d as s,b as _}from"./app-0NopiYEV.js";const l={},a={href:"https://blog.csdn.net/youlezhe/category_11460699.html",target:"_blank",rel:"noopener noreferrer"};function d(i,m){const o=n("ExternalLinkIcon");return r(),c("div",null,[e("p",null,[e("a",a,[s("zltoolkit 源码分析"),_(o)])])])}const p=t(l,[["render",d],["__file","zltoolkit_source_code_study_notes.html.vue"]]);export{p as default};
                      diff --git a/assets/zltoolkit_source_code_study_notes.html-PfuwMzDt.js b/assets/zltoolkit_source_code_study_notes.html-X78_rEP2.js
                      similarity index 86%
                      rename from assets/zltoolkit_source_code_study_notes.html-PfuwMzDt.js
                      rename to assets/zltoolkit_source_code_study_notes.html-X78_rEP2.js
                      index 5557df5..e85280c 100644
                      --- a/assets/zltoolkit_source_code_study_notes.html-PfuwMzDt.js
                      +++ b/assets/zltoolkit_source_code_study_notes.html-X78_rEP2.js
                      @@ -1 +1 @@
                      -import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c,a as e,d as s,b as l}from"./app-RP31lnfq.js";const _={},a={href:"https://blog.csdn.net/youlezhe/category_11460699.html",target:"_blank",rel:"noopener noreferrer"};function d(i,u){const o=n("ExternalLinkIcon");return r(),c("div",null,[e("p",null,[e("a",a,[s("zltoolkit source code analysis"),l(o)])])])}const p=t(_,[["render",d],["__file","zltoolkit_source_code_study_notes.html.vue"]]);export{p as default};
                      +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c,a as e,d as s,b as l}from"./app-0NopiYEV.js";const _={},a={href:"https://blog.csdn.net/youlezhe/category_11460699.html",target:"_blank",rel:"noopener noreferrer"};function d(i,u){const o=n("ExternalLinkIcon");return r(),c("div",null,[e("p",null,[e("a",a,[s("zltoolkit source code analysis"),l(o)])])])}const p=t(_,[["render",d],["__file","zltoolkit_source_code_study_notes.html.vue"]]);export{p as default};
                      diff --git a/guide/code/index.html b/guide/code/index.html
                      index 3be4010..93f3093 100644
                      --- a/guide/code/index.html
                      +++ b/guide/code/index.html
                      @@ -30,11 +30,11 @@
                           
                           Code interpretation | ZLMediaKit
                           
                      -    
                      +    
                           
                         
                         
                      -    
                      -    
                      +    
                      +    
                         
                       
                      diff --git a/guide/code/oncetoken.html b/guide/code/oncetoken.html
                      index b99b536..fa39717 100644
                      --- a/guide/code/oncetoken.html
                      +++ b/guide/code/oncetoken.html
                      @@ -30,7 +30,7 @@
                           
                           onceToken | ZLMediaKit
                           
                      -    
                      +    
                           
                         
                         
                      @@ -89,7 +89,7 @@
                       
                               //Omitted subsequent code
                           }
                      -
                    • The name of this object is derived from pthread_once and dispatch_once in iOS.

    - +
  • The name of this object is derived from pthread_once and dispatch_once in iOS.

  • + diff --git a/guide/faq/index.html b/guide/faq/index.html index 60e4123..6884b16 100644 --- a/guide/faq/index.html +++ b/guide/faq/index.html @@ -30,11 +30,11 @@ FAQ | ZLMediaKit - + - - + + diff --git a/guide/faq/not_recommended_qq.html b/guide/faq/not_recommended_qq.html index 1db28ad..cbace80 100644 --- a/guide/faq/not_recommended_qq.html +++ b/guide/faq/not_recommended_qq.html @@ -30,11 +30,11 @@ Why is it not recommended to consult questions via QQ private chat? | ZLMediaKit - + -
    Skip to main content

    Why is it not recommended to consult questions via QQ private chat?

    ZLMediaKitLess than 1 minute

    1. Private chat on QQ is difficult to trace and organize, making it hard to form documentation. There are often repetitive questions, which do not benefit the project.

    2. The efficiency of communication on QQ is actually quite low. Although it allows for timely responses, the threshold for asking questions is too low. Questioners often need the respondent's progressive guidance to clarify their questions, which wastes a lot of time.

    3. Private chat messages on QQ are not timely and often interrupt the respondent's current work process. In contrast, GitHub issues can be handled in a unified manner, saving more time.

    4. Other users cannot participate in answering questions through private chat on QQ, and others cannot see the questions and answers. This is not conducive to divergent thinking and knowledge dissemination.

    Private chat for technical consultations is generally only accepted from the following individuals with selfless friendship relationships:

    1. Those who have submitted pull requests or other forms of code contributions.
    2. Those who have open-sourced projects based on ZLMediaKit.
    3. Those who have actively answered related technical questions in QQ groups or issues.
    4. Those who have shared self-written ZLMediaKit-related documents.
    5. Those who have sponsored the ZLMediaKit project or the author.
    6. Those who have made any contributions to the development and promotion of ZLMediaKit.
    - +
    Skip to main content

    Why is it not recommended to consult questions via QQ private chat?

    ZLMediaKitLess than 1 minute

    1. Private chat on QQ is difficult to trace and organize, making it hard to form documentation. There are often repetitive questions, which do not benefit the project.

    2. The efficiency of communication on QQ is actually quite low. Although it allows for timely responses, the threshold for asking questions is too low. Questioners often need the respondent's progressive guidance to clarify their questions, which wastes a lot of time.

    3. Private chat messages on QQ are not timely and often interrupt the respondent's current work process. In contrast, GitHub issues can be handled in a unified manner, saving more time.

    4. Other users cannot participate in answering questions through private chat on QQ, and others cannot see the questions and answers. This is not conducive to divergent thinking and knowledge dissemination.

    Private chat for technical consultations is generally only accepted from the following individuals with selfless friendship relationships:

    1. Those who have submitted pull requests or other forms of code contributions.
    2. Those who have open-sourced projects based on ZLMediaKit.
    3. Those who have actively answered related technical questions in QQ groups or issues.
    4. Those who have shared self-written ZLMediaKit-related documents.
    5. Those who have sponsored the ZLMediaKit project or the author.
    6. Those who have made any contributions to the development and promotion of ZLMediaKit.
    + diff --git a/guide/faq/rtmp_playback_compatibility_issues.html b/guide/faq/rtmp_playback_compatibility_issues.html index 7863a63..447602f 100644 --- a/guide/faq/rtmp_playback_compatibility_issues.html +++ b/guide/faq/rtmp_playback_compatibility_issues.html @@ -30,11 +30,11 @@ RTMP Playback Compatibility Issues | ZLMediaKit - + -
    Skip to main content

    RTMP Playback Compatibility Issues

    ZLMediaKitLess than 1 minute

    In general, the specification for RTMP is to first send metadata, followed by config frames, then keyframes, and finally regular frames.

    Once the config frames are received, the decoder can be initialized.

    However, some streams are different, as they receive other frames before receiving the config frame for the video.

    In this case, the video track is not created and initialized.

    There is a preliminary suspicion that the compatibility of the Nginx RTMP server is not good.

    ZLMediaKit's streaming tool strictly follows the process of sending metadata first, then config frames, followed by keyframes, and finally regular frames.

    It also caches all config frames.

    FFplay can successfully play due to its determination of playback success based on data volume and time.

    As long as the data volume reaches a certain threshold or the time reaches a certain duration, it triggers the event of successful playback.

    The advantage of this approach is a high success rate in playback, but the downside is a longer video opening time.

    - +
    Skip to main content

    RTMP Playback Compatibility Issues

    ZLMediaKitLess than 1 minute

    In general, the specification for RTMP is to first send metadata, followed by config frames, then keyframes, and finally regular frames.

    Once the config frames are received, the decoder can be initialized.

    However, some streams are different, as they receive other frames before receiving the config frame for the video.

    In this case, the video track is not created and initialized.

    There is a preliminary suspicion that the compatibility of the Nginx RTMP server is not good.

    ZLMediaKit's streaming tool strictly follows the process of sending metadata first, then config frames, followed by keyframes, and finally regular frames.

    It also caches all config frames.

    FFplay can successfully play due to its determination of playback success based on data volume and time.

    As long as the data volume reaches a certain threshold or the time reaches a certain duration, it triggers the event of successful playback.

    The advantage of this approach is a high success rate in playback, but the downside is a longer video opening time.

    + diff --git a/guide/index.html b/guide/index.html index c11d97b..b2f206f 100644 --- a/guide/index.html +++ b/guide/index.html @@ -30,14 +30,14 @@ Guide | ZLMediaKit - +
    Skip to main content

    Guide

    ZLMediaKitAbout 4 min

    An high-performance, enterprise-level streaming media service framework based on C++11.

    badgeopen in new windowbadgeopen in new windowbadgeopen in new windowbadgeopen in new window

    badgeopen in new windowbadgeopen in new windowbadgeopen in new windowbadgeopen in new window

    badgeopen in new windowbadgeopen in new window

    Project Features

    • Developed with C++11, avoiding the use of raw pointers, providing stable and reliable code with superior performance.
    • Supports multiple protocols (RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC), and protocol conversion.
    • Developed with multiplexing/multithreading/asynchronous network IO models, providing excellent concurrency performance and supporting massive client connections.
    • The code has undergone extensive stability and performance testing, and has been extensively used in production environments.
    • Supports all major platforms, including linux, macos, ios, android, and windows.
    • Supports multiple instruction set platforms, such as x86, arm, risc-v, mips, Loongson, and Shenwei.
    • Provides ultra-fast startup, extremely low latency (within 500 milliseconds, and can be as low as 100 milliseconds), and excellent user experience.
    • Provides a comprehensive standard C APIopen in new window that can be used as an SDK or called by other languages.
    • Provides a complete MediaServeropen in new window server, which can be deployed directly as a commercial server without additional development.
    • Provides a complete restful api and web hook, supporting rich business logic.
    • Bridges the video surveillance protocol stack and the live streaming protocol stack, and provides comprehensive support for RTSP/RTMP.
    • Fully supports H265/H264/AAC/G711/OPUS.
    • Provides complete functions, including clustering, on-demand protocol conversion, on-demand push/pull streams, playback before publishing, and continuous publishing after disconnection.
    • Provides ultimate performance, supporting 10W-level players on a single machine and 100Gb/s-level IO bandwidth capability.
    • Provides ultimate user experience with exclusive features.
    • Who is using zlmediakit?open in new window
    • Fully supports IPv6 networks.

    Project Positioning

    • Cross-platform streaming media solution for mobile and embedded systems.
    • Commercial-grade streaming media server.
    • Network programming secondary development SDK.

    Feature List

    Overview of Features

    • RTSP[S]

      • RTSP[S] server, supports RTMP/MP4/HLS to RTSP[S] conversion, supports devices such as Amazon Echo Show
      • RTSP[S] player, supports RTSP proxy, supports generating silent audio
      • RTSP[S] push client and server
      • Supports four RTP transmission modes: rtp over udp rtp over tcp rtp over http rtp multicast
      • Server/client fully supports Basic/Digest authentication, asynchronous configurable authentication interface
      • Supports H265 encoding
      • The server supports RTSP pushing (including rtp over udp and rtp over tcp)
      • Supports H264/H265/AAC/G711/OPUS/MJPEG encoding. Other encodings can be forwarded but cannot be converted to protocol
    • RTMP[S]

      • RTMP[S] playback server, supports RTSP/MP4/HLS to RTMP conversion
      • RTMP[S] publishing server, supports recording and publishing streams
      • RTMP[S] player, supports RTMP proxy, supports generating silent audio
      • RTMP[S] push client
      • Supports http[s]-flv live streaming server
      • Supports http[s]-flv live streaming player
      • Supports websocket-flv live streaming
      • Supports H264/H265/AAC/G711/OPUS encoding. Other encodings can be forwarded but cannot be converted to protocol
      • Supports RTMP-H265open in new window
      • Supports RTMP-OPUS
      • Supports enhanced-rtmp(H265)open in new window
    • HLS

      • Supports HLS file(mpegts/fmp4) generation and comes with an HTTP file server
      • Through cookie tracking technology, it can simulate HLS playback as a long connection, which can achieve HLS on-demand pulling, playback statistics, and other businesses
      • Supports HLS player and can pull HLS to rtsp/rtmp/mp4
      • Supports H264/H265/AAC/G711/OPUS encoding
    • TS

      • Supports http[s]-ts live streaming
      • Supports ws[s]-ts live streaming
      • Supports H264/H265/AAC/G711/OPUS encoding
    • fMP4

      • Supports http[s]-fmp4 live streaming
      • Supports ws[s]-fmp4 live streaming
      • Supports H264/H265/AAC/G711/OPUS/MJPEG encoding
    • http[s] and WebSocket

      • The server supports directory index generation, file download, form submission requests
      • The client provides file downloader (supports resume breakpoint), interface requestor, file uploader
      • Complete HTTP API server, which can be used as a web backend development framework
      • Supports cross-domain access
      • Supports http client/server cookie
      • Supports WebSocket server and client
      • Supports http file access authentication
    • GB28181 and RTP Streaming

      • Supports UDP/TCP RTP (PS/TS/ES) streaming server, which can be converted to RTSP/RTMP/HLS and other protocols
      • Supports RTSP/RTMP/HLS and other protocol conversion to RTP streaming client, supports TCP/UDP mode, provides corresponding RESTful API, supports active and passive modes
      • Supports H264/H265/AAC/G711/OPUS encoding
      • Supports ES/PS/TS/EHOME RTP streaming
      • Supports ES/PS RTP forwarding
      • Supports GB28181 active pull mode
      • Supports two-way voice intercom
    • MP4 VOD and Recording

      • Supports recording as FLV/HLS/MP4
      • Supports MP4 file playback for RTSP/RTMP/HTTP-FLV/WS-FLV, supports seek
      • Supports H264/H265/AAC/G711/OPUS encoding
    • WebRTC

      • Supports WebRTC streaming and conversion to other protocols
      • Supports WebRTC playback and conversion from other protocols to WebRTC
      • Supports two-way echo testing
      • Supports simulcast streaming
      • Supports uplink and downlink RTX/NACK packet loss retransmission
      • Supports single-port, multi-threaded, and client network connection migration (unique in the open source community).
      • Supports TWCC RTCP dynamic rate control
      • Supports REMB/PLI/SR/RR RTCP
      • Supports RTP extension parsing
      • Supports GOP buffer and instant WebRTC playback
      • Supports data channels
      • Supports WebRTC over TCP mode
      • Excellent NACK and jitter buffer algorithms with outstanding packet loss resistance
      • Supports WHIP/WHEP protocols
    • SRT support

    • Others

      • Supports rich RESTful APIs and webhook events
      • Supports simple Telnet debugging
      • Supports hot reloading of configuration files
      • Supports traffic statistics, stream authentication, and other events
      • Supports virtual hosts for isolating different domain names
      • Supports on-demand streaming and automatic shutdown of streams with no viewers
      • Supports pre-play before streaming to increase the rate of timely stream openings
      • Provides a complete and powerful C API SDK
      • Supports FFmpeg stream proxy for any format
      • Supports HTTP API for real-time screenshot generation and return
      • Supports on-demand demultiplexing and protocol conversion, reducing CPU usage by only enabling it when someone is watching
      • Supports cluster deployment in traceable mode, with RTSP/RTMP/HLS/HTTP-TS support for traceable mode and HLS support for edge stations and multiple sources for source stations (using round-robin tracing)
      • Can reconnect to streaming after abnormal disconnection in RTSP/RTMP/WebRTC pushing within a timeout period, with no impact on the player.

    How to build

    It is recommended to compile on Ubuntu or macOS. Compiling on Windows is cumbersome, and some features are not compiled by default. For details, please refer to Quick Start

    How to use

    You have three ways to use ZLMediaKit, namely:

      1. Use c api as sdk, please refer to hereopen in new window.
      1. Used as an independent streaming media server. If you don’t want to do c/c++ development, you can refer to restful api and web hook.
      1. If you want to do c/c++ development and add business logic to increase functions, you can refer to the [test program] here (https://github.com/ZLMediaKit/ZLMediaKit/tree/master/tests).

    Docker image

    You can download the compiled image from Docker Hub and start it:

    #This image is automatically compiled and pushed for github continuous integration, keeping it up to date with the code (master branch)
     docker run -id -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp zlmediakit/zlmediakit:master
     

    You can also compile the image according to the Dockerfile:

    bash build_docker_images.sh
    -
    - +
    + diff --git a/guide/install/compilation_instructions_for_windows_version.html b/guide/install/compilation_instructions_for_windows_version.html index 61d9f48..b142524 100644 --- a/guide/install/compilation_instructions_for_windows_version.html +++ b/guide/install/compilation_instructions_for_windows_version.html @@ -30,7 +30,7 @@ Building Instructions for Windows | ZLMediaKit - + @@ -68,7 +68,7 @@ cmake --build . --target all

    To compile a 64-bit program and link openssl, you also need to link Crypt32.lib and ws2_32.lib. Normally, when executing cmake .. @CMAKE_OPTIONS, you should see similar output like this:

    found library:C:/work/develop/vcpkg/installed/x64-windows-static/lib/libssl.lib;C:/work/develop/vcpkg/installed/x64-windows-static/lib/libcrypto.lib;Crypt32.lib;ws2_32.lib,ENABLE_OPENSSL defined
     

    If Crypt32.lib and ws2_32.lib are not present, you can manually modify the CMakeLists.txt file to resolve the issue (search for OPENSSL_LIBRARIES to find the corresponding location).

    list(APPEND LINK_LIB_LIST ${OPENSSL_LIBRARIES} Crypt32.lib ws2_32.lib)
    -
    - +
    + diff --git a/guide/install/index.html b/guide/install/index.html index a7a1742..1bca926 100644 --- a/guide/install/index.html +++ b/guide/install/index.html @@ -30,11 +30,11 @@ Install | ZLMediaKit - + - - + + diff --git a/guide/install/install_zlmediakit_using_vcpkg.html b/guide/install/install_zlmediakit_using_vcpkg.html index 3977ae6..0b64038 100644 --- a/guide/install/install_zlmediakit_using_vcpkg.html +++ b/guide/install/install_zlmediakit_using_vcpkg.html @@ -30,7 +30,7 @@ Installing zlmediakit with vcpkg | ZLMediaKit - + @@ -70,7 +70,7 @@ ./vcpkg/vcpkg remove zlmediakit # Then install the dynamic library version ./vcpkg/vcpkg install zlmediakit\[core,mp4,openssl,webrtc,sctp\]:x64-linux-dynamic -
    install_zlmediakit_using_vcpkg_2
    install_zlmediakit_using_vcpkg_2
    - +
    install_zlmediakit_using_vcpkg_2
    install_zlmediakit_using_vcpkg_2
    + diff --git a/guide/install/start.html b/guide/install/start.html index e390c46..2c6fef3 100644 --- a/guide/install/start.html +++ b/guide/install/start.html @@ -30,7 +30,7 @@ Start | ZLMediaKit - + @@ -92,7 +92,7 @@
  • On macOS:

    ZLMediaKit/release/linux/mac/libmk_api.dylib
     
  • On Windows:

    ZLMediaKit/release/windows/Debug/mk_api.dll
     ZLMediaKit/release/windows/Debug/mk_api.lib
    -
  • The SDK header file has detailed comments, which are generally sufficient for secondary development.

  • Test programs starting with test_

    The related code is in the ZLMediaKit/tests directory, and you can refer to the code to start the test process.

  • 8. Testing

    Please refer to this article to complete the stream push and play test.

    - +

    The SDK header file has detailed comments, which are generally sufficient for secondary development.

  • Test programs starting with test_

    The related code is in the ZLMediaKit/tests directory, and you can refer to the code to start the test process.

  • 8. Testing

    Please refer to this article to complete the stream push and play test.

    + diff --git a/guide/media_server/config_file.html b/guide/media_server/config_file.html index be7b299..8e41646 100644 --- a/guide/media_server/config_file.html +++ b/guide/media_server/config_file.html @@ -30,7 +30,7 @@ Configuration File Explanation | ZLMediaKit - + @@ -419,7 +419,7 @@ maxReqSize=1024 # Telnet server listening port in debug mode port=0 -

    You can also refer to HTTP-HOOK-API Supported by MediaServer for configuration related to hooks.

    - +

    You can also refer to HTTP-HOOK-API Supported by MediaServer for configuration related to hooks.

    + diff --git a/guide/media_server/generate_ssl_self-signed_certificate_and_test.html b/guide/media_server/generate_ssl_self-signed_certificate_and_test.html index 4c673b0..9d98eb4 100644 --- a/guide/media_server/generate_ssl_self-signed_certificate_and_test.html +++ b/guide/media_server/generate_ssl_self-signed_certificate_and_test.html @@ -30,7 +30,7 @@ Generate SSL self-signed certificate and test | ZLMediaKit - + @@ -54,7 +54,7 @@ Getting Private key

    4. Merge Public Key and Private Key

    cat server.crt server.key > ./ssl.pem
     

    5. Load the Certificate

    ./MediaServer -s ./ssl.pem
    -
    图片.png
    图片.png
    - +
    图片.png
    图片.png
    + diff --git a/guide/media_server/how_to_enable_https_related_functions.html b/guide/media_server/how_to_enable_https_related_functions.html index 729190f..733a148 100644 --- a/guide/media_server/how_to_enable_https_related_functions.html +++ b/guide/media_server/how_to_enable_https_related_functions.html @@ -30,7 +30,7 @@ How to Enable HTTPS Related Functions | ZLMediaKit - + @@ -57,7 +57,7 @@ # Add the following line (your machine's IP + a space + your domain name) 127.0.0.1 test.zlmediakit.com # Save and exit vi after making the modification -
    • Open the browser and enter the HTTPS address for testing:
    图片
    图片
    • View the certificate:
    图片
    图片

    VI. Deploying in a Production Environment

    • After completing all the previous steps and passing the verification, you can proceed to deploy the application in a production environment. To do this, you need to bind the certificate domain name to the real public IP address of your cloud host:
    图片
    图片
    图片
    图片
    - +
    • Open the browser and enter the HTTPS address for testing:
    图片
    图片
    • View the certificate:
    图片
    图片

    VI. Deploying in a Production Environment

    • After completing all the previous steps and passing the verification, you can proceed to deploy the application in a production environment. To do this, you need to bind the certificate domain name to the real public IP address of your cloud host:
    图片
    图片
    图片
    图片
    + diff --git a/guide/media_server/index.html b/guide/media_server/index.html index ce55528..c664293 100644 --- a/guide/media_server/index.html +++ b/guide/media_server/index.html @@ -30,11 +30,11 @@ Media Server | ZLMediaKit - + - - + + diff --git a/guide/media_server/on-demand_push_streaming.html b/guide/media_server/on-demand_push_streaming.html index 3e87b8c..81f6462 100644 --- a/guide/media_server/on-demand_push_streaming.html +++ b/guide/media_server/on-demand_push_streaming.html @@ -30,11 +30,11 @@ Implement on-demand push streaming | ZLMediaKit - + - - + + diff --git a/guide/media_server/on-demand_streaming.html b/guide/media_server/on-demand_streaming.html index 222ec41..c958e84 100644 --- a/guide/media_server/on-demand_streaming.html +++ b/guide/media_server/on-demand_streaming.html @@ -30,11 +30,11 @@ Implement on-demand pull streaming | ZLMediaKit - + - - + + diff --git a/guide/media_server/play_url_rules.html b/guide/media_server/play_url_rules.html index bbc8daf..e5adff5 100644 --- a/guide/media_server/play_url_rules.html +++ b/guide/media_server/play_url_rules.html @@ -30,11 +30,11 @@ Playing URL Rules | ZLMediaKit - + -
    Skip to main content

    Playing URL Rules

    ZLMediaKitAbout 3 min

    1. Components of a URL

    Taking rtsp://somedomain.com:554/live/0?token=abcdefg&field=value as an example, this URL is divided into the following parts:

    • Protocol(scheam): RTSP protocol, default port 554
    • Virtual Host(vhost): somedomain.com. This field can be either a domain name or an IP. If it is an IP, the corresponding virtual host is __defaultVhost__
    • Server Port(port): 554. If the port number is not specified, the protocol's default port number is used
    • Application Name(app): live
    • Stream ID(streamid): 0
    • Parameters(args): token=abcdefg&field=value

    2. Stream Media Source in ZLMediaKit

    In ZLMediaKit, a stream media source is a data object that can be used for functions such as live broadcasting and stream forwarding, and is referred to as MediaSource in this project. Currently, it supports five types of stream media sources, namely RtspMediaSource, RtmpMediaSource, HlsMediaSource, TSMediaSource, FMP4MediaSource.

    Identifying a stream media source is mainly based on four elements (referred to as 4-tuples hereafter), which are:

    • Protocol(scheam)
    • Virtual Host(vhost)
    • Application Name(app)
    • Stream ID(streamid)

    RtspMediaSource supports RTSP playback, RTSP streaming, WebRTC playback, and WebRTC streaming.

    RtmpMediaSource supports RTMP streaming/playback, HTTP-FLV playback, and WS-FLV playback.

    HlsMediaSource supports HLS playback.

    TSMediaSource supports HTTP-TS playback and WS-TS playback.

    FMP4MediaSource supports HTTP-FMP4 playback and WS-FMP4 playback.

    3. Playback URLs Corresponding to the Stream Media Source

    Suppose there is a RtspMediaSource, and its 4-tuple are rtsp (RtspMediaSource is always rtsp), somedomain.com, live, and 0 Then the URLs for playing this stream media source correspond to:

    • rtsp://somedomain.com/live/0
    • rtsps://somedomain.com/live/0
    • rtsp://127.0.0.1/live/0?vhost=somedomain.com
    • rtsps://127.0.0.1/live/0?vhost=somedomain.com

    If there is a RtmpMediaSource, and its 4-tuple are rtmp (RtmpMediaSource is always rtmp), somedomain.com, live, and 0 Then the URLs for playing this stream media source correspond to:

    • rtmp://somedomain.com/live/0
    • rtmps://somedomain.com/live/0
    • rtmp://127.0.0.1/live/0?vhost=somedomain.com
    • rtmps://127.0.0.1/live/0?vhost=somedomain.com

    RTMP types of stream media sources also support live streaming through http-flv, websocket, and other protocols. The corresponding URLs are as follows:

    Note: Old code live broadcast suffix is .flv, and it has been changed to .live.flv in the new code

    • http://somedomain.com/live/0.live.flv
    • https://somedomain.com/live/0.live.flv
    • http://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • https://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • ws://somedomain.com/live/0.live.flv
    • wss://somedomain.com/live/0.live.flv
    • ws://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • wss://127.0.0.1/live/0.live.flv?vhost=somedomain.com

    Sure, ZLMediaKit typically converts RTSP and RTMP media streams to each other and also transforms them into HLS/HTTP-TS/WS-TS/HTTP-fMP4/WS-fMP4. The playback URLs are as follows:

    • HLS

      • http://somedomain.com/live/0/hls.m3u8
      • https://somedomain.com/live/0/hls.m3u8
      • http://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
      • https://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
    • HTTP-TS/WS-TS (with the suffix .live.ts, to resolve the conflict with HLS)

      • http://somedomain.com/live/0.live.ts
      • https://somedomain.com/live/0.live.ts
      • http://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • https://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • ws://somedomain.com/live/0.live.ts
      • wss://somedomain.com/live/0.live.ts
      • ws://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • wss://127.0.0.1/live/0.live.ts?vhost=somedomain.com
    • HTTP-fMP4/WS-fMP4 (with the suffix .live.mp4, to resolve the conflict with MP4 on-demand)

      • http://somedomain.com/live/0.live.mp4
      • https://somedomain.com/live/0.live.mp4
      • http://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • https://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • ws://somedomain.com/live/0.live.mp4
      • wss://somedomain.com/live/0.live.mp4
      • ws://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • wss://127.0.0.1/live/0.live.mp4?vhost=somedomain.com

    Generally speaking, all the above URLs are valid in ZLMediaKit, as ZLMediaKit converts media sources by default.

    4. Video-on-Demand URL

    ZLMediaKit typically implements video-on-demand via MP4 files, and we recommend using HTTP MP4 on-demand as it is the simplest method and the server does not need to demultiplex the MP4 files. ZLMediaKit currently also supports RTSP, RTMP, HTTP-FLV, and WebSocket-FLV MP4 on-demand. The corresponding URLs are similar to live broadcast URLs and will not be elaborated here; only the differences are discussed.

    • ZLMediaKit restricts the application name for on-demand to the default record.
    • Suppose an MP4 file is placed in the HTTP root directory record folder (www/record). Its relative path is www/record/0.mp4, then the on-demand URL would be:
      • rtsp://somedomain.com/record/0.mp4
      • rtmp://somedomain.com/record/0.mp4
      • http://somedomain.com/record/0.mp4 (This is a generic HTTP file on-demand; the server does not need to demultiplex the file)
      • http://somedomain.com/record/0.mp4.live.flv (This is HTTP-FLV live streaming, not HTTP on-demand; the server needs to demultiplex the file)
      • ws://somedomain.com/record/0.mp4.live.flv
      • http://somedomain.com/record/0.mp4.live.ts (This is HTTP-TS live streaming, not HTTP on-demand; the server needs to demultiplex the file)
      • ws://somedomain.com/record/0.mp4.live.ts
      • http://somedomain.com/record/0.mp4.live.mp4 (This is HTTP-fMP4 live streaming, not HTTP on-demand; the server needs to demultiplex the file)
      • ws://somedomain.com/record/0.mp4.live.mp4
    • If virtual hosting is enabled, then the on-demand files should be placed in www/somedomain.com/record/0.mp4.

    5. WebRTC Push/Pull

    WebRTC playback is slightly different from the methods mentioned above. The WebRTC protocol itself does not define a signaling interaction protocol, and users need to implement the sdp+icecandidate exchange logic themselves. So, WebRTC does not have a standard player, and you need to use JS or a native SDK to implement playback.

    ZLMediaKit implements the WebRTC SDP+icecandidate exchange method via HTTP POST. The interface name is /index/api/webrtc. This interface uses POST content to pass the offer sdp while passing the media source's four-tuple app stream_id in the URL query parameters. Since HTTP inherently supports vhost, there's no need to specify vhost separately. WebRTC in ZLMediaKit can be considered another representation of the RTSP protocol. Their push and playback use the same data source, which is RtspMediaSource.

    When pushing WebRTC, the HTTP POST interface for exchanging WebRTC SDP+icecandidate is similar to: http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=push

    When playing WebRTC, the HTTP POST interface for exchanging WebRTC SDP+icecandidate is similar to: http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=play.

    ZLMediaKit comes with a WebRTC test player/pusher. After starting ZLMediaKit, you can access it by visiting http://127.0.0.1/webrtc/ in your browser.

    Additionally, ZLMediaKit also supports playing MP4 files via WebRTC. The HTTP POST interface is similar to: http://127.0.0.1/index/api/webrtc?app=record&stream=test.mp4&type=play.

    6. URL Parameters

    ZLMediaKit recognizes the string after the question mark in the URL as parameters, which are consistent with HTTP formats. Among them, vhost is a built-in parameter supported by ZLMediaKit, which allows specifying a virtual host. URL parameters are mainly used for streaming and playback authentication. When triggering the hook API, these parameters will be submitted to the third-party business server.

    - +
    Skip to main content

    Playing URL Rules

    ZLMediaKitAbout 3 min

    1. Components of a URL

    Taking rtsp://somedomain.com:554/live/0?token=abcdefg&field=value as an example, this URL is divided into the following parts:

    • Protocol(scheam): RTSP protocol, default port 554
    • Virtual Host(vhost): somedomain.com. This field can be either a domain name or an IP. If it is an IP, the corresponding virtual host is __defaultVhost__
    • Server Port(port): 554. If the port number is not specified, the protocol's default port number is used
    • Application Name(app): live
    • Stream ID(streamid): 0
    • Parameters(args): token=abcdefg&field=value

    2. Stream Media Source in ZLMediaKit

    In ZLMediaKit, a stream media source is a data object that can be used for functions such as live broadcasting and stream forwarding, and is referred to as MediaSource in this project. Currently, it supports five types of stream media sources, namely RtspMediaSource, RtmpMediaSource, HlsMediaSource, TSMediaSource, FMP4MediaSource.

    Identifying a stream media source is mainly based on four elements (referred to as 4-tuples hereafter), which are:

    • Protocol(scheam)
    • Virtual Host(vhost)
    • Application Name(app)
    • Stream ID(streamid)

    RtspMediaSource supports RTSP playback, RTSP streaming, WebRTC playback, and WebRTC streaming.

    RtmpMediaSource supports RTMP streaming/playback, HTTP-FLV playback, and WS-FLV playback.

    HlsMediaSource supports HLS playback.

    TSMediaSource supports HTTP-TS playback and WS-TS playback.

    FMP4MediaSource supports HTTP-FMP4 playback and WS-FMP4 playback.

    3. Playback URLs Corresponding to the Stream Media Source

    Suppose there is a RtspMediaSource, and its 4-tuple are rtsp (RtspMediaSource is always rtsp), somedomain.com, live, and 0 Then the URLs for playing this stream media source correspond to:

    • rtsp://somedomain.com/live/0
    • rtsps://somedomain.com/live/0
    • rtsp://127.0.0.1/live/0?vhost=somedomain.com
    • rtsps://127.0.0.1/live/0?vhost=somedomain.com

    If there is a RtmpMediaSource, and its 4-tuple are rtmp (RtmpMediaSource is always rtmp), somedomain.com, live, and 0 Then the URLs for playing this stream media source correspond to:

    • rtmp://somedomain.com/live/0
    • rtmps://somedomain.com/live/0
    • rtmp://127.0.0.1/live/0?vhost=somedomain.com
    • rtmps://127.0.0.1/live/0?vhost=somedomain.com

    RTMP types of stream media sources also support live streaming through http-flv, websocket, and other protocols. The corresponding URLs are as follows:

    Note: Old code live broadcast suffix is .flv, and it has been changed to .live.flv in the new code

    • http://somedomain.com/live/0.live.flv
    • https://somedomain.com/live/0.live.flv
    • http://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • https://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • ws://somedomain.com/live/0.live.flv
    • wss://somedomain.com/live/0.live.flv
    • ws://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • wss://127.0.0.1/live/0.live.flv?vhost=somedomain.com

    Sure, ZLMediaKit typically converts RTSP and RTMP media streams to each other and also transforms them into HLS/HTTP-TS/WS-TS/HTTP-fMP4/WS-fMP4. The playback URLs are as follows:

    • HLS

      • http://somedomain.com/live/0/hls.m3u8
      • https://somedomain.com/live/0/hls.m3u8
      • http://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
      • https://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
    • HTTP-TS/WS-TS (with the suffix .live.ts, to resolve the conflict with HLS)

      • http://somedomain.com/live/0.live.ts
      • https://somedomain.com/live/0.live.ts
      • http://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • https://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • ws://somedomain.com/live/0.live.ts
      • wss://somedomain.com/live/0.live.ts
      • ws://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • wss://127.0.0.1/live/0.live.ts?vhost=somedomain.com
    • HTTP-fMP4/WS-fMP4 (with the suffix .live.mp4, to resolve the conflict with MP4 on-demand)

      • http://somedomain.com/live/0.live.mp4
      • https://somedomain.com/live/0.live.mp4
      • http://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • https://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • ws://somedomain.com/live/0.live.mp4
      • wss://somedomain.com/live/0.live.mp4
      • ws://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • wss://127.0.0.1/live/0.live.mp4?vhost=somedomain.com

    Generally speaking, all the above URLs are valid in ZLMediaKit, as ZLMediaKit converts media sources by default.

    4. Video-on-Demand URL

    ZLMediaKit typically implements video-on-demand via MP4 files, and we recommend using HTTP MP4 on-demand as it is the simplest method and the server does not need to demultiplex the MP4 files. ZLMediaKit currently also supports RTSP, RTMP, HTTP-FLV, and WebSocket-FLV MP4 on-demand. The corresponding URLs are similar to live broadcast URLs and will not be elaborated here; only the differences are discussed.

    • ZLMediaKit restricts the application name for on-demand to the default record.
    • Suppose an MP4 file is placed in the HTTP root directory record folder (www/record). Its relative path is www/record/0.mp4, then the on-demand URL would be:
      • rtsp://somedomain.com/record/0.mp4
      • rtmp://somedomain.com/record/0.mp4
      • http://somedomain.com/record/0.mp4 (This is a generic HTTP file on-demand; the server does not need to demultiplex the file)
      • http://somedomain.com/record/0.mp4.live.flv (This is HTTP-FLV live streaming, not HTTP on-demand; the server needs to demultiplex the file)
      • ws://somedomain.com/record/0.mp4.live.flv
      • http://somedomain.com/record/0.mp4.live.ts (This is HTTP-TS live streaming, not HTTP on-demand; the server needs to demultiplex the file)
      • ws://somedomain.com/record/0.mp4.live.ts
      • http://somedomain.com/record/0.mp4.live.mp4 (This is HTTP-fMP4 live streaming, not HTTP on-demand; the server needs to demultiplex the file)
      • ws://somedomain.com/record/0.mp4.live.mp4
    • If virtual hosting is enabled, then the on-demand files should be placed in www/somedomain.com/record/0.mp4.

    5. WebRTC Push/Pull

    WebRTC playback is slightly different from the methods mentioned above. The WebRTC protocol itself does not define a signaling interaction protocol, and users need to implement the sdp+icecandidate exchange logic themselves. So, WebRTC does not have a standard player, and you need to use JS or a native SDK to implement playback.

    ZLMediaKit implements the WebRTC SDP+icecandidate exchange method via HTTP POST. The interface name is /index/api/webrtc. This interface uses POST content to pass the offer sdp while passing the media source's four-tuple app stream_id in the URL query parameters. Since HTTP inherently supports vhost, there's no need to specify vhost separately. WebRTC in ZLMediaKit can be considered another representation of the RTSP protocol. Their push and playback use the same data source, which is RtspMediaSource.

    When pushing WebRTC, the HTTP POST interface for exchanging WebRTC SDP+icecandidate is similar to: http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=push

    When playing WebRTC, the HTTP POST interface for exchanging WebRTC SDP+icecandidate is similar to: http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=play.

    ZLMediaKit comes with a WebRTC test player/pusher. After starting ZLMediaKit, you can access it by visiting http://127.0.0.1/webrtc/ in your browser.

    Additionally, ZLMediaKit also supports playing MP4 files via WebRTC. The HTTP POST interface is similar to: http://127.0.0.1/index/api/webrtc?app=record&stream=test.mp4&type=play.

    6. URL Parameters

    ZLMediaKit recognizes the string after the question mark in the URL as parameters, which are consistent with HTTP formats. Among them, vhost is a built-in parameter supported by ZLMediaKit, which allows specifying a virtual host. URL parameters are mainly used for streaming and playback authentication. When triggering the hook API, these parameters will be submitted to the third-party business server.

    + diff --git a/guide/media_server/playback_authentication.html b/guide/media_server/playback_authentication.html index 396fb07..bcea0f7 100644 --- a/guide/media_server/playback_authentication.html +++ b/guide/media_server/playback_authentication.html @@ -30,11 +30,11 @@ Implementing Playback Authentication | ZLMediaKit - + - - + + diff --git a/guide/media_server/push_authentication.html b/guide/media_server/push_authentication.html index 9e18352..69d6844 100644 --- a/guide/media_server/push_authentication.html +++ b/guide/media_server/push_authentication.html @@ -30,11 +30,11 @@ Implementing Push Streaming Authentication | ZLMediaKit - + - - + + diff --git a/guide/media_server/push_test.html b/guide/media_server/push_test.html index 20e1f7d..84b07d6 100644 --- a/guide/media_server/push_test.html +++ b/guide/media_server/push_test.html @@ -30,7 +30,7 @@ Push and Playback Testing | ZLMediaKit - + @@ -48,7 +48,7 @@

    Log Observation

    If the push is successful, the following log will be printed:

    image
    image

    The relevant strings in the log represent:

    2020-04-10 12:51:52.331 I | regist rtsp __defaultVhost__ rtp 206442D7
                                         ^           ^         ^      ^
                                       schema      vhost      app stream_id
    -

    Playback URL

    Please refer to the play URL rules to play the aforementioned push stream.

    - +

    Playback URL

    Please refer to the play URL rules to play the aforementioned push stream.

    + diff --git a/guide/media_server/restful_api.html b/guide/media_server/restful_api.html index 84a6413..87601df 100644 --- a/guide/media_server/restful_api.html +++ b/guide/media_server/restful_api.html @@ -30,7 +30,7 @@ RESTful API | ZLMediaKit - + @@ -519,7 +519,7 @@ } ] } -
    - +
    + diff --git a/guide/media_server/sequence_diagram.html b/guide/media_server/sequence_diagram.html index 01bdaf3..7a5114b 100644 --- a/guide/media_server/sequence_diagram.html +++ b/guide/media_server/sequence_diagram.html @@ -30,11 +30,11 @@ Sequence diagram | ZLMediaKit - + - - + + diff --git a/guide/media_server/start_server.html b/guide/media_server/start_server.html index 6ea74da..2ceaf7c 100644 --- a/guide/media_server/start_server.html +++ b/guide/media_server/start_server.html @@ -30,7 +30,7 @@ Starting and Stopping the Server | ZLMediaKit - + @@ -42,7 +42,7 @@ -c --config argument default:/Users/xzl/git/ZLMediaKit/release/mac/Debug/config.ini optional configuration file path -s --ssl argument default:/Users/xzl/git/ZLMediaKit/release/mac/Debug/ssl.p12 optional path of the SSL certificate file or directory, supports p12/pem types -t --threads argument default:8 optional number of threads to launch for event triggering -
    • Explanation:

      • -d(--daemon): Whether to start as a daemon. The daemon does only one thing: monitor whether the child process (the actual working process) has exited, and attempts to restart the child process if it has exited.
      • -l(--level): Specifies the log print level, with values ranging from 0 to 4. The higher the level, the fewer logs are printed.
      • -m(--max_day): The number of days the log files are kept. Logs created during the current run of the program will be deleted if they exceed this number of days.
      • -c(--config): Specifies the configuration file path. The configuration file is in ini format, please refer to the default configuration file of ZLMediaKit.
      • -s(--ssl): Specifies the SSL certificate path. The certificate format supports p12 and pem types, which must include both public and private keys, and the private key must not be password encrypted. If a directory is specified, all certificates under the directory will be loaded.
      • -t(--threads): Specifies the number of event-driven threads (performing major tasks) and background working threads (performing blocking tasks).
    • Startup command:

    Image
    Image
    • Notes:
        1. If you need to close the shell after starting MediaServer, you need to enter exit to exit the shell, otherwise closing the shell will also close the MediaServer.
        1. If you are going to use FFmpeg related functions, you should start the program like this: nohup ./MediaServer -d &. Otherwise, the fork FFmpeg process may cause the MediaServer process to hang.

    Hot Loading of Configuration Files

    After modifying and saving the configuration file, enter killall -1 MediaServer in the shell to make ZLMediaKit hot load the configuration file. If successful, it will print the following style of logs:

    Image
    Image

    Stopping the Server

    • If you started the server in the background, please enter killall -2 MediaServer in the shell to gracefully shut down the server (the program will automatically release resources and exit after receiving the SIGINT signal).
    • Otherwise, you can press Ctr + C to exit the program.
    • The logs when MediaServer exits are as follows:
    Image
    Image
    - +
    • Explanation:

      • -d(--daemon): Whether to start as a daemon. The daemon does only one thing: monitor whether the child process (the actual working process) has exited, and attempts to restart the child process if it has exited.
      • -l(--level): Specifies the log print level, with values ranging from 0 to 4. The higher the level, the fewer logs are printed.
      • -m(--max_day): The number of days the log files are kept. Logs created during the current run of the program will be deleted if they exceed this number of days.
      • -c(--config): Specifies the configuration file path. The configuration file is in ini format, please refer to the default configuration file of ZLMediaKit.
      • -s(--ssl): Specifies the SSL certificate path. The certificate format supports p12 and pem types, which must include both public and private keys, and the private key must not be password encrypted. If a directory is specified, all certificates under the directory will be loaded.
      • -t(--threads): Specifies the number of event-driven threads (performing major tasks) and background working threads (performing blocking tasks).
    • Startup command:

    Image
    Image
    • Notes:
        1. If you need to close the shell after starting MediaServer, you need to enter exit to exit the shell, otherwise closing the shell will also close the MediaServer.
        1. If you are going to use FFmpeg related functions, you should start the program like this: nohup ./MediaServer -d &. Otherwise, the fork FFmpeg process may cause the MediaServer process to hang.

    Hot Loading of Configuration Files

    After modifying and saving the configuration file, enter killall -1 MediaServer in the shell to make ZLMediaKit hot load the configuration file. If successful, it will print the following style of logs:

    Image
    Image

    Stopping the Server

    • If you started the server in the background, please enter killall -2 MediaServer in the shell to gracefully shut down the server (the program will automatically release resources and exit after receiving the SIGINT signal).
    • Otherwise, you can press Ctr + C to exit the program.
    • The logs when MediaServer exits are as follows:
    Image
    Image
    + diff --git a/guide/media_server/web_hook_api.html b/guide/media_server/web_hook_api.html index 622897e..064bcab 100644 --- a/guide/media_server/web_hook_api.html +++ b/guide/media_server/web_hook_api.html @@ -28,9 +28,9 @@ document.documentElement.setAttribute("data-theme", "dark"); } - Web Hook | ZLMediaKit + Web Hook | ZLMediaKit - + @@ -498,7 +498,7 @@ { "code" : 0, - "msg" : "success + "msg" : "success" }

    15、on_server_started

    • Explanation:

      Server startup event, can be used to monitor server crashes and restarts. This event is not sensitive to replies.

    • Trigger request:

      POST /index/hook/on_server_started HTTP/1.1
       Accept: */*
      @@ -595,7 +595,7 @@
       
       {
          "code" : 0,
      -   "msg" : "success
      +   "msg" : "success"
       }
       

    16、on_server_keepalive

    • Explanation:

      The server periodically reports time, which can be configured. The default interval is 10 seconds.

    • Trigger request:

      POST /index/hook/on_server_keepalive HTTP/1.1
       Accept: */*
      @@ -646,7 +646,7 @@
          "tcp_mode" : 0,
          "mediaServerId" : "192.168.255.10"
       }
      -
    • Request parameters:

      Parameter NameParameter TypeParameter Explanation
      local_portintParameter input for openRtpServer
      re_use_portboolParameter input for openRtpServer
      ssrcuint32Parameter input for openRtpServer
      stream_idstringParameter input for openRtpServer
      tcp_modeintParameter input for openRtpServer
      mediaServerIdstringServer ID, set through the configuration file
    - +
  • Request parameters:

    Parameter NameParameter TypeParameter Explanation
    local_portintParameter input for openRtpServer
    re_use_portboolParameter input for openRtpServer
    ssrcuint32Parameter input for openRtpServer
    stream_idstringParameter input for openRtpServer
    tcp_modeintParameter input for openRtpServer
    mediaServerIdstringServer ID, set through the configuration file
  • + diff --git a/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html b/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html index a39af8f..69c5829 100644 --- a/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html +++ b/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html @@ -30,7 +30,7 @@ GB28181 SIP信令抓包 | ZLMediaKit - + @@ -171,7 +171,7 @@ CSeq: 20 MESSAGE User-Agent: Hikvision Content-Length: 0 -
    - +
    + diff --git a/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html b/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html index 88caaab..5769d98 100644 --- a/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html +++ b/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html @@ -30,11 +30,11 @@ GB28181怎么用设备ID作为流ID | ZLMediaKit - + -
    Skip to main content

    GB28181怎么用设备ID作为流ID

    ZLMediaKitAbout 1 min

    为了支持 RTP 流的识别(与摄像头 ID 产生关联), 必须通过 源地址ssrc本地端口号 来区分.

    但是在 issue #338 里面有开发者反馈,有些设备不支持设置 ssrc,ssrc 一直为 0.

    而源地址端口也会一直变,RTP 推流前 SIP 服务器也不知道摄像头推流端口(甚至 IP 都不知道) 那么区分流只通过源地址也不现实, 因为一个局域网内也可能多个设备, 如果 ZLMediaKit 在公网,那么这些流的 IP 是一致的,而端口是随机的,根本没法跟摄像头 ID 对应起来.

    所以为了实现 RTP 推流参数的流 ID 与摄像头 ID 产生关联,就基本只剩下本地端口号这条路了,这就意味着一个端口只能接受一个流。

    在不指定流 ID 时,ZLMediaKit 的行为跟之前完全一样,单端口支持多流,ssrc 作为 stream id。

    如果指定了该端口绑定的流 ID,那么该端口只能接收一路流。

    以下是关键代码:

    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    - +
    Skip to main content

    GB28181怎么用设备ID作为流ID

    ZLMediaKitAbout 1 min

    为了支持 RTP 流的识别(与摄像头 ID 产生关联), 必须通过 源地址ssrc本地端口号 来区分.

    但是在 issue #338 里面有开发者反馈,有些设备不支持设置 ssrc,ssrc 一直为 0.

    而源地址端口也会一直变,RTP 推流前 SIP 服务器也不知道摄像头推流端口(甚至 IP 都不知道) 那么区分流只通过源地址也不现实, 因为一个局域网内也可能多个设备, 如果 ZLMediaKit 在公网,那么这些流的 IP 是一致的,而端口是随机的,根本没法跟摄像头 ID 对应起来.

    所以为了实现 RTP 推流参数的流 ID 与摄像头 ID 产生关联,就基本只剩下本地端口号这条路了,这就意味着一个端口只能接受一个流。

    在不指定流 ID 时,ZLMediaKit 的行为跟之前完全一样,单端口支持多流,ssrc 作为 stream id。

    如果指定了该端口绑定的流 ID,那么该端口只能接收一路流。

    以下是关键代码:

    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    + diff --git a/guide/protocol/gb28181/index.html b/guide/protocol/gb28181/index.html index 87dab5a..52661a6 100644 --- a/guide/protocol/gb28181/index.html +++ b/guide/protocol/gb28181/index.html @@ -30,11 +30,11 @@ Gb28181 | ZLMediaKit - + - - + + diff --git a/guide/protocol/gb28181/push_streaming.html b/guide/protocol/gb28181/push_streaming.html index 83fc2f3..aeeaee7 100644 --- a/guide/protocol/gb28181/push_streaming.html +++ b/guide/protocol/gb28181/push_streaming.html @@ -30,13 +30,13 @@ GB28181推流 | ZLMediaKit - +
    Skip to main content

    GB28181推流

    ZLMediaKitAbout 3 min

    介绍

    ZLMediaKit 支持 GB28181 的 ps-rtp 推流,支持的编码格式分别为 h264/h265/aac/g711/opus。 在收到 GB28181 推流后,ZLMediaKit 会依次做以下事情:

    • rtp 排序去重。
    • rtp 解析成 ps 或 ts。
    • ps 或 ts 解析成h264/h265/aac/g711/opus
    • 输入到复用器,生成 rtsp/rtmp/ts/fmp4 等格式,以便转换成其他协议或容器。

    简单使用

    ZLMediaKit 默认开启 10000 端口用于接收 UDP/TCP 的 GB28181 推流,由于国标推流不好测试,ZLMediaKit 同时也支持 rtp_mpegts 推流,代码会自适应判断是否为 ps 还是 ts。 所以如果大家没有摄像头的情况下,可以用 FFmpeg 简单测试,基本上体验跟国标推流并无二致。

    • ffmpeg 推流命令:

       ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
       
    • MediaServer 收到推流后的日志:

      图片
      图片

      上图中,这个推流的 rtp ssrc 为 BFC2C622(16 进制打印),这个流的 app 为rtp, stream_id 为BFC2C622,您可以根据wiki来组合成 url 并播放这个流。

    需要指出的是,国标推流的 app 固定为 rtp,你只能通过代码来修改它,stream_id 为 rtp 流的 ssrc,这个是随机的,在 FFmpeg 中貌似没法控制。

    另外,每次推流时,请更换 ssrc,否则 ZLMediaKit 发现推流端 ip 和端口变化后,会直接丢弃 rtp 包(现象如此issueopen in new window);这样做的目的是为了防止两个设备使用同一个 ssrc 推流时互相干扰。

    高阶使用

    在推流给 10000 端口时,您可能发现有个缺陷,就是 stream_id 是 ssrc,比较抽象,可能还没法控制。

    那么我们能否自定义 stream_id? 答案是肯定的,ZLMediaKit 通过restful api可以动态开启国标收流端口(同时支持 udp/tcp 模式)。

    在使用 openRtpServer 接口动态开启国标收流端口后,这个端口只能产生一个流,也就是说,一个摄像头需要一个服务器端口用于接收国标推流。

    • 以下是演示范例(postman 工具调用 openRtpServer 接口创建随机端口):
    图片
    图片
    • 然后启动 FFmpeg 推流
     ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:50077
    -
    • 以下是推流后注册的服务器日志

      图片
      图片
    • 需要指出的是,如果 openRtpServer 接口创建的端口一直没收到流(或者解析不出流),那么会自动关闭和释放。

    调试文件生成

    如果你的 MediaServer 能收到国标推流,但是未出现媒体注册相关日志,那么有可能是流有些异常,你可以修改配置文件rtp_proxy.dumpDir指定调试文件导出目录, 这样 ZLMediaKit 会把国标流导出到该文件夹,就像这样:

    图片
    图片

    你可以直接用 ffplay 播放mp2/video后缀的文件rtp后缀的文件,你可以用测试工具test_rtp调试,或者你可以把它分享给其他人帮你分析原因。

    让 ZLMediaKit 往其他国标服务器推流

    你可以使用restful api让 ZLMediaKit 生成国标流并往其他服务器推送,支持其他任何已注册的流转国标流。

    • postman 调用 startSendRtp 接口推送国标流:
    图片
    图片
    图片
    图片
    • 上图中是推送国标流给自己,当然你也可以推送给其他服务器,支持 udp/tcp 方式推流。

    性能

    GB28181 的推流性能测试,请参考:#961open in new window

    丢包问题调试

    如果在测试 GB28181 UDP 推流时,频繁打印以下日志:

    图片
    图片

    请查看此issueopen in new window,特别提示,wifi 情况下,由于无线网络干扰严重,丢包问题很可能确实是网络质量差导致的。

    相关文章推荐阅读

    - +
    • 以下是推流后注册的服务器日志

      图片
      图片
    • 需要指出的是,如果 openRtpServer 接口创建的端口一直没收到流(或者解析不出流),那么会自动关闭和释放。

    调试文件生成

    如果你的 MediaServer 能收到国标推流,但是未出现媒体注册相关日志,那么有可能是流有些异常,你可以修改配置文件rtp_proxy.dumpDir指定调试文件导出目录, 这样 ZLMediaKit 会把国标流导出到该文件夹,就像这样:

    图片
    图片

    你可以直接用 ffplay 播放mp2/video后缀的文件rtp后缀的文件,你可以用测试工具test_rtp调试,或者你可以把它分享给其他人帮你分析原因。

    让 ZLMediaKit 往其他国标服务器推流

    你可以使用restful api让 ZLMediaKit 生成国标流并往其他服务器推送,支持其他任何已注册的流转国标流。

    • postman 调用 startSendRtp 接口推送国标流:
    图片
    图片
    图片
    图片
    • 上图中是推送国标流给自己,当然你也可以推送给其他服务器,支持 udp/tcp 方式推流。

    性能

    GB28181 的推流性能测试,请参考:#961open in new window

    丢包问题调试

    如果在测试 GB28181 UDP 推流时,频繁打印以下日志:

    图片
    图片

    请查看此issueopen in new window,特别提示,wifi 情况下,由于无线网络干扰严重,丢包问题很可能确实是网络质量差导致的。

    相关文章推荐阅读

    + diff --git a/guide/protocol/index.html b/guide/protocol/index.html index 140ec84..d7a3405 100644 --- a/guide/protocol/index.html +++ b/guide/protocol/index.html @@ -30,11 +30,11 @@ Protocol | ZLMediaKit - + - - + + diff --git a/guide/protocol/srt/index.html b/guide/protocol/srt/index.html index e21654e..5507441 100644 --- a/guide/protocol/srt/index.html +++ b/guide/protocol/srt/index.html @@ -30,11 +30,11 @@ SRT | ZLMediaKit - + -
    Skip to main content

    SRT

    ZLMediaKitLess than 1 minute

    feature

    • NACK support
    • listener support
    • push stream payload must ts
    • pull stream payload is ts
    • protocol implement referenceopen in new window
    • version support (>=1.3.0)
    • fec and encrypted not support

    usage

    zlm get vhost,app,streamid and push or play by streamid of srt like this #!::key1=value1,key2=value2,key3=value4......

    h and r is special key,to get vhost app streamid, if h not exist ,vhost is default value

    m is special key, to judge is push or pull, if value is publish the mode is push,otherwise is play, if m not exist, mode is play

    other key and m ,can use by webhook to auth for play or push

    like: #!::h=zlmediakit.com,r=live/test,m=publish

    vhost = zlmediakit.com

    app = live

    streamid = test

    mode is push

    • OBS push stream url

      srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish

    • ffmpeg push

      ffmpeg -re -stream_loop -1 -i test.ts -c:v copy -c:a copy -f mpegts srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish

    • ffplay pull

      ffplay -i srt://192.168.1.105:9000?streamid=#!::r=live/test

    • vlc not support ,because can't set stream id referenceopen in new window

    - +
    Skip to main content

    SRT

    ZLMediaKitLess than 1 minute

    feature

    • NACK support
    • listener support
    • push stream payload must ts
    • pull stream payload is ts
    • protocol implement referenceopen in new window
    • version support (>=1.3.0)
    • fec and encrypted not support

    usage

    zlm get vhost,app,streamid and push or play by streamid of srt like this #!::key1=value1,key2=value2,key3=value4......

    h and r is special key,to get vhost app streamid, if h not exist ,vhost is default value

    m is special key, to judge is push or pull, if value is publish the mode is push,otherwise is play, if m not exist, mode is play

    other key and m ,can use by webhook to auth for play or push

    like: #!::h=zlmediakit.com,r=live/test,m=publish

    vhost = zlmediakit.com

    app = live

    streamid = test

    mode is push

    • OBS push stream url

      srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish

    • ffmpeg push

      ffmpeg -re -stream_loop -1 -i test.ts -c:v copy -c:a copy -f mpegts srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish

    • ffplay pull

      ffplay -i srt://192.168.1.105:9000?streamid=#!::r=live/test

    • vlc not support ,because can't set stream id referenceopen in new window

    + diff --git a/guide/protocol/webrtc/index.html b/guide/protocol/webrtc/index.html index d8d49fe..6670edb 100644 --- a/guide/protocol/webrtc/index.html +++ b/guide/protocol/webrtc/index.html @@ -30,11 +30,11 @@ Webrtc | ZLMediaKit - + - - + + diff --git a/guide/protocol/webrtc/webrtc_compilation_and_use.html b/guide/protocol/webrtc/webrtc_compilation_and_use.html index ee67bf2..4a7310f 100644 --- a/guide/protocol/webrtc/webrtc_compilation_and_use.html +++ b/guide/protocol/webrtc/webrtc_compilation_and_use.html @@ -30,7 +30,7 @@ Compiling and Using WebRTC | ZLMediaKit - + @@ -92,7 +92,7 @@ rembBitRate=1000000

    Testing

    The latest zlmediakit source code comes with a valid SSL certificate default.pem, corresponding to the domain name default.zlmediakit.com, which resolves to the IP address 127.0.0.1. To start testing, open https://default.zlmediakit.com/webrtc/open in new window in your browser. Please start streaming first before testing playback. If WebRTC playback is not working, please refer to this issueopen in new window.

    Troubleshooting

    Q&A(Playback Issues) ?

    • OBS streaming and RTC playback stuttering?

      WebRTC H.264 does not support B-frames, so B-frames need to be removed when using FFmpeg. You can add the -bf 0 parameter or specify the H.264 profile as baseline.

    • RTSP streaming, unsuccessful RTC playback?

      Set directProxy in the zlm configuration file to 0 for RTSP streaming.

    • WebRTC video or audio not playing?

      WebRTC in the web client supports encoding formats such as H.264, opus/48000/2, pcma/8000, pcmu/8000. Check if the encoding format is correct. Usually, the audio is not supported, and you need to use the transcode branch for transcoding (video does not require transcoding).

    - +
  • Compilation on Ubuntu You can refer to this blog postopen in new window written by a skilled user.

  • Compilation on Windows

    You can refer to this blog postopen in new window written by a skilled user.

    Also, refer to this commentopen in new window.

  • Q&A(Playback Issues) ?

    • OBS streaming and RTC playback stuttering?

      WebRTC H.264 does not support B-frames, so B-frames need to be removed when using FFmpeg. You can add the -bf 0 parameter or specify the H.264 profile as baseline.

    • RTSP streaming, unsuccessful RTC playback?

      Set directProxy in the zlm configuration file to 0 for RTSP streaming.

    • WebRTC video or audio not playing?

      WebRTC in the web client supports encoding formats such as H.264, opus/48000/2, pcma/8000, pcmu/8000. Check if the encoding format is correct. Usually, the audio is not supported, and you need to use the transcode branch for transcoding (video does not require transcoding).

    + diff --git a/guide/protocol/webrtc/webrtc_signaling_interaction_format.html b/guide/protocol/webrtc/webrtc_signaling_interaction_format.html index 7941e83..870700c 100644 --- a/guide/protocol/webrtc/webrtc_signaling_interaction_format.html +++ b/guide/protocol/webrtc/webrtc_signaling_interaction_format.html @@ -30,7 +30,7 @@ WebRTC Signaling Interaction Format | ZLMediaKit - + @@ -155,7 +155,7 @@ "type" : "answer" } -
    - +
    + diff --git a/guide/sdk/how_to_create_a_live_steam.html b/guide/sdk/how_to_create_a_live_steam.html index 9dd67df..db6ef4b 100644 --- a/guide/sdk/how_to_create_a_live_steam.html +++ b/guide/sdk/how_to_create_a_live_steam.html @@ -30,11 +30,11 @@ How to create a live stream | ZLMediaKit - + -
    Skip to main content

    How to create a live stream

    ZLMediaKitLess than 1 minute

    How to create a live steam
    How to create a live steam
    - +
    Skip to main content

    How to create a live stream

    ZLMediaKitLess than 1 minute

    How to create a live steam
    How to create a live steam
    + diff --git a/guide/sdk/index.html b/guide/sdk/index.html index e2ae3dc..b8a7689 100644 --- a/guide/sdk/index.html +++ b/guide/sdk/index.html @@ -30,11 +30,11 @@ SDK API | ZLMediaKit - + - - + + diff --git a/index.html b/index.html index 510bb46..0731d62 100644 --- a/index.html +++ b/index.html @@ -30,11 +30,11 @@ Home | ZLMediaKit - +
    Skip to main content
    ZLMediaKit

    ZLMediaKit

    An high-performance, enterprise-level streaming media service framework based on C++11.

    How to Use 💡Docs

    Features

    Features

    Cross-platform streaming media solution for mobile and embedded systems.

    Versatile Protocol Support

    Developed with C++11, avoiding the use of raw pointers, providing stable and reliable code with superior performance

    Supports multiple protocols

    Supports multiple protocols(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC), and protocol conversion

    High Concurrency and Performance

    Developed with multiplexing/multithreading/asynchronous network IO models, providing excellent concurrency performance and supporting massive client connections.

    Proven Stability and Production Usage

    The code has undergone extensive stability and performance testing, and has been extensively used in production environments.

    Cross-Platform Compatibility

    Supports all major platforms, including linux, macos, ios, android, and windows.

    Multiple Instruction Set Platforms

    Supports multiple instruction set platforms, such as x86, arm, risc-v, mips, Loongson, and Shenwei.

    Ultra-Fast Startup and Low Latency

    Provides ultra-fast startup, extremely low latency (within 500 milliseconds, and can be as low as 100 milliseconds), and excellent user experience.

    C API for Integration

    Provides a comprehensive standard C API that can be used as an SDK or called by other languages.

    Complete MediaServer Solution

    Provides a complete MediaServer server, which can be deployed directly as a commercial server without additional development.

    RESTful API and Web Hook

    Provides a complete restful api and web hook, supporting rich business logic.

    Bridging Video Surveillance

    Bridges the video surveillance protocol stack and the live streaming protocol stack, and provides comprehensive support for RTSP/RTMP.

    Full Support for Codecs

    Fully supports H265/H264/AAC/G711/OPUS.

    Advanced Functionality

    Provides complete functions, including clustering, on-demand protocol conversion, on-demand push/pull streams, playback before publishing, and continuous publishing after disconnection.

    Ultimate Performance and Scalability

    Provides ultimate performance, supporting 10W-level players on a single machine and 100Gb/s-level IO bandwidth capability.

    Exclusive Features

    Fully supports IPv6 networks and provides ultimate user experience with exclusive features.

    - + diff --git a/more/collaborative_projects.html b/more/collaborative_projects.html index 8998e7e..7636672 100644 --- a/more/collaborative_projects.html +++ b/more/collaborative_projects.html @@ -30,11 +30,11 @@ Collaborative Projects | ZLMediaKit - + -
    Skip to main content

    Collaborative Projects

    ZLMediaKitLess than 1 minute

    - +
    Skip to main content

    Collaborative Projects

    ZLMediaKitLess than 1 minute

    + diff --git a/more/contact.html b/more/contact.html index 052ee5c..980e027 100644 --- a/more/contact.html +++ b/more/contact.html @@ -30,11 +30,11 @@ Contact US | ZLMediaKit - + -
    Skip to main content

    Contact US

    ZLMediaKitLess than 1 minute

    Contact Information

    • Email: 1213642868@qq.com (For project-related or streaming media-related questions, please follow the issue process. Otherwise, we will not reply to emails.)

    • QQ groups: Both QQ groups with a total of 4000 members are full. We will not create new QQ groups in the future. Users can join the Knowledge Planetopen in new window to ask questions and support this project.

    • Follow WeChat Official Account:

      图片
      图片
    - +
    Skip to main content

    Contact US

    ZLMediaKitLess than 1 minute

    Contact Information

    • Email: 1213642868@qq.com (For project-related or streaming media-related questions, please follow the issue process. Otherwise, we will not reply to emails.)

    • QQ groups: Both QQ groups with a total of 4000 members are full. We will not create new QQ groups in the future. Users can join the Knowledge Planetopen in new window to ask questions and support this project.

    • Follow WeChat Official Account:

      图片
      图片
    + diff --git a/more/index.html b/more/index.html index d5d38f9..ac149a9 100644 --- a/more/index.html +++ b/more/index.html @@ -30,11 +30,11 @@ More | ZLMediaKit - + - - + + diff --git a/more/license.html b/more/license.html index e9c797d..1d984e5 100644 --- a/more/license.html +++ b/more/license.html @@ -30,11 +30,11 @@ License | ZLMediaKit - + -
    Skip to main content

    License

    ZLMediaKitLess than 1 minute

    The self-owned code of this project is licensed under the permissive MIT License and can be freely applied to commercial and non-commercial projects while retaining copyright information. However, this project also uses some scattered open source code , please replace or remove it for commercial use. Any commercial disputes or infringement caused by using this project have nothing to do with the project and developers and shall be at your own legal risk. When using the code of this project, the license agreement should also indicate the license of the third-party libraries that this project depends on.

    - +
    Skip to main content

    License

    ZLMediaKitLess than 1 minute

    The self-owned code of this project is licensed under the permissive MIT License and can be freely applied to commercial and non-commercial projects while retaining copyright information. However, this project also uses some scattered open source code , please replace or remove it for commercial use. Any commercial disputes or infringement caused by using this project have nothing to do with the project and developers and shall be at your own legal risk. When using the code of this project, the license agreement should also indicate the license of the third-party libraries that this project depends on.

    + diff --git a/more/thanks.html b/more/thanks.html index 080dc98..6fc6216 100644 --- a/more/thanks.html +++ b/more/thanks.html @@ -30,11 +30,11 @@ Acknowledgments | ZLMediaKit - + -
    Skip to main content

    Acknowledgments

    ZLMediaKitAbout 2 min

    Special Thanks

    This project uses the media-serveropen in new window library developed by Lao Chenopen in new window. The reuse and de-multiplexing of ts/fmp4/mp4/ps container formats in this project depend on the media-server library. Lao Chen has provided invaluable help and support multiple times in implementing many functions of this project, and we would like to express our sincere gratitude to him!

    Acknowledgments

    Thanks to all those who have supported this project in various ways, including but not limited to code contributions, problem feedback, and donations. The following list is not in any particular order:

    老陈open in new windowGemfieldopen in new window南冠彤open in new window凹凸慢open in new windowchenxiaoleiopen in new window史前小虫open in new window清涩绿茶open in new window3503207480open in new windowDroidChowopen in new window阿塞open in new window火宣open in new windowγ 瑞 γ ミopen in new windowlinkingvisionopen in new window茄子open in new window好心情浮沉open in new windowXiaofeng Wangopen in new windowdoodoocoderopen in new windowqingciopen in new windowswwheiheiopen in new windowKKKKK5Gopen in new windowZhou WeiminJim Jinopen in new window西瓜丶MingZhuLiuopen in new windowchengxiaoshengopen in new windowbig pandatanningzhongopen in new windowhctym1995open in new windowhewenyuanopen in new windowsunhuimirsKevin ChengLiu Jiangalongopen in new windowqingcilyg1949zhlong大裤衩droid.chow陈晓林open in new windowCharleyWangHZopen in new windowJohnnyopen in new windowDoubleX69open in new windowlawrencehjopen in new windowyangkunXinghua Zhaohejilinopen in new windowrqb500open in new windowAlexopen in new windowDw9open in new window明月惊鹊cgmhejilinalexliyu7352cgmhaorui wangopen in new windowjoshuafcJayChen0519open in new windowzxwangckerWuPengstarryopen in new windowmtdxcopen in new window胡刚风open in new windowzhao85open in new windowdreamisdreamopen in new windowdingcanopen in new windowHaibo Chenopen in new windowLeonopen in new windowcustompalopen in new windowPioLingopen in new windowKevinZangopen in new windowgongluckopen in new windowa-ucontrolopen in new windowTalusLopen in new windowahaooahazopen in new windowTempoTianopen in new windowDerek Liuopen in new windowljx0305open in new window朱如洪 open in new windowlijinopen in new windowPioLingopen in new windowBackT0TheFutureopen in new windowperaraopen in new windowcodeRATnyopen in new windowdengjfzhopen in new window百鸣open in new windowfruit Juiceopen in new windowtbagoopen in new windowLuoshopen in new windowlinxiaoyan87open in new windowwakenopen in new windowDeepslientopen in new window

    Also thank to JetBrains for their support for open source project, we developed and debugged zlmediakit with CLion:

    JetBrainsopen in new window
    JetBrains
    - +
    Skip to main content

    Acknowledgments

    ZLMediaKitAbout 2 min

    Special Thanks

    This project uses the media-serveropen in new window library developed by Lao Chenopen in new window. The reuse and de-multiplexing of ts/fmp4/mp4/ps container formats in this project depend on the media-server library. Lao Chen has provided invaluable help and support multiple times in implementing many functions of this project, and we would like to express our sincere gratitude to him!

    Acknowledgments

    Thanks to all those who have supported this project in various ways, including but not limited to code contributions, problem feedback, and donations. The following list is not in any particular order:

    老陈open in new windowGemfieldopen in new window南冠彤open in new window凹凸慢open in new windowchenxiaoleiopen in new window史前小虫open in new window清涩绿茶open in new window3503207480open in new windowDroidChowopen in new window阿塞open in new window火宣open in new windowγ 瑞 γ ミopen in new windowlinkingvisionopen in new window茄子open in new window好心情浮沉open in new windowXiaofeng Wangopen in new windowdoodoocoderopen in new windowqingciopen in new windowswwheiheiopen in new windowKKKKK5Gopen in new windowZhou WeiminJim Jinopen in new window西瓜丶MingZhuLiuopen in new windowchengxiaoshengopen in new windowbig pandatanningzhongopen in new windowhctym1995open in new windowhewenyuanopen in new windowsunhuimirsKevin ChengLiu Jiangalongopen in new windowqingcilyg1949zhlong大裤衩droid.chow陈晓林open in new windowCharleyWangHZopen in new windowJohnnyopen in new windowDoubleX69open in new windowlawrencehjopen in new windowyangkunXinghua Zhaohejilinopen in new windowrqb500open in new windowAlexopen in new windowDw9open in new window明月惊鹊cgmhejilinalexliyu7352cgmhaorui wangopen in new windowjoshuafcJayChen0519open in new windowzxwangckerWuPengstarryopen in new windowmtdxcopen in new window胡刚风open in new windowzhao85open in new windowdreamisdreamopen in new windowdingcanopen in new windowHaibo Chenopen in new windowLeonopen in new windowcustompalopen in new windowPioLingopen in new windowKevinZangopen in new windowgongluckopen in new windowa-ucontrolopen in new windowTalusLopen in new windowahaooahazopen in new windowTempoTianopen in new windowDerek Liuopen in new windowljx0305open in new window朱如洪 open in new windowlijinopen in new windowPioLingopen in new windowBackT0TheFutureopen in new windowperaraopen in new windowcodeRATnyopen in new windowdengjfzhopen in new window百鸣open in new windowfruit Juiceopen in new windowtbagoopen in new windowLuoshopen in new windowlinxiaoyan87open in new windowwakenopen in new windowDeepslientopen in new window

    Also thank to JetBrains for their support for open source project, we developed and debugged zlmediakit with CLion:

    JetBrainsopen in new window
    JetBrains
    + diff --git a/more/use_cases.html b/more/use_cases.html index f13a81b..e7b097b 100644 --- a/more/use_cases.html +++ b/more/use_cases.html @@ -30,11 +30,11 @@ Use Cases | ZLMediaKit - + -
    Skip to main content

    Use Cases

    ZLMediaKitLess than 1 minute

    This project has received recognition from numerous companies and individual developers. According to the author's incomplete statistics, these companies include well-known internet giants, leading cloud service providers in China, several renowned AI unicorns, as well as a range of small and medium-sized companies. Users can endorse this project by pasting their company name and relevant project introduction on the issueopen in new window page. We appreciate your support!

    - +
    Skip to main content

    Use Cases

    ZLMediaKitLess than 1 minute

    This project has received recognition from numerous companies and individual developers. According to the author's incomplete statistics, these companies include well-known internet giants, leading cloud service providers in China, several renowned AI unicorns, as well as a range of small and medium-sized companies. Users can endorse this project by pasting their company name and relevant project introduction on the issueopen in new window page. We appreciate your support!

    + diff --git a/reference/development_log/hls_high_performance_journey.html b/reference/development_log/hls_high_performance_journey.html index 21d559a..2eec6c6 100644 --- a/reference/development_log/hls_high_performance_journey.html +++ b/reference/development_log/hls_high_performance_journey.html @@ -30,7 +30,7 @@ zlmediakit的hls高性能之旅 | ZLMediaKit - + @@ -116,7 +116,7 @@ } return ret; } -

    通过本次优化,zlmediakit 的 hls 服务有比较大的性能提升,性能上限大概提升到了 6K 左右(压测途中还发现拉流压测客户端由于 mktime 函数导致的性能瓶颈问题,在此不展开描述),但是还是离预期有些差距:

    图片.png
    图片.png

    小插曲: mktime 函数导致拉流压测工具性能受限

    图片.png
    图片.png

    在开启共享 mmap 后,发现性能上升到 6K 并发时,还是上不去;于是我登录服务器使用gdb -p调试进程,通过info threads 查看线程情况,发现大量线程处于阻塞状态,这也就是为什么 zlmediakit 占用 cpu 不高,但是并发却上不去的原因:

    图片.png
    图片.png

    为什么这么多线程都处于互斥阻塞状态?zlmediakit 在使用互斥锁时,还是比较注意缩小临界区的,一些复杂耗时的操作一般都会放在临界区之外;经过一番思索,我才恍然大悟,原因是:

    压测客户端由于是单进程,共享同一份 hls cookie,在访问 zlmediakit 时,这些分布在不同线程的请求,其 cookie 都相同,导致所有线程同时大规模操作同一个 cookie,而操作 cookie 是要加锁的,于是这些线程疯狂的同时进行锁竞争,虽然不会死锁,但是会花费大量的时间用在锁等待上,导致整体性能降低。

    虽然在真实使用场景下,用户 cookie 并不一致,这种几千用户同时访问同一个 cookie 的情况并不会存在,但是为了考虑不影响 hls 性能压测,也为了杜绝一切隐患,针对这个问题,我于是对 http/hls 的 cookie 机制进行了修改,在操作 cookie 时,不再上锁:

    图片.png图片.png

    之前对 cookie 上锁属于过度设计,当时目的主要是为了实现在 cookie 上随意挂载数据。

    优化之旅三:hls m3u8 文件内存化

    经过上面两次优化,zlmediakit 的 hls 并发能力可以达到 8K 了,但是当 hls 播放器个数达到在 8K 左右时,zlmediakit 的 ts 切片下载开始超时,可见系统还是存在性能瓶颈,联想到在优化 cookie 互斥锁时,有线程处于该状态:

    图片.png
    图片.png

    所以我严重怀疑原因是 m3u8 文件不能使用 mmap 优化(而是采用 fread 方式)导致的文件 io 性能瓶颈问题,后面通过查看函数调用栈发现,果然是这个原因。

    由于 m3u8 是易变的,使用 mmap 映射时,如果文件长度发生变化,会导致触发 SIGBUS 的信号,查看多方资料,此问题无解。所以最后只剩下通过 m3u8 文件内存化来解决,于是我修好了 m3u8 文件的 http 下载方式,改成直接从内存获取:

    图片.png
    图片.png

    结果:性能爆炸

    通过上述总共 3 大优化,我们在压测 zlmediakit 的 hls 性能时,随着一点一点增加并发量,发现 zlmediakit 总是能运行的非常健康,在并发量从 10K 慢慢增加到 30K 时,并不会影响 ffplay 播放的流畅性和效果,以下是压测数据:

    压测 16K http-hls 播放器时,流量大概 7.5Gb/s: (大概需要 32K 端口,由于我测试机端口不足,只能最大压测到这个数据)

    图片.png图片.png图片.png

    后面用户再压测了 30k https-hls 播放器:

    图片.png图片.png

    后记:用户切生产环境

    在完成 hls 性能优化后,该用户把所有北美节点的 hls 流量切到了 zlmediakit,

    图片.png图片.png

    状况又起:

    今天该用户又反馈给我说 zlmediakit 的内存占用非常高,在 30K hls 并发时,内存占用 30+GB:

    图片.png
    图片.png

    但是用 zlmediakit 的getThreadsLoad接口查看,却发现负载很低:

    图片.png
    图片.png

    同时使用 zlmediakit 的getStatistic接口查看,发现BufferList对象个数很高,初步怀疑是由于网络带宽不足导致发送拥塞,内存暴涨,通过询问得知,公网 hls 访问,确实存在 ts 文件下载缓慢的问题:

    图片.png
    图片.png

    同时让他通过局域网测试 ts 下载,却发现非常快:

    图片.png
    图片.png

    后来通过计算,发现确实由于网络带宽瓶颈每个用户积压一个 Buffer 包,而每个 Buffer 包用户设置的为 1MB,这样算下来,30K 用户,确实会积压 30GB 的发送缓存:

    图片.png
    图片.png
    图片.png
    图片.png
    图片.png
    图片.png

    结论

    通过上面的经历,我们发现 zlmediakit 已经足以支撑 30K/50Gb 级别的 https-hls 并发能力, 理论上,http-hls 相比 https-hls 要少 1 次内存拷贝,和 1 次加密,性能应该要好很多;那么 zlmediakit 的性能上限在哪里?天知道!毕竟,我已经没有这么豪华的配置供我压测了;在此,我们先立一个保守的 flag 吧:

    单机 100K/100Gb 级别 hls 并发能力。

    那其他协议呢? 我觉得应该不输 hls。

    - +

    通过本次优化,zlmediakit 的 hls 服务有比较大的性能提升,性能上限大概提升到了 6K 左右(压测途中还发现拉流压测客户端由于 mktime 函数导致的性能瓶颈问题,在此不展开描述),但是还是离预期有些差距:

    图片.png
    图片.png

    小插曲: mktime 函数导致拉流压测工具性能受限

    图片.png
    图片.png

    在开启共享 mmap 后,发现性能上升到 6K 并发时,还是上不去;于是我登录服务器使用gdb -p调试进程,通过info threads 查看线程情况,发现大量线程处于阻塞状态,这也就是为什么 zlmediakit 占用 cpu 不高,但是并发却上不去的原因:

    图片.png
    图片.png

    为什么这么多线程都处于互斥阻塞状态?zlmediakit 在使用互斥锁时,还是比较注意缩小临界区的,一些复杂耗时的操作一般都会放在临界区之外;经过一番思索,我才恍然大悟,原因是:

    压测客户端由于是单进程,共享同一份 hls cookie,在访问 zlmediakit 时,这些分布在不同线程的请求,其 cookie 都相同,导致所有线程同时大规模操作同一个 cookie,而操作 cookie 是要加锁的,于是这些线程疯狂的同时进行锁竞争,虽然不会死锁,但是会花费大量的时间用在锁等待上,导致整体性能降低。

    虽然在真实使用场景下,用户 cookie 并不一致,这种几千用户同时访问同一个 cookie 的情况并不会存在,但是为了考虑不影响 hls 性能压测,也为了杜绝一切隐患,针对这个问题,我于是对 http/hls 的 cookie 机制进行了修改,在操作 cookie 时,不再上锁:

    图片.png图片.png

    之前对 cookie 上锁属于过度设计,当时目的主要是为了实现在 cookie 上随意挂载数据。

    优化之旅三:hls m3u8 文件内存化

    经过上面两次优化,zlmediakit 的 hls 并发能力可以达到 8K 了,但是当 hls 播放器个数达到在 8K 左右时,zlmediakit 的 ts 切片下载开始超时,可见系统还是存在性能瓶颈,联想到在优化 cookie 互斥锁时,有线程处于该状态:

    图片.png
    图片.png

    所以我严重怀疑原因是 m3u8 文件不能使用 mmap 优化(而是采用 fread 方式)导致的文件 io 性能瓶颈问题,后面通过查看函数调用栈发现,果然是这个原因。

    由于 m3u8 是易变的,使用 mmap 映射时,如果文件长度发生变化,会导致触发 SIGBUS 的信号,查看多方资料,此问题无解。所以最后只剩下通过 m3u8 文件内存化来解决,于是我修好了 m3u8 文件的 http 下载方式,改成直接从内存获取:

    图片.png
    图片.png

    结果:性能爆炸

    通过上述总共 3 大优化,我们在压测 zlmediakit 的 hls 性能时,随着一点一点增加并发量,发现 zlmediakit 总是能运行的非常健康,在并发量从 10K 慢慢增加到 30K 时,并不会影响 ffplay 播放的流畅性和效果,以下是压测数据:

    压测 16K http-hls 播放器时,流量大概 7.5Gb/s: (大概需要 32K 端口,由于我测试机端口不足,只能最大压测到这个数据)

    图片.png图片.png图片.png

    后面用户再压测了 30k https-hls 播放器:

    图片.png图片.png

    后记:用户切生产环境

    在完成 hls 性能优化后,该用户把所有北美节点的 hls 流量切到了 zlmediakit,

    图片.png图片.png

    状况又起:

    今天该用户又反馈给我说 zlmediakit 的内存占用非常高,在 30K hls 并发时,内存占用 30+GB:

    图片.png
    图片.png

    但是用 zlmediakit 的getThreadsLoad接口查看,却发现负载很低:

    图片.png
    图片.png

    同时使用 zlmediakit 的getStatistic接口查看,发现BufferList对象个数很高,初步怀疑是由于网络带宽不足导致发送拥塞,内存暴涨,通过询问得知,公网 hls 访问,确实存在 ts 文件下载缓慢的问题:

    图片.png
    图片.png

    同时让他通过局域网测试 ts 下载,却发现非常快:

    图片.png
    图片.png

    后来通过计算,发现确实由于网络带宽瓶颈每个用户积压一个 Buffer 包,而每个 Buffer 包用户设置的为 1MB,这样算下来,30K 用户,确实会积压 30GB 的发送缓存:

    图片.png
    图片.png
    图片.png
    图片.png
    图片.png
    图片.png

    结论

    通过上面的经历,我们发现 zlmediakit 已经足以支撑 30K/50Gb 级别的 https-hls 并发能力, 理论上,http-hls 相比 https-hls 要少 1 次内存拷贝,和 1 次加密,性能应该要好很多;那么 zlmediakit 的性能上限在哪里?天知道!毕竟,我已经没有这么豪华的配置供我压测了;在此,我们先立一个保守的 flag 吧:

    单机 100K/100Gb 级别 hls 并发能力。

    那其他协议呢? 我觉得应该不输 hls。

    + diff --git a/reference/development_log/index.html b/reference/development_log/index.html index bd34be3..819e5e2 100644 --- a/reference/development_log/index.html +++ b/reference/development_log/index.html @@ -30,11 +30,11 @@ Development log | ZLMediaKit - + - - + + diff --git a/reference/development_log/rtsp_performance_optimization.html b/reference/development_log/rtsp_performance_optimization.html index 2559b9f..a76c7fd 100644 --- a/reference/development_log/rtsp_performance_optimization.html +++ b/reference/development_log/rtsp_performance_optimization.html @@ -30,11 +30,11 @@ RTSP性能优化 | ZLMediaKit - + -
    Skip to main content

    RTSP性能优化

    ZLMediaKitAbout 3 min

    概述

    在最近 ZLMediaKit 的一次提交中,我对 rtsp 服务器的性能做了一次改进open in new window,本次改进中,核心的思想是:

    • 缓存时间戳相同的 RTP 包(意味着是同一帧数据),作为一个数据包进行分发

    理论上,这样做可以大大减少多线程分发时线程切换次数、多余发送逻辑代码的执行以及系统调用次数,预期在不增加播放延时的情况下能大幅提高 rtsp 服务器的性能.

    测试

    为了验证本次优化的预期目标,我在 linux 服务器上做了一系列的测试对比,以下是测试环境:

    • 操作系统:ubuntu16 desktop 64bit
    • cpu: 4 核心的 Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
    • 编译器:gcc 5.4.0,开启 Release 编译(cmake -DCMAKE_BUILD_TYPE=Release)
    • malloc 库:连接 jemalloc
    • 网络: 127.0.0.1 本地循环网络
    • 测试客户端:test_benchmarkopen in new window
    • 测试服务器:MediaServeropen in new window
    • 测试码流:4K H264 的 RTSP 流,通过 MP4 Rtsp 点播实现,文件 200 秒,190MB,码流大概 8Mb/s
    • 测试方法:通过 test_benchmark 播放 500 路 RTSP 4K 点播,总码流大概 4Gb/s,分别测试新老版本的 MediaServer 的进程。

    测试数据

    • 启动的播放器个数: image
    • 实时码流: image

    性能对比

    老版本数据

    • cpu 使用率(浮动比较大,最高 200%+): imageimage

    • 性能分析(perf top): image

    • 总结 : cpu 占用主要发生在内核态的系统调用(syscall)、tcp_sendmsg、内存拷贝。

    新版本数据:

    • cpu 使用率(浮动比较小,50%以下): imageimage

    • 后面我又测试了 2000 个播放器,掉了一批,最后稳定在 1800 个左右,实时流量 17.5Gb/s(单向)左右,cpu 占用 300%左右: imageimageimageimage

    • 性能分析(perf top): image

    • 总结 : cpu 占用主要发生在内核态内存拷贝,系统调用(syscall)、tcp_sendmsg 的开销很小。

    总结

    本次性能测试基本证明了预想,性能提升大概有 4 倍以上。 本机器为 i7-4790 4 核心 8 线程的,所以 cpu 占用率最高为 800%,现在 ZLMediaKit 在上面支撑 500 个 4K RTSP 播放器,实时流量大概 4Gb/s 时 cpu 使用率 50%不到,通过简单换算,该 cpu 可以支撑大概 8000 个 4K RTSP 播放器,实时流量最高能达到 64Gb/s,考虑到性能折损,我们保守估计可以支持 6000 个 4K RTSP 播放器,50Gb/s 的流量。

    最后

    在 ZLMediaKit 流媒体服务器中,通过智能指针引用计数的方式实现了多线程的数据分发,不管分发多少次,数据拷贝次数都是固定的,所以 ZLMediaKit 可以达到如此夸张的性能参数,但是在测试中,我们也能发现,性能占用已经大部分发生在内核态了,应用层的 cpu 占用反而不是瓶颈了。这是因为在内核态,写 socket 缓存需要做内存拷贝,随着播放器个数的增加,内存拷贝会越来越多,此时性能瓶颈不再是应用层,而是由于内存带宽瓶颈导致的内核性能瓶颈。

    - +
    Skip to main content

    RTSP性能优化

    ZLMediaKitAbout 3 min

    概述

    在最近 ZLMediaKit 的一次提交中,我对 rtsp 服务器的性能做了一次改进open in new window,本次改进中,核心的思想是:

    • 缓存时间戳相同的 RTP 包(意味着是同一帧数据),作为一个数据包进行分发

    理论上,这样做可以大大减少多线程分发时线程切换次数、多余发送逻辑代码的执行以及系统调用次数,预期在不增加播放延时的情况下能大幅提高 rtsp 服务器的性能.

    测试

    为了验证本次优化的预期目标,我在 linux 服务器上做了一系列的测试对比,以下是测试环境:

    • 操作系统:ubuntu16 desktop 64bit
    • cpu: 4 核心的 Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
    • 编译器:gcc 5.4.0,开启 Release 编译(cmake -DCMAKE_BUILD_TYPE=Release)
    • malloc 库:连接 jemalloc
    • 网络: 127.0.0.1 本地循环网络
    • 测试客户端:test_benchmarkopen in new window
    • 测试服务器:MediaServeropen in new window
    • 测试码流:4K H264 的 RTSP 流,通过 MP4 Rtsp 点播实现,文件 200 秒,190MB,码流大概 8Mb/s
    • 测试方法:通过 test_benchmark 播放 500 路 RTSP 4K 点播,总码流大概 4Gb/s,分别测试新老版本的 MediaServer 的进程。

    测试数据

    • 启动的播放器个数: image
    • 实时码流: image

    性能对比

    老版本数据

    • cpu 使用率(浮动比较大,最高 200%+): imageimage

    • 性能分析(perf top): image

    • 总结 : cpu 占用主要发生在内核态的系统调用(syscall)、tcp_sendmsg、内存拷贝。

    新版本数据:

    • cpu 使用率(浮动比较小,50%以下): imageimage

    • 后面我又测试了 2000 个播放器,掉了一批,最后稳定在 1800 个左右,实时流量 17.5Gb/s(单向)左右,cpu 占用 300%左右: imageimageimageimage

    • 性能分析(perf top): image

    • 总结 : cpu 占用主要发生在内核态内存拷贝,系统调用(syscall)、tcp_sendmsg 的开销很小。

    总结

    本次性能测试基本证明了预想,性能提升大概有 4 倍以上。 本机器为 i7-4790 4 核心 8 线程的,所以 cpu 占用率最高为 800%,现在 ZLMediaKit 在上面支撑 500 个 4K RTSP 播放器,实时流量大概 4Gb/s 时 cpu 使用率 50%不到,通过简单换算,该 cpu 可以支撑大概 8000 个 4K RTSP 播放器,实时流量最高能达到 64Gb/s,考虑到性能折损,我们保守估计可以支持 6000 个 4K RTSP 播放器,50Gb/s 的流量。

    最后

    在 ZLMediaKit 流媒体服务器中,通过智能指针引用计数的方式实现了多线程的数据分发,不管分发多少次,数据拷贝次数都是固定的,所以 ZLMediaKit 可以达到如此夸张的性能参数,但是在测试中,我们也能发现,性能占用已经大部分发生在内核态了,应用层的 cpu 占用反而不是瓶颈了。这是因为在内核态,写 socket 缓存需要做内存拷贝,随着播放器个数的增加,内存拷贝会越来越多,此时性能瓶颈不再是应用层,而是由于内存带宽瓶颈导致的内核性能瓶颈。

    + diff --git a/reference/documents/exclusive_features.html b/reference/documents/exclusive_features.html index e2b8383..760a15b 100644 --- a/reference/documents/exclusive_features.html +++ b/reference/documents/exclusive_features.html @@ -30,7 +30,7 @@ Exclusive Features of ZLMediakit | ZLMediaKit - + @@ -108,7 +108,7 @@ # Total timeout for pull streaming, in seconds (float). If there are 3 origin servers, the timeout for each individual server will be timeout_sec divided by 3. # The individual server timeout should not exceed the general.maxStreamWaitMS configuration. timeout_sec=15 -

    ZLMediakit supports multiple ways of pulling streams, including rtsp/rtmp/hls/http-ts/http-flv. The methods are diverse and rich, and the origin servers are not divided into primary and backup. Load balancing of the origin servers is achieved using the round-robin method. It should be noted that since ZLMediakit has long supported on-demand streaming for HLS, its edge stations also support the HLS protocol (in fact, they support any protocol supported by ZLMediakit), which is not available in SRS.

    Furthermore, it should be noted that ZLMediakit supports both RTSP and WebRTC, both of which are based on RTP. Internally in ZLMediakit, they can be interconnected without the need for protocol conversion and complex multiplexing/demultiplexing logic. This makes it possible to use ZLMediakit for large-scale, low-latency WebRTC live streaming. Compared to traditional CDN based on RTMP, RTSP is more suitable as the underlying transport protocol for WebRTC. Developers do not need to deal with cumbersome multiplexing/demultiplexing logic and can smoothly achieve the interconversion between RTSP and WebRTC.

    6. WebRTC Single Port, Multi-threading, and Connection Migration Support

    • Pain points: Webrtc servers that support multi-threading do not support single port, and those that support single port do not support multi-threading (and may not support connection migration).

    • Scenario introduction:

      Since WebRTC transmission is based on the UDP protocol, traditional WebRTC servers operate in multi-port mode, such as Janus and mediasoup. This brings great pain to deployment and management. Moreover, due to the limited number of ports (the theoretical limit is over 60,000), each WebRTC client occupies 1 to 4 ports. Limited by the number of ports, a WebRTC server can host a maximum of 10,000 to 60,000 clients.

      On the other hand, WebRTC servers that support single port (such as SRS) do not support multi-threading. Due to the much higher computational complexity (encryption/decryption) of WebRTC compared to live streaming, single-threaded performance is often insufficient for WebRTC applications.

      ZLMediakit proposes the best solution for these pain points:

      • Support deployment on a single UDP port, where one UDP port handles all clients.
      • Support multi-threading on a single UDP port. Each client is assigned a unique fd through repeated bind/connect operations, and the fds are evenly distributed among different threads.
      • When a user's network migrates (e.g., switching from Wi-Fi to 4G), the user is locked using STUN packets, enabling seamless connection migration without interrupting the user experience.

      ZLMediakit is the only open-source solution that combines all three of the above features.

      Note: For how to solve the thread safety issue during WebRTC single-port connection migration and multi-threaded connection migration, please watch this videoopen in new window

    7. Long Connection for HLS Playback

    ZLMediakit achieves long connection for HLS playback through cookie tracking technology. Based on this feature, ZLMediakit's HLS server has the following exclusive features:

    • HLS playback authentication, and no need for re-authentication during playback.
    • HLS playback traffic statistics, which can track the total traffic consumption during playback.
    • On-demandI'm sorry, but I couldn't find any information about a specific ZLMediakit feature called "pull stream URL of the origin server." ZLMediakit is an open-source streaming media server that provides various features for streaming protocols like RTSP, RTMP, HLS, and WebRTC.

    If you have any specific questions about ZLMediakit or need information on a different feature, please let me know, and I'll do my best to assist you.

    - +

    ZLMediakit supports multiple ways of pulling streams, including rtsp/rtmp/hls/http-ts/http-flv. The methods are diverse and rich, and the origin servers are not divided into primary and backup. Load balancing of the origin servers is achieved using the round-robin method. It should be noted that since ZLMediakit has long supported on-demand streaming for HLS, its edge stations also support the HLS protocol (in fact, they support any protocol supported by ZLMediakit), which is not available in SRS.

    Furthermore, it should be noted that ZLMediakit supports both RTSP and WebRTC, both of which are based on RTP. Internally in ZLMediakit, they can be interconnected without the need for protocol conversion and complex multiplexing/demultiplexing logic. This makes it possible to use ZLMediakit for large-scale, low-latency WebRTC live streaming. Compared to traditional CDN based on RTMP, RTSP is more suitable as the underlying transport protocol for WebRTC. Developers do not need to deal with cumbersome multiplexing/demultiplexing logic and can smoothly achieve the interconversion between RTSP and WebRTC.

    6. WebRTC Single Port, Multi-threading, and Connection Migration Support

    • Pain points: Webrtc servers that support multi-threading do not support single port, and those that support single port do not support multi-threading (and may not support connection migration).

    • Scenario introduction:

      Since WebRTC transmission is based on the UDP protocol, traditional WebRTC servers operate in multi-port mode, such as Janus and mediasoup. This brings great pain to deployment and management. Moreover, due to the limited number of ports (the theoretical limit is over 60,000), each WebRTC client occupies 1 to 4 ports. Limited by the number of ports, a WebRTC server can host a maximum of 10,000 to 60,000 clients.

      On the other hand, WebRTC servers that support single port (such as SRS) do not support multi-threading. Due to the much higher computational complexity (encryption/decryption) of WebRTC compared to live streaming, single-threaded performance is often insufficient for WebRTC applications.

      ZLMediakit proposes the best solution for these pain points:

      • Support deployment on a single UDP port, where one UDP port handles all clients.
      • Support multi-threading on a single UDP port. Each client is assigned a unique fd through repeated bind/connect operations, and the fds are evenly distributed among different threads.
      • When a user's network migrates (e.g., switching from Wi-Fi to 4G), the user is locked using STUN packets, enabling seamless connection migration without interrupting the user experience.

      ZLMediakit is the only open-source solution that combines all three of the above features.

      Note: For how to solve the thread safety issue during WebRTC single-port connection migration and multi-threaded connection migration, please watch this videoopen in new window

    7. Long Connection for HLS Playback

    ZLMediakit achieves long connection for HLS playback through cookie tracking technology. Based on this feature, ZLMediakit's HLS server has the following exclusive features:

    • HLS playback authentication, and no need for re-authentication during playback.
    • HLS playback traffic statistics, which can track the total traffic consumption during playback.
    • On-demandI'm sorry, but I couldn't find any information about a specific ZLMediakit feature called "pull stream URL of the origin server." ZLMediakit is an open-source streaming media server that provides various features for streaming protocols like RTSP, RTMP, HLS, and WebRTC.

    If you have any specific questions about ZLMediakit or need information on a different feature, please let me know, and I'll do my best to assist you.

    + diff --git a/reference/documents/high_concurrency_implementation_principle.html b/reference/documents/high_concurrency_implementation_principle.html index 102d8b9..05c0fff 100644 --- a/reference/documents/high_concurrency_implementation_principle.html +++ b/reference/documents/high_concurrency_implementation_principle.html @@ -30,7 +30,7 @@ ZLMediaKit高并发实现原理 | ZLMediaKit - + @@ -373,7 +373,7 @@ ++it; } } -

    采用右值引用拷贝

    ZLMediaKit 中也尽量使用右值引用拷贝来规避内存拷贝,这里就不展开论述。

    其他特性

    优化及时推流打开率

    有些应用场景需要设备端开始推流,然后 APP 立即观看的应用场景。传统的 rtmp 服务器对此应用场景是未作任何优化的,如果 APP 播放请求在推流尚未建立之前到达,那么将导致 APP 播放失败,这样视频打开成功率就会降低,用户体验很不好。

    ZLMediaKit 在针对该应用场景时,做了特别的优化;实现原理如下:

    1、收到播放请求时,立即检查是否已经存在的媒体源,如果存在返回播放成功,否则进入第 2 步。

    2、监听对应的媒体源注册事件,同时添加播放超时定时器,并且不回复播放器然后返回。逻辑将进入第 3 步或第 4 步。

    3、媒体源注册成功,那么立即响应播放器播放成功,同时删除播放超时定时器,并移除媒体注册事件监听。

    4、超时定时器触发,响应播放器播放失败,同时删除播放超时定时器,并移除媒体注册事件监听。

    使用 ZLMediaKit 作为流媒体服务器,可以 APP 播放请求和设备端推流同时进行。

    性能测试对比

    目前对 ZLMediaKit 做了一些性能测试,查看地址:benchmark

    在测试时发现,ZLMediaKit 在负载比较低时,其单线程性能大概是 SRS 的 50%,单条线程大概能支撑 5K 个播放器,导致这个性能差距的主要原因时由于采用本地轮回网络,网络状况为理想,那么 sendmsg 批量发送将不起优化左右;而 SRS 使用了合并写特性(就是缓存 300 毫秒左右的数据后一次性发送),可以减少系统调用次数;如果负载比较高,以及真实网络环境下,ZLMediaKit 单线程性能应该跟 SRS 差距更小,我们在测试报告中也能发现在客户端比较多时,ZLMediaKit 单线程线程性能有比较大的提升。

    由于 ZLMediaKit 支持多线程,可以充分利用多核 CPU 的性能,在多核服务器上,CPU 已经不再是性能瓶颈,为了减少直播延时,目前合并写特性是默认关闭的,可以通过配置文件开启。

    - +

    采用右值引用拷贝

    ZLMediaKit 中也尽量使用右值引用拷贝来规避内存拷贝,这里就不展开论述。

    其他特性

    优化及时推流打开率

    有些应用场景需要设备端开始推流,然后 APP 立即观看的应用场景。传统的 rtmp 服务器对此应用场景是未作任何优化的,如果 APP 播放请求在推流尚未建立之前到达,那么将导致 APP 播放失败,这样视频打开成功率就会降低,用户体验很不好。

    ZLMediaKit 在针对该应用场景时,做了特别的优化;实现原理如下:

    1、收到播放请求时,立即检查是否已经存在的媒体源,如果存在返回播放成功,否则进入第 2 步。

    2、监听对应的媒体源注册事件,同时添加播放超时定时器,并且不回复播放器然后返回。逻辑将进入第 3 步或第 4 步。

    3、媒体源注册成功,那么立即响应播放器播放成功,同时删除播放超时定时器,并移除媒体注册事件监听。

    4、超时定时器触发,响应播放器播放失败,同时删除播放超时定时器,并移除媒体注册事件监听。

    使用 ZLMediaKit 作为流媒体服务器,可以 APP 播放请求和设备端推流同时进行。

    性能测试对比

    目前对 ZLMediaKit 做了一些性能测试,查看地址:benchmark

    在测试时发现,ZLMediaKit 在负载比较低时,其单线程性能大概是 SRS 的 50%,单条线程大概能支撑 5K 个播放器,导致这个性能差距的主要原因时由于采用本地轮回网络,网络状况为理想,那么 sendmsg 批量发送将不起优化左右;而 SRS 使用了合并写特性(就是缓存 300 毫秒左右的数据后一次性发送),可以减少系统调用次数;如果负载比较高,以及真实网络环境下,ZLMediaKit 单线程性能应该跟 SRS 差距更小,我们在测试报告中也能发现在客户端比较多时,ZLMediaKit 单线程线程性能有比较大的提升。

    由于 ZLMediaKit 支持多线程,可以充分利用多核 CPU 的性能,在多核服务器上,CPU 已经不再是性能瓶颈,为了减少直播延时,目前合并写特性是默认关闭的,可以通过配置文件开启。

    + diff --git a/reference/documents/index.html b/reference/documents/index.html index 6795e86..4e1c718 100644 --- a/reference/documents/index.html +++ b/reference/documents/index.html @@ -30,11 +30,11 @@ Related documents | ZLMediaKit - + - - + + diff --git a/reference/documents/introduction_to_streaming_media_related_technologies.html b/reference/documents/introduction_to_streaming_media_related_technologies.html index d046d98..c0edfad 100644 --- a/reference/documents/introduction_to_streaming_media_related_technologies.html +++ b/reference/documents/introduction_to_streaming_media_related_technologies.html @@ -30,11 +30,11 @@ 流媒体相关技术介绍 | ZLMediaKit - + -
    Skip to main content

    流媒体相关技术介绍

    ZLMediaKitAbout 10 min

    1、流媒体简介

    流媒体(streaming media)是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件,这对于实时性要求比较高的场景而言,显然是不现实的,所以流媒体技术为此孕育而生。

    传统的视频监控、IPTV,以及这几年兴起的视频直播、网络授课都属于流媒体的范畴,从广义上来讲,视频通话,视频会议也属于流媒体。

    2、视频监控

    2.1 传统解决方案的现状和挑战

    视频监控是流媒体技术传统的应用场景,在政府、企业以及现在逐渐流行的个人消费市场有着广泛的应用。特别是近几年来,国内各大城市逐步推进平安城市项目进程,在安防、交通等领域,视频监控市场规模愈发壮大。而且随着室内家居摄像头、车载记录仪的普及,视频监控可以说在人们的生活中无处不在。

    传统的视频监控解决方案主要建立在基于 LAN 的网络、服务器、录像机和摄像机的基础之上。这些高度复杂的解决方案具有很高的施工和维护成本, 因为传统基础设施价格高昂,并且需要时间来规划、实施和维护。传统的视频监控解决方案也不好扩容维护,对于用户而言,也不友好,操作使用局限在局域网中,已经难以适合新时代的发展。

    2.2 发展趋势

    由于一些互联网企业的入局,视频监控行业也在经历一系列的变局,譬如小米摄像头、360 水滴摄像头的流行,也鞭策着传统的视频监控行业相关企业的变革(譬如海康威视推出的萤石云平台),虽然目前这些变革多数还局限于个人消费市场,但从长远来看,视频监控上云,是未来发展的大趋势。

    基于云的视频监控解决方案由于其高质量、可靠性、安全性、便捷性以及较低的部署和维护成本而越来越受到人们的青睐。

    预计未来视频监控,将像目前流行的网络直播一样方便,用户安装好摄像头后,接入网络即可视频上云。使用者在浏览器或 APP 即可查看所有摄像头的实时监控以及历史录像,通过 APP 或绑定的手机号码,可以实时接收摄像头发送的事件通知(譬如入侵事件)。

    2.3 技术难点

    由于历史原因,传统的视频监控行业技术栈多采用私有协议 SDK、onvif/rtsp 等协议栈。这些协议目前对浏览器而言都不友好,在以前 IE 浏览器还流行的时期,可以通过 ocx 插件的方式来对接这些协议,但是随着 IE 的没落以及目前流行的 chrome、火狐浏览器对原生插件的愈加不友好,通过插件的方式来实现访问监控视频的方式将愈发困难。如果要在 chrome、火狐浏览器上访问监控视频,目前有以下几种方案可行:

    • rtmp

      目前主流的 chrome 和火狐浏览器都还支持 flash 插件,所以目前在浏览器上还可以通过 rtmp 方式来访问监控视频。但是由于随着 html5 的普及以及 flash 的停止更新,预计可预见的未来,rtmp 技术将随着 flash 一起行将就木(谷歌宣布 chrom 浏览器 2020 年 12 月将不再支持 flash player)。

    • http-flv

      http-flv 直播的方式是一种比较新颖的方式,该技术基于 html5,可以通过无插件的方式实现视频直播,而且由于 rtmp 负载可以平滑的转换成 http-flv 协议,所以正在逐渐取代 rtmp 成为新的直播技术标准,目前各大直播网站(譬如斗鱼直播,bilibili 等)也陆续从 rtmp 切换成该技术。 但是由于浏览器的限制,不能同时打开过多(chrome 限制 6 个)的同域名下的直播窗口,所以该技术也不太适合多路同时打开(譬如 9 宫格视频)的视频监控领域。而且由于 Adobe 的不作为,flv 容器格式停止了更新,对 H265 的支持遥遥无期。

    • ws-flv

      ws-flv 直播技术基本与 http-flv 一致,无非是传输介质换成了 websocket 协议,除了解除了 http-flv 不能同时打开过多同域名下的直播窗口的限制,其他技术特性、参数基本与 http-flv 一致。目前看,ws-flv 既适合视频监控(可以同时打开多路监控视频)也适合视频直播行业,是 rtmp 很高的升级替代方案。

    • webrtc

      webrtc 是谷歌主导的视频通话技术标准,目前各大主流浏览器都兼容该标准。通过该技术,用户可以在浏览器上实现无插件的视频通话,该技术也可以用于实现低延时的视频直播。目前业界也有很多基于 webrtc 的应用和产品,但是很多局限于视频聊天等低延时交互式场景,在视频监控领域,目前还尚未流行。而且该技术栈目前还在持续更新,技术难点太多,要与视频监控领域融合还需时日。

    • hls

      hls 协议是苹果公司主导的技术标准,该技术标准兼容性最佳。不仅桌面浏览器,包括手机浏览器甚至是手机 QQ、手机微信都支持该直播协议。 但是该协议延时比较大,不太适合视频监控等对延时要求很敏感的行业。不过最近苹果公司新推出低延时 hls 直播标准,预计 hls 标准将抢占更大的市场份额。

    以上直播技术标准目前都不完全契合视频监控行业的需求,如果要达到比较好的用户体验,通常以上技术混合使用。

    3、视频直播

    3.1 视频直播的现状和挑战

    视频直播是近几年才兴起的产业,特别是随着游戏直播、手机直播的流行,视频直播已经司空见惯,进入了每个人的视野。 随着阿里、腾讯等云平台的入局,OBS,SRS 等优秀软件的开源,视频加速 CDN 技术的成熟,打赏、广告等商业模式的落地,目前视频直播产业链已经非常成熟,业界也诞生了斗鱼、虎牙、映客、花椒等知名直播平台。

    目前而言,这些直播平台使用的技术栈基本都是 rtmp,但是由于 flash 技术即将被淘汰,所以直播行业也将迎来一些变局以及挑战。 现在,基本上所有的直播平台,在 web 端,都已经或正在往 http-flv 方案转型。由于 flv 与 rtmp 同出一门(都是 Adobe 公司产品),负载格式一致,方案升级改造平滑可靠,http-flv 替代 rtmp 具有天然的优势,相信将来 http-flv 能很好的挑起 rtmp 的大梁。

    3.2 发展趋势

    视频直播目前从内容上来讲,涵盖了游戏、美女、户外、娱乐、体育等直播;从设备上来讲,涵盖了 PC、手机、web、电视等客户端,市场上也诞生了斗鱼这样的头部企业。从目前来看,视频直播行业市场格局已经比较稳固,进入了平稳发展期。

    从技术上来讲,直播行业也将迎来一些变革。 一是 rtmp 技术随着 flash 的一起淘汰,web 端 rtmp 播放器将成为历史。 二是随着 webrtc 的强势流行,直播技术栈可能与 webrtc 融合。 三是苹果主导的低延时 hls 的推出,可能最终有大一统之势。

    不过近期来看,http-flv 是 rtmp 的最佳替代方案,但是和 rtmp 一样,也有不支持 H265 的短板,而且移动端浏览器对此支持并不完善,所以该方案在将来有大概率会被其他方案替代。

    3.3 技术难点

    直播行业相对视频监控行业来说,商业化程度更高,更面向于普通消费者,用户规模更大,产业链也更加成熟。但是由于利益格局的划分、巨头间标准制定的角力,目前直播的技术标准和用户体验是割裂的。

    在桌面 web 端,之前直播技术由 Adobe 旗下的 flash/rtmp 技术主导,不过由于 Adobe 的不作为,以及谷歌苹果等公司的抵制,flash 已经进入死亡倒计时。目前来看,http-flv 已经接手 rtmp 的大旗,成为了新的事实上的桌面 web 端直播标准。但是 http-flv 由于其不支持 H265 的短板(Adobe 官方可能永远也不会支持 H265),其地位也并不稳固,现在也有公司正在尝试使用 webrtc 进行视频直播,但是由于该技术跨界太大,其技术栈又太庞杂,整个上下游产业链也并不完善,目前在直播界,还未看见大规模采用该直播技术的方案实施。

    在手机 APP 端,由于播放技术自己可以主导,也由于历史沿革原因,目前一般沿用 rtmp 技术方案(需要指出的是微信小程序也支持 rtmp 播放器),用户体验比较好,延时一般 3 秒或以下。

    在移动 web 端,可采用的直播方案更少,目前基本只能采用苹果公司主导的 hls 方案,但是由于 hls 的技术特性,延时非常大(一般 5 秒以上,最大可达 10 秒以上),其观看体验跟手机 APP、桌面 web 端是严重割裂的。

    通过我们上述的分析看出,目前直播技术方案,在每种端都不一样,用户体验也差距巨大,目前并没有一种多平台支持、令人满意的通用解决方案。目前要实现一个完善的直播产品,最少要采用包括 rtmp/http-flv/hls 这 3 种技术方案,而且这三种技术方案目前也并不能让人满意(rtmp/http-flv 不支持 H265,hls 延时高)。

    4、我们的解决方案以及优势

    目前我们的流媒体服务框架支持 rtsp/rtmp 推流客户端,rtsp/rtmp/http-flv/ws-flv/hls 播放客户端,并且可以无缝把 rtsp/rtmp 推流转换成上述 4 种播放协议,同时我们也支持 mp4 录制存档,必要的时候也可以从 mp4 文件加载成直播流。

    除了上述功能之外,我们还支持拉流 rtsp/rtmp 代理成 rtsp/rtmp/http-flv/ws-flv/hls,也支持把直播 rtsp/rtmp 流推送到其他的服务器。

    另外,我们还提供丰富的 http api 以及 http hook api,通过这些 api,我们可以与其他业务服务器一起,打造丰富的业务逻辑。

    我们的流媒体框架支持 linux、macos、ios、android、windows 全平台,既可以作为商用的流媒体服务器,也可以移植到嵌入式设备中,作为基础流媒体服务组件。

    代码采用 C++11 标准打造,避免使用裸指针,稳定可靠,采用 epoll 多路复用、线程池、异步网络 IO 模式开发,并发性能优越,已经经受住了长期的高并发验证考验。同时针对及时推流的特征,做了特别的优化,可以减少视频打开延时、提高画面打开成功率,让用户获取画面秒开,延时极低的体验。

    - +
    Skip to main content

    流媒体相关技术介绍

    ZLMediaKitAbout 10 min

    1、流媒体简介

    流媒体(streaming media)是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件,这对于实时性要求比较高的场景而言,显然是不现实的,所以流媒体技术为此孕育而生。

    传统的视频监控、IPTV,以及这几年兴起的视频直播、网络授课都属于流媒体的范畴,从广义上来讲,视频通话,视频会议也属于流媒体。

    2、视频监控

    2.1 传统解决方案的现状和挑战

    视频监控是流媒体技术传统的应用场景,在政府、企业以及现在逐渐流行的个人消费市场有着广泛的应用。特别是近几年来,国内各大城市逐步推进平安城市项目进程,在安防、交通等领域,视频监控市场规模愈发壮大。而且随着室内家居摄像头、车载记录仪的普及,视频监控可以说在人们的生活中无处不在。

    传统的视频监控解决方案主要建立在基于 LAN 的网络、服务器、录像机和摄像机的基础之上。这些高度复杂的解决方案具有很高的施工和维护成本, 因为传统基础设施价格高昂,并且需要时间来规划、实施和维护。传统的视频监控解决方案也不好扩容维护,对于用户而言,也不友好,操作使用局限在局域网中,已经难以适合新时代的发展。

    2.2 发展趋势

    由于一些互联网企业的入局,视频监控行业也在经历一系列的变局,譬如小米摄像头、360 水滴摄像头的流行,也鞭策着传统的视频监控行业相关企业的变革(譬如海康威视推出的萤石云平台),虽然目前这些变革多数还局限于个人消费市场,但从长远来看,视频监控上云,是未来发展的大趋势。

    基于云的视频监控解决方案由于其高质量、可靠性、安全性、便捷性以及较低的部署和维护成本而越来越受到人们的青睐。

    预计未来视频监控,将像目前流行的网络直播一样方便,用户安装好摄像头后,接入网络即可视频上云。使用者在浏览器或 APP 即可查看所有摄像头的实时监控以及历史录像,通过 APP 或绑定的手机号码,可以实时接收摄像头发送的事件通知(譬如入侵事件)。

    2.3 技术难点

    由于历史原因,传统的视频监控行业技术栈多采用私有协议 SDK、onvif/rtsp 等协议栈。这些协议目前对浏览器而言都不友好,在以前 IE 浏览器还流行的时期,可以通过 ocx 插件的方式来对接这些协议,但是随着 IE 的没落以及目前流行的 chrome、火狐浏览器对原生插件的愈加不友好,通过插件的方式来实现访问监控视频的方式将愈发困难。如果要在 chrome、火狐浏览器上访问监控视频,目前有以下几种方案可行:

    • rtmp

      目前主流的 chrome 和火狐浏览器都还支持 flash 插件,所以目前在浏览器上还可以通过 rtmp 方式来访问监控视频。但是由于随着 html5 的普及以及 flash 的停止更新,预计可预见的未来,rtmp 技术将随着 flash 一起行将就木(谷歌宣布 chrom 浏览器 2020 年 12 月将不再支持 flash player)。

    • http-flv

      http-flv 直播的方式是一种比较新颖的方式,该技术基于 html5,可以通过无插件的方式实现视频直播,而且由于 rtmp 负载可以平滑的转换成 http-flv 协议,所以正在逐渐取代 rtmp 成为新的直播技术标准,目前各大直播网站(譬如斗鱼直播,bilibili 等)也陆续从 rtmp 切换成该技术。 但是由于浏览器的限制,不能同时打开过多(chrome 限制 6 个)的同域名下的直播窗口,所以该技术也不太适合多路同时打开(譬如 9 宫格视频)的视频监控领域。而且由于 Adobe 的不作为,flv 容器格式停止了更新,对 H265 的支持遥遥无期。

    • ws-flv

      ws-flv 直播技术基本与 http-flv 一致,无非是传输介质换成了 websocket 协议,除了解除了 http-flv 不能同时打开过多同域名下的直播窗口的限制,其他技术特性、参数基本与 http-flv 一致。目前看,ws-flv 既适合视频监控(可以同时打开多路监控视频)也适合视频直播行业,是 rtmp 很高的升级替代方案。

    • webrtc

      webrtc 是谷歌主导的视频通话技术标准,目前各大主流浏览器都兼容该标准。通过该技术,用户可以在浏览器上实现无插件的视频通话,该技术也可以用于实现低延时的视频直播。目前业界也有很多基于 webrtc 的应用和产品,但是很多局限于视频聊天等低延时交互式场景,在视频监控领域,目前还尚未流行。而且该技术栈目前还在持续更新,技术难点太多,要与视频监控领域融合还需时日。

    • hls

      hls 协议是苹果公司主导的技术标准,该技术标准兼容性最佳。不仅桌面浏览器,包括手机浏览器甚至是手机 QQ、手机微信都支持该直播协议。 但是该协议延时比较大,不太适合视频监控等对延时要求很敏感的行业。不过最近苹果公司新推出低延时 hls 直播标准,预计 hls 标准将抢占更大的市场份额。

    以上直播技术标准目前都不完全契合视频监控行业的需求,如果要达到比较好的用户体验,通常以上技术混合使用。

    3、视频直播

    3.1 视频直播的现状和挑战

    视频直播是近几年才兴起的产业,特别是随着游戏直播、手机直播的流行,视频直播已经司空见惯,进入了每个人的视野。 随着阿里、腾讯等云平台的入局,OBS,SRS 等优秀软件的开源,视频加速 CDN 技术的成熟,打赏、广告等商业模式的落地,目前视频直播产业链已经非常成熟,业界也诞生了斗鱼、虎牙、映客、花椒等知名直播平台。

    目前而言,这些直播平台使用的技术栈基本都是 rtmp,但是由于 flash 技术即将被淘汰,所以直播行业也将迎来一些变局以及挑战。 现在,基本上所有的直播平台,在 web 端,都已经或正在往 http-flv 方案转型。由于 flv 与 rtmp 同出一门(都是 Adobe 公司产品),负载格式一致,方案升级改造平滑可靠,http-flv 替代 rtmp 具有天然的优势,相信将来 http-flv 能很好的挑起 rtmp 的大梁。

    3.2 发展趋势

    视频直播目前从内容上来讲,涵盖了游戏、美女、户外、娱乐、体育等直播;从设备上来讲,涵盖了 PC、手机、web、电视等客户端,市场上也诞生了斗鱼这样的头部企业。从目前来看,视频直播行业市场格局已经比较稳固,进入了平稳发展期。

    从技术上来讲,直播行业也将迎来一些变革。 一是 rtmp 技术随着 flash 的一起淘汰,web 端 rtmp 播放器将成为历史。 二是随着 webrtc 的强势流行,直播技术栈可能与 webrtc 融合。 三是苹果主导的低延时 hls 的推出,可能最终有大一统之势。

    不过近期来看,http-flv 是 rtmp 的最佳替代方案,但是和 rtmp 一样,也有不支持 H265 的短板,而且移动端浏览器对此支持并不完善,所以该方案在将来有大概率会被其他方案替代。

    3.3 技术难点

    直播行业相对视频监控行业来说,商业化程度更高,更面向于普通消费者,用户规模更大,产业链也更加成熟。但是由于利益格局的划分、巨头间标准制定的角力,目前直播的技术标准和用户体验是割裂的。

    在桌面 web 端,之前直播技术由 Adobe 旗下的 flash/rtmp 技术主导,不过由于 Adobe 的不作为,以及谷歌苹果等公司的抵制,flash 已经进入死亡倒计时。目前来看,http-flv 已经接手 rtmp 的大旗,成为了新的事实上的桌面 web 端直播标准。但是 http-flv 由于其不支持 H265 的短板(Adobe 官方可能永远也不会支持 H265),其地位也并不稳固,现在也有公司正在尝试使用 webrtc 进行视频直播,但是由于该技术跨界太大,其技术栈又太庞杂,整个上下游产业链也并不完善,目前在直播界,还未看见大规模采用该直播技术的方案实施。

    在手机 APP 端,由于播放技术自己可以主导,也由于历史沿革原因,目前一般沿用 rtmp 技术方案(需要指出的是微信小程序也支持 rtmp 播放器),用户体验比较好,延时一般 3 秒或以下。

    在移动 web 端,可采用的直播方案更少,目前基本只能采用苹果公司主导的 hls 方案,但是由于 hls 的技术特性,延时非常大(一般 5 秒以上,最大可达 10 秒以上),其观看体验跟手机 APP、桌面 web 端是严重割裂的。

    通过我们上述的分析看出,目前直播技术方案,在每种端都不一样,用户体验也差距巨大,目前并没有一种多平台支持、令人满意的通用解决方案。目前要实现一个完善的直播产品,最少要采用包括 rtmp/http-flv/hls 这 3 种技术方案,而且这三种技术方案目前也并不能让人满意(rtmp/http-flv 不支持 H265,hls 延时高)。

    4、我们的解决方案以及优势

    目前我们的流媒体服务框架支持 rtsp/rtmp 推流客户端,rtsp/rtmp/http-flv/ws-flv/hls 播放客户端,并且可以无缝把 rtsp/rtmp 推流转换成上述 4 种播放协议,同时我们也支持 mp4 录制存档,必要的时候也可以从 mp4 文件加载成直播流。

    除了上述功能之外,我们还支持拉流 rtsp/rtmp 代理成 rtsp/rtmp/http-flv/ws-flv/hls,也支持把直播 rtsp/rtmp 流推送到其他的服务器。

    另外,我们还提供丰富的 http api 以及 http hook api,通过这些 api,我们可以与其他业务服务器一起,打造丰富的业务逻辑。

    我们的流媒体框架支持 linux、macos、ios、android、windows 全平台,既可以作为商用的流媒体服务器,也可以移植到嵌入式设备中,作为基础流媒体服务组件。

    代码采用 C++11 标准打造,避免使用裸指针,稳定可靠,采用 epoll 多路复用、线程池、异步网络 IO 模式开发,并发性能优越,已经经受住了长期的高并发验证考验。同时针对及时推流的特征,做了特别的优化,可以减少视频打开延时、提高画面打开成功率,让用户获取画面秒开,延时极低的体验。

    + diff --git a/reference/documents/rtsp_push_process.html b/reference/documents/rtsp_push_process.html index 2a30fa9..c14f1e1 100644 --- a/reference/documents/rtsp_push_process.html +++ b/reference/documents/rtsp_push_process.html @@ -30,7 +30,7 @@ RTSP push streaming process | ZLMediaKit - + @@ -87,7 +87,7 @@ RTP-Info: url=rtsp://10.0.9.130:554/live/2.sdp/streamid=0,url=rtsp://10.0.9.130:554/live/2.sdp/streamid=1 Server: ZLMediaKit-4.0(build in Mar 26 2019 17:01:17) Session: KPUZ49ejotyD -
    - +
    + diff --git a/reference/documents/the_nature_of_live_broadcast_delay.html b/reference/documents/the_nature_of_live_broadcast_delay.html index 8821b56..b101753 100644 --- a/reference/documents/the_nature_of_live_broadcast_delay.html +++ b/reference/documents/the_nature_of_live_broadcast_delay.html @@ -30,11 +30,11 @@ The Essence of Live Streaming Delay | ZLMediaKit - + -
    Skip to main content

    The Essence of Live Streaming Delay

    ZLMediaKitAbout 2 min

    1. Live streaming is the representation of ongoing events, generating data as time passes.

    2. So why is there a delay in live streaming? The essence lies in the fact that, in order to enhance the user experience, live streaming caches a portion of historical data (such as using GOP caching to improve video loading speed).

    3. Does this mean that without GOP caching, there would be no delay? The answer is incorrect because not only does your server have a cache, but the player also has its own cache. There is a time difference between when the player clicks "Play" and when the video appears. Why does the player do this? The reason is to improve the smoothness of playback by implementing caching. We can consider the transmission of live streaming data to the player as a pipeline. Just like a pipeline can have varying water flow rates and even interruptions, if we don't use a "bucket" to buffer it, the video may stutter.

    4. Let's assume we remove all the caches from both the server and the player. Does that mean there would be no delay? Too young, too simple! Remember, caches can never be completely eliminated. Let's say the network is a water pipe, and we block it for 5 seconds before releasing it. Will the data from those 5 seconds disappear? No! Live streaming is an ongoing event, continuously generating "water flow." It will cause the pipe to expand. During those 5 seconds, the player has to wait for the data, and once the network is restored, the player will receive a surge of data from those 5 seconds. Then, the continuous flow of live streaming data resumes. As a result, the player ends up with an extra 5 seconds of data, which can either be discarded or played back at an accelerated speed. Otherwise, it will never magically disappear.

    5. Unfortunately, I have to tell you that almost all standard players do not directly discard data or accelerate playback speed.

    6. Now, an observant friend may ask, why does UDP live streaming have lower latency? The reason is that UDP, as a "pipe," has many holes, allowing excessive water to leak out. The result is direct data loss, causing the player to experience screen glitches.

    7. The expansion of the TCP pipeline can be understood as an increase in network link buffering (router buffering). What if there is too much water accumulation? First, it fills up the network link buffer, then the sending-side socket buffer, and then the sending-side application logic buffer. If there is still not enough space, I'm sorry, but the server has no choice but to sever the TCP connection.

    - +
    Skip to main content

    The Essence of Live Streaming Delay

    ZLMediaKitAbout 2 min

    1. Live streaming is the representation of ongoing events, generating data as time passes.

    2. So why is there a delay in live streaming? The essence lies in the fact that, in order to enhance the user experience, live streaming caches a portion of historical data (such as using GOP caching to improve video loading speed).

    3. Does this mean that without GOP caching, there would be no delay? The answer is incorrect because not only does your server have a cache, but the player also has its own cache. There is a time difference between when the player clicks "Play" and when the video appears. Why does the player do this? The reason is to improve the smoothness of playback by implementing caching. We can consider the transmission of live streaming data to the player as a pipeline. Just like a pipeline can have varying water flow rates and even interruptions, if we don't use a "bucket" to buffer it, the video may stutter.

    4. Let's assume we remove all the caches from both the server and the player. Does that mean there would be no delay? Too young, too simple! Remember, caches can never be completely eliminated. Let's say the network is a water pipe, and we block it for 5 seconds before releasing it. Will the data from those 5 seconds disappear? No! Live streaming is an ongoing event, continuously generating "water flow." It will cause the pipe to expand. During those 5 seconds, the player has to wait for the data, and once the network is restored, the player will receive a surge of data from those 5 seconds. Then, the continuous flow of live streaming data resumes. As a result, the player ends up with an extra 5 seconds of data, which can either be discarded or played back at an accelerated speed. Otherwise, it will never magically disappear.

    5. Unfortunately, I have to tell you that almost all standard players do not directly discard data or accelerate playback speed.

    6. Now, an observant friend may ask, why does UDP live streaming have lower latency? The reason is that UDP, as a "pipe," has many holes, allowing excessive water to leak out. The result is direct data loss, causing the player to experience screen glitches.

    7. The expansion of the TCP pipeline can be understood as an increase in network link buffering (router buffering). What if there is too much water accumulation? First, it fills up the network link buffer, then the sending-side socket buffer, and then the sending-side application logic buffer. If there is still not enough space, I'm sorry, but the server has no choice but to sever the TCP connection.

    + diff --git a/reference/index.html b/reference/index.html index 78c2912..8351f59 100644 --- a/reference/index.html +++ b/reference/index.html @@ -30,11 +30,11 @@ Reference | ZLMediaKit - + - - + + diff --git a/reference/resources/dependency.html b/reference/resources/dependency.html index d253ac0..4651c66 100644 --- a/reference/resources/dependency.html +++ b/reference/resources/dependency.html @@ -30,11 +30,11 @@ Dependency and Copyright | ZLMediaKit - + -
    Skip to main content

    Dependency and Copyright

    ZLMediaKitAbout 1 min

    I. ZLMediaKit's List of Dependent Libraries

    Dependent ComponentsLicense TypeRemarksProject Address
    ZLToolKitMITStrong dependency, ZLToolKit also partially depends on some open-source codeshttps://github.com/ZLMediaKit/ZLToolKit
    ireader/media-serverMITDefault dependency, can be removed when ENABLE_HLS, ENABLE_MP4, ENABLE_RTPPROXY are set to disabled at compile timehttps://github.com/ireader/media-server
    jsoncppMITMediaServer dependencyhttps://github.com/open-source-parsers/jsoncpp
    opensslApache-2.0Dependency when enabling SSL and WebRTC related features, can be removed when ENABLE_OPENSSL, ENABLE_WEBRTC are set to disabled at compile timehttps://github.com/openssl/openssl
    srtpSimilar to MITDependency when enabling WebRTC related features, can be removed when ENABLE_WEBRTC is set to disabled at compile timehttps://github.com/cisco/libsrtp
    usrsctpBSD-3-ClauseDependency when enabling WebRTC datachannel related features, can be removed when ENABLE_SCTP is set to disabled at compile timehttps://github.com/sctplab/usrsctp
    mediasoupISCSome WebRTC source code extracted from mediasoup, can be removed when ENABLE_WEBRTC is set to disabled at compile timehttps://github.com/versatica/mediasoup
    ffmpegGPL/LGPLThere's minor dependency with the transcoding branch and mk_api, can be removed when ENABLE_FFMPEG is set to disabled at compile time, default is disabledhttps://github.com/FFmpeg/FFmpeg
    wepollSimilar to MITDependency when ENABLE_WPOLL is enabled during Windows compilation, default is disabledhttps://github.com/piscisaureus/wepoll
    SPSParsersps/pps related parsing code, originated from a friend, modified, initially extracted from ffmpeg, copyright doubtfulhttps://github.com/ZLMediaKit/ZLMediaKit/blob/master/src/Extension/SPSParser.h

    II. Other Dependencies

    • SDL dependency when enabling the compilation of the test_player test program.
    • Dependencies on libx264 and libfacc when enabling x264/faac related features, default is disabled.
    • jemalloc dependency when enabling jemalloc, default is disabled.
    • Dependency on libmysql-clinet when enabling mysql connection pool feature, default is disabled.

    is sourced from githubopen in new window, after arrangement and modification.

    - +
    Skip to main content

    Dependency and Copyright

    ZLMediaKitAbout 1 min

    I. ZLMediaKit's List of Dependent Libraries

    Dependent ComponentsLicense TypeRemarksProject Address
    ZLToolKitMITStrong dependency, ZLToolKit also partially depends on some open-source codeshttps://github.com/ZLMediaKit/ZLToolKit
    ireader/media-serverMITDefault dependency, can be removed when ENABLE_HLS, ENABLE_MP4, ENABLE_RTPPROXY are set to disabled at compile timehttps://github.com/ireader/media-server
    jsoncppMITMediaServer dependencyhttps://github.com/open-source-parsers/jsoncpp
    opensslApache-2.0Dependency when enabling SSL and WebRTC related features, can be removed when ENABLE_OPENSSL, ENABLE_WEBRTC are set to disabled at compile timehttps://github.com/openssl/openssl
    srtpSimilar to MITDependency when enabling WebRTC related features, can be removed when ENABLE_WEBRTC is set to disabled at compile timehttps://github.com/cisco/libsrtp
    usrsctpBSD-3-ClauseDependency when enabling WebRTC datachannel related features, can be removed when ENABLE_SCTP is set to disabled at compile timehttps://github.com/sctplab/usrsctp
    mediasoupISCSome WebRTC source code extracted from mediasoup, can be removed when ENABLE_WEBRTC is set to disabled at compile timehttps://github.com/versatica/mediasoup
    ffmpegGPL/LGPLThere's minor dependency with the transcoding branch and mk_api, can be removed when ENABLE_FFMPEG is set to disabled at compile time, default is disabledhttps://github.com/FFmpeg/FFmpeg
    wepollSimilar to MITDependency when ENABLE_WPOLL is enabled during Windows compilation, default is disabledhttps://github.com/piscisaureus/wepoll
    SPSParsersps/pps related parsing code, originated from a friend, modified, initially extracted from ffmpeg, copyright doubtfulhttps://github.com/ZLMediaKit/ZLMediaKit/blob/master/src/Extension/SPSParser.h

    II. Other Dependencies

    • SDL dependency when enabling the compilation of the test_player test program.
    • Dependencies on libx264 and libfacc when enabling x264/faac related features, default is disabled.
    • jemalloc dependency when enabling jemalloc, default is disabled.
    • Dependency on libmysql-clinet when enabling mysql connection pool feature, default is disabled.

    is sourced from githubopen in new window, after arrangement and modification.

    + diff --git a/reference/resources/index.html b/reference/resources/index.html index e5c6cf5..0f727ee 100644 --- a/reference/resources/index.html +++ b/reference/resources/index.html @@ -30,11 +30,11 @@ Resources | ZLMediaKit - + - - + + diff --git a/reference/resources/rtmp_support_for_h265_and_opus.html b/reference/resources/rtmp_support_for_h265_and_opus.html index ffc730b..7d17269 100644 --- a/reference/resources/rtmp_support_for_h265_and_opus.html +++ b/reference/resources/rtmp_support_for_h265_and_opus.html @@ -30,11 +30,11 @@ RTMP supports H265 and OPUS | ZLMediaKit - + -
    Skip to main content

    RTMP supports H265 and OPUS

    ZLMediaKitLess than 1 minute

    Background

    RTMP/FLV is the de facto standard in the live streaming industry, and they are widely used in the domestic live streaming field. To achieve plugin-free low-latency live streaming playback in web browsers, RTMP/FLV is essential. Since RTMP/FLV is a proprietary protocol designed by Adobe, it does not natively support H.265 (widely used in video surveillance applications) and Opus (widely used in RTC applications). However, there is a growing demand for live streaming infrastructure in the video surveillance and RTC industries. Therefore, it is important to modify RTMP to add support for H.265 and Opus.

    Implementation Approach

    RTMP determines the encoding format through codec ID and distinguishes data types (including audio packets and video packets) through message type. Therefore, the codec_id for audio and video can be the same as long as they are of the same type and do not conflict. For example, the codec ID for H.264 is 7, and the codec ID for G.711A is also 7. Currently, the default codec ID for H.265 in China is 12 (implemented and published by 金山云open in new window). As for the RTMP extension for Opus, there is currently no widespread consensus. After discussions with relevant individuals, the author has negotiated and defined its codec ID as 13. The modification has already been implemented for FFmpeg (based on the latest version) to add support forh265/opus RTMP extensionopen in new window.

    Server Implementation

    ZLMediaKit has already implemented comprehensive support for H.265/Opus in RTSP/RTMP/MP4/HLS. Feel free to test and use it.

    - +
    Skip to main content

    RTMP supports H265 and OPUS

    ZLMediaKitLess than 1 minute

    Background

    RTMP/FLV is the de facto standard in the live streaming industry, and they are widely used in the domestic live streaming field. To achieve plugin-free low-latency live streaming playback in web browsers, RTMP/FLV is essential. Since RTMP/FLV is a proprietary protocol designed by Adobe, it does not natively support H.265 (widely used in video surveillance applications) and Opus (widely used in RTC applications). However, there is a growing demand for live streaming infrastructure in the video surveillance and RTC industries. Therefore, it is important to modify RTMP to add support for H.265 and Opus.

    Implementation Approach

    RTMP determines the encoding format through codec ID and distinguishes data types (including audio packets and video packets) through message type. Therefore, the codec_id for audio and video can be the same as long as they are of the same type and do not conflict. For example, the codec ID for H.264 is 7, and the codec ID for G.711A is also 7. Currently, the default codec ID for H.265 in China is 12 (implemented and published by 金山云open in new window). As for the RTMP extension for Opus, there is currently no widespread consensus. After discussions with relevant individuals, the author has negotiated and defined its codec ID as 13. The modification has already been implemented for FFmpeg (based on the latest version) to add support forh265/opus RTMP extensionopen in new window.

    Server Implementation

    ZLMediaKit has already implemented comprehensive support for H.265/Opus in RTSP/RTMP/MP4/HLS. Feel free to test and use it.

    + diff --git a/reference/resources/video_conferencing_related_resources.html b/reference/resources/video_conferencing_related_resources.html index 007ebee..66fb809 100644 --- a/reference/resources/video_conferencing_related_resources.html +++ b/reference/resources/video_conferencing_related_resources.html @@ -30,11 +30,11 @@ Video Conference Related Resources | ZLMediaKit - + - - + + diff --git a/reference/resources/zltoolkit_source_code_study_notes.html b/reference/resources/zltoolkit_source_code_study_notes.html index 2b1a5ea..cd25373 100644 --- a/reference/resources/zltoolkit_source_code_study_notes.html +++ b/reference/resources/zltoolkit_source_code_study_notes.html @@ -30,11 +30,11 @@ ZLToolKit source code study notes | ZLMediaKit - + - - + + diff --git a/reference/test/benchmark.html b/reference/test/benchmark.html index 8fe5696..75eb590 100644 --- a/reference/test/benchmark.html +++ b/reference/test/benchmark.html @@ -30,11 +30,11 @@ Benchmark | ZLMediaKit - + -
    Skip to main content

    Benchmark

    ZLMediaKitLess than 1 minute

    This test is severely outdated and is not indicative.

    Test Environment

    • System: Linux core 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux
    • Memory: 15GB
    • CPU: Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz; 4 cores
    • Network: Gigabit Ethernet
    • The test is conducted by accessing the server through a loopback network on the test client.

    Test Tools

    ZLMeidaKit comes with a test benchmark program called test_benchmark, which uses a single-process multi-threaded model.

    Test Server

    ZLMeidaKit includes a test server called test_server, which supports RTSP/RTMP/HLS protocols and uses a multi-threaded model.

    Test Media Stream

    The test_server pulls an RTMP stream rtmp://live.hkstv.hk.lxdns.com/live/hks1 and then forwards it using the test_server. The approximate bitrate of the stream is around 300-400 Kbit/s.

    Test Results

    Note

    When building with CMake, use the command cmake .. -DCMAKE_BUILD_TYPE=Release to compile the optimized version.

    Number of Players (RTMP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
    100020%702M/13M40 MByte/sNone
    200039%702M/18M80 MByte/sNone
    500092%702M/32M200 MByte/sNone
    10000170%702M/59M400 MByte/sNone
    Number of Players (RTSP/TCP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
    100018%702M/13M42 MByte/sNone
    200035%702M/19M82 MByte/sNone
    500080%702M/35M198 MByte/sNone
    10000130%702M/62M405 MByte/sNone

    Comparison with SRS Performance

    Number of Players (RTMP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
    100010%310M/53M41.17 MByte/sNone
    200018%604M/117M83.86 MByte/sNone
    - +
    Skip to main content

    Benchmark

    ZLMediaKitLess than 1 minute

    This test is severely outdated and is not indicative.

    Test Environment

    • System: Linux core 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux
    • Memory: 15GB
    • CPU: Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz; 4 cores
    • Network: Gigabit Ethernet
    • The test is conducted by accessing the server through a loopback network on the test client.

    Test Tools

    ZLMeidaKit comes with a test benchmark program called test_benchmark, which uses a single-process multi-threaded model.

    Test Server

    ZLMeidaKit includes a test server called test_server, which supports RTSP/RTMP/HLS protocols and uses a multi-threaded model.

    Test Media Stream

    The test_server pulls an RTMP stream rtmp://live.hkstv.hk.lxdns.com/live/hks1 and then forwards it using the test_server. The approximate bitrate of the stream is around 300-400 Kbit/s.

    Test Results

    Note

    When building with CMake, use the command cmake .. -DCMAKE_BUILD_TYPE=Release to compile the optimized version.

    Number of Players (RTMP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
    100020%702M/13M40 MByte/sNone
    200039%702M/18M80 MByte/sNone
    500092%702M/32M200 MByte/sNone
    10000170%702M/59M400 MByte/sNone
    Number of Players (RTSP/TCP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
    100018%702M/13M42 MByte/sNone
    200035%702M/19M82 MByte/sNone
    500080%702M/35M198 MByte/sNone
    10000130%702M/62M405 MByte/sNone

    Comparison with SRS Performance

    Number of Players (RTMP)CPU (Max 400%)Memory (VIRT/RES)Bandwidth (Average)Packet Loss
    100010%310M/53M41.17 MByte/sNone
    200018%604M/117M83.86 MByte/sNone
    + diff --git a/reference/test/delay_test.html b/reference/test/delay_test.html index c67b2bc..48b8435 100644 --- a/reference/test/delay_test.html +++ b/reference/test/delay_test.html @@ -30,11 +30,11 @@ Delay Testing | ZLMediaKit - + -
    Skip to main content

    Delay Testing

    ZLMediaKitAbout 2 min

    Note

    This test was conducted earlier, and some content may have become outdated. The ultraLowDelay configuration option has been removed. To achieve the lowest delay mode, set the combined write delay to 0 (default is 0). When testing the delay, you can use WebRTC playback.

    Network Environment

    • localhost

    Operating System

    • macOS

    Server

    • MediaServer, startup parameter -t 1, single-threaded startup
    • Open the configuration file and enable ultraLowDelay mode

    Streaming Software

    • obs, RTMP streaming to localhost
    • Rate Control: CBR
    • Bitrate: 2500
    • Custom Buffer Size: 100
    • Keyframe Interval: 2 seconds
    • CPU Usage Preset: ultrafast
    • Profile: baseline
    • Tune: zerolatency
    • Resolution: 1280x720
    • FPS: 30 image

    Player

    • Built-in test_player
    • Play RTSP (test both UDP and TCP modes) or RTMP on localhost

    Testing Method

    • Open a browser and go to the online stopwatch webpage https://miaobiao.51240.com/
    • Configure OBS to capture the stopwatch section of the browser image and start streaming to MediaServer
    • Open the test_player and play the corresponding RTSP or RTMP URL
    • Use a screenshot tool to capture the frames and compare the time difference between the online stopwatch webpage and the test_player

    Test Results

    • RTMP playback, delay of 200ms to 400ms imageimage

    • RTSP playback (TCP mode), delay of 200ms to 400ms imageimage

    • RTSP playback (UDP mode), delay of 200ms to 400ms imageimage

    Test Conclusion

    • In the single-threaded mode, where the player and streaming software are in the same thread without any thread switching, the delay is slightly more stable and lower.
    • Enabling TCP_NODELAY and disabling MSG_MORE did not significantly optimize the delay in this test.
    • The average delay from multiple screenshots is around 300ms, with a minimum of around 200ms and a maximum of over 400ms.
    • Back in 2017, when I developed my own streaming software (unfortunately, I didn't save the .exe file), I was able to achieve a minimum delay of around 120ms, which is currently not achievable. It is suspected that OBS still has relatively high streaming delay.
    • It is recommended to disable audio during streaming tests. For encoding formats like AAC, the encoding delay can exceed 100ms.
    • This test was conducted on macOS. Ideally, the server would be Linux, the streaming software would be on Windows, and if the player rendering is done independently, the delay could be even lower.
    • Those interested can conduct tests on Windows. In 2017, when I tested it on a local network, with the streaming software, server, and player not on the same host, the delay was as low as 120ms. It should be even lower with localhost.
    - +
    Skip to main content

    Delay Testing

    ZLMediaKitAbout 2 min

    Note

    This test was conducted earlier, and some content may have become outdated. The ultraLowDelay configuration option has been removed. To achieve the lowest delay mode, set the combined write delay to 0 (default is 0). When testing the delay, you can use WebRTC playback.

    Network Environment

    • localhost

    Operating System

    • macOS

    Server

    • MediaServer, startup parameter -t 1, single-threaded startup
    • Open the configuration file and enable ultraLowDelay mode

    Streaming Software

    • obs, RTMP streaming to localhost
    • Rate Control: CBR
    • Bitrate: 2500
    • Custom Buffer Size: 100
    • Keyframe Interval: 2 seconds
    • CPU Usage Preset: ultrafast
    • Profile: baseline
    • Tune: zerolatency
    • Resolution: 1280x720
    • FPS: 30 image

    Player

    • Built-in test_player
    • Play RTSP (test both UDP and TCP modes) or RTMP on localhost

    Testing Method

    • Open a browser and go to the online stopwatch webpage https://miaobiao.51240.com/
    • Configure OBS to capture the stopwatch section of the browser image and start streaming to MediaServer
    • Open the test_player and play the corresponding RTSP or RTMP URL
    • Use a screenshot tool to capture the frames and compare the time difference between the online stopwatch webpage and the test_player

    Test Results

    • RTMP playback, delay of 200ms to 400ms imageimage

    • RTSP playback (TCP mode), delay of 200ms to 400ms imageimage

    • RTSP playback (UDP mode), delay of 200ms to 400ms imageimage

    Test Conclusion

    • In the single-threaded mode, where the player and streaming software are in the same thread without any thread switching, the delay is slightly more stable and lower.
    • Enabling TCP_NODELAY and disabling MSG_MORE did not significantly optimize the delay in this test.
    • The average delay from multiple screenshots is around 300ms, with a minimum of around 200ms and a maximum of over 400ms.
    • Back in 2017, when I developed my own streaming software (unfortunately, I didn't save the .exe file), I was able to achieve a minimum delay of around 120ms, which is currently not achievable. It is suspected that OBS still has relatively high streaming delay.
    • It is recommended to disable audio during streaming tests. For encoding formats like AAC, the encoding delay can exceed 100ms.
    • This test was conducted on macOS. Ideally, the server would be Linux, the streaming software would be on Windows, and if the player rendering is done independently, the delay could be even lower.
    • Those interested can conduct tests on Windows. In 2017, when I tested it on a local network, with the streaming software, server, and player not on the same host, the delay was as low as 120ms. It should be even lower with localhost.
    + diff --git a/reference/test/how_to_test_delay.html b/reference/test/how_to_test_delay.html index 7c05da5..70dbb61 100644 --- a/reference/test/how_to_test_delay.html +++ b/reference/test/how_to_test_delay.html @@ -30,12 +30,12 @@ How to test the delay? | ZLMediaKit - +
    Skip to main content

    How to test the delay?

    ZLMediaKitAbout 3 min

    Introduction

    Some users often ask me in the group why there is a several seconds delay when using ZLMediaKit for stream playback or stream forwarding. Sometimes, the delay can be as long as more than 10 seconds or even half a minute for HLS. The purpose of this article is to clarify the misunderstanding about delay.

    What is Delay

    Many users do not fully understand what delay means. They think that the time difference between the displayed frames of any player and the original stream frames is the delay, but this is actually the biggest misconception about delay. Delay is not superficial. Many people are not professional when testing delay and have insufficient understanding of the professionalism of delay testing. I would like to remind everyone that not every player is qualified to perform delay testing!

    In summary, the overall delay consists of the following components:

    • Capture Delay

      When capturing camera or graphics card frames, there is a certain delay in capturing the frames as YUV/RGB data due to limitations such as fps, CPU performance, and memory copying speed. Generally, the delay is in the millisecond range. Since general encoders have restrictions on input data formats, such as requiring consistent input of YUV420P, there will also be a delay in the conversion calculation when converting RGB to YUV420P (this can be reduced using the libyuv library). In general, the capture delay is about milliseconds. If the fps is 30, the capture delay will generally be more than 30 milliseconds, and there may be additional milliseconds of delay during memory copying and color conversion.

    • Encoding Delay

      When inputting the original frames into the encoder, the encoded data is not immediately output, especially when B-frames are enabled. Since B-frames require referencing the following P-frames, the delay will be greater. Therefore, in delay-sensitive situations, B-frames are generally not enabled, and in such cases, the encoding delay should be in the millisecond range and not very high.

    • Upstream Network Transmission Delay

      After the data is encoded, it needs to be packed into a certain protocol before being written to the socket and transmitted to the streaming server or stream proxy server. Protocol packing involves a certain amount of memory copying and computation, which can increase the delay. However, this delay is very small and can be basically ignored. When uploading data to the server, this delay can be large or small, depending on the network quality.

    • Server Protocol Conversion Delay

      After the server receives the data, it needs to perform operations such as reading socket buffer, protocol parsing, demultiplexing, and repacking. However, overall, this delay is relatively small and has little impact. Sometimes, to improve performance, the server may use a mechanism of batching writes, which means that it will forward the data only after receiving a certain amount of data. This delay is generally a few hundred milliseconds, with ZLMediaKit defaulting to around 300 milliseconds. However, ZLMediaKit has this batching write feature disabled by default, so this delay is also very small.

    • Downstream Network Delay

      When streaming media forwards video data to the player, there will be a delay caused by network transmission, the size of which depends on the network quality. When low-latency mode is disabled in ZLMediaKit, there will also be additional delay due to the use of MSG_MORE and the disabling of TCP_NODELAY, but low-latency mode is enabled by default in ZLMediaKit.

    • Player Delay

      Player delay consists of network reception delay, protocol parsing and demultiplexing delay, decoding delay, cache delay, and rendering delay. Among these delays, the cache delay is the largest. In order to ensure smooth video playback in case of network jitter, general players increase the delay by adding playback buffers. This way, when the network deteriorates, the playback buffering can prevent video stuttering. Moreover, in order to achieve audio-video synchronization, a certain amount of buffering must be ensured. This type of delay is generally in the seconds range, typically around 5 seconds.

    • Player GOP Cache Delay

      To display the video immediately, streaming media servers often cache the most recent I-frame, and all subsequent audio-video data after this I-frame is referred to as the GOP (Group of Pictures) cache. If the GOP is not cached, the player has to wait for the next I-frame to successfully decode the video or avoid screen flickering. Obviously, to improve the playback experience, this GOP cache cannot be eliminated. Generally, the GOP duration can be as short as 1-3 seconds or as long as tens of seconds, depending on the settings of the capture-side encoder, which the server cannot change. However, since general players do not discard too many frames after receiving the cache to ensure low latency, and players also want to have a certain amount of buffering to ensure smooth playback, this GOP cache will increase the player's delay.

    • Overall Delay

      The sum of all the aforementioned delays is the perceived delay you observe. Sowhen you see a delay in stream playback or stream forwarding using ZLMediaKit, it is a combination of all these factors. It's important to understand that some delays are inherent to the streaming process and cannot be completely eliminated. However, there are ways to optimize the delay and minimize its impact.

    How to Test Delay

    Testing delay with general players like VLC is unprofessional. The delay in these players is at least in the order of seconds. In order to achieve smooth playback and audio/video synchronization, these players cannot provide you with real-time delay data.

    Here, I strongly recommend that you write your own bufferless player to test the delay. However, this is obviously beyond the ability of most people. Therefore, ZLMediaKit provides a simple player for testing delay: test_playeropen in new window

    What? You're telling me you don't know how to compile ZLMediaKit? Well, in that case, I suggest you use WebRTC player to test the delay. You can also use ffplay:

    ffplay -i rtmp://xxxxxxx -fflags nobuffer
    -

    If you don't know how to install ffplay, you can download a precompiled version from hereopen in new window.

    More Information About Delay

    The Essence of Live Broadcast Delay

    Delay-related Testing

    - +

    If you don't know how to install ffplay, you can download a precompiled version from hereopen in new window.

    More Information About Delay

    The Essence of Live Broadcast Delay

    Delay-related Testing

    + diff --git a/reference/test/index.html b/reference/test/index.html index 86f1a7e..46a5954 100644 --- a/reference/test/index.html +++ b/reference/test/index.html @@ -30,11 +30,11 @@ Testing | ZLMediaKit - + - - + + diff --git a/reference/test/online_test.html b/reference/test/online_test.html index fccdcce..4afb831 100644 --- a/reference/test/online_test.html +++ b/reference/test/online_test.html @@ -30,11 +30,11 @@ Online test | ZLMediaKit - + -
    Skip to main content

    Online test

    ZLMediaKitLess than 1 minute

    Testing Url

    • http/hls/http-flv/ws-flv: http://zlmediakit.com:8888/
    • https: https://zlmediakit.com/
    • rtsp: zlmediakit.com:554
    • rtmp: zlmediakit.com:1935
    • GB28181 UDP/TCP: zlmediakit.com:10000

    Start testing

    Push testPlay test

    - +
    Skip to main content

    Online test

    ZLMediaKitLess than 1 minute

    Testing Url

    • http/hls/http-flv/ws-flv: http://zlmediakit.com:8888/
    • https: https://zlmediakit.com/
    • rtsp: zlmediakit.com:554
    • rtmp: zlmediakit.com:1935
    • GB28181 UDP/TCP: zlmediakit.com:10000

    Start testing

    Push testPlay test

    + diff --git a/reference/test/performance_testing.html b/reference/test/performance_testing.html index 14cc692..ab3b7ed 100644 --- a/reference/test/performance_testing.html +++ b/reference/test/performance_testing.html @@ -30,11 +30,11 @@ Performance Testing | ZLMediaKit - + -
    Skip to main content

    Performance Testing

    ZLMediaKitLess than 1 minute

    1. Latest Performance Test:

    1.1 Test Environment

    • CPU: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz, 4 cores, 8 threads
    • Operating System: CentOS release 6.3 (Final)
    • Memory: 16GB
    • Network Card: 127.0.0.1
    • Test Stream: 200kbps.768x320.flvopen in new window
    • Compiler: gcc (GCC) 8.2.0
    • Compilation Type: Release

    1.2 Test Data

    There were inaccuracies in the memory usage during the push streaming performance test (due to a multi-GOP caching bug at the time of testing).

    Client TypeStream CountCPUMemoryNetwork IOTheoretical Performance of 4 Physical Cores
    RTSP Play20K160%203M5Gb/sApproximately 100K
    RTSP Play32.2K235%220M7.78Gb/sApproximately 100K
    RTSP Push10K264%760M2.39Gb/sApproximately 30K
    RTMP Play10K148%81M2.33Gb/sApproximately 50K
    RTMP Play30K450%246M7Gb/sApproximately 50K
    RTMP Push10K224%1.6G2.16Gb/sApproximately 30K

    1.3 Detailed Test Data

    2. Earlier Performance Test Records

    3. Performance Testing and Optimization

    - +
    Skip to main content

    Performance Testing

    ZLMediaKitLess than 1 minute

    1. Latest Performance Test:

    1.1 Test Environment

    • CPU: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz, 4 cores, 8 threads
    • Operating System: CentOS release 6.3 (Final)
    • Memory: 16GB
    • Network Card: 127.0.0.1
    • Test Stream: 200kbps.768x320.flvopen in new window
    • Compiler: gcc (GCC) 8.2.0
    • Compilation Type: Release

    1.2 Test Data

    There were inaccuracies in the memory usage during the push streaming performance test (due to a multi-GOP caching bug at the time of testing).

    Client TypeStream CountCPUMemoryNetwork IOTheoretical Performance of 4 Physical Cores
    RTSP Play20K160%203M5Gb/sApproximately 100K
    RTSP Play32.2K235%220M7.78Gb/sApproximately 100K
    RTSP Push10K264%760M2.39Gb/sApproximately 30K
    RTMP Play10K148%81M2.33Gb/sApproximately 50K
    RTMP Play30K450%246M7Gb/sApproximately 50K
    RTMP Push10K224%1.6G2.16Gb/sApproximately 30K

    1.3 Detailed Test Data

    2. Earlier Performance Test Records

    3. Performance Testing and Optimization

    + diff --git a/reference/test/rtmp_pull_stream_performance_test.html b/reference/test/rtmp_pull_stream_performance_test.html index b2af39a..60de566 100644 --- a/reference/test/rtmp_pull_stream_performance_test.html +++ b/reference/test/rtmp_pull_stream_performance_test.html @@ -30,7 +30,7 @@ rtmp pull stream performance test | ZLMediaKit - + @@ -80,7 +80,7 @@ ulimit -n 102400 #启动1万个rtmp拉流 ./test_bench_pull -c 30000 -i rtmp://127.0.0.1/live/test -
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 7.09Gb/s):
    图片
    图片
    - +
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 7.09Gb/s):
    图片
    图片
    + diff --git a/reference/test/rtmp_push_stream_performance_test.html b/reference/test/rtmp_push_stream_performance_test.html index 780ce2f..3bcd6af 100644 --- a/reference/test/rtmp_push_stream_performance_test.html +++ b/reference/test/rtmp_push_stream_performance_test.html @@ -30,7 +30,7 @@ rtmp push stream performance test | ZLMediaKit - + @@ -76,7 +76,7 @@ ulimit -n 102400 #启动1万个rtmp推流 ./test_bench_push -i rtmp://127.0.0.1/live/test -c 10000 -o rtmp://127.0.0.1/live/push -
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 2.16Gb/s):
    图片
    图片
    - +
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 2.16Gb/s):
    图片
    图片
    + diff --git a/reference/test/rtsp_pull_stream_performance_test.html b/reference/test/rtsp_pull_stream_performance_test.html index 4ae80cb..bd10417 100644 --- a/reference/test/rtsp_pull_stream_performance_test.html +++ b/reference/test/rtsp_pull_stream_performance_test.html @@ -30,7 +30,7 @@ rtsp pull stream performance test | ZLMediaKit - + @@ -80,7 +80,7 @@ ulimit -n 102400 #启动4万个rtsp拉流 ./test_bench_pull -c 40000 -i rtsp://127.0.0.1/live/test -
    • 发现由于随机端口不够,有些播放器掉线(只剩 32244 个): 图片

    • top 信息:

    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 7.78Gb/s):
    图片
    图片
    - +
    • 发现由于随机端口不够,有些播放器掉线(只剩 32244 个): 图片

    • top 信息:

    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 7.78Gb/s):
    图片
    图片
    + diff --git a/reference/test/rtsp_push_stream_performance_test.html b/reference/test/rtsp_push_stream_performance_test.html index 9c1fc8b..1a7ab99 100644 --- a/reference/test/rtsp_push_stream_performance_test.html +++ b/reference/test/rtsp_push_stream_performance_test.html @@ -30,7 +30,7 @@ rtsp push stream performance test | ZLMediaKit - + @@ -76,7 +76,7 @@ ulimit -n 102400 #启动1万个rtmp推流 ./test_bench_push -i rtmp://127.0.0.1/live/test -c 10000 -o rtsp://127.0.0.1/live/push -
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 2.39Gb/s):
    图片
    图片
    - +
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 2.39Gb/s):
    图片
    图片
    + diff --git a/service-worker.js b/service-worker.js index 9cabf5d..b608b51 100644 --- a/service-worker.js +++ b/service-worker.js @@ -1,2 +1,2 @@ -if(!self.define){let e,s={};const a=(a,i)=>(a=new URL(a+".js",i).href,s[a]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()})).then((()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e})));self.define=(i,r)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(s[t])return;let c={};const d=e=>a(e,t),n={module:{uri:t},exports:c,require:d};s[t]=Promise.all(i.map((e=>n[e]||d(e)))).then((e=>(r(...e),c)))}}define(["./workbox-dbb64b4e"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.clientsClaim(),e.precacheAndRoute([{url:"assets/404.html-aQJ09P_F.js",revision:"76f3c96a47b4621ba8ce69fcbd885f68"},{url:"assets/404.html-rHboC4Yl.js",revision:"aed041663f65cb125fd20b9867368f78"},{url:"assets/app-RP31lnfq.js",revision:"b5deb434f0a33493a47446e416aa1268"},{url:"assets/arc-IaSnKFUc.js",revision:"30374cd75314969bdd67fc7cf8103b86"},{url:"assets/array-Nw74a44z.js",revision:"17dcebeaf673b09a1ca5da014d20022f"},{url:"assets/benchmark.html-gZd5EMM7.js",revision:"c3a806b24ac4f981f2be8706a3d240ee"},{url:"assets/benchmark.html-MSc66SxZ.js",revision:"dc32b8c22dbcb74830e677d297b170b6"},{url:"assets/benchmark.html-Xmdk2BGM.js",revision:"519bcf99829af67bfc5793acb6990917"},{url:"assets/benchmark.html-xQUFyhUw.js",revision:"0b93d042729a80ed7f7b41c6aac852a4"},{url:"assets/c4Diagram-817c8e44-ubRVp6pW.js",revision:"144d3e1f8f037c830c5fe75bbd1d502b"},{url:"assets/classDiagram-48ab76fb-VgeeOHT1.js",revision:"4e3704bd6f6e56f18d6e81959b18c0f3"},{url:"assets/classDiagram-v2-8ecb0bfc-bhA94s1K.js",revision:"6a334073de92a57871983c76337138db"},{url:"assets/collaborative_projects.html-15UQQvPG.js",revision:"aca89aea107c131135d843d7880f76b6"},{url:"assets/collaborative_projects.html-gRvZJ2_P.js",revision:"21258323cc48008377e663bcb4b9ccc3"},{url:"assets/collaborative_projects.html-jP_gBiJf.js",revision:"583cc22479ec92a5b098d8e065508a06"},{url:"assets/collaborative_projects.html-zAkyRydI.js",revision:"9ac26771a854c4dcde5c68a1c0f3733c"},{url:"assets/compilation_instructions_for_windows_version.html-3EBfQXLm.js",revision:"0a70b2ddf8660da416278dc1600e1247"},{url:"assets/compilation_instructions_for_windows_version.html-Hq0AuZTz.js",revision:"66feea9dae54928e3a2bb2f7a51bc417"},{url:"assets/compilation_instructions_for_windows_version.html-xl0PwINJ.js",revision:"ee73eff391cf2201c2517e705bc2e91c"},{url:"assets/compilation_instructions_for_windows_version.html-xnA-vKUQ.js",revision:"089c52b8af6454c375daaa93ea84b408"},{url:"assets/config_file.html-5j1Bx0Jx.js",revision:"591d662b3e72f0b21c92319d03a2e17c"},{url:"assets/config_file.html-e7VlJmFs.js",revision:"a3c776477c95546a2b79b18421d5ee58"},{url:"assets/config_file.html-i3ELg7s5.js",revision:"05d0fdfd1621df427f889e3dfb54050c"},{url:"assets/config_file.html-NeQ-HnE0.js",revision:"c83c527b8bba960502e0ce7915155156"},{url:"assets/contact.html-_Z6vlVkO.js",revision:"06843d9e63a73c9679f7b91f5b73c48f"},{url:"assets/contact.html-JZn2Qe3S.js",revision:"3b0cff6bdd2f86d63af834b85619f888"},{url:"assets/contact.html-nPftNmfa.js",revision:"c55df9245c21c481a492bf69830d5eea"},{url:"assets/contact.html-XWW2pZ29.js",revision:"0b951bd788c1b31fccea7115275bec02"},{url:"assets/createText-aebacdfe-CTBuskZ8.js",revision:"afdfd84da0d7462ac3cf8b0b199ea85a"},{url:"assets/delay_test.html-_QomqbNh.js",revision:"05e99497e62f35bf7dbea382401387f5"},{url:"assets/delay_test.html-dT3kgdCj.js",revision:"43f900f4b61b8881f4680b57bde2786f"},{url:"assets/delay_test.html-nuUiWXnv.js",revision:"40b63dad96fad312e289145653a4958a"},{url:"assets/delay_test.html-wn_gavSy.js",revision:"58727c3fb24e76033f9bb56194a715ff"},{url:"assets/dependency.html-kZHrVdhi.js",revision:"9ca975aa595ee87dd32375a5dcd28c59"},{url:"assets/dependency.html-re6FQDQF.js",revision:"8cda099d3a7b9acad4148cc502de62f8"},{url:"assets/dependency.html-vliHx4sJ.js",revision:"133156fbc8cde50f0cb079c965bc9d05"},{url:"assets/dependency.html-WFMeX_wi.js",revision:"d5dce666ed6fe2b23eb481b42b0125c9"},{url:"assets/edges-80f1ebb6-89E8mCFH.js",revision:"f2dee209804d1fd27aee54258722577f"},{url:"assets/erDiagram-9cfc3649-xP3o3QeA.js",revision:"3602a8855cc6cd8388a71e710c11978e"},{url:"assets/exclusive_features.html-2siFVq2G.js",revision:"3f63eed8e945a5d96317576aa72a604e"},{url:"assets/exclusive_features.html-PNsKskwv.js",revision:"3709624bc2b8b200ece872acc3ad11fd"},{url:"assets/exclusive_features.html-Qj0lJyo5.js",revision:"67e1e35ee73ac573382fbee53e0054c7"},{url:"assets/exclusive_features.html-wTOG2Bjt.js",revision:"908ef27f27bc5f36054d486537a4f6e3"},{url:"assets/flowchart-elk-definition-e097735e-FPGtu502.js",revision:"99ca5fe79505c2152c03324b23f10632"},{url:"assets/flowDb-170db09d-pscdJplr.js",revision:"f012741a879169d1cc65bd3367acd5f3"},{url:"assets/flowDiagram-61eb444c-dTODa_2O.js",revision:"aa3e1b4cc525e5f6c0cfe2346a9820b7"},{url:"assets/flowDiagram-v2-2f8f667a-17CncbGG.js",revision:"ba8b5bdffaca3c2149109c0de3a55fc1"},{url:"assets/ganttDiagram-db6931fb-PbozmIQo.js",revision:"e13314b1c38f2ad32b92a869b5a912dc"},{url:"assets/gb28181_push_streaming_4-qWTnfswt.js",revision:"30c7b622101f90395cc790c0e72e1cf9"},{url:"assets/gb28181_sip_signaling_packet_capture.html-_63zZLPQ.js",revision:"298c5cd5ce0ee80b0433ed54d5c1d647"},{url:"assets/gb28181_sip_signaling_packet_capture.html-5xl0QuEj.js",revision:"fedddc5e7fd4901d01c48a50c4ae15e2"},{url:"assets/gb28181_sip_signaling_packet_capture.html-9YuNK2eX.js",revision:"fedddc5e7fd4901d01c48a50c4ae15e2"},{url:"assets/gb28181_sip_signaling_packet_capture.html-dSB5oqMq.js",revision:"dbfc86980d308e1204aa23121f175f5c"},{url:"assets/generate_ssl_self-signed_certificate_and_test-D4Sbj3Ls.js",revision:"616544c7f95d53f29de519db0674f52c"},{url:"assets/generate_ssl_self-signed_certificate_and_test.html-7V6eG0vA.js",revision:"2900e1d4092c29de10d34afb5c4c753c"},{url:"assets/generate_ssl_self-signed_certificate_and_test.html-kbzAeWE6.js",revision:"b09a1dd2b0edc0f2a89f6d1a3051b919"},{url:"assets/generate_ssl_self-signed_certificate_and_test.html-oJ11zSxb.js",revision:"ed68faa861513799ad5e8313143d794c"},{url:"assets/generate_ssl_self-signed_certificate_and_test.html-qSLRuImw.js",revision:"e5b9c6794282f1b0fe700d22af21f5d2"},{url:"assets/giscus-unEZQsJ0.js",revision:"34c4288ad53e7d9be8d0f44c9fdba069"},{url:"assets/gitGraphDiagram-6b463803-qYmaBvlu.js",revision:"4ad9e14bf4e262ff20fabcc5e2258747"},{url:"assets/high_concurrency_implementation_principle.html-6GveguVT.js",revision:"bf09718f42fcdebbeb664094e3f33eb9"},{url:"assets/high_concurrency_implementation_principle.html-opQWc8aM.js",revision:"2fb1a4c2f74fc52046100556dc28ff26"},{url:"assets/high_concurrency_implementation_principle.html-sl-nIpjv.js",revision:"7a20b2d70a9e4eae865ef6ea53a0ce00"},{url:"assets/high_concurrency_implementation_principle.html-YdXhhjaV.js",revision:"4c6b13e8203af820f2e91a277be797c7"},{url:"assets/hls_high_performance_journey.html-bBajAqE1.js",revision:"7d3ea5c0f10f1014295bebf7364f6d48"},{url:"assets/hls_high_performance_journey.html-bLztstJM.js",revision:"1de12ca696da6d2fc7345df858d95fe2"},{url:"assets/hls_high_performance_journey.html-KWt_INAr.js",revision:"ea0e004efeb1b3c13c580e622405f280"},{url:"assets/hls_high_performance_journey.html-LbBMnisY.js",revision:"ea0e004efeb1b3c13c580e622405f280"},{url:"assets/how_to_create_a_live_steam.html-6xjNfV8d.js",revision:"ec9b1a196df0a89307701684329cd54f"},{url:"assets/how_to_create_a_live_steam.html-ewhkqgEI.js",revision:"ec9b1a196df0a89307701684329cd54f"},{url:"assets/how_to_create_a_live_steam.html-FHwnpSdN.js",revision:"3060639f318e118a09057745e5cde6f4"},{url:"assets/how_to_create_a_live_steam.html-Gq2b9Yi0.js",revision:"1e77b724e809322523173efc4d0edc2f"},{url:"assets/how_to_create_a_live_stream-3lt6j2fI.js",revision:"67e9191b6843091959a8f07cea06a593"},{url:"assets/how_to_enable_https_related_functions_zh_10-dp8gREln.js",revision:"e08b5f85ae138171fbadcb495d89fa08"},{url:"assets/how_to_enable_https_related_functions.html-bzN01TdE.js",revision:"178a916094a08c9ded3a8b0b49f51672"},{url:"assets/how_to_enable_https_related_functions.html-fcJ6Uozv.js",revision:"c4b3dc09434d6236ba12e26ee88007e3"},{url:"assets/how_to_enable_https_related_functions.html-mO3jYJnY.js",revision:"b20d2d93bfc0a7d9afdb7d93d930c2e9"},{url:"assets/how_to_enable_https_related_functions.html-O1NMddvq.js",revision:"a20bfd1f821d832b0dd3b08a28f3d97e"},{url:"assets/how_to_test_delay.html-6Q65UhHU.js",revision:"44dadf0d54b3de1c494545717beddf7d"},{url:"assets/how_to_test_delay.html-fyFCkcjI.js",revision:"2957ea7e8a18f2d54dd348d51c15fae5"},{url:"assets/how_to_test_delay.html-GlLjeJYr.js",revision:"1bd6e54f8408e79ec83b26d5c81259e6"},{url:"assets/how_to_test_delay.html-ubjyw-PC.js",revision:"13801c3a209c906dccd85db6bb5092ba"},{url:"assets/how_to_use_device_id_as_stream_id_6-sfQ1h9Fe.js",revision:"1bff1864e2dfb05bde4bb12af8c9561c"},{url:"assets/how_to_use_device_id_as_stream_id.html-_vNSGfoU.js",revision:"5850d68f9c88c71712e258d057267d3c"},{url:"assets/how_to_use_device_id_as_stream_id.html-ga4UcAIh.js",revision:"858c041377d0a304dc9cd913185f18fa"},{url:"assets/how_to_use_device_id_as_stream_id.html-HCE1vKo7.js",revision:"871fb6c5566d7bd740572d58413942a3"},{url:"assets/how_to_use_device_id_as_stream_id.html-r4xrBF9F.js",revision:"871fb6c5566d7bd740572d58413942a3"},{url:"assets/image/advanced.svg",revision:"2934a573b64033bebb71f067ebc8d082"},{url:"assets/image/bg.svg",revision:"bed51349ca7476497e51d60437ef8eba"},{url:"assets/image/blog.svg",revision:"5686f361aca8bcf73522de225d09016d"},{url:"assets/image/box.svg",revision:"5f732c9705e288e8fb8ae6d2e5ce906a"},{url:"assets/image/features.svg",revision:"2eb292180d361e4af3f4bf411ef06062"},{url:"assets/image/github-dark.svg",revision:"8dcc6b5262f3b6138b1566b357ba89a9"},{url:"assets/image/github-light.svg",revision:"a0b00583d93c2f7084ad151ee0849934"},{url:"assets/image/layout.svg",revision:"db603c70eb017066ff30923ca5a2cd4a"},{url:"assets/image/markdown.svg",revision:"1a8b4476dae8f52cdd873d2b00fa27fb"},{url:"assets/index-67a42d7d-B7ItSCR5.js",revision:"f8f41d9c1b2219e4277d5a1cacdc3fcb"},{url:"assets/index-7SG8bi1h.js",revision:"46a193641571106d3b7b43f9bc2a2735"},{url:"assets/index.html-_GTitl4a.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html--S0MBGJo.js",revision:"ea78dba8e7f03fc2ab6d7f7cf3581a54"},{url:"assets/index.html-0naiiwgW.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-1HU8uRzY.js",revision:"b94b09e758990dc276714efc1b0537c1"},{url:"assets/index.html-2eHJyvoI.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-3Pe7G9Sl.js",revision:"c0c05ddda520e2adda625cdd231876ae"},{url:"assets/index.html-4AQHrSUy.js",revision:"ee6e74d86f88efe67b09106f87bb5601"},{url:"assets/index.html-4Ee7DNZI.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-4qXHK4Yu.js",revision:"ea8519a44fde5fca68c31fc431e2e570"},{url:"assets/index.html-6BkT17JO.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-7ixsX_gh.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-8RsIN7Qj.js",revision:"ff590ed654e791a5b22c11ccc9ddce0e"},{url:"assets/index.html-943vkdnv.js",revision:"66506d542be80c2633ded058cc66b647"},{url:"assets/index.html-A9z0_Hu7.js",revision:"4f860e08cf4dabbe3974dcd867207005"},{url:"assets/index.html-Acfu-WyI.js",revision:"ac263380bcaf563b41d4feb14c1f3645"},{url:"assets/index.html-bHaf1eq-.js",revision:"a2e0e45dde47a3b04378d8770d84ee1a"},{url:"assets/index.html-BzbKxypT.js",revision:"662b8f394d27244938126a6f9d36f79e"},{url:"assets/index.html-c0NLam4o.js",revision:"50f75c5795cad25af5071e685fd56d25"},{url:"assets/index.html-CojxHtZz.js",revision:"3cce4cc3f4578dbcd1463687ffb739ae"},{url:"assets/index.html-crm4JFod.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-Dj-Byo33.js",revision:"33d2489812195b60dd65835895fad787"},{url:"assets/index.html-dNFi-MK4.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-e77v6tHA.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-ENKK1Hev.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-eQpT8dLR.js",revision:"a269dea8fb1ddf5878073da912bc3556"},{url:"assets/index.html-Eqzq89B-.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-frsd07BJ.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-H30PqyAG.js",revision:"7efb7d72cecc58ab6a156a772ad46ce6"},{url:"assets/index.html-HA6yUssK.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-Hvr1twkc.js",revision:"0863680115a8ded21665ace23a839672"},{url:"assets/index.html-JQu_RH6f.js",revision:"0bfe758ce6140e9d1046435817bad5a2"},{url:"assets/index.html-jVaUOSmI.js",revision:"72b19a33de68639ae16f36b839e7d13c"},{url:"assets/index.html-kIe4zMW_.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-kykmfUZZ.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-l-9Jcb0Z.js",revision:"5ab8c4c304de3bbef4c91cdb52fbf08f"},{url:"assets/index.html-lHFYswhu.js",revision:"68601d9bc01ff40425d106bd1db7b57e"},{url:"assets/index.html-LLxB5nrB.js",revision:"086ed6111461246bc6c97866b2d918d5"},{url:"assets/index.html-LSqTAwnp.js",revision:"c8324355f6d6e02a9bc861e06231a543"},{url:"assets/index.html-LT2IW6gc.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-lxIvJFMs.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-m59LkreQ.js",revision:"28018187ac0f122029bdfeb50cfb455b"},{url:"assets/index.html-Me4eXu-C.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-MI_McXZr.js",revision:"c5e8700ca283e861dced506472ecbf81"},{url:"assets/index.html-n77SzoQa.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-NSMe4qAg.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-Oh37e22D.js",revision:"bcb1fcf519857cdf15515f77a485a436"},{url:"assets/index.html-ohZtz6Fw.js",revision:"58893519f365a18c506f1836cfec535a"},{url:"assets/index.html-oRdX7laQ.js",revision:"2de9c461d24eb912ae3e73a7ef0228e7"},{url:"assets/index.html-Pl0D5fWX.js",revision:"df50db0b03d7bc4801e7684b895e72c0"},{url:"assets/index.html-pO6EQ89h.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-PSYc6CNH.js",revision:"33bd4b1afcaea599ec1c5a8e6ae4d5cb"},{url:"assets/index.html-Q1OCSdNr.js",revision:"0355094bde07e5a1c1841bc347489d5e"},{url:"assets/index.html-qi3PncfW.js",revision:"b01b13800c1abbfe37ecbf7bf04d5102"},{url:"assets/index.html-qjMVLXfF.js",revision:"9e80a629102cb272c373b96d1433b760"},{url:"assets/index.html-QkbwDjsA.js",revision:"841b57fd17ad02196225f94dac99a56e"},{url:"assets/index.html-qlpSloZ0.js",revision:"33bd4b1afcaea599ec1c5a8e6ae4d5cb"},{url:"assets/index.html-QQRRY2d0.js",revision:"b43ec38709542738da227e4487b5739f"},{url:"assets/index.html-QWUIdSew.js",revision:"01f1316f815b6ac78bd8c87e114f8341"},{url:"assets/index.html-Rh0erDOb.js",revision:"7a00205cde84a167e23e5c6ce0f20674"},{url:"assets/index.html-tETo8Lu8.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-TjtRd5xp.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-TLmaTaqK.js",revision:"310fdf35690289b4b695a2a9f063cdf2"},{url:"assets/index.html-V4YkyuJV.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-VsukZOSA.js",revision:"c6e6b871aa905370fa4d93c22c2fc8e1"},{url:"assets/index.html-X7WU_LPV.js",revision:"18f6a74b2ca20e17c9893fd3cfd2c878"},{url:"assets/index.html-XiIyF-Mz.js",revision:"125061609d4366c5cf551cfd435226ee"},{url:"assets/index.html-xQisrcfM.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-Y6Zxo28x.js",revision:"583fc19e65b7982208e7988a34d75970"},{url:"assets/index.html-yjc28uoP.js",revision:"4d87cc57914d0403609cbb2f0de32cbb"},{url:"assets/index.html-yPXvy2ZK.js",revision:"bc20132941b6e34356e7eee03fc24477"},{url:"assets/index.html-Zl8OD7vu.js",revision:"eba5ebfdf176f5b1608ff6a52d885037"},{url:"assets/index.html-ZUO1t91g.js",revision:"7c6290fcd6d20ef3ffdf2e164689ff0b"},{url:"assets/infoDiagram-a336098b-sHgg_VVf.js",revision:"bed2c86feb9b8e954f5fb55048db9d33"},{url:"assets/init-Hi12RPRh.js",revision:"3ce28180466443e9b617d7b96e9f7b8f"},{url:"assets/install_zlmediakit_using_vcpkg_2-1HFW-yNt.js",revision:"eba8f412e34fc0140174130ed248e21f"},{url:"assets/install_zlmediakit_using_vcpkg.html-_H3jokEy.js",revision:"5e8111d2c2acce6608f89dc07754b276"},{url:"assets/install_zlmediakit_using_vcpkg.html-lJ__kZwE.js",revision:"90288c6b05b19f6839599ba7d32befbd"},{url:"assets/install_zlmediakit_using_vcpkg.html-uKojkOzg.js",revision:"de155c78869bec35e5c571fc9fe0d61a"},{url:"assets/install_zlmediakit_using_vcpkg.html-UmyH2ZVo.js",revision:"f0843b3fc06e0b5a3043fa6a708adc02"},{url:"assets/introduction_to_streaming_media_related_technologies.html-JdpuYj-J.js",revision:"139582e85f105eabf3023fc4ef37d04f"},{url:"assets/introduction_to_streaming_media_related_technologies.html-O53gIrdK.js",revision:"0ef8b597685e571d9ff51705e039dc88"},{url:"assets/introduction_to_streaming_media_related_technologies.html-tum5EDuc.js",revision:"71931917c0ee523f44d57ac533fb30b8"},{url:"assets/introduction_to_streaming_media_related_technologies.html-uFhGEBGc.js",revision:"1d475bfd3c612e339908e97deaa79136"},{url:"assets/journeyDiagram-deae3313-3VZnCGoi.js",revision:"56af31f85cb4dd52fef6d9764ddc0ef9"},{url:"assets/layout-wEoclKsW.js",revision:"1f733e3bcd4b49ddad4024b1367d95c8"},{url:"assets/license.html-eI8DpHPZ.js",revision:"73d80ff06a30d5acc92fa70df79626f7"},{url:"assets/license.html-KA2I3C1f.js",revision:"85bd9c7cef5d5860aa89f16029143c23"},{url:"assets/license.html-onnWhI1X.js",revision:"959de41ff2dbe211d159ffcbbdecaf1d"},{url:"assets/license.html-ptTdZQ9a.js",revision:"59c5af23d2c0c4fa2f4eab93e329bf3c"},{url:"assets/line-EJoUorMM.js",revision:"c9635c82138d6ab378e96065aa966343"},{url:"assets/linear-qWzY0BiT.js",revision:"6ff147308b589d57b8af710a63069748"},{url:"assets/mermaid.core-ygY5oRaR.js",revision:"d8535f6c482f985e12886a3386b030df"},{url:"assets/mindmap-definition-617cf8dd-8E7JbjNQ.js",revision:"2716c6e9a86afffdd5676139d3e20a1c"},{url:"assets/not_recommended_qq.html-D1NyvBof.js",revision:"ddcd2a3d49785fe4b84f3adc2d39f9c3"},{url:"assets/not_recommended_qq.html-g8E5V1Ie.js",revision:"cc6d5dbde1ac6d1fd4335769c6ce3666"},{url:"assets/not_recommended_qq.html-Od4ztKJy.js",revision:"c3885d6144111405525cc78161e1bce3"},{url:"assets/not_recommended_qq.html-xL5JJUt8.js",revision:"55f09fa2c07983ad9b0803e72934cbb1"},{url:"assets/on-demand_push_streaming_zh-CK4xj1dh.js",revision:"58fd02f19ecc7bced43f105b06c8430d"},{url:"assets/on-demand_push_streaming.html-CeB1-Ozz.js",revision:"270e9ce2619547a9b1364c04f53cf993"},{url:"assets/on-demand_push_streaming.html-crgN24-s.js",revision:"ac1b3b0933859c59196b2f575f3649ac"},{url:"assets/on-demand_push_streaming.html-kP6TQb2_.js",revision:"2785a3c0027931aa5e62297f7ccf37c2"},{url:"assets/on-demand_push_streaming.html-U3DF-hcL.js",revision:"4e2b0af8582bbdc14b3d7a9bc7397baf"},{url:"assets/on-demand_streaming_zh-h19pTlmd.js",revision:"0eb44d4c65523fe801d4a4498adaafc4"},{url:"assets/on-demand_streaming.html-2DvN-m5K.js",revision:"b38e0c728d1e2148b057ac438c0329fd"},{url:"assets/on-demand_streaming.html-5SBDxVes.js",revision:"a3755702d9fcf9d9e4672d16658758a0"},{url:"assets/on-demand_streaming.html-JbtempAZ.js",revision:"850c85a8c2560f3a0e3427c172719fe2"},{url:"assets/on-demand_streaming.html-rK6BuTeq.js",revision:"49fdaf3aeeedeba8f74d75b2a9d97bc5"},{url:"assets/oncetoken.html-78LEt8yV.js",revision:"1577bff682f55f633e62c710dc2896f0"},{url:"assets/oncetoken.html-JcsefotR.js",revision:"0d901abe41c808ec9f1a3c1c35ffe65f"},{url:"assets/oncetoken.html-LPckM_ZY.js",revision:"9154f9b016875771b1917e6c850a1996"},{url:"assets/oncetoken.html-O4EgeeD_.js",revision:"23c0baa0771e52fbd1ec7529235f19b7"},{url:"assets/online_test.html-_btmASEE.js",revision:"4278b39fa50c6af661bc909208d9799f"},{url:"assets/online_test.html-8_GcpcRF.js",revision:"52338331afa59a61a6bcb8f6ca24fafe"},{url:"assets/online_test.html-nhAROswz.js",revision:"baf0c235b26f5cead7a1f7ac3c944543"},{url:"assets/online_test.html-osni6C75.js",revision:"e661758df2e4ad6406dc4aa0e9871690"},{url:"assets/ordinal-wXG5obU4.js",revision:"a72e57060c4f6a7606baa78dc6e9ad02"},{url:"assets/path-aUcfwwLI.js",revision:"f86c0243cb45746453c6b4f7dbd9f34d"},{url:"assets/performance_testing.html-_cSl4nbI.js",revision:"56fe6513a73c107c0b8c20f8a59c7d1a"},{url:"assets/performance_testing.html-DQL8Y_0H.js",revision:"614f84b26f36cd75f82542fcafbadbf3"},{url:"assets/performance_testing.html-KTW2LASt.js",revision:"56ef4e3e6338fb0205b51791f8719587"},{url:"assets/performance_testing.html-wMvwmLu0.js",revision:"d43a0001d72ef49579dbf598ac26ba4e"},{url:"assets/photoswipe.esm-i2ohwMnJ.js",revision:"e9ff503527474b1afe53a1ee900448a3"},{url:"assets/pieDiagram-a5166659-2AuHdjea.js",revision:"76d9d948e0f4b32473906981b41a1e8c"},{url:"assets/play_url_rules.html-_eahSglS.js",revision:"7fbd4cf9e506e5c36ccd6e6a3af7ffc9"},{url:"assets/play_url_rules.html-jL-erR3n.js",revision:"89d2ffbc6ab4c7e4e5c01e8af8a8c253"},{url:"assets/play_url_rules.html-LU-zd-xr.js",revision:"e8313eb4ea56e522cb92f9f260523109"},{url:"assets/play_url_rules.html-Nq1zV90a.js",revision:"0886737a8f71016213eda6898e8dbae4"},{url:"assets/playback_authentication_zh-gjAAn9Yd.js",revision:"d1b73468587890117bafd3f86759aec4"},{url:"assets/playback_authentication.html--oFuX02K.js",revision:"2460b9e8eddcc9e2b5f57b2224c3f05e"},{url:"assets/playback_authentication.html-arMfpj8D.js",revision:"9168f09b8be9be130d72ddb4c4b4fb3c"},{url:"assets/playback_authentication.html-SRognS60.js",revision:"37fc883f35764f601365281a36f72efa"},{url:"assets/playback_authentication.html-wjgI-Yj5.js",revision:"565152fbd8128bbfc4a350131902a817"},{url:"assets/plugin-vue_export-helper-x3n3nnut.js",revision:"25e3a5dcaf00fb2b1ba0c8ecea6d2560"},{url:"assets/push_authentication_zh-OS4qAsfx.js",revision:"2c2bf93635139a5d3979114757a9bfa3"},{url:"assets/push_authentication.html-8JQfqi5E.js",revision:"3e7eea41c9dfba1adbb4128ecaf6f554"},{url:"assets/push_authentication.html-buPamLTW.js",revision:"8c383a6926a50cf8af0aae792cba6d44"},{url:"assets/push_authentication.html-qlfLynHw.js",revision:"b3d7bf7f8d5bdcd9e98b65b9def167ab"},{url:"assets/push_authentication.html-RYBrWv6d.js",revision:"f6827f299a26696f9f889836cc29c8ba"},{url:"assets/push_streaming.html-5MzKBCwx.js",revision:"00af9265177e3e8a736e41254f3cd2eb"},{url:"assets/push_streaming.html-ieJcZ8zc.js",revision:"ea0e74f84571e509f1aaae8950a5b388"},{url:"assets/push_streaming.html-rR7nCAyc.js",revision:"8e2d1ed6331682e8ad674f7a6c6096e9"},{url:"assets/push_streaming.html-Z4VDPPfI.js",revision:"c64db74b6d82876529a744130565aa0e"},{url:"assets/push_test-WgKOKRFc.js",revision:"e9d124a5d01db8f90748223c62797fde"},{url:"assets/push_test.html-78JMVV7F.js",revision:"b487a979b9a7fb8c6e94e277f6b1ea7f"},{url:"assets/push_test.html-fOBpg7dv.js",revision:"dbea1cd12b3063b791e5c8d43f8913ff"},{url:"assets/push_test.html-gnFrDUbt.js",revision:"64472eabb158a683a6690a65cca64231"},{url:"assets/push_test.html-rQVB769L.js",revision:"93f2a09ff23420dc2f85ff60910ec319"},{url:"assets/quadrantDiagram-6c355bbc-AVZ0kdE9.js",revision:"f706ccd31c15a361f835299b74e69159"},{url:"assets/requirementDiagram-4038b16c-zPwsi3At.js",revision:"609c83bcdd6e988b83e3652820b384cb"},{url:"assets/restful_api.html-EFSP9jqZ.js",revision:"0635cd71d52f0adacd7d7a5280ec1d34"},{url:"assets/restful_api.html-ooPhYVAr.js",revision:"b9e5dd83308b65754ba7b0104c82e621"},{url:"assets/restful_api.html-vpWQQrW9.js",revision:"3577dfd936bbed14b4d76ac027be2810"},{url:"assets/restful_api.html-Xx1SUrzX.js",revision:"27db13c31cdd8cf6d8f4d4db7958194b"},{url:"assets/rtmp_playback_compatibility_issues.html-5avJPHVo.js",revision:"6be1e2e717cb3e63216bce17db431fda"},{url:"assets/rtmp_playback_compatibility_issues.html-k6HlsNbH.js",revision:"1a4a5fa9048c5657abaeb557f1339d2a"},{url:"assets/rtmp_playback_compatibility_issues.html-Q-7KXOkl.js",revision:"1dce0b5568142250e442a0f8f3afd7e4"},{url:"assets/rtmp_playback_compatibility_issues.html-RzirVjbt.js",revision:"bf3a79adbd8687cf32a560b763907237"},{url:"assets/rtmp_pull_stream_performance_test.html-_aYV-qZf.js",revision:"ade15d4d534cd82ca2cc09fba7821fc3"},{url:"assets/rtmp_pull_stream_performance_test.html--cK45yxC.js",revision:"ddad1baddac7669b9e5351107a8c9126"},{url:"assets/rtmp_pull_stream_performance_test.html-HQ4fzTKd.js",revision:"305864626776df21bb91f68cd1ae4047"},{url:"assets/rtmp_pull_stream_performance_test.html-to7s8Gb2.js",revision:"68ca6d9a3fad2f0e15a0160e81d4babd"},{url:"assets/rtmp_push_stream_performance_test.html-4Td-mBqD.js",revision:"a692f4889cc920fa5fa6e89c288c0d73"},{url:"assets/rtmp_push_stream_performance_test.html-AxJYj-3i.js",revision:"483711c1a022e7d97bbfd4425092f5e6"},{url:"assets/rtmp_push_stream_performance_test.html-BY1UVNB2.js",revision:"ad220f0720f98cb1adc30de41972428f"},{url:"assets/rtmp_push_stream_performance_test.html-xYGtJwVp.js",revision:"271c44493b937c8fe1bd6932d727668a"},{url:"assets/rtmp_support_for_h265_and_opus.html-4jQr5c69.js",revision:"eb174d98197d8a012bc5b7addc0b6f41"},{url:"assets/rtmp_support_for_h265_and_opus.html-f4aPfFot.js",revision:"a492fe181304965e8618760a986a1330"},{url:"assets/rtmp_support_for_h265_and_opus.html-Pv_q6lJG.js",revision:"481ab4d6c574ddb5b88a7d2a607796d7"},{url:"assets/rtmp_support_for_h265_and_opus.html-tX2acU7J.js",revision:"70ba7cf876f460ad76d42aa18bfa2af7"},{url:"assets/rtsp_performance_optimization.html-INqzsvFD.js",revision:"cef9f2949dab0a8ac89f8eaa187b3207"},{url:"assets/rtsp_performance_optimization.html-KRKhmZXI.js",revision:"3b44a6f07b1418f0458225d7e77c8735"},{url:"assets/rtsp_performance_optimization.html-N4V23aKI.js",revision:"8a21a102026c37a97823ac99d10ceda5"},{url:"assets/rtsp_performance_optimization.html-XwSQReWx.js",revision:"e4f0f43ad81a11129ab62c4dc1a66d96"},{url:"assets/rtsp_pull_stream_performance_test.html-2yov4QZH.js",revision:"36e9219568e20efb63443ea908a33bae"},{url:"assets/rtsp_pull_stream_performance_test.html-3HmmZM3c.js",revision:"52076d5d16c381027d8de20b3ca92d05"},{url:"assets/rtsp_pull_stream_performance_test.html-9hA9_SB-.js",revision:"687c3b750da73663d062d7188877acca"},{url:"assets/rtsp_pull_stream_performance_test.html-sTQrF5Xo.js",revision:"52076d5d16c381027d8de20b3ca92d05"},{url:"assets/rtsp_push_process.html-eeithr0y.js",revision:"f54ec8d338002bfc19a7ebf2719dd781"},{url:"assets/rtsp_push_process.html-MSFA7pR8.js",revision:"0730b0affd6b626ec2adde265bfbb202"},{url:"assets/rtsp_push_process.html-PFNRXi6Z.js",revision:"8a6cc310a2e80e3705fb5b3e9121865b"},{url:"assets/rtsp_push_process.html-W2QVXDCD.js",revision:"2cfd06c6f278aebdd8153399be7b6cd3"},{url:"assets/rtsp_push_stream_performance_test.html-3UQhsyo8.js",revision:"308c989c47769eb89dc0504d1392b531"},{url:"assets/rtsp_push_stream_performance_test.html-8OJV-kxN.js",revision:"4ba6dfa3b334c13a2a34c18d8d1c4aff"},{url:"assets/rtsp_push_stream_performance_test.html-g2X0PP_e.js",revision:"825be1a0511d7deae628dc8708cdb3cd"},{url:"assets/rtsp_push_stream_performance_test.html-mR4FJY9Z.js",revision:"4ba6dfa3b334c13a2a34c18d8d1c4aff"},{url:"assets/sankeyDiagram-6db3d513-9q2qHJD9.js",revision:"c37a0d17047b58d6f3d67cd4ab477f0d"},{url:"assets/sequence_diagram.html-pYWqjJ8u.js",revision:"e3e6f3109374047919439dcdacb9d0e6"},{url:"assets/sequence_diagram.html-vJK6hfro.js",revision:"6d2f6182709f89eb63104a1e093e834b"},{url:"assets/sequence_diagram.html-y7tfUv_v.js",revision:"f83ca3c8bcc0b924a3664b7656d0d346"},{url:"assets/sequence_diagram.html-yqJJFxQH.js",revision:"d782a1092ea55f1b4d383b3ec73713a7"},{url:"assets/sequenceDiagram-465a088a-EWh6aK27.js",revision:"74af9e266f83ac6ee3705c7d213519a7"},{url:"assets/start_server_3-RVnx99XR.js",revision:"cdc2fe86a390491f5cb22b1eceb5f785"},{url:"assets/start_server.html-fcMybRlu.js",revision:"09f556bf8111d3276b52829d577786e3"},{url:"assets/start_server.html-I5K79p0Y.js",revision:"f0f15702547b3de76ccf8b77dd6aedab"},{url:"assets/start_server.html-rADXsgsy.js",revision:"17f98f760083e4a3a319271a5e63319a"},{url:"assets/start_server.html-z23wbtOj.js",revision:"bb61b033e5ba87fe2c6c6acacf4a25c8"},{url:"assets/start.html-fkf1t7c5.js",revision:"ade1eb2ce3563b53d786b0e1465001ab"},{url:"assets/start.html-I4A7uS59.js",revision:"2dd388f7f89c50f312c2671acec0f20a"},{url:"assets/start.html-Jyh7sq9I.js",revision:"f5febcbd00c1165c254b98d0a33020b0"},{url:"assets/start.html-VhG07QWF.js",revision:"d2282f75de0b3d149d32aa973466d5f8"},{url:"assets/stateDiagram-b620d43f-RCXXee-i.js",revision:"81f8ed43026edbc274e1e2bbbf67362e"},{url:"assets/stateDiagram-v2-2671c3d1-YYOgeGqg.js",revision:"86e127dc96cf26a3286dfc637869b88c"},{url:"assets/style-b4Lm5zJp.css",revision:"29a55a9ec36f4713f5ee0c2d567936eb"},{url:"assets/styles-4ba6ed67-2KGnpqeU.js",revision:"16e8f066345acc4e516b66dd6ce8011d"},{url:"assets/styles-b966c4ae-SzUJ3e4L.js",revision:"fb688c6f8f8e52945bf2960c2e79da4c"},{url:"assets/styles-bbc3fe3b-It40AHsg.js",revision:"5dbe6038b68fe173ed1eac794de9c897"},{url:"assets/svgDrawCommon-ad5ef572-nvro2Kxm.js",revision:"0b2b74a9d24bd79610b8cd08064283ce"},{url:"assets/thanks.html--KuWuTSm.js",revision:"d3803fff8502582755c3807cb30b7cab"},{url:"assets/thanks.html-9FVCd-fN.js",revision:"0e065b3cf96f64628520f9b7d8074fe0"},{url:"assets/thanks.html-EDBrN2Yb.js",revision:"b42f61a71429b0838649bfde7631dc15"},{url:"assets/thanks.html-eseVCxC7.js",revision:"1273ae668b9056c36531756d4732bdb3"},{url:"assets/the_nature_of_live_broadcast_delay.html--_Oe6F80.js",revision:"f8658cf2d7e8ad6d96608c589f34470c"},{url:"assets/the_nature_of_live_broadcast_delay.html-bGwDwg8A.js",revision:"20f830ee314f6b02c6b0126b63b5446b"},{url:"assets/the_nature_of_live_broadcast_delay.html-PF-gA_DU.js",revision:"432e82f96ccf606b9fcf20a97957b6b3"},{url:"assets/the_nature_of_live_broadcast_delay.html-SrNo_kM-.js",revision:"3a634659ed57413a6acab78c780b324a"},{url:"assets/timeline-definition-732a2638-8ZtyCvMC.js",revision:"68d5d4f87005f11dbc2360e9a2879ada"},{url:"assets/use_cases.html-C-cj_NSV.js",revision:"a791484044a968dc199237dad1cc28f2"},{url:"assets/use_cases.html-nlOjewQC.js",revision:"727e6f6195079f183e29904a3db6fb6a"},{url:"assets/use_cases.html-QYVpPIZi.js",revision:"6e5c22aea2a1dacd8ff55fc973c87316"},{url:"assets/use_cases.html-X6CGr-4A.js",revision:"df4337bda4e8f2357afc27fce697cd64"},{url:"assets/video_conferencing_related_resources.html-1ZPXoBfM.js",revision:"e4757909bc6677a4f013cecc2fd1f9cf"},{url:"assets/video_conferencing_related_resources.html-Da8l8FFw.js",revision:"a391a24998a5e69a47cbc89241c5e857"},{url:"assets/video_conferencing_related_resources.html-n9vvOPci.js",revision:"5b39b305f9cbf913541ff878e335942b"},{url:"assets/video_conferencing_related_resources.html-OEgzQpTs.js",revision:"5665b03bbf6649073ec94463b719b2fd"},{url:"assets/vs_code_zh-ltEPcFYF.js",revision:"bae72e4c099d90687244cb1ba5708ec1"},{url:"assets/web_hook_api.html-adtpDhAG.js",revision:"dec0c93b7a2f82188c65df946b68a050"},{url:"assets/web_hook_api.html-F_kUu3X6.js",revision:"95e48cec141cf6b666746c158fa55d8c"},{url:"assets/web_hook_api.html-Ur1FSiPS.js",revision:"cef3dc74048def3e1d6ddd311deccc62"},{url:"assets/web_hook_api.html-zeVeDSz2.js",revision:"5f6d811568ffeb9d7493a2eff1741b76"},{url:"assets/webrtc_compilation_and_use.html-Ck_2B7eV.js",revision:"4f06fb3918dac02bcc9b2431b9cd213d"},{url:"assets/webrtc_compilation_and_use.html-lpFe_5AD.js",revision:"9ffa6d5feab46e2cef169c7ffbade8a6"},{url:"assets/webrtc_compilation_and_use.html-u4uYYnLr.js",revision:"39615c16478a511c7cce6932b7d93b9c"},{url:"assets/webrtc_compilation_and_use.html-WDwwQCrP.js",revision:"4cf88a9d2203d27e606958fefef4f477"},{url:"assets/webrtc_signaling_interaction_format.html-RSBHyl7A.js",revision:"918d5f1ae8bc5965606da4fe6657addb"},{url:"assets/webrtc_signaling_interaction_format.html-TjrAUdNc.js",revision:"9c31ec603847531d41ccc4896636cae1"},{url:"assets/webrtc_signaling_interaction_format.html-Vcq-5dzR.js",revision:"032eaacf98b88855a9c4c2de946f0061"},{url:"assets/webrtc_signaling_interaction_format.html-wdNPDtQj.js",revision:"7e5146209a6612fc86f8f286d15c03bd"},{url:"assets/xychartDiagram-f746c04c-R7Y2pSYR.js",revision:"8ce40215b08c083da19c4af77acaaf19"},{url:"assets/zltoolkit_source_code_study_notes.html-JZCYuLhh.js",revision:"c205c5ebf01caa20f4f4579e06e14f86"},{url:"assets/zltoolkit_source_code_study_notes.html-PfuwMzDt.js",revision:"119e95486d4161e43eddb5a30ca91f10"},{url:"assets/zltoolkit_source_code_study_notes.html-vFvvg7fr.js",revision:"0517fff48911aa21ff7f41c822b80900"},{url:"assets/zltoolkit_source_code_study_notes.html-XyGnG3Jc.js",revision:"dd92a80d45f838fcd5522250cc30101b"},{url:"logo.svg",revision:"6c6a0dc1bda8418aef497da1d078d96f"},{url:"404.html",revision:"0dc3966413cda39dfe8624a8b1230933"},{url:"guide/code/index.html",revision:"f087bb6fabe2ffbbb1037b529fd706b5"},{url:"guide/code/oncetoken.html",revision:"04ceb100fd62759f73ebc52f9f0beb16"},{url:"guide/faq/index.html",revision:"4ad2d5a608f0e209ddc5f551a3c4df1e"},{url:"guide/faq/not_recommended_qq.html",revision:"2af488454b86bf7e25bb4d8f3134e720"},{url:"guide/faq/rtmp_playback_compatibility_issues.html",revision:"789579a76bd453a0b7e3d4b71070d595"},{url:"guide/index.html",revision:"87b7b2f523c74799b149f1e1e8ad5fca"},{url:"guide/install/compilation_instructions_for_windows_version.html",revision:"f538db97135fd0229172e77c26e0eeb1"},{url:"guide/install/index.html",revision:"fec3659506bff2c30bfdcea33b024674"},{url:"guide/install/install_zlmediakit_using_vcpkg.html",revision:"35569314f9b2e25bc11e1cc4e9cdde57"},{url:"guide/install/start.html",revision:"83e5c208dbaa9487753e3d5daa53d8d0"},{url:"guide/media_server/config_file.html",revision:"ac4fe34b61859771d1c5da1ae0487299"},{url:"guide/media_server/generate_ssl_self-signed_certificate_and_test.html",revision:"cb6046295e303988f2e72b9124b9153c"},{url:"guide/media_server/how_to_enable_https_related_functions.html",revision:"ac449abfbd59028ade7537e3a28160e4"},{url:"guide/media_server/index.html",revision:"e049e325f80ce461b83e279d843568b2"},{url:"guide/media_server/on-demand_push_streaming.html",revision:"84a92535b3841860bb79dc5aa4873f2b"},{url:"guide/media_server/on-demand_streaming.html",revision:"de3d05cd1f1b3d4fe5533a5dde21e2bf"},{url:"guide/media_server/play_url_rules.html",revision:"6a735653bdddabf55e345fb64c0c6dae"},{url:"guide/media_server/playback_authentication.html",revision:"ccabb0458a48d1abeeef86c1bc5fd616"},{url:"guide/media_server/push_authentication.html",revision:"f4ef33219a9c12dcfa8811a225f97de9"},{url:"guide/media_server/push_test.html",revision:"601e979ff1c92342cce15339274b67a2"},{url:"guide/media_server/restful_api.html",revision:"202691df2fbd7b68d965c4639c6b3aad"},{url:"guide/media_server/sequence_diagram.html",revision:"4768fdd697177c2e109af59f38f31bd2"},{url:"guide/media_server/start_server.html",revision:"3e069f1c61bc35b291d77af96d3de523"},{url:"guide/media_server/web_hook_api.html",revision:"5617f8acca8a41196ce02e2eac8e77f5"},{url:"guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html",revision:"efc28fee7a79cf69b81a9c36b538bbb7"},{url:"guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html",revision:"45424a2480830299bb026582f48692ee"},{url:"guide/protocol/gb28181/index.html",revision:"c5e05f886c8375d7a9a8833402ad93b8"},{url:"guide/protocol/gb28181/push_streaming.html",revision:"b7352f528d3ae76db10281b8dfea9902"},{url:"guide/protocol/index.html",revision:"c1a222f05cf5b23871743221686d9998"},{url:"guide/protocol/srt/index.html",revision:"979320dea2dee797609339c07a5f2d17"},{url:"guide/protocol/webrtc/index.html",revision:"49f28afc6d30da44be6377da14e06b34"},{url:"guide/protocol/webrtc/webrtc_compilation_and_use.html",revision:"f81cb46a74fabcabb08557c2175d4216"},{url:"guide/protocol/webrtc/webrtc_signaling_interaction_format.html",revision:"01e56048329564e076ff6c7f2f87bc07"},{url:"guide/sdk/how_to_create_a_live_steam.html",revision:"0780b9f4d41cc114069106507c5fddd6"},{url:"guide/sdk/index.html",revision:"2a55edd343475b70c2c27c73d7d6ee0a"},{url:"index.html",revision:"76f15f86b6a4a31283055c78a5773622"},{url:"more/collaborative_projects.html",revision:"69266ea8cd023c25b195424ed0c2c180"},{url:"more/contact.html",revision:"5b55134243fae67d3f77907a56ab8b6c"},{url:"more/index.html",revision:"a4a1463fabb696a32ec2adb89ff1c40c"},{url:"more/license.html",revision:"3f1839c4ce13b65901fc55838ac8ca88"},{url:"more/thanks.html",revision:"6f8b83255c32d089391693d75475ceff"},{url:"more/use_cases.html",revision:"112f657af567cfc5df623b7e3ea478b8"},{url:"reference/development_log/hls_high_performance_journey.html",revision:"480b56daa7499ae9c5639c074a03b95f"},{url:"reference/development_log/index.html",revision:"ace2e591bff6b490876e8a3240561e46"},{url:"reference/development_log/rtsp_performance_optimization.html",revision:"596cbdeb42e516ac05b7710de5b4a96f"},{url:"reference/documents/exclusive_features.html",revision:"76c2765018175ed644a956eba76f88ad"},{url:"reference/documents/high_concurrency_implementation_principle.html",revision:"d250f65085649dd676bc5189621868c2"},{url:"reference/documents/index.html",revision:"7b4eaa006f7356fcaf726ba37ee25fcb"},{url:"reference/documents/introduction_to_streaming_media_related_technologies.html",revision:"a04d727a56281e87b29feeada4f6ffac"},{url:"reference/documents/rtsp_push_process.html",revision:"1b5ba913459f0eb5ad073561a83e3e6c"},{url:"reference/documents/the_nature_of_live_broadcast_delay.html",revision:"6f6251c2c8c81dd3f6ceece8de6784b3"},{url:"reference/index.html",revision:"d46f2aa478e74b1c6c8183b0dc8c7d90"},{url:"reference/resources/dependency.html",revision:"34814cf07beb78baf69715eb09b1d045"},{url:"reference/resources/index.html",revision:"a9cd0b4c4c1734a03f6cdd3891cf1669"},{url:"reference/resources/rtmp_support_for_h265_and_opus.html",revision:"ab754d5c3e19b13a398d2c2380dce8f9"},{url:"reference/resources/video_conferencing_related_resources.html",revision:"2d7f37ec91ff94ac78e5611b799894f8"},{url:"reference/resources/zltoolkit_source_code_study_notes.html",revision:"5de3139fef102c0a29110b0123ea1849"},{url:"reference/test/benchmark.html",revision:"ac215cfa56fc0b98ab1c9750f45b29b7"},{url:"reference/test/delay_test.html",revision:"af4a7873cf8c3c0015111df7741f9210"},{url:"reference/test/how_to_test_delay.html",revision:"a81dab427a9782d84e92c847c514b700"},{url:"reference/test/index.html",revision:"0bc2182251594d670898f5820244dd0c"},{url:"reference/test/online_test.html",revision:"75cdbe2f06638617001ff616859197fe"},{url:"reference/test/performance_testing.html",revision:"6fdcd9a5c19edf4544dbe85667f911a0"},{url:"reference/test/rtmp_pull_stream_performance_test.html",revision:"316b3727f8dddda871c588921c37679b"},{url:"reference/test/rtmp_push_stream_performance_test.html",revision:"3ce7a78dc8f06b358562d77d68516a0c"},{url:"reference/test/rtsp_pull_stream_performance_test.html",revision:"cc740dc8354a8ae71d19b6b784f8a820"},{url:"reference/test/rtsp_push_stream_performance_test.html",revision:"23c74328446da540b3e1d4f960211a6d"},{url:"tutorial/index.html",revision:"6789dd399c029fe5eb251d78b2107bb7"},{url:"zh/guide/code/index.html",revision:"fbc85cde3e82ef9ddbe34bfa1379b102"},{url:"zh/guide/code/oncetoken.html",revision:"9df68666764997658618f70f2eddca9f"},{url:"zh/guide/faq/index.html",revision:"eee58a6551b60faab75923ae84bf0308"},{url:"zh/guide/faq/not_recommended_qq.html",revision:"aad532d133b1d5b94e4d68f44f0b3807"},{url:"zh/guide/faq/rtmp_playback_compatibility_issues.html",revision:"50e9a3c6fecf0f10eac6d3deb25e11e1"},{url:"zh/guide/index.html",revision:"1ae724739e09e32e48b23ba28612c9d6"},{url:"zh/guide/install/compilation_instructions_for_windows_version.html",revision:"6f17b9b9126d4c45f487d4c3080775a4"},{url:"zh/guide/install/index.html",revision:"7fe213305553ff04ceaa4c891a09f9b1"},{url:"zh/guide/install/install_zlmediakit_using_vcpkg.html",revision:"bf8d682b80b33c3f75ff60d868f0b857"},{url:"zh/guide/install/start.html",revision:"61d0c053df59087e83f8922ec8fbd00d"},{url:"zh/guide/media_server/config_file.html",revision:"ecf4fa8789d2e4b2fc9442f8b936b068"},{url:"zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html",revision:"14c962f0b42778b457108f231fff0294"},{url:"zh/guide/media_server/how_to_enable_https_related_functions.html",revision:"cc97da39d7fbcf93df944ee79f4d9b3b"},{url:"zh/guide/media_server/index.html",revision:"a1232bd7cdf99e954f15971103710f93"},{url:"zh/guide/media_server/on-demand_push_streaming.html",revision:"fcc20ce5f84722e5ecc8e69bdefe032e"},{url:"zh/guide/media_server/on-demand_streaming.html",revision:"0db261579c2d6b996cf88eab9a55161f"},{url:"zh/guide/media_server/play_url_rules.html",revision:"14a03572d6bc2e3111cc064a07f277a0"},{url:"zh/guide/media_server/playback_authentication.html",revision:"d25f1b4decb2d8e120728cfbdd65c6ca"},{url:"zh/guide/media_server/push_authentication.html",revision:"c781e0ca983c937545c1384dd14682b6"},{url:"zh/guide/media_server/push_test.html",revision:"9a1147b4c9cb78e0c7826ff8806bc820"},{url:"zh/guide/media_server/restful_api.html",revision:"c76671e616704820fbe194c1ec72531a"},{url:"zh/guide/media_server/sequence_diagram.html",revision:"f621c8850526fdac3b21be6db94f58ab"},{url:"zh/guide/media_server/start_server.html",revision:"88b5754f88d04f507a8c08686840d9c2"},{url:"zh/guide/media_server/web_hook_api.html",revision:"9d70b74c87f58b767d52b971242fb7b1"},{url:"zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html",revision:"912882ab5480da850ed499fdb51c4bb8"},{url:"zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html",revision:"714fe0e7a15a857d9fdcdf0100948794"},{url:"zh/guide/protocol/gb28181/index.html",revision:"b11c2f56764e63ef6dc9927cc7a1c7d4"},{url:"zh/guide/protocol/gb28181/push_streaming.html",revision:"839995d039603218a5199a56b414d9d9"},{url:"zh/guide/protocol/index.html",revision:"c58c36fee3e50cb282985028609b6a27"},{url:"zh/guide/protocol/srt/index.html",revision:"a90a584d353537a96bd11ecf6e5f03e8"},{url:"zh/guide/protocol/webrtc/index.html",revision:"8c481666a7d59bf380bd187f9bb71f6e"},{url:"zh/guide/protocol/webrtc/webrtc_compilation_and_use.html",revision:"6b832e8172b876d338ddfef7fc1f5fe2"},{url:"zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html",revision:"4c31492733ade0d64f3f7364ac2d7fbb"},{url:"zh/guide/sdk/how_to_create_a_live_steam.html",revision:"c13734f2f4a5c8ad809c722444d39dce"},{url:"zh/guide/sdk/index.html",revision:"baeedc3aa21d63e96d70ae0c0b2abc96"},{url:"zh/index.html",revision:"dec1870104c08ec6de1b630d72e129a0"},{url:"zh/more/collaborative_projects.html",revision:"13ebe3378de989a173dd76ae58e8f52d"},{url:"zh/more/contact.html",revision:"992b24db011da0cd00b57916f2613669"},{url:"zh/more/index.html",revision:"586f78fe009114b85d092997a83a098f"},{url:"zh/more/license.html",revision:"0fae16a951e0e5a5b14f85c4bb97a00e"},{url:"zh/more/thanks.html",revision:"eb8f276388b72776e140e6c0483dcd3c"},{url:"zh/more/use_cases.html",revision:"7a6fa456be3ee28404f8b9d9d3c98a33"},{url:"zh/reference/development_log/hls_high_performance_journey.html",revision:"27cf52c246056db205509defbddfb824"},{url:"zh/reference/development_log/index.html",revision:"264c5731ea94034499f43598f8043d14"},{url:"zh/reference/development_log/rtsp_performance_optimization.html",revision:"dfc4c270b4777d9acd907d6deb32e5f5"},{url:"zh/reference/documents/exclusive_features.html",revision:"98c26fe5126e18a19758a92467c1d2cf"},{url:"zh/reference/documents/high_concurrency_implementation_principle.html",revision:"5792f2ad862e02ae44c024627bd8e45d"},{url:"zh/reference/documents/index.html",revision:"e828b6d77267263e528a9b8f8bb2e9e5"},{url:"zh/reference/documents/introduction_to_streaming_media_related_technologies.html",revision:"6a1e77e1b976e40d6d9f11b5b6657743"},{url:"zh/reference/documents/rtsp_push_process.html",revision:"a222ee830805f04344cac96bc4d81964"},{url:"zh/reference/documents/the_nature_of_live_broadcast_delay.html",revision:"e225aa49baf3c9ffc44250b372e667d7"},{url:"zh/reference/index.html",revision:"0a7cee7ca1f36f846785fdbf0d23d65e"},{url:"zh/reference/resources/dependency.html",revision:"38e09095eff2cd8dd417d7a8bf9f288c"},{url:"zh/reference/resources/index.html",revision:"e093de17978bc7b129ab1b9f0829f5fb"},{url:"zh/reference/resources/rtmp_support_for_h265_and_opus.html",revision:"f9ed31850fa2f8ec75f1019a3ff918f3"},{url:"zh/reference/resources/video_conferencing_related_resources.html",revision:"cbb03bf00071770b7ae972ed734a4784"},{url:"zh/reference/resources/zltoolkit_source_code_study_notes.html",revision:"b6f84192e72f6331669ed536f543f9d2"},{url:"zh/reference/test/benchmark.html",revision:"06f9b0c37b3665940e111b11898c342d"},{url:"zh/reference/test/delay_test.html",revision:"d50be495e31cc8e8c0e2bad5fc7eac63"},{url:"zh/reference/test/how_to_test_delay.html",revision:"a8914104a2fd121613d799255491ab9e"},{url:"zh/reference/test/index.html",revision:"c7f584f6c5da485610697058ae244c42"},{url:"zh/reference/test/online_test.html",revision:"49de8b7ac7e3dc5f86268a67fdde0e78"},{url:"zh/reference/test/performance_testing.html",revision:"9ffbb1bf981a713c3c464974a0d8947e"},{url:"zh/reference/test/rtmp_pull_stream_performance_test.html",revision:"8e496d85dd3be7dedf40911af04ee697"},{url:"zh/reference/test/rtmp_push_stream_performance_test.html",revision:"3f6ff94d00aa6298ba7319c3fa418c08"},{url:"zh/reference/test/rtsp_pull_stream_performance_test.html",revision:"36f5c260a4099d6ae41dbec5e63c4b7b"},{url:"zh/reference/test/rtsp_push_stream_performance_test.html",revision:"62bd9719fee20dee1a3dc851a4d45d73"},{url:"zh/tutorial/index.html",revision:"b8ef54e85e593d3198d3033ed93ccf94"},{url:"assets/icon/apple-touch-icon-114x114.png",revision:"b39af39658e13fd99763e10b9991ccf8"},{url:"assets/icon/apple-touch-icon-120x120.png",revision:"4c7de55a0bfef43bc0eb52905af33cf6"},{url:"assets/icon/apple-touch-icon-152x152.png",revision:"a23249a982dd7d97bc38e851acfc1ec8"},{url:"assets/icon/apple-touch-icon-180x180.png",revision:"153e47772d362c174bee9f00b8090bf1"},{url:"assets/icon/apple-touch-icon-57x57.png",revision:"04feca43d959ca0f3b6973782c9fa134"},{url:"assets/icon/apple-touch-icon-60x60.png",revision:"e7f1b90b537806adb676677c3dead66d"},{url:"assets/icon/apple-touch-icon-72x72.png",revision:"604eca13e9aa44f2f1d76778107e5d64"},{url:"assets/icon/apple-touch-icon-76x76.png",revision:"1698d7cd9b2cc90634013d3d62d23736"},{url:"assets/icon/apple-touch-icon-96x96.png",revision:"a361212595e0c34b5d3d64084864d3e9"},{url:"assets/icon/chrome-192.png",revision:"440ff33effa9f895b67156ed57eac1c1"},{url:"assets/icon/favicon-16x16.png",revision:"98c8fdb75f1f1891b830dd70be7780c5"},{url:"assets/icon/favicon-32x32.png",revision:"a0c87ba0608aecffe0d0182415770766"},{url:"assets/icon/guide-maskable.png",revision:"99cc77cf2bc792acd6b847b5e3e151e9"},{url:"assets/icon/ms-icon-144.png",revision:"a3e06505f5a643a43d7f559a53abd7be"},{url:"images/gb28181_push_streaming_1.png",revision:"6283957dbf3a609f861ffb40054c8ef4"},{url:"images/gb28181_push_streaming_2.png",revision:"eac2229bd7d6302dd56c80924378f4f3"},{url:"images/gb28181_push_streaming_3.png",revision:"d9c25e9d693382a8fb713baa4865c794"},{url:"images/gb28181_push_streaming_4.png",revision:"f3c6584aae2a27866166c43f244c553b"},{url:"images/generate_ssl_self-signed_certificate_and_test.webp",revision:"c893dba3185a1e863cf175c2698c9bf9"},{url:"images/how_to_create_a_live_stream.png",revision:"7f11ba4af262d0e2a00c7718e6c8b180"},{url:"images/how_to_enable_https_related_functions_zh_1.png",revision:"e1ffb707a47c1664161efc7c608fda24"},{url:"images/how_to_enable_https_related_functions_zh_10.png",revision:"5e4cafeb5b4f54f57d76f4dcd632c377"},{url:"images/how_to_enable_https_related_functions_zh_2.png",revision:"fb3c5027a4bef03f174d86f5d4cf8b32"},{url:"images/how_to_enable_https_related_functions_zh_3.png",revision:"ae7f42d52b58c80e0265eeb40be94a9d"},{url:"images/how_to_enable_https_related_functions_zh_4.png",revision:"536b0f9116a4fa6d0f155032886068d3"},{url:"images/how_to_enable_https_related_functions_zh_5.png",revision:"d77ab1e34df68663332e451f59d68203"},{url:"images/how_to_enable_https_related_functions_zh_6.png",revision:"5dd9c32672a86dbe6c07bbe58fe44522"},{url:"images/how_to_enable_https_related_functions_zh_7.png",revision:"e6cf4753d43bc6251742ea3269463c99"},{url:"images/how_to_enable_https_related_functions_zh_8.png",revision:"fe5c53d153ebb88d5b10ca979ce62a1b"},{url:"images/how_to_enable_https_related_functions_zh_9.png",revision:"1aa87003a965b710adf9139645171cb6"},{url:"images/how_to_use_device_id_as_stream_id_1.png",revision:"5d24bb7c4f502d40c38313bb9b1234fe"},{url:"images/how_to_use_device_id_as_stream_id_2.png",revision:"7f293641cf8de63af03ff846a2be943f"},{url:"images/how_to_use_device_id_as_stream_id_4.png",revision:"8d3f6cced326d24e5cb940c85209d47a"},{url:"images/how_to_use_device_id_as_stream_id_5.png",revision:"7f293641cf8de63af03ff846a2be943f"},{url:"images/how_to_use_device_id_as_stream_id_6.png",revision:"b46e6e52751c33cca5b2f768ceae92d2"},{url:"images/install_zlmediakit_using_vcpkg_1.png",revision:"549087a1bb82ce36aa774ce725a9eeea"},{url:"images/install_zlmediakit_using_vcpkg_2.png",revision:"8368b41cc655599a201e5818750225d1"},{url:"images/on-demand_push_streaming_zh.png",revision:"1bb65d163eb9008b383a2d04255c9507"},{url:"images/on-demand_streaming_zh.png",revision:"16dc127a26325cf06dac7aedd115d57e"},{url:"images/playback_authentication_zh.png",revision:"eba681073fa4dd2f6663eeb1c7cbbf7a"},{url:"images/push_authentication_zh.png",revision:"5b1e13cc9369abf66481d2f4cc1dccb5"},{url:"images/push_test.png",revision:"88ec411cafd56da1c27bb958e05c7bda"},{url:"images/start_server_1.png",revision:"46b863cc78aaebb1a0d5d2b824a45519"},{url:"images/start_server_2.png",revision:"29d3057d8f9dd51a5e3a4589a71d3e7e"},{url:"images/start_server_3.png",revision:"3088ed2c7996882f9272a59a8e00f8cf"},{url:"images/vs_code_zh.png",revision:"a374f77503296c66576dcf3641283791"},{url:"logo.png",revision:"32ddfa5715059731ae893ec92fca0311"}],{}),e.cleanupOutdatedCaches()})); +if(!self.define){let e,s={};const a=(a,i)=>(a=new URL(a+".js",i).href,s[a]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()})).then((()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e})));self.define=(i,r)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(s[t])return;let c={};const d=e=>a(e,t),n={module:{uri:t},exports:c,require:d};s[t]=Promise.all(i.map((e=>n[e]||d(e)))).then((e=>(r(...e),c)))}}define(["./workbox-dbb64b4e"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.clientsClaim(),e.precacheAndRoute([{url:"assets/404.html-7HzFSFl7.js",revision:"1e0b5f7fcdd201107c4b4085f3c0d1f5"},{url:"assets/404.html-aQJ09P_F.js",revision:"76f3c96a47b4621ba8ce69fcbd885f68"},{url:"assets/app-0NopiYEV.js",revision:"698d2b5ea93e89688621d745cae6eb1a"},{url:"assets/arc-zVzTa0l4.js",revision:"f91ca1d5ab8c70221d985c6540cc063c"},{url:"assets/array-Nw74a44z.js",revision:"17dcebeaf673b09a1ca5da014d20022f"},{url:"assets/benchmark.html-ESZ9k3Ep.js",revision:"243c830c85b213c61f650f6c48ed0955"},{url:"assets/benchmark.html-MSc66SxZ.js",revision:"dc32b8c22dbcb74830e677d297b170b6"},{url:"assets/benchmark.html-uo75e0CN.js",revision:"1cee459c1331a51e7e543c9ee7e09f39"},{url:"assets/benchmark.html-xQUFyhUw.js",revision:"0b93d042729a80ed7f7b41c6aac852a4"},{url:"assets/c4Diagram-817c8e44-fGBWpqJm.js",revision:"a4cb7614759993e0a3c97f7e465aa642"},{url:"assets/classDiagram-48ab76fb-2huToeoO.js",revision:"9fbae962046976f41e37346f3f9b9bff"},{url:"assets/classDiagram-v2-8ecb0bfc-yizWAp91.js",revision:"5d8aef0c08090f9b2a233b46b1223e86"},{url:"assets/collaborative_projects.html-15UQQvPG.js",revision:"aca89aea107c131135d843d7880f76b6"},{url:"assets/collaborative_projects.html-gRvZJ2_P.js",revision:"21258323cc48008377e663bcb4b9ccc3"},{url:"assets/collaborative_projects.html-oDX6Yyj3.js",revision:"c22e666a6c58d0c7c298ff4e779cde9f"},{url:"assets/collaborative_projects.html-RO-575me.js",revision:"25be9cb92d75f6d3027c1a70a31ad0bf"},{url:"assets/compilation_instructions_for_windows_version.html-6NKchaAm.js",revision:"db20ec119503c9df1d78bdf8dd19d51c"},{url:"assets/compilation_instructions_for_windows_version.html-Fqb9RcQO.js",revision:"f2602beb820cc3331b2e5f5a186fbbe6"},{url:"assets/compilation_instructions_for_windows_version.html-Hq0AuZTz.js",revision:"66feea9dae54928e3a2bb2f7a51bc417"},{url:"assets/compilation_instructions_for_windows_version.html-xl0PwINJ.js",revision:"ee73eff391cf2201c2517e705bc2e91c"},{url:"assets/config_file.html-5j1Bx0Jx.js",revision:"591d662b3e72f0b21c92319d03a2e17c"},{url:"assets/config_file.html-9Xa4KaRE.js",revision:"eb177b4145410c3337e181fd2a131ecc"},{url:"assets/config_file.html-d15slbyo.js",revision:"c075a5919c31796b0d027267c4266099"},{url:"assets/config_file.html-i3ELg7s5.js",revision:"05d0fdfd1621df427f889e3dfb54050c"},{url:"assets/contact.html-KwkduCZ8.js",revision:"ebe7c0ff7d017d099f10253c037c2884"},{url:"assets/contact.html-nPftNmfa.js",revision:"c55df9245c21c481a492bf69830d5eea"},{url:"assets/contact.html-t3j5rpRG.js",revision:"e97fbf18262212501bd92681965b7fd7"},{url:"assets/contact.html-XWW2pZ29.js",revision:"0b951bd788c1b31fccea7115275bec02"},{url:"assets/createText-aebacdfe-VuGI-o_f.js",revision:"aecdfc624456b253b5c1c05d48e8d5e2"},{url:"assets/delay_test.html-_QomqbNh.js",revision:"05e99497e62f35bf7dbea382401387f5"},{url:"assets/delay_test.html-54KDTai-.js",revision:"ed86a85b7170755c0c2e8b084f58bc3e"},{url:"assets/delay_test.html-dT3kgdCj.js",revision:"43f900f4b61b8881f4680b57bde2786f"},{url:"assets/delay_test.html-YaKGDOck.js",revision:"c858fa769f4be32db47c34e43056b7b2"},{url:"assets/dependency.html-8pevclZ9.js",revision:"dd6085399ef3ff9deff1d518e767f3f9"},{url:"assets/dependency.html-jVZ5GKgo.js",revision:"b7d2ed39fa733a79f192bd91c239c0af"},{url:"assets/dependency.html-re6FQDQF.js",revision:"8cda099d3a7b9acad4148cc502de62f8"},{url:"assets/dependency.html-vliHx4sJ.js",revision:"133156fbc8cde50f0cb079c965bc9d05"},{url:"assets/edges-80f1ebb6-hR1YO9QC.js",revision:"4b96491a0fcaadf98700e1ba5b8c4527"},{url:"assets/erDiagram-9cfc3649-wT9fM43B.js",revision:"a807a95cd9f259b1df12fb8a0e258253"},{url:"assets/exclusive_features.html-2siFVq2G.js",revision:"3f63eed8e945a5d96317576aa72a604e"},{url:"assets/exclusive_features.html-oz4V5ANz.js",revision:"53eb0c36a71a3240fc135aa2213fed39"},{url:"assets/exclusive_features.html-vnOZwbaY.js",revision:"0550b9f522d900dbeb93f713850ee1e7"},{url:"assets/exclusive_features.html-wTOG2Bjt.js",revision:"908ef27f27bc5f36054d486537a4f6e3"},{url:"assets/flowchart-elk-definition-e097735e-s4v8c7Pb.js",revision:"3e234bee806e3e7473f33b9ddee32bc1"},{url:"assets/flowDb-170db09d-3I9bX383.js",revision:"31e212097ace5ff53d63ef43c1e657e8"},{url:"assets/flowDiagram-61eb444c-vQNzsoYg.js",revision:"b5dfd8c3f3cef9988c9d553f2f254f70"},{url:"assets/flowDiagram-v2-2f8f667a-vyhUgdJw.js",revision:"26f0bc9de10ba055d359e84758e6fc78"},{url:"assets/ganttDiagram-db6931fb-lnA5WCr2.js",revision:"5aba86608be5fad101abb02092d11a34"},{url:"assets/gb28181_push_streaming_4-qWTnfswt.js",revision:"30c7b622101f90395cc790c0e72e1cf9"},{url:"assets/gb28181_sip_signaling_packet_capture.html-_63zZLPQ.js",revision:"298c5cd5ce0ee80b0433ed54d5c1d647"},{url:"assets/gb28181_sip_signaling_packet_capture.html-dSB5oqMq.js",revision:"dbfc86980d308e1204aa23121f175f5c"},{url:"assets/gb28181_sip_signaling_packet_capture.html-JsEmgfbo.js",revision:"672c9debd0586fa633495284bf0cdf25"},{url:"assets/gb28181_sip_signaling_packet_capture.html-qexCXJj0.js",revision:"672c9debd0586fa633495284bf0cdf25"},{url:"assets/generate_ssl_self-signed_certificate_and_test-D4Sbj3Ls.js",revision:"616544c7f95d53f29de519db0674f52c"},{url:"assets/generate_ssl_self-signed_certificate_and_test.html-7V6eG0vA.js",revision:"2900e1d4092c29de10d34afb5c4c753c"},{url:"assets/generate_ssl_self-signed_certificate_and_test.html-O1ld5VEe.js",revision:"d598673b70b3a2143534a8682b936698"},{url:"assets/generate_ssl_self-signed_certificate_and_test.html-qSLRuImw.js",revision:"e5b9c6794282f1b0fe700d22af21f5d2"},{url:"assets/generate_ssl_self-signed_certificate_and_test.html-vsfOfJt0.js",revision:"902da881440e3f9b4bbe070f2dfa7bc1"},{url:"assets/giscus-NkhROb6B.js",revision:"f06de634cef984f85d0919f717fab451"},{url:"assets/gitGraphDiagram-6b463803-eKsTNhvP.js",revision:"ab1f9939d0d7b50d5bfb611c4b156299"},{url:"assets/high_concurrency_implementation_principle.html-4A4gHD8-.js",revision:"7e59fa6413859b10a6eb17bd2af8336f"},{url:"assets/high_concurrency_implementation_principle.html-opQWc8aM.js",revision:"2fb1a4c2f74fc52046100556dc28ff26"},{url:"assets/high_concurrency_implementation_principle.html-sl-nIpjv.js",revision:"7a20b2d70a9e4eae865ef6ea53a0ce00"},{url:"assets/high_concurrency_implementation_principle.html-T5LE0Lmi.js",revision:"3d48cc83a8aa986ee5a71534d3a3756b"},{url:"assets/hls_high_performance_journey.html-awr83uM9.js",revision:"ebc78d0a1e508f4608e8042d9b2b5734"},{url:"assets/hls_high_performance_journey.html-bBajAqE1.js",revision:"7d3ea5c0f10f1014295bebf7364f6d48"},{url:"assets/hls_high_performance_journey.html-bLztstJM.js",revision:"1de12ca696da6d2fc7345df858d95fe2"},{url:"assets/hls_high_performance_journey.html-TZBUS8og.js",revision:"ebc78d0a1e508f4608e8042d9b2b5734"},{url:"assets/how_to_create_a_live_steam.html-8eIvXeDo.js",revision:"8141af136264206fbfdabc6a73244513"},{url:"assets/how_to_create_a_live_steam.html-FHwnpSdN.js",revision:"3060639f318e118a09057745e5cde6f4"},{url:"assets/how_to_create_a_live_steam.html-Gq2b9Yi0.js",revision:"1e77b724e809322523173efc4d0edc2f"},{url:"assets/how_to_create_a_live_steam.html-j8XiE3eA.js",revision:"8141af136264206fbfdabc6a73244513"},{url:"assets/how_to_create_a_live_stream-3lt6j2fI.js",revision:"67e9191b6843091959a8f07cea06a593"},{url:"assets/how_to_enable_https_related_functions_zh_10-dp8gREln.js",revision:"e08b5f85ae138171fbadcb495d89fa08"},{url:"assets/how_to_enable_https_related_functions.html-9i2jCwZ3.js",revision:"e6a689cc48195434cbb3bb5494b470a2"},{url:"assets/how_to_enable_https_related_functions.html-fcJ6Uozv.js",revision:"c4b3dc09434d6236ba12e26ee88007e3"},{url:"assets/how_to_enable_https_related_functions.html-kCsRSeM_.js",revision:"b665dffb4a5b3aaebd00cc8ee6104e1b"},{url:"assets/how_to_enable_https_related_functions.html-mO3jYJnY.js",revision:"b20d2d93bfc0a7d9afdb7d93d930c2e9"},{url:"assets/how_to_test_delay.html-GlLjeJYr.js",revision:"1bd6e54f8408e79ec83b26d5c81259e6"},{url:"assets/how_to_test_delay.html-IVFxpLiU.js",revision:"ed2a74f421d946e11a45d39ec362dc92"},{url:"assets/how_to_test_delay.html-r6GaiRI_.js",revision:"21f904e0cab984d8896b77e9444418c4"},{url:"assets/how_to_test_delay.html-ubjyw-PC.js",revision:"13801c3a209c906dccd85db6bb5092ba"},{url:"assets/how_to_use_device_id_as_stream_id_6-sfQ1h9Fe.js",revision:"1bff1864e2dfb05bde4bb12af8c9561c"},{url:"assets/how_to_use_device_id_as_stream_id.html-_vNSGfoU.js",revision:"5850d68f9c88c71712e258d057267d3c"},{url:"assets/how_to_use_device_id_as_stream_id.html-5dSEoDq7.js",revision:"e2e13187e72a3dcd20e6ace363d5d2f2"},{url:"assets/how_to_use_device_id_as_stream_id.html-CzzjrtPS.js",revision:"e2e13187e72a3dcd20e6ace363d5d2f2"},{url:"assets/how_to_use_device_id_as_stream_id.html-ga4UcAIh.js",revision:"858c041377d0a304dc9cd913185f18fa"},{url:"assets/image/advanced.svg",revision:"2934a573b64033bebb71f067ebc8d082"},{url:"assets/image/bg.svg",revision:"bed51349ca7476497e51d60437ef8eba"},{url:"assets/image/blog.svg",revision:"5686f361aca8bcf73522de225d09016d"},{url:"assets/image/box.svg",revision:"5f732c9705e288e8fb8ae6d2e5ce906a"},{url:"assets/image/features.svg",revision:"2eb292180d361e4af3f4bf411ef06062"},{url:"assets/image/github-dark.svg",revision:"8dcc6b5262f3b6138b1566b357ba89a9"},{url:"assets/image/github-light.svg",revision:"a0b00583d93c2f7084ad151ee0849934"},{url:"assets/image/layout.svg",revision:"db603c70eb017066ff30923ca5a2cd4a"},{url:"assets/image/markdown.svg",revision:"1a8b4476dae8f52cdd873d2b00fa27fb"},{url:"assets/index-67a42d7d-iblPHmxF.js",revision:"ac1e16ab13a97ddfd645e59da2f060ca"},{url:"assets/index-7SG8bi1h.js",revision:"46a193641571106d3b7b43f9bc2a2735"},{url:"assets/index.html-_FbUjyNF.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-2dVuyDsF.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-3Pe7G9Sl.js",revision:"c0c05ddda520e2adda625cdd231876ae"},{url:"assets/index.html-4AoKvxIs.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-4qXHK4Yu.js",revision:"ea8519a44fde5fca68c31fc431e2e570"},{url:"assets/index.html-573jmd7K.js",revision:"e3d32397c7925687efd938c6594e188c"},{url:"assets/index.html-7fV02DDU.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-7yq99xxh.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-8LlBfneP.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-8RsIN7Qj.js",revision:"ff590ed654e791a5b22c11ccc9ddce0e"},{url:"assets/index.html-943vkdnv.js",revision:"66506d542be80c2633ded058cc66b647"},{url:"assets/index.html-A9z0_Hu7.js",revision:"4f860e08cf4dabbe3974dcd867207005"},{url:"assets/index.html-Acfu-WyI.js",revision:"ac263380bcaf563b41d4feb14c1f3645"},{url:"assets/index.html-bCrAKGJB.js",revision:"a68c1384cd39c4c9c533e477bba297fd"},{url:"assets/index.html-bV4_5Cgh.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-BzbKxypT.js",revision:"662b8f394d27244938126a6f9d36f79e"},{url:"assets/index.html-c0NLam4o.js",revision:"50f75c5795cad25af5071e685fd56d25"},{url:"assets/index.html-c1k5quBE.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-CojxHtZz.js",revision:"3cce4cc3f4578dbcd1463687ffb739ae"},{url:"assets/index.html-DgVFBk67.js",revision:"d0f486a44dfc1b4d63fa7daf931822a1"},{url:"assets/index.html-Dj-Byo33.js",revision:"33d2489812195b60dd65835895fad787"},{url:"assets/index.html-DoJnvppU.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-DydUlsO3.js",revision:"4878548d7a98357afb216664f82b7636"},{url:"assets/index.html-eKYx7NZ-.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-eSaWpJP4.js",revision:"a082748c163adc20d7b9b1e9e5dd668b"},{url:"assets/index.html-gSpoAwKN.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-GZbomDA_.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-HbKwkAxu.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-hehzhF2d.js",revision:"c90eb36534ba7046feab54aa5d6955db"},{url:"assets/index.html-HuxOwQjj.js",revision:"5ff68fcacb97901c264ad1d7b40b6298"},{url:"assets/index.html-Hvr1twkc.js",revision:"0863680115a8ded21665ace23a839672"},{url:"assets/index.html-JQu_RH6f.js",revision:"0bfe758ce6140e9d1046435817bad5a2"},{url:"assets/index.html-jVaUOSmI.js",revision:"72b19a33de68639ae16f36b839e7d13c"},{url:"assets/index.html-l-9Jcb0Z.js",revision:"5ab8c4c304de3bbef4c91cdb52fbf08f"},{url:"assets/index.html-ldqAHXhl.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-lHFYswhu.js",revision:"68601d9bc01ff40425d106bd1db7b57e"},{url:"assets/index.html-LLxB5nrB.js",revision:"086ed6111461246bc6c97866b2d918d5"},{url:"assets/index.html-LSqTAwnp.js",revision:"c8324355f6d6e02a9bc861e06231a543"},{url:"assets/index.html-m59LkreQ.js",revision:"28018187ac0f122029bdfeb50cfb455b"},{url:"assets/index.html-mfTVy5-J.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-MI_McXZr.js",revision:"c5e8700ca283e861dced506472ecbf81"},{url:"assets/index.html-O3xmvgtm.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-Oh37e22D.js",revision:"bcb1fcf519857cdf15515f77a485a436"},{url:"assets/index.html-ohZtz6Fw.js",revision:"58893519f365a18c506f1836cfec535a"},{url:"assets/index.html-oRdX7laQ.js",revision:"2de9c461d24eb912ae3e73a7ef0228e7"},{url:"assets/index.html-oytvqk6x.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-Pl0D5fWX.js",revision:"df50db0b03d7bc4801e7684b895e72c0"},{url:"assets/index.html-Q1OCSdNr.js",revision:"0355094bde07e5a1c1841bc347489d5e"},{url:"assets/index.html-q26KWjF1.js",revision:"03973645486cfbb92026d896861a2158"},{url:"assets/index.html-Q3P2N4-E.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-qi3PncfW.js",revision:"b01b13800c1abbfe37ecbf7bf04d5102"},{url:"assets/index.html-qjMVLXfF.js",revision:"9e80a629102cb272c373b96d1433b760"},{url:"assets/index.html-QkbwDjsA.js",revision:"841b57fd17ad02196225f94dac99a56e"},{url:"assets/index.html-QokpAUdW.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-QQRRY2d0.js",revision:"b43ec38709542738da227e4487b5739f"},{url:"assets/index.html-qXcCxmIQ.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-Rh0erDOb.js",revision:"7a00205cde84a167e23e5c6ce0f20674"},{url:"assets/index.html-TLmaTaqK.js",revision:"310fdf35690289b4b695a2a9f063cdf2"},{url:"assets/index.html-uBldBXxN.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-v6csxUL5.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-vj58oyHa.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-VsukZOSA.js",revision:"c6e6b871aa905370fa4d93c22c2fc8e1"},{url:"assets/index.html-WES3IN89.js",revision:"63a2fce3e9b75e8a7f33af47fc6d5096"},{url:"assets/index.html-X7WU_LPV.js",revision:"18f6a74b2ca20e17c9893fd3cfd2c878"},{url:"assets/index.html-XiIyF-Mz.js",revision:"125061609d4366c5cf551cfd435226ee"},{url:"assets/index.html-Y6Zxo28x.js",revision:"583fc19e65b7982208e7988a34d75970"},{url:"assets/index.html-yFJZvUVc.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-yjc28uoP.js",revision:"4d87cc57914d0403609cbb2f0de32cbb"},{url:"assets/index.html-yYLEULdt.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/index.html-ZAfsJ4Zm.js",revision:"5ff68fcacb97901c264ad1d7b40b6298"},{url:"assets/index.html-Zl8OD7vu.js",revision:"eba5ebfdf176f5b1608ff6a52d885037"},{url:"assets/index.html-zqagt7gM.js",revision:"9f33d74f992c98b844ebe7fb9d0599a1"},{url:"assets/infoDiagram-a336098b-ahMgvA-1.js",revision:"358686becdf616aa6b5291c7b9393995"},{url:"assets/init-Hi12RPRh.js",revision:"3ce28180466443e9b617d7b96e9f7b8f"},{url:"assets/install_zlmediakit_using_vcpkg_2-1HFW-yNt.js",revision:"eba8f412e34fc0140174130ed248e21f"},{url:"assets/install_zlmediakit_using_vcpkg.html-_H3jokEy.js",revision:"5e8111d2c2acce6608f89dc07754b276"},{url:"assets/install_zlmediakit_using_vcpkg.html-lJ__kZwE.js",revision:"90288c6b05b19f6839599ba7d32befbd"},{url:"assets/install_zlmediakit_using_vcpkg.html-tFAic-l6.js",revision:"4a051fe16e8e4dccc7be6dc1c47a137f"},{url:"assets/install_zlmediakit_using_vcpkg.html-uFx2Qn-i.js",revision:"dbb4246dc845164cb09890791e4ecf6b"},{url:"assets/introduction_to_streaming_media_related_technologies.html-jd9Zwqd3.js",revision:"3317bc4a0e2bcceb80fda8b88f0bbbba"},{url:"assets/introduction_to_streaming_media_related_technologies.html-O53gIrdK.js",revision:"0ef8b597685e571d9ff51705e039dc88"},{url:"assets/introduction_to_streaming_media_related_technologies.html-uFhGEBGc.js",revision:"1d475bfd3c612e339908e97deaa79136"},{url:"assets/introduction_to_streaming_media_related_technologies.html-Zd-Cue_9.js",revision:"336383a0af62d19fba0a1dd8fda04d84"},{url:"assets/journeyDiagram-deae3313-A-9AYwwK.js",revision:"9f88d6462313245e41c4772ed58acce1"},{url:"assets/layout-6DvG_ICF.js",revision:"e26aa7111e727ad91c4ceebcb9b41bad"},{url:"assets/license.html-onnWhI1X.js",revision:"959de41ff2dbe211d159ffcbbdecaf1d"},{url:"assets/license.html-Pr361WBx.js",revision:"2e4f7926a1cc657c22fe8705d819270b"},{url:"assets/license.html-ptTdZQ9a.js",revision:"59c5af23d2c0c4fa2f4eab93e329bf3c"},{url:"assets/license.html-qa5ZL8TL.js",revision:"df8e691978906ce9472d451f42793a2e"},{url:"assets/line-QxBjBe1b.js",revision:"e0390d298572b2e533df41b92be91f91"},{url:"assets/linear-nks6njEu.js",revision:"3711966dc1758eb79ce17af207d381ea"},{url:"assets/mermaid.core-YBgJFCkH.js",revision:"cfdb5e3a743287db9f28c2d9dbbf9824"},{url:"assets/mindmap-definition-617cf8dd-vVbSb0k_.js",revision:"a36f678a81148cf259ee80c1a2463d06"},{url:"assets/not_recommended_qq.html-g8E5V1Ie.js",revision:"cc6d5dbde1ac6d1fd4335769c6ce3666"},{url:"assets/not_recommended_qq.html-Od4ztKJy.js",revision:"c3885d6144111405525cc78161e1bce3"},{url:"assets/not_recommended_qq.html-sTyZQjjb.js",revision:"55ddaad5d2ea1b4598a2581acaab0546"},{url:"assets/not_recommended_qq.html-VsG4mwYA.js",revision:"606a9ac591fb5731c26d8e900403b2e4"},{url:"assets/on-demand_push_streaming_zh-CK4xj1dh.js",revision:"58fd02f19ecc7bced43f105b06c8430d"},{url:"assets/on-demand_push_streaming.html-crgN24-s.js",revision:"ac1b3b0933859c59196b2f575f3649ac"},{url:"assets/on-demand_push_streaming.html-kP6TQb2_.js",revision:"2785a3c0027931aa5e62297f7ccf37c2"},{url:"assets/on-demand_push_streaming.html-MaKthO1-.js",revision:"3f487d7cb9c03cf0d9f6e117f607fe94"},{url:"assets/on-demand_push_streaming.html-NzG-8Joc.js",revision:"87c4986f5bde9eb4fe9637ac7e0acd65"},{url:"assets/on-demand_streaming_zh-h19pTlmd.js",revision:"0eb44d4c65523fe801d4a4498adaafc4"},{url:"assets/on-demand_streaming.html-2DvN-m5K.js",revision:"b38e0c728d1e2148b057ac438c0329fd"},{url:"assets/on-demand_streaming.html-5SBDxVes.js",revision:"a3755702d9fcf9d9e4672d16658758a0"},{url:"assets/on-demand_streaming.html-rje6YlXl.js",revision:"f4c549eea188e9a4b7112778c42c17ee"},{url:"assets/on-demand_streaming.html-VwCpE1JK.js",revision:"f85b1e3a5f0c8d08930dce14f75aeb1c"},{url:"assets/oncetoken.html-JcsefotR.js",revision:"0d901abe41c808ec9f1a3c1c35ffe65f"},{url:"assets/oncetoken.html-KoxT1WJ9.js",revision:"0f7d361f7ae93d381f5fdae6309e4496"},{url:"assets/oncetoken.html-LPckM_ZY.js",revision:"9154f9b016875771b1917e6c850a1996"},{url:"assets/oncetoken.html-pNonh94A.js",revision:"d0394451a802958333c70924db7fb865"},{url:"assets/online_test.html-8_GcpcRF.js",revision:"52338331afa59a61a6bcb8f6ca24fafe"},{url:"assets/online_test.html-osni6C75.js",revision:"e661758df2e4ad6406dc4aa0e9871690"},{url:"assets/online_test.html-X04CV8WE.js",revision:"183a9a7a404c5c376065e821924859e0"},{url:"assets/online_test.html-XBO_M5q9.js",revision:"98936b8dca13b9db45bc565f2a2dfd79"},{url:"assets/ordinal-wXG5obU4.js",revision:"a72e57060c4f6a7606baa78dc6e9ad02"},{url:"assets/path-aUcfwwLI.js",revision:"f86c0243cb45746453c6b4f7dbd9f34d"},{url:"assets/performance_testing.html-DQL8Y_0H.js",revision:"614f84b26f36cd75f82542fcafbadbf3"},{url:"assets/performance_testing.html-oRt7mc3-.js",revision:"25a556f295f0cd7d5604cfc6f568e3e5"},{url:"assets/performance_testing.html-RUXKMema.js",revision:"9551eaf034a76939e5ada96132340a23"},{url:"assets/performance_testing.html-wMvwmLu0.js",revision:"d43a0001d72ef49579dbf598ac26ba4e"},{url:"assets/photoswipe.esm-08_zHRDQ.js",revision:"481d5342d9bb799640b63b15b698dcd4"},{url:"assets/pieDiagram-a5166659-88FRZv2h.js",revision:"c0975ac9a0eb34fce6e957f8930ba8fe"},{url:"assets/play_url_rules.html-_eahSglS.js",revision:"7fbd4cf9e506e5c36ccd6e6a3af7ffc9"},{url:"assets/play_url_rules.html-GF2zY0uE.js",revision:"457bd988c0f36683479842f87791a38f"},{url:"assets/play_url_rules.html-LU-zd-xr.js",revision:"e8313eb4ea56e522cb92f9f260523109"},{url:"assets/play_url_rules.html-qwXh8ebF.js",revision:"75fa5e93be6d114e726e884607d6042c"},{url:"assets/playback_authentication_zh-gjAAn9Yd.js",revision:"d1b73468587890117bafd3f86759aec4"},{url:"assets/playback_authentication.html-arMfpj8D.js",revision:"9168f09b8be9be130d72ddb4c4b4fb3c"},{url:"assets/playback_authentication.html-AsKcZv3x.js",revision:"06fd721198c15baee42d26e55f49c6c3"},{url:"assets/playback_authentication.html-G685IkfQ.js",revision:"9d419a4ece7033782a7bf4f4dd2360d1"},{url:"assets/playback_authentication.html-wjgI-Yj5.js",revision:"565152fbd8128bbfc4a350131902a817"},{url:"assets/plugin-vue_export-helper-x3n3nnut.js",revision:"25e3a5dcaf00fb2b1ba0c8ecea6d2560"},{url:"assets/push_authentication_zh-OS4qAsfx.js",revision:"2c2bf93635139a5d3979114757a9bfa3"},{url:"assets/push_authentication.html-_wCQpvPn.js",revision:"1ff24a776c6c1bf3187c8a185866cd89"},{url:"assets/push_authentication.html-8JQfqi5E.js",revision:"3e7eea41c9dfba1adbb4128ecaf6f554"},{url:"assets/push_authentication.html-oaOjOtnq.js",revision:"210b20a52ad45ab55fd37174c3c9bc23"},{url:"assets/push_authentication.html-qlfLynHw.js",revision:"b3d7bf7f8d5bdcd9e98b65b9def167ab"},{url:"assets/push_streaming.html-5MzKBCwx.js",revision:"00af9265177e3e8a736e41254f3cd2eb"},{url:"assets/push_streaming.html-JqhELNzW.js",revision:"afa4fa9617f8e05a0a8edad9fb2bd110"},{url:"assets/push_streaming.html-MRQ3SR8R.js",revision:"a494f23272c020190b6d7b9e6534cee2"},{url:"assets/push_streaming.html-Z4VDPPfI.js",revision:"c64db74b6d82876529a744130565aa0e"},{url:"assets/push_test-WgKOKRFc.js",revision:"e9d124a5d01db8f90748223c62797fde"},{url:"assets/push_test.html-dzpZPZVg.js",revision:"6faa8e906a8729dc4816dfb4957ff39c"},{url:"assets/push_test.html-gnFrDUbt.js",revision:"64472eabb158a683a6690a65cca64231"},{url:"assets/push_test.html-n5-72YJ1.js",revision:"fa47a6be341003a057e2a5c0fd41f0d0"},{url:"assets/push_test.html-rQVB769L.js",revision:"93f2a09ff23420dc2f85ff60910ec319"},{url:"assets/quadrantDiagram-6c355bbc-3OwR_3NY.js",revision:"f0fb38c91fc21cdd49d0d9e188ae4de5"},{url:"assets/requirementDiagram-4038b16c-GBigQQoF.js",revision:"212f666bc8e13eed5688371094d707d4"},{url:"assets/restful_api.html-4yfdZ-oL.js",revision:"f6caab337c72c9fd847d4d2727a80a0a"},{url:"assets/restful_api.html-ojzFkZh8.js",revision:"ec9a18b6e52645033d3be5c4ceff0bf8"},{url:"assets/restful_api.html-vpWQQrW9.js",revision:"3577dfd936bbed14b4d76ac027be2810"},{url:"assets/restful_api.html-Xx1SUrzX.js",revision:"27db13c31cdd8cf6d8f4d4db7958194b"},{url:"assets/rtmp_playback_compatibility_issues.html-5avJPHVo.js",revision:"6be1e2e717cb3e63216bce17db431fda"},{url:"assets/rtmp_playback_compatibility_issues.html-fNEuKIs-.js",revision:"2cb15ad80be974c535f6f192288aa826"},{url:"assets/rtmp_playback_compatibility_issues.html-NhoJKAeu.js",revision:"fce764759416bc52c224e6dc56f08587"},{url:"assets/rtmp_playback_compatibility_issues.html-RzirVjbt.js",revision:"bf3a79adbd8687cf32a560b763907237"},{url:"assets/rtmp_pull_stream_performance_test.html-_aYV-qZf.js",revision:"ade15d4d534cd82ca2cc09fba7821fc3"},{url:"assets/rtmp_pull_stream_performance_test.html--AjSCAb6.js",revision:"bd1504c390e440f3f3f46565dfb1c510"},{url:"assets/rtmp_pull_stream_performance_test.html-HQ4fzTKd.js",revision:"305864626776df21bb91f68cd1ae4047"},{url:"assets/rtmp_pull_stream_performance_test.html-UV-5J8vg.js",revision:"a283af73cd45963317e4d4a5981ff65f"},{url:"assets/rtmp_push_stream_performance_test.html-AxJYj-3i.js",revision:"483711c1a022e7d97bbfd4425092f5e6"},{url:"assets/rtmp_push_stream_performance_test.html-BY1UVNB2.js",revision:"ad220f0720f98cb1adc30de41972428f"},{url:"assets/rtmp_push_stream_performance_test.html-VzlWIKzU.js",revision:"c218d11d7996fb5f86729c59a9ec8020"},{url:"assets/rtmp_push_stream_performance_test.html-YYy_fCwZ.js",revision:"56c574a723b439e5e2cf8a44ccd1ae86"},{url:"assets/rtmp_support_for_h265_and_opus.html-a8ynJZrM.js",revision:"4c96032af39497dbd6c852dfede37518"},{url:"assets/rtmp_support_for_h265_and_opus.html-f4aPfFot.js",revision:"a492fe181304965e8618760a986a1330"},{url:"assets/rtmp_support_for_h265_and_opus.html-Ja2UBaOZ.js",revision:"0c617f4c3eb550b39c081d47ca718e88"},{url:"assets/rtmp_support_for_h265_and_opus.html-tX2acU7J.js",revision:"70ba7cf876f460ad76d42aa18bfa2af7"},{url:"assets/rtsp_performance_optimization.html-jqJ1nUFL.js",revision:"d3462ef3b2e80ed0bd6aabc16863daba"},{url:"assets/rtsp_performance_optimization.html-N4V23aKI.js",revision:"8a21a102026c37a97823ac99d10ceda5"},{url:"assets/rtsp_performance_optimization.html-oVbOTUnc.js",revision:"878f7c0f478d2d2adfb041a5a310716a"},{url:"assets/rtsp_performance_optimization.html-XwSQReWx.js",revision:"e4f0f43ad81a11129ab62c4dc1a66d96"},{url:"assets/rtsp_pull_stream_performance_test.html-2yov4QZH.js",revision:"36e9219568e20efb63443ea908a33bae"},{url:"assets/rtsp_pull_stream_performance_test.html-78O1mXMt.js",revision:"c7be2c21aaf566dcced5ee6b9b38382d"},{url:"assets/rtsp_pull_stream_performance_test.html-9hA9_SB-.js",revision:"687c3b750da73663d062d7188877acca"},{url:"assets/rtsp_pull_stream_performance_test.html-waVb8kwe.js",revision:"c7be2c21aaf566dcced5ee6b9b38382d"},{url:"assets/rtsp_push_process.html-5BXn5aZU.js",revision:"f51ac65b1210b608025c54039e9cd723"},{url:"assets/rtsp_push_process.html-eeithr0y.js",revision:"f54ec8d338002bfc19a7ebf2719dd781"},{url:"assets/rtsp_push_process.html-MSFA7pR8.js",revision:"0730b0affd6b626ec2adde265bfbb202"},{url:"assets/rtsp_push_process.html-ZQbam1ye.js",revision:"6a97cec8ee75a1c9e0471d50b0d97723"},{url:"assets/rtsp_push_stream_performance_test.html-3UQhsyo8.js",revision:"308c989c47769eb89dc0504d1392b531"},{url:"assets/rtsp_push_stream_performance_test.html-g2X0PP_e.js",revision:"825be1a0511d7deae628dc8708cdb3cd"},{url:"assets/rtsp_push_stream_performance_test.html-x031EUqu.js",revision:"0b29c71a42cc56e5626d7c6df3f5b60f"},{url:"assets/rtsp_push_stream_performance_test.html-YskCMXrz.js",revision:"0b29c71a42cc56e5626d7c6df3f5b60f"},{url:"assets/sankeyDiagram-6db3d513-gIgv_0rP.js",revision:"bb4901582f9a9bd9f8152a414f137a67"},{url:"assets/sequence_diagram.html-pEkXoaBs.js",revision:"4dfa6fe00ea90c64d0e52ecfa3bb784b"},{url:"assets/sequence_diagram.html-y7tfUv_v.js",revision:"f83ca3c8bcc0b924a3664b7656d0d346"},{url:"assets/sequence_diagram.html-yqJJFxQH.js",revision:"d782a1092ea55f1b4d383b3ec73713a7"},{url:"assets/sequence_diagram.html-ZomyBXSL.js",revision:"896bebbd384db50ee6571b853ac568a4"},{url:"assets/sequenceDiagram-465a088a-qM5g7oLQ.js",revision:"a8e1e5a6e0687929b19530803ff4f35e"},{url:"assets/start_server_3-RVnx99XR.js",revision:"cdc2fe86a390491f5cb22b1eceb5f785"},{url:"assets/start_server.html-fcMybRlu.js",revision:"09f556bf8111d3276b52829d577786e3"},{url:"assets/start_server.html-iaR_8o9S.js",revision:"4b0d51c95852b9efb968bc15f98bf436"},{url:"assets/start_server.html-JlFNgj-K.js",revision:"dfeb9ab5151c1c03d3b7bc3cb3069392"},{url:"assets/start_server.html-rADXsgsy.js",revision:"17f98f760083e4a3a319271a5e63319a"},{url:"assets/start.html-3NE1XKNN.js",revision:"5c0300f5fb2e4cf3591dc61e1b867ada"},{url:"assets/start.html-I4A7uS59.js",revision:"2dd388f7f89c50f312c2671acec0f20a"},{url:"assets/start.html-Jyh7sq9I.js",revision:"f5febcbd00c1165c254b98d0a33020b0"},{url:"assets/start.html-zUlbdSif.js",revision:"7783d4fcb6248e03479bec97c5497be8"},{url:"assets/stateDiagram-b620d43f-mAYfcJzU.js",revision:"d412c512bff100ba35cbe994323165e8"},{url:"assets/stateDiagram-v2-2671c3d1-QZ9kVaW-.js",revision:"89de3b4aee6a5a2c0080abd7459112d2"},{url:"assets/style-b4Lm5zJp.css",revision:"29a55a9ec36f4713f5ee0c2d567936eb"},{url:"assets/styles-4ba6ed67-LzHEaVgv.js",revision:"474aca56f8096549ed879625e8d88440"},{url:"assets/styles-b966c4ae-hKhWXcIa.js",revision:"90acd695049615ae8d8a99a82fd97f89"},{url:"assets/styles-bbc3fe3b-rQ9hJQeS.js",revision:"59e25cd71d7bb59e922e3b9a2efaf832"},{url:"assets/svgDrawCommon-ad5ef572-Rj64dPCl.js",revision:"47c8b973c83e857c97cd6b08e07c150c"},{url:"assets/thanks.html--KuWuTSm.js",revision:"d3803fff8502582755c3807cb30b7cab"},{url:"assets/thanks.html-eseVCxC7.js",revision:"1273ae668b9056c36531756d4732bdb3"},{url:"assets/thanks.html-FSlc_7wN.js",revision:"10dcb84692f0c6dbe216edd4ae609799"},{url:"assets/thanks.html-Rcdc4mKk.js",revision:"f21849b3e043cced8d24a68f8ac9e575"},{url:"assets/the_nature_of_live_broadcast_delay.html--_Oe6F80.js",revision:"f8658cf2d7e8ad6d96608c589f34470c"},{url:"assets/the_nature_of_live_broadcast_delay.html-bGwDwg8A.js",revision:"20f830ee314f6b02c6b0126b63b5446b"},{url:"assets/the_nature_of_live_broadcast_delay.html-bjchJaZD.js",revision:"735754f2db4f74a46465bbefadfef135"},{url:"assets/the_nature_of_live_broadcast_delay.html-uU6VtFJR.js",revision:"92c9acaeab334f41332d4ed9539ef01d"},{url:"assets/timeline-definition-732a2638-_vkJzhaO.js",revision:"9bbda6d652063f0b0e015d5d80c5e059"},{url:"assets/use_cases.html-C-cj_NSV.js",revision:"a791484044a968dc199237dad1cc28f2"},{url:"assets/use_cases.html-nlOjewQC.js",revision:"727e6f6195079f183e29904a3db6fb6a"},{url:"assets/use_cases.html-ocJvSQIH.js",revision:"4a5ef0c81108312f5c9ec4ae745c0f4a"},{url:"assets/use_cases.html-SNBvnwbO.js",revision:"4f0ec334c475c21fee53a84b716d8c69"},{url:"assets/video_conferencing_related_resources.html-1ZPXoBfM.js",revision:"e4757909bc6677a4f013cecc2fd1f9cf"},{url:"assets/video_conferencing_related_resources.html-Da8l8FFw.js",revision:"a391a24998a5e69a47cbc89241c5e857"},{url:"assets/video_conferencing_related_resources.html-JT3FqRo7.js",revision:"34b69957b9be0b8ee95ec35b3d7527ce"},{url:"assets/video_conferencing_related_resources.html-pKTKpfIG.js",revision:"0e8b204a063b9006cd5ed0418526315e"},{url:"assets/vs_code_zh-ltEPcFYF.js",revision:"bae72e4c099d90687244cb1ba5708ec1"},{url:"assets/web_hook_api.html-4eZenSeJ.js",revision:"675753cd7131bd83f1aca0f502208209"},{url:"assets/web_hook_api.html-F_kUu3X6.js",revision:"95e48cec141cf6b666746c158fa55d8c"},{url:"assets/web_hook_api.html-nXr7pFGe.js",revision:"3fc9d0a041671d8c536f81be6c6779df"},{url:"assets/web_hook_api.html-yTBnNLfz.js",revision:"462bea7db290092ccf539b3f0e8ffcc0"},{url:"assets/webrtc_compilation_and_use.html-Ck_2B7eV.js",revision:"4f06fb3918dac02bcc9b2431b9cd213d"},{url:"assets/webrtc_compilation_and_use.html-ifqCJvPh.js",revision:"413bf4f9e564cd018500420074a69d83"},{url:"assets/webrtc_compilation_and_use.html-u4uYYnLr.js",revision:"39615c16478a511c7cce6932b7d93b9c"},{url:"assets/webrtc_compilation_and_use.html-Wir4WmSI.js",revision:"2d2abf401ca2176afc9d1ad0b8ff5f47"},{url:"assets/webrtc_signaling_interaction_format.html-6nmFHnea.js",revision:"b70847f2823ec38e904836f4e309a5fd"},{url:"assets/webrtc_signaling_interaction_format.html-KYtlkjHG.js",revision:"876f59d20c216a2bfddf825c3c6c1e3d"},{url:"assets/webrtc_signaling_interaction_format.html-RSBHyl7A.js",revision:"918d5f1ae8bc5965606da4fe6657addb"},{url:"assets/webrtc_signaling_interaction_format.html-TjrAUdNc.js",revision:"9c31ec603847531d41ccc4896636cae1"},{url:"assets/xychartDiagram-f746c04c-ybRnTgNu.js",revision:"c9a40377aaba0709a3d49984311ef337"},{url:"assets/zltoolkit_source_code_study_notes.html-3EZc_Boy.js",revision:"4c345c69468d9cf5cde7c497140f02a2"},{url:"assets/zltoolkit_source_code_study_notes.html-vFvvg7fr.js",revision:"0517fff48911aa21ff7f41c822b80900"},{url:"assets/zltoolkit_source_code_study_notes.html-X78_rEP2.js",revision:"3ac3a0c90dd936fec25c92ec2b6c93fb"},{url:"assets/zltoolkit_source_code_study_notes.html-XyGnG3Jc.js",revision:"dd92a80d45f838fcd5522250cc30101b"},{url:"logo.svg",revision:"6c6a0dc1bda8418aef497da1d078d96f"},{url:"404.html",revision:"ea7fb544e8ce5d174d4c384e79cc4372"},{url:"guide/code/index.html",revision:"56872cf62d57b715fc6efc1fe4112d8e"},{url:"guide/code/oncetoken.html",revision:"0d4c26a5ad7e8c0524674c0e17d58d63"},{url:"guide/faq/index.html",revision:"0f436e5aa9653eb250b9f5447defd93e"},{url:"guide/faq/not_recommended_qq.html",revision:"fa4d1373642bc79f17a11dc26640b613"},{url:"guide/faq/rtmp_playback_compatibility_issues.html",revision:"002069400253eab4e51387d57cf34c40"},{url:"guide/index.html",revision:"42416770527382219c7fcc4bda8dbd6c"},{url:"guide/install/compilation_instructions_for_windows_version.html",revision:"df5da81b607e932b81387398929cc8c2"},{url:"guide/install/index.html",revision:"0f833d9ce0f51829dc05e454dfc0d7ad"},{url:"guide/install/install_zlmediakit_using_vcpkg.html",revision:"f9b2fbb2a98428727416759de59e8207"},{url:"guide/install/start.html",revision:"6e9fcbbdf558a038a8e613c8e96a74fd"},{url:"guide/media_server/config_file.html",revision:"560f65a1ea815c9b8a0a0bb65100804b"},{url:"guide/media_server/generate_ssl_self-signed_certificate_and_test.html",revision:"1ee547284307eb48b0a35cf0aa6e3885"},{url:"guide/media_server/how_to_enable_https_related_functions.html",revision:"97e953ebc96421103031e6401fea94e7"},{url:"guide/media_server/index.html",revision:"dd2ae229453111341bbbd7563029e524"},{url:"guide/media_server/on-demand_push_streaming.html",revision:"40e8a216b12c5f3a401d943b058d0bfc"},{url:"guide/media_server/on-demand_streaming.html",revision:"22332e2fd843d9ef9ea7f83289a8d151"},{url:"guide/media_server/play_url_rules.html",revision:"792243ac484c72aea2248b6537f57e85"},{url:"guide/media_server/playback_authentication.html",revision:"a890b5a29d054ac069323500758afb26"},{url:"guide/media_server/push_authentication.html",revision:"9848ad34eb0eb0a1fe4a529e7053031d"},{url:"guide/media_server/push_test.html",revision:"c63fc43e6e886f6cc2cfa2a76d7797c3"},{url:"guide/media_server/restful_api.html",revision:"423eb4bacfeec432edeffcb2531e5ea9"},{url:"guide/media_server/sequence_diagram.html",revision:"aeb8b86d2dcb012f47dbaf55a0fa1112"},{url:"guide/media_server/start_server.html",revision:"8c74e3d2ef803b8a2da8d10a4a17c6ba"},{url:"guide/media_server/web_hook_api.html",revision:"6747754037335074cfad3d5120b9dd98"},{url:"guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html",revision:"84f080e717b1263bee48e047672f4e75"},{url:"guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html",revision:"aea7e3b71fce3ebf5d4e3c9c2abac519"},{url:"guide/protocol/gb28181/index.html",revision:"3ed79b38bb06e7294b8d14c20581fb2c"},{url:"guide/protocol/gb28181/push_streaming.html",revision:"3dd1c7dc072c9dbcd80f062cb551ccd3"},{url:"guide/protocol/index.html",revision:"7caf7827376da87a1ee4a2169f956027"},{url:"guide/protocol/srt/index.html",revision:"4310aa6b0ab5d6382250223ae834e274"},{url:"guide/protocol/webrtc/index.html",revision:"09bde7ab18c2127ef87d8c481b4ec966"},{url:"guide/protocol/webrtc/webrtc_compilation_and_use.html",revision:"fd676a728feb6ada510d41d9ca2d437e"},{url:"guide/protocol/webrtc/webrtc_signaling_interaction_format.html",revision:"1b8cf95e70bdfa94a7b7682ef3855049"},{url:"guide/sdk/how_to_create_a_live_steam.html",revision:"98fe0eca2a1163a29d35faa0ff9e03db"},{url:"guide/sdk/index.html",revision:"814351bfab5f07d09a4fb9db30ecd53e"},{url:"index.html",revision:"8192fa7103a69bc736019b875c9cde41"},{url:"more/collaborative_projects.html",revision:"28dc714a537d8d0bc317d499aafb7c81"},{url:"more/contact.html",revision:"29c3b066f4c10371b7370648e5847dc8"},{url:"more/index.html",revision:"53bb8c7dbbfc0f9a8e86f2156e4293e3"},{url:"more/license.html",revision:"b3a440085e588e4120e4e0189ebd17c2"},{url:"more/thanks.html",revision:"7f302e1f72174b8ba640082674a1e774"},{url:"more/use_cases.html",revision:"34b234b26b304e2a51cf91294e0c8d10"},{url:"reference/development_log/hls_high_performance_journey.html",revision:"85d0d2f227775d5e5a199452441f01a5"},{url:"reference/development_log/index.html",revision:"2286beb533548d274593a98e4caaa0d7"},{url:"reference/development_log/rtsp_performance_optimization.html",revision:"632bc1f0166d4dbc46a8436998c777b3"},{url:"reference/documents/exclusive_features.html",revision:"a929bb7303301dfb81b14023ae8d4d09"},{url:"reference/documents/high_concurrency_implementation_principle.html",revision:"92ef14e7afcdf56e1811321ab3cae2b1"},{url:"reference/documents/index.html",revision:"2f506052bef78ca9957e885521dbf28c"},{url:"reference/documents/introduction_to_streaming_media_related_technologies.html",revision:"fe13eaa66650c43df95ee69b3f67128f"},{url:"reference/documents/rtsp_push_process.html",revision:"1dea3eb2afb9617aab10b1fd9d1d3501"},{url:"reference/documents/the_nature_of_live_broadcast_delay.html",revision:"03bc4c484f930e8772f4e2ae1dc6b173"},{url:"reference/index.html",revision:"99862d22757555b26e91e2c9966802b2"},{url:"reference/resources/dependency.html",revision:"e71a3acbf12758a59cb5292fdb4fb143"},{url:"reference/resources/index.html",revision:"57e324bb35f2b6dced8e6438290cd21f"},{url:"reference/resources/rtmp_support_for_h265_and_opus.html",revision:"bf2d11cc104fed79b318ae16fbd125ff"},{url:"reference/resources/video_conferencing_related_resources.html",revision:"5208b373d2330e3d6783239ce2d7baeb"},{url:"reference/resources/zltoolkit_source_code_study_notes.html",revision:"103e1e99681e492e5a740f54ef955676"},{url:"reference/test/benchmark.html",revision:"5114756aafcc7104c630c904849e77e6"},{url:"reference/test/delay_test.html",revision:"af312f7053dc6d486b4f321960504e32"},{url:"reference/test/how_to_test_delay.html",revision:"3e705a1f9f05ed43710360207c2882ee"},{url:"reference/test/index.html",revision:"3a746417a474beeeb8b684cc28629791"},{url:"reference/test/online_test.html",revision:"85134eddb2ae04b7cc095bd216291957"},{url:"reference/test/performance_testing.html",revision:"c75e554267a6df8a2d62d3fd6114d627"},{url:"reference/test/rtmp_pull_stream_performance_test.html",revision:"0e0c5b242ded71e0457339ac3674e3da"},{url:"reference/test/rtmp_push_stream_performance_test.html",revision:"9408d967b1e1568fc433739d7a98d70f"},{url:"reference/test/rtsp_pull_stream_performance_test.html",revision:"1b13bc651bff6d91b12b310d3c1b89f6"},{url:"reference/test/rtsp_push_stream_performance_test.html",revision:"751031f8f26c48cc4dcaf75e0198ac97"},{url:"tutorial/index.html",revision:"eda7253da7b5b7425ef3528424d579fc"},{url:"zh/guide/code/index.html",revision:"0e56c1490a97c0bb186552b74b39d7f2"},{url:"zh/guide/code/oncetoken.html",revision:"7573fa68d78550947c82a7fb928c993f"},{url:"zh/guide/faq/index.html",revision:"862fd63459f52c689cb6167b71f5e7b8"},{url:"zh/guide/faq/not_recommended_qq.html",revision:"181012f95e7a9bce1a06e3aac1e2173f"},{url:"zh/guide/faq/rtmp_playback_compatibility_issues.html",revision:"b776e2783e8e16eda641c0d476ef61a3"},{url:"zh/guide/index.html",revision:"8c63f99ffb605bf55adfca8b69d4c58c"},{url:"zh/guide/install/compilation_instructions_for_windows_version.html",revision:"a622a0af5b6ca8ea81b9316edcd3299f"},{url:"zh/guide/install/index.html",revision:"c1b9835d2ae8120dd8ec7a208348c50b"},{url:"zh/guide/install/install_zlmediakit_using_vcpkg.html",revision:"c962d4fb8d79368086786a6bc85be2d4"},{url:"zh/guide/install/start.html",revision:"42c3f5968011e2de0ceff041dc2876be"},{url:"zh/guide/media_server/config_file.html",revision:"129b1d608c253ec054036fc3458282e4"},{url:"zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html",revision:"f0fe09475f0f98809d12b5818daa500c"},{url:"zh/guide/media_server/how_to_enable_https_related_functions.html",revision:"f278e7b25e7e4431ea1ad795a385fce8"},{url:"zh/guide/media_server/index.html",revision:"32ee3fe4c6ca35f3041e589b7ef736f9"},{url:"zh/guide/media_server/on-demand_push_streaming.html",revision:"aa52301f414b1cd177ef43569bda3ad1"},{url:"zh/guide/media_server/on-demand_streaming.html",revision:"8d84ee8fa2c0ca461c11b5e24928cf04"},{url:"zh/guide/media_server/play_url_rules.html",revision:"85ca8a560e1bbd56ad9ad3e7875ea53b"},{url:"zh/guide/media_server/playback_authentication.html",revision:"c69f615065f63362a797acb0dacb9069"},{url:"zh/guide/media_server/push_authentication.html",revision:"1b0c41770efb92f23ec4e0d0dc6b9b96"},{url:"zh/guide/media_server/push_test.html",revision:"d6341f309f0ea5e87e6258404bbc0761"},{url:"zh/guide/media_server/restful_api.html",revision:"2eee68391a6f35efbe5eb405183ee538"},{url:"zh/guide/media_server/sequence_diagram.html",revision:"2b10ebcaa69fd87116a4509ec62e7598"},{url:"zh/guide/media_server/start_server.html",revision:"9a685e8f0ff89fa1a341c881cc5a8fef"},{url:"zh/guide/media_server/web_hook_api.html",revision:"7da6a77ebec81ef7efd44b744084cc8c"},{url:"zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html",revision:"2f94487e20a9ac75bc4676e1c458f088"},{url:"zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html",revision:"e4babbd33f4b2388939917a20a160979"},{url:"zh/guide/protocol/gb28181/index.html",revision:"799661d145e3568671bb8f5e36cfefab"},{url:"zh/guide/protocol/gb28181/push_streaming.html",revision:"0b4dbc5e94eb1f461305a1e88ad53f31"},{url:"zh/guide/protocol/index.html",revision:"6bd6bd68d30b2a90cb23f64f9aed4729"},{url:"zh/guide/protocol/srt/index.html",revision:"03ede84d77ccce9158e73f7f79957b16"},{url:"zh/guide/protocol/webrtc/index.html",revision:"964681032161fb64fac8e25fa36656e2"},{url:"zh/guide/protocol/webrtc/webrtc_compilation_and_use.html",revision:"5bf18149ace82e55cefefa7b4756d7da"},{url:"zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html",revision:"a7f76dd611122577ec9564a473d19c65"},{url:"zh/guide/sdk/how_to_create_a_live_steam.html",revision:"7a63272ddf63d48f69ee5e469a1d099d"},{url:"zh/guide/sdk/index.html",revision:"48398222a328599e6cc943a2bdbd9484"},{url:"zh/index.html",revision:"760dc356ed1d8c01a8a66994444a2731"},{url:"zh/more/collaborative_projects.html",revision:"7fa3dd446e43e97a1f3327d9b228952a"},{url:"zh/more/contact.html",revision:"569fb40486cf5031914d4a7eb119c646"},{url:"zh/more/index.html",revision:"92e95c2afff72259988e835fa3564e37"},{url:"zh/more/license.html",revision:"185cc5466be385d384ecc65ec8a08523"},{url:"zh/more/thanks.html",revision:"3df35f19af143fa6cdbf190cee7e0c0f"},{url:"zh/more/use_cases.html",revision:"e073b14ce486b5b1eacd20c193007614"},{url:"zh/reference/development_log/hls_high_performance_journey.html",revision:"e5cdb72c82196528cfeba2ad14ef5c7d"},{url:"zh/reference/development_log/index.html",revision:"b7bd6dd97010aefb5d64bb1d34cbad86"},{url:"zh/reference/development_log/rtsp_performance_optimization.html",revision:"b5f6a2cb48f0547a27a98c9482ffe5ea"},{url:"zh/reference/documents/exclusive_features.html",revision:"5e565d8ef9731781ea08678386155608"},{url:"zh/reference/documents/high_concurrency_implementation_principle.html",revision:"21ea8706194046c5b24e3d54b925d66c"},{url:"zh/reference/documents/index.html",revision:"1845dab3f08e71a40fd098301610c25d"},{url:"zh/reference/documents/introduction_to_streaming_media_related_technologies.html",revision:"2360a4fe72cb935117db443c80431cc8"},{url:"zh/reference/documents/rtsp_push_process.html",revision:"4eb52415f8800bca7fe41c88e6d684b0"},{url:"zh/reference/documents/the_nature_of_live_broadcast_delay.html",revision:"39266a2323cf8905324c5a4da39aaf13"},{url:"zh/reference/index.html",revision:"8c4154abec3f0955cb93c9347886ae21"},{url:"zh/reference/resources/dependency.html",revision:"fd23cb7c23d5d10d39a3a0af37a9ab95"},{url:"zh/reference/resources/index.html",revision:"b95748c34d7d9777907fea68f5208b44"},{url:"zh/reference/resources/rtmp_support_for_h265_and_opus.html",revision:"593c4a5d5a49bf4a2748212d413d960b"},{url:"zh/reference/resources/video_conferencing_related_resources.html",revision:"a00fad2175fdae47963139c009983908"},{url:"zh/reference/resources/zltoolkit_source_code_study_notes.html",revision:"142248e290e09031874e8b44f57f272c"},{url:"zh/reference/test/benchmark.html",revision:"df669f5dbfdf4aae8c6516d2fdbbb94a"},{url:"zh/reference/test/delay_test.html",revision:"eccc3c4d558ca7b191992d6e4d837a38"},{url:"zh/reference/test/how_to_test_delay.html",revision:"3031b2f5c1e8edf4c092c3b5194c3573"},{url:"zh/reference/test/index.html",revision:"ccda5412e5c827bd6118628cd5c97964"},{url:"zh/reference/test/online_test.html",revision:"69ea1c161466b96ca3406e7c62e1d80f"},{url:"zh/reference/test/performance_testing.html",revision:"b47d6036741e2ecca2363fa19692c3ca"},{url:"zh/reference/test/rtmp_pull_stream_performance_test.html",revision:"1010f64704f401ce4390b514cae91e23"},{url:"zh/reference/test/rtmp_push_stream_performance_test.html",revision:"c60ffd688f38a01565d6075bb1f9b31e"},{url:"zh/reference/test/rtsp_pull_stream_performance_test.html",revision:"587562b6c6a09f1aecda123e2e3f0fd4"},{url:"zh/reference/test/rtsp_push_stream_performance_test.html",revision:"21066a9bf80c987977738deb078a5501"},{url:"zh/tutorial/index.html",revision:"81115618e46f6fa9ddcf6c85e5600747"},{url:"assets/icon/apple-touch-icon-114x114.png",revision:"b39af39658e13fd99763e10b9991ccf8"},{url:"assets/icon/apple-touch-icon-120x120.png",revision:"4c7de55a0bfef43bc0eb52905af33cf6"},{url:"assets/icon/apple-touch-icon-152x152.png",revision:"a23249a982dd7d97bc38e851acfc1ec8"},{url:"assets/icon/apple-touch-icon-180x180.png",revision:"153e47772d362c174bee9f00b8090bf1"},{url:"assets/icon/apple-touch-icon-57x57.png",revision:"04feca43d959ca0f3b6973782c9fa134"},{url:"assets/icon/apple-touch-icon-60x60.png",revision:"e7f1b90b537806adb676677c3dead66d"},{url:"assets/icon/apple-touch-icon-72x72.png",revision:"604eca13e9aa44f2f1d76778107e5d64"},{url:"assets/icon/apple-touch-icon-76x76.png",revision:"1698d7cd9b2cc90634013d3d62d23736"},{url:"assets/icon/apple-touch-icon-96x96.png",revision:"a361212595e0c34b5d3d64084864d3e9"},{url:"assets/icon/chrome-192.png",revision:"440ff33effa9f895b67156ed57eac1c1"},{url:"assets/icon/favicon-16x16.png",revision:"98c8fdb75f1f1891b830dd70be7780c5"},{url:"assets/icon/favicon-32x32.png",revision:"a0c87ba0608aecffe0d0182415770766"},{url:"assets/icon/guide-maskable.png",revision:"99cc77cf2bc792acd6b847b5e3e151e9"},{url:"assets/icon/ms-icon-144.png",revision:"a3e06505f5a643a43d7f559a53abd7be"},{url:"images/gb28181_push_streaming_1.png",revision:"6283957dbf3a609f861ffb40054c8ef4"},{url:"images/gb28181_push_streaming_2.png",revision:"eac2229bd7d6302dd56c80924378f4f3"},{url:"images/gb28181_push_streaming_3.png",revision:"d9c25e9d693382a8fb713baa4865c794"},{url:"images/gb28181_push_streaming_4.png",revision:"f3c6584aae2a27866166c43f244c553b"},{url:"images/generate_ssl_self-signed_certificate_and_test.webp",revision:"c893dba3185a1e863cf175c2698c9bf9"},{url:"images/how_to_create_a_live_stream.png",revision:"7f11ba4af262d0e2a00c7718e6c8b180"},{url:"images/how_to_enable_https_related_functions_zh_1.png",revision:"e1ffb707a47c1664161efc7c608fda24"},{url:"images/how_to_enable_https_related_functions_zh_10.png",revision:"5e4cafeb5b4f54f57d76f4dcd632c377"},{url:"images/how_to_enable_https_related_functions_zh_2.png",revision:"fb3c5027a4bef03f174d86f5d4cf8b32"},{url:"images/how_to_enable_https_related_functions_zh_3.png",revision:"ae7f42d52b58c80e0265eeb40be94a9d"},{url:"images/how_to_enable_https_related_functions_zh_4.png",revision:"536b0f9116a4fa6d0f155032886068d3"},{url:"images/how_to_enable_https_related_functions_zh_5.png",revision:"d77ab1e34df68663332e451f59d68203"},{url:"images/how_to_enable_https_related_functions_zh_6.png",revision:"5dd9c32672a86dbe6c07bbe58fe44522"},{url:"images/how_to_enable_https_related_functions_zh_7.png",revision:"e6cf4753d43bc6251742ea3269463c99"},{url:"images/how_to_enable_https_related_functions_zh_8.png",revision:"fe5c53d153ebb88d5b10ca979ce62a1b"},{url:"images/how_to_enable_https_related_functions_zh_9.png",revision:"1aa87003a965b710adf9139645171cb6"},{url:"images/how_to_use_device_id_as_stream_id_1.png",revision:"5d24bb7c4f502d40c38313bb9b1234fe"},{url:"images/how_to_use_device_id_as_stream_id_2.png",revision:"7f293641cf8de63af03ff846a2be943f"},{url:"images/how_to_use_device_id_as_stream_id_4.png",revision:"8d3f6cced326d24e5cb940c85209d47a"},{url:"images/how_to_use_device_id_as_stream_id_5.png",revision:"7f293641cf8de63af03ff846a2be943f"},{url:"images/how_to_use_device_id_as_stream_id_6.png",revision:"b46e6e52751c33cca5b2f768ceae92d2"},{url:"images/install_zlmediakit_using_vcpkg_1.png",revision:"549087a1bb82ce36aa774ce725a9eeea"},{url:"images/install_zlmediakit_using_vcpkg_2.png",revision:"8368b41cc655599a201e5818750225d1"},{url:"images/on-demand_push_streaming_zh.png",revision:"1bb65d163eb9008b383a2d04255c9507"},{url:"images/on-demand_streaming_zh.png",revision:"16dc127a26325cf06dac7aedd115d57e"},{url:"images/playback_authentication_zh.png",revision:"eba681073fa4dd2f6663eeb1c7cbbf7a"},{url:"images/push_authentication_zh.png",revision:"5b1e13cc9369abf66481d2f4cc1dccb5"},{url:"images/push_test.png",revision:"88ec411cafd56da1c27bb958e05c7bda"},{url:"images/start_server_1.png",revision:"46b863cc78aaebb1a0d5d2b824a45519"},{url:"images/start_server_2.png",revision:"29d3057d8f9dd51a5e3a4589a71d3e7e"},{url:"images/start_server_3.png",revision:"3088ed2c7996882f9272a59a8e00f8cf"},{url:"images/vs_code_zh.png",revision:"a374f77503296c66576dcf3641283791"},{url:"logo.png",revision:"32ddfa5715059731ae893ec92fca0311"}],{}),e.cleanupOutdatedCaches()})); //# sourceMappingURL=service-worker.js.map diff --git a/service-worker.js.map b/service-worker.js.map index e1f9367..c15aff7 100644 --- a/service-worker.js.map +++ b/service-worker.js.map @@ -1 +1 @@ -{"version":3,"file":"service-worker.js","sources":["../../../../../tmp/e300946a102fb5c9f0cbb6e444ab28fb/service-worker.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/docs/docs/node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/docs/docs/node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/docs/docs/node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"assets/404.html-aQJ09P_F.js\",\n \"revision\": \"76f3c96a47b4621ba8ce69fcbd885f68\"\n },\n {\n \"url\": \"assets/404.html-rHboC4Yl.js\",\n \"revision\": \"aed041663f65cb125fd20b9867368f78\"\n },\n {\n \"url\": \"assets/app-RP31lnfq.js\",\n \"revision\": \"b5deb434f0a33493a47446e416aa1268\"\n },\n {\n \"url\": \"assets/arc-IaSnKFUc.js\",\n \"revision\": \"30374cd75314969bdd67fc7cf8103b86\"\n },\n {\n \"url\": \"assets/array-Nw74a44z.js\",\n \"revision\": \"17dcebeaf673b09a1ca5da014d20022f\"\n },\n {\n \"url\": \"assets/benchmark.html-gZd5EMM7.js\",\n \"revision\": \"c3a806b24ac4f981f2be8706a3d240ee\"\n },\n {\n \"url\": \"assets/benchmark.html-MSc66SxZ.js\",\n \"revision\": \"dc32b8c22dbcb74830e677d297b170b6\"\n },\n {\n \"url\": \"assets/benchmark.html-Xmdk2BGM.js\",\n \"revision\": \"519bcf99829af67bfc5793acb6990917\"\n },\n {\n \"url\": \"assets/benchmark.html-xQUFyhUw.js\",\n \"revision\": \"0b93d042729a80ed7f7b41c6aac852a4\"\n },\n {\n \"url\": \"assets/c4Diagram-817c8e44-ubRVp6pW.js\",\n \"revision\": \"144d3e1f8f037c830c5fe75bbd1d502b\"\n },\n {\n \"url\": \"assets/classDiagram-48ab76fb-VgeeOHT1.js\",\n \"revision\": \"4e3704bd6f6e56f18d6e81959b18c0f3\"\n },\n {\n \"url\": \"assets/classDiagram-v2-8ecb0bfc-bhA94s1K.js\",\n \"revision\": \"6a334073de92a57871983c76337138db\"\n },\n {\n \"url\": \"assets/collaborative_projects.html-15UQQvPG.js\",\n \"revision\": \"aca89aea107c131135d843d7880f76b6\"\n },\n {\n \"url\": \"assets/collaborative_projects.html-gRvZJ2_P.js\",\n \"revision\": \"21258323cc48008377e663bcb4b9ccc3\"\n },\n {\n \"url\": \"assets/collaborative_projects.html-jP_gBiJf.js\",\n \"revision\": \"583cc22479ec92a5b098d8e065508a06\"\n },\n {\n \"url\": \"assets/collaborative_projects.html-zAkyRydI.js\",\n \"revision\": \"9ac26771a854c4dcde5c68a1c0f3733c\"\n },\n {\n \"url\": \"assets/compilation_instructions_for_windows_version.html-3EBfQXLm.js\",\n \"revision\": \"0a70b2ddf8660da416278dc1600e1247\"\n },\n {\n \"url\": \"assets/compilation_instructions_for_windows_version.html-Hq0AuZTz.js\",\n \"revision\": \"66feea9dae54928e3a2bb2f7a51bc417\"\n },\n {\n \"url\": \"assets/compilation_instructions_for_windows_version.html-xl0PwINJ.js\",\n \"revision\": \"ee73eff391cf2201c2517e705bc2e91c\"\n },\n {\n \"url\": \"assets/compilation_instructions_for_windows_version.html-xnA-vKUQ.js\",\n \"revision\": \"089c52b8af6454c375daaa93ea84b408\"\n },\n {\n \"url\": \"assets/config_file.html-5j1Bx0Jx.js\",\n \"revision\": \"591d662b3e72f0b21c92319d03a2e17c\"\n },\n {\n \"url\": \"assets/config_file.html-e7VlJmFs.js\",\n \"revision\": \"a3c776477c95546a2b79b18421d5ee58\"\n },\n {\n \"url\": \"assets/config_file.html-i3ELg7s5.js\",\n \"revision\": \"05d0fdfd1621df427f889e3dfb54050c\"\n },\n {\n \"url\": \"assets/config_file.html-NeQ-HnE0.js\",\n \"revision\": \"c83c527b8bba960502e0ce7915155156\"\n },\n {\n \"url\": \"assets/contact.html-_Z6vlVkO.js\",\n \"revision\": \"06843d9e63a73c9679f7b91f5b73c48f\"\n },\n {\n \"url\": \"assets/contact.html-JZn2Qe3S.js\",\n \"revision\": \"3b0cff6bdd2f86d63af834b85619f888\"\n },\n {\n \"url\": \"assets/contact.html-nPftNmfa.js\",\n \"revision\": \"c55df9245c21c481a492bf69830d5eea\"\n },\n {\n \"url\": \"assets/contact.html-XWW2pZ29.js\",\n \"revision\": \"0b951bd788c1b31fccea7115275bec02\"\n },\n {\n \"url\": \"assets/createText-aebacdfe-CTBuskZ8.js\",\n \"revision\": \"afdfd84da0d7462ac3cf8b0b199ea85a\"\n },\n {\n \"url\": \"assets/delay_test.html-_QomqbNh.js\",\n \"revision\": \"05e99497e62f35bf7dbea382401387f5\"\n },\n {\n \"url\": \"assets/delay_test.html-dT3kgdCj.js\",\n \"revision\": \"43f900f4b61b8881f4680b57bde2786f\"\n },\n {\n \"url\": \"assets/delay_test.html-nuUiWXnv.js\",\n \"revision\": \"40b63dad96fad312e289145653a4958a\"\n },\n {\n \"url\": \"assets/delay_test.html-wn_gavSy.js\",\n \"revision\": \"58727c3fb24e76033f9bb56194a715ff\"\n },\n {\n \"url\": \"assets/dependency.html-kZHrVdhi.js\",\n \"revision\": \"9ca975aa595ee87dd32375a5dcd28c59\"\n },\n {\n \"url\": \"assets/dependency.html-re6FQDQF.js\",\n \"revision\": \"8cda099d3a7b9acad4148cc502de62f8\"\n },\n {\n \"url\": \"assets/dependency.html-vliHx4sJ.js\",\n \"revision\": \"133156fbc8cde50f0cb079c965bc9d05\"\n },\n {\n \"url\": \"assets/dependency.html-WFMeX_wi.js\",\n \"revision\": \"d5dce666ed6fe2b23eb481b42b0125c9\"\n },\n {\n \"url\": \"assets/edges-80f1ebb6-89E8mCFH.js\",\n \"revision\": \"f2dee209804d1fd27aee54258722577f\"\n },\n {\n \"url\": \"assets/erDiagram-9cfc3649-xP3o3QeA.js\",\n \"revision\": \"3602a8855cc6cd8388a71e710c11978e\"\n },\n {\n \"url\": \"assets/exclusive_features.html-2siFVq2G.js\",\n \"revision\": \"3f63eed8e945a5d96317576aa72a604e\"\n },\n {\n \"url\": \"assets/exclusive_features.html-PNsKskwv.js\",\n \"revision\": \"3709624bc2b8b200ece872acc3ad11fd\"\n },\n {\n \"url\": \"assets/exclusive_features.html-Qj0lJyo5.js\",\n \"revision\": \"67e1e35ee73ac573382fbee53e0054c7\"\n },\n {\n \"url\": \"assets/exclusive_features.html-wTOG2Bjt.js\",\n \"revision\": \"908ef27f27bc5f36054d486537a4f6e3\"\n },\n {\n \"url\": \"assets/flowchart-elk-definition-e097735e-FPGtu502.js\",\n \"revision\": \"99ca5fe79505c2152c03324b23f10632\"\n },\n {\n \"url\": \"assets/flowDb-170db09d-pscdJplr.js\",\n \"revision\": \"f012741a879169d1cc65bd3367acd5f3\"\n },\n {\n \"url\": \"assets/flowDiagram-61eb444c-dTODa_2O.js\",\n \"revision\": \"aa3e1b4cc525e5f6c0cfe2346a9820b7\"\n },\n {\n \"url\": \"assets/flowDiagram-v2-2f8f667a-17CncbGG.js\",\n \"revision\": \"ba8b5bdffaca3c2149109c0de3a55fc1\"\n },\n {\n \"url\": \"assets/ganttDiagram-db6931fb-PbozmIQo.js\",\n \"revision\": \"e13314b1c38f2ad32b92a869b5a912dc\"\n },\n {\n \"url\": \"assets/gb28181_push_streaming_4-qWTnfswt.js\",\n \"revision\": \"30c7b622101f90395cc790c0e72e1cf9\"\n },\n {\n \"url\": \"assets/gb28181_sip_signaling_packet_capture.html-_63zZLPQ.js\",\n \"revision\": \"298c5cd5ce0ee80b0433ed54d5c1d647\"\n },\n {\n \"url\": \"assets/gb28181_sip_signaling_packet_capture.html-5xl0QuEj.js\",\n \"revision\": \"fedddc5e7fd4901d01c48a50c4ae15e2\"\n },\n {\n \"url\": \"assets/gb28181_sip_signaling_packet_capture.html-9YuNK2eX.js\",\n \"revision\": \"fedddc5e7fd4901d01c48a50c4ae15e2\"\n },\n {\n \"url\": \"assets/gb28181_sip_signaling_packet_capture.html-dSB5oqMq.js\",\n \"revision\": \"dbfc86980d308e1204aa23121f175f5c\"\n },\n {\n \"url\": \"assets/generate_ssl_self-signed_certificate_and_test-D4Sbj3Ls.js\",\n \"revision\": \"616544c7f95d53f29de519db0674f52c\"\n },\n {\n \"url\": \"assets/generate_ssl_self-signed_certificate_and_test.html-7V6eG0vA.js\",\n \"revision\": \"2900e1d4092c29de10d34afb5c4c753c\"\n },\n {\n \"url\": \"assets/generate_ssl_self-signed_certificate_and_test.html-kbzAeWE6.js\",\n \"revision\": \"b09a1dd2b0edc0f2a89f6d1a3051b919\"\n },\n {\n \"url\": \"assets/generate_ssl_self-signed_certificate_and_test.html-oJ11zSxb.js\",\n \"revision\": \"ed68faa861513799ad5e8313143d794c\"\n },\n {\n \"url\": \"assets/generate_ssl_self-signed_certificate_and_test.html-qSLRuImw.js\",\n \"revision\": \"e5b9c6794282f1b0fe700d22af21f5d2\"\n },\n {\n \"url\": \"assets/giscus-unEZQsJ0.js\",\n \"revision\": \"34c4288ad53e7d9be8d0f44c9fdba069\"\n },\n {\n \"url\": \"assets/gitGraphDiagram-6b463803-qYmaBvlu.js\",\n \"revision\": \"4ad9e14bf4e262ff20fabcc5e2258747\"\n },\n {\n \"url\": \"assets/high_concurrency_implementation_principle.html-6GveguVT.js\",\n \"revision\": \"bf09718f42fcdebbeb664094e3f33eb9\"\n },\n {\n \"url\": \"assets/high_concurrency_implementation_principle.html-opQWc8aM.js\",\n \"revision\": \"2fb1a4c2f74fc52046100556dc28ff26\"\n },\n {\n \"url\": \"assets/high_concurrency_implementation_principle.html-sl-nIpjv.js\",\n \"revision\": \"7a20b2d70a9e4eae865ef6ea53a0ce00\"\n },\n {\n \"url\": \"assets/high_concurrency_implementation_principle.html-YdXhhjaV.js\",\n \"revision\": \"4c6b13e8203af820f2e91a277be797c7\"\n },\n {\n \"url\": \"assets/hls_high_performance_journey.html-bBajAqE1.js\",\n \"revision\": \"7d3ea5c0f10f1014295bebf7364f6d48\"\n },\n {\n \"url\": \"assets/hls_high_performance_journey.html-bLztstJM.js\",\n \"revision\": \"1de12ca696da6d2fc7345df858d95fe2\"\n },\n {\n \"url\": \"assets/hls_high_performance_journey.html-KWt_INAr.js\",\n \"revision\": \"ea0e004efeb1b3c13c580e622405f280\"\n },\n {\n \"url\": \"assets/hls_high_performance_journey.html-LbBMnisY.js\",\n \"revision\": \"ea0e004efeb1b3c13c580e622405f280\"\n },\n {\n \"url\": \"assets/how_to_create_a_live_steam.html-6xjNfV8d.js\",\n \"revision\": \"ec9b1a196df0a89307701684329cd54f\"\n },\n {\n \"url\": \"assets/how_to_create_a_live_steam.html-ewhkqgEI.js\",\n \"revision\": \"ec9b1a196df0a89307701684329cd54f\"\n },\n {\n \"url\": \"assets/how_to_create_a_live_steam.html-FHwnpSdN.js\",\n \"revision\": \"3060639f318e118a09057745e5cde6f4\"\n },\n {\n \"url\": \"assets/how_to_create_a_live_steam.html-Gq2b9Yi0.js\",\n \"revision\": \"1e77b724e809322523173efc4d0edc2f\"\n },\n {\n \"url\": \"assets/how_to_create_a_live_stream-3lt6j2fI.js\",\n \"revision\": \"67e9191b6843091959a8f07cea06a593\"\n },\n {\n \"url\": \"assets/how_to_enable_https_related_functions_zh_10-dp8gREln.js\",\n \"revision\": \"e08b5f85ae138171fbadcb495d89fa08\"\n },\n {\n \"url\": \"assets/how_to_enable_https_related_functions.html-bzN01TdE.js\",\n \"revision\": \"178a916094a08c9ded3a8b0b49f51672\"\n },\n {\n \"url\": \"assets/how_to_enable_https_related_functions.html-fcJ6Uozv.js\",\n \"revision\": \"c4b3dc09434d6236ba12e26ee88007e3\"\n },\n {\n \"url\": \"assets/how_to_enable_https_related_functions.html-mO3jYJnY.js\",\n \"revision\": \"b20d2d93bfc0a7d9afdb7d93d930c2e9\"\n },\n {\n \"url\": \"assets/how_to_enable_https_related_functions.html-O1NMddvq.js\",\n \"revision\": \"a20bfd1f821d832b0dd3b08a28f3d97e\"\n },\n {\n \"url\": \"assets/how_to_test_delay.html-6Q65UhHU.js\",\n \"revision\": \"44dadf0d54b3de1c494545717beddf7d\"\n },\n {\n \"url\": \"assets/how_to_test_delay.html-fyFCkcjI.js\",\n \"revision\": \"2957ea7e8a18f2d54dd348d51c15fae5\"\n },\n {\n \"url\": \"assets/how_to_test_delay.html-GlLjeJYr.js\",\n \"revision\": \"1bd6e54f8408e79ec83b26d5c81259e6\"\n },\n {\n \"url\": \"assets/how_to_test_delay.html-ubjyw-PC.js\",\n \"revision\": \"13801c3a209c906dccd85db6bb5092ba\"\n },\n {\n \"url\": \"assets/how_to_use_device_id_as_stream_id_6-sfQ1h9Fe.js\",\n \"revision\": \"1bff1864e2dfb05bde4bb12af8c9561c\"\n },\n {\n \"url\": \"assets/how_to_use_device_id_as_stream_id.html-_vNSGfoU.js\",\n \"revision\": \"5850d68f9c88c71712e258d057267d3c\"\n },\n {\n \"url\": \"assets/how_to_use_device_id_as_stream_id.html-ga4UcAIh.js\",\n \"revision\": \"858c041377d0a304dc9cd913185f18fa\"\n },\n {\n \"url\": \"assets/how_to_use_device_id_as_stream_id.html-HCE1vKo7.js\",\n \"revision\": \"871fb6c5566d7bd740572d58413942a3\"\n },\n {\n \"url\": \"assets/how_to_use_device_id_as_stream_id.html-r4xrBF9F.js\",\n \"revision\": \"871fb6c5566d7bd740572d58413942a3\"\n },\n {\n \"url\": \"assets/image/advanced.svg\",\n \"revision\": \"2934a573b64033bebb71f067ebc8d082\"\n },\n {\n \"url\": \"assets/image/bg.svg\",\n \"revision\": \"bed51349ca7476497e51d60437ef8eba\"\n },\n {\n \"url\": \"assets/image/blog.svg\",\n \"revision\": \"5686f361aca8bcf73522de225d09016d\"\n },\n {\n \"url\": \"assets/image/box.svg\",\n \"revision\": \"5f732c9705e288e8fb8ae6d2e5ce906a\"\n },\n {\n \"url\": \"assets/image/features.svg\",\n \"revision\": \"2eb292180d361e4af3f4bf411ef06062\"\n },\n {\n \"url\": \"assets/image/github-dark.svg\",\n \"revision\": \"8dcc6b5262f3b6138b1566b357ba89a9\"\n },\n {\n \"url\": \"assets/image/github-light.svg\",\n \"revision\": \"a0b00583d93c2f7084ad151ee0849934\"\n },\n {\n \"url\": \"assets/image/layout.svg\",\n \"revision\": \"db603c70eb017066ff30923ca5a2cd4a\"\n },\n {\n \"url\": \"assets/image/markdown.svg\",\n \"revision\": \"1a8b4476dae8f52cdd873d2b00fa27fb\"\n },\n {\n \"url\": \"assets/index-67a42d7d-B7ItSCR5.js\",\n \"revision\": \"f8f41d9c1b2219e4277d5a1cacdc3fcb\"\n },\n {\n \"url\": \"assets/index-7SG8bi1h.js\",\n \"revision\": \"46a193641571106d3b7b43f9bc2a2735\"\n },\n {\n \"url\": \"assets/index.html-_GTitl4a.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html--S0MBGJo.js\",\n \"revision\": \"ea78dba8e7f03fc2ab6d7f7cf3581a54\"\n },\n {\n \"url\": \"assets/index.html-0naiiwgW.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-1HU8uRzY.js\",\n \"revision\": \"b94b09e758990dc276714efc1b0537c1\"\n },\n {\n \"url\": \"assets/index.html-2eHJyvoI.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-3Pe7G9Sl.js\",\n \"revision\": \"c0c05ddda520e2adda625cdd231876ae\"\n },\n {\n \"url\": \"assets/index.html-4AQHrSUy.js\",\n \"revision\": \"ee6e74d86f88efe67b09106f87bb5601\"\n },\n {\n \"url\": \"assets/index.html-4Ee7DNZI.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-4qXHK4Yu.js\",\n \"revision\": \"ea8519a44fde5fca68c31fc431e2e570\"\n },\n {\n \"url\": \"assets/index.html-6BkT17JO.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-7ixsX_gh.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-8RsIN7Qj.js\",\n \"revision\": \"ff590ed654e791a5b22c11ccc9ddce0e\"\n },\n {\n \"url\": \"assets/index.html-943vkdnv.js\",\n \"revision\": \"66506d542be80c2633ded058cc66b647\"\n },\n {\n \"url\": \"assets/index.html-A9z0_Hu7.js\",\n \"revision\": \"4f860e08cf4dabbe3974dcd867207005\"\n },\n {\n \"url\": \"assets/index.html-Acfu-WyI.js\",\n \"revision\": \"ac263380bcaf563b41d4feb14c1f3645\"\n },\n {\n \"url\": \"assets/index.html-bHaf1eq-.js\",\n \"revision\": \"a2e0e45dde47a3b04378d8770d84ee1a\"\n },\n {\n \"url\": \"assets/index.html-BzbKxypT.js\",\n \"revision\": \"662b8f394d27244938126a6f9d36f79e\"\n },\n {\n \"url\": \"assets/index.html-c0NLam4o.js\",\n \"revision\": \"50f75c5795cad25af5071e685fd56d25\"\n },\n {\n \"url\": \"assets/index.html-CojxHtZz.js\",\n \"revision\": \"3cce4cc3f4578dbcd1463687ffb739ae\"\n },\n {\n \"url\": \"assets/index.html-crm4JFod.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-Dj-Byo33.js\",\n \"revision\": \"33d2489812195b60dd65835895fad787\"\n },\n {\n \"url\": \"assets/index.html-dNFi-MK4.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-e77v6tHA.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-ENKK1Hev.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-eQpT8dLR.js\",\n \"revision\": \"a269dea8fb1ddf5878073da912bc3556\"\n },\n {\n \"url\": \"assets/index.html-Eqzq89B-.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-frsd07BJ.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-H30PqyAG.js\",\n \"revision\": \"7efb7d72cecc58ab6a156a772ad46ce6\"\n },\n {\n \"url\": \"assets/index.html-HA6yUssK.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-Hvr1twkc.js\",\n \"revision\": \"0863680115a8ded21665ace23a839672\"\n },\n {\n \"url\": \"assets/index.html-JQu_RH6f.js\",\n \"revision\": \"0bfe758ce6140e9d1046435817bad5a2\"\n },\n {\n \"url\": \"assets/index.html-jVaUOSmI.js\",\n \"revision\": \"72b19a33de68639ae16f36b839e7d13c\"\n },\n {\n \"url\": \"assets/index.html-kIe4zMW_.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-kykmfUZZ.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-l-9Jcb0Z.js\",\n \"revision\": \"5ab8c4c304de3bbef4c91cdb52fbf08f\"\n },\n {\n \"url\": \"assets/index.html-lHFYswhu.js\",\n \"revision\": \"68601d9bc01ff40425d106bd1db7b57e\"\n },\n {\n \"url\": \"assets/index.html-LLxB5nrB.js\",\n \"revision\": \"086ed6111461246bc6c97866b2d918d5\"\n },\n {\n \"url\": \"assets/index.html-LSqTAwnp.js\",\n \"revision\": \"c8324355f6d6e02a9bc861e06231a543\"\n },\n {\n \"url\": \"assets/index.html-LT2IW6gc.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-lxIvJFMs.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-m59LkreQ.js\",\n \"revision\": \"28018187ac0f122029bdfeb50cfb455b\"\n },\n {\n \"url\": \"assets/index.html-Me4eXu-C.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-MI_McXZr.js\",\n \"revision\": \"c5e8700ca283e861dced506472ecbf81\"\n },\n {\n \"url\": \"assets/index.html-n77SzoQa.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-NSMe4qAg.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-Oh37e22D.js\",\n \"revision\": \"bcb1fcf519857cdf15515f77a485a436\"\n },\n {\n \"url\": \"assets/index.html-ohZtz6Fw.js\",\n \"revision\": \"58893519f365a18c506f1836cfec535a\"\n },\n {\n \"url\": \"assets/index.html-oRdX7laQ.js\",\n \"revision\": \"2de9c461d24eb912ae3e73a7ef0228e7\"\n },\n {\n \"url\": \"assets/index.html-Pl0D5fWX.js\",\n \"revision\": \"df50db0b03d7bc4801e7684b895e72c0\"\n },\n {\n \"url\": \"assets/index.html-pO6EQ89h.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-PSYc6CNH.js\",\n \"revision\": \"33bd4b1afcaea599ec1c5a8e6ae4d5cb\"\n },\n {\n \"url\": \"assets/index.html-Q1OCSdNr.js\",\n \"revision\": \"0355094bde07e5a1c1841bc347489d5e\"\n },\n {\n \"url\": \"assets/index.html-qi3PncfW.js\",\n \"revision\": \"b01b13800c1abbfe37ecbf7bf04d5102\"\n },\n {\n \"url\": \"assets/index.html-qjMVLXfF.js\",\n \"revision\": \"9e80a629102cb272c373b96d1433b760\"\n },\n {\n \"url\": \"assets/index.html-QkbwDjsA.js\",\n \"revision\": \"841b57fd17ad02196225f94dac99a56e\"\n },\n {\n \"url\": \"assets/index.html-qlpSloZ0.js\",\n \"revision\": \"33bd4b1afcaea599ec1c5a8e6ae4d5cb\"\n },\n {\n \"url\": \"assets/index.html-QQRRY2d0.js\",\n \"revision\": \"b43ec38709542738da227e4487b5739f\"\n },\n {\n \"url\": \"assets/index.html-QWUIdSew.js\",\n \"revision\": \"01f1316f815b6ac78bd8c87e114f8341\"\n },\n {\n \"url\": \"assets/index.html-Rh0erDOb.js\",\n \"revision\": \"7a00205cde84a167e23e5c6ce0f20674\"\n },\n {\n \"url\": \"assets/index.html-tETo8Lu8.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-TjtRd5xp.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-TLmaTaqK.js\",\n \"revision\": \"310fdf35690289b4b695a2a9f063cdf2\"\n },\n {\n \"url\": \"assets/index.html-V4YkyuJV.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-VsukZOSA.js\",\n \"revision\": \"c6e6b871aa905370fa4d93c22c2fc8e1\"\n },\n {\n \"url\": \"assets/index.html-X7WU_LPV.js\",\n \"revision\": \"18f6a74b2ca20e17c9893fd3cfd2c878\"\n },\n {\n \"url\": \"assets/index.html-XiIyF-Mz.js\",\n \"revision\": \"125061609d4366c5cf551cfd435226ee\"\n },\n {\n \"url\": \"assets/index.html-xQisrcfM.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-Y6Zxo28x.js\",\n \"revision\": \"583fc19e65b7982208e7988a34d75970\"\n },\n {\n \"url\": \"assets/index.html-yjc28uoP.js\",\n \"revision\": \"4d87cc57914d0403609cbb2f0de32cbb\"\n },\n {\n \"url\": \"assets/index.html-yPXvy2ZK.js\",\n \"revision\": \"bc20132941b6e34356e7eee03fc24477\"\n },\n {\n \"url\": \"assets/index.html-Zl8OD7vu.js\",\n \"revision\": \"eba5ebfdf176f5b1608ff6a52d885037\"\n },\n {\n \"url\": \"assets/index.html-ZUO1t91g.js\",\n \"revision\": \"7c6290fcd6d20ef3ffdf2e164689ff0b\"\n },\n {\n \"url\": \"assets/infoDiagram-a336098b-sHgg_VVf.js\",\n \"revision\": \"bed2c86feb9b8e954f5fb55048db9d33\"\n },\n {\n \"url\": \"assets/init-Hi12RPRh.js\",\n \"revision\": \"3ce28180466443e9b617d7b96e9f7b8f\"\n },\n {\n \"url\": \"assets/install_zlmediakit_using_vcpkg_2-1HFW-yNt.js\",\n \"revision\": \"eba8f412e34fc0140174130ed248e21f\"\n },\n {\n \"url\": \"assets/install_zlmediakit_using_vcpkg.html-_H3jokEy.js\",\n \"revision\": \"5e8111d2c2acce6608f89dc07754b276\"\n },\n {\n \"url\": \"assets/install_zlmediakit_using_vcpkg.html-lJ__kZwE.js\",\n \"revision\": \"90288c6b05b19f6839599ba7d32befbd\"\n },\n {\n \"url\": \"assets/install_zlmediakit_using_vcpkg.html-uKojkOzg.js\",\n \"revision\": \"de155c78869bec35e5c571fc9fe0d61a\"\n },\n {\n \"url\": \"assets/install_zlmediakit_using_vcpkg.html-UmyH2ZVo.js\",\n \"revision\": \"f0843b3fc06e0b5a3043fa6a708adc02\"\n },\n {\n \"url\": \"assets/introduction_to_streaming_media_related_technologies.html-JdpuYj-J.js\",\n \"revision\": \"139582e85f105eabf3023fc4ef37d04f\"\n },\n {\n \"url\": \"assets/introduction_to_streaming_media_related_technologies.html-O53gIrdK.js\",\n \"revision\": \"0ef8b597685e571d9ff51705e039dc88\"\n },\n {\n \"url\": \"assets/introduction_to_streaming_media_related_technologies.html-tum5EDuc.js\",\n \"revision\": \"71931917c0ee523f44d57ac533fb30b8\"\n },\n {\n \"url\": \"assets/introduction_to_streaming_media_related_technologies.html-uFhGEBGc.js\",\n \"revision\": \"1d475bfd3c612e339908e97deaa79136\"\n },\n {\n \"url\": \"assets/journeyDiagram-deae3313-3VZnCGoi.js\",\n \"revision\": \"56af31f85cb4dd52fef6d9764ddc0ef9\"\n },\n {\n \"url\": \"assets/layout-wEoclKsW.js\",\n \"revision\": \"1f733e3bcd4b49ddad4024b1367d95c8\"\n },\n {\n \"url\": \"assets/license.html-eI8DpHPZ.js\",\n \"revision\": \"73d80ff06a30d5acc92fa70df79626f7\"\n },\n {\n \"url\": \"assets/license.html-KA2I3C1f.js\",\n \"revision\": \"85bd9c7cef5d5860aa89f16029143c23\"\n },\n {\n \"url\": \"assets/license.html-onnWhI1X.js\",\n \"revision\": \"959de41ff2dbe211d159ffcbbdecaf1d\"\n },\n {\n \"url\": \"assets/license.html-ptTdZQ9a.js\",\n \"revision\": \"59c5af23d2c0c4fa2f4eab93e329bf3c\"\n },\n {\n \"url\": \"assets/line-EJoUorMM.js\",\n \"revision\": \"c9635c82138d6ab378e96065aa966343\"\n },\n {\n \"url\": \"assets/linear-qWzY0BiT.js\",\n \"revision\": \"6ff147308b589d57b8af710a63069748\"\n },\n {\n \"url\": \"assets/mermaid.core-ygY5oRaR.js\",\n \"revision\": \"d8535f6c482f985e12886a3386b030df\"\n },\n {\n \"url\": \"assets/mindmap-definition-617cf8dd-8E7JbjNQ.js\",\n \"revision\": \"2716c6e9a86afffdd5676139d3e20a1c\"\n },\n {\n \"url\": \"assets/not_recommended_qq.html-D1NyvBof.js\",\n \"revision\": \"ddcd2a3d49785fe4b84f3adc2d39f9c3\"\n },\n {\n \"url\": \"assets/not_recommended_qq.html-g8E5V1Ie.js\",\n \"revision\": \"cc6d5dbde1ac6d1fd4335769c6ce3666\"\n },\n {\n \"url\": \"assets/not_recommended_qq.html-Od4ztKJy.js\",\n \"revision\": \"c3885d6144111405525cc78161e1bce3\"\n },\n {\n \"url\": \"assets/not_recommended_qq.html-xL5JJUt8.js\",\n \"revision\": \"55f09fa2c07983ad9b0803e72934cbb1\"\n },\n {\n \"url\": \"assets/on-demand_push_streaming_zh-CK4xj1dh.js\",\n \"revision\": \"58fd02f19ecc7bced43f105b06c8430d\"\n },\n {\n \"url\": \"assets/on-demand_push_streaming.html-CeB1-Ozz.js\",\n \"revision\": \"270e9ce2619547a9b1364c04f53cf993\"\n },\n {\n \"url\": \"assets/on-demand_push_streaming.html-crgN24-s.js\",\n \"revision\": \"ac1b3b0933859c59196b2f575f3649ac\"\n },\n {\n \"url\": \"assets/on-demand_push_streaming.html-kP6TQb2_.js\",\n \"revision\": \"2785a3c0027931aa5e62297f7ccf37c2\"\n },\n {\n \"url\": \"assets/on-demand_push_streaming.html-U3DF-hcL.js\",\n \"revision\": \"4e2b0af8582bbdc14b3d7a9bc7397baf\"\n },\n {\n \"url\": \"assets/on-demand_streaming_zh-h19pTlmd.js\",\n \"revision\": \"0eb44d4c65523fe801d4a4498adaafc4\"\n },\n {\n \"url\": \"assets/on-demand_streaming.html-2DvN-m5K.js\",\n \"revision\": \"b38e0c728d1e2148b057ac438c0329fd\"\n },\n {\n \"url\": \"assets/on-demand_streaming.html-5SBDxVes.js\",\n \"revision\": \"a3755702d9fcf9d9e4672d16658758a0\"\n },\n {\n \"url\": \"assets/on-demand_streaming.html-JbtempAZ.js\",\n \"revision\": \"850c85a8c2560f3a0e3427c172719fe2\"\n },\n {\n \"url\": \"assets/on-demand_streaming.html-rK6BuTeq.js\",\n \"revision\": \"49fdaf3aeeedeba8f74d75b2a9d97bc5\"\n },\n {\n \"url\": \"assets/oncetoken.html-78LEt8yV.js\",\n \"revision\": \"1577bff682f55f633e62c710dc2896f0\"\n },\n {\n \"url\": \"assets/oncetoken.html-JcsefotR.js\",\n \"revision\": \"0d901abe41c808ec9f1a3c1c35ffe65f\"\n },\n {\n \"url\": \"assets/oncetoken.html-LPckM_ZY.js\",\n \"revision\": \"9154f9b016875771b1917e6c850a1996\"\n },\n {\n \"url\": \"assets/oncetoken.html-O4EgeeD_.js\",\n \"revision\": \"23c0baa0771e52fbd1ec7529235f19b7\"\n },\n {\n \"url\": \"assets/online_test.html-_btmASEE.js\",\n \"revision\": \"4278b39fa50c6af661bc909208d9799f\"\n },\n {\n \"url\": \"assets/online_test.html-8_GcpcRF.js\",\n \"revision\": \"52338331afa59a61a6bcb8f6ca24fafe\"\n },\n {\n \"url\": \"assets/online_test.html-nhAROswz.js\",\n \"revision\": \"baf0c235b26f5cead7a1f7ac3c944543\"\n },\n {\n \"url\": \"assets/online_test.html-osni6C75.js\",\n \"revision\": \"e661758df2e4ad6406dc4aa0e9871690\"\n },\n {\n \"url\": \"assets/ordinal-wXG5obU4.js\",\n \"revision\": \"a72e57060c4f6a7606baa78dc6e9ad02\"\n },\n {\n \"url\": \"assets/path-aUcfwwLI.js\",\n \"revision\": \"f86c0243cb45746453c6b4f7dbd9f34d\"\n },\n {\n \"url\": \"assets/performance_testing.html-_cSl4nbI.js\",\n \"revision\": \"56fe6513a73c107c0b8c20f8a59c7d1a\"\n },\n {\n \"url\": \"assets/performance_testing.html-DQL8Y_0H.js\",\n \"revision\": \"614f84b26f36cd75f82542fcafbadbf3\"\n },\n {\n \"url\": \"assets/performance_testing.html-KTW2LASt.js\",\n \"revision\": \"56ef4e3e6338fb0205b51791f8719587\"\n },\n {\n \"url\": \"assets/performance_testing.html-wMvwmLu0.js\",\n \"revision\": \"d43a0001d72ef49579dbf598ac26ba4e\"\n },\n {\n \"url\": \"assets/photoswipe.esm-i2ohwMnJ.js\",\n \"revision\": \"e9ff503527474b1afe53a1ee900448a3\"\n },\n {\n \"url\": \"assets/pieDiagram-a5166659-2AuHdjea.js\",\n \"revision\": \"76d9d948e0f4b32473906981b41a1e8c\"\n },\n {\n \"url\": \"assets/play_url_rules.html-_eahSglS.js\",\n \"revision\": \"7fbd4cf9e506e5c36ccd6e6a3af7ffc9\"\n },\n {\n \"url\": \"assets/play_url_rules.html-jL-erR3n.js\",\n \"revision\": \"89d2ffbc6ab4c7e4e5c01e8af8a8c253\"\n },\n {\n \"url\": \"assets/play_url_rules.html-LU-zd-xr.js\",\n \"revision\": \"e8313eb4ea56e522cb92f9f260523109\"\n },\n {\n \"url\": \"assets/play_url_rules.html-Nq1zV90a.js\",\n \"revision\": \"0886737a8f71016213eda6898e8dbae4\"\n },\n {\n \"url\": \"assets/playback_authentication_zh-gjAAn9Yd.js\",\n \"revision\": \"d1b73468587890117bafd3f86759aec4\"\n },\n {\n \"url\": \"assets/playback_authentication.html--oFuX02K.js\",\n \"revision\": \"2460b9e8eddcc9e2b5f57b2224c3f05e\"\n },\n {\n \"url\": \"assets/playback_authentication.html-arMfpj8D.js\",\n \"revision\": \"9168f09b8be9be130d72ddb4c4b4fb3c\"\n },\n {\n \"url\": \"assets/playback_authentication.html-SRognS60.js\",\n \"revision\": \"37fc883f35764f601365281a36f72efa\"\n },\n {\n \"url\": \"assets/playback_authentication.html-wjgI-Yj5.js\",\n \"revision\": \"565152fbd8128bbfc4a350131902a817\"\n },\n {\n \"url\": \"assets/plugin-vue_export-helper-x3n3nnut.js\",\n \"revision\": \"25e3a5dcaf00fb2b1ba0c8ecea6d2560\"\n },\n {\n \"url\": \"assets/push_authentication_zh-OS4qAsfx.js\",\n \"revision\": \"2c2bf93635139a5d3979114757a9bfa3\"\n },\n {\n \"url\": \"assets/push_authentication.html-8JQfqi5E.js\",\n \"revision\": \"3e7eea41c9dfba1adbb4128ecaf6f554\"\n },\n {\n \"url\": \"assets/push_authentication.html-buPamLTW.js\",\n \"revision\": \"8c383a6926a50cf8af0aae792cba6d44\"\n },\n {\n \"url\": \"assets/push_authentication.html-qlfLynHw.js\",\n \"revision\": \"b3d7bf7f8d5bdcd9e98b65b9def167ab\"\n },\n {\n \"url\": \"assets/push_authentication.html-RYBrWv6d.js\",\n \"revision\": \"f6827f299a26696f9f889836cc29c8ba\"\n },\n {\n \"url\": \"assets/push_streaming.html-5MzKBCwx.js\",\n \"revision\": \"00af9265177e3e8a736e41254f3cd2eb\"\n },\n {\n \"url\": \"assets/push_streaming.html-ieJcZ8zc.js\",\n \"revision\": \"ea0e74f84571e509f1aaae8950a5b388\"\n },\n {\n \"url\": \"assets/push_streaming.html-rR7nCAyc.js\",\n \"revision\": \"8e2d1ed6331682e8ad674f7a6c6096e9\"\n },\n {\n \"url\": \"assets/push_streaming.html-Z4VDPPfI.js\",\n \"revision\": \"c64db74b6d82876529a744130565aa0e\"\n },\n {\n \"url\": \"assets/push_test-WgKOKRFc.js\",\n \"revision\": \"e9d124a5d01db8f90748223c62797fde\"\n },\n {\n \"url\": \"assets/push_test.html-78JMVV7F.js\",\n \"revision\": \"b487a979b9a7fb8c6e94e277f6b1ea7f\"\n },\n {\n \"url\": \"assets/push_test.html-fOBpg7dv.js\",\n \"revision\": \"dbea1cd12b3063b791e5c8d43f8913ff\"\n },\n {\n \"url\": \"assets/push_test.html-gnFrDUbt.js\",\n \"revision\": \"64472eabb158a683a6690a65cca64231\"\n },\n {\n \"url\": \"assets/push_test.html-rQVB769L.js\",\n \"revision\": \"93f2a09ff23420dc2f85ff60910ec319\"\n },\n {\n \"url\": \"assets/quadrantDiagram-6c355bbc-AVZ0kdE9.js\",\n \"revision\": \"f706ccd31c15a361f835299b74e69159\"\n },\n {\n \"url\": \"assets/requirementDiagram-4038b16c-zPwsi3At.js\",\n \"revision\": \"609c83bcdd6e988b83e3652820b384cb\"\n },\n {\n \"url\": \"assets/restful_api.html-EFSP9jqZ.js\",\n \"revision\": \"0635cd71d52f0adacd7d7a5280ec1d34\"\n },\n {\n \"url\": \"assets/restful_api.html-ooPhYVAr.js\",\n \"revision\": \"b9e5dd83308b65754ba7b0104c82e621\"\n },\n {\n \"url\": \"assets/restful_api.html-vpWQQrW9.js\",\n \"revision\": \"3577dfd936bbed14b4d76ac027be2810\"\n },\n {\n \"url\": \"assets/restful_api.html-Xx1SUrzX.js\",\n \"revision\": \"27db13c31cdd8cf6d8f4d4db7958194b\"\n },\n {\n \"url\": \"assets/rtmp_playback_compatibility_issues.html-5avJPHVo.js\",\n \"revision\": \"6be1e2e717cb3e63216bce17db431fda\"\n },\n {\n \"url\": \"assets/rtmp_playback_compatibility_issues.html-k6HlsNbH.js\",\n \"revision\": \"1a4a5fa9048c5657abaeb557f1339d2a\"\n },\n {\n \"url\": \"assets/rtmp_playback_compatibility_issues.html-Q-7KXOkl.js\",\n \"revision\": \"1dce0b5568142250e442a0f8f3afd7e4\"\n },\n {\n \"url\": \"assets/rtmp_playback_compatibility_issues.html-RzirVjbt.js\",\n \"revision\": \"bf3a79adbd8687cf32a560b763907237\"\n },\n {\n \"url\": \"assets/rtmp_pull_stream_performance_test.html-_aYV-qZf.js\",\n \"revision\": \"ade15d4d534cd82ca2cc09fba7821fc3\"\n },\n {\n \"url\": \"assets/rtmp_pull_stream_performance_test.html--cK45yxC.js\",\n \"revision\": \"ddad1baddac7669b9e5351107a8c9126\"\n },\n {\n \"url\": \"assets/rtmp_pull_stream_performance_test.html-HQ4fzTKd.js\",\n \"revision\": \"305864626776df21bb91f68cd1ae4047\"\n },\n {\n \"url\": \"assets/rtmp_pull_stream_performance_test.html-to7s8Gb2.js\",\n \"revision\": \"68ca6d9a3fad2f0e15a0160e81d4babd\"\n },\n {\n \"url\": \"assets/rtmp_push_stream_performance_test.html-4Td-mBqD.js\",\n \"revision\": \"a692f4889cc920fa5fa6e89c288c0d73\"\n },\n {\n \"url\": \"assets/rtmp_push_stream_performance_test.html-AxJYj-3i.js\",\n \"revision\": \"483711c1a022e7d97bbfd4425092f5e6\"\n },\n {\n \"url\": \"assets/rtmp_push_stream_performance_test.html-BY1UVNB2.js\",\n \"revision\": \"ad220f0720f98cb1adc30de41972428f\"\n },\n {\n \"url\": \"assets/rtmp_push_stream_performance_test.html-xYGtJwVp.js\",\n \"revision\": \"271c44493b937c8fe1bd6932d727668a\"\n },\n {\n \"url\": \"assets/rtmp_support_for_h265_and_opus.html-4jQr5c69.js\",\n \"revision\": \"eb174d98197d8a012bc5b7addc0b6f41\"\n },\n {\n \"url\": \"assets/rtmp_support_for_h265_and_opus.html-f4aPfFot.js\",\n \"revision\": \"a492fe181304965e8618760a986a1330\"\n },\n {\n \"url\": \"assets/rtmp_support_for_h265_and_opus.html-Pv_q6lJG.js\",\n \"revision\": \"481ab4d6c574ddb5b88a7d2a607796d7\"\n },\n {\n \"url\": \"assets/rtmp_support_for_h265_and_opus.html-tX2acU7J.js\",\n \"revision\": \"70ba7cf876f460ad76d42aa18bfa2af7\"\n },\n {\n \"url\": \"assets/rtsp_performance_optimization.html-INqzsvFD.js\",\n \"revision\": \"cef9f2949dab0a8ac89f8eaa187b3207\"\n },\n {\n \"url\": \"assets/rtsp_performance_optimization.html-KRKhmZXI.js\",\n \"revision\": \"3b44a6f07b1418f0458225d7e77c8735\"\n },\n {\n \"url\": \"assets/rtsp_performance_optimization.html-N4V23aKI.js\",\n \"revision\": \"8a21a102026c37a97823ac99d10ceda5\"\n },\n {\n \"url\": \"assets/rtsp_performance_optimization.html-XwSQReWx.js\",\n \"revision\": \"e4f0f43ad81a11129ab62c4dc1a66d96\"\n },\n {\n \"url\": \"assets/rtsp_pull_stream_performance_test.html-2yov4QZH.js\",\n \"revision\": \"36e9219568e20efb63443ea908a33bae\"\n },\n {\n \"url\": \"assets/rtsp_pull_stream_performance_test.html-3HmmZM3c.js\",\n \"revision\": \"52076d5d16c381027d8de20b3ca92d05\"\n },\n {\n \"url\": \"assets/rtsp_pull_stream_performance_test.html-9hA9_SB-.js\",\n \"revision\": \"687c3b750da73663d062d7188877acca\"\n },\n {\n \"url\": \"assets/rtsp_pull_stream_performance_test.html-sTQrF5Xo.js\",\n \"revision\": \"52076d5d16c381027d8de20b3ca92d05\"\n },\n {\n \"url\": \"assets/rtsp_push_process.html-eeithr0y.js\",\n \"revision\": \"f54ec8d338002bfc19a7ebf2719dd781\"\n },\n {\n \"url\": \"assets/rtsp_push_process.html-MSFA7pR8.js\",\n \"revision\": \"0730b0affd6b626ec2adde265bfbb202\"\n },\n {\n \"url\": \"assets/rtsp_push_process.html-PFNRXi6Z.js\",\n \"revision\": \"8a6cc310a2e80e3705fb5b3e9121865b\"\n },\n {\n \"url\": \"assets/rtsp_push_process.html-W2QVXDCD.js\",\n \"revision\": \"2cfd06c6f278aebdd8153399be7b6cd3\"\n },\n {\n \"url\": \"assets/rtsp_push_stream_performance_test.html-3UQhsyo8.js\",\n \"revision\": \"308c989c47769eb89dc0504d1392b531\"\n },\n {\n \"url\": \"assets/rtsp_push_stream_performance_test.html-8OJV-kxN.js\",\n \"revision\": \"4ba6dfa3b334c13a2a34c18d8d1c4aff\"\n },\n {\n \"url\": \"assets/rtsp_push_stream_performance_test.html-g2X0PP_e.js\",\n \"revision\": \"825be1a0511d7deae628dc8708cdb3cd\"\n },\n {\n \"url\": \"assets/rtsp_push_stream_performance_test.html-mR4FJY9Z.js\",\n \"revision\": \"4ba6dfa3b334c13a2a34c18d8d1c4aff\"\n },\n {\n \"url\": \"assets/sankeyDiagram-6db3d513-9q2qHJD9.js\",\n \"revision\": \"c37a0d17047b58d6f3d67cd4ab477f0d\"\n },\n {\n \"url\": \"assets/sequence_diagram.html-pYWqjJ8u.js\",\n \"revision\": \"e3e6f3109374047919439dcdacb9d0e6\"\n },\n {\n \"url\": \"assets/sequence_diagram.html-vJK6hfro.js\",\n \"revision\": \"6d2f6182709f89eb63104a1e093e834b\"\n },\n {\n \"url\": \"assets/sequence_diagram.html-y7tfUv_v.js\",\n \"revision\": \"f83ca3c8bcc0b924a3664b7656d0d346\"\n },\n {\n \"url\": \"assets/sequence_diagram.html-yqJJFxQH.js\",\n \"revision\": \"d782a1092ea55f1b4d383b3ec73713a7\"\n },\n {\n \"url\": \"assets/sequenceDiagram-465a088a-EWh6aK27.js\",\n \"revision\": \"74af9e266f83ac6ee3705c7d213519a7\"\n },\n {\n \"url\": \"assets/start_server_3-RVnx99XR.js\",\n \"revision\": \"cdc2fe86a390491f5cb22b1eceb5f785\"\n },\n {\n \"url\": \"assets/start_server.html-fcMybRlu.js\",\n \"revision\": \"09f556bf8111d3276b52829d577786e3\"\n },\n {\n \"url\": \"assets/start_server.html-I5K79p0Y.js\",\n \"revision\": \"f0f15702547b3de76ccf8b77dd6aedab\"\n },\n {\n \"url\": \"assets/start_server.html-rADXsgsy.js\",\n \"revision\": \"17f98f760083e4a3a319271a5e63319a\"\n },\n {\n \"url\": \"assets/start_server.html-z23wbtOj.js\",\n \"revision\": \"bb61b033e5ba87fe2c6c6acacf4a25c8\"\n },\n {\n \"url\": \"assets/start.html-fkf1t7c5.js\",\n \"revision\": \"ade1eb2ce3563b53d786b0e1465001ab\"\n },\n {\n \"url\": \"assets/start.html-I4A7uS59.js\",\n \"revision\": \"2dd388f7f89c50f312c2671acec0f20a\"\n },\n {\n \"url\": \"assets/start.html-Jyh7sq9I.js\",\n \"revision\": \"f5febcbd00c1165c254b98d0a33020b0\"\n },\n {\n \"url\": \"assets/start.html-VhG07QWF.js\",\n \"revision\": \"d2282f75de0b3d149d32aa973466d5f8\"\n },\n {\n \"url\": \"assets/stateDiagram-b620d43f-RCXXee-i.js\",\n \"revision\": \"81f8ed43026edbc274e1e2bbbf67362e\"\n },\n {\n \"url\": \"assets/stateDiagram-v2-2671c3d1-YYOgeGqg.js\",\n \"revision\": \"86e127dc96cf26a3286dfc637869b88c\"\n },\n {\n \"url\": \"assets/style-b4Lm5zJp.css\",\n \"revision\": \"29a55a9ec36f4713f5ee0c2d567936eb\"\n },\n {\n \"url\": \"assets/styles-4ba6ed67-2KGnpqeU.js\",\n \"revision\": \"16e8f066345acc4e516b66dd6ce8011d\"\n },\n {\n \"url\": \"assets/styles-b966c4ae-SzUJ3e4L.js\",\n \"revision\": \"fb688c6f8f8e52945bf2960c2e79da4c\"\n },\n {\n \"url\": \"assets/styles-bbc3fe3b-It40AHsg.js\",\n \"revision\": \"5dbe6038b68fe173ed1eac794de9c897\"\n },\n {\n \"url\": \"assets/svgDrawCommon-ad5ef572-nvro2Kxm.js\",\n \"revision\": \"0b2b74a9d24bd79610b8cd08064283ce\"\n },\n {\n \"url\": \"assets/thanks.html--KuWuTSm.js\",\n \"revision\": \"d3803fff8502582755c3807cb30b7cab\"\n },\n {\n \"url\": \"assets/thanks.html-9FVCd-fN.js\",\n \"revision\": \"0e065b3cf96f64628520f9b7d8074fe0\"\n },\n {\n \"url\": \"assets/thanks.html-EDBrN2Yb.js\",\n \"revision\": \"b42f61a71429b0838649bfde7631dc15\"\n },\n {\n \"url\": \"assets/thanks.html-eseVCxC7.js\",\n \"revision\": \"1273ae668b9056c36531756d4732bdb3\"\n },\n {\n \"url\": \"assets/the_nature_of_live_broadcast_delay.html--_Oe6F80.js\",\n \"revision\": \"f8658cf2d7e8ad6d96608c589f34470c\"\n },\n {\n \"url\": \"assets/the_nature_of_live_broadcast_delay.html-bGwDwg8A.js\",\n \"revision\": \"20f830ee314f6b02c6b0126b63b5446b\"\n },\n {\n \"url\": \"assets/the_nature_of_live_broadcast_delay.html-PF-gA_DU.js\",\n \"revision\": \"432e82f96ccf606b9fcf20a97957b6b3\"\n },\n {\n \"url\": \"assets/the_nature_of_live_broadcast_delay.html-SrNo_kM-.js\",\n \"revision\": \"3a634659ed57413a6acab78c780b324a\"\n },\n {\n \"url\": \"assets/timeline-definition-732a2638-8ZtyCvMC.js\",\n \"revision\": \"68d5d4f87005f11dbc2360e9a2879ada\"\n },\n {\n \"url\": \"assets/use_cases.html-C-cj_NSV.js\",\n \"revision\": \"a791484044a968dc199237dad1cc28f2\"\n },\n {\n \"url\": \"assets/use_cases.html-nlOjewQC.js\",\n \"revision\": \"727e6f6195079f183e29904a3db6fb6a\"\n },\n {\n \"url\": \"assets/use_cases.html-QYVpPIZi.js\",\n \"revision\": \"6e5c22aea2a1dacd8ff55fc973c87316\"\n },\n {\n \"url\": \"assets/use_cases.html-X6CGr-4A.js\",\n \"revision\": \"df4337bda4e8f2357afc27fce697cd64\"\n },\n {\n \"url\": \"assets/video_conferencing_related_resources.html-1ZPXoBfM.js\",\n \"revision\": \"e4757909bc6677a4f013cecc2fd1f9cf\"\n },\n {\n \"url\": \"assets/video_conferencing_related_resources.html-Da8l8FFw.js\",\n \"revision\": \"a391a24998a5e69a47cbc89241c5e857\"\n },\n {\n \"url\": \"assets/video_conferencing_related_resources.html-n9vvOPci.js\",\n \"revision\": \"5b39b305f9cbf913541ff878e335942b\"\n },\n {\n \"url\": \"assets/video_conferencing_related_resources.html-OEgzQpTs.js\",\n \"revision\": \"5665b03bbf6649073ec94463b719b2fd\"\n },\n {\n \"url\": \"assets/vs_code_zh-ltEPcFYF.js\",\n \"revision\": \"bae72e4c099d90687244cb1ba5708ec1\"\n },\n {\n \"url\": \"assets/web_hook_api.html-adtpDhAG.js\",\n \"revision\": \"dec0c93b7a2f82188c65df946b68a050\"\n },\n {\n \"url\": \"assets/web_hook_api.html-F_kUu3X6.js\",\n \"revision\": \"95e48cec141cf6b666746c158fa55d8c\"\n },\n {\n \"url\": \"assets/web_hook_api.html-Ur1FSiPS.js\",\n \"revision\": \"cef3dc74048def3e1d6ddd311deccc62\"\n },\n {\n \"url\": \"assets/web_hook_api.html-zeVeDSz2.js\",\n \"revision\": \"5f6d811568ffeb9d7493a2eff1741b76\"\n },\n {\n \"url\": \"assets/webrtc_compilation_and_use.html-Ck_2B7eV.js\",\n \"revision\": \"4f06fb3918dac02bcc9b2431b9cd213d\"\n },\n {\n \"url\": \"assets/webrtc_compilation_and_use.html-lpFe_5AD.js\",\n \"revision\": \"9ffa6d5feab46e2cef169c7ffbade8a6\"\n },\n {\n \"url\": \"assets/webrtc_compilation_and_use.html-u4uYYnLr.js\",\n \"revision\": \"39615c16478a511c7cce6932b7d93b9c\"\n },\n {\n \"url\": \"assets/webrtc_compilation_and_use.html-WDwwQCrP.js\",\n \"revision\": \"4cf88a9d2203d27e606958fefef4f477\"\n },\n {\n \"url\": \"assets/webrtc_signaling_interaction_format.html-RSBHyl7A.js\",\n \"revision\": \"918d5f1ae8bc5965606da4fe6657addb\"\n },\n {\n \"url\": \"assets/webrtc_signaling_interaction_format.html-TjrAUdNc.js\",\n \"revision\": \"9c31ec603847531d41ccc4896636cae1\"\n },\n {\n \"url\": \"assets/webrtc_signaling_interaction_format.html-Vcq-5dzR.js\",\n \"revision\": \"032eaacf98b88855a9c4c2de946f0061\"\n },\n {\n \"url\": \"assets/webrtc_signaling_interaction_format.html-wdNPDtQj.js\",\n \"revision\": \"7e5146209a6612fc86f8f286d15c03bd\"\n },\n {\n \"url\": \"assets/xychartDiagram-f746c04c-R7Y2pSYR.js\",\n \"revision\": \"8ce40215b08c083da19c4af77acaaf19\"\n },\n {\n \"url\": \"assets/zltoolkit_source_code_study_notes.html-JZCYuLhh.js\",\n \"revision\": \"c205c5ebf01caa20f4f4579e06e14f86\"\n },\n {\n \"url\": \"assets/zltoolkit_source_code_study_notes.html-PfuwMzDt.js\",\n \"revision\": \"119e95486d4161e43eddb5a30ca91f10\"\n },\n {\n \"url\": \"assets/zltoolkit_source_code_study_notes.html-vFvvg7fr.js\",\n \"revision\": \"0517fff48911aa21ff7f41c822b80900\"\n },\n {\n \"url\": \"assets/zltoolkit_source_code_study_notes.html-XyGnG3Jc.js\",\n \"revision\": \"dd92a80d45f838fcd5522250cc30101b\"\n },\n {\n \"url\": \"logo.svg\",\n \"revision\": \"6c6a0dc1bda8418aef497da1d078d96f\"\n },\n {\n \"url\": \"404.html\",\n \"revision\": \"0dc3966413cda39dfe8624a8b1230933\"\n },\n {\n \"url\": \"guide/code/index.html\",\n \"revision\": \"f087bb6fabe2ffbbb1037b529fd706b5\"\n },\n {\n \"url\": \"guide/code/oncetoken.html\",\n \"revision\": \"04ceb100fd62759f73ebc52f9f0beb16\"\n },\n {\n \"url\": \"guide/faq/index.html\",\n \"revision\": \"4ad2d5a608f0e209ddc5f551a3c4df1e\"\n },\n {\n \"url\": \"guide/faq/not_recommended_qq.html\",\n \"revision\": \"2af488454b86bf7e25bb4d8f3134e720\"\n },\n {\n \"url\": \"guide/faq/rtmp_playback_compatibility_issues.html\",\n \"revision\": \"789579a76bd453a0b7e3d4b71070d595\"\n },\n {\n \"url\": \"guide/index.html\",\n \"revision\": \"87b7b2f523c74799b149f1e1e8ad5fca\"\n },\n {\n \"url\": \"guide/install/compilation_instructions_for_windows_version.html\",\n \"revision\": \"f538db97135fd0229172e77c26e0eeb1\"\n },\n {\n \"url\": \"guide/install/index.html\",\n \"revision\": \"fec3659506bff2c30bfdcea33b024674\"\n },\n {\n \"url\": \"guide/install/install_zlmediakit_using_vcpkg.html\",\n \"revision\": \"35569314f9b2e25bc11e1cc4e9cdde57\"\n },\n {\n \"url\": \"guide/install/start.html\",\n \"revision\": \"83e5c208dbaa9487753e3d5daa53d8d0\"\n },\n {\n \"url\": \"guide/media_server/config_file.html\",\n \"revision\": \"ac4fe34b61859771d1c5da1ae0487299\"\n },\n {\n \"url\": \"guide/media_server/generate_ssl_self-signed_certificate_and_test.html\",\n \"revision\": \"cb6046295e303988f2e72b9124b9153c\"\n },\n {\n \"url\": \"guide/media_server/how_to_enable_https_related_functions.html\",\n \"revision\": \"ac449abfbd59028ade7537e3a28160e4\"\n },\n {\n \"url\": \"guide/media_server/index.html\",\n \"revision\": \"e049e325f80ce461b83e279d843568b2\"\n },\n {\n \"url\": \"guide/media_server/on-demand_push_streaming.html\",\n \"revision\": \"84a92535b3841860bb79dc5aa4873f2b\"\n },\n {\n \"url\": \"guide/media_server/on-demand_streaming.html\",\n \"revision\": \"de3d05cd1f1b3d4fe5533a5dde21e2bf\"\n },\n {\n \"url\": \"guide/media_server/play_url_rules.html\",\n \"revision\": \"6a735653bdddabf55e345fb64c0c6dae\"\n },\n {\n \"url\": \"guide/media_server/playback_authentication.html\",\n \"revision\": \"ccabb0458a48d1abeeef86c1bc5fd616\"\n },\n {\n \"url\": \"guide/media_server/push_authentication.html\",\n \"revision\": \"f4ef33219a9c12dcfa8811a225f97de9\"\n },\n {\n \"url\": \"guide/media_server/push_test.html\",\n \"revision\": \"601e979ff1c92342cce15339274b67a2\"\n },\n {\n \"url\": \"guide/media_server/restful_api.html\",\n \"revision\": \"202691df2fbd7b68d965c4639c6b3aad\"\n },\n {\n \"url\": \"guide/media_server/sequence_diagram.html\",\n \"revision\": \"4768fdd697177c2e109af59f38f31bd2\"\n },\n {\n \"url\": \"guide/media_server/start_server.html\",\n \"revision\": \"3e069f1c61bc35b291d77af96d3de523\"\n },\n {\n \"url\": \"guide/media_server/web_hook_api.html\",\n \"revision\": \"5617f8acca8a41196ce02e2eac8e77f5\"\n },\n {\n \"url\": \"guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html\",\n \"revision\": \"efc28fee7a79cf69b81a9c36b538bbb7\"\n },\n {\n \"url\": \"guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html\",\n \"revision\": \"45424a2480830299bb026582f48692ee\"\n },\n {\n \"url\": \"guide/protocol/gb28181/index.html\",\n \"revision\": \"c5e05f886c8375d7a9a8833402ad93b8\"\n },\n {\n \"url\": \"guide/protocol/gb28181/push_streaming.html\",\n \"revision\": \"b7352f528d3ae76db10281b8dfea9902\"\n },\n {\n \"url\": \"guide/protocol/index.html\",\n \"revision\": \"c1a222f05cf5b23871743221686d9998\"\n },\n {\n \"url\": \"guide/protocol/srt/index.html\",\n \"revision\": \"979320dea2dee797609339c07a5f2d17\"\n },\n {\n \"url\": \"guide/protocol/webrtc/index.html\",\n \"revision\": \"49f28afc6d30da44be6377da14e06b34\"\n },\n {\n \"url\": \"guide/protocol/webrtc/webrtc_compilation_and_use.html\",\n \"revision\": \"f81cb46a74fabcabb08557c2175d4216\"\n },\n {\n \"url\": \"guide/protocol/webrtc/webrtc_signaling_interaction_format.html\",\n \"revision\": \"01e56048329564e076ff6c7f2f87bc07\"\n },\n {\n \"url\": \"guide/sdk/how_to_create_a_live_steam.html\",\n \"revision\": \"0780b9f4d41cc114069106507c5fddd6\"\n },\n {\n \"url\": \"guide/sdk/index.html\",\n \"revision\": \"2a55edd343475b70c2c27c73d7d6ee0a\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"76f15f86b6a4a31283055c78a5773622\"\n },\n {\n \"url\": \"more/collaborative_projects.html\",\n \"revision\": \"69266ea8cd023c25b195424ed0c2c180\"\n },\n {\n \"url\": \"more/contact.html\",\n \"revision\": \"5b55134243fae67d3f77907a56ab8b6c\"\n },\n {\n \"url\": \"more/index.html\",\n \"revision\": \"a4a1463fabb696a32ec2adb89ff1c40c\"\n },\n {\n \"url\": \"more/license.html\",\n \"revision\": \"3f1839c4ce13b65901fc55838ac8ca88\"\n },\n {\n \"url\": \"more/thanks.html\",\n \"revision\": \"6f8b83255c32d089391693d75475ceff\"\n },\n {\n \"url\": \"more/use_cases.html\",\n \"revision\": \"112f657af567cfc5df623b7e3ea478b8\"\n },\n {\n \"url\": \"reference/development_log/hls_high_performance_journey.html\",\n \"revision\": \"480b56daa7499ae9c5639c074a03b95f\"\n },\n {\n \"url\": \"reference/development_log/index.html\",\n \"revision\": \"ace2e591bff6b490876e8a3240561e46\"\n },\n {\n \"url\": \"reference/development_log/rtsp_performance_optimization.html\",\n \"revision\": \"596cbdeb42e516ac05b7710de5b4a96f\"\n },\n {\n \"url\": \"reference/documents/exclusive_features.html\",\n \"revision\": \"76c2765018175ed644a956eba76f88ad\"\n },\n {\n \"url\": \"reference/documents/high_concurrency_implementation_principle.html\",\n \"revision\": \"d250f65085649dd676bc5189621868c2\"\n },\n {\n \"url\": \"reference/documents/index.html\",\n \"revision\": \"7b4eaa006f7356fcaf726ba37ee25fcb\"\n },\n {\n \"url\": \"reference/documents/introduction_to_streaming_media_related_technologies.html\",\n \"revision\": \"a04d727a56281e87b29feeada4f6ffac\"\n },\n {\n \"url\": \"reference/documents/rtsp_push_process.html\",\n \"revision\": \"1b5ba913459f0eb5ad073561a83e3e6c\"\n },\n {\n \"url\": \"reference/documents/the_nature_of_live_broadcast_delay.html\",\n \"revision\": \"6f6251c2c8c81dd3f6ceece8de6784b3\"\n },\n {\n \"url\": \"reference/index.html\",\n \"revision\": \"d46f2aa478e74b1c6c8183b0dc8c7d90\"\n },\n {\n \"url\": \"reference/resources/dependency.html\",\n \"revision\": \"34814cf07beb78baf69715eb09b1d045\"\n },\n {\n \"url\": \"reference/resources/index.html\",\n \"revision\": \"a9cd0b4c4c1734a03f6cdd3891cf1669\"\n },\n {\n \"url\": \"reference/resources/rtmp_support_for_h265_and_opus.html\",\n \"revision\": \"ab754d5c3e19b13a398d2c2380dce8f9\"\n },\n {\n \"url\": \"reference/resources/video_conferencing_related_resources.html\",\n \"revision\": \"2d7f37ec91ff94ac78e5611b799894f8\"\n },\n {\n \"url\": \"reference/resources/zltoolkit_source_code_study_notes.html\",\n \"revision\": \"5de3139fef102c0a29110b0123ea1849\"\n },\n {\n \"url\": \"reference/test/benchmark.html\",\n \"revision\": \"ac215cfa56fc0b98ab1c9750f45b29b7\"\n },\n {\n \"url\": \"reference/test/delay_test.html\",\n \"revision\": \"af4a7873cf8c3c0015111df7741f9210\"\n },\n {\n \"url\": \"reference/test/how_to_test_delay.html\",\n \"revision\": \"a81dab427a9782d84e92c847c514b700\"\n },\n {\n \"url\": \"reference/test/index.html\",\n \"revision\": \"0bc2182251594d670898f5820244dd0c\"\n },\n {\n \"url\": \"reference/test/online_test.html\",\n \"revision\": \"75cdbe2f06638617001ff616859197fe\"\n },\n {\n \"url\": \"reference/test/performance_testing.html\",\n \"revision\": \"6fdcd9a5c19edf4544dbe85667f911a0\"\n },\n {\n \"url\": \"reference/test/rtmp_pull_stream_performance_test.html\",\n \"revision\": \"316b3727f8dddda871c588921c37679b\"\n },\n {\n \"url\": \"reference/test/rtmp_push_stream_performance_test.html\",\n \"revision\": \"3ce7a78dc8f06b358562d77d68516a0c\"\n },\n {\n \"url\": \"reference/test/rtsp_pull_stream_performance_test.html\",\n \"revision\": \"cc740dc8354a8ae71d19b6b784f8a820\"\n },\n {\n \"url\": \"reference/test/rtsp_push_stream_performance_test.html\",\n \"revision\": \"23c74328446da540b3e1d4f960211a6d\"\n },\n {\n \"url\": \"tutorial/index.html\",\n \"revision\": \"6789dd399c029fe5eb251d78b2107bb7\"\n },\n {\n \"url\": \"zh/guide/code/index.html\",\n \"revision\": \"fbc85cde3e82ef9ddbe34bfa1379b102\"\n },\n {\n \"url\": \"zh/guide/code/oncetoken.html\",\n \"revision\": \"9df68666764997658618f70f2eddca9f\"\n },\n {\n \"url\": \"zh/guide/faq/index.html\",\n \"revision\": \"eee58a6551b60faab75923ae84bf0308\"\n },\n {\n \"url\": \"zh/guide/faq/not_recommended_qq.html\",\n \"revision\": \"aad532d133b1d5b94e4d68f44f0b3807\"\n },\n {\n \"url\": \"zh/guide/faq/rtmp_playback_compatibility_issues.html\",\n \"revision\": \"50e9a3c6fecf0f10eac6d3deb25e11e1\"\n },\n {\n \"url\": \"zh/guide/index.html\",\n \"revision\": \"1ae724739e09e32e48b23ba28612c9d6\"\n },\n {\n \"url\": \"zh/guide/install/compilation_instructions_for_windows_version.html\",\n \"revision\": \"6f17b9b9126d4c45f487d4c3080775a4\"\n },\n {\n \"url\": \"zh/guide/install/index.html\",\n \"revision\": \"7fe213305553ff04ceaa4c891a09f9b1\"\n },\n {\n \"url\": \"zh/guide/install/install_zlmediakit_using_vcpkg.html\",\n \"revision\": \"bf8d682b80b33c3f75ff60d868f0b857\"\n },\n {\n \"url\": \"zh/guide/install/start.html\",\n \"revision\": \"61d0c053df59087e83f8922ec8fbd00d\"\n },\n {\n \"url\": \"zh/guide/media_server/config_file.html\",\n \"revision\": \"ecf4fa8789d2e4b2fc9442f8b936b068\"\n },\n {\n \"url\": \"zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html\",\n \"revision\": \"14c962f0b42778b457108f231fff0294\"\n },\n {\n \"url\": \"zh/guide/media_server/how_to_enable_https_related_functions.html\",\n \"revision\": \"cc97da39d7fbcf93df944ee79f4d9b3b\"\n },\n {\n \"url\": \"zh/guide/media_server/index.html\",\n \"revision\": \"a1232bd7cdf99e954f15971103710f93\"\n },\n {\n \"url\": \"zh/guide/media_server/on-demand_push_streaming.html\",\n \"revision\": \"fcc20ce5f84722e5ecc8e69bdefe032e\"\n },\n {\n \"url\": \"zh/guide/media_server/on-demand_streaming.html\",\n \"revision\": \"0db261579c2d6b996cf88eab9a55161f\"\n },\n {\n \"url\": \"zh/guide/media_server/play_url_rules.html\",\n \"revision\": \"14a03572d6bc2e3111cc064a07f277a0\"\n },\n {\n \"url\": \"zh/guide/media_server/playback_authentication.html\",\n \"revision\": \"d25f1b4decb2d8e120728cfbdd65c6ca\"\n },\n {\n \"url\": \"zh/guide/media_server/push_authentication.html\",\n \"revision\": \"c781e0ca983c937545c1384dd14682b6\"\n },\n {\n \"url\": \"zh/guide/media_server/push_test.html\",\n \"revision\": \"9a1147b4c9cb78e0c7826ff8806bc820\"\n },\n {\n \"url\": \"zh/guide/media_server/restful_api.html\",\n \"revision\": \"c76671e616704820fbe194c1ec72531a\"\n },\n {\n \"url\": \"zh/guide/media_server/sequence_diagram.html\",\n \"revision\": \"f621c8850526fdac3b21be6db94f58ab\"\n },\n {\n \"url\": \"zh/guide/media_server/start_server.html\",\n \"revision\": \"88b5754f88d04f507a8c08686840d9c2\"\n },\n {\n \"url\": \"zh/guide/media_server/web_hook_api.html\",\n \"revision\": \"9d70b74c87f58b767d52b971242fb7b1\"\n },\n {\n \"url\": \"zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html\",\n \"revision\": \"912882ab5480da850ed499fdb51c4bb8\"\n },\n {\n \"url\": \"zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html\",\n \"revision\": \"714fe0e7a15a857d9fdcdf0100948794\"\n },\n {\n \"url\": \"zh/guide/protocol/gb28181/index.html\",\n \"revision\": \"b11c2f56764e63ef6dc9927cc7a1c7d4\"\n },\n {\n \"url\": \"zh/guide/protocol/gb28181/push_streaming.html\",\n \"revision\": \"839995d039603218a5199a56b414d9d9\"\n },\n {\n \"url\": \"zh/guide/protocol/index.html\",\n \"revision\": \"c58c36fee3e50cb282985028609b6a27\"\n },\n {\n \"url\": \"zh/guide/protocol/srt/index.html\",\n \"revision\": \"a90a584d353537a96bd11ecf6e5f03e8\"\n },\n {\n \"url\": \"zh/guide/protocol/webrtc/index.html\",\n \"revision\": \"8c481666a7d59bf380bd187f9bb71f6e\"\n },\n {\n \"url\": \"zh/guide/protocol/webrtc/webrtc_compilation_and_use.html\",\n \"revision\": \"6b832e8172b876d338ddfef7fc1f5fe2\"\n },\n {\n \"url\": \"zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html\",\n \"revision\": \"4c31492733ade0d64f3f7364ac2d7fbb\"\n },\n {\n \"url\": \"zh/guide/sdk/how_to_create_a_live_steam.html\",\n \"revision\": \"c13734f2f4a5c8ad809c722444d39dce\"\n },\n {\n \"url\": \"zh/guide/sdk/index.html\",\n \"revision\": \"baeedc3aa21d63e96d70ae0c0b2abc96\"\n },\n {\n \"url\": \"zh/index.html\",\n \"revision\": \"dec1870104c08ec6de1b630d72e129a0\"\n },\n {\n \"url\": \"zh/more/collaborative_projects.html\",\n \"revision\": \"13ebe3378de989a173dd76ae58e8f52d\"\n },\n {\n \"url\": \"zh/more/contact.html\",\n \"revision\": \"992b24db011da0cd00b57916f2613669\"\n },\n {\n \"url\": \"zh/more/index.html\",\n \"revision\": \"586f78fe009114b85d092997a83a098f\"\n },\n {\n \"url\": \"zh/more/license.html\",\n \"revision\": \"0fae16a951e0e5a5b14f85c4bb97a00e\"\n },\n {\n \"url\": \"zh/more/thanks.html\",\n \"revision\": \"eb8f276388b72776e140e6c0483dcd3c\"\n },\n {\n \"url\": \"zh/more/use_cases.html\",\n \"revision\": \"7a6fa456be3ee28404f8b9d9d3c98a33\"\n },\n {\n \"url\": \"zh/reference/development_log/hls_high_performance_journey.html\",\n \"revision\": \"27cf52c246056db205509defbddfb824\"\n },\n {\n \"url\": \"zh/reference/development_log/index.html\",\n \"revision\": \"264c5731ea94034499f43598f8043d14\"\n },\n {\n \"url\": \"zh/reference/development_log/rtsp_performance_optimization.html\",\n \"revision\": \"dfc4c270b4777d9acd907d6deb32e5f5\"\n },\n {\n \"url\": \"zh/reference/documents/exclusive_features.html\",\n \"revision\": \"98c26fe5126e18a19758a92467c1d2cf\"\n },\n {\n \"url\": \"zh/reference/documents/high_concurrency_implementation_principle.html\",\n \"revision\": \"5792f2ad862e02ae44c024627bd8e45d\"\n },\n {\n \"url\": \"zh/reference/documents/index.html\",\n \"revision\": \"e828b6d77267263e528a9b8f8bb2e9e5\"\n },\n {\n \"url\": \"zh/reference/documents/introduction_to_streaming_media_related_technologies.html\",\n \"revision\": \"6a1e77e1b976e40d6d9f11b5b6657743\"\n },\n {\n \"url\": \"zh/reference/documents/rtsp_push_process.html\",\n \"revision\": \"a222ee830805f04344cac96bc4d81964\"\n },\n {\n \"url\": \"zh/reference/documents/the_nature_of_live_broadcast_delay.html\",\n \"revision\": \"e225aa49baf3c9ffc44250b372e667d7\"\n },\n {\n \"url\": \"zh/reference/index.html\",\n \"revision\": \"0a7cee7ca1f36f846785fdbf0d23d65e\"\n },\n {\n \"url\": \"zh/reference/resources/dependency.html\",\n \"revision\": \"38e09095eff2cd8dd417d7a8bf9f288c\"\n },\n {\n \"url\": \"zh/reference/resources/index.html\",\n \"revision\": \"e093de17978bc7b129ab1b9f0829f5fb\"\n },\n {\n \"url\": \"zh/reference/resources/rtmp_support_for_h265_and_opus.html\",\n \"revision\": \"f9ed31850fa2f8ec75f1019a3ff918f3\"\n },\n {\n \"url\": \"zh/reference/resources/video_conferencing_related_resources.html\",\n \"revision\": \"cbb03bf00071770b7ae972ed734a4784\"\n },\n {\n \"url\": \"zh/reference/resources/zltoolkit_source_code_study_notes.html\",\n \"revision\": \"b6f84192e72f6331669ed536f543f9d2\"\n },\n {\n \"url\": \"zh/reference/test/benchmark.html\",\n \"revision\": \"06f9b0c37b3665940e111b11898c342d\"\n },\n {\n \"url\": \"zh/reference/test/delay_test.html\",\n \"revision\": \"d50be495e31cc8e8c0e2bad5fc7eac63\"\n },\n {\n \"url\": \"zh/reference/test/how_to_test_delay.html\",\n \"revision\": \"a8914104a2fd121613d799255491ab9e\"\n },\n {\n \"url\": \"zh/reference/test/index.html\",\n \"revision\": \"c7f584f6c5da485610697058ae244c42\"\n },\n {\n \"url\": \"zh/reference/test/online_test.html\",\n \"revision\": \"49de8b7ac7e3dc5f86268a67fdde0e78\"\n },\n {\n \"url\": \"zh/reference/test/performance_testing.html\",\n \"revision\": \"9ffbb1bf981a713c3c464974a0d8947e\"\n },\n {\n \"url\": \"zh/reference/test/rtmp_pull_stream_performance_test.html\",\n \"revision\": \"8e496d85dd3be7dedf40911af04ee697\"\n },\n {\n \"url\": \"zh/reference/test/rtmp_push_stream_performance_test.html\",\n \"revision\": \"3f6ff94d00aa6298ba7319c3fa418c08\"\n },\n {\n \"url\": \"zh/reference/test/rtsp_pull_stream_performance_test.html\",\n \"revision\": \"36f5c260a4099d6ae41dbec5e63c4b7b\"\n },\n {\n \"url\": \"zh/reference/test/rtsp_push_stream_performance_test.html\",\n \"revision\": \"62bd9719fee20dee1a3dc851a4d45d73\"\n },\n {\n \"url\": \"zh/tutorial/index.html\",\n \"revision\": \"b8ef54e85e593d3198d3033ed93ccf94\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-114x114.png\",\n \"revision\": \"b39af39658e13fd99763e10b9991ccf8\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-120x120.png\",\n \"revision\": \"4c7de55a0bfef43bc0eb52905af33cf6\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-152x152.png\",\n \"revision\": \"a23249a982dd7d97bc38e851acfc1ec8\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-180x180.png\",\n \"revision\": \"153e47772d362c174bee9f00b8090bf1\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-57x57.png\",\n \"revision\": \"04feca43d959ca0f3b6973782c9fa134\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-60x60.png\",\n \"revision\": \"e7f1b90b537806adb676677c3dead66d\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-72x72.png\",\n \"revision\": \"604eca13e9aa44f2f1d76778107e5d64\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-76x76.png\",\n \"revision\": \"1698d7cd9b2cc90634013d3d62d23736\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-96x96.png\",\n \"revision\": \"a361212595e0c34b5d3d64084864d3e9\"\n },\n {\n \"url\": \"assets/icon/chrome-192.png\",\n \"revision\": \"440ff33effa9f895b67156ed57eac1c1\"\n },\n {\n \"url\": \"assets/icon/favicon-16x16.png\",\n \"revision\": \"98c8fdb75f1f1891b830dd70be7780c5\"\n },\n {\n \"url\": \"assets/icon/favicon-32x32.png\",\n \"revision\": \"a0c87ba0608aecffe0d0182415770766\"\n },\n {\n \"url\": \"assets/icon/guide-maskable.png\",\n \"revision\": \"99cc77cf2bc792acd6b847b5e3e151e9\"\n },\n {\n \"url\": \"assets/icon/ms-icon-144.png\",\n \"revision\": \"a3e06505f5a643a43d7f559a53abd7be\"\n },\n {\n \"url\": \"images/gb28181_push_streaming_1.png\",\n \"revision\": \"6283957dbf3a609f861ffb40054c8ef4\"\n },\n {\n \"url\": \"images/gb28181_push_streaming_2.png\",\n \"revision\": \"eac2229bd7d6302dd56c80924378f4f3\"\n },\n {\n \"url\": \"images/gb28181_push_streaming_3.png\",\n \"revision\": \"d9c25e9d693382a8fb713baa4865c794\"\n },\n {\n \"url\": \"images/gb28181_push_streaming_4.png\",\n \"revision\": \"f3c6584aae2a27866166c43f244c553b\"\n },\n {\n \"url\": \"images/generate_ssl_self-signed_certificate_and_test.webp\",\n \"revision\": \"c893dba3185a1e863cf175c2698c9bf9\"\n },\n {\n \"url\": \"images/how_to_create_a_live_stream.png\",\n \"revision\": \"7f11ba4af262d0e2a00c7718e6c8b180\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_1.png\",\n \"revision\": \"e1ffb707a47c1664161efc7c608fda24\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_10.png\",\n \"revision\": \"5e4cafeb5b4f54f57d76f4dcd632c377\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_2.png\",\n \"revision\": \"fb3c5027a4bef03f174d86f5d4cf8b32\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_3.png\",\n \"revision\": \"ae7f42d52b58c80e0265eeb40be94a9d\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_4.png\",\n \"revision\": \"536b0f9116a4fa6d0f155032886068d3\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_5.png\",\n \"revision\": \"d77ab1e34df68663332e451f59d68203\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_6.png\",\n \"revision\": \"5dd9c32672a86dbe6c07bbe58fe44522\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_7.png\",\n \"revision\": \"e6cf4753d43bc6251742ea3269463c99\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_8.png\",\n \"revision\": \"fe5c53d153ebb88d5b10ca979ce62a1b\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_9.png\",\n \"revision\": \"1aa87003a965b710adf9139645171cb6\"\n },\n {\n \"url\": \"images/how_to_use_device_id_as_stream_id_1.png\",\n \"revision\": \"5d24bb7c4f502d40c38313bb9b1234fe\"\n },\n {\n \"url\": \"images/how_to_use_device_id_as_stream_id_2.png\",\n \"revision\": \"7f293641cf8de63af03ff846a2be943f\"\n },\n {\n \"url\": \"images/how_to_use_device_id_as_stream_id_4.png\",\n \"revision\": \"8d3f6cced326d24e5cb940c85209d47a\"\n },\n {\n \"url\": \"images/how_to_use_device_id_as_stream_id_5.png\",\n \"revision\": \"7f293641cf8de63af03ff846a2be943f\"\n },\n {\n \"url\": \"images/how_to_use_device_id_as_stream_id_6.png\",\n \"revision\": \"b46e6e52751c33cca5b2f768ceae92d2\"\n },\n {\n \"url\": \"images/install_zlmediakit_using_vcpkg_1.png\",\n \"revision\": \"549087a1bb82ce36aa774ce725a9eeea\"\n },\n {\n \"url\": \"images/install_zlmediakit_using_vcpkg_2.png\",\n \"revision\": \"8368b41cc655599a201e5818750225d1\"\n },\n {\n \"url\": \"images/on-demand_push_streaming_zh.png\",\n \"revision\": \"1bb65d163eb9008b383a2d04255c9507\"\n },\n {\n \"url\": \"images/on-demand_streaming_zh.png\",\n \"revision\": \"16dc127a26325cf06dac7aedd115d57e\"\n },\n {\n \"url\": \"images/playback_authentication_zh.png\",\n \"revision\": \"eba681073fa4dd2f6663eeb1c7cbbf7a\"\n },\n {\n \"url\": \"images/push_authentication_zh.png\",\n \"revision\": \"5b1e13cc9369abf66481d2f4cc1dccb5\"\n },\n {\n \"url\": \"images/push_test.png\",\n \"revision\": \"88ec411cafd56da1c27bb958e05c7bda\"\n },\n {\n \"url\": \"images/start_server_1.png\",\n \"revision\": \"46b863cc78aaebb1a0d5d2b824a45519\"\n },\n {\n \"url\": \"images/start_server_2.png\",\n \"revision\": \"29d3057d8f9dd51a5e3a4589a71d3e7e\"\n },\n {\n \"url\": \"images/start_server_3.png\",\n \"revision\": \"3088ed2c7996882f9272a59a8e00f8cf\"\n },\n {\n \"url\": \"images/vs_code_zh.png\",\n \"revision\": \"a374f77503296c66576dcf3641283791\"\n },\n {\n \"url\": \"logo.png\",\n \"revision\": \"32ddfa5715059731ae893ec92fca0311\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches"],"mappings":"0nBAqBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACP,IAGFC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,gFACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,0DACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,2EACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sEACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,mFACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA"} \ No newline at end of file +{"version":3,"file":"service-worker.js","sources":["../../../../../tmp/92aea9f9056a356dd70aa2158551509c/service-worker.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/docs/docs/node_modules/.pnpm/workbox-core@7.0.0/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/docs/docs/node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/docs/docs/node_modules/.pnpm/workbox-precaching@7.0.0/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"assets/404.html-7HzFSFl7.js\",\n \"revision\": \"1e0b5f7fcdd201107c4b4085f3c0d1f5\"\n },\n {\n \"url\": \"assets/404.html-aQJ09P_F.js\",\n \"revision\": \"76f3c96a47b4621ba8ce69fcbd885f68\"\n },\n {\n \"url\": \"assets/app-0NopiYEV.js\",\n \"revision\": \"698d2b5ea93e89688621d745cae6eb1a\"\n },\n {\n \"url\": \"assets/arc-zVzTa0l4.js\",\n \"revision\": \"f91ca1d5ab8c70221d985c6540cc063c\"\n },\n {\n \"url\": \"assets/array-Nw74a44z.js\",\n \"revision\": \"17dcebeaf673b09a1ca5da014d20022f\"\n },\n {\n \"url\": \"assets/benchmark.html-ESZ9k3Ep.js\",\n \"revision\": \"243c830c85b213c61f650f6c48ed0955\"\n },\n {\n \"url\": \"assets/benchmark.html-MSc66SxZ.js\",\n \"revision\": \"dc32b8c22dbcb74830e677d297b170b6\"\n },\n {\n \"url\": \"assets/benchmark.html-uo75e0CN.js\",\n \"revision\": \"1cee459c1331a51e7e543c9ee7e09f39\"\n },\n {\n \"url\": \"assets/benchmark.html-xQUFyhUw.js\",\n \"revision\": \"0b93d042729a80ed7f7b41c6aac852a4\"\n },\n {\n \"url\": \"assets/c4Diagram-817c8e44-fGBWpqJm.js\",\n \"revision\": \"a4cb7614759993e0a3c97f7e465aa642\"\n },\n {\n \"url\": \"assets/classDiagram-48ab76fb-2huToeoO.js\",\n \"revision\": \"9fbae962046976f41e37346f3f9b9bff\"\n },\n {\n \"url\": \"assets/classDiagram-v2-8ecb0bfc-yizWAp91.js\",\n \"revision\": \"5d8aef0c08090f9b2a233b46b1223e86\"\n },\n {\n \"url\": \"assets/collaborative_projects.html-15UQQvPG.js\",\n \"revision\": \"aca89aea107c131135d843d7880f76b6\"\n },\n {\n \"url\": \"assets/collaborative_projects.html-gRvZJ2_P.js\",\n \"revision\": \"21258323cc48008377e663bcb4b9ccc3\"\n },\n {\n \"url\": \"assets/collaborative_projects.html-oDX6Yyj3.js\",\n \"revision\": \"c22e666a6c58d0c7c298ff4e779cde9f\"\n },\n {\n \"url\": \"assets/collaborative_projects.html-RO-575me.js\",\n \"revision\": \"25be9cb92d75f6d3027c1a70a31ad0bf\"\n },\n {\n \"url\": \"assets/compilation_instructions_for_windows_version.html-6NKchaAm.js\",\n \"revision\": \"db20ec119503c9df1d78bdf8dd19d51c\"\n },\n {\n \"url\": \"assets/compilation_instructions_for_windows_version.html-Fqb9RcQO.js\",\n \"revision\": \"f2602beb820cc3331b2e5f5a186fbbe6\"\n },\n {\n \"url\": \"assets/compilation_instructions_for_windows_version.html-Hq0AuZTz.js\",\n \"revision\": \"66feea9dae54928e3a2bb2f7a51bc417\"\n },\n {\n \"url\": \"assets/compilation_instructions_for_windows_version.html-xl0PwINJ.js\",\n \"revision\": \"ee73eff391cf2201c2517e705bc2e91c\"\n },\n {\n \"url\": \"assets/config_file.html-5j1Bx0Jx.js\",\n \"revision\": \"591d662b3e72f0b21c92319d03a2e17c\"\n },\n {\n \"url\": \"assets/config_file.html-9Xa4KaRE.js\",\n \"revision\": \"eb177b4145410c3337e181fd2a131ecc\"\n },\n {\n \"url\": \"assets/config_file.html-d15slbyo.js\",\n \"revision\": \"c075a5919c31796b0d027267c4266099\"\n },\n {\n \"url\": \"assets/config_file.html-i3ELg7s5.js\",\n \"revision\": \"05d0fdfd1621df427f889e3dfb54050c\"\n },\n {\n \"url\": \"assets/contact.html-KwkduCZ8.js\",\n \"revision\": \"ebe7c0ff7d017d099f10253c037c2884\"\n },\n {\n \"url\": \"assets/contact.html-nPftNmfa.js\",\n \"revision\": \"c55df9245c21c481a492bf69830d5eea\"\n },\n {\n \"url\": \"assets/contact.html-t3j5rpRG.js\",\n \"revision\": \"e97fbf18262212501bd92681965b7fd7\"\n },\n {\n \"url\": \"assets/contact.html-XWW2pZ29.js\",\n \"revision\": \"0b951bd788c1b31fccea7115275bec02\"\n },\n {\n \"url\": \"assets/createText-aebacdfe-VuGI-o_f.js\",\n \"revision\": \"aecdfc624456b253b5c1c05d48e8d5e2\"\n },\n {\n \"url\": \"assets/delay_test.html-_QomqbNh.js\",\n \"revision\": \"05e99497e62f35bf7dbea382401387f5\"\n },\n {\n \"url\": \"assets/delay_test.html-54KDTai-.js\",\n \"revision\": \"ed86a85b7170755c0c2e8b084f58bc3e\"\n },\n {\n \"url\": \"assets/delay_test.html-dT3kgdCj.js\",\n \"revision\": \"43f900f4b61b8881f4680b57bde2786f\"\n },\n {\n \"url\": \"assets/delay_test.html-YaKGDOck.js\",\n \"revision\": \"c858fa769f4be32db47c34e43056b7b2\"\n },\n {\n \"url\": \"assets/dependency.html-8pevclZ9.js\",\n \"revision\": \"dd6085399ef3ff9deff1d518e767f3f9\"\n },\n {\n \"url\": \"assets/dependency.html-jVZ5GKgo.js\",\n \"revision\": \"b7d2ed39fa733a79f192bd91c239c0af\"\n },\n {\n \"url\": \"assets/dependency.html-re6FQDQF.js\",\n \"revision\": \"8cda099d3a7b9acad4148cc502de62f8\"\n },\n {\n \"url\": \"assets/dependency.html-vliHx4sJ.js\",\n \"revision\": \"133156fbc8cde50f0cb079c965bc9d05\"\n },\n {\n \"url\": \"assets/edges-80f1ebb6-hR1YO9QC.js\",\n \"revision\": \"4b96491a0fcaadf98700e1ba5b8c4527\"\n },\n {\n \"url\": \"assets/erDiagram-9cfc3649-wT9fM43B.js\",\n \"revision\": \"a807a95cd9f259b1df12fb8a0e258253\"\n },\n {\n \"url\": \"assets/exclusive_features.html-2siFVq2G.js\",\n \"revision\": \"3f63eed8e945a5d96317576aa72a604e\"\n },\n {\n \"url\": \"assets/exclusive_features.html-oz4V5ANz.js\",\n \"revision\": \"53eb0c36a71a3240fc135aa2213fed39\"\n },\n {\n \"url\": \"assets/exclusive_features.html-vnOZwbaY.js\",\n \"revision\": \"0550b9f522d900dbeb93f713850ee1e7\"\n },\n {\n \"url\": \"assets/exclusive_features.html-wTOG2Bjt.js\",\n \"revision\": \"908ef27f27bc5f36054d486537a4f6e3\"\n },\n {\n \"url\": \"assets/flowchart-elk-definition-e097735e-s4v8c7Pb.js\",\n \"revision\": \"3e234bee806e3e7473f33b9ddee32bc1\"\n },\n {\n \"url\": \"assets/flowDb-170db09d-3I9bX383.js\",\n \"revision\": \"31e212097ace5ff53d63ef43c1e657e8\"\n },\n {\n \"url\": \"assets/flowDiagram-61eb444c-vQNzsoYg.js\",\n \"revision\": \"b5dfd8c3f3cef9988c9d553f2f254f70\"\n },\n {\n \"url\": \"assets/flowDiagram-v2-2f8f667a-vyhUgdJw.js\",\n \"revision\": \"26f0bc9de10ba055d359e84758e6fc78\"\n },\n {\n \"url\": \"assets/ganttDiagram-db6931fb-lnA5WCr2.js\",\n \"revision\": \"5aba86608be5fad101abb02092d11a34\"\n },\n {\n \"url\": \"assets/gb28181_push_streaming_4-qWTnfswt.js\",\n \"revision\": \"30c7b622101f90395cc790c0e72e1cf9\"\n },\n {\n \"url\": \"assets/gb28181_sip_signaling_packet_capture.html-_63zZLPQ.js\",\n \"revision\": \"298c5cd5ce0ee80b0433ed54d5c1d647\"\n },\n {\n \"url\": \"assets/gb28181_sip_signaling_packet_capture.html-dSB5oqMq.js\",\n \"revision\": \"dbfc86980d308e1204aa23121f175f5c\"\n },\n {\n \"url\": \"assets/gb28181_sip_signaling_packet_capture.html-JsEmgfbo.js\",\n \"revision\": \"672c9debd0586fa633495284bf0cdf25\"\n },\n {\n \"url\": \"assets/gb28181_sip_signaling_packet_capture.html-qexCXJj0.js\",\n \"revision\": \"672c9debd0586fa633495284bf0cdf25\"\n },\n {\n \"url\": \"assets/generate_ssl_self-signed_certificate_and_test-D4Sbj3Ls.js\",\n \"revision\": \"616544c7f95d53f29de519db0674f52c\"\n },\n {\n \"url\": \"assets/generate_ssl_self-signed_certificate_and_test.html-7V6eG0vA.js\",\n \"revision\": \"2900e1d4092c29de10d34afb5c4c753c\"\n },\n {\n \"url\": \"assets/generate_ssl_self-signed_certificate_and_test.html-O1ld5VEe.js\",\n \"revision\": \"d598673b70b3a2143534a8682b936698\"\n },\n {\n \"url\": \"assets/generate_ssl_self-signed_certificate_and_test.html-qSLRuImw.js\",\n \"revision\": \"e5b9c6794282f1b0fe700d22af21f5d2\"\n },\n {\n \"url\": \"assets/generate_ssl_self-signed_certificate_and_test.html-vsfOfJt0.js\",\n \"revision\": \"902da881440e3f9b4bbe070f2dfa7bc1\"\n },\n {\n \"url\": \"assets/giscus-NkhROb6B.js\",\n \"revision\": \"f06de634cef984f85d0919f717fab451\"\n },\n {\n \"url\": \"assets/gitGraphDiagram-6b463803-eKsTNhvP.js\",\n \"revision\": \"ab1f9939d0d7b50d5bfb611c4b156299\"\n },\n {\n \"url\": \"assets/high_concurrency_implementation_principle.html-4A4gHD8-.js\",\n \"revision\": \"7e59fa6413859b10a6eb17bd2af8336f\"\n },\n {\n \"url\": \"assets/high_concurrency_implementation_principle.html-opQWc8aM.js\",\n \"revision\": \"2fb1a4c2f74fc52046100556dc28ff26\"\n },\n {\n \"url\": \"assets/high_concurrency_implementation_principle.html-sl-nIpjv.js\",\n \"revision\": \"7a20b2d70a9e4eae865ef6ea53a0ce00\"\n },\n {\n \"url\": \"assets/high_concurrency_implementation_principle.html-T5LE0Lmi.js\",\n \"revision\": \"3d48cc83a8aa986ee5a71534d3a3756b\"\n },\n {\n \"url\": \"assets/hls_high_performance_journey.html-awr83uM9.js\",\n \"revision\": \"ebc78d0a1e508f4608e8042d9b2b5734\"\n },\n {\n \"url\": \"assets/hls_high_performance_journey.html-bBajAqE1.js\",\n \"revision\": \"7d3ea5c0f10f1014295bebf7364f6d48\"\n },\n {\n \"url\": \"assets/hls_high_performance_journey.html-bLztstJM.js\",\n \"revision\": \"1de12ca696da6d2fc7345df858d95fe2\"\n },\n {\n \"url\": \"assets/hls_high_performance_journey.html-TZBUS8og.js\",\n \"revision\": \"ebc78d0a1e508f4608e8042d9b2b5734\"\n },\n {\n \"url\": \"assets/how_to_create_a_live_steam.html-8eIvXeDo.js\",\n \"revision\": \"8141af136264206fbfdabc6a73244513\"\n },\n {\n \"url\": \"assets/how_to_create_a_live_steam.html-FHwnpSdN.js\",\n \"revision\": \"3060639f318e118a09057745e5cde6f4\"\n },\n {\n \"url\": \"assets/how_to_create_a_live_steam.html-Gq2b9Yi0.js\",\n \"revision\": \"1e77b724e809322523173efc4d0edc2f\"\n },\n {\n \"url\": \"assets/how_to_create_a_live_steam.html-j8XiE3eA.js\",\n \"revision\": \"8141af136264206fbfdabc6a73244513\"\n },\n {\n \"url\": \"assets/how_to_create_a_live_stream-3lt6j2fI.js\",\n \"revision\": \"67e9191b6843091959a8f07cea06a593\"\n },\n {\n \"url\": \"assets/how_to_enable_https_related_functions_zh_10-dp8gREln.js\",\n \"revision\": \"e08b5f85ae138171fbadcb495d89fa08\"\n },\n {\n \"url\": \"assets/how_to_enable_https_related_functions.html-9i2jCwZ3.js\",\n \"revision\": \"e6a689cc48195434cbb3bb5494b470a2\"\n },\n {\n \"url\": \"assets/how_to_enable_https_related_functions.html-fcJ6Uozv.js\",\n \"revision\": \"c4b3dc09434d6236ba12e26ee88007e3\"\n },\n {\n \"url\": \"assets/how_to_enable_https_related_functions.html-kCsRSeM_.js\",\n \"revision\": \"b665dffb4a5b3aaebd00cc8ee6104e1b\"\n },\n {\n \"url\": \"assets/how_to_enable_https_related_functions.html-mO3jYJnY.js\",\n \"revision\": \"b20d2d93bfc0a7d9afdb7d93d930c2e9\"\n },\n {\n \"url\": \"assets/how_to_test_delay.html-GlLjeJYr.js\",\n \"revision\": \"1bd6e54f8408e79ec83b26d5c81259e6\"\n },\n {\n \"url\": \"assets/how_to_test_delay.html-IVFxpLiU.js\",\n \"revision\": \"ed2a74f421d946e11a45d39ec362dc92\"\n },\n {\n \"url\": \"assets/how_to_test_delay.html-r6GaiRI_.js\",\n \"revision\": \"21f904e0cab984d8896b77e9444418c4\"\n },\n {\n \"url\": \"assets/how_to_test_delay.html-ubjyw-PC.js\",\n \"revision\": \"13801c3a209c906dccd85db6bb5092ba\"\n },\n {\n \"url\": \"assets/how_to_use_device_id_as_stream_id_6-sfQ1h9Fe.js\",\n \"revision\": \"1bff1864e2dfb05bde4bb12af8c9561c\"\n },\n {\n \"url\": \"assets/how_to_use_device_id_as_stream_id.html-_vNSGfoU.js\",\n \"revision\": \"5850d68f9c88c71712e258d057267d3c\"\n },\n {\n \"url\": \"assets/how_to_use_device_id_as_stream_id.html-5dSEoDq7.js\",\n \"revision\": \"e2e13187e72a3dcd20e6ace363d5d2f2\"\n },\n {\n \"url\": \"assets/how_to_use_device_id_as_stream_id.html-CzzjrtPS.js\",\n \"revision\": \"e2e13187e72a3dcd20e6ace363d5d2f2\"\n },\n {\n \"url\": \"assets/how_to_use_device_id_as_stream_id.html-ga4UcAIh.js\",\n \"revision\": \"858c041377d0a304dc9cd913185f18fa\"\n },\n {\n \"url\": \"assets/image/advanced.svg\",\n \"revision\": \"2934a573b64033bebb71f067ebc8d082\"\n },\n {\n \"url\": \"assets/image/bg.svg\",\n \"revision\": \"bed51349ca7476497e51d60437ef8eba\"\n },\n {\n \"url\": \"assets/image/blog.svg\",\n \"revision\": \"5686f361aca8bcf73522de225d09016d\"\n },\n {\n \"url\": \"assets/image/box.svg\",\n \"revision\": \"5f732c9705e288e8fb8ae6d2e5ce906a\"\n },\n {\n \"url\": \"assets/image/features.svg\",\n \"revision\": \"2eb292180d361e4af3f4bf411ef06062\"\n },\n {\n \"url\": \"assets/image/github-dark.svg\",\n \"revision\": \"8dcc6b5262f3b6138b1566b357ba89a9\"\n },\n {\n \"url\": \"assets/image/github-light.svg\",\n \"revision\": \"a0b00583d93c2f7084ad151ee0849934\"\n },\n {\n \"url\": \"assets/image/layout.svg\",\n \"revision\": \"db603c70eb017066ff30923ca5a2cd4a\"\n },\n {\n \"url\": \"assets/image/markdown.svg\",\n \"revision\": \"1a8b4476dae8f52cdd873d2b00fa27fb\"\n },\n {\n \"url\": \"assets/index-67a42d7d-iblPHmxF.js\",\n \"revision\": \"ac1e16ab13a97ddfd645e59da2f060ca\"\n },\n {\n \"url\": \"assets/index-7SG8bi1h.js\",\n \"revision\": \"46a193641571106d3b7b43f9bc2a2735\"\n },\n {\n \"url\": \"assets/index.html-_FbUjyNF.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-2dVuyDsF.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-3Pe7G9Sl.js\",\n \"revision\": \"c0c05ddda520e2adda625cdd231876ae\"\n },\n {\n \"url\": \"assets/index.html-4AoKvxIs.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-4qXHK4Yu.js\",\n \"revision\": \"ea8519a44fde5fca68c31fc431e2e570\"\n },\n {\n \"url\": \"assets/index.html-573jmd7K.js\",\n \"revision\": \"e3d32397c7925687efd938c6594e188c\"\n },\n {\n \"url\": \"assets/index.html-7fV02DDU.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-7yq99xxh.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-8LlBfneP.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-8RsIN7Qj.js\",\n \"revision\": \"ff590ed654e791a5b22c11ccc9ddce0e\"\n },\n {\n \"url\": \"assets/index.html-943vkdnv.js\",\n \"revision\": \"66506d542be80c2633ded058cc66b647\"\n },\n {\n \"url\": \"assets/index.html-A9z0_Hu7.js\",\n \"revision\": \"4f860e08cf4dabbe3974dcd867207005\"\n },\n {\n \"url\": \"assets/index.html-Acfu-WyI.js\",\n \"revision\": \"ac263380bcaf563b41d4feb14c1f3645\"\n },\n {\n \"url\": \"assets/index.html-bCrAKGJB.js\",\n \"revision\": \"a68c1384cd39c4c9c533e477bba297fd\"\n },\n {\n \"url\": \"assets/index.html-bV4_5Cgh.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-BzbKxypT.js\",\n \"revision\": \"662b8f394d27244938126a6f9d36f79e\"\n },\n {\n \"url\": \"assets/index.html-c0NLam4o.js\",\n \"revision\": \"50f75c5795cad25af5071e685fd56d25\"\n },\n {\n \"url\": \"assets/index.html-c1k5quBE.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-CojxHtZz.js\",\n \"revision\": \"3cce4cc3f4578dbcd1463687ffb739ae\"\n },\n {\n \"url\": \"assets/index.html-DgVFBk67.js\",\n \"revision\": \"d0f486a44dfc1b4d63fa7daf931822a1\"\n },\n {\n \"url\": \"assets/index.html-Dj-Byo33.js\",\n \"revision\": \"33d2489812195b60dd65835895fad787\"\n },\n {\n \"url\": \"assets/index.html-DoJnvppU.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-DydUlsO3.js\",\n \"revision\": \"4878548d7a98357afb216664f82b7636\"\n },\n {\n \"url\": \"assets/index.html-eKYx7NZ-.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-eSaWpJP4.js\",\n \"revision\": \"a082748c163adc20d7b9b1e9e5dd668b\"\n },\n {\n \"url\": \"assets/index.html-gSpoAwKN.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-GZbomDA_.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-HbKwkAxu.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-hehzhF2d.js\",\n \"revision\": \"c90eb36534ba7046feab54aa5d6955db\"\n },\n {\n \"url\": \"assets/index.html-HuxOwQjj.js\",\n \"revision\": \"5ff68fcacb97901c264ad1d7b40b6298\"\n },\n {\n \"url\": \"assets/index.html-Hvr1twkc.js\",\n \"revision\": \"0863680115a8ded21665ace23a839672\"\n },\n {\n \"url\": \"assets/index.html-JQu_RH6f.js\",\n \"revision\": \"0bfe758ce6140e9d1046435817bad5a2\"\n },\n {\n \"url\": \"assets/index.html-jVaUOSmI.js\",\n \"revision\": \"72b19a33de68639ae16f36b839e7d13c\"\n },\n {\n \"url\": \"assets/index.html-l-9Jcb0Z.js\",\n \"revision\": \"5ab8c4c304de3bbef4c91cdb52fbf08f\"\n },\n {\n \"url\": \"assets/index.html-ldqAHXhl.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-lHFYswhu.js\",\n \"revision\": \"68601d9bc01ff40425d106bd1db7b57e\"\n },\n {\n \"url\": \"assets/index.html-LLxB5nrB.js\",\n \"revision\": \"086ed6111461246bc6c97866b2d918d5\"\n },\n {\n \"url\": \"assets/index.html-LSqTAwnp.js\",\n \"revision\": \"c8324355f6d6e02a9bc861e06231a543\"\n },\n {\n \"url\": \"assets/index.html-m59LkreQ.js\",\n \"revision\": \"28018187ac0f122029bdfeb50cfb455b\"\n },\n {\n \"url\": \"assets/index.html-mfTVy5-J.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-MI_McXZr.js\",\n \"revision\": \"c5e8700ca283e861dced506472ecbf81\"\n },\n {\n \"url\": \"assets/index.html-O3xmvgtm.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-Oh37e22D.js\",\n \"revision\": \"bcb1fcf519857cdf15515f77a485a436\"\n },\n {\n \"url\": \"assets/index.html-ohZtz6Fw.js\",\n \"revision\": \"58893519f365a18c506f1836cfec535a\"\n },\n {\n \"url\": \"assets/index.html-oRdX7laQ.js\",\n \"revision\": \"2de9c461d24eb912ae3e73a7ef0228e7\"\n },\n {\n \"url\": \"assets/index.html-oytvqk6x.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-Pl0D5fWX.js\",\n \"revision\": \"df50db0b03d7bc4801e7684b895e72c0\"\n },\n {\n \"url\": \"assets/index.html-Q1OCSdNr.js\",\n \"revision\": \"0355094bde07e5a1c1841bc347489d5e\"\n },\n {\n \"url\": \"assets/index.html-q26KWjF1.js\",\n \"revision\": \"03973645486cfbb92026d896861a2158\"\n },\n {\n \"url\": \"assets/index.html-Q3P2N4-E.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-qi3PncfW.js\",\n \"revision\": \"b01b13800c1abbfe37ecbf7bf04d5102\"\n },\n {\n \"url\": \"assets/index.html-qjMVLXfF.js\",\n \"revision\": \"9e80a629102cb272c373b96d1433b760\"\n },\n {\n \"url\": \"assets/index.html-QkbwDjsA.js\",\n \"revision\": \"841b57fd17ad02196225f94dac99a56e\"\n },\n {\n \"url\": \"assets/index.html-QokpAUdW.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-QQRRY2d0.js\",\n \"revision\": \"b43ec38709542738da227e4487b5739f\"\n },\n {\n \"url\": \"assets/index.html-qXcCxmIQ.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-Rh0erDOb.js\",\n \"revision\": \"7a00205cde84a167e23e5c6ce0f20674\"\n },\n {\n \"url\": \"assets/index.html-TLmaTaqK.js\",\n \"revision\": \"310fdf35690289b4b695a2a9f063cdf2\"\n },\n {\n \"url\": \"assets/index.html-uBldBXxN.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-v6csxUL5.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-vj58oyHa.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-VsukZOSA.js\",\n \"revision\": \"c6e6b871aa905370fa4d93c22c2fc8e1\"\n },\n {\n \"url\": \"assets/index.html-WES3IN89.js\",\n \"revision\": \"63a2fce3e9b75e8a7f33af47fc6d5096\"\n },\n {\n \"url\": \"assets/index.html-X7WU_LPV.js\",\n \"revision\": \"18f6a74b2ca20e17c9893fd3cfd2c878\"\n },\n {\n \"url\": \"assets/index.html-XiIyF-Mz.js\",\n \"revision\": \"125061609d4366c5cf551cfd435226ee\"\n },\n {\n \"url\": \"assets/index.html-Y6Zxo28x.js\",\n \"revision\": \"583fc19e65b7982208e7988a34d75970\"\n },\n {\n \"url\": \"assets/index.html-yFJZvUVc.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-yjc28uoP.js\",\n \"revision\": \"4d87cc57914d0403609cbb2f0de32cbb\"\n },\n {\n \"url\": \"assets/index.html-yYLEULdt.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/index.html-ZAfsJ4Zm.js\",\n \"revision\": \"5ff68fcacb97901c264ad1d7b40b6298\"\n },\n {\n \"url\": \"assets/index.html-Zl8OD7vu.js\",\n \"revision\": \"eba5ebfdf176f5b1608ff6a52d885037\"\n },\n {\n \"url\": \"assets/index.html-zqagt7gM.js\",\n \"revision\": \"9f33d74f992c98b844ebe7fb9d0599a1\"\n },\n {\n \"url\": \"assets/infoDiagram-a336098b-ahMgvA-1.js\",\n \"revision\": \"358686becdf616aa6b5291c7b9393995\"\n },\n {\n \"url\": \"assets/init-Hi12RPRh.js\",\n \"revision\": \"3ce28180466443e9b617d7b96e9f7b8f\"\n },\n {\n \"url\": \"assets/install_zlmediakit_using_vcpkg_2-1HFW-yNt.js\",\n \"revision\": \"eba8f412e34fc0140174130ed248e21f\"\n },\n {\n \"url\": \"assets/install_zlmediakit_using_vcpkg.html-_H3jokEy.js\",\n \"revision\": \"5e8111d2c2acce6608f89dc07754b276\"\n },\n {\n \"url\": \"assets/install_zlmediakit_using_vcpkg.html-lJ__kZwE.js\",\n \"revision\": \"90288c6b05b19f6839599ba7d32befbd\"\n },\n {\n \"url\": \"assets/install_zlmediakit_using_vcpkg.html-tFAic-l6.js\",\n \"revision\": \"4a051fe16e8e4dccc7be6dc1c47a137f\"\n },\n {\n \"url\": \"assets/install_zlmediakit_using_vcpkg.html-uFx2Qn-i.js\",\n \"revision\": \"dbb4246dc845164cb09890791e4ecf6b\"\n },\n {\n \"url\": \"assets/introduction_to_streaming_media_related_technologies.html-jd9Zwqd3.js\",\n \"revision\": \"3317bc4a0e2bcceb80fda8b88f0bbbba\"\n },\n {\n \"url\": \"assets/introduction_to_streaming_media_related_technologies.html-O53gIrdK.js\",\n \"revision\": \"0ef8b597685e571d9ff51705e039dc88\"\n },\n {\n \"url\": \"assets/introduction_to_streaming_media_related_technologies.html-uFhGEBGc.js\",\n \"revision\": \"1d475bfd3c612e339908e97deaa79136\"\n },\n {\n \"url\": \"assets/introduction_to_streaming_media_related_technologies.html-Zd-Cue_9.js\",\n \"revision\": \"336383a0af62d19fba0a1dd8fda04d84\"\n },\n {\n \"url\": \"assets/journeyDiagram-deae3313-A-9AYwwK.js\",\n \"revision\": \"9f88d6462313245e41c4772ed58acce1\"\n },\n {\n \"url\": \"assets/layout-6DvG_ICF.js\",\n \"revision\": \"e26aa7111e727ad91c4ceebcb9b41bad\"\n },\n {\n \"url\": \"assets/license.html-onnWhI1X.js\",\n \"revision\": \"959de41ff2dbe211d159ffcbbdecaf1d\"\n },\n {\n \"url\": \"assets/license.html-Pr361WBx.js\",\n \"revision\": \"2e4f7926a1cc657c22fe8705d819270b\"\n },\n {\n \"url\": \"assets/license.html-ptTdZQ9a.js\",\n \"revision\": \"59c5af23d2c0c4fa2f4eab93e329bf3c\"\n },\n {\n \"url\": \"assets/license.html-qa5ZL8TL.js\",\n \"revision\": \"df8e691978906ce9472d451f42793a2e\"\n },\n {\n \"url\": \"assets/line-QxBjBe1b.js\",\n \"revision\": \"e0390d298572b2e533df41b92be91f91\"\n },\n {\n \"url\": \"assets/linear-nks6njEu.js\",\n \"revision\": \"3711966dc1758eb79ce17af207d381ea\"\n },\n {\n \"url\": \"assets/mermaid.core-YBgJFCkH.js\",\n \"revision\": \"cfdb5e3a743287db9f28c2d9dbbf9824\"\n },\n {\n \"url\": \"assets/mindmap-definition-617cf8dd-vVbSb0k_.js\",\n \"revision\": \"a36f678a81148cf259ee80c1a2463d06\"\n },\n {\n \"url\": \"assets/not_recommended_qq.html-g8E5V1Ie.js\",\n \"revision\": \"cc6d5dbde1ac6d1fd4335769c6ce3666\"\n },\n {\n \"url\": \"assets/not_recommended_qq.html-Od4ztKJy.js\",\n \"revision\": \"c3885d6144111405525cc78161e1bce3\"\n },\n {\n \"url\": \"assets/not_recommended_qq.html-sTyZQjjb.js\",\n \"revision\": \"55ddaad5d2ea1b4598a2581acaab0546\"\n },\n {\n \"url\": \"assets/not_recommended_qq.html-VsG4mwYA.js\",\n \"revision\": \"606a9ac591fb5731c26d8e900403b2e4\"\n },\n {\n \"url\": \"assets/on-demand_push_streaming_zh-CK4xj1dh.js\",\n \"revision\": \"58fd02f19ecc7bced43f105b06c8430d\"\n },\n {\n \"url\": \"assets/on-demand_push_streaming.html-crgN24-s.js\",\n \"revision\": \"ac1b3b0933859c59196b2f575f3649ac\"\n },\n {\n \"url\": \"assets/on-demand_push_streaming.html-kP6TQb2_.js\",\n \"revision\": \"2785a3c0027931aa5e62297f7ccf37c2\"\n },\n {\n \"url\": \"assets/on-demand_push_streaming.html-MaKthO1-.js\",\n \"revision\": \"3f487d7cb9c03cf0d9f6e117f607fe94\"\n },\n {\n \"url\": \"assets/on-demand_push_streaming.html-NzG-8Joc.js\",\n \"revision\": \"87c4986f5bde9eb4fe9637ac7e0acd65\"\n },\n {\n \"url\": \"assets/on-demand_streaming_zh-h19pTlmd.js\",\n \"revision\": \"0eb44d4c65523fe801d4a4498adaafc4\"\n },\n {\n \"url\": \"assets/on-demand_streaming.html-2DvN-m5K.js\",\n \"revision\": \"b38e0c728d1e2148b057ac438c0329fd\"\n },\n {\n \"url\": \"assets/on-demand_streaming.html-5SBDxVes.js\",\n \"revision\": \"a3755702d9fcf9d9e4672d16658758a0\"\n },\n {\n \"url\": \"assets/on-demand_streaming.html-rje6YlXl.js\",\n \"revision\": \"f4c549eea188e9a4b7112778c42c17ee\"\n },\n {\n \"url\": \"assets/on-demand_streaming.html-VwCpE1JK.js\",\n \"revision\": \"f85b1e3a5f0c8d08930dce14f75aeb1c\"\n },\n {\n \"url\": \"assets/oncetoken.html-JcsefotR.js\",\n \"revision\": \"0d901abe41c808ec9f1a3c1c35ffe65f\"\n },\n {\n \"url\": \"assets/oncetoken.html-KoxT1WJ9.js\",\n \"revision\": \"0f7d361f7ae93d381f5fdae6309e4496\"\n },\n {\n \"url\": \"assets/oncetoken.html-LPckM_ZY.js\",\n \"revision\": \"9154f9b016875771b1917e6c850a1996\"\n },\n {\n \"url\": \"assets/oncetoken.html-pNonh94A.js\",\n \"revision\": \"d0394451a802958333c70924db7fb865\"\n },\n {\n \"url\": \"assets/online_test.html-8_GcpcRF.js\",\n \"revision\": \"52338331afa59a61a6bcb8f6ca24fafe\"\n },\n {\n \"url\": \"assets/online_test.html-osni6C75.js\",\n \"revision\": \"e661758df2e4ad6406dc4aa0e9871690\"\n },\n {\n \"url\": \"assets/online_test.html-X04CV8WE.js\",\n \"revision\": \"183a9a7a404c5c376065e821924859e0\"\n },\n {\n \"url\": \"assets/online_test.html-XBO_M5q9.js\",\n \"revision\": \"98936b8dca13b9db45bc565f2a2dfd79\"\n },\n {\n \"url\": \"assets/ordinal-wXG5obU4.js\",\n \"revision\": \"a72e57060c4f6a7606baa78dc6e9ad02\"\n },\n {\n \"url\": \"assets/path-aUcfwwLI.js\",\n \"revision\": \"f86c0243cb45746453c6b4f7dbd9f34d\"\n },\n {\n \"url\": \"assets/performance_testing.html-DQL8Y_0H.js\",\n \"revision\": \"614f84b26f36cd75f82542fcafbadbf3\"\n },\n {\n \"url\": \"assets/performance_testing.html-oRt7mc3-.js\",\n \"revision\": \"25a556f295f0cd7d5604cfc6f568e3e5\"\n },\n {\n \"url\": \"assets/performance_testing.html-RUXKMema.js\",\n \"revision\": \"9551eaf034a76939e5ada96132340a23\"\n },\n {\n \"url\": \"assets/performance_testing.html-wMvwmLu0.js\",\n \"revision\": \"d43a0001d72ef49579dbf598ac26ba4e\"\n },\n {\n \"url\": \"assets/photoswipe.esm-08_zHRDQ.js\",\n \"revision\": \"481d5342d9bb799640b63b15b698dcd4\"\n },\n {\n \"url\": \"assets/pieDiagram-a5166659-88FRZv2h.js\",\n \"revision\": \"c0975ac9a0eb34fce6e957f8930ba8fe\"\n },\n {\n \"url\": \"assets/play_url_rules.html-_eahSglS.js\",\n \"revision\": \"7fbd4cf9e506e5c36ccd6e6a3af7ffc9\"\n },\n {\n \"url\": \"assets/play_url_rules.html-GF2zY0uE.js\",\n \"revision\": \"457bd988c0f36683479842f87791a38f\"\n },\n {\n \"url\": \"assets/play_url_rules.html-LU-zd-xr.js\",\n \"revision\": \"e8313eb4ea56e522cb92f9f260523109\"\n },\n {\n \"url\": \"assets/play_url_rules.html-qwXh8ebF.js\",\n \"revision\": \"75fa5e93be6d114e726e884607d6042c\"\n },\n {\n \"url\": \"assets/playback_authentication_zh-gjAAn9Yd.js\",\n \"revision\": \"d1b73468587890117bafd3f86759aec4\"\n },\n {\n \"url\": \"assets/playback_authentication.html-arMfpj8D.js\",\n \"revision\": \"9168f09b8be9be130d72ddb4c4b4fb3c\"\n },\n {\n \"url\": \"assets/playback_authentication.html-AsKcZv3x.js\",\n \"revision\": \"06fd721198c15baee42d26e55f49c6c3\"\n },\n {\n \"url\": \"assets/playback_authentication.html-G685IkfQ.js\",\n \"revision\": \"9d419a4ece7033782a7bf4f4dd2360d1\"\n },\n {\n \"url\": \"assets/playback_authentication.html-wjgI-Yj5.js\",\n \"revision\": \"565152fbd8128bbfc4a350131902a817\"\n },\n {\n \"url\": \"assets/plugin-vue_export-helper-x3n3nnut.js\",\n \"revision\": \"25e3a5dcaf00fb2b1ba0c8ecea6d2560\"\n },\n {\n \"url\": \"assets/push_authentication_zh-OS4qAsfx.js\",\n \"revision\": \"2c2bf93635139a5d3979114757a9bfa3\"\n },\n {\n \"url\": \"assets/push_authentication.html-_wCQpvPn.js\",\n \"revision\": \"1ff24a776c6c1bf3187c8a185866cd89\"\n },\n {\n \"url\": \"assets/push_authentication.html-8JQfqi5E.js\",\n \"revision\": \"3e7eea41c9dfba1adbb4128ecaf6f554\"\n },\n {\n \"url\": \"assets/push_authentication.html-oaOjOtnq.js\",\n \"revision\": \"210b20a52ad45ab55fd37174c3c9bc23\"\n },\n {\n \"url\": \"assets/push_authentication.html-qlfLynHw.js\",\n \"revision\": \"b3d7bf7f8d5bdcd9e98b65b9def167ab\"\n },\n {\n \"url\": \"assets/push_streaming.html-5MzKBCwx.js\",\n \"revision\": \"00af9265177e3e8a736e41254f3cd2eb\"\n },\n {\n \"url\": \"assets/push_streaming.html-JqhELNzW.js\",\n \"revision\": \"afa4fa9617f8e05a0a8edad9fb2bd110\"\n },\n {\n \"url\": \"assets/push_streaming.html-MRQ3SR8R.js\",\n \"revision\": \"a494f23272c020190b6d7b9e6534cee2\"\n },\n {\n \"url\": \"assets/push_streaming.html-Z4VDPPfI.js\",\n \"revision\": \"c64db74b6d82876529a744130565aa0e\"\n },\n {\n \"url\": \"assets/push_test-WgKOKRFc.js\",\n \"revision\": \"e9d124a5d01db8f90748223c62797fde\"\n },\n {\n \"url\": \"assets/push_test.html-dzpZPZVg.js\",\n \"revision\": \"6faa8e906a8729dc4816dfb4957ff39c\"\n },\n {\n \"url\": \"assets/push_test.html-gnFrDUbt.js\",\n \"revision\": \"64472eabb158a683a6690a65cca64231\"\n },\n {\n \"url\": \"assets/push_test.html-n5-72YJ1.js\",\n \"revision\": \"fa47a6be341003a057e2a5c0fd41f0d0\"\n },\n {\n \"url\": \"assets/push_test.html-rQVB769L.js\",\n \"revision\": \"93f2a09ff23420dc2f85ff60910ec319\"\n },\n {\n \"url\": \"assets/quadrantDiagram-6c355bbc-3OwR_3NY.js\",\n \"revision\": \"f0fb38c91fc21cdd49d0d9e188ae4de5\"\n },\n {\n \"url\": \"assets/requirementDiagram-4038b16c-GBigQQoF.js\",\n \"revision\": \"212f666bc8e13eed5688371094d707d4\"\n },\n {\n \"url\": \"assets/restful_api.html-4yfdZ-oL.js\",\n \"revision\": \"f6caab337c72c9fd847d4d2727a80a0a\"\n },\n {\n \"url\": \"assets/restful_api.html-ojzFkZh8.js\",\n \"revision\": \"ec9a18b6e52645033d3be5c4ceff0bf8\"\n },\n {\n \"url\": \"assets/restful_api.html-vpWQQrW9.js\",\n \"revision\": \"3577dfd936bbed14b4d76ac027be2810\"\n },\n {\n \"url\": \"assets/restful_api.html-Xx1SUrzX.js\",\n \"revision\": \"27db13c31cdd8cf6d8f4d4db7958194b\"\n },\n {\n \"url\": \"assets/rtmp_playback_compatibility_issues.html-5avJPHVo.js\",\n \"revision\": \"6be1e2e717cb3e63216bce17db431fda\"\n },\n {\n \"url\": \"assets/rtmp_playback_compatibility_issues.html-fNEuKIs-.js\",\n \"revision\": \"2cb15ad80be974c535f6f192288aa826\"\n },\n {\n \"url\": \"assets/rtmp_playback_compatibility_issues.html-NhoJKAeu.js\",\n \"revision\": \"fce764759416bc52c224e6dc56f08587\"\n },\n {\n \"url\": \"assets/rtmp_playback_compatibility_issues.html-RzirVjbt.js\",\n \"revision\": \"bf3a79adbd8687cf32a560b763907237\"\n },\n {\n \"url\": \"assets/rtmp_pull_stream_performance_test.html-_aYV-qZf.js\",\n \"revision\": \"ade15d4d534cd82ca2cc09fba7821fc3\"\n },\n {\n \"url\": \"assets/rtmp_pull_stream_performance_test.html--AjSCAb6.js\",\n \"revision\": \"bd1504c390e440f3f3f46565dfb1c510\"\n },\n {\n \"url\": \"assets/rtmp_pull_stream_performance_test.html-HQ4fzTKd.js\",\n \"revision\": \"305864626776df21bb91f68cd1ae4047\"\n },\n {\n \"url\": \"assets/rtmp_pull_stream_performance_test.html-UV-5J8vg.js\",\n \"revision\": \"a283af73cd45963317e4d4a5981ff65f\"\n },\n {\n \"url\": \"assets/rtmp_push_stream_performance_test.html-AxJYj-3i.js\",\n \"revision\": \"483711c1a022e7d97bbfd4425092f5e6\"\n },\n {\n \"url\": \"assets/rtmp_push_stream_performance_test.html-BY1UVNB2.js\",\n \"revision\": \"ad220f0720f98cb1adc30de41972428f\"\n },\n {\n \"url\": \"assets/rtmp_push_stream_performance_test.html-VzlWIKzU.js\",\n \"revision\": \"c218d11d7996fb5f86729c59a9ec8020\"\n },\n {\n \"url\": \"assets/rtmp_push_stream_performance_test.html-YYy_fCwZ.js\",\n \"revision\": \"56c574a723b439e5e2cf8a44ccd1ae86\"\n },\n {\n \"url\": \"assets/rtmp_support_for_h265_and_opus.html-a8ynJZrM.js\",\n \"revision\": \"4c96032af39497dbd6c852dfede37518\"\n },\n {\n \"url\": \"assets/rtmp_support_for_h265_and_opus.html-f4aPfFot.js\",\n \"revision\": \"a492fe181304965e8618760a986a1330\"\n },\n {\n \"url\": \"assets/rtmp_support_for_h265_and_opus.html-Ja2UBaOZ.js\",\n \"revision\": \"0c617f4c3eb550b39c081d47ca718e88\"\n },\n {\n \"url\": \"assets/rtmp_support_for_h265_and_opus.html-tX2acU7J.js\",\n \"revision\": \"70ba7cf876f460ad76d42aa18bfa2af7\"\n },\n {\n \"url\": \"assets/rtsp_performance_optimization.html-jqJ1nUFL.js\",\n \"revision\": \"d3462ef3b2e80ed0bd6aabc16863daba\"\n },\n {\n \"url\": \"assets/rtsp_performance_optimization.html-N4V23aKI.js\",\n \"revision\": \"8a21a102026c37a97823ac99d10ceda5\"\n },\n {\n \"url\": \"assets/rtsp_performance_optimization.html-oVbOTUnc.js\",\n \"revision\": \"878f7c0f478d2d2adfb041a5a310716a\"\n },\n {\n \"url\": \"assets/rtsp_performance_optimization.html-XwSQReWx.js\",\n \"revision\": \"e4f0f43ad81a11129ab62c4dc1a66d96\"\n },\n {\n \"url\": \"assets/rtsp_pull_stream_performance_test.html-2yov4QZH.js\",\n \"revision\": \"36e9219568e20efb63443ea908a33bae\"\n },\n {\n \"url\": \"assets/rtsp_pull_stream_performance_test.html-78O1mXMt.js\",\n \"revision\": \"c7be2c21aaf566dcced5ee6b9b38382d\"\n },\n {\n \"url\": \"assets/rtsp_pull_stream_performance_test.html-9hA9_SB-.js\",\n \"revision\": \"687c3b750da73663d062d7188877acca\"\n },\n {\n \"url\": \"assets/rtsp_pull_stream_performance_test.html-waVb8kwe.js\",\n \"revision\": \"c7be2c21aaf566dcced5ee6b9b38382d\"\n },\n {\n \"url\": \"assets/rtsp_push_process.html-5BXn5aZU.js\",\n \"revision\": \"f51ac65b1210b608025c54039e9cd723\"\n },\n {\n \"url\": \"assets/rtsp_push_process.html-eeithr0y.js\",\n \"revision\": \"f54ec8d338002bfc19a7ebf2719dd781\"\n },\n {\n \"url\": \"assets/rtsp_push_process.html-MSFA7pR8.js\",\n \"revision\": \"0730b0affd6b626ec2adde265bfbb202\"\n },\n {\n \"url\": \"assets/rtsp_push_process.html-ZQbam1ye.js\",\n \"revision\": \"6a97cec8ee75a1c9e0471d50b0d97723\"\n },\n {\n \"url\": \"assets/rtsp_push_stream_performance_test.html-3UQhsyo8.js\",\n \"revision\": \"308c989c47769eb89dc0504d1392b531\"\n },\n {\n \"url\": \"assets/rtsp_push_stream_performance_test.html-g2X0PP_e.js\",\n \"revision\": \"825be1a0511d7deae628dc8708cdb3cd\"\n },\n {\n \"url\": \"assets/rtsp_push_stream_performance_test.html-x031EUqu.js\",\n \"revision\": \"0b29c71a42cc56e5626d7c6df3f5b60f\"\n },\n {\n \"url\": \"assets/rtsp_push_stream_performance_test.html-YskCMXrz.js\",\n \"revision\": \"0b29c71a42cc56e5626d7c6df3f5b60f\"\n },\n {\n \"url\": \"assets/sankeyDiagram-6db3d513-gIgv_0rP.js\",\n \"revision\": \"bb4901582f9a9bd9f8152a414f137a67\"\n },\n {\n \"url\": \"assets/sequence_diagram.html-pEkXoaBs.js\",\n \"revision\": \"4dfa6fe00ea90c64d0e52ecfa3bb784b\"\n },\n {\n \"url\": \"assets/sequence_diagram.html-y7tfUv_v.js\",\n \"revision\": \"f83ca3c8bcc0b924a3664b7656d0d346\"\n },\n {\n \"url\": \"assets/sequence_diagram.html-yqJJFxQH.js\",\n \"revision\": \"d782a1092ea55f1b4d383b3ec73713a7\"\n },\n {\n \"url\": \"assets/sequence_diagram.html-ZomyBXSL.js\",\n \"revision\": \"896bebbd384db50ee6571b853ac568a4\"\n },\n {\n \"url\": \"assets/sequenceDiagram-465a088a-qM5g7oLQ.js\",\n \"revision\": \"a8e1e5a6e0687929b19530803ff4f35e\"\n },\n {\n \"url\": \"assets/start_server_3-RVnx99XR.js\",\n \"revision\": \"cdc2fe86a390491f5cb22b1eceb5f785\"\n },\n {\n \"url\": \"assets/start_server.html-fcMybRlu.js\",\n \"revision\": \"09f556bf8111d3276b52829d577786e3\"\n },\n {\n \"url\": \"assets/start_server.html-iaR_8o9S.js\",\n \"revision\": \"4b0d51c95852b9efb968bc15f98bf436\"\n },\n {\n \"url\": \"assets/start_server.html-JlFNgj-K.js\",\n \"revision\": \"dfeb9ab5151c1c03d3b7bc3cb3069392\"\n },\n {\n \"url\": \"assets/start_server.html-rADXsgsy.js\",\n \"revision\": \"17f98f760083e4a3a319271a5e63319a\"\n },\n {\n \"url\": \"assets/start.html-3NE1XKNN.js\",\n \"revision\": \"5c0300f5fb2e4cf3591dc61e1b867ada\"\n },\n {\n \"url\": \"assets/start.html-I4A7uS59.js\",\n \"revision\": \"2dd388f7f89c50f312c2671acec0f20a\"\n },\n {\n \"url\": \"assets/start.html-Jyh7sq9I.js\",\n \"revision\": \"f5febcbd00c1165c254b98d0a33020b0\"\n },\n {\n \"url\": \"assets/start.html-zUlbdSif.js\",\n \"revision\": \"7783d4fcb6248e03479bec97c5497be8\"\n },\n {\n \"url\": \"assets/stateDiagram-b620d43f-mAYfcJzU.js\",\n \"revision\": \"d412c512bff100ba35cbe994323165e8\"\n },\n {\n \"url\": \"assets/stateDiagram-v2-2671c3d1-QZ9kVaW-.js\",\n \"revision\": \"89de3b4aee6a5a2c0080abd7459112d2\"\n },\n {\n \"url\": \"assets/style-b4Lm5zJp.css\",\n \"revision\": \"29a55a9ec36f4713f5ee0c2d567936eb\"\n },\n {\n \"url\": \"assets/styles-4ba6ed67-LzHEaVgv.js\",\n \"revision\": \"474aca56f8096549ed879625e8d88440\"\n },\n {\n \"url\": \"assets/styles-b966c4ae-hKhWXcIa.js\",\n \"revision\": \"90acd695049615ae8d8a99a82fd97f89\"\n },\n {\n \"url\": \"assets/styles-bbc3fe3b-rQ9hJQeS.js\",\n \"revision\": \"59e25cd71d7bb59e922e3b9a2efaf832\"\n },\n {\n \"url\": \"assets/svgDrawCommon-ad5ef572-Rj64dPCl.js\",\n \"revision\": \"47c8b973c83e857c97cd6b08e07c150c\"\n },\n {\n \"url\": \"assets/thanks.html--KuWuTSm.js\",\n \"revision\": \"d3803fff8502582755c3807cb30b7cab\"\n },\n {\n \"url\": \"assets/thanks.html-eseVCxC7.js\",\n \"revision\": \"1273ae668b9056c36531756d4732bdb3\"\n },\n {\n \"url\": \"assets/thanks.html-FSlc_7wN.js\",\n \"revision\": \"10dcb84692f0c6dbe216edd4ae609799\"\n },\n {\n \"url\": \"assets/thanks.html-Rcdc4mKk.js\",\n \"revision\": \"f21849b3e043cced8d24a68f8ac9e575\"\n },\n {\n \"url\": \"assets/the_nature_of_live_broadcast_delay.html--_Oe6F80.js\",\n \"revision\": \"f8658cf2d7e8ad6d96608c589f34470c\"\n },\n {\n \"url\": \"assets/the_nature_of_live_broadcast_delay.html-bGwDwg8A.js\",\n \"revision\": \"20f830ee314f6b02c6b0126b63b5446b\"\n },\n {\n \"url\": \"assets/the_nature_of_live_broadcast_delay.html-bjchJaZD.js\",\n \"revision\": \"735754f2db4f74a46465bbefadfef135\"\n },\n {\n \"url\": \"assets/the_nature_of_live_broadcast_delay.html-uU6VtFJR.js\",\n \"revision\": \"92c9acaeab334f41332d4ed9539ef01d\"\n },\n {\n \"url\": \"assets/timeline-definition-732a2638-_vkJzhaO.js\",\n \"revision\": \"9bbda6d652063f0b0e015d5d80c5e059\"\n },\n {\n \"url\": \"assets/use_cases.html-C-cj_NSV.js\",\n \"revision\": \"a791484044a968dc199237dad1cc28f2\"\n },\n {\n \"url\": \"assets/use_cases.html-nlOjewQC.js\",\n \"revision\": \"727e6f6195079f183e29904a3db6fb6a\"\n },\n {\n \"url\": \"assets/use_cases.html-ocJvSQIH.js\",\n \"revision\": \"4a5ef0c81108312f5c9ec4ae745c0f4a\"\n },\n {\n \"url\": \"assets/use_cases.html-SNBvnwbO.js\",\n \"revision\": \"4f0ec334c475c21fee53a84b716d8c69\"\n },\n {\n \"url\": \"assets/video_conferencing_related_resources.html-1ZPXoBfM.js\",\n \"revision\": \"e4757909bc6677a4f013cecc2fd1f9cf\"\n },\n {\n \"url\": \"assets/video_conferencing_related_resources.html-Da8l8FFw.js\",\n \"revision\": \"a391a24998a5e69a47cbc89241c5e857\"\n },\n {\n \"url\": \"assets/video_conferencing_related_resources.html-JT3FqRo7.js\",\n \"revision\": \"34b69957b9be0b8ee95ec35b3d7527ce\"\n },\n {\n \"url\": \"assets/video_conferencing_related_resources.html-pKTKpfIG.js\",\n \"revision\": \"0e8b204a063b9006cd5ed0418526315e\"\n },\n {\n \"url\": \"assets/vs_code_zh-ltEPcFYF.js\",\n \"revision\": \"bae72e4c099d90687244cb1ba5708ec1\"\n },\n {\n \"url\": \"assets/web_hook_api.html-4eZenSeJ.js\",\n \"revision\": \"675753cd7131bd83f1aca0f502208209\"\n },\n {\n \"url\": \"assets/web_hook_api.html-F_kUu3X6.js\",\n \"revision\": \"95e48cec141cf6b666746c158fa55d8c\"\n },\n {\n \"url\": \"assets/web_hook_api.html-nXr7pFGe.js\",\n \"revision\": \"3fc9d0a041671d8c536f81be6c6779df\"\n },\n {\n \"url\": \"assets/web_hook_api.html-yTBnNLfz.js\",\n \"revision\": \"462bea7db290092ccf539b3f0e8ffcc0\"\n },\n {\n \"url\": \"assets/webrtc_compilation_and_use.html-Ck_2B7eV.js\",\n \"revision\": \"4f06fb3918dac02bcc9b2431b9cd213d\"\n },\n {\n \"url\": \"assets/webrtc_compilation_and_use.html-ifqCJvPh.js\",\n \"revision\": \"413bf4f9e564cd018500420074a69d83\"\n },\n {\n \"url\": \"assets/webrtc_compilation_and_use.html-u4uYYnLr.js\",\n \"revision\": \"39615c16478a511c7cce6932b7d93b9c\"\n },\n {\n \"url\": \"assets/webrtc_compilation_and_use.html-Wir4WmSI.js\",\n \"revision\": \"2d2abf401ca2176afc9d1ad0b8ff5f47\"\n },\n {\n \"url\": \"assets/webrtc_signaling_interaction_format.html-6nmFHnea.js\",\n \"revision\": \"b70847f2823ec38e904836f4e309a5fd\"\n },\n {\n \"url\": \"assets/webrtc_signaling_interaction_format.html-KYtlkjHG.js\",\n \"revision\": \"876f59d20c216a2bfddf825c3c6c1e3d\"\n },\n {\n \"url\": \"assets/webrtc_signaling_interaction_format.html-RSBHyl7A.js\",\n \"revision\": \"918d5f1ae8bc5965606da4fe6657addb\"\n },\n {\n \"url\": \"assets/webrtc_signaling_interaction_format.html-TjrAUdNc.js\",\n \"revision\": \"9c31ec603847531d41ccc4896636cae1\"\n },\n {\n \"url\": \"assets/xychartDiagram-f746c04c-ybRnTgNu.js\",\n \"revision\": \"c9a40377aaba0709a3d49984311ef337\"\n },\n {\n \"url\": \"assets/zltoolkit_source_code_study_notes.html-3EZc_Boy.js\",\n \"revision\": \"4c345c69468d9cf5cde7c497140f02a2\"\n },\n {\n \"url\": \"assets/zltoolkit_source_code_study_notes.html-vFvvg7fr.js\",\n \"revision\": \"0517fff48911aa21ff7f41c822b80900\"\n },\n {\n \"url\": \"assets/zltoolkit_source_code_study_notes.html-X78_rEP2.js\",\n \"revision\": \"3ac3a0c90dd936fec25c92ec2b6c93fb\"\n },\n {\n \"url\": \"assets/zltoolkit_source_code_study_notes.html-XyGnG3Jc.js\",\n \"revision\": \"dd92a80d45f838fcd5522250cc30101b\"\n },\n {\n \"url\": \"logo.svg\",\n \"revision\": \"6c6a0dc1bda8418aef497da1d078d96f\"\n },\n {\n \"url\": \"404.html\",\n \"revision\": \"ea7fb544e8ce5d174d4c384e79cc4372\"\n },\n {\n \"url\": \"guide/code/index.html\",\n \"revision\": \"56872cf62d57b715fc6efc1fe4112d8e\"\n },\n {\n \"url\": \"guide/code/oncetoken.html\",\n \"revision\": \"0d4c26a5ad7e8c0524674c0e17d58d63\"\n },\n {\n \"url\": \"guide/faq/index.html\",\n \"revision\": \"0f436e5aa9653eb250b9f5447defd93e\"\n },\n {\n \"url\": \"guide/faq/not_recommended_qq.html\",\n \"revision\": \"fa4d1373642bc79f17a11dc26640b613\"\n },\n {\n \"url\": \"guide/faq/rtmp_playback_compatibility_issues.html\",\n \"revision\": \"002069400253eab4e51387d57cf34c40\"\n },\n {\n \"url\": \"guide/index.html\",\n \"revision\": \"42416770527382219c7fcc4bda8dbd6c\"\n },\n {\n \"url\": \"guide/install/compilation_instructions_for_windows_version.html\",\n \"revision\": \"df5da81b607e932b81387398929cc8c2\"\n },\n {\n \"url\": \"guide/install/index.html\",\n \"revision\": \"0f833d9ce0f51829dc05e454dfc0d7ad\"\n },\n {\n \"url\": \"guide/install/install_zlmediakit_using_vcpkg.html\",\n \"revision\": \"f9b2fbb2a98428727416759de59e8207\"\n },\n {\n \"url\": \"guide/install/start.html\",\n \"revision\": \"6e9fcbbdf558a038a8e613c8e96a74fd\"\n },\n {\n \"url\": \"guide/media_server/config_file.html\",\n \"revision\": \"560f65a1ea815c9b8a0a0bb65100804b\"\n },\n {\n \"url\": \"guide/media_server/generate_ssl_self-signed_certificate_and_test.html\",\n \"revision\": \"1ee547284307eb48b0a35cf0aa6e3885\"\n },\n {\n \"url\": \"guide/media_server/how_to_enable_https_related_functions.html\",\n \"revision\": \"97e953ebc96421103031e6401fea94e7\"\n },\n {\n \"url\": \"guide/media_server/index.html\",\n \"revision\": \"dd2ae229453111341bbbd7563029e524\"\n },\n {\n \"url\": \"guide/media_server/on-demand_push_streaming.html\",\n \"revision\": \"40e8a216b12c5f3a401d943b058d0bfc\"\n },\n {\n \"url\": \"guide/media_server/on-demand_streaming.html\",\n \"revision\": \"22332e2fd843d9ef9ea7f83289a8d151\"\n },\n {\n \"url\": \"guide/media_server/play_url_rules.html\",\n \"revision\": \"792243ac484c72aea2248b6537f57e85\"\n },\n {\n \"url\": \"guide/media_server/playback_authentication.html\",\n \"revision\": \"a890b5a29d054ac069323500758afb26\"\n },\n {\n \"url\": \"guide/media_server/push_authentication.html\",\n \"revision\": \"9848ad34eb0eb0a1fe4a529e7053031d\"\n },\n {\n \"url\": \"guide/media_server/push_test.html\",\n \"revision\": \"c63fc43e6e886f6cc2cfa2a76d7797c3\"\n },\n {\n \"url\": \"guide/media_server/restful_api.html\",\n \"revision\": \"423eb4bacfeec432edeffcb2531e5ea9\"\n },\n {\n \"url\": \"guide/media_server/sequence_diagram.html\",\n \"revision\": \"aeb8b86d2dcb012f47dbaf55a0fa1112\"\n },\n {\n \"url\": \"guide/media_server/start_server.html\",\n \"revision\": \"8c74e3d2ef803b8a2da8d10a4a17c6ba\"\n },\n {\n \"url\": \"guide/media_server/web_hook_api.html\",\n \"revision\": \"6747754037335074cfad3d5120b9dd98\"\n },\n {\n \"url\": \"guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html\",\n \"revision\": \"84f080e717b1263bee48e047672f4e75\"\n },\n {\n \"url\": \"guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html\",\n \"revision\": \"aea7e3b71fce3ebf5d4e3c9c2abac519\"\n },\n {\n \"url\": \"guide/protocol/gb28181/index.html\",\n \"revision\": \"3ed79b38bb06e7294b8d14c20581fb2c\"\n },\n {\n \"url\": \"guide/protocol/gb28181/push_streaming.html\",\n \"revision\": \"3dd1c7dc072c9dbcd80f062cb551ccd3\"\n },\n {\n \"url\": \"guide/protocol/index.html\",\n \"revision\": \"7caf7827376da87a1ee4a2169f956027\"\n },\n {\n \"url\": \"guide/protocol/srt/index.html\",\n \"revision\": \"4310aa6b0ab5d6382250223ae834e274\"\n },\n {\n \"url\": \"guide/protocol/webrtc/index.html\",\n \"revision\": \"09bde7ab18c2127ef87d8c481b4ec966\"\n },\n {\n \"url\": \"guide/protocol/webrtc/webrtc_compilation_and_use.html\",\n \"revision\": \"fd676a728feb6ada510d41d9ca2d437e\"\n },\n {\n \"url\": \"guide/protocol/webrtc/webrtc_signaling_interaction_format.html\",\n \"revision\": \"1b8cf95e70bdfa94a7b7682ef3855049\"\n },\n {\n \"url\": \"guide/sdk/how_to_create_a_live_steam.html\",\n \"revision\": \"98fe0eca2a1163a29d35faa0ff9e03db\"\n },\n {\n \"url\": \"guide/sdk/index.html\",\n \"revision\": \"814351bfab5f07d09a4fb9db30ecd53e\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"8192fa7103a69bc736019b875c9cde41\"\n },\n {\n \"url\": \"more/collaborative_projects.html\",\n \"revision\": \"28dc714a537d8d0bc317d499aafb7c81\"\n },\n {\n \"url\": \"more/contact.html\",\n \"revision\": \"29c3b066f4c10371b7370648e5847dc8\"\n },\n {\n \"url\": \"more/index.html\",\n \"revision\": \"53bb8c7dbbfc0f9a8e86f2156e4293e3\"\n },\n {\n \"url\": \"more/license.html\",\n \"revision\": \"b3a440085e588e4120e4e0189ebd17c2\"\n },\n {\n \"url\": \"more/thanks.html\",\n \"revision\": \"7f302e1f72174b8ba640082674a1e774\"\n },\n {\n \"url\": \"more/use_cases.html\",\n \"revision\": \"34b234b26b304e2a51cf91294e0c8d10\"\n },\n {\n \"url\": \"reference/development_log/hls_high_performance_journey.html\",\n \"revision\": \"85d0d2f227775d5e5a199452441f01a5\"\n },\n {\n \"url\": \"reference/development_log/index.html\",\n \"revision\": \"2286beb533548d274593a98e4caaa0d7\"\n },\n {\n \"url\": \"reference/development_log/rtsp_performance_optimization.html\",\n \"revision\": \"632bc1f0166d4dbc46a8436998c777b3\"\n },\n {\n \"url\": \"reference/documents/exclusive_features.html\",\n \"revision\": \"a929bb7303301dfb81b14023ae8d4d09\"\n },\n {\n \"url\": \"reference/documents/high_concurrency_implementation_principle.html\",\n \"revision\": \"92ef14e7afcdf56e1811321ab3cae2b1\"\n },\n {\n \"url\": \"reference/documents/index.html\",\n \"revision\": \"2f506052bef78ca9957e885521dbf28c\"\n },\n {\n \"url\": \"reference/documents/introduction_to_streaming_media_related_technologies.html\",\n \"revision\": \"fe13eaa66650c43df95ee69b3f67128f\"\n },\n {\n \"url\": \"reference/documents/rtsp_push_process.html\",\n \"revision\": \"1dea3eb2afb9617aab10b1fd9d1d3501\"\n },\n {\n \"url\": \"reference/documents/the_nature_of_live_broadcast_delay.html\",\n \"revision\": \"03bc4c484f930e8772f4e2ae1dc6b173\"\n },\n {\n \"url\": \"reference/index.html\",\n \"revision\": \"99862d22757555b26e91e2c9966802b2\"\n },\n {\n \"url\": \"reference/resources/dependency.html\",\n \"revision\": \"e71a3acbf12758a59cb5292fdb4fb143\"\n },\n {\n \"url\": \"reference/resources/index.html\",\n \"revision\": \"57e324bb35f2b6dced8e6438290cd21f\"\n },\n {\n \"url\": \"reference/resources/rtmp_support_for_h265_and_opus.html\",\n \"revision\": \"bf2d11cc104fed79b318ae16fbd125ff\"\n },\n {\n \"url\": \"reference/resources/video_conferencing_related_resources.html\",\n \"revision\": \"5208b373d2330e3d6783239ce2d7baeb\"\n },\n {\n \"url\": \"reference/resources/zltoolkit_source_code_study_notes.html\",\n \"revision\": \"103e1e99681e492e5a740f54ef955676\"\n },\n {\n \"url\": \"reference/test/benchmark.html\",\n \"revision\": \"5114756aafcc7104c630c904849e77e6\"\n },\n {\n \"url\": \"reference/test/delay_test.html\",\n \"revision\": \"af312f7053dc6d486b4f321960504e32\"\n },\n {\n \"url\": \"reference/test/how_to_test_delay.html\",\n \"revision\": \"3e705a1f9f05ed43710360207c2882ee\"\n },\n {\n \"url\": \"reference/test/index.html\",\n \"revision\": \"3a746417a474beeeb8b684cc28629791\"\n },\n {\n \"url\": \"reference/test/online_test.html\",\n \"revision\": \"85134eddb2ae04b7cc095bd216291957\"\n },\n {\n \"url\": \"reference/test/performance_testing.html\",\n \"revision\": \"c75e554267a6df8a2d62d3fd6114d627\"\n },\n {\n \"url\": \"reference/test/rtmp_pull_stream_performance_test.html\",\n \"revision\": \"0e0c5b242ded71e0457339ac3674e3da\"\n },\n {\n \"url\": \"reference/test/rtmp_push_stream_performance_test.html\",\n \"revision\": \"9408d967b1e1568fc433739d7a98d70f\"\n },\n {\n \"url\": \"reference/test/rtsp_pull_stream_performance_test.html\",\n \"revision\": \"1b13bc651bff6d91b12b310d3c1b89f6\"\n },\n {\n \"url\": \"reference/test/rtsp_push_stream_performance_test.html\",\n \"revision\": \"751031f8f26c48cc4dcaf75e0198ac97\"\n },\n {\n \"url\": \"tutorial/index.html\",\n \"revision\": \"eda7253da7b5b7425ef3528424d579fc\"\n },\n {\n \"url\": \"zh/guide/code/index.html\",\n \"revision\": \"0e56c1490a97c0bb186552b74b39d7f2\"\n },\n {\n \"url\": \"zh/guide/code/oncetoken.html\",\n \"revision\": \"7573fa68d78550947c82a7fb928c993f\"\n },\n {\n \"url\": \"zh/guide/faq/index.html\",\n \"revision\": \"862fd63459f52c689cb6167b71f5e7b8\"\n },\n {\n \"url\": \"zh/guide/faq/not_recommended_qq.html\",\n \"revision\": \"181012f95e7a9bce1a06e3aac1e2173f\"\n },\n {\n \"url\": \"zh/guide/faq/rtmp_playback_compatibility_issues.html\",\n \"revision\": \"b776e2783e8e16eda641c0d476ef61a3\"\n },\n {\n \"url\": \"zh/guide/index.html\",\n \"revision\": \"8c63f99ffb605bf55adfca8b69d4c58c\"\n },\n {\n \"url\": \"zh/guide/install/compilation_instructions_for_windows_version.html\",\n \"revision\": \"a622a0af5b6ca8ea81b9316edcd3299f\"\n },\n {\n \"url\": \"zh/guide/install/index.html\",\n \"revision\": \"c1b9835d2ae8120dd8ec7a208348c50b\"\n },\n {\n \"url\": \"zh/guide/install/install_zlmediakit_using_vcpkg.html\",\n \"revision\": \"c962d4fb8d79368086786a6bc85be2d4\"\n },\n {\n \"url\": \"zh/guide/install/start.html\",\n \"revision\": \"42c3f5968011e2de0ceff041dc2876be\"\n },\n {\n \"url\": \"zh/guide/media_server/config_file.html\",\n \"revision\": \"129b1d608c253ec054036fc3458282e4\"\n },\n {\n \"url\": \"zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html\",\n \"revision\": \"f0fe09475f0f98809d12b5818daa500c\"\n },\n {\n \"url\": \"zh/guide/media_server/how_to_enable_https_related_functions.html\",\n \"revision\": \"f278e7b25e7e4431ea1ad795a385fce8\"\n },\n {\n \"url\": \"zh/guide/media_server/index.html\",\n \"revision\": \"32ee3fe4c6ca35f3041e589b7ef736f9\"\n },\n {\n \"url\": \"zh/guide/media_server/on-demand_push_streaming.html\",\n \"revision\": \"aa52301f414b1cd177ef43569bda3ad1\"\n },\n {\n \"url\": \"zh/guide/media_server/on-demand_streaming.html\",\n \"revision\": \"8d84ee8fa2c0ca461c11b5e24928cf04\"\n },\n {\n \"url\": \"zh/guide/media_server/play_url_rules.html\",\n \"revision\": \"85ca8a560e1bbd56ad9ad3e7875ea53b\"\n },\n {\n \"url\": \"zh/guide/media_server/playback_authentication.html\",\n \"revision\": \"c69f615065f63362a797acb0dacb9069\"\n },\n {\n \"url\": \"zh/guide/media_server/push_authentication.html\",\n \"revision\": \"1b0c41770efb92f23ec4e0d0dc6b9b96\"\n },\n {\n \"url\": \"zh/guide/media_server/push_test.html\",\n \"revision\": \"d6341f309f0ea5e87e6258404bbc0761\"\n },\n {\n \"url\": \"zh/guide/media_server/restful_api.html\",\n \"revision\": \"2eee68391a6f35efbe5eb405183ee538\"\n },\n {\n \"url\": \"zh/guide/media_server/sequence_diagram.html\",\n \"revision\": \"2b10ebcaa69fd87116a4509ec62e7598\"\n },\n {\n \"url\": \"zh/guide/media_server/start_server.html\",\n \"revision\": \"9a685e8f0ff89fa1a341c881cc5a8fef\"\n },\n {\n \"url\": \"zh/guide/media_server/web_hook_api.html\",\n \"revision\": \"7da6a77ebec81ef7efd44b744084cc8c\"\n },\n {\n \"url\": \"zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html\",\n \"revision\": \"2f94487e20a9ac75bc4676e1c458f088\"\n },\n {\n \"url\": \"zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html\",\n \"revision\": \"e4babbd33f4b2388939917a20a160979\"\n },\n {\n \"url\": \"zh/guide/protocol/gb28181/index.html\",\n \"revision\": \"799661d145e3568671bb8f5e36cfefab\"\n },\n {\n \"url\": \"zh/guide/protocol/gb28181/push_streaming.html\",\n \"revision\": \"0b4dbc5e94eb1f461305a1e88ad53f31\"\n },\n {\n \"url\": \"zh/guide/protocol/index.html\",\n \"revision\": \"6bd6bd68d30b2a90cb23f64f9aed4729\"\n },\n {\n \"url\": \"zh/guide/protocol/srt/index.html\",\n \"revision\": \"03ede84d77ccce9158e73f7f79957b16\"\n },\n {\n \"url\": \"zh/guide/protocol/webrtc/index.html\",\n \"revision\": \"964681032161fb64fac8e25fa36656e2\"\n },\n {\n \"url\": \"zh/guide/protocol/webrtc/webrtc_compilation_and_use.html\",\n \"revision\": \"5bf18149ace82e55cefefa7b4756d7da\"\n },\n {\n \"url\": \"zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html\",\n \"revision\": \"a7f76dd611122577ec9564a473d19c65\"\n },\n {\n \"url\": \"zh/guide/sdk/how_to_create_a_live_steam.html\",\n \"revision\": \"7a63272ddf63d48f69ee5e469a1d099d\"\n },\n {\n \"url\": \"zh/guide/sdk/index.html\",\n \"revision\": \"48398222a328599e6cc943a2bdbd9484\"\n },\n {\n \"url\": \"zh/index.html\",\n \"revision\": \"760dc356ed1d8c01a8a66994444a2731\"\n },\n {\n \"url\": \"zh/more/collaborative_projects.html\",\n \"revision\": \"7fa3dd446e43e97a1f3327d9b228952a\"\n },\n {\n \"url\": \"zh/more/contact.html\",\n \"revision\": \"569fb40486cf5031914d4a7eb119c646\"\n },\n {\n \"url\": \"zh/more/index.html\",\n \"revision\": \"92e95c2afff72259988e835fa3564e37\"\n },\n {\n \"url\": \"zh/more/license.html\",\n \"revision\": \"185cc5466be385d384ecc65ec8a08523\"\n },\n {\n \"url\": \"zh/more/thanks.html\",\n \"revision\": \"3df35f19af143fa6cdbf190cee7e0c0f\"\n },\n {\n \"url\": \"zh/more/use_cases.html\",\n \"revision\": \"e073b14ce486b5b1eacd20c193007614\"\n },\n {\n \"url\": \"zh/reference/development_log/hls_high_performance_journey.html\",\n \"revision\": \"e5cdb72c82196528cfeba2ad14ef5c7d\"\n },\n {\n \"url\": \"zh/reference/development_log/index.html\",\n \"revision\": \"b7bd6dd97010aefb5d64bb1d34cbad86\"\n },\n {\n \"url\": \"zh/reference/development_log/rtsp_performance_optimization.html\",\n \"revision\": \"b5f6a2cb48f0547a27a98c9482ffe5ea\"\n },\n {\n \"url\": \"zh/reference/documents/exclusive_features.html\",\n \"revision\": \"5e565d8ef9731781ea08678386155608\"\n },\n {\n \"url\": \"zh/reference/documents/high_concurrency_implementation_principle.html\",\n \"revision\": \"21ea8706194046c5b24e3d54b925d66c\"\n },\n {\n \"url\": \"zh/reference/documents/index.html\",\n \"revision\": \"1845dab3f08e71a40fd098301610c25d\"\n },\n {\n \"url\": \"zh/reference/documents/introduction_to_streaming_media_related_technologies.html\",\n \"revision\": \"2360a4fe72cb935117db443c80431cc8\"\n },\n {\n \"url\": \"zh/reference/documents/rtsp_push_process.html\",\n \"revision\": \"4eb52415f8800bca7fe41c88e6d684b0\"\n },\n {\n \"url\": \"zh/reference/documents/the_nature_of_live_broadcast_delay.html\",\n \"revision\": \"39266a2323cf8905324c5a4da39aaf13\"\n },\n {\n \"url\": \"zh/reference/index.html\",\n \"revision\": \"8c4154abec3f0955cb93c9347886ae21\"\n },\n {\n \"url\": \"zh/reference/resources/dependency.html\",\n \"revision\": \"fd23cb7c23d5d10d39a3a0af37a9ab95\"\n },\n {\n \"url\": \"zh/reference/resources/index.html\",\n \"revision\": \"b95748c34d7d9777907fea68f5208b44\"\n },\n {\n \"url\": \"zh/reference/resources/rtmp_support_for_h265_and_opus.html\",\n \"revision\": \"593c4a5d5a49bf4a2748212d413d960b\"\n },\n {\n \"url\": \"zh/reference/resources/video_conferencing_related_resources.html\",\n \"revision\": \"a00fad2175fdae47963139c009983908\"\n },\n {\n \"url\": \"zh/reference/resources/zltoolkit_source_code_study_notes.html\",\n \"revision\": \"142248e290e09031874e8b44f57f272c\"\n },\n {\n \"url\": \"zh/reference/test/benchmark.html\",\n \"revision\": \"df669f5dbfdf4aae8c6516d2fdbbb94a\"\n },\n {\n \"url\": \"zh/reference/test/delay_test.html\",\n \"revision\": \"eccc3c4d558ca7b191992d6e4d837a38\"\n },\n {\n \"url\": \"zh/reference/test/how_to_test_delay.html\",\n \"revision\": \"3031b2f5c1e8edf4c092c3b5194c3573\"\n },\n {\n \"url\": \"zh/reference/test/index.html\",\n \"revision\": \"ccda5412e5c827bd6118628cd5c97964\"\n },\n {\n \"url\": \"zh/reference/test/online_test.html\",\n \"revision\": \"69ea1c161466b96ca3406e7c62e1d80f\"\n },\n {\n \"url\": \"zh/reference/test/performance_testing.html\",\n \"revision\": \"b47d6036741e2ecca2363fa19692c3ca\"\n },\n {\n \"url\": \"zh/reference/test/rtmp_pull_stream_performance_test.html\",\n \"revision\": \"1010f64704f401ce4390b514cae91e23\"\n },\n {\n \"url\": \"zh/reference/test/rtmp_push_stream_performance_test.html\",\n \"revision\": \"c60ffd688f38a01565d6075bb1f9b31e\"\n },\n {\n \"url\": \"zh/reference/test/rtsp_pull_stream_performance_test.html\",\n \"revision\": \"587562b6c6a09f1aecda123e2e3f0fd4\"\n },\n {\n \"url\": \"zh/reference/test/rtsp_push_stream_performance_test.html\",\n \"revision\": \"21066a9bf80c987977738deb078a5501\"\n },\n {\n \"url\": \"zh/tutorial/index.html\",\n \"revision\": \"81115618e46f6fa9ddcf6c85e5600747\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-114x114.png\",\n \"revision\": \"b39af39658e13fd99763e10b9991ccf8\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-120x120.png\",\n \"revision\": \"4c7de55a0bfef43bc0eb52905af33cf6\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-152x152.png\",\n \"revision\": \"a23249a982dd7d97bc38e851acfc1ec8\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-180x180.png\",\n \"revision\": \"153e47772d362c174bee9f00b8090bf1\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-57x57.png\",\n \"revision\": \"04feca43d959ca0f3b6973782c9fa134\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-60x60.png\",\n \"revision\": \"e7f1b90b537806adb676677c3dead66d\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-72x72.png\",\n \"revision\": \"604eca13e9aa44f2f1d76778107e5d64\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-76x76.png\",\n \"revision\": \"1698d7cd9b2cc90634013d3d62d23736\"\n },\n {\n \"url\": \"assets/icon/apple-touch-icon-96x96.png\",\n \"revision\": \"a361212595e0c34b5d3d64084864d3e9\"\n },\n {\n \"url\": \"assets/icon/chrome-192.png\",\n \"revision\": \"440ff33effa9f895b67156ed57eac1c1\"\n },\n {\n \"url\": \"assets/icon/favicon-16x16.png\",\n \"revision\": \"98c8fdb75f1f1891b830dd70be7780c5\"\n },\n {\n \"url\": \"assets/icon/favicon-32x32.png\",\n \"revision\": \"a0c87ba0608aecffe0d0182415770766\"\n },\n {\n \"url\": \"assets/icon/guide-maskable.png\",\n \"revision\": \"99cc77cf2bc792acd6b847b5e3e151e9\"\n },\n {\n \"url\": \"assets/icon/ms-icon-144.png\",\n \"revision\": \"a3e06505f5a643a43d7f559a53abd7be\"\n },\n {\n \"url\": \"images/gb28181_push_streaming_1.png\",\n \"revision\": \"6283957dbf3a609f861ffb40054c8ef4\"\n },\n {\n \"url\": \"images/gb28181_push_streaming_2.png\",\n \"revision\": \"eac2229bd7d6302dd56c80924378f4f3\"\n },\n {\n \"url\": \"images/gb28181_push_streaming_3.png\",\n \"revision\": \"d9c25e9d693382a8fb713baa4865c794\"\n },\n {\n \"url\": \"images/gb28181_push_streaming_4.png\",\n \"revision\": \"f3c6584aae2a27866166c43f244c553b\"\n },\n {\n \"url\": \"images/generate_ssl_self-signed_certificate_and_test.webp\",\n \"revision\": \"c893dba3185a1e863cf175c2698c9bf9\"\n },\n {\n \"url\": \"images/how_to_create_a_live_stream.png\",\n \"revision\": \"7f11ba4af262d0e2a00c7718e6c8b180\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_1.png\",\n \"revision\": \"e1ffb707a47c1664161efc7c608fda24\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_10.png\",\n \"revision\": \"5e4cafeb5b4f54f57d76f4dcd632c377\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_2.png\",\n \"revision\": \"fb3c5027a4bef03f174d86f5d4cf8b32\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_3.png\",\n \"revision\": \"ae7f42d52b58c80e0265eeb40be94a9d\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_4.png\",\n \"revision\": \"536b0f9116a4fa6d0f155032886068d3\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_5.png\",\n \"revision\": \"d77ab1e34df68663332e451f59d68203\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_6.png\",\n \"revision\": \"5dd9c32672a86dbe6c07bbe58fe44522\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_7.png\",\n \"revision\": \"e6cf4753d43bc6251742ea3269463c99\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_8.png\",\n \"revision\": \"fe5c53d153ebb88d5b10ca979ce62a1b\"\n },\n {\n \"url\": \"images/how_to_enable_https_related_functions_zh_9.png\",\n \"revision\": \"1aa87003a965b710adf9139645171cb6\"\n },\n {\n \"url\": \"images/how_to_use_device_id_as_stream_id_1.png\",\n \"revision\": \"5d24bb7c4f502d40c38313bb9b1234fe\"\n },\n {\n \"url\": \"images/how_to_use_device_id_as_stream_id_2.png\",\n \"revision\": \"7f293641cf8de63af03ff846a2be943f\"\n },\n {\n \"url\": \"images/how_to_use_device_id_as_stream_id_4.png\",\n \"revision\": \"8d3f6cced326d24e5cb940c85209d47a\"\n },\n {\n \"url\": \"images/how_to_use_device_id_as_stream_id_5.png\",\n \"revision\": \"7f293641cf8de63af03ff846a2be943f\"\n },\n {\n \"url\": \"images/how_to_use_device_id_as_stream_id_6.png\",\n \"revision\": \"b46e6e52751c33cca5b2f768ceae92d2\"\n },\n {\n \"url\": \"images/install_zlmediakit_using_vcpkg_1.png\",\n \"revision\": \"549087a1bb82ce36aa774ce725a9eeea\"\n },\n {\n \"url\": \"images/install_zlmediakit_using_vcpkg_2.png\",\n \"revision\": \"8368b41cc655599a201e5818750225d1\"\n },\n {\n \"url\": \"images/on-demand_push_streaming_zh.png\",\n \"revision\": \"1bb65d163eb9008b383a2d04255c9507\"\n },\n {\n \"url\": \"images/on-demand_streaming_zh.png\",\n \"revision\": \"16dc127a26325cf06dac7aedd115d57e\"\n },\n {\n \"url\": \"images/playback_authentication_zh.png\",\n \"revision\": \"eba681073fa4dd2f6663eeb1c7cbbf7a\"\n },\n {\n \"url\": \"images/push_authentication_zh.png\",\n \"revision\": \"5b1e13cc9369abf66481d2f4cc1dccb5\"\n },\n {\n \"url\": \"images/push_test.png\",\n \"revision\": \"88ec411cafd56da1c27bb958e05c7bda\"\n },\n {\n \"url\": \"images/start_server_1.png\",\n \"revision\": \"46b863cc78aaebb1a0d5d2b824a45519\"\n },\n {\n \"url\": \"images/start_server_2.png\",\n \"revision\": \"29d3057d8f9dd51a5e3a4589a71d3e7e\"\n },\n {\n \"url\": \"images/start_server_3.png\",\n \"revision\": \"3088ed2c7996882f9272a59a8e00f8cf\"\n },\n {\n \"url\": \"images/vs_code_zh.png\",\n \"revision\": \"a374f77503296c66576dcf3641283791\"\n },\n {\n \"url\": \"logo.png\",\n \"revision\": \"32ddfa5715059731ae893ec92fca0311\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches"],"mappings":"0nBAqBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACP,IAGFC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,oCAEd,CACED,IAAO,+EACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,kDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,oBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,gFACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,0DACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,2EACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,4CACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sEACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,uCACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,sBACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,wEACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,mFACPC,SAAY,oCAEd,CACED,IAAO,gDACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,6DACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,qCACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,2DACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,yDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,iDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA"} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index f2b8f64..8928272 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,3 +1,3 @@ -https://docs.zlmediakit.com/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/more/collaborative_projects.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/more/contact.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/more/license.html2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/more/thanks.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/more/use_cases.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/tutorial/2023-12-06T11:01:53.000Zdailyhttps://docs.zlmediakit.com/zh/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/code/2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/guide/code/oncetoken.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/faq/2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/guide/faq/not_recommended_qq.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/faq/rtmp_playback_compatibility_issues.html2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/guide/install/2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/guide/install/compilation_instructions_for_windows_version.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/install/install_zlmediakit_using_vcpkg.html2023-12-06T10:57:32.000Zdailyhttps://docs.zlmediakit.com/guide/install/start.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/config_file.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/generate_ssl_self-signed_certificate_and_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/how_to_enable_https_related_functions.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/on-demand_push_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/on-demand_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/play_url_rules.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/playback_authentication.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/push_authentication.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/push_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/restful_api.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/sequence_diagram.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/start_server.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/web_hook_api.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/sdk/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/sdk/how_to_create_a_live_steam.html2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/reference/development_log/2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/reference/development_log/hls_high_performance_journey.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/development_log/rtsp_performance_optimization.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/documents/2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/reference/documents/exclusive_features.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/documents/high_concurrency_implementation_principle.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/documents/introduction_to_streaming_media_related_technologies.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/documents/rtsp_push_process.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/documents/the_nature_of_live_broadcast_delay.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/resources/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/resources/dependency.html2023-12-13T12:58:32.000Zdailyhttps://docs.zlmediakit.com/reference/resources/rtmp_support_for_h265_and_opus.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/resources/video_conferencing_related_resources.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/resources/zltoolkit_source_code_study_notes.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/2023-11-19T21:04:22.000Zdailyhttps://docs.zlmediakit.com/reference/test/benchmark.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/delay_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/how_to_test_delay.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/online_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/performance_testing.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/rtmp_pull_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/rtmp_push_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/rtsp_pull_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/rtsp_push_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/more/collaborative_projects.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/more/contact.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/more/license.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/more/thanks.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/more/use_cases.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/tutorial/2023-12-06T10:57:19.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/gb28181/push_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/srt/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/webrtc/webrtc_compilation_and_use.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/webrtc/webrtc_signaling_interaction_format.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/code/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/guide/code/oncetoken.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/faq/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/guide/faq/not_recommended_qq.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/faq/rtmp_playback_compatibility_issues.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/install/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/guide/install/compilation_instructions_for_windows_version.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/install/install_zlmediakit_using_vcpkg.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/install/start.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/config_file.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/how_to_enable_https_related_functions.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/on-demand_push_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/on-demand_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/play_url_rules.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/playback_authentication.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/push_authentication.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/push_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/restful_api.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/sequence_diagram.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/start_server.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/web_hook_api.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/sdk/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/sdk/how_to_create_a_live_steam.html2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/reference/development_log/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/reference/development_log/hls_high_performance_journey.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/development_log/rtsp_performance_optimization.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/exclusive_features.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/high_concurrency_implementation_principle.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/introduction_to_streaming_media_related_technologies.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/rtsp_push_process.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/the_nature_of_live_broadcast_delay.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/resources/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/resources/dependency.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/resources/rtmp_support_for_h265_and_opus.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/resources/video_conferencing_related_resources.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/resources/zltoolkit_source_code_study_notes.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/benchmark.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/delay_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/how_to_test_delay.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/online_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/performance_testing.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/rtmp_pull_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/rtmp_push_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/rtsp_pull_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/rtsp_push_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/gb28181/push_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/srt/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/webrtc/webrtc_compilation_and_use.html2023-12-06T10:57:19.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html2023-12-05T08:36:26.000Zdaily \ No newline at end of file +https://docs.zlmediakit.com/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/more/collaborative_projects.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/more/contact.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/more/license.html2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/more/thanks.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/more/use_cases.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/tutorial/2023-12-06T11:01:53.000Zdailyhttps://docs.zlmediakit.com/zh/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/code/2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/guide/code/oncetoken.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/faq/2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/guide/faq/not_recommended_qq.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/faq/rtmp_playback_compatibility_issues.html2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/guide/install/2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/guide/install/compilation_instructions_for_windows_version.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/install/install_zlmediakit_using_vcpkg.html2023-12-06T10:57:32.000Zdailyhttps://docs.zlmediakit.com/guide/install/start.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/config_file.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/generate_ssl_self-signed_certificate_and_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/how_to_enable_https_related_functions.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/on-demand_push_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/on-demand_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/play_url_rules.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/playback_authentication.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/push_authentication.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/push_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/restful_api.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/sequence_diagram.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/start_server.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/media_server/web_hook_api.html2024-01-09T10:52:06.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/sdk/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/sdk/how_to_create_a_live_steam.html2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/reference/development_log/2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/reference/development_log/hls_high_performance_journey.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/development_log/rtsp_performance_optimization.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/documents/2023-11-19T19:55:59.000Zdailyhttps://docs.zlmediakit.com/reference/documents/exclusive_features.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/documents/high_concurrency_implementation_principle.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/documents/introduction_to_streaming_media_related_technologies.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/documents/rtsp_push_process.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/documents/the_nature_of_live_broadcast_delay.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/resources/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/resources/dependency.html2023-12-13T12:58:32.000Zdailyhttps://docs.zlmediakit.com/reference/resources/rtmp_support_for_h265_and_opus.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/resources/video_conferencing_related_resources.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/resources/zltoolkit_source_code_study_notes.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/2023-11-19T21:04:22.000Zdailyhttps://docs.zlmediakit.com/reference/test/benchmark.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/delay_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/how_to_test_delay.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/online_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/performance_testing.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/rtmp_pull_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/rtmp_push_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/rtsp_pull_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/reference/test/rtsp_push_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/more/collaborative_projects.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/more/contact.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/more/license.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/more/thanks.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/more/use_cases.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/tutorial/2023-12-06T10:57:19.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/gb28181/push_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/srt/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/webrtc/webrtc_compilation_and_use.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/guide/protocol/webrtc/webrtc_signaling_interaction_format.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/code/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/guide/code/oncetoken.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/faq/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/guide/faq/not_recommended_qq.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/faq/rtmp_playback_compatibility_issues.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/install/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/guide/install/compilation_instructions_for_windows_version.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/install/install_zlmediakit_using_vcpkg.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/install/start.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/config_file.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/how_to_enable_https_related_functions.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/on-demand_push_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/on-demand_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/play_url_rules.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/playback_authentication.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/push_authentication.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/push_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/restful_api.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/sequence_diagram.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/start_server.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/media_server/web_hook_api.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/sdk/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/sdk/how_to_create_a_live_steam.html2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/reference/development_log/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/reference/development_log/hls_high_performance_journey.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/development_log/rtsp_performance_optimization.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/exclusive_features.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/high_concurrency_implementation_principle.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/introduction_to_streaming_media_related_technologies.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/rtsp_push_process.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/documents/the_nature_of_live_broadcast_delay.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/resources/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/resources/dependency.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/resources/rtmp_support_for_h265_and_opus.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/resources/video_conferencing_related_resources.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/resources/zltoolkit_source_code_study_notes.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/2023-11-19T14:25:10.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/benchmark.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/delay_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/how_to_test_delay.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/online_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/performance_testing.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/rtmp_pull_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/rtmp_push_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/rtsp_pull_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/reference/test/rtsp_push_stream_performance_test.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/gb28181/push_streaming.html2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/srt/2023-12-05T08:36:26.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/webrtc/webrtc_compilation_and_use.html2023-12-06T10:57:19.000Zdailyhttps://docs.zlmediakit.com/zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html2023-12-05T08:36:26.000Zdaily \ No newline at end of file diff --git a/tutorial/index.html b/tutorial/index.html index c9619be..a316a2c 100644 --- a/tutorial/index.html +++ b/tutorial/index.html @@ -30,7 +30,7 @@ Tutorial | ZLMediaKit - + @@ -104,7 +104,7 @@

    Test programs starting with test_

    Related codes are under ZLMediaKit/tests directory, and you can start the test process by reading codes.

    Stream Testing

    Please refer to Stream Test.

    - +

    Test programs starting with test_

    Related codes are under ZLMediaKit/tests directory, and you can start the test process by reading codes.

    Stream Testing

    Please refer to Stream Test.

    + diff --git a/zh/guide/code/index.html b/zh/guide/code/index.html index a517817..04c7ac8 100644 --- a/zh/guide/code/index.html +++ b/zh/guide/code/index.html @@ -30,11 +30,11 @@ 代码解读 | ZLMediaKit - + - - + + diff --git a/zh/guide/code/oncetoken.html b/zh/guide/code/oncetoken.html index 7aa4d2b..8de269f 100644 --- a/zh/guide/code/oncetoken.html +++ b/zh/guide/code/oncetoken.html @@ -30,7 +30,7 @@ 代码篇之onceToken | ZLMediaKit - + @@ -90,7 +90,7 @@ //后续代码省略 } -
    • 4、这个对象取名源自 pthread_once 以及 ios 下的 dispatch_once。
    - +
    • 4、这个对象取名源自 pthread_once 以及 ios 下的 dispatch_once。
    + diff --git a/zh/guide/faq/index.html b/zh/guide/faq/index.html index fce25e6..75659a3 100644 --- a/zh/guide/faq/index.html +++ b/zh/guide/faq/index.html @@ -30,11 +30,11 @@ 常见问题 | ZLMediaKit - + - - + + diff --git a/zh/guide/faq/not_recommended_qq.html b/zh/guide/faq/not_recommended_qq.html index 4497b9e..0edfbd2 100644 --- a/zh/guide/faq/not_recommended_qq.html +++ b/zh/guide/faq/not_recommended_qq.html @@ -30,11 +30,11 @@ 为什么不建议QQ私聊咨询问题? | ZLMediaKit - + -
    跳至主要內容

    为什么不建议QQ私聊咨询问题?

    ZLMediaKit小于 1 分钟

    为什么不建议私聊

    • 1、QQ 私聊不好追溯和整理,很难形成文档,很多重复问题, 不能对项目有所益处。

    • 2、QQ 沟通效率其实很低下,虽然能回答及时,但是提问门槛太低,提问者不够重视,往往需要回答者循环渐进引导才能大体把问题说清楚,这样很浪费时间。

    • 3、QQ 私聊消息不定时,很容易中断回答者当前工作进程,而 github issue 可以统一处理,这样更节约时间。

    • 4、QQ 私聊其他用户不能参与回答,别人也看不到问题和答案,不利于思维发散和知识传播。

    一般只接受以下无私交友谊关系人员的私聊技术咨询

    • 1、提交过 pr 或其他形式的代码
    • 2、开源过基于 zlmediakit 的项目
    • 3、在 qq 群或 issue 上热心解答过相关技术问题
    • 4、分享过自写的 zlmediakit 相关文档
    • 5、赞助过 zlmediakit 项目或本人
    • 6、做过一切对 zlmediakit 发展和推广有贡献的事情
    - +
    跳至主要內容

    为什么不建议QQ私聊咨询问题?

    ZLMediaKit小于 1 分钟

    为什么不建议私聊

    • 1、QQ 私聊不好追溯和整理,很难形成文档,很多重复问题, 不能对项目有所益处。

    • 2、QQ 沟通效率其实很低下,虽然能回答及时,但是提问门槛太低,提问者不够重视,往往需要回答者循环渐进引导才能大体把问题说清楚,这样很浪费时间。

    • 3、QQ 私聊消息不定时,很容易中断回答者当前工作进程,而 github issue 可以统一处理,这样更节约时间。

    • 4、QQ 私聊其他用户不能参与回答,别人也看不到问题和答案,不利于思维发散和知识传播。

    一般只接受以下无私交友谊关系人员的私聊技术咨询

    • 1、提交过 pr 或其他形式的代码
    • 2、开源过基于 zlmediakit 的项目
    • 3、在 qq 群或 issue 上热心解答过相关技术问题
    • 4、分享过自写的 zlmediakit 相关文档
    • 5、赞助过 zlmediakit 项目或本人
    • 6、做过一切对 zlmediakit 发展和推广有贡献的事情
    + diff --git a/zh/guide/faq/rtmp_playback_compatibility_issues.html b/zh/guide/faq/rtmp_playback_compatibility_issues.html index 61d8c00..c7de954 100644 --- a/zh/guide/faq/rtmp_playback_compatibility_issues.html +++ b/zh/guide/faq/rtmp_playback_compatibility_issues.html @@ -30,11 +30,11 @@ RTMP播放兼容性问题 | ZLMediaKit - + -
    跳至主要內容

    RTMP播放兼容性问题

    ZLMediaKit小于 1 分钟

    一般来说 rtmp 的规范是 先发送 metadata ,然后发送 config 帧,然后发送关键帧 然后是普通帧

    config 帧收到后就能初始化解码器了

    但是有些流不太一样,并没有收到视频的 config 帧就收到其他帧了

    这个时候视频 Track 并没创建和初始化

    初步怀疑是 nginx 的 rtmp 服务器兼容性不好

    zlm 的推流器会严格按照先发送 metadata ,然后发送 config 帧,然后发送关键帧 然后是普通帧的流程来做

    也会缓存所有的 config 帧

    ffplay 能播放成功是因为它是根据数据量和时间来判断播放成功

    只要数据量达到一定量或者时间达到一定时间 就会触发播放成功的事件

    这样做的好处是 播放成功率高 坏处是打开视频时间长

    - +
    跳至主要內容

    RTMP播放兼容性问题

    ZLMediaKit小于 1 分钟

    一般来说 rtmp 的规范是 先发送 metadata ,然后发送 config 帧,然后发送关键帧 然后是普通帧

    config 帧收到后就能初始化解码器了

    但是有些流不太一样,并没有收到视频的 config 帧就收到其他帧了

    这个时候视频 Track 并没创建和初始化

    初步怀疑是 nginx 的 rtmp 服务器兼容性不好

    zlm 的推流器会严格按照先发送 metadata ,然后发送 config 帧,然后发送关键帧 然后是普通帧的流程来做

    也会缓存所有的 config 帧

    ffplay 能播放成功是因为它是根据数据量和时间来判断播放成功

    只要数据量达到一定量或者时间达到一定时间 就会触发播放成功的事件

    这样做的好处是 播放成功率高 坏处是打开视频时间长

    + diff --git a/zh/guide/index.html b/zh/guide/index.html index ecd21f7..f4ab447 100644 --- a/zh/guide/index.html +++ b/zh/guide/index.html @@ -30,14 +30,14 @@ 指南 | ZLMediaKit - +
    跳至主要內容

    指南

    ZLMediaKit大约 6 分钟

    一个基于 C++11 的高性能运营级流媒体服务框架

    badgeopen in new windowbadgeopen in new windowbadgeopen in new windowbadgeopen in new window

    badgeopen in new windowbadgeopen in new windowbadgeopen in new windowbadgeopen in new window

    badgeopen in new windowbadgeopen in new window

    项目特点

    • 基于 C++11 开发,避免使用裸指针,代码稳定可靠,性能优越。
    • 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支持协议互转。
    • 使用多路复用/多线程/异步网络 IO 模式开发,并发性能优越,支持海量客户端连接。
    • 代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。
    • 支持 linux、macos、ios、android、windows 全平台。
    • 支持 x86、arm、risc-v、mips、龙芯、申威等指令集平台。
    • 支持画面秒开、极低延时(500 毫秒内,最低可达 100 毫秒)。
    • 提供完善的标准C APIopen in new window,可以作 SDK 用,或供其他语言调用。
    • 提供完整的MediaServeropen in new window服务器,可以免开发直接部署为商用服务器。
    • 提供完善的restful api以及web hook,支持丰富的业务逻辑。
    • 打通了视频监控协议栈与直播协议栈,对 RTSP/RTMP 支持都很完善。
    • 全面支持 H265/H264/AAC/G711/OPUS。
    • 功能完善,支持集群、按需转协议、按需推拉流、先播后推、断连续推等功能。
    • 极致性能,单机 10W 级别播放器,100Gb/s 级别 io 带宽能力。
    • 极致体验,独家特性
    • 谁在使用 zlmediakit?open in new window
    • 全面支持 ipv6 网络

    项目定位

    • 移动嵌入式跨平台流媒体解决方案。
    • 商用级流媒体服务器。
    • 网络编程二次开发 SDK。

    功能清单

    功能一览

    • RTSP[S]

      • RTSP[S] 服务器,支持 RTMP/MP4/HLS 转 RTSP[S] ,支持亚马逊 echo show 这样的设备
      • RTSP[S] 播放器,支持 RTSP 代理,支持生成静音音频
      • RTSP[S] 推流客户端与服务器
      • 支持 rtp over udp rtp over tcp rtp over http rtp组播 四种 RTP 传输方式
      • 服务器/客户端完整支持 Basic/Digest 方式的登录鉴权,全异步可配置化的鉴权接口
      • 支持 H265 编码
      • 服务器支持 RTSP 推流(包括rtp over udp rtp over tcp方式)
      • 支持 H264/H265/AAC/G711/OPUS/MJPEG 编码,其他编码能转发但不能转协议
    • RTMP[S]

      • RTMP[S] 播放服务器,支持 RTSP/MP4/HLS 转 RTMP
      • RTMP[S] 发布服务器,支持录制发布流
      • RTMP[S] 播放器,支持 RTMP 代理,支持生成静音音频
      • RTMP[S] 推流客户端
      • 支持 http[S] -flv 直播服务器
      • 支持 http[S] -flv 直播播放器
      • 支持 websocket-flv 直播
      • 支持 H264/H265/AAC/G711/OPUS 编码,其他编码能转发但不能转协议
      • 支持RTMP-H265open in new window
      • 支持RTMP-OPUS
      • 支持enhanced-rtmp(H265)open in new window
    • HLS

      • 支持 HLS 文件(mpegts/fmp4)生成,自带 HTTP 文件服务器
      • 通过 cookie 追踪技术,可以模拟 HLS 播放为长连接,可以实现 HLS 按需拉流、播放统计等业务
      • 支持 HLS 播发器,支持拉流 HLS 转 rtsp/rtmp/mp4
      • 支持 H264/H265/AAC/G711/OPUS 编码
    • TS

      • 支持 http[S] -ts 直播
      • 支持 ws[S] -ts 直播
      • 支持 H264/H265/AAC/G711/OPUS 编码
    • fMP4

      • 支持 http[S] -fmp4 直播
      • 支持 ws[S] -fmp4 直播
      • 支持 H264/H265/AAC/G711/OPUS/MJPEG 编码
    • HTTP[S] 与 WebSocket

      • 服务器支持目录索引生成,文件下载,表单提交请求
      • 客户端提供文件下载器(支持断点续传),接口请求器,文件上传器
      • 完整 HTTP API 服务器,可以作为 web 后台开发框架
      • 支持跨域访问
      • 支持 http 客户端、服务器 cookie
      • 支持 WebSocket 服务器和客户端
      • 支持 http 文件访问鉴权
    • GB28181 与 RTP 推流

      • 支持 UDP/TCP RTP(PS/TS/ES)推流服务器,可以转换成 RTSP/RTMP/HLS 等协议
      • 支持 RTSP/RTMP/HLS 等协议转 rtp 推流客户端,支持 TCP/UDP 模式,提供相应 restful api,支持主动被动方式
      • 支持 H264/H265/AAC/G711/OPUS 编码
      • 支持 es/ps/ts/ehome rtp 推流
      • 支持 es/ps rtp 转推
      • 支持 GB28181 主动拉流模式
      • 支持双向语音对讲
    • MP4 点播与录制

      • 支持录制为 FLV/HLS/MP4
      • RTSP/RTMP/HTTP-FLV/WS-FLV 支持 MP4 文件点播,支持 seek
      • 支持 H264/H265/AAC/G711/OPUS 编码
    • WebRTC

      • 支持 WebRTC 推流,支持转其他协议
      • 支持 WebRTC 播放,支持其他协议转 WebRTC
      • 支持双向 echo test
      • 支持 simulcast 推流
      • 支持上下行 rtx/nack 丢包重传
      • 支持单端口、多线程、客户端网络连接迁移(开源界唯一)
      • 支持 TWCC rtcp 动态调整码率
      • 支持 remb/pli/sr/rr rtcp
      • 支持 rtp 扩展解析
      • 支持 GOP 缓冲,webrtc 播放秒开
      • 支持 datachannel
      • 支持 webrtc over tcp 模式
      • 优秀的 nack、jitter buffer 算法, 抗丢包能力卓越
      • 支持 whip/whep 协议
    • SRT 支持

    • 其他

      • 支持丰富的 restful api 以及 web hook 事件
      • 支持简单的 telnet 调试
      • 支持配置文件热加载
      • 支持流量统计、推拉流鉴权等事件
      • 支持虚拟主机,可以隔离不同域名
      • 支持按需拉流,无人观看自动关断拉流
      • 支持先播放后推流,提高及时推流画面打开率
      • 提供完整强大的 c api sdk
      • 支持 FFmpeg 拉流代理任意格式的流
      • 支持 http api 生成并返回实时截图
      • 支持按需解复用、转协议,当有人观看时才开启转协议,降低 cpu 占用率
      • 支持溯源模式的集群部署,溯源方式支持 rtsp/rtmp/hls/http-ts, 边沿站支持 hls, 源站支持多个(采用 round robin 方式溯源)
      • rtsp/rtmp/webrtc 推流异常断开后,可以在超时时间内重连推流,播放器无感知

    编译以及测试

    编译前务必仔细参考 wiki:快速开始操作!!!

    怎么使用

    你有三种方法使用 ZLMediaKit,分别是:

    Docker 镜像

    你可以从 Docker Hub 下载已经编译好的镜像并启动它:

    #此镜像为github持续集成自动编译推送,跟代码(master分支)保持最新状态
     docker run -id -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp zlmediakit/zlmediakit:master
     

    你也可以根据 Dockerfile 编译镜像:

    bash build_docker_images.sh
    -
    - +
    + diff --git a/zh/guide/install/compilation_instructions_for_windows_version.html b/zh/guide/install/compilation_instructions_for_windows_version.html index 2703cbf..7551ebc 100644 --- a/zh/guide/install/compilation_instructions_for_windows_version.html +++ b/zh/guide/install/compilation_instructions_for_windows_version.html @@ -30,7 +30,7 @@ Windows 版编译说明 | ZLMediaKit - + @@ -68,7 +68,7 @@ cmake --build . --target all

    编译 64 位程序在链接 openssl 时还需要链接 Crypt32.libws2_32.lib, 正常在执行 cmake .. @CMAKE_OPTIONS 时有类似输出:

    found library:C:/work/develop/vcpkg/installed/x64-windows-static/lib/libssl.lib;C:/work/develop/vcpkg/installed/x64-windows-static/lib/libcrypto.lib;Crypt32.lib;ws2_32.lib,ENABLE_OPENSSL defined
     

    如果没有 Crypt32.lib;ws2_32.lib, 可手动修改 CMakeLists.txt 进行解决(可搜索 OPENSSL_LIBRARIES 找到对应位置).

    list(APPEND LINK_LIB_LIST ${OPENSSL_LIBRARIES} Crypt32.lib ws2_32.lib)
    -
    - +
    + diff --git a/zh/guide/install/index.html b/zh/guide/install/index.html index f71eae2..465b0d9 100644 --- a/zh/guide/install/index.html +++ b/zh/guide/install/index.html @@ -30,11 +30,11 @@ 安装 | ZLMediaKit - + - - + + diff --git a/zh/guide/install/install_zlmediakit_using_vcpkg.html b/zh/guide/install/install_zlmediakit_using_vcpkg.html index 23781ca..2f6eec4 100644 --- a/zh/guide/install/install_zlmediakit_using_vcpkg.html +++ b/zh/guide/install/install_zlmediakit_using_vcpkg.html @@ -30,7 +30,7 @@ vcpkg方式安装zlmediakit | ZLMediaKit - + @@ -70,7 +70,7 @@ ./vcpkg/vcpkg remove zlmediakit # 然后安装动态库版本 ./vcpkg/vcpkg install zlmediakit\[core,mp4,openssl,webrtc,sctp\]:x64-linux-dynamic -
    install_zlmediakit_using_vcpkg_2
    install_zlmediakit_using_vcpkg_2
    - +
    install_zlmediakit_using_vcpkg_2
    install_zlmediakit_using_vcpkg_2
    + diff --git a/zh/guide/install/start.html b/zh/guide/install/start.html index e938ad1..4b7cd9e 100644 --- a/zh/guide/install/start.html +++ b/zh/guide/install/start.html @@ -30,7 +30,7 @@ 快速开始 | ZLMediaKit - + @@ -90,7 +90,7 @@
  • macOS 下:

    ZLMediaKit/release/linux/mac/libmk_api.dylib
     
  • windows 下:

    ZLMediaKit/release/windows/Debug/mk_api.dll
     ZLMediaKit/release/windows/Debug/mk_api.lib
    -

    SDK 头文件有详细的注释,一般足够二次开发使用。

  • test_开头的测试程序

    相关代码在ZLMediaKit/tests目录下,你可以对照代码启动测试进程。

  • 8、测试

    请参考此文章完成推流播放测试

    - +

    SDK 头文件有详细的注释,一般足够二次开发使用。

  • test_开头的测试程序

    相关代码在ZLMediaKit/tests目录下,你可以对照代码启动测试进程。

  • 8、测试

    请参考此文章完成推流播放测试

    + diff --git a/zh/guide/media_server/config_file.html b/zh/guide/media_server/config_file.html index 6c1dc8a..fc600ec 100644 --- a/zh/guide/media_server/config_file.html +++ b/zh/guide/media_server/config_file.html @@ -30,11 +30,11 @@ 配置文件详解 | ZLMediaKit - + - - + + diff --git a/zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html b/zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html index e24ff45..1cf4cf3 100644 --- a/zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html +++ b/zh/guide/media_server/generate_ssl_self-signed_certificate_and_test.html @@ -30,7 +30,7 @@ 生成SSL自签名证书并测试 | ZLMediaKit - + @@ -54,7 +54,7 @@ Getting Private key

    4、合并公钥私钥

    cat server.crt server.key > ./ssl.pem
     

    5、加载证书

    ./MediaServer -s ./ssl.pem
    -
    图片.png
    图片.png
    - +
    图片.png
    图片.png
    + diff --git a/zh/guide/media_server/how_to_enable_https_related_functions.html b/zh/guide/media_server/how_to_enable_https_related_functions.html index b5ec9a0..d5b6bd3 100644 --- a/zh/guide/media_server/how_to_enable_https_related_functions.html +++ b/zh/guide/media_server/how_to_enable_https_related_functions.html @@ -30,7 +30,7 @@ 怎么开启https相关功能 | ZLMediaKit - + @@ -57,7 +57,7 @@ #新增内容(本机ip+空格+你的域名) 127.0.0.1 test.zlmediakit.com #修改后保存退出vi -
    • 打开浏览器输入 https 地址测试:
    图片
    图片
    • 查看证书:
    图片
    图片

    六、部署线上环境

    • 以上 5 步都走完了,验证通过,那么我们接下来可以部署线上环境;部署线上环境只需要把证书绑定的域名解析到您云主机的真实公网 ip 即可:
    图片
    图片
    图片
    图片
    - +
    • 打开浏览器输入 https 地址测试:
    图片
    图片
    • 查看证书:
    图片
    图片

    六、部署线上环境

    • 以上 5 步都走完了,验证通过,那么我们接下来可以部署线上环境;部署线上环境只需要把证书绑定的域名解析到您云主机的真实公网 ip 即可:
    图片
    图片
    图片
    图片
    + diff --git a/zh/guide/media_server/index.html b/zh/guide/media_server/index.html index ee12488..d982f9b 100644 --- a/zh/guide/media_server/index.html +++ b/zh/guide/media_server/index.html @@ -30,11 +30,11 @@ Media Server | ZLMediaKit - + - - + + diff --git a/zh/guide/media_server/on-demand_push_streaming.html b/zh/guide/media_server/on-demand_push_streaming.html index 259a7b4..dd743a6 100644 --- a/zh/guide/media_server/on-demand_push_streaming.html +++ b/zh/guide/media_server/on-demand_push_streaming.html @@ -30,11 +30,11 @@ 实现按需推流 | ZLMediaKit - + - - + + diff --git a/zh/guide/media_server/on-demand_streaming.html b/zh/guide/media_server/on-demand_streaming.html index 88201c2..3a90a91 100644 --- a/zh/guide/media_server/on-demand_streaming.html +++ b/zh/guide/media_server/on-demand_streaming.html @@ -30,11 +30,11 @@ 实现按需拉流 | ZLMediaKit - + - - + + diff --git a/zh/guide/media_server/play_url_rules.html b/zh/guide/media_server/play_url_rules.html index d203625..ad11ce2 100644 --- a/zh/guide/media_server/play_url_rules.html +++ b/zh/guide/media_server/play_url_rules.html @@ -30,11 +30,11 @@ 播放url规则 | ZLMediaKit - + -
    跳至主要內容

    播放url规则

    ZLMediaKit大约 4 分钟

    1、url 的组成部分

    rtsp://somedomain.com:554/live/0?token=abcdefg&field=value为例,该 url 分为以下几个部分:

    • 协议(scheam) : rtsp 协议,默认端口 554
    • 虚拟主机(vhost) : somedomain.com,该字段既可以是域名也可以是 ip,如果是 ip 则对应的虚拟主机为__defaultVhost__
    • 服务端口号(port) : 554,如果不指定端口号,则使用协议默认端口号
    • 应用名(app) : live
    • 流ID(streamid) : 0
    • 参数(args) : token=abcdefg&field=value

    2、ZLMediaKit 中的流媒体源

    在 ZLMediaKit 中,流媒体源是一种可以被用于直播转发、推流转发等功能的数据对象,在本项目中被称作为MediaSource,目前支持 5 种类型的流媒体源,分别是RtspMediaSourceRtmpMediaSourceHlsMediaSourceTSMediaSourceFMP4MediaSource

    定位一个流媒体源,主要通过 4 个元素(我们后续称其为 4 元组),分别是:

    • 协议(scheam)
    • 虚拟主机(vhost)
    • 应用名(app)
    • 流ID(streamid)

    RtspMediaSource支持 rtsp 播放、rtsp 推流、webrtc 播放、webrtc 推流。

    RtmpMediaSource支持 rtmp 推流/播放、http-flv 播放、ws-flv 播放。

    HlsMediaSource支持 hls 播放。

    TSMediaSource 支持 http-ts 播放、ws-ts 播放。

    FMP4MediaSource 支持 http-fmp4 播放、ws-fmp4 播放。

    3、流媒体源对应的播放 url

    假定有一个RtspMediaSource,它的 4 元组分别为 rtsp(RtspMediaSource固定为rtsp)somedomain.comlive0 那么播放这个流媒体源的 url 对应为:

    • rtsp://somedomain.com/live/0
    • rtsps://somedomain.com/live/0
    • rtsp://127.0.0.1/live/0?vhost=somedomain.com
    • rtsps://127.0.0.1/live/0?vhost=somedomain.com

    如果有一个RtmpMediaSource,它的 4 元组分别为 rtmp(RtmpMediaSource固定为rtmp)somedomain.comlive0 那么播放这个流媒体源的 url 对应为:

    • rtmp://somedomain.com/live/0
    • rtmps://somedomain.com/live/0
    • rtmp://127.0.0.1/live/0?vhost=somedomain.com
    • rtmps://127.0.0.1/live/0?vhost=somedomain.com

    rtmp 类型的流媒体源也支持http-flvwebsocket直播,对应的 url 如下:

    老代码 flv 直播后缀为.flv,新代码才改成了.live.flv

    • http://somedomain.com/live/0.live.flv
    • https://somedomain.com/live/0.live.flv
    • http://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • https://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • ws://somedomain.com/live/0.live.flv
    • wss://somedomain.com/live/0.live.flv
    • ws://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • wss://127.0.0.1/live/0.live.flv?vhost=somedomain.com

    当然,ZLMediaKit 一般会把 rtsp、rtmp 流媒体源互相转换,也会转换成 hls/http-ts/ws-ts/http-fmp4/ws-fmp4,播放的 url 如下:

    • HLS(mpegts)

      • http://somedomain.com/live/0/hls.m3u8
      • https://somedomain.com/live/0/hls.m3u8
      • http://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
      • https://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
    • HLS(fmp4)

      • http://somedomain.com/live/0/hls.fmp4.m3u8
      • https://somedomain.com/live/0/hls.fmp4.m3u8
      • http://127.0.0.1/live/0/hls.fmp4.m3u8?vhost=somedomain.com
      • https://127.0.0.1/live/0/hls.fmp4.m3u8?vhost=somedomain.com
    • HTTP-TS/WS-TS(后缀为.live.ts,目的是为了解决与 hls 的冲突)

      • http://somedomain.com/live/0.live.ts
      • https://somedomain.com/live/0.live.ts
      • http://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • https://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • ws://somedomain.com/live/0.live.ts
      • wss://somedomain.com/live/0.live.ts
      • ws://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • wss://127.0.0.1/live/0.live.ts?vhost=somedomain.com
    • HTTP-fMP4/WS-fMP4(后缀为.live.mp4,目的是为了解决与 mp4 点播的冲突)

      • http://somedomain.com/live/0.live.mp4
      • https://somedomain.com/live/0.live.mp4
      • http://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • https://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • ws://somedomain.com/live/0.live.mp4
      • wss://somedomain.com/live/0.live.mp4
      • ws://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • wss://127.0.0.1/live/0.live.mp4?vhost=somedomain.com

    一般而言,上述 url 在 ZLMediaKit 都有效,因为 ZLMediaKit 默认转换流媒体源。

    4、点播 url

    ZLMediaKit 的点播一般通过 mp4 文件来实现,推荐大家使用 http mp4 点播,这样是最简单,服务器也无需解复用 mp4 文件,当然 ZLMediaKit 目前也支持 rtsp、rtmp、http-flv、websocket-flv 的 mp4 点播, 对应的 url 跟直播 url 类似,不在赘述,这里只介绍区别。

    • ZLMediaKit 对点播限制应用名,默认为record
    • 假如一个 mp4 文件放置在 http 根目录 record 文件夹(www/record)下,他的相对路径为:www/record/0.mp4,那么点播 url 则为:
      • rtsp://somedomain.com/record/0.mp4
      • rtmp://somedomain.com/record/0.mp4
      • http://somedomain.com/record/0.mp4(这里是通用的 http 文件点播,服务器不用解复用文件)
      • http://somedomain.com/record/0.mp4.live.flv(这里是 http-flv 直播,不是 http 点播,服务器需要解复用文件)
      • ws://somedomain.com/record/0.mp4.live.flv
      • http://somedomain.com/record/0.mp4.live.ts(这里是 http-ts 直播,不是 http 点播,服务器需要解复用文件)
      • ws://somedomain.com/record/0.mp4.live.ts
      • http://somedomain.com/record/0.mp4.live.mp4(这里是 http-fmp4 直播,不是 http 点播,服务器需要解复用文件)
      • ws://somedomain.com/record/0.mp4.live.mp4
    • 如果开启了虚拟主机,那么点播文件需要放置在 www/somedomain.com/record/0.mp4

    5、webrtc 推流/播放

    webrtc播放跟上述方式不太一样,webrtc 协议本身不定义信令交互协议,用户自己去实现sdp+icecandidate交换逻辑,所以webrtc并没有一个标准的播放器,需要自己使用 js 或 native sdk 去实现播放。

    zlmediakit实现的webrtc sdp+icecandidate交换方式是http post方式,接口名为/index/api/webrtc, 该接口使用 post content 传递 offer sdp, 同时 url query 参数传递媒体源 4 元组中的app steam_id,由于 http 协议本身支持vhost,所以不需要另外指定vhostwebrtczlmediakit中可以认为是 rtsp 协议的另外表现形式,他们推流、播放使用的数据源都相同,都是RtspMediaSource

    在 webrtc 推流时,交互webrtc sdp+icecandidate的 http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=push

    在 webrtc 播放时,交互webrtc sdp+icecandidate的 http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=play

    zlmeiakit 工程自带 webrtc 测试播放/推流器,用户启动 zlmediakit 后,浏览器访问http://127.0.0.1/webrtc/就可以访问之。

    另外,zlmediakit 也支持使用 webrtc 播放 mp4 文件,http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=record&stream=test.mp4&type=play

    6、url 参数

    ZLMediaKit 会识别 url 中问号后面的字符串为 url 参数,其格式跟 http 一致,其中参数vhost是 ZLMediaKit 内置支持的参数,支持指定 vhost。 url 参数主要用于播放、推流鉴权,在触发 hook api 时,会把这些参数提交给第三方业务服务器

    - +
    跳至主要內容

    播放url规则

    ZLMediaKit大约 4 分钟

    1、url 的组成部分

    rtsp://somedomain.com:554/live/0?token=abcdefg&field=value为例,该 url 分为以下几个部分:

    • 协议(scheam) : rtsp 协议,默认端口 554
    • 虚拟主机(vhost) : somedomain.com,该字段既可以是域名也可以是 ip,如果是 ip 则对应的虚拟主机为__defaultVhost__
    • 服务端口号(port) : 554,如果不指定端口号,则使用协议默认端口号
    • 应用名(app) : live
    • 流ID(streamid) : 0
    • 参数(args) : token=abcdefg&field=value

    2、ZLMediaKit 中的流媒体源

    在 ZLMediaKit 中,流媒体源是一种可以被用于直播转发、推流转发等功能的数据对象,在本项目中被称作为MediaSource,目前支持 5 种类型的流媒体源,分别是RtspMediaSourceRtmpMediaSourceHlsMediaSourceTSMediaSourceFMP4MediaSource

    定位一个流媒体源,主要通过 4 个元素(我们后续称其为 4 元组),分别是:

    • 协议(scheam)
    • 虚拟主机(vhost)
    • 应用名(app)
    • 流ID(streamid)

    RtspMediaSource支持 rtsp 播放、rtsp 推流、webrtc 播放、webrtc 推流。

    RtmpMediaSource支持 rtmp 推流/播放、http-flv 播放、ws-flv 播放。

    HlsMediaSource支持 hls 播放。

    TSMediaSource 支持 http-ts 播放、ws-ts 播放。

    FMP4MediaSource 支持 http-fmp4 播放、ws-fmp4 播放。

    3、流媒体源对应的播放 url

    假定有一个RtspMediaSource,它的 4 元组分别为 rtsp(RtspMediaSource固定为rtsp)somedomain.comlive0 那么播放这个流媒体源的 url 对应为:

    • rtsp://somedomain.com/live/0
    • rtsps://somedomain.com/live/0
    • rtsp://127.0.0.1/live/0?vhost=somedomain.com
    • rtsps://127.0.0.1/live/0?vhost=somedomain.com

    如果有一个RtmpMediaSource,它的 4 元组分别为 rtmp(RtmpMediaSource固定为rtmp)somedomain.comlive0 那么播放这个流媒体源的 url 对应为:

    • rtmp://somedomain.com/live/0
    • rtmps://somedomain.com/live/0
    • rtmp://127.0.0.1/live/0?vhost=somedomain.com
    • rtmps://127.0.0.1/live/0?vhost=somedomain.com

    rtmp 类型的流媒体源也支持http-flvwebsocket直播,对应的 url 如下:

    老代码 flv 直播后缀为.flv,新代码才改成了.live.flv

    • http://somedomain.com/live/0.live.flv
    • https://somedomain.com/live/0.live.flv
    • http://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • https://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • ws://somedomain.com/live/0.live.flv
    • wss://somedomain.com/live/0.live.flv
    • ws://127.0.0.1/live/0.live.flv?vhost=somedomain.com
    • wss://127.0.0.1/live/0.live.flv?vhost=somedomain.com

    当然,ZLMediaKit 一般会把 rtsp、rtmp 流媒体源互相转换,也会转换成 hls/http-ts/ws-ts/http-fmp4/ws-fmp4,播放的 url 如下:

    • HLS(mpegts)

      • http://somedomain.com/live/0/hls.m3u8
      • https://somedomain.com/live/0/hls.m3u8
      • http://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
      • https://127.0.0.1/live/0/hls.m3u8?vhost=somedomain.com
    • HLS(fmp4)

      • http://somedomain.com/live/0/hls.fmp4.m3u8
      • https://somedomain.com/live/0/hls.fmp4.m3u8
      • http://127.0.0.1/live/0/hls.fmp4.m3u8?vhost=somedomain.com
      • https://127.0.0.1/live/0/hls.fmp4.m3u8?vhost=somedomain.com
    • HTTP-TS/WS-TS(后缀为.live.ts,目的是为了解决与 hls 的冲突)

      • http://somedomain.com/live/0.live.ts
      • https://somedomain.com/live/0.live.ts
      • http://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • https://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • ws://somedomain.com/live/0.live.ts
      • wss://somedomain.com/live/0.live.ts
      • ws://127.0.0.1/live/0.live.ts?vhost=somedomain.com
      • wss://127.0.0.1/live/0.live.ts?vhost=somedomain.com
    • HTTP-fMP4/WS-fMP4(后缀为.live.mp4,目的是为了解决与 mp4 点播的冲突)

      • http://somedomain.com/live/0.live.mp4
      • https://somedomain.com/live/0.live.mp4
      • http://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • https://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • ws://somedomain.com/live/0.live.mp4
      • wss://somedomain.com/live/0.live.mp4
      • ws://127.0.0.1/live/0.live.mp4?vhost=somedomain.com
      • wss://127.0.0.1/live/0.live.mp4?vhost=somedomain.com

    一般而言,上述 url 在 ZLMediaKit 都有效,因为 ZLMediaKit 默认转换流媒体源。

    4、点播 url

    ZLMediaKit 的点播一般通过 mp4 文件来实现,推荐大家使用 http mp4 点播,这样是最简单,服务器也无需解复用 mp4 文件,当然 ZLMediaKit 目前也支持 rtsp、rtmp、http-flv、websocket-flv 的 mp4 点播, 对应的 url 跟直播 url 类似,不在赘述,这里只介绍区别。

    • ZLMediaKit 对点播限制应用名,默认为record
    • 假如一个 mp4 文件放置在 http 根目录 record 文件夹(www/record)下,他的相对路径为:www/record/0.mp4,那么点播 url 则为:
      • rtsp://somedomain.com/record/0.mp4
      • rtmp://somedomain.com/record/0.mp4
      • http://somedomain.com/record/0.mp4(这里是通用的 http 文件点播,服务器不用解复用文件)
      • http://somedomain.com/record/0.mp4.live.flv(这里是 http-flv 直播,不是 http 点播,服务器需要解复用文件)
      • ws://somedomain.com/record/0.mp4.live.flv
      • http://somedomain.com/record/0.mp4.live.ts(这里是 http-ts 直播,不是 http 点播,服务器需要解复用文件)
      • ws://somedomain.com/record/0.mp4.live.ts
      • http://somedomain.com/record/0.mp4.live.mp4(这里是 http-fmp4 直播,不是 http 点播,服务器需要解复用文件)
      • ws://somedomain.com/record/0.mp4.live.mp4
    • 如果开启了虚拟主机,那么点播文件需要放置在 www/somedomain.com/record/0.mp4

    5、webrtc 推流/播放

    webrtc播放跟上述方式不太一样,webrtc 协议本身不定义信令交互协议,用户自己去实现sdp+icecandidate交换逻辑,所以webrtc并没有一个标准的播放器,需要自己使用 js 或 native sdk 去实现播放。

    zlmediakit实现的webrtc sdp+icecandidate交换方式是http post方式,接口名为/index/api/webrtc, 该接口使用 post content 传递 offer sdp, 同时 url query 参数传递媒体源 4 元组中的app steam_id,由于 http 协议本身支持vhost,所以不需要另外指定vhostwebrtczlmediakit中可以认为是 rtsp 协议的另外表现形式,他们推流、播放使用的数据源都相同,都是RtspMediaSource

    在 webrtc 推流时,交互webrtc sdp+icecandidate的 http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=push

    在 webrtc 播放时,交互webrtc sdp+icecandidate的 http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=live&stream=test&type=play

    zlmeiakit 工程自带 webrtc 测试播放/推流器,用户启动 zlmediakit 后,浏览器访问http://127.0.0.1/webrtc/就可以访问之。

    另外,zlmediakit 也支持使用 webrtc 播放 mp4 文件,http post 接口类似为:http://127.0.0.1/index/api/webrtc?app=record&stream=test.mp4&type=play

    6、url 参数

    ZLMediaKit 会识别 url 中问号后面的字符串为 url 参数,其格式跟 http 一致,其中参数vhost是 ZLMediaKit 内置支持的参数,支持指定 vhost。 url 参数主要用于播放、推流鉴权,在触发 hook api 时,会把这些参数提交给第三方业务服务器

    + diff --git a/zh/guide/media_server/playback_authentication.html b/zh/guide/media_server/playback_authentication.html index 3c9dda9..4085d2a 100644 --- a/zh/guide/media_server/playback_authentication.html +++ b/zh/guide/media_server/playback_authentication.html @@ -30,11 +30,11 @@ 实现播放鉴权 | ZLMediaKit - + - - + + diff --git a/zh/guide/media_server/push_authentication.html b/zh/guide/media_server/push_authentication.html index 5c41ca1..e9d3ef0 100644 --- a/zh/guide/media_server/push_authentication.html +++ b/zh/guide/media_server/push_authentication.html @@ -30,11 +30,11 @@ 实现推流鉴权 | ZLMediaKit - + - - + + diff --git a/zh/guide/media_server/push_test.html b/zh/guide/media_server/push_test.html index 1c6a152..62491a9 100644 --- a/zh/guide/media_server/push_test.html +++ b/zh/guide/media_server/push_test.html @@ -30,7 +30,7 @@ 推流播放测试 | ZLMediaKit - + @@ -48,7 +48,7 @@

    观察日志

    如果推流成功,会打印这种日志: image

    日志中相关字符串分别代表:

    2020-04-10 12:51:52.331 I | regist rtsp __defaultVhost__ rtp 206442D7
                                         ^           ^         ^      ^
                                       schema      vhost      app stream_id
    -

    播放地址

    请按照播放 url 规则来播放上述的推流。

    - +

    播放地址

    请按照播放 url 规则来播放上述的推流。

    + diff --git a/zh/guide/media_server/restful_api.html b/zh/guide/media_server/restful_api.html index ad80107..64dd8b2 100644 --- a/zh/guide/media_server/restful_api.html +++ b/zh/guide/media_server/restful_api.html @@ -30,7 +30,7 @@ RESTful 接口 | ZLMediaKit - + @@ -520,7 +520,7 @@ } ] } -
    - +
    + diff --git a/zh/guide/media_server/sequence_diagram.html b/zh/guide/media_server/sequence_diagram.html index 070eb68..2316f5e 100644 --- a/zh/guide/media_server/sequence_diagram.html +++ b/zh/guide/media_server/sequence_diagram.html @@ -30,11 +30,11 @@ 时序图 | ZLMediaKit - + - - + + diff --git a/zh/guide/media_server/start_server.html b/zh/guide/media_server/start_server.html index 1e2753e..ba427ef 100644 --- a/zh/guide/media_server/start_server.html +++ b/zh/guide/media_server/start_server.html @@ -30,7 +30,7 @@ 服务器的启动与关闭 | ZLMediaKit - + @@ -42,7 +42,7 @@ -c --config 有参 默认:/Users/xzl/git/ZLMediaKit/release/mac/Debug/config.ini 选填 配置文件路径 -s --ssl 有参 默认:/Users/xzl/git/ZLMediaKit/release/mac/Debug/ssl.p12 选填 ssl证书文件或文件夹,支持p12/pem类型 -t --threads 有参 默认:8 选填 启动事件触发线程数 -
    • 说明:

      • -d(--daemon): 是否以守护进程的方式启动,守护进程只做一件事,就是判断子进程(这个才是干活的进程)是否已经退出,退出后会不断尝试重启子进程。
      • -l(--level): 指定日志打印等级,赋值范围为 0~4,等级越高,日志越少。
      • -m(--max_day): 日志文件保存天数,程序本次运行期间的日志如果超过这个天数,就会被删除。
      • -c(--config): 指定配置文件路径,配置文件为 ini 格式,请参考 ZLMediaKit 的默认配置文件。
      • -s(--ssl): 指定 ssl 证书路径,证书格式支持 p12 和 pem 类型,里面必须包含公钥和私钥,私钥不能有加密密码。如果指定文件夹,会加载文件夹下所有证书。
      • -t(--threads): 指定事件驱动线程(干重活)和后台工作线程(干阻塞的活)个数。
    • 启动命令:

    图片
    图片
    • 注意事项:
      • 1、如果你启动 MediaServer 后需要关闭 shell,那么好需要输入 exit退出 shell,否则关闭 shell 会导致 MediaServer 一起被关闭。
      • 2、如果你会使用到 FFmpeg 相关功能,你应该这样启动程序nohup ./MediaServer -d &,否则在 fork FFmpeg 进程时会导致 MediaServer 进程挂起。

    配置文件的热加载

    修改并保存配置文件后,在 shell 里面输入killall -1 MediaServer就能使 ZLMediaKit 热加载配置文件,如果生效,会打印下面样式的日志: 图片

    关闭服务器

    • 如果你是后台启动方式,请在 shell 中输入killall -2 MediaServer以便优雅关闭服务器(程序收到 SIGINT 信号后会自动释放资源并退出)。
    • 否则你可以同时按下Ctr + C退出程序。
    • MediaServer 退出时日志如下:
    图片
    图片
    - +
    • 说明:

      • -d(--daemon): 是否以守护进程的方式启动,守护进程只做一件事,就是判断子进程(这个才是干活的进程)是否已经退出,退出后会不断尝试重启子进程。
      • -l(--level): 指定日志打印等级,赋值范围为 0~4,等级越高,日志越少。
      • -m(--max_day): 日志文件保存天数,程序本次运行期间的日志如果超过这个天数,就会被删除。
      • -c(--config): 指定配置文件路径,配置文件为 ini 格式,请参考 ZLMediaKit 的默认配置文件。
      • -s(--ssl): 指定 ssl 证书路径,证书格式支持 p12 和 pem 类型,里面必须包含公钥和私钥,私钥不能有加密密码。如果指定文件夹,会加载文件夹下所有证书。
      • -t(--threads): 指定事件驱动线程(干重活)和后台工作线程(干阻塞的活)个数。
    • 启动命令:

    图片
    图片
    • 注意事项:
      • 1、如果你启动 MediaServer 后需要关闭 shell,那么好需要输入 exit退出 shell,否则关闭 shell 会导致 MediaServer 一起被关闭。
      • 2、如果你会使用到 FFmpeg 相关功能,你应该这样启动程序nohup ./MediaServer -d &,否则在 fork FFmpeg 进程时会导致 MediaServer 进程挂起。

    配置文件的热加载

    修改并保存配置文件后,在 shell 里面输入killall -1 MediaServer就能使 ZLMediaKit 热加载配置文件,如果生效,会打印下面样式的日志: 图片

    关闭服务器

    • 如果你是后台启动方式,请在 shell 中输入killall -2 MediaServer以便优雅关闭服务器(程序收到 SIGINT 信号后会自动释放资源并退出)。
    • 否则你可以同时按下Ctr + C退出程序。
    • MediaServer 退出时日志如下:
    图片
    图片
    + diff --git a/zh/guide/media_server/web_hook_api.html b/zh/guide/media_server/web_hook_api.html index 823aace..c02ab2c 100644 --- a/zh/guide/media_server/web_hook_api.html +++ b/zh/guide/media_server/web_hook_api.html @@ -30,7 +30,7 @@ Web Hook 接口 | ZLMediaKit - + @@ -646,7 +646,7 @@ "tcp_mode" : 0, "mediaServerId" : "192.168.255.10" } -
  • 请求参数详解:

    参数名参数类型参数解释
    local_portintopenRtpServer 输入的参数
    re_use_portboolopenRtpServer 输入的参数
    ssrcuint32openRtpServer 输入的参数
    stream_idstringopenRtpServer 输入的参数
    tcp_modeintopenRtpServer 输入的参数
    mediaServerIdstring服务器 id,通过配置文件设置
  • - +
  • 请求参数详解:

    参数名参数类型参数解释
    local_portintopenRtpServer 输入的参数
    re_use_portboolopenRtpServer 输入的参数
    ssrcuint32openRtpServer 输入的参数
    stream_idstringopenRtpServer 输入的参数
    tcp_modeintopenRtpServer 输入的参数
    mediaServerIdstring服务器 id,通过配置文件设置
  • + diff --git a/zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html b/zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html index 199684b..6fc5cf6 100644 --- a/zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html +++ b/zh/guide/protocol/gb28181/gb28181_sip_signaling_packet_capture.html @@ -30,7 +30,7 @@ GB28181 SIP信令抓包 | ZLMediaKit - + @@ -171,7 +171,7 @@ CSeq: 20 MESSAGE User-Agent: Hikvision Content-Length: 0 -
    - +
    + diff --git a/zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html b/zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html index b932402..ecdcf23 100644 --- a/zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html +++ b/zh/guide/protocol/gb28181/how_to_use_device_id_as_stream_id.html @@ -30,11 +30,11 @@ GB28181怎么用设备ID作为流ID | ZLMediaKit - + -
    跳至主要內容

    GB28181怎么用设备ID作为流ID

    ZLMediaKit大约 1 分钟

    为了支持 RTP 流的识别(与摄像头 ID 产生关联), 必须通过 源地址ssrc本地端口号 来区分.

    但是在 issue #338 里面有开发者反馈,有些设备不支持设置 ssrc,ssrc 一直为 0.

    而源地址端口也会一直变,RTP 推流前 SIP 服务器也不知道摄像头推流端口(甚至 IP 都不知道) 那么区分流只通过源地址也不现实, 因为一个局域网内也可能多个设备, 如果 ZLMediaKit 在公网,那么这些流的 IP 是一致的,而端口是随机的,根本没法跟摄像头 ID 对应起来.

    所以为了实现 RTP 推流参数的流 ID 与摄像头 ID 产生关联,就基本只剩下本地端口号这条路了,这就意味着一个端口只能接受一个流。

    在不指定流 ID 时,ZLMediaKit 的行为跟之前完全一样,单端口支持多流,ssrc 作为 stream id。

    如果指定了该端口绑定的流 ID,那么该端口只能接收一路流。

    以下是关键代码:

    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    - +
    跳至主要內容

    GB28181怎么用设备ID作为流ID

    ZLMediaKit大约 1 分钟

    为了支持 RTP 流的识别(与摄像头 ID 产生关联), 必须通过 源地址ssrc本地端口号 来区分.

    但是在 issue #338 里面有开发者反馈,有些设备不支持设置 ssrc,ssrc 一直为 0.

    而源地址端口也会一直变,RTP 推流前 SIP 服务器也不知道摄像头推流端口(甚至 IP 都不知道) 那么区分流只通过源地址也不现实, 因为一个局域网内也可能多个设备, 如果 ZLMediaKit 在公网,那么这些流的 IP 是一致的,而端口是随机的,根本没法跟摄像头 ID 对应起来.

    所以为了实现 RTP 推流参数的流 ID 与摄像头 ID 产生关联,就基本只剩下本地端口号这条路了,这就意味着一个端口只能接受一个流。

    在不指定流 ID 时,ZLMediaKit 的行为跟之前完全一样,单端口支持多流,ssrc 作为 stream id。

    如果指定了该端口绑定的流 ID,那么该端口只能接收一路流。

    以下是关键代码:

    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    image
    + diff --git a/zh/guide/protocol/gb28181/index.html b/zh/guide/protocol/gb28181/index.html index 3212077..dcc640c 100644 --- a/zh/guide/protocol/gb28181/index.html +++ b/zh/guide/protocol/gb28181/index.html @@ -30,11 +30,11 @@ Gb28181 | ZLMediaKit - + - - + + diff --git a/zh/guide/protocol/gb28181/push_streaming.html b/zh/guide/protocol/gb28181/push_streaming.html index 37ce110..43fd45e 100644 --- a/zh/guide/protocol/gb28181/push_streaming.html +++ b/zh/guide/protocol/gb28181/push_streaming.html @@ -30,13 +30,13 @@ GB28181推流 | ZLMediaKit - +
    跳至主要內容

    GB28181推流

    ZLMediaKit大约 3 分钟

    介绍

    ZLMediaKit 支持 GB28181 的 ps-rtp 推流,支持的编码格式分别为 h264/h265/aac/g711/opus。 在收到 GB28181 推流后,ZLMediaKit 会依次做以下事情:

    • rtp 排序去重。
    • rtp 解析成 ps 或 ts。
    • ps 或 ts 解析成h264/h265/aac/g711/opus
    • 输入到复用器,生成 rtsp/rtmp/ts/fmp4 等格式,以便转换成其他协议或容器。

    简单使用

    ZLMediaKit 默认开启 10000 端口用于接收 UDP/TCP 的 GB28181 推流,由于国标推流不好测试,ZLMediaKit 同时也支持 rtp_mpegts 推流,代码会自适应判断是否为 ps 还是 ts。 所以如果大家没有摄像头的情况下,可以用 FFmpeg 简单测试,基本上体验跟国标推流并无二致。

    • ffmpeg 推流命令:
     ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
     
    • MediaServer 收到推流后的日志: 图片

    上图中,这个推流的 rtp ssrc 为 BFC2C622(16 进制打印),这个流的 app 为rtp, stream_id 为BFC2C622,您可以根据wiki来组合成 url 并播放这个流。

    需要指出的是,国标推流的 app 固定为 rtp,你只能通过代码来修改它,stream_id 为 rtp 流的 ssrc,这个是随机的,在 FFmpeg 中貌似没法控制。

    另外,每次推流时,请更换 ssrc,否则 ZLMediaKit 发现推流端 ip 和端口变化后,会直接丢弃 rtp 包(现象如此issueopen in new window);这样做的目的是为了防止两个设备使用同一个 ssrc 推流时互相干扰。

    高阶使用

    在推流给 10000 端口时,您可能发现有个缺陷,就是 stream_id 是 ssrc,比较抽象,可能还没法控制。

    那么我们能否自定义 stream_id? 答案是肯定的,ZLMediaKit 通过restful api可以动态开启国标收流端口(同时支持 udp/tcp 模式)。

    在使用 openRtpServer 接口动态开启国标收流端口后,这个端口只能产生一个流,也就是说,一个摄像头需要一个服务器端口用于接收国标推流。

    • 以下是演示范例(postman 工具调用 openRtpServer 接口创建随机端口):
    图片
    图片
    • 然后启动 FFmpeg 推流
     ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:50077
    -
    • 以下是推流后注册的服务器日志 图片

    • 需要指出的是,如果 openRtpServer 接口创建的端口一直没收到流(或者解析不出流),那么会自动关闭和释放。

    调试文件生成

    如果你的 MediaServer 能收到国标推流,但是未出现媒体注册相关日志,那么有可能是流有些异常,你可以修改配置文件rtp_proxy.dumpDir指定调试文件导出目录, 这样 ZLMediaKit 会把国标流导出到该文件夹,就像这样:

    图片
    图片

    你可以直接用 ffplay 播放mp2/video后缀的文件rtp后缀的文件,你可以用测试工具test_rtp调试,或者你可以把它分享给其他人帮你分析原因。

    让 ZLMediaKit 往其他国标服务器推流

    你可以使用restful api让 ZLMediaKit 生成国标流并往其他服务器推送,支持其他任何已注册的流转国标流。

    • postman 调用 startSendRtp 接口推送国标流:
    图片
    图片
    图片
    图片
    • 上图中是推送国标流给自己,当然你也可以推送给其他服务器,支持 udp/tcp 方式推流。

    性能

    GB28181 的推流性能测试,请参考:#961open in new window

    丢包问题调试

    如果在测试 GB28181 UDP 推流时,频繁打印以下日志:

    图片
    图片

    请查看此issueopen in new window,特别提示,wifi 情况下,由于无线网络干扰严重,丢包问题很可能确实是网络质量差导致的。

    相关文章推荐阅读

    WVP+ZLMediaKit+MediaServerUI 实现摄像头 GB28181 推流播放录制open in new window

    使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放open in new window

    GB28181 语音对讲open in new window

    - +
    • 以下是推流后注册的服务器日志 图片

    • 需要指出的是,如果 openRtpServer 接口创建的端口一直没收到流(或者解析不出流),那么会自动关闭和释放。

    调试文件生成

    如果你的 MediaServer 能收到国标推流,但是未出现媒体注册相关日志,那么有可能是流有些异常,你可以修改配置文件rtp_proxy.dumpDir指定调试文件导出目录, 这样 ZLMediaKit 会把国标流导出到该文件夹,就像这样:

    图片
    图片

    你可以直接用 ffplay 播放mp2/video后缀的文件rtp后缀的文件,你可以用测试工具test_rtp调试,或者你可以把它分享给其他人帮你分析原因。

    让 ZLMediaKit 往其他国标服务器推流

    你可以使用restful api让 ZLMediaKit 生成国标流并往其他服务器推送,支持其他任何已注册的流转国标流。

    • postman 调用 startSendRtp 接口推送国标流:
    图片
    图片
    图片
    图片
    • 上图中是推送国标流给自己,当然你也可以推送给其他服务器,支持 udp/tcp 方式推流。

    性能

    GB28181 的推流性能测试,请参考:#961open in new window

    丢包问题调试

    如果在测试 GB28181 UDP 推流时,频繁打印以下日志:

    图片
    图片

    请查看此issueopen in new window,特别提示,wifi 情况下,由于无线网络干扰严重,丢包问题很可能确实是网络质量差导致的。

    相关文章推荐阅读

    WVP+ZLMediaKit+MediaServerUI 实现摄像头 GB28181 推流播放录制open in new window

    使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放open in new window

    GB28181 语音对讲open in new window

    + diff --git a/zh/guide/protocol/index.html b/zh/guide/protocol/index.html index 87f24f7..579f2d6 100644 --- a/zh/guide/protocol/index.html +++ b/zh/guide/protocol/index.html @@ -30,11 +30,11 @@ 协议相关 | ZLMediaKit - + - - + + diff --git a/zh/guide/protocol/srt/index.html b/zh/guide/protocol/srt/index.html index 79af37f..3ea4b69 100644 --- a/zh/guide/protocol/srt/index.html +++ b/zh/guide/protocol/srt/index.html @@ -30,7 +30,7 @@ SRT | ZLMediaKit - + @@ -41,7 +41,7 @@ app = live streamid = test -

    是推流

    • OBS 推流地址

      srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish

    • ffmpeg 推流

      ffmpeg -re -stream_loop -1 -i test.ts -c:v copy -c:a copy -f mpegts srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish

    • ffplay 拉流

      ffplay -i srt://192.168.1.105:9000?streamid=#!::r=live/test

    • vlc 拉流

      • vlc 拉流需要在偏好设置->串流输出->访问输出->SRT 中设置 streamid,例如#!::r=live/test
      • 拉流时只需填入srt://192.168.1.105:9000即可
    - +

    是推流

    • OBS 推流地址

      srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish

    • ffmpeg 推流

      ffmpeg -re -stream_loop -1 -i test.ts -c:v copy -c:a copy -f mpegts srt://192.168.1.105:9000?streamid=#!::r=live/test,m=publish

    • ffplay 拉流

      ffplay -i srt://192.168.1.105:9000?streamid=#!::r=live/test

    • vlc 拉流

      • vlc 拉流需要在偏好设置->串流输出->访问输出->SRT 中设置 streamid,例如#!::r=live/test
      • 拉流时只需填入srt://192.168.1.105:9000即可
    + diff --git a/zh/guide/protocol/webrtc/index.html b/zh/guide/protocol/webrtc/index.html index 6e71f22..26a3b46 100644 --- a/zh/guide/protocol/webrtc/index.html +++ b/zh/guide/protocol/webrtc/index.html @@ -30,11 +30,11 @@ Webrtc | ZLMediaKit - + - - + + diff --git a/zh/guide/protocol/webrtc/webrtc_compilation_and_use.html b/zh/guide/protocol/webrtc/webrtc_compilation_and_use.html index 51a4b5e..2efca6a 100644 --- a/zh/guide/protocol/webrtc/webrtc_compilation_and_use.html +++ b/zh/guide/protocol/webrtc/webrtc_compilation_and_use.html @@ -30,7 +30,7 @@ webrtc 编译与使用 | ZLMediaKit - + @@ -92,7 +92,7 @@ rembBitRate=1000000

    测试

    最新的 zlmediakit 源码自带有效的 ssl 证书default.pem,对应的域名是default.zlmediakit.com,该域名解析到的 ip 为127.0.0.1,用户在浏览器中打开 https://default.zlmediakit.com/webrtc/open in new window即可开始测试。请先推流后,再测试播放。如果 webrtc 无法播放, 请参考此issueopen in new window

    问题解决

    Q And A(播放问题) ?

    • obs 推流 rtc 播放一卡一卡?

      web 的 rtc h264 不支持 B 帧,需要去掉 B 帧, 使用 FFmpeg 时需要添加-bf 0参数,或者指定 h264 profile 为 baseline

    • rtsp 推流,rtc 播放不成功?

      rtsp 推流需要把 zlm 的配置文件中的 directProxy 设置为 0

    • webrtc 视频或者音频播放不出来?

      web 客户端的 rtc 支持 h264,opus/48000/2,pcma/8000,pcmu/8000 等编码格式,检查一下编码格式是否正确,一般都是音频不支持,需要使用 transcode 分支来转码(视频不会转码)

    - +
  • ubuntu 编译

    可以参考网友大神自制这里open in new window

  • windows 编译

    可以参考网友大神自制这里open in new window

    还有这里open in new window

  • Q And A(播放问题) ?

    • obs 推流 rtc 播放一卡一卡?

      web 的 rtc h264 不支持 B 帧,需要去掉 B 帧, 使用 FFmpeg 时需要添加-bf 0参数,或者指定 h264 profile 为 baseline

    • rtsp 推流,rtc 播放不成功?

      rtsp 推流需要把 zlm 的配置文件中的 directProxy 设置为 0

    • webrtc 视频或者音频播放不出来?

      web 客户端的 rtc 支持 h264,opus/48000/2,pcma/8000,pcmu/8000 等编码格式,检查一下编码格式是否正确,一般都是音频不支持,需要使用 transcode 分支来转码(视频不会转码)

    + diff --git a/zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html b/zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html index 7c814c1..2c309b3 100644 --- a/zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html +++ b/zh/guide/protocol/webrtc/webrtc_signaling_interaction_format.html @@ -30,7 +30,7 @@ webrtc信令交互格式 | ZLMediaKit - + @@ -155,7 +155,7 @@ "type" : "answer" } -
    - +
    + diff --git a/zh/guide/sdk/how_to_create_a_live_steam.html b/zh/guide/sdk/how_to_create_a_live_steam.html index 09bd23a..7adbe09 100644 --- a/zh/guide/sdk/how_to_create_a_live_steam.html +++ b/zh/guide/sdk/how_to_create_a_live_steam.html @@ -30,11 +30,11 @@ 怎样创建直播流 | ZLMediaKit - + -
    跳至主要內容

    怎样创建直播流

    ZLMediaKit小于 1 分钟

    How to create a live steam
    How to create a live steam
    - +
    跳至主要內容

    怎样创建直播流

    ZLMediaKit小于 1 分钟

    How to create a live steam
    How to create a live steam
    + diff --git a/zh/guide/sdk/index.html b/zh/guide/sdk/index.html index 2813e52..0d70d02 100644 --- a/zh/guide/sdk/index.html +++ b/zh/guide/sdk/index.html @@ -30,11 +30,11 @@ SDK API | ZLMediaKit - + - - + + diff --git a/zh/index.html b/zh/index.html index 952f281..29d6d33 100644 --- a/zh/index.html +++ b/zh/index.html @@ -30,11 +30,11 @@ 首页 | ZLMediaKit - +
    跳至主要內容
    ZLMediaKit

    ZLMediaKit

    一个基于C++11的高性能运营级流媒体服务框架.

    如何使用💡文档

    特性

    特性

    该项目是一个商用级流媒体服务器流媒体解决方案,其中包括移动嵌入式跨平台支持以及网络编程二次开发SDK.

    c++11开发

    采用C++11开发,避免使用原始指针,提供稳定可靠的代码和卓越的性能.

    支持多种协议

    支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC)与协议间互相转换

    高并发与高性能

    采用多路复用/多线程/异步网络IO模型开发,提供卓越的并发性能,支持海量客户端连接.

    稳定可靠的生产环境使用

    代码经过广泛的稳定性和性能测试,在生产环境中得到广泛应用.

    跨平台兼容性

    支持包括Linux、macOS、iOS、Android和Windows在内的所有主要平台.

    多指令集平台支持

    支持多种指令集平台,如x86、arm、risc-v、mips、龙芯和申威.

    极速启动和低延迟

    提供极速启动,极低延迟(在500毫秒以内,甚至可以低至100毫秒),提供优异的用户体验.

    用于集成的C API

    提供全面的标准C API,可用作SDK或被其他语言调用.

    完整的媒体服务器解决方案

    提供完整的媒体服务器,可直接部署为商用服务器,无需额外开发.

    RESTful API和Web Hook

    提供完整的RESTful API和Web Hook,支持丰富的业务逻辑.

    视频监控桥接

    打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善.

    完善的编解码器支持

    全面支持H265/H264/AAC/G711/OPUS.

    高级功能

    功能完善,支持集群、按需转协议、按需推拉流、先播后推、断连续推等功能.

    极致性能和可扩展性

    极致性能,支持单台机器上的10W级播放器和100Gb/s级IO带宽能力.

    独家功能

    全面支持IPv6网络,并通过独家功能提供终极用户体验.

    - + diff --git a/zh/more/collaborative_projects.html b/zh/more/collaborative_projects.html index af64af4..4cdce03 100644 --- a/zh/more/collaborative_projects.html +++ b/zh/more/collaborative_projects.html @@ -30,11 +30,11 @@ 合作项目 | ZLMediaKit - + -
    跳至主要內容

    合作项目

    ZLMediaKit大约 1 分钟

    - +
    跳至主要內容

    合作项目

    ZLMediaKit大约 1 分钟

    + diff --git a/zh/more/contact.html b/zh/more/contact.html index fb94b21..6fa2c1a 100644 --- a/zh/more/contact.html +++ b/zh/more/contact.html @@ -30,11 +30,11 @@ 联系我们 | ZLMediaKit - + -
    跳至主要內容

    联系我们

    ZLMediaKit小于 1 分钟

    联系信息

    • 邮箱:1213642868@qq.com(本项目相关或流媒体相关问题请走 issue 流程,否则恕不邮件答复)

    • 请关注微信公众号获取最新消息推送:

      图片
      图片
    • 也可以自愿有偿加入知识星球咨询和获取资料:

      图片
      图片
    - +
    跳至主要內容

    联系我们

    ZLMediaKit小于 1 分钟

    联系信息

    • 邮箱:1213642868@qq.com(本项目相关或流媒体相关问题请走 issue 流程,否则恕不邮件答复)

    • 请关注微信公众号获取最新消息推送:

      图片
      图片
    • 也可以自愿有偿加入知识星球咨询和获取资料:

      图片
      图片
    + diff --git a/zh/more/index.html b/zh/more/index.html index a4e390d..cc3111c 100644 --- a/zh/more/index.html +++ b/zh/more/index.html @@ -30,11 +30,11 @@ More | ZLMediaKit - + - - + + diff --git a/zh/more/license.html b/zh/more/license.html index 9ad73e4..51703bb 100644 --- a/zh/more/license.html +++ b/zh/more/license.html @@ -30,11 +30,11 @@ 授权协议 | ZLMediaKit - + -
    跳至主要內容

    授权协议

    ZLMediaKit小于 1 分钟

    本项目自有代码使用宽松的 MIT 协议,在保留版权信息的情况下可以自由应用于各自商用、非商业的项目。 但是本项目也零碎的使用了一些其他的开源代码,在商用的情况下请自行替代或剔除; 由于使用本项目而产生的商业纠纷或侵权行为一概与本项目及开发者无关,请自行承担法律风险。 在使用本项目代码时,也应该在授权协议中同时表明本项目依赖的第三方库的协议。

    - +
    跳至主要內容

    授权协议

    ZLMediaKit小于 1 分钟

    本项目自有代码使用宽松的 MIT 协议,在保留版权信息的情况下可以自由应用于各自商用、非商业的项目。 但是本项目也零碎的使用了一些其他的开源代码,在商用的情况下请自行替代或剔除; 由于使用本项目而产生的商业纠纷或侵权行为一概与本项目及开发者无关,请自行承担法律风险。 在使用本项目代码时,也应该在授权协议中同时表明本项目依赖的第三方库的协议。

    + diff --git a/zh/more/thanks.html b/zh/more/thanks.html index 47e94bd..5766692 100644 --- a/zh/more/thanks.html +++ b/zh/more/thanks.html @@ -30,11 +30,11 @@ 致谢 | ZLMediaKit - + -
    跳至主要內容

    致谢

    ZLMediaKit大约 2 分钟

    特别感谢

    本项目采用了老陈open in new windowmedia-serveropen in new window 库, 本项目的 ts/fmp4/mp4/ps 容器格式的复用解复用都依赖 media-server 库。在实现本项目诸多功能时,老陈多次给予了无私热情关键的帮助, 特此对他表示诚挚的感谢!

    致谢

    感谢以下各位对本项目包括但不限于代码贡献、问题反馈、资金捐赠等各种方式的支持!以下排名不分先后:

    老陈open in new windowGemfieldopen in new window南冠彤open in new window凹凸慢open in new windowchenxiaoleiopen in new window史前小虫open in new window清涩绿茶open in new window3503207480open in new windowDroidChowopen in new window阿塞open in new window火宣open in new windowγ 瑞 γ ミopen in new windowlinkingvisionopen in new window茄子open in new window好心情浮沉open in new windowXiaofeng Wangopen in new windowdoodoocoderopen in new windowqingciopen in new windowswwheiheiopen in new windowKKKKK5Gopen in new windowZhou WeiminJim Jinopen in new window西瓜丶MingZhuLiuopen in new windowchengxiaoshengopen in new windowbig pandatanningzhongopen in new windowhctym1995open in new windowhewenyuanopen in new windowsunhuimirsKevin ChengLiu Jiangalongopen in new windowqingcilyg1949zhlong大裤衩droid.chow陈晓林open in new windowCharleyWangHZopen in new windowJohnnyopen in new windowDoubleX69open in new windowlawrencehjopen in new windowyangkunXinghua Zhaohejilinopen in new windowrqb500open in new windowAlexopen in new windowDw9open in new window明月惊鹊cgmhejilinalexliyu7352cgmhaorui wangopen in new windowjoshuafcJayChen0519open in new windowzxwangckerWuPengstarryopen in new windowmtdxcopen in new window胡刚风open in new windowzhao85open in new windowdreamisdreamopen in new windowdingcanopen in new windowHaibo Chenopen in new windowLeonopen in new windowcustompalopen in new windowPioLingopen in new windowKevinZangopen in new windowgongluckopen in new windowa-ucontrolopen in new windowTalusLopen in new windowahaooahazopen in new windowTempoTianopen in new windowDerek Liuopen in new windowljx0305open in new window朱如洪 open in new windowlijinopen in new windowPioLingopen in new windowBackT0TheFutureopen in new windowperaraopen in new windowcodeRATnyopen in new windowdengjfzhopen in new window百鸣open in new windowfruit Juiceopen in new windowtbagoopen in new windowLuoshopen in new windowlinxiaoyan87open in new windowwakenopen in new windowDeepslientopen in new windowimp_rayjayopen in new windowArmstrongCNopen in new windowleibnewtonopen in new window1002victoropen in new window

    同时感谢 JetBrains 对开源项目的支持,本项目使用 CLion 开发与调试:

    JetBrainsopen in new window
    JetBrains
    - +
    跳至主要內容

    致谢

    ZLMediaKit大约 2 分钟

    特别感谢

    本项目采用了老陈open in new windowmedia-serveropen in new window 库, 本项目的 ts/fmp4/mp4/ps 容器格式的复用解复用都依赖 media-server 库。在实现本项目诸多功能时,老陈多次给予了无私热情关键的帮助, 特此对他表示诚挚的感谢!

    致谢

    感谢以下各位对本项目包括但不限于代码贡献、问题反馈、资金捐赠等各种方式的支持!以下排名不分先后:

    老陈open in new windowGemfieldopen in new window南冠彤open in new window凹凸慢open in new windowchenxiaoleiopen in new window史前小虫open in new window清涩绿茶open in new window3503207480open in new windowDroidChowopen in new window阿塞open in new window火宣open in new windowγ 瑞 γ ミopen in new windowlinkingvisionopen in new window茄子open in new window好心情浮沉open in new windowXiaofeng Wangopen in new windowdoodoocoderopen in new windowqingciopen in new windowswwheiheiopen in new windowKKKKK5Gopen in new windowZhou WeiminJim Jinopen in new window西瓜丶MingZhuLiuopen in new windowchengxiaoshengopen in new windowbig pandatanningzhongopen in new windowhctym1995open in new windowhewenyuanopen in new windowsunhuimirsKevin ChengLiu Jiangalongopen in new windowqingcilyg1949zhlong大裤衩droid.chow陈晓林open in new windowCharleyWangHZopen in new windowJohnnyopen in new windowDoubleX69open in new windowlawrencehjopen in new windowyangkunXinghua Zhaohejilinopen in new windowrqb500open in new windowAlexopen in new windowDw9open in new window明月惊鹊cgmhejilinalexliyu7352cgmhaorui wangopen in new windowjoshuafcJayChen0519open in new windowzxwangckerWuPengstarryopen in new windowmtdxcopen in new window胡刚风open in new windowzhao85open in new windowdreamisdreamopen in new windowdingcanopen in new windowHaibo Chenopen in new windowLeonopen in new windowcustompalopen in new windowPioLingopen in new windowKevinZangopen in new windowgongluckopen in new windowa-ucontrolopen in new windowTalusLopen in new windowahaooahazopen in new windowTempoTianopen in new windowDerek Liuopen in new windowljx0305open in new window朱如洪 open in new windowlijinopen in new windowPioLingopen in new windowBackT0TheFutureopen in new windowperaraopen in new windowcodeRATnyopen in new windowdengjfzhopen in new window百鸣open in new windowfruit Juiceopen in new windowtbagoopen in new windowLuoshopen in new windowlinxiaoyan87open in new windowwakenopen in new windowDeepslientopen in new windowimp_rayjayopen in new windowArmstrongCNopen in new windowleibnewtonopen in new window1002victoropen in new window

    同时感谢 JetBrains 对开源项目的支持,本项目使用 CLion 开发与调试:

    JetBrainsopen in new window
    JetBrains
    + diff --git a/zh/more/use_cases.html b/zh/more/use_cases.html index 55d55ef..d32c036 100644 --- a/zh/more/use_cases.html +++ b/zh/more/use_cases.html @@ -30,11 +30,11 @@ 使用案例 | ZLMediaKit - + -
    跳至主要內容

    使用案例

    ZLMediaKit小于 1 分钟

    本项目已经得到不少公司和个人开发者的认可,据作者不完全统计, 使用本项目的公司包括知名的互联网巨头、国内排名前列的云服务公司、多家知名的 AI 独角兽公司, 以及一系列中小型公司。使用者可以通过在 issueopen in new window 上粘贴公司的大名和相关项目介绍为本项目背书,感谢支持!

    - +
    跳至主要內容

    使用案例

    ZLMediaKit小于 1 分钟

    本项目已经得到不少公司和个人开发者的认可,据作者不完全统计, 使用本项目的公司包括知名的互联网巨头、国内排名前列的云服务公司、多家知名的 AI 独角兽公司, 以及一系列中小型公司。使用者可以通过在 issueopen in new window 上粘贴公司的大名和相关项目介绍为本项目背书,感谢支持!

    + diff --git a/zh/reference/development_log/hls_high_performance_journey.html b/zh/reference/development_log/hls_high_performance_journey.html index 51c325c..c91897a 100644 --- a/zh/reference/development_log/hls_high_performance_journey.html +++ b/zh/reference/development_log/hls_high_performance_journey.html @@ -30,7 +30,7 @@ zlmediakit的hls高性能之旅 | ZLMediaKit - + @@ -116,7 +116,7 @@ } return ret; } -

    通过本次优化,zlmediakit 的 hls 服务有比较大的性能提升,性能上限大概提升到了 6K 左右(压测途中还发现拉流压测客户端由于 mktime 函数导致的性能瓶颈问题,在此不展开描述),但是还是离预期有些差距:

    图片.png
    图片.png

    小插曲: mktime 函数导致拉流压测工具性能受限

    图片.png
    图片.png

    在开启共享 mmap 后,发现性能上升到 6K 并发时,还是上不去;于是我登录服务器使用gdb -p调试进程,通过info threads 查看线程情况,发现大量线程处于阻塞状态,这也就是为什么 zlmediakit 占用 cpu 不高,但是并发却上不去的原因:

    图片.png
    图片.png

    为什么这么多线程都处于互斥阻塞状态?zlmediakit 在使用互斥锁时,还是比较注意缩小临界区的,一些复杂耗时的操作一般都会放在临界区之外;经过一番思索,我才恍然大悟,原因是:

    压测客户端由于是单进程,共享同一份 hls cookie,在访问 zlmediakit 时,这些分布在不同线程的请求,其 cookie 都相同,导致所有线程同时大规模操作同一个 cookie,而操作 cookie 是要加锁的,于是这些线程疯狂的同时进行锁竞争,虽然不会死锁,但是会花费大量的时间用在锁等待上,导致整体性能降低。

    虽然在真实使用场景下,用户 cookie 并不一致,这种几千用户同时访问同一个 cookie 的情况并不会存在,但是为了考虑不影响 hls 性能压测,也为了杜绝一切隐患,针对这个问题,我于是对 http/hls 的 cookie 机制进行了修改,在操作 cookie 时,不再上锁:

    图片.png图片.png

    之前对 cookie 上锁属于过度设计,当时目的主要是为了实现在 cookie 上随意挂载数据。

    优化之旅三:hls m3u8 文件内存化

    经过上面两次优化,zlmediakit 的 hls 并发能力可以达到 8K 了,但是当 hls 播放器个数达到在 8K 左右时,zlmediakit 的 ts 切片下载开始超时,可见系统还是存在性能瓶颈,联想到在优化 cookie 互斥锁时,有线程处于该状态:

    图片.png
    图片.png

    所以我严重怀疑原因是 m3u8 文件不能使用 mmap 优化(而是采用 fread 方式)导致的文件 io 性能瓶颈问题,后面通过查看函数调用栈发现,果然是这个原因。

    由于 m3u8 是易变的,使用 mmap 映射时,如果文件长度发生变化,会导致触发 SIGBUS 的信号,查看多方资料,此问题无解。所以最后只剩下通过 m3u8 文件内存化来解决,于是我修好了 m3u8 文件的 http 下载方式,改成直接从内存获取:

    图片.png
    图片.png

    结果:性能爆炸

    通过上述总共 3 大优化,我们在压测 zlmediakit 的 hls 性能时,随着一点一点增加并发量,发现 zlmediakit 总是能运行的非常健康,在并发量从 10K 慢慢增加到 30K 时,并不会影响 ffplay 播放的流畅性和效果,以下是压测数据:

    压测 16K http-hls 播放器时,流量大概 7.5Gb/s: (大概需要 32K 端口,由于我测试机端口不足,只能最大压测到这个数据)

    图片.png图片.png图片.png

    后面用户再压测了 30k https-hls 播放器:

    图片.png图片.png

    后记:用户切生产环境

    在完成 hls 性能优化后,该用户把所有北美节点的 hls 流量切到了 zlmediakit,

    图片.png图片.png

    状况又起:

    今天该用户又反馈给我说 zlmediakit 的内存占用非常高,在 30K hls 并发时,内存占用 30+GB:

    图片.png
    图片.png

    但是用 zlmediakit 的getThreadsLoad接口查看,却发现负载很低:

    图片.png
    图片.png

    同时使用 zlmediakit 的getStatistic接口查看,发现BufferList对象个数很高,初步怀疑是由于网络带宽不足导致发送拥塞,内存暴涨,通过询问得知,公网 hls 访问,确实存在 ts 文件下载缓慢的问题:

    图片.png
    图片.png

    同时让他通过局域网测试 ts 下载,却发现非常快:

    图片.png
    图片.png

    后来通过计算,发现确实由于网络带宽瓶颈每个用户积压一个 Buffer 包,而每个 Buffer 包用户设置的为 1MB,这样算下来,30K 用户,确实会积压 30GB 的发送缓存:

    图片.png
    图片.png
    图片.png
    图片.png
    图片.png
    图片.png

    结论

    通过上面的经历,我们发现 zlmediakit 已经足以支撑 30K/50Gb 级别的 https-hls 并发能力, 理论上,http-hls 相比 https-hls 要少 1 次内存拷贝,和 1 次加密,性能应该要好很多;那么 zlmediakit 的性能上限在哪里?天知道!毕竟,我已经没有这么豪华的配置供我压测了;在此,我们先立一个保守的 flag 吧:

    单机 100K/100Gb 级别 hls 并发能力。

    那其他协议呢? 我觉得应该不输 hls。

    - +

    通过本次优化,zlmediakit 的 hls 服务有比较大的性能提升,性能上限大概提升到了 6K 左右(压测途中还发现拉流压测客户端由于 mktime 函数导致的性能瓶颈问题,在此不展开描述),但是还是离预期有些差距:

    图片.png
    图片.png

    小插曲: mktime 函数导致拉流压测工具性能受限

    图片.png
    图片.png

    在开启共享 mmap 后,发现性能上升到 6K 并发时,还是上不去;于是我登录服务器使用gdb -p调试进程,通过info threads 查看线程情况,发现大量线程处于阻塞状态,这也就是为什么 zlmediakit 占用 cpu 不高,但是并发却上不去的原因:

    图片.png
    图片.png

    为什么这么多线程都处于互斥阻塞状态?zlmediakit 在使用互斥锁时,还是比较注意缩小临界区的,一些复杂耗时的操作一般都会放在临界区之外;经过一番思索,我才恍然大悟,原因是:

    压测客户端由于是单进程,共享同一份 hls cookie,在访问 zlmediakit 时,这些分布在不同线程的请求,其 cookie 都相同,导致所有线程同时大规模操作同一个 cookie,而操作 cookie 是要加锁的,于是这些线程疯狂的同时进行锁竞争,虽然不会死锁,但是会花费大量的时间用在锁等待上,导致整体性能降低。

    虽然在真实使用场景下,用户 cookie 并不一致,这种几千用户同时访问同一个 cookie 的情况并不会存在,但是为了考虑不影响 hls 性能压测,也为了杜绝一切隐患,针对这个问题,我于是对 http/hls 的 cookie 机制进行了修改,在操作 cookie 时,不再上锁:

    图片.png图片.png

    之前对 cookie 上锁属于过度设计,当时目的主要是为了实现在 cookie 上随意挂载数据。

    优化之旅三:hls m3u8 文件内存化

    经过上面两次优化,zlmediakit 的 hls 并发能力可以达到 8K 了,但是当 hls 播放器个数达到在 8K 左右时,zlmediakit 的 ts 切片下载开始超时,可见系统还是存在性能瓶颈,联想到在优化 cookie 互斥锁时,有线程处于该状态:

    图片.png
    图片.png

    所以我严重怀疑原因是 m3u8 文件不能使用 mmap 优化(而是采用 fread 方式)导致的文件 io 性能瓶颈问题,后面通过查看函数调用栈发现,果然是这个原因。

    由于 m3u8 是易变的,使用 mmap 映射时,如果文件长度发生变化,会导致触发 SIGBUS 的信号,查看多方资料,此问题无解。所以最后只剩下通过 m3u8 文件内存化来解决,于是我修好了 m3u8 文件的 http 下载方式,改成直接从内存获取:

    图片.png
    图片.png

    结果:性能爆炸

    通过上述总共 3 大优化,我们在压测 zlmediakit 的 hls 性能时,随着一点一点增加并发量,发现 zlmediakit 总是能运行的非常健康,在并发量从 10K 慢慢增加到 30K 时,并不会影响 ffplay 播放的流畅性和效果,以下是压测数据:

    压测 16K http-hls 播放器时,流量大概 7.5Gb/s: (大概需要 32K 端口,由于我测试机端口不足,只能最大压测到这个数据)

    图片.png图片.png图片.png

    后面用户再压测了 30k https-hls 播放器:

    图片.png图片.png

    后记:用户切生产环境

    在完成 hls 性能优化后,该用户把所有北美节点的 hls 流量切到了 zlmediakit,

    图片.png图片.png

    状况又起:

    今天该用户又反馈给我说 zlmediakit 的内存占用非常高,在 30K hls 并发时,内存占用 30+GB:

    图片.png
    图片.png

    但是用 zlmediakit 的getThreadsLoad接口查看,却发现负载很低:

    图片.png
    图片.png

    同时使用 zlmediakit 的getStatistic接口查看,发现BufferList对象个数很高,初步怀疑是由于网络带宽不足导致发送拥塞,内存暴涨,通过询问得知,公网 hls 访问,确实存在 ts 文件下载缓慢的问题:

    图片.png
    图片.png

    同时让他通过局域网测试 ts 下载,却发现非常快:

    图片.png
    图片.png

    后来通过计算,发现确实由于网络带宽瓶颈每个用户积压一个 Buffer 包,而每个 Buffer 包用户设置的为 1MB,这样算下来,30K 用户,确实会积压 30GB 的发送缓存:

    图片.png
    图片.png
    图片.png
    图片.png
    图片.png
    图片.png

    结论

    通过上面的经历,我们发现 zlmediakit 已经足以支撑 30K/50Gb 级别的 https-hls 并发能力, 理论上,http-hls 相比 https-hls 要少 1 次内存拷贝,和 1 次加密,性能应该要好很多;那么 zlmediakit 的性能上限在哪里?天知道!毕竟,我已经没有这么豪华的配置供我压测了;在此,我们先立一个保守的 flag 吧:

    单机 100K/100Gb 级别 hls 并发能力。

    那其他协议呢? 我觉得应该不输 hls。

    + diff --git a/zh/reference/development_log/index.html b/zh/reference/development_log/index.html index be9ca3c..7b3a631 100644 --- a/zh/reference/development_log/index.html +++ b/zh/reference/development_log/index.html @@ -30,11 +30,11 @@ 开发日志 | ZLMediaKit - + - - + + diff --git a/zh/reference/development_log/rtsp_performance_optimization.html b/zh/reference/development_log/rtsp_performance_optimization.html index ce56061..f417a6e 100644 --- a/zh/reference/development_log/rtsp_performance_optimization.html +++ b/zh/reference/development_log/rtsp_performance_optimization.html @@ -30,11 +30,11 @@ RTSP性能优化 | ZLMediaKit - + -
    跳至主要內容

    RTSP性能优化

    ZLMediaKit大约 3 分钟

    概述

    在最近 ZLMediaKit 的一次提交中,我对 rtsp 服务器的性能做了一次改进open in new window,本次改进中,核心的思想是:

    • 缓存时间戳相同的 RTP 包(意味着是同一帧数据),作为一个数据包进行分发

    理论上,这样做可以大大减少多线程分发时线程切换次数、多余发送逻辑代码的执行以及系统调用次数,预期在不增加播放延时的情况下能大幅提高 rtsp 服务器的性能.

    测试

    为了验证本次优化的预期目标,我在 linux 服务器上做了一系列的测试对比,以下是测试环境:

    • 操作系统:ubuntu16 desktop 64bit
    • cpu: 4 核心的 Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
    • 编译器:gcc 5.4.0,开启 Release 编译(cmake -DCMAKE_BUILD_TYPE=Release)
    • malloc 库:连接 jemalloc
    • 网络: 127.0.0.1 本地循环网络
    • 测试客户端:test_benchmarkopen in new window
    • 测试服务器:MediaServeropen in new window
    • 测试码流:4K H264 的 RTSP 流,通过 MP4 Rtsp 点播实现,文件 200 秒,190MB,码流大概 8Mb/s
    • 测试方法:通过 test_benchmark 播放 500 路 RTSP 4K 点播,总码流大概 4Gb/s,分别测试新老版本的 MediaServer 的进程。

    测试数据

    • 启动的播放器个数: image
    • 实时码流: image

    性能对比

    老版本数据

    • cpu 使用率(浮动比较大,最高 200%+):

      imageimage

    • 性能分析(perf top):

      image
      image
    • 总结: cpu 占用主要发生在内核态的系统调用(syscall)、tcp_sendmsg、内存拷贝。

    新版本数据

    • cpu 使用率(浮动比较小,50%以下):

      imageimage

    • 后面我又测试了 2000 个播放器,掉了一批,最后稳定在 1800 个左右,实时流量 17.5Gb/s(单向)左右,cpu 占用 300%左右:

      imageimageimageimage

    • 性能分析(perf top):

      image
      image
    • 总结:cpu 占用主要发生在内核态内存拷贝,系统调用(syscall)、tcp_sendmsg 的开销很小。

    总结

    本次性能测试基本证明了预想,性能提升大概有 4 倍以上。 本机器为 i7-4790 4 核心 8 线程的,所以 cpu 占用率最高为 800%,现在 ZLMediaKit 在上面支撑 500 个 4K RTSP 播放器,实时流量大概 4Gb/s 时 cpu 使用率 50%不到,通过简单换算,该 cpu 可以支撑大概 8000 个 4K RTSP 播放器,实时流量最高能达到 64Gb/s,考虑到性能折损,我们保守估计可以支持 6000 个 4K RTSP 播放器,50Gb/s 的流量。

    最后

    在 ZLMediaKit 流媒体服务器中,通过智能指针引用计数的方式实现了多线程的数据分发,不管分发多少次,数据拷贝次数都是固定的,所以 ZLMediaKit 可以达到如此夸张的性能参数,但是在测试中,我们也能发现,性能占用已经大部分发生在内核态了,应用层的 cpu 占用反而不是瓶颈了。这是因为在内核态,写 socket 缓存需要做内存拷贝,随着播放器个数的增加,内存拷贝会越来越多,此时性能瓶颈不再是应用层,而是由于内存带宽瓶颈导致的内核性能瓶颈。

    - +
    跳至主要內容

    RTSP性能优化

    ZLMediaKit大约 3 分钟

    概述

    在最近 ZLMediaKit 的一次提交中,我对 rtsp 服务器的性能做了一次改进open in new window,本次改进中,核心的思想是:

    • 缓存时间戳相同的 RTP 包(意味着是同一帧数据),作为一个数据包进行分发

    理论上,这样做可以大大减少多线程分发时线程切换次数、多余发送逻辑代码的执行以及系统调用次数,预期在不增加播放延时的情况下能大幅提高 rtsp 服务器的性能.

    测试

    为了验证本次优化的预期目标,我在 linux 服务器上做了一系列的测试对比,以下是测试环境:

    • 操作系统:ubuntu16 desktop 64bit
    • cpu: 4 核心的 Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
    • 编译器:gcc 5.4.0,开启 Release 编译(cmake -DCMAKE_BUILD_TYPE=Release)
    • malloc 库:连接 jemalloc
    • 网络: 127.0.0.1 本地循环网络
    • 测试客户端:test_benchmarkopen in new window
    • 测试服务器:MediaServeropen in new window
    • 测试码流:4K H264 的 RTSP 流,通过 MP4 Rtsp 点播实现,文件 200 秒,190MB,码流大概 8Mb/s
    • 测试方法:通过 test_benchmark 播放 500 路 RTSP 4K 点播,总码流大概 4Gb/s,分别测试新老版本的 MediaServer 的进程。

    测试数据

    • 启动的播放器个数: image
    • 实时码流: image

    性能对比

    老版本数据

    • cpu 使用率(浮动比较大,最高 200%+):

      imageimage

    • 性能分析(perf top):

      image
      image
    • 总结: cpu 占用主要发生在内核态的系统调用(syscall)、tcp_sendmsg、内存拷贝。

    新版本数据

    • cpu 使用率(浮动比较小,50%以下):

      imageimage

    • 后面我又测试了 2000 个播放器,掉了一批,最后稳定在 1800 个左右,实时流量 17.5Gb/s(单向)左右,cpu 占用 300%左右:

      imageimageimageimage

    • 性能分析(perf top):

      image
      image
    • 总结:cpu 占用主要发生在内核态内存拷贝,系统调用(syscall)、tcp_sendmsg 的开销很小。

    总结

    本次性能测试基本证明了预想,性能提升大概有 4 倍以上。 本机器为 i7-4790 4 核心 8 线程的,所以 cpu 占用率最高为 800%,现在 ZLMediaKit 在上面支撑 500 个 4K RTSP 播放器,实时流量大概 4Gb/s 时 cpu 使用率 50%不到,通过简单换算,该 cpu 可以支撑大概 8000 个 4K RTSP 播放器,实时流量最高能达到 64Gb/s,考虑到性能折损,我们保守估计可以支持 6000 个 4K RTSP 播放器,50Gb/s 的流量。

    最后

    在 ZLMediaKit 流媒体服务器中,通过智能指针引用计数的方式实现了多线程的数据分发,不管分发多少次,数据拷贝次数都是固定的,所以 ZLMediaKit 可以达到如此夸张的性能参数,但是在测试中,我们也能发现,性能占用已经大部分发生在内核态了,应用层的 cpu 占用反而不是瓶颈了。这是因为在内核态,写 socket 缓存需要做内存拷贝,随着播放器个数的增加,内存拷贝会越来越多,此时性能瓶颈不再是应用层,而是由于内存带宽瓶颈导致的内核性能瓶颈。

    + diff --git a/zh/reference/documents/exclusive_features.html b/zh/reference/documents/exclusive_features.html index 3909625..9f57c97 100644 --- a/zh/reference/documents/exclusive_features.html +++ b/zh/reference/documents/exclusive_features.html @@ -30,7 +30,7 @@ ZLMediakit独家特性介绍 | ZLMediaKit - + @@ -106,7 +106,7 @@ #溯源总超时时长,单位秒,float型;假如源站有3个,那么单次溯源超时时间为timeout_sec除以3 #单次溯源超时时间不要超过general.maxStreamWaitMS配置 timeout_sec=15 -

    zlmediakit 的溯源方式支持 rtsp/rtmp/hls/http-ts/http-flv, 方式多样丰富,同时源站不分主备,采用 round robin 方式来实现源站的负载均衡。需要指出的是,由于 zlmediakit 很早就支持 hls 的按需拉流功能,所以 zlmediakit 的边沿站也支持 hls 协议(其实支持 zlmediakit 任意支持的协议),这点是 srs 不具备的。

    另外需要指出的是,由于 zlmediakit 同时支持 rtsp 和 webrtc,而它们两者都是基于 rtp 的,在 zlmediakit 内部,无须转协议简单处理后就可互联互通,所以使用 zlmediakit 来做大规模的 webrtc 低延时直播已经成为可能;相较于传统的基于 rtmp 的 cdn,rtsp 更适合作为 webrtc 的 cdn 基础传输协议,开发者不需要处理繁琐的解复用复用逻辑,即可平滑的实现 rtsp 与 webrtc 的互转。

    6、WebRTC 单端口、多线程、支持连接迁移

    • 痛点:支持多线程的 webrtc 服务器不支持单端口,支持单端口的不支持多线程(同时可能不支持链接迁移)

    • 场景介绍:

      由于 webrtc 传输是基于 udp 协议的,传统的 webrtc 服务器都是多端口模式,譬如 janus/mediasoup。这给部署和管理带来极大痛苦,而且由于端口个数有限(理论上限 6 万多),每个 webrtc 客户端要占用 1 至 4 个端口,受限于端口数量,一台 webrtc 服务器最多可以承载 1~6 万左右的客户端数。

      而支持单端口的 webrtc 服务器(譬如 srs),又不支持多线程;由于 webrtc 计算复杂度(加解密)远大于直播,其性能跟直播比有数量级的差距,所以往往单线程在 webrtc 的应用场景已经力不从心。

      zlmediakit 针对这些痛点,提出了最佳解决方案:

      • 支持单 udp 端口部署,一个 udp 端口承载所有客户端。
      • 单 udp 端口支持多线程,单端口多次 bind/connect 方式实现一个客户端对应一个 fd,fd 均匀分配到不同线程。
      • 用户网络迁移时(譬如 wifi 切换为 4G),通过 stun 包锁定用户,实现无感知的连接迁移,用户体验不中断。

      以上 3 个特性都同时具备的,目前在开源界唯 zlmediakit 一家。

      提示: 关于怎么解决 webrtc 单端口连接迁移和多线程连接迁移时线程安全问题的请观看该视频open in new window

    7、HLS 播放的长链接化

    zlmediakit 通过 cookie 追踪技术实现 hls 短连接的长链接化,依赖该特性,zlm 的 hls 服务器具备了以下独家特性:

    • HLS 播放鉴权,并且播放途中无须再鉴权。
    • HLS 播放流量统计,可以统计播放器播放途中所有短连接消耗流量总数。
    • HLS 按需拉流,可以先播放 zlmediakit 的 HLS 链接,zlmediakit 再去溯源拉流代理。
    • HLS 无人观看时自动停止溯源拉流代理或掐断上游推流。

    另外,zlmediakit 的 hls 服务器性能已优化至极致(通过共享 ts mmap 和内存 m3u8 实现),单进程可以承载 10W 级别 hls 播放器,100Gb/s 级别带宽。

    - +

    zlmediakit 的溯源方式支持 rtsp/rtmp/hls/http-ts/http-flv, 方式多样丰富,同时源站不分主备,采用 round robin 方式来实现源站的负载均衡。需要指出的是,由于 zlmediakit 很早就支持 hls 的按需拉流功能,所以 zlmediakit 的边沿站也支持 hls 协议(其实支持 zlmediakit 任意支持的协议),这点是 srs 不具备的。

    另外需要指出的是,由于 zlmediakit 同时支持 rtsp 和 webrtc,而它们两者都是基于 rtp 的,在 zlmediakit 内部,无须转协议简单处理后就可互联互通,所以使用 zlmediakit 来做大规模的 webrtc 低延时直播已经成为可能;相较于传统的基于 rtmp 的 cdn,rtsp 更适合作为 webrtc 的 cdn 基础传输协议,开发者不需要处理繁琐的解复用复用逻辑,即可平滑的实现 rtsp 与 webrtc 的互转。

    6、WebRTC 单端口、多线程、支持连接迁移

    • 痛点:支持多线程的 webrtc 服务器不支持单端口,支持单端口的不支持多线程(同时可能不支持链接迁移)

    • 场景介绍:

      由于 webrtc 传输是基于 udp 协议的,传统的 webrtc 服务器都是多端口模式,譬如 janus/mediasoup。这给部署和管理带来极大痛苦,而且由于端口个数有限(理论上限 6 万多),每个 webrtc 客户端要占用 1 至 4 个端口,受限于端口数量,一台 webrtc 服务器最多可以承载 1~6 万左右的客户端数。

      而支持单端口的 webrtc 服务器(譬如 srs),又不支持多线程;由于 webrtc 计算复杂度(加解密)远大于直播,其性能跟直播比有数量级的差距,所以往往单线程在 webrtc 的应用场景已经力不从心。

      zlmediakit 针对这些痛点,提出了最佳解决方案:

      • 支持单 udp 端口部署,一个 udp 端口承载所有客户端。
      • 单 udp 端口支持多线程,单端口多次 bind/connect 方式实现一个客户端对应一个 fd,fd 均匀分配到不同线程。
      • 用户网络迁移时(譬如 wifi 切换为 4G),通过 stun 包锁定用户,实现无感知的连接迁移,用户体验不中断。

      以上 3 个特性都同时具备的,目前在开源界唯 zlmediakit 一家。

      提示: 关于怎么解决 webrtc 单端口连接迁移和多线程连接迁移时线程安全问题的请观看该视频open in new window

    7、HLS 播放的长链接化

    zlmediakit 通过 cookie 追踪技术实现 hls 短连接的长链接化,依赖该特性,zlm 的 hls 服务器具备了以下独家特性:

    • HLS 播放鉴权,并且播放途中无须再鉴权。
    • HLS 播放流量统计,可以统计播放器播放途中所有短连接消耗流量总数。
    • HLS 按需拉流,可以先播放 zlmediakit 的 HLS 链接,zlmediakit 再去溯源拉流代理。
    • HLS 无人观看时自动停止溯源拉流代理或掐断上游推流。

    另外,zlmediakit 的 hls 服务器性能已优化至极致(通过共享 ts mmap 和内存 m3u8 实现),单进程可以承载 10W 级别 hls 播放器,100Gb/s 级别带宽。

    + diff --git a/zh/reference/documents/high_concurrency_implementation_principle.html b/zh/reference/documents/high_concurrency_implementation_principle.html index 03b229f..c0d6d1f 100644 --- a/zh/reference/documents/high_concurrency_implementation_principle.html +++ b/zh/reference/documents/high_concurrency_implementation_principle.html @@ -30,7 +30,7 @@ ZLMediaKit高并发实现原理 | ZLMediaKit - + @@ -373,7 +373,7 @@ ++it; } } -

    采用右值引用拷贝

    ZLMediaKit 中也尽量使用右值引用拷贝来规避内存拷贝,这里就不展开论述。

    其他特性

    优化及时推流打开率

    有些应用场景需要设备端开始推流,然后 APP 立即观看的应用场景。传统的 rtmp 服务器对此应用场景是未作任何优化的,如果 APP 播放请求在推流尚未建立之前到达,那么将导致 APP 播放失败,这样视频打开成功率就会降低,用户体验很不好。

    ZLMediaKit 在针对该应用场景时,做了特别的优化;实现原理如下:

    1、收到播放请求时,立即检查是否已经存在的媒体源,如果存在返回播放成功,否则进入第 2 步。

    2、监听对应的媒体源注册事件,同时添加播放超时定时器,并且不回复播放器然后返回。逻辑将进入第 3 步或第 4 步。

    3、媒体源注册成功,那么立即响应播放器播放成功,同时删除播放超时定时器,并移除媒体注册事件监听。

    4、超时定时器触发,响应播放器播放失败,同时删除播放超时定时器,并移除媒体注册事件监听。

    使用 ZLMediaKit 作为流媒体服务器,可以 APP 播放请求和设备端推流同时进行。

    性能测试对比

    目前对 ZLMediaKit 做了一些性能测试,查看地址:benchmark

    在测试时发现,ZLMediaKit 在负载比较低时,其单线程性能大概是 SRS 的 50%,单条线程大概能支撑 5K 个播放器,导致这个性能差距的主要原因时由于采用本地轮回网络,网络状况为理想,那么 sendmsg 批量发送将不起优化左右;而 SRS 使用了合并写特性(就是缓存 300 毫秒左右的数据后一次性发送),可以减少系统调用次数;如果负载比较高,以及真实网络环境下,ZLMediaKit 单线程性能应该跟 SRS 差距更小,我们在测试报告中也能发现在客户端比较多时,ZLMediaKit 单线程线程性能有比较大的提升。

    由于 ZLMediaKit 支持多线程,可以充分利用多核 CPU 的性能,在多核服务器上,CPU 已经不再是性能瓶颈,为了减少直播延时,目前合并写特性是默认关闭的,可以通过配置文件开启。

    - +

    采用右值引用拷贝

    ZLMediaKit 中也尽量使用右值引用拷贝来规避内存拷贝,这里就不展开论述。

    其他特性

    优化及时推流打开率

    有些应用场景需要设备端开始推流,然后 APP 立即观看的应用场景。传统的 rtmp 服务器对此应用场景是未作任何优化的,如果 APP 播放请求在推流尚未建立之前到达,那么将导致 APP 播放失败,这样视频打开成功率就会降低,用户体验很不好。

    ZLMediaKit 在针对该应用场景时,做了特别的优化;实现原理如下:

    1、收到播放请求时,立即检查是否已经存在的媒体源,如果存在返回播放成功,否则进入第 2 步。

    2、监听对应的媒体源注册事件,同时添加播放超时定时器,并且不回复播放器然后返回。逻辑将进入第 3 步或第 4 步。

    3、媒体源注册成功,那么立即响应播放器播放成功,同时删除播放超时定时器,并移除媒体注册事件监听。

    4、超时定时器触发,响应播放器播放失败,同时删除播放超时定时器,并移除媒体注册事件监听。

    使用 ZLMediaKit 作为流媒体服务器,可以 APP 播放请求和设备端推流同时进行。

    性能测试对比

    目前对 ZLMediaKit 做了一些性能测试,查看地址:benchmark

    在测试时发现,ZLMediaKit 在负载比较低时,其单线程性能大概是 SRS 的 50%,单条线程大概能支撑 5K 个播放器,导致这个性能差距的主要原因时由于采用本地轮回网络,网络状况为理想,那么 sendmsg 批量发送将不起优化左右;而 SRS 使用了合并写特性(就是缓存 300 毫秒左右的数据后一次性发送),可以减少系统调用次数;如果负载比较高,以及真实网络环境下,ZLMediaKit 单线程性能应该跟 SRS 差距更小,我们在测试报告中也能发现在客户端比较多时,ZLMediaKit 单线程线程性能有比较大的提升。

    由于 ZLMediaKit 支持多线程,可以充分利用多核 CPU 的性能,在多核服务器上,CPU 已经不再是性能瓶颈,为了减少直播延时,目前合并写特性是默认关闭的,可以通过配置文件开启。

    + diff --git a/zh/reference/documents/index.html b/zh/reference/documents/index.html index 0c3ac5c..c60aed7 100644 --- a/zh/reference/documents/index.html +++ b/zh/reference/documents/index.html @@ -30,11 +30,11 @@ 相关文档 | ZLMediaKit - + - - + + diff --git a/zh/reference/documents/introduction_to_streaming_media_related_technologies.html b/zh/reference/documents/introduction_to_streaming_media_related_technologies.html index e8c0304..201cd75 100644 --- a/zh/reference/documents/introduction_to_streaming_media_related_technologies.html +++ b/zh/reference/documents/introduction_to_streaming_media_related_technologies.html @@ -30,11 +30,11 @@ 流媒体相关技术介绍 | ZLMediaKit - + -
    跳至主要內容

    流媒体相关技术介绍

    ZLMediaKit大约 10 分钟

    1、流媒体简介

    流媒体(streaming media)是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件,这对于实时性要求比较高的场景而言,显然是不现实的,所以流媒体技术为此孕育而生。

    传统的视频监控、IPTV,以及这几年兴起的视频直播、网络授课都属于流媒体的范畴,从广义上来讲,视频通话,视频会议也属于流媒体。

    2、视频监控

    2.1 传统解决方案的现状和挑战

    视频监控是流媒体技术传统的应用场景,在政府、企业以及现在逐渐流行的个人消费市场有着广泛的应用。特别是近几年来,国内各大城市逐步推进平安城市项目进程,在安防、交通等领域,视频监控市场规模愈发壮大。而且随着室内家居摄像头、车载记录仪的普及,视频监控可以说在人们的生活中无处不在。

    传统的视频监控解决方案主要建立在基于 LAN 的网络、服务器、录像机和摄像机的基础之上。这些高度复杂的解决方案具有很高的施工和维护成本, 因为传统基础设施价格高昂,并且需要时间来规划、实施和维护。传统的视频监控解决方案也不好扩容维护,对于用户而言,也不友好,操作使用局限在局域网中,已经难以适合新时代的发展。

    2.2 发展趋势

    由于一些互联网企业的入局,视频监控行业也在经历一系列的变局,譬如小米摄像头、360 水滴摄像头的流行,也鞭策着传统的视频监控行业相关企业的变革(譬如海康威视推出的萤石云平台),虽然目前这些变革多数还局限于个人消费市场,但从长远来看,视频监控上云,是未来发展的大趋势。

    基于云的视频监控解决方案由于其高质量、可靠性、安全性、便捷性以及较低的部署和维护成本而越来越受到人们的青睐。

    预计未来视频监控,将像目前流行的网络直播一样方便,用户安装好摄像头后,接入网络即可视频上云。使用者在浏览器或 APP 即可查看所有摄像头的实时监控以及历史录像,通过 APP 或绑定的手机号码,可以实时接收摄像头发送的事件通知(譬如入侵事件)。

    2.3 技术难点

    由于历史原因,传统的视频监控行业技术栈多采用私有协议 SDK、onvif/rtsp 等协议栈。这些协议目前对浏览器而言都不友好,在以前 IE 浏览器还流行的时期,可以通过 ocx 插件的方式来对接这些协议,但是随着 IE 的没落以及目前流行的 chrome、火狐浏览器对原生插件的愈加不友好,通过插件的方式来实现访问监控视频的方式将愈发困难。如果要在 chrome、火狐浏览器上访问监控视频,目前有以下几种方案可行:

    • rtmp

      目前主流的 chrome 和火狐浏览器都还支持 flash 插件,所以目前在浏览器上还可以通过 rtmp 方式来访问监控视频。但是由于随着 html5 的普及以及 flash 的停止更新,预计可预见的未来,rtmp 技术将随着 flash 一起行将就木(谷歌宣布 chrome 浏览器 2020 年 12 月将不再支持 flash player)。

    • http-flv

    http-flv 直播的方式是一种比较新颖的方式,该技术基于 html5,可以通过无插件的方式实现视频直播,而且由于 rtmp 负载可以平滑的转换成 http-flv 协议,所以正在逐渐取代 rtmp 成为新的直播技术标准,目前各大直播网站(譬如斗鱼直播,bilibili 等)也陆续从 rtmp 切换成该技术。 但是由于浏览器的限制,不能同时打开过多(chrome 限制 6 个)的同域名下的直播窗口,所以该技术也不太适合多路同时打开(譬如 9 宫格视频)的视频监控领域。而且由于 Adobe 的不作为,flv 容器格式停止了更新,对 H265 的支持遥遥无期。

    • ws-flv

      ws-flv 直播技术基本与 http-flv 一致,无非是传输介质换成了 websocket 协议,除了解除了 http-flv 不能同时打开过多同域名下的直播窗口的限制,其他技术特性、参数基本与 http-flv 一致。目前看,ws-flv 既适合视频监控(可以同时打开多路监控视频)也适合视频直播行业,是 rtmp 很高的升级替代方案。

    • webrtc

      webrtc 是谷歌主导的视频通话技术标准,目前各大主流浏览器都兼容该标准。通过该技术,用户可以在浏览器上实现无插件的视频通话,该技术也可以用于实现低延时的视频直播。目前业界也有很多基于 webrtc 的应用和产品,但是很多局限于视频聊天等低延时交互式场景,在视频监控领域,目前还尚未流行。而且该技术栈目前还在持续更新,技术难点太多,要与视频监控领域融合还需时日。

    • hls

      hls 协议是苹果公司主导的技术标准,该技术标准兼容性最佳。不仅桌面浏览器,包括手机浏览器甚至是手机 QQ、手机微信都支持该直播协议。 但是该协议延时比较大,不太适合视频监控等对延时要求很敏感的行业。不过最近苹果公司新推出低延时 hls 直播标准,预计 hls 标准将抢占更大的市场份额。

    以上直播技术标准目前都不完全契合视频监控行业的需求,如果要达到比较好的用户体验,通常以上技术混合使用。

    3、视频直播

    3.1 视频直播的现状和挑战

    视频直播是近几年才兴起的产业,特别是随着游戏直播、手机直播的流行,视频直播已经司空见惯,进入了每个人的视野。 随着阿里、腾讯等云平台的入局,OBS,SRS 等优秀软件的开源,视频加速 CDN 技术的成熟,打赏、广告等商业模式的落地,目前视频直播产业链已经非常成熟,业界也诞生了斗鱼、虎牙、映客、花椒等知名直播平台。

    目前而言,这些直播平台使用的技术栈基本都是 rtmp,但是由于 flash 技术即将被淘汰,所以直播行业也将迎来一些变局以及挑战。 现在,基本上所有的直播平台,在 web 端,都已经或正在往 http-flv 方案转型。由于 flv 与 rtmp 同出一门(都是 Adobe 公司产品),负载格式一致,方案升级改造平滑可靠,http-flv 替代 rtmp 具有天然的优势,相信将来 http-flv 能很好的挑起 rtmp 的大梁。

    3.2 发展趋势

    视频直播目前从内容上来讲,涵盖了游戏、美女、户外、娱乐、体育等直播;从设备上来讲,涵盖了 PC、手机、web、电视等客户端,市场上也诞生了斗鱼这样的头部企业。从目前来看,视频直播行业市场格局已经比较稳固,进入了平稳发展期。

    从技术上来讲,直播行业也将迎来一些变革。 一是 rtmp 技术随着 flash 的一起淘汰,web 端 rtmp 播放器将成为历史。 二是随着 webrtc 的强势流行,直播技术栈可能与 webrtc 融合。 三是苹果主导的低延时 hls 的推出,可能最终有大一统之势。

    不过近期来看,http-flv 是 rtmp 的最佳替代方案,但是和 rtmp 一样,也有不支持 H265 的短板,而且移动端浏览器对此支持并不完善,所以该方案在将来有大概率会被其他方案替代。

    3.3 技术难点

    直播行业相对视频监控行业来说,商业化程度更高,更面向于普通消费者,用户规模更大,产业链也更加成熟。但是由于利益格局的划分、巨头间标准制定的角力,目前直播的技术标准和用户体验是割裂的。

    在桌面 web 端,之前直播技术由 Adobe 旗下的 flash/rtmp 技术主导,不过由于 Adobe 的不作为,以及谷歌苹果等公司的抵制,flash 已经进入死亡倒计时。目前来看,http-flv 已经接手 rtmp 的大旗,成为了新的事实上的桌面 web 端直播标准。但是 http-flv 由于其不支持 H265 的短板(Adobe 官方可能永远也不会支持 H265),其地位也并不稳固,现在也有公司正在尝试使用 webrtc 进行视频直播,但是由于该技术跨界太大,其技术栈又太庞杂,整个上下游产业链也并不完善,目前在直播界,还未看见大规模采用该直播技术的方案实施。

    在手机 APP 端,由于播放技术自己可以主导,也由于历史沿革原因,目前一般沿用 rtmp 技术方案(需要指出的是微信小程序也支持 rtmp 播放器),用户体验比较好,延时一般 3 秒或以下。

    在移动 web 端,可采用的直播方案更少,目前基本只能采用苹果公司主导的 hls 方案,但是由于 hls 的技术特性,延时非常大(一般 5 秒以上,最大可达 10 秒以上),其观看体验跟手机 APP、桌面 web 端是严重割裂的。

    通过我们上述的分析看出,目前直播技术方案,在每种端都不一样,用户体验也差距巨大,目前并没有一种多平台支持、令人满意的通用解决方案。目前要实现一个完善的直播产品,最少要采用包括 rtmp/http-flv/hls 这 3 种技术方案,而且这三种技术方案目前也并不能让人满意(rtmp/http-flv 不支持 H265,hls 延时高)。

    4、我们的解决方案以及优势

    目前我们的流媒体服务框架支持 rtsp/rtmp 推流客户端,rtsp/rtmp/http-flv/ws-flv/hls 播放客户端,并且可以无缝把 rtsp/rtmp 推流转换成上述 4 种播放协议,同时我们也支持 mp4 录制存档,必要的时候也可以从 mp4 文件加载成直播流。

    除了上述功能之外,我们还支持拉流 rtsp/rtmp 代理成 rtsp/rtmp/http-flv/ws-flv/hls,也支持把直播 rtsp/rtmp 流推送到其他的服务器。

    另外,我们还提供丰富的 http api 以及 http hook api,通过这些 api,我们可以与其他业务服务器一起,打造丰富的业务逻辑。

    我们的流媒体框架支持 linux、macos、ios、android、windows 全平台,既可以作为商用的流媒体服务器,也可以移植到嵌入式设备中,作为基础流媒体服务组件。

    代码采用 C++11 标准打造,避免使用裸指针,稳定可靠,采用 epoll 多路复用、线程池、异步网络 IO 模式开发,并发性能优越,已经经受住了长期的高并发验证考验。同时针对及时推流的特征,做了特别的优化,可以减少视频打开延时、提高画面打开成功率,让用户获取画面秒开,延时极低的体验。

    - +
    跳至主要內容

    流媒体相关技术介绍

    ZLMediaKit大约 10 分钟

    1、流媒体简介

    流媒体(streaming media)是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件,这对于实时性要求比较高的场景而言,显然是不现实的,所以流媒体技术为此孕育而生。

    传统的视频监控、IPTV,以及这几年兴起的视频直播、网络授课都属于流媒体的范畴,从广义上来讲,视频通话,视频会议也属于流媒体。

    2、视频监控

    2.1 传统解决方案的现状和挑战

    视频监控是流媒体技术传统的应用场景,在政府、企业以及现在逐渐流行的个人消费市场有着广泛的应用。特别是近几年来,国内各大城市逐步推进平安城市项目进程,在安防、交通等领域,视频监控市场规模愈发壮大。而且随着室内家居摄像头、车载记录仪的普及,视频监控可以说在人们的生活中无处不在。

    传统的视频监控解决方案主要建立在基于 LAN 的网络、服务器、录像机和摄像机的基础之上。这些高度复杂的解决方案具有很高的施工和维护成本, 因为传统基础设施价格高昂,并且需要时间来规划、实施和维护。传统的视频监控解决方案也不好扩容维护,对于用户而言,也不友好,操作使用局限在局域网中,已经难以适合新时代的发展。

    2.2 发展趋势

    由于一些互联网企业的入局,视频监控行业也在经历一系列的变局,譬如小米摄像头、360 水滴摄像头的流行,也鞭策着传统的视频监控行业相关企业的变革(譬如海康威视推出的萤石云平台),虽然目前这些变革多数还局限于个人消费市场,但从长远来看,视频监控上云,是未来发展的大趋势。

    基于云的视频监控解决方案由于其高质量、可靠性、安全性、便捷性以及较低的部署和维护成本而越来越受到人们的青睐。

    预计未来视频监控,将像目前流行的网络直播一样方便,用户安装好摄像头后,接入网络即可视频上云。使用者在浏览器或 APP 即可查看所有摄像头的实时监控以及历史录像,通过 APP 或绑定的手机号码,可以实时接收摄像头发送的事件通知(譬如入侵事件)。

    2.3 技术难点

    由于历史原因,传统的视频监控行业技术栈多采用私有协议 SDK、onvif/rtsp 等协议栈。这些协议目前对浏览器而言都不友好,在以前 IE 浏览器还流行的时期,可以通过 ocx 插件的方式来对接这些协议,但是随着 IE 的没落以及目前流行的 chrome、火狐浏览器对原生插件的愈加不友好,通过插件的方式来实现访问监控视频的方式将愈发困难。如果要在 chrome、火狐浏览器上访问监控视频,目前有以下几种方案可行:

    • rtmp

      目前主流的 chrome 和火狐浏览器都还支持 flash 插件,所以目前在浏览器上还可以通过 rtmp 方式来访问监控视频。但是由于随着 html5 的普及以及 flash 的停止更新,预计可预见的未来,rtmp 技术将随着 flash 一起行将就木(谷歌宣布 chrome 浏览器 2020 年 12 月将不再支持 flash player)。

    • http-flv

    http-flv 直播的方式是一种比较新颖的方式,该技术基于 html5,可以通过无插件的方式实现视频直播,而且由于 rtmp 负载可以平滑的转换成 http-flv 协议,所以正在逐渐取代 rtmp 成为新的直播技术标准,目前各大直播网站(譬如斗鱼直播,bilibili 等)也陆续从 rtmp 切换成该技术。 但是由于浏览器的限制,不能同时打开过多(chrome 限制 6 个)的同域名下的直播窗口,所以该技术也不太适合多路同时打开(譬如 9 宫格视频)的视频监控领域。而且由于 Adobe 的不作为,flv 容器格式停止了更新,对 H265 的支持遥遥无期。

    • ws-flv

      ws-flv 直播技术基本与 http-flv 一致,无非是传输介质换成了 websocket 协议,除了解除了 http-flv 不能同时打开过多同域名下的直播窗口的限制,其他技术特性、参数基本与 http-flv 一致。目前看,ws-flv 既适合视频监控(可以同时打开多路监控视频)也适合视频直播行业,是 rtmp 很高的升级替代方案。

    • webrtc

      webrtc 是谷歌主导的视频通话技术标准,目前各大主流浏览器都兼容该标准。通过该技术,用户可以在浏览器上实现无插件的视频通话,该技术也可以用于实现低延时的视频直播。目前业界也有很多基于 webrtc 的应用和产品,但是很多局限于视频聊天等低延时交互式场景,在视频监控领域,目前还尚未流行。而且该技术栈目前还在持续更新,技术难点太多,要与视频监控领域融合还需时日。

    • hls

      hls 协议是苹果公司主导的技术标准,该技术标准兼容性最佳。不仅桌面浏览器,包括手机浏览器甚至是手机 QQ、手机微信都支持该直播协议。 但是该协议延时比较大,不太适合视频监控等对延时要求很敏感的行业。不过最近苹果公司新推出低延时 hls 直播标准,预计 hls 标准将抢占更大的市场份额。

    以上直播技术标准目前都不完全契合视频监控行业的需求,如果要达到比较好的用户体验,通常以上技术混合使用。

    3、视频直播

    3.1 视频直播的现状和挑战

    视频直播是近几年才兴起的产业,特别是随着游戏直播、手机直播的流行,视频直播已经司空见惯,进入了每个人的视野。 随着阿里、腾讯等云平台的入局,OBS,SRS 等优秀软件的开源,视频加速 CDN 技术的成熟,打赏、广告等商业模式的落地,目前视频直播产业链已经非常成熟,业界也诞生了斗鱼、虎牙、映客、花椒等知名直播平台。

    目前而言,这些直播平台使用的技术栈基本都是 rtmp,但是由于 flash 技术即将被淘汰,所以直播行业也将迎来一些变局以及挑战。 现在,基本上所有的直播平台,在 web 端,都已经或正在往 http-flv 方案转型。由于 flv 与 rtmp 同出一门(都是 Adobe 公司产品),负载格式一致,方案升级改造平滑可靠,http-flv 替代 rtmp 具有天然的优势,相信将来 http-flv 能很好的挑起 rtmp 的大梁。

    3.2 发展趋势

    视频直播目前从内容上来讲,涵盖了游戏、美女、户外、娱乐、体育等直播;从设备上来讲,涵盖了 PC、手机、web、电视等客户端,市场上也诞生了斗鱼这样的头部企业。从目前来看,视频直播行业市场格局已经比较稳固,进入了平稳发展期。

    从技术上来讲,直播行业也将迎来一些变革。 一是 rtmp 技术随着 flash 的一起淘汰,web 端 rtmp 播放器将成为历史。 二是随着 webrtc 的强势流行,直播技术栈可能与 webrtc 融合。 三是苹果主导的低延时 hls 的推出,可能最终有大一统之势。

    不过近期来看,http-flv 是 rtmp 的最佳替代方案,但是和 rtmp 一样,也有不支持 H265 的短板,而且移动端浏览器对此支持并不完善,所以该方案在将来有大概率会被其他方案替代。

    3.3 技术难点

    直播行业相对视频监控行业来说,商业化程度更高,更面向于普通消费者,用户规模更大,产业链也更加成熟。但是由于利益格局的划分、巨头间标准制定的角力,目前直播的技术标准和用户体验是割裂的。

    在桌面 web 端,之前直播技术由 Adobe 旗下的 flash/rtmp 技术主导,不过由于 Adobe 的不作为,以及谷歌苹果等公司的抵制,flash 已经进入死亡倒计时。目前来看,http-flv 已经接手 rtmp 的大旗,成为了新的事实上的桌面 web 端直播标准。但是 http-flv 由于其不支持 H265 的短板(Adobe 官方可能永远也不会支持 H265),其地位也并不稳固,现在也有公司正在尝试使用 webrtc 进行视频直播,但是由于该技术跨界太大,其技术栈又太庞杂,整个上下游产业链也并不完善,目前在直播界,还未看见大规模采用该直播技术的方案实施。

    在手机 APP 端,由于播放技术自己可以主导,也由于历史沿革原因,目前一般沿用 rtmp 技术方案(需要指出的是微信小程序也支持 rtmp 播放器),用户体验比较好,延时一般 3 秒或以下。

    在移动 web 端,可采用的直播方案更少,目前基本只能采用苹果公司主导的 hls 方案,但是由于 hls 的技术特性,延时非常大(一般 5 秒以上,最大可达 10 秒以上),其观看体验跟手机 APP、桌面 web 端是严重割裂的。

    通过我们上述的分析看出,目前直播技术方案,在每种端都不一样,用户体验也差距巨大,目前并没有一种多平台支持、令人满意的通用解决方案。目前要实现一个完善的直播产品,最少要采用包括 rtmp/http-flv/hls 这 3 种技术方案,而且这三种技术方案目前也并不能让人满意(rtmp/http-flv 不支持 H265,hls 延时高)。

    4、我们的解决方案以及优势

    目前我们的流媒体服务框架支持 rtsp/rtmp 推流客户端,rtsp/rtmp/http-flv/ws-flv/hls 播放客户端,并且可以无缝把 rtsp/rtmp 推流转换成上述 4 种播放协议,同时我们也支持 mp4 录制存档,必要的时候也可以从 mp4 文件加载成直播流。

    除了上述功能之外,我们还支持拉流 rtsp/rtmp 代理成 rtsp/rtmp/http-flv/ws-flv/hls,也支持把直播 rtsp/rtmp 流推送到其他的服务器。

    另外,我们还提供丰富的 http api 以及 http hook api,通过这些 api,我们可以与其他业务服务器一起,打造丰富的业务逻辑。

    我们的流媒体框架支持 linux、macos、ios、android、windows 全平台,既可以作为商用的流媒体服务器,也可以移植到嵌入式设备中,作为基础流媒体服务组件。

    代码采用 C++11 标准打造,避免使用裸指针,稳定可靠,采用 epoll 多路复用、线程池、异步网络 IO 模式开发,并发性能优越,已经经受住了长期的高并发验证考验。同时针对及时推流的特征,做了特别的优化,可以减少视频打开延时、提高画面打开成功率,让用户获取画面秒开,延时极低的体验。

    + diff --git a/zh/reference/documents/rtsp_push_process.html b/zh/reference/documents/rtsp_push_process.html index 6872604..7253ef6 100644 --- a/zh/reference/documents/rtsp_push_process.html +++ b/zh/reference/documents/rtsp_push_process.html @@ -30,7 +30,7 @@ RTSP推流流程 | ZLMediaKit - + @@ -87,7 +87,7 @@ RTP-Info: url=rtsp://10.0.9.130:554/live/2.sdp/streamid=0,url=rtsp://10.0.9.130:554/live/2.sdp/streamid=1 Server: ZLMediaKit-4.0(build in Mar 26 2019 17:01:17) Session: KPUZ49ejotyD -
    - +
    + diff --git a/zh/reference/documents/the_nature_of_live_broadcast_delay.html b/zh/reference/documents/the_nature_of_live_broadcast_delay.html index 35b2e2f..b99a768 100644 --- a/zh/reference/documents/the_nature_of_live_broadcast_delay.html +++ b/zh/reference/documents/the_nature_of_live_broadcast_delay.html @@ -30,11 +30,11 @@ 直播延时的本质 | ZLMediaKit - + -
    跳至主要內容

    直播延时的本质

    ZLMediaKit大约 2 分钟

    • 1、所谓直播就是正在发生的事情,流逝多少时间产生多少数据。

    • 2、那么直播为什么会有延时?本质是,直播为了提升体验,会给缓存一部分历史数据(比如说为了提高画面打开速度做 GOP 缓存)。

    • 3、那是不是没有 GOP 缓存就不会有延时呢?答案是错误的,因为不仅仅你的服务器有缓存,播放器也有缓存。播放器在点击开始播放出现画面会有时间差,那么为什么播放器要这么做?原因是播放器为了提高播放流畅度,做了缓存。直播数据传到播放器我们可以认为是一根水管,这跟水管水量时大时小,有时干脆断流,如果不用缓存一下,那么画面会卡顿。

    • 4、假定我们削掉服务器和播放器所有的缓存,那么是不是就没有延时呢?Too yong too simple!记住,缓存是永远无法消灭的。假定网络是根水管,我们掐住它 5 秒,然后再放开手,那么这 5 秒的数据会消失吗?并不会!直播是正在发生的事情,它会源源不断产生水量,会把水管涨粗,在这 5 秒内,播放器就得干等数据,等网络恢复了,那么这 5 秒的数据会一股脑怼给播放器,然后又是接着的源源不断过来的直播数据,这样播放器就多了 5 秒的数据,而这多出来 5 秒的数据要么直接丢弃要么加快播放速度,否则永远都不会凭空消灭掉。

    • 5、很遗憾的告诉你,几乎所有标准播放器,都不会直接丢数据或加快播放速度。

    • 6、那细心的小伙伴会问我,为什么 UDP 直播延时更低?原因是 UDP 这根管子上有很多破洞,水量太大了直接漏了,表现形式就是数据直接丢了,那么播放器就得花屏了。

    • 7、TCP 水管涨粗可以理解为网络链路缓存的增加(路由器缓存增加),如果滞留的水量太大了怎么办?那么先是撑满网络链路缓存,然后撑满发送端 Socket 缓存,然后撑满发送端应用逻辑缓存,如果还放不下,那么对不起,服务器只能掐断 TCP 了。

    - +
    跳至主要內容

    直播延时的本质

    ZLMediaKit大约 2 分钟

    • 1、所谓直播就是正在发生的事情,流逝多少时间产生多少数据。

    • 2、那么直播为什么会有延时?本质是,直播为了提升体验,会给缓存一部分历史数据(比如说为了提高画面打开速度做 GOP 缓存)。

    • 3、那是不是没有 GOP 缓存就不会有延时呢?答案是错误的,因为不仅仅你的服务器有缓存,播放器也有缓存。播放器在点击开始播放出现画面会有时间差,那么为什么播放器要这么做?原因是播放器为了提高播放流畅度,做了缓存。直播数据传到播放器我们可以认为是一根水管,这跟水管水量时大时小,有时干脆断流,如果不用缓存一下,那么画面会卡顿。

    • 4、假定我们削掉服务器和播放器所有的缓存,那么是不是就没有延时呢?Too yong too simple!记住,缓存是永远无法消灭的。假定网络是根水管,我们掐住它 5 秒,然后再放开手,那么这 5 秒的数据会消失吗?并不会!直播是正在发生的事情,它会源源不断产生水量,会把水管涨粗,在这 5 秒内,播放器就得干等数据,等网络恢复了,那么这 5 秒的数据会一股脑怼给播放器,然后又是接着的源源不断过来的直播数据,这样播放器就多了 5 秒的数据,而这多出来 5 秒的数据要么直接丢弃要么加快播放速度,否则永远都不会凭空消灭掉。

    • 5、很遗憾的告诉你,几乎所有标准播放器,都不会直接丢数据或加快播放速度。

    • 6、那细心的小伙伴会问我,为什么 UDP 直播延时更低?原因是 UDP 这根管子上有很多破洞,水量太大了直接漏了,表现形式就是数据直接丢了,那么播放器就得花屏了。

    • 7、TCP 水管涨粗可以理解为网络链路缓存的增加(路由器缓存增加),如果滞留的水量太大了怎么办?那么先是撑满网络链路缓存,然后撑满发送端 Socket 缓存,然后撑满发送端应用逻辑缓存,如果还放不下,那么对不起,服务器只能掐断 TCP 了。

    + diff --git a/zh/reference/index.html b/zh/reference/index.html index dbaeed7..716cf74 100644 --- a/zh/reference/index.html +++ b/zh/reference/index.html @@ -30,11 +30,11 @@ Reference | ZLMediaKit - + - - + + diff --git a/zh/reference/resources/dependency.html b/zh/reference/resources/dependency.html index 39b4bd9..d61b171 100644 --- a/zh/reference/resources/dependency.html +++ b/zh/reference/resources/dependency.html @@ -30,11 +30,11 @@ 代码依赖与版权声明 | ZLMediaKit - + -
    跳至主要內容

    代码依赖与版权声明

    ZLMediaKit大约 2 分钟

    一、zlmediakit 依赖的库列表

    依赖组件协议类型备注项目地址
    ZLToolKitMIT强依赖,ZLToolKit 也部分依赖某些开源代码https://github.com/ZLMediaKit/ZLToolKit
    ireader/media-serverMIT默认依赖,编译时指定 ENABLE_HLS,ENABLE_MP4,ENABLE_RTPPROXY 为关闭时可以去除依赖https://github.com/ireader/media-server
    jsoncppMITMediaServer 依赖https://github.com/open-source-parsers/jsoncpp
    opensslApache-2.0开启 ssl 和 webrtc 相关功能时依赖,编译时指定 ENABLE_OPENSSL,ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/openssl/openssl
    srtp类 MIT开启 webrtc 相关功能时依赖,编译时指定 ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/cisco/libsrtp
    usrsctpBSD-3-Clause开启 webrtc datachannel 相关功能时依赖,编译时指定 ENABLE_SCTP 为关闭时可以去除依赖https://github.com/sctplab/usrsctp
    mediasoupISC部分 webrtc 源码提取自 mediasoup,编译时指定 ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/versatica/mediasoup
    ffmpegGPL/LGPL转码分支与 mk_api 有轻微依赖,编译时指定 ENABLE_FFMPEG 为关闭时可以去除依赖,默认关闭https://github.com/FFmpeg/FFmpeg
    wepoll类 MITWindows 下编译 ENABLE_WPOLL 为开始时依赖,默认关闭https://github.com/piscisaureus/wepoll
    SPSParsersps/pps 相关解析代码,来自朋友,经过修改,应该最开始提取自 ffmpeg,版权存疑https://github.com/ZLMediaKit/ZLMediaKit/blob/master/src/Extension/SPSParser.h

    二、其他依赖

    • 开启编译 test_player 测试程序时依赖 sdl。
    • 开启 x264/faac 相关功能时依赖 libx264 与 libfacc,默认关闭。
    • 开启 jemalloc 时依赖 jemalloc,默认关闭。
    • 开始 mysql 连接池功能时依赖 libmysql-clinet,默认关闭。

    三、ZLToolkit 相关依赖

    - +
    跳至主要內容

    代码依赖与版权声明

    ZLMediaKit大约 2 分钟

    一、zlmediakit 依赖的库列表

    依赖组件协议类型备注项目地址
    ZLToolKitMIT强依赖,ZLToolKit 也部分依赖某些开源代码https://github.com/ZLMediaKit/ZLToolKit
    ireader/media-serverMIT默认依赖,编译时指定 ENABLE_HLS,ENABLE_MP4,ENABLE_RTPPROXY 为关闭时可以去除依赖https://github.com/ireader/media-server
    jsoncppMITMediaServer 依赖https://github.com/open-source-parsers/jsoncpp
    opensslApache-2.0开启 ssl 和 webrtc 相关功能时依赖,编译时指定 ENABLE_OPENSSL,ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/openssl/openssl
    srtp类 MIT开启 webrtc 相关功能时依赖,编译时指定 ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/cisco/libsrtp
    usrsctpBSD-3-Clause开启 webrtc datachannel 相关功能时依赖,编译时指定 ENABLE_SCTP 为关闭时可以去除依赖https://github.com/sctplab/usrsctp
    mediasoupISC部分 webrtc 源码提取自 mediasoup,编译时指定 ENABLE_WEBRTC 为关闭时可以去除依赖https://github.com/versatica/mediasoup
    ffmpegGPL/LGPL转码分支与 mk_api 有轻微依赖,编译时指定 ENABLE_FFMPEG 为关闭时可以去除依赖,默认关闭https://github.com/FFmpeg/FFmpeg
    wepoll类 MITWindows 下编译 ENABLE_WPOLL 为开始时依赖,默认关闭https://github.com/piscisaureus/wepoll
    SPSParsersps/pps 相关解析代码,来自朋友,经过修改,应该最开始提取自 ffmpeg,版权存疑https://github.com/ZLMediaKit/ZLMediaKit/blob/master/src/Extension/SPSParser.h

    二、其他依赖

    • 开启编译 test_player 测试程序时依赖 sdl。
    • 开启 x264/faac 相关功能时依赖 libx264 与 libfacc,默认关闭。
    • 开启 jemalloc 时依赖 jemalloc,默认关闭。
    • 开始 mysql 连接池功能时依赖 libmysql-clinet,默认关闭。

    三、ZLToolkit 相关依赖

    + diff --git a/zh/reference/resources/index.html b/zh/reference/resources/index.html index 3fd982e..17fcfc5 100644 --- a/zh/reference/resources/index.html +++ b/zh/reference/resources/index.html @@ -30,11 +30,11 @@ 相关资源 | ZLMediaKit - + - - + + diff --git a/zh/reference/resources/rtmp_support_for_h265_and_opus.html b/zh/reference/resources/rtmp_support_for_h265_and_opus.html index 6382c9c..d05d058 100644 --- a/zh/reference/resources/rtmp_support_for_h265_and_opus.html +++ b/zh/reference/resources/rtmp_support_for_h265_and_opus.html @@ -30,11 +30,11 @@ RTMP对H265和OPUS的支持 | ZLMediaKit - + -
    跳至主要內容

    RTMP对H265和OPUS的支持

    ZLMediaKit大约 1 分钟

    背景

    rtmp/flv 是直播行业事实上的标准,这两者在国内直播领域应用非常广泛。在浏览器上要实现无插件的低延时直播播放,基本绕不开 rtmp/flv. 由于 rtmp/flv 是 Adobe 设计的私有协议,原生是不支持 H265(视频监控应用广泛)和 opus(RTC 应用广泛)的,而目前视频监控、RTC 相关行业都有使用直播基础设施的需求,所以对 rtmp 进行修改,使其添加对 H265 和 opus 的支持比较重要。

    实现方式

    rtmp 通过 codec id 来判断编码格式,同时通过 message type 来区分数据类型(包括音频包、视频包),所以音视频的 codec_id 是可以相同的(相同类型不冲突即可); 例如 H264 的 codec id 为 7,G711A 的 codec id 也为 7。 目前国内默认定义 H265 的 codec id 为12(由金山云首先实现并公布open in new window). 而对 opus 的 rtmp 扩展目前还未有广泛共识,作者在与相关人士讨论后,协商定义其 codec id 为13,目前已经实现了对 FFmpeg(基于最新版本)的修改,添加了对h265/opus 的 rtmp 扩展open in new window.

    服务器实现

    ZLMediaKit 已经实现了 rtsp/rtmp/mp4/hls 对 h265/opus 的全面支持, 欢迎各位测试使用。

    - +
    跳至主要內容

    RTMP对H265和OPUS的支持

    ZLMediaKit大约 1 分钟

    背景

    rtmp/flv 是直播行业事实上的标准,这两者在国内直播领域应用非常广泛。在浏览器上要实现无插件的低延时直播播放,基本绕不开 rtmp/flv. 由于 rtmp/flv 是 Adobe 设计的私有协议,原生是不支持 H265(视频监控应用广泛)和 opus(RTC 应用广泛)的,而目前视频监控、RTC 相关行业都有使用直播基础设施的需求,所以对 rtmp 进行修改,使其添加对 H265 和 opus 的支持比较重要。

    实现方式

    rtmp 通过 codec id 来判断编码格式,同时通过 message type 来区分数据类型(包括音频包、视频包),所以音视频的 codec_id 是可以相同的(相同类型不冲突即可); 例如 H264 的 codec id 为 7,G711A 的 codec id 也为 7。 目前国内默认定义 H265 的 codec id 为12(由金山云首先实现并公布open in new window). 而对 opus 的 rtmp 扩展目前还未有广泛共识,作者在与相关人士讨论后,协商定义其 codec id 为13,目前已经实现了对 FFmpeg(基于最新版本)的修改,添加了对h265/opus 的 rtmp 扩展open in new window.

    服务器实现

    ZLMediaKit 已经实现了 rtsp/rtmp/mp4/hls 对 h265/opus 的全面支持, 欢迎各位测试使用。

    + diff --git a/zh/reference/resources/video_conferencing_related_resources.html b/zh/reference/resources/video_conferencing_related_resources.html index 0cafb92..26178ea 100644 --- a/zh/reference/resources/video_conferencing_related_resources.html +++ b/zh/reference/resources/video_conferencing_related_resources.html @@ -30,11 +30,11 @@ 视频会议相关资源 | ZLMediaKit - + - - + + diff --git a/zh/reference/resources/zltoolkit_source_code_study_notes.html b/zh/reference/resources/zltoolkit_source_code_study_notes.html index 08b24be..1e0a218 100644 --- a/zh/reference/resources/zltoolkit_source_code_study_notes.html +++ b/zh/reference/resources/zltoolkit_source_code_study_notes.html @@ -30,11 +30,11 @@ ZLToolKit源码学习笔记 | ZLMediaKit - + - - + + diff --git a/zh/reference/test/benchmark.html b/zh/reference/test/benchmark.html index 8772494..3384dd9 100644 --- a/zh/reference/test/benchmark.html +++ b/zh/reference/test/benchmark.html @@ -30,11 +30,11 @@ Benchmark | ZLMediaKit - + -
    跳至主要內容

    Benchmark

    ZLMediaKit大约 1 分钟

    注意

    此测试已经严重过时,不具备参考性。

    测试环境

    • 系统:Linux core 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux
    • 内存:15G
    • CPU:Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz;4 核
    • 网络:千兆网卡
    • 测试端采用回环网络方式访问服务器

    测试工具

    ZLMeidaKit 自带测试程序 test_benchmark,其为单进程多线程模型

    测试服务器

    ZLMeidaKit 自带测试服务器 test_server,支持 RTSP/RTMP/HLS 服务器;多线程模型。

    测试媒体流

    使用 test_server 拉取的 rtmp 流rtmp://live.hkstv.hk.lxdns.com/live/hks1;然后通过 test_server 转发代理。 该码流大概 300~400Kbit/s 左右。

    测试结果

    说明:在 cmake 构建时,输入cmake .. -DCMAKE_BUILD_TYPE=Release以编译优化版本。

    播放器个数(rtmp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
    100020%702M/13M40 MByte/s
    200039%702M/18M80 MByte/s
    500092%702M/32M200 MByte/s
    10000170%702M/59M400 MByte/s
    播放器个数(rtsp/tcp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
    100018%702M/13M42 MByte/s
    200035%702M/19M82 MByte/s
    500080%702M/35M198 MByte/s
    10000130%702M/62M405 MByte/s

    srs 性能对比

    播放器个数(rtmp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
    100010%310M/53M41.17 MByte/s
    200018%604M/117M83.86 MByte/s
    - +
    跳至主要內容

    Benchmark

    ZLMediaKit大约 1 分钟

    注意

    此测试已经严重过时,不具备参考性。

    测试环境

    • 系统:Linux core 3.16.0-7-amd64 #1 SMP Debian 3.16.59-1 (2018-10-03) x86_64 GNU/Linux
    • 内存:15G
    • CPU:Intel(R) Xeon(R) CPU E3-1220 v5 @ 3.00GHz;4 核
    • 网络:千兆网卡
    • 测试端采用回环网络方式访问服务器

    测试工具

    ZLMeidaKit 自带测试程序 test_benchmark,其为单进程多线程模型

    测试服务器

    ZLMeidaKit 自带测试服务器 test_server,支持 RTSP/RTMP/HLS 服务器;多线程模型。

    测试媒体流

    使用 test_server 拉取的 rtmp 流rtmp://live.hkstv.hk.lxdns.com/live/hks1;然后通过 test_server 转发代理。 该码流大概 300~400Kbit/s 左右。

    测试结果

    说明:在 cmake 构建时,输入cmake .. -DCMAKE_BUILD_TYPE=Release以编译优化版本。

    播放器个数(rtmp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
    100020%702M/13M40 MByte/s
    200039%702M/18M80 MByte/s
    500092%702M/32M200 MByte/s
    10000170%702M/59M400 MByte/s
    播放器个数(rtsp/tcp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
    100018%702M/13M42 MByte/s
    200035%702M/19M82 MByte/s
    500080%702M/35M198 MByte/s
    10000130%702M/62M405 MByte/s

    srs 性能对比

    播放器个数(rtmp)CPU(最大 400%)内存(VIRT/RES)带宽(平均)丢包
    100010%310M/53M41.17 MByte/s
    200018%604M/117M83.86 MByte/s
    + diff --git a/zh/reference/test/delay_test.html b/zh/reference/test/delay_test.html index c8c6f9b..4f4609a 100644 --- a/zh/reference/test/delay_test.html +++ b/zh/reference/test/delay_test.html @@ -30,11 +30,11 @@ 延时测试 | ZLMediaKit - + -
    跳至主要內容

    延时测试

    ZLMediaKit大约 2 分钟

    注意

    此测试时间比较早,部分内容已失效;其中ultraLowDelay配置项已经删除;合并写延时改成 0 时(默认为 0)即为最低延时模式; 大家测试延时时,可以使用 webrtc 播放来测试。

    网络环境

    • localhost

    操作系统

    • macOS

    服务器

    • MediaServer,启动参数 -t 1 ,单线程启动
    • 配置文件打开ultraLowDelay模式

    推流器

    • obs rtmp 推流到 localhost
    • 速率控制CBR
    • 比特率: 2500
    • 自定义缓存大小: 100
    • 关键帧将:2 秒
    • CPU使用预设: ultrafast
    • profile: baseline
    • Tune: zerolatency
    • 分辨率: 1280x720
    • fps: 30 image

    播放器

    • 内置 test_player
    • localhost 播放 rtsp(udp、tcp 模式都测试)或 rtmp

    测试方法

    • 打开浏览器,打开在线秒表网页 https://miaobiao.51240.com/
    • 设置 OBS,截取浏览器秒表部分图像,开始推流给 MediaServer
    • 打开 test_player,播放对应的 rtsp 或 rtmp url
    • 使用截图工具,定格画面,并对比网页与 test_player 播放器画面在线秒表时间差

    测试结果

    • 播放 rtmp,延时 200ms ~ 400ms imageimage

    • 播放 rtsp(tcp 模式),延时 200ms ~ 400ms imageimage

    • 播放 rtsp(udp 模式),延时 200ms ~ 400ms imageimage

    测试结论

    • 在单线程下,播放器和推流器在同一个线程,没有跨线程切换问题,延时稍微稳定并低点
    • 开启 TCP_NODELAY 关闭 MSG_MORE 在本轮测试中对优化延时效果不大
    • 多次截图平均下来有 300ms 左右的延时,最低 200ms 左右,最高有 400+ms
    • 17 年我自己写推流器(很遗憾没保存下 exe 文件)的情况下,最低延时能达到 120ms 左右,目前根本达不到,怀疑 obs 推流延时还是较高
    • 推流时建议关闭音频再测试,像 AAC 这种编码格式,编码延时能达到 100ms 以上
    • 本次测试都是再 macOS 下测试的,理想情况下,服务器是 linux,推流器 windows,播放器渲染自己做的话延时可能还能更低
    • 感兴趣的朋友们可以在 windows 下测试下,17 年我是在局域网中测试的,推流器、服务器、播放器都不是同一台主机,延时尚且低至 120ms,如果 localhost 应该能更低。
    - +
    跳至主要內容

    延时测试

    ZLMediaKit大约 2 分钟

    注意

    此测试时间比较早,部分内容已失效;其中ultraLowDelay配置项已经删除;合并写延时改成 0 时(默认为 0)即为最低延时模式; 大家测试延时时,可以使用 webrtc 播放来测试。

    网络环境

    • localhost

    操作系统

    • macOS

    服务器

    • MediaServer,启动参数 -t 1 ,单线程启动
    • 配置文件打开ultraLowDelay模式

    推流器

    • obs rtmp 推流到 localhost
    • 速率控制CBR
    • 比特率: 2500
    • 自定义缓存大小: 100
    • 关键帧将:2 秒
    • CPU使用预设: ultrafast
    • profile: baseline
    • Tune: zerolatency
    • 分辨率: 1280x720
    • fps: 30 image

    播放器

    • 内置 test_player
    • localhost 播放 rtsp(udp、tcp 模式都测试)或 rtmp

    测试方法

    • 打开浏览器,打开在线秒表网页 https://miaobiao.51240.com/
    • 设置 OBS,截取浏览器秒表部分图像,开始推流给 MediaServer
    • 打开 test_player,播放对应的 rtsp 或 rtmp url
    • 使用截图工具,定格画面,并对比网页与 test_player 播放器画面在线秒表时间差

    测试结果

    • 播放 rtmp,延时 200ms ~ 400ms imageimage

    • 播放 rtsp(tcp 模式),延时 200ms ~ 400ms imageimage

    • 播放 rtsp(udp 模式),延时 200ms ~ 400ms imageimage

    测试结论

    • 在单线程下,播放器和推流器在同一个线程,没有跨线程切换问题,延时稍微稳定并低点
    • 开启 TCP_NODELAY 关闭 MSG_MORE 在本轮测试中对优化延时效果不大
    • 多次截图平均下来有 300ms 左右的延时,最低 200ms 左右,最高有 400+ms
    • 17 年我自己写推流器(很遗憾没保存下 exe 文件)的情况下,最低延时能达到 120ms 左右,目前根本达不到,怀疑 obs 推流延时还是较高
    • 推流时建议关闭音频再测试,像 AAC 这种编码格式,编码延时能达到 100ms 以上
    • 本次测试都是再 macOS 下测试的,理想情况下,服务器是 linux,推流器 windows,播放器渲染自己做的话延时可能还能更低
    • 感兴趣的朋友们可以在 windows 下测试下,17 年我是在局域网中测试的,推流器、服务器、播放器都不是同一台主机,延时尚且低至 120ms,如果 localhost 应该能更低。
    + diff --git a/zh/reference/test/how_to_test_delay.html b/zh/reference/test/how_to_test_delay.html index b80c63b..ad64c7c 100644 --- a/zh/reference/test/how_to_test_delay.html +++ b/zh/reference/test/how_to_test_delay.html @@ -30,12 +30,12 @@ 怎么测试ZLMediaKit的延时? | ZLMediaKit - +
    跳至主要內容

    怎么测试ZLMediaKit的延时?

    ZLMediaKit大约 5 分钟

    引言

    有些小伙伴们经常在群里面问我,为什么用 ZLMediaKit 拉流代理、推流转发的流播放延时好几秒,长的时候 10 多秒?为什么 HLS 延时更高,动辄延时半分钟?本文的目的在于澄清大家对延时的误解。

    什么是延时

    很多小伙伴们并不能明白什么叫延时,认为随便一个播放器播放出来的画面跟原始流画面时间差就是延时,其实这是对延时最大的误解。 延时不是表象,很多人在测试延时时很不专业,对延时测试的专业性认识不足,在此我特别提醒,不是随随便便的播放器都有资格做延时测试的!

    总而言之,一般整个延时有以下几部分累加组成:

    • 采集延时

      在采集摄像头或显卡画面时,由于 fps 的限制和 cpu 性能、内存拷贝速度等客观限制,采集画面成 YUV/RGB 等数据时会有一定的延时,一般延时为毫秒级别。由于一般编码器对输入数据格式存在限制,譬如要求统一输入 YUV420P,这样在做 RGB->YUV420P 转换时,也会有转换计算延时(这个可以通过 libyuv 库来降低)。总而言之,采集延时大概为毫秒级别,如果 fps 为 30,那么一般采集延时会有 30 毫秒以上的延时,在内存拷贝和颜色转换时,又可能增加若干毫秒的延时。

    • 编码延时

      在把原始画面输入到编码器时,并不会立即输出编码后的数据,特别是在开启 B 帧时,由于需要参考后面的 P 帧,那么延时会更大,所以延时敏感的情况下一般不开启 B 帧,这种情况下编码延时应该是毫秒级别,不是很大。

    • 网络上行传输延时

      编码后的数据,要经过一定的协议打包才能写入 socket,然后传输给推流服务器或拉流代理服务器,协议打包会有一定的内存拷贝和计算量,那么会增加延时,不过这个延时很小,基本忽略不计。数据在上传到服务器时,这个延时可大可小,取决于网络质量。

    • 服务器转协议延时

      服务器在收到数据后,要读 socket 缓存、协议解析、解复用、重新打包等操作,不过总体而言,这个延时比较小,基本没什么影响。有时,服务器为了提高性能,会采取合并写的机制,也就是收到一定量的数据后才会一并转发,这个延时一般为几百毫秒,ZLMediaKit 默认 300 毫秒左右,不过 ZLMediaKit 默认关闭合并写,也就是这个延时也很小。

    • 网络下行延时

      流媒体在把视频数据转发给播放器时,会存在网络发送,这个延时大小取决于网络质量,ZLMediaKit 在关闭低延时模式时,还会增加 MSG_MORE 和关闭 TCP_NODELAY 导致的延时,不过 ZLMediaKit 默认开启低延时模式。

    • 播放器延时

      播放器延时主要有网络接收延时、协议解析解复用延时、解码延时、缓存延时、渲染延时组成,这些延时中缓存延时最大,因为一般的播放器为了保证在网络抖动情况下视频播放的流畅性,会以增加延时为代价,增加播放缓存,这样在网络变差时,不至于播放缓冲卡顿。而且为了音视频同步,也必须确保一定的缓存量。这种延时一般都是秒级别,一般 5 秒左右。

    • 播放器 GOP 缓存延时

      流媒体服务器为了能让播放器立即出画面,往往会缓存最近的一个 I 帧,这个 I 帧往后的所有音视频数据被称作为 GOP 缓存。如果不缓存 GOP,那么播放器要等下一个 I 帧才能解码成功或不花屏,显然为了提高播放体验,这个 GOP 缓存是不能去掉的。而一般 GOP 短则 1~3 秒,长则 10 几秒,这个跟采集端编码器设置有关,服务器改变不了。但是由于一般的播放器收到缓存后,并不会丢弃过多的画面来确保低延时。况且播放器还希望有一定的缓存来确保播放的流畅性,所以这个 GOP 缓存将会增大播放器的延时。

    • 综合延时

      以上所有的延时累加,就是你观看到的直观延时,那么你看到的延时很高,能怪是服务器的问题吗?在理想的网络状况下,你观看到的直观延时,其实约等于播放器的播放缓存延时,这个锅得由播放器来背。

    怎么测试延时

    用 vlc 等通用播放器测试延时是很不专业的,这些播放器延时最少是秒级别的,为了播放流畅度和音视频同步,这些播放器是不可能给你真实的延时数据。

    在此,我强烈推荐大家自己写个无缓存的播放器测试延时,但是这显然超过了大部人的能力,所以 ZLMediaKit 提供了一个简单的播放器测试延时: test_playeropen in new window

    什么? 你告诉我你不会编译 ZLMediaKit? 那好,退而求其次,我推荐你使用 webrtc 播放来测试 zlm 延时;也可以用 ffplay 测试:

    ffplay -i rtmp://xxxxxxx -fflags nobuffer
    -

    如果你不知道 ffplay 怎么安装,你可以从这里open in new window下载编译好的.

    关于延时的更多信息

    直播延时的本质

    延时相关测试

    - +

    如果你不知道 ffplay 怎么安装,你可以从这里open in new window下载编译好的.

    关于延时的更多信息

    直播延时的本质

    延时相关测试

    + diff --git a/zh/reference/test/index.html b/zh/reference/test/index.html index 0395aa1..3d3c4ec 100644 --- a/zh/reference/test/index.html +++ b/zh/reference/test/index.html @@ -30,11 +30,11 @@ 测试 | ZLMediaKit - + - - + + diff --git a/zh/reference/test/online_test.html b/zh/reference/test/online_test.html index eec778d..609eb6a 100644 --- a/zh/reference/test/online_test.html +++ b/zh/reference/test/online_test.html @@ -30,11 +30,11 @@ 在线测试 | ZLMediaKit - + -
    跳至主要內容

    在线测试

    ZLMediaKit小于 1 分钟

    测试地址

    • http/hls/http-flv/ws-flv 地址: http://zlmediakit.com:8888/
    • https 地址: https://zlmediakit.com/
    • rtsp 地址: zlmediakit.com:554
    • rtmp 地址: zlmediakit.com:1935
    • GB28181 UDP/TCP 地址: zlmediakit.com:10000

    开始测试

    推流测试播放测试

    - +
    跳至主要內容

    在线测试

    ZLMediaKit小于 1 分钟

    测试地址

    • http/hls/http-flv/ws-flv 地址: http://zlmediakit.com:8888/
    • https 地址: https://zlmediakit.com/
    • rtsp 地址: zlmediakit.com:554
    • rtmp 地址: zlmediakit.com:1935
    • GB28181 UDP/TCP 地址: zlmediakit.com:10000

    开始测试

    推流测试播放测试

    + diff --git a/zh/reference/test/performance_testing.html b/zh/reference/test/performance_testing.html index a34ff76..f64ed92 100644 --- a/zh/reference/test/performance_testing.html +++ b/zh/reference/test/performance_testing.html @@ -30,11 +30,11 @@ 性能测试 | ZLMediaKit - + -
    跳至主要內容

    性能测试

    ZLMediaKit小于 1 分钟

    一、最新性能测试

    1.1、测试环境

    • cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz 4 核 8 线程
    • 操作系统:CentOS release 6.3 (Final)
    • 内存:16GB
    • 网卡:127.0.0.1
    • 测试码流: 200kbps.768x320.flvopen in new window
    • 编译器:gcc (GCC) 8.2.0
    • 编译类型:Release

    1.2、测试数据

    推流性能测试内存占用部分存在不准确问题(原因是当时测试时有个多 gop 缓存 bug)

    客户端类型流个数cpu内存网络 io4 物理核 cpu 理论性能
    rtsp 播放20K160%203M5Gb/s约 100K
    rtsp 播放32.2K235%220M7.78Gb/s约 100K
    rtsp 推流10K264%760M2.39Gb/s约 30K
    rtmp 播放10K148%81M2.33Gb/s约 50K
    rtmp 播放30K450%246M7Gb/s约 50K
    rtmp 推流10K224%1.6G2.16Gb/s约 30K

    1.3、测试详细数据

    二、较早的性能测试记录

    三、性能测试与优化

    - +
    跳至主要內容

    性能测试

    ZLMediaKit小于 1 分钟

    一、最新性能测试

    1.1、测试环境

    • cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz 4 核 8 线程
    • 操作系统:CentOS release 6.3 (Final)
    • 内存:16GB
    • 网卡:127.0.0.1
    • 测试码流: 200kbps.768x320.flvopen in new window
    • 编译器:gcc (GCC) 8.2.0
    • 编译类型:Release

    1.2、测试数据

    推流性能测试内存占用部分存在不准确问题(原因是当时测试时有个多 gop 缓存 bug)

    客户端类型流个数cpu内存网络 io4 物理核 cpu 理论性能
    rtsp 播放20K160%203M5Gb/s约 100K
    rtsp 播放32.2K235%220M7.78Gb/s约 100K
    rtsp 推流10K264%760M2.39Gb/s约 30K
    rtmp 播放10K148%81M2.33Gb/s约 50K
    rtmp 播放30K450%246M7Gb/s约 50K
    rtmp 推流10K224%1.6G2.16Gb/s约 30K

    1.3、测试详细数据

    二、较早的性能测试记录

    三、性能测试与优化

    + diff --git a/zh/reference/test/rtmp_pull_stream_performance_test.html b/zh/reference/test/rtmp_pull_stream_performance_test.html index e2d7e7d..98cbbca 100644 --- a/zh/reference/test/rtmp_pull_stream_performance_test.html +++ b/zh/reference/test/rtmp_pull_stream_performance_test.html @@ -30,7 +30,7 @@ rtmp 拉流性能测试 | ZLMediaKit - + @@ -80,7 +80,7 @@ ulimit -n 102400 #启动1万个rtmp拉流 ./test_bench_pull -c 30000 -i rtmp://127.0.0.1/live/test -
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 7.09Gb/s):
    图片
    图片
    - +
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 7.09Gb/s):
    图片
    图片
    + diff --git a/zh/reference/test/rtmp_push_stream_performance_test.html b/zh/reference/test/rtmp_push_stream_performance_test.html index fde0e2f..3ae2cc6 100644 --- a/zh/reference/test/rtmp_push_stream_performance_test.html +++ b/zh/reference/test/rtmp_push_stream_performance_test.html @@ -30,7 +30,7 @@ rtmp 推流性能测试 | ZLMediaKit - + @@ -76,7 +76,7 @@ ulimit -n 102400 #启动1万个rtmp推流 ./test_bench_push -i rtmp://127.0.0.1/live/test -c 10000 -o rtmp://127.0.0.1/live/push -
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 2.16Gb/s):
    图片
    图片
    - +
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 2.16Gb/s):
    图片
    图片
    + diff --git a/zh/reference/test/rtsp_pull_stream_performance_test.html b/zh/reference/test/rtsp_pull_stream_performance_test.html index d1a469a..2473ee0 100644 --- a/zh/reference/test/rtsp_pull_stream_performance_test.html +++ b/zh/reference/test/rtsp_pull_stream_performance_test.html @@ -30,7 +30,7 @@ rtsp拉流性能测试 | ZLMediaKit - + @@ -80,7 +80,7 @@ ulimit -n 102400 #启动4万个rtsp拉流 ./test_bench_pull -c 40000 -i rtsp://127.0.0.1/live/test -
    • 发现由于随机端口不够,有些播放器掉线(只剩 32244 个): 图片

    • top 信息:

    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 7.78Gb/s):
    图片
    图片
    - +
    • 发现由于随机端口不够,有些播放器掉线(只剩 32244 个): 图片

    • top 信息:

    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 7.78Gb/s):
    图片
    图片
    + diff --git a/zh/reference/test/rtsp_push_stream_performance_test.html b/zh/reference/test/rtsp_push_stream_performance_test.html index d828805..f53cf67 100644 --- a/zh/reference/test/rtsp_push_stream_performance_test.html +++ b/zh/reference/test/rtsp_push_stream_performance_test.html @@ -30,7 +30,7 @@ rtsp推流性能测试 | ZLMediaKit - + @@ -76,7 +76,7 @@ ulimit -n 102400 #启动1万个rtmp推流 ./test_bench_push -i rtmp://127.0.0.1/live/test -c 10000 -o rtsp://127.0.0.1/live/push -
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 2.39Gb/s):
    图片
    图片
    - +
    • top 信息:
    图片
    图片
    • perf top 信息:
    图片
    图片
    • nload 信息(平均 2.39Gb/s):
    图片
    图片
    + diff --git a/zh/tutorial/index.html b/zh/tutorial/index.html index 8d9209a..86b25f0 100644 --- a/zh/tutorial/index.html +++ b/zh/tutorial/index.html @@ -30,7 +30,7 @@ 快速开始 | ZLMediaKit - + @@ -105,7 +105,7 @@

    test_ 开头的测试程序

    相关代码在 ZLMediaKit/tests 目录下,你可以对照代码启动测试进程。

    推流测试

    请参考 推流播放测试

    - +

    test_ 开头的测试程序

    相关代码在 ZLMediaKit/tests 目录下,你可以对照代码启动测试进程。

    推流测试

    请参考 推流播放测试

    +