```json
{
  "sym_variables": [
    ("x0", "hours worked by Jean"),
    ("x1", "hours worked by Mary"),
    ("x2", "hours worked by Peggy"),
    ("x3", "hours worked by John"),
    ("x4", "hours worked by Laura")
  ],
  "objective_function": "5.29*x0**2 + 4.38*x0*x1 + 6.98*x0*x4 + 2.49*x1**2 + 2.57*x1*x2 + 7.28*x1*x3 + 2.3*x1*x4 + 5.14*x2*x3",
  "constraints": [
    "2*x0 + 1*x3 >= 19",
    "2*x0 + 8*x2 >= 13",
    "8*x2 + 5*x4 >= 12",
    "1*x3 + 5*x4 >= 19",
    "5*x1 + 1*x3 >= 11",
    "5*x1**2 + 8*x2**2 + 5*x4**2 >= 24",
    "5*x1 + 8*x2 + 1*x3 >= 24",
    "2*x0**2 + 1*x3**2 + 5*x4**2 >= 24",
    "2*x0 + 5*x1 + 1*x3 >= 24",
    "5*x1 + 8*x2 + 5*x4 >= 12",
    "5*x1 + 8*x2 + 1*x3 >= 12",
    "2*x0 + 1*x3 + 5*x4 >= 12",
    "2*x0**2 + 5*x1**2 + 1*x3**2 >= 12",
    "5*x1 + 8*x2 + 5*x4 >= 15",
    "5*x1**2 + 8*x2**2 + 1*x3**2 >= 15",
    "2*x0 + 1*x3 + 5*x4 >= 15",
    "2*x0**2 + 5*x1**2 + 1*x3**2 >= 15",
    "5*x1**2 + 8*x2**2 + 5*x4**2 >= 23",
    "5*x1**2 + 8*x2**2 + 1*x3**2 >= 23",
    "2*x0 + 1*x3 + 5*x4 >= 23",
    "2*x0**2 + 5*x1**2 + 1*x3**2 >= 23",
    "2*x0 + 5*x1 + 8*x2 + 1*x3 + 5*x4 >= 23",
    "1*x3**2 + 1*x4**2 >= 17",
    "1*x2**2 + 1*x3**2 >= 11",
    "8*x0**2 + 1*x2**2 >= 9",
    "8*x0 + 4*x1 + 1*x2 + 1*x3 + 1*x4 >= 9",
    "7*x0**2 + 6*x2**2 >= 21",
    "6*x2**2 + 5*x4**2 >= 20",
    "7*x0 + 6*x1 + 6*x2 + 5*x3 + 5*x4 >= 20",
    "-3*x2**2 + 4*x3**2 >= 0",
    "2*x0**2 + 8*x2**2 <= 57",
    "5*x1**2 + 5*x4**2 <= 112",
    "8*x2 + 1*x3 <= 93",
    "5*x1**2 + 1*x3**2 <= 57",
    "8*x2 + 1*x3 + 5*x4 <= 96",
    "4*x1**2 + 1*x4**2 <= 91",
    "8*x0**2 + 4*x1**2 <= 50",
    "4*x1**2 + 1*x3**2 <= 30",
    "8*x0 + 1*x2 <= 124",
    "1*x2**2 + 1*x3**2 <= 64",
    "8*x0 + 1*x4 <= 106",
    "1*x2 + 1*x4 <= 73",
    "1*x3 + 1*x4 <= 96",
    "8*x0 + 4*x1 + 1*x4 <= 129",
    "8*x0**2 + 1*x3**2 + 1*x4**2 <= 65",
    "8*x0 + 1*x2 + 1*x4 <= 106",
    "4*x1**2 + 1*x3**2 + 1*x4**2 <= 124",
    "4*x1**2 + 1*x2**2 + 1*x4**2 <= 90",
    "8*x0**2 + 4*x1**2 + 1*x2**2 <= 30",
    "7*x0**2 + 6*x1**2 <= 79",
    "6*x2**2 + 5*x3**2 <= 65",
    "6*x1**2 + 5*x4**2 <= 26",
    "7*x0**2 + 5*x4**2 <= 62",
    "5*x3 + 5*x4 <= 31",
    "6*x2 + 5*x4 <= 24",
    "7*x0 + 6*x2 <= 49",
    "6*x1 + 6*x2 + 5*x3 <= 74",
    "6*x1 + 6*x2 + 5*x4 <= 44",
    "7*x0 + 6*x2 + 5*x3 <= 104"
  ]
}
```

```python
import gurobipy as gp

# Create a new model
m = gp.Model("optimization_problem")

# Create variables
jean = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="jean")
mary = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="mary")
peggy = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="peggy")
john = m.addVar(lb=0, vtype=gp.GRB.INTEGER, name="john")
laura = m.addVar(lb=0, vtype=gp.GRB.INTEGER, name="laura")


# Set objective function
m.setObjective(5.29*jean**2 + 4.38*jean*mary + 6.98*jean*laura + 2.49*mary**2 + 2.57*mary*peggy + 7.28*mary*john + 2.3*mary*laura + 5.14*peggy*john, gp.GRB.MINIMIZE)

# Add constraints
m.addConstr(2*jean + 1*john >= 19)
m.addConstr(2*jean + 8*peggy >= 13)
m.addConstr(8*peggy + 5*laura >= 12)
m.addConstr(1*john + 5*laura >= 19)
m.addConstr(5*mary + 1*john >= 11)
m.addConstr(5*mary**2 + 8*peggy**2 + 5*laura**2 >= 24)
m.addConstr(5*mary + 8*peggy + 1*john >= 24)
m.addConstr(2*jean**2 + 1*john**2 + 5*laura**2 >= 24)
m.addConstr(2*jean + 5*mary + 1*john >= 24)
m.addConstr(5*mary + 8*peggy + 5*laura >= 12)
m.addConstr(5*mary + 8*peggy + 1*john >= 12)
m.addConstr(2*jean + 1*john + 5*laura >= 12)
m.addConstr(2*jean**2 + 5*mary**2 + 1*john**2 >= 12)
m.addConstr(5*mary + 8*peggy + 5*laura >= 15)
m.addConstr(5*mary**2 + 8*peggy**2 + 1*john**2 >= 15)
m.addConstr(2*jean + 1*john + 5*laura >= 15)
m.addConstr(2*jean**2 + 5*mary**2 + 1*john**2 >= 15)
m.addConstr(5*mary**2 + 8*peggy**2 + 5*laura**2 >= 23)
m.addConstr(5*mary**2 + 8*peggy**2 + 1*john**2 >= 23)
m.addConstr(2*jean + 1*john + 5*laura >= 23)
m.addConstr(2*jean**2 + 5*mary**2 + 1*john**2 >= 23)
m.addConstr(2*jean + 5*mary + 8*peggy + 1*john + 5*laura >= 23)
m.addConstr(1*john**2 + 1*laura**2 >= 17)
m.addConstr(1*peggy**2 + 1*john**2 >= 11)
m.addConstr(8*jean**2 + 1*peggy**2 >= 9)
m.addConstr(8*jean + 4*mary + 1*peggy + 1*john + 1*laura >= 9)
m.addConstr(7*jean**2 + 6*peggy**2 >= 21)
m.addConstr(6*peggy**2 + 5*laura**2 >= 20)
m.addConstr(7*jean + 6*mary + 6*peggy + 5*john + 5*laura >= 20)
m.addConstr(-3*peggy**2 + 4*john**2 >= 0)
m.addConstr(2*jean**2 + 8*peggy**2 <= 57)
m.addConstr(5*mary**2 + 5*laura**2 <= 112)
m.addConstr(8*peggy + 1*john <= 93)
m.addConstr(5*mary**2 + 1*john**2 <= 57)
m.addConstr(8*peggy + 1*john + 5*laura <= 96)
m.addConstr(4*mary**2 + 1*laura**2 <= 91)
m.addConstr(8*jean**2 + 4*mary**2 <= 50)
m.addConstr(4*mary**2 + 1*john**2 <= 30)
m.addConstr(8*jean + 1*peggy <= 124)
m.addConstr(1*peggy**2 + 1*john**2 <= 64)
m.addConstr(8*jean + 1*laura <= 106)
m.addConstr(1*peggy + 1*laura <= 73)
m.addConstr(1*john + 1*laura <= 96)
m.addConstr(8*jean + 4*mary + 1*laura <= 129)
m.addConstr(8*jean**2 + 1*john**2 + 1*laura**2 <= 65)
m.addConstr(8*jean + 1*peggy + 1*laura <= 106)
m.addConstr(4*mary**2 + 1*john**2 + 1*laura**2 <= 124)
m.addConstr(4*mary**2 + 1*peggy**2 + 1*laura**2 <= 90)
m.addConstr(8*jean**2 + 4*mary**2 + 1*peggy**2 <= 30)
m.addConstr(7*jean**2 + 6*mary**2 <= 79)
m.addConstr(6*peggy**2 + 5*john**2 <= 65)
m.addConstr(6*mary**2 + 5*laura**2 <= 26)
m.addConstr(7*jean**2 + 5*laura**2 <= 62)
m.addConstr(5*john + 5*laura <= 31)
m.addConstr(6*peggy + 5*laura <= 24)
m.addConstr(7*jean + 6*peggy <= 49)
m.addConstr(6*mary + 6*peggy + 5*john <= 74)
m.addConstr(6*mary + 6*peggy + 5*laura <= 44)
m.addConstr(7*jean + 6*peggy + 5*john <= 104)


# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    for v in m.getVars():
        print('%s %g' % (v.varName, v.x))
elif m.status == gp.GRB.INFEASIBLE:
    print('Optimization problem is infeasible.')
else:
    print('Optimization ended with status %d' % m.status)

```