{"id":38960,"date":"2026-04-20T15:23:26","date_gmt":"2026-04-20T13:23:26","guid":{"rendered":"https:\/\/www.recharge.com\/blog\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps"},"modified":"2026-04-21T10:23:49","modified_gmt":"2026-04-21T08:23:49","slug":"konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps","status":"publish","type":"post","link":"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps","title":{"rendered":"Konwerter Czu\u0142o\u015bci Myszy: Kalkulator dla 23 Gier FPS"},"content":{"rendered":"\n\n<!--\n  RECHARGE \u2014 Konwerter Czu\u0142o\u015bci Myszy (Osadzenie WordPress)\n  Wstaw to do bloku Niestandardowy HTML w WordPress.\n  Ca\u0142y CSS jest obj\u0119ty zakresem .rc-widget, aby unikn\u0105\u0107 konflikt\u00f3w z motywem.\n-->\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800&#038;display=swap\">\n<style>\n.rc-widget {\n  --bg: #F5F7F8;\n  --bg-deep: #EDF0F2;\n  --bg-card: rgba(255, 255, 255, 0.7);\n  --bg-card-solid: #FFFFFF;\n  --bg-input: #F0F3F5;\n  --bg-input-hover: #E6EBED;\n\n  --accent: #059669;\n  --accent-hover: #047857;\n  --accent-glow: rgba(5, 150, 105, 0.12);\n  --accent-soft: rgba(5, 150, 105, 0.06);\n\n  --text: #111827;\n  --text-secondary: #4B5563;\n  --text-muted: #9CA3AF;\n  --text-label: #6B7280;\n  --text-dark: #FFFFFF;\n\n  --border: #E5E7EB;\n  --border-focus: #059669;\n  --border-error: #EF4444;\n\n  --gold: #D97706;\n  --danger: #EF4444;\n\n  --radius: 12px;\n  --radius-lg: 16px;\n  --radius-xl: 20px;\n  --radius-full: 9999px;\n\n  --shadow: 0 1px 3px rgba(0,0,0,0.06), 0 4px 16px rgba(0,0,0,0.04);\n  --shadow-lg: 0 4px 24px rgba(0,0,0,0.08), 0 8px 32px rgba(0,0,0,0.04);\n\n  --font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n\n  font-family: var(--font);\n  color: var(--text);\n  line-height: 1.6;\n  -webkit-font-smoothing: antialiased;\n  max-width: 780px;\n  margin: 0 auto;\n  padding: 8px 0;\n}\n\n.rc-widget *, .rc-widget *::before, .rc-widget *::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n\n\/* \u2500\u2500 Dynamic H2 Heading \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-converter-heading {\n  font-size: 1.5rem;\n  font-weight: 700;\n  color: var(--text);\n  text-align: center;\n  margin-bottom: 20px;\n  letter-spacing: -0.5px;\n  line-height: 1.3;\n  min-height: 2em;\n  transition: opacity 0.3s ease;\n}\n.rc-widget .rc-converter-heading .rc-h2-accent { color: var(--accent); }\n.rc-widget .rc-converter-heading.empty { opacity: 0; min-height: 0; margin-bottom: 0; }\n\n\/* \u2500\u2500 Game Note Banner \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-game-note {\n  background: rgba(217,119,6,0.06);\n  border: 1px solid rgba(217,119,6,0.2);\n  border-radius: var(--radius);\n  padding: 10px 16px;\n  margin-top: 12px;\n  font-size: 13px;\n  color: var(--gold);\n  display: none;\n  align-items: flex-start;\n  gap: 8px;\n  line-height: 1.5;\n}\n.rc-widget .rc-game-note.visible { display: flex; }\n.rc-widget .rc-game-note-icon { flex-shrink: 0; margin-top: 1px; }\n\n\/* \u2500\u2500 Card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-card {\n  background: var(--bg-card-solid);\n  border: 1px solid var(--border);\n  border-radius: var(--radius-xl);\n  padding: 36px 32px 28px;\n  margin-bottom: 20px;\n  position: relative;\n  box-shadow: var(--shadow);\n  animation: rcFadeIn 0.4s ease forwards;\n}\n.rc-widget .rc-card:nth-child(3) { animation-delay: 0.1s; }\n\n.rc-widget .rc-card-title {\n  font-size: 0.8rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 1px;\n  color: var(--text-muted);\n  margin-bottom: 24px;\n}\n\n\/* \u2500\u2500 Grid Layouts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; position: relative; }\n.rc-widget .rc-grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; }\n.rc-widget .rc-grid-full { grid-column: 1 \/ -1; }\n\n\/* \u2500\u2500 Floating Label Input \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-field { position: relative; width: 100%; }\n\n.rc-widget .rc-field input,\n.rc-widget .rc-field select {\n  width: 100%;\n  height: 60px;\n  padding: 26px 16px 8px;\n  font-size: 16px;\n  font-weight: 500;\n  font-family: var(--font);\n  color: var(--text);\n  background: var(--bg-input);\n  border: 1.5px solid var(--border);\n  border-radius: var(--radius);\n  outline: none;\n  transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n.rc-widget .rc-field input::placeholder { color: transparent; }\n.rc-widget .rc-field input:hover,\n.rc-widget .rc-field select:hover { background: var(--bg-input-hover); }\n\n.rc-widget .rc-field input:focus,\n.rc-widget .rc-field select:focus {\n  border-color: var(--border-focus);\n  box-shadow: 0 0 0 4px var(--accent-glow);\n}\n\n.rc-widget .rc-field label {\n  position: absolute;\n  top: 50%;\n  left: 16px;\n  transform: translateY(-50%);\n  font-size: 15px;\n  font-weight: 500;\n  color: var(--text-label);\n  pointer-events: none;\n  transition: all 0.2s ease;\n  z-index: 2;\n  line-height: 1;\n}\n\n.rc-widget .rc-field input:focus + label,\n.rc-widget .rc-field input:not(:placeholder-shown) + label,\n.rc-widget .rc-field select:focus + label,\n.rc-widget .rc-field.has-value label {\n  top: 14px;\n  transform: translateY(0);\n  font-size: 12px;\n  font-weight: 600;\n  color: var(--accent);\n}\n\n.rc-widget .rc-field select {\n  cursor: pointer;\n  padding-right: 44px;\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\");\n  background-repeat: no-repeat;\n  background-position: right 14px center;\n  background-size: 18px;\n}\n.rc-widget .rc-field select:focus {\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%23059669' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'\/%3E%3C\/svg%3E\");\n}\n.rc-widget .rc-field select option { background: var(--bg-card-solid); color: var(--text); padding: 12px; }\n\n\/* \u2500\u2500 Searchable Game Dropdown \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-game-select-wrap { position: relative; width: 100%; overflow: visible !important; }\n.rc-widget .rc-card { overflow: visible !important; }\n.rc-widget .rc-grid-2 { overflow: visible !important; }\n\n.rc-widget .rc-game-input {\n  width: 100%;\n  height: 60px;\n  padding: 26px 44px 8px 16px;\n  font-size: 16px;\n  font-weight: 500;\n  font-family: var(--font);\n  color: var(--text);\n  background: var(--bg-input);\n  border: 1.5px solid var(--border);\n  border-radius: var(--radius);\n  outline: none;\n  transition: border-color 0.2s, box-shadow 0.2s, background-color 0.2s;\n  cursor: pointer;\n}\n\n.rc-widget .rc-game-input:hover { background: var(--bg-input-hover); }\n.rc-widget .rc-game-input:focus {\n  border-color: var(--border-focus);\n  box-shadow: 0 0 0 4px var(--accent-glow);\n  cursor: text;\n}\n\n.rc-widget .rc-game-label {\n  position: absolute;\n  top: 50%; left: 16px;\n  transform: translateY(-50%);\n  font-size: 15px; font-weight: 500;\n  color: var(--text-label);\n  pointer-events: none;\n  transition: all 0.2s ease;\n  z-index: 2; line-height: 1;\n}\n\n.rc-widget .rc-game-select-wrap.focused .rc-game-label,\n.rc-widget .rc-game-select-wrap.has-value .rc-game-label {\n  top: 14px; transform: translateY(0);\n  font-size: 12px; font-weight: 600; color: var(--accent);\n}\n\n.rc-widget .rc-game-arrow {\n  position: absolute; right: 14px; top: 50%; transform: translateY(-50%);\n  width: 18px; height: 18px; pointer-events: none;\n  transition: transform 0.2s; color: var(--text-muted);\n}\n.rc-widget .rc-game-select-wrap.open .rc-game-arrow { transform: translateY(-50%) rotate(180deg); color: var(--accent); }\n\n.rc-widget .rc-dropdown {\n  position: absolute;\n  top: calc(100% + 6px); left: 0; right: 0;\n  background: var(--bg-card-solid);\n  border: 1px solid var(--border);\n  border-radius: var(--radius);\n  box-shadow: var(--shadow-lg);\n  z-index: 999999;\n  max-height: 260px;\n  overflow-y: auto;\n  display: none;\n  scrollbar-width: thin;\n  scrollbar-color: #D1D5DB transparent;\n}\n.rc-widget .rc-dropdown.open { display: block !important; }\n\n.rc-widget .rc-dropdown-item {\n  padding: 12px 16px; font-size: 14px; font-weight: 500;\n  color: var(--text-secondary); cursor: pointer;\n  transition: all 0.15s;\n  border-bottom: 1px solid rgba(0,0,0,0.04);\n}\n.rc-widget .rc-dropdown-item:last-child { border-bottom: none; }\n.rc-widget .rc-dropdown-item:hover,\n.rc-widget .rc-dropdown-item.highlighted { background: var(--accent); color: var(--text-dark); }\n\n.rc-widget .rc-dropdown-empty { padding: 16px; text-align: center; color: var(--text-muted); font-size: 14px; }\n\n.rc-widget .rc-dropdown::-webkit-scrollbar { width: 6px; }\n.rc-widget .rc-dropdown::-webkit-scrollbar-track { background: transparent; }\n.rc-widget .rc-dropdown::-webkit-scrollbar-thumb { background: #D1D5DB; border-radius: 3px; }\n\n\/* \u2500\u2500 Swap Button \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-swap-wrap { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 10; }\n\n.rc-widget .rc-swap-btn {\n  width: 40px; height: 40px;\n  background: var(--bg-card-solid);\n  border: 1.5px solid var(--border);\n  border-radius: 50%; cursor: pointer;\n  display: flex; align-items: center; justify-content: center;\n  color: var(--text-muted); transition: all 0.2s; padding: 0;\n}\n.rc-widget .rc-swap-btn:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); transform: scale(1.08); }\n.rc-widget .rc-swap-btn:active { transform: scale(0.95); }\n.rc-widget .rc-swap-btn svg { width: 18px; height: 18px; }\n\n\/* \u2500\u2500 Result Display \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-result-section { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--border); }\n\n.rc-widget .rc-result-main { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; }\n.rc-widget .rc-result-left { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }\n.rc-widget .rc-result-label { font-size: 1.1rem; font-weight: 600; color: var(--text); }\n\n.rc-widget .rc-result-pill {\n  display: inline-flex; align-items: center; gap: 10px;\n  background: rgba(5,150,105,0.08);\n  border: 1px solid rgba(5,150,105,0.2);\n  padding: 6px 10px 6px 20px;\n  border-radius: var(--radius-full);\n  font-size: 1.25rem; font-weight: 700; color: var(--accent);\n  min-width: 120px; transition: all 0.3s;\n}\n.rc-widget .rc-result-pill.waiting { color: var(--text-muted); background: rgba(0,0,0,0.03); border-color: var(--border); }\n\n.rc-widget .rc-copy-btn {\n  width: 34px; height: 34px; background: transparent; border: none;\n  cursor: pointer; color: var(--accent);\n  display: flex; align-items: center; justify-content: center;\n  border-radius: 50%; transition: all 0.2s; padding: 0; flex-shrink: 0;\n}\n.rc-widget .rc-copy-btn:hover { background: rgba(5,150,105,0.1); }\n.rc-widget .rc-copy-btn:active { transform: scale(0.9); }\n.rc-widget .rc-copy-btn.copied { background: var(--accent); color: var(--text-dark); }\n.rc-widget .rc-copy-btn svg { width: 16px; height: 16px; }\n\n\/* \u2500\u2500 Buttons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-btn-group { display: flex; gap: 8px; flex-wrap: wrap; }\n\n.rc-widget .rc-btn {\n  padding: 8px 20px; border-radius: var(--radius-full);\n  border: 1.5px solid var(--border); background: transparent;\n  color: var(--text-secondary); font-size: 14px; font-weight: 600;\n  font-family: var(--font); cursor: pointer;\n  display: inline-flex; align-items: center; gap: 6px;\n  transition: all 0.2s; white-space: nowrap;\n}\n.rc-widget .rc-btn:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); transform: translateY(-1px); }\n.rc-widget .rc-btn:active { transform: scale(0.97); }\n.rc-widget .rc-btn svg { width: 14px; height: 14px; }\n.rc-widget .rc-btn.active { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }\n.rc-widget .rc-btn.active .rc-toggle-arrow { transform: rotate(180deg); }\n.rc-widget .rc-toggle-arrow { transition: transform 0.2s; }\n\n\/* \u2500\u2500 Advanced Results \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-advanced { display: none; margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--border); }\n.rc-widget .rc-advanced.visible { display: block; }\n.rc-widget .rc-adv-grid { display: flex; flex-wrap: wrap; gap: 12px; }\n.rc-widget .rc-adv-item { display: flex; align-items: center; gap: 8px; }\n.rc-widget .rc-adv-label { font-size: 14px; font-weight: 500; color: var(--text-muted); }\n.rc-widget .rc-adv-pill {\n  padding: 5px 16px; border-radius: var(--radius-full);\n  background: rgba(0,0,0,0.03); border: 1px solid var(--border);\n  font-size: 14px; font-weight: 600; color: var(--text);\n  display: flex; align-items: center; gap: 6px;\n}\n\n\/* \u2500\u2500 eDPI Calculator \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-edpi-output {\n  background: rgba(5,150,105,0.05);\n  border: 1px solid rgba(5,150,105,0.15);\n  border-radius: var(--radius-lg);\n  padding: 24px; text-align: center;\n  display: flex; flex-direction: column; justify-content: center;\n  min-height: 132px;\n}\n.rc-widget .rc-edpi-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: var(--text-muted); margin-bottom: 8px; }\n.rc-widget .rc-edpi-value-wrap { display: flex; align-items: center; justify-content: center; gap: 10px; }\n.rc-widget .rc-edpi-value { font-size: 2rem; font-weight: 800; color: var(--accent); line-height: 1; transition: all 0.3s; }\n.rc-widget .rc-edpi-value.waiting { color: var(--text-muted); }\n\n\/* \u2500\u2500 Pro Presets \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-presets-section { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--border); }\n.rc-widget .rc-presets-title { font-size: 13px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 12px; }\n.rc-widget .rc-presets-grid { display: flex; flex-wrap: wrap; gap: 8px; }\n\n.rc-widget .rc-preset-chip {\n  padding: 6px 14px; border-radius: var(--radius-full);\n  border: 1.5px solid var(--border); background: transparent;\n  color: var(--text-secondary); font-size: 13px; font-weight: 600;\n  font-family: var(--font); cursor: pointer; transition: all 0.2s;\n  display: flex; align-items: center; gap: 6px;\n}\n.rc-widget .rc-preset-chip:hover { border-color: var(--gold); color: var(--gold); background: rgba(217,119,6,0.06); }\n.rc-widget .rc-preset-chip .preset-game { font-weight: 500; color: var(--text-muted); font-size: 11px; }\n\n\/* \u2500\u2500 Toast \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-toast {\n  position: fixed; top: 20px; right: 20px;\n  background: var(--accent); color: var(--text-dark);\n  padding: 12px 20px; border-radius: var(--radius);\n  font-size: 14px; font-weight: 600;\n  box-shadow: 0 4px 16px rgba(5,150,105,0.3);\n  z-index: 10000; opacity: 0; transform: translateY(-10px);\n  transition: all 0.3s ease; pointer-events: none;\n}\n.rc-widget .rc-toast.visible { opacity: 1; transform: translateY(0); }\n\n\/* \u2500\u2500 Error States \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-field.error input,\n.rc-widget .rc-game-select-wrap.error .rc-game-input {\n  border-color: var(--danger) !important;\n  box-shadow: 0 0 0 3px rgba(239,68,68,0.1) !important;\n}\n\n\/* \u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .rc-footer { text-align: center; padding: 24px 0; color: var(--text-muted); font-size: 0.8rem; }\n.rc-widget .rc-footer a { color: var(--accent); text-decoration: none; }\n.rc-widget .rc-footer a:hover { text-decoration: underline; }\n\n\/* \u2500\u2500 Screen Reader \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.rc-widget .sr-only {\n  position: absolute; width: 1px; height: 1px;\n  padding: 0; margin: -1px; overflow: hidden;\n  clip: rect(0,0,0,0); white-space: nowrap; border: 0;\n}\n\n\/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@media (max-width: 640px) {\n  .rc-widget .rc-converter-heading { font-size: 1.15rem; }\n  .rc-widget .rc-card { padding: 24px 18px 20px; }\n  .rc-widget .rc-grid-2 { grid-template-columns: 1fr; }\n  .rc-widget .rc-grid-3 { grid-template-columns: 1fr; }\n  .rc-widget .rc-swap-wrap { position: relative; top: auto; left: auto; transform: none; display: flex; justify-content: center; margin: -4px 0; z-index: 10; }\n  .rc-widget .rc-swap-btn svg { transform: rotate(90deg); }\n  .rc-widget .rc-result-main { flex-direction: column; align-items: flex-start; }\n  .rc-widget .rc-result-left { width: 100%; }\n  .rc-widget .rc-adv-grid { flex-direction: column; }\n  .rc-widget .rc-presets-grid { gap: 6px; }\n  .rc-widget .rc-edpi-row { grid-template-columns: 1fr !important; }\n  .rc-widget .rc-edpi-output { min-height: auto; padding: 20px; }\n}\n\n\/* \u2500\u2500 Animations \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@keyframes rcFadeIn {\n  from { opacity: 0; transform: translateY(8px); }\n  to { opacity: 1; transform: translateY(0); }\n}\n@keyframes rcPulse {\n  0%, 100% { opacity: 1; }\n  50% { opacity: 0.6; }\n}\n.rc-widget .rc-result-pill.calculating { animation: rcPulse 0.5s ease; }\n<\/style>\n<div class=\"rc-widget\" id=\"rcWidget\">\n\n  <!-- Dynamic H2: updates to \"[Game] to [Game] Sensitivity Converter\" -->\n  <h2 class=\"rc-converter-heading empty\" id=\"converterHeading\"><\/h2>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 CONVERTER CARD \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"rc-card\" id=\"converterCard\">\n    <div class=\"rc-card-title\">Konwerter Czu\u0142o\u015bci<\/div>\n\n    <!-- Game selects -->\n    <div class=\"rc-grid-2\" style=\"margin-bottom: 16px;\">\n      <div class=\"rc-game-select-wrap\" id=\"fromGameWrap\">\n        <input class=\"rc-game-input\" type=\"text\" id=\"fromGameInput\" placeholder=\" \" autocomplete=\"off\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-label=\"Gra \u017ar\u00f3d\u0142owa\">\n        <label class=\"rc-game-label\">Z Gry<\/label>\n        <svg class=\"rc-game-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n        <div class=\"rc-dropdown\" id=\"fromDropdown\" role=\"listbox\"><\/div>\n        <input type=\"hidden\" id=\"fromGameValue\">\n      <\/div>\n\n      <div class=\"rc-swap-wrap\">\n        <button class=\"rc-swap-btn\" id=\"swapBtn\" aria-label=\"Zamie\u0144 gry\" title=\"Zamie\u0144 gry\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 16l-4-4 4-4\"\/><path d=\"M17 8l4 4-4 4\"\/><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"\/><\/svg>\n        <\/button>\n      <\/div>\n\n      <div class=\"rc-game-select-wrap\" id=\"toGameWrap\">\n        <input class=\"rc-game-input\" type=\"text\" id=\"toGameInput\" placeholder=\" \" autocomplete=\"off\" role=\"combobox\" aria-expanded=\"false\" aria-haspopup=\"listbox\" aria-label=\"Gra docelowa\">\n        <label class=\"rc-game-label\">Na Gr\u0119<\/label>\n        <svg class=\"rc-game-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n        <div class=\"rc-dropdown\" id=\"toDropdown\" role=\"listbox\"><\/div>\n        <input type=\"hidden\" id=\"toGameValue\">\n      <\/div>\n    <\/div>\n\n    <!-- Sensitivity + DPI -->\n    <div class=\"rc-grid-3\">\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"fromSens\" placeholder=\" \" step=\"any\" min=\"0\" inputmode=\"decimal\" aria-label=\"Aktualna czu\u0142o\u015b\u0107\">\n        <label for=\"fromSens\">Czu\u0142o\u015b\u0107<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"fromDPI\" placeholder=\" \" value=\"800\" min=\"1\" inputmode=\"numeric\" aria-label=\"Aktualne DPI\">\n        <label for=\"fromDPI\">Z DPI<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"toDPI\" placeholder=\" \" value=\"800\" min=\"1\" inputmode=\"numeric\" aria-label=\"Docelowe DPI\">\n        <label for=\"toDPI\">Na DPI<\/label>\n      <\/div>\n    <\/div>\n\n    <!-- Game notes -->\n    <div class=\"rc-game-note\" id=\"gameNote\">\n      <span class=\"rc-game-note-icon\">&#9888;&#65039;<\/span>\n      <span id=\"gameNoteText\"><\/span>\n    <\/div>\n\n    <!-- Result -->\n    <div class=\"rc-result-section\">\n      <div class=\"rc-result-main\">\n        <div class=\"rc-result-left\">\n          <span class=\"rc-result-label\">Nowa Czu\u0142o\u015b\u0107<\/span>\n          <span class=\"rc-result-pill waiting\" id=\"resultPill\">\n            <span id=\"resultValue\">0.00<\/span>\n            <button class=\"rc-copy-btn\" id=\"copyResultBtn\" aria-label=\"Kopiuj wynik\" title=\"Kopiuj do schowka\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\n            <\/button>\n          <\/span>\n        <\/div>\n        <div class=\"rc-btn-group\">\n          <button class=\"rc-btn\" id=\"advancedToggle\" aria-expanded=\"false\">\n            Zaawansowane\n            <svg class=\"rc-toggle-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n          <\/button>\n          <button class=\"rc-btn\" id=\"resetBtn\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 12a9 9 0 019-9 9.75 9.75 0 016.74 2.74L21 8\"\/><path d=\"M21 3v5h-5\"\/><path d=\"M21 12a9 9 0 01-9 9 9.75 9.75 0 01-6.74-2.74L3 16\"\/><path d=\"M3 21v-5h5\"\/><\/svg>\n            Resetuj\n          <\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"rc-advanced\" id=\"advancedSection\">\n        <div class=\"rc-adv-grid\">\n          <div class=\"rc-adv-item\">\n            <span class=\"rc-adv-label\">eDPI<\/span>\n            <span class=\"rc-adv-pill\" id=\"advEDPI\">0.00<\/span>\n          <\/div>\n          <div class=\"rc-adv-item\">\n            <span class=\"rc-adv-label\">cm\/360&deg;<\/span>\n            <span class=\"rc-adv-pill\" id=\"advCm\">0.00<\/span>\n          <\/div>\n          <div class=\"rc-adv-item\">\n            <span class=\"rc-adv-label\">cal\/360&deg;<\/span>\n            <span class=\"rc-adv-pill\" id=\"advInch\">0.00<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Pro Presets -->\n    <div class=\"rc-presets-section\">\n      <div class=\"rc-presets-title\">Szybkie Zastosowanie: Ustawienia Pro<\/div>\n      <div class=\"rc-presets-grid\" id=\"presetsGrid\"><\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550 eDPI CALCULATOR CARD \u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"rc-card\">\n    <div class=\"rc-card-title\">Kalkulator eDPI<\/div>\n    <div class=\"rc-edpi-row\" style=\"display: grid; grid-template-columns: 1fr 1fr 200px; gap: 16px; align-items: start;\">\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"edpiSens\" placeholder=\" \" step=\"any\" min=\"0\" inputmode=\"decimal\" aria-label=\"Czu\u0142o\u015b\u0107 w grze\">\n        <label for=\"edpiSens\">Czu\u0142o\u015b\u0107<\/label>\n      <\/div>\n      <div class=\"rc-field\">\n        <input type=\"number\" id=\"edpiDPI\" placeholder=\" \" min=\"1\" inputmode=\"numeric\" aria-label=\"DPI myszy\">\n        <label for=\"edpiDPI\">DPI myszy<\/label>\n      <\/div>\n      <div class=\"rc-edpi-output\">\n        <div class=\"rc-edpi-label\">Twoje eDPI<\/div>\n        <div class=\"rc-edpi-value-wrap\">\n          <span class=\"rc-edpi-value waiting\" id=\"edpiResult\">0.0<\/span>\n          <button class=\"rc-copy-btn\" id=\"copyEdpiBtn\" aria-label=\"Kopiuj eDPI\" title=\"Kopiuj eDPI\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Footer -->\n  <div class=\"rc-footer\">\n    <p>Formu\u0142y konwersji oparte na zweryfikowanych warto\u015bciach odchylenia (yaw) w grach (2024&ndash;2025). Wyniki mog\u0105 si\u0119 r\u00f3\u017cni\u0107 w przypadku gier z nieliniowymi krzywymi czu\u0142o\u015bci.<\/p>\n  <\/div>\n\n  <!-- Toast -->\n  <div class=\"rc-toast\" id=\"toast\">Skopiowano do schowka!<\/div>\n\n  <!-- Screen reader -->\n  <div class=\"sr-only\" aria-live=\"polite\" id=\"srAnnounce\"><\/div>\n<\/div>\n<script>\n(function(){var c=atob(\"ICAndXNlIHN0cmljdCc7CgogIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgIEdBTUUgREFUQUJBU0UKICAgICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KICB2YXIgR0FNRVMgPSBbCiAgICB7IGlkOiAiY3MyIiwgICAgICAgICAgIG5hbWU6ICJDb3VudGVyLVN0cmlrZSAyIiwgICAgICAgIHlhdzogMC4wMjIsICAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImNzZ28iLCAgICAgICAgICBuYW1lOiAiQ1M6R08iLCAgICAgICAgICAgICAgICAgICB5YXc6IDAuMDIyLCAgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJ2YWxvcmFudCIsICAgICAgbmFtZTogIlZhbG9yYW50IiwgICAgICAgICAgICAgICAgeWF3OiAwLjA3LCAgICAgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAib3ZlcndhdGNoMiIsICAgIG5hbWU6ICJPdmVyd2F0Y2ggMiIsICAgICAgICAgICAgIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImFwZXgiLCAgICAgICAgICBuYW1lOiAiQXBleCBMZWdlbmRzIiwgICAgICAgICAgICB5YXc6IDAuMDIyLCAgICAgIGNhdDogIkJSIiB9LAogICAgeyBpZDogImZvcnRuaXRlIiwgICAgICBuYW1lOiAiRm9ydG5pdGUiLCAgICAgICAgICAgICAgICB5YXc6IDAuMDA1NTU1LCAgIGNhdDogIkJSIiwgICAgICAgbm90ZTogIkVudGVyIHRoZSBwZXJjZW50YWdlIHZhbHVlIGZyb20gaW4tZ2FtZSAoZS5nLiA3IGZvciA3JSkuIEZPVi1kZXBlbmRlbnQgYXQgZGVmYXVsdCA4MC4iIH0sCiAgICB7IGlkOiAiY29kLW13MyIsICAgICAgIG5hbWU6ICJDb0Q6IE1vZGVybiBXYXJmYXJlIElJSSIsIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImNvZC13YXJ6b25lIiwgICBuYW1lOiAiQ29EOiBXYXJ6b25lIiwgICAgICAgICAgICB5YXc6IDAuMDA2NiwgICAgIGNhdDogIkJSIiB9LAogICAgeyBpZDogImNvZC1ibzYiLCAgICAgICBuYW1lOiAiQ29EOiBCbGFjayBPcHMgNiIsICAgICAgICB5YXc6IDAuMDA2NiwgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJyNi1zaWVnZSIsICAgICAgbmFtZTogIlJhaW5ib3cgU2l4IFNpZWdlIiwgICAgICAgeWF3OiAwLjAwNTczMCwgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAiYmYyMDQyIiwgICAgICAgIG5hbWU6ICJCYXR0bGVmaWVsZCAyMDQyIiwgICAgICAgIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogInRmMiIsICAgICAgICAgICBuYW1lOiAiVGVhbSBGb3J0cmVzcyAyIiwgICAgICAgICB5YXc6IDAuMDIyLCAgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJxdWFrZSIsICAgICAgICAgbmFtZTogIlF1YWtlIENoYW1waW9ucyIsICAgICAgICAgeWF3OiAwLjAyMiwgICAgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAiZGVhZGxvY2siLCAgICAgIG5hbWU6ICJEZWFkbG9jayIsICAgICAgICAgICAgICAgIHlhdzogMC4wNDQsICAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogIm1hcnZlbC1yaXZhbHMiLCAgbmFtZTogIk1hcnZlbCBSaXZhbHMiLCAgICAgICAgICAgeWF3OiAwLjAwNjYsICAgICBjYXQ6ICJGUFMiIH0sCiAgICB7IGlkOiAidGhlLWZpbmFscyIsICAgIG5hbWU6ICJUaGUgRmluYWxzIiwgICAgICAgICAgICAgIHlhdzogMC4wMDY2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogImRlc3RpbnkyIiwgICAgICBuYW1lOiAiRGVzdGlueSAyIiwgICAgICAgICAgICAgICB5YXc6IDAuMDA2NiwgICAgIGNhdDogIkZQUyIgfSwKICAgIHsgaWQ6ICJoYWxvLWluZmluaXRlIiwgIG5hbWU6ICJIYWxvIEluZmluaXRlIiwgICAgICAgICAgIHlhdzogMC4wMjIsICAgICAgY2F0OiAiRlBTIiwgICAgICBub3RlOiAiWWF3IG5lZWRzIGNvbW11bml0eSB2ZXJpZmljYXRpb24uIiB9LAogICAgeyBpZDogInB1YmciLCAgICAgICAgICBuYW1lOiAiUFVCRyIsICAgICAgICAgICAgICAgICAgICB5YXc6IDAuMDAyMjIyLCAgIGNhdDogIkJSIiwgICAgICAgbm90ZTogIkhpcGZpcmUgeWF3IG9ubHkuIFBlci1zY29wZSBzZW5zaXRpdml0aWVzIHZhcnkuIiB9LAogICAgeyBpZDogInJ1c3QiLCAgICAgICAgICBuYW1lOiAiUnVzdCIsICAgICAgICAgICAgICAgICAgICB5YXc6IDAuMDAyMjIsICAgIGNhdDogIlN1cnZpdmFsIiwgIG5vdGU6ICJZYXcgdW52ZXJpZmllZCAtIHJlc3VsdHMgbWF5IGJlIGFwcHJveGltYXRlLiIgfSwKICAgIHsgaWQ6ICJ0YXJrb3YiLCAgICAgICAgbmFtZTogIkVzY2FwZSBmcm9tIFRhcmtvdiIsICAgICAgeWF3OiAwLjEyNSwgICAgICBjYXQ6ICJGUFMiLCAgICAgIG5vdGU6ICJDb21wbGV4IHN5c3RlbSB3aXRoIHBlci1vcHRpYyBtdWx0aXBsaWVycy4gUmVzdWx0cyBhcHByb3hpbWF0ZS4iIH0sCiAgICB7IGlkOiAiZnJhZ3B1bmsiLCAgICAgIG5hbWU6ICJGcmFnUHVuayIsICAgICAgICAgICAgICAgIHlhdzogMC4wNTU2LCAgICAgY2F0OiAiRlBTIiB9LAogICAgeyBpZDogInNwbGl0Z2F0ZTIiLCAgICBuYW1lOiAiU3BsaXRnYXRlIDIiLCAgICAgICAgICAgICB5YXc6IDAuMDExMTYsICAgIGNhdDogIkZQUyIgfQogIF07CgogIHZhciBHQU1FX01BUCA9IHt9OwogIEdBTUVTLmZvckVhY2goZnVuY3Rpb24oZykgeyBHQU1FX01BUFtnLmlkXSA9IGc7IH0pOwoKICB2YXIgUFJPX1BSRVNFVFMgPSBbCiAgICB7IGxhYmVsOiAiZG9uayIsICAgICAgICBnYW1lOiAiY3MyIiwgICAgICAgIHNlbnM6IDEuMjUsICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogInMxbXBsZSIsICAgICAgZ2FtZTogImNzMiIsICAgICAgICBzZW5zOiAzLjA5LCAgZHBpOiA0MDAgfSwKICAgIHsgbGFiZWw6ICJaeXdPbyIsICAgICAgIGdhbWU6ICJjczIiLCAgICAgICAgc2VuczogMi4wLCAgIGRwaTogNDAwIH0sCiAgICB7IGxhYmVsOiAibTBORVNZIiwgICAgICBnYW1lOiAiY3MyIiwgICAgICAgIHNlbnM6IDEuMTUsICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogIk5pS28iLCAgICAgICAgZ2FtZTogImNzMiIsICAgICAgICBzZW5zOiAxLjU1LCAgZHBpOiA0MDAgfSwKICAgIHsgbGFiZWw6ICJUZW5aIiwgICAgICAgIGdhbWU6ICJ2YWxvcmFudCIsICAgc2VuczogMC4xMzksIGRwaTogMTYwMCB9LAogICAgeyBsYWJlbDogImFzcGFzIiwgICAgICAgZ2FtZTogInZhbG9yYW50IiwgICBzZW5zOiAwLjQsICAgZHBpOiA4MDAgfSwKICAgIHsgbGFiZWw6ICJEZW1vbjEiLCAgICAgIGdhbWU6ICJ2YWxvcmFudCIsICAgc2VuczogMC4xLCAgIGRwaTogMTYwMCB9LAogICAgeyBsYWJlbDogInlheSIsICAgICAgICAgZ2FtZTogInZhbG9yYW50IiwgICBzZW5zOiAwLjI3LCAgZHBpOiA4MDAgfSwKICAgIHsgbGFiZWw6ICJJbXBlcmlhbEhhbCIsIGdhbWU6ICJhcGV4IiwgICAgICAgc2VuczogMS4xLCAgIGRwaTogODAwIH0sCiAgICB7IGxhYmVsOiAiR2VuYnVydGVuIiwgICBnYW1lOiAiYXBleCIsICAgICAgIHNlbnM6IDEuNSwgICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogIlBldGVyYm90IiwgICAgZ2FtZTogImZvcnRuaXRlIiwgICBzZW5zOiA1LjAsICAgZHBpOiA4MDAgfSwKICAgIHsgbGFiZWw6ICJCdWdoYSIsICAgICAgIGdhbWU6ICJmb3J0bml0ZSIsICAgc2VuczogNy4wLCAgIGRwaTogODAwIH0sCiAgICB7IGxhYmVsOiAiU1A5UksxRSIsICAgICBnYW1lOiAib3ZlcndhdGNoMiIsIHNlbnM6IDYuNzUsICBkcGk6IDgwMCB9LAogICAgeyBsYWJlbDogIlN0YWxrM3IiLCAgICAgZ2FtZTogIm92ZXJ3YXRjaDIiLCBzZW5zOiAzLjU4LCAgZHBpOiAxNjAwIH0KICBdOwoKICAvKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKICAgICBNQVRICiAgICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQICovCiAgZnVuY3Rpb24gc2Vuc1RvSW5jaDM2MChzZW5zLCBkcGksIHlhdykgeyByZXR1cm4gMzYwIC8gKHNlbnMgKiBkcGkgKiB5YXcpOyB9CiAgZnVuY3Rpb24gaW5jaDM2MFRvU2VucyhpbmNoMzYwLCBkcGksIHlhdykgeyByZXR1cm4gMzYwIC8gKGluY2gzNjAgKiBkcGkgKiB5YXcpOyB9CgogIGZ1bmN0aW9uIGNvbnZlcnQoZnJvbUlkLCB0b0lkLCBmcm9tU2VucywgZnJvbURQSSwgdG9EUEkpIHsKICAgIHZhciBmZyA9IEdBTUVfTUFQW2Zyb21JZF0sIHRnID0gR0FNRV9NQVBbdG9JZF07CiAgICBpZiAoIWZnIHx8ICF0ZykgcmV0dXJuIG51bGw7CiAgICB2YXIgaSA9IHNlbnNUb0luY2gzNjAoZnJvbVNlbnMsIGZyb21EUEksIGZnLnlhdyk7CiAgICB2YXIgbnMgPSBpbmNoMzYwVG9TZW5zKGksIHRvRFBJLCB0Zy55YXcpOwogICAgcmV0dXJuIHsgbmV3U2VuczogcGFyc2VGbG9hdChucy50b0ZpeGVkKDQpKSwgZURQSTogcGFyc2VGbG9hdCgobnMgKiB0b0RQSSkudG9GaXhlZCgyKSksIGluY2gzNjA6IHBhcnNlRmxvYXQoaS50b0ZpeGVkKDMpKSwgY20zNjA6IHBhcnNlRmxvYXQoKGkgKiAyLjU0KS50b0ZpeGVkKDIpKSB9OwogIH0KCiAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgRE9NIOKAlCB3YWl0IGZvciBlbGVtZW50cyB0byBleGlzdAogICAgIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCAqLwogIGZ1bmN0aW9uIGluaXRXaWRnZXQoKSB7CiAgICB2YXIgZ2V0RWwgPSBmdW5jdGlvbihpZCkgeyByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyB9OwoKICAgIHZhciBmcm9tR2FtZUlucHV0ID0gZ2V0RWwoJ2Zyb21HYW1lSW5wdXQnKSwgZnJvbUdhbWVWYWx1ZSA9IGdldEVsKCdmcm9tR2FtZVZhbHVlJyk7CiAgICB2YXIgZnJvbUdhbWVXcmFwID0gZ2V0RWwoJ2Zyb21HYW1lV3JhcCcpLCBmcm9tRHJvcGRvd24gPSBnZXRFbCgnZnJvbURyb3Bkb3duJyk7CiAgICB2YXIgdG9HYW1lSW5wdXQgPSBnZXRFbCgndG9HYW1lSW5wdXQnKSwgdG9HYW1lVmFsdWUgPSBnZXRFbCgndG9HYW1lVmFsdWUnKTsKICAgIHZhciB0b0dhbWVXcmFwID0gZ2V0RWwoJ3RvR2FtZVdyYXAnKSwgdG9Ecm9wZG93biA9IGdldEVsKCd0b0Ryb3Bkb3duJyk7CiAgICB2YXIgZnJvbVNlbnMgPSBnZXRFbCgnZnJvbVNlbnMnKSwgZnJvbURQSSA9IGdldEVsKCdmcm9tRFBJJyksIHRvRFBJID0gZ2V0RWwoJ3RvRFBJJyk7CiAgICB2YXIgcmVzdWx0UGlsbCA9IGdldEVsKCdyZXN1bHRQaWxsJyksIHJlc3VsdFZhbHVlID0gZ2V0RWwoJ3Jlc3VsdFZhbHVlJyk7CiAgICB2YXIgY29weVJlc3VsdEJ0biA9IGdldEVsKCdjb3B5UmVzdWx0QnRuJyk7CiAgICB2YXIgYWR2YW5jZWRUb2dnbGUgPSBnZXRFbCgnYWR2YW5jZWRUb2dnbGUnKSwgYWR2YW5jZWRTZWN0aW9uID0gZ2V0RWwoJ2FkdmFuY2VkU2VjdGlvbicpOwogICAgdmFyIHJlc2V0QnRuID0gZ2V0RWwoJ3Jlc2V0QnRuJyk7CiAgICB2YXIgYWR2RURQSSA9IGdldEVsKCdhZHZFRFBJJyksIGFkdkNtID0gZ2V0RWwoJ2FkdkNtJyksIGFkdkluY2ggPSBnZXRFbCgnYWR2SW5jaCcpOwogICAgdmFyIGVkcGlTZW5zID0gZ2V0RWwoJ2VkcGlTZW5zJyksIGVkcGlEUEkgPSBnZXRFbCgnZWRwaURQSScpLCBlZHBpUmVzdWx0ID0gZ2V0RWwoJ2VkcGlSZXN1bHQnKTsKICAgIHZhciBjb3B5RWRwaUJ0biA9IGdldEVsKCdjb3B5RWRwaUJ0bicpOwogICAgdmFyIGNvbnZlcnRlckhlYWRpbmcgPSBnZXRFbCgnY29udmVydGVySGVhZGluZycpOwogICAgdmFyIGdhbWVOb3RlID0gZ2V0RWwoJ2dhbWVOb3RlJyksIGdhbWVOb3RlVGV4dCA9IGdldEVsKCdnYW1lTm90ZVRleHQnKTsKICAgIHZhciB0b2FzdCA9IGdldEVsKCd0b2FzdCcpLCBzckFubm91bmNlID0gZ2V0RWwoJ3NyQW5ub3VuY2UnKTsKCiAgICAvKiBCYWlsIG91dCBpZiBjcml0aWNhbCBlbGVtZW50cyBhcmUgbWlzc2luZyAqLwogICAgaWYgKCFmcm9tR2FtZUlucHV0IHx8ICF0b0dhbWVJbnB1dCB8fCAhZnJvbVNlbnMgfHwgIXJlc3VsdFZhbHVlKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1JDIFdpZGdldDogQ3JpdGljYWwgRE9NIGVsZW1lbnRzIG5vdCBmb3VuZC4gV2lkZ2V0IGNhbm5vdCBpbml0aWFsaXplLicpOwogICAgICByZXR1cm47CiAgICB9CgogICAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgICBTRUFSQ0hBQkxFIERST1BET1dOCiAgICAgICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KICAgIGZ1bmN0aW9uIHNldHVwR2FtZURyb3Bkb3duKGlucHV0RWwsIGRyb3Bkb3duRWwsIHdyYXBFbCwgaGlkZGVuRWwpIHsKICAgICAgdmFyIGhpZ2hsaWdodElkeCA9IC0xLCBpc09wZW4gPSBmYWxzZSwgc2F2ZWRWYWx1ZSA9ICcnOwogICAgICB2YXIgc2tpcE5leHRCbHVyID0gZmFsc2U7CgogICAgICBmdW5jdGlvbiBnZXRGaWx0ZXJlZCgpIHsKICAgICAgICB2YXIgcSA9IGlucHV0RWwudmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7CiAgICAgICAgaWYgKCFxIHx8IGlucHV0RWwudmFsdWUgPT09IHNhdmVkVmFsdWUpIHJldHVybiBHQU1FUzsKICAgICAgICByZXR1cm4gR0FNRVMuZmlsdGVyKGZ1bmN0aW9uKGcpIHsgcmV0dXJuIGcubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YocSkgIT09IC0xOyB9KTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcmVuZGVyT3B0aW9ucygpIHsKICAgICAgICB2YXIgZmlsdGVyZWQgPSBnZXRGaWx0ZXJlZCgpOwogICAgICAgIGhpZ2hsaWdodElkeCA9IC0xOwogICAgICAgIGlmICghZmlsdGVyZWQubGVuZ3RoKSB7IGRyb3Bkb3duRWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InJjLWRyb3Bkb3duLWVtcHR5Ij5ObyBnYW1lcyBmb3VuZDwvZGl2Pic7IHJldHVybjsgfQogICAgICAgIGRyb3Bkb3duRWwuaW5uZXJIVE1MID0gZmlsdGVyZWQubWFwKGZ1bmN0aW9uKGcsIGkpIHsKICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0icmMtZHJvcGRvd24taXRlbSIgZGF0YS1pZD0iJyArIGcuaWQgKyAnIiBkYXRhLWlkeD0iJyArIGkgKyAnIiByb2xlPSJvcHRpb24iPicgKyBlc2MoZy5uYW1lKSArICc8L2Rpdj4nOwogICAgICAgIH0pLmpvaW4oJycpOwogICAgICAgIHZhciBpdGVtcyA9IGRyb3Bkb3duRWwucXVlcnlTZWxlY3RvckFsbCgnLnJjLWRyb3Bkb3duLWl0ZW0nKTsKICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGl0ZW1zLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAoZnVuY3Rpb24oaXRlbSkgewogICAgICAgICAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICBza2lwTmV4dEJsdXIgPSB0cnVlOwogICAgICAgICAgICAgIHNlbGVjdEdhbWUoaXRlbS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBjbGVhckhMKCk7CiAgICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHRlZCcpOwogICAgICAgICAgICAgIGhpZ2hsaWdodElkeCA9IHBhcnNlSW50KGl0ZW0uZ2V0QXR0cmlidXRlKCdkYXRhLWlkeCcpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9KShpdGVtc1tqXSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBmdW5jdGlvbiBjbGVhckhMKCkgewogICAgICAgIHZhciBlbHMgPSBkcm9wZG93bkVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yYy1kcm9wZG93bi1pdGVtJyk7CiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlbHMubGVuZ3RoOyBqKyspIHsgZWxzW2pdLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZ2hsaWdodGVkJyk7IH0KICAgICAgfQoKICAgICAgZnVuY3Rpb24gb3BlbigpIHsKICAgICAgICBpZiAoaXNPcGVuKSByZXR1cm47IGlzT3BlbiA9IHRydWU7IHNhdmVkVmFsdWUgPSBpbnB1dEVsLnZhbHVlOwogICAgICAgIGlmIChoaWRkZW5FbC52YWx1ZSkgaW5wdXRFbC52YWx1ZSA9ICcnOwogICAgICAgIGRyb3Bkb3duRWwuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwogICAgICAgIGRyb3Bkb3duRWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgd3JhcEVsLmNsYXNzTGlzdC5hZGQoJ29wZW4nLCAnZm9jdXNlZCcpOwogICAgICAgIGlucHV0RWwuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTsKICAgICAgICByZW5kZXJPcHRpb25zKCk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGNsb3NlKCkgewogICAgICAgIGlmICghaXNPcGVuKSByZXR1cm47IGlzT3BlbiA9IGZhbHNlOwogICAgICAgIGRyb3Bkb3duRWwuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpOwogICAgICAgIGRyb3Bkb3duRWwuc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgIHdyYXBFbC5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJywgJ2ZvY3VzZWQnKTsKICAgICAgICBpbnB1dEVsLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOwogICAgICAgIGlmIChoaWRkZW5FbC52YWx1ZSkgeyBpbnB1dEVsLnZhbHVlID0gR0FNRV9NQVBbaGlkZGVuRWwudmFsdWVdID8gR0FNRV9NQVBbaGlkZGVuRWwudmFsdWVdLm5hbWUgOiAnJzsgd3JhcEVsLmNsYXNzTGlzdC5hZGQoJ2hhcy12YWx1ZScpOyB9CiAgICAgICAgZWxzZSB7IGlucHV0RWwudmFsdWUgPSAnJzsgd3JhcEVsLmNsYXNzTGlzdC5yZW1vdmUoJ2hhcy12YWx1ZScpOyB9CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHNlbGVjdEdhbWUoaWQpIHsKICAgICAgICBoaWRkZW5FbC52YWx1ZSA9IGlkOwogICAgICAgIHZhciBnYW1lID0gR0FNRV9NQVBbaWRdOwogICAgICAgIGlucHV0RWwudmFsdWUgPSBnYW1lID8gZ2FtZS5uYW1lIDogJyc7CiAgICAgICAgd3JhcEVsLmNsYXNzTGlzdC5hZGQoJ2hhcy12YWx1ZScpOyB3cmFwRWwuY2xhc3NMaXN0LnJlbW92ZSgnZXJyb3InKTsKICAgICAgICBjbG9zZSgpOyBkb0NvbnZlcnRlckNhbGMoKTsgYW5ub3VuY2UoJ1NlbGVjdGVkOiAnICsgKGdhbWUgPyBnYW1lLm5hbWUgOiAnJykpOwogICAgICB9CgogICAgICBpbnB1dEVsLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24oZSkgewogICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgb3BlbigpOwogICAgICB9LCB0cnVlKTsKCiAgICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChza2lwTmV4dEJsdXIpIHsgc2tpcE5leHRCbHVyID0gZmFsc2U7IHJldHVybjsgfQogICAgICAgIHNldFRpbWVvdXQoY2xvc2UsIDIwMCk7CiAgICAgIH0pOwoKICAgICAgaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIGlmICghaXNPcGVuKSBvcGVuKCk7CiAgICAgICAgcmVuZGVyT3B0aW9ucygpOwogICAgICB9KTsKCiAgICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBpZiAoIWlzT3Blbikgb3BlbigpOwogICAgICB9KTsKCiAgICAgIGlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIH0pOwoKICAgICAgaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBpdGVtcyA9IGRyb3Bkb3duRWwucXVlcnlTZWxlY3RvckFsbCgnLnJjLWRyb3Bkb3duLWl0ZW0nKTsKICAgICAgICBpZiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgaWYgKCFpc09wZW4pIG9wZW4oKTsgaWYgKGl0ZW1zLmxlbmd0aCkgeyBoaWdobGlnaHRJZHggPSBNYXRoLm1pbihoaWdobGlnaHRJZHggKyAxLCBpdGVtcy5sZW5ndGggLSAxKTsgY2xlYXJITCgpOyBpdGVtc1toaWdobGlnaHRJZHhdLmNsYXNzTGlzdC5hZGQoJ2hpZ2hsaWdodGVkJyk7IGl0ZW1zW2hpZ2hsaWdodElkeF0uc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiAnbmVhcmVzdCd9KTsgfSB9CiAgICAgICAgZWxzZSBpZiAoZS5rZXkgPT09ICdBcnJvd1VwJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IGlmIChpdGVtcy5sZW5ndGgpIHsgaGlnaGxpZ2h0SWR4ID0gTWF0aC5tYXgoaGlnaGxpZ2h0SWR4IC0gMSwgMCk7IGNsZWFySEwoKTsgaXRlbXNbaGlnaGxpZ2h0SWR4XS5jbGFzc0xpc3QuYWRkKCdoaWdobGlnaHRlZCcpOyBpdGVtc1toaWdobGlnaHRJZHhdLnNjcm9sbEludG9WaWV3KHtibG9jazogJ25lYXJlc3QnfSk7IH0gfQogICAgICAgIGVsc2UgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgaWYgKGhpZ2hsaWdodElkeCA+PSAwICYmIGl0ZW1zW2hpZ2hsaWdodElkeF0pIHNlbGVjdEdhbWUoaXRlbXNbaGlnaGxpZ2h0SWR4XS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnKSk7IH0KICAgICAgICBlbHNlIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHsgZS5zdG9wUHJvcGFnYXRpb24oKTsgY2xvc2UoKTsgaW5wdXRFbC5ibHVyKCk7IH0KICAgICAgfSk7CgogICAgICByZXR1cm4geyBzZWxlY3RHYW1lOiBzZWxlY3RHYW1lLCBjbG9zZTogY2xvc2UsIGdldFZhbHVlOiBmdW5jdGlvbigpIHsgcmV0dXJuIGhpZGRlbkVsLnZhbHVlOyB9IH07CiAgICB9CgogICAgdmFyIGZyb21HYW1lREQgPSBzZXR1cEdhbWVEcm9wZG93bihmcm9tR2FtZUlucHV0LCBmcm9tRHJvcGRvd24sIGZyb21HYW1lV3JhcCwgZnJvbUdhbWVWYWx1ZSk7CiAgICB2YXIgdG9HYW1lREQgPSBzZXR1cEdhbWVEcm9wZG93bih0b0dhbWVJbnB1dCwgdG9Ecm9wZG93biwgdG9HYW1lV3JhcCwgdG9HYW1lVmFsdWUpOwoKICAgIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgICAgQ09OVkVSVEVSCiAgICAgICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KICAgIGZ1bmN0aW9uIHVwZGF0ZUhlYWRpbmcoKSB7CiAgICAgIHZhciBmID0gZnJvbUdhbWVWYWx1ZS52YWx1ZSwgdCA9IHRvR2FtZVZhbHVlLnZhbHVlOwogICAgICBpZiAoZiAmJiB0KSB7IGNvbnZlcnRlckhlYWRpbmcuaW5uZXJIVE1MID0gJzxzcGFuIGNsYXNzPSJyYy1oMi1hY2NlbnQiPicgKyBlc2MoR0FNRV9NQVBbZl0gPyBHQU1FX01BUFtmXS5uYW1lIDogZikgKyAnPC9zcGFuPiB0byA8c3BhbiBjbGFzcz0icmMtaDItYWNjZW50Ij4nICsgZXNjKEdBTUVfTUFQW3RdID8gR0FNRV9NQVBbdF0ubmFtZSA6IHQpICsgJzwvc3Bhbj4gU2Vuc2l0aXZpdHkgQ29udmVydGVyJzsgY29udmVydGVySGVhZGluZy5jbGFzc0xpc3QucmVtb3ZlKCdlbXB0eScpOyB9CiAgICAgIGVsc2UgaWYgKGYpIHsgY29udmVydGVySGVhZGluZy5pbm5lckhUTUwgPSAnPHNwYW4gY2xhc3M9InJjLWgyLWFjY2VudCI+JyArIGVzYyhHQU1FX01BUFtmXSA\/IEdBTUVfTUFQW2ZdLm5hbWUgOiBmKSArICc8L3NwYW4+IFNlbnNpdGl2aXR5IENvbnZlcnRlcic7IGNvbnZlcnRlckhlYWRpbmcuY2xhc3NMaXN0LnJlbW92ZSgnZW1wdHknKTsgfQogICAgICBlbHNlIGlmICh0KSB7IGNvbnZlcnRlckhlYWRpbmcuaW5uZXJIVE1MID0gJ0NvbnZlcnQgdG8gPHNwYW4gY2xhc3M9InJjLWgyLWFjY2VudCI+JyArIGVzYyhHQU1FX01BUFt0XSA\/IEdBTUVfTUFQW3RdLm5hbWUgOiB0KSArICc8L3NwYW4+JzsgY29udmVydGVySGVhZGluZy5jbGFzc0xpc3QucmVtb3ZlKCdlbXB0eScpOyB9CiAgICAgIGVsc2UgeyBjb252ZXJ0ZXJIZWFkaW5nLmlubmVySFRNTCA9ICcnOyBjb252ZXJ0ZXJIZWFkaW5nLmNsYXNzTGlzdC5hZGQoJ2VtcHR5Jyk7IH0KICAgIH0KCiAgICBmdW5jdGlvbiB1cGRhdGVHYW1lTm90ZXMoKSB7CiAgICAgIHZhciBmID0gZnJvbUdhbWVWYWx1ZS52YWx1ZSwgdCA9IHRvR2FtZVZhbHVlLnZhbHVlLCBub3RlcyA9IFtdOwogICAgICBpZiAoZiAmJiBHQU1FX01BUFtmXSAmJiBHQU1FX01BUFtmXS5ub3RlKSBub3Rlcy5wdXNoKEdBTUVfTUFQW2ZdLm5hbWUgKyAnOiAnICsgR0FNRV9NQVBbZl0ubm90ZSk7CiAgICAgIGlmICh0ICYmIEdBTUVfTUFQW3RdICYmIEdBTUVfTUFQW3RdLm5vdGUgJiYgdCAhPT0gZikgbm90ZXMucHVzaChHQU1FX01BUFt0XS5uYW1lICsgJzogJyArIEdBTUVfTUFQW3RdLm5vdGUpOwogICAgICBpZiAobm90ZXMubGVuZ3RoKSB7IGdhbWVOb3RlVGV4dC50ZXh0Q29udGVudCA9IG5vdGVzLmpvaW4oJyBcdTAwQjcgJyk7IGdhbWVOb3RlLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsgfQogICAgICBlbHNlIHsgZ2FtZU5vdGUuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOyB9CiAgICB9CgogICAgZnVuY3Rpb24gZG9Db252ZXJ0ZXJDYWxjKCkgewogICAgICB2YXIgZiA9IGZyb21HYW1lVmFsdWUudmFsdWUsIHQgPSB0b0dhbWVWYWx1ZS52YWx1ZTsKICAgICAgdmFyIHMgPSBwYXJzZUZsb2F0KGZyb21TZW5zLnZhbHVlKSwgZEYgPSBwYXJzZUZsb2F0KGZyb21EUEkudmFsdWUpLCBkVCA9IHBhcnNlRmxvYXQodG9EUEkudmFsdWUpOwogICAgICB1cGRhdGVIZWFkaW5nKCk7IHVwZGF0ZUdhbWVOb3RlcygpOwogICAgICBpZiAoIWYgfHwgIXQgfHwgaXNOYU4ocykgfHwgcyA8PSAwIHx8IGlzTmFOKGRGKSB8fCBkRiA8PSAwIHx8IGlzTmFOKGRUKSB8fCBkVCA8PSAwKSB7CiAgICAgICAgcmVzdWx0VmFsdWUudGV4dENvbnRlbnQgPSAnMC4wMCc7IHJlc3VsdFBpbGwuY2xhc3NMaXN0LmFkZCgnd2FpdGluZycpOyByZXN1bHRQaWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NhbGN1bGF0aW5nJyk7CiAgICAgICAgYWR2RURQSS50ZXh0Q29udGVudCA9ICcwLjAwJzsgYWR2Q20udGV4dENvbnRlbnQgPSAnMC4wMCc7IGFkdkluY2gudGV4dENvbnRlbnQgPSAnMC4wMCc7IHJldHVybjsKICAgICAgfQogICAgICB2YXIgciA9IGNvbnZlcnQoZiwgdCwgcywgZEYsIGRUKTsgaWYgKCFyKSByZXR1cm47CiAgICAgIHJlc3VsdFBpbGwuY2xhc3NMaXN0LnJlbW92ZSgnd2FpdGluZycpOyByZXN1bHRQaWxsLmNsYXNzTGlzdC5hZGQoJ2NhbGN1bGF0aW5nJyk7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJlc3VsdFBpbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2FsY3VsYXRpbmcnKTsgfSwgMzAwKTsKICAgICAgcmVzdWx0VmFsdWUudGV4dENvbnRlbnQgPSByLm5ld1NlbnM7IGFkdkVEUEkudGV4dENvbnRlbnQgPSByLmVEUEk7IGFkdkNtLnRleHRDb250ZW50ID0gci5jbTM2MDsgYWR2SW5jaC50ZXh0Q29udGVudCA9IHIuaW5jaDM2MDsKICAgICAgYW5ub3VuY2UoJ0NvbnZlcnRlZDogJyArIHIubmV3U2VucyArICcgc2Vuc2l0aXZpdHkgaW4gJyArIChHQU1FX01BUFt0XSA\/IEdBTUVfTUFQW3RdLm5hbWUgOiB0KSk7CiAgICB9CgogICAgZnJvbVNlbnMuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBkb0NvbnZlcnRlckNhbGMpOwogICAgZnJvbURQSS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGRvQ29udmVydGVyQ2FsYyk7CiAgICB0b0RQSS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGRvQ29udmVydGVyQ2FsYyk7CgogICAgLyogU3dhcCAqLwogICAgZ2V0RWwoJ3N3YXBCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGYgPSBmcm9tR2FtZVZhbHVlLnZhbHVlLCB0biA9IGZyb21HYW1lSW5wdXQudmFsdWUsIHRkID0gZnJvbURQSS52YWx1ZTsKICAgICAgZnJvbUdhbWVWYWx1ZS52YWx1ZSA9IHRvR2FtZVZhbHVlLnZhbHVlOyBmcm9tR2FtZUlucHV0LnZhbHVlID0gdG9HYW1lSW5wdXQudmFsdWU7CiAgICAgIGZyb21HYW1lV3JhcC5jbGFzc0xpc3QudG9nZ2xlKCdoYXMtdmFsdWUnLCAhIWZyb21HYW1lVmFsdWUudmFsdWUpOwogICAgICB0b0dhbWVWYWx1ZS52YWx1ZSA9IHRmOyB0b0dhbWVJbnB1dC52YWx1ZSA9IHRuOwogICAgICB0b0dhbWVXcmFwLmNsYXNzTGlzdC50b2dnbGUoJ2hhcy12YWx1ZScsICEhdG9HYW1lVmFsdWUudmFsdWUpOwogICAgICBmcm9tRFBJLnZhbHVlID0gdG9EUEkudmFsdWU7IHRvRFBJLnZhbHVlID0gdGQ7CiAgICAgIHZhciBjdiA9IHBhcnNlRmxvYXQocmVzdWx0VmFsdWUudGV4dENvbnRlbnQpOwogICAgICBpZiAoIWlzTmFOKGN2KSAmJiBjdiA+IDApIGZyb21TZW5zLnZhbHVlID0gY3Y7CiAgICAgIGRvQ29udmVydGVyQ2FsYygpOyBhbm5vdW5jZSgnR2FtZXMgYW5kIHNldHRpbmdzIHN3YXBwZWQnKTsKICAgIH0pOwoKICAgIC8qIEFkdmFuY2VkIHRvZ2dsZSAqLwogICAgYWR2YW5jZWRUb2dnbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgdmFyIHYgPSBhZHZhbmNlZFNlY3Rpb24uY2xhc3NMaXN0LnRvZ2dsZSgndmlzaWJsZScpOwogICAgICBhZHZhbmNlZFRvZ2dsZS5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCB2KTsKICAgICAgYWR2YW5jZWRUb2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgdik7CiAgICAgIGFubm91bmNlKHYgPyAnQWR2YW5jZWQgcmVzdWx0cyBzaG93bicgOiAnQWR2YW5jZWQgcmVzdWx0cyBoaWRkZW4nKTsKICAgIH0pOwoKICAgIC8qIFJlc2V0ICovCiAgICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICBmcm9tR2FtZVZhbHVlLnZhbHVlID0gJyc7IGZyb21HYW1lSW5wdXQudmFsdWUgPSAnJzsgZnJvbUdhbWVXcmFwLmNsYXNzTGlzdC5yZW1vdmUoJ2hhcy12YWx1ZScsICdlcnJvcicpOwogICAgICB0b0dhbWVWYWx1ZS52YWx1ZSA9ICcnOyB0b0dhbWVJbnB1dC52YWx1ZSA9ICcnOyB0b0dhbWVXcmFwLmNsYXNzTGlzdC5yZW1vdmUoJ2hhcy12YWx1ZScsICdlcnJvcicpOwogICAgICBmcm9tU2Vucy52YWx1ZSA9ICcnOyBmcm9tRFBJLnZhbHVlID0gJzgwMCc7IHRvRFBJLnZhbHVlID0gJzgwMCc7CiAgICAgIHJlc3VsdFZhbHVlLnRleHRDb250ZW50ID0gJzAuMDAnOyByZXN1bHRQaWxsLmNsYXNzTGlzdC5hZGQoJ3dhaXRpbmcnKTsKICAgICAgYWR2RURQSS50ZXh0Q29udGVudCA9ICcwLjAwJzsgYWR2Q20udGV4dENvbnRlbnQgPSAnMC4wMCc7IGFkdkluY2gudGV4dENvbnRlbnQgPSAnMC4wMCc7CiAgICAgIHVwZGF0ZUhlYWRpbmcoKTsgdXBkYXRlR2FtZU5vdGVzKCk7IGFubm91bmNlKCdBbGwgZmllbGRzIHJlc2V0Jyk7CiAgICB9KTsKCiAgICAvKiBDb3B5IOKAlCB3aXRoIGZhbGxiYWNrIGZvciBIVFRQIC8gaWZyYW1lIC8gb2xkZXIgYnJvd3NlcnMgKi8KICAgIGZ1bmN0aW9uIGNvcHlUb0NsaXBib2FyZCh0ZXh0LCBidG4pIHsKICAgICAgaWYgKCF0ZXh0IHx8IHRleHQgPT09ICcwLjAwJyB8fCB0ZXh0ID09PSAnMC4wJykgeyBhbm5vdW5jZSgnTm8gdmFsdWUgdG8gY29weScpOyByZXR1cm47IH0KCiAgICAgIGZ1bmN0aW9uIG9uU3VjY2VzcygpIHsKICAgICAgICBidG4uY2xhc3NMaXN0LmFkZCgnY29waWVkJyk7CiAgICAgICAgYnRuLmlubmVySFRNTCA9ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwb2x5bGluZSBwb2ludHM9IjIwIDYgOSAxNyA0IDEyIi8+PC9zdmc+JzsKICAgICAgICBzaG93VG9hc3QoKTsgYW5ub3VuY2UoJ0NvcGllZDogJyArIHRleHQpOwogICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICBidG4uY2xhc3NMaXN0LnJlbW92ZSgnY29waWVkJyk7CiAgICAgICAgICBidG4uaW5uZXJIVE1MID0gJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjkiIHk9IjkiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyIgcng9IjIiLz48cGF0aCBkPSJNNSAxNUg0YTIgMiAwIDAxLTItMlY0YTIgMiAwIDAxMi0yaDlhMiAyIDAgMDEyIDJ2MSIvPjwvc3ZnPic7CiAgICAgICAgfSwgMjAwMCk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGZhbGxiYWNrQ29weSgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgdmFyIHRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsKICAgICAgICAgIHRhLnZhbHVlID0gdGV4dDsKICAgICAgICAgIHRhLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJzsKICAgICAgICAgIHRhLnN0eWxlLmxlZnQgPSAnLTk5OTlweCc7CiAgICAgICAgICB0YS5zdHlsZS50b3AgPSAnLTk5OTlweCc7CiAgICAgICAgICB0YS5zdHlsZS5vcGFjaXR5ID0gJzAnOwogICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YSk7CiAgICAgICAgICB0YS5mb2N1cygpOwogICAgICAgICAgdGEuc2VsZWN0KCk7CiAgICAgICAgICB2YXIgb2sgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpOwogICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0YSk7CiAgICAgICAgICBpZiAob2spIHsgb25TdWNjZXNzKCk7IH0gZWxzZSB7IGFubm91bmNlKCdDb3B5IGZhaWxlZCcpOyB9CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7IGFubm91bmNlKCdDb3B5IGZhaWxlZCcpOyB9CiAgICAgIH0KCiAgICAgIGlmIChuYXZpZ2F0b3IuY2xpcGJvYXJkICYmIHdpbmRvdy5pc1NlY3VyZUNvbnRleHQpIHsKICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KS50aGVuKG9uU3VjY2VzcykuY2F0Y2goZmFsbGJhY2tDb3B5KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmYWxsYmFja0NvcHkoKTsKICAgICAgfQogICAgfQoKICAgIGNvcHlSZXN1bHRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgY29weVRvQ2xpcGJvYXJkKHJlc3VsdFZhbHVlLnRleHRDb250ZW50LCBjb3B5UmVzdWx0QnRuKTsgfSk7CiAgICBjb3B5RWRwaUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgeyBjb3B5VG9DbGlwYm9hcmQoZWRwaVJlc3VsdC50ZXh0Q29udGVudCwgY29weUVkcGlCdG4pOyB9KTsKCiAgICBmdW5jdGlvbiBzaG93VG9hc3QoKSB7IHRvYXN0LmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsgc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG9hc3QuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOyB9LCAyNTAwKTsgfQoKICAgIC8qIGVEUEkgQ2FsY3VsYXRvciAqLwogICAgZnVuY3Rpb24gZG9FZHBpQ2FsYygpIHsKICAgICAgdmFyIHMgPSBwYXJzZUZsb2F0KGVkcGlTZW5zLnZhbHVlKSwgZCA9IHBhcnNlRmxvYXQoZWRwaURQSS52YWx1ZSk7CiAgICAgIGlmIChpc05hTihzKSB8fCBzIDw9IDAgfHwgaXNOYU4oZCkgfHwgZCA8PSAwKSB7IGVkcGlSZXN1bHQudGV4dENvbnRlbnQgPSAnMC4wJzsgZWRwaVJlc3VsdC5jbGFzc0xpc3QuYWRkKCd3YWl0aW5nJyk7IHJldHVybjsgfQogICAgICB2YXIgZSA9IHMgKiBkOwogICAgICBlZHBpUmVzdWx0LnRleHRDb250ZW50ID0gcGFyc2VGbG9hdChlLnRvRml4ZWQoMSkpOyBlZHBpUmVzdWx0LmNsYXNzTGlzdC5yZW1vdmUoJ3dhaXRpbmcnKTsKICAgICAgYW5ub3VuY2UoJ2VEUEk6ICcgKyBlLnRvRml4ZWQoMSkpOwogICAgfQogICAgZWRwaVNlbnMuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBkb0VkcGlDYWxjKTsKICAgIGVkcGlEUEkuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBkb0VkcGlDYWxjKTsKCiAgICAvKiBQcm8gcHJlc2V0cyAqLwogICAgZnVuY3Rpb24gcmVuZGVyUHJlc2V0cygpIHsKICAgICAgdmFyIGdyaWQgPSBnZXRFbCgncHJlc2V0c0dyaWQnKTsKICAgICAgaWYgKCFncmlkKSByZXR1cm47CiAgICAgIGdyaWQuaW5uZXJIVE1MID0gUFJPX1BSRVNFVFMubWFwKGZ1bmN0aW9uKHApIHsKICAgICAgICB2YXIgZ2FtZSA9IEdBTUVfTUFQW3AuZ2FtZV07CiAgICAgICAgdmFyIHNuID0gZ2FtZSA\/IGdhbWUubmFtZS5yZXBsYWNlKCdDb3VudGVyLVN0cmlrZSAyJywgJ0NTMicpLnJlcGxhY2UoJ092ZXJ3YXRjaCAyJywgJ09XMicpLnJlcGxhY2UoJ0FwZXggTGVnZW5kcycsICdBcGV4JykucmVwbGFjZSgnRXNjYXBlIGZyb20gVGFya292JywgJ0VGVCcpIDogcC5nYW1lOwogICAgICAgIHJldHVybiAnPGJ1dHRvbiBjbGFzcz0icmMtcHJlc2V0LWNoaXAiIGRhdGEtZ2FtZT0iJyArIHAuZ2FtZSArICciIGRhdGEtc2Vucz0iJyArIHAuc2VucyArICciIGRhdGEtZHBpPSInICsgcC5kcGkgKyAnIj4nICsgZXNjKHAubGFiZWwpICsgJyA8c3BhbiBjbGFzcz0icHJlc2V0LWdhbWUiPicgKyBzbiArICcgJyArIHAuc2VucyArICdAJyArIHAuZHBpICsgJzwvc3Bhbj48L2J1dHRvbj4nOwogICAgICB9KS5qb2luKCcnKTsKICAgICAgdmFyIGNoaXBzID0gZ3JpZC5xdWVyeVNlbGVjdG9yQWxsKCcucmMtcHJlc2V0LWNoaXAnKTsKICAgICAgZm9yICh2YXIgY2kgPSAwOyBjaSA8IGNoaXBzLmxlbmd0aDsgY2krKykgewogICAgICAgIChmdW5jdGlvbihjaGlwKSB7CiAgICAgICAgICBjaGlwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGZyb21HYW1lREQuc2VsZWN0R2FtZShjaGlwLmdldEF0dHJpYnV0ZSgnZGF0YS1nYW1lJykpOwogICAgICAgICAgICBmcm9tU2Vucy52YWx1ZSA9IGNoaXAuZ2V0QXR0cmlidXRlKCdkYXRhLXNlbnMnKTsKICAgICAgICAgICAgZnJvbURQSS52YWx1ZSA9IGNoaXAuZ2V0QXR0cmlidXRlKCdkYXRhLWRwaScpOwogICAgICAgICAgICBkb0NvbnZlcnRlckNhbGMoKTsgYW5ub3VuY2UoJ0FwcGxpZWQgJyArIGNoaXAudGV4dENvbnRlbnQudHJpbSgpICsgJyBzZXR0aW5ncycpOwogICAgICAgICAgfSk7CiAgICAgICAgfSkoY2hpcHNbY2ldKTsKICAgICAgfQogICAgfQoKICAgIC8qIENsb3NlIGRyb3Bkb3ducyBvbiBvdXRzaWRlIGNsaWNrIOKAlCB1c2UgdGltZW91dCB0byBhdm9pZCByYWNlIHdpdGggb3BlbiAqLwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZSkgewogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIGlmICghZnJvbUdhbWVXcmFwLmNvbnRhaW5zKGUudGFyZ2V0KSkgZnJvbUdhbWVERC5jbG9zZSgpOwogICAgICAgIGlmICghdG9HYW1lV3JhcC5jb250YWlucyhlLnRhcmdldCkpIHRvR2FtZURELmNsb3NlKCk7CiAgICAgIH0sIDEwKTsKICAgIH0pOwoKICAgIC8qIEluaXQgKi8KICAgIHJlbmRlclByZXNldHMoKTsKICB9CgogIC8qIFV0aWxpdGllcyAob3V0c2lkZSBpbml0V2lkZ2V0IHNvIHRoZXkgYXJlIGF2YWlsYWJsZSkgKi8KICBmdW5jdGlvbiBlc2MocykgeyB2YXIgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBkLnRleHRDb250ZW50ID0gU3RyaW5nKHMpOyByZXR1cm4gZC5pbm5lckhUTUw7IH0KICBmdW5jdGlvbiBhbm5vdW5jZShtc2cpIHsKICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzckFubm91bmNlJyk7CiAgICBpZiAoZWwpIHsgZWwudGV4dENvbnRlbnQgPSBtc2c7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGVsLnRleHRDb250ZW50ID0gJyc7IH0sIDE1MDApOyB9CiAgfQoKICAvKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKICAgICBTQUZFIElOSVQg4oCUIHdvcmtzIGV2ZW4gaWYgc2NyaXB0IGlzIG1vdmVkL2RlZmVycmVkCiAgICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQICovCiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRXaWRnZXQpOwogIH0gZWxzZSB7CiAgICBpbml0V2lkZ2V0KCk7CiAgfQoK\");var s=document.createElement(\"script\");s.textContent=c;document.currentScript.parentNode.insertBefore(s,document.currentScript);})()\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-mouse-sensitivity-converter-convert-your-sens-between-23-fps-games-instantly\">Konwerter Czu\u0142o\u015bci Myszy \u2014 Natychmiast Przekszta\u0142\u0107 Swoj\u0105 Czu\u0142o\u015b\u0107 Mi\u0119dzy 23 Grami FPS<\/h2>\n\n\n\n<p>Konwerter czu\u0142o\u015bci myszy to darmowy, przegl\u0105darkowy kalkulator, kt\u00f3ry t\u0142umaczy ustawienia myszy z jednej gry na drug\u0105, wykorzystuj\u0105c zweryfikowane warto\u015bci yaw. Pami\u0119\u0107 mi\u0119\u015bniowa jest kluczowa dla sp\u00f3jnego celowania. Je\u015bli sp\u0119dzi\u0142e\u015b setki godzin na doskonaleniu swoich strza\u0142\u00f3w flick w <em>Counter-Strike 2<\/em>, nie powiniene\u015b musie\u0107 uczy\u0107 si\u0119 celowania od nowa, gdy prze\u0142\u0105czasz si\u0119 na <em>Valorant<\/em> lub <em>Deadlock<\/em>.<\/p>\n\n\n\n<p>To narz\u0119dzie zapewnia, \u017ce obr\u00f3t o 360 stopni w grze \u017ar\u00f3d\u0142owej wymaga dok\u0142adnie tego samego fizycznego ruchu myszy w grze docelowej. Wykorzystuje uniwersaln\u0105 formu\u0142\u0119 <code>inches_per_360<\/code>, aby zagwarantowa\u0107 matematyczn\u0105 dok\u0142adno\u015b\u0107 w 23 g\u0142\u00f3wnych tytu\u0142ach PC.<\/p>\n\n\n\n<div style=\"background-color: #f9f9f9; padding: 20px; border-radius: 8px; margin-bottom: 20px;\">\n<h3 style=\"margin-top: 0;\">Podsumowanie<\/h3>\n<p>Polegasz na pami\u0119ci mi\u0119\u015bniowej, aby trafia\u0107 strza\u0142y. Kiedy prze\u0142\u0105czasz si\u0119 mi\u0119dzy grami FPS, r\u00f3\u017cne silniki gier interpretuj\u0105 ruchy myszy inaczej. Ten artyku\u0142 wyja\u015bnia, jak mo\u017cesz natychmiast przekonwertowa\u0107 swoje ustawienia czu\u0142o\u015bci, aby zachowa\u0107 sta\u0142\u0105 odleg\u0142o\u015b\u0107 obrotu o 360 stopni we wszystkich ulubionych strzelankach. Znajdziesz zweryfikowane obliczenia konwersji dla najlepszych tytu\u0142\u00f3w 2026 roku, ustawienia profesjonalnych graczy oraz jasne wyja\u015bnienie termin\u00f3w technicznych, takich jak eDPI i cm\/360.<\/p>\n<\/div>\n\n\n\n<div style=\"background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 20px; margin-bottom: 20px;\">\n<h3 style=\"margin-top: 0;\">TL;DR<\/h3>\n<ul style=\"margin-bottom: 0;\">\n<li><strong>Kluczem jest sp\u00f3jno\u015b\u0107:<\/strong> Powiniene\u015b zachowa\u0107 t\u0119 sam\u0105 fizyczn\u0105 odleg\u0142o\u015b\u0107 myszy (cm\/360) we wszystkich grach, aby zachowa\u0107 pami\u0119\u0107 mi\u0119\u015bniow\u0105.<\/li>\n<li><strong>Silniki gier r\u00f3\u017cni\u0105 si\u0119:<\/strong> Czu\u0142o\u015b\u0107 \u201e2.0\u201d w CS2 nie jest taka sama jak \u201e2.0\u201d w Apex Legends lub Overwatch ze wzgl\u0119du na r\u00f3\u017cne warto\u015bci \u201eyaw\u201d.<\/li>\n<li><strong>DPI ma znaczenie:<\/strong> Mo\u017cesz u\u017cy\u0107 tego narz\u0119dzia do dostosowania czu\u0142o\u015bci, nawet je\u015bli zmienisz DPI myszy (np. z 400 na 1600).<\/li>\n<li><strong>Poznaj swoje eDPI:<\/strong> Twoja prawdziwa czu\u0142o\u015b\u0107 to po\u0142\u0105czenie DPI sprz\u0119tu i ustawie\u0144 w grze.<\/li>\n<li><strong>U\u017cyj narz\u0119dzia:<\/strong> Wprowad\u017a swoj\u0105 obecn\u0105 gr\u0119 i ustawienia powy\u017cej, aby natychmiast uzyska\u0107 dok\u0142adne liczby dla nowej gry.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div style=\"background: linear-gradient(135deg, #07F288 0%, #7BF8BE 100%); color: #0a3d2e; padding: 25px; border-radius: 12px; margin-bottom: 30px;\">\n<h3 style=\"margin-top: 0; color: #0a3d2e;\">\ud83d\udccd Spis Tre\u015bci<\/h3>\n<ul style=\"list-style-type: none; padding-left: 0;\">\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#how-to-convert\">Jak Przekonwertowa\u0107 Czu\u0142o\u015b\u0107 Myszy w 4 Krokach<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#cs2-converter\">Konwerter Czu\u0142o\u015bci Counter-Strike 2 (CS2)<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#valorant-converter\">Konwerter Czu\u0142o\u015bci Valorant<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#overwatch2-converter\">Konwerter Czu\u0142o\u015bci Overwatch 2<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#apex-converter\">Konwerter Czu\u0142o\u015bci Apex Legends<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#fortnite-converter\">Konwerter Czu\u0142o\u015bci Fortnite<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#cod-converter\">Konwerter Czu\u0142o\u015bci Call of Duty<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#other-games\">Inne Popularne Strzelanki (R6, BF2042, Deadlock, itp.)<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#technical-guide\">Przewodnik Techniczny: cm\/360 i eDPI<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#pro-settings\">Ustawienia Czu\u0142o\u015bci Profesjonalnych Graczy (2025)<\/a><\/li>\n<li style=\"margin-bottom: 8px;\"><a style=\"text-decoration: none; color: #0a3d2e; font-weight: 600;\" href=\"#faq\">Cz\u0119sto Zadawane Pytania<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-convert\">Jak Przekonwertowa\u0107 Czu\u0142o\u015b\u0107 Myszy w 4 Krokach<\/h2>\n\n\n\n<p>Mo\u017cesz zsynchronizowa\u0107 swoje celowanie we wszystkich grach w swojej bibliotece w kilka sekund. Wykonaj te cztery proste kroki, korzystaj\u0105c z powy\u017cszego kalkulatora:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Wybierz Gr\u0119 \u0179r\u00f3d\u0142ow\u0105:<\/strong> Wybierz gr\u0119, w kt\u00f3r\u0105 obecnie grasz i z kt\u00f3r\u0105 czujesz si\u0119 komfortowo, z menu rozwijanego.<\/li>\n\n\n\n<li><strong>Wprowad\u017a Ustawienia:<\/strong> Wprowad\u017a swoj\u0105 obecn\u0105 czu\u0142o\u015b\u0107 w grze i DPI myszy (np. 800 lub 1600).<\/li>\n\n\n\n<li><strong>Wybierz Gr\u0119 Docelow\u0105:<\/strong> Wybierz now\u0105 gr\u0119, w kt\u00f3r\u0105 chcesz zagra\u0107.<\/li>\n\n\n\n<li><strong>Wy\u015bwietl Wynik:<\/strong> Narz\u0119dzie natychmiast wy\u015bwietla now\u0105 przekonwertowan\u0105 czu\u0142o\u015b\u0107, eDPI i statystyki cm\/360.<\/li>\n<\/ol>\n\n\n\n<p><strong>Wskaz\u00f3wka:<\/strong> U\u017cyj funkcji \u201eZamie\u0144\u201d, je\u015bli chcesz szybko odwr\u00f3ci\u0107 obliczenia, aby zobaczy\u0107, jak wygl\u0105da\u0142yby Twoje nowe ustawienia w oryginalnej grze.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cs2-converter\">Konwerter Czu\u0142o\u015bci Counter-Strike 2 (CS2)<\/h2>\n\n\n\n<p>CS2 pozostaje z\u0142otym standardem w dostosowywaniu czu\u0142o\u015bci ze wzgl\u0119du na mechanik\u0119 silnika Source. Wi\u0119kszo\u015b\u0107 konwerter\u00f3w u\u017cywa CS2 jako bazowego \u201e1.0\u201d do oblicze\u0144. Gra u\u017cywa domy\u015blnej warto\u015bci <code>m_yaw<\/code> wynosz\u0105cej <strong>0.022<\/strong>.<\/p>\n\n\n\n<div style=\"background-color: #e3f2fd; border-left: 5px solid #2196f3; padding: 15px; margin: 20px 0;\"><strong>Kontekst Pro (2026):<\/strong> Podczas gdy 400 DPI by\u0142o historycznym standardem dla Counter-Strike, wielu czo\u0142owych profesjonalist\u00f3w, takich jak m0NESY i NiKo, przesz\u0142o na wy\u017csze DPI (800 lub 1600), aby zmniejszy\u0107 op\u00f3\u017anienie wej\u015bcia. Dostosowuj\u0105 oni swoj\u0105 czu\u0142o\u015b\u0107 w grze na ni\u017cszy poziom, aby to zrekompensowa\u0107, zachowuj\u0105c t\u0119 sam\u0105 efektywn\u0105 pr\u0119dko\u015b\u0107.<\/div>\n\n\n\n<p>Typowy zakres eDPI dla graczy CS2 w trybie rywalizacji mie\u015bci si\u0119 w przedziale od 560 do 1236. Je\u015bli wykraczasz poza ten zakres, mo\u017cesz zauwa\u017cy\u0107, \u017ce Twoje celowanie jest niesp\u00f3jne w por\u00f3wnaniu do przeci\u0119tnej bazy graczy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"valorant-converter\">Konwerter Czu\u0142o\u015bci Valorant<\/h2>\n\n\n\n<p>Przy konwersji z CS2 na Valorant, matematyka jest prosta. Valorant u\u017cywa warto\u015bci yaw wynosz\u0105cej <strong>0.07<\/strong>. Poniewa\u017c 0.07 jest w przybli\u017ceniu 3.18 razy wi\u0119ksze ni\u017c 0.022, wystarczy podzieli\u0107 swoj\u0105 czu\u0142o\u015b\u0107 z CS2 przez 3.18, aby uzyska\u0107 czu\u0142o\u015b\u0107 w Valorant.<\/p>\n\n\n\n<p><strong>Kluczowe Kwestie:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Sprz\u0119t:<\/strong> Lekkie myszy bezprzewodowe, takie jak Razer Viper V3 Pro, dominuj\u0105 na scenie. Profesjonali\u015bci tacy jak TenZ i aspas preferuj\u0105 je do mikro-regulacji.<\/li>\n\n\n\n<li><strong>Pole Widzenia (FOV):<\/strong> Valorant ma sta\u0142e FOV 103\u00b0.<\/li>\n\n\n\n<li><strong>Lunety:<\/strong> Mno\u017cniki czu\u0142o\u015bci lunet s\u0105 tutaj specyficzne. Wi\u0119kszo\u015b\u0107 graczy pozostawia je na 1.0, ale niekt\u00f3rzy dostosowuj\u0105 je, aby uzyska\u0107 wra\u017cenie \u201e1:1\u201d w stosunku do celowania z biodra.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"overwatch2-converter\">Konwerter Czu\u0142o\u015bci Overwatch 2<\/h2>\n\n\n\n<p>Overwatch 2 jest szybszy i bardziej wertykalny ni\u017c taktyczne strzelanki. Gra u\u017cywa warto\u015bci yaw wynosz\u0105cej <strong>0.0066<\/strong>. Poniewa\u017c \u015bledzenie szybko poruszaj\u0105cych si\u0119 cel\u00f3w (takich jak Tracer czy Genji) jest kluczowe, \u015brednie eDPI jest tu zazwyczaj wy\u017csze (3000\u20136600) ni\u017c w CS2 czy Valorant.<\/p>\n\n\n\n<p>Nale\u017cy r\u00f3wnie\u017c zauwa\u017cy\u0107, \u017ce Overwatch pozwala na specyficzne ustawienia dla ka\u017cdego bohatera. Na przyk\u0142ad, gracze Widowmaker i Ana cz\u0119sto ustawiaj\u0105 swoj\u0105 \u201eWzgl\u0119dn\u0105 Czu\u0142o\u015b\u0107 Celowania Podczas Przybli\u017cenia\u201d na <strong>37.89%<\/strong>. Ta konkretna liczba sprawia, \u017ce ma\u0142e ruchy flick podczas przybli\u017cenia s\u0105 identyczne w odczuciu jak celowanie z biodra.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"apex-converter\">Konwerter Czu\u0142o\u015bci Apex Legends<\/h2>\n\n\n\n<p>Apex Legends jest zbudowany na mocno zmodyfikowanej wersji silnika Source. To dobra wiadomo\u015b\u0107 dla konwersji: dzieli dok\u0142adnie t\u0119 sam\u0105 warto\u015b\u0107 yaw <strong>0.022<\/strong> co CS2. Je\u015bli grasz w CS2 z czu\u0142o\u015bci\u0105 1.5, Twoja czu\u0142o\u015b\u0107 celowania z biodra w Apex Legends r\u00f3wnie\u017c wynosi 1.5.<\/p>\n\n\n\n<p>Chocia\u017c konwersja celowania z biodra jest 1:1, musisz wzi\u0105\u0107 pod uwag\u0119 mno\u017cniki ADS (Aim Down Sights). Wi\u0119kszo\u015b\u0107 graczy utrzymuje mno\u017cnik ADS na poziomie 1.0 dla sp\u00f3jno\u015bci. Dodatkowo, standardowe konkurencyjne FOV w Apex jest zazwyczaj maksymalnie ustawione na 110, co mo\u017ce sprawi\u0107, \u017ce czu\u0142o\u015b\u0107 b\u0119dzie \u201eodczuwalna\u201d wizualnie inaczej, nawet je\u015bli odleg\u0142o\u015b\u0107 fizycznie jest taka sama.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"fortnite-converter\">Konwerter Czu\u0142o\u015bci Fortnite<\/h2>\n\n\n\n<p>Konwersja czu\u0142o\u015bci w Fortnite wymaga szczeg\u00f3lnej uwagi, poniewa\u017c gra u\u017cywa suwaka opartego na procentach. Je\u015bli wprowadzisz \u201e7\u201d w ustawieniach, silnik gry odczyta to jako 7.0% (lub wewn\u0119trzny mno\u017cnik 0.07). Techniczna warto\u015b\u0107 yaw wynosi <strong>0.005555<\/strong>.<\/p>\n\n\n\n<p><strong>Ustawienia do obserwacji:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>O\u015b X i Y:<\/strong> Mo\u017cesz ustawi\u0107 czu\u0142o\u015b\u0107 poziom\u0105 (X) i pionow\u0105 (Y) oddzielnie. Wi\u0119kszo\u015b\u0107 graczy rywalizacyjnych utrzymuje je na tej samej warto\u015bci dla sp\u00f3jno\u015bci pami\u0119ci mi\u0119\u015bniowej.<\/li>\n\n\n\n<li><strong>Mno\u017cnik Celowania:<\/strong> Wp\u0142ywa to na pr\u0119dko\u015b\u0107 celowania podczas trzymania prawego przycisku myszy.<\/li>\n<\/ul>\n\n\n\n<p>Czo\u0142owi profesjonali\u015bci, tacy jak Peterbot czy Bugha, cz\u0119sto preferuj\u0105 surowe klastry eDPI mi\u0119dzy 40 a 56, stawiaj\u0105c na szybko\u015b\u0107 mechaniki budowania ponad czyste precyzyjne celowanie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cod-converter\">Konwerter Czu\u0142o\u015bci Call of Duty \u2014 Modern Warfare III, Warzone i Black Ops 6<\/h2>\n\n\n\n<p>Ostatnie tytu\u0142y Call of Duty, w tym <em>Modern Warfare III<\/em>, <em>Warzone<\/em> i <em>Black Ops 6<\/em>, upraszczaj\u0105 sprawy, dziel\u0105c ujednolicony standard silnika. Wszystkie wykorzystuj\u0105 warto\u015b\u0107 yaw <strong>0.0066<\/strong>, kt\u00f3ra jest identyczna jak w Overwatch 2.<\/p>\n\n<p>Podczas konfiguracji myszy zwr\u00f3\u0107 uwag\u0119 na &#8222;ADS Sensitivity Transition Timing&#8221;. Masz r\u00f3wnie\u017c wyb\u00f3r mi\u0119dzy trybami czu\u0142o\u015bci myszy ADS &#8222;Legacy&#8221; i &#8222;Relative&#8221;. &#8222;Monitor Distance Coefficient&#8221; (domy\u015blnie 1.33) ma na celu standaryzacj\u0119 celowania na r\u00f3\u017cnych poziomach powi\u0119kszenia, pomagaj\u0105c konsekwentnie namierza\u0107 cele niezale\u017cnie od u\u017cywanej optyki.<\/p>\n<!-- \/wp:post-content -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"other-games\">Inne popularne strzelanki<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:html -->\n<div style=\"grid-template-columns: 1fr 1fr; gap: 20px;\">\n<div>\n<h3 style=\"margin-top: 0;\">Rainbow Six Siege<\/h3>\n<p>Siege u\u017cywa modelu &#8222;visuomotor gain&#8221; firmy Ubisoft z domy\u015blnym odchyleniem (yaw) wynosz\u0105cym <strong>0.00573<\/strong>. Z\u0142o\u017cono\u015b\u0107 polega tu na lunetach; masz suwaki dla 1.0x, 2.5x i wi\u0119cej, w zakresie od 1 do 200. To narz\u0119dzie oblicza twoje standardowe celowanie z biodra (hipfire), kt\u00f3re stanowi podstaw\u0119 dla wszystkich lunet.<\/p>\n<\/div>\n<div>\n<h3 style=\"margin-top: 0;\">Battlefield 2042<\/h3>\n<p>Dzia\u0142aj\u0105c na silniku Frostbite, Battlefield 2042 u\u017cywa odchylenia (yaw) wynosz\u0105cego <strong>0.0066<\/strong>. Odpowiada to standardowi CoD. Sp\u00f3jne celowanie jest tutaj kluczowe, aby p\u0142ynnie przechodzi\u0107 mi\u0119dzy wielkoskalow\u0105 wojn\u0105 pojazd\u00f3w a ciasn\u0105 walk\u0105 piechoty.<\/p>\n<\/div>\n<\/div>\n<!-- \/wp:html -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-team-fortress-2-quake-champions-sensitivity-converter\">Konwerter czu\u0142o\u015bci Team Fortress 2 &amp; Quake Champions<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>To s\u0105 dziadkowie nowoczesnego celowania. Obie gry dzia\u0142aj\u0105 na klasycznych silnikach (Source i id Tech) i u\u017cywaj\u0105 standardowego odchylenia (yaw) wynosz\u0105cego <strong>0.022<\/strong>. Oznacza to, \u017ce masz bezpo\u015bredni\u0105 konwersj\u0119 1:1 z CS2 i Apex Legends. Je\u015bli szukasz innych <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/steam-games-to-try\">popularnych gier Steam<\/a>, aby przetestowa\u0107 swoje surowe celowanie, te tytu\u0142y pozostaj\u0105 najlepszymi poligonami treningowymi.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-deadlock-sensitivity-converter\">Konwerter czu\u0142o\u015bci Deadlock<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Jako nowa hybryda MOBA-strzelanka od Valve, Deadlock dzia\u0142a na Source 2. Jednak matematyka jest nieco inna. U\u017cywa odchylenia (yaw) wynosz\u0105cego <strong>0.044<\/strong>. Jest to dok\u0142adnie <strong>2x<\/strong> odchylenie CS2. Je\u015bli twoja czu\u0142o\u015b\u0107 w CS2 wynosi 2.0, twoja czu\u0142o\u015b\u0107 w Deadlock powinna by\u0107 ustawiona na 1.0.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-marvel-rivals-sensitivity-converter\">Konwerter czu\u0142o\u015bci Marvel Rivals<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Zbudowany na Unreal Engine 5, Marvel Rivals wykorzystuje odchylenie (yaw) wynosz\u0105ce <strong>0.0066<\/strong>. Gracze przechodz\u0105cy z Overwatch 2 znajd\u0105 identyczn\u0105 skal\u0119 czu\u0142o\u015bci (konwersja 1:1), co sprawia, \u017ce przej\u015bcie do tej strzelanki bohater\u00f3w jest p\u0142ynne.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-the-finals-sensitivity-converter\">Konwerter czu\u0142o\u015bci The Finals<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>The Finals, strzelanka na Unreal Engine 5 od Embark, u\u017cywa skorygowanego odchylenia (yaw) wynosz\u0105cego <strong>0.0066<\/strong>. Konkurencyjna czu\u0142o\u015b\u0107 waha si\u0119 tu zazwyczaj od 14 do 57 przy 800 DPI, w zale\u017cno\u015bci od tego, czy grasz szybk\u0105 klas\u0105 &#8222;Light&#8221;, czy wolniejsz\u0105 klas\u0105 &#8222;Heavy&#8221;.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-destiny-2-sensitivity-converter\">Konwerter czu\u0142o\u015bci Destiny 2<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Destiny 2 dzieli wsp\u00f3ln\u0105 warto\u015b\u0107 odchylenia (yaw) <strong>0.0066<\/strong> znalezion\u0105 w CoD i Overwatch. Pami\u0119taj, \u017ce Destiny 2 ma twardy limit pr\u0119dko\u015bci obrotu podczas sprintu. \u017badne zwi\u0119kszenie czu\u0142o\u015bci nie mo\u017ce omin\u0105\u0107 tego ograniczenia silnika.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-halo-infinite-sensitivity-converter\">Konwerter czu\u0142o\u015bci Halo Infinite<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Halo Infinite u\u017cywa odchylenia (yaw) wynosz\u0105cego <strong>0.022<\/strong>, pasuj\u0105cego do CS2 i Apex. Chocia\u017c Halo jest tradycyjnie zdominowane przez kontrolery, gracze korzystaj\u0105cy z myszy i klawiatury (MnK) polegaj\u0105 na tej konwersji 1:1, aby utrzyma\u0107 swoje umiej\u0119tno\u015bci \u015bledzenia z taktycznych strzelanek.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-pubg-sensitivity-converter\">Konwerter czu\u0142o\u015bci PUBG<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>PUBG ma odchylenie (yaw) celowania z biodra (hipfire) wynosz\u0105ce <strong>0.002222<\/strong>. Gra posiada bardzo z\u0142o\u017cony system dla ka\u017cdej lunety (General, Vehicle, 2x, 3x, itd.). To narz\u0119dzie konwertuje czu\u0142o\u015b\u0107 &#8222;General\/Hipfire&#8221;, kt\u00f3ra stanowi podstaw\u0119 dla wszystkich innych lunet.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-escape-from-tarkov-sensitivity-converter\">Konwerter czu\u0142o\u015bci Escape from Tarkov<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Tarkov jest wyj\u0105tkowy. Odchylenie (yaw) wynosi oko\u0142o <strong>0.125<\/strong>, ale twoja rzeczywista pr\u0119dko\u015b\u0107 obrotu jest zale\u017cna od pancerza w grze, kar za he\u0142m i ergonomii broni. Konwerter zapewnia twoj\u0105 <em>podstawow\u0105<\/em> czu\u0142o\u015b\u0107, ale tw\u00f3j ekwipunek zmieni odczucia myszy w ka\u017cdym rajdzie.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-rust-sensitivity-converter\">Konwerter czu\u0142o\u015bci Rust<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Rust u\u017cywa odchylenia (yaw) wynosz\u0105cego oko\u0142o <strong>0.00222<\/strong>. Ze wzgl\u0119du na cz\u0119ste aktualizacje Unity, powiniene\u015b traktowa\u0107 te wyniki jako punkt wyj\u015bcia do precyzyjnego dostrajania, a nie jako absolutn\u0105 zasad\u0119.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-fragpunk-sensitivity-converter\">Konwerter czu\u0142o\u015bci FragPunk<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>FragPunk, jedna z <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/new-games-2025\">nowych gier wydanych w 2025 roku<\/a>, ma potwierdzone odchylenie (yaw) wynosz\u0105ce <strong>0.0556<\/strong>. Ta odr\u0119bna warto\u015b\u0107 wymaga precyzyjnej konwersji, je\u015bli przechodzisz z tradycyjnych strzelanek taktycznych.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-splitgate-2-sensitivity-converter\">Konwerter czu\u0142o\u015bci Splitgate 2<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Dla kontynuacji strzelanki opartej na portalach, potwierdzone odchylenie (yaw) wynosi <strong>0.01116<\/strong>. Zapewnia to, \u017ce twoje szybkie ruchy portalowe pozostan\u0105 dok\u0142adne.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"technical-guide\">Co to jest cm\/360 i dlaczego ma znaczenie dla celowania<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>cm\/360 (centymetry na obr\u00f3t o 360 stopni) to jedyny &#8222;prawdziwy&#8221; uniwersalny j\u0119zyk czu\u0142o\u015bci. Ustawienie czu\u0142o\u015bci &#8222;2.0&#8221; oznacza co\u015b innego w ka\u017cdym silniku gry, ale &#8222;34cm\/360&#8221; to ta sama fizyczna odleg\u0142o\u015b\u0107 na podk\u0142adce pod mysz wsz\u0119dzie.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Mierz\u0105c czu\u0142o\u015b\u0107 w centymetrach, eliminujesz zamieszanie zwi\u0105zane z silnikami gier. Na przyk\u0142ad, gracz o niskiej czu\u0142o\u015bci mo\u017ce u\u017cywa\u0107 50cm\/360 (przesuwaj\u0105c mysz o 50cm, aby wykona\u0107 pe\u0142ny obr\u00f3t), podczas gdy gracz o wysokiej czu\u0142o\u015bci mo\u017ce u\u017cywa\u0107 20cm\/360.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"h-understanding-edpi-your-real-sensitivity-number\">Zrozumienie eDPI \u2014 Twoja rzeczywista liczba czu\u0142o\u015bci<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>eDPI oznacza &#8222;effective Dots Per Inch&#8221;. Wz\u00f3r jest prosty: <code>eDPI = Czu\u0142o\u015b\u0107 \u00d7 DPI<\/code>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Ta liczba pozwala graczom z r\u00f3\u017cnymi myszami por\u00f3wna\u0107 ich &#8222;prawdziw\u0105&#8221; pr\u0119dko\u015b\u0107 w grze. Na przyk\u0142ad, Gracz A u\u017cywaj\u0105cy 400 DPI i czu\u0142o\u015bci 2.0 ma eDPI r\u00f3wne 800. Gracz B u\u017cywaj\u0105cy 800 DPI i czu\u0142o\u015bci 1.0 <em>r\u00f3wnie\u017c<\/em> ma eDPI r\u00f3wne 800. Ich pr\u0119dko\u015b\u0107 celowania jest identyczna.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Jednak eDPI nie jest przenoszalne mi\u0119dzy r\u00f3\u017cnymi grami. eDPI r\u00f3wne 800 w CS2 jest znacznie inne ni\u017c eDPI r\u00f3wne 800 w Valorant. Je\u015bli <a href=\"https:\/\/www.recharge.com\/blog\/en-gb\/ie\/build-a-cheap-gaming-pc\">optymalizujesz swoj\u0105 konfiguracj\u0119 komputera do gier<\/a>, decyzja o standardowym DPI (takim jak 800 lub 1600) jest pierwszym krokiem do sp\u00f3jnego celowania.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"pro-settings\">Ustawienia czu\u0142o\u015bci graczy Pro (2025)<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Sprawdzenie, czego u\u017cywaj\u0105 profesjonali\u015bci, mo\u017ce da\u0107 ci dobr\u0105 podstaw\u0119. Zauwa\u017c trend w kierunku 1600 DPI i l\u017cejszych myszy (poni\u017cej 60g) w ostatnich latach.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:html -->\n<div>\n<table style=\"width: 100%; border-collapse: collapse; margin-bottom: 20px;\">\n<thead>\n<tr style=\"background-color: #000; color: #fff; text-align: left;\">\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Nazwa Gracza<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Gra<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">DPI<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Czu\u0142o\u015b\u0107<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">eDPI<\/th>\n<th style=\"padding: 12px; border: 1px solid #ddd;\">Mysz<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">donk<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">CS2<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1.25<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1000<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL 2<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"padding: 10px; border: 1px solid #ddd;\">m0NESY<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">CS2<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">400<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">2.30<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">920<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL 2<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">TenZ<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Valorant<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1600<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">0.175<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">280<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Razer Viper V3 Pro<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"padding: 10px; border: 1px solid #ddd;\">aspas<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Valorant<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">0.40<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">320<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Razer DeathAdder V3<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">ImperialHal<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Apex Legends<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1.3<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">1040<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Bugha<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Fortnite<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">6.0%<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">48<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Stalk3r<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Overwatch 2<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">800<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">7.00<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">5600<\/td>\n<td style=\"padding: 10px; border: 1px solid #ddd;\">Logitech G Pro X SL 2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<!-- \/wp:html -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"h-how-the-conversion-formula-works\">Jak dzia\u0142a wz\u00f3r konwersji<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Wierzymy w przejrzysto\u015b\u0107. Narz\u0119dzie oblicza Twoje ustawienia, wykorzystuj\u0105c standardow\u0105 fizyk\u0119 ruchu myszy. Podstawowy wz\u00f3r do znalezienia fizycznej odleg\u0142o\u015bci obrotu o 360 stopni to:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"center\"} -->\n<p class=\"has-text-align-center\">inches_per_360 = 360 \/ (sensitivity \u00d7 DPI \u00d7 yaw)<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Konwerter odwraca ten wz\u00f3r dla Twojej docelowej gry. Na przyk\u0142ad, je\u015bli konwertujesz czu\u0142o\u015b\u0107 CS2 wynosz\u0105c\u0105 2.0 przy 400 DPI na Valorant, obliczenia wygl\u0105daj\u0105 tak: <code>2.0 \/ 3.1818 = 0.628<\/code>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<!-- \/wp:separator -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"faq\">Cz\u0119sto Zadawane Pytania<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-how-do-i-convert-cs2-sensitivity-to-valorant\">Jak przekonwertowa\u0107 czu\u0142o\u015b\u0107 CS2 na Valorant?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Podziel swoj\u0105 czu\u0142o\u015b\u0107 CS2 przez **3.1818**. Alternatywnie, mo\u017cesz po prostu u\u017cy\u0107 powy\u017cszego narz\u0119dzia do natychmiastowego, precyzyjnego obliczenia.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-is-cm-360-the-same-as-edpi\">Czy cm\/360 to to samo co eDPI?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Nie. eDPI to cyfrowa warto\u015b\u0107 specyficzna dla jednego silnika gry. cm\/360 to fizyczny pomiar odleg\u0142o\u015bci myszy na biurku, kt\u00f3ry odnosi si\u0119 do \u015bwiata rzeczywistego.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-does-sensitivity-conversion-work-for-scoped-ads\">Czy konwersja czu\u0142o\u015bci dzia\u0142a dla celowania z lunety\/ADS?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ten konwerter oblicza Twoj\u0105 czu\u0142o\u015b\u0107 podstawow\u0105 (og\u00f3ln\u0105). Wi\u0119kszo\u015b\u0107 gier ma oddzielne mno\u017cniki dla ADS (celowanie przez przyrz\u0105dy), kt\u00f3re skaluj\u0105 si\u0119 z tej warto\u015bci podstawowej, wi\u0119c prawid\u0142owe ustawienie czu\u0142o\u015bci podstawowej jest pierwszym krokiem.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"h-can-i-convert-between-different-dpis\">Czy mog\u0119 konwertowa\u0107 mi\u0119dzy r\u00f3\u017cnymi DPI?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Tak. Nasze narz\u0119dzie pozwala wprowadzi\u0107 inne DPI dla Twojej docelowej gry. Matematycznie dostosuje wymagan\u0105 czu\u0142o\u015b\u0107, aby zachowa\u0107 Twoje cm<\/p>\n<!-- \/wp:paragraph -->","protected":false},"excerpt":{"rendered":"<p>Convert mouse sensitivity instantly between CS2, Valorant, Overwatch 2, and 20+ FPS games. Maintain muscle memory with accurate eDPI and cm\/360 calculations.<\/p>\n","protected":false},"author":46,"featured_media":38381,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"cos_headline_score":0,"cos_seo_score":0,"cos_headline_text":"","cos_headline_has_been_analyzed":false,"cos_last_analyzed_headline":[],"_hreflang_tags":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[106],"tags":[],"class_list":["post-38960","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cyfrowe-zycie"],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.4 (Yoast SEO v21.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Konwerter Czu\u0142o\u015bci Myszy: Kalkulator dla 23 Gier FPS<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Konwerter Czu\u0142o\u015bci Myszy: Kalkulator dla 23 Gier FPS\" \/>\n<meta property=\"og:description\" content=\"Convert mouse sensitivity instantly between CS2, Valorant, Overwatch 2, and 20+ FPS games. Maintain muscle memory with accurate eDPI and cm\/360 calculations.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps\" \/>\n<meta property=\"og:site_name\" content=\"Recharge Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-20T13:23:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-21T08:23:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/02\/27164737\/hero-image-en-110.png\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"491\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mustafa Aybek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps\",\"url\":\"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps\",\"name\":\"Konwerter Czu\u0142o\u015bci Myszy: Kalkulator dla 23 Gier FPS\",\"isPartOf\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/pl\/#website\"},\"datePublished\":\"2026-04-20T13:23:26+00:00\",\"dateModified\":\"2026-04-21T08:23:49+00:00\",\"author\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/pl\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.recharge.com\/blog\/pl\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Konwerter Czu\u0142o\u015bci Myszy: Kalkulator dla 23 Gier FPS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.recharge.com\/blog\/pl\/#website\",\"url\":\"https:\/\/www.recharge.com\/blog\/pl\/\",\"name\":\"Recharge Blog\",\"description\":\"Everything about online safety, smart spending &amp; your digital lifestyle.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.recharge.com\/blog\/pl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.recharge.com\/blog\/pl\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0\",\"name\":\"Mustafa Aybek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.recharge.com\/blog\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g\",\"caption\":\"Mustafa Aybek\"},\"url\":\"https:\/\/www.recharge.com\/blog\/pl\/author\/mustafa-aybek\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Konwerter Czu\u0142o\u015bci Myszy: Kalkulator dla 23 Gier FPS","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps","og_locale":"pl_PL","og_type":"article","og_title":"Konwerter Czu\u0142o\u015bci Myszy: Kalkulator dla 23 Gier FPS","og_description":"Convert mouse sensitivity instantly between CS2, Valorant, Overwatch 2, and 20+ FPS games. Maintain muscle memory with accurate eDPI and cm\/360 calculations.","og_url":"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps","og_site_name":"Recharge Blog","article_published_time":"2026-04-20T13:23:26+00:00","article_modified_time":"2026-04-21T08:23:49+00:00","og_image":[{"width":900,"height":491,"url":"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/02\/27164737\/hero-image-en-110.png","type":"image\/png"}],"author":"Mustafa Aybek","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps","url":"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps","name":"Konwerter Czu\u0142o\u015bci Myszy: Kalkulator dla 23 Gier FPS","isPartOf":{"@id":"https:\/\/www.recharge.com\/blog\/pl\/#website"},"datePublished":"2026-04-20T13:23:26+00:00","dateModified":"2026-04-21T08:23:49+00:00","author":{"@id":"https:\/\/www.recharge.com\/blog\/pl\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0"},"breadcrumb":{"@id":"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.recharge.com\/blog\/pl\/pl\/konwerter-czulosci-myszy-kalkulator-dla-23-gier-fps#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.recharge.com\/blog\/pl"},{"@type":"ListItem","position":2,"name":"Konwerter Czu\u0142o\u015bci Myszy: Kalkulator dla 23 Gier FPS"}]},{"@type":"WebSite","@id":"https:\/\/www.recharge.com\/blog\/pl\/#website","url":"https:\/\/www.recharge.com\/blog\/pl\/","name":"Recharge Blog","description":"Everything about online safety, smart spending &amp; your digital lifestyle.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.recharge.com\/blog\/pl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/www.recharge.com\/blog\/pl\/#\/schema\/person\/fe07f56ab88d14f3fd7cc1d3727b3bc0","name":"Mustafa Aybek","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.recharge.com\/blog\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3cce4b63f035e5797940f6410bda57e8ab49eb7f8670c96fa692ca9eba585b49?s=96&d=mm&r=g","caption":"Mustafa Aybek"},"url":"https:\/\/www.recharge.com\/blog\/pl\/author\/mustafa-aybek"}]}},"jetpack_featured_media_url":"https:\/\/creativegroup-blog-prd-eu-west-1-recharge-blog.s3.eu-west-1.amazonaws.com\/blog\/wp-content\/uploads\/2026\/02\/27164737\/hero-image-en-110.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/posts\/38960","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/comments?post=38960"}],"version-history":[{"count":3,"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/posts\/38960\/revisions"}],"predecessor-version":[{"id":39145,"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/posts\/38960\/revisions\/39145"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/media\/38381"}],"wp:attachment":[{"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/media?parent=38960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/categories?post=38960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.recharge.com\/blog\/pl\/wp-json\/wp\/v2\/tags?post=38960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}