<?php
function cdxDispatchGate(array $request,string $method,string $path,array $params,string $nonce,string $token):bool {
 $case=$request['case']??[];$step=$case['step']??0;$actions=[1=>'add',2=>'update',3=>'add',4=>'update',5=>'delete',6=>'able',7=>'able',8=>'able',9=>'able',10=>'delete',11=>'delete'];
 if(!isset($actions[$step]))return false;$table=in_array($step,[1,2,5,6,7,11],true)?'nutrition_time':'nutrition_set';
 if(($case['table']??'')!==$table||($case['action']??'')!==$actions[$step]||($case['path']??'')!=='/p/'.$table.'/'.$actions[$step])return false;
 if($method!=='POST'||$path!==$case['path']||$nonce===''||!hash_equals($request['nonce']??'',$nonce)||$token===''||!hash_equals($request['token']??'',$token))return false;
 $expected=$case['params']??[];ksort($expected);ksort($params);return $params===$expected;
}
