- // ==UserScript==
- // @name YouTube EXPERIMENT_FLAGS Tamer
- // @namespace UserScripts
- // @match https://www.youtube.com/*
- // @version 1.6.12
- // @license MIT
- // @author CY Fung
- // @icon https://raw.githubusercontent.com/cyfung1031/userscript-supports/main/icons/yt-engine.png
- // @description Adjust EXPERIMENT_FLAGS
- // @grant none
- // @unwrap
- // @run-at document-start
- // @allFrames true
- // @inject-into page
- // @require https://update.greatest.deepsurf.us/scripts/475632/1361351/ytConfigHacks.js
- // ==/UserScript==
-
- (() => {
-
- // Purpose 1: Remove Obsolete Flags
- // Purpose 2: Remove Flags bring no visual difference
- // Purpose 3: Enable Flags bring performance boost
-
- const DISABLE_CINEMATICS = false; // standard design
- const NO_SerializedExperiment = false;
- const KEEP_PLAYER_QUALITY_STICKY = true; // see https://greatest.deepsurf.us/scripts/471033/
- const DISABLE_serializedExperimentIds = true;
- const DISABLE_serializedExperimentFlags = true;
- const IGNORE_VIDEO_SOURCE_RELATED = true;
- const NO_REFRESH = true;
- const ENABLE_MINOR_CHAT_FEATURE_UPGRADE = true;
- const ENABLE_EMOJI_PICKER_NEW_STYLE = false;
- const ENABLE_BADGE_STYLE = false;
- const NO_DESKTOP_DELAY_PLAYER_RESIZING = false;
- const NO_ANIMATED_LIKE = false;
- const KEEP_MIDDLEWAVE = true;
- const NO_CINEMATIC_LIGHTING_LABEL = false; // set true to show "Ambient Mode" label instead of "Cinematic lighting" Label
- const KEEP_unified_player = true; // for YouTube Audio Only
-
- const SET_POLYMER_FLAGS = true;
- const FLAG_STRATEGY_01 = true; // ignore ads related flags
-
- const FLAG_STRATEGY_02 = true; // ignore player related flags
-
- const FLAG_STRATEGY_03 = true; // ignore adblock related flags
-
- const FLAG_STRATEGY_20240413 = true; // ignore adblock related flags
-
- const FLAG_STRATEGY_20240503 = true; // AD FLAG
-
- const NO_DEBUG_FLAG = true;
-
- const FLAG_SKIP_CHAT_BUTTON = true;
-
- const ALLOW_FLAGS_202404 = true;
-
- const DISABLE_FLAGS_SHADYDOM_FREE = true;
-
- const ENABLE_EXPERIMENT_FLAGS_MAINTAIN_STABLE_LIST = {
- defaultValue: true, // performance boost
- useExternal: () => typeof localStorage.EXPERIMENT_FLAGS_MAINTAIN_STABLE_LIST !== 'undefined',
- externalValue: () => (+localStorage.EXPERIMENT_FLAGS_MAINTAIN_STABLE_LIST ? true : false)
- };
- const ENABLE_EXPERIMENT_FLAGS_MAINTAIN_REUSE_COMPONENTS = {
- defaultValue: true, // not sure
- useExternal: () => typeof localStorage.EXPERIMENT_FLAGS_MAINTAIN_REUSE_COMPONENTS !== 'undefined',
- externalValue: () => (+localStorage.EXPERIMENT_FLAGS_MAINTAIN_REUSE_COMPONENTS ? true : false)
- };
- const ENABLE_EXPERIMENT_FLAGS_DEFER_DETACH = {
- defaultValue: true, // not sure
- useExternal: () => typeof localStorage.ENABLE_EXPERIMENT_FLAGS_DEFER_DETACH !== 'undefined',
- externalValue: () => (+localStorage.ENABLE_EXPERIMENT_FLAGS_DEFER_DETACH ? true : false)
- };
-
- const ENABLE_EXPERIMENT_FLAGS_NO_AUTOPLAY_TOGGLE = {
- defaultValue: false, // true to remove autoplay toggle button
- useExternal: () => typeof localStorage.ENABLE_EXPERIMENT_FLAGS_NO_AUTOPLAY_TOGGLE !== 'undefined',
- externalValue: () => (+localStorage.ENABLE_EXPERIMENT_FLAGS_NO_AUTOPLAY_TOGGLE ? true : false)
- };
-
- const ALLOW_ALL_LIVE_CHATS_FLAGS = false;
-
- const USE_MAINTAIN_STABLE_LIST_ONLY_WHEN_KS_FLAG_IS_SET = false;
-
- const COMMENTS_NO_DELAY = true;
-
- const SPACEBAR_CONTROL = -1; // 0 - only scroll down; 1 - global pause; 2 - speed control pause;
- // -1 = by pass
-
- const ALLOW_THEATER_PLAYER_SHORTCUT_KEY_T = true;
-
- const USE_byPassConditionAnalyzer = false;
-
- // ----------------------------- FOR FINDING OUT THE NEW FLAG -------------------------------
- const byPassConditionAnalyzer = (() => {
-
- // This is to find the flags disabled by this script would cause your issue.
- // Goal: find the flag name to whitelist
-
- const testFn = (key, isVideoPlayerParams) => {
-
- const kl = key.length;
- const kl7 = kl % 7;
- const kl5 = kl % 5;
- const kl3 = kl % 3;
- const kl2 = kl % 2;
-
-
- // ture for by pass
- const byConditions = [
- !kl2,
- kl3 <= 1,
- kl5 >= 3,
- kl7 >= 4,
- kl >= 20,
- kl <= 40,
- [
- "clean_up_manual_attribution_header",
- "empty_attributed_string_killswitch",
- "enable_profile_cards_cairo_updates",
- "enable_teaser_framework_web_client",
- "enable_tectonic_ad_ux_for_halftime",
- "enable_web_shorts_save_audio_pivot",
- "kevlar_clear_duplicate_pref_cookie",
- "kevlar_disable_background_prefetch",
- "kevlar_transcript_engagement_panel",
- "kevlar_watch_flexy_theater_manager",
- "mdx_load_cast_api_bootstrap_script",
- "web_collab_playlist_thumbnail_size",
- "web_fix_back_button_player_loading",
- "web_fix_dynamic_metadata_diacritic",
- "web_kevlar_enable_adaptive_signals",
- "web_move_autoplay_video_under_chip",
- "web_player_small_hbp_settings_menu",
- "web_rendererstamper_event_listener",
- "web_shorts_skip_loading_same_index",
- "web_shorts_suggested_action_no_bvm",
- "web_use_updated_icon_for_oac_badge",
- "wiz_prevent_watched_double_logging"
- ]
- ];
-
- // const byConditions = [
- // !kl2,
- // kl3 <= 1,
- // kl5 >= 3,
- // kl7 >= 4,
- // kl >= 20,
- // kl <= 40,
- // [
- // "clean_up_manual_attribution_header",
- // "empty_attributed_string_killswitch",
- // "enable_profile_cards_cairo_updates",
- // "enable_teaser_framework_web_client",
- // "enable_tectonic_ad_ux_for_halftime",
- // "enable_web_shorts_save_audio_pivot",
- // "kevlar_clear_duplicate_pref_cookie",
- // "kevlar_disable_background_prefetch",
- // "kevlar_transcript_engagement_panel",
- // "kevlar_watch_flexy_theater_manager",
- // "mdx_load_cast_api_bootstrap_script",
- // "web_collab_playlist_thumbnail_size",
- // "web_fix_back_button_player_loading",
- // "web_fix_dynamic_metadata_diacritic",
- // "web_kevlar_enable_adaptive_signals",
- // "web_move_autoplay_video_under_chip",
- // "web_player_small_hbp_settings_menu",
- // "web_rendererstamper_event_listener",
- // "web_shorts_skip_loading_same_index",
- // "web_shorts_suggested_action_no_bvm",
- // "web_use_updated_icon_for_oac_badge",
- // "wiz_prevent_watched_double_logging"
- // ]
- // ];
-
- return byConditions;
-
- };
-
- let u = 0;
- let cache1 = new Set();
- let cache2 = new Set();
-
- const disp = () => {
- const q = cache1.size < 50 ? [...cache1] : [];
- const a = [];
- const b = [];
- for (const m of q) {
- if (cache2.has(m)) b.push(m); else a.push(m);
- }
- console.log('[yt-flags-tamer]', 'filtered keys {eflags}', a.length, a);
- console.log('[yt-flags-tamer]', 'filtered keys {vflags}', b.length, b);
- }
-
- const res = {
-
- testFn_: (key, isVideoPlayerParams) => {
-
- if (!u) {
- u = 1;
- u = setTimeout(disp, 400);
- }
- let q = testFn(key, isVideoPlayerParams).every(e => {
-
- if (typeof e === 'object' && Symbol.iterator in Object(e)) {
- return e.includes(key);
- } else if (typeof e === 'string') {
- return e.includes(key);
- } else {
- return !!e
- }
-
- });
- if (q) {
-
- cache1.add(key);
- return true;
-
- }
- return false;
-
-
- }
-
- }
-
-
- return res;
-
-
-
-
-
-
- })();
- // ----------------------------- FOR FINDING OUT THE NEW FLAG -------------------------------
-
- // TBC
- // kevlar_tuner_should_always_use_device_pixel_ratio
- // kevlar_tuner_should_clamp_device_pixel_ratio
- // kevlar_tuner_clamp_device_pixel_ratio
- // kevlar_tuner_should_use_thumbnail_factor
- // kevlar_tuner_thumbnail_factor
- // kevlar_tuner_min_thumbnail_quality
- // kevlar_tuner_max_thumbnail_quality
-
- // kevlar_tuner_should_test_visibility_time_between_jobs
- // kevlar_tuner_visibility_time_between_jobs_ms
-
- // kevlar_tuner_default_comments_delay
- // kevlar_tuner_run_default_comments_delay
-
- // cinematic feature is no longer an experimental feature.
- // It has been officially implemented.
- // To disable cinematics, the user shall use other userscripts or just turn off the option in the video options.
-
- const getSettingValue = (fm) => fm.useExternal() ? fm.externalValue() : fm.defaultValue;
-
- const win = this instanceof Window ? this : window;
-
- // Create a unique key for the script and check if it is already running
- const hkey_script = 'jmimcvowrlzl';
- if (win[hkey_script]) throw new Error('Duplicated Userscript Calling'); // avoid duplicated scripting
- win[hkey_script] = true;
-
- /** @type {globalThis.PromiseConstructor} */
- const Promise = ((async () => { })()).constructor;
-
- let isMainWindow = false;
- const mzFlagDetected1 = new Set();
- const mzFlagDetected2 = new Set();
- let zPlayerKevlar = false;
- try {
- isMainWindow = window.document === window.top.document
- } catch (e) { }
-
- const fOperAccept = Symbol();
- const fOperReject = Symbol();
-
- // h5 flags
- const fOperAcceptList = new Set([
-
- ...(NO_CINEMATIC_LIGHTING_LABEL ? [
- 'web_player_use_cinematic_label', // fallback
- 'web_player_use_cinematic_label_0', // fallback
- 'web_player_use_cinematic_label_1', // fallback
- 'web_player_use_cinematic_label_2',
- 'web_player_use_cinematic_label_3', // fallback
- ] : []),
-
- ...(FLAG_STRATEGY_03 ? [
- // do it with your separate script please
- 'ab_pl_man', // https://www.uedbox.com/post/69238/
- 'ab_fk_sk_cl', // https://www.youtube.com/s/desktop/28b0985e/jsbin/desktop_polymer.vflset/desktop_polymer.js
- 'ab_det_apb_b',
- 'ab_det_el_h',
- 'ab_det_fet_wr',
- 'ab_det_fet_wr_en',
- 'ab_det_gen_re',
- 'web_enable_ab_rsp_cl',
- 'enable_ab_rp_int',
- 'enable_ab_report_on_errorscreen',
- 'enable_pl_r_si_fa',
- 'ab_det_sc_inj_enf',
- 'service_worker_enabled', // https://gist.github.com/BrokenGabe/51d55a11c2090d9402e40f12a6ece275
- 'ab_deg_unex_thr', // https://www.youtube.com/s/desktop/28b0985e/jsbin/desktop_polymer.vflset/desktop_polymer.js
- 'ab_net_tp_e', // https://www.youtube.com/s/desktop/28b0985e/jsbin/desktop_polymer.vflset/desktop_polymer.js
- 'ad_net_pb_ab', // https://www.youtube.com/s/desktop/28b0985e/jsbin/desktop_polymer.vflset/desktop_polymer.js
- 'ab_mis_log_err', // https://www.youtube.com/s/desktop/28b0985e/jsbin/desktop_polymer.vflset/desktop_polymer.js
- 'ad_net_pb_pbp',
-
- 'ab_det_sc_inj',
- 'ab_det_sc_inj_val',
- 'disable_enf_isd',
- 'ks_det_gpbl',
- 'ks_get_o_pp',
- 'ab_deg_unex_thr',
- 'enable_pl_r_si_fa',
- 'debug_sk_em_precheck',
-
- ] : []),
-
-
-
- ...(FLAG_STRATEGY_01 ? [
- 'web_player_defer_modules',
- 'html5_defer_modules_on_ads_only',
- 'web_player_defer_ad',
- 'disable_defer_admodule_on_advertiser_video',
- 'html5_onesie_defer_content_loader_ms',
- 'html5_defer_fetch_att_ms',
- 'embeds_web_enable_defer_loading_remote_js',
- ] : []),
-
- ...(KEEP_MIDDLEWAVE ? [
- 'web_player_entities_middleware'
- ] : []),
-
-
- 'web_settings_menu_icons',
- // see https://github.com/cyfung1031/userscript-supports/issues/27
- // see https://greatest.deepsurf.us/scripts/470428/discussions/216363
-
-
- // 'disable_new_pause_state3',
- // 'enable_cast_on_music_web',
- // 'gcf_config_store_enabled',
- // 'gel_queue_timeout_max_ms',
- // 'network_polling_interval',
- 'player_doubletap_to_seek',
- // 'polymer_bad_build_labels',
- // 'skip_invalid_ytcsi_ticks',
- // 'use_player_cue_range_set',
- // 'woffle_used_state_report',
-
- ]);
-
- const fOperMapFn = (o) => new Map(Object.entries({
- // 1 true 2 false 3
-
- ...((o.no_autoplay_toggle !== true) ? {
-
- // 'player_allow_autonav_after_playlist',
- 'web_player_autonav_toggle_always_listen': 1,
- // 'web_player_offline_playlist_auto_refresh',
-
- // 'allow_live_autoplay',
- // 'allow_poltergust_autoplay',
- // 'autoplay_time',
- // 'autoplay_time_for_fullscreen',
- // 'autoplay_time_for_music_content',
- 'client_respect_autoplay_switch_button_renderer': 1,
- // 'embeds_enable_muted_autoplay',
- // 'embeds_web_enable_autoplay_not_supported_logging_fix',
- // 'embeds_web_enable_log_splay_as_autoplay',
- // 'embeds_web_enable_mobile_autoplay',
- // 'html5_autoplay_default_quality_cap',
- // 'mweb_muted_autoplay_animation',
-
- // 'html5_player_autonav_logging',
- // 'web_player_always_enable_auto_translation',
- // 'web_player_autonav_empty_suggestions_fix',
- // 'web_player_autonav_use_server_provided_state',
- 'web_player_decouple_autonav': 1,
- 'web_player_move_autonav_toggle': 1,
-
- } : {}),
-
- ...(IGNORE_VIDEO_SOURCE_RELATED ? {
-
- 'html5_live_use_alternate_bandwidth_window_sizes': 1,
- 'html5_live_ultra_low_latency_bandwidth_window': 1,
- 'html5_live_low_latency_bandwidth_window': 1,
- 'html5_live_normal_latency_bandwidth_window': 1,
- // 'html5_skip_slow_ad_delay_ms': 1,
- 'html5_player_preload_ad_fix': 1,
- // if (key.includes('_ad_') || key.includes('_ads_')) {
- 'html5_ssdai_adfetch_dynamic_timeout_ms': 2,
- 'html5_log_ssdai_fallback_ads': 2,
- 'html5_deprecate_adservice': 2,
- // !key.includes('deprecat')) keep = true;
-
-
- // if (key.startsWith('enable_h5_player_ad_block_')) keep = false;
- 'fix_h5_toggle_button_a11y': 1,
- 'h5_companion_enable_adcpn_macro_substitution_for_click_pings': 2,
- 'h5_enable_generic_error_logging_event': 2,
- 'h5_enable_unified_csi_preroll': 1,
- 'h5_reset_cache_and_filter_before_update_masthead': 1,
- 'web_player_enable_premium_hbr_in_h5_api': 1,
- // !key.includes('deprecat')) keep = true;
-
- } : {}),
-
-
- ...(KEEP_PLAYER_QUALITY_STICKY ? {
-
- html5_onesie_sticky_server_side: 2,
- html5_perf_cap_override_sticky: 1,
- html5_ustreamer_cap_override_sticky: 1,
- html5_exponential_memory_for_sticky: 1
-
- } : {}),
-
-
- 'html5_streaming_xhr_time_based_consolidation_ms': 1,
- 'html5_bypass_contention_secs': 1,
-
- 'vp9_drm_live': 1,
- 'html5_log_rebuffer_reason': 2,
- 'html5_enable_audio_track_log': 2,
-
-
- 'html5_safari_desktop_eme_min_version': 1,
-
- 'html5_disable_av1': 1,
- 'html5_disable_av1_hdr': 1,
- 'html5_disable_hfr_when_vp9_encrypted_2k4k_unsupported': 1,
- 'html5_account_onesie_format_selection_during_format_filter': 1,
- 'html5_prefer_hbr_vp9_over_av1': 1,
-
- ...(!DISABLE_CINEMATICS ? {
- 'web_cinematic_watch_settings': 1
- } : {}),
-
- 'html5_apply_start_time_within_ads_for_ssdai_transitions': 2,
- 'html5_enable_ads_client_monitoring_log_tv': 2,
- 'html5_ignore_interruptive_ads_for_server_stitched': 1,
-
- 'html5_no_video_to_ad_on_preroll': 1,
- 'html5_no_video_to_ad_on_preroll_reset': 1,
- 'html5_rebase_video_to_ad_timeline': 1,
- 'html5_report_slow_ads_as_error': 1,
-
- 'html5_default_ad_gain': 1, // just keep
- 'html5_min_startup_buffered_ad_media_duration_secs': 1, // just keep
-
- 'html5_skip_slow_ad_delay_ms': 7,
- 'check_navigator_accuracy_timeout_ms': 8,
- 'html5_ad_timeout_ms': 8,
- 'html5_ads_preroll_lock_timeout_delay_ms': 9,
- 'html5_slow_start_timeout_delay_ms': 8,
- 'variable_buffer_timeout_ms': 9,
-
- 'h5_expr_b9Nkc': 1,
-
- }));
-
- var fOperMap;
-
- const valur = (value, k) => {
- if (+value === 0) value = k;
- else if (+value > +k) value = k;
- return value;
- }
-
- function fOper(key, value) {
-
- if (fOperAcceptList.has(key)) return fOperAccept;
- if (USE_byPassConditionAnalyzer && byPassConditionAnalyzer.testFn_(key, true)) return fOperAccept;
- if (key.length === 22 || key.length === 27 || key.length === 32) {
-
- if (SPACEBAR_CONTROL < 0) {
-
- if (key === 'disable_space_scroll_fix' || key === 'global_spacebar_pause' || key === 'web_speedmaster_spacebar_control') {
- return fOperAccept;
- }
- if (key.includes('speedmaster')) return fOperAccept;
- }
-
- if (SPACEBAR_CONTROL === 2 && key.includes('speedmaster')) {
- return fOperAccept;
- }
-
- }
- // if(key.length < 30)continue;
- // const kl = key.length;
-
- let keep = false;
- let nv = undefined;
-
- const no_autoplay_toggle = ENABLE_EXPERIMENT_FLAGS_NO_AUTOPLAY_TOGGLE.currentValue;
-
- fOperMap = fOperMap || fOperMapFn({ no_autoplay_toggle });
-
- const fm1 = fOperMap.get(key);
-
- switch (fm1) {
- case 1:
- keep = true;
- break;
- case 2:
- keep = false;
- break;
- case 7:
- const kv = typeof value === 'string' && +value > 2;
- keep = kv;
- if (kv && +value > 4) nv = '4';
- break;
- case 8:
- nv = valur(value, '4');
- keep = true;
- break;
- case 9:
- keep = false;
- break;
- default:
-
- if (FLAG_STRATEGY_20240413 && key.includes('network')) keep = true;
- else if (FLAG_STRATEGY_20240413 && key.includes('less')) keep = true;
- else if (FLAG_STRATEGY_20240413 && key.includes('latency')) keep = true;
- else if (FLAG_STRATEGY_20240413 && key.includes('slow')) keep = true;
- else if (FLAG_STRATEGY_20240413 && key.includes('steam')) keep = true;
- else if (key.includes('deprecat')) {
- keep = false;
- } else if (IGNORE_VIDEO_SOURCE_RELATED && key.includes('html5_') && !key.includes('_ad_') && !key.includes('_ads_')) {
- keep = true;
- } else if (IGNORE_VIDEO_SOURCE_RELATED && key.includes('h5_')) {
- keep = true;
- } else if (key.includes('_timeout') && typeof value === 'string') {
- if (+value > 3000) nv = '3000';
- keep = true;
- } else if (KEEP_PLAYER_QUALITY_STICKY && key.includes('_sticky')) {
- keep = true;
- } else if (key.startsWith('h5_expr_')) {
- // by userscript
- keep = true;
- }
- }
-
- if (!keep) {
- return fOperReject;
- // vRes.delete(key);
- } else if (nv !== undefined && nv !== value) {
- return nv;
- // vRes.set(key, nv)
- } else {
- return fOperAccept;
- }
-
- }
- function deSerialized(str, fOper) {
-
- const map = new Map();
- let start = 0;
-
- while (start < str.length) {
- // Find the next '&' or the end of the string
- const nextAmpersand = str.indexOf('&', start);
- const end = nextAmpersand === -1 ? str.length : nextAmpersand;
-
- // Extract the key-value pair
- const equalsSign = str.indexOf('=', start);
- if (equalsSign !== -1 && equalsSign < end) {
- const key = str.substring(start, equalsSign);
- const value = str.substring(equalsSign + 1, end);
-
- const r = fOper(key, value);
- if (typeof r !== 'symbol') {
- map.set(key, r)
- } else if (r === fOperAccept) {
- map.set(key, value);
- }
-
- }
-
- // Move to the next key-value pair
- start = end + 1;
- }
-
- map.toString = function () {
- const res = new Array(map.size);
- let i = 0;
- this.forEach((value, key) => {
- res[i++] = `${key}=${value}`;
- });
- return res.join('&');
- }
- return map;
- }
-
- function fixSerializedExperiment(conf) {
-
- const supportAV1 = window.MediaSource.isTypeSupported('video/webm; codecs=av01.0.05M.08');
- const supportVP9 = window.MediaSource.isTypeSupported('video/webm; codecs=vp09.01.20.08.01.01.01.01.00');
-
- if (DISABLE_serializedExperimentIds && typeof conf.serializedExperimentIds === 'string') {
- let ids = conf.serializedExperimentIds.split(',');
- let newIds = [];
- for (const id of ids) {
- let keep = false;
- if (keep) {
- newIds.push(id);
- }
- }
- conf.serializedExperimentIds = newIds.join(',');
- }
-
- const mez = (mRes) => {
-
- mRes.set('html5_disable_low_pipeline', 'false');
- mRes.set('html5_min_startup_buffered_ad_media_duration_secs', '0')
-
- if (supportAV1 === false && localStorage['yt-player-av1-pref'] === '-1') {
-
- mRes.set('html5_disable_av1', 'true');
- mRes.set('html5_disable_av1_hdr', 'true');
- mRes.set('html5_prefer_hbr_vp9_over_av1', 'true');
-
- } else if (supportAV1 === true && supportVP9 === true && localStorage['yt-player-av1-pref'] === '8192') {
-
- mRes.set('html5_disable_av1', 'false');
- mRes.set('html5_disable_av1_hdr', 'false');
- mRes.set('html5_prefer_hbr_vp9_over_av1', 'false');
- }
-
-
- // html5_perf_cap_override_sticky = true;
- // html5_perserve_av1_perf_cap = true;
-
-
- mRes.set('html5_enable_server_format_filter', 'true')
- mRes.set('html5_use_ump', 'true')
-
- mRes.set('html5_live_defrag_only_h264_playbacks', 'true')
- mRes.set('html5_live_defrag_only_h264_formats', 'true')
-
- mRes.set('html5_disable_protected_hdr', 'false')
- mRes.set('html5_disable_vp9_encrypted', 'false')
- mRes.set('html5_ignore_h264_framerate_cap', 'true')
-
- mRes.set('html5_allow_asmjs', 'true')
- // mRes.set('html5_defer_modules_on_ads_only', 'true')
- mRes.set('html5_use_drm_retry', 'true')
- mRes.set('html5_delta_encode_fexp', 'true')
- mRes.set('html5_only_send_cas_health_pings', 'true')
-
- mRes.set('html5_modify_caption_vss_logging', 'true')
- // mRes.set('html5_allow_zero_duration_ads_on_timeline', 'true')
- mRes.set('html5_reset_daistate_on_audio_codec_change', 'true')
- mRes.set('html5_enable_safari_fairplay', 'true')
-
- mRes.set('html5_safari_fairplay_ignore_hdcp', 'true')
-
- mRes.set('html5_enable_vp9_fairplay', 'true')
- mRes.set('html5_eme_loader_sync', 'true')
-
- mRes.set('html5_enable_same_language_id_matching', 'true');
- mRes.set('html5_enable_new_hvc_enc', 'true')
- mRes.set('html5_enable_ssap', 'true')
- mRes.set('html5_enable_short_gapless', 'true')
- mRes.set('html5_enable_aac51', 'true')
- mRes.set('html5_enable_ssap_entity_id', 'true')
-
- mRes.set('html5_high_res_logging_always', 'true')
- mRes.set('html5_local_playsinline', 'true')
- mRes.set('html5_disable_media_element_loop_on_tv', 'true')
- mRes.set('html5_native_audio_track_switching', 'true')
-
- mRes.set('html5_format_hybridization', 'true')
- mRes.set('html5_disable_encrypted_vp9_live_non_2k_4k', 'false')
-
- // mRes.set('html5_default_ad_gain', 'false')
- mRes.set('html5_use_sabr_requests_for_debugging', 'false')
- // mRes.set('html5_enable_sabr_live_streaming_xhr', 'true')
- // mRes.set('html5_sabr_live_ultra_low_latency', 'true')
-
- // mRes.set('html5_sabr_live_low_latency', 'true')
- // mRes.set('html5_sabr_live', 'true') // sabr_live for audio only
- mRes.set('html5_sabr_post_live', 'true')
- mRes.set('html5_sabr_premiere', 'true')
-
- // mRes.set('html5_enable_sabr_live_streaming_xhr', 'true')
- // mRes.set('html5_enable_sabr_live_non_streaming_xhr', 'true')
-
- mRes.set('html5_enable_subsegment_readahead_v3', 'true')
- mRes.set('html5_ultra_low_latency_subsegment_readahead', 'true')
- mRes.set('html5_disable_move_pssh_to_moov', 'true')
-
- mRes.set('html5_modern_vp9_mime_type', 'true')
-
- }
-
- if (DISABLE_serializedExperimentFlags && typeof conf.serializedExperimentFlags === 'string') {
- const fg = conf.serializedExperimentFlags;
-
- const vRes = deSerialized(fg, fOper);
-
- mez(vRes);
-
- const kg = vRes.toString();
-
- conf.serializedExperimentFlags = kg;
-
- }
-
- }
-
-
- let brc = 1000;
-
- if (typeof AbortSignal !== 'undefined') {
- document.addEventListener('yt-action', function () {
- if (brc > 8) looperFn();
- brc = 0;
- }, { capture: true, passive: true, once: true });
- }
-
-
- // yt flags
- const cachedSetFn = (o) => {
-
- const { use_maintain_stable_list, use_maintain_reuse_components, use_defer_detach } = o;
-
- const BY_PASS = [
-
- 'enable_profile_cards_on_comments',
-
- ... (SPACEBAR_CONTROL < 0 ? [
- 'disable_space_scroll_fix',
- 'global_spacebar_pause',
- 'web_speedmaster_spacebar_control'
- ] : []),
-
- ...(ALLOW_FLAGS_202404 ? [
-
- 'suppress_error_204_logging',
- 'use_request_time_ms_header',
-
- 'remove_masthead_channel_banner_on_refresh',
- 'action_companion_center_align_description',
- 'disable_child_node_auto_formatted_strings',
- // 'enable_native_bridge_view_saved_playables',
- 'enable_shadydom_free_scoped_query_methods',
- // 'enable_skippable_ads_for_unplugged_ad_pod',
- 'enable_sparkles_web_clickable_description',
- 'enable_window_constrained_buy_flow_dialog',
- // 'html5_enable_ads_client_monitoring_log_tv',
- 'is_part_of_any_user_engagement_experiment',
- // 'kevlar_chapters_list_view_seek_by_chapter',
- // 'kevlar_enable_shorts_prefetch_in_sequence',
- // 'kevlar_resolve_command_for_confirm_dialog',
- // 'kevlar_shorts_seedless_retry_initial_load',
- // 'live_chat_enable_send_button_in_slow_mode',
- // 'live_chat_web_use_emoji_manager_singleton',
- 'remove_masthead_channel_banner_on_refresh',
- // 'web_deprecate_service_ajax_map_dependency',
- 'web_modern_player_settings_quality_bottom',
- // 'web_player_always_enable_auto_translation',
- // 'web_player_enable_cultural_moment_overlay',
- // 'ytidb_fetch_datasync_ids_for_data_cleanup',
- 'kevlar_tuner_should_test_reuse_components',
-
- 'web_player_ve_conversion_fixes_for_channel_info',
- 'web_watch_updated_metadata_server_initial_delay',
- // 'trigger_impression_pings_on_view_search_desktop',
-
- 'defer_menus',
-
- ] : []),
-
- ...(FLAG_SKIP_CHAT_BUTTON ? [
- 'live_chat_overflow_hide_chat',
- 'web_watch_chat_hide_button_killswitch',
- ] : []),
-
-
- ...(KEEP_unified_player ? [
- 'kevlar_unified_player',
- 'kevlar_non_watch_unified_player',
- ] : []),
-
-
-
- ...(FLAG_STRATEGY_03 ? [
- // do it with your separate script please
- 'ab_pl_man', // https://www.uedbox.com/post/69238/
- 'ab_fk_sk_cl', // https://www.youtube.com/s/desktop/28b0985e/jsbin/desktop_polymer.vflset/desktop_polymer.js
- 'ab_det_apb_b',
- 'ab_det_el_h',
- 'ab_det_fet_wr',
- 'ab_det_fet_wr_en',
- 'ab_det_gen_re',
- 'web_enable_ab_rsp_cl',
- 'enable_ab_rp_int',
- 'enable_ab_report_on_errorscreen',
- 'enable_pl_r_si_fa',
- 'ab_det_sc_inj_enf',
- 'service_worker_enabled', // https://gist.github.com/BrokenGabe/51d55a11c2090d9402e40f12a6ece275
- 'ab_deg_unex_thr', // https://www.youtube.com/s/desktop/28b0985e/jsbin/desktop_polymer.vflset/desktop_polymer.js
- 'ab_net_tp_e', // https://www.youtube.com/s/desktop/28b0985e/jsbin/desktop_polymer.vflset/desktop_polymer.js
- 'ad_net_pb_ab', // https://www.youtube.com/s/desktop/28b0985e/jsbin/desktop_polymer.vflset/desktop_polymer.js
- 'ab_mis_log_err', // https://www.youtube.com/s/desktop/28b0985e/jsbin/desktop_polymer.vflset/desktop_polymer.js
-
- 'ab_det_sc_inj',
- 'ab_det_sc_inj_val',
- 'disable_enf_isd',
- 'ks_det_gpbl',
- 'ks_get_o_pp',
- 'ab_deg_unex_thr',
- 'enable_pl_r_si_fa',
- 'debug_sk_em_precheck',
-
- ] : []),
-
-
- ...(FLAG_STRATEGY_02 ? [
- // do it with your separate script please
- 'kevlar_client_enable_shorts_player_bootstrap',
- 'kevlar_early_popup_close',
- 'kevlar_hide_pp_url_param',
- 'kevlar_touch_gesture_ves',
- 'player_doubletap_to_seek',
- 'shorts_controller_retrieve_seedless_sequence',
- 'shorts_overlay_reshuffle',
- ] : []),
-
-
- ...(SET_POLYMER_FLAGS ? [
- 'polymer_enable_mdx_queue',
- 'polymer_on_demand_shady_dom',
- ] : []),
-
- ...(FLAG_STRATEGY_01 ? [
- 'web_player_defer_modules',
- 'html5_defer_modules_on_ads_only',
- 'web_player_defer_ad',
- 'disable_defer_admodule_on_advertiser_video',
- 'html5_onesie_defer_content_loader_ms',
- 'html5_defer_fetch_att_ms',
- 'embeds_web_enable_defer_loading_remote_js',
- ] : []),
-
- ...(KEEP_MIDDLEWAVE ? [
- 'web_player_entities_middleware'
- ] : []),
-
- 'desktop_keyboard_capture_keydown_killswitch', // TBC
- 'kevlar_autofocus_menu_on_keyboard_nav', // TBC
- 'kevlar_keyboard_button_focus', // TBC
- 'kevlar_macro_markers_keyboard_shortcut', // required
-
- // 'kevlar_appbehavior_attach_startup_tasks'
- // 'kevlar_clear_non_displayable_url_params'
- 'kevlar_command_handler_formatted_string', // see https://github.com/cyfung1031/userscript-supports/issues/20
- 'kevlar_miniplayer_queue_user_activation',
- 'kevlar_player_watch_endpoint_navigation',
- // 'kevlar_watch_focus_on_engagement_panels'
-
- // playlist related flags
- "shorts_in_playlists_web",
- "live_chat_over_playlist",
- "web_amsterdam_playlists",
- "browse_next_continuations_migration_playlist",
- "desktop_add_to_playlist_renderer_dialog_popup",
- "enable_horizontal_list_renderer_scroll_based_on_items_visibility",
- "enable_pass_sdc_get_accounts_list",
- "enable_programmed_playlist_color_sample",
- "enable_programmed_playlist_redesign",
- "enable_section_list_scroll_to_item_section_web",
- "gda_enable_playlist_download",
- "include_autoplay_count_in_playlists",
- "kevlar_chapters_list_view_seek_by_chapter",
- "kevlar_enable_editable_playlists",
- "kevlar_enable_reorderable_playlists",
- "kevlar_fix_playlist_continuation",
- "kevlar_hide_playlist_playback_status",
- "kevlar_lazy_list_resume_for_autofill",
- "kevlar_no_autoscroll_on_playlist_hover",
- "kevlar_passive_event_listeners",
- "kevlar_player_playlist_use_local_index",
- "kevlar_playlist_drag_handles",
- "kevlar_playlist_use_x_close_button",
- "kevlar_rendererstamper_event_listener",
- "kevlar_should_maintain_stable_list",
- "kevlar_show_playlist_dl_btn",
- "music_on_main_open_playlist_recommended_videos_in_miniplayer",
- "player_allow_autonav_after_playlist",
- "player_enable_playback_playlist_change",
- "web_amsterdam_post_mvp_playlists",
-
- // not sure
- // "check_user_lact_at_prompt_shown_time_on_web",
- "clear_user_partitioned_ls",
- "desktop_notification_high_priority_ignore_push",
- "desktop_notification_set_title_bar",
- "enable_first_user_action_csi_logging",
- "enable_get_account_switcher_endpoint_on_webfe",
- "enable_handles_account_menu_switcher",
- "enable_names_handles_account_switcher", // TBC
- "enable_pass_sdc_get_accounts_list",
- "enable_server_stitched_dai",
- "enable_yt_ata_iframe_authuser",
- // "fill_single_video_with_notify_to_lasr",
- "html5_server_stitched_dai_group",
- // "is_part_of_any_user_engagement_experiment",
- "kevlar_miniplayer_queue_user_activation",
- // "rich_grid_resize_observer",
- // "rich_grid_resize_observer_only",
-
- 'desktop_add_to_playlist_renderer_dialog_popup',
-
- ...(!DISABLE_CINEMATICS ? [
-
- 'kevlar_measure_ambient_mode_idle',
- 'kevlar_watch_cinematics_invisible',
- 'web_cinematic_theater_mode',
- 'web_cinematic_fullscreen',
-
- 'enable_cinematic_blur_desktop_loading',
- 'kevlar_watch_cinematics',
- 'web_cinematic_masthead',
- 'web_watch_cinematics_preferred_reduced_motion_default_disabled'
-
- ] : []),
-
-
-
- 'kevlar_rendererstamper_event_listener', // https://github.com/cyfung1031/userscript-supports/issues/11
-
-
-
-
- 'live_chat_web_enable_command_handler',
- 'live_chat_channel_activity',
- 'live_chat_web_input_update',
-
- 'live_chat_web_enable_command_handler',
-
- ...(ALLOW_ALL_LIVE_CHATS_FLAGS ? [
-
- 'live_chat_banner_expansion_fix',
- 'live_chat_enable_mod_view',
- 'live_chat_enable_qna_banner_overflow_menu_actions',
- 'live_chat_enable_qna_channel',
- 'live_chat_enable_send_button_in_slow_mode',
- 'live_chat_filter_emoji_suggestions',
- 'live_chat_increased_min_height',
- 'live_chat_over_playlist',
- 'live_chat_web_use_emoji_manager_singleton',
- 'live_chat_whole_message_clickable',
-
- 'live_chat_emoji_picker_toggle_state',
- 'live_chat_enable_command_handler_resolver_map',
- 'live_chat_enable_controller_extraction',
- 'live_chat_enable_rta_manager',
- 'live_chat_require_space_for_autocomplete_emoji',
- 'live_chat_unclickable_message',
-
- ] : []),
-
- 'kevlar_rendererstamper_event_listener', // https://github.com/cyfung1031/userscript-supports/issues/11
-
- // kevlar_enable_up_arrow - no use
- // kevlar_help_use_locale - might use
- // kevlar_refresh_gesture - might use
- // kevlar_smart_downloads - might use
- // kevlar_thumbnail_fluid
- 'kevlar_ytb_live_badges',
-
- ...(!use_maintain_stable_list ? [
- 'kevlar_tuner_should_test_maintain_stable_list',
- 'kevlar_should_maintain_stable_list',
- 'kevlar_tuner_should_maintain_stable_list', // fallback
-
-
- ] : []),
-
-
- ...(!use_maintain_reuse_components ? [
-
- 'kevlar_tuner_should_test_reuse_components',
- 'kevlar_tuner_should_reuse_components',
- 'kevlar_should_reuse_components' // fallback
-
- ] : []),
-
-
- 'kevlar_system_icons',
-
- // 'kevlar_prefetch_data_augments_network_data' continue;
-
- // home page / watch page icons
- 'kevlar_three_dot_ink',
- 'kevlar_use_wil_icons',
- 'kevlar_home_skeleton',
-
- 'kevlar_fluid_touch_scroll',
- 'kevlar_watch_color_update',
- 'kevlar_use_vimio_behavior', // home page - channel icon
-
- // collapsed meta; no teaser, use latest collapsed meta design
- 'kevlar_structured_description_content_inline',
- 'kevlar_watch_metadata_refresh',
-
- 'kevlar_watch_js_panel_height', // affect Tabview Youtube
-
- 'shorts_desktop_watch_while_p2',
- 'web_button_rework',
- 'web_darker_dark_theme_live_chat',
- 'web_darker_dark_theme', // it also affect cinemtaics
-
- // modern menu
- 'web_button_rework_with_live',
- 'web_fix_fine_scrubbing_drag',
-
- // full screen -buggy
- 'external_fullscreen',
-
- // minimize menu
- 'web_modern_buttons',
- 'web_modern_dialogs',
-
- // Tabview Youtube - multiline transcript
- 'enable_mixed_direction_formatted_strings',
-
- // Notification Menu
- "kevlar_service_command_check",
-
- // Live ChatRoom Visibility
- "live_chat_cow_visibility_set_up",
-
- 'enable_unknown_lact_fix_on_html5',
-
-
-
-
- 'live_chat_chunk_across_update_interval',
-
- 'enable_native_live_chat_on_kevlar',
-
- 'live_chat_author_name_color_usernames',
- 'live_chat_seed_color_usernames',
- 'live_chat_colored_usernames',
- 'live_chat_simple_color_usernames',
- 'web_button_rework_with_live',
- 'live_chat_hide_avatars',
- 'live_chat_enable_qna_replay',
- 'live_chat_aggregation',
- 'live_chat_web_use_emoji_manager_singleton',
- 'enable_docked_chat_messages',
- 'live_chat_taller_emoji_picker',
- 'live_chat_emoji_picker_restyle',
- 'live_chat_emoji_picker_restyle_remain_open_on_send',
- 'live_chat_web_input_update',
- 'live_chat_enable_send_button_in_slow_mode',
-
- 'kevlar_watch_metadata_refresh_no_old_primary_data',
- // 'kevlar_watch_metadata_refresh_no_old_secondary_data', // for Tabview Youtube
- 'enable_web_cosmetic_refresh_hashtag_page',
- 'kevlar_watch_metadata_refresh_description_lines',
-
-
-
-
- 'enable_service_ajax_csn',
-
- 'kevlar_use_vimio_behavior',
-
- 'web_use_cache_for_image_fallback',
- 'kevlar_woffle_fallback_image',
- 'yt_img_shadow_trigger_show_on_visible',
- 'kevlar_thumbnail_bg',
- 'web_rounded_thumbnails',
-
-
-
- 'kevlar_rendererstamper_event_listener',
-
- 'dialog_behavior_no_tap_killswitch',
-
- 'handle_service_request_actions',
-
- 'live_chat_whole_message_clickable',
-
- 'live_chat_require_space_for_autocomplete_emoji',
-
- 'kevlar_keyboard_button_focus',
-
- 'live_chat_emoji_picker_toggle_state',
- 'super_sticker_emoji_picker_category_button_icon_filled',
- 'enable_super_chat_buy_flow_revamp_web',
-
-
- 'web_modern_buttons',
-
-
- 'web_modern_dialogs',
- 'live_chat_disable_chat_feed_animation',
- 'live_chat_overflow_hide_chat',
- 'web_darker_dark_theme_live_chat',
- 'live_chat_channel_activity',
- 'live_chat_emoji_picker_restyle_remain_open_on_click_to_input_area',
- 'live_chat_top_chat_sampling_enabled',
-
- 'live_chat_enable_mod_view',
- 'live_chat_web_enable_command_handler_action_handling',
- 'web_modern_dialogs',
- 'web_modern_dialog_layout',
- 'web_modern_typography',
-
- 'kevlar_disable_component_resizing_support',
- 'web_rounded_thumbnails',
- 'enable_quiz_desktop_animation',
- 'kevlar_thumbnail_fluid',
- 'web_enable_playlist_video_lockup_equalizer',
- 'web_modern_collections_v2',
- 'animated_live_badge_icon',
- 'use_color_palettes_modern_collections_v2',
- 'web_amsterdam_post_mvp_playlists',
- 'enable_desktop_search_bigger_thumbs',
- 'web_animated_actions',
- 'mweb_animated_actions',
- 'enable_desktop_amsterdam_info_panels',
-
- 'kevlar_modern_sd',
- 'problem_walkthrough_sd',
- 'polymer_video_renderer_defer_menu',
-
-
- 'enable_html5_teal_ad_badge',
- 'kevlar_ytb_live_badges',
- 'live_chat_enable_new_moderator_badge',
- 'live_chat_prepend_badges',
- 'live_chat_bold_color_usernames',
- 'render_custom_emojis_as_small_images',
-
- 'web_enable_dynamic_metadata',
-
- 'web_animated_like',
- 'web_animated_like_lazy_load',
- 'desktop_delay_player_resizing',
-
-
- ...(ALLOW_THEATER_PLAYER_SHORTCUT_KEY_T ? [
-
- // 'clean_up_manual_attribution_header',
- // 'empty_attributed_string_killswitch',
- // 'enable_profile_cards_cairo_updates',
- // 'enable_teaser_framework_web_client',
- // 'enable_tectonic_ad_ux_for_halftime',
- // 'enable_web_shorts_save_audio_pivot',
- // 'kevlar_clear_duplicate_pref_cookie',
- // 'kevlar_disable_background_prefetch',
- // 'kevlar_transcript_engagement_panel',
- 'kevlar_watch_flexy_theater_manager',
- // 'mdx_load_cast_api_bootstrap_script',
- // 'web_collab_playlist_thumbnail_size',
- // 'web_fix_back_button_player_loading',
- // 'web_fix_dynamic_metadata_diacritic',
- // 'web_kevlar_enable_adaptive_signals',
- // 'web_move_autoplay_video_under_chip',
- // 'web_player_small_hbp_settings_menu',
- // 'web_rendererstamper_event_listener',
- // 'web_shorts_skip_loading_same_index',
- // 'web_shorts_suggested_action_no_bvm',
- // 'web_use_updated_icon_for_oac_badge',
- // 'wiz_prevent_watched_double_logging',
-
- ] : []),
-
- ].concat(
- [
- ]
- );
-
-
- const s = new Set(BY_PASS);
-
- return s;
-
- };
- let cachedSet = null;
-
- const hExperimentFlagsFn = () => {
-
- if (brc > 4) brc = 4;
-
- const use_maintain_stable_list = getSettingValue(ENABLE_EXPERIMENT_FLAGS_MAINTAIN_STABLE_LIST);
- const use_maintain_reuse_components = getSettingValue(ENABLE_EXPERIMENT_FLAGS_MAINTAIN_REUSE_COMPONENTS);
- const use_defer_detach = getSettingValue(ENABLE_EXPERIMENT_FLAGS_DEFER_DETACH);
- const no_autoplay_toggle = getSettingValue(ENABLE_EXPERIMENT_FLAGS_NO_AUTOPLAY_TOGGLE);
- ENABLE_EXPERIMENT_FLAGS_NO_AUTOPLAY_TOGGLE.currentValue = no_autoplay_toggle;
-
- if (use_maintain_stable_list) Promise.resolve().then(() => console.debug("use_maintain_stable_list"));
- if (use_maintain_reuse_components) Promise.resolve().then(() => console.debug("use_maintain_reuse_components"));
- if (use_defer_detach) Promise.resolve().then(() => console.debug("use_defer_detach"));
- if (no_autoplay_toggle) Promise.resolve().then(() => console.debug("no_autoplay_toggle"));
-
- cachedSet = cachedSet || cachedSetFn({ use_maintain_stable_list, use_maintain_reuse_components, use_defer_detach, no_autoplay_toggle });
-
- const mps = [];
-
- setTimeout(async () => {
-
- if (!mps.length) return;
- let ezz = new Set();
- let e1 = 999;
- let e2 = -999;
- for (const mp of mps) {
- for (const k of mp) {
- ezz.add(k);
- const kl = k.length;
- if (kl < e1) e1 = kl;
- if (kl > e2) e2 = kl;
- }
- }
- mps.length = 0;
-
- if (!ezz.size) return;
-
- await new Promise(r => window.setTimeout(r, 1));
- let qt = Date.now();
-
- console.log('EXPERIMENT_FLAGS', [e1, e2, ezz.size]);
-
- let mf = false;
- const obj = JSON.parse(localStorage['bpghn02'] || '{}');
- for (const e of ezz) {
- if (obj[e]) continue;
- obj[e] = qt;
- mf = true;
- }
- if (mf) {
-
- localStorage['bpghn02'] = JSON.stringify(obj);
- }
-
- // await new Promise(r => window.setTimeout(r, 1));
-
- const getEFT = function (after, offset) {
-
-
- after = typeof after === 'string' ? new Date(after) : after;
- let afterValue = +after;
-
-
- let arr = Object.entries(obj).map(e => {
- return { key: e[0], date: e[1], len: e[0].length };
- }).sort((a, b) => {
- return a.date < b.date ? 1 : a.date > b.date ? -1 : a.len < b.len ? 1 : a.len > b.len ? -1 : `${a.key}`.localeCompare(`${b.key}`);
- });
-
- if (afterValue > 0) {
- arr = arr.filter(e => {
- return e.date >= afterValue + offset;
- })
- }
-
- return [arr, after, afterValue];
-
- }
-
- window.log_EXPERIMENT_FLAGS_Tamer = function (after, toString) {
-
- let [arr, after_, afterValue] = getEFT(after, -86400000);
-
- const r = {
- "!log": arr,
- after: afterValue > 0 ? new Date(afterValue) : null
- };
- console.log("log_EXPERIMENT_FLAGS_Tamer", toString ? JSON.stringify(r) : r);
-
- }
-
- window.kl_EXPERIMENT_FLAGS_Tamer = function (after, kl) {
-
-
- let [arr, after_, afterValue] = getEFT(after, -86400000);
-
- arr = arr.filter(e => {
- return e.len === kl
- });
-
- return arr.map(e => e.key).join('|')
-
-
- }
-
-
- }, 800);
-
- // I don't know why it requires to be extracted function.
- const mex = (EXPERIMENT_FLAGS, mzFlagDetected, fEntries) => {
-
- let ezz = new Set();
-
- for (const [key, value] of fEntries) {
-
-
- if (value === true) {
-
- // if(key.indexOf('modern')>=0 || key.indexOf('enable')>=0 || key.indexOf('theme')>=0 || key.indexOf('skip')>=0 || key.indexOf('ui')>=0 || key.indexOf('observer')>=0 || key.indexOf('polymer')>=0 )continue;
-
- if (mzFlagDetected.has(key)) continue;
- mzFlagDetected.add(key);
-
- if (cachedSet.has(key)) continue; // const BY_PASS = [
-
- if (SPACEBAR_CONTROL < 0 && key.includes('speedmaster')) continue;
-
- if (FLAG_STRATEGY_20240413 && key.includes('network')) continue;
- if (FLAG_STRATEGY_20240413 && key.includes('less')) continue;
- if (FLAG_STRATEGY_20240413 && key.includes('latency')) continue;
- if (FLAG_STRATEGY_20240413 && key.includes('slow')) continue;
- if (FLAG_STRATEGY_20240413 && key.includes('steam')) continue;
-
- // const kl = key.length;
- // const kl7 = kl % 7;
- // const kl5 = kl % 5;
- // const kl3 = kl % 3;
- // const kl2 = kl % 2;
-
- if (USE_byPassConditionAnalyzer && byPassConditionAnalyzer.testFn_(key, false)) continue;
-
-
- if (key.startsWith('html5_')) {
-
- if (IGNORE_VIDEO_SOURCE_RELATED) {
- continue;
- }
-
- // if(IGNORE_VIDEO_SOURCE_RELATED){
- // if(key ==='html5_enable_vp9_fairplay') continue;
- // if(key ==='html5_disable_av1_hdr') continue;
- // if(key ==='html5_disable_hfr_when_vp9_encrypted_2k4k_unsupported') continue;
- // if(key ==='html5_account_onesie_format_selection_during_format_filter') continue;
- // if(key ==='html5_prefer_hbr_vp9_over_av1') continue;
- // }
-
- } else if (key.startsWith('kevlar_')) {
-
- } else {
-
- }
-
- ezz.add(key);
-
- // console.log(key)
- EXPERIMENT_FLAGS[key] = false;
- }
- }
-
- mps.push(ezz);
- ezz = null;
- }
-
- const mey = (EXPERIMENT_FLAGS, mzFlagDetected) => {
- // return;
-
- if (FLAG_STRATEGY_20240503) {
- EXPERIMENT_FLAGS.disable_enf_isd = true;
- EXPERIMENT_FLAGS.ab_det_el_h = false;
- EXPERIMENT_FLAGS.ks_det_gpbl = true;
- EXPERIMENT_FLAGS.ks_get_o_pp = true;
- EXPERIMENT_FLAGS.ab_deg_unex_thr = true;
- EXPERIMENT_FLAGS.ab_det_sc_inj_enf = false;
- EXPERIMENT_FLAGS.debug_sk_em_precheck = false;
- }
-
- if (NO_DEBUG_FLAG) {
- EXPERIMENT_FLAGS.debug_forward_web_query_parameters = false;
- EXPERIMENT_FLAGS.debug_handle_relative_url_for_query_forward_killswitch = false;
- EXPERIMENT_FLAGS.debug_web_ve_data = false;
- }
-
-
- if (DISABLE_FLAGS_SHADYDOM_FREE) {
- EXPERIMENT_FLAGS.enable_shadydom_free_scoped_node_methods = false;
- EXPERIMENT_FLAGS.enable_shadydom_free_scoped_query_methods = false;
- EXPERIMENT_FLAGS.enable_shadydom_free_scoped_readonly_properties_batch_one = false;
- EXPERIMENT_FLAGS.enable_shadydom_free_parent_node = false;
- EXPERIMENT_FLAGS.enable_shadydom_free_children = false;
- EXPERIMENT_FLAGS.enable_shadydom_free_last_child = false;
- }
-
- if (SPACEBAR_CONTROL === 0) {
- EXPERIMENT_FLAGS.disable_space_scroll_fix = false;
- EXPERIMENT_FLAGS.global_spacebar_pause = false;
- EXPERIMENT_FLAGS.web_speedmaster_spacebar_control = false;
- } else if (SPACEBAR_CONTROL === 1) {
-
- EXPERIMENT_FLAGS.disable_space_scroll_fix = false;
- EXPERIMENT_FLAGS.global_spacebar_pause = true;
- EXPERIMENT_FLAGS.web_speedmaster_spacebar_control = false;
- } else if (SPACEBAR_CONTROL === 2) {
-
- EXPERIMENT_FLAGS.disable_space_scroll_fix = false;
- EXPERIMENT_FLAGS.global_spacebar_pause = true;
- EXPERIMENT_FLAGS.web_speedmaster_spacebar_control = true;
- }
-
- EXPERIMENT_FLAGS.use_cfr_monitor = false;
- EXPERIMENT_FLAGS.skip_network_check_if_cfr = false;
-
- if (FLAG_STRATEGY_20240413) {
- EXPERIMENT_FLAGS.kevlar_watch_grid = false;
- EXPERIMENT_FLAGS.kevlar_watch_grid_hide_chips = false;
- EXPERIMENT_FLAGS.kevlar_watch_grid_reduced_top_margin_rich_grid = false;
- EXPERIMENT_FLAGS.kevlar_watch_grid_top_companion = false;
- EXPERIMENT_FLAGS.kevlar_watch_fixie = false;
- EXPERIMENT_FLAGS.kevlar_watch_grid_auto_open_playlist = false;
- EXPERIMENT_FLAGS.action_companion_center_align_description = false;
- EXPERIMENT_FLAGS.action_companion_truncate_domain = false;
- }
-
- if (ENABLE_MINOR_CHAT_FEATURE_UPGRADE) {
-
-
- EXPERIMENT_FLAGS.web_supports_animations_api = true;
- EXPERIMENT_FLAGS.smartimation_background = true;
- // EXPERIMENT_FLAGS.register_web_smartimations_component = true;
-
- EXPERIMENT_FLAGS.enable_native_live_chat_on_kevlar = true;
-
- EXPERIMENT_FLAGS.live_chat_enable_qna_replay = true;
- EXPERIMENT_FLAGS.live_chat_aggregation = true;
- EXPERIMENT_FLAGS.live_chat_web_use_emoji_manager_singleton = true;
- // EXPERIMENT_FLAGS.enable_docked_chat_messages = true;
-
- EXPERIMENT_FLAGS.live_chat_mention_regex_update = true;
-
- }
-
- // EXPERIMENT_FLAGS.live_chat_taller_emoji_picker = true;
- // EXPERIMENT_FLAGS.live_chat_web_input_update = true;
-
- if (ENABLE_EMOJI_PICKER_NEW_STYLE) {
-
- EXPERIMENT_FLAGS.live_chat_emoji_picker_restyle = true;
- EXPERIMENT_FLAGS.live_chat_emoji_picker_restyle_remain_open_on_send = true;
- EXPERIMENT_FLAGS.live_chat_taller_emoji_picker = false;
-
- }
-
- if (ENABLE_BADGE_STYLE) {
-
- EXPERIMENT_FLAGS.enable_html5_teal_ad_badge = true;
- EXPERIMENT_FLAGS.kevlar_ytb_live_badges = true;
- EXPERIMENT_FLAGS.live_chat_enable_new_moderator_badge = true;
- EXPERIMENT_FLAGS.live_chat_prepend_badges = true;
-
- EXPERIMENT_FLAGS.live_chat_bold_color_usernames = true;
- EXPERIMENT_FLAGS.render_custom_emojis_as_small_images = true;
-
-
- }
-
- // EXPERIMENT_FLAGS.kevlar_wiz_prototype_enable_all_components = true;
-
-
- EXPERIMENT_FLAGS.html5_allow_asmjs = true;
- EXPERIMENT_FLAGS.html5_honor_caption_availabilities_in_audio_track = true;
- EXPERIMENT_FLAGS.web_player_hide_nitrate_promo_tooltip = true;
- EXPERIMENT_FLAGS.html5_enable_vod_slar_with_notify_pacf = true;
- EXPERIMENT_FLAGS.html5_recognize_predict_start_cue_point = true;
- EXPERIMENT_FLAGS.enable_player_logging_lr_home_infeed_ads = false;
-
- EXPERIMENT_FLAGS.log_gel_compression_latency = true;
- EXPERIMENT_FLAGS.log_gel_compression_latency_lr = true;
- EXPERIMENT_FLAGS.log_jspb_serialize_latency = true;
-
- if (NO_REFRESH) {
-
- EXPERIMENT_FLAGS.kevlar_watch_metadata_refresh_standardized_body_typography = false;
- EXPERIMENT_FLAGS.kevlar_refresh_gesture = false;
-
- }
-
-
- if (NO_DESKTOP_DELAY_PLAYER_RESIZING) {
-
- EXPERIMENT_FLAGS.desktop_delay_player_resizing = false;
- }
- if (NO_ANIMATED_LIKE) {
- EXPERIMENT_FLAGS.web_animated_like = false;
- EXPERIMENT_FLAGS.web_animated_like_lazy_load = false;
- }
-
- if (use_maintain_stable_list) {
- if (USE_MAINTAIN_STABLE_LIST_ONLY_WHEN_KS_FLAG_IS_SET ? EXPERIMENT_FLAGS.kevlar_should_maintain_stable_list === true : true) {
- // EXPERIMENT_FLAGS.kevlar_tuner_should_test_maintain_stable_list = true; // timestamp toggle issue
- EXPERIMENT_FLAGS.kevlar_should_maintain_stable_list = true;
- // EXPERIMENT_FLAGS.kevlar_tuner_should_maintain_stable_list = true; // fallback // timestamp toggle issue
- }
- }
-
- if (use_maintain_reuse_components) {
- EXPERIMENT_FLAGS.kevlar_tuner_should_test_reuse_components = true;
- EXPERIMENT_FLAGS.kevlar_tuner_should_reuse_components = true;
- EXPERIMENT_FLAGS.kevlar_should_reuse_components = true; // fallback
- }
-
- if (use_defer_detach) {
- EXPERIMENT_FLAGS.kevlar_tuner_should_defer_detach = true;
- }
-
- // EXPERIMENT_FLAGS.kevlar_prefetch_data_augments_network_data = true; // TBC
-
- EXPERIMENT_FLAGS.kevlar_clear_non_displayable_url_params = true;
- EXPERIMENT_FLAGS.kevlar_clear_duplicate_pref_cookie = true;
- // EXPERIMENT_FLAGS.kevlar_unified_player_clear_watch_next_killswitch = true;
- EXPERIMENT_FLAGS.kevlar_player_playlist_use_local_index = true;
- // EXPERIMENT_FLAGS.kevlar_non_watch_unified_player = true;
- // EXPERIMENT_FLAGS.kevlar_player_update_killswitch = true;
-
- EXPERIMENT_FLAGS.web_secure_pref_cookie_killswitch = true;
- EXPERIMENT_FLAGS.ytidb_clear_optimizations_killswitch = true;
- // EXPERIMENT_FLAGS.defer_overlays = true;
-
-
- if (COMMENTS_NO_DELAY) {
- EXPERIMENT_FLAGS.kevlar_tuner_default_comments_delay = 0;
- EXPERIMENT_FLAGS.kevlar_tuner_run_default_comments_delay = false;
- }
-
- }
- const setterFn = (EXPERIMENT_FLAGS, mzFlagDetected) => {
-
- const fEntries = Object.entries(EXPERIMENT_FLAGS);
- mex(EXPERIMENT_FLAGS, mzFlagDetected, fEntries);
- mey(EXPERIMENT_FLAGS, mzFlagDetected);
-
- };
-
- return setterFn;
-
-
- };
-
- let _setterFn = null;
-
- const setupConfig = (config_) => {
-
- if (config_.EXPERIMENT_FLAGS) {
-
- const setterFn = _setterFn || (_setterFn = hExperimentFlagsFn());
-
- setterFn(config_.EXPERIMENT_FLAGS, mzFlagDetected1);
-
- if (config_.EXPERIMENTS_FORCED_FLAGS) setterFn(config_.EXPERIMENTS_FORCED_FLAGS, mzFlagDetected2);
- }
-
- const playerKevlar = (config_.WEB_PLAYER_CONTEXT_CONFIGS || 0).WEB_PLAYER_CONTEXT_CONFIG_ID_KEVLAR_WATCH || 0;
-
- if (playerKevlar && !zPlayerKevlar) {
- zPlayerKevlar = true;
-
- if (NO_SerializedExperiment && typeof playerKevlar.serializedExperimentFlags === 'string' && typeof playerKevlar.serializedExperimentIds === 'string') {
- fixSerializedExperiment(playerKevlar);
- }
-
- }
-
- }
-
-
- const looperFn = (config_) => {
- if (--brc < 0) return;
-
- if (!config_) {
- try {
- config_ = yt.config_ || ytcfg.data_;
- } catch (e) { }
- }
- if (config_) setupConfig(config_);
-
- };
-
-
- window._ytConfigHacks.add((config_) => {
- looperFn(config_);
- });
- looperFn();
-
- if (isMainWindow) {
-
- console.groupCollapsed(
- "%cYouTube EXPERIMENT_FLAGS Tamer",
- "background-color: #EDE43B ; color: #000 ; font-weight: bold ; padding: 4px ;"
- );
-
- console.log("Script is loaded.");
- console.log("This might affect the new features when YouTube rolls them out to general users.");
- console.log("If you found any issue in using YouTube, please disable this script to check whether the issue is due to this script or not.");
-
- console.groupEnd();
-
- }
-
- })();