| 
					
				 | 
			
			
				@@ -413,6 +413,7 @@ static config_var_t option_vars_[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(TestingV3AuthInitialVotingInterval, INTERVAL, "30 minutes"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(TestingV3AuthInitialVoteDelay, INTERVAL, "5 minutes"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(TestingV3AuthInitialDistDelay, INTERVAL, "5 minutes"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  V(TestingV3AuthVotingStartOffset, INTERVAL, "0"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(V3AuthVotingInterval,        INTERVAL, "1 hour"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(V3AuthVoteDelay,             INTERVAL, "5 minutes"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(V3AuthDistDelay,             INTERVAL, "5 minutes"), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -475,6 +476,7 @@ static const config_var_t testing_tor_network_defaults[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(TestingV3AuthInitialVotingInterval, INTERVAL, "5 minutes"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(TestingV3AuthInitialVoteDelay, INTERVAL, "20 seconds"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(TestingV3AuthInitialDistDelay, INTERVAL, "20 seconds"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  V(TestingV3AuthVotingStartOffset, INTERVAL, "0"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(TestingAuthDirTimeToLearnReachability, INTERVAL, "0 minutes"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(TestingEstimatedDescriptorPropagationTime, INTERVAL, "0 minutes"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   V(MinUptimeHidServDirectoryV2, INTERVAL, "0 minutes"), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3224,6 +3226,7 @@ options_validate(or_options_t *old_options, or_options_t *options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CHECK_DEFAULT(TestingV3AuthInitialVotingInterval); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CHECK_DEFAULT(TestingV3AuthInitialVoteDelay); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CHECK_DEFAULT(TestingV3AuthInitialDistDelay); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CHECK_DEFAULT(TestingV3AuthVotingStartOffset); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CHECK_DEFAULT(TestingAuthDirTimeToLearnReachability); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CHECK_DEFAULT(TestingEstimatedDescriptorPropagationTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   CHECK_DEFAULT(TestingServerDownloadSchedule); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3261,6 +3264,13 @@ options_validate(or_options_t *old_options, or_options_t *options, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            "must be less than half TestingV3AuthInitialVotingInterval"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (options->TestingV3AuthVotingStartOffset > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      MIN(options->TestingV3AuthInitialVotingInterval, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          options->V3AuthVotingInterval)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    REJECT("TestingV3AuthVotingStartOffset is higher than the voting " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           "interval."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (options->TestingAuthDirTimeToLearnReachability < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     REJECT("TestingAuthDirTimeToLearnReachability must be non-negative."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } else if (options->TestingAuthDirTimeToLearnReachability > 2*60*60) { 
			 |