#include <metal_stdlib>

using namespace metal;
struct FragmentOutputs {
  int loc0;
  uint loc1;
  float loc2;
  float4 loc3;
  half loc4;
  half3 loc5;
};

struct tint_symbol_1 {
  int loc0 [[color(0)]];
  uint loc1 [[color(1)]];
  float loc2 [[color(2)]];
  float4 loc3 [[color(3)]];
  half loc4 [[color(4)]];
  half3 loc5 [[color(5)]];
};

FragmentOutputs tint_symbol_inner() {
  FragmentOutputs const tint_symbol_2 = FragmentOutputs{.loc0=1, .loc1=1u, .loc2=1.0f, .loc3=float4(1.0f, 2.0f, 3.0f, 4.0f), .loc4=2.25h, .loc5=half3(3.0h, 5.0h, 8.0h)};
  return tint_symbol_2;
}

fragment tint_symbol_1 tint_symbol() {
  FragmentOutputs const inner_result = tint_symbol_inner();
  tint_symbol_1 wrapper_result = {};
  wrapper_result.loc0 = inner_result.loc0;
  wrapper_result.loc1 = inner_result.loc1;
  wrapper_result.loc2 = inner_result.loc2;
  wrapper_result.loc3 = inner_result.loc3;
  wrapper_result.loc4 = inner_result.loc4;
  wrapper_result.loc5 = inner_result.loc5;
  return wrapper_result;
}

