TSTP Solution File: SWV355-1 by Zipperpin---2.1.9999
View Problem
- Process Solution
%------------------------------------------------------------------------------
% File : Zipperpin---2.1.9999
% Problem : SWV355-1 : TPTP v8.1.2. Released v3.2.0.
% Transfm : NO INFORMATION
% Format : NO INFORMATION
% Command : python3 /export/starexec/sandbox/solver/bin/portfolio.lams.parallel.py %s %d /export/starexec/sandbox/tmp/tmp.mOT9V7MzSR true
% Computer : n007.cluster.edu
% Model : x86_64 x86_64
% CPU : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory : 8042.1875MB
% OS : Linux 3.10.0-693.el7.x86_64
% CPULimit : 300s
% WCLimit : 300s
% DateTime : Fri Sep 1 00:09:20 EDT 2023
% Result : Unsatisfiable 6.43s 1.50s
% Output : Refutation 6.43s
% Verified :
% SZS Type : -
% Comments :
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.09/0.12 % Problem : SWV355-1 : TPTP v8.1.2. Released v3.2.0.
% 0.09/0.13 % Command : python3 /export/starexec/sandbox/solver/bin/portfolio.lams.parallel.py %s %d /export/starexec/sandbox/tmp/tmp.mOT9V7MzSR true
% 0.12/0.34 % Computer : n007.cluster.edu
% 0.12/0.34 % Model : x86_64 x86_64
% 0.12/0.34 % CPU : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.12/0.34 % Memory : 8042.1875MB
% 0.12/0.34 % OS : Linux 3.10.0-693.el7.x86_64
% 0.12/0.34 % CPULimit : 300
% 0.12/0.34 % WCLimit : 300
% 0.12/0.34 % DateTime : Tue Aug 29 03:03:58 EDT 2023
% 0.12/0.34 % CPUTime :
% 0.12/0.34 % Running portfolio for 300 s
% 0.12/0.34 % File : /export/starexec/sandbox/benchmark/theBenchmark.p
% 0.12/0.34 % Number of cores: 8
% 0.12/0.34 % Python version: Python 3.6.8
% 0.12/0.34 % Running in FO mode
% 0.52/0.64 % Total configuration time : 435
% 0.52/0.64 % Estimated wc time : 1092
% 0.52/0.64 % Estimated cpu time (7 cpus) : 156.0
% 0.52/0.68 % /export/starexec/sandbox/solver/bin/fo/fo6_bce.sh running for 75s
% 0.52/0.69 % /export/starexec/sandbox/solver/bin/fo/fo3_bce.sh running for 75s
% 0.52/0.72 % /export/starexec/sandbox/solver/bin/fo/fo1_av.sh running for 75s
% 0.52/0.73 % /export/starexec/sandbox/solver/bin/fo/fo13.sh running for 50s
% 0.52/0.73 % /export/starexec/sandbox/solver/bin/fo/fo7.sh running for 63s
% 0.52/0.73 % /export/starexec/sandbox/solver/bin/fo/fo5.sh running for 50s
% 0.52/0.73 % /export/starexec/sandbox/solver/bin/fo/fo4.sh running for 50s
% 6.43/1.50 % Solved by fo/fo3_bce.sh.
% 6.43/1.50 % BCE start: 696
% 6.43/1.50 % BCE eliminated: 149
% 6.43/1.50 % PE start: 547
% 6.43/1.50 logic: eq
% 6.43/1.50 % PE eliminated: 0
% 6.43/1.50 % done 842 iterations in 0.785s
% 6.43/1.50 % SZS status Theorem for '/export/starexec/sandbox/benchmark/theBenchmark.p'
% 6.43/1.50 % SZS output start Refutation
% 6.43/1.50 thf(tc_Message_Omsg_type, type, tc_Message_Omsg: $i).
% 6.43/1.50 thf(v_evs1_type, type, v_evs1: $i).
% 6.43/1.50 thf(c_Message_Omsg_OMPair_type, type, c_Message_Omsg_OMPair: $i > $i > $i).
% 6.43/1.50 thf(c_Message_Oparts_type, type, c_Message_Oparts: $i > $i).
% 6.43/1.50 thf(c_Message_Omsg_OAgent_type, type, c_Message_Omsg_OAgent: $i > $i).
% 6.43/1.50 thf(c_Event_Oevent_OSays_type, type, c_Event_Oevent_OSays: $i > $i > $i > $i).
% 6.43/1.50 thf(tc_Event_Oevent_type, type, tc_Event_Oevent: $i).
% 6.43/1.50 thf(c_Message_Oagent_OSpy_type, type, c_Message_Oagent_OSpy: $i).
% 6.43/1.50 thf(c_in_type, type, c_in: $i > $i > $i > $o).
% 6.43/1.50 thf(v_A_type, type, v_A: $i).
% 6.43/1.50 thf(c_Message_Omsg_ONonce_type, type, c_Message_Omsg_ONonce: $i > $i).
% 6.43/1.50 thf(c_Message_Oagent_OServer_type, type, c_Message_Oagent_OServer: $i).
% 6.43/1.50 thf(c_Event_Oused_type, type, c_Event_Oused: $i > $i).
% 6.43/1.50 thf(c_Message_Oanalz_type, type, c_Message_Oanalz: $i > $i).
% 6.43/1.50 thf(c_Message_Omsg_OCrypt_type, type, c_Message_Omsg_OCrypt: $i > $i > $i).
% 6.43/1.50 thf(c_Public_OshrK_type, type, c_Public_OshrK: $i > $i).
% 6.43/1.50 thf(c_List_Oset_type, type, c_List_Oset: $i > $i > $i).
% 6.43/1.50 thf(v_NB_type, type, v_NB: $i).
% 6.43/1.50 thf(v_B_type, type, v_B: $i).
% 6.43/1.50 thf(c_Event_Oknows_type, type, c_Event_Oknows: $i > $i > $i).
% 6.43/1.50 thf(v_NA_type, type, v_NA: $i).
% 6.43/1.50 thf(cls_conjecture_3, conjecture,
% 6.43/1.50 (c_in @
% 6.43/1.50 ( c_Message_Omsg_ONonce @ v_NB ) @ ( c_Event_Oused @ v_evs1 ) @
% 6.43/1.50 tc_Message_Omsg)).
% 6.43/1.50 thf(zf_stmt_0, negated_conjecture,
% 6.43/1.50 (~( c_in @
% 6.43/1.50 ( c_Message_Omsg_ONonce @ v_NB ) @ ( c_Event_Oused @ v_evs1 ) @
% 6.43/1.50 tc_Message_Omsg )),
% 6.43/1.50 inference('cnf.neg', [status(esa)], [cls_conjecture_3])).
% 6.43/1.50 thf(zip_derived_cl692, plain,
% 6.43/1.50 (~ (c_in @ (c_Message_Omsg_ONonce @ v_NB) @ (c_Event_Oused @ v_evs1) @
% 6.43/1.50 tc_Message_Omsg)),
% 6.43/1.50 inference('cnf', [status(esa)], [zf_stmt_0])).
% 6.43/1.50 thf(cls_Event_OSays__imp__spies_0, axiom,
% 6.43/1.50 (( ~( c_in @
% 6.43/1.50 ( c_Event_Oevent_OSays @ V_A @ V_B @ V_X ) @
% 6.43/1.50 ( c_List_Oset @ V_evs @ tc_Event_Oevent ) @ tc_Event_Oevent ) ) |
% 6.43/1.50 ( c_in @
% 6.43/1.50 V_X @ ( c_Event_Oknows @ c_Message_Oagent_OSpy @ V_evs ) @
% 6.43/1.50 tc_Message_Omsg ))).
% 6.43/1.50 thf(zip_derived_cl677, plain,
% 6.43/1.50 (![X0 : $i, X1 : $i, X2 : $i, X3 : $i]:
% 6.43/1.50 (~ (c_in @ (c_Event_Oevent_OSays @ X0 @ X1 @ X2) @
% 6.43/1.50 (c_List_Oset @ X3 @ tc_Event_Oevent) @ tc_Event_Oevent)
% 6.43/1.50 | (c_in @ X2 @ (c_Event_Oknows @ c_Message_Oagent_OSpy @ X3) @
% 6.43/1.50 tc_Message_Omsg))),
% 6.43/1.50 inference('cnf', [status(esa)], [cls_Event_OSays__imp__spies_0])).
% 6.43/1.50 thf(cls_conjecture_5, conjecture,
% 6.43/1.50 (~( c_in @
% 6.43/1.50 ( c_Event_Oevent_OSays @
% 6.43/1.50 v_B @ c_Message_Oagent_OServer @
% 6.43/1.50 ( c_Message_Omsg_OMPair @
% 6.43/1.50 ( c_Message_Omsg_OAgent @ v_B ) @
% 6.43/1.50 ( c_Message_Omsg_OCrypt @
% 6.43/1.50 ( c_Public_OshrK @ v_B ) @
% 6.43/1.50 ( c_Message_Omsg_OMPair @
% 6.43/1.50 ( c_Message_Omsg_OAgent @ v_A ) @
% 6.43/1.50 ( c_Message_Omsg_OMPair @
% 6.43/1.50 ( c_Message_Omsg_ONonce @ v_NA ) @
% 6.43/1.50 ( c_Message_Omsg_ONonce @ v_NB ) ) ) ) ) ) @
% 6.43/1.50 ( c_List_Oset @ v_evs1 @ tc_Event_Oevent ) @ tc_Event_Oevent ))).
% 6.43/1.50 thf(zf_stmt_1, negated_conjecture,
% 6.43/1.50 (c_in @
% 6.43/1.50 ( c_Event_Oevent_OSays @
% 6.43/1.50 v_B @ c_Message_Oagent_OServer @
% 6.43/1.50 ( c_Message_Omsg_OMPair @
% 6.43/1.50 ( c_Message_Omsg_OAgent @ v_B ) @
% 6.43/1.50 ( c_Message_Omsg_OCrypt @
% 6.43/1.50 ( c_Public_OshrK @ v_B ) @
% 6.43/1.50 ( c_Message_Omsg_OMPair @
% 6.43/1.50 ( c_Message_Omsg_OAgent @ v_A ) @
% 6.43/1.50 ( c_Message_Omsg_OMPair @
% 6.43/1.50 ( c_Message_Omsg_ONonce @ v_NA ) @
% 6.43/1.50 ( c_Message_Omsg_ONonce @ v_NB ) ) ) ) ) ) @
% 6.43/1.50 ( c_List_Oset @ v_evs1 @ tc_Event_Oevent ) @ tc_Event_Oevent),
% 6.43/1.50 inference('cnf.neg', [status(esa)], [cls_conjecture_5])).
% 6.43/1.50 thf(zip_derived_cl690, plain,
% 6.43/1.50 ( (c_in @
% 6.43/1.50 (c_Event_Oevent_OSays @ v_B @ c_Message_Oagent_OServer @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_OAgent @ v_B) @
% 6.43/1.50 (c_Message_Omsg_OCrypt @ (c_Public_OshrK @ v_B) @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_OAgent @ v_A) @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_ONonce @ v_NA) @
% 6.43/1.50 (c_Message_Omsg_ONonce @ v_NB)))))) @
% 6.43/1.50 (c_List_Oset @ v_evs1 @ tc_Event_Oevent) @ tc_Event_Oevent)),
% 6.43/1.50 inference('cnf', [status(esa)], [zf_stmt_1])).
% 6.43/1.50 thf(zip_derived_cl3317, plain,
% 6.43/1.50 ( (c_in @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_OAgent @ v_B) @
% 6.43/1.50 (c_Message_Omsg_OCrypt @ (c_Public_OshrK @ v_B) @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_OAgent @ v_A) @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_ONonce @ v_NA) @
% 6.43/1.50 (c_Message_Omsg_ONonce @ v_NB))))) @
% 6.43/1.50 (c_Event_Oknows @ c_Message_Oagent_OSpy @ v_evs1) @ tc_Message_Omsg)),
% 6.43/1.50 inference('sup+', [status(thm)], [zip_derived_cl677, zip_derived_cl690])).
% 6.43/1.50 thf(cls_Message_OMPair__analz_0, axiom,
% 6.43/1.50 (( ~( c_in @
% 6.43/1.50 ( c_Message_Omsg_OMPair @ V_X @ V_Y ) @ ( c_Message_Oanalz @ V_H ) @
% 6.43/1.50 tc_Message_Omsg ) ) |
% 6.43/1.50 ( c_in @ V_Y @ ( c_Message_Oanalz @ V_H ) @ tc_Message_Omsg ))).
% 6.43/1.50 thf(zip_derived_cl572, plain,
% 6.43/1.50 (![X0 : $i, X1 : $i, X2 : $i]:
% 6.43/1.50 (~ (c_in @ (c_Message_Omsg_OMPair @ X0 @ X1) @
% 6.43/1.50 (c_Message_Oanalz @ X2) @ tc_Message_Omsg)
% 6.43/1.50 | (c_in @ X1 @ (c_Message_Oanalz @ X2) @ tc_Message_Omsg))),
% 6.43/1.50 inference('cnf', [status(esa)], [cls_Message_OMPair__analz_0])).
% 6.43/1.50 thf(cls_Message_Oanalz_OInj_0, axiom,
% 6.43/1.50 (( ~( c_in @ V_X @ V_H @ tc_Message_Omsg ) ) |
% 6.43/1.50 ( c_in @ V_X @ ( c_Message_Oanalz @ V_H ) @ tc_Message_Omsg ))).
% 6.43/1.50 thf(zip_derived_cl585, plain,
% 6.43/1.50 (![X0 : $i, X1 : $i]:
% 6.43/1.50 (~ (c_in @ X0 @ X1 @ tc_Message_Omsg)
% 6.43/1.50 | (c_in @ X0 @ (c_Message_Oanalz @ X1) @ tc_Message_Omsg))),
% 6.43/1.50 inference('cnf', [status(esa)], [cls_Message_Oanalz_OInj_0])).
% 6.43/1.50 thf(zip_derived_cl2327, plain,
% 6.43/1.50 (![X0 : $i, X1 : $i, X2 : $i]:
% 6.43/1.50 ( (c_in @ X1 @ (c_Message_Oanalz @ X0) @ tc_Message_Omsg)
% 6.43/1.50 | ~ (c_in @ (c_Message_Omsg_OMPair @ X2 @ X1) @ X0 @ tc_Message_Omsg))),
% 6.43/1.50 inference('sup+', [status(thm)], [zip_derived_cl572, zip_derived_cl585])).
% 6.43/1.50 thf(zip_derived_cl3349, plain,
% 6.43/1.50 ( (c_in @
% 6.43/1.50 (c_Message_Omsg_OCrypt @ (c_Public_OshrK @ v_B) @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_OAgent @ v_A) @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_ONonce @ v_NA) @
% 6.43/1.50 (c_Message_Omsg_ONonce @ v_NB)))) @
% 6.43/1.50 (c_Message_Oanalz @ (c_Event_Oknows @ c_Message_Oagent_OSpy @ v_evs1)) @
% 6.43/1.50 tc_Message_Omsg)),
% 6.43/1.50 inference('sup-', [status(thm)], [zip_derived_cl3317, zip_derived_cl2327])).
% 6.43/1.50 thf(cls_Message_Oanalz__conj__parts_0, axiom,
% 6.43/1.50 (( ~( c_in @ V_X @ ( c_Message_Oanalz @ V_H ) @ tc_Message_Omsg ) ) |
% 6.43/1.50 ( c_in @ V_X @ ( c_Message_Oparts @ V_H ) @ tc_Message_Omsg ))).
% 6.43/1.50 thf(zip_derived_cl590, plain,
% 6.43/1.50 (![X0 : $i, X1 : $i]:
% 6.43/1.50 (~ (c_in @ X0 @ (c_Message_Oanalz @ X1) @ tc_Message_Omsg)
% 6.43/1.50 | (c_in @ X0 @ (c_Message_Oparts @ X1) @ tc_Message_Omsg))),
% 6.43/1.50 inference('cnf', [status(esa)], [cls_Message_Oanalz__conj__parts_0])).
% 6.43/1.50 thf(zip_derived_cl3352, plain,
% 6.43/1.50 ( (c_in @
% 6.43/1.50 (c_Message_Omsg_OCrypt @ (c_Public_OshrK @ v_B) @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_OAgent @ v_A) @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_ONonce @ v_NA) @
% 6.43/1.50 (c_Message_Omsg_ONonce @ v_NB)))) @
% 6.43/1.50 (c_Message_Oparts @ (c_Event_Oknows @ c_Message_Oagent_OSpy @ v_evs1)) @
% 6.43/1.50 tc_Message_Omsg)),
% 6.43/1.50 inference('sup-', [status(thm)], [zip_derived_cl3349, zip_derived_cl590])).
% 6.43/1.50 thf(cls_Message_Oparts_OBody__dest_0, axiom,
% 6.43/1.50 (( ~( c_in @
% 6.43/1.50 ( c_Message_Omsg_OCrypt @ V_K @ V_X ) @ ( c_Message_Oparts @ V_H ) @
% 6.43/1.50 tc_Message_Omsg ) ) |
% 6.43/1.50 ( c_in @ V_X @ ( c_Message_Oparts @ V_H ) @ tc_Message_Omsg ))).
% 6.43/1.50 thf(zip_derived_cl661, plain,
% 6.43/1.50 (![X0 : $i, X1 : $i, X2 : $i]:
% 6.43/1.50 (~ (c_in @ (c_Message_Omsg_OCrypt @ X0 @ X1) @
% 6.43/1.50 (c_Message_Oparts @ X2) @ tc_Message_Omsg)
% 6.43/1.50 | (c_in @ X1 @ (c_Message_Oparts @ X2) @ tc_Message_Omsg))),
% 6.43/1.50 inference('cnf', [status(esa)], [cls_Message_Oparts_OBody__dest_0])).
% 6.43/1.50 thf(zip_derived_cl5413, plain,
% 6.43/1.50 ( (c_in @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_OAgent @ v_A) @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_ONonce @ v_NA) @
% 6.43/1.50 (c_Message_Omsg_ONonce @ v_NB))) @
% 6.43/1.50 (c_Message_Oparts @ (c_Event_Oknows @ c_Message_Oagent_OSpy @ v_evs1)) @
% 6.43/1.50 tc_Message_Omsg)),
% 6.43/1.50 inference('sup-', [status(thm)], [zip_derived_cl3352, zip_derived_cl661])).
% 6.43/1.50 thf(cls_Event_Oc_A_58_Aparts_A_Iknows_ASpy_Aevs1_J_A_61_61_62_Ac_A_58_Aused_Aevs1_0, axiom,
% 6.43/1.50 (( ~( c_in @
% 6.43/1.50 V_c @
% 6.43/1.50 ( c_Message_Oparts @
% 6.43/1.50 ( c_Event_Oknows @ c_Message_Oagent_OSpy @ V_evs ) ) @
% 6.43/1.50 tc_Message_Omsg ) ) |
% 6.43/1.50 ( c_in @ V_c @ ( c_Event_Oused @ V_evs ) @ tc_Message_Omsg ))).
% 6.43/1.50 thf(zip_derived_cl518, plain,
% 6.43/1.50 (![X0 : $i, X1 : $i]:
% 6.43/1.50 (~ (c_in @ X0 @
% 6.43/1.50 (c_Message_Oparts @ (c_Event_Oknows @ c_Message_Oagent_OSpy @ X1)) @
% 6.43/1.50 tc_Message_Omsg)
% 6.43/1.50 | (c_in @ X0 @ (c_Event_Oused @ X1) @ tc_Message_Omsg))),
% 6.43/1.50 inference('cnf', [status(esa)],
% 6.43/1.50 [cls_Event_Oc_A_58_Aparts_A_Iknows_ASpy_Aevs1_J_A_61_61_62_Ac_A_58_Aused_Aevs1_0])).
% 6.43/1.50 thf(zip_derived_cl5460, plain,
% 6.43/1.50 ( (c_in @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_OAgent @ v_A) @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_ONonce @ v_NA) @
% 6.43/1.50 (c_Message_Omsg_ONonce @ v_NB))) @
% 6.43/1.50 (c_Event_Oused @ v_evs1) @ tc_Message_Omsg)),
% 6.43/1.50 inference('sup-', [status(thm)], [zip_derived_cl5413, zip_derived_cl518])).
% 6.43/1.50 thf(cls_Public_OMPair__used_0, axiom,
% 6.43/1.50 (( ~( c_in @
% 6.43/1.50 ( c_Message_Omsg_OMPair @ V_X @ V_Y ) @ ( c_Event_Oused @ V_H ) @
% 6.43/1.50 tc_Message_Omsg ) ) |
% 6.43/1.50 ( c_in @ V_Y @ ( c_Event_Oused @ V_H ) @ tc_Message_Omsg ))).
% 6.43/1.50 thf(zip_derived_cl628, plain,
% 6.43/1.50 (![X0 : $i, X1 : $i, X2 : $i]:
% 6.43/1.50 (~ (c_in @ (c_Message_Omsg_OMPair @ X0 @ X1) @ (c_Event_Oused @ X2) @
% 6.43/1.50 tc_Message_Omsg)
% 6.43/1.50 | (c_in @ X1 @ (c_Event_Oused @ X2) @ tc_Message_Omsg))),
% 6.43/1.50 inference('cnf', [status(esa)], [cls_Public_OMPair__used_0])).
% 6.43/1.50 thf(zip_derived_cl5471, plain,
% 6.43/1.50 ( (c_in @
% 6.43/1.50 (c_Message_Omsg_OMPair @ (c_Message_Omsg_ONonce @ v_NA) @
% 6.43/1.50 (c_Message_Omsg_ONonce @ v_NB)) @
% 6.43/1.50 (c_Event_Oused @ v_evs1) @ tc_Message_Omsg)),
% 6.43/1.50 inference('sup-', [status(thm)], [zip_derived_cl5460, zip_derived_cl628])).
% 6.43/1.50 thf(zip_derived_cl628, plain,
% 6.43/1.50 (![X0 : $i, X1 : $i, X2 : $i]:
% 6.43/1.50 (~ (c_in @ (c_Message_Omsg_OMPair @ X0 @ X1) @ (c_Event_Oused @ X2) @
% 6.43/1.50 tc_Message_Omsg)
% 6.43/1.50 | (c_in @ X1 @ (c_Event_Oused @ X2) @ tc_Message_Omsg))),
% 6.43/1.50 inference('cnf', [status(esa)], [cls_Public_OMPair__used_0])).
% 6.43/1.50 thf(zip_derived_cl5477, plain,
% 6.43/1.50 ( (c_in @ (c_Message_Omsg_ONonce @ v_NB) @ (c_Event_Oused @ v_evs1) @
% 6.43/1.50 tc_Message_Omsg)),
% 6.43/1.50 inference('sup-', [status(thm)], [zip_derived_cl5471, zip_derived_cl628])).
% 6.43/1.50 thf(zip_derived_cl5508, plain, ($false),
% 6.43/1.50 inference('demod', [status(thm)], [zip_derived_cl692, zip_derived_cl5477])).
% 6.43/1.50
% 6.43/1.50 % SZS output end Refutation
% 6.43/1.50
% 6.43/1.50
% 6.43/1.50 % Terminating...
% 6.86/1.58 % Runner terminated.
% 6.86/1.59 % Zipperpin 1.5 exiting
%------------------------------------------------------------------------------