{"id":38613,"date":"2026-04-29T14:29:28","date_gmt":"2026-04-29T07:29:28","guid":{"rendered":"https:\/\/dps.media\/?page_id=38613"},"modified":"2026-04-29T16:46:14","modified_gmt":"2026-04-29T09:46:14","slug":"%e8%b4%b4%e7%ba%b8%e5%88%87%e5%89%b2%e5%b7%a5%e5%85%b7%e8%87%aa%e5%8a%a8%e5%88%a0%e9%99%a4%e8%83%8c%e6%99%af%e8%b4%b4%e7%ba%b8%e5%88%86%e5%89%b2%e5%99%a8-cong-cu-cat-sticker-xoa-nen-tu-dong-sticker-sp","status":"publish","type":"page","link":"https:\/\/dps.media\/zh\/%e8%b4%b4%e7%ba%b8%e5%88%87%e5%89%b2%e5%b7%a5%e5%85%b7%e8%87%aa%e5%8a%a8%e5%88%a0%e9%99%a4%e8%83%8c%e6%99%af%e8%b4%b4%e7%ba%b8%e5%88%86%e5%89%b2%e5%99%a8-cong-cu-cat-sticker-xoa-nen-tu-dong-sticker-sp\/","title":{"rendered":"C\u00f4ng C\u1ee5 C\u1eaft Sticker &amp; X\u00f3a N\u1ec1n T\u1ef1 \u0110\u1ed9ng (Sticker Splitter)"},"content":{"rendered":"<div id=\"dps-isolated-root\">\n  <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jszip\/3.10.1\/jszip.min.js\"><\/script>\n  <style>\n    \n@import url('https:\/\/fonts.googleapis.com\/css2?family=Nunito:wght@700;800;900&family=DM+Sans:wght@400;500;700&display=swap');\n#dps-isolated-root * { margin: 0; padding: 0; box-sizing: border-box; font-family: inherit; }\n\n\n#dps-isolated-root *,#dps-isolated-root *::before,#dps-isolated-root *::after{ box-sizing: border-box; margin: 0; padding: 0; }\n:root {\n  --bg: #f8fafc;\n  --surface: #ffffff;\n  --primary: #4f46e5;\n  --primary-hover: #4338ca;\n  --primary-light: #eef2ff;\n  --accent: #ec4899;\n  --text-main: #0f172a;\n  --text-muted: #64748b;\n  --border: #e2e8f0;\n  --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n  --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n  --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n  --shadow-glow: 0 0 20px rgba(79, 70, 229, 0.15);\n  --radius: 20px;\n}\n\n#dps-isolated-root{\n  background: var(--bg);\n  color: var(--text-main);\n  font-family: 'DM Sans', sans-serif;\n  min-height: 100vh;\n  line-height: 1.5;\n  position: relative;\n  overflow-x: hidden;\n}\n\n\n#dps-isolated-root::before,#dps-isolated-root::after{\n  content: ''; position: fixed; border-radius: 50%; filter: blur(80px); z-index: -1; pointer-events: none;\n}\n#dps-isolated-root::before{ top: -10%; left: -10%; width: 50vw; height: 50vw; background: rgba(79, 70, 229, 0.07); }\n#dps-isolated-root::after{ bottom: -10%; right: -10%; width: 50vw; height: 50vw; background: rgba(236, 72, 153, 0.07); }\n\n#dps-isolated-root .dps-i-wrap{ max-width: 900px; margin: 0 auto; padding: 48px 20px 80px; position: relative; z-index: 1; }\n\n\n#dps-isolated-root .dps-i-header{ text-align: center; margin-bottom: 40px; }\n#dps-isolated-root .dps-i-badge{\n  display: inline-flex; align-items: center; gap: 8px;\n  background: var(--surface); border: 1px solid var(--border); box-shadow: var(--shadow-sm);\n  border-radius: 100px; padding: 6px 16px;\n  font-size: 12px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--primary);\n  margin-bottom: 16px;\n}\n#dps-isolated-root .dps-i-badge .dps-i-dot{ width: 8px; height: 8px; background: var(--primary); border-radius: 50%; box-shadow: 0 0 8px var(--primary); animation: pulse 2s infinite; }\n@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(79,70,229,0.4); } 70% { box-shadow: 0 0 0 6px rgba(79,70,229,0); } 100% { box-shadow: 0 0 0 0 rgba(79,70,229,0); } }\n\n#dps-isolated-root .dps-i-h1{\n  font-family: 'Nunito', sans-serif; font-size: clamp(32px, 6vw, 48px); font-weight: 900;\n  color: var(--text-main); line-height: 1.2; margin-bottom: 12px;\n}\n#dps-isolated-root .dps-i-h1 span{\n  background: linear-gradient(135deg, var(--primary), var(--accent));\n  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\n}\n#dps-isolated-root .dps-i-sub{ color: var(--text-muted); font-size: 16px; max-width: 500px; margin: 0 auto; }\n\n\n#dps-isolated-root .dps-i-panel{\n  background: var(--surface); border: 1px solid var(--border); box-shadow: var(--shadow);\n  border-radius: var(--radius); padding: 32px; margin-bottom: 24px; transition: all 0.3s ease;\n}\n\n\n#dps-isolated-root .dps-i-upload-zone{\n  border: 2px dashed #cbd5e1; background: #f8fafc;\n  text-align: center; cursor: pointer; padding: 56px 32px;\n}\n#dps-isolated-root .dps-i-upload-zone:hover,#dps-isolated-root .dps-i-upload-zone.over{\n  border-color: var(--primary); background: var(--primary-light);\n}\n#dps-isolated-root .dps-i-upload-zone .dps-i-ico{ font-size: 56px; display: block; margin-bottom: 16px; transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); }\n#dps-isolated-root .dps-i-upload-zone:hover .dps-i-ico{ transform: scale(1.1) translateY(-4px); }\n#dps-isolated-root .dps-i-upload-zone h3{ font-family: 'Nunito', sans-serif; font-weight: 800; font-size: 20px; color: var(--text-main); margin-bottom: 8px; }\n#dps-isolated-root .dps-i-upload-zone p{ color: var(--text-muted); font-size: 14px; }\n#dps-isolated-root #fileInput{ display: none; }\n\n\n#dps-isolated-root .dps-i-preview-row{ display: flex; align-items: center; gap: 20px; margin-bottom: 32px; padding-bottom: 24px; border-bottom: 1px solid var(--border); }\n#dps-isolated-root .dps-i-preview-row img{ width: 90px; height: 90px; object-fit: contain; border-radius: 12px; background: #f1f5f9; border: 1px solid var(--border); flex-shrink: 0; }\n#dps-isolated-root .dps-i-preview-info h4{ font-family: 'Nunito', sans-serif; font-weight: 800; font-size: 18px; color: var(--text-main); margin-bottom: 4px; }\n#dps-isolated-root .dps-i-preview-info p{ font-size: 14px; color: var(--text-muted); }\n\n\n#dps-isolated-root .dps-i-grid-section{ margin-bottom: 28px; }\n#dps-isolated-root .dps-i-section-label{\n  font-size: 13px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase;\n  color: var(--text-muted); margin-bottom: 16px; display: block;\n}\n#dps-isolated-root .dps-i-grid-presets{ display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 16px; }\n#dps-isolated-root .dps-i-preset-btn{\n  padding: 8px 20px; border-radius: 12px; border: 1px solid var(--border);\n  background: var(--surface); color: var(--text-muted); font-family: 'DM Sans', sans-serif;\n  font-weight: 700; font-size: 15px; cursor: pointer; transition: all 0.2s ease;\n}\n#dps-isolated-root .dps-i-preset-btn:hover{ border-color: var(--primary); color: var(--primary); background: var(--primary-light); }\n#dps-isolated-root .dps-i-preset-btn.dps-i-active{ border-color: var(--primary); background: var(--primary); color: white; box-shadow: var(--shadow-glow); }\n\n#dps-isolated-root .dps-i-grid-custom{ display: inline-flex; align-items: center; gap: 12px; background: #f8fafc; padding: 8px 16px; border-radius: 14px; border: 1px solid var(--border); }\n#dps-isolated-root .dps-i-grid-custom input{\n  width: 60px; padding: 8px; border-radius: 8px; border: 1px solid var(--border); background: var(--surface);\n  color: var(--text-main); font-family: 'Nunito', sans-serif; font-weight: 800; font-size: 18px; text-align: center; outline: none; transition: all 0.2s;\n}\n#dps-isolated-root .dps-i-grid-custom input:focus{ border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-light); }\n#dps-isolated-root .dps-i-grid-custom span{ color: var(--text-muted); font-weight: 500; font-size: 15px; }\n#dps-isolated-root .dps-i-grid-custom .dps-i-times{ font-size: 18px; font-weight: 700; color: #cbd5e1; }\n#dps-isolated-root .dps-i-grid-info{ font-size: 14px; color: var(--primary); margin-top: 12px; font-weight: 500; display: flex; align-items: center; gap: 6px; }\n#dps-isolated-root .dps-i-grid-info strong{ font-weight: 800; }\n\n\n#dps-isolated-root .dps-i-toggle-row{\n  display: flex; align-items: center; justify-content: space-between;\n  padding: 20px 0 0; border-top: 1px solid var(--border);\n}\n#dps-isolated-root .dps-i-toggle-label{ font-size: 16px; font-weight: 700; color: var(--text-main); }\n#dps-isolated-root .dps-i-toggle-label small{ display: block; font-size: 13px; color: var(--text-muted); font-weight: 400; margin-top: 4px; }\n#dps-isolated-root .dps-i-toggle{ position: relative; width: 50px; height: 28px; }\n#dps-isolated-root .dps-i-toggle input{ opacity: 0; width: 0; height: 0; }\n#dps-isolated-root .dps-i-toggle-track{\n  position: absolute; inset: 0; border-radius: 100px;\n  background: #cbd5e1; cursor: pointer; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n#dps-isolated-root .dps-i-toggle-track::after{\n  content: ''; position: absolute; left: 4px; top: 4px;\n  width: 20px; height: 20px; border-radius: 50%;\n  background: white; box-shadow: 0 2px 4px rgba(0,0,0,0.2); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n#dps-isolated-root .dps-i-toggle input:checked + .dps-i-toggle-track{ background: var(--primary); }\n#dps-isolated-root .dps-i-toggle input:checked + .dps-i-toggle-track::after{ transform: translateX(22px); }\n\n\n#dps-isolated-root .dps-i-guide-box{\n  margin-top: 24px;\n  padding: 16px;\n  background: #f8fafc;\n  border: 1px solid var(--border);\n  border-radius: 12px;\n}\n#dps-isolated-root .dps-i-guide-box h4{\n  margin: 0 0 8px 0;\n  color: var(--primary);\n  font-size: 15px;\n  display: flex;\n  align-items: center;\n  gap: 6px;\n}\n#dps-isolated-root .dps-i-guide-box p{\n  font-size: 13px;\n  color: var(--text-muted);\n  margin: 0 0 12px 0;\n  line-height: 1.4;\n}\n#dps-isolated-root .dps-i-prompt-text{\n  background: #fff;\n  border: 1px solid var(--border);\n  padding: 12px;\n  border-radius: 8px;\n  font-size: 12px;\n  color: var(--text);\n  max-height: 100px;\n  overflow-y: auto;\n  line-height: 1.5;\n  white-space: pre-wrap;\n  user-select: all;\n}\n\n\n#dps-isolated-root .dps-i-thresh-row{\n  display: flex; align-items: center; gap: 16px;\n  padding-top: 16px; margin-top: 16px; border-top: 1px dashed var(--border);\n}\n#dps-isolated-root .dps-i-thresh-row label{ font-size: 14px; font-weight: 500; color: var(--text-muted); white-space: nowrap; }\n#dps-isolated-root .dps-i-thresh-row input[type=range]{\n  flex: 1; -webkit-appearance: none; height: 6px;\n  background: #e2e8f0; border-radius: 100px; outline: none;\n}\n#dps-isolated-root .dps-i-thresh-row input[type=range]::-webkit-slider-thumb{\n  -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%;\n  background: white; border: 2px solid var(--primary); cursor: pointer; box-shadow: 0 2px 6px rgba(0,0,0,0.1);\n  transition: transform 0.1s;\n}\n#dps-isolated-root .dps-i-thresh-row input[type=range]::-webkit-slider-thumb:hover{ transform: scale(1.1); }\n#dps-isolated-root .dps-i-thresh-val{ font-size: 14px; color: var(--primary); font-weight: 800; width: 36px; text-align: right; background: var(--primary-light); padding: 4px 8px; border-radius: 6px; }\n\n\n#dps-isolated-root .dps-i-action-row{ display: flex; gap: 16px; flex-wrap: wrap; margin-top: 32px; padding-top: 24px; border-top: 1px solid var(--border); }\n#dps-isolated-root .dps-i-btn{\n  display: inline-flex; align-items: center; justify-content: center; gap: 8px;\n  padding: 14px 28px; border: none; border-radius: 12px;\n  font-family: 'Nunito', sans-serif; font-weight: 800; font-size: 16px;\n  cursor: pointer; transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n#dps-isolated-root .dps-i-btn-primary{ background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(79, 70, 229, 0.3); flex: 1; min-width: 200px; }\n#dps-isolated-root .dps-i-btn-primary:hover{ transform: translateY(-2px); box-shadow: 0 6px 16px rgba(79, 70, 229, 0.4); background: var(--primary-hover); }\n#dps-isolated-root .dps-i-btn-primary:active{ transform: translateY(0); }\n#dps-isolated-root .dps-i-btn-primary:disabled{ opacity: 0.6; cursor: not-allowed; transform: none; box-shadow: none; }\n#dps-isolated-root .dps-i-btn-secondary{ background: var(--surface); border: 2px solid var(--border); color: var(--text-main); }\n#dps-isolated-root .dps-i-btn-secondary:hover{ border-color: #cbd5e1; background: #f8fafc; }\n#dps-isolated-root .dps-i-btn-success{ background: #10b981; color: white; box-shadow: 0 4px 12px rgba(16, 185, 129, 0.2); }\n#dps-isolated-root .dps-i-btn-success:hover{ background: #059669; transform: translateY(-2px); box-shadow: 0 6px 16px rgba(16, 185, 129, 0.3); }\n#dps-isolated-root .dps-i-btn-sm{ padding: 8px 16px; font-size: 13px; border-radius: 8px; }\n#dps-isolated-root .dps-i-btn-outline-primary{ background: white; border: 1px solid var(--primary); color: var(--primary); }\n#dps-isolated-root .dps-i-btn-outline-primary:hover{ background: var(--primary-light); }\n\n\n#dps-isolated-root .dps-i-progress-panel{ text-align: center; }\n#dps-isolated-root .dps-i-spinner{ \n  width: 48px; height: 48px; margin: 0 auto 20px; \n  border: 4px solid var(--primary-light); border-top-color: var(--primary); \n  border-radius: 50%; animation: spin 1s cubic-bezier(0.55, 0.15, 0.45, 0.85) infinite; \n}\n@keyframes spin { to { transform: rotate(360deg); } }\n#dps-isolated-root .dps-i-progress-title{ font-family: 'Nunito', sans-serif; font-weight: 800; font-size: 20px; color: var(--text-main); margin-bottom: 16px; }\n#dps-isolated-root .dps-i-track{ height: 8px; background: var(--primary-light); border-radius: 100px; overflow: hidden; margin-bottom: 12px; }\n#dps-isolated-root .dps-i-fill{ height: 100%; border-radius: 100px; background: var(--primary); transition: width 0.3s ease; }\n#dps-isolated-root .dps-i-progress-detail{ font-size: 14px; color: var(--text-muted); font-weight: 500; }\n\n\n#dps-isolated-root .dps-i-alert{ border-radius: 12px; padding: 16px 20px; font-size: 15px; margin-bottom: 24px; display: flex; align-items: center; gap: 12px; font-weight: 500; }\n#dps-isolated-root .dps-i-alert-error{ background: #fef2f2; border: 1px solid #fca5a5; color: #b91c1c; }\n#dps-isolated-root .dps-i-alert-success{ background: #f0fdf4; border: 1px solid #86efac; color: #15803d; }\n\n\n#dps-isolated-root .dps-i-results-header{\n  display: flex; align-items: center; justify-content: space-between;\n  flex-wrap: wrap; gap: 16px; margin-bottom: 24px;\n}\n#dps-isolated-root .dps-i-results-title{ font-family: 'Nunito', sans-serif; font-weight: 900; font-size: 24px; color: var(--text-main); display: flex; align-items: center; gap: 12px; }\n#dps-isolated-root .dps-i-chip{ font-size: 13px; padding: 4px 12px; border-radius: 100px; font-weight: 800; background: var(--primary-light); color: var(--primary); }\n\n\n#dps-isolated-root .dps-i-sticker-grid{ display: grid; gap: 20px; margin-bottom: 32px; }\n#dps-isolated-root .dps-i-sticker-card{\n  background: var(--surface); border: 1px solid var(--border); border-radius: 16px;\n  overflow: hidden; transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n  box-shadow: var(--shadow-sm);\n  animation: popUp 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) both;\n}\n@keyframes popUp { from { opacity: 0; transform: scale(0.9) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n#dps-isolated-root .dps-i-sticker-card:hover{ border-color: var(--primary); transform: translateY(-4px); box-shadow: var(--shadow-lg); }\n#dps-isolated-root .dps-i-s-preview{\n  background: \n    linear-gradient(45deg, #f1f5f9 25%, transparent 25%, transparent 75%, #f1f5f9 75%, #f1f5f9), \n    linear-gradient(45deg, #f1f5f9 25%, transparent 25%, transparent 75%, #f1f5f9 75%, #f1f5f9);\n  background-color: #ffffff; background-size: 20px 20px; background-position: 0 0, 10px 10px;\n  display: flex; align-items: center; justify-content: center;\n  min-height: 160px; padding: 20px; position: relative;\n}\n#dps-isolated-root .dps-i-s-preview::after{\n  content: ''; position: absolute; inset: 0; box-shadow: inset 0 0 0 1px rgba(0,0,0,0.03); pointer-events: none;\n}\n#dps-isolated-root .dps-i-s-preview img{ max-width: 100%; max-height: 140px; object-fit: contain; filter: drop-shadow(0 4px 12px rgba(0,0,0,0.15)); transition: transform 0.3s ease; }\n#dps-isolated-root .dps-i-sticker-card:hover .dps-i-s-preview img{ transform: scale(1.05); }\n#dps-isolated-root .dps-i-s-footer{ padding: 12px 16px; border-top: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; background: #f8fafc; }\n#dps-isolated-root .dps-i-s-label{ font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: 13px; color: var(--text-muted); }\n\n#dps-isolated-root .dps-i-hidden{ display: none !important; }\n\n\n@media(max-width: 640px) { \n#dps-isolated-root .dps-i-wrap{ padding: 24px 16px 60px; }\n#dps-isolated-root .dps-i-panel{ padding: 24px 20px; }\n#dps-isolated-root .dps-i-action-row{ flex-direction: column; }\n#dps-isolated-root .dps-i-btn{ width: 100%; }\n#dps-isolated-root .dps-i-grid-presets{ gap: 8px; }\n#dps-isolated-root .dps-i-preset-btn{ padding: 8px 16px; flex: 1; text-align: center; min-width: calc(33% - 8px); }\n#dps-isolated-root .dps-i-preview-row{ flex-direction: column; text-align: center; }\n#dps-isolated-root .dps-i-toggle-row{ flex-direction: column; align-items: flex-start; gap: 16px; }\n#dps-isolated-root .dps-i-toggle{ align-self: flex-end; margin-top: -36px; }\n}\n\n  <\/style>\n\n  \n<div class=\"dps-i-wrap\">\n\n<div class=\"dps-i-header\">\n  <div class=\"dps-i-badge\"><span class=\"dps-i-dot\"><\/span> Smart Tool<\/div>\n  <div class=\"dps-i-h1\">Sticker <span>Splitter<\/span><\/div>\n  <div  class=\"dps-i-p dps-i-sub\">T\u1ea3i l\u00ean file \u1ea3nh sticker grid, c\u00f4ng c\u1ee5 s\u1ebd t\u1ef1 \u0111\u1ed9ng c\u1eaft v\u00e0 x\u00f3a n\u1ec1n gi\u00fap b\u1ea1n c\u00f3 nh\u1eefng file PNG trong su\u1ed1t ho\u00e0n h\u1ea3o.<\/div>\n<\/div>\n\n<!-- Upload -->\n<div class=\"dps-i-panel dps-i-upload-zone\" id=\"uploadZone\">\n  <input type=\"file\" id=\"fileInput\" accept=\"image\/*\">\n  <span class=\"dps-i-ico\">\u2728<\/span>\n  <div class=\"dps-i-h3\">K\u00e9o th\u1ea3 ho\u1eb7c nh\u1ea5n \u0111\u1ec3 ch\u1ecdn \u1ea3nh<\/div>\n  <div class=\"dps-i-p\">H\u1ed7 tr\u1ee3 \u0111\u1ecbnh d\u1ea1ng JPG, PNG, WebP<\/div>\n<\/div>\n\n<div class=\"dps-i-guide-box\" id=\"guideBox\" style=\"margin-bottom: 24px; margin-top: 0;\">\n  <div class=\"dps-i-h4\">\ud83d\udca1 Prompt t\u1ea1o Sticker m\u1eabu<\/div>\n  <div class=\"dps-i-p\">\u0110\u1ec3 k\u1ebft qu\u1ea3 c\u1eaft ho\u00e0n h\u1ea3o nh\u1ea5t, h\u00e3y d\u00f9ng prompt d\u01b0\u1edbi \u0111\u00e2y:<\/div>\n  <div class=\"dps-i-prompt-text\">Create a cute Vietnamese Zalo sticker pack in a 3&#215;3 grid layout on a white background. The canvas is square. Divide it into a strict 3&#215;3 grid where each cell occupies exactly 1\/3 of the total width and 1\/3 of the total height. Each sticker must be fully contained within its own cell \u2014 nothing may cross cell boundaries or overlap into adjacent cells. Within each cell: Kabot&#8217;s character takes up the top 70% of the cell height, and the Vietnamese caption takes up the bottom 30% of the cell height. All elements including decorative doodles must stay strictly within the cell&#8217;s boundaries. Use the robot mascot &#8220;Kabot&#8221; from DPS Media consistently across all 9 stickers. Kabot&#8217;s design: round dark blue oval head, two light blue circular eye highlights, small blue antenna on top, expressive curved mouth, white and dark blue body suit with the DPS logo badge on the chest, short rounded limbs, friendly chibi proportion. Sticker list (left to right, top to bottom): Flexing confidently with big grin \u2014 &#8220;Chill, \u0111\u1ec3 DPS lo!&#8221; Holding phone showing graph going up \u2014 &#8220;Reach t\u0103ng v\u00f9 v\u00f9!&#8221; Panicking with sweat drops holding laptop \u2014 &#8220;Deadline h\u00f4m nay r\u1ed3i!&#8221; Winking doing finger guns \u2014 &#8220;B\u1eaft trend nhanh h\u01a1n s\u00e1ng nay!&#8221; Pointing at glowing lightbulb above head \u2014 &#8220;\u00dd t\u01b0\u1edfng hay \u0111\u00e2y!&#8221; Typing furiously on tiny keyboard \u2014 &#8220;Content \u0111ang ch\u1ea1y!&#8221; Arms crossed cool pose with sunglasses \u2014 &#8220;Viral l\u00e0 chuy\u1ec7n nh\u1ecf!&#8221; Jumping in joy with confetti \u2014 &#8220;KPI \u0111\u1ea1t r\u1ed3i anh \u01a1i!&#8221; Waving both hands cheerfully \u2014 &#8220;H\u1ee3p t\u00e1c v\u1edbi DPS nha!&#8221; Add small colorful doodles (lightning bolts, sparkles, stars, hearts, arrows) inside each cell, strictly within bounds. Style: cute chibi robot, Zalo sticker style, vibrant Gen Z colors (electric blue, coral, yellow, mint green), bold colorful gradient captions with thick white outline, high resolution, 1:1 square canvas.<\/div>\n  <div role=\"button\" tabindex=\"0\" class=\"dps-i-btn dps-i-btn-secondary\" style=\"margin-top: 12px; width: 100%; display: flex; justify-content: center; gap: 8px;\" onclick=\"navigator.clipboard.writeText(document.querySelector('.dps-i-prompt-text').innerText); const icon = this.innerHTML; this.innerHTML='<span style=\\'font-size:16px\\'>\u2713<\/span> \u0110\u00e3 copy&#8217;; setTimeout(()=>this.innerHTML=icon, 2000);&#8221;>    <span style=\"font-size: 16px;\">\ud83d\udccb<\/span> Copy Prompt\n  <\/div>\n<\/div>\n\n<!-- Config -->\n<div class=\"dps-i-panel dps-i-config-panel dps-i-hidden\" id=\"configPanel\">\n  <div class=\"dps-i-preview-row\">\n    <img id=\"origThumb\" alt=\"\u7f29\u7565\u56fe\">\n    <div class=\"dps-i-preview-info\">\n      <div class=\"dps-i-h4\" id=\"origName\">filename.png<\/div>\n      <div class=\"dps-i-p\" id=\"origMeta\">1024 \u00d7 1024px \u00b7 1.5 MB<\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"dps-i-grid-section\">\n    <span class=\"dps-i-section-label\">\ud83d\udcd0 K\u00edch th\u01b0\u1edbc Grid<\/span>\n    <div class=\"dps-i-grid-presets\">\n      <div role=\"button\" tabindex=\"0\" class=\"dps-i-preset-btn\" data-c=\"2\" data-r=\"2\">2\u00d72<\/div>\n      <div role=\"button\" tabindex=\"0\" class=\"dps-i-preset-btn dps-i-active\" data-c=\"3\" data-r=\"3\">3\u00d73<\/div>\n      <div role=\"button\" tabindex=\"0\" class=\"dps-i-preset-btn\" data-c=\"4\" data-r=\"4\">4\u00d74<\/div>\n      <div role=\"button\" tabindex=\"0\" class=\"dps-i-preset-btn\" data-c=\"2\" data-r=\"3\">2\u00d73<\/div>\n      <div role=\"button\" tabindex=\"0\" class=\"dps-i-preset-btn\" data-c=\"3\" data-r=\"2\">3\u00d72<\/div>\n      <div role=\"button\" tabindex=\"0\" class=\"dps-i-preset-btn\" data-c=\"4\" data-r=\"3\">4\u00d73<\/div>\n    <\/div>\n    <div class=\"dps-i-grid-custom\">\n      <input type=\"number\" id=\"gridCols\" value=\"3\" min=\"1\" max=\"20\">\n      <span class=\"dps-i-times\">\u00d7<\/span>\n      <input type=\"number\" id=\"gridRows\" value=\"3\" min=\"1\" max=\"20\">\n    <\/div>\n    <div class=\"dps-i-grid-info\" id=\"gridInfo\">\ud83c\udf89 S\u1ebd c\u1eaft ra <span class=\"dps-i-strong\">9<\/span> stickers<\/div>\n  <\/div>\n\n  <div class=\"dps-i-toggle-row\">\n    <div class=\"dps-i-toggle-label\">\n      \ud83e\ude84 X\u00f3a n\u1ec1n tr\u1eafng\n      <span class=\"dps-i-small\">T\u1ef1 \u0111\u1ed9ng ph\u00e1t hi\u1ec7n v\u00e0 l\u00e0m trong su\u1ed1t n\u1ec1n tr\u1eafng xung quanh<\/span>\n    <\/div>\n    <label  class=\"dps-i-label dps-i-toggle\">\n      <input type=\"checkbox\" id=\"removeBg\">\n      <span class=\"dps-i-toggle-track\"><\/span>\n    <\/label>\n  <\/div>\n\n  <div class=\"dps-i-thresh-row dps-i-hidden\" id=\"threshRow\">\n    <label class=\"dps-i-label\">\u0110\u1ed9 nh\u1ea1y m\u00e0u tr\u1eafng<\/label>\n    <input type=\"range\" id=\"bgThresh\" min=\"200\" max=\"255\" value=\"240\">\n    <span class=\"dps-i-thresh-val\" id=\"threshVal\">240<\/span>\n  <\/div>\n\n  <div class=\"dps-i-thresh-row dps-i-hidden\" id=\"shiftRow\" style=\"margin-top: 12px; border-top: none; padding-top: 0;\">\n    <label class=\"dps-i-label\">Thu \/ Ph\u00f3ng vi\u1ec1n (px)<\/label>\n    <input type=\"range\" id=\"edgeShift\" min=\"-5\" max=\"5\" value=\"-1\">\n    <span class=\"dps-i-thresh-val\" id=\"shiftVal\">-1<\/span>\n  <\/div>\n\n  <div class=\"dps-i-toggle-row\" style=\"padding-top: 16px; margin-top: 16px; border-top: 1px dashed var(--border);\">\n    <div class=\"dps-i-toggle-label\">\n      \ud83d\udca7 L\u00e0m m\u01b0\u1ee3t vi\u1ec1n (Anti-alias)\n      <span class=\"dps-i-small\">Kh\u1eed vi\u1ec1n r\u0103ng c\u01b0a, khuy\u00ean d\u00f9ng \u0111\u1ec3 tr\u00e1nh l\u1eb9m \u1ea3nh<\/span>\n    <\/div>\n    <label  class=\"dps-i-label dps-i-toggle\">\n      <input type=\"checkbox\" id=\"smoothEdgeCb\" checked>\n      <span class=\"dps-i-toggle-track\"><\/span>\n    <\/label>\n  <\/div>\n\n  <div class=\"dps-i-toggle-row\" style=\"padding-top: 16px; margin-top: 16px; border-top: 1px dashed var(--border);\">\n    <div class=\"dps-i-toggle-label\">\n      \u2702\ufe0f X\u00e9n vi\u1ec1n (Crop)\n      <span class=\"dps-i-small\">C\u1eaft l\u1eb9m v\u00e0o trong \u1ea3nh \u0111\u1ec3 x\u00f3a \u0111\u01b0\u1eddng line chia \u00f4<\/span>\n    <\/div>\n    <div style=\"display: flex; align-items: center; gap: 8px;\">\n      <input type=\"number\" id=\"cropPx\" value=\"3\" min=\"0\" max=\"50\" style=\"width: 60px; padding: 6px; border-radius: 8px; border: 1px solid var(--border); text-align: center; font-weight: bold; outline: none; font-family: 'Nunito', sans-serif;\">\n      <span style=\"font-size: 14px; color: var(--text-muted); font-weight: 500;\">px<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"dps-i-toggle-row\" style=\"padding-top: 16px; margin-top: 16px; border-top: 1px dashed var(--border);\">\n    <div class=\"dps-i-toggle-label\">\n      \ud83c\udfaf C\u0103n gi\u1eefa t\u1ef1 \u0111\u1ed9ng\n      <span class=\"dps-i-small\">C\u1eaft kho\u1ea3ng tr\u1ed1ng th\u1eeba v\u00e0 \u0111\u1eb7t sticker v\u00e0o ch\u00ednh gi\u1eefa khung h\u00ecnh<\/span>\n    <\/div>\n    <label  class=\"dps-i-label dps-i-toggle\">\n      <input type=\"checkbox\" id=\"autoCenterCb\" checked>\n      <span class=\"dps-i-toggle-track\"><\/span>\n    <\/label>\n  <\/div>\n\n  <div class=\"dps-i-action-row\">\n    <div role=\"button\" tabindex=\"0\" class=\"dps-i-btn dps-i-btn-primary\" id=\"processBtn\">\u26a1 C\u1eaft Stickers Ngay<\/div>\n    <div role=\"button\" tabindex=\"0\" class=\"dps-i-btn dps-i-btn-secondary\" id=\"resetBtn\">\u21ba \u0110\u1ed5i \u1ea3nh kh\u00e1c<\/div>\n  <\/div>\n<\/div>\n\n<!-- Progress -->\n<div class=\"dps-i-panel dps-i-progress-panel dps-i-hidden\" id=\"progressPanel\">\n  <div class=\"dps-i-spinner\"><\/div>\n  <div class=\"dps-i-progress-title\" id=\"progressTitle\">\u0110ang x\u1eed l\u00fd&#8230;<\/div>\n  <div class=\"dps-i-track\"><div class=\"dps-i-fill\" id=\"progressFill\" style=\"width:0%\"><\/div><\/div>\n  <div class=\"dps-i-progress-detail\" id=\"progressDetail\">Vui l\u00f2ng \u0111\u1ee3i trong gi\u00e2y l\u00e1t<\/div>\n<\/div>\n\n<!-- Alert -->\n<div class=\"dps-i-hidden\" id=\"alertBox\"><\/div>\n\n<!-- Results -->\n<div class=\"dps-i-hidden\" id=\"resultsWrap\">\n  <div class=\"dps-i-results-header\">\n    <div class=\"dps-i-results-title\">\ud83c\udfa8 K\u1ebft Qu\u1ea3 <span class=\"dps-i-chip\" id=\"countChip\">0<\/span><\/div>\n    <div role=\"button\" tabindex=\"0\" class=\"dps-i-btn dps-i-btn-success\" id=\"downloadAllBtn\">\ud83d\udce6 T\u1ea3i v\u1ec1 t\u1ea5t c\u1ea3 (ZIP)<\/div>\n  <\/div>\n  <div class=\"dps-i-sticker-grid\" id=\"stickerGrid\"><\/div>\n<\/div>\n\n<\/div>\n\n\n\n\n  <script>\n    \n  document.getElementById('dps-isolated-root').addEventListener('keydown', function(e) {\n    if (['Enter', ' '].includes(e.key)) {\n      if (e.target.getAttribute('role') === 'button') {\n        e.preventDefault();\n        e.target.click();\n      }\n    }\n  });\n\n    \n  const enc = \"Ci8vIOKUgOKUgCBTdGF0ZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKbGV0IGZpbGVEYXRhVVJMID0gbnVsbDsKbGV0IGltZ1cgPSAwLCBpbWdIID0gMDsKbGV0IHN0aWNrZXJVUkxzID0gW107CmxldCBvcmlnRmlsZU5hbWUgPSAnc3RpY2tlcic7CgovLyDilIDilIAgRWxlbWVudHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACmNvbnN0IHVwbG9hZFpvbmUgICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRab25lJyk7CmNvbnN0IGZpbGVJbnB1dCAgICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTsKY29uc3QgY29uZmlnUGFuZWwgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbmZpZ1BhbmVsJyk7CmNvbnN0IHByb2Nlc3NCdG4gICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9jZXNzQnRuJyk7CmNvbnN0IHJlc2V0QnRuICAgICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNldEJ0bicpOwpjb25zdCBwcm9ncmVzc1BhbmVsPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZ3Jlc3NQYW5lbCcpOwpjb25zdCBhbGVydEJveCAgICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnRCb3gnKTsKY29uc3QgcmVzdWx0c1dyYXAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHNXcmFwJyk7CmNvbnN0IHN0aWNrZXJHcmlkICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGlja2VyR3JpZCcpOwpjb25zdCBkb3dubG9hZEFsbEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb3dubG9hZEFsbEJ0bicpOwpjb25zdCBjb2xzSW5wdXQgICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JpZENvbHMnKTsKY29uc3Qgcm93c0lucHV0ICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dyaWRSb3dzJyk7CmNvbnN0IGdyaWRJbmZvICAgICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncmlkSW5mbycpOwpjb25zdCByZW1vdmVCZ0NiICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVtb3ZlQmcnKTsKY29uc3QgdGhyZXNoUm93ICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RocmVzaFJvdycpOwpjb25zdCB0aHJlc2hTbGlkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmdUaHJlc2gnKTsKY29uc3QgdGhyZXNoVmFsICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RocmVzaFZhbCcpOwpjb25zdCBzaGlmdFJvdyAgICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hpZnRSb3cnKTsKY29uc3Qgc2hpZnRTbGlkZXIgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkZ2VTaGlmdCcpOwpjb25zdCBzaGlmdFZhbCAgICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hpZnRWYWwnKTsKY29uc3Qgc21vb3RoRWRnZUNiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Ntb290aEVkZ2VDYicpOwpjb25zdCBjcm9wUHhJbnB1dCAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3JvcFB4Jyk7CmNvbnN0IGF1dG9DZW50ZXJDYiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdXRvQ2VudGVyQ2InKTsKCi8vIOKUgOKUgCBHcmlkIHBpY2tlciDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKZnVuY3Rpb24gdXBkYXRlR3JpZEluZm8oKSB7CiAgY29uc3QgYyA9IHBhcnNlSW50KGNvbHNJbnB1dC52YWx1ZSkgfHwgMTsKICBjb25zdCByID0gcGFyc2VJbnQocm93c0lucHV0LnZhbHVlKSB8fCAxOwogIGdyaWRJbmZvLmlubmVySFRNTCA9ICfwn46JIFPhur0gY+G6r3QgcmEgPHN0cm9uZz4nICsgKGMqcikgKyAnPC9zdHJvbmc+IHN0aWNrZXJzJzsKfQoKZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnByZXNldC1idG4nKS5mb3JFYWNoKGJ0biA9PiB7CiAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gewogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnByZXNldC1idG4nKS5mb3JFYWNoKGIgPT4gYi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgICBidG4uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICBjb2xzSW5wdXQudmFsdWUgPSBidG4uZGF0YXNldC5jOwogICAgcm93c0lucHV0LnZhbHVlID0gYnRuLmRhdGFzZXQucjsKICAgIHVwZGF0ZUdyaWRJbmZvKCk7CiAgfSk7Cn0pOwoKW2NvbHNJbnB1dCwgcm93c0lucHV0XS5mb3JFYWNoKGVsID0+IHsKICBlbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wcmVzZXQtYnRuJykuZm9yRWFjaChiID0+IGIuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogICAgdXBkYXRlR3JpZEluZm8oKTsKICB9KTsKfSk7CgpyZW1vdmVCZ0NiLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHsKICB0aHJlc2hSb3cuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgIXJlbW92ZUJnQ2IuY2hlY2tlZCk7CiAgc2hpZnRSb3cuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgIXJlbW92ZUJnQ2IuY2hlY2tlZCk7Cn0pOwoKdGhyZXNoU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gewogIHRocmVzaFZhbC50ZXh0Q29udGVudCA9IHRocmVzaFNsaWRlci52YWx1ZTsKfSk7CgpzaGlmdFNsaWRlci5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHsKICBzaGlmdFZhbC50ZXh0Q29udGVudCA9IHNoaWZ0U2xpZGVyLnZhbHVlOwp9KTsKCi8vIOKUgOKUgCBVcGxvYWQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACnVwbG9hZFpvbmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBmaWxlSW5wdXQuY2xpY2soKSk7CnVwbG9hZFpvbmUuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBlID0+IHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB1cGxvYWRab25lLmNsYXNzTGlzdC5hZGQoJ292ZXInKTsgfSk7CnVwbG9hZFpvbmUuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKCkgPT4gdXBsb2FkWm9uZS5jbGFzc0xpc3QucmVtb3ZlKCdvdmVyJykpOwp1cGxvYWRab25lLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBlID0+IHsKICBlLnByZXZlbnREZWZhdWx0KCk7IHVwbG9hZFpvbmUuY2xhc3NMaXN0LnJlbW92ZSgnb3ZlcicpOwogIGNvbnN0IGYgPSBlLmRhdGFUcmFuc2Zlci5maWxlc1swXTsKICBpZiAoZiAmJiBmLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIGxvYWRGaWxlKGYpOwp9KTsKZmlsZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHsgaWYgKGZpbGVJbnB1dC5maWxlc1swXSkgbG9hZEZpbGUoZmlsZUlucHV0LmZpbGVzWzBdKTsgfSk7CgpmdW5jdGlvbiBsb2FkRmlsZShmaWxlKSB7CiAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICByZWFkZXIub25sb2FkID0gZSA9PiB7CiAgICBmaWxlRGF0YVVSTCA9IGUudGFyZ2V0LnJlc3VsdDsKICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpOwogICAgaW1nLm9ubG9hZCA9ICgpID0+IHsKICAgICAgaW1nVyA9IGltZy5uYXR1cmFsV2lkdGg7IGltZ0ggPSBpbWcubmF0dXJhbEhlaWdodDsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yaWdUaHVtYicpLnNyYyA9IGZpbGVEYXRhVVJMOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JpZ05hbWUnKS50ZXh0Q29udGVudCA9IGZpbGUubmFtZTsKICAgICAgb3JpZ0ZpbGVOYW1lID0gZmlsZS5uYW1lLnJlcGxhY2UoL1wuW14vLl0rJC8sICIiKSB8fCAnc3RpY2tlcic7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmlnTWV0YScpLnRleHRDb250ZW50ID0KICAgICAgICBpbWdXICsgJyDDlyAnICsgaW1nSCArICdweCDCtyAnICsgKGZpbGUuc2l6ZS8xMDI0LzEwMjQpLnRvRml4ZWQoMikgKyAnIE1CJzsKICAgICAgdXBkYXRlR3JpZEluZm8oKTsKICAgIH07CiAgICBpbWcuc3JjID0gZmlsZURhdGFVUkw7CiAgfTsKICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTsKCiAgdXBsb2FkWm9uZS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3VpZGVCb3gnKS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBjb25maWdQYW5lbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKICByZXN1bHRzV3JhcC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBhbGVydEJveC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBzdGlja2VyVVJMcyA9IFtdOwp9CgpyZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsKICBmaWxlRGF0YVVSTCA9IG51bGw7IGZpbGVJbnB1dC52YWx1ZSA9ICcnOwogIHVwbG9hZFpvbmUuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2d1aWRlQm94JykuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7CiAgY29uZmlnUGFuZWwuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CiAgcmVzdWx0c1dyYXAuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CiAgYWxlcnRCb3guY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CiAgcHJvZ3Jlc3NQYW5lbC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBzdGlja2VyR3JpZC5pbm5lckhUTUwgPSAnJzsKfSk7CgovLyDilIDilIAgUHJvY2VzcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKcHJvY2Vzc0J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGFzeW5jICgpID0+IHsKICBpZiAoIWZpbGVEYXRhVVJMKSByZXR1cm47CgogIGNvbnN0IGNvbHMgPSBNYXRoLm1heCgxLCBwYXJzZUludChjb2xzSW5wdXQudmFsdWUpIHx8IDMpOwogIGNvbnN0IHJvd3MgPSBNYXRoLm1heCgxLCBwYXJzZUludChyb3dzSW5wdXQudmFsdWUpIHx8IDMpOwogIGNvbnN0IGRvUmVtb3ZlQmcgPSByZW1vdmVCZ0NiLmNoZWNrZWQ7CiAgY29uc3QgZG9BdXRvQ2VudGVyID0gYXV0b0NlbnRlckNiLmNoZWNrZWQ7CiAgY29uc3QgY3JvcEFtdCA9IHBhcnNlSW50KGNyb3BQeElucHV0LnZhbHVlKSB8fCAwOwogIGNvbnN0IHRocmVzaCA9IHBhcnNlSW50KHRocmVzaFNsaWRlci52YWx1ZSk7CiAgY29uc3Qgc2hpZnRBbXQgPSBwYXJzZUludChzaGlmdFNsaWRlci52YWx1ZSk7CgogIHByb2Nlc3NCdG4uZGlzYWJsZWQgPSB0cnVlOwogIGFsZXJ0Qm94LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpOwogIHByb2dyZXNzUGFuZWwuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7CiAgcmVzdWx0c1dyYXAuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7CgogIHRyeSB7CiAgICBzZXRQcm9ncmVzcyg1LCAnxJBhbmcgdOG6o2kg4bqjbmguLi4nLCAnJyk7CgogICAgLy8gRHJhdyBvcmlnaW5hbCB0byBjYW52YXMKICAgIGNvbnN0IGltZyA9IGF3YWl0IGxvYWRJbWcoZmlsZURhdGFVUkwpOwogICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgICBjYW52YXMud2lkdGggPSBpbWcubmF0dXJhbFdpZHRoOwogICAgY2FudmFzLmhlaWdodCA9IGltZy5uYXR1cmFsSGVpZ2h0OwogICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CiAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCk7CgogICAgc2V0UHJvZ3Jlc3MoMTUsICfEkGFuZyB44butIGzDvSBwaMOibiBt4bqjbmguLi4nLCAnJyk7CiAgICBhd2FpdCB0aWNrKCk7CgogICAgY29uc3QgY2VsbFcgPSBNYXRoLmZsb29yKGNhbnZhcy53aWR0aCAvIGNvbHMpOwogICAgY29uc3QgY2VsbEggPSBNYXRoLmZsb29yKGNhbnZhcy5oZWlnaHQgLyByb3dzKTsKICAgIGNvbnN0IHRvdGFsID0gY29scyAqIHJvd3M7CiAgICBjb25zdCByZXN1bHRzID0gW107CgogICAgZm9yIChsZXQgciA9IDA7IHIgPCByb3dzOyByKyspIHsKICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBjb2xzOyBjKyspIHsKICAgICAgICBsZXQgeCA9IGMgKiBjZWxsVzsKICAgICAgICBsZXQgeSA9IHIgKiBjZWxsSDsKICAgICAgICAvLyBMYXN0IGNvbC9yb3cgZ2V0cyByZW1haW5pbmcgcGl4ZWxzCiAgICAgICAgbGV0IHcgPSAoYyA9PT0gY29scyAtIDEpID8gY2FudmFzLndpZHRoIC0geCA6IGNlbGxXOwogICAgICAgIGxldCBoID0gKHIgPT09IHJvd3MgLSAxKSA\/IGNhbnZhcy5oZWlnaHQgLSB5IDogY2VsbEg7CiAgICAgICAgCiAgICAgICAgLy8gQXBwbHkgY3JvcCBtYXJnaW4KICAgICAgICBpZiAoY3JvcEFtdCA+IDAgJiYgdyA+IGNyb3BBbXQgKiAyICYmIGggPiBjcm9wQW10ICogMikgewogICAgICAgICAgeCArPSBjcm9wQW10OwogICAgICAgICAgeSArPSBjcm9wQW10OwogICAgICAgICAgdyAtPSBjcm9wQW10ICogMjsKICAgICAgICAgIGggLT0gY3JvcEFtdCAqIDI7CiAgICAgICAgfQoKICAgICAgICBjb25zdCBzdWIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKICAgICAgICBzdWIud2lkdGggPSB3OyBzdWIuaGVpZ2h0ID0gaDsKICAgICAgICBjb25zdCBzQ3R4ID0gc3ViLmdldENvbnRleHQoJzJkJyk7CiAgICAgICAgc0N0eC5kcmF3SW1hZ2UoY2FudmFzLCB4LCB5LCB3LCBoLCAwLCAwLCB3LCBoKTsKCiAgICAgICAgbGV0IGZpbmFsQ2FudmFzID0gc3ViOwoKICAgICAgICBpZiAoZG9SZW1vdmVCZykgewogICAgICAgICAgY29uc3QgaW1nRGF0YSA9IHNDdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHcsIGgpOwogICAgICAgICAgbGV0IGNsZWFuZWQgPSBmbG9vZEZpbGxCZyhpbWdEYXRhLCB0aHJlc2gpOwogICAgICAgICAgaWYgKHNoaWZ0QW10ICE9PSAwKSB7CiAgICAgICAgICAgIGNsZWFuZWQgPSBzaGlmdE1hc2soY2xlYW5lZCwgc2hpZnRBbXQpOwogICAgICAgICAgfQogICAgICAgICAgY2xlYW5lZCA9IHJlbW92ZUVkZ2VOb2lzZShjbGVhbmVkKTsKICAgICAgICAgIGlmIChzbW9vdGhFZGdlQ2IuY2hlY2tlZCkgewogICAgICAgICAgICBjbGVhbmVkID0gcHJvY2Vzc0FudGlBbGlhc2luZyhjbGVhbmVkLCAyKTsKICAgICAgICAgIH0KICAgICAgICAgIHNDdHgucHV0SW1hZ2VEYXRhKGNsZWFuZWQsIDAsIDApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGRvQXV0b0NlbnRlcikgewogICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHRyaW1DYW52YXMoZmluYWxDYW52YXMpOwogICAgICAgICAgaWYgKHRyaW1tZWQpIHsKICAgICAgICAgICAgY29uc3QgY2VudGVyZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKICAgICAgICAgICAgY2VudGVyZWQud2lkdGggPSA0NjU7CiAgICAgICAgICAgIGNlbnRlcmVkLmhlaWdodCA9IDQ2NTsKICAgICAgICAgICAgY29uc3QgY0N0eCA9IGNlbnRlcmVkLmdldENvbnRleHQoJzJkJyk7CiAgICAgICAgICAgIGNvbnN0IGR4ID0gTWF0aC5mbG9vcigoNDY1IC0gdHJpbW1lZC53aWR0aCkgLyAyKTsKICAgICAgICAgICAgY29uc3QgZHkgPSBNYXRoLmZsb29yKCg0NjUgLSB0cmltbWVkLmhlaWdodCkgLyAyKTsKICAgICAgICAgICAgY0N0eC5kcmF3SW1hZ2UodHJpbW1lZCwgZHgsIGR5KTsKICAgICAgICAgICAgZmluYWxDYW52YXMgPSBjZW50ZXJlZDsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJlc3VsdHMucHVzaChmaW5hbENhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpKTsKICAgICAgICBjb25zdCBpZHggPSByICogY29scyArIGMgKyAxOwogICAgICAgIHNldFByb2dyZXNzKDE1ICsgTWF0aC5yb3VuZCgoaWR4IC8gdG90YWwpICogODIpLAogICAgICAgICAgJ1N0aWNrZXIgJyArIGlkeCArICcvJyArIHRvdGFsLAogICAgICAgICAgJ0jDoG5nICcgKyAocisxKSArICcgwrcgQ+G7mXQgJyArIChjKzEpKTsKICAgICAgICBhd2FpdCB0aWNrKCk7CiAgICAgIH0KICAgIH0KCiAgICBzdGlja2VyVVJMcyA9IHJlc3VsdHM7CiAgICByZW5kZXJSZXN1bHRzKHJlc3VsdHMsIGNvbHMpOwogICAgcHJvZ3Jlc3NQYW5lbC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICAgIHByb2Nlc3NCdG4uZGlzYWJsZWQgPSBmYWxzZTsKCiAgfSBjYXRjaChlcnIpIHsKICAgIHNob3dBbGVydCgnZXJyb3InLCAn4p2MICcgKyBlcnIubWVzc2FnZSk7CiAgICBwcm9ncmVzc1BhbmVsLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpOwogICAgcHJvY2Vzc0J0bi5kaXNhYmxlZCA9IGZhbHNlOwogIH0KfSk7CgovLyDilIDilIAgRmxvb2QgZmlsbCBiYWNrZ3JvdW5kIHJlbW92YWwg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACmZ1bmN0aW9uIGZsb29kRmlsbEJnKGltYWdlRGF0YSwgdGhyZXNoKSB7CiAgY29uc3QgeyBkYXRhLCB3aWR0aCwgaGVpZ2h0IH0gPSBpbWFnZURhdGE7CiAgY29uc3QgcmVzdWx0ID0gbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoZGF0YSksIHdpZHRoLCBoZWlnaHQpOwogIGNvbnN0IHZpc2l0ZWQgPSBuZXcgVWludDhBcnJheSh3aWR0aCAqIGhlaWdodCk7CiAgLy8gVXNlIGEgdHlwZWQgYXJyYXkgYXMgYSBmYXN0IHF1ZXVlCiAgY29uc3QgcXVldWUgPSBuZXcgSW50MzJBcnJheSh3aWR0aCAqIGhlaWdodCk7CiAgbGV0IGhlYWQgPSAwLCB0YWlsID0gMDsKCiAgY29uc3QgaXNMaWdodCA9IHBvcyA9PiB7CiAgICBjb25zdCBiID0gcG9zICogNDsKICAgIHJldHVybiByZXN1bHQuZGF0YVtiXSA+IHRocmVzaCAmJiByZXN1bHQuZGF0YVtiKzFdID4gdGhyZXNoICYmIHJlc3VsdC5kYXRhW2IrMl0gPiB0aHJlc2g7CiAgfTsKICBjb25zdCBwdXNoID0gcG9zID0+IHsKICAgIGlmICghdmlzaXRlZFtwb3NdICYmIGlzTGlnaHQocG9zKSkgeyB2aXNpdGVkW3Bvc10gPSAxOyBxdWV1ZVt0YWlsKytdID0gcG9zOyB9CiAgfTsKCiAgZm9yIChsZXQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7IHB1c2goeCk7IHB1c2goKGhlaWdodC0xKSp3aWR0aCt4KTsgfQogIGZvciAobGV0IHkgPSAxOyB5IDwgaGVpZ2h0LTE7IHkrKykgeyBwdXNoKHkqd2lkdGgpOyBwdXNoKHkqd2lkdGgrd2lkdGgtMSk7IH0KCiAgd2hpbGUgKGhlYWQgPCB0YWlsKSB7CiAgICBjb25zdCBwID0gcXVldWVbaGVhZCsrXTsKICAgIHJlc3VsdC5kYXRhW3AqNCszXSA9IDA7CiAgICBjb25zdCB4ID0gcCAlIHdpZHRoLCB5ID0gKHAvd2lkdGgpfDA7CiAgICBpZiAoeCA+IDApICAgICAgICBwdXNoKHAtMSk7CiAgICBpZiAoeCA8IHdpZHRoLTEpICBwdXNoKHArMSk7CiAgICBpZiAoeSA+IDApICAgICAgICBwdXNoKHAtd2lkdGgpOwogICAgaWYgKHkgPCBoZWlnaHQtMSkgcHVzaChwK3dpZHRoKTsKICB9CiAgcmV0dXJuIHJlc3VsdDsKfQoKLy8g4pSA4pSAIFRyaW0gdHJhbnNwYXJlbnQgcGl4ZWxzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgApmdW5jdGlvbiB0cmltQ2FudmFzKGNhbnZhcykgewogIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwogIGNvbnN0IHdpZHRoID0gY2FudmFzLndpZHRoOwogIGNvbnN0IGhlaWdodCA9IGNhbnZhcy5oZWlnaHQ7CiAgY29uc3QgaW1nRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAgY29uc3QgZGF0YSA9IGltZ0RhdGEuZGF0YTsKCiAgbGV0IHRvcCA9IG51bGwsIGJvdHRvbSA9IG51bGwsIGxlZnQgPSBudWxsLCByaWdodCA9IG51bGw7CgogIGZvciAobGV0IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKICAgIGZvciAobGV0IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewogICAgICBpZiAoZGF0YVsoeSAqIHdpZHRoICsgeCkgKiA0ICsgM10gPiAwKSB7CiAgICAgICAgaWYgKHRvcCA9PT0gbnVsbCkgdG9wID0geTsKICAgICAgICBpZiAoYm90dG9tID09PSBudWxsIHx8IHkgPiBib3R0b20pIGJvdHRvbSA9IHk7CiAgICAgICAgaWYgKGxlZnQgPT09IG51bGwgfHwgeCA8IGxlZnQpIGxlZnQgPSB4OwogICAgICAgIGlmIChyaWdodCA9PT0gbnVsbCB8fCB4ID4gcmlnaHQpIHJpZ2h0ID0geDsKICAgICAgfQogICAgfQogIH0KCiAgaWYgKHRvcCA9PT0gbnVsbCkgcmV0dXJuIG51bGw7CgogIGNvbnN0IHRyaW1tZWRXID0gcmlnaHQgLSBsZWZ0ICsgMTsKICBjb25zdCB0cmltbWVkSCA9IGJvdHRvbSAtIHRvcCArIDE7CiAgY29uc3QgdHJpbW1lZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwogIHRyaW1tZWQud2lkdGggPSB0cmltbWVkVzsKICB0cmltbWVkLmhlaWdodCA9IHRyaW1tZWRIOwogIHRyaW1tZWQuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2UoY2FudmFzLCBsZWZ0LCB0b3AsIHRyaW1tZWRXLCB0cmltbWVkSCwgMCwgMCwgdHJpbW1lZFcsIHRyaW1tZWRIKTsKICByZXR1cm4gdHJpbW1lZDsKfQoKLy8g4pSA4pSAIFJlbW92ZSBzdHJheSBub2lzZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKZnVuY3Rpb24gcmVtb3ZlRWRnZU5vaXNlKGltYWdlRGF0YSkgewogIGNvbnN0IHsgZGF0YSwgd2lkdGgsIGhlaWdodCB9ID0gaW1hZ2VEYXRhOwogIGNvbnN0IHJlc3VsdCA9IG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGRhdGEpLCB3aWR0aCwgaGVpZ2h0KTsKICBjb25zdCB2aXNpdGVkID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQpOwogIGNvbnN0IHF1ZXVlID0gbmV3IEludDMyQXJyYXkod2lkdGggKiBoZWlnaHQpOwogIAogIGxldCBtYXhDb21wU2l6ZSA9IDA7CiAgbGV0IG1heENvbXBJZCA9IDA7CiAgbGV0IGN1cnJlbnRDb21wSWQgPSAxOwogIGNvbnN0IHBpeGVsQ29tcCA9IG5ldyBJbnQzMkFycmF5KHdpZHRoICogaGVpZ2h0KTsKICBjb25zdCBjb21wVG91Y2hlc0VkZ2UgPSB7fTsKICBjb25zdCBjb21wU2l6ZXMgPSB7fTsKCiAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aCAqIGhlaWdodDsgaSsrKSB7CiAgICBpZiAocmVzdWx0LmRhdGFbaSAqIDQgKyAzXSA+IDAgJiYgIXZpc2l0ZWRbaV0pIHsKICAgICAgbGV0IGhlYWQgPSAwLCB0YWlsID0gMDsKICAgICAgcXVldWVbdGFpbCsrXSA9IGk7CiAgICAgIHZpc2l0ZWRbaV0gPSAxOwogICAgICBsZXQgY29tcFNpemUgPSAwOwogICAgICBsZXQgdG91Y2hlc0VkZ2UgPSBmYWxzZTsKCiAgICAgIHdoaWxlIChoZWFkIDwgdGFpbCkgewogICAgICAgIGNvbnN0IHAgPSBxdWV1ZVtoZWFkKytdOwogICAgICAgIHBpeGVsQ29tcFtwXSA9IGN1cnJlbnRDb21wSWQ7CiAgICAgICAgY29tcFNpemUrKzsKICAgICAgICAKICAgICAgICBjb25zdCB4ID0gcCAlIHdpZHRoLCB5ID0gKHAgLyB3aWR0aCkgfCAwOwogICAgICAgIGlmICh4ID09PSAwIHx8IHggPT09IHdpZHRoIC0gMSB8fCB5ID09PSAwIHx8IHkgPT09IGhlaWdodCAtIDEpIHsKICAgICAgICAgIHRvdWNoZXNFZGdlID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZm9yIChsZXQgZHkgPSAtMTsgZHkgPD0gMTsgZHkrKykgewogICAgICAgICAgZm9yIChsZXQgZHggPSAtMTsgZHggPD0gMTsgZHgrKykgewogICAgICAgICAgICBpZiAoZHggPT09IDAgJiYgZHkgPT09IDApIGNvbnRpbnVlOwogICAgICAgICAgICBjb25zdCBueCA9IHggKyBkeDsKICAgICAgICAgICAgY29uc3QgbnkgPSB5ICsgZHk7CiAgICAgICAgICAgIGlmIChueCA+PSAwICYmIG54IDwgd2lkdGggJiYgbnkgPj0gMCAmJiBueSA8IGhlaWdodCkgewogICAgICAgICAgICAgIGNvbnN0IG5wID0gbnkgKiB3aWR0aCArIG54OwogICAgICAgICAgICAgIGlmIChyZXN1bHQuZGF0YVtucCAqIDQgKyAzXSA+IDAgJiYgIXZpc2l0ZWRbbnBdKSB7CiAgICAgICAgICAgICAgICB2aXNpdGVkW25wXSA9IDE7CiAgICAgICAgICAgICAgICBxdWV1ZVt0YWlsKytdID0gbnA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICBjb21wVG91Y2hlc0VkZ2VbY3VycmVudENvbXBJZF0gPSB0b3VjaGVzRWRnZTsKICAgICAgY29tcFNpemVzW2N1cnJlbnRDb21wSWRdID0gY29tcFNpemU7CgogICAgICBpZiAoY29tcFNpemUgPiBtYXhDb21wU2l6ZSkgewogICAgICAgIG1heENvbXBTaXplID0gY29tcFNpemU7CiAgICAgICAgbWF4Q29tcElkID0gY3VycmVudENvbXBJZDsKICAgICAgfQogICAgICBjdXJyZW50Q29tcElkKys7CiAgICB9CiAgfQoKICBmb3IgKGxldCBpID0gMDsgaSA8IHdpZHRoICogaGVpZ2h0OyBpKyspIHsKICAgIGNvbnN0IGNJZCA9IHBpeGVsQ29tcFtpXTsKICAgIGlmIChjSWQgIT09IDAgJiYgY0lkICE9PSBtYXhDb21wSWQpIHsKICAgICAgLy8gRGVsZXRlIGlmIGl0IHRvdWNoZXMgZWRnZSwgb3IgaWYgaXQncyBzbWFsbGVyIHRoYW4gMTAgcGl4ZWxzICh0aW55IG5vaXNlKQogICAgICBpZiAoY29tcFRvdWNoZXNFZGdlW2NJZF0gfHwgY29tcFNpemVzW2NJZF0gPCAxMCkgewogICAgICAgIHJlc3VsdC5kYXRhW2kgKiA0ICsgM10gPSAwOwogICAgICAgIHJlc3VsdC5kYXRhW2kgKiA0ICsgMF0gPSAwOwogICAgICAgIHJlc3VsdC5kYXRhW2kgKiA0ICsgMV0gPSAwOwogICAgICAgIHJlc3VsdC5kYXRhW2kgKiA0ICsgMl0gPSAwOwogICAgICB9CiAgICB9CiAgfQoKICByZXR1cm4gcmVzdWx0Owp9CgovLyDilIDilIAgU2hpZnQgTWFzayAoRXJvZGUgLyBEaWxhdGUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgApmdW5jdGlvbiBzaGlmdE1hc2soaW1hZ2VEYXRhLCBzaGlmdEFtb3VudCkgewogIGlmIChzaGlmdEFtb3VudCA9PT0gMCkgcmV0dXJuIGltYWdlRGF0YTsKICBjb25zdCB7IGRhdGEsIHdpZHRoLCBoZWlnaHQgfSA9IGltYWdlRGF0YTsKICBjb25zdCBhbHBoYSA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0KTsKICBmb3IgKGxldCBpID0gMDsgaSA8IHdpZHRoICogaGVpZ2h0OyBpKyspIHsKICAgIGFscGhhW2ldID0gZGF0YVtpICogNCArIDNdID4gMCA\/IDEgOiAwOwogIH0KICAKICBjb25zdCB0ZW1wID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQpOwogIGNvbnN0IGl0ZXJzID0gTWF0aC5hYnMoc2hpZnRBbW91bnQpOwogIGNvbnN0IGRpbGF0ZSA9IHNoaWZ0QW1vdW50ID4gMDsKICAKICBmb3IgKGxldCByID0gMDsgciA8IGl0ZXJzOyByKyspIHsKICAgIHRlbXAuc2V0KGFscGhhKTsKICAgIGZvciAobGV0IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CiAgICAgICAgY29uc3QgaSA9IHkgKiB3aWR0aCArIHg7CiAgICAgICAgaWYgKGRpbGF0ZSkgewogICAgICAgICAgaWYgKGFscGhhW2ldID09PSAwKSB7CiAgICAgICAgICAgIGxldCBoYXNGZyA9IGZhbHNlOwogICAgICAgICAgICBmb3IobGV0IGR5PS0xOyBkeTw9MSAmJiAhaGFzRmc7IGR5KyspIHsKICAgICAgICAgICAgICBmb3IobGV0IGR4PS0xOyBkeDw9MSAmJiAhaGFzRmc7IGR4KyspIHsKICAgICAgICAgICAgICAgICBpZihkeD09PTAgJiYgZHk9PT0wKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICBjb25zdCBueD14K2R4LCBueT15K2R5OwogICAgICAgICAgICAgICAgIGlmKG54Pj0wICYmIG54PHdpZHRoICYmIG55Pj0wICYmIG55PGhlaWdodCAmJiBhbHBoYVtueSp3aWR0aCtueF0pIGhhc0ZnPXRydWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChoYXNGZykgdGVtcFtpXSA9IDE7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChhbHBoYVtpXSA9PT0gMSkgewogICAgICAgICAgICBsZXQgaGFzQmcgPSBmYWxzZTsKICAgICAgICAgICAgZm9yKGxldCBkeT0tMTsgZHk8PTEgJiYgIWhhc0JnOyBkeSsrKSB7CiAgICAgICAgICAgICAgZm9yKGxldCBkeD0tMTsgZHg8PTEgJiYgIWhhc0JnOyBkeCsrKSB7CiAgICAgICAgICAgICAgICAgaWYoZHg9PT0wICYmIGR5PT09MCkgY29udGludWU7CiAgICAgICAgICAgICAgICAgY29uc3Qgbng9eCtkeCwgbnk9eStkeTsKICAgICAgICAgICAgICAgICBpZihueDwwIHx8IG54Pj13aWR0aCB8fCBueTwwIHx8IG55Pj1oZWlnaHQpIHsKICAgICAgICAgICAgICAgICAgIGhhc0JnID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoYWxwaGFbbnkqd2lkdGgrbnhdPT09MCkgewogICAgICAgICAgICAgICAgICAgaGFzQmcgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGhhc0JnKSB0ZW1wW2ldID0gMDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGFscGhhLnNldCh0ZW1wKTsKICB9CiAgCiAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aCAqIGhlaWdodDsgaSsrKSB7CiAgICBpZiAoYWxwaGFbaV0gPT09IDApIHsKICAgICAgZGF0YVtpICogNCArIDNdID0gMDsKICAgIH0gZWxzZSBpZiAoZGF0YVtpICogNCArIDNdID09PSAwKSB7CiAgICAgIGRhdGFbaSAqIDQgKyAzXSA9IDI1NTsKICAgIH0KICB9CiAgcmV0dXJuIGltYWdlRGF0YTsKfQoKLy8g4pSA4pSAIEFudGktYWxpYXNpbmcgKFNtb290aCBlZGdlcykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACmZ1bmN0aW9uIHByb2Nlc3NBbnRpQWxpYXNpbmcoaW1hZ2VEYXRhLCByYWRpdXMgPSAxKSB7CiAgY29uc3QgeyBkYXRhLCB3aWR0aCwgaGVpZ2h0IH0gPSBpbWFnZURhdGE7CiAgCiAgLy8gMS4gQmxlZWQgY29sb3JzCiAgbGV0IGN1cnJlbnREYXRhID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGRhdGEpOwogIGZvciAobGV0IHIgPSAwOyByIDwgcmFkaXVzOyByKyspIHsKICAgIGNvbnN0IG5leHREYXRhID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGN1cnJlbnREYXRhKTsKICAgIGZvciAobGV0IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CiAgICAgICAgY29uc3QgaSA9ICh5ICogd2lkdGggKyB4KSAqIDQ7CiAgICAgICAgaWYgKGN1cnJlbnREYXRhW2kgKyAzXSA9PT0gMCkgewogICAgICAgICAgbGV0IHJTdW0gPSAwLCBnU3VtID0gMCwgYlN1bSA9IDAsIGNvdW50ID0gMDsKICAgICAgICAgIGZvciAobGV0IGR5ID0gLTE7IGR5IDw9IDE7IGR5KyspIHsKICAgICAgICAgICAgZm9yIChsZXQgZHggPSAtMTsgZHggPD0gMTsgZHgrKykgewogICAgICAgICAgICAgIGlmIChkeCA9PT0gMCAmJiBkeSA9PT0gMCkgY29udGludWU7CiAgICAgICAgICAgICAgY29uc3QgbnkgPSB5ICsgZHksIG54ID0geCArIGR4OwogICAgICAgICAgICAgIGlmIChueCA+PSAwICYmIG54IDwgd2lkdGggJiYgbnkgPj0gMCAmJiBueSA8IGhlaWdodCkgewogICAgICAgICAgICAgICAgY29uc3QgbmkgPSAobnkgKiB3aWR0aCArIG54KSAqIDQ7CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGFbbmkgKyAzXSA+IDApIHsKICAgICAgICAgICAgICAgICAgclN1bSArPSBjdXJyZW50RGF0YVtuaV07CiAgICAgICAgICAgICAgICAgIGdTdW0gKz0gY3VycmVudERhdGFbbmkgKyAxXTsKICAgICAgICAgICAgICAgICAgYlN1bSArPSBjdXJyZW50RGF0YVtuaSArIDJdOwogICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGNvdW50ID4gMCkgewogICAgICAgICAgICBuZXh0RGF0YVtpXSA9IHJTdW0gLyBjb3VudDsKICAgICAgICAgICAgbmV4dERhdGFbaSArIDFdID0gZ1N1bSAvIGNvdW50OwogICAgICAgICAgICBuZXh0RGF0YVtpICsgMl0gPSBiU3VtIC8gY291bnQ7CiAgICAgICAgICAgIG5leHREYXRhW2kgKyAzXSA9IDE7IC8vIG1hcmtlcgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogICAgY3VycmVudERhdGEgPSBuZXh0RGF0YTsKICB9CiAgCiAgLy8gYXBwbHkgYmxlZCBjb2xvcnMgYmFjaywgcmVzZXQgYWxwaGEgbWFya2VyCiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSA0KSB7CiAgICBpZiAoY3VycmVudERhdGFbaSArIDNdID09PSAxKSB7CiAgICAgIGRhdGFbaV0gPSBjdXJyZW50RGF0YVtpXTsKICAgICAgZGF0YVtpICsgMV0gPSBjdXJyZW50RGF0YVtpICsgMV07CiAgICAgIGRhdGFbaSArIDJdID0gY3VycmVudERhdGFbaSArIDJdOwogICAgICAvLyBhbHBoYSByZW1haW5zIDAgaW4gJ2RhdGEnCiAgICB9CiAgfQoKICAvLyAyLiBCbHVyIEFscGhhCiAgY29uc3QgbmV3QWxwaGEgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkod2lkdGggKiBoZWlnaHQpOwogIGZvciAobGV0IGkgPSAwOyBpIDwgd2lkdGggKiBoZWlnaHQ7IGkrKykgewogICAgbmV3QWxwaGFbaV0gPSBkYXRhW2kgKiA0ICsgM107CiAgfQogIAogIGZvciAobGV0IHIgPSAwOyByIDwgcmFkaXVzOyByKyspIHsKICAgIGNvbnN0IHRlbXBBbHBoYSA9IG5ldyBVaW50OENsYW1wZWRBcnJheShuZXdBbHBoYSk7CiAgICBmb3IgKGxldCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CiAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewogICAgICAgIGxldCBzdW0gPSAwLCBjb3VudCA9IDA7CiAgICAgICAgZm9yIChsZXQgZHkgPSAtMTsgZHkgPD0gMTsgZHkrKykgewogICAgICAgICAgZm9yIChsZXQgZHggPSAtMTsgZHggPD0gMTsgZHgrKykgewogICAgICAgICAgICBjb25zdCBueSA9IHkgKyBkeSwgbnggPSB4ICsgZHg7CiAgICAgICAgICAgIGlmIChueCA+PSAwICYmIG54IDwgd2lkdGggJiYgbnkgPj0gMCAmJiBueSA8IGhlaWdodCkgewogICAgICAgICAgICAgIHN1bSArPSB0ZW1wQWxwaGFbbnkgKiB3aWR0aCArIG54XTsKICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIG5ld0FscGhhW3kgKiB3aWR0aCArIHhdID0gc3VtIC8gY291bnQ7CiAgICAgIH0KICAgIH0KICB9CiAgCiAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aCAqIGhlaWdodDsgaSsrKSB7CiAgICBkYXRhW2kgKiA0ICsgM10gPSBuZXdBbHBoYVtpXTsKICB9CiAgCiAgcmV0dXJuIGltYWdlRGF0YTsKfQoKLy8g4pSA4pSAIFJlbmRlciDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKZnVuY3Rpb24gcmVuZGVyUmVzdWx0cyh1cmxzLCBjb2xzKSB7CiAgc3RpY2tlckdyaWQuaW5uZXJIVE1MID0gJyc7CiAgLy8gUmVzcG9uc2l2ZSBncmlkIGFkanVzdGluZyBiYXNlZCBvbiBjb2xzIHJlcXVlc3RlZCBidXQgYm91bmRlZAogIGNvbnN0IGRpc3BsYXlDb2xzID0gTWF0aC5taW4oY29scywgd2luZG93LmlubmVyV2lkdGggPCA2NDAgPyAyIDogd2luZG93LmlubmVyV2lkdGggPCA5MDAgPyAzIDogNCk7CiAgc3RpY2tlckdyaWQuc3R5bGUuZ3JpZFRlbXBsYXRlQ29sdW1ucyA9ICdyZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMTgwcHgsIDFmcikpJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY291bnRDaGlwJykudGV4dENvbnRlbnQgPSB1cmxzLmxlbmd0aDsKCiAgdXJscy5mb3JFYWNoKCh1cmwsIGkpID0+IHsKICAgIGNvbnN0IGNhcmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGNhcmQuY2xhc3NOYW1lID0gJ2Rwcy1pLXN0aWNrZXItY2FyZCc7CiAgICBjYXJkLnN0eWxlLmFuaW1hdGlvbkRlbGF5ID0gKGkgKiA1MCkgKyAnbXMnOwogICAgY2FyZC5pbm5lckhUTUwgPQogICAgICAnPGRpdiBjbGFzcz0iZHBzLWktcy1wcmV2aWV3Ij48aW1nIHNyYz0iJyArIHVybCArICciIGxvYWRpbmc9ImxhenkiPjwvZGl2PicgKwogICAgICAnPGRpdiBjbGFzcz0iZHBzLWktcy1mb290ZXIiPicgKwogICAgICAgICc8c3BhbiBjbGFzcz0iZHBzLWktcy1sYWJlbCI+U3RpY2tlciAnICsgU3RyaW5nKGkrMSkucGFkU3RhcnQoMiwnMCcpICsgJzwvc3Bhbj4nICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iZHBzLWktYnRuIGRwcy1pLWJ0bi1zbSBkcHMtaS1idG4tb3V0bGluZS1wcmltYXJ5IiBkYXRhLWk9IicgKyBpICsgJyI+4oaTIFThuqNpIFBORzwvYnV0dG9uPicgKwogICAgICAnPC9kaXY+JzsKICAgIHN0aWNrZXJHcmlkLmFwcGVuZENoaWxkKGNhcmQpOwogIH0pOwoKICByZXN1bHRzV3JhcC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTsKICAKICAvLyBzbW9vdGggc2Nyb2xsIHRvIHJlc3VsdHMKICBzZXRUaW1lb3V0KCgpID0+IHsKICAgIHJlc3VsdHNXcmFwLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTsKICB9LCAxMDApOwp9CgovLyDilIDilIAgRG93bmxvYWQgWklQIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgApkb3dubG9hZEFsbEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGFzeW5jICgpID0+IHsKICBpZiAoIXN0aWNrZXJVUkxzLmxlbmd0aCkgcmV0dXJuOwogIGRvd25sb2FkQWxsQnRuLmRpc2FibGVkID0gdHJ1ZTsKICBkb3dubG9hZEFsbEJ0bi5pbm5lckhUTUwgPSAn4o+zIMSQYW5nIMSRw7NuZyBnw7NpIFpJUC4uLic7CiAgY29uc3QgemlwID0gbmV3IEpTWmlwKCk7CiAgc3RpY2tlclVSTHMuZm9yRWFjaCgodXJsLCBpKSA9PiB7CiAgICB6aXAuZmlsZShvcmlnRmlsZU5hbWUgKyAnXycgKyBTdHJpbmcoaSsxKS5wYWRTdGFydCgyLCcwJykgKyAnLnBuZycsIHVybC5zcGxpdCgnLCcpWzFdLCB7YmFzZTY0OnRydWV9KTsKICB9KTsKICBjb25zdCBibG9iID0gYXdhaXQgemlwLmdlbmVyYXRlQXN5bmMoe3R5cGU6J2Jsb2InLCBjb21wcmVzc2lvbjonREVGTEFURSd9KTsKICBkbEZpbGUoVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgb3JpZ0ZpbGVOYW1lICsgJ19zdGlja2Vycy56aXAnKTsKICBkb3dubG9hZEFsbEJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogIGRvd25sb2FkQWxsQnRuLmlubmVySFRNTCA9ICfwn5OmIFThuqNpIHbhu4EgdOG6pXQgY+G6oyAoWklQKSc7Cn0pOwoKc3RpY2tlckdyaWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHsKICBjb25zdCBidG4gPSBlLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1pXScpOwogIGlmICghYnRuKSByZXR1cm47CiAgZGxGaWxlKHN0aWNrZXJVUkxzWytidG4uZGF0YXNldC5pXSwgb3JpZ0ZpbGVOYW1lICsgJ18nICsgU3RyaW5nKCtidG4uZGF0YXNldC5pKzEpLnBhZFN0YXJ0KDIsJzAnKSArICcucG5nJyk7Cn0pOwoKLy8g4pSA4pSAIFV0aWxzIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgApmdW5jdGlvbiBzZXRQcm9ncmVzcyhwY3QsIHRpdGxlLCBkZXRhaWwpIHsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZ3Jlc3NGaWxsJykuc3R5bGUud2lkdGggPSBwY3QgKyAnJSc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2dyZXNzVGl0bGUnKS50ZXh0Q29udGVudCA9IHRpdGxlOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9ncmVzc0RldGFpbCcpLnRleHRDb250ZW50ID0gZGV0YWlsOwp9CmZ1bmN0aW9uIHNob3dBbGVydCh0eXBlLCBtc2cpIHsKICBhbGVydEJveC5jbGFzc05hbWUgPSAnZHBzLWktYWxlcnQgZHBzLWktYWxlcnQtJyArIHR5cGU7CiAgYWxlcnRCb3guaW5uZXJIVE1MID0gbXNnOwogIGFsZXJ0Qm94LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpOwp9CmZ1bmN0aW9uIGxvYWRJbWcoc3JjKSB7CiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4gewogICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7CiAgICBpbWcub25sb2FkID0gKCkgPT4gcmVzKGltZyk7CiAgICBpbWcub25lcnJvciA9ICgpID0+IHJlaihuZXcgRXJyb3IoJ0tow7RuZyBsb2FkIMSRxrDhu6NjIOG6o25oJykpOwogICAgaW1nLnNyYyA9IHNyYzsKICB9KTsKfQpmdW5jdGlvbiBkbEZpbGUodXJsLCBuYW1lKSB7CiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsgYS5ocmVmID0gdXJsOyBhLmRvd25sb2FkID0gbmFtZTsgYS5jbGljaygpOwp9CmZ1bmN0aW9uIHRpY2soKSB7IHJldHVybiBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpOyB9Cg==\";\n  let code = decodeURIComponent(escape(atob(enc)));\n  \n  const classesToPrefix = [\"wrap\",\"badge\",\"dot\",\"sub\",\"panel\",\"upload-zone\",\"ico\",\"hidden\",\"config-panel\",\"preview-row\",\"preview-info\",\"grid-section\",\"section-label\",\"grid-presets\",\"preset-btn\",\"active\",\"grid-custom\",\"times\",\"grid-info\",\"toggle-row\",\"toggle-label\",\"toggle\",\"toggle-track\",\"thresh-row\",\"thresh-val\",\"action-row\",\"btn\",\"btn-primary\",\"btn-secondary\",\"btn-success\",\"btn-sm\",\"btn-outline-primary\",\"guide-box\",\"prompt-text\",\"progress-panel\",\"spinner\",\"progress-title\",\"track\",\"fill\",\"progress-detail\",\"alert\",\"alert-error\",\"alert-success\",\"results-header\",\"results-title\",\"chip\",\"sticker-grid\",\"sticker-card\",\"s-preview\",\"s-footer\",\"s-label\"];\n  classesToPrefix.forEach(cls => {\n    code = code.replace(new RegExp(`classList\\\\.add\\\\(['\\\\\"]${cls}['\\\\\"]\\\\)`, 'g'), `classList.add('dps-i-${cls}')`);\n    code = code.replace(new RegExp(`classList\\\\.remove\\\\(['\\\\\"]${cls}['\\\\\"]\\\\)`, 'g'), `classList.remove('dps-i-${cls}')`);\n    code = code.replace(new RegExp(`classList\\\\.toggle\\\\(['\\\\\"]${cls}['\\\\\"]`, 'g'), `classList.toggle('dps-i-${cls}'`);\n    \n    code = code.replace(new RegExp(`querySelectorAll\\\\(['\\\\\"]\\\\.${cls}['\\\\\"]\\\\)`, 'g'), `querySelectorAll('.dps-i-${cls}')`);\n    code = code.replace(new RegExp(`querySelector\\\\(['\\\\\"]\\\\.${cls}['\\\\\"]\\\\)`, 'g'), `querySelector('.dps-i-${cls}')`);\n  });\n  \n  new Function(code)();\n\n  <\/script>\n<\/div>\n\n\n\n\n<h1 class=\"wp-block-heading\" id=\"user-content--h\u01b0\u1edbng-d\u1eabn-s\u1eed-d\u1ee5ng-c\u00f4ng-c\u1ee5-c\u1eaft-sticker--x\u00f3a-n\u1ec1n-t\u1ef1-\u0111\u1ed9ng-sticker-splitter\">\ud83e\ude84 H\u01b0\u1edbng D\u1eabn S\u1eed D\u1ee5ng C\u00f4ng C\u1ee5 C\u1eaft Sticker &amp; X\u00f3a N\u1ec1n T\u1ef1 \u0110\u1ed9ng (Sticker Splitter)<\/h1>\n\n\n\n<p>B\u1ea1n v\u1eeba t\u1ea1o ra m\u1ed9t b\u1ed9 sticker tuy\u1ec7t \u0111\u1eb9p tr\u00ean Midjourney, DALL-E hay Canva nh\u01b0ng ch\u00fang l\u1ea1i d\u00ednh li\u1ec1n v\u1edbi nhau tr\u00ean c\u00f9ng m\u1ed9t b\u1ee9c \u1ea3nh l\u01b0\u1edbi (Grid 2&#215;2, 3&#215;3&#8230;)? B\u1ea1n mu\u1ed1n t\u00e1ch t\u1eebng h\u00ecnh ra, x\u00f3a ph\u00f4ng n\u1ec1n tr\u1eafng v\u00e0 c\u0103n gi\u1eefa ch\u00fang m\u1ed9t c\u00e1ch t\u1ef1 \u0111\u1ed9ng ch\u1ec9 trong v\u00e0i gi\u00e2y?<\/p>\n\n\n\n<p>\u0110\u1eebng lo, c\u00f4ng c\u1ee5&nbsp;<strong>Sticker Splitter<\/strong>&nbsp;c\u1ee7a ch\u00fang t\u00f4i s\u1ebd gi\u00fap b\u1ea1n gi\u1ea3i quy\u1ebft ho\u00e0n to\u00e0n v\u1ea5n \u0111\u1ec1 n\u00e0y ch\u1ec9 v\u1edbi v\u00e0i c\u00fa click chu\u1ed9t!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"user-content--c\u00e1c-t\u00ednh-n\u0103ng-n\u1ed5i-b\u1eadt\">\ud83c\udf1f C\u00e1c T\u00ednh N\u0103ng N\u1ed5i B\u1eadt<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>C\u1eaft l\u01b0\u1edbi t\u1ef1 \u0111\u1ed9ng:<\/strong>&nbsp;H\u1ed7 tr\u1ee3 c\u1eaft \u1ea3nh theo c\u00e1c \u0111\u1ecbnh d\u1ea1ng l\u01b0\u1edbi ph\u1ed5 bi\u1ebfn (2&#215;2, 3&#215;3, 4&#215;4,&#8230;) nhanh ch\u00f3ng.<\/li>\n\n\n\n<li><strong>X\u00f3a n\u1ec1n tr\u1eafng th\u00f4ng minh (AI-like):<\/strong>&nbsp;T\u1ef1 \u0111\u1ed9ng ph\u00e1t hi\u1ec7n v\u00e0 l\u00e0m trong su\u1ed1t ph\u1ea7n n\u1ec1n tr\u1eafng bao quanh sticker.<\/li>\n\n\n\n<li><strong>X\u00e9n vi\u1ec1n (Crop l\u1eb9m):<\/strong>&nbsp;Lo\u1ea1i b\u1ecf ho\u00e0n to\u00e0n c\u00e1c \u0111\u01b0\u1eddng vi\u1ec1n \u0111en\/tr\u1eafng ng\u0103n c\u00e1ch gi\u1eefa c\u00e1c \u00f4.<\/li>\n\n\n\n<li><strong>T\u1ef1 \u0111\u1ed9ng c\u0103n gi\u1eefa:<\/strong>&nbsp;T\u1ef1 \u0111\u1ed9ng c\u1eaft b\u1ecf c\u00e1c kho\u1ea3ng tr\u1ed1ng th\u1eeba v\u00e0 \u0111\u1eb7t sticker v\u00e0o ch\u00ednh gi\u1eefa khung h\u00ecnh vu\u00f4ng chu\u1ea9n 465x465px (chu\u1ea9n Zalo\/Telegram).<\/li>\n\n\n\n<li><strong>T\u1ea3i v\u1ec1 h\u00e0ng lo\u1ea1t:<\/strong>&nbsp;\u0110\u00f3ng g\u00f3i to\u00e0n b\u1ed9 sticker th\u00e0nh m\u1ed9t file&nbsp;<code>.ZIP<\/code>&nbsp;ho\u1eb7c t\u1ea3i l\u1ebb t\u1eebng h\u00ecnh \u0111\u1ecbnh d\u1ea1ng PNG trong su\u1ed1t.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"user-content--h\u01b0\u1edbng-d\u1eabn-s\u1eed-d\u1ee5ng-t\u1eebng-b\u01b0\u1edbc\">\ud83d\udcdd H\u01b0\u1edbng D\u1eabn S\u1eed D\u1ee5ng T\u1eebng B\u01b0\u1edbc<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"user-content-b\u01b0\u1edbc-1-t\u1ea1o-\u1ea3nh-sticker-n\u1ebfu-b\u1ea1n-ch\u01b0a-c\u00f3\">B\u01b0\u1edbc 1: T\u1ea1o \u1ea3nh Sticker (N\u1ebfu b\u1ea1n ch\u01b0a c\u00f3)<\/h3>\n\n\n\n<p>N\u1ebfu b\u1ea1n s\u1eed d\u1ee5ng Midjourney ho\u1eb7c DALL-E, h\u00e3y th\u1eed copy \u0111o\u1ea1n Prompt m\u1eabu \u0111\u01b0\u1ee3c g\u1ee3i \u00fd s\u1eb5n tr\u00ean c\u00f4ng c\u1ee5 c\u1ee7a ch\u00fang t\u00f4i (b\u1eb1ng c\u00e1ch nh\u1ea5n n\u00fat&nbsp;<code>\ud83d\udccb \u590d\u5236\u63d0\u793a\u8bcd<\/code>). AI s\u1ebd t\u1ea1o ra cho b\u1ea1n m\u1ed9t b\u1ee9c \u1ea3nh ch\u1ee9a nhi\u1ec1u sticker n\u1eb1m tr\u00ean m\u1ed9t l\u01b0\u1edbi n\u1ec1n tr\u1eafng.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"user-content-b\u01b0\u1edbc-2-t\u1ea3i-\u1ea3nh-l\u00ean-c\u00f4ng-c\u1ee5\">B\u01b0\u1edbc 2: T\u1ea3i \u1ea3nh l\u00ean c\u00f4ng c\u1ee5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Truy c\u1eadp v\u00e0o c\u00f4ng c\u1ee5&nbsp;<strong>Sticker Splitter<\/strong>.<\/li>\n\n\n\n<li>Nh\u1ea5n v\u00e0o khu v\u1ef1c&nbsp;<strong>&#8220;Click ho\u1eb7c K\u00e9o th\u1ea3 \u1ea3nh v\u00e0o \u0111\u00e2y&#8221;<\/strong>&nbsp;ho\u1eb7c d\u00e1n (Ctrl+V) b\u1ee9c \u1ea3nh sticker d\u1ea1ng l\u01b0\u1edbi c\u1ee7a b\u1ea1n v\u00e0o.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"user-content-b\u01b0\u1edbc-3-t\u00f9y-ch\u1ec9nh-th\u00f4ng-s\u1ed1-c\u1eaft\">B\u01b0\u1edbc 3: T\u00f9y ch\u1ec9nh th\u00f4ng s\u1ed1 c\u1eaft<\/h3>\n\n\n\n<p>Ngay sau khi t\u1ea3i \u1ea3nh l\u00ean, b\u1ea3ng \u0111i\u1ec1u khi\u1ec3n s\u1ebd hi\u1ec7n ra. T\u1ea1i \u0111\u00e2y, b\u1ea1n h\u00e3y thi\u1ebft l\u1eadp c\u00e1c th\u00f4ng s\u1ed1 sau:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud83d\udcd0 K\u00edch th\u01b0\u1edbc Grid (L\u01b0\u1edbi):<\/strong>&nbsp;Ch\u1ecdn s\u1ed1 c\u1ed9t v\u00e0 s\u1ed1 h\u00e0ng t\u01b0\u01a1ng \u1ee9ng v\u1edbi \u1ea3nh c\u1ee7a b\u1ea1n. V\u00ed d\u1ee5: \u1ea2nh c\u00f3 9 sticker (3 h\u00e0ng, 3 c\u1ed9t) th\u00ec ch\u1ecdn n\u00fat&nbsp;<strong>3&#215;3<\/strong>.<\/li>\n\n\n\n<li><strong>\ud83e\ude84 X\u00f3a n\u1ec1n tr\u1eafng:<\/strong>&nbsp;B\u1eadt c\u00f4ng t\u1eafc n\u00e0y l\u00ean n\u1ebfu \u1ea3nh c\u1ee7a b\u1ea1n c\u00f3 n\u1ec1n tr\u1eafng. C\u00f4ng c\u1ee5 s\u1ebd t\u1ef1 \u0111\u1ed9ng bi\u1ebfn n\u1ec1n tr\u1eafng th\u00e0nh n\u1ec1n trong su\u1ed1t (trong v\u1eaft). B\u1ea1n c\u00f3 th\u1ec3 \u0111i\u1ec1u ch\u1ec9nh thanh tr\u01b0\u1ee3t&nbsp;<strong>&#8220;\u0110\u1ed9 nh\u1ea1y m\u00e0u tr\u1eafng&#8221;<\/strong>&nbsp;(Th\u01b0\u1eddng \u0111\u1ec3 m\u1eb7c \u0111\u1ecbnh 240 l\u00e0 \u0111\u1eb9p nh\u1ea5t).<\/li>\n\n\n\n<li><strong>\u2702\ufe0f X\u00e9n vi\u1ec1n (Crop):<\/strong>&nbsp;N\u1ebfu \u1ea3nh c\u1ee7a b\u1ea1n c\u00f3 c\u00e1c \u0111\u01b0\u1eddng k\u1ebb khung, h\u00e3y t\u0103ng th\u00f4ng s\u1ed1 n\u00e0y (v\u00ed d\u1ee5:&nbsp;<code>3px<\/code>&nbsp;\u5e7f\u544a\u7ba1\u7406\u5668&nbsp;<code>5px<\/code>) \u0111\u1ec3 c\u1eaft l\u1eb9m v\u00e0o trong, lo\u1ea1i b\u1ecf vi\u1ec1n th\u1eeba.<\/li>\n\n\n\n<li><strong>\ud83c\udfaf C\u0103n gi\u1eefa t\u1ef1 \u0111\u1ed9ng:<\/strong>&nbsp;Khuy\u00ean d\u00f9ng! T\u00ednh n\u0103ng n\u00e0y s\u1ebd bo s\u00e1t v\u00e0o vi\u1ec1n c\u1ee7a nh\u00e2n v\u1eadt v\u00e0 \u0111\u1eb7t ch\u00fang v\u00e0o ch\u00ednh gi\u1eefa khung vu\u00f4ng ho\u00e0n h\u1ea3o.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"user-content-b\u01b0\u1edbc-4-x\u1eed-l\u00fd-v\u00e0-t\u1ea3i-v\u1ec1\">B\u01b0\u1edbc 4: X\u1eed l\u00fd v\u00e0 T\u1ea3i v\u1ec1<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Sau khi ch\u1ec9nh xong th\u00f4ng s\u1ed1, h\u00e3y b\u1ea5m n\u00fat&nbsp;<strong>&#8220;\ud83d\ude80 B\u1eaft \u0110\u1ea7u C\u1eaft Stickers&#8221;<\/strong>.<\/li>\n\n\n\n<li>\u0110\u1ee3i kho\u1ea3ng 1-2 gi\u00e2y \u0111\u1ec3 h\u1ec7 th\u1ed1ng x\u1eed l\u00fd.<\/li>\n\n\n\n<li>\u6eda\u52a8\u5230\u90e8\u5206&nbsp;<strong>\u7ed3\u679c<\/strong>, b\u1ea1n s\u1ebd th\u1ea5y c\u00e1c sticker \u0111\u00e3 \u0111\u01b0\u1ee3c t\u00e1ch r\u1eddi v\u00e0 l\u00e0m trong su\u1ed1t n\u1ec1n.<\/li>\n\n\n\n<li>B\u1ea1n c\u00f3 th\u1ec3 b\u1ea5m&nbsp;<strong>&#8220;\u2193 T\u1ea3i PNG&#8221;<\/strong>&nbsp;d\u01b0\u1edbi m\u1ed7i h\u00ecnh \u0111\u1ec3 t\u1ea3i l\u1ebb, ho\u1eb7c b\u1ea5m n\u00fat xanh&nbsp;<strong>&#8220;\ud83d\udce6 T\u1ea3i v\u1ec1 t\u1ea5t c\u1ea3 (ZIP)&#8221;<\/strong>&nbsp;\u0111\u1ec3 t\u1ea3i to\u00e0n b\u1ed9 v\u1ec1 m\u00e1y trong m\u1ed9t n\u1ed1t nh\u1ea1c!<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"user-content--m\u1eb9o-nh\u1ecf-\u0111\u1ec3-c\u00f3-k\u1ebft-qu\u1ea3-ho\u00e0n-h\u1ea3o\">\ud83d\udca1 M\u1eb9o nh\u1ecf \u0111\u1ec3 c\u00f3 k\u1ebft qu\u1ea3 ho\u00e0n h\u1ea3o<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Prompt t\u1ea1o \u1ea3nh:<\/strong>&nbsp;Lu\u00f4n th\u00eam t\u1eeb kh\u00f3a&nbsp;<code>white background<\/code>&nbsp;(n\u1ec1n tr\u1eafng) v\u00e0o prompt Midjourney\/DALL-E c\u1ee7a b\u1ea1n \u0111\u1ec3 c\u00f4ng c\u1ee5 x\u00f3a n\u1ec1n ho\u1ea1t \u0111\u1ed9ng ch\u00ednh x\u00e1c nh\u1ea5t.<\/li>\n\n\n\n<li><strong>\u56fe\u50cf\u8d28\u91cf\uff1a<\/strong>&nbsp;H\u00ecnh \u1ea3nh c\u00e0ng s\u1eafc n\u00e9t, \u00edt b\u1ecb m\u1edd vi\u1ec1n (anti-aliasing) th\u00ec h\u00ecnh c\u1eaft ra s\u1ebd c\u00e0ng s\u1eafc s\u1ea3o v\u00e0 kh\u00f4ng b\u1ecb d\u00ednh vi\u1ec1n tr\u1eafng li ti.<\/li>\n\n\n\n<li>T\u00ean file t\u1ea3i v\u1ec1 s\u1ebd \u0111\u01b0\u1ee3c t\u1ef1 \u0111\u1ed9ng&nbsp;<strong>gi\u1eef nguy\u00ean theo t\u00ean file g\u1ed1c<\/strong>&nbsp;c\u1ee7a b\u1ea1n (v\u00ed d\u1ee5:&nbsp;<code>hoat-hinh_01.png<\/code>), gi\u00fap b\u1ea1n d\u1ec5 d\u00e0ng qu\u1ea3n l\u00fd file h\u01a1n.<\/li>\n<\/ul>\n\n\n\n<p>Ch\u00fac b\u1ea1n t\u1ea1o ra \u0111\u01b0\u1ee3c nh\u1eefng b\u1ed9 sticker th\u1eadt \u0111\u1ed9c \u0111\u00e1o v\u00e0 th\u00fa v\u1ecb! N\u1ebfu c\u00f3 b\u1ea5t k\u1ef3 th\u1eafc m\u1eafc n\u00e0o, h\u00e3y \u0111\u1ec3 l\u1ea1i b\u00ecnh lu\u1eadn b\u00ean d\u01b0\u1edbi nh\u00e9.<\/p>","protected":false},"excerpt":{"rendered":"<p>Smart Tool Sticker Splitter T\u1ea3i l\u00ean file \u1ea3nh sticker grid, c\u00f4ng c\u1ee5 s\u1ebd t\u1ef1 \u0111\u1ed9ng c\u1eaft v\u00e0 x\u00f3a n\u1ec1n gi\u00fap b\u1ea1n c\u00f3 nh\u1eefng file PNG trong su\u1ed1t ho\u00e0n h\u1ea3o. \u2728 K\u00e9o th\u1ea3 ho\u1eb7c nh\u1ea5n \u0111\u1ec3 ch\u1ecdn \u1ea3nh H\u1ed7 tr\u1ee3 \u0111\u1ecbnh d\u1ea1ng JPG, PNG, WebP \ud83d\udca1 Prompt t\u1ea1o Sticker m\u1eabu \u0110\u1ec3 k\u1ebft qu\u1ea3 c\u1eaft ho\u00e0n h\u1ea3o [&hellip;]<\/p>","protected":false},"author":1,"featured_media":38619,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-38613","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"rankmath_keywords":{"primary":"","secondary":[""]},"yoast_keywords":{"primary":"","secondary":[]},"yoast_focuskw":"","rankmath_focuskw":"","seo_keywords":{"primary":"","secondary":[""]},"_links":{"self":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/pages\/38613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/comments?post=38613"}],"version-history":[{"count":6,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/pages\/38613\/revisions"}],"predecessor-version":[{"id":38623,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/pages\/38613\/revisions\/38623"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/media\/38619"}],"wp:attachment":[{"href":"https:\/\/dps.media\/zh\/wp-json\/wp\/v2\/media?parent=38613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}