///|
fn hex_nibble(code : UInt16) -> Byte? {
  if code >= '0' && code <= '9' {
    Some((code - '0').to_byte())
  } else if code >= 'a' && code <= 'f' {
    Some((code - 'a' + 10).to_byte())
  } else if code >= 'A' && code <= 'F' {
    Some((code - 'A' + 10).to_byte())
  } else {
    None
  }
}

///|
#warnings("-unused_value")
fn decode_hex(input : String) -> Bytes? {
  guard input.length() % 2 == 0 else { return None }
  let decoded = Array::make(input.length() / 2, b'\x00')
  for i in 0..