diff --git a/msgq_repo/msgq/_ipc.so b/msgq_repo/msgq/_ipc.so index 2a34f5411e..93f8c2db2f 100755 Binary files a/msgq_repo/msgq/_ipc.so and b/msgq_repo/msgq/_ipc.so differ diff --git a/msgq_repo/msgq/visionipc/_visionipc.so b/msgq_repo/msgq/visionipc/_visionipc.so index 62b3ca117a..9086868252 100755 Binary files a/msgq_repo/msgq/visionipc/_visionipc.so and b/msgq_repo/msgq/visionipc/_visionipc.so differ diff --git a/opendbc_repo/opendbc/car/hyundai/ioniq6_longitudinal.py b/opendbc_repo/opendbc/car/hyundai/ioniq6_longitudinal.py index 915f5d38c4..c8253c493e 100644 --- a/opendbc_repo/opendbc/car/hyundai/ioniq6_longitudinal.py +++ b/opendbc_repo/opendbc/car/hyundai/ioniq6_longitudinal.py @@ -60,7 +60,11 @@ def update_calibration(state: Ioniq6LongitudinalState, accel: float, speed: floa elif starting or state.launch_active or (state.long_control_state_last == LongState.starting and control_state == LongState.pid): state.launch_active = True + hold_jerk = float(np.interp(speed, (0.0, 0.15, 0.6, 1.2, 2.0, 3.0), (0.35, 0.40, 0.48, 0.65, 0.85, 1.10))) * RESPONSE if state.stopping else 0.0 upper_limit = float(np.interp(speed, (0.0, 5.0, 20.0), (2.0, 3.0, 2.0))) * RESPONSE if control_state == LongState.pid else MIN_JERK + if state.stopping and accel > state.accel_last: + # Follow an already gentler planner request without weakening stronger braking. + upper_limit = hold_jerk lower_limit = float(np.interp(speed, (0.0, 5.0, 20.0), (5.0, 3.5, 3.0))) * RESPONSE horizon = float(np.interp(speed, LOOKAHEAD_SPEEDS, LOOKAHEAD_TIMES)) desired_jerk = float(np.clip((accel - state.accel_last) / horizon, -MAX_JERK, MAX_JERK)) @@ -70,10 +74,10 @@ def update_calibration(state: Ioniq6LongitudinalState, accel: float, speed: floa state.jerk_lower = min(lower_jerk, lower_limit) if state.stopping: - if speed <= 2.0: + # A saturated braking request must survive the comfort soft-stop cap. + if speed <= 2.0 and (speed <= .01 or accel > CarControllerParams.ACCEL_MIN): brake_cap = float(np.interp(speed, (0.0, 0.08, 0.25, 0.6, 1.2, 2.0, 3.0), (-0.15, -0.16, -0.22, -0.42, -0.78, -1.15, -1.40))) state.desired_accel = min(0.0, max(accel, brake_cap)) - hold_jerk = float(np.interp(speed, (0.0, 0.15, 0.6, 1.2, 2.0, 3.0), (0.35, 0.40, 0.48, 0.65, 0.85, 1.10))) * RESPONSE state.jerk_upper = min(state.jerk_upper, hold_jerk) else: state.desired_accel = float(np.clip(accel, CarControllerParams.ACCEL_MIN, 0.0)) diff --git a/opendbc_repo/opendbc/car/hyundai/tests/test_ioniq6_longitudinal.py b/opendbc_repo/opendbc/car/hyundai/tests/test_ioniq6_longitudinal.py index 9d15113c2e..bb1d9c9cb3 100644 --- a/opendbc_repo/opendbc/car/hyundai/tests/test_ioniq6_longitudinal.py +++ b/opendbc_repo/opendbc/car/hyundai/tests/test_ioniq6_longitudinal.py @@ -61,6 +61,36 @@ class TestIoniq6Longitudinal(unittest.TestCase): for value, previous in zip(actual, expected, strict=True): self.assertAlmostEqual(value, previous, places=12) + def test_saturated_stopping_brake_survives_low_speed_comfort_cap(self): + for speed in (.1, .5, 1., 2.): + with self.subTest(speed=speed): + policy = Ioniq6LongitudinalPolicy() + last_sent = 0. + for frame in range(600): + result = policy.update(frame, active=True, override=False, accel=-3.5, speed=speed, + measured_accel=last_sent, control_state=LongState.stopping, + last_sent_accel=last_sent) + self.assertTrue(result.stopping) + self.assertGreaterEqual(result.accel, -3.5) + if frame % 2 == 0: + self.assertLessEqual(result.accel, last_sent) + self.assertGreaterEqual(result.accel + 1e-12, last_sent - .36) + last_sent = result.accel + self.assertAlmostEqual(last_sent, -3.5) + refused = policy.update(601, active=True, override=True, accel=-3.5, speed=speed, + measured_accel=last_sent, control_state=LongState.stopping, + last_sent_accel=last_sent) + self.assertEqual(refused.accel, 0.) + self.assertFalse(refused.stopping) + self.assertEqual(policy.state, Ioniq6LongitudinalState()) + + def test_saturated_request_returns_to_soft_hold_at_standstill(self): + state = Ioniq6LongitudinalState(accel_last=-3.5) + update_calibration(state, -3.5, 0., 0., LongState.stopping) + self.assertAlmostEqual(state.desired_accel, -.15) + self.assertTrue(state.stopping) + self.assertGreater(state.actual_accel, -3.5) + def test_soft_target_revokes_launch_on_offcycle_and_scheduled_ticks(self): for drop_frame in (31, 35): with self.subTest(drop_frame=drop_frame): @@ -323,6 +353,20 @@ class TestIoniq6Longitudinal(unittest.TestCase): counters.append(frame[1][2]) self.assertEqual(counters, [counter & 0xff for counter in range(260)]) + def test_already_gentler_request_uses_bounded_stop_release(self): + state = Ioniq6LongitudinalState(accel_last=-1.5) + update_calibration(state, -.5, 3., -1.5, LongState.stopping) + self.assertGreater(state.actual_accel, -1.47) + self.assertLessEqual(state.actual_accel, -.5) + self.assertLessEqual(state.jerk_upper, 1.32) + self.assertTrue(state.stopping) + + def test_stop_release_does_not_weaken_independent_braking_above_soft_cap(self): + state = Ioniq6LongitudinalState(accel_last=-3.2) + update_calibration(state, -3.2, 2.5, -3.2, LongState.stopping) + self.assertEqual(state.desired_accel, -3.2) + self.assertEqual(state.actual_accel, -3.2) + def test_stock_ioniq_and_other_cars_do_not_install_this_policy(self): for car in (CAR.HYUNDAI_IONIQ_6, CAR.HYUNDAI_IONIQ_5, CAR.KIA_EV6): cp = CarInterface.get_non_essential_params(car) diff --git a/openpilot/cereal/custom.capnp b/openpilot/cereal/custom.capnp index bbb1ce22fe..7914c4c997 100644 --- a/openpilot/cereal/custom.capnp +++ b/openpilot/cereal/custom.capnp @@ -277,6 +277,8 @@ struct StarPilotLongitudinalPlan @0xda96579883444c35 { modelMonoTime @2 :UInt64; driveStartMonoTime @3 :UInt64; forceStopHolding @4 :Bool; + forceStopBraking @5 :Bool; + forceStopEpisodeMonoTime @6 :UInt64; } struct SlcState @0xa1680744031fdb2d { @@ -1577,3 +1579,4 @@ struct LiveTrackingResponseWitness @0xdaa1a9f0d8968e31 { windowStartMonoTime @4 :UInt64; independentPoses @5 :UInt16; residualRmse @6 :Float64; validUntilMonoTime @7 :UInt64; } + diff --git a/openpilot/cereal/gen/cpp/custom.capnp.c++ b/openpilot/cereal/gen/cpp/custom.capnp.c++ index 0eb00c3592..ec7cad8cc1 100644 --- a/openpilot/cereal/gen/cpp/custom.capnp.c++ +++ b/openpilot/cereal/gen/cpp/custom.capnp.c++ @@ -3737,17 +3737,17 @@ const ::capnp::_::RawSchema s_de92e382e2400293 = { 0, 17, i_de92e382e2400293, nullptr, nullptr, { &s_de92e382e2400293, nullptr, nullptr, 0, 0, nullptr }, false }; #endif // !CAPNP_LITE -static const ::capnp::_::AlignedData<101> b_da96579883444c35 = { +static const ::capnp::_::AlignedData<136> b_da96579883444c35 = { { 0, 0, 0, 0, 5, 0, 6, 0, 53, 76, 68, 131, 152, 87, 150, 218, - 13, 0, 0, 0, 1, 0, 4, 0, + 13, 0, 0, 0, 1, 0, 5, 0, 89, 10, 85, 29, 102, 186, 38, 181, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 58, 1, 0, 0, 37, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 31, 1, 0, 0, + 33, 0, 0, 0, 143, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 117, 115, 116, 111, 109, 46, 99, @@ -3756,42 +3756,56 @@ static const ::capnp::_::AlignedData<101> b_da96579883444c35 = { 110, 103, 105, 116, 117, 100, 105, 110, 97, 108, 80, 108, 97, 110, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 20, 0, 0, 0, 3, 0, 4, 0, + 28, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 125, 0, 0, 0, 66, 0, 0, 0, + 181, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 120, 0, 0, 0, 3, 0, 1, 0, - 132, 0, 0, 0, 2, 0, 1, 0, + 176, 0, 0, 0, 3, 0, 1, 0, + 188, 0, 0, 0, 2, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 0, 0, 0, 154, 0, 0, 0, + 185, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 132, 0, 0, 0, 3, 0, 1, 0, - 144, 0, 0, 0, 2, 0, 1, 0, + 188, 0, 0, 0, 3, 0, 1, 0, + 200, 0, 0, 0, 2, 0, 1, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 141, 0, 0, 0, 114, 0, 0, 0, + 197, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 140, 0, 0, 0, 3, 0, 1, 0, - 152, 0, 0, 0, 2, 0, 1, 0, + 196, 0, 0, 0, 3, 0, 1, 0, + 208, 0, 0, 0, 2, 0, 1, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 149, 0, 0, 0, 154, 0, 0, 0, + 205, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 152, 0, 0, 0, 3, 0, 1, 0, - 164, 0, 0, 0, 2, 0, 1, 0, + 208, 0, 0, 0, 3, 0, 1, 0, + 220, 0, 0, 0, 2, 0, 1, 0, 4, 0, 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 161, 0, 0, 0, 138, 0, 0, 0, + 217, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 164, 0, 0, 0, 3, 0, 1, 0, - 176, 0, 0, 0, 2, 0, 1, 0, + 220, 0, 0, 0, 3, 0, 1, 0, + 232, 0, 0, 0, 2, 0, 1, 0, + 5, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 1, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 229, 0, 0, 0, 138, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 232, 0, 0, 0, 3, 0, 1, 0, + 244, 0, 0, 0, 2, 0, 1, 0, + 6, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 1, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 202, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 248, 0, 0, 0, 3, 0, 1, 0, + 4, 1, 0, 0, 2, 0, 1, 0, 118, 101, 114, 115, 105, 111, 110, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3838,15 +3852,36 @@ static const ::capnp::_::AlignedData<101> b_da96579883444c35 = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 102, 111, 114, 99, 101, 83, 116, 111, + 112, 66, 114, 97, 107, 105, 110, 103, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 102, 111, 114, 99, 101, 83, 116, 111, + 112, 69, 112, 105, 115, 111, 100, 101, + 77, 111, 110, 111, 84, 105, 109, 101, + 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } }; ::capnp::word const* const bp_da96579883444c35 = b_da96579883444c35.words; #if !CAPNP_LITE -static const uint16_t m_da96579883444c35[] = {3, 4, 2, 1, 0}; -static const uint16_t i_da96579883444c35[] = {0, 1, 2, 3, 4}; +static const uint16_t m_da96579883444c35[] = {3, 5, 6, 4, 2, 1, 0}; +static const uint16_t i_da96579883444c35[] = {0, 1, 2, 3, 4, 5, 6}; const ::capnp::_::RawSchema s_da96579883444c35 = { - 0xda96579883444c35, b_da96579883444c35.words, 101, nullptr, m_da96579883444c35, - 0, 5, i_da96579883444c35, nullptr, nullptr, { &s_da96579883444c35, nullptr, nullptr, 0, 0, nullptr }, false + 0xda96579883444c35, b_da96579883444c35.words, 136, nullptr, m_da96579883444c35, + 0, 7, i_da96579883444c35, nullptr, nullptr, { &s_da96579883444c35, nullptr, nullptr, 0, 0, nullptr }, false }; #endif // !CAPNP_LITE static const ::capnp::_::AlignedData<1081> b_a1680744031fdb2d = { diff --git a/openpilot/cereal/gen/cpp/custom.capnp.h b/openpilot/cereal/gen/cpp/custom.capnp.h index 510781cc90..4a8a24680f 100644 --- a/openpilot/cereal/gen/cpp/custom.capnp.h +++ b/openpilot/cereal/gen/cpp/custom.capnp.h @@ -729,7 +729,7 @@ struct StarPilotLongitudinalPlan { class Pipeline; struct _capnpPrivate { - CAPNP_DECLARE_STRUCT_HEADER(da96579883444c35, 4, 0) + CAPNP_DECLARE_STRUCT_HEADER(da96579883444c35, 5, 0) #if !CAPNP_LITE static constexpr ::capnp::_::RawBrandedSchema const* brand() { return &schema->defaultBrand; } #endif // !CAPNP_LITE @@ -4298,6 +4298,10 @@ public: inline bool getForceStopHolding() const; + inline bool getForceStopBraking() const; + + inline ::uint64_t getForceStopEpisodeMonoTime() const; + private: ::capnp::_::StructReader _reader; template @@ -4341,6 +4345,12 @@ public: inline bool getForceStopHolding(); inline void setForceStopHolding(bool value); + inline bool getForceStopBraking(); + inline void setForceStopBraking(bool value); + + inline ::uint64_t getForceStopEpisodeMonoTime(); + inline void setForceStopEpisodeMonoTime( ::uint64_t value); + private: ::capnp::_::StructBuilder _builder; template @@ -18958,6 +18968,34 @@ inline void StarPilotLongitudinalPlan::Builder::setForceStopHolding(bool value) ::capnp::bounded<16>() * ::capnp::ELEMENTS, value); } +inline bool StarPilotLongitudinalPlan::Reader::getForceStopBraking() const { + return _reader.getDataField( + ::capnp::bounded<17>() * ::capnp::ELEMENTS); +} + +inline bool StarPilotLongitudinalPlan::Builder::getForceStopBraking() { + return _builder.getDataField( + ::capnp::bounded<17>() * ::capnp::ELEMENTS); +} +inline void StarPilotLongitudinalPlan::Builder::setForceStopBraking(bool value) { + _builder.setDataField( + ::capnp::bounded<17>() * ::capnp::ELEMENTS, value); +} + +inline ::uint64_t StarPilotLongitudinalPlan::Reader::getForceStopEpisodeMonoTime() const { + return _reader.getDataField< ::uint64_t>( + ::capnp::bounded<4>() * ::capnp::ELEMENTS); +} + +inline ::uint64_t StarPilotLongitudinalPlan::Builder::getForceStopEpisodeMonoTime() { + return _builder.getDataField< ::uint64_t>( + ::capnp::bounded<4>() * ::capnp::ELEMENTS); +} +inline void StarPilotLongitudinalPlan::Builder::setForceStopEpisodeMonoTime( ::uint64_t value) { + _builder.setDataField< ::uint64_t>( + ::capnp::bounded<4>() * ::capnp::ELEMENTS, value); +} + inline bool SlcState::Reader::hasSlotId() const { return !_reader.getPointerField( ::capnp::bounded<0>() * ::capnp::POINTERS).isNull(); diff --git a/openpilot/cereal/libcereal.a b/openpilot/cereal/libcereal.a index ac441fcf34..45af788299 100644 Binary files a/openpilot/cereal/libcereal.a and b/openpilot/cereal/libcereal.a differ diff --git a/openpilot/cereal/libsocketmaster.a b/openpilot/cereal/libsocketmaster.a index e144392210..1da0ad2cd7 100644 Binary files a/openpilot/cereal/libsocketmaster.a and b/openpilot/cereal/libsocketmaster.a differ diff --git a/openpilot/common/libcommon.a b/openpilot/common/libcommon.a index 1784ac60bb..b6948067ef 100644 Binary files a/openpilot/common/libcommon.a and b/openpilot/common/libcommon.a differ diff --git a/openpilot/common/libparams_c.so b/openpilot/common/libparams_c.so index 61ae1f7995..295f4f9518 100755 Binary files a/openpilot/common/libparams_c.so and b/openpilot/common/libparams_c.so differ diff --git a/openpilot/selfdrive/controls/lib/longcontrol.py b/openpilot/selfdrive/controls/lib/longcontrol.py index 3b93e6e536..77ee94691d 100644 --- a/openpilot/selfdrive/controls/lib/longcontrol.py +++ b/openpilot/selfdrive/controls/lib/longcontrol.py @@ -1,4 +1,5 @@ import numpy as np +import math from opendbc.car.structs import car from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.controls.lib.drive_helpers import CONTROL_N @@ -96,6 +97,9 @@ class LongControl: output_accel -= self.stopping_decel_rate * DT_CTRL # m/s^2/s while trying to stop if self.extension is not None: output_accel = self.extension.stopping_output(output_accel, a_target, should_stop, CS) + if (context.force_stop_braking and self.extension is not None and self.extension.ioniq6_start is not None and + should_stop and not CS.standstill and CS.vEgo > .3 and math.isfinite(a_target)): + output_accel = min(a_target, 0.0) self.reset(reset_start=False) elif self.long_control_state == LongCtrlState.starting and self.extension is not None and self.extension.starting: @@ -119,3 +123,4 @@ class LongControl: output_accel = min(output_accel, planner_target) self.last_output_accel = np.clip(output_accel, accel_limits[0], accel_limits[1]) return self.last_output_accel + diff --git a/openpilot/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c b/openpilot/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c index 3f9cedc83a..b846075886 100644 --- a/openpilot/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c +++ b/openpilot/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code/acados_ocp_solver_pyx.c @@ -1520,10 +1520,10 @@ static const char * const __pyx_cfilenm = __FILE__; /* #### Code section: filename_table ### */ static const char* const __pyx_f[] = { - ".venv-linux-arm64/lib/python3.12/site-packages/acados/acados_template/acados_ocp_solver_pyx.pyx", + "acados/acados_template/acados_ocp_solver_pyx.pyx", "carray.to_py", - ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", - ".venv-linux-arm64/lib/python3.12/site-packages/Cython/Includes/cpython/type.pxd", + "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", + "cpython/type.pxd", }; /* #### Code section: utility_code_proto_before_types ### */ /* Atomics.proto (used by UnpackUnboundCMethod) */ @@ -1775,7 +1775,7 @@ typedef struct { /* #### Code section: numeric_typedefs ### */ -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -1784,7 +1784,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -1793,7 +1793,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -1802,7 +1802,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -1811,7 +1811,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766 * ctypedef npy_int64 int64_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -1820,7 +1820,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -1829,7 +1829,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -1838,7 +1838,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -1847,7 +1847,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771 * ctypedef npy_uint64 uint64_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -1856,7 +1856,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -1865,7 +1865,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779 * ctypedef double complex complex128_t * * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -1874,7 +1874,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 * * ctypedef npy_longlong longlong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -1883,7 +1883,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -1892,7 +1892,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -1901,7 +1901,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1910,7 +1910,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1919,7 +1919,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -4245,39 +4245,39 @@ static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_stati #define __pyx_kp_u_param_values_2 __pyx_string_tab[10] #define __pyx_kp_u__3 __pyx_string_tab[11] #define __pyx_kp_u_json_2 __pyx_string_tab[12] -#define __pyx_kp_u_venv_linux_arm64_lib_python3_12 __pyx_string_tab[13] -#define __pyx_kp_u_0 __pyx_string_tab[14] -#define __pyx_kp_u__2 __pyx_string_tab[15] -#define __pyx_kp_u_MemoryView_of __pyx_string_tab[16] -#define __pyx_kp_u_contiguous_and_direct __pyx_string_tab[17] -#define __pyx_kp_u_contiguous_and_indirect __pyx_string_tab[18] -#define __pyx_kp_u_strided_and_direct_or_indirect __pyx_string_tab[19] -#define __pyx_kp_u_strided_and_direct __pyx_string_tab[20] -#define __pyx_kp_u_strided_and_indirect __pyx_string_tab[21] -#define __pyx_kp_u__4 __pyx_string_tab[22] -#define __pyx_kp_u_ __pyx_string_tab[23] -#define __pyx_kp_u_AcadosOcpSolverCython_constraint __pyx_string_tab[24] -#define __pyx_kp_u_AcadosOcpSolverCython_cost_set_m __pyx_string_tab[25] -#define __pyx_kp_u_AcadosOcpSolverCython_eval_param __pyx_string_tab[26] -#define __pyx_kp_u_AcadosOcpSolverCython_eval_param_2 __pyx_string_tab[27] -#define __pyx_kp_u_AcadosOcpSolverCython_get_field __pyx_string_tab[28] -#define __pyx_kp_u_AcadosOcpSolverCython_get_stage __pyx_string_tab[29] -#define __pyx_kp_u_AcadosOcpSolverCython_get_is_an __pyx_string_tab[30] -#define __pyx_kp_u_AcadosOcpSolverCython_options_se __pyx_string_tab[31] -#define __pyx_kp_u_AcadosOcpSolverCython_set_mismat __pyx_string_tab[32] -#define __pyx_kp_u_AcadosOcpSolverCython_set_is_not __pyx_string_tab[33] -#define __pyx_kp_u_AcadosOcpSolverCython_solve_argu_2 __pyx_string_tab[34] -#define __pyx_kp_u_AcadosOcpSolverCython_solve_argu __pyx_string_tab[35] -#define __pyx_kp_u_AcadosOcpSolverCython_does_not_s __pyx_string_tab[36] -#define __pyx_kp_u_AcadosOcpSolverCython_does_not_s_2 __pyx_string_tab[37] -#define __pyx_kp_u_Cannot_assign_to_read_only_memor __pyx_string_tab[38] -#define __pyx_kp_u_Invalid_mode_expected_c_or_fortr __pyx_string_tab[39] -#define __pyx_kp_u_Invalid_shape_in_axis __pyx_string_tab[40] -#define __pyx_kp_u_None __pyx_string_tab[41] -#define __pyx_kp_u_Note_that_Cython_is_deliberately __pyx_string_tab[42] -#define __pyx_kp_u_TODO __pyx_string_tab[43] -#define __pyx_kp_u_Warning_acados_ocp_solver_reache __pyx_string_tab[44] -#define __pyx_kp_u_acados_acados_ocp_solver_returne __pyx_string_tab[45] +#define __pyx_kp_u_0 __pyx_string_tab[13] +#define __pyx_kp_u__2 __pyx_string_tab[14] +#define __pyx_kp_u_MemoryView_of __pyx_string_tab[15] +#define __pyx_kp_u_contiguous_and_direct __pyx_string_tab[16] +#define __pyx_kp_u_contiguous_and_indirect __pyx_string_tab[17] +#define __pyx_kp_u_strided_and_direct_or_indirect __pyx_string_tab[18] +#define __pyx_kp_u_strided_and_direct __pyx_string_tab[19] +#define __pyx_kp_u_strided_and_indirect __pyx_string_tab[20] +#define __pyx_kp_u__4 __pyx_string_tab[21] +#define __pyx_kp_u_ __pyx_string_tab[22] +#define __pyx_kp_u_AcadosOcpSolverCython_constraint __pyx_string_tab[23] +#define __pyx_kp_u_AcadosOcpSolverCython_cost_set_m __pyx_string_tab[24] +#define __pyx_kp_u_AcadosOcpSolverCython_eval_param __pyx_string_tab[25] +#define __pyx_kp_u_AcadosOcpSolverCython_eval_param_2 __pyx_string_tab[26] +#define __pyx_kp_u_AcadosOcpSolverCython_get_field __pyx_string_tab[27] +#define __pyx_kp_u_AcadosOcpSolverCython_get_stage __pyx_string_tab[28] +#define __pyx_kp_u_AcadosOcpSolverCython_get_is_an __pyx_string_tab[29] +#define __pyx_kp_u_AcadosOcpSolverCython_options_se __pyx_string_tab[30] +#define __pyx_kp_u_AcadosOcpSolverCython_set_mismat __pyx_string_tab[31] +#define __pyx_kp_u_AcadosOcpSolverCython_set_is_not __pyx_string_tab[32] +#define __pyx_kp_u_AcadosOcpSolverCython_solve_argu_2 __pyx_string_tab[33] +#define __pyx_kp_u_AcadosOcpSolverCython_solve_argu __pyx_string_tab[34] +#define __pyx_kp_u_AcadosOcpSolverCython_does_not_s __pyx_string_tab[35] +#define __pyx_kp_u_AcadosOcpSolverCython_does_not_s_2 __pyx_string_tab[36] +#define __pyx_kp_u_Cannot_assign_to_read_only_memor __pyx_string_tab[37] +#define __pyx_kp_u_Invalid_mode_expected_c_or_fortr __pyx_string_tab[38] +#define __pyx_kp_u_Invalid_shape_in_axis __pyx_string_tab[39] +#define __pyx_kp_u_None __pyx_string_tab[40] +#define __pyx_kp_u_Note_that_Cython_is_deliberately __pyx_string_tab[41] +#define __pyx_kp_u_TODO __pyx_string_tab[42] +#define __pyx_kp_u_Warning_acados_ocp_solver_reache __pyx_string_tab[43] +#define __pyx_kp_u_acados_acados_ocp_solver_returne __pyx_string_tab[44] +#define __pyx_kp_u_acados_acados_template_acados_oc_2 __pyx_string_tab[45] #define __pyx_kp_u_add_note __pyx_string_tab[46] #define __pyx_kp_u_alpha_values_are_not_available_f __pyx_string_tab[47] #define __pyx_kp_u_collections_abc __pyx_string_tab[48] @@ -19173,7 +19173,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230 * * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]: * @property # <<<<<<<<<<<<<< @@ -19184,7 +19184,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArray_Descr *__pyx_v_self) { PyTypeObject *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":232 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":232 * @property * cdef inline PyTypeObject* typeobj(self) noexcept nogil: * return PyDataType_TYPEOBJ(self) # <<<<<<<<<<<<<< @@ -19197,7 +19197,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":230 * * ctypedef class numpy.dtype [object PyArray_Descr, check_size ignore]: * @property # <<<<<<<<<<<<<< @@ -19210,7 +19210,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234 * return PyDataType_TYPEOBJ(self) * * @property # <<<<<<<<<<<<<< @@ -19221,7 +19221,7 @@ static CYTHON_INLINE PyTypeObject *__pyx_f_5numpy_5dtype_7typeobj___get__(PyArra static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__pyx_v_self) { char __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":236 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":236 * @property * cdef inline char kind(self) noexcept nogil: * return PyDataType_KIND(self) # <<<<<<<<<<<<<< @@ -19234,7 +19234,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":234 * return PyDataType_TYPEOBJ(self) * * @property # <<<<<<<<<<<<<< @@ -19247,7 +19247,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238 * return PyDataType_KIND(self) * * @property # <<<<<<<<<<<<<< @@ -19258,7 +19258,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4kind___get__(PyArray_Descr *__p static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__pyx_v_self) { char __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":240 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":240 * @property * cdef inline char type(self) noexcept nogil: * return PyDataType_TYPE(self) # <<<<<<<<<<<<<< @@ -19271,7 +19271,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":238 * return PyDataType_KIND(self) * * @property # <<<<<<<<<<<<<< @@ -19284,7 +19284,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of * # directly accessing this field. * @property # <<<<<<<<<<<<<< @@ -19295,7 +19295,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_4type___get__(PyArray_Descr *__p static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr *__pyx_v_self) { char __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249 * @property * cdef inline char byteorder(self) noexcept nogil: * return PyDataType_BYTEORDER(self) # <<<<<<<<<<<<<< @@ -19308,7 +19308,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 * # PyArray_IsNativeByteOrder(dtype.byteorder) instead of * # directly accessing this field. * @property # <<<<<<<<<<<<<< @@ -19321,7 +19321,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251 * return PyDataType_BYTEORDER(self) * * @property # <<<<<<<<<<<<<< @@ -19332,7 +19332,7 @@ static CYTHON_INLINE char __pyx_f_5numpy_5dtype_9byteorder___get__(PyArray_Descr static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr *__pyx_v_self) { int __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 * @property * cdef inline int type_num(self) noexcept nogil: * return PyDataType_TYPENUM(self) # <<<<<<<<<<<<<< @@ -19345,7 +19345,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr * } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":251 * return PyDataType_BYTEORDER(self) * * @property # <<<<<<<<<<<<<< @@ -19358,7 +19358,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr * return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255 * return PyDataType_TYPENUM(self) * * @property # <<<<<<<<<<<<<< @@ -19369,7 +19369,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5dtype_8type_num___get__(PyArray_Descr * static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 * @property * cdef inline npy_intp itemsize(self) noexcept nogil: * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<< @@ -19382,7 +19382,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255 * return PyDataType_TYPENUM(self) * * @property # <<<<<<<<<<<<<< @@ -19395,7 +19395,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -19406,7 +19406,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize___get__(PyArray_De static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":261 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":261 * @property * cdef inline npy_intp alignment(self) noexcept nogil: * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<< @@ -19419,7 +19419,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_D } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -19432,7 +19432,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment___get__(PyArray_D return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -19446,7 +19446,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("__get__", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267 * @property * cdef inline object fields(self): * return PyDataType_FIELDS(self) # <<<<<<<<<<<<<< @@ -19467,7 +19467,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -19482,7 +19482,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields___get__(PyArray_Des return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -19496,7 +19496,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("__get__", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271 * @property * cdef inline tuple names(self): * return PyDataType_NAMES(self) # <<<<<<<<<<<<<< @@ -19517,7 +19517,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":269 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -19532,7 +19532,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -19543,7 +19543,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names___get__(PyArray_Desc static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__(PyArray_Descr *__pyx_v_self) { PyArray_ArrayDescr *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":278 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":278 * @property * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil: * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<< @@ -19556,7 +19556,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__ } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":276 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -19569,7 +19569,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -19580,7 +19580,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray___get__ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Descr *__pyx_v_self) { npy_uint64 __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283 * cdef inline npy_uint64 flags(self) noexcept nogil: * """The data types flags.""" * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<< @@ -19593,7 +19593,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -19606,7 +19606,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -19617,7 +19617,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags___get__(PyArray_Des static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 * cdef inline int numiter(self) noexcept nogil: * """The number of arrays that need to be broadcast to the same shape.""" * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<< @@ -19630,7 +19630,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -19643,7 +19643,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -19654,7 +19654,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter___get__(PyArrayMulti static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 * cdef inline npy_intp size(self) noexcept nogil: * """The total broadcasted size.""" * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<< @@ -19667,7 +19667,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -19680,7 +19680,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -19691,7 +19691,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size___get__(PyArrayMul static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 * cdef inline npy_intp index(self) noexcept nogil: * """The current (1-d) index into the broadcasted result.""" * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<< @@ -19704,7 +19704,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -19717,7 +19717,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -19728,7 +19728,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index___get__(PyArrayMu static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310 * cdef inline int nd(self) noexcept nogil: * """The number of dimensions in the broadcasted result.""" * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<< @@ -19741,7 +19741,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":307 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -19754,7 +19754,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -19765,7 +19765,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd___get__(PyArrayMultiIterO static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(PyArrayMultiIterObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":315 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":315 * cdef inline npy_intp* dimensions(self) noexcept nogil: * """The shape of the broadcasted result.""" * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<< @@ -19778,7 +19778,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":312 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -19791,7 +19791,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -19802,7 +19802,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions___get__(Py static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMultiIterObject *__pyx_v_self) { void **__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":321 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":321 * """An array of iterator objects that holds the iterators for the arrays to be broadcast together. * On return, the iterators are adjusted for broadcasting.""" * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<< @@ -19815,7 +19815,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":317 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -19828,7 +19828,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -19839,7 +19839,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters___get__(PyArrayMult static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObject *__pyx_v_self) { PyObject *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339 * """Returns a borrowed reference to the object owning the data/memory. * """ * return PyArray_BASE(self) # <<<<<<<<<<<<<< @@ -19852,7 +19852,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObje } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -19865,7 +19865,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base___get__(PyArrayObje return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -19879,7 +19879,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr PyArray_Descr *__pyx_t_1; __Pyx_RefNannySetupContext("__get__", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345 * """Returns an owned reference to the dtype of the array. * """ * return PyArray_DESCR(self) # <<<<<<<<<<<<<< @@ -19900,7 +19900,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -19915,7 +19915,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -19926,7 +19926,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr___get__(PyArr static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__pyx_v_self) { int __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351 * """Returns the number of dimensions in the array. * """ * return PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -19939,7 +19939,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__ } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -19952,7 +19952,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -19963,7 +19963,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim___get__(PyArrayObject *__ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359 * Can return NULL for 0-dimensional arrays. * """ * return PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -19976,7 +19976,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -19989,7 +19989,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -20000,7 +20000,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape___get__(PyArrayObj static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":366 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":366 * The number of elements matches the number of dimensions of the array (ndim). * """ * return PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -20013,7 +20013,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -20026,7 +20026,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -20037,7 +20037,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides___get__(PyArrayO static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":372 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":372 * """Returns the total size (in number of elements) of the array. * """ * return PyArray_SIZE(self) # <<<<<<<<<<<<<< @@ -20050,7 +20050,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -20063,7 +20063,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -20074,7 +20074,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size___get__(PyArrayObjec static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject *__pyx_v_self) { char *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381 * of `PyArray_DATA()` instead, which returns a 'void*'. * """ * return PyArray_BYTES(self) # <<<<<<<<<<<<<< @@ -20087,7 +20087,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject * } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":374 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -20100,7 +20100,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data___get__(PyArrayObject * return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -20117,7 +20117,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -20137,7 +20137,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -20156,7 +20156,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -20173,7 +20173,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -20193,7 +20193,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":797 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -20212,7 +20212,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -20229,7 +20229,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":801 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":801 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -20249,7 +20249,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -20268,7 +20268,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -20285,7 +20285,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":804 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":804 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -20305,7 +20305,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":803 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -20324,7 +20324,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -20341,7 +20341,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -20361,7 +20361,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":806 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -20380,7 +20380,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -20395,7 +20395,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ PyObject *__pyx_t_2; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -20407,7 +20407,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ if (__pyx_t_1) { - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":811 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":811 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -20428,7 +20428,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -20437,7 +20437,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -20457,7 +20457,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":809 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -20472,7 +20472,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947 * * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]: * @property # <<<<<<<<<<<<<< @@ -20483,7 +20483,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx_v_self) { int __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":949 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":949 * @property * cdef inline int nin(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).nin # <<<<<<<<<<<<<< @@ -20496,7 +20496,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":947 * * ctypedef class numpy.ufunc [object PyUFuncObject, check_size ignore]: * @property # <<<<<<<<<<<<<< @@ -20509,7 +20509,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951 * return _PyUFuncObject_GET_ITEM_DATA(self).nin * * @property # <<<<<<<<<<<<<< @@ -20520,7 +20520,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_3nin___get__(PyUFuncObject *__pyx static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__pyx_v_self) { int __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":953 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":953 * @property * cdef inline int nout(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).nout # <<<<<<<<<<<<<< @@ -20533,7 +20533,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":951 * return _PyUFuncObject_GET_ITEM_DATA(self).nin * * @property # <<<<<<<<<<<<<< @@ -20546,7 +20546,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955 * return _PyUFuncObject_GET_ITEM_DATA(self).nout * * @property # <<<<<<<<<<<<<< @@ -20557,7 +20557,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_4nout___get__(PyUFuncObject *__py static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__pyx_v_self) { int __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":957 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":957 * @property * cdef inline int nargs(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).nargs # <<<<<<<<<<<<<< @@ -20570,7 +20570,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":955 * return _PyUFuncObject_GET_ITEM_DATA(self).nout * * @property # <<<<<<<<<<<<<< @@ -20583,7 +20583,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959 * return _PyUFuncObject_GET_ITEM_DATA(self).nargs * * @property # <<<<<<<<<<<<<< @@ -20594,7 +20594,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_5nargs___get__(PyUFuncObject *__p static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___get__(PyUFuncObject *__pyx_v_self) { PyUFuncGenericFunction *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":961 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":961 * @property * cdef inline PyUFuncGenericFunction* functions(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).functions # <<<<<<<<<<<<<< @@ -20607,7 +20607,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___ } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":959 * return _PyUFuncObject_GET_ITEM_DATA(self).nargs * * @property # <<<<<<<<<<<<<< @@ -20620,7 +20620,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963 * return _PyUFuncObject_GET_ITEM_DATA(self).functions * * @property # <<<<<<<<<<<<<< @@ -20631,7 +20631,7 @@ static CYTHON_INLINE PyUFuncGenericFunction *__pyx_f_5numpy_5ufunc_9functions___ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *__pyx_v_self) { void **__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":965 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":965 * @property * cdef inline void ** data(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).data # <<<<<<<<<<<<<< @@ -20644,7 +20644,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_ } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":963 * return _PyUFuncObject_GET_ITEM_DATA(self).functions * * @property # <<<<<<<<<<<<<< @@ -20657,7 +20657,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967 * return _PyUFuncObject_GET_ITEM_DATA(self).data * * @property # <<<<<<<<<<<<<< @@ -20668,7 +20668,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_5ufunc_4data___get__(PyUFuncObject *_ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__pyx_v_self) { int __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":969 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":969 * @property * cdef inline int ntypes(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes # <<<<<<<<<<<<<< @@ -20681,7 +20681,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__ } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":967 * return _PyUFuncObject_GET_ITEM_DATA(self).data * * @property # <<<<<<<<<<<<<< @@ -20694,7 +20694,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971 * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes * * @property # <<<<<<<<<<<<<< @@ -20705,7 +20705,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_5ufunc_6ntypes___get__(PyUFuncObject *__ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObject *__pyx_v_self) { char const *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":973 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":973 * @property * cdef inline const char* name(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).name # <<<<<<<<<<<<<< @@ -20718,7 +20718,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":971 * return _PyUFuncObject_GET_ITEM_DATA(self).ntypes * * @property # <<<<<<<<<<<<<< @@ -20731,7 +20731,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975 * return _PyUFuncObject_GET_ITEM_DATA(self).name * * @property # <<<<<<<<<<<<<< @@ -20742,7 +20742,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_4name___get__(PyUFuncObje static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObject *__pyx_v_self) { char const *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":977 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":977 * @property * cdef inline const char* doc(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).doc # <<<<<<<<<<<<<< @@ -20755,7 +20755,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":975 * return _PyUFuncObject_GET_ITEM_DATA(self).name * * @property # <<<<<<<<<<<<<< @@ -20768,7 +20768,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979 * return _PyUFuncObject_GET_ITEM_DATA(self).doc * * @property # <<<<<<<<<<<<<< @@ -20779,7 +20779,7 @@ static CYTHON_INLINE char const *__pyx_f_5numpy_5ufunc_3doc___get__(PyUFuncObjec static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__pyx_v_self) { void *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":981 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":981 * @property * cdef inline void* ptr(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).ptr # <<<<<<<<<<<<<< @@ -20792,7 +20792,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":979 * return _PyUFuncObject_GET_ITEM_DATA(self).doc * * @property # <<<<<<<<<<<<<< @@ -20805,7 +20805,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983 * return _PyUFuncObject_GET_ITEM_DATA(self).ptr * * @property # <<<<<<<<<<<<<< @@ -20816,7 +20816,7 @@ static CYTHON_INLINE void *__pyx_f_5numpy_5ufunc_3ptr___get__(PyUFuncObject *__p static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject *__pyx_v_self) { PyObject *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":985 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":985 * @property * cdef inline PyObject* obj(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).obj # <<<<<<<<<<<<<< @@ -20829,7 +20829,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":983 * return _PyUFuncObject_GET_ITEM_DATA(self).ptr * * @property # <<<<<<<<<<<<<< @@ -20842,7 +20842,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987 * return _PyUFuncObject_GET_ITEM_DATA(self).obj * * @property # <<<<<<<<<<<<<< @@ -20853,7 +20853,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_3obj___get__(PyUFuncObject static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncObject *__pyx_v_self) { PyObject *__pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":989 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":989 * @property * cdef inline PyObject* userloops(self) noexcept nogil: * return _PyUFuncObject_GET_ITEM_DATA(self).userloops # <<<<<<<<<<<<<< @@ -20866,7 +20866,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncO } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":987 * return _PyUFuncObject_GET_ITEM_DATA(self).obj * * @property # <<<<<<<<<<<<<< @@ -20879,7 +20879,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5ufunc_9userloops___get__(PyUFuncO return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -20893,7 +20893,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 * * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< @@ -20902,7 +20902,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1067 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1067 * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< @@ -20912,7 +20912,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1067, __pyx_L1_error) - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -20928,7 +20928,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -20943,7 +20943,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< @@ -20952,7 +20952,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -20964,7 +20964,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py if (__pyx_t_1) { - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< @@ -20981,7 +20981,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -20990,7 +20990,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< @@ -21008,7 +21008,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -21024,7 +21024,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -21050,7 +21050,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_array", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -21066,7 +21066,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1079 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1079 * cdef inline int import_array() except -1: * try: * __pyx_import_array() # <<<<<<<<<<<<<< @@ -21076,7 +21076,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1079, __pyx_L3_error) - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -21090,7 +21090,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1080 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1080 * try: * __pyx_import_array() * except Exception: # <<<<<<<<<<<<<< @@ -21105,7 +21105,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081 * __pyx_import_array() * except Exception: * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -21127,7 +21127,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { } goto __pyx_L5_except_error; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -21143,7 +21143,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -21168,7 +21168,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -21194,7 +21194,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_umath", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -21210,7 +21210,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1085 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1085 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -21220,7 +21220,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1085, __pyx_L3_error) - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -21234,7 +21234,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1086 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1086 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -21249,7 +21249,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1087 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1087 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -21271,7 +21271,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { } goto __pyx_L5_except_error; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1084 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -21287,7 +21287,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1083 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -21312,7 +21312,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -21338,7 +21338,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -21354,7 +21354,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1091 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1091 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -21364,7 +21364,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1091, __pyx_L3_error) - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -21378,7 +21378,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1092 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1092 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -21393,7 +21393,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1093 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1093 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -21415,7 +21415,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { } goto __pyx_L5_except_error; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1090 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -21431,7 +21431,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1089 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -21456,7 +21456,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -21467,7 +21467,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1108 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1108 * bool * """ * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< @@ -21480,7 +21480,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -21494,7 +21494,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -21505,7 +21505,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1123 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1123 * bool * """ * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< @@ -21518,7 +21518,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1111 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -21532,7 +21532,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -21543,7 +21543,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { npy_datetime __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1133 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1133 * also needed. That can be found using `get_datetime64_unit`. * """ * return _PyDatetimeScalarObject_GetValue(obj) # <<<<<<<<<<<<<< @@ -21556,7 +21556,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1126 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -21569,7 +21569,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -21580,7 +21580,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { npy_timedelta __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1140 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1140 * returns the int64 value underlying scalar numpy timedelta64 object * """ * return _PyTimedeltaScalarObject_GetValue(obj) # <<<<<<<<<<<<<< @@ -21593,7 +21593,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1136 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -21606,7 +21606,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject return __pyx_r; } -/* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143 +/* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -21617,7 +21617,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { NPY_DATETIMEUNIT __pyx_r; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1147 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1147 * returns the unit part of the dtype for a numpy datetime64 object. * """ * return _PyDatetimeScalarObject_GetMetadata(obj).base # <<<<<<<<<<<<<< @@ -21630,7 +21630,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec } goto __pyx_L0; - /* ".venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143 + /* "../../../work/.venv-linux-arm64/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1143 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -35326,31 +35326,31 @@ static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) { int __pyx_clineno = 0; CYTHON_UNUSED_VAR(__pyx_mstate); { - const struct { const unsigned int length: 8; } str_length_index[] = {{0},{11},{6},{8},{16},{11},{20},{15},{1},{2},{15},{1},{5},{95},{1},{2},{15},{23},{25},{32},{20},{22},{1},{1},{74},{67},{63},{74},{71},{68},{100},{87},{66},{100},{94},{105},{99},{104},{37},{45},{22},{4},{179},{5},{54},{41},{8},{42},{15},{48},{41},{7},{6},{2},{9},{43},{50},{39},{34},{70},{31},{36},{52},{50},{50},{26},{30},{37},{5},{31},{8},{5},{21},{43},{39},{36},{39},{39},{41},{37},{30},{35},{37},{25},{30},{36},{35},{31},{34},{33},{38},{27},{25},{40},{39},{27},{34},{35},{45},{8},{1},{1},{3},{7},{8},{15},{1},{43},{39},{36},{39},{20},{12},{9},{17},{8},{9},{8},{8},{21},{17},{14},{17},{12},{10},{8},{10},{8},{7},{14},{11},{10},{19},{14},{12},{10},{17},{13},{12},{12},{19},{8},{13},{3},{44},{15},{5},{9},{15},{5},{17},{14},{18},{4},{1},{18},{18},{15},{11},{8},{5},{13},{1},{4},{5},{8},{8},{7},{4},{13},{12},{5},{15},{4},{6},{9},{22},{5},{15},{2},{1},{5},{6},{6},{8},{5},{7},{6},{7},{10},{14},{3},{8},{14},{13},{9},{6},{13},{21},{1},{8},{2},{3},{11},{6},{5},{19},{3},{5},{10},{9},{6},{5},{8},{7},{4},{4},{1},{3},{4},{2},{3},{4},{3},{3},{34},{4},{12},{1},{10},{7},{8},{4},{10},{3},{1},{8},{4},{7},{4},{14},{15},{2},{5},{2},{3},{4},{11},{5},{2},{3},{10},{7},{9},{1},{4},{13},{4},{2},{3},{3},{5},{11},{16},{7},{6},{16},{10},{11},{9},{11},{11},{13},{1},{9},{8},{5},{19},{9},{9},{4},{3},{18},{17},{10},{5},{4},{2},{3},{8},{5},{12},{9},{5},{8},{5},{5},{6},{6},{10},{6},{4},{11},{4},{13},{31},{8},{13},{12},{6},{2},{3},{1},{2},{9},{8},{7},{19},{13},{8},{8},{11},{11},{27},{8},{8},{6},{8},{8},{6},{1},{2},{2},{3},{3},{6},{6},{23},{6},{5},{6},{11},{6},{1},{19},{1},{6},{2},{10},{5},{4},{1},{2},{7},{5}}; + const struct { const unsigned int length: 8; } str_length_index[] = {{0},{11},{6},{8},{16},{11},{20},{15},{1},{2},{15},{1},{5},{1},{2},{15},{23},{25},{32},{20},{22},{1},{1},{74},{67},{63},{74},{71},{68},{100},{87},{66},{100},{94},{105},{99},{104},{37},{45},{22},{4},{179},{5},{54},{41},{48},{8},{42},{15},{48},{41},{7},{6},{2},{9},{43},{50},{39},{34},{70},{31},{36},{52},{50},{50},{26},{30},{37},{5},{31},{8},{5},{21},{43},{39},{36},{39},{39},{41},{37},{30},{35},{37},{25},{30},{36},{35},{31},{34},{33},{38},{27},{25},{40},{39},{27},{34},{35},{45},{8},{1},{1},{3},{7},{8},{15},{1},{43},{39},{36},{39},{20},{12},{9},{17},{8},{9},{8},{8},{21},{17},{14},{17},{12},{10},{8},{10},{8},{7},{14},{11},{10},{19},{14},{12},{10},{17},{13},{12},{12},{19},{8},{13},{3},{44},{15},{5},{9},{15},{5},{17},{14},{18},{4},{1},{18},{18},{15},{11},{8},{5},{13},{1},{4},{5},{8},{8},{7},{4},{13},{12},{5},{15},{4},{6},{9},{22},{5},{15},{2},{1},{5},{6},{6},{8},{5},{7},{6},{7},{10},{14},{3},{8},{14},{13},{9},{6},{13},{21},{1},{8},{2},{3},{11},{6},{5},{19},{3},{5},{10},{9},{6},{5},{8},{7},{4},{4},{1},{3},{4},{2},{3},{4},{3},{3},{34},{4},{12},{1},{10},{7},{8},{4},{10},{3},{1},{8},{4},{7},{4},{14},{15},{2},{5},{2},{3},{4},{11},{5},{2},{3},{10},{7},{9},{1},{4},{13},{4},{2},{3},{3},{5},{11},{16},{7},{6},{16},{10},{11},{9},{11},{11},{13},{1},{9},{8},{5},{19},{9},{9},{4},{3},{18},{17},{10},{5},{4},{2},{3},{8},{5},{12},{9},{5},{8},{5},{5},{6},{6},{10},{6},{4},{11},{4},{13},{31},{8},{13},{12},{6},{2},{3},{1},{2},{9},{8},{7},{19},{13},{8},{8},{11},{11},{27},{8},{8},{6},{8},{8},{6},{1},{2},{2},{3},{3},{6},{6},{23},{6},{5},{6},{11},{6},{1},{19},{1},{6},{2},{10},{5},{4},{1},{2},{7},{5}}; const struct { const unsigned int length: 9; } bytes_length_index[] = {{1},{8},{6},{8},{8},{1},{7},{9},{42},{64},{31},{94},{15},{129},{109},{53},{125},{55},{254},{240},{192},{14},{13},{459},{494},{210},{332},{8},{430},{256},{20},{160},{17}}; #ifndef CYTHON_COMPRESS_STRINGS #define CYTHON_COMPRESS_STRINGS 90 #endif - #if (CYTHON_COMPRESS_STRINGS) == 1 /* compression: zlib (4249 bytes) */ -static const char cstring[] = "x\332\265XK[\023\331\326&H\333\340\255\t\242\330\335\322\247P\020\265!\n\342\r\265\317\203h+\347t\253\021\304V\333\256\256\244*\241\244R\225\324\005\002\266\347;C\2065\254a\r3\254a\r3\314p\0173\344\047\370\023\316\273vUB\270\004\360|\337\307\223\244v\355\275\366\332\353\372\256\265\021.\257\031\216\260$\255(\202 \331\302\365\262`d>(Y\373\047aU\265\227\004Y-(\272\245\032\272p\201\226-[\312+\302\310\233\361\221\302\370\210<>\362tz\344\327\351\221\371\324H\356\262m*\212\2203\245<6\330W\256\214\tcBQ2\245\202\270\"i\216b\t\251\324\007\313\320S+\212\2762\256\251\272S\036\227\314\302\255\251k\232\232\271V\\\263\227\014\375Fjb\362\232\245\332\312xQ\312.\343 \353\232\224\225d\243\361\020m\245P\324$[i\274\033\331\242h\031\332\212b\212\305\265r\n\337\353\323\302\375_\225\202a\256-\252\312\252`\344\204\373YC\267\325\274c8\226 \3512\0242I\273\235\323\252\336X\260lS\225\025\271\205X0\314}\327\267\3175)\177\372\373\014\027\363y\2668\317\205\234\345Z\246p2\350%U\267-\321R\354\313W\246\205\202j\025$;\273\244\352\371\026\213\347pnNU4Y\270\320\216\223e\377/Y(\360\216\030\371\311\302\036\342\004\005\224\262Pp,[\310(\302\234n+y\305L\375\227\333U]xw}L\320\313\343\023\357\307\204\274aO\013{s\312GjD\302~\374$\310\006bF7lA)\253`\205\330\313\251\272\244\305\021\370\361Sj_6\021\325\236\242\364Z2u\020 \202v\326\031\262Vv\t\307\025\240d\301)\300\334\244\013\245r*\"\336s\017\014\257c\023P\311\246z#\313\"dQ$\r1\331\2320\3341+\222\252I\224Iq0\212\010\306\254\241i$)?&\223\335QA\246\343$i\000\235\356\024\212\360\276iJk\221\207\032u\342@BY\265\350hE\247\337|V\265\242\221\254\031\222,F\252*\300hH\250\310c\300\022H\271\035\247\2471\204\213s\222\243\331\202(\232\212\354d\025Q\024d\207\333X7\364q\270|E\005\220\213bV\325U[\024\271\024)\304\261\251\244\n\330\247r\201\342Sh\227Z\240\310o%s\200nK\273(Z\333\r1\252\305r\271\371\336P\032aD\361`I\005\374\250\353JJxB\351\205\221E\364\302v.MS\025S\\\254\324a\314\030\373=\302x\202\322\326\263\tVr0(\200\364M\243\363\002R\036\270G\325\277t\007bd\307\016\033\306\223\205\254c\232\004\213\261C)e\035\356g2\245\244iF\226f#/\000l\244\324\036\253Q\262\223\215\243\336\307J9vn\374\316\216\236\021Bm\265\227\037?]\271\257I\205\214,\37543?;7\267\047\342\355\r\351\242\210\232,\026\r\330\000h\034\347\325~\244\224i\242l8\020\373@20=\220\006\361f\252\345vdq\230g\371\273(\266#C\350\020\263\203\010wd\367\376\255_\233UD\202Q\020\243Zq\250\316\255m\047\324vA$\021\332\257\346L\010\200*\245\352\355iL\305Re\007\270\333\236\204\014\326f\271\025\224\016l\262\366&(\232\2602?\003\330\245f\333\034\0041\3331\330oaG\047\320\236\216{\001R\342i)\373\3644\373,\211(\026b\371z\033\nJ\373\375-\325\246\253x\254ij\321R\255\237\237\241\020\305\265h^)9\n:\r\272`\245\266\356Zm\242y\317\314\335\217\264%s\017$#\347\035D\023e\256(\276X+\343\373\010\355\206\370L)\333/\225\234(\306-\001\n\024\212\0215\r[\003\354\207\301\n4!\323\036\374)\244\002\037\224U>\221s\364,=\367\322p\227.\333\245\336-_\276\001\016\370\213\312\031\215\n\200\001\3764dG\343k:\352\026\177\222\311E""\272\367\212hH\262\313\226S\210\336b.4\244*\020\215\034\275\250f\227\301\341\261\336\240[\261\245L\304\262\204\024l\260mT\354]\240\326\234P\312\364\302\343;\336c\265\210\276\013\343D\334\332-\322E\265\250v\033\016\3727\005=L\324&\245v\334\354S{\336\354\033UG\3148\271\034\242\230\372&\376#\026\350NH\003.\034e;/[\222\265u\275\217\047\342\2365~[\323\263\252\221j\312cep7\310f5\014\341\036\021\204Y%#e\227[\241\230\337\234\254\035\340\314a\270\261\022!r\326pt{\033\000\313TD\351+\362\037M\321i\226\220!\356\224P0\2558L\"^\361\013o3d\362\"\377!\023F\377\234\221\321q \007\321\235+\360\047\317k \214h\301\320(!\nT\327\343G\323]\200\324\306T\231|\307_`\363\310jj\241\361\024%\2719\004@\363al%\016&H\301\025|!\005-""\331\206\335\360z\344\362\206\277\033\316\306\023\266q\234\353\216\350d\034\047SFaB4F9\320\246\tq\354\254n\254r]\371O\244\266\310]\027Y`u+\200` \370\005<\312\345\353bF2\313bY6l1\017*k\r\n\346\326\360]_\027\327\243\251u\312\226\347\210%.3=\225\222\311a&z\222\314\345\230\366\337\211z\327\261\215\037\335\364\277g\352\335\267\202Lx4\314T\023\365\363\227+\211J\177\345}8\034\026j\267\331\313w\354\335\037\354\017\261\336\375\315F\211(\247\303\013\354\376\263\232T3Y\3725{\375\206\275\371\235\375.1)\317\362*S?\354\265?\3032\331x\377\346\036\313\330\377>^\376\334\335\321sr\343\221\233pO\273O\274\211z\367\211\255\227\315\356\244\333\357.\322\340\370\306m\367\242\233\256\237H\272Iw\250~\262\337\235uK\365\023}\356\025o\202\235\177R-\325\022\233\335\0477\026@\237v\263^\262\205\373\240\367k%Y\031\256H\374\265\027K\3077\2466L\367\214\233\367\322\236\324d\362\217\332\205\332\303\232\302\346\177c\277A\307H\213\034\313\3457O\322\241W\275\247\376L\375\304\200k{7\375\204\237\334\204\244O\334;\364B\342\314y\363\376Q_\362!T\257\333\345\316\270\363^\302;\347\017T:+\227\202Dp.L\206C\020\340\030\264e\047F\330\310]L\014\207\022\364\335\365:\312F\037\204\351P\256\016\361\327a6|;(\205]\341\314^\304\027\331\305\233A:\220\303\241\035{\371a\203\327*R\305\016\036T\273\252s\265\005\226~\371\371D\307\340\225\026\177\374\304\336\220\257XV\336\214-v\252\243\047\351\036\215l\003{\r\336\013\207\302\251\360S\355\021{\001\223\210L\204\317\213\254\270\312V\313\254\374\027\373\353\023\373\364\257\317G;zn\307\361\324U\235\251.\324\372ki2%\354\370\026\213\203\223A2\030\016\n\325\251\352G\366r\221-\342\300\017\354C\211\225\326\331:1h9\274\337\275\341J\360m\367\355\300dw\377Y\233\250=\341|(l6\273\317\263\363\023\234\327\207\352\361\332Tm\225-\276\306\266\336\216\236\023\360\351\272\227\364.\373\027\310M-\201\321U\233\251\245\353\335\275M\245 \317\203p&\\\250&\311W\307\275)o\2752\020|\035\3318LS\314\014\2709o\206\002\345\306\206\264\361\311\233\365\340\326\357\275{\360\257]\231\250\237\350w\037\272\206\237\366s""\225\231Jz\363d/\002v\320\313\"&\232+\022\205\354=(by\027\275\005?\351_\364\347+\307\203\211`6\260\310wa#xqL\357\017\236\304\376\006\265\330\344\323Z\242v\246&\261\347\177\262?\221a\231\315\3637\260\347Q\230hH\272V\371\272\262\032\250a\251z\264\232\001qr?\355)gm6\277\300\026^mn\327\1776Q\035\2023J\377\317\006\270\017\365G\274\0222\344p\312N\363X+\265Uv\263\273\007\372\366o\351{\255\322G\342\304\314\351\310\007\336QO\362,n\357D%\271up\362\202?\344?\010\216\006\022\273=WK\326.\"B\245\317\347;z\356\206\235l\372\027\004\211\310~G.\310LV(\016o\006\017\331-\022q\220-\002\257\"D<\357=\366\317\372\245J\202\"~\220\235\277\023&\302\376\360mu\265\266\304\026\021\244\320d\231-Sz|\356\350(\047\036v\342\361\260\3631=\036w\376\334Y\347\362\237\353\350\371\206\235\032BPP\222\376\320q6JH\240\362g\241\243\347,\000\314\360\337\263\31196\367\026\373\336%fh\373L\347<=\346;5zh\235\0050;\007\210\371[\345X0\026j\2651\236T+le\265\336=\340~\362\237\007\177\257\246\330\213tD\225$y\267\322\372\024Y0\006\324o6lw\032\263K\276T\357=\353\252^\211\t\210\230\010\245a\214%\266D(\277\t\302U\216\254\275\247\335\333\336\005\357!\374M\3506T\357\377\316\273\342O\3703\233X\231b\003\227+G*\323\301B8P\355\254n-B\200\223\337z\211\272\020\231\354}m\270\266\314\355E\314\331\207\345\315\006\244\357%\017\020\343={\017\027\000\216\211\230-k\233\010\307\211\377\216\333\236\332}\357\335\202:\0241mx\222i\201y\244\307\3518\244\306(9\237\206\217\252_U\323\325e\226\236g\363\210c\002S\270\362R\273\254|\030\245^-Q\357>\013\200XCvt\017B\304\274\377\272\362$@\005<\203\010PPW\216\372\371\312\253`$X\t\323\321\244\016\033o\345\361f\367\235F\344\376\306^A#2\021\371\271\351Z\201\tQm\270Z}R\273\307\026\243\222\206\262]`\005\235\351&3\035\346\254D\236\315\263\301\353A\047B\211:\202\310R\020,E\373\245z\377\250oV\316\007/\203\217\325\013\200\367\364&\325\231X\217zo\277\373O\317\366\247+\257\203\031\342\265B\025\033\210a\371C`\304\316\276eo)\273\251#\350\035`\003w\302\257yB\347j?\263\227\260\330B\363\264\255\020\033n\360\356?\347""\035\367\247\3745\200\323j\250V\235\032\362\370\234w\004\236\037\276\027N\300\362\211\375H\246\202\031\304a\262A\262\036\014\340\354\265\332W(\007\r\222\353\250\315\375A\232HNr\373\337\r\037W\223-\301~\316\353\211\343\242\rm\224\323\227\242\304%\267}\345/Vn7\334\326\342-jaF\275\026D\272v+\220\202rX\242\245[n\237;\211\236\341\250\227\361\273Z\202\005f\213\302\017\3762\"\302\323\356#\310>\345\255\372\331V|\353\035pK^7\254\330=\306\306\342\272\327\n\357Xhi\371\306\000\334\013\301\216\002\270V=R\235h\224\342\311\216\236o\t9\352}\247\367\371P\213\366\203g\372\3116\253;\364\037v5\377j\005r\001)\334\377\241v\251\231\251\034;\256\240S\033jNQ\2575M\265\244~\342\214\273\340}G8\262m\370\035p\350\251\377\224\212P\013\203\321\340,J\331\221p\242\311\350[\257\337{K\260\315\001\201\235\036\366g\321\250\301b\353\004\302\365\344\031v\346\022\267fc\352\220;7\233\241\333\242\205\373/?\315Q\202\365\215\220\360\000\303t\220\017\323\254k\304\377#\230\000\370F=\350\335h\3079\257\313\373\0058:\\\311\004\307\302\013!\257bS\033%\212\301\255&\265\367{\357\216\177\203@\354<4~R\231\254\274\241B\366\234z\362\227\224\364\347\334\0225\300\363\274w\236\201\211\372xT\240I}\014&\022,9\031u\273\003\256\tH\032j\274\366s\342\2447\346\313\324#WL\n\212/\233\244t\377\245\322Uy\204\374\350\013&vSZ\301P4\371\n\347\336G\0071U)\005G\032\224\273&I\357>\330\261D\331\227\360\316\240\236\377\205U\033`\3730\2206\271J\324\346/y\212\317\311-w\010\215\370\204\367\310?\202\t\340\321So\306#\037\234\352\333j\334{\335\257\260\347\003H\356\260\037g\252\003\265#\265i\366j\261\016\243\245\331\251\261\312\303\212\022\334\004\362\367\205\267\253\303U\211u]\362%j\327\001\342\354\033\001\333\246+\363\001\352W\324\213\377\212\016\367\r[\004\266\275\213\233_v\347\037\265\241\332dm\221\315\277b\257\260\200\312A\240\027U\336c\336(\017\265\266\227\241\343\033\023P+I\031\323\355}\315\301\3670\264_\302\367\360\264@\000\326\005\252\326\353\323\2070\301\272~\254\334\rx\227\016\303no\251\233\305\016g\2644dW\331\325\307(\216rm\234\275\3069Q""\375\266\231\215R\272\216>\346c\243E\232\245\307l\347\243\316\235`\230hBa\\\252\251}\275\311\201}\260\232\257\275\346\265\034\267\222?\321\033\262.\224\356\317\337m\265W\377\001\333_\033U"; - PyObject *data = __Pyx_DecompressString(cstring, 4249, 1); + #if (CYTHON_COMPRESS_STRINGS) == 1 /* compression: zlib (4212 bytes) */ +static const char cstring[] = "x\332\265XK[\023\331\326&H\333xm\242(v\267\364)\020Dm\214\202xC\355\363 \330\3129\335j\004\261\325\266\253+\251J(\250T%u\201\200\355\371\316\220a\rkX\303\014kX\303\0143\334\303\014\371\t\376\204\363\256]\225\020.\001<\337\367\361\220\324\276\254\275\366\272\276kU\204+k\206#,J+\212 H\266p\263,\030\231%%k\377$\254\252\366\242 \253\005E\267TC\027\006i\333\262\245\274\"\014\277\275>\\\270>,_\037~69\374\353\344\360\\j8w\3056\025E\310\231R\036\007\354\253WG\205Q\241(\231RA\\\2214G\261\204Tj\3112\364\233\223\302\303_\225\202a\256-\250\312\252`\344\204\207YC\267\325\274c8\226 \3512n4\351\372\235\313\252\336\330\260lS\225\025\271\205X0\314}\367\267\2575)\177\372\373TV\222\r\353E\2668gh+\2129\275f/\032z\n7\203^Ru\333\022-\305\276ruR(\250VA\262\263\213\252\236o1I\016\367\346TE\223\205\301v\234,\373\177\311B\201\371\304\310\220\026\316\020\047(\240\224\205\202c\331BF\021fu[\311+f\352\277<\256\352\302\373\233\243\202^\276>\366aT\310\033\366\244\2607\247|\244F$\354\307O\202l\300\251\272a\013JY\005+\004GN\325%-\016\221\217\237R\373\262\211\250\366\024\345yC\216\203x@\010\225\202\003\007\241\245\n\357\232y\207\242/%\354\361w\\xiX\226\232\321\024!\216H\311\334GN\243h\303?q\000l)k9\305\242a\332M3\244\276\220\355a\203\341\343\247Aa_\016\221\362$\222$\034F\373/\223\222&tK\203\2470b\332\252X\\\224,eD\310\302\344\266\264\254\010\206\256\255E\374\204\233\\\370\271\364\313\353\366ZQ\0218\003\323\372?\342n\t\010\213\261Qa\274y\311\253\371\331\203/\232\334\3556\030O\324\225U\321\206\315E\313V\212\310\010\301R\365,\242\317&\203\362K%\241h\032\266\201\013\310?9E\262\035S9\354\025NQ\226lE,\025\305H6\021p\"\213\317\017}\317\264\244s\257\302]yX\302\020LE\222\257s\372\002\007\316\025\000\347l\034\361\005CVF\221\201E\340\031\340m$;BX8\0023\001\300\364\021\236HB\203\330Z\224\212<\313$d\254\360\334\320\225\347\206\255\010\366\"r7R\207$\223\025M\315(&t\300\215\204\233\340l\022\221.\274|\362\362\372\304\275\t\216\242\246BU\302\202\332\231\254\006aa\005\200y\306Q5\0337\220o\254\2240\233\023\250\272\350""\nd\203&E\320\265\036\260\027\025\235\\B\003a\204\353-Q\326\211\221EFb\370VQ\233p\372gI\263\224\324\374\213\231\027\003o$S\007\001\"\210;E4\262\rk\223\265\262\213\270\256\000%\013N\001\346&](\225S\021\361\236g`x\035\207\200J\266\323\240\270\021\023\332J\241\250\301\0347v\035\024\213k\345\024>\222,\213\220]\2214\304pk\202qG\256H\252&Q\346\305\301+\"x\263\206\246\221f\\\254LvG\305\231\214\223\252\001\214\272S(\"ZLSZ\213<\332\250+\007\022\312\252EW+:}\347\263\252\025\215d\315\220d12\215\002L\207\204\212<\n\354\201\224\333q}\022C\204DNr4[\020ES\221\235\254\"\212\202\354p\237\350\206~\035!\262\242\002\370E1\253\352\252-\212\\\212\024\342\336TR\005\234S\271@\361-tJ-P\246\264\2229@\303\305]\024\255\375\203\030\325n\271\334\2347\224F\330Q\374XR\001_\352\272\222\022\236R:bd\021\275\260\235K\323T\305\024\027+u\0303\306q\022\325\004\202\336\326\273\t\206r0(\200\367m\243\225\002\262\036xF\325\277\364\004bd\307\t\033\306\223\205\254c\232\004\243\261C)\305\035\356g2\245\244iF\226V#/\000\234\244\324\036\273\0218\220\215\243^\311J9v\356\372\275\035M \204\332\352\027?~\272\372P\223\n\031Y\372ijnzvvO\204\334\273\004\210\"j\270X4`\003\240w\234N\373\221Rf\212\262\341@\354\003\311\300\364@\032\304\233\251\226\333\221\305a\236\345sQlG\206\320!f\007\021\356\310\356\375[\3056\273\210\004\243 F\265\345P\235^\333\316\251\355\206H\"\264\337\315\231\020\000UM\325\333\323\230\212\245\312\016p\272=\t\031\254\315v+(\035\330\224\355MP4ae~\007\260K\315\266\271\010b\266c\260\337\306\216\316\241=\035\367\002\244\304\323R\366\351\201\366\331\022Q,\304\362\3156\024\224\366\373[\252M\027\362D\323\324\242\245Z\077\077G!\212k\321\234Rr\024t&\364B\226\332z7k\023\315{f\356~\244-\231{ \0319\357 \232(sE\361\345Z\031\237\031\264\047\342s\245l\277Rr\242\030\267\020(P(F\324dl\rp\036\006+\320\202Lg\360\247\220\n|PV\371B\316\321\263\364\334K\303]\272l\227z\267|\371\0068\340/*g4*\000\006\370\323\220\035\215\357\351\250[\374I&\027\251\245\020\321\300d\227-\247\020\315b.4\244*\020\215\034\275\250f\227\301\341\211""\336\240[\261\245L\304\262\204\024l\260mT\354]\240\326\\P\3124\341\361\035\237\261ZD\337\205q\"\032\"\213tQ-\252\335\206\203~OA\017\023uG\251\035MSj\317\246\251Qu\304\214\223\313!\212\251o\342_b\201\336!i\300\205\243l\347eK\262\266~\016\210\027\342\0367\236\255\351Y\325H5\345\2612x\227\310f5\014\341\036\021\204Y%#e\227[\241\230\277iY;\300\231\303pc\047B\344\254\341\350\3666\000\226\251\210\322G\344_\232\242\323*!C\334)\241`Zq\230D\274\342\to3d\362\"\377\"\023F\277\266\310\3508\220\203\350\346\025\370\223\3475\020F\264`\0365\253\"PET\344,\017X\023\271\277\035\352\225r\216\337\302\277\342\013\251\225#w\3464)o\361\356\344\316\004,\206\340\214\355\226s4-\002\343x\244\024E\202n\204m\243\026lG\375m\370\336Dr\014\262\253r^32x\305X\347\215\366\266\211\350X\2128\367bZUE\352+\364\274*\243\047ki\343\350\047\000x\226~\010\240\356Q\245\223\212\010\356\032\334\2057&l\331\267\306)\305\"\305h\304\217\252\\G\312i+\372ZWbD\\B\352\322oM\313\313\312\032\376-\3559\272\024\374\213Z\306\3212e\036\024\226\"\231\331E.\335n#S!j-F\005\274x\305\327cD\357_\010S\221n\244\367/\372h\320(!\nT\327\343G\323]\200\324\306R\231|\307\047\260yd5\265\320x\212\222\334\034\002\240\3710\266\022\007\023\244\340\n>\220\202\266l\303nx=ry\303\337\rg\343\t\3338\316MGt2\216\223)\2430!\032\243\034h\323\2048vV7V\271\256\374+R[""\344\256\213,\260\272\025@0\020\374\002\036\345\362M1#\231e\261,\033\266\230\007\225\265\006\005sk\370\254\257\213\353\321\322:e\313\013\304\022\227\231\236J\311\3440\023=I\346rL\373\357D\275\353\370\306\217n\372\337S\365\356;A&<\032f\252\211\372\305+\225D\245\267\362!\034\n\013\265\273\354\325{\366\376\017\366\207X\357\376f\243D\224\223\341 {\370\274&\325L\226~\303\336\274eo\177g\277KL\312\263\274\312\324\245\275\316gX&\033\237\337\334c\033\347?\304\333\237\273;\216\235\332\230q\023\356Y\367\2517V\357>\2715\331\354N\272\275\356\002\rNl\334u/\271\351\372\311\244\233t\007\352\247z\335i\267T?y\306\275\352\215\261\213O\253\245Zb\263\373\324\306<\350\323n\326K\266p\357\367~\255$+C\025\211O{\260ubcb\303t\317\271y/\355IM&\377\250\r\326\036\327\0246\367\033\373\r:FZ\344X.\277y\212.\275\346=\363\247\352\047\373\\\333\273\355\047\374\344&$}\352\336\243\t\2113\353\315\371G}\311\207P=n\227;\345\316y\t\357\202\337W\351\254\\\016\022\301\2050\031\016@\200\343\320\226\235\034f\303\367\2610\024J\320w\327t\204\215<\n\323\241\\\035\340\323!6t7(\205]\341\324^\304\227\330\245\333A:\220\303\201\035g\371e\3757*R\305\016\036U\273\252\263\265y\226~\365\371dG\377\325\026\177\374\304\336\222\257XV\336\214-v\272\343X\322=\032\331\006\366\352\177\020\016\204\023\341\247\332\014{\t\223\210L\204\317\213\254\270\312V\313\254\374\027\373\353\023\373\364\257\317G;\216\335\215\343\251\253:U\235\257\365\326\322dJ\330\361\0356\373\307\203d0\024\024\252\023\325\217\354\325\002[\300\205Kl\251\304J\353l\235\030\264\\\336\353\336r%\370\266\373n`\262\373\377\254\215\325\236r>\0246\233\335\027\331\3051\316k\251z\2426Q[e\013op\254\247\343\330I\370t\335KzW\374ArSK`t\325\246j\351zwOS)\310\363(\234\n\347\253I\362\325\to\302[\257\364\005_G6\016\323\0243}n\316\233\242@\271\265!m|\362\246=\270\365{\357\001\374kW\306\352\047{\335\307\256\341\247\375\\e\252\222\336<\325\203\200\355\367\262\210\211\346\216D!\373\000\212X\336%o\336O\372\227\374\271\312\211`,\230\016,\362]\330\010^\\\323\363\203\047\261\277A-6\376""\254\226\250\235\253I\354\305\237\354OdXf\363\342-\234\231\t\023\rI\327*_WV\0035,U\217V3 N\356\247=\345\254\315\346\346\331\374\353\315\355\372O\047\252\003pF\351\377\331\000\017\241\376\260WB\206\034N\331I\036k\245\266\312nv\037\203\276\275[\372\336\250\234!qb\346t\345#\357\250\047y\026\267w\242\222\334\27289\350\017\370\217\202\243\201\304\356\316\326\222\265K\210P\351\363\305\216c\367\303N6\371\013\202Dd\277#\027d&+\024\207\267\203\307\354\016\211\330\317\026\200W\021\"^\364\236\370\347\375R%A\021\337\317.\336\013\023ao\370\256\272Z[d\013\010Rh\262\314\226)=>wt\224\023\217;\361x\334\371\204\036O:\177\356\254s\371/t\034\373\206\235\036@PP\222\376\320q>JH\240\362g\241\343\330y\000\230\341\177`\343\263l\366\035\316\275OL\321\361\251\3169z\314uj\364\320:\013`v\001\020\363\267\312\361`4\324j\243<\251V\330\312j\275\273\317\375\344\277\010\376^M\261\227\351\210*I\362n\245\365i\262`\014\250\337l\330\356$V\027}\251\336s\336U\275\022\023\0201\021J\303\030\213l\221P~\023\204\253\034Y{\316\272w\275A\3571\374M\3506P\357\375\316\273\352\217\371S\233\330\231`}W*G*\223\301|\330W\355\254nmB\200S\337z\211\272\020\231\354Cm\250\266\314\355E\314\331\322\362f\003\322\367\222\007\210\361\201}\200\013\000\307D\314\226\265M\204\343\330\177\307mO\355\276\367\356@\035\212\2306<\311\264\300<\322\343l\034R\243\224\234\317\302\231\352W\325tu\231\245\347\330\034\342\230\300\024\256\274\334.+\037G\251WK\324\273\317\003 \326\220\035\335\375\0201\357\277\251<\rP\001\317!\002\024\324\225\243~\276\362:\030\016V\302t\264\250\303\306[y\274\331}\257\021\271\277\261\327\320\210LD~n\272V`BT\033\256U\237\326\036\260\205\250\244\241l\027XAg\272\311L\2079+\221g\363\254\377f\320\211P\242\216 \262\024\004K\321y\251\336;\342\233\225\213\301\253\340cu\020\360\236\336\244:\023\353Q\357\351u\377\351\331\376d\345M0E\274V\250b\0031,\177\000\214\330\371w\354\035e7u\004=}\254\357^\3705O\350\\\355g\366\n\026\233o\336\266\025bC\r\336\275\027\274\023\376\204\277\006pZ\r\325\252SC\036_\360\216\300\363C\017\3021X>\261""\037\311D0\2058L6H\326\203>\334\275V\373\n\345\240Ar\023\265\2717H\023\311)n\377\373\341\223j\262%\330/x\307\342\270hC\033\345\364\345(q\311m_\371\013\225\273\r\267\265x\213Z\230\021\257\005\221n\334\t\244\240\034\226h\353\216{\306\035G\317p\324\313\370]-\301\002\263E\341\007\177\031\021\341Yw\006\262Ox\253~\266\025\337z\372\334\222\327\r+v\217\262\321\270\356\265\302;6ZZ\276Q\000\367|\260\243\000\256U\217T\307\032\245x\274\343\330\267\204\034\3653g\367\371\247\026\355\007\317\364\223mvw\350?\344j\376\265\n\344\002R\270\377C\355R3S9v\\E\2476\320\\\242^k\222jI\375\3449w\336\373\216pd\333\360;\340\3203\377\031\025\241\026\006#\301y\224\262#\341X\223\321\267^\257\367\216`\233\003\002;;\344O\243Q\203\305\326\t\204\353\311s\354\334en\315\306\322!On6C\267E\013\367_~\232\243\004;3L\302\003\014\323A>L\263\256a\377\217`\014\340\033\365\240\367\243\023\027\274.\357\027\340\350P%\023\034\017\007C^\305&6J\024\203[Mj\317\367\336=\377\026\201\330Eh\374\2642^yK\205\354\005\365\344\257(\351/\270%j\200\347x\357<\005\023\235\341Q\201&\365\t\230H\260\344x\324\355\366\271& i\2401\355\345\304Io\324\227\251G\256\230\024\024_\266H\351\376K\245\2532\203\3748\023\214\355\246\264\202\201h\3615\356}\210\016b\242R\n\2164(w-\222\336g`\307\022e_\302;\207z\376\027vm\200\355\343@\332\344*Q\233\277\350)>\047\267\334\0014\342c\336\214\177\004\013\300\243g\336\224G>8}f\253q\357q\277\302\231%\220\334c?NU\373jGj\223\354\365B\035FK\263\323\243\225\307\025%\270\r\344?\023\336\255\016U%\326u\331\227\250]\007\210\263o\004\034\233\254\314\005\250_Q/\376+:\334\267l\001\330\366>n~\331\275\177\324\006j\343\265\0056\367\232\275\306\006*\007\201^Ty\217{#<\324\332\276\014\235\330\030\203ZI\312\230n\357k\016\276\207\241\375\022\276\207\247\005\002\260.P\265\276>-\205\t\326\365c\345~\300\273t\030v{K\335,v\270\243\245!\273\306\256=Aq\224k\327\331\033\334\023\325o\233\331(\245\353\350c>6Z\244izLw\316t\356\004\303D\023\n\343RM\355\353m\016\354\375\325|\355\r\257\345x+\371\023\275!\353B\351\376\374\335V{\365\037\302""\206\n\272"; + PyObject *data = __Pyx_DecompressString(cstring, 4212, 1); #define __Pyx_DecompressString_LZSS_UNUSED if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) const char* const bytes = __Pyx_PyBytes_AsString(data); #if !CYTHON_ASSUME_SAFE_MACROS if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } #endif - #elif (CYTHON_COMPRESS_STRINGS) > 0 && (CYTHON_COMPRESS_STRINGS) <= 90 /* compression: lzss (5742 bytes) */ -static const char cstring[] = "\377 (you ha\377ve at 0\377x object\377> with d\377imension\373 \"\033\001stage\377 %Y-%m-%\377d-%H:%M:\377%S.%f(tr\177ee frag.\000\377t)), , p\377aram_val\377ues ..js\377on.venv-\377linux-ar\377m64/lib/\377python3.\37712/site-\357packf\000s/a\357cado\000\004s_t\177emplate\020\004\377_ocp_sol\377ver_pyx.\376\001\0000: <(\tA\006>?A\271\002\257OcpS\240\002C\341\002.\374\216\000a\000aints_\377set(): m\377ismatchi\353ng\347(fu\000fieold \"2\025st\004<\025e\233@_\242Cs\346@\211\001\210 \377ex must \377be Integ\347er.\266\023\036\036in \377[0, nx-1\377], got: \362\2003g\204#\352\003{} d\375o\261`not ex\375i\207\000at finwal \374c{}.*\032\210\242\204\003\274\013\204\004N\200\005$\035\202\000i\274\260a\371@vali\217`r{gu\331\204\001. \000\000\374\000\003\004\005\n Poss\337ible \352\204\004ar\373e \217\026optio\371n\372D\343\007suppo\301r\350\001\363A\343\000(,\250\203%{}a\"\3614\213\204\004\367\003\374!a \332\200!\350\320\200*\257\206\002\364\204\001a\313$ \047r\377ti_phase\377\047 can ta\177ke only\307#\367 0 \211\205\001SQP-_type \357\206\003s\312\205\023\376-.s 0, 1,\273 2\\\006RTIG\037:\376\245Oset_new\377_time_st\377eps() si\177nce it \313`\376\316\002a proto\374\307\000\354\206\001featur\371e\227\207\022P\020updat\367e_q\361\210\006cond\273_N?&Can\321Bs\367sig\345 o re\327ad-\346\"m\264\211\002vi\357ewIn\354\204\003mod\377e, expec\177ted \047c\047\210\211\001\377\047fortranu\047\314\206\002 %\005sha\230@\377in axis \377NoneNote? that \365\210\003\376\001\377delibera\243te\332@\350\211\001W\000r!\001n\377 PEP-484\366\242\212\002re\201\214\001s su\377bclasses~\311\212\001builti\234`~\202`s. If \271\214\001\377need to \371p%\000%\tthen wset\200\000e \047\363\002\325a\362\205\001_\364#\047\205\213\004iv\376\242\000o False\377.TODO!Wa\177rning: \371\213\003\374\335\213\010\252!ched m\216\342\000mum\324@\310\001\307\206\001.\270\246\214\003\037\022\336@ned\270""\210\001t\336\203\214\001dd_n\230 al\347pha\242\207\t\352\205\002vai\363la\303\207\001\353\204\004_RTI\277collec\255\207\002.\227abc\263\213\014:\236\205\004\253\212\005n\377umpy arr\233ay\234Cco\242\213\003\010\036d\333isw\001en}\001gc\373is\004\003dloadw_it\262B: f\237\000\377ed, file\376\231\212\014: no de\377fault __\377reduce__\367 du\337\"non-\177trivial\033\000\177cinit__\252\002\377._core.mb5\000i\265\002_\004\324Aim\220\211\001>\033\tumath\021\016\343\217\t]_\350\216\002idx\370\217\004_\310\214\006\373of\213bsame \377size. Go\215t\005\002s -\000\250\220\n,\007n{p.\314\".set\317>:\216\220\003 \336\212\003 {}o\n\274\210\001\275f\316 t. Y\362\221\005{\333}.\023\036in\002-st\365rU\014t\341 d cu\337rrent\265\204\004e \317in u\355B\301\205\001al\277locate\272c \037data.\013\020\347\206\003\315\221\001\376\252\221\003s.utf-8\366\245\223\014{}\324\223\010{})<\377lambda>A\317SCII\211\221\022\235\221\023__\377get_poin\317ters\355\222\004\017\031st\377at_doubl\335e\006\036int*\036maOtrix\205\025\340\204\004c\301\224\002\273__\254\025set\224\001e\341_\013\033\221\223\014\335\222\033\314\223\024ust\207om_\246\213\003\225\222\"\374\221\026\225\222\026_\354\322\207\001\004\027fr~\000qp_\373in(\027resid\017ualsK\027\305A\321\216\024\211\210\t\370\324\225\023\332\221\010\365\225\023print}_\251aistic\272\217\024\n\244\000e\214ts\000\026\371\216\016\226\220\024\324\204\001\376\243\231\001s_spars\371e\271\220\030\324\220\030_for_\203x0\372\220\024\363\206\001\267\212\005\376\227\023\277\217\024E\377llipsisF\177NSQPSQP\210\214\001\377Sequence\002\335\231\001.\342\231\007\340\204\024\245\206\022\214\205\023\337\206\003\257\206\010\340\006\036\271A\317\231\022@\010\264\206\003__P\373yx\001\000Dict_\377NextRef_}_\214\217\004e____\341\217\002\274\000\006\354\207\001item\026\001dd0\001 \000e\371\207\001\047\001ex\263\214\001?__func7\001\211\210\020@\272\017\275\210\002\222\210\002\357a\004\007\230\005g\225\207\005x\212\000\353\214\003\222\001main\003\002\357odul\243\002nam\326\002""\003ew\263\001p\324\000ch\037ecksu\252\000\n\001\335\207\003\354\215\235\001\344\220\001e_\005\002unp\267ick?\000En \005vyt\342\217\001\367\001qualO\0050\252\216\005\263\216\006\315\210\005\304\216\006ex\253!\345\224\002\362\204\004s\260\010\323\210\016__te\353st\321\001s\337\216\001out?ineabc\324\236\003\256\221\004\342\321\236\006.\341\221\016\326\236\001\214\214\005_bu\317ffer\263\221\002\270\221\002_m\216\220\233\001pha\344\217\003\317\231\001\362\220\002a\341s\354\236\007\n\004\255\224\004\030\004ync\277io.cor\212\003s\177baseccl\230\000\375_\356 traceb\047ack\237\236\t\205\236\002s\256\236\014\325\221\002\374\022\005\207\236\003countc\322\365\211\td\301\215\001\305\215\001_\000\002le\361n\277\226\001\240\227\001\243\221\004dims\"\247\214\003_`\003\006\004\265\241\002d\356\230\001\000\002\357_is_\227\242\003dum\377pencodee\367num\311\225\002eps_\375s\234 icient\337_desc\254\204\002ro\035r\325\236\014exf\321\237\002\326\237\002j\004|\307\222\001\326aflags\231\220\002\37764format^\345\226\004full\244\211\002s\003\004wep_\267\212\001get\227\216\001\200\336\223\001\237\216\001\354\212\007\255\216\001\327\212\006\272\216\001\305\212\002g\377etcwdglo\237baliz\211\226\002\000\n_\377use_SOCi\373i_\204\242\001ngidi3dx\274\222\010\231\240\001nt\236\240\002\272\223\001\375iC\001e_t_sl\337acksi\027\001t3a2\322\212\001\252C\334\212\001\374\243\002is\253\224\001\344\320\206\001\336\243\001m\366\222\001\312\224\004joi\275n\227\244\001kkey\000\000s\377lNlamlam\177_lbulbx\220b?search\231\002\323/\274\232\225\001\226\225\tmmem\302Dm{em\314\231\001min_\350\223\001\354\314\231\001\320\231\001l_\303\206\001msg\303nn\236\216\004\323\206\001\224`\260\226\001nd\233im\267\233\013nl\337\244\006\373\234\001n\375p\335\226\002nxobjo\374\205`\301\237\010ordero\177soutout\306d\376\006\001matover?writep\332\245\001\237\225\n\377pathpipi\317_pop\216\215\002\222\215\003le\347vel\223\215\r\317\216\001ter\277qp_mu0\366\233\rq\237p_tau\222\206\001\006\001o\277l_comp\004\004e\315q\r\004in\002\006""\243\222\001qp\337_warm\202\216\001rt\367rre/\001uter\177egister\370\215\002\234\375\215\002\351\234\010mem\263\217\006\261\237\006s\247elf\337\221\001\363\235\016s\324\215\rs\343et\235\230\004\257\234\002\202\227\001sls\205l\310\247\001u\222\242\002\320\247\001\324\247\002\321\215\004s\357ort_\230aspl\347its\375\004\210\251\002sta-r\322\222\002_m\360\223\002n\304\217\007\201\224\001\373us\202\237\002tep_l\377engthsto\263ps\205\216\t\000\n.<\372\225\001l\367s>.\243\225\005strf\340\313\237\001\211\205\003\231\207\004\006\004\324\251\003tru\377ctsusu_tQt\364\237\003\334\205\001\376\237\002l\215\205\001m\252\237\001\\\215\240\002\252\237\010all\013\005x\276\237\001\330\255\240\002\361 \264\240\003im\000\005_amd\002\006la\322\240\003ol\241\"\275_\255\247\001itiv\001\000e=s\356\240\002tott\357D\004\001\203eq\n\001\354A\022\001\220\226\001\033\000i\377stuu0u_u\177buubxun\350\252\001\374\317\240\003\304\240\024utcnowH\301\253\002\306\253\002\313\253\003_\352\237\002\326\253\003w\267g\377_first_q\377pxx0_bar\377x_xdot_g\377uessy_re{fy\001\000zz_z\r\003\335z\252\205\001Ore\230\214\001mp\206\004\001eq\n\001\240\204\001\022\001\304\227\001x\376%\004\200\001\330\004\n\210+\377\220Q\200A\330\0106\260\377b\270\006\270b\300\001\330\377\034(\250\001\250\024\250]\377\270$\270m\3107\320R\377[\320[^\320^_\330\357\010\017\210q&\001:\270\"\377\320\320Y\250A\320cd\375\340\351C\360\016\000\t\021\220\371\006\226#\232@\035;\270!\270\1774\270}\310D\320P\226`\367_\320_\361@p\320pw\377\320wx\320x|\320|\377}\320}~\360\006\000\t\3757\311d\004\300A\300T\310\247\024\310Q\307!\251`Z\032\000\035\3772\260\021\260$\260m\300\3774\300{\320RV\320V\377c\320cj\320jq\320\317qz\320z=\001r\010\024\220\3673\220a\331@\0107\260r\377\3209K\3101\310G\320\375S\212C\\\340\010\034\320\034\3751G\002j\300\013\3104\310\357w\320VW\324@\020\000\t\375\014\321@z\230\021\230(\240\371\"\243A\216h\004\310A\310Q\367\330\010\020\314\006\006\000\035=\377\270A\270T\300\021\330\014\377\020\220\013\2304\230z\250\267\027\260\007\336#\270Q\216\204\001\027\337\220f\230A\330\363`3\210\277a\210}\230C\230\351`\033\373\230;\335@t\2501\330\014\377\024\220B\220o\240Q\240\377f\250A\250Q\340\r\020?\220\001\220\035\230c\221`\021\006\365a\257\204\001;\306\000s\230#\230\377T\240\021\240#\240S\250\377\013\2601\260C\260s\270\362\365@\270\265\204\005d\000\020\036\230a\373\320\037\324\000\3202H\310\001\377\310\025\310a\320O`\320\377`a\320ab\340\0343\3561\000D\270\001\242\005y\250\007\377\250w\260i\270q\300\006\313\300b*\000\021\342\031\260\206\001t\320\277ST\320TU\340\362\013C\327\001\300!\212@q\242\200\\<\220\177s\230%\230q\240\001\243\206\004\352\315\035:\347bq\324\026\340\010\t\357\200A\360\024\344G/\250\022\354\214A\202\207\002\230A\243\207\001=\230\006\357\230a\230s\353\"\001\250\021\376o\007\021\"\240!\240=\260\377\006\260a\3207I\310\021\377\310#\310Q\310a\360\034\377\000\t9\270\002\320:L\376\242`_\320\\b\320bd\367\320de\201""\205\0015\260B\320\3756\214A\035\320V\\\320\\\376\214\211\003\034\230E\240\026\240q\373\250\001\356\204\001\035\320\0348\270\377\001\270\024\270Z\300w\310\277h\320VY\320Y\264@k\373\320k\233\205\001\360\000\000x\001\273B\002\004\000B\002E\003\001E\357\002F\002\330\273\002\030\000\t\317\017\320\016!\222`\216\207\001\036\000\375\026\213\206\003Q\200A\360 \000\357\t\026\220Q\331`]\3202\357I\320IZC\000[\001A\356B\001A\002SI\001S\002l\356P\001l\002mJ\000\030\230\001\377\230\037\250\n\260,\270l\373\310,\320\205\002v\320vw\330\377\010\027\220}\240O\260?\177\300.\320PQ\330\010\"\001\311\021\236\206\001\315\206\007\016\254\205\001\312\211\004\017\210\377t\220:\230Q\230h\240\377a\330\020\026\220i\230q\373\320 \257`[\320[\\\320\335\\\212 h\320h\342\212\001\340\014\367\017\210w\325\211\002\020\023\2207\277\230\"\230B\230c\331\210\002!\377\330\024\032\230)\2401\240\373A\340\027\0004\320\027(\250\377\003\250:\260T\270\027\300\373\002\300\023\007\360\006\000\r\031\357\230\001\330 \255#]\310$\363\310k\253\"\277\213\001\320jk\340\374\313\212\005|\021V\320V]\320]\177^\320^f\320fj*\000\377\320kl\340\014\033\2301\374\0303\311\022\033\2306\240\027\250\270\256a\213\024\327!\320wx\304\001\023\336\362\213\001\230A\330,\231\206\001H\270\377D\300\005\300Q\300k\320\377QS\320Sa\320ac\177\320cd\200A\360&\374\207\025\375B\365\205\003\310\001\330\010\026\220\357a\220y\240\006\000\035\230Q\377\230g\240W\250G\2601\367\330\010\025\377@e\2305\240\377\006\240g\250U\260%\260\227v\270Q\017\003n\341 \276\210\007\340\373\0108\262\204\005X\320U[\320\351[\237!\206\212\001\014\244\215\005 \320 \376\226\213\003*\300G\310;\320V\376\315\214\003g\320gm\320mn\377\320nr\320ru\320u\375v\324Cg\320\0350\260\002x\310`\216\217\001\202c\240\001\330.\330\213\001\377a\330\024\047\240r\250\034\377\260R\260{\300\"\300A\347\300Q\340\240\214\001\301\004\330\020\024\377\220K\230t\240:\250W\353\260A\242av\256\216\001\230C\230\367s\240!\316`\320\026Z\320\371Z\307\210\001\216\217\001\020\027\320\0278\373\270\007\271\210\002f\310F""\320RZ\257 T\357d\240\001\331g$T\005\377\024\030\230\013\2404\240y\377\260\007\260w\270i\300u\377\310A\330\021\030\230\003\230\2771\330$;\2701\367 \001\375\330\010\0304\260A\260T\270\335\021\033\005z\260\027y\000y\310\367\005\310Q=\0060\260\001\260\327\024\260QB\001\r\373\"9\270wE\300\021\342\204\010\030\230\t\221d\311$\026\023\316\206\003&\263\206\003\263A\005\240\307V\2507\257E\355\213\006\275\220\003\047\230\376\207\210\010/6\260a\260x\270\375q\332\220\0016\220\022\2202\220\177S\230\006\230b\240\004\266\214\010\247b\320b\233\205\003\255@o#\003\023\373\220D\377\0004\230w\240c~\324\210\t\020\027\220q\230\010\303 /\010,\320,\215\221\001\004\252 \325\214\010\373\001\340\347\222\t,\250A\250T}\260\362\214\014y\300\003\3001\200\217\005\3772\000\t\031\230\001\230\021\007\330\022\023\000\000\000\003\000\t\022\003\237\222\001\217\036\230r\240\021\023\353\213\010\275\222\003$\377\220l\240*\250A\330\014\037\023\2204\220\177\253\221\001\357\206\006\017\000\177\320\027)\250\021\250!\202\207\006\376\350\221\001:\240Q\240a\330\014\237\025\220T\230\032\341\207\001\000\010\330\377\014\032\230\"\230H\240H\370\202\216\001N\002;\003\047\260\026\260q\357\270\003\2701\313\207\006\031\230\024\373\230Z\263\212\001\330\014\017\210t\377\320\023$\240C\240q\330\372\257 z\201\212\001\330\021\025\320\025\221&\311\"\013\005\023$\340\241\205\005\272\t\220w~\240Q\241\207\002\320\022%\271\001\377\250:\260Q\260g\270Q\377\320\004%\240^\2601\360\353\016\000\376\223\0039\275\224\003\030\230\004\377\230L\250\002\250$\250b\337\260\n\270\"\270\301\214\0024\210\371q\355\211\001\233\224\007\020\033\2308\240\3753\237\212\001\034\230H\240G\250W2\250Y\305\214\001O\220\226\001R\373\221\001\273\030\220\305`\r\210S\304\225\002A\356\253 \022\2301\277\220\001\014\210E\377\220\025\220a\220t\2302\376\350\224\003\027\220r\230\021\230!\366\007\005\024\220)\001\021\230,\240\215d\240\225\001\250r\221a\000\022\021\026V\376g\000L\250\004\250D\260\001\347\260\022\260\232\221\002F\013s\260!\356\260\221\001A\220Uu\000<\240t?""\2504\250q\260\003\"\005\004\016\037\017\210r\220\022\235`\237@\336\214\001\337\025\230a\230|0\000t\260_1\260B\260a\364\225\001E\342\226\002\337h\230e\2401\316As\220w!\2208\354\000D\240\003\016\000\177\020\024\220H\230A\230\200A\337\016\022\220\021\220\262\226\004\020\220\337\005\220Q\220j \0008\320\377+A\300\027\310\003\310:\377\320UV\330\010\r\210Q\377\320\016,\250B\250e\260\3775\270\001\270\022\2707\300\377$\300a\320\004&\240a\273\360\n\324\223\002\320\017 W\000:\277\250S\260\001\330 \206\226\003M\377\310\024\310Y\320VZ\320\373Z[\366\224\004\3208J\310!\377\3102\310V\320SU\320\177UZ\320Z`\320`\203\231\001\316\364\215\003\n\230\047\346b\364\230\026\013\210u1\247@\021\244\222\001\010\230\007\257\221\002\370\010!,)Z\047\017\210q\320\004\347(\250\001\231\232\001\267\231\005j\270\001\177\320\004+\2509\260A\237\227\001\340\326 \305\225\013\370\225\006\345\000\345\222\006\340\010*\377\320*E\300Q\300d\310\277-\320W[\320[\272\216\003t\377\320tw\320wz\360\000\353\000{\233\221\005C\246\221\001C\002D\231\002\375\210\r\263\223\005\320\034\202\220\004\313\227\0015\376\324\212\002\035\300g\310W\320T\376\220\230\003`\340\010\t\320\0048\017\270\001\360\032\325\221\007"; - PyObject *data = __Pyx_DecompressString_LZSS(cstring, 5742, 9755); + #elif (CYTHON_COMPRESS_STRINGS) > 0 && (CYTHON_COMPRESS_STRINGS) <= 90 /* compression: lzss (5680 bytes) */ +static const char cstring[] = "\377 (you ha\377ve at 0\377x object\377> with d\377imension\373 \"\033\001stage\377 %Y-%m-%\377d-%H:%M:\377%S.%f(tr\177ee frag.\000\377t)), , p\377aram_val\377ues ..js\377on0: <(\tA\006>?A\377cadosOcp\377SolverCy\237thon.\216\000a\000a\377ints_set\377(): mism\177atching\210(\375fu\000field \255\"2\025st\004\310 alpha\322\207\t\232\206\002\237vaila\363\207\001\233\205\004_\377RTIcolle\275c""\335\207\002.abc\343\213\014:\374\316\205\004\333\212\005numpy \337array\314Cco\334\322\213\003\010\036disw\001en\336}\001gcis\004\003dl\277oad_it\342B:\373 f\237\000ed, f\367ile\311\212\014: no\377 default\377 __reduc\277e__ du\217Bn\377on-trivi\373al\033\000cinit\373__\252\002._cor\027e.m5\000i\265\002_\004\204a\363im\300\211\001\033\tumat\351h\021\016\264\217\t_\230\217\002idx\332\311\217\004_\370\214\006of\273bsa\377me size.o Got\005\002s -\000\334\371\217\n,\007np.\314\".s\323et\317>\311\210\003 \216\213\003 {\351}o\n\354\210\001f\316 t. \335Y\303\221\005{}.\023\036in\256\002-strU\014t\341 d\377 current~\345\204\004e in u\355B\376\361\205\001allocat\375e\272c data.\360\013\020\227\207\003\375\221\001\332\221\003s.ut\267f-8\366\222\014{}\245\223\010{\377})ASCII\271\221\022\376\315\221\023__get_p\177ointers\243\211\004\376\017\031stat_do\357uble\006\036int~*\036matrix\205\025\332\340\204\004c\213\223\002__\254\025se\rt\224\001e_\013\033\301\223\014\215\223\033\374\223\024?ustom_\326\213\003\305\222\"d\254\222\026\305\222\026_\322\207\001\004\027fr~\000\337qp_in(\027re\177sidualsK\027\300\305A\201\217\024\211\210\t\204\226\023\212\222\010\245\226\023pr\357int_\251aistSic\352\217\024\244\000e\214ts\000\026\360\251\217\016\306\220\024\324\204\001\364\230\001s_sp\317arse\351\220\030\204\221\030_f\037or_x0\252\221\024\363\206\001\267\212\005\374\256\230\023\357\217\024Ellips\377isFNSQPS\373QP\210\214\001Seque\027nce\215\232\001.\222\232\007\340\204\024\245\206\022\000\214\205\023\337\206\003\257\206\010\006\036\271A\377\231\022@\010\264\206\003\337__Pyx\001\000Di\377ct_NextR\357ef__\274\217\004e__\343__\221\220\002\000\006\354\207\001ite%m\026\001d0\001 \000e\371\207\001\047\001\373ex\263\214\001__fun\001c7\001\211\210\020\272\017\275\210\002\222\210\002\357a\004\007\302\230\005g\225\207\005\212\000\353\214\003\222\001ma{in\003\002odul\243\002\267nam\002\003ew\263\001p\376\324\000checksu`\252\000\n\001\335\207\003\350\217\001\224\221\001e_\005\002\277unpic""k?\000E\315n \005vt\342\217\001\367\001qu\203alO\005\252\216\005\263\216\006\315\210\005\304\216\006e\221x\253!\225\225\002\204\004s\260\010\323\210\016___test\321\001s\337\216\001\377outineab\225c\205\222\003.\246\221\014.\240\221\022\214\214\005_?buffer\263\221\002\270\221\002;_m\300\233\001pha\344\217\003\377\231\001\206\362\220\002as\234\237\007\n\004\335\224\004\030\004y\377ncio.cor\376\212\003sbasecc\365l\230\000_\356 trac\237eback\317\236\t\265\236\002s\360\336\236\014\325\221\002\022\005\267\236\003counKtc\365\211\td\301\215\001\305\215\001_\000\002\307len\357\226\001\320\227\001\243\221\004di\213ms\247\214\003_`\003\006\004\206\241\002d\274\236\231\001\000\002_is_\350\241\003d\377umpencod\337eenum\371\225\002ep\367s_s\234 icie\177nt_desc\254\204\002wror\205\237\014exf\201\240\002\360\206\240\002j\004\307\222\001\326aflag\375s\231\220\00264form{at\225\227\004full\244\211\002\335s\003\004ep_\267\212\001ge\001t\227\216\001\336\223\001\237\216\001\354\212\007\255\216\001\327\212\006\272\216\001\376\305\212\002getcwdg\177lobaliz\271\226\002\376\000\n_use_SO\357Cii_\264\242\001ngi\317didx\274\222\010\311\240\001nt\364\316\240\002\272\223\001iC\001e_t_\333sl\254@si\027\001t3a2\322\212\001\252C\334\212\001\315\243\002is\253\224\001\272\320\206\001s\000\002ize\312\224\004j\367oin\350\243\001kkey\376\000\000slNlaml\377am_lbulb\375x\220bsearch\360\231\002\323/\232\225\001\226\225\tmmem\356\302Dmem\374\231\001min\261_\350\223\001\374\231\001\200\232\001l_\303\206\001m\017sgnn\236\216\004\323\206\001\224`\260\226\001ondim\347\233\013nl\225\233\006\366\253\235\001np\335\226\002nxob\363jo\205`\361\237\010orde\377rosoutou\371t\306d\006\001matov\377erwritep\357pack\237\225\npat\377hpipi_po\371p\216\215\002\222\215\003level\374\223\215\r\317\216\001terqp_\367mu0\246\234\rqp_t\363au\222\206\001\006\001ol_c\267omp\004\004eq\r\004i\371n\002\006\243\222\001qp_wa\373rm\202\216\001rtrre\376/\001uteregi\217ster\370\215\002\375\215\002\231\235\010m\363em\263\217\006\341\237\006selft""\337\221\001\243\236\016s\324\215\rset\235\230\004\274\337\234\002\202\227\001slsl\376\235\001u\360\302\242\002\333\246\001\320\240\002\321\215\004sort\375_\230asplits\274\375\004\331\250\002star\322\222\002_em\360\223\002n\304\217\007\201\224\001us\262\237\002\377tep_leng\177thstops\205\216\t\366\000\n.<\372\225\001ls>.\036\243\225\005strf\373\237\001\211\205\003\231\207\004\374\006\004\245\251\003tructs?usu_tt\244\240\003\334\205\001\212\256\240\002l\215\205\001m\332\237\001\275\240\002\332\237\010a\013ll\013\005x\356\237\001\335\240\002\361 \344\240\003\273im\000\005_ad\002\006l\255a\202\241\003ol\241\"_\335\247\001i\267tiv\001\000es\236\241\002tgott\357D\004\001eq\n\001\360\354A\022\001\220\226\001\033\000istu\377u0u_ubuu\217bxun\212\204\001\377\240\003\364\240\024u\037tcnow\222\253\002\227\253\002\234\253\003\351_\232\240\002\247\253\003w\267g_fi\377rst_qpxx\3770_barx_x\377dot_gues\177sy_refy\001\000\257zz_z\r\003z\252\205\001O\333re\230\214\001mp\004\001eq\320\n\001\240\204\001\022\001\304\227\001x%\004\200\001\377\330\004\n\210+\220Q\200\377A\330\0106\260b\270\006\377\270b\300\001\330\034(\250\377\001\250\024\250]\270$\270\377m\3107\320R[\320[\377^\320^_\330\010\017\210\375q&\001:\270\"\320\320\275Y\250A\320cd\340\351C\360?\016\000\t\021\220\006\226#\232@\377\035;\270!\2704\270}\357\310D\320P\226`_\320_\376\361@p\320pw\320wx\377\320x|\320|}\320}\277~\360\006\000\t7\311d\004\377\300A\300T\310\024\310Q\364\307!\251`Z\032\000\0352\260\021\377\260$\260m\3004\300{\377\320RV\320Vc\320c\377j\320jq\320qz\320\371z=\001r\010\024\2203\220a\376\331@\0107\260r\3209K\277\3101\310G\320S\212C\\\277\340\010\034\320\0341G\002j\377\300\013\3104\310w\320V\275W\324@\020\000\t\014\321@z?\230\021\230(\240\"\243A\216h\377\004\310A\310Q\330\010\020\376\314\006\006\000\035=\270A\270\377T\300\021\330\014\020\220\013\377\2304\230z\250\027\260\007\366\336#\270Q\216\204\001\027\220f\230\373A\330\363`3\210a\210}w\230C\230\351`\033\230;\335@\377t\2501\330\014\024\220B\377\220o\240Q\240f\250A\377\250Q\340\r\020\220\001\220\247\035\230c\221`\021\006a\257\204\001;\376\306\000s\230#\230T\240\021\377\240#\240S\250\013\2601_\260C\260s\270\365@\270\265\204\005~d\000\020\036\230a\320\037\324\000\377\3202H\310\001\310\025\310\377a\320O`\320`a\320\337ab\340\03431\000D\270\375\001\242\005y\250\007\250w\260\177i\270q\300\006\300b*\000\371\021\342\031\260\206\001t\320ST\320\367TU\340\362\013C\001\300!\372\212@q\242\200\\<\220s\230%O\230q\240\001\243\206\004\315\035:\347b\375q\324\026\340\010\t\200A\360\235\024\344G/\250\022\214A\202\207\002\230\375A\243\207\001=\230\006\230a\230\335s\353\"\001\250\021o\007\021\"\377\240!\240=\260\006\260a\377\3207I\310\021\310#\310\377Q\310a\360\034\000\t9\337\270\002\320:L\242`_\320\377\\b\320bd\320de\276\201\205\0015\260B\3206\214A\035\337\320V\\\320\\\214\211\003\034\230\177E\240\026\240q\250\001\356\204\001\377\035\320\0348\270\001\270\024\377\270Z""\300w\310h\320VwY\320Y\264@k\320k\233\205\001\177\360\000\000x\001B\002\004\000\367B\002E\003\001E\002F\002\375\330\273\002\030\000\t\017\320\016\271!\222`\216\207\001\036\000\026\213\206\003Q\377\200A\360 \000\t\026\220\375Q\331`]\3202I\320I\335ZC\000[\001AB\001A\002\335SI\001S\002lP\001l\002\375mJ\000\030\230\001\230\037\250\177\n\260,\270l\310,\320\205\002\377v\320vw\330\010\027\220\377}\240O\260?\300.\320/PQ\330\010\"\001\021\236\206\001\315\206\007\371\016\254\205\001\312\211\004\017\210t\220:\377\230Q\230h\240a\330\020\177\026\220i\230q\320 \257`\277[\320[\\\320\\\212 h\373\320h\342\212\001\340\014\017\210w\376\325\211\002\020\023\2207\230\"\230\367B\230c\331\210\002!\330\024\032\177\230)\2401\240A\340\027\000\3774\320\027(\250\003\250:\177\260T\270\027\300\002\300\023\007\377\360\006\000\r\031\230\001\330} \255#]\310$\310k\253\"\236\277\213\001\320jk\340\313\212\005|\021V\377\320V]\320]^\320^\357f\320fj*\000\320kl\237\340\014\033\2301\0303\311\022\033\037\2306\240\027\250\256a\213\024\327!\327\320wx\304\001\023\362\213\001\230A\373\330,\231\206\001H\270D\300\005\377\300Q\300k\320QS\320\377Sa\320ac\320cd\257\200A\360&\374\207\025B\365\205\003\310\377\001\330\010\026\220a\220y\375\240\006\000\035\230Q\230g\240\377W\250G\2601\330\010\025\376\377@e\2305\240\006\240g\377\250U\260%\260v\270Qr\017\003n\341 \276\210\007\340\0108\262\204\005?X\320U[\320[\237!\206\212\001\335\014\244\215\005 \320 \226\213\003*\300\337G\310;\320V\315\214\003g\320\377gm\320mn\320nr\277\320ru\320uv\324Cg\037\320\0350\260\002\310`\216\217\001\202c\357\240\001\330.\330\213\001a\330\024\377\047\240r\250\034\260R\260\377{\300\"\300A\300Q\340\374\240\214\001\301\004\330\020\024\220K\230\177t\240:\250W\260A\242a\375v\256\216\001\230C\230s\240!>\316`\320\026Z\320Z\307\210\001\216\217\001\177\020\027\320\0278\270\007\271\210\002_f\310F\320R\257 T\357d\353\240\001\331g$T\005\024\030\230\377\013\2404\240y\260\007\260\377w\270i\300u\310A\330\377\021\030\230\003\2301\330$\267;\2701\367 \001\330\010""\0304\277\260A\260T\270\021\033\005z\373\260\027y\000y\310\005\310Q\376=\0060\260\001\260\024\260Q\372B\001\r\373\"9\270E\300\021.\342\204\010\030\230\t\221d$\026\023\316\206\003\371&\263\206\003\263A\005\240V\2507\330\257E\355\213\006\275\220\003\047\230\207\210\010/6\277\260a\260x\270q\332\220\0016\377\220\022\2202\220S\230\006\357\230b\240\004\266\214\010b\320bt\233\205\003\255@o#\003\023\220D\377\000\3374\230w\240c\324\210\t\020\027\357\220q\230\010\303 \010,\320e,\215\221\001\004\252 \325\214\010\001\340\347\222\t\277,\250A\250T\260\362\214\014y\357\300\003\3001\200\217\0052\000\t\377\031\230\001\230\021\330\022\023\340\000\000\000\003\000\t\022\003\237\222\001\036\230r\361\240\021\023\353\213\010\275\222\003$\220l\240\377*\250A\330\014\023\2204\343\220\177\253\221\001\357\206\006\017\000\320\027)\317\250\021\250!\202\207\006\350\221\001:\240\377Q\240a\330\014\025\220T\363\230\032\341\207\001\000\010\330\014\032\230\037\"\230H\240H\202\216\001N\002;\003\377\047\260\026\260q\270\003\270}1\313\207\006\031\230\024\230Z\263\212\001\377\330\014\017\210t\320\023$_\240C\240q\330\257 z\201\212\001?\330\021\025\320\025&\311\"\013\005\362\023$\340\241\205\005\272\t\220~\240Q\356\241\207\002\320\022%\271\001\250:\260\377Q\260g\270Q\320\004%\177\240^\2601\360\016\000\376\223\003\3759\275\224\003\030\230\004\230L\250\377\002\250$\250b\260\n\270;\"\270\301\214\0024\210q\355\211\001\233\224\007\277\020\033\2308\2403\237\212\001\034\377\230H\240G\2502\250Yj\305\214\001O\220\226\001R\373\221\001\030\220\305`\327\r\210S\304\225\002A\253 \022\230\3751\277\220\001\014\210E\220\025\220\337a\220t\2302\350\224\003\027\220\337r\230\021\230!\007\005\024\220\276)\001\021\230,\240d\240\225\001\250\321r\221a\000\022\021\026Vg\000L\250\377\004\250D\260\001\260\022\260\334\232\221\002F\013s\260!\260\221\001A\220\375Uu\000<\240t\2504\250\347q\260\003\"\005\004\016\017\210r\343\220\022\235`\237@\336\214\001\025\230a\373\230|0\000t\2601\260B\353\260a\364\225\001E\342\226\002h\230e\373\2401""\316As\220!\2208\356\354\000D\240\003\016\000\020\024\220\357H\230A\230\200A\016\022\220\373\021\220\262\226\004\020\220\005\220Q\373\220j \0008\320+A\300\377\027\310\003\310:\320UV\377\330\010\r\210Q\320\016,\377\250B\250e\2605\270\001\377\270\022\2707\300$\300a\177\320\004&\240a\360\n\324\223\002\367\320\017 W\000:\250S\260\367\001\330 \206\226\003M\310\024\310\177Y\320VZ\320Z[\366\224\004\377\3208J\310!\3102\310\377V\320SU\320UZ\320\317Z`\320`\203\231\001\364\215\003\n\230\271\047\346b\364\230\026\013\2101\247@\021\016\244\222\001\010\230\007\257\221\002\010!,)Z\047\377\017\210q\320\004(\250\001\374\231\232\001\267\231\005j\270\001\320\004+\017\2509\260A\237\227\001\326 \305\225\013\370\225\006\374\345\000\345\222\006\340\010*\320*E\377\300Q\300d\310-\320W\367[\320[\272\216\003t\320tw\177\320wz\360\000\000{\233\221\005=C\246\221\001C\002D\002\375\210\r\263\223\005\323\320\034\202\220\004\313\227\0015\324\212\002\035\300\337g\310W\320T\220\230\003`\340\377\010\t\320\0048\270\001\360\001\032\325\221\007"; + PyObject *data = __Pyx_DecompressString_LZSS(cstring, 5680, 9708); #define __Pyx_DecompressString_UNUSED if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) const char* const bytes = __Pyx_PyBytes_AsString(data); #if !CYTHON_ASSUME_SAFE_MACROS if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } #endif - #else /* compression: none (9755 bytes) */ -static const char bytes[] = " (you have at 0x object> with dimension \" at stage %Y-%m-%d-%H:%M:%S.%f(tree fragment)), , param_values ..json.venv-linux-arm64/lib/python3.12/site-packages/acados/acados_template/acados_ocp_solver_pyx.pyx0: >?AcadosOcpSolverCython.constraints_set(): mismatching dimension for field \"AcadosOcpSolverCython.cost_set(): mismatching dimension for field \"AcadosOcpSolverCython.eval_param_sens(): index must be Integer.AcadosOcpSolverCython.eval_param_sens(): index must be in [0, nx-1], got: AcadosOcpSolverCython.get(): field {} does not exist at final stage {}.AcadosOcpSolverCython.get(): stage index must be in [0, N], got: {}.AcadosOcpSolverCython.get(): {} is an invalid argument. \n Possible values are {}.AcadosOcpSolverCython.options_set() does not support field {}.\n Possible values are {}.AcadosOcpSolverCython.set(): mismatching dimension for field \"{}\" AcadosOcpSolverCython.set(): {} is not a valid argument. \nPossible values are {}.AcadosOcpSolverCython.solve(): argument \047rti_phase\047 can take only value 0 for SQP-type solversAcadosOcpSolverCython.solve(): argument \047rti_phase\047 can take only values 0, 1, 2 for SQP-RTI-type solversAcadosOcpSolverCython: does not support set_new_time_steps() since it is only a prototyping featureAcadosOcpSolverCython: does not support update_qp_solver_cond_N() since it is only a prototyping featureCannot assign to read-only memoryviewInvalid mode, expected \047c\047 or \047fortran\047, got Invalid shape in axis NoneNote that Cython is deliberately stricter than PEP-484 and rejects subclasses of builtin types. If you need to pass subclasses then set the \047annotation_typing\047 directive to False.TODO!Warning: acados_ocp_solver reached maximum iterations.acados acados_ocp_solver returned status add_notealpha values are not available for SQP_RTIcolle""ctions.abcconstraints_set: value must be numpy array, got cost_set: value must be numpy array, got disableenablegcisenabledload_iterate: failed, file does not exist: no default __reduce__ due to non-trivial __cinit__numpy._core.multiarray failed to importnumpy._core.umath failed to importparam_values_ and idx_values_ must be of the same size. Got sizes idx param_values_ must be np.array.set: value must be numpy array, got solver option {} must be of type float. You have {}.solver option {} must be of type int. You have {}.solver option {} must be of type str. You have {}.stored current iterate in unable to allocate array data.unable to allocate shape and strides.utf-8with dimension {} (you have {})ASCIIAcadosOcpSolverCythonAcadosOcpSolverCython.__get_pointers_solverAcadosOcpSolverCython.__get_stat_doubleAcadosOcpSolverCython.__get_stat_intAcadosOcpSolverCython.__get_stat_matrixAcadosOcpSolverCython.__reduce_cython__AcadosOcpSolverCython.__setstate_cython__AcadosOcpSolverCython.constraints_setAcadosOcpSolverCython.cost_setAcadosOcpSolverCython.custom_updateAcadosOcpSolverCython.eval_param_sensAcadosOcpSolverCython.getAcadosOcpSolverCython.get_costAcadosOcpSolverCython.get_from_qp_inAcadosOcpSolverCython.get_residualsAcadosOcpSolverCython.get_statsAcadosOcpSolverCython.load_iterateAcadosOcpSolverCython.options_setAcadosOcpSolverCython.print_statisticsAcadosOcpSolverCython.resetAcadosOcpSolverCython.setAcadosOcpSolverCython.set_new_time_stepsAcadosOcpSolverCython.set_params_sparseAcadosOcpSolverCython.solveAcadosOcpSolverCython.solve_for_x0AcadosOcpSolverCython.store_iterateAcadosOcpSolverCython.update_qp_solver_cond_NEllipsisFNSQPSQP_RTISequenceView.MemoryView__AcadosOcpSolverCython__get_pointers_solver_AcadosOcpSolverCython__get_stat_double_AcadosOcpSolverCython__get_stat_int_AcadosOcpSolverCython__get_stat_matrix__Pyx_PyDict_NextRef__annotate____class____class_getitem____dict____enter____exit____func____get_pointers_solver__get_stat_double__get_stat_int__get""_stat_matrix__getstate____import____main____module____name____new____pyx_checksum__pyx_state__pyx_type__pyx_unpickle_Enum__pyx_vtable____qualname____reduce____reduce_cython____reduce_ex____set_name____setstate____setstate_cython____test___is_coroutineabcacados.acados_template.acados_ocp_solver_pyxallocate_bufferalphaalpha_minalpha_reductionarrayascontiguousarrayasfortranarrayasyncio.coroutinesbaseccline_in_tracebackconstraints_fieldsconstraints_setcost_fieldscost_setcountcustom_updateddatadata_data_lendatetimedefaultdimsdouble_fieldsdouble_valuedtypedtype_is_objectdumpencodeenumerateeps_sufficient_descenterroreval_param_sensexffieldfield_fieldsfilenameflagsfloat64formatfortranfull_statsfull_step_dualgetget_costget_from_qp_inget_residualsget_statsgetcwdglobalizationglobalization_use_SOCii_stringididxidx_values_indentindexinitialize_t_slacksintint32int_fieldsint_valueisfileitemsitemsizeiteratejoinjsonkkeykeyslNlamlam_lbulbxline_search_use_sufficient_descentloadload_iteratemmem_fieldsmemviewmin_sizemodemodel_namemsgnn_updatenamendarrayndimnew_time_stepsnlp_solver_typenpnumpynxobjopenoptions_setorderosoutout_fieldsout_matoverwriteppackparam_values_pathpipi_popprintprint_levelprint_statisticsqp_iterqp_mu0qp_solver_cond_Nqp_tau_minqp_tol_compqp_tol_eqqp_tol_ineqqp_tol_statqp_warm_startrrecomputeregisterresetreset_qp_solver_memresidualsrti_phaseselfsetset_new_time_stepsset_params_sparsesetdefaultshapesizeslsl_solutionsolvesolve_for_x0sort_keyssplitsqp_iterstagestartstat_mstat_nstatisticsstatusstepstep_lengthstopstore_iteratestore_iterate..strftimestring_fieldsstring_valuestructsusu_tt_time_globtime_lintime_qptime_qp_solver_calltime_qp_xcondtime_regtime_simtime_sim_adtime_sim_latime_solution_sensitivitiestime_tottol_comptol_eqtol_ineqtol_stattolistuu0u_ubuubxunpackupdateupdate_qp_solver_cond_Nutcnowvaluevalue_value_shapevalueswwarm_start_first_qpxx0_barx_xdot_guessy_refyrefzz_z_guesszerosOres_compres_eqres_ineqres_statxz_guess\200\001\330\004\n\210+\220Q""\200A\330\0106\260b\270\006\270b\300\001\330\034(\250\001\250\024\250]\270$\270m\3107\320R[\320[^\320^_\330\010\017\210q\200A\330\010:\270\"\320\320Yb\320bc\320cd\340\010\017\210q\200A\360\016\000\t\021\220\006\220g\230Q\230a\360\010\000\035;\270!\2704\270}\310D\320P[\320[_\320_i\320ip\320pw\320wx\320x|\320|}\320}~\360\006\000\t7\260b\270\006\270b\300\004\300A\300T\310\024\310Q\310e\320SY\320YZ\360\006\000\0352\260\021\260$\260m\3004\300{\320RV\320Vc\320cj\320jq\320qz\320z}\320}~\340\010\017\210q\200A\360\016\000\t\024\2203\220a\220q\330\0107\260r\3209K\3101\310G\320SY\320Y[\320[\\\340\010\034""\320\0341\260\021\260$\260j\300\013\3104\310w\320VW\200A\360\020\000\t\014\2104\210z\230\021\230(\240\"\240A\330\014\022\220)\2301\320\034G\300q\310\004\310A\310Q\330\010\020\220\006\220g\230Q\230a\360\006\000\035=\270A\270T\300\021\330\014\020\220\013\2304\230z\250\027\260\007\260q\270\004\270A\270Q\360\010\000\t\027\220f\230A\330\010\013\2103\210a\210}\230C\230q\330\014\033\230;\240a\240t\2501\330\014\024\220B\220o\240Q\240f\250A\250Q\340\r\020\220\001\220\035\230c\240\021\340\014\024\220B\220o\240Q\240a\340\010\013\210;\220a\220s\230#\230T\240\021\240#\240S\250\013\2601\260C\260s\270$\270a\270q\330\014\022\220)\2301\230A\330\020\036\230a\320\0371\260\021\3202H\310\001\310\025\310a\320O`\320`a\320ab\340\0343\2601\260D\270\001\330\014\020\220\013\2304\230y\250\007\250w\260i\270q\300\006\300b\310\001\310\021\200A\360\020\000\t\014\2104\210z\230\021\230(\240\"\240A\330\014\022\220)\2301\320\034N\310a\310t\320ST\320TU\340\010\020\220\006\220g\230Q\230a\360\006\000\035C\001\300!\3004\300q\330\014\020\220\013\2304\230z\250\027\260\007\260q\270\004\270A\270Q\360\010\000\t\027\220f\230A\330\010\013\2103\210a\210}\230C\230q\330\014\033\230;\240a\240t\2501\330\014\024\220B\220o\240Q\240f\250A\250Q\340\r\020\220\001\220\035\230c\240\021\340\014\024\220B\220o\240Q\240a\340\010\013\210<\220s\230%\230q\240\001\330\014\022\220)\2301\230A\330\020\036\230a\320\0371\260\021\3202H\310\001\310\025\310a\320O`\320`a\320ab\340\034:\270!\2704\270q\330\014\020\220\013\2304\230y\250\007\250w\260i\270q\300\006\300b\310\001\310\021\340\010\t\200A\360\024\000\t\014\2104\210z\230\021\230/\250\022\2501\330\014\022\220)\2301\230A\340\010\013\210=\230\006\230a\230s\240#\240S\250\001\250\021\330\014\022\220)\2301\230A\330\021\"\240!\240=\260\006\260a\3207I\310\021\310#\310Q\310a\360\034\000\t9\270\002\320:L\310A\310_\320\\b\320bd\320de\360\016\000\t5\260B\3206H\310\001\310\035\320V\\\320\\^\320^_\330\010\034\230E\240\026\240q\250\001\360\006\000\t\035\320\0348\270\001\270\024\270Z\300w\310h\320VY""\320Y`\320`k\320kp\320pw\360\000\000x\001B\002\360\000\000B\002E\002\360\000\000E\002F\002\330\010\t\200A\360\030\000\t\017\320\016!\240\021\240!\200A\360\036\000\026)\250\001\250\024\250Q\200A\360 \000\t\026\220Q\220o\240]\3202I\320IZ\360\000\000[\001A\002\360\000\000A\002S\002\360\000\000S\002l\002\360\000\000l\002m\002\330\010\030\230\001\230\037\250\n\260,\270l\310,\320Vc\320cv\320vw\330\010\027\220}\240O\260?\300.\320PQ\330\010\030\230\001\230\021\360\006\000\t\021\220\006\220g\230Q\230a\360\016\000\t\014\2107\220#\220Q\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220i\230q\320 T\320T[\320[\\\320\\d\320dh\320hi\320ij\340\014\017\210w\220c\230\021\330\020\023\2207\230\"\230B\230c\240\027\250\002\250!\330\024\032\230)\2401\240A\340\020\023\2204\320\027(\250\003\250:\260T\270\027\300\002\300!\330\024\032\230)\2401\240A\360\006\000\r\031\230\001\330 8\270\001\270\024\270]\310$\310k\320Y`\320`i\320ij\320jk\340\r\024\220C\220q\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220i\230q\320 V\320V]\320]^\320^f\320fj\320jk\320kl\340\014\033\2301\330 8\270\001\270\024\270]\310$\310k\320Y`\320`i\320ij\320jk\340\r\024\220C\220q\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220i\230q\320 T\320T[\320[\\\320\\d\320dh\320hi\320ij\340\014\033\2306\240\027\250\001\250\021\330 8\270\001\270\024\270]\310$\310k\320Y`\320`i\320ij\320jv\320vw\320wx\360\006\000\r\023\220)\2301\230A\330,3\2601\260H\270D\300\005\300Q\300k\320QS\320Sa\320ac\320cd\200A\360&\000\t\014\2104\210z\230\021\230(\240\"\240A\330\014\022\220)\2301\320\034B\300!\3004\300q\310\001\330\010\026\220a\220y\240\001\330\010\035\230Q\230g\240W\250G\2601\330\010\025\220Q\220e\2305\240\006\240g\250U\260%\260v\270Q\330\010\025\220Q\220n\240A\340\010\020\220\006\220g\230Q\230a\340\0108\270\002\320:L\310A\310X\320U[\320[]\320]^\360\006\000\t\014\2107\220#\220Q\330\014 \320 5\260Q\260d\270*\300G\310;\320V[\320[b\320bg\320gm\320mn\320nr\320ru\320uv\340\014\017\210w\220g\320\0350\260\002\260,\270b\300\001\330\020\026\220i""\230q\240\001\330.5\260Q\260a\330\024\047\240r\250\034\260R\260{\300\"\300A\300Q\340\014\047\320\047B\300!\3004\300q\330\020\024\220K\230t\240:\250W\260A\340\014\017\210v\220V\2301\230C\230s\240!\330\020\026\320\026Z\320Za\320ab\320bc\330\020\027\320\0278\270\007\270q\300\006\300f\310F\320RS\320ST\330\020\026\220i\230q\240\001\340\014\017\210w\220c\230\021\330$B\300!\3004\300q\330\024\030\230\013\2404\240y\260\007\260w\270i\300u\310A\330\021\030\230\003\2301\330$;\2701\270D\300\001\330\024\030\230\013\2404\240y\260\007\260w\270i\300u\310A\330\021\030\230\003\2301\330$4\260A\260T\270\021\330\024\030\230\013\2404\240z\260\027\270\007\270y\310\005\310Q\330\021\030\230\003\2301\330$0\260\001\260\024\260Q\330\024\030\230\r\240W\250G\2609\270E\300\021\340\014\017\210w\220c\230\021\330\020\030\230\t\240\027\250\001\250\021\330$0\260\001\260\024\260Q\330\024\030\230\r\240W\250G\2609\270E\300\021\330\010\t\200A\360&\000\t\026\220Q\220e\2305\240\005\240V\2507\260%\260v\270Q\330\010\020\220\006\220g\230Q\230a\340\010\013\2107\220\047\230\021\330\014\022\220)\2301\230A\330/6\260a\260x\270q\340\010\013\2106\220\022\2202\220S\230\006\230b\240\004\240A\330\014\022\220)\2301\320\034b\320bi\320ij\320jn\320no\340\010\013\2106\220\023\220D\230\003\2304\230w\240c\250\021\330\014\022\220)\2301\230A\330\020\027\220q\230\010\240\001\340\010,\320,G\300q\310\004\310A\330\014\020\220\013\2304\230z\250\027\260\001\340\0106\260b\270\006\270b\300\001\330\034,\250A\250T\260\021\330\014\020\220\013\2304\230z\250\027\260\007\260y\300\003\3001\340\010\017\210q\200A\3602\000\t\031\230\001\230\021\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\340\010\021\220\036\230r\240\021\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\340\010\020\220\006\220g\230Q\230a\340\010\013\2107\220$\220l\240*\250A\330\014\023\2204\220\177\240a\240q\340\r\024\220C\220q\330\014\023\2204\320\027)\250\021\250!\340""\r\024\220C\220q\330\014\027\220t\230:\240Q\240a\330\014\025\220T\230\032\2401\240A\330\014\025\220T\230\032\2401\240A\330\014\032\230\"\230H\240H\250A\250Q\330\014\023\2204\320\027)\250\021\250\047\260\026\260q\270\003\2701\340\r\024\220C\220q\330\014\031\230\024\230Z\240q\250\001\330\014\017\210t\320\023$\240C\240q\330\020\027\220z\240\021\240!\330\021\025\320\025&\240c\250\021\330\020\027\220z\240\021\240!\340\r\024\220C\220q\330\014\031\230\024\230Z\240q\250\001\330\014\017\210t\320\023$\240C\240q\330\020\027\220z\240\021\240!\340\020\026\220i\230q\240\001\340\r\024\220C\220q\330\014\023\2204\220~\240Q\360\006\000\r\023\320\022%\240Q\240a\250:\260Q\260g\270Q\320\004%\240^\2601\360\016\000\020\021\330\010\013\2109\220C\220q\330\014\030\230\004\230L\250\002\250$\250b\260\n\270\"\270A\340\010\013\2104\210q\340\014\017\210r\220\025\220g\230Q\230a\330\020\033\2308\2403\240a\330\020\034\230H\240G\2502\250Y\260a\3207O\310r\320QR\360\006\000\t\030\220q\340\010\r\210S\220\001\220\023\220A\220T\230\022\2301\230A\330\010\014\210E\220\025\220a\220t\2302\230Q\230a\330\014\027\220r\230\021\230!\2302\230Q\230a\330\014\024\220A\220T\230\021\230,\240d\250$\250a\250r\260\021\330\014\024\220A\220T\230\021\230,\240d\250$\250a\250r\260\021\330\014\024\220A\220T\230\021\230,\240d\250$\250a\250r\260\021\330\014\024\220A\220V\2301\230L\250\004\250D\260\001\260\022\2601\330\014\024\220A\220T\230\021\230,\240d\250$\250a\250s\260!\330\014\024\220A\220U\230!\230<\240t\2504\250q\260\003\2601\330\014\024\220A\220U\230!\230<\240t\2504\250q\260\003\2601\330\014\017\210r\220\022\2204\220q\330\020\030\230\001\230\025\230a\230|\2504\250t\2601\260B\260a\340\010\014\210E\220\024\220Q\220h\230e\2401\330\014\017\210s\220!\2208\2301\230D\240\003\2401\330\020\024\220H\230A\230Q\360\006\000\016\022\220\021\220*\230H\240A\330\014\020\220\005\220Q\220j\240\003\2408\320+A\300\027\310\003\310:\320UV\330\010\r\210Q\320\016,\250B\250e\2605\270\001\270\022\2707\300$\300a\320\004&\240a\360\n\000\t\014\2104\320""\017 \240\003\240:\250S\260\001\330 7\260q\270\004\270M\310\024\310Y\320VZ\320Z[\360\006\000\t7\260b\3208J\310!\3102\310V\320SU\320UZ\320Z`\320`b\320bc\360\006\000\t\021\220\n\230\047\240\021\240!\330\034(\250\001\250\024\250]\270$\270m\3107\320R[\320[\\\320\\]\330\010\013\2101\210E\220\021\340\010\020\220\010\230\007\230q\240\001\330\034(\250\001\250\024\250]\270$\270m\3107\320R[\320[\\\320\\]\330\010\013\2101\210E\220\021\340\010\020\220\n\230\047\240\021\240!\330\034(\250\001\250\024\250]\270$\270m\3107\320R[\320[\\\320\\]\330\010\013\2101\210E\220\021\340\010\020\220\n\230\047\240\021\240!\330\034(\250\001\250\024\250]\270$\270m\3107\320R[\320[\\\320\\]\330\010\013\2101\210E\220\021\340\010\017\210q\320\004(\250\001\360\010\000\t\035\230M\250\021\250$\250j\270\001\320\004+\2509\260A\360\016\000\t\022\220\021\330\010\020\220\006\220g\230Q\230a\360\006\000\t\014\2104\210z\230\021\230\047\240\021\330\014\022\220)\2301\230A\340\010*\320*E\300Q\300d\310-\320W[\320[f\320fj\320jt\320tw\320wz\360\000\000{\001B\002\360\000\000B\002C\002\360\000\000C\002D\002\340\010\013\2106\220\022\2202\220S\230\006\230b\240\001\330\014\022\220)\2301\320\034h\320hi\320ij\360\006\000\0355\260A\260T\270\035\300g\310W\320T[\320[_\320_`\340\010\t\320\0048\270\001\360\032\000\t\017\320\016!\240\021\240!"; + #else /* compression: none (9708 bytes) */ +static const char bytes[] = " (you have at 0x object> with dimension \" at stage %Y-%m-%d-%H:%M:%S.%f(tree fragment)), , param_values ..json0: >?AcadosOcpSolverCython.constraints_set(): mismatching dimension for field \"AcadosOcpSolverCython.cost_set(): mismatching dimension for field \"AcadosOcpSolverCython.eval_param_sens(): index must be Integer.AcadosOcpSolverCython.eval_param_sens(): index must be in [0, nx-1], got: AcadosOcpSolverCython.get(): field {} does not exist at final stage {}.AcadosOcpSolverCython.get(): stage index must be in [0, N], got: {}.AcadosOcpSolverCython.get(): {} is an invalid argument. \n Possible values are {}.AcadosOcpSolverCython.options_set() does not support field {}.\n Possible values are {}.AcadosOcpSolverCython.set(): mismatching dimension for field \"{}\" AcadosOcpSolverCython.set(): {} is not a valid argument. \nPossible values are {}.AcadosOcpSolverCython.solve(): argument \047rti_phase\047 can take only value 0 for SQP-type solversAcadosOcpSolverCython.solve(): argument \047rti_phase\047 can take only values 0, 1, 2 for SQP-RTI-type solversAcadosOcpSolverCython: does not support set_new_time_steps() since it is only a prototyping featureAcadosOcpSolverCython: does not support update_qp_solver_cond_N() since it is only a prototyping featureCannot assign to read-only memoryviewInvalid mode, expected \047c\047 or \047fortran\047, got Invalid shape in axis NoneNote that Cython is deliberately stricter than PEP-484 and rejects subclasses of builtin types. If you need to pass subclasses then set the \047annotation_typing\047 directive to False.TODO!Warning: acados_ocp_solver reached maximum iterations.acados acados_ocp_solver returned status acados/acados_template/acados_ocp_solver_pyx.pyxadd_notealpha values are not available for SQP_RTIcollections.abcconstraints_set: value must be numpy ""array, got cost_set: value must be numpy array, got disableenablegcisenabledload_iterate: failed, file does not exist: no default __reduce__ due to non-trivial __cinit__numpy._core.multiarray failed to importnumpy._core.umath failed to importparam_values_ and idx_values_ must be of the same size. Got sizes idx param_values_ must be np.array.set: value must be numpy array, got solver option {} must be of type float. You have {}.solver option {} must be of type int. You have {}.solver option {} must be of type str. You have {}.stored current iterate in unable to allocate array data.unable to allocate shape and strides.utf-8with dimension {} (you have {})ASCIIAcadosOcpSolverCythonAcadosOcpSolverCython.__get_pointers_solverAcadosOcpSolverCython.__get_stat_doubleAcadosOcpSolverCython.__get_stat_intAcadosOcpSolverCython.__get_stat_matrixAcadosOcpSolverCython.__reduce_cython__AcadosOcpSolverCython.__setstate_cython__AcadosOcpSolverCython.constraints_setAcadosOcpSolverCython.cost_setAcadosOcpSolverCython.custom_updateAcadosOcpSolverCython.eval_param_sensAcadosOcpSolverCython.getAcadosOcpSolverCython.get_costAcadosOcpSolverCython.get_from_qp_inAcadosOcpSolverCython.get_residualsAcadosOcpSolverCython.get_statsAcadosOcpSolverCython.load_iterateAcadosOcpSolverCython.options_setAcadosOcpSolverCython.print_statisticsAcadosOcpSolverCython.resetAcadosOcpSolverCython.setAcadosOcpSolverCython.set_new_time_stepsAcadosOcpSolverCython.set_params_sparseAcadosOcpSolverCython.solveAcadosOcpSolverCython.solve_for_x0AcadosOcpSolverCython.store_iterateAcadosOcpSolverCython.update_qp_solver_cond_NEllipsisFNSQPSQP_RTISequenceView.MemoryView__AcadosOcpSolverCython__get_pointers_solver_AcadosOcpSolverCython__get_stat_double_AcadosOcpSolverCython__get_stat_int_AcadosOcpSolverCython__get_stat_matrix__Pyx_PyDict_NextRef__annotate____class____class_getitem____dict____enter____exit____func____get_pointers_solver__get_stat_double__get_stat_int__get_stat_matrix__getstate____import____main____mod""ule____name____new____pyx_checksum__pyx_state__pyx_type__pyx_unpickle_Enum__pyx_vtable____qualname____reduce____reduce_cython____reduce_ex____set_name____setstate____setstate_cython____test___is_coroutineabcacados.acados_template.acados_ocp_solver_pyxallocate_bufferalphaalpha_minalpha_reductionarrayascontiguousarrayasfortranarrayasyncio.coroutinesbaseccline_in_tracebackconstraints_fieldsconstraints_setcost_fieldscost_setcountcustom_updateddatadata_data_lendatetimedefaultdimsdouble_fieldsdouble_valuedtypedtype_is_objectdumpencodeenumerateeps_sufficient_descenterroreval_param_sensexffieldfield_fieldsfilenameflagsfloat64formatfortranfull_statsfull_step_dualgetget_costget_from_qp_inget_residualsget_statsgetcwdglobalizationglobalization_use_SOCii_stringididxidx_values_indentindexinitialize_t_slacksintint32int_fieldsint_valueisfileitemsitemsizeiteratejoinjsonkkeykeyslNlamlam_lbulbxline_search_use_sufficient_descentloadload_iteratemmem_fieldsmemviewmin_sizemodemodel_namemsgnn_updatenamendarrayndimnew_time_stepsnlp_solver_typenpnumpynxobjopenoptions_setorderosoutout_fieldsout_matoverwriteppackparam_values_pathpipi_popprintprint_levelprint_statisticsqp_iterqp_mu0qp_solver_cond_Nqp_tau_minqp_tol_compqp_tol_eqqp_tol_ineqqp_tol_statqp_warm_startrrecomputeregisterresetreset_qp_solver_memresidualsrti_phaseselfsetset_new_time_stepsset_params_sparsesetdefaultshapesizeslsl_solutionsolvesolve_for_x0sort_keyssplitsqp_iterstagestartstat_mstat_nstatisticsstatusstepstep_lengthstopstore_iteratestore_iterate..strftimestring_fieldsstring_valuestructsusu_tt_time_globtime_lintime_qptime_qp_solver_calltime_qp_xcondtime_regtime_simtime_sim_adtime_sim_latime_solution_sensitivitiestime_tottol_comptol_eqtol_ineqtol_stattolistuu0u_ubuubxunpackupdateupdate_qp_solver_cond_Nutcnowvaluevalue_value_shapevalueswwarm_start_first_qpxx0_barx_xdot_guessy_refyrefzz_z_guesszerosOres_compres_eqres_ineqres_statxz_guess\200\001\330\004\n\210+\220Q\200A\330\0106\260b\270\006\270b\300\001\330\034(""\250\001\250\024\250]\270$\270m\3107\320R[\320[^\320^_\330\010\017\210q\200A\330\010:\270\"\320\320Yb\320bc\320cd\340\010\017\210q\200A\360\016\000\t\021\220\006\220g\230Q\230a\360\010\000\035;\270!\2704\270}\310D\320P[\320[_\320_i\320ip\320pw\320wx\320x|\320|}\320}~\360\006\000\t7\260b\270\006\270b\300\004\300A\300T\310\024\310Q\310e\320SY\320YZ\360\006\000\0352\260\021\260$\260m\3004\300{\320RV\320Vc\320cj\320jq\320qz\320z}\320}~\340\010\017\210q\200A\360\016\000\t\024\2203\220a\220q\330\0107\260r\3209K\3101\310G\320SY\320Y[\320[\\\340\010\034\320\0341\260\021\260$\260j\300\013\3104\310w\320VW""\200A\360\020\000\t\014\2104\210z\230\021\230(\240\"\240A\330\014\022\220)\2301\320\034G\300q\310\004\310A\310Q\330\010\020\220\006\220g\230Q\230a\360\006\000\035=\270A\270T\300\021\330\014\020\220\013\2304\230z\250\027\260\007\260q\270\004\270A\270Q\360\010\000\t\027\220f\230A\330\010\013\2103\210a\210}\230C\230q\330\014\033\230;\240a\240t\2501\330\014\024\220B\220o\240Q\240f\250A\250Q\340\r\020\220\001\220\035\230c\240\021\340\014\024\220B\220o\240Q\240a\340\010\013\210;\220a\220s\230#\230T\240\021\240#\240S\250\013\2601\260C\260s\270$\270a\270q\330\014\022\220)\2301\230A\330\020\036\230a\320\0371\260\021\3202H\310\001\310\025\310a\320O`\320`a\320ab\340\0343\2601\260D\270\001\330\014\020\220\013\2304\230y\250\007\250w\260i\270q\300\006\300b\310\001\310\021\200A\360\020\000\t\014\2104\210z\230\021\230(\240\"\240A\330\014\022\220)\2301\320\034N\310a\310t\320ST\320TU\340\010\020\220\006\220g\230Q\230a\360\006\000\035C\001\300!\3004\300q\330\014\020\220\013\2304\230z\250\027\260\007\260q\270\004\270A\270Q\360\010\000\t\027\220f\230A\330\010\013\2103\210a\210}\230C\230q\330\014\033\230;\240a\240t\2501\330\014\024\220B\220o\240Q\240f\250A\250Q\340\r\020\220\001\220\035\230c\240\021\340\014\024\220B\220o\240Q\240a\340\010\013\210<\220s\230%\230q\240\001\330\014\022\220)\2301\230A\330\020\036\230a\320\0371\260\021\3202H\310\001\310\025\310a\320O`\320`a\320ab\340\034:\270!\2704\270q\330\014\020\220\013\2304\230y\250\007\250w\260i\270q\300\006\300b\310\001\310\021\340\010\t\200A\360\024\000\t\014\2104\210z\230\021\230/\250\022\2501\330\014\022\220)\2301\230A\340\010\013\210=\230\006\230a\230s\240#\240S\250\001\250\021\330\014\022\220)\2301\230A\330\021\"\240!\240=\260\006\260a\3207I\310\021\310#\310Q\310a\360\034\000\t9\270\002\320:L\310A\310_\320\\b\320bd\320de\360\016\000\t5\260B\3206H\310\001\310\035\320V\\\320\\^\320^_\330\010\034\230E\240\026\240q\250\001\360\006\000\t\035\320\0348\270\001\270\024\270Z\300w\310h\320VY\320Y`\320`k\320kp\320pw\360\000\000x\001B\002\360""\000\000B\002E\002\360\000\000E\002F\002\330\010\t\200A\360\030\000\t\017\320\016!\240\021\240!\200A\360\036\000\026)\250\001\250\024\250Q\200A\360 \000\t\026\220Q\220o\240]\3202I\320IZ\360\000\000[\001A\002\360\000\000A\002S\002\360\000\000S\002l\002\360\000\000l\002m\002\330\010\030\230\001\230\037\250\n\260,\270l\310,\320Vc\320cv\320vw\330\010\027\220}\240O\260?\300.\320PQ\330\010\030\230\001\230\021\360\006\000\t\021\220\006\220g\230Q\230a\360\016\000\t\014\2107\220#\220Q\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220i\230q\320 T\320T[\320[\\\320\\d\320dh\320hi\320ij\340\014\017\210w\220c\230\021\330\020\023\2207\230\"\230B\230c\240\027\250\002\250!\330\024\032\230)\2401\240A\340\020\023\2204\320\027(\250\003\250:\260T\270\027\300\002\300!\330\024\032\230)\2401\240A\360\006\000\r\031\230\001\330 8\270\001\270\024\270]\310$\310k\320Y`\320`i\320ij\320jk\340\r\024\220C\220q\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220i\230q\320 V\320V]\320]^\320^f\320fj\320jk\320kl\340\014\033\2301\330 8\270\001\270\024\270]\310$\310k\320Y`\320`i\320ij\320jk\340\r\024\220C\220q\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220i\230q\320 T\320T[\320[\\\320\\d\320dh\320hi\320ij\340\014\033\2306\240\027\250\001\250\021\330 8\270\001\270\024\270]\310$\310k\320Y`\320`i\320ij\320jv\320vw\320wx\360\006\000\r\023\220)\2301\230A\330,3\2601\260H\270D\300\005\300Q\300k\320QS\320Sa\320ac\320cd\200A\360&\000\t\014\2104\210z\230\021\230(\240\"\240A\330\014\022\220)\2301\320\034B\300!\3004\300q\310\001\330\010\026\220a\220y\240\001\330\010\035\230Q\230g\240W\250G\2601\330\010\025\220Q\220e\2305\240\006\240g\250U\260%\260v\270Q\330\010\025\220Q\220n\240A\340\010\020\220\006\220g\230Q\230a\340\0108\270\002\320:L\310A\310X\320U[\320[]\320]^\360\006\000\t\014\2107\220#\220Q\330\014 \320 5\260Q\260d\270*\300G\310;\320V[\320[b\320bg\320gm\320mn\320nr\320ru\320uv\340\014\017\210w\220g\320\0350\260\002\260,\270b\300\001\330\020\026\220i\230q\240\001\330.5\260Q\260a\330\024\047\240r\250""\034\260R\260{\300\"\300A\300Q\340\014\047\320\047B\300!\3004\300q\330\020\024\220K\230t\240:\250W\260A\340\014\017\210v\220V\2301\230C\230s\240!\330\020\026\320\026Z\320Za\320ab\320bc\330\020\027\320\0278\270\007\270q\300\006\300f\310F\320RS\320ST\330\020\026\220i\230q\240\001\340\014\017\210w\220c\230\021\330$B\300!\3004\300q\330\024\030\230\013\2404\240y\260\007\260w\270i\300u\310A\330\021\030\230\003\2301\330$;\2701\270D\300\001\330\024\030\230\013\2404\240y\260\007\260w\270i\300u\310A\330\021\030\230\003\2301\330$4\260A\260T\270\021\330\024\030\230\013\2404\240z\260\027\270\007\270y\310\005\310Q\330\021\030\230\003\2301\330$0\260\001\260\024\260Q\330\024\030\230\r\240W\250G\2609\270E\300\021\340\014\017\210w\220c\230\021\330\020\030\230\t\240\027\250\001\250\021\330$0\260\001\260\024\260Q\330\024\030\230\r\240W\250G\2609\270E\300\021\330\010\t\200A\360&\000\t\026\220Q\220e\2305\240\005\240V\2507\260%\260v\270Q\330\010\020\220\006\220g\230Q\230a\340\010\013\2107\220\047\230\021\330\014\022\220)\2301\230A\330/6\260a\260x\270q\340\010\013\2106\220\022\2202\220S\230\006\230b\240\004\240A\330\014\022\220)\2301\320\034b\320bi\320ij\320jn\320no\340\010\013\2106\220\023\220D\230\003\2304\230w\240c\250\021\330\014\022\220)\2301\230A\330\020\027\220q\230\010\240\001\340\010,\320,G\300q\310\004\310A\330\014\020\220\013\2304\230z\250\027\260\001\340\0106\260b\270\006\270b\300\001\330\034,\250A\250T\260\021\330\014\020\220\013\2304\230z\250\027\260\007\260y\300\003\3001\340\010\017\210q\200A\3602\000\t\031\230\001\230\021\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\340\010\021\220\036\230r\240\021\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\330\022\023\340\010\020\220\006\220g\230Q\230a\340\010\013\2107\220$\220l\240*\250A\330\014\023\2204\220\177\240a\240q\340\r\024\220C\220q\330\014\023\2204\320\027)\250\021\250!\340\r\024\220C\220q\330\014\027\220t\230:\240Q\240a\330""\014\025\220T\230\032\2401\240A\330\014\025\220T\230\032\2401\240A\330\014\032\230\"\230H\240H\250A\250Q\330\014\023\2204\320\027)\250\021\250\047\260\026\260q\270\003\2701\340\r\024\220C\220q\330\014\031\230\024\230Z\240q\250\001\330\014\017\210t\320\023$\240C\240q\330\020\027\220z\240\021\240!\330\021\025\320\025&\240c\250\021\330\020\027\220z\240\021\240!\340\r\024\220C\220q\330\014\031\230\024\230Z\240q\250\001\330\014\017\210t\320\023$\240C\240q\330\020\027\220z\240\021\240!\340\020\026\220i\230q\240\001\340\r\024\220C\220q\330\014\023\2204\220~\240Q\360\006\000\r\023\320\022%\240Q\240a\250:\260Q\260g\270Q\320\004%\240^\2601\360\016\000\020\021\330\010\013\2109\220C\220q\330\014\030\230\004\230L\250\002\250$\250b\260\n\270\"\270A\340\010\013\2104\210q\340\014\017\210r\220\025\220g\230Q\230a\330\020\033\2308\2403\240a\330\020\034\230H\240G\2502\250Y\260a\3207O\310r\320QR\360\006\000\t\030\220q\340\010\r\210S\220\001\220\023\220A\220T\230\022\2301\230A\330\010\014\210E\220\025\220a\220t\2302\230Q\230a\330\014\027\220r\230\021\230!\2302\230Q\230a\330\014\024\220A\220T\230\021\230,\240d\250$\250a\250r\260\021\330\014\024\220A\220T\230\021\230,\240d\250$\250a\250r\260\021\330\014\024\220A\220T\230\021\230,\240d\250$\250a\250r\260\021\330\014\024\220A\220V\2301\230L\250\004\250D\260\001\260\022\2601\330\014\024\220A\220T\230\021\230,\240d\250$\250a\250s\260!\330\014\024\220A\220U\230!\230<\240t\2504\250q\260\003\2601\330\014\024\220A\220U\230!\230<\240t\2504\250q\260\003\2601\330\014\017\210r\220\022\2204\220q\330\020\030\230\001\230\025\230a\230|\2504\250t\2601\260B\260a\340\010\014\210E\220\024\220Q\220h\230e\2401\330\014\017\210s\220!\2208\2301\230D\240\003\2401\330\020\024\220H\230A\230Q\360\006\000\016\022\220\021\220*\230H\240A\330\014\020\220\005\220Q\220j\240\003\2408\320+A\300\027\310\003\310:\320UV\330\010\r\210Q\320\016,\250B\250e\2605\270\001\270\022\2707\300$\300a\320\004&\240a\360\n\000\t\014\2104\320\017 \240\003\240:\250S\260\001\330 7\260q\270\004""\270M\310\024\310Y\320VZ\320Z[\360\006\000\t7\260b\3208J\310!\3102\310V\320SU\320UZ\320Z`\320`b\320bc\360\006\000\t\021\220\n\230\047\240\021\240!\330\034(\250\001\250\024\250]\270$\270m\3107\320R[\320[\\\320\\]\330\010\013\2101\210E\220\021\340\010\020\220\010\230\007\230q\240\001\330\034(\250\001\250\024\250]\270$\270m\3107\320R[\320[\\\320\\]\330\010\013\2101\210E\220\021\340\010\020\220\n\230\047\240\021\240!\330\034(\250\001\250\024\250]\270$\270m\3107\320R[\320[\\\320\\]\330\010\013\2101\210E\220\021\340\010\020\220\n\230\047\240\021\240!\330\034(\250\001\250\024\250]\270$\270m\3107\320R[\320[\\\320\\]\330\010\013\2101\210E\220\021\340\010\017\210q\320\004(\250\001\360\010\000\t\035\230M\250\021\250$\250j\270\001\320\004+\2509\260A\360\016\000\t\022\220\021\330\010\020\220\006\220g\230Q\230a\360\006\000\t\014\2104\210z\230\021\230\047\240\021\330\014\022\220)\2301\230A\340\010*\320*E\300Q\300d\310-\320W[\320[f\320fj\320jt\320tw\320wz\360\000\000{\001B\002\360\000\000B\002C\002\360\000\000C\002D\002\340\010\013\2106\220\022\2202\220S\230\006\230b\240\001\330\014\022\220)\2301\320\034h\320hi\320ij\360\006\000\0355\260A\260T\270\035\300g\310W\320T[\320[_\320_`\340\010\t\320\0048\270\001\360\032\000\t\017\320\016!\240\021\240!"; PyObject *data = NULL; #define __Pyx_DecompressString_UNUSED #define __Pyx_DecompressString_LZSS_UNUSED @@ -35476,127 +35476,127 @@ static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 357}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_x}; - __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_lambda, __pyx_mstate->__pyx_kp_b_iso88591_QgQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_lambda, __pyx_mstate->__pyx_kp_b_iso88591_QgQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 88}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; - __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_get_pointers_solver, __pyx_mstate->__pyx_kp_b_iso88591_A_9_a_9_a_Qd_7q_A_9_a_5Qd_Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_get_pointers_solver, __pyx_mstate->__pyx_kp_b_iso88591_A_9_a_9_a_Qd_7q_A_9_a_5Qd_Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 102}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_x0_bar, __pyx_mstate->__pyx_n_u_status, __pyx_mstate->__pyx_n_u_u0}; - __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_solve_for_x0, __pyx_mstate->__pyx_kp_b_iso88591_A_D_G1_D_G1_V1_7_Q_Cq_1_Gq_T_Qc, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_solve_for_x0, __pyx_mstate->__pyx_kp_b_iso88591_A_D_G1_D_G1_V1_7_Q_Cq_1_Gq_T_Qc, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 120}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; - __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_solve, __pyx_mstate->__pyx_kp_b_iso88591_A_M_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_solve, __pyx_mstate->__pyx_kp_b_iso88591_A_M_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 127}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_reset_qp_solver_mem}; - __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_reset, __pyx_mstate->__pyx_kp_b_iso88591_M_j, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_reset, __pyx_mstate->__pyx_kp_b_iso88591_M_j, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 134}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_data_len, __pyx_mstate->__pyx_n_u_data_2}; - __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_custom_update, __pyx_mstate->__pyx_kp_b_iso88591_A_3aq_7r9K1GSYY_1_j_4wVW, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_custom_update, __pyx_mstate->__pyx_kp_b_iso88591_A_3aq_7r9K1GSYY_1_j_4wVW, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 147}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_new_time_steps}; - __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_set_new_time_steps, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_set_new_time_steps, __pyx_mstate->__pyx_kp_b_iso88591_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 198}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_qp_solver_cond_N}; - __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_update_qp_solver_cond_N, __pyx_mstate->__pyx_kp_b_iso88591_8, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_update_qp_solver_cond_N, __pyx_mstate->__pyx_kp_b_iso88591_8, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 232}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_index, __pyx_mstate->__pyx_n_u_stage, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_field_2, __pyx_mstate->__pyx_n_u_nx}; - __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_eval_param_sens, __pyx_mstate->__pyx_kp_b_iso88591_9A_gQa_4z_1A_EQd_W_ffjjttwwz_B, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_eval_param_sens, __pyx_mstate->__pyx_kp_b_iso88591_9A_gQa_4z_1A_EQd_W_ffjjttwwz_B, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 257}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stage, __pyx_mstate->__pyx_n_u_field_2, __pyx_mstate->__pyx_n_u_out_fields, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_dims, __pyx_mstate->__pyx_n_u_out}; - __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_get, __pyx_mstate->__pyx_kp_b_iso88591_A_Qe5_V7_vQ_gQa_7_1A_6axq_6_2S_b, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_get, __pyx_mstate->__pyx_kp_b_iso88591_A_Qe5_V7_vQ_gQa_7_1A_6axq_6_2S_b, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 300}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self}; - __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_print_statistics, __pyx_mstate->__pyx_kp_b_iso88591_A_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_print_statistics, __pyx_mstate->__pyx_kp_b_iso88591_A_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 10, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 318}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_filename, __pyx_mstate->__pyx_n_u_overwrite, __pyx_mstate->__pyx_n_u_json, __pyx_mstate->__pyx_n_u_solution, __pyx_mstate->__pyx_n_u_lN, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_i_string, __pyx_mstate->__pyx_n_u_k, __pyx_mstate->__pyx_n_u_f}; - __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_store_iterate, __pyx_mstate->__pyx_kp_b_iso88591_1_9Cq_L_b_A_4q_r_gQa_83a_HG2Ya7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_store_iterate, __pyx_mstate->__pyx_kp_b_iso88591_1_9Cq_L_b_A_4q_r_gQa_83a_HG2Ya7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 361}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_filename, __pyx_mstate->__pyx_n_u_json, __pyx_mstate->__pyx_n_u_f, __pyx_mstate->__pyx_n_u_solution, __pyx_mstate->__pyx_n_u_key, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_stage}; - __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_load_iterate, __pyx_mstate->__pyx_kp_b_iso88591_A_4r_gQa_1_J_BeSXXYY_bbffg_HA_t5, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_load_iterate, __pyx_mstate->__pyx_kp_b_iso88591_A_4r_gQa_1_J_BeSXXYY_bbffg_HA_t5, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 10, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 377}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_field_2, __pyx_mstate->__pyx_n_u_double_fields, __pyx_mstate->__pyx_n_u_fields, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_sqp_iter, __pyx_mstate->__pyx_n_u_stat_m, __pyx_mstate->__pyx_n_u_stat_n, __pyx_mstate->__pyx_n_u_min_size, __pyx_mstate->__pyx_n_u_full_stats}; - __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_get_stats, __pyx_mstate->__pyx_kp_b_iso88591_A2_r_gQa_7_l_A_4_aq_Cq_4_Cq_t_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_get_stats, __pyx_mstate->__pyx_kp_b_iso88591_A2_r_gQa_7_l_A_4_aq_Cq_4_Cq_t_Qa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 459}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_out}; - __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_get_stat_int, __pyx_mstate->__pyx_kp_b_iso88591_A_m7R_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_get_stat_int, __pyx_mstate->__pyx_kp_b_iso88591_A_m7R_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 464}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_out}; - __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_get_stat_double, __pyx_mstate->__pyx_kp_b_iso88591_A_6b_b_m7R___q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_get_stat_double, __pyx_mstate->__pyx_kp_b_iso88591_A_6b_b_m7R___q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 469}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_m, __pyx_mstate->__pyx_n_u_out_mat}; - __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_get_stat_matrix, __pyx_mstate->__pyx_kp_b_iso88591_A_NarQWWYY_aaggiij_m7R_bbc_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_get_stat_matrix, __pyx_mstate->__pyx_kp_b_iso88591_A_NarQWWYY_aaggiij_m7R_bbc_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 475}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_out}; - __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_get_cost, __pyx_mstate->__pyx_kp_b_iso88591_A_at_ITQR_m_Ybbccd_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_get_cost, __pyx_mstate->__pyx_kp_b_iso88591_A_at_ITQR_m_Ybbccd_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 491}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_recompute, __pyx_mstate->__pyx_n_u_out, __pyx_mstate->__pyx_n_u_double_value, __pyx_mstate->__pyx_n_u_field}; - __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_get_residuals, __pyx_mstate->__pyx_kp_b_iso88591_a_4_S_7q_M_YVZZ_7b8J_2VSUUZZ_bb, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_get_residuals, __pyx_mstate->__pyx_kp_b_iso88591_a_4_S_7q_M_YVZZ_7b8J_2VSUUZZ_bb, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 12, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 523}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stage, __pyx_mstate->__pyx_n_u_field_2, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_cost_fields, __pyx_mstate->__pyx_n_u_constraints_fields, __pyx_mstate->__pyx_n_u_out_fields, __pyx_mstate->__pyx_n_u_mem_fields, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_value_2, __pyx_mstate->__pyx_n_u_dims, __pyx_mstate->__pyx_n_u_msg}; - __pyx_mstate_global->__pyx_codeobj_tab[19] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_set, __pyx_mstate->__pyx_kp_b_iso88591_A_4z_A_1_B_4q_ay_QgWG1_Qe5_gU_vQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[19])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[19] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_set, __pyx_mstate->__pyx_kp_b_iso88591_A_4z_A_1_B_4q_ay_QgWG1_Qe5_gU_vQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[19])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 589}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stage, __pyx_mstate->__pyx_n_u_field_2, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_dims, __pyx_mstate->__pyx_n_u_value_2, __pyx_mstate->__pyx_n_u_value_shape}; - __pyx_mstate_global->__pyx_codeobj_tab[20] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_cost_set, __pyx_mstate->__pyx_kp_b_iso88591_A_4z_A_1_Gq_AQ_gQa_AT_4z_q_AQ_fA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[20])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[20] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_cost_set, __pyx_mstate->__pyx_kp_b_iso88591_A_4z_A_1_Gq_AQ_gQa_AT_4z_q_AQ_fA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[20])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 624}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stage, __pyx_mstate->__pyx_n_u_field_2, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_dims, __pyx_mstate->__pyx_n_u_value_2, __pyx_mstate->__pyx_n_u_value_shape}; - __pyx_mstate_global->__pyx_codeobj_tab[21] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_constraints_set, __pyx_mstate->__pyx_kp_b_iso88591_A_4z_A_1_NatSTTU_gQa_C_4q_4z_q_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[21])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[21] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_constraints_set, __pyx_mstate->__pyx_kp_b_iso88591_A_4z_A_1_NatSTTU_gQa_C_4q_4z_q_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[21])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 662}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stage, __pyx_mstate->__pyx_n_u_field_2, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_dims, __pyx_mstate->__pyx_n_u_out}; - __pyx_mstate_global->__pyx_codeobj_tab[22] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_get_from_qp_in, __pyx_mstate->__pyx_kp_b_iso88591_A_gQa_4_DP___iippwwxx_7b_b_AT_Qe, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[22])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[22] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_get_from_qp_in, __pyx_mstate->__pyx_kp_b_iso88591_A_gQa_4_DP___iippwwxx_7b_b_AT_Qe, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[22])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 10, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 684}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_field_2, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_int_fields, __pyx_mstate->__pyx_n_u_double_fields, __pyx_mstate->__pyx_n_u_string_fields, __pyx_mstate->__pyx_n_u_field, __pyx_mstate->__pyx_n_u_int_value, __pyx_mstate->__pyx_n_u_double_value, __pyx_mstate->__pyx_n_u_string_value}; - __pyx_mstate_global->__pyx_codeobj_tab[23] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_options_set, __pyx_mstate->__pyx_kp_b_iso88591_A_Qo_2IIZ_A_A_S_S_l_l_m_l_Vccvvw, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[23])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[23] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_options_set, __pyx_mstate->__pyx_kp_b_iso88591_A_Qo_2IIZ_A_A_S_S_l_l_m_l_Vccvvw, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[23])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 747}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stage, __pyx_mstate->__pyx_n_u_idx_values, __pyx_mstate->__pyx_n_u_param_values, __pyx_mstate->__pyx_n_u_value_2, __pyx_mstate->__pyx_n_u_idx, __pyx_mstate->__pyx_n_u_n_update}; - __pyx_mstate_global->__pyx_codeobj_tab[24] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_venv_linux_arm64_lib_python3_12, __pyx_mstate->__pyx_n_u_set_params_sparse, __pyx_mstate->__pyx_kp_b_iso88591_A_4z_1_1A_as_S_1A_a7I_Qa_9_LA__b, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[24])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[24] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_acados_acados_template_acados_oc_2, __pyx_mstate->__pyx_n_u_set_params_sparse, __pyx_mstate->__pyx_kp_b_iso88591_A_4z_1_1A_as_S_1A_a7I_Qa_9_LA__b, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[24])) goto bad; } { const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1}; diff --git a/openpilot/selfdrive/controls/lib/longitudinal_planner.py b/openpilot/selfdrive/controls/lib/longitudinal_planner.py index cee611bb25..6702082962 100755 --- a/openpilot/selfdrive/controls/lib/longitudinal_planner.py +++ b/openpilot/selfdrive/controls/lib/longitudinal_planner.py @@ -32,6 +32,7 @@ from openpilot.starpilot.longitudinal.ioniq6_start import eligible as ioniq6_lon from openpilot.starpilot.longitudinal.lane_change_gap import LaneChangeGap, project as project_lane_gap from openpilot.starpilot.longitudinal.experimental_release import ConditionalHandoff, ExperimentalRelease, project as project_release from openpilot.starpilot.longitudinal.force_stop import StopPlan +from openpilot.starpilot.longitudinal.force_stop_braking import distance_target from openpilot.starpilot.longitudinal.follow_jerk import FollowJerk from openpilot.starpilot.longitudinal.lead_takeoff import LeadTakeoff, project as project_takeoff from openpilot.starpilot.longitudinal.lead_behavior import adjust as adjust_lead_behavior @@ -409,6 +410,9 @@ class LongitudinalPlanner: candidates = [(output_a_target_mpc, self.mpc.source, output_should_stop_mpc), (self.a_cruise, LongitudinalPlanSource.cruise, cruise_should_stop)] + if self.ioniq6_throttle_gate_enabled and self.force_stop_plan.forcing and self.force_stop_plan.obstacle_m is not None: + stop_target = distance_target(v_ego, sm['carState'].aEgo, self.force_stop_plan.obstacle_m, action_t) + candidates.append((stop_target, LongitudinalPlanSource.cruise, False)) if sm['selfdriveState'].experimentalMode: candidates.append((output_a_target_e2e, LongitudinalPlanSource.e2e, output_should_stop_e2e)) @@ -510,5 +514,9 @@ class LongitudinalPlanner: hold.modelMonoTime = longitudinalPlan.modelMonoTime hold.driveStartMonoTime = self.plan_drive_id hold.forceStopHolding = bool(self.force_stop_plan.manual_hold) + hold.forceStopBraking = bool(self.ioniq6_throttle_gate_enabled and self.force_stop_plan.forcing and + self.force_stop_plan.should_stop) + hold.forceStopEpisodeMonoTime = self.force_stop_plan.episode_ns pm.send('longitudinalPlan', plan_send) pm.send('starpilotLongitudinalPlan', companion) + diff --git a/openpilot/selfdrive/locationd/models/generated/libcar.so b/openpilot/selfdrive/locationd/models/generated/libcar.so index aacf2b9ae9..99e02413d9 100755 Binary files a/openpilot/selfdrive/locationd/models/generated/libcar.so and b/openpilot/selfdrive/locationd/models/generated/libcar.so differ diff --git a/openpilot/selfdrive/locationd/models/generated/libpose.so b/openpilot/selfdrive/locationd/models/generated/libpose.so index acece8c1e1..21366a6265 100755 Binary files a/openpilot/selfdrive/locationd/models/generated/libpose.so and b/openpilot/selfdrive/locationd/models/generated/libpose.so differ diff --git a/openpilot/selfdrive/pandad/libpanda.a b/openpilot/selfdrive/pandad/libpanda.a index 1bce330c49..be45315afc 100644 Binary files a/openpilot/selfdrive/pandad/libpanda.a and b/openpilot/selfdrive/pandad/libpanda.a differ diff --git a/openpilot/selfdrive/pandad/main.o b/openpilot/selfdrive/pandad/main.o index d44c405cd8..0c265550df 100644 Binary files a/openpilot/selfdrive/pandad/main.o and b/openpilot/selfdrive/pandad/main.o differ diff --git a/openpilot/selfdrive/pandad/panda.o b/openpilot/selfdrive/pandad/panda.o index 96bbcc1c9b..f09674753c 100644 Binary files a/openpilot/selfdrive/pandad/panda.o and b/openpilot/selfdrive/pandad/panda.o differ diff --git a/openpilot/selfdrive/pandad/panda_safety.o b/openpilot/selfdrive/pandad/panda_safety.o index 114427ce65..267160d9ec 100644 Binary files a/openpilot/selfdrive/pandad/panda_safety.o and b/openpilot/selfdrive/pandad/panda_safety.o differ diff --git a/openpilot/selfdrive/pandad/pandad b/openpilot/selfdrive/pandad/pandad index ebd0714a09..68441752f3 100755 Binary files a/openpilot/selfdrive/pandad/pandad and b/openpilot/selfdrive/pandad/pandad differ diff --git a/openpilot/selfdrive/pandad/pandad.o b/openpilot/selfdrive/pandad/pandad.o index 5827219917..d04ab37a84 100644 Binary files a/openpilot/selfdrive/pandad/pandad.o and b/openpilot/selfdrive/pandad/pandad.o differ diff --git a/openpilot/starpilot/longitudinal/extension.py b/openpilot/starpilot/longitudinal/extension.py index f9f428c2e1..27901ef8bb 100644 --- a/openpilot/starpilot/longitudinal/extension.py +++ b/openpilot/starpilot/longitudinal/extension.py @@ -24,6 +24,7 @@ class LongitudinalContext: custom_acceleration: bool | None = None profile_max_accel: float | None = None faster_takeoffs: bool = False + force_stop_braking: bool = False class LongitudinalExtension: @@ -164,3 +165,4 @@ def create_extension(cp, startup_preferences=None): not extension.ignore_cruise_standstill): return None return extension + diff --git a/openpilot/starpilot/longitudinal/force_stop.py b/openpilot/starpilot/longitudinal/force_stop.py index 9aa4d847de..dfbb2ff244 100644 --- a/openpilot/starpilot/longitudinal/force_stop.py +++ b/openpilot/starpilot/longitudinal/force_stop.py @@ -4,6 +4,7 @@ from dataclasses import dataclass import math from openpilot.common.realtime import DT_MDL +from openpilot.starpilot.longitudinal.force_stop_braking import STOP_RESERVE_M STANDSTILL_HOLD_NS = 2_000_000_000 STANDSTILL_CLEAR_NS = 750_000_000 @@ -34,9 +35,12 @@ class StopTune: jerk_scale: float = 0.32 reanchor_speed_tolerance: float | None = None low_speed_hold_mps: float | None = None + distance_control: bool = False def vehicle_tune(fingerprint: str) -> StopTune: + if fingerprint == 'HYUNDAI_IONIQ_6': + return StopTune(distance_control=True) if fingerprint == 'TOYOTA_CAMRY_TSS2': return StopTune(handoff_m=4.5, distance_bias_m=6.0) if fingerprint == 'HYUNDAI_ELANTRA_2021': @@ -70,6 +74,7 @@ class StopFrame: sign: bool = False dashboard_sign: bool = False vision_distance_m: float | None = None + moving_preview: bool = False @dataclass(frozen=True) @@ -86,6 +91,7 @@ class StopPlan: takeoff_light_observed: bool = False takeoff_light: bool = False resume_override: bool = False + episode_ns: int = 0 class ForceStop: @@ -110,6 +116,9 @@ class ForceStop: self.previously_enabled = False self.distance = 0.0 self.distance_cap = 0.0 + self.episode_ns = 0 + self.stop_requested = False + self.preview_tracking = False self.queue_sign_ns = 0 self.queue_line = None self._clear_sign_estimate() @@ -276,16 +285,21 @@ class ForceStop: offset = max(-20, min(20, offset_ft)) * .3048 approach = 0.0 ceiling = None + native_stop = False if force and not overridden: if self.entry_speed is None and not frame.standstill: self.entry_speed = speed + self.preview_tracking = tune.distance_control and frame.moving_preview self.forcing |= not frame.standstill or held if held: self.distance = 0 ceiling = 0.0 + native_stop = True else: - self.distance = max(0.0, self.distance - speed * dt) - if (available and not frame.sign and self.distance > max(tune.handoff_m, 40) and not frame.model_should_stop and + self.distance -= speed * dt + if not tune.distance_control: + self.distance = max(0.0,self.distance) + if (not tune.distance_control and available and not frame.sign and self.distance > max(tune.handoff_m, 40) and not frame.model_should_stop and horizon > self.distance + 3 and (tune.reanchor_speed_tolerance is None or self.entry_speed is None or speed >= self.entry_speed - tune.reanchor_speed_tolerance)): self.distance = horizon @@ -294,16 +308,29 @@ class ForceStop: self.distance_cap = max(0.0, self.distance_cap - speed * dt) cap = self.distance_cap + 15 * min(self.distance_cap / 60, 1) self.distance = min(self.distance, cap) + if available and (not frame.moving_preview or frame.model_should_stop or self.sign_confirmed): + self.preview_tracking = False + if (self.preview_tracking and available and frame.moving_preview and not self.stop_requested and + not self.sign_confirmed and not frame.model_should_stop): + # A moving model preview is not a fixed world endpoint to count down. + self.distance = self.distance_cap = horizon + terminal_distance = self.distance if sign_estimate is not None and (self.sign_confirmed or frame.sign and available and horizon < SIGN_MODEL_AGREE_M): self.distance = min(sign_estimate, cap) if self.queue_line is not None and self.sign_confirmed: self.distance = self.queue_line + if tune.distance_control and self.stop_requested: + self.distance = min(self.distance, terminal_distance) effective = self.distance + offset + tune.distance_bias_m decel = SIGN_APPROACH_DECEL if frame.sign else MODEL_APPROACH_DECEL ceiling = math.sqrt(2 * decel * max(0, effective - tune.handoff_m)) + native_stop = ceiling <= .5 + if tune.distance_control: + ceiling = math.sqrt(2 * decel * max(0, effective - STOP_RESERVE_M)) else: self.forcing = False self.entry_speed = None + self.preview_tracking = False self.sign_confirmed = False self._clear_standstill() self.distance = self.distance_cap = horizon if available else 0.0 @@ -313,13 +340,22 @@ class ForceStop: if effective > tune.handoff_m: ceiling = math.sqrt(2 * MODEL_APPROACH_DECEL * (effective - tune.handoff_m)) self.previously_enabled = frame.enabled + self.stop_requested = bool(self.forcing and (self.stop_requested or native_stop)) + if self.forcing and not self.episode_ns: + self.episode_ns = now + elif not self.forcing: + self.episode_ns = 0 stop_length = self.distance if self.forcing else approach # The MPC obstacle includes its standing-distance term; adding it at the # native boundary avoids moving the actual stop line by that buffer. - # The offset moves the handoff with the ceiling; otherwise a positive offset creeps with no stop target. obstacle = (stop_length * .93 + offset + tune.distance_bias_m - if stop_length > 0 and stop_length + offset > tune.handoff_m else None) - return StopPlan(now, ceiling, obstacle, self.forcing, bool(self.forcing and ceiling is not None and ceiling <= .5), - self.distance if self.forcing else 0.0, approach, + if stop_length > 0 and stop_length + max(0.0, offset) > tune.handoff_m else None) + if tune.distance_control and self.forcing: + obstacle = max(0.0,min(self.distance * .93 + offset + tune.distance_bias_m, + (self.distance + offset + tune.distance_bias_m) * .93)) + should_stop = self.stop_requested if tune.distance_control else bool(self.forcing and ceiling is not None and ceiling <= .5) + return StopPlan(now, ceiling, obstacle, self.forcing, should_stop, + max(0.0,self.distance) if self.forcing else 0.0, approach, tune.jerk_scale if self.forcing or approach > 0 else 1.0, bool(held and self.forcing and not overridden), - resume_override=now < self.resume_until_ns) + resume_override=now < self.resume_until_ns, episode_ns=self.episode_ns) + diff --git a/openpilot/starpilot/longitudinal/force_stop_braking.py b/openpilot/starpilot/longitudinal/force_stop_braking.py new file mode 100644 index 0000000000..e1af20af49 --- /dev/null +++ b/openpilot/starpilot/longitudinal/force_stop_braking.py @@ -0,0 +1,39 @@ +"""Ioniq 6 distance braking under the existing Force Stop stop/hold intent.""" + +import math + +MAX_AGE_NS = 150_000_000 +STOP_RESERVE_M = .5 +MIN_ACCEL = -3.5 + + +def distance_target(speed, acceleration, distance, delay): + if (not all(math.isfinite(x) for x in (speed, acceleration, distance, delay)) or + speed < 0 or distance < 0 or not 0 <= delay <= 2): + return MIN_ACCEL + remaining = distance - speed * delay - .5 * max(acceleration, 0.) * delay**2 - STOP_RESERVE_M + future_speed = speed + max(acceleration, 0.) * delay + return max(MIN_ACCEL, -future_speed**2 / (2 * max(remaining, .01))) + + +def current_braking(sm, now_ns): + try: + device, plan, stop = (sm[name] for name in ('deviceState', 'longitudinalPlan', 'starpilotLongitudinalPlan')) + drive = int(device.startedMonoTime) + if not device.started or not 0 < drive < now_ns or not plan.shouldStop: + return False + for name in ('carState', 'deviceState', 'longitudinalPlan', 'starpilotLongitudinalPlan'): + stamp, receipt = int(sm.logMonoTime[name]), int(sm.recv_time[name] * 1e9) + maximum = 1_250_000_000 if name == 'deviceState' else MAX_AGE_NS + if (not sm.seen[name] or not sm.valid[name] or not sm.alive[name] or + not drive < stamp <= receipt <= now_ns or now_ns - stamp > maximum): + return False + return bool(stop.version == 1 and stop.forceStopBraking and stop.driveStartMonoTime == drive and + drive < stop.forceStopEpisodeMonoTime <= stop.modelMonoTime <= stop.sourcePlanMonoTime <= now_ns and + stop.sourcePlanMonoTime == sm.logMonoTime['longitudinalPlan'] and + stop.sourcePlanMonoTime == sm.logMonoTime['starpilotLongitudinalPlan'] and + stop.modelMonoTime == plan.modelMonoTime and now_ns - stop.modelMonoTime <= MAX_AGE_NS and + sm['carState'].canValid and not sm['carState'].canTimeout and + not sm['carState'].brakePressed and not sm['carState'].gasPressed) + except (AttributeError, KeyError, TypeError, ValueError, OverflowError): + return False diff --git a/openpilot/starpilot/longitudinal/force_stop_runtime.py b/openpilot/starpilot/longitudinal/force_stop_runtime.py index 29ccfa326f..bcbbad11a6 100644 --- a/openpilot/starpilot/longitudinal/force_stop_runtime.py +++ b/openpilot/starpilot/longitudinal/force_stop_runtime.py @@ -1,6 +1,7 @@ """Current-drive Force Stop owner with bounded preference reads and live scene inputs.""" from dataclasses import replace +import math from openpilot.starpilot.conditional_mode.curve import frozen_raw_curve from openpilot.starpilot.conditional_mode.preferences import CEMOptions, decode_preferences, PreferenceError @@ -13,6 +14,7 @@ from openpilot.starpilot.longitudinal.force_stop import ForceStop, StopFrame, St from openpilot.starpilot.model_geometry import road_curvature, standstill_clear_horizon, standstill_release_speed from openpilot.starpilot.saved_source import read_saved from openpilot.starpilot.longitudinal.stop_resume import StopResume +from openpilot.starpilot.longitudinal.ioniq6_start import eligible as ioniq6_long_eligible from openpilot.starpilot.speed_limits.vision.stop_observation import CONTROL_STOP_MAX_AGE_NS, StopConfirmation, read_stop_evidence @@ -198,8 +200,12 @@ class ForceStopRuntime: raw_curve[1] if raw_curve is not None else False, curvature[0] if curvature is not None else None, bool(car.leftBlinker or car.rightBlinker), float(car.steeringAngleDeg), resume_requested=resume_requested, perception_available=perception_available, sign=dashboard_sign or vision_fresh, - dashboard_sign=dashboard_sign, vision_distance_m=vision_distance) - self.plan = self.policy.step(frame, vehicle_tune(str(cp.carFingerprint)), self.offset) + dashboard_sign=dashboard_sign, vision_distance_m=vision_distance, + moving_preview=bool(perception_available and not model.action.shouldStop and + len(model.velocity.x) == len(model.position.x) and + math.isfinite(model.velocity.x[-1]) and model.velocity.x[-1] > .3)) + tune = replace(vehicle_tune(str(cp.carFingerprint)), distance_control=ioniq6_long_eligible(cp)) + self.plan = self.policy.step(frame, tune, self.offset) if takeoff_enabled: self.plan = replace(self.plan, takeoff_light_observed=takeoff_observed, takeoff_light=takeoff_light) return self.plan diff --git a/openpilot/starpilot/longitudinal/inputs.py b/openpilot/starpilot/longitudinal/inputs.py index 33c947ce30..92e8323be8 100644 --- a/openpilot/starpilot/longitudinal/inputs.py +++ b/openpilot/starpilot/longitudinal/inputs.py @@ -131,6 +131,8 @@ class LongitudinalInputs: @property def optional_services(self): + if self.ioniq6_start_enabled: + return ['radarState', 'deviceState', 'starpilotLongitudinalPlan'] if (self.toyota_sienna_replay or self.toyota_sienna_production or self.toyota_corolla_stop or self.ioniq6_start_enabled or self.gm_start_enabled or self.gm_volt_enabled or self.gm_euv_enabled or self.gm_cc_enabled or self.gm_cc_stop_enabled or self.gm_ascm_enabled or self.gm_suburban_enabled): @@ -151,6 +153,9 @@ class LongitudinalInputs: def context(self, active): context = self._vehicle_context(active) + if active and self.ioniq6_start_enabled: + from openpilot.starpilot.longitudinal.force_stop_braking import current_braking + context = replace(context, force_stop_braking=current_braking(self.sm, time.monotonic_ns())) self.faster_takeoffs = bool(self.takeoff_preferences is not None and self.takeoff_preferences.sample(time.monotonic_ns())) if not self.faster_takeoffs: @@ -424,3 +429,4 @@ class LongitudinalInputs: return None return PedalStartEvidence(drive_id, now_ns, any(lead.present for lead in leads), traffic_mode=traffic_mode, custom_acceleration=profile.custom_acceleration if profile is not None else False, profile_max_accel=ceiling) + diff --git a/openpilot/starpilot/longitudinal/tests/test_force_stop.py b/openpilot/starpilot/longitudinal/tests/test_force_stop.py index 2828a85085..6c87028c1a 100644 --- a/openpilot/starpilot/longitudinal/tests/test_force_stop.py +++ b/openpilot/starpilot/longitudinal/tests/test_force_stop.py @@ -15,11 +15,75 @@ def frame(tick, **changes): class ForceStopTests(unittest.TestCase): + def test_negative_offset_keeps_the_cold_approach_obstacle(self): + for vehicle in ['OTHER','HYUNDAI_IONIQ_6']: + plan = ForceStop().step(frame(0,speed_mps=8.,horizon_m=10.),vehicle_tune(vehicle),-20) + self.assertFalse(plan.forcing) + assert plan.obstacle_m is not None + self.assertAlmostEqual(plan.obstacle_m,10*.93-20*.3048) + + def test_ioniq_negative_offset_keeps_the_existing_conservative_obstacle(self): + owner = ForceStop() + owner.last_model_ns = BASE+10*TICK + owner.distance = 10. + owner.distance_cap = 10. + owner.forcing = True + owner.timer = 1. + plan = owner.step(frame(11,speed_mps=4.,horizon_m=10.),vehicle_tune('HYUNDAI_IONIQ_6'),-20) + assert plan.obstacle_m is not None + self.assertAlmostEqual(plan.obstacle_m,9.8*.93-20*.3048) + + def test_ioniq_offset_moves_the_endpoint_without_rescaling_the_offset(self): + owner = ForceStop() + owner.last_model_ns = BASE+10*TICK + owner.distance = -1. + owner.forcing = True + owner.timer = 1. + plan = owner.step(frame(11,speed_mps=4.,horizon_m=10.),vehicle_tune('HYUNDAI_IONIQ_6'),8) + assert plan.obstacle_m is not None + self.assertAlmostEqual(plan.obstacle_m,(-1.2+8*.3048)*.93) + + def test_ioniq_positive_offset_continues_to_consume_remaining_distance(self): + owner = ForceStop() + tune = vehicle_tune('HYUNDAI_IONIQ_6') + for tick in range(100): + plan = owner.step(frame(tick,speed_mps=4.,horizon_m=10.),tune,8) + self.assertTrue(plan.should_stop) + self.assertEqual(plan.tracked_distance_m,0.) + self.assertEqual(plan.obstacle_m,0.) + + def test_ioniq_keeps_rolling_goal_and_stop_intent_separate(self): + owner = ForceStop() + tune = vehicle_tune('HYUNDAI_IONIQ_6') + for tick in range(35): + plan = owner.step(frame(tick,speed_mps=4.,horizon_m=10.),tune) + if plan.forcing and plan.tracked_distance_m < 6: + self.assertTrue(plan.should_stop) + assert plan.speed_ceiling_mps is not None + self.assertGreater(plan.speed_ceiling_mps,.5) + self.assertIsNotNone(plan.obstacle_m) + self.assertTrue(plan.should_stop) + + def test_episode_is_retained_until_release_and_new_commit_gets_new_identity(self): + owner = ForceStop() + tune = vehicle_tune('HYUNDAI_IONIQ_6') + for tick in range(20): + plan = owner.step(frame(tick),tune) + episode = plan.episode_ns + self.assertGreater(episode,BASE) + for tick in range(20,30): + self.assertEqual(owner.step(frame(tick),tune).episode_ns,episode) + self.assertEqual(owner.step(frame(30,pedal_override=True),tune).episode_ns,0) + for tick in range(31,260): + plan = owner.step(frame(tick),tune) + self.assertGreater(plan.episode_ns,episode) + def setUp(self): self.owner = ForceStop() self.tune = vehicle_tune('HYUNDAI_IONIQ_6') def test_original_approach_commit_kinematics_and_obstacle(self): + self.tune = vehicle_tune('OTHER') for tick in range(40): plan = self.owner.step(frame(tick, model_should_stop=True), self.tune) # The existing 0.5s accumulator crosses .5 on frame 10 with binary floats. @@ -370,6 +434,7 @@ class ForceStopTests(unittest.TestCase): self.assertLessEqual(plan.tracked_distance_m, cap - .5 + 15) def test_offset_and_handoff_keep_native_should_stop(self): + self.tune = vehicle_tune('OTHER') for offset in (-20, 0, 20): with self.subTest(offset=offset): self.owner.reset() @@ -404,10 +469,6 @@ class ForceStopTests(unittest.TestCase): self.assertFalse(self.owner.forcing) -if __name__ == '__main__': - unittest.main() - - def test_resume_override_is_only_for_a_previous_hold_and_ends_at_speed_lead_or_timeout(self): for cause in ('speed', 'lead', 'tracked', 'timeout'): with self.subTest(cause=cause): @@ -423,3 +484,94 @@ if __name__ == '__main__': self.owner.reset() first = self.owner.step(frame(0, speed_mps=0., horizon_m=30., standstill=True, raw_model_stopped=True, resume_requested=True), self.tune) self.assertFalse(first.resume_override) + +def preview_frame(tick, **changes): + return replace(frame(tick, speed_mps=4.0, horizon_m=30.0, raw_model_stopped=True), **changes) + + +class MovingPreviewTests(unittest.TestCase): + def test_moving_preview_does_not_become_an_odometry_countdown(self): + owner = ForceStop() + for tick in range(180): + plan = owner.step(preview_frame(tick, moving_preview=True), vehicle_tune('HYUNDAI_IONIQ_6')) + self.assertTrue(plan.forcing) + self.assertFalse(plan.should_stop) + self.assertEqual(plan.tracked_distance_m, 30.0) + + def test_both_fresh_horizons_extend_the_rolling_preview(self): + for horizon in [24.59375, 32.34375]: + owner = ForceStop() + owner.last_model_ns = BASE + owner.distance = owner.distance_cap = 6.19 + owner.forcing = True + owner.timer = 1.0 + owner.entry_speed = 4.0 + owner.preview_tracking = True + plan = owner.step(preview_frame(1, horizon_m=horizon, moving_preview=True), vehicle_tune('HYUNDAI_IONIQ_6')) + self.assertFalse(plan.should_stop) + self.assertEqual(plan.tracked_distance_m, horizon) + + def test_terminal_stop_cannot_reopen(self): + owner = ForceStop() + for tick in range(15): + plan = owner.step(preview_frame(tick, horizon_m=5.0, moving_preview=True), vehicle_tune('HYUNDAI_IONIQ_6')) + self.assertTrue(plan.should_stop) + before = plan.tracked_distance_m + plan = owner.step(preview_frame(15, horizon_m=35.0, moving_preview=True), vehicle_tune('HYUNDAI_IONIQ_6')) + self.assertTrue(plan.should_stop) + self.assertLess(plan.tracked_distance_m, before) + + def test_missing_geometry_keeps_last_preview_and_odometry(self): + owner = ForceStop() + for tick in range(15): + before = owner.step(preview_frame(tick, moving_preview=True), vehicle_tune('HYUNDAI_IONIQ_6')) + after = owner.step(preview_frame(15, horizon_m=None, road_curvature=None, perception_available=False, moving_preview=True), vehicle_tune('HYUNDAI_IONIQ_6')) + self.assertAlmostEqual(after.tracked_distance_m, before.tracked_distance_m - 0.2) + + def test_confirmed_stop_and_sign_cannot_resume_preview_tracking(self): + for kw in [{'model_should_stop': True}, {'sign': True}]: + owner = ForceStop() + owner.last_model_ns = BASE + owner.distance = owner.distance_cap = 8.0 + owner.forcing = True + owner.timer = 1.0 + owner.entry_speed = 4.0 + owner.preview_tracking = True + fixed = owner.step(preview_frame(1, horizon_m=35.0, moving_preview=True, **kw), vehicle_tune('HYUNDAI_IONIQ_6')) + after = owner.step(preview_frame(2, horizon_m=50.0, moving_preview=True), vehicle_tune('HYUNDAI_IONIQ_6')) + self.assertFalse(owner.preview_tracking) + self.assertLess(after.tracked_distance_m, fixed.tracked_distance_m) + + def test_terminal_stop_distance_cannot_reopen_on_new_sign_range(self): + owner = ForceStop() + for tick in range(15): + before = owner.step(preview_frame(tick, horizon_m=5.0), vehicle_tune('HYUNDAI_IONIQ_6')) + self.assertTrue(before.should_stop) + after = owner.step(preview_frame(15, horizon_m=35.0, sign=True, vision_distance_m=30.), vehicle_tune('HYUNDAI_IONIQ_6')) + self.assertTrue(after.should_stop) + self.assertLess(after.tracked_distance_m, before.tracked_distance_m) + + def test_once_stationary_endpoint_seen_it_cannot_become_a_moving_preview_again(self): + owner = ForceStop() + for tick in range(15): + owner.step(preview_frame(tick, moving_preview=True), vehicle_tune('HYUNDAI_IONIQ_6')) + fixed = owner.step(preview_frame(15, horizon_m=20.0, moving_preview=False), vehicle_tune('HYUNDAI_IONIQ_6')) + reopened = owner.step(preview_frame(16, horizon_m=35.0, moving_preview=True), vehicle_tune('HYUNDAI_IONIQ_6')) + self.assertLess(reopened.tracked_distance_m, fixed.tracked_distance_m) + + def test_fixed_endpoint_above_forty_metres_cannot_reopen(self): + owner = ForceStop() + owner.last_model_ns = BASE + owner.distance = owner.distance_cap = 80. + owner.entry_speed = 4. + owner.forcing = True + owner.timer = 1. + plan = owner.step(preview_frame(1, horizon_m=190., moving_preview=True), vehicle_tune('HYUNDAI_IONIQ_6')) + self.assertLess(plan.tracked_distance_m, 80.) + + def test_other_profiles_retain_existing_distance_policy(self): + owner = ForceStop() + for tick in range(180): + plan = owner.step(preview_frame(tick, moving_preview=True), vehicle_tune('OTHER')) + self.assertTrue(plan.should_stop) + self.assertLess(plan.tracked_distance_m, 6.0) diff --git a/openpilot/starpilot/longitudinal/tests/test_force_stop_braking.py b/openpilot/starpilot/longitudinal/tests/test_force_stop_braking.py new file mode 100644 index 0000000000..920ec95c83 --- /dev/null +++ b/openpilot/starpilot/longitudinal/tests/test_force_stop_braking.py @@ -0,0 +1,125 @@ +from types import SimpleNamespace as NS +from unittest import TestCase +import math +import tempfile +from unittest.mock import patch + +from openpilot.starpilot.longitudinal.force_stop_braking import current_braking, distance_target + +BASE = 100_000_000_000 +NOW = BASE+1_000_000_000 + + +def inputs(): + class Messages(dict): + pass + sm = Messages(deviceState=NS(started=True,startedMonoTime=BASE), + carState=NS(canValid=True,canTimeout=False,brakePressed=False,gasPressed=False), + longitudinalPlan=NS(shouldStop=True,modelMonoTime=NOW-20_000_000), + starpilotLongitudinalPlan=NS(version=1,forceStopBraking=True,driveStartMonoTime=BASE, + forceStopEpisodeMonoTime=BASE+1,modelMonoTime=NOW-20_000_000,sourcePlanMonoTime=NOW-10_000_000)) + sm.logMonoTime = dict.fromkeys(sm,NOW-10_000_000) + sm.recv_time = dict.fromkeys(sm,(NOW-5_000_000)/1e9) + sm.valid = dict.fromkeys(sm,True) + sm.alive = dict.fromkeys(sm,True) + sm.seen = dict.fromkeys(sm,True) + return sm + + +class ForceStopBrakingTests(TestCase): + def test_only_current_matching_stop_intent_qualifies(self): + self.assertTrue(current_braking(inputs(),NOW)) + for field,value in [('version',0),('forceStopBraking',False),('driveStartMonoTime',BASE-1), + ('forceStopEpisodeMonoTime',BASE),('forceStopEpisodeMonoTime',NOW+1), + ('modelMonoTime',NOW-21_000_000),('sourcePlanMonoTime',NOW-11_000_000)]: + with self.subTest(field=field,value=value): + sm = inputs() + setattr(sm['starpilotLongitudinalPlan'],field,value) + self.assertFalse(current_braking(sm,NOW)) + + def test_withdrawal_override_or_stale_source_keeps_original_stop(self): + for field in ['brakePressed','gasPressed','canTimeout']: + sm = inputs() + setattr(sm['carState'],field,True) + self.assertFalse(current_braking(sm,NOW)) + for name in inputs(): + for bad in ['seen','valid','alive']: + sm = inputs() + getattr(sm,bad)[name] = False + self.assertFalse(current_braking(sm,NOW)) + sm = inputs() + sm['longitudinalPlan'].shouldStop = False + self.assertFalse(current_braking(sm,NOW)) + self.assertFalse(current_braking(inputs(),NOW+2_000_000_000)) + + def test_distance_target_strengthens_with_less_room_or_more_latency(self): + self.assertLess(distance_target(4.,0.,6.,.5),distance_target(4.,0.,12.,.5)) + self.assertLess(distance_target(4.,0.,12.,.5),distance_target(4.,0.,12.,.1)) + self.assertLessEqual(distance_target(4.,1.,12.,.5),distance_target(4.,0.,12.,.5)) + self.assertEqual(distance_target(4.,0.,0.,.5),-3.5) + self.assertEqual(distance_target(4.,float('nan'),12.,.5),-3.5) + self.assertEqual(distance_target(4.,0.,12.,-1.),-3.5) + self.assertEqual(distance_target(0.,0.,0.,.5),0.) + + +class NativeForceStopBrakingTests(TestCase): + def test_actual_inputs_control_hold_and_can_request(self): + from openpilot.cereal import messaging + from openpilot.common.params import Params + from openpilot.selfdrive.controls.lib.longcontrol import LongControl, LongCtrlState + from openpilot.starpilot.longitudinal.inputs import LongitudinalInputs + from openpilot.starpilot.longitudinal.tests.test_ioniq6_start import candidate, car_state + from opendbc.can.packer import CANPacker + from opendbc.car.hyundai.hyundaicanfd import create_acc_control + from opendbc.car.hyundai.ioniq6_longitudinal import Ioniq6LongitudinalPolicy + + stock,cp = candidate() + sm = inputs() + sm.all_checks = lambda names: all(sm.valid.get(name,False) for name in names) + stop = messaging.new_message('starpilotLongitudinalPlan',valid=True) + stop.logMonoTime = NOW-10_000_000 + for key,value in vars(sm['starpilotLongitudinalPlan']).items(): + setattr(stop.starpilotLongitudinalPlan,key,value) + plan = messaging.new_message('longitudinalPlan',valid=True) + plan.logMonoTime = NOW-10_000_000 + plan.longitudinalPlan.modelMonoTime = NOW-20_000_000 + plan.longitudinalPlan.shouldStop = True + sm['starpilotLongitudinalPlan'] = messaging.log_from_bytes(stop.to_bytes()).starpilotLongitudinalPlan + sm['longitudinalPlan'] = messaging.log_from_bytes(plan.to_bytes()).longitudinalPlan + car = car_state(speed=4.,standstill=False) + sm['carState'] = car + with tempfile.TemporaryDirectory() as directory: + reader = LongitudinalInputs(cp,Params(directory),lambda:sm) + self.assertIn('starpilotLongitudinalPlan',reader.optional_services) + with patch('openpilot.starpilot.longitudinal.inputs.time.monotonic_ns',return_value=NOW): + context = reader.context(True) + self.assertTrue(context.force_stop_braking) + control = LongControl(cp) + control.long_control_state = LongCtrlState.pid + control.last_output_accel = -1.5 + result = control.update(True,car,-.8,True,(-3.5,2.),context=context) + self.assertAlmostEqual(result,-.8) + self.assertEqual(control.long_control_state,LongCtrlState.stopping) + strong = control.update(True,car,-3.,True,(-3.5,2.),context=context) + self.assertEqual(strong,-3.) + self.assertTrue(math.isfinite(control.update(True,car,math.nan,True,(-3.5,2.),context=context))) + with patch('openpilot.starpilot.longitudinal.inputs.time.monotonic_ns',return_value=NOW+200_000_000): + stale = reader.context(True) + self.assertFalse(stale.force_stop_braking) + control.last_output_accel = -.8 + self.assertLess(control.update(True,car,-.8,True,(-3.5,2.),context=stale),-.8) + stopped = car_state() + control.last_output_accel = -1.5 + self.assertLess(control.update(True,stopped,0.,True,(-3.5,2.),context=context),-1.5) + policy = Ioniq6LongitudinalPolicy() + request = policy.update(0,active=True,override=False,accel=-.8,speed=4.,measured_accel=-1.5, + control_state=LongCtrlState.stopping,last_sent_accel=-1.5) + packet = create_acc_control(CANPacker('hyundai_canfd_generated'),NS(ECAN=1),True,-1.5,request.accel, + request.stopping,False,40.,NS(leadDistanceBars=2),direct_accel=True) + bits = int.from_bytes(packet[1],'little') + self.assertEqual((bits>>184)&1,1) + self.assertEqual((bits>>68)&7,1) + normal = LongControl(stock) + normal.long_control_state = LongCtrlState.pid + normal.last_output_accel = -1.5 + self.assertLess(normal.update(True,car,-.8,True,(-3.5,2.),context=context),-1.5) diff --git a/openpilot/starpilot/longitudinal/tests/test_force_stop_runtime.py b/openpilot/starpilot/longitudinal/tests/test_force_stop_runtime.py index 40a72b52a1..bf2f75db65 100644 --- a/openpilot/starpilot/longitudinal/tests/test_force_stop_runtime.py +++ b/openpilot/starpilot/longitudinal/tests/test_force_stop_runtime.py @@ -86,6 +86,20 @@ class ForceStopRuntimeTests(unittest.TestCase): self.assertFalse(self.owner.policy.can_commit_next_frame) self.assertIsNotNone(self.owner.plan.speed_ceiling_mps) self.assertTrue(wheel_override_blocked(self.owner, None)) + def test_distance_braking_requires_exact_ioniq_control_profile(self): + from unittest.mock import patch + from openpilot.starpilot.longitudinal.tests.test_ioniq6_start import candidate + + stock, admitted = candidate() + stock.openpilotLongitudinalControl = True # An incomplete profile must still refuse the new tune. + for cp, expected in [(self.cp, False), (stock, False), (admitted, True)]: + self.cp = cp + self.owner = ForceStopRuntime(self.params) + with patch.object(self.owner.policy, 'step', wraps=self.owner.policy.step) as step: + for tick in range(12): + self.sample(Frame(tick)) + self.assertTrue(step.called) + self.assertEqual(step.call_args.args[1].distance_control, expected) def test_committed_stop_survives_valid_mode_settings_and_traffic_changes(self): import json diff --git a/openpilot/system/camerad/camerad b/openpilot/system/camerad/camerad index fac49636de..2faeb4dcd2 100755 Binary files a/openpilot/system/camerad/camerad and b/openpilot/system/camerad/camerad differ diff --git a/openpilot/system/loggerd/bootlog b/openpilot/system/loggerd/bootlog index 21e8832f1e..c9b48a8372 100755 Binary files a/openpilot/system/loggerd/bootlog and b/openpilot/system/loggerd/bootlog differ diff --git a/openpilot/system/loggerd/encoderd b/openpilot/system/loggerd/encoderd index eeab472d6a..3ed2e5ef84 100755 Binary files a/openpilot/system/loggerd/encoderd and b/openpilot/system/loggerd/encoderd differ diff --git a/openpilot/system/loggerd/liblogger.a b/openpilot/system/loggerd/liblogger.a index c15e69411d..acbd9da369 100644 Binary files a/openpilot/system/loggerd/liblogger.a and b/openpilot/system/loggerd/liblogger.a differ diff --git a/openpilot/system/loggerd/loggerd b/openpilot/system/loggerd/loggerd index eaba59d90c..dc71c162d6 100755 Binary files a/openpilot/system/loggerd/loggerd and b/openpilot/system/loggerd/loggerd differ diff --git a/openpilot/tools/replay/replay b/openpilot/tools/replay/replay index b2fc919357..ab2dbb33e8 100755 Binary files a/openpilot/tools/replay/replay and b/openpilot/tools/replay/replay differ diff --git a/panda/board/obj/body_h7.bin.signed b/panda/board/obj/body_h7.bin.signed index 0238eb883a..cd6cf7f116 100644 Binary files a/panda/board/obj/body_h7.bin.signed and b/panda/board/obj/body_h7.bin.signed differ diff --git a/panda/board/obj/bootstub.body_h7.bin b/panda/board/obj/bootstub.body_h7.bin index 5405e797ff..96ca64bd1a 100644 Binary files a/panda/board/obj/bootstub.body_h7.bin and b/panda/board/obj/bootstub.body_h7.bin differ diff --git a/panda/board/obj/bootstub.panda.bin b/panda/board/obj/bootstub.panda.bin index 90c7a8b27e..1416d4646d 100644 Binary files a/panda/board/obj/bootstub.panda.bin and b/panda/board/obj/bootstub.panda.bin differ diff --git a/panda/board/obj/bootstub.panda_can_ignition_only.bin b/panda/board/obj/bootstub.panda_can_ignition_only.bin index 90c7a8b27e..1416d4646d 100644 Binary files a/panda/board/obj/bootstub.panda_can_ignition_only.bin and b/panda/board/obj/bootstub.panda_can_ignition_only.bin differ diff --git a/panda/board/obj/bootstub.panda_h7.bin b/panda/board/obj/bootstub.panda_h7.bin index c42840d897..1178506dbd 100644 Binary files a/panda/board/obj/bootstub.panda_h7.bin and b/panda/board/obj/bootstub.panda_h7.bin differ diff --git a/panda/board/obj/bootstub.panda_h7_can_ignition_only.bin b/panda/board/obj/bootstub.panda_h7_can_ignition_only.bin index c42840d897..1178506dbd 100644 Binary files a/panda/board/obj/bootstub.panda_h7_can_ignition_only.bin and b/panda/board/obj/bootstub.panda_h7_can_ignition_only.bin differ diff --git a/panda/board/obj/bootstub.panda_h7_hkg_remote.bin b/panda/board/obj/bootstub.panda_h7_hkg_remote.bin index c42840d897..1178506dbd 100644 Binary files a/panda/board/obj/bootstub.panda_h7_hkg_remote.bin and b/panda/board/obj/bootstub.panda_h7_hkg_remote.bin differ diff --git a/panda/board/obj/bootstub.panda_h7_hkg_remote_can_ignition_only.bin b/panda/board/obj/bootstub.panda_h7_hkg_remote_can_ignition_only.bin index c42840d897..1178506dbd 100644 Binary files a/panda/board/obj/bootstub.panda_h7_hkg_remote_can_ignition_only.bin and b/panda/board/obj/bootstub.panda_h7_hkg_remote_can_ignition_only.bin differ diff --git a/panda/board/obj/bootstub.panda_h7_remote.bin b/panda/board/obj/bootstub.panda_h7_remote.bin index c42840d897..1178506dbd 100644 Binary files a/panda/board/obj/bootstub.panda_h7_remote.bin and b/panda/board/obj/bootstub.panda_h7_remote.bin differ diff --git a/panda/board/obj/bootstub.panda_h7_remote_can_ignition_only.bin b/panda/board/obj/bootstub.panda_h7_remote_can_ignition_only.bin index c42840d897..1178506dbd 100644 Binary files a/panda/board/obj/bootstub.panda_h7_remote_can_ignition_only.bin and b/panda/board/obj/bootstub.panda_h7_remote_can_ignition_only.bin differ diff --git a/panda/board/obj/bootstub.panda_h7_tesla_wake.bin b/panda/board/obj/bootstub.panda_h7_tesla_wake.bin index c42840d897..1178506dbd 100644 Binary files a/panda/board/obj/bootstub.panda_h7_tesla_wake.bin and b/panda/board/obj/bootstub.panda_h7_tesla_wake.bin differ diff --git a/panda/board/obj/bootstub.panda_h7_tesla_wake_can_ignition_only.bin b/panda/board/obj/bootstub.panda_h7_tesla_wake_can_ignition_only.bin index c42840d897..1178506dbd 100644 Binary files a/panda/board/obj/bootstub.panda_h7_tesla_wake_can_ignition_only.bin and b/panda/board/obj/bootstub.panda_h7_tesla_wake_can_ignition_only.bin differ diff --git a/panda/board/obj/bootstub.panda_hkg_remote.bin b/panda/board/obj/bootstub.panda_hkg_remote.bin index 90c7a8b27e..1416d4646d 100644 Binary files a/panda/board/obj/bootstub.panda_hkg_remote.bin and b/panda/board/obj/bootstub.panda_hkg_remote.bin differ diff --git a/panda/board/obj/bootstub.panda_hkg_remote_can_ignition_only.bin b/panda/board/obj/bootstub.panda_hkg_remote_can_ignition_only.bin index 90c7a8b27e..1416d4646d 100644 Binary files a/panda/board/obj/bootstub.panda_hkg_remote_can_ignition_only.bin and b/panda/board/obj/bootstub.panda_hkg_remote_can_ignition_only.bin differ diff --git a/panda/board/obj/bootstub.panda_remote.bin b/panda/board/obj/bootstub.panda_remote.bin index 90c7a8b27e..1416d4646d 100644 Binary files a/panda/board/obj/bootstub.panda_remote.bin and b/panda/board/obj/bootstub.panda_remote.bin differ diff --git a/panda/board/obj/bootstub.panda_remote_can_ignition_only.bin b/panda/board/obj/bootstub.panda_remote_can_ignition_only.bin index 90c7a8b27e..1416d4646d 100644 Binary files a/panda/board/obj/bootstub.panda_remote_can_ignition_only.bin and b/panda/board/obj/bootstub.panda_remote_can_ignition_only.bin differ diff --git a/panda/board/obj/bootstub.panda_tesla_wake.bin b/panda/board/obj/bootstub.panda_tesla_wake.bin index 90c7a8b27e..1416d4646d 100644 Binary files a/panda/board/obj/bootstub.panda_tesla_wake.bin and b/panda/board/obj/bootstub.panda_tesla_wake.bin differ diff --git a/panda/board/obj/bootstub.panda_tesla_wake_can_ignition_only.bin b/panda/board/obj/bootstub.panda_tesla_wake_can_ignition_only.bin index 90c7a8b27e..1416d4646d 100644 Binary files a/panda/board/obj/bootstub.panda_tesla_wake_can_ignition_only.bin and b/panda/board/obj/bootstub.panda_tesla_wake_can_ignition_only.bin differ diff --git a/panda/board/obj/gitversion.h b/panda/board/obj/gitversion.h index 74e1ca7651..d9818eed28 100644 --- a/panda/board/obj/gitversion.h +++ b/panda/board/obj/gitversion.h @@ -1,4 +1,4 @@ #pragma once extern const uint8_t gitversion[29]; -const uint8_t gitversion[29] = "DEV-3a22ddda-Pf38f504f-DEBUG"; +const uint8_t gitversion[29] = "DEV-b6d2afbc-Pf38f504f-DEBUG"; diff --git a/panda/board/obj/panda.bin.signed b/panda/board/obj/panda.bin.signed index a91c9a01a7..d515493493 100644 Binary files a/panda/board/obj/panda.bin.signed and b/panda/board/obj/panda.bin.signed differ diff --git a/panda/board/obj/panda_can_ignition_only.bin.signed b/panda/board/obj/panda_can_ignition_only.bin.signed index 8623a08f25..146283e86a 100644 Binary files a/panda/board/obj/panda_can_ignition_only.bin.signed and b/panda/board/obj/panda_can_ignition_only.bin.signed differ diff --git a/panda/board/obj/panda_h7.bin.signed b/panda/board/obj/panda_h7.bin.signed index 6fb48054c7..26ade443f4 100644 Binary files a/panda/board/obj/panda_h7.bin.signed and b/panda/board/obj/panda_h7.bin.signed differ diff --git a/panda/board/obj/panda_h7_can_ignition_only.bin.signed b/panda/board/obj/panda_h7_can_ignition_only.bin.signed index ba74eb9603..55285c4cb9 100644 Binary files a/panda/board/obj/panda_h7_can_ignition_only.bin.signed and b/panda/board/obj/panda_h7_can_ignition_only.bin.signed differ diff --git a/panda/board/obj/panda_h7_hkg_remote.bin.signed b/panda/board/obj/panda_h7_hkg_remote.bin.signed index 2b6e3b0b1a..ef5e7ac364 100644 Binary files a/panda/board/obj/panda_h7_hkg_remote.bin.signed and b/panda/board/obj/panda_h7_hkg_remote.bin.signed differ diff --git a/panda/board/obj/panda_h7_hkg_remote_can_ignition_only.bin.signed b/panda/board/obj/panda_h7_hkg_remote_can_ignition_only.bin.signed index c7332ef8c3..1ea0ae5526 100644 Binary files a/panda/board/obj/panda_h7_hkg_remote_can_ignition_only.bin.signed and b/panda/board/obj/panda_h7_hkg_remote_can_ignition_only.bin.signed differ diff --git a/panda/board/obj/panda_h7_remote.bin.signed b/panda/board/obj/panda_h7_remote.bin.signed index 76d5bb9e64..0fc48c114e 100644 Binary files a/panda/board/obj/panda_h7_remote.bin.signed and b/panda/board/obj/panda_h7_remote.bin.signed differ diff --git a/panda/board/obj/panda_h7_remote_can_ignition_only.bin.signed b/panda/board/obj/panda_h7_remote_can_ignition_only.bin.signed index 54e798d696..2246a00aa7 100644 Binary files a/panda/board/obj/panda_h7_remote_can_ignition_only.bin.signed and b/panda/board/obj/panda_h7_remote_can_ignition_only.bin.signed differ diff --git a/panda/board/obj/panda_h7_tesla_wake.bin.signed b/panda/board/obj/panda_h7_tesla_wake.bin.signed index 2aa9e575dc..20c85a978b 100644 Binary files a/panda/board/obj/panda_h7_tesla_wake.bin.signed and b/panda/board/obj/panda_h7_tesla_wake.bin.signed differ diff --git a/panda/board/obj/panda_h7_tesla_wake_can_ignition_only.bin.signed b/panda/board/obj/panda_h7_tesla_wake_can_ignition_only.bin.signed index f2356c5c97..2fa428bb95 100644 Binary files a/panda/board/obj/panda_h7_tesla_wake_can_ignition_only.bin.signed and b/panda/board/obj/panda_h7_tesla_wake_can_ignition_only.bin.signed differ diff --git a/panda/board/obj/panda_hkg_remote.bin.signed b/panda/board/obj/panda_hkg_remote.bin.signed index ebf6b109e4..a3a208c72c 100644 Binary files a/panda/board/obj/panda_hkg_remote.bin.signed and b/panda/board/obj/panda_hkg_remote.bin.signed differ diff --git a/panda/board/obj/panda_hkg_remote_can_ignition_only.bin.signed b/panda/board/obj/panda_hkg_remote_can_ignition_only.bin.signed index d6d8237ec9..7ae1489181 100644 Binary files a/panda/board/obj/panda_hkg_remote_can_ignition_only.bin.signed and b/panda/board/obj/panda_hkg_remote_can_ignition_only.bin.signed differ diff --git a/panda/board/obj/panda_remote.bin.signed b/panda/board/obj/panda_remote.bin.signed index 1b24647217..9dceb03d63 100644 Binary files a/panda/board/obj/panda_remote.bin.signed and b/panda/board/obj/panda_remote.bin.signed differ diff --git a/panda/board/obj/panda_remote_can_ignition_only.bin.signed b/panda/board/obj/panda_remote_can_ignition_only.bin.signed index c32ede289b..f946960cee 100644 Binary files a/panda/board/obj/panda_remote_can_ignition_only.bin.signed and b/panda/board/obj/panda_remote_can_ignition_only.bin.signed differ diff --git a/panda/board/obj/panda_tesla_wake.bin.signed b/panda/board/obj/panda_tesla_wake.bin.signed index fb4693f8ff..c4ad6e5850 100644 Binary files a/panda/board/obj/panda_tesla_wake.bin.signed and b/panda/board/obj/panda_tesla_wake.bin.signed differ diff --git a/panda/board/obj/panda_tesla_wake_can_ignition_only.bin.signed b/panda/board/obj/panda_tesla_wake_can_ignition_only.bin.signed index ead2833919..731509b95a 100644 Binary files a/panda/board/obj/panda_tesla_wake_can_ignition_only.bin.signed and b/panda/board/obj/panda_tesla_wake_can_ignition_only.bin.signed differ diff --git a/panda/board/obj/version b/panda/board/obj/version index 626c46309b..e1b5b2d8e5 100644 --- a/panda/board/obj/version +++ b/panda/board/obj/version @@ -1 +1 @@ -DEV-3a22ddda-Pf38f504f-DEBUG \ No newline at end of file +DEV-b6d2afbc-Pf38f504f-DEBUG \ No newline at end of file diff --git a/prebuilt.json b/prebuilt.json index 6304d6f4f0..6e46c937c5 100644 --- a/prebuilt.json +++ b/prebuilt.json @@ -1 +1 @@ -{"protected_inventory_sha256": "b9672e51fdd2774a1f4c75e2ac164b85ab8bd9459710668197af0b6f4154ff0b", "schema_version": 1} +{"protected_inventory_sha256": "c10fc26627484c772df8b9e3b958f3f4c0fa0845cd858aa80a0c237a4f2ffd31", "schema_version": 1} diff --git a/rednose_repo/rednose/helpers/ekf_sym_pyx.so b/rednose_repo/rednose/helpers/ekf_sym_pyx.so index 345be7b52f..b404e57137 100755 Binary files a/rednose_repo/rednose/helpers/ekf_sym_pyx.so and b/rednose_repo/rednose/helpers/ekf_sym_pyx.so differ diff --git a/tools/ci/custom-schema-contract.json b/tools/ci/custom-schema-contract.json index c93fe40977..8773bfed23 100644 --- a/tools/ci/custom-schema-contract.json +++ b/tools/ci/custom-schema-contract.json @@ -27,7 +27,8 @@ "FordLearningEvidence": "15123011525280866286", "FordLearningEvent": "12859710833724959940", "CentreApplicationWitness": "12325001751236334142", - "LearningTorqueProjection": "17327869370982877613" + "LearningTorqueProjection": "17327869370982877613", + "StarPilotLongitudinalPlan": "15750873059323825205" }, "nodes": { "14441422469354927087": { @@ -13433,6 +13434,128 @@ } } } + }, + "15750873059323825205": { + "kind": "struct", + "data_words": 5, + "pointers": 0, + "is_group": false, + "union_count": 0, + "union_offset": 0, + "fields": { + "0": { + "slot": { + "offset": 0, + "type": { + "uint16": null + }, + "defaultValue": { + "uint16": 0 + } + }, + "name": "version", + "discriminantValue": 65535, + "ordinal": { + "explicit": 0 + } + }, + "1": { + "slot": { + "offset": 1, + "type": { + "uint64": null + }, + "defaultValue": { + "uint64": 0 + } + }, + "name": "sourcePlanMonoTime", + "discriminantValue": 65535, + "ordinal": { + "explicit": 1 + } + }, + "2": { + "slot": { + "offset": 2, + "type": { + "uint64": null + }, + "defaultValue": { + "uint64": 0 + } + }, + "name": "modelMonoTime", + "discriminantValue": 65535, + "ordinal": { + "explicit": 2 + } + }, + "3": { + "slot": { + "offset": 3, + "type": { + "uint64": null + }, + "defaultValue": { + "uint64": 0 + } + }, + "name": "driveStartMonoTime", + "discriminantValue": 65535, + "ordinal": { + "explicit": 3 + } + }, + "4": { + "slot": { + "offset": 16, + "type": { + "bool": null + }, + "defaultValue": { + "bool": false + } + }, + "name": "forceStopHolding", + "discriminantValue": 65535, + "ordinal": { + "explicit": 4 + } + }, + "5": { + "slot": { + "offset": 17, + "type": { + "bool": null + }, + "defaultValue": { + "bool": false + } + }, + "name": "forceStopBraking", + "discriminantValue": 65535, + "ordinal": { + "explicit": 5 + } + }, + "6": { + "slot": { + "offset": 4, + "type": { + "uint64": null + }, + "defaultValue": { + "uint64": 0 + } + }, + "name": "forceStopEpisodeMonoTime", + "discriminantValue": 65535, + "ordinal": { + "explicit": 6 + } + } + } } } } diff --git a/tools/ci/tests/test_schema_policy.py b/tools/ci/tests/test_schema_policy.py index f6b8183b31..32a1146f1f 100644 --- a/tools/ci/tests/test_schema_policy.py +++ b/tools/ci/tests/test_schema_policy.py @@ -270,7 +270,7 @@ class SchemaPolicyTest(unittest.TestCase): original = b'forceStopHolding @4 :Bool;' self.assertIn(original, self.schemas[path]) appended = self.schemas.copy() - appended[path] = appended[path].replace(original, original + b'\n futureStatus @5 :UInt32;') + appended[path] = appended[path].replace(original, original + b'\n futureStatus @7 :UInt32;') self.assertEqual(validate(appended, self.policy, self.sync), []) for replacement in (b'', b'forceStopHolding @5 :Bool;', b'forceStopHolding @4 :UInt32;', b'changedHold @4 :Bool;'): @@ -474,3 +474,4 @@ class SchemaPolicyTest(unittest.TestCase): changed = self.schemas.copy() changed[path] = changed[path].replace(original, original + b'\n duplicate @12 :Text;', 1) self.assertTrue(any('Duplicate member name or ordinal' in error for error in validate(changed, self.policy, self.sync))) +