import Foundation extension String { /// Strip dashes, uppercase: "e2c56db5-..." → "E2C56DB5..." var normalizedUUID: String { replacingOccurrences(of: "-", with: "").uppercased() } /// Format 32 hex chars → standard UUID (8-4-4-4-12) var uuidWithDashes: String { let clean = normalizedUUID guard clean.count == 32 else { return self } let c = Array(clean) return "\(String(c[0..<8]))-\(String(c[8..<12]))-\(String(c[12..<16]))-\(String(c[16..<20]))-\(String(c[20..<32]))" } /// Convert hex string to byte array var hexToBytes: [UInt8] { let clean = normalizedUUID var bytes: [UInt8] = [] var i = clean.startIndex while i < clean.endIndex { let next = clean.index(i, offsetBy: 2, limitedBy: clean.endIndex) ?? clean.endIndex if let byte = UInt8(clean[i..